<?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>230602</bug_id>
          
          <creation_ts>2021-09-22 01:05:52 -0700</creation_ts>
          <short_desc>[JSC] implement Shadow Realm</short_desc>
          <delta_ts>2023-01-16 08:18:55 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=231740</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=232005</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>231506</dependson>
    
    <dependson>231740</dependson>
    
    <dependson>241448</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Phillip Mates">pmates</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>bugmail</cc>
    
    <cc>chi187</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hotaru</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>lmoura</cc>
    
    <cc>mark.lam</cc>
    
    <cc>Ms2ger</cc>
    
    <cc>msaboff</cc>
    
    <cc>rwaldron</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>ticaiolima</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>1795980</commentid>
    <comment_count>0</comment_count>
    <who name="Phillip Mates">pmates</who>
    <bug_when>2021-09-22 01:05:52 -0700</bug_when>
    <thetext>https://github.com/tc39/proposal-shadowrealm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795982</commentid>
    <comment_count>1</comment_count>
      <attachid>438932</attachid>
    <who name="Phillip Mates">pmates</who>
    <bug_when>2021-09-22 01:07:48 -0700</bug_when>
    <thetext>Created attachment 438932
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796034</commentid>
    <comment_count>2</comment_count>
      <attachid>438944</attachid>
    <who name="Phillip Mates">pmates</who>
    <bug_when>2021-09-22 06:15:28 -0700</bug_when>
    <thetext>Created attachment 438944
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796060</commentid>
    <comment_count>3</comment_count>
      <attachid>438947</attachid>
    <who name="Phillip Mates">pmates</who>
    <bug_when>2021-09-22 07:21:12 -0700</bug_when>
    <thetext>Created attachment 438947
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796069</commentid>
    <comment_count>4</comment_count>
      <attachid>438948</attachid>
    <who name="Phillip Mates">pmates</who>
    <bug_when>2021-09-22 07:55:31 -0700</bug_when>
    <thetext>Created attachment 438948
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796478</commentid>
    <comment_count>5</comment_count>
      <attachid>438948</attachid>
    <who name="Phillip Mates">pmates</who>
    <bug_when>2021-09-23 07:04:51 -0700</bug_when>
    <thetext>Comment on attachment 438948
Patch

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

&gt; Source/JavaScriptCore/builtins/ShadowRealmPrototype.js:38
&gt; +        delete wrapped[&apos;name&apos;];
&gt; +        delete wrapped[&apos;length&apos;];

these two `delete` calls are slow (no IC support for `delete` yet).
we should either add IC `delete` support or create a custom host function that joins both deletes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796479</commentid>
    <comment_count>6</comment_count>
      <attachid>438948</attachid>
    <who name="Phillip Mates">pmates</who>
    <bug_when>2021-09-23 07:07:34 -0700</bug_when>
    <thetext>Comment on attachment 438948
Patch

Ready for an initial review

Note that we&apos;re still investigating a potential memory leak that popped up in the armv7-test CI:

stress/shadow-realm-evaluate.js.no-llint: Ran out of executable memory while allocating 736 bytes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797001</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-24 12:32:46 -0700</bug_when>
    <thetext>@pmates Can you enable ShadowRealm tests on test262 in config.yaml and update expectations.yaml?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797415</commentid>
    <comment_count>8</comment_count>
      <attachid>439337</attachid>
    <who name="Phillip Mates">pmates</who>
    <bug_when>2021-09-27 03:30:36 -0700</bug_when>
    <thetext>Created attachment 439337
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797417</commentid>
    <comment_count>9</comment_count>
    <who name="Phillip Mates">pmates</who>
    <bug_when>2021-09-27 03:33:55 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #7)
&gt; @pmates Can you enable ShadowRealm tests on test262 in config.yaml and
&gt; update expectations.yaml?

Yup, updated it (I&apos;m new to this, so I followed https://bocoup.com/blog/new-test262-import-and-runner-in-webkit, not sure if there is more I need to do)

The registered expected failures will be addressed in https://github.com/tc39/test262/pull/3220</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797560</commentid>
    <comment_count>10</comment_count>
    <who name="Rick Waldron">rwaldron</who>
    <bug_when>2021-09-27 10:36:30 -0700</bug_when>
    <thetext>https://github.com/tc39/test262/pull/3220 has been reviewed and merged. Thanks Phillip!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797597</commentid>
    <comment_count>11</comment_count>
      <attachid>439380</attachid>
    <who name="Phillip Mates">pmates</who>
    <bug_when>2021-09-27 12:36:59 -0700</bug_when>
    <thetext>Created attachment 439380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798025</commentid>
    <comment_count>12</comment_count>
      <attachid>439380</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-28 13:58:52 -0700</bug_when>
    <thetext>Comment on attachment 439380
Patch

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

&gt; Source/JavaScriptCore/runtime/IndirectEvalExecutable.cpp:71
&gt; +IndirectEvalExecutable* IndirectEvalExecutable::createSafe(JSGlobalObject* globalObject, const SourceCode&amp; source, DerivedContextType derivedContextType, bool isArrowFunctionContext, EvalContextType evalContextType, NakedPtr&lt;JSObject&gt;&amp; resultingError)

Let&apos;s rename it to create.

&gt; Source/JavaScriptCore/runtime/IndirectEvalExecutable.cpp:79
&gt; +IndirectEvalExecutable* IndirectEvalExecutable::create(JSGlobalObject* globalObject, const SourceCode&amp; source, DerivedContextType derivedContextType, bool isArrowFunctionContext, EvalContextType evalContextType)

And let&apos;s rename it to tryCreate instead.

&gt; Source/JavaScriptCore/runtime/ShadowRealmConstructor.h:38
&gt; +    static constexpr unsigned StructureFlags = Base::StructureFlags | HasStaticPropertyTable;

Since we have no table, HasStaticPropertyTable is not necessary.

&gt; Source/JavaScriptCore/runtime/ShadowRealmPrototype.cpp:69
&gt; +    RELEASE_ASSERT(thisRealm);

Let&apos;s use ASSERT.

&gt; Source/JavaScriptCore/runtime/ShadowRealmPrototype.cpp:93
&gt; +    RELEASE_ASSERT(thisRealm);

Ditto.

&gt; Source/JavaScriptCore/runtime/ShadowRealmPrototype.cpp:98
&gt; +    String s = asString(evalArg)-&gt;value(globalObject);

let&apos;s make it `script` or `string` instead of `s` for readability.

&gt; Source/JavaScriptCore/runtime/ShadowRealmPrototype.cpp:99
&gt; +    RETURN_IF_EXCEPTION(scope, encodedJSValue());

Use `{ }` instead of `encodedJSValue()` in new code.

&gt; Source/JavaScriptCore/runtime/ShadowRealmPrototype.cpp:111
&gt; +    JSValue parsedObject;
&gt; +    if (s.is8Bit()) {
&gt; +        LiteralParser&lt;LChar&gt; preparser(globalObject, s.characters8(), s.length(), NonStrictJSON, nullptr);
&gt; +        parsedObject = preparser.tryLiteralParse();
&gt; +    } else {
&gt; +        LiteralParser&lt;UChar&gt; preparser(globalObject, s.characters16(), s.length(), NonStrictJSON, nullptr);
&gt; +        parsedObject = preparser.tryLiteralParse();
&gt; +    }
&gt; +    RETURN_IF_EXCEPTION(scope, encodedJSValue());
&gt; +    if (parsedObject)
&gt; +        return JSValue::encode(parsedObject);

I think this part is not necessary. It is done for JSON like object evaluation, but Realm.evaluate&apos;s usage would be largely different from that.

&gt; Source/JavaScriptCore/runtime/ShadowRealmPrototype.cpp:131
&gt; +    RETURN_IF_EXCEPTION(scope,
&gt; +        throwVMError(globalObject, scope, createTypeError(globalObject, &quot;Error encountered during evaluation&quot;_s)));

Running something in RETURN_IF_EXCEPTION&apos;s second parameter is not the right thing.
Since we are getting an exception,

RETURN_IF_EXCEPTION(scope, { });

would be the right thing if we would like to propagate error from the evaluation.
If we would like to convert TypeError when some errors occur, then, the code should be,

if (UNLIKELY(scope.exception())) {
    scope.clearException();
    return throwVMError(globalObject, scope, createTypeError(globalObject, &quot;Error encountered during evaluation&quot;_s)));
}

&gt; Source/JavaScriptCore/runtime/VM.cpp:372
&gt; +    , shadowRealmSpace ISO_SUBSPACE_INIT(heap, cellHeapCellType.get(), ShadowRealmObject)

Let&apos;s make it dynamic IsoSubspace by using DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW.

&gt; Source/JavaScriptCore/runtime/VM.h:515
&gt; +    IsoSubspace shadowRealmSpace;

Let&apos;s make it dynamic IsoSubspace by using DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798213</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-29 01:06:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/83660888&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798236</commentid>
    <comment_count>14</comment_count>
      <attachid>439587</attachid>
    <who name="Phillip Mates">pmates</who>
    <bug_when>2021-09-29 03:22:57 -0700</bug_when>
    <thetext>Created attachment 439587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798278</commentid>
    <comment_count>15</comment_count>
    <who name="Phillip Mates">pmates</who>
    <bug_when>2021-09-29 05:51:49 -0700</bug_when>
    <thetext>Thanks for the review Yusuke! I&apos;ve pushed an updated patch addressing your suggestions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802286</commentid>
    <comment_count>16</comment_count>
      <attachid>439587</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-08 15:48:54 -0700</bug_when>
    <thetext>Comment on attachment 439587
Patch

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

OK! For this patch itself, I think this is OK. But we cannot enable it immediately until we have a change making WebCore work with ShadowRealm &amp; we would like to know how this ShadowRealm JSGlobalObject is handled in DOM side, e.g. incumbent window&apos;s lookup.

&gt; Source/JavaScriptCore/builtins/ShadowRealmPrototype.js:32
&gt; +        let wrapped = (...args) =&gt; {

Use var in builtin JS.
And let&apos;s just use `arguments`.

var length = arguments.length;
var wrappedArgs = @newArrayWithSize(length);
for (var index = 0; index &lt; length; ++index)
    @putByValDirect(wrappedArgs, index, @wrap(arguments[index]));

&gt; Source/JavaScriptCore/builtins/ShadowRealmPrototype.js:34
&gt; +            const result = target.@apply(@undefined, wrappedArgs);

Use var instead of const in builtin JS

&gt; Source/JavaScriptCore/builtins/ShadowRealmPrototype.js:56
&gt; +    let result = @evalInRealm(this, sourceText)

Use var in builtin JS

&gt; Source/JavaScriptCore/builtins/ShadowRealmPrototype.js:68
&gt; +    let exportNameStr = @toString(exportName);
&gt; +    let specifierStr = @toString(specifier);

Let&apos;s describe String instead of Str.
And use var in builtin JS.

&gt; Source/JavaScriptCore/builtins/ShadowRealmPrototype.js:70
&gt; +    let lookupBinding = (module) =&gt; {

Ditto.

&gt; Source/JavaScriptCore/builtins/ShadowRealmPrototype.js:78
&gt; +    let crossRealmThrow = (error) =&gt; {

Ditto.

&gt; Source/JavaScriptCore/bytecode/LinkTimeConstant.h:66
&gt; +    v(ShadowRealm, nullptr) \

Unnecessary.

&gt; Source/JavaScriptCore/jsc.cpp:2064
&gt; +        Structure* structure = arg.structureOrNull(vm);
&gt; +        return JSValue::encode(structure-&gt;globalObject()-&gt;globalThis());

Do, `return JSValue::encode(asCell(arg)-&gt;globalObject(vm)-&gt;globalThis());`

&gt; Source/JavaScriptCore/runtime/ArrayPrototype.cpp:108
&gt; +    JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames-&gt;builtinNames().mapPrivateName(), arrayPrototypeMapCodeGenerator, static_cast&lt;unsigned&gt;(PropertyAttribute::DontEnum));

Let&apos;s remove this.

&gt; Source/JavaScriptCore/runtime/IndirectEvalExecutable.cpp:-60
&gt; -        throwVMError(globalObject, scope, error.toErrorObject(globalObject, executable-&gt;source()));

scope.release() is necessary here.

&gt; Source/JavaScriptCore/runtime/JSType.cpp:46
&gt; +    CASE(ShadowRealmType)

Let&apos;s put it in the same ordering to the header&apos;s definition.

&gt; Source/JavaScriptCore/runtime/OptionsList.h:543
&gt; +    v(Bool, useShadowRealm, false, Normal, &quot;Expose the ShadowRealm object.&quot;) \

Yup. I think we cannot enable this for now since WebCore has a lot of code, which is assuming that, if it is JSGlobalObject, it is JSDOMGlobalObject. (for example, incumbentDOMWindow is traversing JSGlobalObjects in the callstack, and it assumes that these ones are JSDOMWindow. But this is not true after this patch).
So, to enable that, we also need the WebCore side change.

Can you note this here, like,

/* FIXME: ShadownRealm can be enabled once WebCore&apos;s JSGlobalObject == JSDOMGlobalObject assumption is removed, https://bugs.webkit.org/tracking-bug */ \
v(Bool, useShadowRealm, false, Normal, &quot;Expose the ShadowRealm object.&quot;) \

&gt; Source/JavaScriptCore/runtime/ShadowRealmConstructor.cpp:63
&gt; +static JSObject* constructShadowRealm(JSGlobalObject* globalObject, JSValue, const ArgList&amp;)
&gt; +{
&gt; +    VM&amp; vm = globalObject-&gt;vm();
&gt; +    Structure* shadowRealmStructure = ShadowRealmObject::createStructure(vm, globalObject, globalObject-&gt;shadowRealmPrototype());
&gt; +    return ShadowRealmObject::create(vm, shadowRealmStructure, globalObject-&gt;globalObjectMethodTable());
&gt; +}
&gt; +
&gt; +JSC_DEFINE_HOST_FUNCTION(constructWithShadowRealmConstructor, (JSGlobalObject* globalObject, CallFrame* callFrame))
&gt; +{
&gt; +    ArgList args(callFrame);
&gt; +    return JSValue::encode(constructShadowRealm(globalObject, callFrame-&gt;newTarget(), args));
&gt; +}

I don&apos;t think we need to have this static function. Let&apos;s just implement constructShadowRealm thing inside constructWithShadowRealmConstructor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802564</commentid>
    <comment_count>17</comment_count>
    <who name="Phillip Mates">pmates</who>
    <bug_when>2021-10-11 03:11:21 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #16)
&gt; Comment on attachment 439587 [details]
&gt; Patch
&gt; 
&gt; 
&gt; OK! For this patch itself, I think this is OK. But we cannot enable it
&gt; immediately until we have a change making WebCore work with ShadowRealm &amp; we
&gt; would like to know how this ShadowRealm JSGlobalObject is handled in DOM
&gt; side, e.g. incumbent window&apos;s lookup.

Sounds good, here is a ticket I created to look into that: https://bugs.webkit.org/show_bug.cgi?id=231506
 
&gt; &gt; Source/JavaScriptCore/bytecode/LinkTimeConstant.h:66
&gt; &gt; +    v(ShadowRealm, nullptr) \
&gt; 
&gt; Unnecessary.

When I remove this line I get the following error:

&gt; /home/mates/igalia/WebKit/Source/JavaScriptCore/runtime/JSGlobalObject.cpp: In member function ‘void JSC::JSGlobalObject::init(JSC::VM&amp;)’:
&gt; /home/mates/igalia/WebKit/Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1034:65: error: ‘ShadowRealm’ is not a member of ‘JSC::LinkTimeConstant’
&gt; 1034 |     m_linkTimeConstants[static_cast&lt;unsigned&gt;(LinkTimeConstant::ShadowRealm)].set(vm, this, shadowRealmConstructor);



&gt; &gt; Source/JavaScriptCore/jsc.cpp:2064
&gt; &gt; +        Structure* structure = arg.structureOrNull(vm);
&gt; &gt; +        return JSValue::encode(structure-&gt;globalObject()-&gt;globalThis());
&gt; 
&gt; Do, `return JSValue::encode(asCell(arg)-&gt;globalObject(vm)-&gt;globalThis());`

I couldn&apos;t find a `globalObject` fn assocated with the `JSCell` class, so I did:

`return JSValue::encode(arg.asCell()-&gt;structure(vm)-&gt;globalObject()-&gt;globalThis());`


&gt; &gt; Source/JavaScriptCore/runtime/ArrayPrototype.cpp:108
&gt; &gt; +    JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames-&gt;builtinNames().mapPrivateName(), arrayPrototypeMapCodeGenerator, static_cast&lt;unsigned&gt;(PropertyAttribute::DontEnum));
&gt; 
&gt; Let&apos;s remove this.

Without it I can&apos;t use `@map` in `ShadowRealmPrototype.js`. Is there another way to move forward on using a non-modifiable `map` implementation?


&gt; &gt; Source/JavaScriptCore/runtime/IndirectEvalExecutable.cpp:-60
&gt; &gt; -        throwVMError(globalObject, scope, error.toErrorObject(globalObject, executable-&gt;source()));
&gt; 
&gt; scope.release() is necessary here.

Thanks for the catch! I added a regression test to cover this.


&gt; &gt; Source/JavaScriptCore/runtime/OptionsList.h:543
&gt; &gt; +    v(Bool, useShadowRealm, false, Normal, &quot;Expose the ShadowRealm object.&quot;) \
&gt; 
&gt; Yup. I think we cannot enable this for now since WebCore has a lot of code,
&gt; which is assuming that, if it is JSGlobalObject, it is JSDOMGlobalObject.
&gt; (for example, incumbentDOMWindow is traversing JSGlobalObjects in the
&gt; callstack, and it assumes that these ones are JSDOMWindow. But this is not
&gt; true after this patch).
&gt; So, to enable that, we also need the WebCore side change.
Oh, interesting; I&apos;ll look into it, thanks for the heads up!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802575</commentid>
    <comment_count>18</comment_count>
      <attachid>440773</attachid>
    <who name="Phillip Mates">pmates</who>
    <bug_when>2021-10-11 04:46:25 -0700</bug_when>
    <thetext>Created attachment 440773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803607</commentid>
    <comment_count>19</comment_count>
      <attachid>440773</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-12 18:38:22 -0700</bug_when>
    <thetext>Comment on attachment 440773
Patch

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

commented

&gt; Source/JavaScriptCore/builtins/ShadowRealmPrototype.js:33
&gt; +            var wrappedArgs = args.@map(@wrap)

Please check the comment in https://bugs.webkit.org/show_bug.cgi?id=230602#c16 :)

&gt; Source/JavaScriptCore/bytecode/LinkTimeConstant.h:66
&gt; +    v(ShadowRealm, nullptr) \

We should remove this since it is not used. It must be defined only when @ShadowRealm is used in builtin JS.

&gt; Source/JavaScriptCore/runtime/ArrayPrototype.cpp:108
&gt; +    JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames-&gt;builtinNames().mapPrivateName(), arrayPrototypeMapCodeGenerator, static_cast&lt;unsigned&gt;(PropertyAttribute::DontEnum));

I mean, we should not use @map and remove this. See comment in https://bugs.webkit.org/show_bug.cgi?id=230602#c16

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1042
&gt; +    m_linkTimeConstants[static_cast&lt;unsigned&gt;(LinkTimeConstant::ShadowRealm)].set(vm, this, shadowRealmConstructor);

You should remove this too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803713</commentid>
    <comment_count>20</comment_count>
      <attachid>441060</attachid>
    <who name="Phillip Mates">pmates</who>
    <bug_when>2021-10-13 05:42:40 -0700</bug_when>
    <thetext>Created attachment 441060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803827</commentid>
    <comment_count>21</comment_count>
      <attachid>441060</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-13 10:09:24 -0700</bug_when>
    <thetext>Comment on attachment 441060
Patch

r=me.
You also need to modify JavaScriptCore/DerivedSources-input.xcfilelist and JavaScriptCore/DerivedSources-output.xcfilelist</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804191</commentid>
    <comment_count>22</comment_count>
      <attachid>441193</attachid>
    <who name="Phillip Mates">pmates</who>
    <bug_when>2021-10-14 02:11:46 -0700</bug_when>
    <thetext>Created attachment 441193
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804194</commentid>
    <comment_count>23</comment_count>
      <attachid>441193</attachid>
    <who name="Ms2ger (he/him; ⌚ UTC+1/+2)">Ms2ger</who>
    <bug_when>2021-10-14 02:19:36 -0700</bug_when>
    <thetext>Comment on attachment 441193
Patch

Already reviewed, and style matches surrounding code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804205</commentid>
    <comment_count>24</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-14 03:22:18 -0700</bug_when>
    <thetext>Committed r284151 (242971@main): &lt;https://commits.webkit.org/242971@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 441193.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804259</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-10-14 07:17:34 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 231740</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805858</commentid>
    <comment_count>26</comment_count>
      <attachid>441193</attachid>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2021-10-18 20:21:59 -0700</bug_when>
    <thetext>Comment on attachment 441193
Patch

CQ+&apos;ing again after an investigation showed the issue was not with this patch, but in the bots infrastructure.

Sorry for the noise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805875</commentid>
    <comment_count>27</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-18 21:07:31 -0700</bug_when>
    <thetext>Committed r284435 (243197@main): &lt;https://commits.webkit.org/243197@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 441193.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808964</commentid>
    <comment_count>28</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-26 11:38:47 -0700</bug_when>
    <thetext>Looks like this patch did not update expectations.yaml properly.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438932</attachid>
            <date>2021-09-22 01:07:48 -0700</date>
            <delta_ts>2021-09-22 06:15:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230602-20210922100740.patch</filename>
            <type>text/plain</type>
            <size>78971</size>
            <attacher name="Phillip Mates">pmates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMDkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NDhhOWM4ZjhhYzRmNmNkNjI3ZmFiMTc3YWU3MGQ5YzQzYzBiMDVjLi5hMjE0NmI2MjAzNzcyNmIw
M2Y4Y2FlZDk0YzFmZDhiNTA0MTEyYzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MCBAQAorMjAyMS0wOS0yMSAgUGhpbGxpcCBNYXRlcyAgPHBtYXRlc0BpZ2FsaWEuY29t
PgorCisgICAgICAgIHNoYWRvdyByZWFsbXMgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDYwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGF0aW9uIG9mIHRoZSBT
aGFkb3cgUmVhbG1zIHByb3Bvc2FsIChzdGFnZSAzIGluIFRDMzkpIFsxXQorCisgICAgICAgIE1h
aW4gQVBJcyBhZGRlZCBhcmUKKyAgICAgICAgIC0gYG5ldyBTaGFkb3dSZWFsbSgpYAorICAgICAg
ICAgICBjcmVhdGVzIGFuIG9iamVjdCB0aGF0IGhhcyBpdHMgb3duIGdsb2JhbCBvYmplY3QgYW5k
IG1vZHVsZSBncmFwaC4KKyAgICAgICAgIC0gU2hhZG93UmVhbG0ucHJvdG90eXBlLmV2YWx1YXRl
KHNvdXJjZVRleHQpCisgICAgICAgICAgIHRoaXMgYWxsb3dzIGZvciBldmFsdWF0aW5nIGNvZGUg
aW4gdGhlIGNvbnRleHQgb2YgdGhlIHJlYWxtLCB3aGljaAorICAgICAgICAgICBoYXMgaXRzIG93
biBtb2R1bGUgZ3JhcGggYW5kIGdsb2JhbCBvYmplY3QuCisgICAgICAgICAtIFNoYWRvd1JlYWxt
LnByb3RvdHlwZS5pbXBvcnRWYWx1ZShzcGVjaWZpZXIsIGV4cG9ydE5hbWUpCisgICAgICAgICAg
IHRoaXMgYWxsb3dzIGltcG9ydGluZyBtb2R1bGUgZXhwb3J0cyBpbiB0aGUgdGhlIGNvbnRleHQg
b2YgdGhlCisgICAgICAgICAgIHJlYWxtLCB3aGljaCBoYXMgaXRzIG93biBtb2R1bGUgZ3JhcGgg
YW5kIGdsb2JhbCBvYmplY3QuCisKKyAgICAgICAgVGhlIG1haW4gZGV0YWlsIG9mIHRoZSBTaGFk
b3cgUmVhbG0gaW1wbGVtZW50YXRpb24gaXMgdGhhdCB2YWx1ZXMKKyAgICAgICAgcGFzc2VkIGJl
dHdlZW4gcmVhbG1zIG11c3QgYmUgZWl0aGVyIHByaW1pdGl2ZXMgb3Igd3JhcHBlZCBjYWxsYWJs
ZXMuCisgICAgICAgIFdyYXBwZWQgY2FsbGFibGVzIHRoZW1zZWx2ZXMgYXJlIGNhbGxhYmxlcyB0
aGF0IGNoZWNrIHRoYXQgdGhlaXIKKyAgICAgICAgYXJndW1lbnRzIGFuZCByZXR1cm4gdmFsdWVz
IGFyZSBhbHNvIGVpdGhlciBwcmltaXRpdmVzIG9yIHdyYXBwZWQKKyAgICAgICAgY2FsbGFibGVz
LiBUaGlzIGRldGFpbCBpcyBpbXBsZW1lbnRlZCB2aWEgSlMgYnVpbHRpbnMgKyBhIGZldyBuZXcK
KyAgICAgICAgaW50cmluc2ljcy4KKworICAgICAgICBDYW4gYmUgZW5hYmxlZCB1c2luZyBgLS11
c2VTaGFkb3dSZWFsbT10cnVlYAorCisgICAgICAgIFsxXTogaHR0cHM6Ly9naXRodWIuY29tL3Rj
MzkvcHJvcG9zYWwtc2hhZG93cmVhbG0KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogYnVpbHRpbnMvU2hhZG93
UmVhbG1Qcm90b3R5cGUuanM6IEFkZGVkLgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS53cmFwKToK
KyAgICAgICAgKGV2YWx1YXRlKToKKyAgICAgICAgKGltcG9ydFZhbHVlKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgICogYnl0ZWNvZGUv
TGlua1RpbWVDb25zdGFudC5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdElzU2hhZG93UmVh
bG0pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAq
IGpzYy5jcHA6CisgICAgICAgIChKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAq
IHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9JbmRp
cmVjdEV2YWxFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0
YWJsZTo6Y3JlYXRlSW1wbCk6CisgICAgICAgIChKU0M6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGU6
OmNyZWF0ZVNhZmUpOgorICAgICAgICAoSlNDOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVu
SW1wbCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjcmVhdGVXaXRoQ3VzdG9tTWV0
aG9kVGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNoYWRvd1JlYWxtUHJvdG90eXBlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNoYWRvd1JlYWxtU3RydWN0dXJlIGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9PcHRpb25z
TGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5jcHA6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpTaGFkb3dSZWFsbUNvbnN0cnVjdG9yOjpTaGFkb3dSZWFsbUNv
bnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6U2hhZG93UmVhbG1Db25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RTaGFkb3dSZWFsbSk6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9TaGFk
b3dSZWFsbUNvbnN0cnVjdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaC4KKyAgICAgICAgKiBydW50aW1lL1NoYWRv
d1JlYWxtT2JqZWN0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlNoYWRvd1JlYWxtT2JqZWN0
OjpTaGFkb3dSZWFsbU9iamVjdCk6CisgICAgICAgIChKU0M6OlNoYWRvd1JlYWxtT2JqZWN0Ojp2
aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgIChKU0M6OlNoYWRvd1JlYWxtT2JqZWN0OjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpTaGFkb3dSZWFsbU9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvU2hhZG93UmVhbG1PYmplY3QuaDogQ29waWVkIGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oLgorICAgICAg
ICAqIHJ1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6U2hhZG93UmVhbG1Qcm90b3R5cGU6OlNoYWRvd1JlYWxtUHJvdG90eXBlKToKKyAgICAgICAg
KEpTQzo6U2hhZG93UmVhbG1Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1NoYWRvd1Jl
YWxtUHJvdG90eXBlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaC4KKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAg
ICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMjEtMDkt
MDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBNYXRoLmh5
cG90IGNoZWNrcyBmb3IgaW5maW5pdGUgdmFsdWVzIHByZW1hdHVyZWx5CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZWNhMDgzMTRiNjQ0NTljNzhjYTAzODY0MjgxNTM3Zjg1
MThkYmVlMC4uMDViNTQyZTA0MjdmZTQwOTFkZGM5Y2ExYTYwMTJhNzY4MGZiNDA5MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTAzLDYgKzEwMyw4IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL1JlZ0V4cFByb3RvdHlw
ZS5jcHAKICAgICBydW50aW1lL1JlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcAogICAg
IHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvU2hhZG93UmVhbG1PYmplY3Qu
Y3BwCisgICAgcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL1N0
cmluZ0NvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAogICAg
IHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCkBAIC0zNjcsNiArMzY5LDcgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
YnVpbHRpbnMvUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vYnVpbHRpbnMvU2V0SXRlcmF0b3JQcm90b3R5cGUuanMKICAgICAke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvU2V0UHJvdG90eXBlLmpzCisgICAgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2J1aWx0aW5zL1NoYWRvd1JlYWxtUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1N0cmluZ0NvbnN0cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmpzCiAgICAgJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlwZS5qcwpAQCAtMTE0MCw2
ICsxMTQzLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMK
ICAgICBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUvU2NyaXB0RmV0Y2hQ
YXJhbWV0ZXJzLmgKICAgICBydW50aW1lL1NjcmlwdEZldGNoZXIuaAorICAgIHJ1bnRpbWUvU2hh
ZG93UmVhbG1PYmplY3QuaAogICAgIHJ1bnRpbWUvU2xvd1BhdGhGdW5jdGlvbi5oCiAgICAgcnVu
dGltZS9TbG93UGF0aFJldHVyblR5cGUuaAogICAgIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggODgxOTI3ZTE3YmRh
MjM4ZDdkYWNlZjFkNmViNWMzYzNiNzQ4YjM3Ny4uMWUxZTgxMTI5N2IwNzQyNTE1MjM1NzQxMjFl
NTNhODdkYzA5YjNiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTEyMiw2ICsxMjIsNyBAQCBKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTID0g
XAogICAgICR7SmF2YVNjcmlwdENvcmV9L2J1aWx0aW5zL1JlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJv
dG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TZXRJdGVyYXRvclBy
b3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvU2V0UHJvdG90eXBl
LmpzIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TaGFkb3dSZWFsbVByb3RvdHlw
ZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvU3RyaW5nQ29uc3RydWN0b3Iu
anMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1N0cmluZ0l0ZXJhdG9yUHJvdG90
eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TdHJpbmdQcm90b3R5cGUu
anMgXApAQCAtMTg3LDYgKzE4OCw3IEBAIE9CSkVDVF9MVVRfSEVBREVSUyA9IFwKICAgICBSZWZs
ZWN0T2JqZWN0Lmx1dC5oIFwKICAgICBSZWdFeHBDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgU2V0
UHJvdG90eXBlLmx1dC5oIFwKKyAgICBTaGFkb3dSZWFsbVByb3RvdHlwZS5sdXQuaCBcCiAgICAg
U3RyaW5nQ29uc3RydWN0b3IubHV0LmggXAogICAgIFN0cmluZ1Byb3RvdHlwZS5sdXQuaCBcCiAg
ICAgU3ltYm9sQ29uc3RydWN0b3IubHV0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0Cmlu
ZGV4IDMyOGY5MmY1YjJmYjIwNWM4Mzg3ODIyNDE5YTUwODRlMGZhMWY3Y2EuLjUyMmU2YTA3NjRh
YzU3MTk3ZWMyYzEwZGZhM2Q5ZDgxMjAxMTJlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQKQEAgLTk2OSw2ICs5NjksOSBAQCBydW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3BwCiBydW50
aW1lL1Byb3h5T2JqZWN0LmNwcAogcnVudGltZS9Qcm94eVJldm9rZS5jcHAKIHJ1bnRpbWUvUmFu
ZG9taXppbmdGdXp6ZXJBZ2VudC5jcHAKK3J1bnRpbWUvU2hhZG93UmVhbG1PYmplY3QuY3BwCity
dW50aW1lL1NoYWRvd1JlYWxtQ29uc3RydWN0b3IuY3BwCitydW50aW1lL1NoYWRvd1JlYWxtUHJv
dG90eXBlLmNwcAogcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcAogcnVudGltZS9SZWdFeHAuY3Bw
CiBydW50aW1lL1JlZ0V4cENhY2hlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IGRjYWYwYmE2Y2EzMThmMTgwMjkyY2JhOGQ3ZGMwMGZh
NTc3OTFlYTAuLjRiODY1MDY2ZWM0YTYzMThkYzVlNzdmMzNhNmIxNmQ2YzgzMDM3YzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTYyLDYg
KzYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oTnVtYmVyKSBcCiAgICAgbWFjcm8o
QXJyYXkpIFwKICAgICBtYWNybyhBcnJheUJ1ZmZlcikgXAorICAgIG1hY3JvKFNoYWRvd1JlYWxt
KSBcCiAgICAgbWFjcm8oUmVnRXhwKSBcCiAgICAgbWFjcm8obWluKSBcCiAgICAgbWFjcm8odHJ1
bmMpIFwKQEAgLTExNSw2ICsxMTYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhhc3lu
Y0dlbmVyYXRvclF1ZXVlSXRlbU5leHQpIFwKICAgICBtYWNybyhkYXRlVGltZUZvcm1hdCkgXAog
ICAgIG1hY3JvKHRoaXMpIFwKKyAgICBtYWNybyhpbXBvcnRJblJlYWxtKSBcCisgICAgbWFjcm8o
ZXZhbEluUmVhbG0pIFwKICAgICBtYWNybyh0aGlzVGltZVZhbHVlKSBcCiAgICAgbWFjcm8obmV3
VGFyZ2V0TG9jYWwpIFwKICAgICBtYWNybyhkZXJpdmVkQ29uc3RydWN0b3IpIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TaGFkb3dSZWFsbVByb3RvdHlwZS5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TaGFkb3dSZWFsbVByb3RvdHlwZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45NjNhNTUzYWU5MTNkYmY3ZjVlMTBlZmU3MGI3MjAwZWFlZjg4MDdiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1NoYWRvd1Jl
YWxtUHJvdG90eXBlLmpzCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgUGhpbGxpcCBNYXRlcyA8cG1hdGVzQGlnYWxpYS5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitAZ2xvYmFsUHJpdmF0ZQorZnVuY3Rpb24gd3JhcCh0
YXJnZXQpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKEBpc0NhbGxhYmxlKHRhcmdl
dCkpIHsKKyAgICAgICAgbGV0IHdyYXBwZWQgPSAoLi4uYXJncykgPT4geworICAgICAgICAgICAg
Ly8gc3BlY2lhbGl6YXRpb24gb2YgQXJyYXkucHJvdG90eXBlLm1hcAorICAgICAgICAgICAgdmFy
IHdyYXBwZWRBcmdzID0gYXJncy5AbWFwKEB3cmFwKQorICAgICAgICAgICAgY29uc3QgcmVzdWx0
ID0gdGFyZ2V0LkBhcHBseShAdW5kZWZpbmVkLCB3cmFwcGVkQXJncyk7CisgICAgICAgICAgICBy
ZXR1cm4gQHdyYXAocmVzdWx0KTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZXRlIHdyYXBwZWRb
J25hbWUnXTsKKyAgICAgICAgZGVsZXRlIHdyYXBwZWRbJ2xlbmd0aCddOworICAgICAgICByZXR1
cm4gd3JhcHBlZDsKKyAgICB9IGVsc2UgaWYgKEBpc09iamVjdCh0YXJnZXQpKSB7CisgICAgICAg
IEB0aHJvd1R5cGVFcnJvcigidmFsdWUgcGFzc2luZyBiZXR3ZWVuIHJlYWxtcyBtdXN0IGJlIGNh
bGxhYmxlIG9yIHByaW1pdGl2ZSIpOworICAgIH0KKyAgICByZXR1cm4gdGFyZ2V0OworfQorCitm
dW5jdGlvbiBldmFsdWF0ZShzb3VyY2VUZXh0KQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAg
IGlmICghQGlzU2hhZG93UmVhbG0odGhpcykpCisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiYCVT
aGFkb3dSZWFsbSUuZXZhbHVhdGUgcmVxdWlyZXMgdGhhdCB8dGhpc3wgYmUgYSBTaGFkb3dSZWFs
bSBpbnN0YW5jZSIpOworCisgICAgaWYgKHR5cGVvZiBzb3VyY2VUZXh0ICE9PSAnc3RyaW5nJykK
KyAgICAgICAgQHRocm93VHlwZUVycm9yKCJgJVNoYWRvd1JlYWxtJS5ldmFsdWF0ZSByZXF1aXJl
cyB0aGF0IHRoZSB8c291cmNlVGV4dHwgYXJndW1lbnQgYmUgYSBzdHJpbmciKTsKKworICAgIGxl
dCByZXN1bHQgPSBAZXZhbEluUmVhbG0odGhpcywgc291cmNlVGV4dCkKKyAgICByZXR1cm4gQHdy
YXAocmVzdWx0KTsKK30KKworZnVuY3Rpb24gaW1wb3J0VmFsdWUoc3BlY2lmaWVyLCBleHBvcnRO
YW1lKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICghQGlzU2hhZG93UmVhbG0odGhp
cykpCisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiYCVTaGFkb3dSZWFsbSUuaW1wb3J0VmFsdWUg
cmVxdWlyZXMgdGhhdCB8dGhpc3wgYmUgYSBTaGFkb3dSZWFsbSBpbnN0YW5jZSIpOworCisgICAg
bGV0IGV4cG9ydE5hbWVTdHIgPSBAdG9TdHJpbmcoZXhwb3J0TmFtZSk7CisgICAgbGV0IHNwZWNp
ZmllclN0ciA9IEB0b1N0cmluZyhzcGVjaWZpZXIpOworCisgICAgbGV0IGxvb2t1cEJpbmRpbmcg
PSAobW9kdWxlKSA9PiB7CisgICAgICAgIGxldCBsb29rdXAgPSBtb2R1bGVbZXhwb3J0TmFtZVN0
cl0KKyAgICAgICAgaWYgKGxvb2t1cCA9PT0gQHVuZGVmaW5lZCkKKyAgICAgICAgICAgIEB0aHJv
d1R5cGVFcnJvcigiJVNoYWRvd1JlYWxtJS5pbXBvcnRWYWx1ZSByZXF1aXJlcyB8ZXhwb3J0TmFt
ZXwgdG8gZXhpc3QgaW4gdGhlIHxzcGVjaWZpZXJ8Iik7CisKKyAgICAgICAgcmV0dXJuIEB3cmFw
KGxvb2t1cCk7CisgICAgfTsKKworICAgIGxldCBjcm9zc1JlYWxtVGhyb3cgPSAoZXJyb3IpID0+
IHsKKyAgICAgICAgLy8gcmUtdGhyb3cgYmVjYXVzZSBpbXBvcnQgaXNzdWVzIHJhaXNlIGVycm9y
cyB1c2luZyB0aGUgcmVhbG0ncyBnbG9iYWwgb2JqZWN0CisgICAgICAgIEB0aHJvd1R5cGVFcnJv
cihAdG9TdHJpbmcoZXJyb3IpKTsKKyAgICB9OworCisgICAgcmV0dXJuIEBpbXBvcnRJblJlYWxt
KHRoaXMsIHNwZWNpZmllclN0cikuQHRoZW4obG9va3VwQmluZGluZywgY3Jvc3NSZWFsbVRocm93
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUludHJpbnNpY1JlZ2lzdHJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCmluZGV4IDg1NTU5Nzc4NjcwNzJmMmZmZjY3YTY1NTlh
Y2Q5YTQ1NGQ1MmQyNzcuLmIzMmNjZGFmNDNhNjYyYzg3Nzk1NTgwN2Y2ZDQxZjEyNTkxOTRmNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnkuaApAQCAtNjYsNiArNjYsNyBAQCBlbnVtIGNsYXNzIExpbmtU
aW1lQ29uc3RhbnQgOiBpbnQzMl90OwogICAgIG1hY3JvKGlzUmVnRXhwT2JqZWN0KSBcCiAgICAg
bWFjcm8oaXNNYXApIFwKICAgICBtYWNybyhpc1NldCkgXAorICAgIG1hY3JvKGlzU2hhZG93UmVh
bG0pIFwKICAgICBtYWNybyhpc1N0cmluZ0l0ZXJhdG9yKSBcCiAgICAgbWFjcm8oaXNBcnJheUl0
ZXJhdG9yKSBcCiAgICAgbWFjcm8oaXNNYXBJdGVyYXRvcikgXApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKaW5kZXggNWYzMmFmODIwZTQ1
ZmE0OWRjOTJmYzQ1NjdhYWY0MDE1M2NiZWFiZC4uMDE1Mzk0ODJlMjliNWRhYTQ3M2MxMGNkZDVh
ZTY1OWE4NDQxYjIwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0xpbmtUaW1lQ29uc3RhbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TGlua1RpbWVDb25zdGFudC5oCkBAIC02Myw2ICs2Myw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0
OwogICAgIHYoaW5zdGFuY2VPZiwgbnVsbHB0cikgXAogICAgIHYoQnVpbHRpbkxvZywgbnVsbHB0
cikgXAogICAgIHYoQnVpbHRpbkRlc2NyaWJlLCBudWxscHRyKSBcCisgICAgdihTaGFkb3dSZWFs
bSwgbnVsbHB0cikgXAogICAgIHYoUmVnRXhwLCBudWxscHRyKSBcCiAgICAgdihtaW4sIG51bGxw
dHIpIFwKICAgICB2KHRydW5jLCBudWxscHRyKSBcCkBAIC03OCw2ICs3OSw4IEBAIGNsYXNzIEpT
R2xvYmFsT2JqZWN0OwogICAgIHYoaG9zdFByb21pc2VSZWplY3Rpb25UcmFja2VyLCBudWxscHRy
KSBcCiAgICAgdihTZXQsIG51bGxwdHIpIFwKICAgICB2KHRoaXNUaW1lVmFsdWUsIG51bGxwdHIp
IFwKKyAgICB2KGltcG9ydEluUmVhbG0sIG51bGxwdHIpIFwKKyAgICB2KGV2YWxJblJlYWxtLCBu
dWxscHRyKSBcCiAgICAgdihpc0NvbnN0cnVjdG9yLCBudWxscHRyKSBcCiAgICAgdihzYW1lVmFs
dWUsIG51bGxwdHIpIFwKICAgICB2KHJlZ0V4cFByb3RvRmxhZ3NHZXR0ZXIsIG51bGxwdHIpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaAppbmRleCBmNTRkODRmZWRlMjNmNTlmYTdhMTM5NDg5OGZlZWYxZDQzOGY1NDNk
Li5jZjA1MzEzN2UxYmQyMjBjYmJhMmRkMTE3YzNmYjVkYTdmN2FkZmUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CkBAIC04ODMsNiArODgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRJc1JlZ0V4cE9iamVjdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyBy
ZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBSZWdFeHBPYmplY3RUeXBlKTsgfQog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNNYXAoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgSlNNYXBUeXBlKTsg
fQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNTZXQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgSlNTZXRUeXBl
KTsgfQorICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNTaGFkb3dSZWFsbShSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3Jj
LCBTaGFkb3dSZWFsbVR5cGUpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc1N0cmluZ0l0
ZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXND
ZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTU3RyaW5nSXRlcmF0b3JUeXBlKTsgfQogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0SXNBcnJheUl0ZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTQXJyYXlJdGVy
YXRvclR5cGUpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc01hcEl0ZXJhdG9yKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUo
ZHN0LCBzcmMsIEpTTWFwSXRlcmF0b3JUeXBlKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDNiOGE2NmZlYmQyZDI4
NDIxZjI3YjQ5YWU5YjY3NzAyOThhMjYwNzEuLjEzMjA4OTA2YTY0ODljMDQ4MWMyOTY1NzUzMTJi
NjNhZTUzZDAwNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTE4OTQsNiArMTg5NCw3IEBAIENSRUFURV9JTlRSSU5T
SUNfRk9SX0JSQU5EX0NIRUNLKGlzUHJvbWlzZSwgSXNQcm9taXNlKQogQ1JFQVRFX0lOVFJJTlNJ
Q19GT1JfQlJBTkRfQ0hFQ0soaXNSZWdFeHBPYmplY3QsIElzUmVnRXhwT2JqZWN0KQogQ1JFQVRF
X0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0soaXNNYXAsIElzTWFwKQogQ1JFQVRFX0lOVFJJTlNJ
Q19GT1JfQlJBTkRfQ0hFQ0soaXNTZXQsIElzU2V0KQorQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJB
TkRfQ0hFQ0soaXNTaGFkb3dSZWFsbSwgSXNTaGFkb3dSZWFsbSkKIENSRUFURV9JTlRSSU5TSUNf
Rk9SX0JSQU5EX0NIRUNLKGlzU3RyaW5nSXRlcmF0b3IsIElzU3RyaW5nSXRlcmF0b3IpCiBDUkVB
VEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSyhpc0FycmF5SXRlcmF0b3IsIElzQXJyYXlJdGVy
YXRvcikKIENSRUFURV9JTlRSSU5TSUNfRk9SX0JSQU5EX0NIRUNLKGlzTWFwSXRlcmF0b3IsIElz
TWFwSXRlcmF0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDE3MDk2ZGE3NmZlYzFmNmQwYWRi
NmJlOThmNzdhZTAzOWEyNTJkNTkuLjBjOTA1YjU5MjA3ODIwOTU4NjQ4YmZjYTM4YzNmOTEwZTU3
Zjk0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0zNTksNiArMzU5LDcgQEAgc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJDcmVhdGVSZWFsbSk7CiBzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckV2YWxTY3JpcHQpOwog
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJHQyk7CiBzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckNsZWFyS2VwdE9iamVj
dHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJHbG9i
YWxPYmplY3RGb3IpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25E
b2xsYXJBZ2VudFN0YXJ0KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0
aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyQWdlbnRSZXBvcnQpOwpAQCAtNjM4LDYgKzYzOSw3IEBA
IHByaXZhdGU6CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCBkb2xsYXIsICJldmFsU2NyaXB0Iiwg
ZnVuY3Rpb25Eb2xsYXJFdmFsU2NyaXB0LCAxLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6Ok5vbmUpKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sIGRvbGxhciwgImdj
IiwgZnVuY3Rpb25Eb2xsYXJHQywgMCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpOb25lKSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCBkb2xsYXIsICJjbGVhcktl
cHRPYmplY3RzIiwgZnVuY3Rpb25Eb2xsYXJDbGVhcktlcHRPYmplY3RzLCAwLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6Ok5vbmUpKTsKKyAgICAgICAgYWRkRnVuY3Rp
b24odm0sIGRvbGxhciwgImdsb2JhbE9iamVjdEZvciIsIGZ1bmN0aW9uRG9sbGFyR2xvYmFsT2Jq
ZWN0Rm9yLCAxLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6Ok5vbmUp
KTsKICAgICAgICAgCiAgICAgICAgIGRvbGxhci0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiZ2xvYmFsIiksIGdsb2JhbFRoaXMoKSk7CiAgICAgICAgIGRvbGxhci0+
cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJJ
c0hUTUxEREEiKSwKQEAgLTIwNDcsNiArMjA0OSwyMiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oZnVuY3Rpb25Eb2xsYXJDbGVhcktlcHRPYmplY3RzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKK0pTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckdsb2JhbE9iamVjdEZvciwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJOb3QgZW5vdWdoIGFyZ3VtZW50
cyJfcykpKTsKKyAgICBKU1ZhbHVlIGFyZyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAg
aWYgKGFyZy5pc0NlbGwoKSkgeworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGFyZy5z
dHJ1Y3R1cmVPck51bGwodm0pOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN0cnVj
dHVyZS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbFRoaXMoKSk7CisgICAgfQorCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGZ1bmN0aW9uRG9sbGFyQWdlbnRTdGFydCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggYWE5
YjgwOWZkNzE3MWI5MjFmYzNjOGE1OTU4OGM1ZTkzY2Q0ZTE2Zi4uMzNiODkxOWRkMTUxMzY1ZmZh
M2U2OTAzZDE0NDI3NDM2MTU3NWM0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcApAQCAtNTA5NCw3ICs1MDk0LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAg
ICAgICAgICAgIG5ld0NvdW50LS07CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKElERU5UKSwgIlwibmV3LlwiIGNhbiBv
bmx5IGZvbGxvd2VkIHdpdGggdGFyZ2V0Iik7CisgICAgICAgICAgICBmYWlsSWZUcnVlKG1hdGNo
KElERU5UKSwgIlwibmV3LlwiIGNhbiBvbmx5IGJlIGZvbGxvd2VkIHdpdGggdGFyZ2V0Iik7CiAg
ICAgICAgICAgICBmYWlsRHVlVG9VbmV4cGVjdGVkVG9rZW4oKTsKICAgICAgICAgfQogICAgIH0K
QEAgLTUxMjksNyArNTEyOSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4
cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgICAgICAg
ICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlSW1wb3J0TWV0YUV4cHIobG9jYXRpb24sIGNyZWF0
ZVJlc29sdmVBbmRVc2VWYXJpYWJsZShjb250ZXh0LCAmbV92bS5wcm9wZXJ0eU5hbWVzLT5tZXRh
UHJpdmF0ZU5hbWUsIGZhbHNlLCBleHByZXNzaW9uU3RhcnQsIGxvY2F0aW9uKSk7CiAgICAgICAg
ICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBm
YWlsSWZUcnVlKG1hdGNoKElERU5UKSwgIlwiaW1wb3J0LlwiIGNhbiBvbmx5IGZvbGxvd2VkIHdp
dGggbWV0YSIpOworICAgICAgICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goSURFTlQpLCAiXCJp
bXBvcnQuXCIgY2FuIG9ubHkgYmUgZm9sbG93ZWQgd2l0aCBtZXRhIik7CiAgICAgICAgICAgICAg
ICAgZmFpbER1ZVRvVW5leHBlY3RlZFRva2VuKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlw
ZS5jcHAKaW5kZXggNDA2MzMxY2FkZTkwNThjNDNjNDY4YjhjZWVmYTUzZjJlZWI4Y2MxMy4uMzg3
NWNmNmI2M2MwZDMxMmFiMjUyZDYwZTBlZjkwYjgzNDMyNTU4NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMTA1LDYgKzEwNSw3
IEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RS
QU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVkdWNlUHVibGljTmFt
ZSgpLCBhcnJheVByb3RvdHlwZVJlZHVjZUNvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfQlVJTFRJTl9GVU5D
VElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
cmVkdWNlUmlnaHRQdWJsaWNOYW1lKCksIGFycmF5UHJvdG90eXBlUmVkdWNlUmlnaHRDb2RlR2Vu
ZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hcFB1YmxpY05hbWUoKSwgYXJyYXlQcm90b3R5cGVN
YXBDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSk7CisgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hcFByaXZhdGVOYW1lKCksIGFycmF5
UHJvdG90eXBlTWFwQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlz
UHVibGljTmFtZSgpLCBhcnJheVByb3RvRnVuY0tleXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAwLCBBcnJheUtleXNJbnRyaW5zaWMpOwogICAg
IEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnRyaWVzUHVibGljTmFtZSgpLCBhcnJheVByb3Rv
RnVuY0VudHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCAwLCBBcnJheUVudHJpZXNJbnRyaW5zaWMpOwogICAgIEpTQ19CVUlMVElOX0ZVTkNU
SU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5m
aW5kUHVibGljTmFtZSgpLCBhcnJheVByb3RvdHlwZUZpbmRDb2RlR2VuZXJhdG9yLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA3MTRh
YTJmZWIyMjRmYTU4ZjI3ZWQ1NTUxYjY3YzlmMzI2NWNiZDI3Li4zOTg0MGNhYTE4NWYwY2EyMjFm
MjdiZTc3ZTMwNTVhMzU4MDNlMTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTUyLDYgKzUyLDcgQEAKICAgICBtYWNybyhP
YmplY3QpIFwKICAgICBtYWNybyhQbHVyYWxSdWxlcykgXAogICAgIG1hY3JvKFByb21pc2UpIFwK
KyAgICBtYWNybyhTaGFkb3dSZWFsbSkgXAogICAgIG1hY3JvKFJlZmxlY3QpIFwKICAgICBtYWNy
byhSZWdFeHApIFwKICAgICBtYWNybyhSZWxhdGl2ZVRpbWVGb3JtYXQpIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5j
cHAKaW5kZXggNzQ5ODIwNTAxOGNkZWY4ZjNmODM2N2I0YmJlMmVmNzlkYmQxN2MxZi4uNDBkMWMx
MGEwNTcwOTEzNGE0MWMyNmExNmRlMDZjMzFkM2I2OWY2MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKQEAg
LTM0LDcgKzM0LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUluZGlyZWN0RXZhbEV4ZWN1dGFi
bGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJp
dmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRU
eXBlIGV2YWxDb250ZXh0VHlwZSkKKwordGVtcGxhdGU8dHlwZW5hbWUgRXJyb3JIYW5kbGVyRnVu
Y3Rvcj4KK2lubGluZSBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRh
YmxlOjpjcmVhdGVJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9v
bCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBl
LCBFcnJvckhhbmRsZXJGdW5jdG9yIGVycm9ySGFuZGxlcikKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwpAQCAtNDksNyArNTEsNyBAQCBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxF
eGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogCiAgICAgUGFyc2Vy
RXJyb3IgZXJyb3I7CiAgICAgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVy
YXRpb25Nb2RlID0gZ2xvYmFsT2JqZWN0LT5kZWZhdWx0Q29kZUdlbmVyYXRpb25Nb2RlKCk7Ci0g
ICAgCisKICAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIHVubGlua2VkRXZhbENvZGUgPSB2bS5j
b2RlQ2FjaGUoKS0+Z2V0VW5saW5rZWRFdmFsQ29kZUJsb2NrKAogICAgICAgICB2bSwgZXhlY3V0
YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0
LCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5cGUpOwogCkBAIC01Nyw3
ICs1OSw3IEBAIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6
OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgICAgIGdsb2JhbE9iamVjdC0+
ZGVidWdnZXIoKS0+c291cmNlUGFyc2VkKGdsb2JhbE9iamVjdCwgZXhlY3V0YWJsZS0+c291cmNl
KCkucHJvdmlkZXIoKSwgZXJyb3IubGluZSgpLCBlcnJvci5tZXNzYWdlKCkpOwogCiAgICAgaWYg
KGVycm9yLmlzVmFsaWQoKSkgewotICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgZXJyb3IudG9FcnJvck9iamVjdChnbG9iYWxPYmplY3QsIGV4ZWN1dGFibGUtPnNvdXJj
ZSgpKSk7CisgICAgICAgIGVycm9ySGFuZGxlcigmc2NvcGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgp
LCAmZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTY2LDYgKzY4
LDIyIEBAIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNy
ZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CiB9
CiAKK0luZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0
ZVNhZmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIE5ha2VkUHRy
PEpTT2JqZWN0PiYgcmVzdWx0aW5nRXJyb3IpCit7CisgICAgYXV0byBoYW5kbGVFcnJvciA9IFsm
XShUaHJvd1Njb3BlKiwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciogZXJy
b3IpIHsKKyAgICAgICAgcmVzdWx0aW5nRXJyb3IgPSBlcnJvci0+dG9FcnJvck9iamVjdChnbG9i
YWxPYmplY3QsIHNvdXJjZSk7CisgICAgfTsKKyAgICByZXR1cm4gY3JlYXRlSW1wbChnbG9iYWxP
YmplY3QsIHNvdXJjZSwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0
LCBldmFsQ29udGV4dFR5cGUsIGhhbmRsZUVycm9yKTsKK30KKworSW5kaXJlY3RFdmFsRXhlY3V0
YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlIGRl
cml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4
dFR5cGUgZXZhbENvbnRleHRUeXBlKQoreworICAgIGF1dG8gaGFuZGxlRXJyb3IgPSBbJl0oVGhy
b3dTY29wZSogc2NvcGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3IqIGVy
cm9yKSB7CisgICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsICpzY29wZSwgZXJyb3It
PnRvRXJyb3JPYmplY3QoZ2xvYmFsT2JqZWN0LCBzb3VyY2UpKTsKKyAgICB9OworICAgIHJldHVy
biBjcmVhdGVJbXBsKGdsb2JhbE9iamVjdCwgc291cmNlLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlwZSwgaGFuZGxlRXJyb3IpOworfQor
CiBjb25zdGV4cHIgYm9vbCBpblN0cmljdENvbnRleHQgPSBmYWxzZTsKIGNvbnN0ZXhwciBib29s
IGluc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxzZTsKIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6
OkluZGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRU
eXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29u
dGV4dFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRp
cmVjdEV2YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRp
cmVjdEV2YWxFeGVjdXRhYmxlLmgKaW5kZXggNDk4YjVjODcwOThhYjM3NDc5N2EyNWJmNDgxNjM3
Y2ZiYjkyZWRmNS4uYzhlNTI0NTY2NTg1NTcxNDQ2NDIyOGYwMDBjZmIwNzM5ZGQ5NzM3MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0
YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4
ZWN1dGFibGUuaApAQCAtMzIsNyArMzIsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBJbmRp
cmVjdEV2YWxFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEV2YWxFeGVjdXRhYmxlIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xvYmFsT2Jq
ZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93
RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUpOworICAgIHN0YXRpYyBJbmRpcmVjdEV2
YWxFeGVjdXRhYmxlKiBjcmVhdGVTYWZlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29k
ZSYsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFs
Q29udGV4dFR5cGUsIE5ha2VkUHRyPEpTT2JqZWN0PiYpOwogcHJpdmF0ZToKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBFcnJvckhhbmRsZXJGdW5jdG9yPgorICAgIGlubGluZSBzdGF0aWMgSW5kaXJl
Y3RFdmFsRXhlY3V0YWJsZSogY3JlYXRlSW1wbChKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJj
ZUNvZGUmLCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwg
RXZhbENvbnRleHRUeXBlLCBFcnJvckhhbmRsZXJGdW5jdG9yKTsKKwogICAgIEluZGlyZWN0RXZh
bEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgRGVyaXZlZENv
bnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSk7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKaW5kZXggYjJmZGY0NjQzNmU4Nzc2MDQ5MDY0OGFmZDAxNDFjODIyMzYxNDk1MS4uOGYz
N2RjZTk1NjVmYTlhODA2MWVhYzAzMDhmM2UxYjEyYTliNWIzNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMTk0LDYgKzE5NCw5
IEBACiAjaW5jbHVkZSAiU2V0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJTZXRJdGVyYXRvclBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIlNldFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIlNoYWRvd1Jl
YWxtQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJTaGFkb3dSZWFsbU9iamVjdC5oIgorI2luY2x1
ZGUgIlNoYWRvd1JlYWxtUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRp
b24uaCIKICNpbmNsdWRlICJTdHJpbmdDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlN0cmluZ0l0
ZXJhdG9yUHJvdG90eXBlLmgiCkBAIC05MTQsNiArOTE3LDkgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6aW5pdChWTSYgdm0pCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE51bWJlck9mQXJy
YXlJbmRleGluZ01vZGVzOyArK2kpCiAgICAgICAgIG1fYXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGlu
Z1NoYXBlRHVyaW5nQWxsb2NhdGlvbltpXSA9IG1fb3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvcklu
ZGV4aW5nU2hhcGVbaV07CiAKKyAgICBtX3NoYWRvd1JlYWxtUHJvdG90eXBlLnNldCh2bSwgdGhp
cywgU2hhZG93UmVhbG1Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgU2hhZG93UmVhbG1Qcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7Cisg
ICAgbV9zaGFkb3dSZWFsbU9iamVjdFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFNoYWRvd1JlYWxt
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fc2hhZG93UmVhbG1Qcm90b3R5cGUu
Z2V0KCkpKTsKKwogICAgIG1fcmVnRXhwUHJvdG90eXBlLnNldCh2bSwgdGhpcywgUmVnRXhwUHJv
dG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIFJlZ0V4cFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKICAgICBtX3JlZ0V4cFN0cnVj
dHVyZS5zZXQodm0sIHRoaXMsIFJlZ0V4cE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3Ry
dWN0dXJlLnNldCh2bSwgdGhpcywgY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKHZt
LCB0aGlzKSk7CkBAIC0xMDE4LDcgKzEwMjQsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5p
dChWTSYgdm0pCiAgICAgQXJyYXlDb25zdHJ1Y3RvciogYXJyYXlDb25zdHJ1Y3RvciA9IEFycmF5
Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9hcnJheVByb3Rv
dHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLmdldCgpKTsKICAgICBtX2FycmF5Q29u
c3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBhcnJheUNvbnN0cnVjdG9yKTsKICAgICBtX2xpbmtUaW1l
Q29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpBcnJheSld
LnNldCh2bSwgdGhpcywgYXJyYXlDb25zdHJ1Y3Rvcik7Ci0gICAgCisKKyAgICBTaGFkb3dSZWFs
bUNvbnN0cnVjdG9yKiBzaGFkb3dSZWFsbUNvbnN0cnVjdG9yID0gU2hhZG93UmVhbG1Db25zdHJ1
Y3Rvcjo6Y3JlYXRlKHZtLCBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX3NoYWRvd1JlYWxtUHJvdG90
eXBlLmdldCgpLCBtX3NwZWNpZXNHZXR0ZXJTZXR0ZXIuZ2V0KCkpOworICAgIG1fc2hhZG93UmVh
bG1Db25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIHNoYWRvd1JlYWxtQ29uc3RydWN0b3IpOworICAg
IG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3Rh
bnQ6OlNoYWRvd1JlYWxtKV0uc2V0KHZtLCB0aGlzLCBzaGFkb3dSZWFsbUNvbnN0cnVjdG9yKTsK
KwogICAgIFJlZ0V4cENvbnN0cnVjdG9yKiByZWdFeHBDb25zdHJ1Y3RvciA9IFJlZ0V4cENvbnN0
cnVjdG9yOjpjcmVhdGUodm0sIFJlZ0V4cENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQo
KSwgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLmdldCgpKTsKICAgICBtX3JlZ0V4cENvbnN0cnVjdG9y
LnNldCh2bSwgdGhpcywgcmVnRXhwQ29uc3RydWN0b3IpOwogICAgIG1fbGlua1RpbWVDb25zdGFu
dHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlJlZ0V4cCldLnNldCh2
bSwgdGhpcywgcmVnRXhwQ29uc3RydWN0b3IpOwpAQCAtMTA5OCw2ICsxMTA4LDcgQEAgY2FwaXRh
bE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVG
bGFnID8gY2FwaXRhbE5hbWUKICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGZ1bmN0aW9u
Q29uc3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pKTsKICAgICBtX2FycmF5UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGFycmF5Q29uc3RydWN0b3IsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBt
X3JlZ0V4cFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCByZWdFeHBDb25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIG1fc2hhZG93UmVhbG1Q
cm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5jb25zdHJ1Y3Rvciwgc2hhZG93UmVhbG1Db25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIAogICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5PYmplY3QsIG9iamVjdENvbnN0
cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PkZ1bmN0aW9uLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CkBAIC0xMjQyLDYgKzEyNTMsOCBAQCBjYXBpdGFs
TmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZs
YWcgPyBjYXBpdGFsTmFtZQogICAgICAgICBUZW1wb3JhbE9iamVjdCogdGVtcG9yYWwgPSBUZW1w
b3JhbE9iamVjdDo6Y3JlYXRlKHZtLCBUZW1wb3JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzKSk7CiAgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5UZW1wb3JhbCwgdGVtcG9yYWwsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICB9CisgICAgaWYgKE9wdGlvbnM6OnVzZVNo
YWRvd1JlYWxtKCkpCisgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5TaGFkb3dSZWFsbSwgc2hhZG93UmVhbG1Db25zdHJ1Y3Rvciwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogCiAgICAgbV9t
b2R1bGVMb2FkZXIuaW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNN
b2R1bGVMb2FkZXI+JiBpbml0KSB7CkBAIC0xNDE0LDYgKzE0MjcsMTIgQEAgY2FwaXRhbE5hbWUg
IyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8g
Y2FwaXRhbE5hbWUKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVk
PihMaW5rVGltZUNvbnN0YW50Ojpob3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIpXS5pbml0TGF0
ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKICAgICAgICAgICAgIGlu
aXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3Qq
Pihpbml0Lm93bmVyKSwgMiwgU3RyaW5nKCksIGdsb2JhbEZ1bmNIb3N0UHJvbWlzZVJlamVjdGlv
blRyYWNrZXIpKTsKICAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aW1wb3J0SW5SZWFsbSldLmluaXRMYXRl
cihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5p
dC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+
KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgaW1wb3J0SW5SZWFsbSkpOworICAgICAgICB9KTsK
KyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNv
bnN0YW50OjpldmFsSW5SZWFsbSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlND
ZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGlu
aXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwg
ZXZhbEluUmVhbG0pKTsKKyAgICAgICAgfSk7CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6dGhpc1RpbWVWYWx1ZSldLmluaXRM
YXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewogICAgICAgICAgICAg
aW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVj
dCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgZGF0ZVByb3RvRnVuY0dldFRpbWUsIERhdGVQ
cm90b3R5cGVHZXRUaW1lSW50cmluc2ljKSk7CiAgICAgICAgIH0pOwpAQCAtMjA5OCw2ICsyMTE3
LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxs
LCBWaXNpdG9yJiB2aXNpdG9yKQogICAgIHRoaXNPYmplY3QtPm1fVVJJRXJyb3JTdHJ1Y3R1cmUu
dmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9hZ2dyZWdhdGVFcnJvclN0cnVjdHVy
ZS52aXNpdCh2aXNpdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FycmF5
Q29uc3RydWN0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc2hhZG93UmVh
bG1Db25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWdFeHBD
b25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9vYmplY3RDb25z
dHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9mdW5jdGlvbkNvbnN0
cnVjdG9yKTsKQEAgLTIxOTQsNiArMjIxNCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0
Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlzT2Jq
ZWN0LT5tX2N1c3RvbVNldHRlckZ1bmN0aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAg
IHRoaXNPYmplY3QtPm1fYm91bmRGdW5jdGlvblN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAg
ICB0aGlzT2JqZWN0LT5tX25hdGl2ZVN0ZEZ1bmN0aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0b3Ip
OworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc2hhZG93UmVhbG1PYmplY3RTdHJ1
Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uU3Ry
dWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FzeW5jRnVuY3Rpb25T
dHJ1Y3R1cmUpOwpAQCAtMjU1MCw2ICsyNTcxLDEzIEBAIEpTR2xvYmFsT2JqZWN0KiBKU0dsb2Jh
bE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgcmV0dXJu
IGdsb2JhbE9iamVjdDsKIH0KIAorSlNHbG9iYWxPYmplY3QqIEpTR2xvYmFsT2JqZWN0OjpjcmVh
dGVXaXRoQ3VzdG9tTWV0aG9kVGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29u
c3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlKQoreworICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dsb2Jh
bE9iamVjdD4odm0uaGVhcCkpIEpTR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIG1ldGhvZFRh
YmxlKTsKKyAgICBnbG9iYWxPYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4g
Z2xvYmFsT2JqZWN0OworfQorCiB2b2lkIEpTR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCiB7CiAgICAgRGVmZXJUZXJtaW5hdGlvbiBkZWZlclRlcm1pbmF0aW9uKHZtKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGRl
YjMzZGJkMTAzMDgzYTE4ZjQwYmE3YWRjNTY5NTI2MDE0OTdkMjkuLjczMzU1ZjBmNjc4ODZjNWRm
Yjk5ZjMzNzc5MzBiNDQ3ZjkxZDZiYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMTE1LDYgKzExNSw4IEBAIGNsYXNzIE51bGxTZXR0
ZXJGdW5jdGlvbjsKIGNsYXNzIE9iamVjdENvbnN0cnVjdG9yOwogY2xhc3MgUHJvZ3JhbUNvZGVC
bG9jazsKIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOworY2xhc3MgU2hhZG93UmVhbG1Db25zdHJ1
Y3RvcjsKK2NsYXNzIFNoYWRvd1JlYWxtUHJvdG90eXBlOwogY2xhc3MgUmVnRXhwQ29uc3RydWN0
b3I7CiBjbGFzcyBSZWdFeHBQcm90b3R5cGU7CiBjbGFzcyBTZXRJdGVyYXRvclByb3RvdHlwZTsK
QEAgLTMwNiw2ICszMDgsNyBAQCBwdWJsaWM6CiAKICAgICBXcml0ZUJhcnJpZXI8T2JqZWN0Q29u
c3RydWN0b3I+IG1fb2JqZWN0Q29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPEFycmF5Q29u
c3RydWN0b3I+IG1fYXJyYXlDb25zdHJ1Y3RvcjsKKyAgICBXcml0ZUJhcnJpZXI8U2hhZG93UmVh
bG1Db25zdHJ1Y3Rvcj4gbV9zaGFkb3dSZWFsbUNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmll
cjxSZWdFeHBDb25zdHJ1Y3Rvcj4gbV9yZWdFeHBDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJp
ZXI8RnVuY3Rpb25Db25zdHJ1Y3Rvcj4gbV9mdW5jdGlvbkNvbnN0cnVjdG9yOwogICAgIFdyaXRl
QmFycmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29uc3RydWN0b3I7CkBAIC0z
NTIsNiArMzU1LDcgQEAgcHVibGljOgogICAgIFdyaXRlQmFycmllcjxPYmplY3RQcm90b3R5cGU+
IG1fb2JqZWN0UHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxGdW5jdGlvblByb3RvdHlwZT4g
bV9mdW5jdGlvblByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8QXJyYXlQcm90b3R5cGU+IG1f
YXJyYXlQcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPFNoYWRvd1JlYWxtUHJvdG90eXBlPiBt
X3NoYWRvd1JlYWxtUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxSZWdFeHBQcm90b3R5cGU+
IG1fcmVnRXhwUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxJdGVyYXRvclByb3RvdHlwZT4g
bV9pdGVyYXRvclByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8QXN5bmNJdGVyYXRvclByb3Rv
dHlwZT4gbV9hc3luY0l0ZXJhdG9yUHJvdG90eXBlOwpAQCAtNDA4LDYgKzQxMiw3IEBAIHB1Ymxp
YzoKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jdXN0b21T
ZXR0ZXJGdW5jdGlvblN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZT4gbV9uYXRpdmVTdGRGdW5jdGlvblN0cnVjdHVyZTsKICAgICBQcm9wZXJ0eU9m
ZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X3NoYWRvd1JlYWxtT2JqZWN0U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fcmVnRXhwU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxBc3luY0Z1bmN0aW9uUHJvdG90
eXBlPiBtX2FzeW5jRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEFzeW5jR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU+IG1fYXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZTsKQEAgLTYwOSw2ICs2MTQsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIEpTR2xvYmFsT2JqZWN0KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNHbG9iYWxPYmplY3QqIGNyZWF0ZVdpdGhDdXN0
b21NZXRob2RUYWJsZShWTSYsIFN0cnVjdHVyZSosIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRh
YmxlKik7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCkBAIC03MTIsNiArNzE4LDcgQEAg
cHVibGljOgogICAgIEJpZ0ludFByb3RvdHlwZSogYmlnSW50UHJvdG90eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9iaWdJbnRQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBKU09iamVjdCogZGF0ZVByb3Rv
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0ZVN0cnVjdHVyZS5wcm90b3R5cGUodGhpcyk7IH0K
ICAgICBKU09iamVjdCogc3ltYm9sUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9zeW1ib2xP
YmplY3RTdHJ1Y3R1cmUucHJvdG90eXBlSW5pdGlhbGl6ZWRPbk1haW5UaHJlYWQodGhpcyk7IH0K
KyAgICBTaGFkb3dSZWFsbVByb3RvdHlwZSogc2hhZG93UmVhbG1Qcm90b3R5cGUoKSBjb25zdCB7
IHJldHVybiBtX3NoYWRvd1JlYWxtUHJvdG90eXBlLmdldCgpOyB9CiAgICAgUmVnRXhwUHJvdG90
eXBlKiByZWdFeHBQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvdHlwZS5n
ZXQoKTsgfQogICAgIEpTT2JqZWN0KiBlcnJvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZXJyb3JTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpOyB9CiAgICAgSXRlcmF0b3JQcm90b3R5cGUq
IGl0ZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvdHlwZS5n
ZXQoKTsgfQpAQCAtODI5LDYgKzgzNiw3IEBAIHB1YmxpYzoKICAgICBQcm9wZXJ0eU9mZnNldCBm
dW5jdGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZU9mZnNldDsg
fQogICAgIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiByZWdF
eHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQor
ICAgIFN0cnVjdHVyZSogc2hhZG93UmVhbG1TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3No
YWRvd1JlYWxtT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBnZW5lcmF0
b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvclN0cnVjdHVyZS5nZXQoKTsg
fQogICAgIFN0cnVjdHVyZSogYXN5bmNHZW5lcmF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX2FzeW5jR2VuZXJhdG9yU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBnZW5l
cmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnVuY3Rp
b25TdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUu
Y3BwCmluZGV4IDE2MTNjNjUzZWYyOGYxODBjMGY4NTMyZjI0ZTYwNGZiNDVmNmQwZjEuLmUyYzJm
N2YwOTI3NDE1MjQwZDg1YzY3ZGQzZjhkYzIwZmNiMDk4ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlLmNwcApAQCAtNDIsNiArNDIsNyBAQCB2b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpKU1R5cGUgdHlwZSkKICAgICBDQVNFKFN0cmluZ1R5
cGUpCiAgICAgQ0FTRShTeW1ib2xUeXBlKQogICAgIENBU0UoSGVhcEJpZ0ludFR5cGUpCisgICAg
Q0FTRShTaGFkb3dSZWFsbVR5cGUpCiAgICAgQ0FTRShDdXN0b21HZXR0ZXJTZXR0ZXJUeXBlKQog
ICAgIENBU0UoQVBJVmFsdWVXcmFwcGVyVHlwZSkKICAgICBDQVNFKE5hdGl2ZUV4ZWN1dGFibGVU
eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAppbmRleCBkZTY3MzAxYmMx
NTc1MGExNDE1Mjc0Nzc0ODNkZTM3ZmVhMDE2NGFiLi4zYjU1N2ZkMzk0MWIzOTNjZDZlM2QwZGNl
MjA0ZDdkZDM5YjMxMzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaApA
QCAtMTA5LDYgKzEwOSw3IEBAIGVudW0gSlNUeXBlIDogdWludDhfdCB7CiAgICAgLy8gRW5kIEpT
U2NvcGUgdHlwZXMuCiAKICAgICBNb2R1bGVOYW1lc3BhY2VPYmplY3RUeXBlLAorICAgIFNoYWRv
d1JlYWxtVHlwZSwKICAgICBSZWdFeHBPYmplY3RUeXBlLAogICAgIEpTRGF0ZVR5cGUsCiAgICAg
UHJveHlPYmplY3RUeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNM
aXN0LmgKaW5kZXggYTBjMjE3MGVjNGJhNTIxYzUxYmVjNmQyMDNhNTFhOTU2OGIyZjRiMi4uMmFi
MTg4NTAxYjhiZTk4NDNhNTNlYjc1MGE3MzM0MjQwNzg3ZDI1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC01NDAsNiArNTQwLDcgQEAgYm9vbCBj
YW5Vc2VXZWJBc3NlbWJseUZhc3RNZW1vcnkoKTsKICAgICB2KEJvb2wsIHVzZUhhc093biwgdHJ1
ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBPYmplY3QuaGFzT3duIG1ldGhvZCIpIFwKICAgICB2KEJv
b2wsIHVzZUludGxFbnVtZXJhdGlvbiwgdHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBJbnRsIGVu
dW1lcmF0aW9uIEFQSXMuIikgXAogICAgIHYoQm9vbCwgdXNlU2hhcmVkQXJyYXlCdWZmZXIsIGZh
bHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KEJvb2wsIHVzZVNoYWRvd1JlYWxtLCBmYWxz
ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBTaGFkb3dSZWFsbSBvYmplY3QuIikgXAogICAgIHYoQm9v
bCwgdXNlVGVtcG9yYWwsIGZhbHNlLCBOb3JtYWwsICJFeHBvc2UgdGhlIFRlbXBvcmFsIG9iamVj
dC4iKSBcCiAgICAgdihCb29sLCB1c2VXZWJBc3NlbWJseVRocmVhZGluZywgdHJ1ZSwgTm9ybWFs
LCAiQWxsb3cgaW5zdHJ1Y3Rpb25zIGZyb20gdGhlIHdhc20gdGhyZWFkaW5nIHNwZWMuIikgXAog
ICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcywgZmFsc2Us
IE5vcm1hbCwgIkFsbG93IGZ1bmN0aW9uIHR5cGVzIGZyb20gdGhlIHdhc20gdHlwZWQgZnVuY3Rp
b24gcmVmZXJlbmNlcyBzcGVjLiIpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NoYWRvd1JlYWxtQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTE3ODNm
OWI1MDBkZWQxNDQxOWRmZWNmODQ5MGJhNzIyYzZkNTYzMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtQ29uc3RydWN0b3IuY3BwCkBA
IC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgUGhpbGxpcCBNYXRlcyA8
cG1hdGVzQGlnYWxpYS5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhZG93UmVhbG1Db25zdHJ1
Y3Rvci5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlNoYWRvd1JlYWxt
T2JqZWN0LmgiCisKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBTaGFkb3dS
ZWFsbUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9u
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoU2hhZG93UmVh
bG1Db25zdHJ1Y3RvcikgfTsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJ
QkxFKFNoYWRvd1JlYWxtQ29uc3RydWN0b3IpOworCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihjYWxsU2hhZG93UmVhbG0pOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04oY29uc3RydWN0V2l0aFNoYWRvd1JlYWxtQ29uc3RydWN0b3IpOworCitTaGFkb3dSZWFsbUNv
bnN0cnVjdG9yOjpTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGNhbGxTaGFkb3dS
ZWFsbSwgY29uc3RydWN0V2l0aFNoYWRvd1JlYWxtQ29uc3RydWN0b3IpCit7Cit9CisKK3ZvaWQg
U2hhZG93UmVhbG1Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTaGFkb3dSZWFs
bVByb3RvdHlwZSogc2hhZG93UmVhbG1Qcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0sIDAsIHZtLnByb3BlcnR5TmFtZXMtPlNoYWRvd1JlYWxtLnN0cmluZygpLCBQcm9w
ZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHNo
YWRvd1JlYWxtUHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Cit9
CisKK0pTT2JqZWN0KiBjb25zdHJ1Y3RTaGFkb3dSZWFsbShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlLCBjb25zdCBBcmdMaXN0JikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFN0cnVjdHVyZSogc2hhZG93UmVhbG1TdHJ1Y3R1cmUgPSBTaGFkb3dSZWFsbU9iamVjdDo6
Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+c2hhZG93UmVh
bG1Qcm90b3R5cGUoKSk7CisgICAgcmV0dXJuIFNoYWRvd1JlYWxtT2JqZWN0OjpjcmVhdGUodm0s
IHNoYWRvd1JlYWxtU3RydWN0dXJlLCBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRh
YmxlKCkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0V2l0aFNoYWRv
d1JlYWxtQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCit7CisgICAgQXJnTGlzdCBhcmdzKGNhbGxGcmFtZSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RTaGFkb3dSZWFsbShnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS0+bmV3VGFyZ2V0KCksIGFyZ3MpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGNhbGxTaGFkb3dSZWFsbSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSopKQoreworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGdsb2JhbE9i
amVjdC0+dm0oKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9y
Q2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJT
aGFkb3dSZWFsbSIpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmE3MzBmYjNjZTA2MTRjZTJlNDE5OTNhNDEwMWRhZTIzNTM1ZGQzMwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtQ29uc3Ry
dWN0b3IuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIFBoaWxs
aXAgTWF0ZXMgPHBtYXRlc0BpZ2FsaWEuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0
aW9uLmgiCisjaW5jbHVkZSAiU2hhZG93UmVhbG1Qcm90b3R5cGUuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIEdldHRlclNldHRlcjsKKworY2xhc3MgU2hhZG93UmVhbG1Db25zdHJ1Y3Rv
ciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRh
YmxlOworCisgICAgc3RhdGljIFNoYWRvd1JlYWxtQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBTaGFkb3dSZWFsbVByb3RvdHlwZSogc2hhZG93UmVhbG1Q
cm90b3R5cGUsIEdldHRlclNldHRlciopCisgICAgeworICAgICAgICBTaGFkb3dSZWFsbUNvbnN0
cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFNoYWRvd1Jl
YWxtQ29uc3RydWN0b3I+KHZtLmhlYXApKSBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKHZtLCBzdHJ1
Y3R1cmUpOworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHNoYWRvd1Jl
YWxtUHJvdG90eXBlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKworICAg
IERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU2hhZG93UmVhbG1Db25zdHJ1Y3Rv
cihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBTaGFkb3dS
ZWFsbVByb3RvdHlwZSopOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KFNoYWRvd1JlYWxtQ29uc3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24pOworCit9IC8vIG5hbWVz
cGFjZSBKU0MKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hh
ZG93UmVhbG1PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93
UmVhbG1PYmplY3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyZWViNGE3NGI2NGFhYmU3MTE4YzhlNmVjMzlm
MWFjNTYxOGY2NWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TaGFkb3dSZWFsbU9iamVjdC5jcHAKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBQaGlsbGlwIE1hdGVzIDxwbWF0ZXNAaWdhbGlhLmNvbT4uCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJTaGFkb3dSZWFsbU9iamVjdC5oIgorCisjaW5jbHVkZSAiT2JqZWN0UHJvdG90
eXBlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9E
RVNUUlVDVElCTEUoU2hhZG93UmVhbG1PYmplY3QpOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBTaGFkb3dSZWFsbU9iamVjdDo6c19p
bmZvID0geyAiU2hhZG93UmVhbG0iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKFNoYWRvd1JlYWxtT2JqZWN0KSB9OworCitTaGFkb3dSZWFsbU9i
amVjdDo6U2hhZG93UmVhbG1PYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRv
cj4KK3ZvaWQgU2hhZG93UmVhbG1PYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2Vs
bCwgVmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBTaGFkb3dSZWFsbU9iamVjdCogdGhpc09iamVj
dCA9IGpzQ2FzdDxTaGFkb3dSZWFsbU9iamVjdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+
bV9nbG9iYWxPYmplY3QpOworfQorCitERUZJTkVfVklTSVRfQ0hJTERSRU4oU2hhZG93UmVhbG1P
YmplY3QpOworCitTaGFkb3dSZWFsbU9iamVjdCogU2hhZG93UmVhbG1PYmplY3Q6OmNyZWF0ZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSogbWV0aG9kVGFibGUpCit7CisgICAgU2hhZG93UmVhbG1PYmplY3QqIG9iamVjdCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFNoYWRvd1JlYWxtT2JqZWN0Pih2bS5oZWFwKSkgU2hhZG93
UmVhbG1PYmplY3Qodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2
bSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEpTR2xvYmFsT2JqZWN0Ojpj
cmVhdGVXaXRoQ3VzdG9tTWV0aG9kVGFibGUodm0sIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIGpzTnVsbCgpKSwgbWV0aG9kVGFibGUpOworICAgIG9iamVjdC0+bV9nbG9iYWxP
YmplY3Quc2V0KHZtLCBvYmplY3QsIGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIG9iamVjdDsK
K30KKwordm9pZCBTaGFkb3dSZWFsbU9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQorewor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGlu
Zm8oKSkpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NoYWRvd1JlYWxtT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TaGFkb3dSZWFsbU9iamVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3NDlkN2ZhOWM1N2U3ZDlmMDhlY2Rh
YzcwMDcxYjE5YTQ2NGI3OTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TaGFkb3dSZWFsbU9iamVjdC5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgUGhpbGxpcCBNYXRlcyA8cG1hdGVzQGlnYWxpYS5jb20+LgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFNoYWRvd1JlYWxtT2JqZWN0IGZpbmFsIDogcHVibGlj
IEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFs
T2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBT
dWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKKyAgICB7CisgICAgICAgIHJldHVybiAmdm0uc2hhZG93UmVhbG1TcGFjZTsKKyAgICB9CisK
KyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKFNoYWRvd1JlYWxtVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKwor
ICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTaGFkb3dSZWFsbU9iamVjdCogY3JlYXRl
KFZNJiwgU3RydWN0dXJlKiwgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqKTsKKworICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSB7IHJldHVybiBtX2dsb2JhbE9iamVjdC5n
ZXQoKTsgfQorCitwcml2YXRlOgorICAgIFNoYWRvd1JlYWxtT2JqZWN0KFZNJiwgU3RydWN0dXJl
Kik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIERFQ0xBUkVfVklTSVRfQ0hJ
TERSRU47CisKKyAgICBXcml0ZUJhcnJpZXI8SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjNiNDU3
MTJlOTk4YjUzOGVkYWViZDI3MWNiOTM0ZjU5NWZlMzQ2OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmNwcApAQCAt
MCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBQaGlsbGlwIE1hdGVzIDxw
bWF0ZXNAaWdhbGlhLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFkb3dSZWFsbVByb3RvdHlw
ZS5oIgorCisjaW5jbHVkZSAiQ29tcGxldGlvbi5oIgorI2luY2x1ZGUgIkluZGlyZWN0RXZhbEV4
ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTQ0J1aWx0
aW5zLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
LmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2UuaCIKKyNpbmNsdWRlICJKU01vZHVsZUxv
YWRlci5oIgorI2luY2x1ZGUgIkxpdGVyYWxQYXJzZXIuaCIKKyNpbmNsdWRlICJTaGFkb3dSZWFs
bU9iamVjdC5oIgorCisjaW5jbHVkZSAiU2hhZG93UmVhbG1Qcm90b3R5cGUubHV0LmgiCisKK25h
bWVzcGFjZSBKU0MgeworCisvKiBTb3VyY2UgZm9yIFNoYWRvd1JlYWxtUHJvdG90eXBlLmx1dC5o
CitAYmVnaW4gc2hhZG93UmVhbG1Qcm90b3R5cGVUYWJsZQorICBldmFsdWF0ZSAgICBKU0J1aWx0
aW4gICAgIERvbnRFbnVtfEZ1bmN0aW9uICAxCisgIGltcG9ydFZhbHVlIEpTQnVpbHRpbiAgICAg
RG9udEVudW18RnVuY3Rpb24gIDIKK0BlbmQKKyovCisKK2NvbnN0IENsYXNzSW5mbyBTaGFkb3dS
ZWFsbVByb3RvdHlwZTo6c19pbmZvID0geyAiU2hhZG93UmVhbG0iLCAmQmFzZTo6c19pbmZvLCAm
c2hhZG93UmVhbG1Qcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShT
aGFkb3dSZWFsbVByb3RvdHlwZSkgfTsKKworU2hhZG93UmVhbG1Qcm90b3R5cGU6OlNoYWRvd1Jl
YWxtUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZp
bmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgU2hhZG93UmVhbG1Qcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBKU0NfVE9fU1RSSU5H
X1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGltcG9ydEluUmVhbG0sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBTaGFkb3dSZWFsbU9i
amVjdCogdGhpc1JlYWxtID0ganNEeW5hbWljQ2FzdDxTaGFkb3dSZWFsbU9iamVjdCo+KHZtLCB0
aGlzVmFsdWUpOworICAgIFJFTEVBU0VfQVNTRVJUKHRoaXNSZWFsbSk7CisKKyAgICBhdXRvKiBw
cm9taXNlID0gSlNQcm9taXNlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+cHJvbWlzZVN0cnVj
dHVyZSgpKTsKKworICAgIGF1dG8gc291cmNlT3JpZ2luID0gY2FsbEZyYW1lLT5jYWxsZXJTb3Vy
Y2VPcmlnaW4odm0pOworICAgIGF1dG8qIHNwZWNpZmllciA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMSkudG9TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgSlNHbG9iYWxPYmplY3QqIHJlYWxtR2xvYmFsT2JqZWN0
ID0gdGhpc1JlYWxtLT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvKiBpbnRlcm5hbFByb21pc2Ug
PSByZWFsbUdsb2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCktPmltcG9ydE1vZHVsZShyZWFsbUds
b2JhbE9iamVjdCwgc3BlY2lmaWVyLCBqc1VuZGVmaW5lZCgpLCBzb3VyY2VPcmlnaW4pOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShwcm9taXNlLT5yZWpl
Y3RXaXRoQ2F1Z2h0RXhjZXB0aW9uKHJlYWxtR2xvYmFsT2JqZWN0LCBzY29wZSkpKTsKKworICAg
IHNjb3BlLnJlbGVhc2UoKTsKKyAgICBwcm9taXNlLT5yZXNvbHZlKGdsb2JhbE9iamVjdCwgaW50
ZXJuYWxQcm9taXNlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UpOworfQor
CitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZXZhbEluUmVhbG0sIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAg
ICBTaGFkb3dSZWFsbU9iamVjdCogdGhpc1JlYWxtID0ganNEeW5hbWljQ2FzdDxTaGFkb3dSZWFs
bU9iamVjdCo+KHZtLCB0aGlzVmFsdWUpOworICAgIFJFTEVBU0VfQVNTRVJUKHRoaXNSZWFsbSk7
CisgICAgSlNHbG9iYWxPYmplY3QqIHJlYWxtR2xvYmFsT2JqZWN0ID0gdGhpc1JlYWxtLT5nbG9i
YWxPYmplY3QoKTsKKworICAgIEpTVmFsdWUgZXZhbEFyZyA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MSk7CisgICAgLy8gZXZhbCBjb2RlIGFkYXB0ZWQgZnJvbSBKU0dsb2JhbE9iamVjRnVuY3Rpb25z
OjpnbG9iYWxGdW5jRXZhbAorICAgIFN0cmluZyBzID0gYXNTdHJpbmcoZXZhbEFyZyktPnZhbHVl
KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CisKKyAgICBKU1ZhbHVlIHBhcnNlZE9iamVjdDsKKyAgICBpZiAocy5pczhCaXQo
KSkgeworICAgICAgICBMaXRlcmFsUGFyc2VyPExDaGFyPiBwcmVwYXJzZXIoZ2xvYmFsT2JqZWN0
LCBzLmNoYXJhY3RlcnM4KCksIHMubGVuZ3RoKCksIE5vblN0cmljdEpTT04sIG51bGxwdHIpOwor
ICAgICAgICBwYXJzZWRPYmplY3QgPSBwcmVwYXJzZXIudHJ5TGl0ZXJhbFBhcnNlKCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgTGl0ZXJhbFBhcnNlcjxVQ2hhcj4gcHJlcGFyc2VyKGdsb2JhbE9i
amVjdCwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5ndGgoKSwgTm9uU3RyaWN0SlNPTiwgbnVsbHB0
cik7CisgICAgICAgIHBhcnNlZE9iamVjdCA9IHByZXBhcnNlci50cnlMaXRlcmFsUGFyc2UoKTsK
KyAgICB9CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CisgICAgaWYgKHBhcnNlZE9iamVjdCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShw
YXJzZWRPYmplY3QpOworCisgICAgTmFrZWRQdHI8SlNPYmplY3Q+IGV4ZWN1dGFibGVFcnJvcjsK
KyAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2UocywgY2FsbEZyYW1lLT5jYWxsZXJT
b3VyY2VPcmlnaW4odm0pKTsKKyAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEluZGlyZWN0RXZh
bEV4ZWN1dGFibGU6OmNyZWF0ZVNhZmUocmVhbG1HbG9iYWxPYmplY3QsIHNvdXJjZSwgRGVyaXZl
ZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lLCBleGVjdXRh
YmxlRXJyb3IpOworICAgIGlmIChleGVjdXRhYmxlRXJyb3IpIHsKKyAgICAgICAgRXJyb3JJbnN0
YW5jZSogZXJyb3IgPSBqc0R5bmFtaWNDYXN0PEVycm9ySW5zdGFuY2UqPih2bSwgSlNWYWx1ZShl
eGVjdXRhYmxlRXJyb3IuZ2V0KCkpKTsKKyAgICAgICAgaWYgKGVycm9yICE9IG51bGxwdHIgJiYg
ZXJyb3ItPmVycm9yVHlwZSgpID09IEVycm9yVHlwZTo6U3ludGF4RXJyb3IpIHsKKyAgICAgICAg
ICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgICAgICBjb25zdCBTdHJpbmcgc3lu
dGF4RXJyb3JNZXNzYWdlID0gZXJyb3ItPnNhbml0aXplZE1lc3NhZ2VTdHJpbmcoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAg
ICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4RXJy
b3IoZ2xvYmFsT2JqZWN0LCBzeW50YXhFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgIkVycm9yIGVuY291bnRlcmVkIGR1cmluZyBldmFsdWF0aW9uIl9z
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAg
fQorICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IHZtLmludGVycHJldGVyLT5leGVjdXRlKGV2YWwsIHJlYWxtR2xvYmFsT2JqZWN0LCBy
ZWFsbUdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpLCByZWFsbUdsb2JhbE9iamVjdC0+Z2xvYmFs
U2NvcGUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwKKyAgICAgICAgdGhyb3dW
TUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
ICJFcnJvciBlbmNvdW50ZXJlZCBkdXJpbmcgZXZhbHVhdGlvbiJfcykpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
aGFkb3dSZWFsbVByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hh
ZG93UmVhbG1Qcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YmY3NzU5YWYxNzU3MmFiNjg4OTkzMTYw
MGMyMjk3N2Y1OTE3OWY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuaApAQCAtMCwwICsxLDY2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIFBoaWxsaXAgTWF0ZXMgPHBtYXRlc0BpZ2FsaWEuY29tPi4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU2hhZG93
UmVhbG1Qcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6
CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3Rh
dGljUHJvcGVydHlUYWJsZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJz
cGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
KyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFNoYWRv
d1JlYWxtUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgIH0KKworICAgIHN0YXRpYyBTaGFkb3dSZWFsbVByb3RvdHlwZSogY3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBTaGFkb3dSZWFsbVBy
b3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2hhZG93UmVh
bG1Qcm90b3R5cGU+KHZtLmhlYXApKSBTaGFkb3dSZWFsbVByb3RvdHlwZSh2bSwgc3RydWN0dXJl
KTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVy
biBwcm90b3R5cGU7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFNoYWRv
d1JlYWxtUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYpOworfTsKKworSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihpbXBvcnRJblJlYWxtKTsK
K0pTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZXZhbEluUmVhbG0pOworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAwMmYxODk3YjBmMzkx
ODU2MGI1MDUzMTlkNmU0NjFiZGI1ZDcxMGRkLi4yY2U2MmQzNmRiNWZhM2IyMzA2OWZlZTZkMzU2
M2NmNzU0NzI4NzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xNTQs
NiArMTU0LDcgQEAKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgiCiAjaW5jbHVkZSAiU2Nv
cGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgorI2luY2x1ZGUgIlNo
YWRvd1JlYWxtT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJTb3VyY2VQcm92aWRlckNhY2hlLmgiCiAjaW5jbHVkZSAiU3RyaWN0RXZh
bEFjdGl2YXRpb24uaCIKQEAgLTM2Nyw2ICszNjgsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwg
SGVhcFR5cGUgaGVhcFR5cGUsIFdURjo6UnVuTG9vcCogcnVuTG9vcCwgYm9vbCogc3VjY2VzcykK
ICAgICAsIHByb21pc2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBKU1Byb21pc2UpCiAgICAgLCBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yKQogICAgICwgcHJvcGVydHlUYWJsZVNwYWNlIElTT19TVUJTUEFDRV9J
TklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFByb3BlcnR5VGFi
bGUpIC8vIEhhc2g6MHhjNmJjOWYxMgorICAgICwgc2hhZG93UmVhbG1TcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVChoZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTaGFkb3dSZWFsbU9iamVjdCkK
ICAgICAsIHJlZ0V4cFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFJlZ0V4cCkKICAgICAsIHJlZ0V4cE9iamVjdFNwYWNlIElT
T19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFJlZ0V4cE9iamVj
dCkKICAgICAsIHJvcGVTdHJpbmdTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBzdHJpbmdI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTUm9wZVN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCmluZGV4IDFlNzI1Y2UzNzQ4NzNlMDA3ZDFiMDNmNTQ5NTZjNTAyMzA0YzZiMzcuLmVjYjI0
ZWUxMjVhMTBlOGM4ZjY4N2QwYTIxM2FjZTIwOTU1NWExYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaApAQCAtNTExLDYgKzUxMSw3IEBAIHB1YmxpYzoKICAgICBJc29TdWJzcGFjZSBw
cm9taXNlU3BhY2U7CiAgICAgSXNvU3Vic3BhY2UgcHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNl
OwogICAgIElzb1N1YnNwYWNlIHByb3BlcnR5VGFibGVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBz
aGFkb3dSZWFsbVNwYWNlOwogICAgIElzb1N1YnNwYWNlIHJlZ0V4cFNwYWNlOwogICAgIElzb1N1
YnNwYWNlIHJlZ0V4cE9iamVjdFNwYWNlOwogICAgIElzb1N1YnNwYWNlIHJvcGVTdHJpbmdTcGFj
ZTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggYWUwNTA0MThiNTFmOGU5YTcwNzEwZDBkYTEwYTAyNjdlOTc3YTcyNS4uZjliNzEyZTRhNzBm
Y2VhODY4MWRiNzUxOWZkNGE5NzJlNTViNDAzMCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAyMS0wOS0yMSAg
UGhpbGxpcCBNYXRlcyAgPHBtYXRlc0BpZ2FsaWEuY29tPgorCisgICAgICAgIFRlc3QgY292ZXJh
Z2UgZm9yIEpTQyBzaGFkb3cgcmVhbG1zIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA2MDIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1vZHVsZXMvaW1wb3J0LW1ldGEtc3lu
dGF4LmpzOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAqIHN0cmVzcy9pbXBvcnQt
c3ludGF4LmpzOgorICAgICAgICAqIHN0cmVzcy9yZXNvdXJjZXMvc2hhZG93LXJlYWxtLWV4YW1w
bGUtbW9kdWxlLmpzOiBBZGRlZC4KKyAgICAgICAgKHB1dEluR2xvYmFsKToKKyAgICAgICAgKGdl
dEZyb21HbG9iYWwpOgorICAgICAgICAoZ2V0QW5PYmplY3QpOgorICAgICAgICAoZ2V0Q2FsbENv
dW50KToKKyAgICAgICAgKiBzdHJlc3Mvc2hhZG93LXJlYWxtLWV2YWx1YXRlLmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKGFz
c2VydGlvbkZuKToKKyAgICAgICAgKHNob3VsZEJlLlN0cmluZyk6CisgICAgICAgIChzaG91bGRC
ZS5nbG9iYWxPYmplY3RGb3IuZG9FdmFsKToKKyAgICAgICAgKHNob3VsZEJlLmdsb2JhbE9iamVj
dEZvcik6CisgICAgICAgICogc3RyZXNzL3NoYWRvdy1yZWFsbS1pbXBvcnQtdmFsdWUuanM6IEFk
ZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAg
ICAoYXN5bmMgc2hvdWxkVGhyb3dBc3luYyk6CisgICAgICAgIChhc3luYyBjb25zdCk6CisgICAg
ICAgIChkb0ltcG9ydCk6CisgICAgICAgICogc3RyZXNzL3NoYWRvdy1yZWFsbS5qczogQWRkZWQu
CisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0aHJvdy5uZXcuRXJyb3IpOgorCiAyMDIx
LTA5LTA3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgTWF0
aC5oeXBvdCBjaGVja3MgZm9yIGluZmluaXRlIHZhbHVlcyBwcmVtYXR1cmVseQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9tb2R1bGVzL2ltcG9ydC1tZXRhLXN5bnRheC5qcyBiL0pTVGVzdHMvbW9kdWxl
cy9pbXBvcnQtbWV0YS1zeW50YXguanMKaW5kZXggM2VkZjRlNTEyMGUxMmE1YjY4OTQ5MTNiMDVh
YTcwYWM2NzY4NTY2Mi4uNTlhMmIzNjM0NjBhNjAzNWM3YTEwNWYwOGMyMzZmOWY0YTk0MzUxYSAx
MDA2NDQKLS0tIGEvSlNUZXN0cy9tb2R1bGVzL2ltcG9ydC1tZXRhLXN5bnRheC5qcworKysgYi9K
U1Rlc3RzL21vZHVsZXMvaW1wb3J0LW1ldGEtc3ludGF4LmpzCkBAIC0xMCw3ICsxMCw3IEBAIHNo
b3VsZE5vdFRocm93KCgpID0+IHsKIAogc2hvdWxkVGhyb3coKCkgPT4gewogICAgIGNoZWNrTW9k
dWxlU3ludGF4KGAoaW1wb3J0LmNvY29hKWApOwotfSwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVk
IGlkZW50aWZpZXIgJ2NvY29hJy4gImltcG9ydC4iIGNhbiBvbmx5IGZvbGxvd2VkIHdpdGggbWV0
YS46MWApOworfSwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGlkZW50aWZpZXIgJ2NvY29hJy4g
ImltcG9ydC4iIGNhbiBvbmx5IGJlIGZvbGxvd2VkIHdpdGggbWV0YS46MWApOwogCiBzaG91bGRU
aHJvdygoKSA9PiB7CiAgICAgY2hlY2tNb2R1bGVTeW50YXgoYChpbXBvcnRbIkNvY29hIl0pYCk7
CkBAIC0xOCw3ICsxOCw3IEBAIHNob3VsZFRocm93KCgpID0+IHsKIAogc2hvdWxkVGhyb3coKCkg
PT4gewogICAgIGNoZWNrTW9kdWxlU3ludGF4KGBpbXBvcnQuY29jb2FgKTsKLX0sIGBTeW50YXhF
cnJvcjogVW5leHBlY3RlZCBpZGVudGlmaWVyICdjb2NvYScuICJpbXBvcnQuIiBjYW4gb25seSBm
b2xsb3dlZCB3aXRoIG1ldGEuOjFgKTsKK30sIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCBpZGVu
dGlmaWVyICdjb2NvYScuICJpbXBvcnQuIiBjYW4gb25seSBiZSBmb2xsb3dlZCB3aXRoIG1ldGEu
OjFgKTsKIAogc2hvdWxkVGhyb3coKCkgPT4gewogICAgIGNoZWNrTW9kdWxlU3ludGF4KGBpbXBv
cnRbIkNvY29hIl1gKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ltcG9ydC1zeW50YXgu
anMgYi9KU1Rlc3RzL3N0cmVzcy9pbXBvcnQtc3ludGF4LmpzCmluZGV4IDI1YTNmYmJmNjg2NjE1
N2IxNzVkYThlZGFlNzhjMGU5ZTI4MTVjMjYuLjk0ZTA4NTBmN2IyODkyYTg2MWFkNWQwZjQ1MGZm
NDRmOTE3MjRkMjEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2ltcG9ydC1zeW50YXguanMK
KysrIGIvSlNUZXN0cy9zdHJlc3MvaW1wb3J0LXN5bnRheC5qcwpAQCAtMjksNyArMjksNyBAQCBh
c3luYyBmdW5jdGlvbiB0ZXN0U3ludGF4KHNjcmlwdCwgbWVzc2FnZSkgewogCiB0ZXN0U3ludGF4
RXJyb3IoYGltcG9ydClgLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJyknLiBpbXBv
cnQgY2FsbCBleHBlY3RzIGV4YWN0bHkgb25lIGFyZ3VtZW50LmApOwogdGVzdFN5bnRheEVycm9y
KGBuZXcgaW1wb3J0KGAsIGBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSBuZXcgd2l0aCBpbXBvcnQu
YCk7Ci10ZXN0U3ludGF4RXJyb3IoYGltcG9ydC5oZWxsbygpYCwgYFN5bnRheEVycm9yOiBVbmV4
cGVjdGVkIGlkZW50aWZpZXIgJ2hlbGxvJy4gImltcG9ydC4iIGNhbiBvbmx5IGZvbGxvd2VkIHdp
dGggbWV0YS5gKTsKK3Rlc3RTeW50YXhFcnJvcihgaW1wb3J0LmhlbGxvKClgLCBgU3ludGF4RXJy
b3I6IFVuZXhwZWN0ZWQgaWRlbnRpZmllciAnaGVsbG8nLiAiaW1wb3J0LiIgY2FuIG9ubHkgYmUg
Zm9sbG93ZWQgd2l0aCBtZXRhLmApOwogdGVzdFN5bnRheEVycm9yKGBpbXBvcnRbYCwgYFN5bnRh
eEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICdbJy4gaW1wb3J0IGNhbGwgZXhwZWN0cyBleGFjdGx5
IG9uZSBhcmd1bWVudC5gKTsKIHRlc3RTeW50YXhFcnJvcihgaW1wb3J0PGAsIGBTeW50YXhFcnJv
cjogVW5leHBlY3RlZCB0b2tlbiAnPCcuIGltcG9ydCBjYWxsIGV4cGVjdHMgZXhhY3RseSBvbmUg
YXJndW1lbnQuYCk7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Jlc291cmNlcy9zaGFk
b3ctcmVhbG0tZXhhbXBsZS1tb2R1bGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9yZXNvdXJjZXMvc2hh
ZG93LXJlYWxtLWV4YW1wbGUtbW9kdWxlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiNGY1NzljMmY5YTZkYzIz
OTBiZTJmYTA1NWNlNjhkNjgwMzMwZjMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9yZXNvdXJjZXMvc2hhZG93LXJlYWxtLWV4YW1wbGUtbW9kdWxlLmpzCkBAIC0wLDAgKzEsMjUg
QEAKK3ZhciBjYWxsQ291bnQgPSAwOworCitmdW5jdGlvbiBwdXRJbkdsb2JhbChrZXksIHZhbCkg
eworICAgIGNhbGxDb3VudCsrOworICAgIGdsb2JhbFRoaXMua2V5ID0gdmFsOworfQorCitmdW5j
dGlvbiBnZXRGcm9tR2xvYmFsKGtleSkgeworICAgIGNhbGxDb3VudCsrOworICAgIHJldHVybiBn
bG9iYWxUaGlzLmtleTsKK30KKwordmFyIGFuT2JqZWN0ID0gbmV3IE9iamVjdCgpOworCitmdW5j
dGlvbiBnZXRBbk9iamVjdCgpIHsKKyAgICBjYWxsQ291bnQrKzsKKyAgICByZXR1cm4gYW5PYmpl
Y3Q7Cit9CisKK2Z1bmN0aW9uIGdldENhbGxDb3VudCgpIHsKKyAgICByZXR1cm4gY2FsbENvdW50
OworfQorCit2YXIgYW5zd2VyID0gNjsKK2V4cG9ydCB7IGFuT2JqZWN0LCBhbnN3ZXIsIGdldENh
bGxDb3VudCwgZ2V0RnJvbUdsb2JhbCwgZ2V0QW5PYmplY3QsIHB1dEluR2xvYmFsIH07CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zaGFkb3ctcmVhbG0tZXZhbHVhdGUuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9zaGFkb3ctcmVhbG0tZXZhbHVhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTAzNjAzMTE5Yjgy
MjJkOTAzZGZlNWI2MzViMmNmODg3ZmM3NmU1ZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL3NoYWRvdy1yZWFsbS1ldmFsdWF0ZS5qcwpAQCAtMCwwICsxLDE1MyBAQAorLy9AIHJl
cXVpcmVPcHRpb25zKCItLXVzZVNoYWRvd1JlYWxtPTEiKQorCitmdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH1g
KTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlLCBhc3NlcnRpb25G
bikgeworICAgIGxldCBlcnJvcjsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorCisgICAgaWYgKCEoZXJyb3Ig
aW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVk
ICR7ZXJyb3JUeXBlLm5hbWV9IGJ1dCBnb3QgJHtlcnJvci5uYW1lfWApOworCisgICAgYXNzZXJ0
aW9uRm4oZXJyb3IpOworfQorCisvLyBiYXNpYyBldmFsdWF0aW9uIGFuZCBzdGF0ZSBzZXR0aW5n
Cit7CisgICAgbGV0IHJlYWxtID0gbmV3IFNoYWRvd1JlYWxtKCk7CisgICAgbGV0IG90aGVyUmVh
bG0gPSBuZXcgU2hhZG93UmVhbG0oKTsKKworICAgIHNob3VsZEJlKHJlYWxtLmV2YWx1YXRlKCIx
IiksIDEpOworICAgIHZhciB4ID0gMjsKKyAgICByZWFsbS5ldmFsdWF0ZSgidmFyIHggPSAxIik7
CisgICAgc2hvdWxkQmUocmVhbG0uZXZhbHVhdGUoIngiKSwgMSk7CisgICAgc2hvdWxkQmUoeCwg
Mik7CisKKyAgICAvLyBzY29wZSBpc24ndCBzaGFyZWQgYWNyb3NzIHJlYWxtcworICAgIHNob3Vs
ZEJlKG90aGVyUmVhbG0uZXZhbHVhdGUoImdsb2JhbFRoaXMueCIpLCB1bmRlZmluZWQpOworfQor
CisvLyBhY2Nlc3NpbmcgYGdsb2JhbFRoaXNgIHdpdGhpbiBhbmQgb3V0c2lkZSBvZiBhIHNoYWRv
dyByZWFsbQoreworICAgIGxldCByZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOworICAgIGdsb2Jh
bFRoaXMuaGkgPSA2OworCisgICAgc2hvdWxkQmUocmVhbG0uZXZhbHVhdGUoImdsb2JhbFRoaXMu
aGkiKSwgdW5kZWZpbmVkKTsKKworICAgIHJlYWxtLmV2YWx1YXRlKCJnbG9iYWxUaGlzLmhpID0g
J2ZhbGEgYW1pZ28nIik7CisKKyAgICBzaG91bGRCZShyZWFsbS5ldmFsdWF0ZSgiZ2xvYmFsVGhp
cy5oaSIpLCAiZmFsYSBhbWlnbyIpOworICAgIHNob3VsZEJlKGdsb2JhbFRoaXMuaGksIDYpOwor
fQorCisvLyBlbnN1cmUgdGhhdCBlcnJvcnMgdGhyb3duIGlzbid0IGFzc29jaWF0ZWQgd2l0aCB0
aGUgc2hhZG93IHJlYWxtJ3MgZ2xvYmFsIG9iamVjdAoreworICAgIGxldCByZWFsbSA9IG5ldyBT
aGFkb3dSZWFsbSgpOworICAgIHNob3VsZFRocm93KAorICAgICAgKCkgPT4geyByZWFsbS5ldmFs
dWF0ZSgiLi4iKTsgfSwKKyAgICAgIFN5bnRheEVycm9yLAorICAgICAgKGVycikgPT4geworICAg
ICAgICAgIHNob3VsZEJlKCQuZ2xvYmFsT2JqZWN0Rm9yKGVyciksIGdsb2JhbFRoaXMpOworICAg
ICAgICAgIHNob3VsZEJlKFN0cmluZyhlcnIpLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9r
ZW4gJy4nYCk7CisgICAgICB9KTsKK30KKworLy8gZW5zdXJlIHRoYXQgZXJyb3JzIHRocm93biBk
b24ndCBjYXJyeSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBzaGFkb3cgcmVhbG0KK3sKKyAgICBsZXQg
cmVhbG0gPSBuZXcgU2hhZG93UmVhbG0oKTsKKyAgICBzaG91bGRUaHJvdygKKyAgICAgICgpID0+
IHsgcmVhbG0uZXZhbHVhdGUoInRocm93IG5ldyBFcnJvcignc2VjcmV0JykiKTsgfSwKKyAgICAg
IFR5cGVFcnJvciwKKyAgICAgIChlcnIpID0+IHsKKyAgICAgICAgICBzaG91bGRCZSgkLmdsb2Jh
bE9iamVjdEZvcihlcnIpLCBnbG9iYWxUaGlzKTsKKyAgICAgICAgICBzaG91bGRCZShTdHJpbmco
ZXJyKSwgIlR5cGVFcnJvcjogRXJyb3IgZW5jb3VudGVyZWQgZHVyaW5nIGV2YWx1YXRpb24iKTsK
KyAgICAgIH0pOworfQorCisvLyB3cmFwcGVkIGZ1bmN0aW9ucyBwcm90ZWN0IHRoZSBzaGFkb3cg
cmVhbG0KK3sKKyAgICBsZXQgcmVhbG0gPSBuZXcgU2hhZG93UmVhbG0oKTsKKyAgICBsZXQgd3Jh
cHBlZEludm9rZUFuZEFkZCA9IHJlYWxtLmV2YWx1YXRlKCJmdW5jdGlvbiBpbnZva2VBbmRBZGQo
eEZuLCB5Rm4pIHsgcmV0dXJuIHhGbigpICsgeUZuKCk7IH07IGludm9rZUFuZEFkZCIpOworICAg
IHNob3VsZEJlKHdyYXBwZWRJbnZva2VBbmRBZGQoKCkgPT4geyByZXR1cm4gMSB9LCAoKSA9PiB7
IHJldHVybiAyIH0pLCAzKTsKKyAgICBzaG91bGRCZSgkLmdsb2JhbE9iamVjdEZvcih3cmFwcGVk
SW52b2tlQW5kQWRkKSwgZ2xvYmFsVGhpcyk7CisKKyAgICAvLyBuYW1lIGFuZCBsZW5ndGggcHJv
cGVydGllcyBmcm9tIHdyYXBwZWQgZnVuY3Rpb24gYXJlIGFic2VudAorICAgIHNob3VsZEJlKE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod3JhcHBlZEludm9rZUFuZEFkZCwgImxlbmd0
aCIpLCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3Iod3JhcHBlZEludm9rZUFuZEFkZCwgIm5hbWUiKSwgdW5kZWZpbmVkKTsKKworICAgIC8v
IGNhbid0IHBhc3Mgb2JqZWN0cyBpbnRvIGEgc2hhZG93IHJlYWxtLXdyYXBwZWQgZnVuY3Rpb24K
KyAgICBsZXQgbnVtYmVyT2JqID0geyB2YWx1ZU9mKCkgeyByZXR1cm4gLTEgfSB9OworICAgIHNo
b3VsZFRocm93KAorICAgICAgKCkgPT4geyB3cmFwcGVkSW52b2tlQW5kQWRkKG51bWJlck9iaiwg
MSk7IH0sCisgICAgICBUeXBlRXJyb3IsCisgICAgICAoZXJyKSA9PiB7CisgICAgICAgICAgc2hv
dWxkQmUoJC5nbG9iYWxPYmplY3RGb3IoZXJyKSwgZ2xvYmFsVGhpcyk7CisgICAgICAgICAgc2hv
dWxkQmUoU3RyaW5nKGVyciksICJUeXBlRXJyb3I6IHZhbHVlIHBhc3NpbmcgYmV0d2VlbiByZWFs
bXMgbXVzdCBiZSBjYWxsYWJsZSBvciBwcmltaXRpdmUiKTsKKyAgICAgIH0pOworfQorCit7Cisg
ICAgbGV0IHJlYWxtID0gbmV3IFNoYWRvd1JlYWxtKCk7CisgICAgLy8gY2FuJ3QgY2FsbCBgZXZh
bHVhdGVgIG9uIGEgbm9uIHNoYWRvdyByZWFsbQorICAgIGxldCBub3RSZWFsbSA9IHt9OworICAg
IHNob3VsZFRocm93KAorICAgICAgKCkgPT4geyByZWFsbS5ldmFsdWF0ZS5jYWxsKG5vdFJlYWxt
LCAnMScpOyB9LAorICAgICAgVHlwZUVycm9yLAorICAgICAgKGVycikgPT4geyBzaG91bGRCZSgk
Lmdsb2JhbE9iamVjdEZvcihlcnIpLCBnbG9iYWxUaGlzKTsgfQorICAgICk7Cit9CisKKy8vIHRy
aWdnZXIgSklUCit7CisgICAgZnVuY3Rpb24gZG9FdmFsKHJlYWxtLCBzKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHJlYWxtLmV2YWx1YXRlKHMpOworICAgIH0KKworICAgIG5vSW5saW5lKGRvRXZh
bCk7CisKKyAgICBsZXQgcmVhbG0gPSBuZXcgU2hhZG93UmVhbG0oKTsKKyAgICByZWFsbS5ldmFs
dWF0ZSgiZ2xvYmFsVGhpcy5zZWNyZXQgPSAxOyIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MTAwMDA7ICsraSkKKyAgICAgICAgc2hvdWxkQmUoZG9FdmFsKHJlYWxtLCAnNDInKSwgNDIpOwor
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgIGxldCBmID0g
ZG9FdmFsKHJlYWxtLCAnKHgpID0+IHsgcmV0dXJuIHgoKSArIGdsb2JhbFRoaXMuc2VjcmV0OyB9
Jyk7CisgICAgICAgIHNob3VsZEJlKCQuZ2xvYmFsT2JqZWN0Rm9yKGYpLCBnbG9iYWxUaGlzKTsK
KyAgICAgICAgc2hvdWxkQmUoZigoKSA9PiB7IHJldHVybiA0MTsgfSksIDQyKTsKKyAgICB9Cisg
ICAgLy8gKHBvdGVudGlhbCkgaW5saW5pbmcgb2Ygd3JhcHBlZCBmdW5jdGlvbiB1c2VzIGNvcnJl
Y3QgZ2xvYmFsIG9iamVjdAorICAgIGxldCBmID0gZG9FdmFsKHJlYWxtLCAnKHgpID0+IHsgcmV0
dXJuIHgoKSArIGdsb2JhbFRoaXMuc2VjcmV0OyB9Jyk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwMDsgKytpKSB7CisgICAgICAgIHNob3VsZEJlKCQuZ2xvYmFsT2JqZWN0Rm9yKGYpLCBn
bG9iYWxUaGlzKTsKKyAgICAgICAgc2hvdWxkQmUoZigoKSA9PiB7IHJldHVybiA0MTsgfSksIDQy
KTsKKyAgICB9CisgICAgLy8gKHBvdGVudGlhbCkgaW5saW5pbmcgaW5zaWRlIGEgcmVhbG0gdXNl
cyBjb3JyZWN0IGdsb2JhbCBvYmplY3QKKyAgICBsZXQgbG9vcEluc2lkZSA9IGRvRXZhbChyZWFs
bSwgJyh4KSA9PiB7IGxldCBhY2MgPSAwOyBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kp
IHsgYWNjICs9IHgoKTsgfTsgcmV0dXJuIGFjYzsgfScpOworICAgIGdsb2JhbFRoaXMuc2VjcmV0
ID0gLTE7CisgICAgc2hvdWxkQmUobG9vcEluc2lkZSgoKSA9PiB7IHJldHVybiBnbG9iYWxUaGlz
LnNlY3JldDsgfSksIC0xMDAwMCk7Cit9CisKKy8vIGV2YWx1YXRlIHNwZWNzCit7CisgICAgc2hv
dWxkQmUodHlwZW9mIFNoYWRvd1JlYWxtLnByb3RvdHlwZS5ldmFsdWF0ZSwgImZ1bmN0aW9uIik7
CisKKyAgICBsZXQgZXZhbHVhdGVOYW1lID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihTaGFkb3dSZWFsbS5wcm90b3R5cGUuZXZhbHVhdGUsICJuYW1lIik7CisgICAgc2hvdWxkQmUo
ZXZhbHVhdGVOYW1lLnZhbHVlLCAiZXZhbHVhdGUiKTsKKyAgICBzaG91bGRCZShldmFsdWF0ZU5h
bWUuZW51bWVyYWJsZSwgZmFsc2UpOworICAgIHNob3VsZEJlKGV2YWx1YXRlTmFtZS53cml0YWJs
ZSwgZmFsc2UpOworICAgIHNob3VsZEJlKGV2YWx1YXRlTmFtZS5jb25maWd1cmFibGUsIHRydWUp
OworCisgICAgbGV0IGV2YWx1YXRlTGVuZ3RoID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihTaGFkb3dSZWFsbS5wcm90b3R5cGUuZXZhbHVhdGUsICJsZW5ndGgiKTsKKyAgICBzaG91
bGRCZShldmFsdWF0ZUxlbmd0aC52YWx1ZSwgMSk7CisgICAgc2hvdWxkQmUoZXZhbHVhdGVMZW5n
dGguZW51bWVyYWJsZSwgZmFsc2UpOworICAgIHNob3VsZEJlKGV2YWx1YXRlTGVuZ3RoLndyaXRh
YmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoZXZhbHVhdGVMZW5ndGguY29uZmlndXJhYmxlLCB0
cnVlKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3NoYWRvdy1yZWFsbS1pbXBvcnQt
dmFsdWUuanMgYi9KU1Rlc3RzL3N0cmVzcy9zaGFkb3ctcmVhbG0taW1wb3J0LXZhbHVlLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmY0M2NkOGU2MjNmMWY2ZDEzOTMxYzdiOWRiOGRkZTMwODQ2MDhhODUKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zaGFkb3ctcmVhbG0taW1wb3J0LXZhbHVlLmpz
CkBAIC0wLDAgKzEsMTQ4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlU2hhZG93UmVhbG09
MSIpCisKK3ZhciBhYm9ydCA9ICR2bS5hYm9ydDsKKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9YCk7Cit9
CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yVHlwZSkgeworICAgIGxldCBlcnJv
cjsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICBlcnJvciA9IGU7CisgICAgfQorCisgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBlcnJvclR5
cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7ZXJyb3JUeXBlLm5hbWV9
ISBnb3QgJHtlcnJvci5uYW1lfWApOworfQorCithc3luYyBmdW5jdGlvbiBzaG91bGRUaHJvd0Fz
eW5jKGZ1bmMsIGVycm9yVHlwZSkgeworICAgIGxldCBlcnJvcjsKKyAgICB0cnkgeworICAgICAg
ICBhd2FpdCBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7Cisg
ICAgfQorCisgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7ZXJyb3JUeXBlLm5hbWV9ISBnb3QgJHtlcnJvci5u
YW1lfSB3aXRoIG1lc3NhZ2UgJHtlcnJvci5tZXNzYWdlfWApOworfQorCisoYXN5bmMgZnVuY3Rp
b24gKCkgeworICAgIGNvbnN0IGltcG9ydFBhdGggPSAiLi9yZXNvdXJjZXMvc2hhZG93LXJlYWxt
LWV4YW1wbGUtbW9kdWxlLmpzIjsKKyAgICBjb25zdCB7IGFuc3dlciwgZ2V0Q2FsbENvdW50LCBw
dXRJbkdsb2JhbCwgZ2V0RnJvbUdsb2JhbCwgZ2V0QW5PYmplY3QgfSA9IGF3YWl0IGltcG9ydChp
bXBvcnRQYXRoKTsKKyAgICBjb25zdCBvdXRlckFuc3dlciA9IGFuc3dlcjsKKyAgICBjb25zdCBv
dXRlckdldENhbGxDb3VudCA9IGdldENhbGxDb3VudDsKKyAgICBjb25zdCBvdXRlclB1dEluR2xv
YmFsID0gcHV0SW5HbG9iYWw7CisgICAgY29uc3Qgb3V0ZXJHZXRGcm9tR2xvYmFsID0gZ2V0RnJv
bUdsb2JhbDsKKyAgICBjb25zdCBvdXRlckdldEFuT2JqZWN0ID0gZ2V0QW5PYmplY3Q7CisKKyAg
ICB7CisgICAgICAgIGxldCByZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOworCisgICAgICAgIC8v
IHVwZGF0ZSBsb2NhbCBtb2R1bGUgc3RhdGUgKyBjaGVjayBpdAorICAgICAgICBzaG91bGRCZShv
dXRlckdldENhbGxDb3VudCgpLCAwKTsKKyAgICAgICAgb3V0ZXJHZXRBbk9iamVjdCgpOworICAg
ICAgICBzaG91bGRCZShvdXRlckdldENhbGxDb3VudCgpLCAxKTsKKyAgICAgICAgLy8gdXBkYXRl
IHJlYWxtIG1vZHVsZSBzdGF0ZSArIGNoZWNrIGl0CisgICAgICAgIGxldCBpbm5lckdldENhbGxD
b3VudCA9IGF3YWl0IHJlYWxtLmltcG9ydFZhbHVlKGltcG9ydFBhdGgsICJnZXRDYWxsQ291bnQi
KTsKKyAgICAgICAgbGV0IGlubmVyUHV0SW5HbG9iYWwgPSBhd2FpdCByZWFsbS5pbXBvcnRWYWx1
ZShpbXBvcnRQYXRoLCAicHV0SW5HbG9iYWwiKTsKKyAgICAgICAgc2hvdWxkQmUoaW5uZXJHZXRD
YWxsQ291bnQoKSwgMCk7CisgICAgICAgIGlubmVyUHV0SW5HbG9iYWwoInNvbWV0aGluZyIsICJy
YW5kb20iKTsKKyAgICAgICAgc2hvdWxkQmUoaW5uZXJHZXRDYWxsQ291bnQoKSwgMSk7CisgICAg
ICAgIC8vIHJlLWltcG9ydGluZyB0aGUgbW9kdWxlIGludG8gdGhlIHJlYWxtIGRvZXNuJ3QgcmVs
b2FkIHRoZSBtb2R1bGUKKyAgICAgICAgaW5uZXJHZXRDYWxsQ291bnQgPSBhd2FpdCByZWFsbS5p
bXBvcnRWYWx1ZShpbXBvcnRQYXRoLCAiZ2V0Q2FsbENvdW50Iik7CisgICAgICAgIHNob3VsZEJl
KGlubmVyR2V0Q2FsbENvdW50KCksIDEpOworICAgICAgICAvLyB0aGUgKG91dGVyKSBsb2NhbCBt
b2R1bGUgc3RhdGUgc3RheXMgaW50YWN0CisgICAgICAgIHNob3VsZEJlKG91dGVyR2V0Q2FsbENv
dW50KCksIDEpOworCisgICAgICAgIC8vIG9uZSBjYW4gaW1wb3J0ZWQgcHJpbWl0aXZlL2NhbGxh
YmxlIHZhcmlhYmxlcyBqdXN0IGZpbmUKKyAgICAgICAgLy8gc2hvdWxkQmUoaW5uZXJBbnN3ZXIs
IG91dGVyQW5zd2VyKTsKKyAgICAgICAgbGV0IGlubmVyQW5zd2VyID0gYXdhaXQgcmVhbG0uaW1w
b3J0VmFsdWUoaW1wb3J0UGF0aCwgImFuc3dlciIpOworICAgICAgICBzaG91bGRCZShpbm5lckFu
c3dlciwgb3V0ZXJBbnN3ZXIpOworCisgICAgICAgIC8vIGltcG9ydGVkIHZhcmlhYmxlcyBhcmUg
Y2hlY2tlZCBmb3IgcHJpbXRpdmUvY2FsbGFibGUtbmVzcworICAgICAgICBhd2FpdCBzaG91bGRU
aHJvd0FzeW5jKGFzeW5jICgpID0+IHsgbGV0IHggPSBhd2FpdCByZWFsbS5pbXBvcnRWYWx1ZShp
bXBvcnRQYXRoLCAiYW5PYmplY3QiKTsgfSwgVHlwZUVycm9yKTsKKworICAgICAgICAvLyBpbXBv
cnRpbmcgbm9uLWV4aXN0ZW50IHJlZiBmYWlscworICAgICAgICBhd2FpdCBzaG91bGRUaHJvd0Fz
eW5jKGFzeW5jICgpID0+IHsgbGV0IHggPSBhd2FpdCByZWFsbS5pbXBvcnRWYWx1ZShpbXBvcnRQ
YXRoLCAibm90aGluZyIpOyB9LCBUeXBlRXJyb3IpOworCisgICAgICAgIC8vIGltcG9ydGluZyBm
cm9tIG5vbi1leGlzdGVudCBmaWxlIGZhaWxzCisgICAgICAgIGF3YWl0IHNob3VsZFRocm93QXN5
bmMoYXN5bmMgKCkgPT4geyBsZXQgeCA9IGF3YWl0IHJlYWxtLmltcG9ydFZhbHVlKCJyYW5kb20i
LCAibm90aGluZyIpOyB9LCBUeXBlRXJyb3IpOworCisgICAgICAgIC8vIHdlIGNhbiBpbXBvcnQg
ZnVuY3Rpb25zIHRocm91Z2ggYW4gaW5uZXIgcmVhbG0gZm9yIHVzZSBpbiB0aGUgb3V0ZXIKKyAg
ICAgICAgbGV0IGlubmVyR2V0RnJvbUdsb2JhbCA9IGF3YWl0IHJlYWxtLmltcG9ydFZhbHVlKGlt
cG9ydFBhdGgsICJnZXRGcm9tR2xvYmFsIik7CisgICAgICAgIGlubmVyUHV0SW5HbG9iYWwoInNh
bHV0YXRpb24iLCAic2FyYXZhIik7CisgICAgICAgIHNob3VsZEJlKGlubmVyR2V0RnJvbUdsb2Jh
bCgic2FsdXRhdGlvbiIpLCAic2FyYXZhIik7CisKKyAgICAgICAgLy8gaW5uZXIgZ2xvYmFsIHN0
YXRlIGlzIHVuY2hhbmdlZCBieSBvdXRlciBnbG9iYWwgc3RhdGUgY2hhbmdlCisgICAgICAgIG91
dGVyUHV0SW5HbG9iYWwoInNhbHV0YXRpb24iLCAiaGVsbG8gd29ybGQhIik7CisgICAgICAgIHNo
b3VsZEJlKG91dGVyR2V0RnJvbUdsb2JhbCgic2FsdXRhdGlvbiIpLCAiaGVsbG8gd29ybGQhIik7
CisgICAgICAgIHNob3VsZEJlKGlubmVyR2V0RnJvbUdsb2JhbCgic2FsdXRhdGlvbiIpLCAic2Fy
YXZhIik7CisKKyAgICAgICAgLy8gd3JhcHBlZCBmdW5jdGlvbnMgY2hlY2sgYXJndW1lbnRzIGZv
ciBwcmltaXRpdmUvY2FsbGFibGUtbmVzcworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IGlu
bmVyUHV0SW5HbG9iYWwoInRyZWFzdXJlIiwgbmV3IE9iamVjdCgpKTsgfSwgVHlwZUVycm9yKTsK
KworICAgICAgICAvLyBpbXBvcnRlZCBmdW5jdGlvbnMgYXJlIHdyYXBwZWQgd2l0aCBjb3JyZWN0
IHJldHVybiB2YWx1ZSBjaGVja3MKKyAgICAgICAgbGV0IGdldEFuT2JqZWN0Rm4gPSBhd2FpdCBy
ZWFsbS5pbXBvcnRWYWx1ZShpbXBvcnRQYXRoLCAiZ2V0QW5PYmplY3QiKTsKKyAgICAgICAgc2hv
dWxkVGhyb3coKCkgPT4geyBnZXRBbk9iamVjdEZuKCk7IH0sIFR5cGVFcnJvcik7CisKKyAgICAg
ICAgLy8gdGhyZWFkIGEgZnVuY3Rpb24gaW4gYW5kIG91dCBvZiBhIHJlYWxtIHRvIHdyYXAgaXQg
dXAKKyAgICAgICAgaW5uZXJQdXRJbkdsb2JhbCgib3V0ZXItcmVhbG0tcHV0Iiwgb3V0ZXJQdXRJ
bkdsb2JhbCk7CisgICAgICAgIHdyYXBwZWRPdXRlclB1dEluR2xvYmFsID0gaW5uZXJHZXRGcm9t
R2xvYmFsKCJvdXRlci1yZWFsbS1wdXQiKTsKKworICAgICAgICAvLyBpdCBzdGlsbCBtYW5pcHVh
dGVzIHRoZSBjb3JyZWN0IGdsb2JhbCBvYmplY3Qgc3RhdGUKKyAgICAgICAgd3JhcHBlZE91dGVy
UHV0SW5HbG9iYWwoInRyZWFzdXJlIiwgInNoaW55IHRpbiBzY3JhcCIpOworICAgICAgICBzaG91
bGRCZShvdXRlckdldEZyb21HbG9iYWwoInRyZWFzdXJlIiksICJzaGlueSB0aW4gc2NyYXAiKTsK
KworICAgICAgICAvLyB3cmFwcGVkIGZ1bmN0aW9ucyBjaGVjayBhcmd1bWVudHMgZm9yIHByaW1p
dGl2ZS9jYWxsYWJsZS1uZXNzCisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgd3JhcHBlZE91
dGVyUHV0SW5HbG9iYWwoInRyZWFzdXJlIiwgbmV3IE9iamVjdCgpKTsgfSwgVHlwZUVycm9yKTsK
KyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyB3cmFwcGVkT3V0ZXJQdXRJbkdsb2JhbChuZXcg
T2JqZWN0KCksICJzaGlueSB0aW4gc2NyYXAiKTsgfSwgVHlwZUVycm9yKTsKKworICAgICAgICAv
LyBtdXN0IGJlIGNhbGxlZCBvbiBhIFNoYWRvd1JlYWxtCisgICAgICAgIGxldCBub3RSZWFsbSA9
IHt9OworICAgICAgICBzaG91bGRUaHJvdygKKyAgICAgICAgICAoKSA9PiB7IHJlYWxtLmltcG9y
dFZhbHVlLmNhbGwobm90UmVhbG0sIGltcG9ydFBhdGgsICJhbnN3ZXIiKTsgfSwKKyAgICAgICAg
ICBUeXBlRXJyb3IsCisgICAgICAgICAgKGVycikgPT4geyBzaG91bGRCZSgkLmdsb2JhbE9iamVj
dEZvcihlcnIpLCBnbG9iYWxUaGlzKTsgfQorICAgICAgICApOworICAgIH0KKworICAgIC8vIHRy
aWdnZXIgSklUCisgICAgeworICAgICAgICBmdW5jdGlvbiBkb0ltcG9ydChyZWFsbSwgcykKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHJlYWxtLmltcG9ydFZhbHVlKGltcG9ydFBhdGgs
IHMpOworICAgICAgICB9CisKKyAgICAgICAgbm9JbmxpbmUoZG9JbXBvcnQpOworCisgICAgICAg
IGxldCByZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOworICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBkb0ltcG9y
dChyZWFsbSwgImdldENhbGxDb3VudCIpOworICAgICAgICAgICAgc2hvdWxkQmUocmVzdWx0KCks
IDApOworICAgICAgICB9CisgICAgfQorfSgpKS5jYXRjaCgoZXJyb3IpID0+IHsKKyAgICBwcmlu
dChTdHJpbmcoZXJyb3IpKTsKKyAgICBhYm9ydCgpOworfSk7CisKK3sKKyAgICBzaG91bGRCZSh0
eXBlb2YgU2hhZG93UmVhbG0ucHJvdG90eXBlLmltcG9ydFZhbHVlLCAiZnVuY3Rpb24iKTsKKwor
ICAgIGxldCBpbXBvcnRWYWx1ZU5hbWUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KFNoYWRvd1JlYWxtLnByb3RvdHlwZS5pbXBvcnRWYWx1ZSwgIm5hbWUiKTsKKyAgICBzaG91bGRC
ZShpbXBvcnRWYWx1ZU5hbWUudmFsdWUsICJpbXBvcnRWYWx1ZSIpOworICAgIHNob3VsZEJlKGlt
cG9ydFZhbHVlTmFtZS5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoaW1wb3J0VmFs
dWVOYW1lLndyaXRhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoaW1wb3J0VmFsdWVOYW1lLmNv
bmZpZ3VyYWJsZSwgdHJ1ZSk7CisKKyAgICBsZXQgaW1wb3J0VmFsdWVMZW5ndGggPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFNoYWRvd1JlYWxtLnByb3RvdHlwZS5pbXBvcnRWYWx1
ZSwgImxlbmd0aCIpOworICAgIHNob3VsZEJlKGltcG9ydFZhbHVlTGVuZ3RoLnZhbHVlLCAyKTsK
KyAgICBzaG91bGRCZShpbXBvcnRWYWx1ZUxlbmd0aC5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAg
c2hvdWxkQmUoaW1wb3J0VmFsdWVMZW5ndGgud3JpdGFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRC
ZShpbXBvcnRWYWx1ZUxlbmd0aC5jb25maWd1cmFibGUsIHRydWUpOworfQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3Mvc2hhZG93LXJlYWxtLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc2hhZG93LXJl
YWxtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA2MmI4OGM2ZTM5NTk5NTYzNGQ3ZWQ4ZWY5ZTk5ZjJjM2ZkODg2
YTUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zaGFkb3ctcmVhbG0uanMKQEAg
LTAsMCArMSwzNiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVNoYWRvd1JlYWxtPTEiKQor
CitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgJHtleHBlY3Rl
ZH0gYnV0IGdvdCAke2FjdHVhbH1gKTsKK30KKworLy8gc2hhZG93IHJlYWxtIHNwZWNzCit7Cisg
ICAgbGV0IHNoYWRvd1JlYWxtUHJvcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
dGhpcywgIlNoYWRvd1JlYWxtIik7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1Qcm9wLmVudW1l
cmFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShzaGFkb3dSZWFsbVByb3Aud3JpdGFibGUsIHRy
dWUpOworICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtUHJvcC5jb25maWd1cmFibGUsIHRydWUpOwor
CisgICAgbGV0IHNoYWRvd1JlYWxtRXZhbHVhdGUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKFNoYWRvd1JlYWxtLnByb3RvdHlwZSwgImV2YWx1YXRlIik7CisgICAgc2hvdWxkQmUo
c2hhZG93UmVhbG1FdmFsdWF0ZS5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoc2hh
ZG93UmVhbG1FdmFsdWF0ZS53cml0YWJsZSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoc2hhZG93UmVh
bG1FdmFsdWF0ZS5jb25maWd1cmFibGUsIHRydWUpOworCisgICAgbGV0IHNoYWRvd1JlYWxtSW1w
b3J0VmFsdWUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFNoYWRvd1JlYWxtLnBy
b3RvdHlwZSwgImltcG9ydFZhbHVlIik7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1JbXBvcnRW
YWx1ZS5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1JbXBvcnRW
YWx1ZS53cml0YWJsZSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1JbXBvcnRWYWx1
ZS5jb25maWd1cmFibGUsIHRydWUpOworCisgICAgbGV0IHNoYWRvd1JlYWxtTmFtZSA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU2hhZG93UmVhbG0sICJuYW1lIik7CisgICAgc2hv
dWxkQmUoc2hhZG93UmVhbG1OYW1lLnZhbHVlLCAiU2hhZG93UmVhbG0iKTsKKyAgICBzaG91bGRC
ZShzaGFkb3dSZWFsbU5hbWUuZW51bWVyYWJsZSwgZmFsc2UpOworICAgIHNob3VsZEJlKHNoYWRv
d1JlYWxtTmFtZS53cml0YWJsZSwgZmFsc2UpOworICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtTmFt
ZS5jb25maWd1cmFibGUsIHRydWUpOworCisgICAgbGV0IHNoYWRvd1JlYWxtTGVuZ3RoID0gT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihTaGFkb3dSZWFsbSwgImxlbmd0aCIpOworICAg
IHNob3VsZEJlKHNoYWRvd1JlYWxtTGVuZ3RoLnZhbHVlLCAwKTsKKyAgICBzaG91bGRCZShzaGFk
b3dSZWFsbUxlbmd0aC5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoc2hhZG93UmVh
bG1MZW5ndGgud3JpdGFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShzaGFkb3dSZWFsbUxlbmd0
aC5jb25maWd1cmFibGUsIHRydWUpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438944</attachid>
            <date>2021-09-22 06:15:28 -0700</date>
            <delta_ts>2021-09-22 07:36:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230602-20210922151526.patch</filename>
            <type>text/plain</type>
            <size>84847</size>
            <attacher name="Phillip Mates">pmates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMDkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NDhhOWM4ZjhhYzRmNmNkNjI3ZmFiMTc3YWU3MGQ5YzQzYzBiMDVjLi5hMjE0NmI2MjAzNzcyNmIw
M2Y4Y2FlZDk0YzFmZDhiNTA0MTEyYzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MCBAQAorMjAyMS0wOS0yMSAgUGhpbGxpcCBNYXRlcyAgPHBtYXRlc0BpZ2FsaWEuY29t
PgorCisgICAgICAgIHNoYWRvdyByZWFsbXMgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDYwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGF0aW9uIG9mIHRoZSBT
aGFkb3cgUmVhbG1zIHByb3Bvc2FsIChzdGFnZSAzIGluIFRDMzkpIFsxXQorCisgICAgICAgIE1h
aW4gQVBJcyBhZGRlZCBhcmUKKyAgICAgICAgIC0gYG5ldyBTaGFkb3dSZWFsbSgpYAorICAgICAg
ICAgICBjcmVhdGVzIGFuIG9iamVjdCB0aGF0IGhhcyBpdHMgb3duIGdsb2JhbCBvYmplY3QgYW5k
IG1vZHVsZSBncmFwaC4KKyAgICAgICAgIC0gU2hhZG93UmVhbG0ucHJvdG90eXBlLmV2YWx1YXRl
KHNvdXJjZVRleHQpCisgICAgICAgICAgIHRoaXMgYWxsb3dzIGZvciBldmFsdWF0aW5nIGNvZGUg
aW4gdGhlIGNvbnRleHQgb2YgdGhlIHJlYWxtLCB3aGljaAorICAgICAgICAgICBoYXMgaXRzIG93
biBtb2R1bGUgZ3JhcGggYW5kIGdsb2JhbCBvYmplY3QuCisgICAgICAgICAtIFNoYWRvd1JlYWxt
LnByb3RvdHlwZS5pbXBvcnRWYWx1ZShzcGVjaWZpZXIsIGV4cG9ydE5hbWUpCisgICAgICAgICAg
IHRoaXMgYWxsb3dzIGltcG9ydGluZyBtb2R1bGUgZXhwb3J0cyBpbiB0aGUgdGhlIGNvbnRleHQg
b2YgdGhlCisgICAgICAgICAgIHJlYWxtLCB3aGljaCBoYXMgaXRzIG93biBtb2R1bGUgZ3JhcGgg
YW5kIGdsb2JhbCBvYmplY3QuCisKKyAgICAgICAgVGhlIG1haW4gZGV0YWlsIG9mIHRoZSBTaGFk
b3cgUmVhbG0gaW1wbGVtZW50YXRpb24gaXMgdGhhdCB2YWx1ZXMKKyAgICAgICAgcGFzc2VkIGJl
dHdlZW4gcmVhbG1zIG11c3QgYmUgZWl0aGVyIHByaW1pdGl2ZXMgb3Igd3JhcHBlZCBjYWxsYWJs
ZXMuCisgICAgICAgIFdyYXBwZWQgY2FsbGFibGVzIHRoZW1zZWx2ZXMgYXJlIGNhbGxhYmxlcyB0
aGF0IGNoZWNrIHRoYXQgdGhlaXIKKyAgICAgICAgYXJndW1lbnRzIGFuZCByZXR1cm4gdmFsdWVz
IGFyZSBhbHNvIGVpdGhlciBwcmltaXRpdmVzIG9yIHdyYXBwZWQKKyAgICAgICAgY2FsbGFibGVz
LiBUaGlzIGRldGFpbCBpcyBpbXBsZW1lbnRlZCB2aWEgSlMgYnVpbHRpbnMgKyBhIGZldyBuZXcK
KyAgICAgICAgaW50cmluc2ljcy4KKworICAgICAgICBDYW4gYmUgZW5hYmxlZCB1c2luZyBgLS11
c2VTaGFkb3dSZWFsbT10cnVlYAorCisgICAgICAgIFsxXTogaHR0cHM6Ly9naXRodWIuY29tL3Rj
MzkvcHJvcG9zYWwtc2hhZG93cmVhbG0KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogYnVpbHRpbnMvU2hhZG93
UmVhbG1Qcm90b3R5cGUuanM6IEFkZGVkLgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS53cmFwKToK
KyAgICAgICAgKGV2YWx1YXRlKToKKyAgICAgICAgKGltcG9ydFZhbHVlKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgICogYnl0ZWNvZGUv
TGlua1RpbWVDb25zdGFudC5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdElzU2hhZG93UmVh
bG0pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAq
IGpzYy5jcHA6CisgICAgICAgIChKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAq
IHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9JbmRp
cmVjdEV2YWxFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0
YWJsZTo6Y3JlYXRlSW1wbCk6CisgICAgICAgIChKU0M6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGU6
OmNyZWF0ZVNhZmUpOgorICAgICAgICAoSlNDOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVu
SW1wbCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjcmVhdGVXaXRoQ3VzdG9tTWV0
aG9kVGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNoYWRvd1JlYWxtUHJvdG90eXBlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNoYWRvd1JlYWxtU3RydWN0dXJlIGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9PcHRpb25z
TGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5jcHA6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpTaGFkb3dSZWFsbUNvbnN0cnVjdG9yOjpTaGFkb3dSZWFsbUNv
bnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6U2hhZG93UmVhbG1Db25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RTaGFkb3dSZWFsbSk6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9TaGFk
b3dSZWFsbUNvbnN0cnVjdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaC4KKyAgICAgICAgKiBydW50aW1lL1NoYWRv
d1JlYWxtT2JqZWN0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlNoYWRvd1JlYWxtT2JqZWN0
OjpTaGFkb3dSZWFsbU9iamVjdCk6CisgICAgICAgIChKU0M6OlNoYWRvd1JlYWxtT2JqZWN0Ojp2
aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgIChKU0M6OlNoYWRvd1JlYWxtT2JqZWN0OjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpTaGFkb3dSZWFsbU9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvU2hhZG93UmVhbG1PYmplY3QuaDogQ29waWVkIGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oLgorICAgICAg
ICAqIHJ1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6U2hhZG93UmVhbG1Qcm90b3R5cGU6OlNoYWRvd1JlYWxtUHJvdG90eXBlKToKKyAgICAgICAg
KEpTQzo6U2hhZG93UmVhbG1Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1NoYWRvd1Jl
YWxtUHJvdG90eXBlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaC4KKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAg
ICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMjEtMDkt
MDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBNYXRoLmh5
cG90IGNoZWNrcyBmb3IgaW5maW5pdGUgdmFsdWVzIHByZW1hdHVyZWx5CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZWNhMDgzMTRiNjQ0NTljNzhjYTAzODY0MjgxNTM3Zjg1
MThkYmVlMC4uMDViNTQyZTA0MjdmZTQwOTFkZGM5Y2ExYTYwMTJhNzY4MGZiNDA5MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTAzLDYgKzEwMyw4IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL1JlZ0V4cFByb3RvdHlw
ZS5jcHAKICAgICBydW50aW1lL1JlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcAogICAg
IHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvU2hhZG93UmVhbG1PYmplY3Qu
Y3BwCisgICAgcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL1N0
cmluZ0NvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAogICAg
IHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCkBAIC0zNjcsNiArMzY5LDcgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
YnVpbHRpbnMvUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vYnVpbHRpbnMvU2V0SXRlcmF0b3JQcm90b3R5cGUuanMKICAgICAke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvU2V0UHJvdG90eXBlLmpzCisgICAgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2J1aWx0aW5zL1NoYWRvd1JlYWxtUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1N0cmluZ0NvbnN0cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmpzCiAgICAgJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlwZS5qcwpAQCAtMTE0MCw2
ICsxMTQzLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMK
ICAgICBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUvU2NyaXB0RmV0Y2hQ
YXJhbWV0ZXJzLmgKICAgICBydW50aW1lL1NjcmlwdEZldGNoZXIuaAorICAgIHJ1bnRpbWUvU2hh
ZG93UmVhbG1PYmplY3QuaAogICAgIHJ1bnRpbWUvU2xvd1BhdGhGdW5jdGlvbi5oCiAgICAgcnVu
dGltZS9TbG93UGF0aFJldHVyblR5cGUuaAogICAgIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggODgxOTI3ZTE3YmRh
MjM4ZDdkYWNlZjFkNmViNWMzYzNiNzQ4YjM3Ny4uMWUxZTgxMTI5N2IwNzQyNTE1MjM1NzQxMjFl
NTNhODdkYzA5YjNiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTEyMiw2ICsxMjIsNyBAQCBKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTID0g
XAogICAgICR7SmF2YVNjcmlwdENvcmV9L2J1aWx0aW5zL1JlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJv
dG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TZXRJdGVyYXRvclBy
b3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvU2V0UHJvdG90eXBl
LmpzIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TaGFkb3dSZWFsbVByb3RvdHlw
ZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvU3RyaW5nQ29uc3RydWN0b3Iu
anMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1N0cmluZ0l0ZXJhdG9yUHJvdG90
eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TdHJpbmdQcm90b3R5cGUu
anMgXApAQCAtMTg3LDYgKzE4OCw3IEBAIE9CSkVDVF9MVVRfSEVBREVSUyA9IFwKICAgICBSZWZs
ZWN0T2JqZWN0Lmx1dC5oIFwKICAgICBSZWdFeHBDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgU2V0
UHJvdG90eXBlLmx1dC5oIFwKKyAgICBTaGFkb3dSZWFsbVByb3RvdHlwZS5sdXQuaCBcCiAgICAg
U3RyaW5nQ29uc3RydWN0b3IubHV0LmggXAogICAgIFN0cmluZ1Byb3RvdHlwZS5sdXQuaCBcCiAg
ICAgU3ltYm9sQ29uc3RydWN0b3IubHV0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA0ZTRhMTYzOTk0OTE5MWFmNWFhOTVkYTY5ZmY0MzNhMjhiZjYxYjg0Li40YjdiZTg5ZWMz
ODZlMTI2OTg1YjYzNzljYmIxNDg5NWY1YWQwMmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTI1Myw2ICsxMjUzLDkgQEAKIAkJODYwMTYxRTMwRjNBODNDMTAwRjg0NzEwIC8q
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2MDE2MURGMEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJODYwMTYxRTUwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2XzY0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjAxNjFFMTBG
M0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjAxNjFFNjBGM0E4M0MxMDBGODQ3
MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2MUUyMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTg2MDI5NjAyMjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbUNvbnN0
cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NjAyOTVGQzI2RkI1NTJDMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2MDI5NjA0MjZG
QjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMjk1RkUyNkZCNTUyRDAwNzhFQjYyIC8qIFNo
YWRvd1JlYWxtT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJODYwMjk2MDUyNkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtUHJvdG90
eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjAy
OTVGRjI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Qcm90b3R5cGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjA2RERFQTE4REE0NEFC
MDBBMzgzRDAgLyogSWRlbnRpZmllcklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDZEREU5MThEQTQ0QUIwMEEzODNEMCAvKiBJZGVudGlm
aWVySW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTg2MEJEODAxMTQ4RUE2RjIwMDExMkIyRiAvKiBJbnRyaW5zaWMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkY2NDJBMTQ4REIyQjUwMDRE
RTM2QSAvKiBJbnRyaW5zaWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk4NjEyRTRDRDE1MjM4OUVDMDBDODM2QkUgLyogTWF0Y2hSZXN1bHQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MTJFNENCMTUy
MjkxODQwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00MjA2LDYgKzQyMDksMTIgQEAKIAkJODYwMTYxREYw
RjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4NjAxNjFFMTBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYwMTYxRTIwRjNB
ODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg2MDI5NUZBMjZGQjU1MkMwMDc4RUI2MiAvKiBTaGFkb3dSZWFs
bVByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFk
b3dSZWFsbVByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MDI5
NUZCMjZGQjU1MkMwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbU9iamVjdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFkb3dSZWFsbU9iamVjdC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MDI5NUZDMjZGQjU1MkMwMDc4RUI2MiAvKiBTaGFkb3dS
ZWFsbUNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYWRv
d1JlYWxtQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYwMjk1
RkQyNkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtQ29uc3RydWN0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MDI5NUZFMjZGQjU1MkQwMDc4RUI2MiAv
KiBTaGFkb3dSZWFsbU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
aGFkb3dSZWFsbU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjAyOTVG
RjI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Qcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhZG93UmVhbG1Qcm90b3R5cGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODYwNEY0RjIxNDNBNkM0NDAwQjI5NUY1IC8qIENoYW5nZUxvZyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IGxp
bmVFbmRpbmcgPSAwOyBwYXRoID0gQ2hhbmdlTG9nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4NjA2RERFOTE4REE0NEFCMDBBMzgzRDAgLyogSWRlbnRpZmllcklubGluZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWRlbnRpZmllcklubGluZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYxMkU0Q0IxNTIyOTE4NDAwQzgzNkJFIC8qIE1hdGNo
UmVzdWx0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGNoUmVzdWx0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03OTM4LDYgKzc5NDcsMTIgQEAKIAkJCQlB
NzkwREQ2ODE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0b3JQcm90b3R5cGUuaCAqLywKIAkJ
CQlBNzI5OUQ5RjE3RDEyODQ4MDA1RjVGRjkgLyogU2V0UHJvdG90eXBlLmNwcCAqLywKIAkJCQlB
NzI5OURBMDE3RDEyODQ4MDA1RjVGRjkgLyogU2V0UHJvdG90eXBlLmggKi8sCisJCQkJODYwMjk1
RkQyNkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtQ29uc3RydWN0b3IuY3BwICovLAorCQkJ
CTg2MDI5NUZDMjZGQjU1MkMwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmggKi8s
CisJCQkJODYwMjk1RkIyNkZCNTUyQzAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtT2JqZWN0LmNwcCAq
LywKKwkJCQk4NjAyOTVGRTI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1PYmplY3QuaCAq
LywKKwkJCQk4NjAyOTVGQTI2RkI1NTJDMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Qcm90b3R5cGUu
Y3BwICovLAorCQkJCTg2MDI5NUZGMjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbVByb3Rv
dHlwZS5oICovLAogCQkJCTBGMkI2NkQ2MTdCNkI1QUIwMEE3QUUzRiAvKiBTaW1wbGVUeXBlZEFy
cmF5Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJMEYyQjY2RDcxN0I2QjVBQjAwQTdBRTNGIC8qIFNp
bXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmggKi8sCiAJCQkJRkU4QzAzMTEyNjRBNjkxMDAwMUE0
NEFEIC8qIFNsb3dQYXRoRnVuY3Rpb24uaCAqLywKQEAgLTEwNjM1LDYgKzEwNjUwLDkgQEAKIAkJ
CQkwRkVFOTg0MTFBODg2NUI3MDA3NTRFOTMgLyogU2V0dXBWYXJhcmdzRnJhbWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCURDMTdFODE4MUM5QzkxRDkwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlEQzE3RTgxOTFDOUM5MURCMDA4QTZBQjMgLyogU2hhZG93Q2hp
Y2tlbklubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2MDI5NjAyMjZGQjU1MkQwMDc4RUI2
MiAvKiBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NjAyOTYw
NDI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1PYmplY3QuaCBpbiBIZWFkZXJzICovLAor
CQkJCTg2MDI5NjA1MjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbVByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkUzMDIyRDMxRTNENzNBNTAwQkFDNDkzIC8qIFNpZ2lsbENyYXNo
QW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNEQ4Qzc4MUZDQTNDRkEwMDFEMzJBQyAv
KiBTaW1wbGVNYXJraW5nQ29uc3RyYWludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY3MDUx
N0I2QjVBQjAwQTdBRTNGIC8qIFNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAzMjhmOTJmNWIyZmIyMDVjODM4
NzgyMjQxOWE1MDg0ZTBmYTFmN2NhLi41MjJlNmEwNzY0YWM1NzE5N2VjMmMxMGRmYTNkOWQ4MTIw
MTEyZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC05NjksNiArOTY5LDkgQEAg
cnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcAogcnVudGltZS9Qcm94eU9iamVjdC5jcHAKIHJ1
bnRpbWUvUHJveHlSZXZva2UuY3BwCiBydW50aW1lL1JhbmRvbWl6aW5nRnV6emVyQWdlbnQuY3Bw
CitydW50aW1lL1NoYWRvd1JlYWxtT2JqZWN0LmNwcAorcnVudGltZS9TaGFkb3dSZWFsbUNvbnN0
cnVjdG9yLmNwcAorcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvUmVm
bGVjdE9iamVjdC5jcHAKIHJ1bnRpbWUvUmVnRXhwLmNwcAogcnVudGltZS9SZWdFeHBDYWNoZS5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFt
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRl
eCBkY2FmMGJhNmNhMzE4ZjE4MDI5MmNiYThkN2RjMDBmYTU3NzkxZWEwLi40Yjg2NTA2NmVjNGE2
MzE4ZGM1ZTc3ZjMzYTZiMTZkNmM4MzAzN2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC02Miw2ICs2Miw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIG1hY3JvKE51bWJlcikgXAogICAgIG1hY3JvKEFycmF5KSBcCiAgICAgbWFjcm8oQXJy
YXlCdWZmZXIpIFwKKyAgICBtYWNybyhTaGFkb3dSZWFsbSkgXAogICAgIG1hY3JvKFJlZ0V4cCkg
XAogICAgIG1hY3JvKG1pbikgXAogICAgIG1hY3JvKHRydW5jKSBcCkBAIC0xMTUsNiArMTE2LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oYXN5bmNHZW5lcmF0b3JRdWV1ZUl0ZW1OZXh0
KSBcCiAgICAgbWFjcm8oZGF0ZVRpbWVGb3JtYXQpIFwKICAgICBtYWNybyh0aGlzKSBcCisgICAg
bWFjcm8oaW1wb3J0SW5SZWFsbSkgXAorICAgIG1hY3JvKGV2YWxJblJlYWxtKSBcCiAgICAgbWFj
cm8odGhpc1RpbWVWYWx1ZSkgXAogICAgIG1hY3JvKG5ld1RhcmdldExvY2FsKSBcCiAgICAgbWFj
cm8oZGVyaXZlZENvbnN0cnVjdG9yKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvU2hhZG93UmVhbG1Qcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvU2hhZG93UmVhbG1Qcm90b3R5cGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmYwNGY5ZTE3
MTRiNThiMTk5N2IyNDA5ODQ0NmIyMjJjN2I4NDdlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TaGFkb3dSZWFsbVByb3RvdHlwZS5qcwpAQCAtMCww
ICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKK0BnbG9iYWxQcml2YXRlCitmdW5jdGlvbiB3cmFwKHRhcmdldCkKK3sKKyAgICAidXNlIHN0
cmljdCI7CisKKyAgICBpZiAoQGlzQ2FsbGFibGUodGFyZ2V0KSkgeworICAgICAgICBsZXQgd3Jh
cHBlZCA9ICguLi5hcmdzKSA9PiB7CisgICAgICAgICAgICAvLyBzcGVjaWFsaXphdGlvbiBvZiBB
cnJheS5wcm90b3R5cGUubWFwCisgICAgICAgICAgICB2YXIgd3JhcHBlZEFyZ3MgPSBhcmdzLkBt
YXAoQHdyYXApCisgICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0YXJnZXQuQGFwcGx5KEB1bmRl
ZmluZWQsIHdyYXBwZWRBcmdzKTsKKyAgICAgICAgICAgIHJldHVybiBAd3JhcChyZXN1bHQpOwor
ICAgICAgICB9OworICAgICAgICBkZWxldGUgd3JhcHBlZFsnbmFtZSddOworICAgICAgICBkZWxl
dGUgd3JhcHBlZFsnbGVuZ3RoJ107CisgICAgICAgIHJldHVybiB3cmFwcGVkOworICAgIH0gZWxz
ZSBpZiAoQGlzT2JqZWN0KHRhcmdldCkpIHsKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJ2YWx1
ZSBwYXNzaW5nIGJldHdlZW4gcmVhbG1zIG11c3QgYmUgY2FsbGFibGUgb3IgcHJpbWl0aXZlIik7
CisgICAgfQorICAgIHJldHVybiB0YXJnZXQ7Cit9CisKK2Z1bmN0aW9uIGV2YWx1YXRlKHNvdXJj
ZVRleHQpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNTaGFkb3dSZWFsbSh0
aGlzKSkKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJgJVNoYWRvd1JlYWxtJS5ldmFsdWF0ZSBy
ZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBhIFNoYWRvd1JlYWxtIGluc3RhbmNlIik7CisKKyAgICBp
ZiAodHlwZW9mIHNvdXJjZVRleHQgIT09ICdzdHJpbmcnKQorICAgICAgICBAdGhyb3dUeXBlRXJy
b3IoImAlU2hhZG93UmVhbG0lLmV2YWx1YXRlIHJlcXVpcmVzIHRoYXQgdGhlIHxzb3VyY2VUZXh0
fCBhcmd1bWVudCBiZSBhIHN0cmluZyIpOworCisgICAgbGV0IHJlc3VsdCA9IEBldmFsSW5SZWFs
bSh0aGlzLCBzb3VyY2VUZXh0KQorICAgIHJldHVybiBAd3JhcChyZXN1bHQpOworfQorCitmdW5j
dGlvbiBpbXBvcnRWYWx1ZShzcGVjaWZpZXIsIGV4cG9ydE5hbWUpCit7CisgICAgInVzZSBzdHJp
Y3QiOworCisgICAgaWYgKCFAaXNTaGFkb3dSZWFsbSh0aGlzKSkKKyAgICAgICAgQHRocm93VHlw
ZUVycm9yKCJgJVNoYWRvd1JlYWxtJS5pbXBvcnRWYWx1ZSByZXF1aXJlcyB0aGF0IHx0aGlzfCBi
ZSBhIFNoYWRvd1JlYWxtIGluc3RhbmNlIik7CisKKyAgICBsZXQgZXhwb3J0TmFtZVN0ciA9IEB0
b1N0cmluZyhleHBvcnROYW1lKTsKKyAgICBsZXQgc3BlY2lmaWVyU3RyID0gQHRvU3RyaW5nKHNw
ZWNpZmllcik7CisKKyAgICBsZXQgbG9va3VwQmluZGluZyA9IChtb2R1bGUpID0+IHsKKyAgICAg
ICAgbGV0IGxvb2t1cCA9IG1vZHVsZVtleHBvcnROYW1lU3RyXQorICAgICAgICBpZiAobG9va3Vw
ID09PSBAdW5kZWZpbmVkKQorICAgICAgICAgICAgQHRocm93VHlwZUVycm9yKCIlU2hhZG93UmVh
bG0lLmltcG9ydFZhbHVlIHJlcXVpcmVzIHxleHBvcnROYW1lfCB0byBleGlzdCBpbiB0aGUgfHNw
ZWNpZmllcnwiKTsKKworICAgICAgICByZXR1cm4gQHdyYXAobG9va3VwKTsKKyAgICB9OworCisg
ICAgbGV0IGNyb3NzUmVhbG1UaHJvdyA9IChlcnJvcikgPT4geworICAgICAgICAvLyByZS10aHJv
dyBiZWNhdXNlIGltcG9ydCBpc3N1ZXMgcmFpc2UgZXJyb3JzIHVzaW5nIHRoZSByZWFsbSdzIGds
b2JhbCBvYmplY3QKKyAgICAgICAgQHRocm93VHlwZUVycm9yKEB0b1N0cmluZyhlcnJvcikpOwor
ICAgIH07CisKKyAgICByZXR1cm4gQGltcG9ydEluUmVhbG0odGhpcywgc3BlY2lmaWVyU3RyKS5A
dGhlbihsb29rdXBCaW5kaW5nLCBjcm9zc1JlYWxtVGhyb3cpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
LmgKaW5kZXggODU1NTk3Nzg2NzA3MmYyZmZmNjdhNjU1OWFjZDlhNDU0ZDUyZDI3Ny4uYjMyY2Nk
YWY0M2E2NjJjODc3OTU1ODA3ZjZkNDFmMTI1OTE5NGY1MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5o
CkBAIC02Niw2ICs2Niw3IEBAIGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6IGludDMyX3Q7
CiAgICAgbWFjcm8oaXNSZWdFeHBPYmplY3QpIFwKICAgICBtYWNybyhpc01hcCkgXAogICAgIG1h
Y3JvKGlzU2V0KSBcCisgICAgbWFjcm8oaXNTaGFkb3dSZWFsbSkgXAogICAgIG1hY3JvKGlzU3Ry
aW5nSXRlcmF0b3IpIFwKICAgICBtYWNybyhpc0FycmF5SXRlcmF0b3IpIFwKICAgICBtYWNybyhp
c01hcEl0ZXJhdG9yKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTGlua1RpbWVDb25zdGFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xp
bmtUaW1lQ29uc3RhbnQuaAppbmRleCA1ZjMyYWY4MjBlNDVmYTQ5ZGM5MmZjNDU2N2FhZjQwMTUz
Y2JlYWJkLi4wMTUzOTQ4MmUyOWI1ZGFhNDczYzEwY2RkNWFlNjU5YTg0NDFiMjA0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKQEAg
LTYzLDYgKzYzLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgdihpbnN0YW5jZU9mLCBu
dWxscHRyKSBcCiAgICAgdihCdWlsdGluTG9nLCBudWxscHRyKSBcCiAgICAgdihCdWlsdGluRGVz
Y3JpYmUsIG51bGxwdHIpIFwKKyAgICB2KFNoYWRvd1JlYWxtLCBudWxscHRyKSBcCiAgICAgdihS
ZWdFeHAsIG51bGxwdHIpIFwKICAgICB2KG1pbiwgbnVsbHB0cikgXAogICAgIHYodHJ1bmMsIG51
bGxwdHIpIFwKQEAgLTc4LDYgKzc5LDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgdiho
b3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIsIG51bGxwdHIpIFwKICAgICB2KFNldCwgbnVsbHB0
cikgXAogICAgIHYodGhpc1RpbWVWYWx1ZSwgbnVsbHB0cikgXAorICAgIHYoaW1wb3J0SW5SZWFs
bSwgbnVsbHB0cikgXAorICAgIHYoZXZhbEluUmVhbG0sIG51bGxwdHIpIFwKICAgICB2KGlzQ29u
c3RydWN0b3IsIG51bGxwdHIpIFwKICAgICB2KHNhbWVWYWx1ZSwgbnVsbHB0cikgXAogICAgIHYo
cmVnRXhwUHJvdG9GbGFnc0dldHRlciwgbnVsbHB0cikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGY1NGQ4
NGZlZGUyM2Y1OWZhN2ExMzk0ODk4ZmVlZjFkNDM4ZjU0M2QuLmNmMDUzMTM3ZTFiZDIyMGNiYmEy
ZGQxMTdjM2ZiNWRhN2Y3YWRmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTg4Myw2ICs4ODMsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzUmVnRXhwT2JqZWN0KFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5
cGUoZHN0LCBzcmMsIFJlZ0V4cE9iamVjdFR5cGUpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRJc01hcChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElz
Q2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU01hcFR5cGUpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRJc1NldChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1p
dElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU1NldFR5cGUpOyB9CisgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRJc1NoYWRvd1JlYWxtKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7
IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIFNoYWRvd1JlYWxtVHlwZSk7IH0K
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzU3RyaW5nSXRlcmF0b3IoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywg
SlNTdHJpbmdJdGVyYXRvclR5cGUpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0FycmF5
SXRlcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJ
c0NlbGxXaXRoVHlwZShkc3QsIHNyYywgSlNBcnJheUl0ZXJhdG9yVHlwZSk7IH0KICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdElzTWFwSXRlcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgSlNNYXBJdGVyYXRv
clR5cGUpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKaW5kZXggM2I4YTY2ZmViZDJkMjg0MjFmMjdiNDlhZTliNjc3MDI5OGEy
NjA3MS4uMTMyMDg5MDZhNjQ4OWMwNDgxYzI5NjU3NTMxMmI2M2FlNTNkMDA1YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApA
QCAtMTg5NCw2ICsxODk0LDcgQEAgQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0soaXNQ
cm9taXNlLCBJc1Byb21pc2UpCiBDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSyhpc1Jl
Z0V4cE9iamVjdCwgSXNSZWdFeHBPYmplY3QpCiBDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9D
SEVDSyhpc01hcCwgSXNNYXApCiBDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSyhpc1Nl
dCwgSXNTZXQpCitDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSyhpc1NoYWRvd1JlYWxt
LCBJc1NoYWRvd1JlYWxtKQogQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0soaXNTdHJp
bmdJdGVyYXRvciwgSXNTdHJpbmdJdGVyYXRvcikKIENSRUFURV9JTlRSSU5TSUNfRk9SX0JSQU5E
X0NIRUNLKGlzQXJyYXlJdGVyYXRvciwgSXNBcnJheUl0ZXJhdG9yKQogQ1JFQVRFX0lOVFJJTlNJ
Q19GT1JfQlJBTkRfQ0hFQ0soaXNNYXBJdGVyYXRvciwgSXNNYXBJdGVyYXRvcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAKaW5kZXggMTcwOTZkYTc2ZmVjMWY2ZDBhZGI2YmU5OGY3N2FlMDM5YTI1MmQ1OS4u
MGM5MDViNTkyMDc4MjA5NTg2NDhiZmNhMzhjM2Y5MTBlNTdmOTRjZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAKQEAgLTM1OSw2ICszNTksNyBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
TihmdW5jdGlvbkRvbGxhckNyZWF0ZVJlYWxtKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKGZ1bmN0aW9uRG9sbGFyRXZhbFNjcmlwdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckdDKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKGZ1bmN0aW9uRG9sbGFyQ2xlYXJLZXB0T2JqZWN0cyk7CitzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckdsb2JhbE9iamVjdEZvcik7CiBzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckFnZW50U3RhcnQpOwogc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJBZ2VudFJlY2VpdmVC
cm9hZGNhc3QpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xs
YXJBZ2VudFJlcG9ydCk7CkBAIC02MzgsNiArNjM5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYWRk
RnVuY3Rpb24odm0sIGRvbGxhciwgImV2YWxTY3JpcHQiLCBmdW5jdGlvbkRvbGxhckV2YWxTY3Jp
cHQsIDEsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkpOwog
ICAgICAgICBhZGRGdW5jdGlvbih2bSwgZG9sbGFyLCAiZ2MiLCBmdW5jdGlvbkRvbGxhckdDLCAw
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6Ok5vbmUpKTsKICAgICAg
ICAgYWRkRnVuY3Rpb24odm0sIGRvbGxhciwgImNsZWFyS2VwdE9iamVjdHMiLCBmdW5jdGlvbkRv
bGxhckNsZWFyS2VwdE9iamVjdHMsIDAsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6Tm9uZSkpOworICAgICAgICBhZGRGdW5jdGlvbih2bSwgZG9sbGFyLCAiZ2xvYmFs
T2JqZWN0Rm9yIiwgZnVuY3Rpb25Eb2xsYXJHbG9iYWxPYmplY3RGb3IsIDEsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkpOwogICAgICAgICAKICAgICAgICAg
ZG9sbGFyLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJnbG9iYWwi
KSwgZ2xvYmFsVGhpcygpKTsKICAgICAgICAgZG9sbGFyLT5wdXREaXJlY3RDdXN0b21BY2Nlc3Nv
cih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIklzSFRNTEREQSIpLApAQCAtMjA0Nyw2
ICsyMDQ5LDIyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckNsZWFy
S2VwdE9iamVjdHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1
bmN0aW9uRG9sbGFyR2xvYmFsT2JqZWN0Rm9yLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBp
ZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVycm9y
KGdsb2JhbE9iamVjdCwgIk5vdCBlbm91Z2ggYXJndW1lbnRzIl9zKSkpOworICAgIEpTVmFsdWUg
YXJnID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoYXJnLmlzQ2VsbCgpKSB7Cisg
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYXJnLnN0cnVjdHVyZU9yTnVsbCh2bSk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKS0+
Z2xvYmFsVGhpcygpKTsKKyAgICB9CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworfQorCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJB
Z2VudFN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBhYTliODA5ZmQ3MTcxYjkyMWZjM2M4YTU5
NTg4YzVlOTNjZDRlMTZmLi4zM2I4OTE5ZGQxNTEzNjVmZmEzZTY5MDNkMTQ0Mjc0MzYxNTc1YzQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC01MDk0LDcgKzUw
OTQsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICAgICAgbmV3Q291bnQtLTsK
ICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZhaWxJ
ZlRydWUobWF0Y2goSURFTlQpLCAiXCJuZXcuXCIgY2FuIG9ubHkgZm9sbG93ZWQgd2l0aCB0YXJn
ZXQiKTsKKyAgICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goSURFTlQpLCAiXCJuZXcuXCIgY2Fu
IG9ubHkgYmUgZm9sbG93ZWQgd2l0aCB0YXJnZXQiKTsKICAgICAgICAgICAgIGZhaWxEdWVUb1Vu
ZXhwZWN0ZWRUb2tlbigpOwogICAgICAgICB9CiAgICAgfQpAQCAtNTEyOSw3ICs1MTI5LDcgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgICAgICAgICBiYXNlID0gY29udGV4dC5j
cmVhdGVJbXBvcnRNZXRhRXhwcihsb2NhdGlvbiwgY3JlYXRlUmVzb2x2ZUFuZFVzZVZhcmlhYmxl
KGNvbnRleHQsICZtX3ZtLnByb3BlcnR5TmFtZXMtPm1ldGFQcml2YXRlTmFtZSwgZmFsc2UsIGV4
cHJlc3Npb25TdGFydCwgbG9jYXRpb24pKTsKICAgICAgICAgICAgICAgICBuZXh0KCk7CiAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goSURFTlQp
LCAiXCJpbXBvcnQuXCIgY2FuIG9ubHkgZm9sbG93ZWQgd2l0aCBtZXRhIik7CisgICAgICAgICAg
ICAgICAgZmFpbElmVHJ1ZShtYXRjaChJREVOVCksICJcImltcG9ydC5cIiBjYW4gb25seSBiZSBm
b2xsb3dlZCB3aXRoIG1ldGEiKTsKICAgICAgICAgICAgICAgICBmYWlsRHVlVG9VbmV4cGVjdGVk
VG9rZW4oKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCA0MDYzMzFjYWRl
OTA1OGM0M2M0NjhiOGNlZWZhNTNmMmVlYjhjYzEzLi4zODc1Y2Y2YjYzYzBkMzEyYWIyNTJkNjBl
MGVmOTBiODM0MzI1NTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlQcm90b3R5cGUuY3BwCkBAIC0xMDUsNiArMTA1LDcgQEAgdm9pZCBBcnJheVByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5yZWR1Y2VQdWJsaWNOYW1lKCksIGFycmF5UHJvdG90eXBlUmVk
dWNlQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSkpOwogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElP
Tih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWR1Y2VSaWdodFB1YmxpY05hbWUo
KSwgYXJyYXlQcm90b3R5cGVSZWR1Y2VSaWdodENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfQlVJTFRJTl9G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkubWFwUHVibGljTmFtZSgpLCBhcnJheVByb3RvdHlwZU1hcENvZGVHZW5lcmF0b3IsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBKU0Nf
QlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkubWFwUHJpdmF0ZU5hbWUoKSwgYXJyYXlQcm90b3R5cGVNYXBDb2RlR2VuZXJh
dG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7
CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQdWJsaWNOYW1lKCksIGFycmF5UHJv
dG9GdW5jS2V5cywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIDAsIEFycmF5S2V5c0ludHJpbnNpYyk7CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNf
RlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmVudHJpZXNQdWJsaWNOYW1lKCksIGFycmF5UHJvdG9GdW5jRW50cmllcywgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDAsIEFycmF5RW50cmll
c0ludHJpbnNpYyk7CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZpbmRQdWJsaWNOYW1lKCksIGFycmF5
UHJvdG90eXBlRmluZENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDcxNGFhMmZlYjIyNGZhNThmMjdlZDU1NTFi
NjdjOWYzMjY1Y2JkMjcuLjM5ODQwY2FhMTg1ZjBjYTIyMWYyN2JlNzdlMzA1NWEzNTgwM2UxNWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaApAQCAtNTIsNiArNTIsNyBAQAogICAgIG1hY3JvKE9iamVjdCkgXAogICAgIG1hY3JvKFBs
dXJhbFJ1bGVzKSBcCiAgICAgbWFjcm8oUHJvbWlzZSkgXAorICAgIG1hY3JvKFNoYWRvd1JlYWxt
KSBcCiAgICAgbWFjcm8oUmVmbGVjdCkgXAogICAgIG1hY3JvKFJlZ0V4cCkgXAogICAgIG1hY3Jv
KFJlbGF0aXZlVGltZUZvcm1hdCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAppbmRleCA3NDk4MjA1MDE4Y2Rl
ZjhmM2Y4MzY3YjRiYmUyZWY3OWRiZDE3YzFmLi40MGQxYzEwYTA1NzA5MTM0YTQxYzI2YTE2ZGUw
NmMzMWQzYjY5ZjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcApAQCAtMzQsNyArMzQsOSBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0
YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFcnJvckhhbmRsZXJGdW5jdG9yPgoraW5saW5lIEluZGlyZWN0
RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZUltcGwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVk
Q29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIEVycm9ySGFuZGxlckZ1bmN0b3Ig
ZXJyb3JIYW5kbGVyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC00OSw3ICs1MSw3IEBAIElu
ZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqCiAKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKICAgICBPcHRp
b25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUgPSBnbG9iYWxPYmpl
Y3QtPmRlZmF1bHRDb2RlR2VuZXJhdGlvbk1vZGUoKTsKLSAgICAKKwogICAgIFVubGlua2VkRXZh
bENvZGVCbG9jayogdW5saW5rZWRFdmFsQ29kZSA9IHZtLmNvZGVDYWNoZSgpLT5nZXRVbmxpbmtl
ZEV2YWxDb2RlQmxvY2soCiAgICAgICAgIHZtLCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5zb3Vy
Y2UoKSwgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIGNvZGVHZW5lcmF0aW9uTW9kZSwg
ZXJyb3IsIGV2YWxDb250ZXh0VHlwZSk7CiAKQEAgLTU3LDcgKzU5LDcgQEAgSW5kaXJlY3RFdmFs
RXhlY3V0YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmoKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpLT5zb3VyY2VQYXJz
ZWQoZ2xvYmFsT2JqZWN0LCBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBlcnJvci5s
aW5lKCksIGVycm9yLm1lc3NhZ2UoKSk7CiAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKSB7Ci0g
ICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvci50b0Vycm9yT2Jq
ZWN0KGdsb2JhbE9iamVjdCwgZXhlY3V0YWJsZS0+c291cmNlKCkpKTsKKyAgICAgICAgZXJyb3JI
YW5kbGVyKCZzY29wZSwgZXhlY3V0YWJsZS0+c291cmNlKCksICZlcnJvcik7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNjYsNiArNjgsMjIgQEAgSW5kaXJlY3RFdmFsRXhl
Y3V0YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmoKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KIAorSW5kaXJlY3RFdmFsRXhlY3V0
YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlU2FmZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIERlcml2ZWRDb250ZXh0VHlw
ZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENv
bnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgTmFrZWRQdHI8SlNPYmplY3Q+JiByZXN1bHRpbmdF
cnJvcikKK3sKKyAgICBhdXRvIGhhbmRsZUVycm9yID0gWyZdKFRocm93U2NvcGUqLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yKiBlcnJvcikgeworICAgICAgICByZXN1bHRp
bmdFcnJvciA9IGVycm9yLT50b0Vycm9yT2JqZWN0KGdsb2JhbE9iamVjdCwgc291cmNlKTsKKyAg
ICB9OworICAgIHJldHVybiBjcmVhdGVJbXBsKGdsb2JhbE9iamVjdCwgc291cmNlLCBkZXJpdmVk
Q29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlwZSwgaGFu
ZGxlRXJyb3IpOworfQorCitJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVj
dXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29s
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUp
Cit7CisgICAgYXV0byBoYW5kbGVFcnJvciA9IFsmXShUaHJvd1Njb3BlKiBzY29wZSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciogZXJyb3IpIHsKKyAgICAgICAgdGhyb3dW
TUVycm9yKGdsb2JhbE9iamVjdCwgKnNjb3BlLCBlcnJvci0+dG9FcnJvck9iamVjdChnbG9iYWxP
YmplY3QsIHNvdXJjZSkpOworICAgIH07CisgICAgcmV0dXJuIGNyZWF0ZUltcGwoZ2xvYmFsT2Jq
ZWN0LCBzb3VyY2UsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwg
ZXZhbENvbnRleHRUeXBlLCBoYW5kbGVFcnJvcik7Cit9CisKIGNvbnN0ZXhwciBib29sIGluU3Ry
aWN0Q29udGV4dCA9IGZhbHNlOwogY29uc3RleHByIGJvb2wgaW5zaWRlT3JkaW5hcnlGdW5jdGlv
biA9IGZhbHNlOwogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6SW5kaXJlY3RFdmFsRXhlY3V0YWJs
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaApp
bmRleCA0OThiNWM4NzA5OGFiMzc0Nzk3YTI1YmY0ODE2MzdjZmJiOTJlZGY1Li5jOGU1MjQ1NjY1
ODU1NzE0NDY0MjI4ZjAwMGNmYjA3MzlkZDk3MzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oCkBAIC0zMiw3ICsz
MiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUgZmlu
YWwgOiBwdWJsaWMgRXZhbEV4ZWN1dGFibGUgewogcHVibGljOgogICAgIHN0YXRpYyBJbmRpcmVj
dEV2YWxFeGVjdXRhYmxlKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2Rl
JiwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxD
b250ZXh0VHlwZSk7CisgICAgc3RhdGljIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIGNyZWF0ZVNh
ZmUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgRGVyaXZlZENvbnRleHRUeXBl
LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSwgTmFrZWRQdHI8
SlNPYmplY3Q+Jik7CiBwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVycm9ySGFuZGxl
ckZ1bmN0b3I+CisgICAgaW5saW5lIHN0YXRpYyBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBjcmVh
dGVJbXBsKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRDb250ZXh0
VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUsIEVycm9y
SGFuZGxlckZ1bmN0b3IpOworCiAgICAgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9i
amVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlKTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBiMmZkZjQ2NDM2
ZTg3NzYwNDkwNjQ4YWZkMDE0MWM4MjIzNjE0OTUxLi44ZjM3ZGNlOTU2NWZhOWE4MDYxZWFjMDMw
OGYzZTFiMTJhOWI1YjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xOTQsNiArMTk0LDkgQEAKICNpbmNsdWRlICJTZXRDb25z
dHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlNldEl0ZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAi
U2V0UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5oIgorI2lu
Y2x1ZGUgIlNoYWRvd1JlYWxtT2JqZWN0LmgiCisjaW5jbHVkZSAiU2hhZG93UmVhbG1Qcm90b3R5
cGUuaCIKICNpbmNsdWRlICJTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIlN0cmlu
Z0NvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaCIKQEAg
LTkxNCw2ICs5MTcsOSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTnVtYmVyT2ZBcnJheUluZGV4aW5nTW9kZXM7ICsraSkK
ICAgICAgICAgbV9hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nU2hhcGVEdXJpbmdBbGxvY2F0aW9u
W2ldID0gbV9vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdTaGFwZVtpXTsKIAorICAg
IG1fc2hhZG93UmVhbG1Qcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBTaGFkb3dSZWFsbVByb3RvdHlw
ZTo6Y3JlYXRlKHZtLCBTaGFkb3dSZWFsbVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKKyAgICBtX3NoYWRvd1JlYWxtT2JqZWN0
U3RydWN0dXJlLnNldCh2bSwgdGhpcywgU2hhZG93UmVhbG1PYmplY3Q6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9zaGFkb3dSZWFsbVByb3RvdHlwZS5nZXQoKSkpOworCiAgICAgbV9yZWdF
eHBQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBSZWdFeHBQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhp
cywgUmVnRXhwUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJv
dG90eXBlLmdldCgpKSkpOwogICAgIG1fcmVnRXhwU3RydWN0dXJlLnNldCh2bSwgdGhpcywgUmVn
RXhwT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fcmVnRXhwUHJvdG90eXBlLmdl
dCgpKSk7CiAgICAgbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBj
cmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUodm0sIHRoaXMpKTsKQEAgLTEwMTgsNyAr
MTAyNCwxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBBcnJheUNv
bnN0cnVjdG9yKiBhcnJheUNvbnN0cnVjdG9yID0gQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZt
LCB0aGlzLCBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2FycmF5UHJvdG90eXBlLmdldCgpLCBtX3NwZWNpZXNH
ZXR0ZXJTZXR0ZXIuZ2V0KCkpOwogICAgIG1fYXJyYXlDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMs
IGFycmF5Q29uc3RydWN0b3IpOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OkFycmF5KV0uc2V0KHZtLCB0aGlzLCBhcnJheUNv
bnN0cnVjdG9yKTsKLSAgICAKKworICAgIFNoYWRvd1JlYWxtQ29uc3RydWN0b3IqIHNoYWRvd1Jl
YWxtQ29uc3RydWN0b3IgPSBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIFNoYWRv
d1JlYWxtQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSksIG1fc2hhZG93UmVhbG1Qcm90b3R5cGUuZ2V0KCksIG1fc3BlY2llc0dl
dHRlclNldHRlci5nZXQoKSk7CisgICAgbV9zaGFkb3dSZWFsbUNvbnN0cnVjdG9yLnNldCh2bSwg
dGhpcywgc2hhZG93UmVhbG1Db25zdHJ1Y3Rvcik7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6U2hhZG93UmVhbG0pXS5zZXQo
dm0sIHRoaXMsIHNoYWRvd1JlYWxtQ29uc3RydWN0b3IpOworCiAgICAgUmVnRXhwQ29uc3RydWN0
b3IqIHJlZ0V4cENvbnN0cnVjdG9yID0gUmVnRXhwQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgUmVn
RXhwQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3Rv
dHlwZS5nZXQoKSksIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCBtX3NwZWNpZXNHZXR0ZXJTZXR0
ZXIuZ2V0KCkpOwogICAgIG1fcmVnRXhwQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCByZWdFeHBD
b25zdHJ1Y3Rvcik7CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oTGlua1RpbWVDb25zdGFudDo6UmVnRXhwKV0uc2V0KHZtLCB0aGlzLCByZWdFeHBDb25zdHJ1
Y3Rvcik7CkBAIC0xMDk4LDYgKzExMDgsNyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3Rvciog
bG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAg
IG1fZnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgZnVuY3Rpb25Db25zdHJ1Y3Rvciwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIG1fYXJyYXlQ
cm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5jb25zdHJ1Y3RvciwgYXJyYXlDb25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIG1fcmVnRXhwUHJvdG90eXBlLT5wdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3Is
IHJlZ0V4cENvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSk7CisgICAgbV9zaGFkb3dSZWFsbVByb3RvdHlwZS0+cHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBzaGFkb3dS
ZWFsbUNvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSk7CiAgICAgCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPk9iamVjdCwgb2JqZWN0Q29uc3RydWN0b3IsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+RnVuY3Rpb24sIGZ1bmN0aW9uQ29u
c3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKQEAgLTEyNDIsNiArMTI1Myw4IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBs
b3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAg
ICAgIFRlbXBvcmFsT2JqZWN0KiB0ZW1wb3JhbCA9IFRlbXBvcmFsT2JqZWN0OjpjcmVhdGUodm0s
IFRlbXBvcmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMpKTsKICAgICAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPlRlbXBvcmFsLCB0
ZW1wb3JhbCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSkpOwogICAgIH0KKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhZG93UmVhbG0oKSkKKyAgICAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPlNoYWRvd1Jl
YWxtLCBzaGFkb3dSZWFsbUNvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAKICAgICBtX21vZHVsZUxvYWRlci5pbml0TGF0ZXIo
CiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxKU01vZHVsZUxvYWRlcj4mIGluaXQpIHsK
QEAgLTE0MTQsNiArMTQyNywxMiBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJO
YW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgIG1fbGlu
a1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Omhv
c3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlcildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6
ZXI8SlNDZWxsPiYgaW5pdCkgewogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3Jl
YXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJp
bmcoKSwgZ2xvYmFsRnVuY0hvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlcikpOwogICAgICAgICB9
KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGlt
ZUNvbnN0YW50OjppbXBvcnRJblJlYWxtKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXpl
cjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVh
dGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmlu
ZygpLCBpbXBvcnRJblJlYWxtKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFu
dHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmV2YWxJblJlYWxtKV0u
aW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAg
ICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBldmFsSW5SZWFsbSkpOworICAgICAg
ICB9KTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5r
VGltZUNvbnN0YW50Ojp0aGlzVGltZVZhbHVlKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFs
aXplcjxKU0NlbGw+JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpj
cmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0
cmluZygpLCBkYXRlUHJvdG9GdW5jR2V0VGltZSwgRGF0ZVByb3RvdHlwZUdldFRpbWVJbnRyaW5z
aWMpKTsKICAgICAgICAgfSk7CkBAIC0yMDk4LDYgKzIxMTcsNyBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAg
ICAgdGhpc09iamVjdC0+bV9VUklFcnJvclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0
aGlzT2JqZWN0LT5tX2FnZ3JlZ2F0ZUVycm9yU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAg
IHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYXJyYXlDb25zdHJ1Y3Rvcik7CisgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zaGFkb3dSZWFsbUNvbnN0cnVjdG9yKTsKICAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3JlZ0V4cENvbnN0cnVjdG9yKTsKICAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX29iamVjdENvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uQ29uc3RydWN0b3IpOwpAQCAtMjE5NCw2ICsy
MjE0LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBj
ZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogICAgIHRoaXNPYmplY3QtPm1fY3VzdG9tU2V0dGVyRnVu
Y3Rpb25TdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9ib3VuZEZ1
bmN0aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fbmF0aXZl
U3RkRnVuY3Rpb25TdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9zaGFkb3dSZWFsbU9iamVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5h
cHBlbmQodGhpc09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1fYXN5bmNGdW5jdGlvblN0cnVjdHVyZSk7CkBAIC0yNTUwLDYg
KzI1NzEsMTMgQEAgSlNHbG9iYWxPYmplY3QqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0OwogfQogCitK
U0dsb2JhbE9iamVjdCogSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVdpdGhDdXN0b21NZXRob2RUYWJs
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RU
YWJsZSogbWV0aG9kVGFibGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2xvYmFsT2JqZWN0Pih2bS5oZWFwKSkgSlNH
bG9iYWxPYmplY3Qodm0sIHN0cnVjdHVyZSwgbWV0aG9kVGFibGUpOworICAgIGdsb2JhbE9iamVj
dC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBnbG9iYWxPYmplY3Q7Cit9CisKIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBEZWZlclRl
cm1pbmF0aW9uIGRlZmVyVGVybWluYXRpb24odm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggZGViMzNkYmQxMDMwODNhMThmNDBiYTdh
ZGM1Njk1MjYwMTQ5N2QyOS4uNzMzNTVmMGY2Nzg4NmM1ZGZiOTlmMzM3NzkzMGI0NDdmOTFkNmJj
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CkBAIC0xMTUsNiArMTE1LDggQEAgY2xhc3MgTnVsbFNldHRlckZ1bmN0aW9uOwogY2xhc3MgT2Jq
ZWN0Q29uc3RydWN0b3I7CiBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgUHJvZ3JhbUV4
ZWN1dGFibGU7CitjbGFzcyBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yOworY2xhc3MgU2hhZG93UmVh
bG1Qcm90b3R5cGU7CiBjbGFzcyBSZWdFeHBDb25zdHJ1Y3RvcjsKIGNsYXNzIFJlZ0V4cFByb3Rv
dHlwZTsKIGNsYXNzIFNldEl0ZXJhdG9yUHJvdG90eXBlOwpAQCAtMzA2LDYgKzMwOCw3IEBAIHB1
YmxpYzoKIAogICAgIFdyaXRlQmFycmllcjxPYmplY3RDb25zdHJ1Y3Rvcj4gbV9vYmplY3RDb25z
dHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8QXJyYXlDb25zdHJ1Y3Rvcj4gbV9hcnJheUNvbnN0
cnVjdG9yOworICAgIFdyaXRlQmFycmllcjxTaGFkb3dSZWFsbUNvbnN0cnVjdG9yPiBtX3NoYWRv
d1JlYWxtQ29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPFJlZ0V4cENvbnN0cnVjdG9yPiBt
X3JlZ0V4cENvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxGdW5jdGlvbkNvbnN0cnVjdG9y
PiBtX2Z1bmN0aW9uQ29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0
cnVjdG9yPiBtX3Byb21pc2VDb25zdHJ1Y3RvcjsKQEAgLTM1Miw2ICszNTUsNyBAQCBwdWJsaWM6
CiAgICAgV3JpdGVCYXJyaWVyPE9iamVjdFByb3RvdHlwZT4gbV9vYmplY3RQcm90b3R5cGU7CiAg
ICAgV3JpdGVCYXJyaWVyPEZ1bmN0aW9uUHJvdG90eXBlPiBtX2Z1bmN0aW9uUHJvdG90eXBlOwog
ICAgIFdyaXRlQmFycmllcjxBcnJheVByb3RvdHlwZT4gbV9hcnJheVByb3RvdHlwZTsKKyAgICBX
cml0ZUJhcnJpZXI8U2hhZG93UmVhbG1Qcm90b3R5cGU+IG1fc2hhZG93UmVhbG1Qcm90b3R5cGU7
CiAgICAgV3JpdGVCYXJyaWVyPFJlZ0V4cFByb3RvdHlwZT4gbV9yZWdFeHBQcm90b3R5cGU7CiAg
ICAgV3JpdGVCYXJyaWVyPEl0ZXJhdG9yUHJvdG90eXBlPiBtX2l0ZXJhdG9yUHJvdG90eXBlOwog
ICAgIFdyaXRlQmFycmllcjxBc3luY0l0ZXJhdG9yUHJvdG90eXBlPiBtX2FzeW5jSXRlcmF0b3JQ
cm90b3R5cGU7CkBAIC00MDgsNiArNDEyLDcgQEAgcHVibGljOgogICAgIExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2N1c3RvbVNldHRlckZ1bmN0aW9uU3RydWN0dXJl
OwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX25hdGl2ZVN0
ZEZ1bmN0aW9uU3RydWN0dXJlOwogICAgIFByb3BlcnR5T2Zmc2V0IG1fZnVuY3Rpb25OYW1lT2Zm
c2V0OworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc2hhZG93UmVhbG1PYmplY3RTdHJ1
Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBTdHJ1Y3R1cmU7CiAg
ICAgV3JpdGVCYXJyaWVyPEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU+IG1fYXN5bmNGdW5jdGlvblBy
b3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8QXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZT4gbV9hc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOwpAQCAtNjA5LDYgKzYxNCw3IEBA
IHB1YmxpYzoKICAgICB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNHbG9iYWxP
YmplY3QqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBKU0dsb2JhbE9iamVjdCogY3JlYXRlV2l0aEN1c3RvbU1ldGhvZFRhYmxlKFZNJiwgU3Ry
dWN0dXJlKiwgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqKTsKIAogICAgIERFQ0xBUkVf
RVhQT1JUX0lORk87CiAKQEAgLTcxMiw2ICs3MTgsNyBAQCBwdWJsaWM6CiAgICAgQmlnSW50UHJv
dG90eXBlKiBiaWdJbnRQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2JpZ0ludFByb3RvdHlw
ZS5nZXQoKTsgfQogICAgIEpTT2JqZWN0KiBkYXRlUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRlU3RydWN0dXJlLnByb3RvdHlwZSh0aGlzKTsgfQogICAgIEpTT2JqZWN0KiBzeW1ib2xQ
cm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3N5bWJvbE9iamVjdFN0cnVjdHVyZS5wcm90b3R5
cGVJbml0aWFsaXplZE9uTWFpblRocmVhZCh0aGlzKTsgfQorICAgIFNoYWRvd1JlYWxtUHJvdG90
eXBlKiBzaGFkb3dSZWFsbVByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93UmVhbG1Q
cm90b3R5cGUuZ2V0KCk7IH0KICAgICBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpOyB9CiAgICAgSlNPYmplY3Qq
IGVycm9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvclN0cnVjdHVyZS5wcm90b3R5
cGUodGhpcyk7IH0KICAgICBJdGVyYXRvclByb3RvdHlwZSogaXRlcmF0b3JQcm90b3R5cGUoKSBj
b25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9CkBAIC04MjksNiArODM2
LDcgQEAgcHVibGljOgogICAgIFByb3BlcnR5T2Zmc2V0IGZ1bmN0aW9uTmFtZU9mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25OYW1lT2Zmc2V0OyB9CiAgICAgU3RydWN0dXJlKiBudW1i
ZXJPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX251bWJlck9iamVjdFN0cnVjdHVy
ZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cFN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVnRXhwU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBzaGFkb3dS
ZWFsbVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93UmVhbG1PYmplY3RTdHJ1Y3R1
cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGdlbmVyYXRvclN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZ2VuZXJhdG9yU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBhc3lu
Y0dlbmVyYXRvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXN5bmNHZW5lcmF0b3JTdHJ1
Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKaW5kZXggMTYxM2M2NTNlZjI4
ZjE4MGMwZjg1MzJmMjRlNjA0ZmI0NWY2ZDBmMS4uZTJjMmY3ZjA5Mjc0MTUyNDBkODVjNjdkZDNm
OGRjMjBmY2IwOTg4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3Bw
CkBAIC00Miw2ICs0Miw3IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBK
U0M6OkpTVHlwZSB0eXBlKQogICAgIENBU0UoU3RyaW5nVHlwZSkKICAgICBDQVNFKFN5bWJvbFR5
cGUpCiAgICAgQ0FTRShIZWFwQmlnSW50VHlwZSkKKyAgICBDQVNFKFNoYWRvd1JlYWxtVHlwZSkK
ICAgICBDQVNFKEN1c3RvbUdldHRlclNldHRlclR5cGUpCiAgICAgQ0FTRShBUElWYWx1ZVdyYXBw
ZXJUeXBlKQogICAgIENBU0UoTmF0aXZlRXhlY3V0YWJsZVR5cGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVHlwZS5oCmluZGV4IGRlNjczMDFiYzE1NzUwYTE0MTUyNzQ3NzQ4M2RlMzdm
ZWEwMTY0YWIuLjNiNTU3ZmQzOTQxYjM5M2NkNmUzZDBkY2UyMDRkN2RkMzliMzEzNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBAIC0xMDksNiArMTA5LDcgQEAgZW51
bSBKU1R5cGUgOiB1aW50OF90IHsKICAgICAvLyBFbmQgSlNTY29wZSB0eXBlcy4KIAogICAgIE1v
ZHVsZU5hbWVzcGFjZU9iamVjdFR5cGUsCisgICAgU2hhZG93UmVhbG1UeXBlLAogICAgIFJlZ0V4
cE9iamVjdFR5cGUsCiAgICAgSlNEYXRlVHlwZSwKICAgICBQcm94eU9iamVjdFR5cGUsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCBhMGMyMTcwZWM0
YmE1MjFjNTFiZWM2ZDIwM2E1MWE5NTY4YjJmNGIyLi4yYWIxODg1MDFiOGJlOTg0M2E1M2ViNzUw
YTczMzQyNDA3ODdkMjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnNMaXN0LmgKQEAgLTU0MCw2ICs1NDAsNyBAQCBib29sIGNhblVzZVdlYkFzc2VtYmx5RmFzdE1l
bW9yeSgpOwogICAgIHYoQm9vbCwgdXNlSGFzT3duLCB0cnVlLCBOb3JtYWwsICJFeHBvc2UgdGhl
IE9iamVjdC5oYXNPd24gbWV0aG9kIikgXAogICAgIHYoQm9vbCwgdXNlSW50bEVudW1lcmF0aW9u
LCB0cnVlLCBOb3JtYWwsICJFeHBvc2UgdGhlIEludGwgZW51bWVyYXRpb24gQVBJcy4iKSBcCiAg
ICAgdihCb29sLCB1c2VTaGFyZWRBcnJheUJ1ZmZlciwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikg
XAorICAgIHYoQm9vbCwgdXNlU2hhZG93UmVhbG0sIGZhbHNlLCBOb3JtYWwsICJFeHBvc2UgdGhl
IFNoYWRvd1JlYWxtIG9iamVjdC4iKSBcCiAgICAgdihCb29sLCB1c2VUZW1wb3JhbCwgZmFsc2Us
IE5vcm1hbCwgIkV4cG9zZSB0aGUgVGVtcG9yYWwgb2JqZWN0LiIpIFwKICAgICB2KEJvb2wsIHVz
ZVdlYkFzc2VtYmx5VGhyZWFkaW5nLCB0cnVlLCBOb3JtYWwsICJBbGxvdyBpbnN0cnVjdGlvbnMg
ZnJvbSB0aGUgd2FzbSB0aHJlYWRpbmcgc3BlYy4iKSBcCiAgICAgdihCb29sLCB1c2VXZWJBc3Nl
bWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzLCBmYWxzZSwgTm9ybWFsLCAiQWxsb3cgZnVuY3Rp
b24gdHlwZXMgZnJvbSB0aGUgd2FzbSB0eXBlZCBmdW5jdGlvbiByZWZlcmVuY2VzIHNwZWMuIikg
XApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1D
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFs
bUNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDAwNTM3MjJkNWYwMjBlYjFlMGRhZDUzNWZj
ZmViZmFjOTFlYWFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlNoYWRvd1JlYWxtT2JqZWN0LmgiCisKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoU2hhZG93UmVhbG1Db25zdHJ1Y3RvcikgfTsKKwor
U1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKFNoYWRvd1JlYWxtQ29uc3Ry
dWN0b3IpOworCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjYWxsU2hhZG93UmVh
bG0pOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0V2l0aFNoYWRv
d1JlYWxtQ29uc3RydWN0b3IpOworCitTaGFkb3dSZWFsbUNvbnN0cnVjdG9yOjpTaGFkb3dSZWFs
bUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5h
bEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGNhbGxTaGFkb3dSZWFsbSwgY29uc3RydWN0V2l0aFNo
YWRvd1JlYWxtQ29uc3RydWN0b3IpCit7Cit9CisKK3ZvaWQgU2hhZG93UmVhbG1Db25zdHJ1Y3Rv
cjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTaGFkb3dSZWFsbVByb3RvdHlwZSogc2hhZG93UmVh
bG1Qcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDAsIHZtLnByb3Bl
cnR5TmFtZXMtPlNoYWRvd1JlYWxtLnN0cmluZygpLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0
aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHNoYWRvd1JlYWxtUHJvdG90eXBlLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Cit9CisKK3N0YXRpYyBKU09iamVjdCog
Y29uc3RydWN0U2hhZG93UmVhbG0oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSwgY29uc3QgQXJnTGlzdCYpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIFN0cnVjdHVyZSogc2hhZG93UmVhbG1TdHJ1Y3R1cmUgPSBTaGFkb3dSZWFsbU9iamVjdDo6
Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+c2hhZG93UmVh
bG1Qcm90b3R5cGUoKSk7CisgICAgcmV0dXJuIFNoYWRvd1JlYWxtT2JqZWN0OjpjcmVhdGUodm0s
IHNoYWRvd1JlYWxtU3RydWN0dXJlLCBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRh
YmxlKCkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0V2l0aFNoYWRv
d1JlYWxtQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCit7CisgICAgQXJnTGlzdCBhcmdzKGNhbGxGcmFtZSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RTaGFkb3dSZWFsbShnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS0+bmV3VGFyZ2V0KCksIGFyZ3MpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGNhbGxTaGFkb3dSZWFsbSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSopKQoreworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGdsb2JhbE9i
amVjdC0+dm0oKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9y
Q2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJT
aGFkb3dSZWFsbSIpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZGRjY2QyMjcwMTY1NzBjNDE4ODY3NTExOTRlYjk4YWZkMTMzMGE0MgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtQ29uc3Ry
dWN0b3IuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxp
YSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5j
dGlvbi5oIgorI2luY2x1ZGUgIlNoYWRvd1JlYWxtUHJvdG90eXBlLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBHZXR0ZXJTZXR0ZXI7CisKK2NsYXNzIFNoYWRvd1JlYWxtQ29uc3RydWN0
b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRl
ZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlU
YWJsZTsKKworICAgIHN0YXRpYyBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU2hhZG93UmVhbG1Qcm90b3R5cGUqIHNoYWRvd1JlYWxt
UHJvdG90eXBlLCBHZXR0ZXJTZXR0ZXIqKQorICAgIHsKKyAgICAgICAgU2hhZG93UmVhbG1Db25z
dHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTaGFkb3dS
ZWFsbUNvbnN0cnVjdG9yPih2bS5oZWFwKSkgU2hhZG93UmVhbG1Db25zdHJ1Y3Rvcih2bSwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBzaGFkb3dS
ZWFsbVByb3RvdHlwZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9CisKKyAg
ICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFNoYWRvd1JlYWxtQ29uc3RydWN0
b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgU2hhZG93
UmVhbG1Qcm90b3R5cGUqKTsKK307CitTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShTaGFkb3dSZWFsbUNvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uKTsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1No
YWRvd1JlYWxtT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRv
d1JlYWxtT2JqZWN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42M2I4YWIyNjZjZTQ3YzBmNTRjNmViM2E4MzVm
MmMyYjQzYjFmMGViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2hhZG93UmVhbG1PYmplY3QuY3BwCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlNoYWRvd1JlYWxtT2JqZWN0LmgiCisKKyNpbmNsdWRlICJPYmplY3RQcm90
b3R5cGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZ
X0RFU1RSVUNUSUJMRShTaGFkb3dSZWFsbU9iamVjdCk7CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFNoYWRvd1JlYWxtT2JqZWN0Ojpz
X2luZm8gPSB7ICJTaGFkb3dSZWFsbSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoU2hhZG93UmVhbG1PYmplY3QpIH07CisKK1NoYWRvd1JlYWxt
T2JqZWN0OjpTaGFkb3dSZWFsbU9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNp
dG9yPgordm9pZCBTaGFkb3dSZWFsbU9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBj
ZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIFNoYWRvd1JlYWxtT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PFNoYWRvd1JlYWxtT2JqZWN0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRy
ZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX2dsb2JhbE9iamVjdCk7Cit9CisKK0RFRklORV9WSVNJVF9DSElMRFJFTihTaGFkb3dSZWFs
bU9iamVjdCk7CisKK1NoYWRvd1JlYWxtT2JqZWN0KiBTaGFkb3dSZWFsbU9iamVjdDo6Y3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRh
YmxlKiBtZXRob2RUYWJsZSkKK3sKKyAgICBTaGFkb3dSZWFsbU9iamVjdCogb2JqZWN0ID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2hhZG93UmVhbG1PYmplY3Q+KHZtLmhlYXApKSBTaGFk
b3dSZWFsbU9iamVjdCh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gSlNHbG9iYWxPYmplY3Q6
OmNyZWF0ZVdpdGhDdXN0b21NZXRob2RUYWJsZSh2bSwgSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwganNOdWxsKCkpLCBtZXRob2RUYWJsZSk7CisgICAgb2JqZWN0LT5tX2dsb2Jh
bE9iamVjdC5zZXQodm0sIG9iamVjdCwgZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gb2JqZWN0
OworfQorCit2b2lkIFNoYWRvd1JlYWxtT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7
CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwg
aW5mbygpKSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2hhZG93UmVhbG1PYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NoYWRvd1JlYWxtT2JqZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODViNGQ5Zjk3NjlhMWQwNWUzNzg5
Y2RmNmU3OTcyMDcxYTE5OTRiMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtT2JqZWN0LmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFNoYWRvd1JlYWxtT2JqZWN0IGZpbmFsIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZp
bmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
LCBTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAmdm0uc2hhZG93UmVhbG1TcGFjZTsKKyAgICB9
CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKFNoYWRvd1JlYWxtVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0K
KworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTaGFkb3dSZWFsbU9iamVjdCogY3Jl
YXRlKFZNJiwgU3RydWN0dXJlKiwgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqKTsKKwor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSB7IHJldHVybiBtX2dsb2JhbE9iamVj
dC5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFNoYWRvd1JlYWxtT2JqZWN0KFZNJiwgU3RydWN0
dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIERFQ0xBUkVfVklTSVRf
Q0hJTERSRU47CisKKyAgICBXcml0ZUJhcnJpZXI8SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2Jq
ZWN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDM4
Yzk3YzE4YTZiZTcyMzA3ODFhNDhlZDEwM2IwMjk2ZmFiZDYyNQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmNwcApA
QCAtMCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhZG93UmVhbG1Qcm90
b3R5cGUuaCIKKworI2luY2x1ZGUgIkNvbXBsZXRpb24uaCIKKyNpbmNsdWRlICJJbmRpcmVjdEV2
YWxFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU0NC
dWlsdGlucy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdC5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgiCisjaW5jbHVkZSAiSlNNb2R1
bGVMb2FkZXIuaCIKKyNpbmNsdWRlICJMaXRlcmFsUGFyc2VyLmgiCisjaW5jbHVkZSAiU2hhZG93
UmVhbG1PYmplY3QuaCIKKworI2luY2x1ZGUgIlNoYWRvd1JlYWxtUHJvdG90eXBlLmx1dC5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworLyogU291cmNlIGZvciBTaGFkb3dSZWFsbVByb3RvdHlwZS5s
dXQuaAorQGJlZ2luIHNoYWRvd1JlYWxtUHJvdG90eXBlVGFibGUKKyAgZXZhbHVhdGUgICAgSlNC
dWlsdGluICAgICBEb250RW51bXxGdW5jdGlvbiAgMQorICBpbXBvcnRWYWx1ZSBKU0J1aWx0aW4g
ICAgIERvbnRFbnVtfEZ1bmN0aW9uICAyCitAZW5kCisqLworCitjb25zdCBDbGFzc0luZm8gU2hh
ZG93UmVhbG1Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIlNoYWRvd1JlYWxtIiwgJkJhc2U6OnNfaW5m
bywgJnNoYWRvd1JlYWxtUHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoU2hhZG93UmVhbG1Qcm90b3R5cGUpIH07CisKK1NoYWRvd1JlYWxtUHJvdG90eXBlOjpTaGFk
b3dSZWFsbVByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNO
b25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIFNoYWRvd1JlYWxtUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAgSlNDX1RPX1NU
UklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihpbXBvcnRJblJlYWxtLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CisgICAgU2hhZG93UmVh
bG1PYmplY3QqIHRoaXNSZWFsbSA9IGpzRHluYW1pY0Nhc3Q8U2hhZG93UmVhbG1PYmplY3QqPih2
bSwgdGhpc1ZhbHVlKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh0aGlzUmVhbG0pOworCisgICAgYXV0
byogcHJvbWlzZSA9IEpTUHJvbWlzZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnByb21pc2VT
dHJ1Y3R1cmUoKSk7CisKKyAgICBhdXRvIHNvdXJjZU9yaWdpbiA9IGNhbGxGcmFtZS0+Y2FsbGVy
U291cmNlT3JpZ2luKHZtKTsKKyAgICBhdXRvKiBzcGVjaWZpZXIgPSBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDEpLnRvU3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEpTR2xvYmFsT2JqZWN0KiByZWFsbUdsb2JhbE9i
amVjdCA9IHRoaXNSZWFsbS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byogaW50ZXJuYWxQcm9t
aXNlID0gcmVhbG1HbG9iYWxPYmplY3QtPm1vZHVsZUxvYWRlcigpLT5pbXBvcnRNb2R1bGUocmVh
bG1HbG9iYWxPYmplY3QsIHNwZWNpZmllciwganNVbmRlZmluZWQoKSwgc291cmNlT3JpZ2luKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+
cmVqZWN0V2l0aENhdWdodEV4Y2VwdGlvbihyZWFsbUdsb2JhbE9iamVjdCwgc2NvcGUpKSk7CisK
KyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgcHJvbWlzZS0+cmVzb2x2ZShnbG9iYWxPYmplY3Qs
IGludGVybmFsUHJvbWlzZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwcm9taXNlKTsK
K30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGV2YWxJblJlYWxtLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7
CisgICAgU2hhZG93UmVhbG1PYmplY3QqIHRoaXNSZWFsbSA9IGpzRHluYW1pY0Nhc3Q8U2hhZG93
UmVhbG1PYmplY3QqPih2bSwgdGhpc1ZhbHVlKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh0aGlzUmVh
bG0pOworICAgIEpTR2xvYmFsT2JqZWN0KiByZWFsbUdsb2JhbE9iamVjdCA9IHRoaXNSZWFsbS0+
Z2xvYmFsT2JqZWN0KCk7CisKKyAgICBKU1ZhbHVlIGV2YWxBcmcgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDEpOworICAgIC8vIGV2YWwgY29kZSBhZGFwdGVkIGZyb20gSlNHbG9iYWxPYmplY0Z1bmN0
aW9uczo6Z2xvYmFsRnVuY0V2YWwKKyAgICBTdHJpbmcgcyA9IGFzU3RyaW5nKGV2YWxBcmcpLT52
YWx1ZShnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOworCisgICAgSlNWYWx1ZSBwYXJzZWRPYmplY3Q7CisgICAgaWYgKHMuaXM4
Qml0KCkpIHsKKyAgICAgICAgTGl0ZXJhbFBhcnNlcjxMQ2hhcj4gcHJlcGFyc2VyKGdsb2JhbE9i
amVjdCwgcy5jaGFyYWN0ZXJzOCgpLCBzLmxlbmd0aCgpLCBOb25TdHJpY3RKU09OLCBudWxscHRy
KTsKKyAgICAgICAgcGFyc2VkT2JqZWN0ID0gcHJlcGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIExpdGVyYWxQYXJzZXI8VUNoYXI+IHByZXBhcnNlcihnbG9i
YWxPYmplY3QsIHMuY2hhcmFjdGVyczE2KCksIHMubGVuZ3RoKCksIE5vblN0cmljdEpTT04sIG51
bGxwdHIpOworICAgICAgICBwYXJzZWRPYmplY3QgPSBwcmVwYXJzZXIudHJ5TGl0ZXJhbFBhcnNl
KCk7CisgICAgfQorICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOworICAgIGlmIChwYXJzZWRPYmplY3QpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocGFyc2VkT2JqZWN0KTsKKworICAgIE5ha2VkUHRyPEpTT2JqZWN0PiBleGVjdXRhYmxlRXJy
b3I7CisgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNlKHMsIGNhbGxGcmFtZS0+Y2Fs
bGVyU291cmNlT3JpZ2luKHZtKSk7CisgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBJbmRpcmVj
dEV2YWxFeGVjdXRhYmxlOjpjcmVhdGVTYWZlKHJlYWxtR2xvYmFsT2JqZWN0LCBzb3VyY2UsIERl
cml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSwgZXhl
Y3V0YWJsZUVycm9yKTsKKyAgICBpZiAoZXhlY3V0YWJsZUVycm9yKSB7CisgICAgICAgIEVycm9y
SW5zdGFuY2UqIGVycm9yID0ganNEeW5hbWljQ2FzdDxFcnJvckluc3RhbmNlKj4odm0sIEpTVmFs
dWUoZXhlY3V0YWJsZUVycm9yLmdldCgpKSk7CisgICAgICAgIGlmIChlcnJvciAhPSBudWxscHRy
ICYmIGVycm9yLT5lcnJvclR5cGUoKSA9PSBFcnJvclR5cGU6OlN5bnRheEVycm9yKSB7CisgICAg
ICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICAgICAgY29uc3QgU3RyaW5n
IHN5bnRheEVycm9yTWVzc2FnZSA9IGVycm9yLT5zYW5pdGl6ZWRNZXNzYWdlU3RyaW5nKGdsb2Jh
bE9iamVjdCk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
ICAgICAgICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVN5bnRh
eEVycm9yKGdsb2JhbE9iamVjdCwgc3ludGF4RXJyb3JNZXNzYWdlKSk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsICJFcnJvciBlbmNvdW50ZXJlZCBkdXJpbmcgZXZhbHVhdGlv
biJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
ICAgIH0KKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSlNWYWx1
ZSByZXN1bHQgPSB2bS5pbnRlcnByZXRlci0+ZXhlY3V0ZShldmFsLCByZWFsbUdsb2JhbE9iamVj
dCwgcmVhbG1HbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKSwgcmVhbG1HbG9iYWxPYmplY3QtPmds
b2JhbFNjb3BlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsCisgICAgICAgIHRo
cm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCAiRXJyb3IgZW5jb3VudGVyZWQgZHVyaW5nIGV2YWx1YXRpb24iX3MpKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NoYWRvd1JlYWxtUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWVhZWIwYjhiYWIzOWMxNjc5NjAx
OTZiNDJmNjQyMWZjZTUxZWM5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmgKQEAgLTAsMCArMSw2NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBT
aGFkb3dSZWFsbVByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1
YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBI
YXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUs
IFN1YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQorICAgIHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
U2hhZG93UmVhbG1Qcm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgfQorCisgICAgc3RhdGljIFNoYWRvd1JlYWxtUHJvdG90eXBlKiBjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIFNoYWRvd1Jl
YWxtUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTaGFk
b3dSZWFsbVByb3RvdHlwZT4odm0uaGVhcCkpIFNoYWRvd1JlYWxtUHJvdG90eXBlKHZtLCBzdHJ1
Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAg
cmV0dXJuIHByb3RvdHlwZTsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
U2hhZG93UmVhbG1Qcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJik7Cit9OworCitKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGltcG9ydEluUmVh
bG0pOworSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihldmFsSW5SZWFsbSk7CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDAyZjE4OTdi
MGYzOTE4NTYwYjUwNTMxOWQ2ZTQ2MWJkYjVkNzEwZGQuLjJjZTYyZDM2ZGI1ZmEzYjIzMDY5ZmVl
NmQzNTYzY2Y3NTQ3Mjg3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAg
LTE1NCw2ICsxNTQsNyBAQAogI2luY2x1ZGUgIlNhbXBsaW5nUHJvZmlsZXIuaCIKICNpbmNsdWRl
ICJTY29wZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTaGFkb3dDaGlja2VuLmgiCisjaW5jbHVk
ZSAiU2hhZG93UmVhbG1PYmplY3QuaCIKICNpbmNsdWRlICJTaW1wbGVUeXBlZEFycmF5Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTdHJp
Y3RFdmFsQWN0aXZhdGlvbi5oIgpAQCAtMzY3LDYgKzM2OCw3IEBAIFZNOjpWTShWTVR5cGUgdm1U
eXBlLCBIZWFwVHlwZSBoZWFwVHlwZSwgV1RGOjpSdW5Mb29wKiBydW5Mb29wLCBib29sKiBzdWNj
ZXNzKQogICAgICwgcHJvbWlzZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTUHJvbWlzZSkKICAgICAsIHByb3BlcnR5TmFtZUVudW1lcmF0b3JT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1By
b3BlcnR5TmFtZUVudW1lcmF0b3IpCiAgICAgLCBwcm9wZXJ0eVRhYmxlU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgUHJvcGVy
dHlUYWJsZSkgLy8gSGFzaDoweGM2YmM5ZjEyCisgICAgLCBzaGFkb3dSZWFsbVNwYWNlIElTT19T
VUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFNoYWRvd1JlYWxtT2Jq
ZWN0KQogICAgICwgcmVnRXhwU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgUmVnRXhwKQogICAgICwgcmVnRXhwT2JqZWN0U3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgUmVnRXhw
T2JqZWN0KQogICAgICwgcm9wZVN0cmluZ1NwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIHN0
cmluZ0hlYXBDZWxsVHlwZS5nZXQoKSwgSlNSb3BlU3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKaW5kZXggMWU3MjVjZTM3NDg3M2UwMDdkMWIwM2Y1NDk1NmM1MDIzMDRjNmIzNy4u
ZWNiMjRlZTEyNWExMGU4YzhmNjg3ZDBhMjEzYWNlMjA5NTU1YTFhYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCkBAIC01MTEsNiArNTExLDcgQEAgcHVibGljOgogICAgIElzb1N1YnNw
YWNlIHByb21pc2VTcGFjZTsKICAgICBJc29TdWJzcGFjZSBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
U3BhY2U7CiAgICAgSXNvU3Vic3BhY2UgcHJvcGVydHlUYWJsZVNwYWNlOworICAgIElzb1N1YnNw
YWNlIHNoYWRvd1JlYWxtU3BhY2U7CiAgICAgSXNvU3Vic3BhY2UgcmVnRXhwU3BhY2U7CiAgICAg
SXNvU3Vic3BhY2UgcmVnRXhwT2JqZWN0U3BhY2U7CiAgICAgSXNvU3Vic3BhY2Ugcm9wZVN0cmlu
Z1NwYWNlOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwppbmRleCBhZTA1MDQxOGI1MWY4ZTlhNzA3MTBkMGRhMTBhMDI2N2U5NzdhNzI1Li5mOWI3MTJl
NGE3MGZjZWE4NjgxZGI3NTE5ZmQ0YTk3MmU1NWI0MDMwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0No
YW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIxLTA5
LTIxICBQaGlsbGlwIE1hdGVzICA8cG1hdGVzQGlnYWxpYS5jb20+CisKKyAgICAgICAgVGVzdCBj
b3ZlcmFnZSBmb3IgSlNDIHNoYWRvdyByZWFsbXMgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDYwMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbW9kdWxlcy9pbXBvcnQtbWV0
YS1zeW50YXguanM6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgICogc3RyZXNzL2lt
cG9ydC1zeW50YXguanM6CisgICAgICAgICogc3RyZXNzL3Jlc291cmNlcy9zaGFkb3ctcmVhbG0t
ZXhhbXBsZS1tb2R1bGUuanM6IEFkZGVkLgorICAgICAgICAocHV0SW5HbG9iYWwpOgorICAgICAg
ICAoZ2V0RnJvbUdsb2JhbCk6CisgICAgICAgIChnZXRBbk9iamVjdCk6CisgICAgICAgIChnZXRD
YWxsQ291bnQpOgorICAgICAgICAqIHN0cmVzcy9zaGFkb3ctcmVhbG0tZXZhbHVhdGUuanM6IEFk
ZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAg
ICAoYXNzZXJ0aW9uRm4pOgorICAgICAgICAoc2hvdWxkQmUuU3RyaW5nKToKKyAgICAgICAgKHNo
b3VsZEJlLmdsb2JhbE9iamVjdEZvci5kb0V2YWwpOgorICAgICAgICAoc2hvdWxkQmUuZ2xvYmFs
T2JqZWN0Rm9yKToKKyAgICAgICAgKiBzdHJlc3Mvc2hhZG93LXJlYWxtLWltcG9ydC12YWx1ZS5q
czogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6Cisg
ICAgICAgIChhc3luYyBzaG91bGRUaHJvd0FzeW5jKToKKyAgICAgICAgKGFzeW5jIGNvbnN0KToK
KyAgICAgICAgKGRvSW1wb3J0KToKKyAgICAgICAgKiBzdHJlc3Mvc2hhZG93LXJlYWxtLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRocm93Lm5ldy5FcnJvcik6CisK
IDIwMjEtMDktMDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBNYXRoLmh5cG90IGNoZWNrcyBmb3IgaW5maW5pdGUgdmFsdWVzIHByZW1hdHVyZWx5CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL21vZHVsZXMvaW1wb3J0LW1ldGEtc3ludGF4LmpzIGIvSlNUZXN0cy9t
b2R1bGVzL2ltcG9ydC1tZXRhLXN5bnRheC5qcwppbmRleCAzZWRmNGU1MTIwZTEyYTViNjg5NDkx
M2IwNWFhNzBhYzY3Njg1NjYyLi41OWEyYjM2MzQ2MGE2MDM1YzdhMTA1ZjA4YzIzNmY5ZjRhOTQz
NTFhIDEwMDY0NAotLS0gYS9KU1Rlc3RzL21vZHVsZXMvaW1wb3J0LW1ldGEtc3ludGF4LmpzCisr
KyBiL0pTVGVzdHMvbW9kdWxlcy9pbXBvcnQtbWV0YS1zeW50YXguanMKQEAgLTEwLDcgKzEwLDcg
QEAgc2hvdWxkTm90VGhyb3coKCkgPT4gewogCiBzaG91bGRUaHJvdygoKSA9PiB7CiAgICAgY2hl
Y2tNb2R1bGVTeW50YXgoYChpbXBvcnQuY29jb2EpYCk7Ci19LCBgU3ludGF4RXJyb3I6IFVuZXhw
ZWN0ZWQgaWRlbnRpZmllciAnY29jb2EnLiAiaW1wb3J0LiIgY2FuIG9ubHkgZm9sbG93ZWQgd2l0
aCBtZXRhLjoxYCk7Cit9LCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgaWRlbnRpZmllciAnY29j
b2EnLiAiaW1wb3J0LiIgY2FuIG9ubHkgYmUgZm9sbG93ZWQgd2l0aCBtZXRhLjoxYCk7CiAKIHNo
b3VsZFRocm93KCgpID0+IHsKICAgICBjaGVja01vZHVsZVN5bnRheChgKGltcG9ydFsiQ29jb2Ei
XSlgKTsKQEAgLTE4LDcgKzE4LDcgQEAgc2hvdWxkVGhyb3coKCkgPT4gewogCiBzaG91bGRUaHJv
dygoKSA9PiB7CiAgICAgY2hlY2tNb2R1bGVTeW50YXgoYGltcG9ydC5jb2NvYWApOwotfSwgYFN5
bnRheEVycm9yOiBVbmV4cGVjdGVkIGlkZW50aWZpZXIgJ2NvY29hJy4gImltcG9ydC4iIGNhbiBv
bmx5IGZvbGxvd2VkIHdpdGggbWV0YS46MWApOworfSwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVk
IGlkZW50aWZpZXIgJ2NvY29hJy4gImltcG9ydC4iIGNhbiBvbmx5IGJlIGZvbGxvd2VkIHdpdGgg
bWV0YS46MWApOwogCiBzaG91bGRUaHJvdygoKSA9PiB7CiAgICAgY2hlY2tNb2R1bGVTeW50YXgo
YGltcG9ydFsiQ29jb2EiXWApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW1wb3J0LXN5
bnRheC5qcyBiL0pTVGVzdHMvc3RyZXNzL2ltcG9ydC1zeW50YXguanMKaW5kZXggMjVhM2ZiYmY2
ODY2MTU3YjE3NWRhOGVkYWU3OGMwZTllMjgxNWMyNi4uOTRlMDg1MGY3YjI4OTJhODYxYWQ1ZDBm
NDUwZmY0NGY5MTcyNGQyMSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvaW1wb3J0LXN5bnRh
eC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9pbXBvcnQtc3ludGF4LmpzCkBAIC0yOSw3ICsyOSw3
IEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3RTeW50YXgoc2NyaXB0LCBtZXNzYWdlKSB7CiAKIHRlc3RT
eW50YXhFcnJvcihgaW1wb3J0KWAsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnKScu
IGltcG9ydCBjYWxsIGV4cGVjdHMgZXhhY3RseSBvbmUgYXJndW1lbnQuYCk7CiB0ZXN0U3ludGF4
RXJyb3IoYG5ldyBpbXBvcnQoYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIG5ldyB3aXRoIGlt
cG9ydC5gKTsKLXRlc3RTeW50YXhFcnJvcihgaW1wb3J0LmhlbGxvKClgLCBgU3ludGF4RXJyb3I6
IFVuZXhwZWN0ZWQgaWRlbnRpZmllciAnaGVsbG8nLiAiaW1wb3J0LiIgY2FuIG9ubHkgZm9sbG93
ZWQgd2l0aCBtZXRhLmApOwordGVzdFN5bnRheEVycm9yKGBpbXBvcnQuaGVsbG8oKWAsIGBTeW50
YXhFcnJvcjogVW5leHBlY3RlZCBpZGVudGlmaWVyICdoZWxsbycuICJpbXBvcnQuIiBjYW4gb25s
eSBiZSBmb2xsb3dlZCB3aXRoIG1ldGEuYCk7CiB0ZXN0U3ludGF4RXJyb3IoYGltcG9ydFtgLCBg
U3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJ1snLiBpbXBvcnQgY2FsbCBleHBlY3RzIGV4
YWN0bHkgb25lIGFyZ3VtZW50LmApOwogdGVzdFN5bnRheEVycm9yKGBpbXBvcnQ8YCwgYFN5bnRh
eEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICc8Jy4gaW1wb3J0IGNhbGwgZXhwZWN0cyBleGFjdGx5
IG9uZSBhcmd1bWVudC5gKTsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVzb3VyY2Vz
L3NoYWRvdy1yZWFsbS1leGFtcGxlLW1vZHVsZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3Jlc291cmNl
cy9zaGFkb3ctcmVhbG0tZXhhbXBsZS1tb2R1bGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI0ZjU3OWMyZjlh
NmRjMjM5MGJlMmZhMDU1Y2U2OGQ2ODAzMzBmMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL3Jlc291cmNlcy9zaGFkb3ctcmVhbG0tZXhhbXBsZS1tb2R1bGUuanMKQEAgLTAsMCAr
MSwyNSBAQAordmFyIGNhbGxDb3VudCA9IDA7CisKK2Z1bmN0aW9uIHB1dEluR2xvYmFsKGtleSwg
dmFsKSB7CisgICAgY2FsbENvdW50Kys7CisgICAgZ2xvYmFsVGhpcy5rZXkgPSB2YWw7Cit9CisK
K2Z1bmN0aW9uIGdldEZyb21HbG9iYWwoa2V5KSB7CisgICAgY2FsbENvdW50Kys7CisgICAgcmV0
dXJuIGdsb2JhbFRoaXMua2V5OworfQorCit2YXIgYW5PYmplY3QgPSBuZXcgT2JqZWN0KCk7CisK
K2Z1bmN0aW9uIGdldEFuT2JqZWN0KCkgeworICAgIGNhbGxDb3VudCsrOworICAgIHJldHVybiBh
bk9iamVjdDsKK30KKworZnVuY3Rpb24gZ2V0Q2FsbENvdW50KCkgeworICAgIHJldHVybiBjYWxs
Q291bnQ7Cit9CisKK3ZhciBhbnN3ZXIgPSA2OworZXhwb3J0IHsgYW5PYmplY3QsIGFuc3dlciwg
Z2V0Q2FsbENvdW50LCBnZXRGcm9tR2xvYmFsLCBnZXRBbk9iamVjdCwgcHV0SW5HbG9iYWwgfTsK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3NoYWRvdy1yZWFsbS1ldmFsdWF0ZS5qcyBiL0pT
VGVzdHMvc3RyZXNzL3NoYWRvdy1yZWFsbS1ldmFsdWF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDM2MDMx
MTliODIyMmQ5MDNkZmU1YjYzNWIyY2Y4ODdmYzc2ZTVmCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3Mvc2hhZG93LXJlYWxtLWV2YWx1YXRlLmpzCkBAIC0wLDAgKzEsMTUzIEBACisv
L0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlU2hhZG93UmVhbG09MSIpCisKK2Z1bmN0aW9uIHNob3Vs
ZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0
dWFsfWApOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUsIGFzc2Vy
dGlvbkZuKSB7CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisKKyAgICBpZiAoIShl
cnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhw
ZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0gYnV0IGdvdCAke2Vycm9yLm5hbWV9YCk7CisKKyAgICBh
c3NlcnRpb25GbihlcnJvcik7Cit9CisKKy8vIGJhc2ljIGV2YWx1YXRpb24gYW5kIHN0YXRlIHNl
dHRpbmcKK3sKKyAgICBsZXQgcmVhbG0gPSBuZXcgU2hhZG93UmVhbG0oKTsKKyAgICBsZXQgb3Ro
ZXJSZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOworCisgICAgc2hvdWxkQmUocmVhbG0uZXZhbHVh
dGUoIjEiKSwgMSk7CisgICAgdmFyIHggPSAyOworICAgIHJlYWxtLmV2YWx1YXRlKCJ2YXIgeCA9
IDEiKTsKKyAgICBzaG91bGRCZShyZWFsbS5ldmFsdWF0ZSgieCIpLCAxKTsKKyAgICBzaG91bGRC
ZSh4LCAyKTsKKworICAgIC8vIHNjb3BlIGlzbid0IHNoYXJlZCBhY3Jvc3MgcmVhbG1zCisgICAg
c2hvdWxkQmUob3RoZXJSZWFsbS5ldmFsdWF0ZSgiZ2xvYmFsVGhpcy54IiksIHVuZGVmaW5lZCk7
Cit9CisKKy8vIGFjY2Vzc2luZyBgZ2xvYmFsVGhpc2Agd2l0aGluIGFuZCBvdXRzaWRlIG9mIGEg
c2hhZG93IHJlYWxtCit7CisgICAgbGV0IHJlYWxtID0gbmV3IFNoYWRvd1JlYWxtKCk7CisgICAg
Z2xvYmFsVGhpcy5oaSA9IDY7CisKKyAgICBzaG91bGRCZShyZWFsbS5ldmFsdWF0ZSgiZ2xvYmFs
VGhpcy5oaSIpLCB1bmRlZmluZWQpOworCisgICAgcmVhbG0uZXZhbHVhdGUoImdsb2JhbFRoaXMu
aGkgPSAnZmFsYSBhbWlnbyciKTsKKworICAgIHNob3VsZEJlKHJlYWxtLmV2YWx1YXRlKCJnbG9i
YWxUaGlzLmhpIiksICJmYWxhIGFtaWdvIik7CisgICAgc2hvdWxkQmUoZ2xvYmFsVGhpcy5oaSwg
Nik7Cit9CisKKy8vIGVuc3VyZSB0aGF0IGVycm9ycyB0aHJvd24gaXNuJ3QgYXNzb2NpYXRlZCB3
aXRoIHRoZSBzaGFkb3cgcmVhbG0ncyBnbG9iYWwgb2JqZWN0Cit7CisgICAgbGV0IHJlYWxtID0g
bmV3IFNoYWRvd1JlYWxtKCk7CisgICAgc2hvdWxkVGhyb3coCisgICAgICAoKSA9PiB7IHJlYWxt
LmV2YWx1YXRlKCIuLiIpOyB9LAorICAgICAgU3ludGF4RXJyb3IsCisgICAgICAoZXJyKSA9PiB7
CisgICAgICAgICAgc2hvdWxkQmUoJC5nbG9iYWxPYmplY3RGb3IoZXJyKSwgZ2xvYmFsVGhpcyk7
CisgICAgICAgICAgc2hvdWxkQmUoU3RyaW5nKGVyciksIGBTeW50YXhFcnJvcjogVW5leHBlY3Rl
ZCB0b2tlbiAnLidgKTsKKyAgICAgIH0pOworfQorCisvLyBlbnN1cmUgdGhhdCBlcnJvcnMgdGhy
b3duIGRvbid0IGNhcnJ5IGluZm9ybWF0aW9uIGZyb20gdGhlIHNoYWRvdyByZWFsbQoreworICAg
IGxldCByZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOworICAgIHNob3VsZFRocm93KAorICAgICAg
KCkgPT4geyByZWFsbS5ldmFsdWF0ZSgidGhyb3cgbmV3IEVycm9yKCdzZWNyZXQnKSIpOyB9LAor
ICAgICAgVHlwZUVycm9yLAorICAgICAgKGVycikgPT4geworICAgICAgICAgIHNob3VsZEJlKCQu
Z2xvYmFsT2JqZWN0Rm9yKGVyciksIGdsb2JhbFRoaXMpOworICAgICAgICAgIHNob3VsZEJlKFN0
cmluZyhlcnIpLCAiVHlwZUVycm9yOiBFcnJvciBlbmNvdW50ZXJlZCBkdXJpbmcgZXZhbHVhdGlv
biIpOworICAgICAgfSk7Cit9CisKKy8vIHdyYXBwZWQgZnVuY3Rpb25zIHByb3RlY3QgdGhlIHNo
YWRvdyByZWFsbQoreworICAgIGxldCByZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOworICAgIGxl
dCB3cmFwcGVkSW52b2tlQW5kQWRkID0gcmVhbG0uZXZhbHVhdGUoImZ1bmN0aW9uIGludm9rZUFu
ZEFkZCh4Rm4sIHlGbikgeyByZXR1cm4geEZuKCkgKyB5Rm4oKTsgfTsgaW52b2tlQW5kQWRkIik7
CisgICAgc2hvdWxkQmUod3JhcHBlZEludm9rZUFuZEFkZCgoKSA9PiB7IHJldHVybiAxIH0sICgp
ID0+IHsgcmV0dXJuIDIgfSksIDMpOworICAgIHNob3VsZEJlKCQuZ2xvYmFsT2JqZWN0Rm9yKHdy
YXBwZWRJbnZva2VBbmRBZGQpLCBnbG9iYWxUaGlzKTsKKworICAgIC8vIG5hbWUgYW5kIGxlbmd0
aCBwcm9wZXJ0aWVzIGZyb20gd3JhcHBlZCBmdW5jdGlvbiBhcmUgYWJzZW50CisgICAgc2hvdWxk
QmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3cmFwcGVkSW52b2tlQW5kQWRkLCAi
bGVuZ3RoIiksIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcih3cmFwcGVkSW52b2tlQW5kQWRkLCAibmFtZSIpLCB1bmRlZmluZWQpOworCisg
ICAgLy8gY2FuJ3QgcGFzcyBvYmplY3RzIGludG8gYSBzaGFkb3cgcmVhbG0td3JhcHBlZCBmdW5j
dGlvbgorICAgIGxldCBudW1iZXJPYmogPSB7IHZhbHVlT2YoKSB7IHJldHVybiAtMSB9IH07Cisg
ICAgc2hvdWxkVGhyb3coCisgICAgICAoKSA9PiB7IHdyYXBwZWRJbnZva2VBbmRBZGQobnVtYmVy
T2JqLCAxKTsgfSwKKyAgICAgIFR5cGVFcnJvciwKKyAgICAgIChlcnIpID0+IHsKKyAgICAgICAg
ICBzaG91bGRCZSgkLmdsb2JhbE9iamVjdEZvcihlcnIpLCBnbG9iYWxUaGlzKTsKKyAgICAgICAg
ICBzaG91bGRCZShTdHJpbmcoZXJyKSwgIlR5cGVFcnJvcjogdmFsdWUgcGFzc2luZyBiZXR3ZWVu
IHJlYWxtcyBtdXN0IGJlIGNhbGxhYmxlIG9yIHByaW1pdGl2ZSIpOworICAgICAgfSk7Cit9CisK
K3sKKyAgICBsZXQgcmVhbG0gPSBuZXcgU2hhZG93UmVhbG0oKTsKKyAgICAvLyBjYW4ndCBjYWxs
IGBldmFsdWF0ZWAgb24gYSBub24gc2hhZG93IHJlYWxtCisgICAgbGV0IG5vdFJlYWxtID0ge307
CisgICAgc2hvdWxkVGhyb3coCisgICAgICAoKSA9PiB7IHJlYWxtLmV2YWx1YXRlLmNhbGwobm90
UmVhbG0sICcxJyk7IH0sCisgICAgICBUeXBlRXJyb3IsCisgICAgICAoZXJyKSA9PiB7IHNob3Vs
ZEJlKCQuZ2xvYmFsT2JqZWN0Rm9yKGVyciksIGdsb2JhbFRoaXMpOyB9CisgICAgKTsKK30KKwor
Ly8gdHJpZ2dlciBKSVQKK3sKKyAgICBmdW5jdGlvbiBkb0V2YWwocmVhbG0sIHMpCisgICAgewor
ICAgICAgICByZXR1cm4gcmVhbG0uZXZhbHVhdGUocyk7CisgICAgfQorCisgICAgbm9JbmxpbmUo
ZG9FdmFsKTsKKworICAgIGxldCByZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOworICAgIHJlYWxt
LmV2YWx1YXRlKCJnbG9iYWxUaGlzLnNlY3JldCA9IDE7Iik7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDAwMDsgKytpKQorICAgICAgICBzaG91bGRCZShkb0V2YWwocmVhbG0sICc0MicpLCA0
Mik7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgbGV0
IGYgPSBkb0V2YWwocmVhbG0sICcoeCkgPT4geyByZXR1cm4geCgpICsgZ2xvYmFsVGhpcy5zZWNy
ZXQ7IH0nKTsKKyAgICAgICAgc2hvdWxkQmUoJC5nbG9iYWxPYmplY3RGb3IoZiksIGdsb2JhbFRo
aXMpOworICAgICAgICBzaG91bGRCZShmKCgpID0+IHsgcmV0dXJuIDQxOyB9KSwgNDIpOworICAg
IH0KKyAgICAvLyAocG90ZW50aWFsKSBpbmxpbmluZyBvZiB3cmFwcGVkIGZ1bmN0aW9uIHVzZXMg
Y29ycmVjdCBnbG9iYWwgb2JqZWN0CisgICAgbGV0IGYgPSBkb0V2YWwocmVhbG0sICcoeCkgPT4g
eyByZXR1cm4geCgpICsgZ2xvYmFsVGhpcy5zZWNyZXQ7IH0nKTsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgc2hvdWxkQmUoJC5nbG9iYWxPYmplY3RGb3Io
ZiksIGdsb2JhbFRoaXMpOworICAgICAgICBzaG91bGRCZShmKCgpID0+IHsgcmV0dXJuIDQxOyB9
KSwgNDIpOworICAgIH0KKyAgICAvLyAocG90ZW50aWFsKSBpbmxpbmluZyBpbnNpZGUgYSByZWFs
bSB1c2VzIGNvcnJlY3QgZ2xvYmFsIG9iamVjdAorICAgIGxldCBsb29wSW5zaWRlID0gZG9FdmFs
KHJlYWxtLCAnKHgpID0+IHsgbGV0IGFjYyA9IDA7IGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7
ICsraSkgeyBhY2MgKz0geCgpOyB9OyByZXR1cm4gYWNjOyB9Jyk7CisgICAgZ2xvYmFsVGhpcy5z
ZWNyZXQgPSAtMTsKKyAgICBzaG91bGRCZShsb29wSW5zaWRlKCgpID0+IHsgcmV0dXJuIGdsb2Jh
bFRoaXMuc2VjcmV0OyB9KSwgLTEwMDAwKTsKK30KKworLy8gZXZhbHVhdGUgc3BlY3MKK3sKKyAg
ICBzaG91bGRCZSh0eXBlb2YgU2hhZG93UmVhbG0ucHJvdG90eXBlLmV2YWx1YXRlLCAiZnVuY3Rp
b24iKTsKKworICAgIGxldCBldmFsdWF0ZU5hbWUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKFNoYWRvd1JlYWxtLnByb3RvdHlwZS5ldmFsdWF0ZSwgIm5hbWUiKTsKKyAgICBzaG91
bGRCZShldmFsdWF0ZU5hbWUudmFsdWUsICJldmFsdWF0ZSIpOworICAgIHNob3VsZEJlKGV2YWx1
YXRlTmFtZS5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoZXZhbHVhdGVOYW1lLndy
aXRhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoZXZhbHVhdGVOYW1lLmNvbmZpZ3VyYWJsZSwg
dHJ1ZSk7CisKKyAgICBsZXQgZXZhbHVhdGVMZW5ndGggPSBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKFNoYWRvd1JlYWxtLnByb3RvdHlwZS5ldmFsdWF0ZSwgImxlbmd0aCIpOworICAg
IHNob3VsZEJlKGV2YWx1YXRlTGVuZ3RoLnZhbHVlLCAxKTsKKyAgICBzaG91bGRCZShldmFsdWF0
ZUxlbmd0aC5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoZXZhbHVhdGVMZW5ndGgu
d3JpdGFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShldmFsdWF0ZUxlbmd0aC5jb25maWd1cmFi
bGUsIHRydWUpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc2hhZG93LXJlYWxtLWlt
cG9ydC12YWx1ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3NoYWRvdy1yZWFsbS1pbXBvcnQtdmFsdWUu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjQzY2Q4ZTYyM2YxZjZkMTM5MzFjN2I5ZGI4ZGRlMzA4NDYwOGE4NQot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3NoYWRvdy1yZWFsbS1pbXBvcnQtdmFs
dWUuanMKQEAgLTAsMCArMSwxNDggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VTaGFkb3dS
ZWFsbT0xIikKKwordmFyIGFib3J0ID0gJHZtLmFib3J0OworCitmdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH1g
KTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlKSB7CisgICAgbGV0
IGVycm9yOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgIGVycm9yID0gZTsKKyAgICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVy
cm9yVHlwZSkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUu
bmFtZX0hIGdvdCAke2Vycm9yLm5hbWV9YCk7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHNob3VsZFRo
cm93QXN5bmMoZnVuYywgZXJyb3JUeXBlKSB7CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7Cisg
ICAgICAgIGF3YWl0IGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0g
ZTsKKyAgICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0hIGdvdCAke2Vy
cm9yLm5hbWV9IHdpdGggbWVzc2FnZSAke2Vycm9yLm1lc3NhZ2V9YCk7Cit9CisKKyhhc3luYyBm
dW5jdGlvbiAoKSB7CisgICAgY29uc3QgaW1wb3J0UGF0aCA9ICIuL3Jlc291cmNlcy9zaGFkb3ct
cmVhbG0tZXhhbXBsZS1tb2R1bGUuanMiOworICAgIGNvbnN0IHsgYW5zd2VyLCBnZXRDYWxsQ291
bnQsIHB1dEluR2xvYmFsLCBnZXRGcm9tR2xvYmFsLCBnZXRBbk9iamVjdCB9ID0gYXdhaXQgaW1w
b3J0KGltcG9ydFBhdGgpOworICAgIGNvbnN0IG91dGVyQW5zd2VyID0gYW5zd2VyOworICAgIGNv
bnN0IG91dGVyR2V0Q2FsbENvdW50ID0gZ2V0Q2FsbENvdW50OworICAgIGNvbnN0IG91dGVyUHV0
SW5HbG9iYWwgPSBwdXRJbkdsb2JhbDsKKyAgICBjb25zdCBvdXRlckdldEZyb21HbG9iYWwgPSBn
ZXRGcm9tR2xvYmFsOworICAgIGNvbnN0IG91dGVyR2V0QW5PYmplY3QgPSBnZXRBbk9iamVjdDsK
KworICAgIHsKKyAgICAgICAgbGV0IHJlYWxtID0gbmV3IFNoYWRvd1JlYWxtKCk7CisKKyAgICAg
ICAgLy8gdXBkYXRlIGxvY2FsIG1vZHVsZSBzdGF0ZSArIGNoZWNrIGl0CisgICAgICAgIHNob3Vs
ZEJlKG91dGVyR2V0Q2FsbENvdW50KCksIDApOworICAgICAgICBvdXRlckdldEFuT2JqZWN0KCk7
CisgICAgICAgIHNob3VsZEJlKG91dGVyR2V0Q2FsbENvdW50KCksIDEpOworICAgICAgICAvLyB1
cGRhdGUgcmVhbG0gbW9kdWxlIHN0YXRlICsgY2hlY2sgaXQKKyAgICAgICAgbGV0IGlubmVyR2V0
Q2FsbENvdW50ID0gYXdhaXQgcmVhbG0uaW1wb3J0VmFsdWUoaW1wb3J0UGF0aCwgImdldENhbGxD
b3VudCIpOworICAgICAgICBsZXQgaW5uZXJQdXRJbkdsb2JhbCA9IGF3YWl0IHJlYWxtLmltcG9y
dFZhbHVlKGltcG9ydFBhdGgsICJwdXRJbkdsb2JhbCIpOworICAgICAgICBzaG91bGRCZShpbm5l
ckdldENhbGxDb3VudCgpLCAwKTsKKyAgICAgICAgaW5uZXJQdXRJbkdsb2JhbCgic29tZXRoaW5n
IiwgInJhbmRvbSIpOworICAgICAgICBzaG91bGRCZShpbm5lckdldENhbGxDb3VudCgpLCAxKTsK
KyAgICAgICAgLy8gcmUtaW1wb3J0aW5nIHRoZSBtb2R1bGUgaW50byB0aGUgcmVhbG0gZG9lc24n
dCByZWxvYWQgdGhlIG1vZHVsZQorICAgICAgICBpbm5lckdldENhbGxDb3VudCA9IGF3YWl0IHJl
YWxtLmltcG9ydFZhbHVlKGltcG9ydFBhdGgsICJnZXRDYWxsQ291bnQiKTsKKyAgICAgICAgc2hv
dWxkQmUoaW5uZXJHZXRDYWxsQ291bnQoKSwgMSk7CisgICAgICAgIC8vIHRoZSAob3V0ZXIpIGxv
Y2FsIG1vZHVsZSBzdGF0ZSBzdGF5cyBpbnRhY3QKKyAgICAgICAgc2hvdWxkQmUob3V0ZXJHZXRD
YWxsQ291bnQoKSwgMSk7CisKKyAgICAgICAgLy8gb25lIGNhbiBpbXBvcnRlZCBwcmltaXRpdmUv
Y2FsbGFibGUgdmFyaWFibGVzIGp1c3QgZmluZQorICAgICAgICAvLyBzaG91bGRCZShpbm5lckFu
c3dlciwgb3V0ZXJBbnN3ZXIpOworICAgICAgICBsZXQgaW5uZXJBbnN3ZXIgPSBhd2FpdCByZWFs
bS5pbXBvcnRWYWx1ZShpbXBvcnRQYXRoLCAiYW5zd2VyIik7CisgICAgICAgIHNob3VsZEJlKGlu
bmVyQW5zd2VyLCBvdXRlckFuc3dlcik7CisKKyAgICAgICAgLy8gaW1wb3J0ZWQgdmFyaWFibGVz
IGFyZSBjaGVja2VkIGZvciBwcmltdGl2ZS9jYWxsYWJsZS1uZXNzCisgICAgICAgIGF3YWl0IHNo
b3VsZFRocm93QXN5bmMoYXN5bmMgKCkgPT4geyBsZXQgeCA9IGF3YWl0IHJlYWxtLmltcG9ydFZh
bHVlKGltcG9ydFBhdGgsICJhbk9iamVjdCIpOyB9LCBUeXBlRXJyb3IpOworCisgICAgICAgIC8v
IGltcG9ydGluZyBub24tZXhpc3RlbnQgcmVmIGZhaWxzCisgICAgICAgIGF3YWl0IHNob3VsZFRo
cm93QXN5bmMoYXN5bmMgKCkgPT4geyBsZXQgeCA9IGF3YWl0IHJlYWxtLmltcG9ydFZhbHVlKGlt
cG9ydFBhdGgsICJub3RoaW5nIik7IH0sIFR5cGVFcnJvcik7CisKKyAgICAgICAgLy8gaW1wb3J0
aW5nIGZyb20gbm9uLWV4aXN0ZW50IGZpbGUgZmFpbHMKKyAgICAgICAgYXdhaXQgc2hvdWxkVGhy
b3dBc3luYyhhc3luYyAoKSA9PiB7IGxldCB4ID0gYXdhaXQgcmVhbG0uaW1wb3J0VmFsdWUoInJh
bmRvbSIsICJub3RoaW5nIik7IH0sIFR5cGVFcnJvcik7CisKKyAgICAgICAgLy8gd2UgY2FuIGlt
cG9ydCBmdW5jdGlvbnMgdGhyb3VnaCBhbiBpbm5lciByZWFsbSBmb3IgdXNlIGluIHRoZSBvdXRl
cgorICAgICAgICBsZXQgaW5uZXJHZXRGcm9tR2xvYmFsID0gYXdhaXQgcmVhbG0uaW1wb3J0VmFs
dWUoaW1wb3J0UGF0aCwgImdldEZyb21HbG9iYWwiKTsKKyAgICAgICAgaW5uZXJQdXRJbkdsb2Jh
bCgic2FsdXRhdGlvbiIsICJzYXJhdmEiKTsKKyAgICAgICAgc2hvdWxkQmUoaW5uZXJHZXRGcm9t
R2xvYmFsKCJzYWx1dGF0aW9uIiksICJzYXJhdmEiKTsKKworICAgICAgICAvLyBpbm5lciBnbG9i
YWwgc3RhdGUgaXMgdW5jaGFuZ2VkIGJ5IG91dGVyIGdsb2JhbCBzdGF0ZSBjaGFuZ2UKKyAgICAg
ICAgb3V0ZXJQdXRJbkdsb2JhbCgic2FsdXRhdGlvbiIsICJoZWxsbyB3b3JsZCEiKTsKKyAgICAg
ICAgc2hvdWxkQmUob3V0ZXJHZXRGcm9tR2xvYmFsKCJzYWx1dGF0aW9uIiksICJoZWxsbyB3b3Js
ZCEiKTsKKyAgICAgICAgc2hvdWxkQmUoaW5uZXJHZXRGcm9tR2xvYmFsKCJzYWx1dGF0aW9uIiks
ICJzYXJhdmEiKTsKKworICAgICAgICAvLyB3cmFwcGVkIGZ1bmN0aW9ucyBjaGVjayBhcmd1bWVu
dHMgZm9yIHByaW1pdGl2ZS9jYWxsYWJsZS1uZXNzCisgICAgICAgIHNob3VsZFRocm93KCgpID0+
IHsgaW5uZXJQdXRJbkdsb2JhbCgidHJlYXN1cmUiLCBuZXcgT2JqZWN0KCkpOyB9LCBUeXBlRXJy
b3IpOworCisgICAgICAgIC8vIGltcG9ydGVkIGZ1bmN0aW9ucyBhcmUgd3JhcHBlZCB3aXRoIGNv
cnJlY3QgcmV0dXJuIHZhbHVlIGNoZWNrcworICAgICAgICBsZXQgZ2V0QW5PYmplY3RGbiA9IGF3
YWl0IHJlYWxtLmltcG9ydFZhbHVlKGltcG9ydFBhdGgsICJnZXRBbk9iamVjdCIpOworICAgICAg
ICBzaG91bGRUaHJvdygoKSA9PiB7IGdldEFuT2JqZWN0Rm4oKTsgfSwgVHlwZUVycm9yKTsKKwor
ICAgICAgICAvLyB0aHJlYWQgYSBmdW5jdGlvbiBpbiBhbmQgb3V0IG9mIGEgcmVhbG0gdG8gd3Jh
cCBpdCB1cAorICAgICAgICBpbm5lclB1dEluR2xvYmFsKCJvdXRlci1yZWFsbS1wdXQiLCBvdXRl
clB1dEluR2xvYmFsKTsKKyAgICAgICAgd3JhcHBlZE91dGVyUHV0SW5HbG9iYWwgPSBpbm5lckdl
dEZyb21HbG9iYWwoIm91dGVyLXJlYWxtLXB1dCIpOworCisgICAgICAgIC8vIGl0IHN0aWxsIG1h
bmlwdWF0ZXMgdGhlIGNvcnJlY3QgZ2xvYmFsIG9iamVjdCBzdGF0ZQorICAgICAgICB3cmFwcGVk
T3V0ZXJQdXRJbkdsb2JhbCgidHJlYXN1cmUiLCAic2hpbnkgdGluIHNjcmFwIik7CisgICAgICAg
IHNob3VsZEJlKG91dGVyR2V0RnJvbUdsb2JhbCgidHJlYXN1cmUiKSwgInNoaW55IHRpbiBzY3Jh
cCIpOworCisgICAgICAgIC8vIHdyYXBwZWQgZnVuY3Rpb25zIGNoZWNrIGFyZ3VtZW50cyBmb3Ig
cHJpbWl0aXZlL2NhbGxhYmxlLW5lc3MKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyB3cmFw
cGVkT3V0ZXJQdXRJbkdsb2JhbCgidHJlYXN1cmUiLCBuZXcgT2JqZWN0KCkpOyB9LCBUeXBlRXJy
b3IpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IHdyYXBwZWRPdXRlclB1dEluR2xvYmFs
KG5ldyBPYmplY3QoKSwgInNoaW55IHRpbiBzY3JhcCIpOyB9LCBUeXBlRXJyb3IpOworCisgICAg
ICAgIC8vIG11c3QgYmUgY2FsbGVkIG9uIGEgU2hhZG93UmVhbG0KKyAgICAgICAgbGV0IG5vdFJl
YWxtID0ge307CisgICAgICAgIHNob3VsZFRocm93KAorICAgICAgICAgICgpID0+IHsgcmVhbG0u
aW1wb3J0VmFsdWUuY2FsbChub3RSZWFsbSwgaW1wb3J0UGF0aCwgImFuc3dlciIpOyB9LAorICAg
ICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAoZXJyKSA9PiB7IHNob3VsZEJlKCQuZ2xvYmFs
T2JqZWN0Rm9yKGVyciksIGdsb2JhbFRoaXMpOyB9CisgICAgICAgICk7CisgICAgfQorCisgICAg
Ly8gdHJpZ2dlciBKSVQKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIGRvSW1wb3J0KHJlYWxtLCBz
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gcmVhbG0uaW1wb3J0VmFsdWUoaW1wb3J0
UGF0aCwgcyk7CisgICAgICAgIH0KKworICAgICAgICBub0lubGluZShkb0ltcG9ydCk7CisKKyAg
ICAgICAgbGV0IHJlYWxtID0gbmV3IFNoYWRvd1JlYWxtKCk7CisgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGRv
SW1wb3J0KHJlYWxtLCAiZ2V0Q2FsbENvdW50Iik7CisgICAgICAgICAgICBzaG91bGRCZShyZXN1
bHQoKSwgMCk7CisgICAgICAgIH0KKyAgICB9Cit9KCkpLmNhdGNoKChlcnJvcikgPT4geworICAg
IHByaW50KFN0cmluZyhlcnJvcikpOworICAgIGFib3J0KCk7Cit9KTsKKworeworICAgIHNob3Vs
ZEJlKHR5cGVvZiBTaGFkb3dSZWFsbS5wcm90b3R5cGUuaW1wb3J0VmFsdWUsICJmdW5jdGlvbiIp
OworCisgICAgbGV0IGltcG9ydFZhbHVlTmFtZSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoU2hhZG93UmVhbG0ucHJvdG90eXBlLmltcG9ydFZhbHVlLCAibmFtZSIpOworICAgIHNo
b3VsZEJlKGltcG9ydFZhbHVlTmFtZS52YWx1ZSwgImltcG9ydFZhbHVlIik7CisgICAgc2hvdWxk
QmUoaW1wb3J0VmFsdWVOYW1lLmVudW1lcmFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShpbXBv
cnRWYWx1ZU5hbWUud3JpdGFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShpbXBvcnRWYWx1ZU5h
bWUuY29uZmlndXJhYmxlLCB0cnVlKTsKKworICAgIGxldCBpbXBvcnRWYWx1ZUxlbmd0aCA9IE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU2hhZG93UmVhbG0ucHJvdG90eXBlLmltcG9y
dFZhbHVlLCAibGVuZ3RoIik7CisgICAgc2hvdWxkQmUoaW1wb3J0VmFsdWVMZW5ndGgudmFsdWUs
IDIpOworICAgIHNob3VsZEJlKGltcG9ydFZhbHVlTGVuZ3RoLmVudW1lcmFibGUsIGZhbHNlKTsK
KyAgICBzaG91bGRCZShpbXBvcnRWYWx1ZUxlbmd0aC53cml0YWJsZSwgZmFsc2UpOworICAgIHNo
b3VsZEJlKGltcG9ydFZhbHVlTGVuZ3RoLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7Cit9CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9zaGFkb3ctcmVhbG0uanMgYi9KU1Rlc3RzL3N0cmVzcy9zaGFk
b3ctcmVhbG0uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDYyYjg4YzZlMzk1OTk1NjM0ZDdlZDhlZjllOTlmMmMz
ZmQ4ODZhNQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3NoYWRvdy1yZWFsbS5q
cwpAQCAtMCwwICsxLDM2IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlU2hhZG93UmVhbG09
MSIpCisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAke2V4
cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfWApOworfQorCisvLyBzaGFkb3cgcmVhbG0gc3BlY3MK
K3sKKyAgICBsZXQgc2hhZG93UmVhbG1Qcm9wID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcih0aGlzLCAiU2hhZG93UmVhbG0iKTsKKyAgICBzaG91bGRCZShzaGFkb3dSZWFsbVByb3Au
ZW51bWVyYWJsZSwgZmFsc2UpOworICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtUHJvcC53cml0YWJs
ZSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1Qcm9wLmNvbmZpZ3VyYWJsZSwgdHJ1
ZSk7CisKKyAgICBsZXQgc2hhZG93UmVhbG1FdmFsdWF0ZSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoU2hhZG93UmVhbG0ucHJvdG90eXBlLCAiZXZhbHVhdGUiKTsKKyAgICBzaG91
bGRCZShzaGFkb3dSZWFsbUV2YWx1YXRlLmVudW1lcmFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRC
ZShzaGFkb3dSZWFsbUV2YWx1YXRlLndyaXRhYmxlLCB0cnVlKTsKKyAgICBzaG91bGRCZShzaGFk
b3dSZWFsbUV2YWx1YXRlLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7CisKKyAgICBsZXQgc2hhZG93UmVh
bG1JbXBvcnRWYWx1ZSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU2hhZG93UmVh
bG0ucHJvdG90eXBlLCAiaW1wb3J0VmFsdWUiKTsKKyAgICBzaG91bGRCZShzaGFkb3dSZWFsbUlt
cG9ydFZhbHVlLmVudW1lcmFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShzaGFkb3dSZWFsbUlt
cG9ydFZhbHVlLndyaXRhYmxlLCB0cnVlKTsKKyAgICBzaG91bGRCZShzaGFkb3dSZWFsbUltcG9y
dFZhbHVlLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7CisKKyAgICBsZXQgc2hhZG93UmVhbG1OYW1lID0g
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihTaGFkb3dSZWFsbSwgIm5hbWUiKTsKKyAg
ICBzaG91bGRCZShzaGFkb3dSZWFsbU5hbWUudmFsdWUsICJTaGFkb3dSZWFsbSIpOworICAgIHNo
b3VsZEJlKHNoYWRvd1JlYWxtTmFtZS5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUo
c2hhZG93UmVhbG1OYW1lLndyaXRhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoc2hhZG93UmVh
bG1OYW1lLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7CisKKyAgICBsZXQgc2hhZG93UmVhbG1MZW5ndGgg
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFNoYWRvd1JlYWxtLCAibGVuZ3RoIik7
CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1MZW5ndGgudmFsdWUsIDApOworICAgIHNob3VsZEJl
KHNoYWRvd1JlYWxtTGVuZ3RoLmVudW1lcmFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShzaGFk
b3dSZWFsbUxlbmd0aC53cml0YWJsZSwgZmFsc2UpOworICAgIHNob3VsZEJlKHNoYWRvd1JlYWxt
TGVuZ3RoLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7Cit9Cg==
</data>
<flag name="commit-queue"
          id="462477"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438947</attachid>
            <date>2021-09-22 07:21:12 -0700</date>
            <delta_ts>2021-09-22 07:58:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230602-20210922162110.patch</filename>
            <type>text/plain</type>
            <size>84744</size>
            <attacher name="Phillip Mates">pmates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyODczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YTU4NDBhM2I5N2M0NTAxZDA4OTc4YTYyMTA2YzUxZjQwYjk5MzYzLi42MWU0ZTliMjNiYzA2Yzdi
YjQwZjhiMmFjYWY1ZWZlYzQwNGQ1MWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MCBAQAorMjAyMS0wOS0yMSAgUGhpbGxpcCBNYXRlcyAgPHBtYXRlc0BpZ2FsaWEuY29t
PgorCisgICAgICAgIHNoYWRvdyByZWFsbXMgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDYwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGF0aW9uIG9mIHRoZSBT
aGFkb3cgUmVhbG1zIHByb3Bvc2FsIChzdGFnZSAzIGluIFRDMzkpIFsxXQorCisgICAgICAgIE1h
aW4gQVBJcyBhZGRlZCBhcmUKKyAgICAgICAgIC0gYG5ldyBTaGFkb3dSZWFsbSgpYAorICAgICAg
ICAgICBjcmVhdGVzIGFuIG9iamVjdCB0aGF0IGhhcyBpdHMgb3duIGdsb2JhbCBvYmplY3QgYW5k
IG1vZHVsZSBncmFwaC4KKyAgICAgICAgIC0gU2hhZG93UmVhbG0ucHJvdG90eXBlLmV2YWx1YXRl
KHNvdXJjZVRleHQpCisgICAgICAgICAgIHRoaXMgYWxsb3dzIGZvciBldmFsdWF0aW5nIGNvZGUg
aW4gdGhlIGNvbnRleHQgb2YgdGhlIHJlYWxtLCB3aGljaAorICAgICAgICAgICBoYXMgaXRzIG93
biBtb2R1bGUgZ3JhcGggYW5kIGdsb2JhbCBvYmplY3QuCisgICAgICAgICAtIFNoYWRvd1JlYWxt
LnByb3RvdHlwZS5pbXBvcnRWYWx1ZShzcGVjaWZpZXIsIGV4cG9ydE5hbWUpCisgICAgICAgICAg
IHRoaXMgYWxsb3dzIGltcG9ydGluZyBtb2R1bGUgZXhwb3J0cyBpbiB0aGUgdGhlIGNvbnRleHQg
b2YgdGhlCisgICAgICAgICAgIHJlYWxtLCB3aGljaCBoYXMgaXRzIG93biBtb2R1bGUgZ3JhcGgg
YW5kIGdsb2JhbCBvYmplY3QuCisKKyAgICAgICAgVGhlIG1haW4gZGV0YWlsIG9mIHRoZSBTaGFk
b3cgUmVhbG0gaW1wbGVtZW50YXRpb24gaXMgdGhhdCB2YWx1ZXMKKyAgICAgICAgcGFzc2VkIGJl
dHdlZW4gcmVhbG1zIG11c3QgYmUgZWl0aGVyIHByaW1pdGl2ZXMgb3Igd3JhcHBlZCBjYWxsYWJs
ZXMuCisgICAgICAgIFdyYXBwZWQgY2FsbGFibGVzIHRoZW1zZWx2ZXMgYXJlIGNhbGxhYmxlcyB0
aGF0IGNoZWNrIHRoYXQgdGhlaXIKKyAgICAgICAgYXJndW1lbnRzIGFuZCByZXR1cm4gdmFsdWVz
IGFyZSBhbHNvIGVpdGhlciBwcmltaXRpdmVzIG9yIHdyYXBwZWQKKyAgICAgICAgY2FsbGFibGVz
LiBUaGlzIGRldGFpbCBpcyBpbXBsZW1lbnRlZCB2aWEgSlMgYnVpbHRpbnMgKyBhIGZldyBuZXcK
KyAgICAgICAgaW50cmluc2ljcy4KKworICAgICAgICBDYW4gYmUgZW5hYmxlZCB1c2luZyBgLS11
c2VTaGFkb3dSZWFsbT10cnVlYAorCisgICAgICAgIFsxXTogaHR0cHM6Ly9naXRodWIuY29tL3Rj
MzkvcHJvcG9zYWwtc2hhZG93cmVhbG0KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogYnVpbHRpbnMvU2hhZG93
UmVhbG1Qcm90b3R5cGUuanM6IEFkZGVkLgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS53cmFwKToK
KyAgICAgICAgKGV2YWx1YXRlKToKKyAgICAgICAgKGltcG9ydFZhbHVlKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgICogYnl0ZWNvZGUv
TGlua1RpbWVDb25zdGFudC5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdElzU2hhZG93UmVh
bG0pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAq
IGpzYy5jcHA6CisgICAgICAgIChKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAq
IHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9JbmRp
cmVjdEV2YWxFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0
YWJsZTo6Y3JlYXRlSW1wbCk6CisgICAgICAgIChKU0M6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGU6
OmNyZWF0ZVNhZmUpOgorICAgICAgICAoSlNDOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVu
SW1wbCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjcmVhdGVXaXRoQ3VzdG9tTWV0
aG9kVGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNoYWRvd1JlYWxtUHJvdG90eXBlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNoYWRvd1JlYWxtU3RydWN0dXJlIGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9PcHRpb25z
TGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5jcHA6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpTaGFkb3dSZWFsbUNvbnN0cnVjdG9yOjpTaGFkb3dSZWFsbUNv
bnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6U2hhZG93UmVhbG1Db25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RTaGFkb3dSZWFsbSk6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9TaGFk
b3dSZWFsbUNvbnN0cnVjdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaC4KKyAgICAgICAgKiBydW50aW1lL1NoYWRv
d1JlYWxtT2JqZWN0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlNoYWRvd1JlYWxtT2JqZWN0
OjpTaGFkb3dSZWFsbU9iamVjdCk6CisgICAgICAgIChKU0M6OlNoYWRvd1JlYWxtT2JqZWN0Ojp2
aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgIChKU0M6OlNoYWRvd1JlYWxtT2JqZWN0OjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpTaGFkb3dSZWFsbU9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvU2hhZG93UmVhbG1PYmplY3QuaDogQ29waWVkIGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oLgorICAgICAg
ICAqIHJ1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6U2hhZG93UmVhbG1Qcm90b3R5cGU6OlNoYWRvd1JlYWxtUHJvdG90eXBlKToKKyAgICAgICAg
KEpTQzo6U2hhZG93UmVhbG1Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1NoYWRvd1Jl
YWxtUHJvdG90eXBlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaC4KKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAg
ICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMjEtMDkt
MjEgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIFtX
ZWJJRExdIERPTSBjb25zdHJ1Y3RvcnMgc2hvdWxkIGV4dGVuZCBJbnRlcm5hbEZ1bmN0aW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMmZkMjBkN2RlZjkyYjY0ZDE5NGE3
NTRhZWQxZjFhY2JiOGJlOWE4Yy4uY2FjMjkyNWU1YTA4NjNlNzMxYmVkYjY5ZmNmNTRhMmIxMzY0
ZWJmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTAzLDYgKzEwMyw4
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL1Jl
Z0V4cFByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL1JlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90
eXBlLmNwcAogICAgIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvU2hhZG93
UmVhbG1PYmplY3QuY3BwCisgICAgcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5jcHAKICAg
ICBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcAogICAgIHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCkBAIC0zNjksNiArMzcx
LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vYnVpbHRpbnMvUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuanMKICAg
ICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvU2V0SXRlcmF0b3JQcm90b3R5cGUuanMK
ICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvU2V0UHJvdG90eXBlLmpzCisgICAg
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1NoYWRvd1JlYWxtUHJvdG90eXBlLmpzCiAg
ICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1N0cmluZ0NvbnN0cnVjdG9yLmpzCiAg
ICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBl
LmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlwZS5q
cwpAQCAtMTE0Miw2ICsxMTQ1LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQURFUlMKICAgICBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUv
U2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmgKICAgICBydW50aW1lL1NjcmlwdEZldGNoZXIuaAorICAg
IHJ1bnRpbWUvU2hhZG93UmVhbG1PYmplY3QuaAogICAgIHJ1bnRpbWUvU2xvd1BhdGhGdW5jdGlv
bi5oCiAgICAgcnVudGltZS9TbG93UGF0aFJldHVyblR5cGUuaAogICAgIHJ1bnRpbWUvU21hbGxT
dHJpbmdzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXgg
ZWNiY2U2N2Y3OGMwMDM0YzE2NmY1MGQ1ODkyYTZmMDhjNWRhNDBkNi4uYmNmM2VlYTI5Y2U3YmIy
MDc3ODlhNWQ5YzIxMzdhZWNkZGFhOWNhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKQEAgLTEyMiw2ICsxMjIsNyBAQCBKYXZhU2NyaXB0Q29yZV9CVUlMVElO
U19TT1VSQ0VTID0gXAogICAgICR7SmF2YVNjcmlwdENvcmV9L2J1aWx0aW5zL1JlZ0V4cFN0cmlu
Z0l0ZXJhdG9yUHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9T
ZXRJdGVyYXRvclByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMv
U2V0UHJvdG90eXBlLmpzIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TaGFkb3dS
ZWFsbVByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvU3RyaW5n
Q29uc3RydWN0b3IuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1N0cmluZ0l0
ZXJhdG9yUHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TdHJp
bmdQcm90b3R5cGUuanMgXApAQCAtMTg3LDYgKzE4OCw3IEBAIE9CSkVDVF9MVVRfSEVBREVSUyA9
IFwKICAgICBSZWZsZWN0T2JqZWN0Lmx1dC5oIFwKICAgICBSZWdFeHBDb25zdHJ1Y3Rvci5sdXQu
aCBcCiAgICAgU2V0UHJvdG90eXBlLmx1dC5oIFwKKyAgICBTaGFkb3dSZWFsbVByb3RvdHlwZS5s
dXQuaCBcCiAgICAgU3RyaW5nQ29uc3RydWN0b3IubHV0LmggXAogICAgIFN0cmluZ1Byb3RvdHlw
ZS5sdXQuaCBcCiAgICAgU3ltYm9sQ29uc3RydWN0b3IubHV0LmggXApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBlZTg2YmE4ZGMwYmI5Y2FiZjRiMTM0Y2IxMzI0ZDI0MTZmY2NmOWE3
Li42NGVjMDFjMzhkYmY5YzM2ODIzNzZkOGE4YjkxOGFlZWNhYjE5NmM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTI1Myw2ICsxMjUzLDkgQEAKIAkJODYwMTYxRTMwRjNBODND
MTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2MURGMEYzQTgzQzEwMEY4NDcxMCAvKiBB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODYwMTYxRTUwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1i
bGVyWDg2XzY0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NjAxNjFFMTBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjAxNjFFNjBG
M0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2MUUyMEYzQTgzQzEwMEY4NDcx
MCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2MDI5NjAyMjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFk
b3dSZWFsbUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NjAyOTVGQzI2RkI1NTJDMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Db25zdHJ1
Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTg2MDI5NjA0MjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbU9iamVjdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMjk1RkUyNkZCNTUyRDAw
NzhFQjYyIC8qIFNoYWRvd1JlYWxtT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODYwMjk2MDUyNkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRv
d1JlYWxtUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NjAyOTVGRjI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Qcm90b3R5cGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjA2
RERFQTE4REE0NEFCMDBBMzgzRDAgLyogSWRlbnRpZmllcklubGluZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDZEREU5MThEQTQ0QUIwMEEzODNE
MCAvKiBJZGVudGlmaWVySW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTg2MEJEODAxMTQ4RUE2RjIwMDExMkIyRiAvKiBJbnRyaW5zaWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkY2NDJB
MTQ4REIyQjUwMDRERTM2QSAvKiBJbnRyaW5zaWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjEyRTRDRDE1MjM4OUVDMDBDODM2QkUgLyogTWF0
Y2hSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2MTJFNENCMTUyMjkxODQwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00MjA5LDYgKzQyMTIsMTIgQEAK
IAkJODYwMTYxREYwRjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjAxNjFFMTBGM0E4M0MxMDBGODQ3MTAg
LyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWFjcm9Bc3NlbWJsZXJYODZfNjQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODYwMTYxRTIwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MDI5NUZBMjZGQjU1MkMwMDc4RUI2MiAv
KiBTaGFkb3dSZWFsbVByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTaGFkb3dSZWFsbVByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTg2MDI5NUZCMjZGQjU1MkMwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbU9iamVjdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFkb3dSZWFsbU9iamVjdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MDI5NUZDMjZGQjU1MkMwMDc4RUI2
MiAvKiBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNoYWRvd1JlYWxtQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODYwMjk1RkQyNkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtQ29uc3RydWN0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhZG93UmVhbG1Db25z
dHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MDI5NUZFMjZGQjU1
MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTaGFkb3dSZWFsbU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4NjAyOTVGRjI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Qcm90b3R5cGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhZG93UmVhbG1Qcm90b3R5cGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYwNEY0RjIxNDNBNkM0NDAwQjI5NUY1IC8q
IENoYW5nZUxvZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gQ2hhbmdlTG9nOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4NjA2RERFOTE4REE0NEFCMDBBMzgzRDAgLyogSWRlbnRpZmllcklu
bGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWRlbnRpZmllcklubGlu
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYxMkU0Q0IxNTIyOTE4NDAwQzgz
NkJFIC8qIE1hdGNoUmVzdWx0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1h
dGNoUmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03OTQ3LDYgKzc5NTYs
MTIgQEAKIAkJCQlBNzkwREQ2ODE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0b3JQcm90b3R5
cGUuaCAqLywKIAkJCQlBNzI5OUQ5RjE3RDEyODQ4MDA1RjVGRjkgLyogU2V0UHJvdG90eXBlLmNw
cCAqLywKIAkJCQlBNzI5OURBMDE3RDEyODQ4MDA1RjVGRjkgLyogU2V0UHJvdG90eXBlLmggKi8s
CisJCQkJODYwMjk1RkQyNkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtQ29uc3RydWN0b3Iu
Y3BwICovLAorCQkJCTg2MDI5NUZDMjZGQjU1MkMwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbUNvbnN0
cnVjdG9yLmggKi8sCisJCQkJODYwMjk1RkIyNkZCNTUyQzAwNzhFQjYyIC8qIFNoYWRvd1JlYWxt
T2JqZWN0LmNwcCAqLywKKwkJCQk4NjAyOTVGRTI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVh
bG1PYmplY3QuaCAqLywKKwkJCQk4NjAyOTVGQTI2RkI1NTJDMDA3OEVCNjIgLyogU2hhZG93UmVh
bG1Qcm90b3R5cGUuY3BwICovLAorCQkJCTg2MDI5NUZGMjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFk
b3dSZWFsbVByb3RvdHlwZS5oICovLAogCQkJCTBGMkI2NkQ2MTdCNkI1QUIwMEE3QUUzRiAvKiBT
aW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJMEYyQjY2RDcxN0I2QjVBQjAw
QTdBRTNGIC8qIFNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmggKi8sCiAJCQkJRkU4QzAzMTEy
NjRBNjkxMDAwMUE0NEFEIC8qIFNsb3dQYXRoRnVuY3Rpb24uaCAqLywKQEAgLTEwNjUzLDYgKzEw
NjY4LDkgQEAKIAkJCQkwRkVFOTg0MTFBODg2NUI3MDA3NTRFOTMgLyogU2V0dXBWYXJhcmdzRnJh
bWUuaCBpbiBIZWFkZXJzICovLAogCQkJCURDMTdFODE4MUM5QzkxRDkwMDhBNkFCMyAvKiBTaGFk
b3dDaGlja2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQlEQzE3RTgxOTFDOUM5MURCMDA4QTZBQjMg
LyogU2hhZG93Q2hpY2tlbklubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2MDI5NjAyMjZG
QjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywK
KwkJCQk4NjAyOTYwNDI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1PYmplY3QuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTg2MDI5NjA1MjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbVBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzMDIyRDMxRTNENzNBNTAwQkFDNDkzIC8q
IFNpZ2lsbENyYXNoQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNEQ4Qzc4MUZDQTND
RkEwMDFEMzJBQyAvKiBTaW1wbGVNYXJraW5nQ29uc3RyYWludC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYyQjY3MDUxN0I2QjVBQjAwQTdBRTNGIC8qIFNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVy
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA4NDZlOWVl
NzVmZWQwNTQ3NTU2YzRiZmQ0YTI2MWQ4MGQ1OWFmYmQ3Li41OTEwZmVmZWYzN2FmMWIxODVhNGZj
NWQ0MzlhMzdkMzkwZmI3OWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC05Njks
NiArOTY5LDkgQEAgcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcAogcnVudGltZS9Qcm94eU9i
amVjdC5jcHAKIHJ1bnRpbWUvUHJveHlSZXZva2UuY3BwCiBydW50aW1lL1JhbmRvbWl6aW5nRnV6
emVyQWdlbnQuY3BwCitydW50aW1lL1NoYWRvd1JlYWxtT2JqZWN0LmNwcAorcnVudGltZS9TaGFk
b3dSZWFsbUNvbnN0cnVjdG9yLmNwcAorcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5jcHAK
IHJ1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKIHJ1bnRpbWUvUmVnRXhwLmNwcAogcnVudGltZS9S
ZWdFeHBDYWNoZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
TmFtZXMuaAppbmRleCBkY2FmMGJhNmNhMzE4ZjE4MDI5MmNiYThkN2RjMDBmYTU3NzkxZWEwLi40
Yjg2NTA2NmVjNGE2MzE4ZGM1ZTc3ZjMzYTZiMTZkNmM4MzAzN2MxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC02Miw2ICs2Miw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIG1hY3JvKE51bWJlcikgXAogICAgIG1hY3JvKEFycmF5KSBcCiAg
ICAgbWFjcm8oQXJyYXlCdWZmZXIpIFwKKyAgICBtYWNybyhTaGFkb3dSZWFsbSkgXAogICAgIG1h
Y3JvKFJlZ0V4cCkgXAogICAgIG1hY3JvKG1pbikgXAogICAgIG1hY3JvKHRydW5jKSBcCkBAIC0x
MTUsNiArMTE2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oYXN5bmNHZW5lcmF0b3JR
dWV1ZUl0ZW1OZXh0KSBcCiAgICAgbWFjcm8oZGF0ZVRpbWVGb3JtYXQpIFwKICAgICBtYWNybyh0
aGlzKSBcCisgICAgbWFjcm8oaW1wb3J0SW5SZWFsbSkgXAorICAgIG1hY3JvKGV2YWxJblJlYWxt
KSBcCiAgICAgbWFjcm8odGhpc1RpbWVWYWx1ZSkgXAogICAgIG1hY3JvKG5ld1RhcmdldExvY2Fs
KSBcCiAgICAgbWFjcm8oZGVyaXZlZENvbnN0cnVjdG9yKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU2hhZG93UmVhbG1Qcm90b3R5cGUuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU2hhZG93UmVhbG1Qcm90b3R5cGUuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDdhNGI5ODU2NzRmNjI5N2Y4YTI4ZTE4NWUxZTg2M2NiYzgwYjViZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TaGFkb3dSZWFsbVByb3RvdHlw
ZS5qcwpAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBT
LkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK0BnbG9iYWxQcml2YXRlCitmdW5jdGlvbiB3cmFwKHRhcmdldCkKK3sK
KyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoQGlzQ2FsbGFibGUodGFyZ2V0KSkgeworICAg
ICAgICBsZXQgd3JhcHBlZCA9ICguLi5hcmdzKSA9PiB7CisgICAgICAgICAgICB2YXIgd3JhcHBl
ZEFyZ3MgPSBhcmdzLkBtYXAoQHdyYXApCisgICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0YXJn
ZXQuQGFwcGx5KEB1bmRlZmluZWQsIHdyYXBwZWRBcmdzKTsKKyAgICAgICAgICAgIHJldHVybiBA
d3JhcChyZXN1bHQpOworICAgICAgICB9OworICAgICAgICBkZWxldGUgd3JhcHBlZFsnbmFtZSdd
OworICAgICAgICBkZWxldGUgd3JhcHBlZFsnbGVuZ3RoJ107CisgICAgICAgIHJldHVybiB3cmFw
cGVkOworICAgIH0gZWxzZSBpZiAoQGlzT2JqZWN0KHRhcmdldCkpIHsKKyAgICAgICAgQHRocm93
VHlwZUVycm9yKCJ2YWx1ZSBwYXNzaW5nIGJldHdlZW4gcmVhbG1zIG11c3QgYmUgY2FsbGFibGUg
b3IgcHJpbWl0aXZlIik7CisgICAgfQorICAgIHJldHVybiB0YXJnZXQ7Cit9CisKK2Z1bmN0aW9u
IGV2YWx1YXRlKHNvdXJjZVRleHQpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFA
aXNTaGFkb3dSZWFsbSh0aGlzKSkKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJgJVNoYWRvd1Jl
YWxtJS5ldmFsdWF0ZSByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBhIFNoYWRvd1JlYWxtIGluc3Rh
bmNlIik7CisKKyAgICBpZiAodHlwZW9mIHNvdXJjZVRleHQgIT09ICdzdHJpbmcnKQorICAgICAg
ICBAdGhyb3dUeXBlRXJyb3IoImAlU2hhZG93UmVhbG0lLmV2YWx1YXRlIHJlcXVpcmVzIHRoYXQg
dGhlIHxzb3VyY2VUZXh0fCBhcmd1bWVudCBiZSBhIHN0cmluZyIpOworCisgICAgbGV0IHJlc3Vs
dCA9IEBldmFsSW5SZWFsbSh0aGlzLCBzb3VyY2VUZXh0KQorICAgIHJldHVybiBAd3JhcChyZXN1
bHQpOworfQorCitmdW5jdGlvbiBpbXBvcnRWYWx1ZShzcGVjaWZpZXIsIGV4cG9ydE5hbWUpCit7
CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNTaGFkb3dSZWFsbSh0aGlzKSkKKyAg
ICAgICAgQHRocm93VHlwZUVycm9yKCJgJVNoYWRvd1JlYWxtJS5pbXBvcnRWYWx1ZSByZXF1aXJl
cyB0aGF0IHx0aGlzfCBiZSBhIFNoYWRvd1JlYWxtIGluc3RhbmNlIik7CisKKyAgICBsZXQgZXhw
b3J0TmFtZVN0ciA9IEB0b1N0cmluZyhleHBvcnROYW1lKTsKKyAgICBsZXQgc3BlY2lmaWVyU3Ry
ID0gQHRvU3RyaW5nKHNwZWNpZmllcik7CisKKyAgICBsZXQgbG9va3VwQmluZGluZyA9IChtb2R1
bGUpID0+IHsKKyAgICAgICAgbGV0IGxvb2t1cCA9IG1vZHVsZVtleHBvcnROYW1lU3RyXQorICAg
ICAgICBpZiAobG9va3VwID09PSBAdW5kZWZpbmVkKQorICAgICAgICAgICAgQHRocm93VHlwZUVy
cm9yKCIlU2hhZG93UmVhbG0lLmltcG9ydFZhbHVlIHJlcXVpcmVzIHxleHBvcnROYW1lfCB0byBl
eGlzdCBpbiB0aGUgfHNwZWNpZmllcnwiKTsKKworICAgICAgICByZXR1cm4gQHdyYXAobG9va3Vw
KTsKKyAgICB9OworCisgICAgbGV0IGNyb3NzUmVhbG1UaHJvdyA9IChlcnJvcikgPT4geworICAg
ICAgICAvLyByZS10aHJvdyBiZWNhdXNlIGltcG9ydCBpc3N1ZXMgcmFpc2UgZXJyb3JzIHVzaW5n
IHRoZSByZWFsbSdzIGdsb2JhbCBvYmplY3QKKyAgICAgICAgQHRocm93VHlwZUVycm9yKEB0b1N0
cmluZyhlcnJvcikpOworICAgIH07CisKKyAgICByZXR1cm4gQGltcG9ydEluUmVhbG0odGhpcywg
c3BlY2lmaWVyU3RyKS5AdGhlbihsb29rdXBCaW5kaW5nLCBjcm9zc1JlYWxtVGhyb3cpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmlu
c2ljUmVnaXN0cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUlu
dHJpbnNpY1JlZ2lzdHJ5LmgKaW5kZXggODU1NTk3Nzg2NzA3MmYyZmZmNjdhNjU1OWFjZDlhNDU0
ZDUyZDI3Ny4uYjMyY2NkYWY0M2E2NjJjODc3OTU1ODA3ZjZkNDFmMTI1OTE5NGY1MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeS5oCkBAIC02Niw2ICs2Niw3IEBAIGVudW0gY2xhc3MgTGlua1RpbWVDb25z
dGFudCA6IGludDMyX3Q7CiAgICAgbWFjcm8oaXNSZWdFeHBPYmplY3QpIFwKICAgICBtYWNybyhp
c01hcCkgXAogICAgIG1hY3JvKGlzU2V0KSBcCisgICAgbWFjcm8oaXNTaGFkb3dSZWFsbSkgXAog
ICAgIG1hY3JvKGlzU3RyaW5nSXRlcmF0b3IpIFwKICAgICBtYWNybyhpc0FycmF5SXRlcmF0b3Ip
IFwKICAgICBtYWNybyhpc01hcEl0ZXJhdG9yKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAppbmRleCA1ZjMyYWY4MjBlNDVmYTQ5ZGM5
MmZjNDU2N2FhZjQwMTUzY2JlYWJkLi4wMTUzOTQ4MmUyOWI1ZGFhNDczYzEwY2RkNWFlNjU5YTg0
NDFiMjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1Rp
bWVDb25zdGFudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGlt
ZUNvbnN0YW50LmgKQEAgLTYzLDYgKzYzLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAg
dihpbnN0YW5jZU9mLCBudWxscHRyKSBcCiAgICAgdihCdWlsdGluTG9nLCBudWxscHRyKSBcCiAg
ICAgdihCdWlsdGluRGVzY3JpYmUsIG51bGxwdHIpIFwKKyAgICB2KFNoYWRvd1JlYWxtLCBudWxs
cHRyKSBcCiAgICAgdihSZWdFeHAsIG51bGxwdHIpIFwKICAgICB2KG1pbiwgbnVsbHB0cikgXAog
ICAgIHYodHJ1bmMsIG51bGxwdHIpIFwKQEAgLTc4LDYgKzc5LDggQEAgY2xhc3MgSlNHbG9iYWxP
YmplY3Q7CiAgICAgdihob3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIsIG51bGxwdHIpIFwKICAg
ICB2KFNldCwgbnVsbHB0cikgXAogICAgIHYodGhpc1RpbWVWYWx1ZSwgbnVsbHB0cikgXAorICAg
IHYoaW1wb3J0SW5SZWFsbSwgbnVsbHB0cikgXAorICAgIHYoZXZhbEluUmVhbG0sIG51bGxwdHIp
IFwKICAgICB2KGlzQ29uc3RydWN0b3IsIG51bGxwdHIpIFwKICAgICB2KHNhbWVWYWx1ZSwgbnVs
bHB0cikgXAogICAgIHYocmVnRXhwUHJvdG9GbGFnc0dldHRlciwgbnVsbHB0cikgXApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCmluZGV4IDhmYTA0Nzg4N2EwNGZiNmIzMTMxNDAzYTJiMTc2NmEzNWVhYWNkZGMuLmVhNjQy
MDFmMzU1ZmQ4N2ZmMzRmN2I5NDg4NzcyNjM0ZWNmZjIxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTg4
Myw2ICs4ODMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElz
UmVnRXhwT2JqZWN0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBl
bWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIFJlZ0V4cE9iamVjdFR5cGUpOyB9CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRJc01hcChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykg
eyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU01hcFR5cGUpOyB9CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRJc1NldChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNy
YykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU1NldFR5cGUpOyB9Cisg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc1NoYWRvd1JlYWxtKFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIFNoYWRv
d1JlYWxtVHlwZSk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzU3RyaW5nSXRlcmF0b3Io
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRo
VHlwZShkc3QsIHNyYywgSlNTdHJpbmdJdGVyYXRvclR5cGUpOyB9CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRJc0FycmF5SXRlcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMp
IHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgSlNBcnJheUl0ZXJhdG9yVHlw
ZSk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzTWFwSXRlcmF0b3IoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNy
YywgSlNNYXBJdGVyYXRvclR5cGUpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggM2I4YTY2ZmViZDJkMjg0MjFmMjdi
NDlhZTliNjc3MDI5OGEyNjA3MS4uMTMyMDg5MDZhNjQ4OWMwNDgxYzI5NjU3NTMxMmI2M2FlNTNk
MDA1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcApAQCAtMTg5NCw2ICsxODk0LDcgQEAgQ1JFQVRFX0lOVFJJTlNJQ19GT1Jf
QlJBTkRfQ0hFQ0soaXNQcm9taXNlLCBJc1Byb21pc2UpCiBDUkVBVEVfSU5UUklOU0lDX0ZPUl9C
UkFORF9DSEVDSyhpc1JlZ0V4cE9iamVjdCwgSXNSZWdFeHBPYmplY3QpCiBDUkVBVEVfSU5UUklO
U0lDX0ZPUl9CUkFORF9DSEVDSyhpc01hcCwgSXNNYXApCiBDUkVBVEVfSU5UUklOU0lDX0ZPUl9C
UkFORF9DSEVDSyhpc1NldCwgSXNTZXQpCitDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVD
Syhpc1NoYWRvd1JlYWxtLCBJc1NoYWRvd1JlYWxtKQogQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJB
TkRfQ0hFQ0soaXNTdHJpbmdJdGVyYXRvciwgSXNTdHJpbmdJdGVyYXRvcikKIENSRUFURV9JTlRS
SU5TSUNfRk9SX0JSQU5EX0NIRUNLKGlzQXJyYXlJdGVyYXRvciwgSXNBcnJheUl0ZXJhdG9yKQog
Q1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0soaXNNYXBJdGVyYXRvciwgSXNNYXBJdGVy
YXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMTcwOTZkYTc2ZmVjMWY2ZDBhZGI2YmU5OGY3
N2FlMDM5YTI1MmQ1OS4uMGM5MDViNTkyMDc4MjA5NTg2NDhiZmNhMzhjM2Y5MTBlNTdmOTRjZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTM1OSw2ICszNTksNyBAQCBzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckNyZWF0ZVJlYWxtKTsKIHN0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyRXZhbFNjcmlwdCk7CiBzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckdDKTsKIHN0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyQ2xlYXJLZXB0T2JqZWN0cyk7Citz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckdsb2JhbE9iamVj
dEZvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckFn
ZW50U3RhcnQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xs
YXJBZ2VudFJlY2VpdmVCcm9hZGNhc3QpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04oZnVuY3Rpb25Eb2xsYXJBZ2VudFJlcG9ydCk7CkBAIC02MzgsNiArNjM5LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgYWRkRnVuY3Rpb24odm0sIGRvbGxhciwgImV2YWxTY3JpcHQiLCBmdW5jdGlv
bkRvbGxhckV2YWxTY3JpcHQsIDEsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6Tm9uZSkpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgZG9sbGFyLCAiZ2MiLCBmdW5j
dGlvbkRvbGxhckdDLCAwLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
Ok5vbmUpKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sIGRvbGxhciwgImNsZWFyS2VwdE9iamVj
dHMiLCBmdW5jdGlvbkRvbGxhckNsZWFyS2VwdE9iamVjdHMsIDAsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkpOworICAgICAgICBhZGRGdW5jdGlvbih2bSwg
ZG9sbGFyLCAiZ2xvYmFsT2JqZWN0Rm9yIiwgZnVuY3Rpb25Eb2xsYXJHbG9iYWxPYmplY3RGb3Is
IDEsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkpOwogICAg
ICAgICAKICAgICAgICAgZG9sbGFyLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJnbG9iYWwiKSwgZ2xvYmFsVGhpcygpKTsKICAgICAgICAgZG9sbGFyLT5wdXREaXJl
Y3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIklzSFRNTERE
QSIpLApAQCAtMjA0Nyw2ICsyMDQ5LDIyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5j
dGlvbkRvbGxhckNsZWFyS2VwdE9iamVjdHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAorSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyR2xvYmFsT2JqZWN0Rm9yLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgIk5vdCBlbm91Z2ggYXJndW1lbnRzIl9zKSkp
OworICAgIEpTVmFsdWUgYXJnID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoYXJn
LmlzQ2VsbCgpKSB7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYXJnLnN0cnVjdHVy
ZU9yTnVsbCh2bSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3RydWN0dXJlLT5n
bG9iYWxPYmplY3QoKS0+Z2xvYmFsVGhpcygpKTsKKyAgICB9CisKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
ZnVuY3Rpb25Eb2xsYXJBZ2VudFN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBhYTliODA5ZmQ3
MTcxYjkyMWZjM2M4YTU5NTg4YzVlOTNjZDRlMTZmLi4zM2I4OTE5ZGQxNTEzNjVmZmEzZTY5MDNk
MTQ0Mjc0MzYxNTc1YzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
CkBAIC01MDk0LDcgKzUwOTQsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVF
eHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICAg
ICAgbmV3Q291bnQtLTsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goSURFTlQpLCAiXCJuZXcuXCIgY2FuIG9ubHkgZm9s
bG93ZWQgd2l0aCB0YXJnZXQiKTsKKyAgICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goSURFTlQp
LCAiXCJuZXcuXCIgY2FuIG9ubHkgYmUgZm9sbG93ZWQgd2l0aCB0YXJnZXQiKTsKICAgICAgICAg
ICAgIGZhaWxEdWVUb1VuZXhwZWN0ZWRUb2tlbigpOwogICAgICAgICB9CiAgICAgfQpAQCAtNTEy
OSw3ICs1MTI5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lv
biBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgICAgICAgICBi
YXNlID0gY29udGV4dC5jcmVhdGVJbXBvcnRNZXRhRXhwcihsb2NhdGlvbiwgY3JlYXRlUmVzb2x2
ZUFuZFVzZVZhcmlhYmxlKGNvbnRleHQsICZtX3ZtLnByb3BlcnR5TmFtZXMtPm1ldGFQcml2YXRl
TmFtZSwgZmFsc2UsIGV4cHJlc3Npb25TdGFydCwgbG9jYXRpb24pKTsKICAgICAgICAgICAgICAg
ICBuZXh0KCk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGZhaWxJZlRy
dWUobWF0Y2goSURFTlQpLCAiXCJpbXBvcnQuXCIgY2FuIG9ubHkgZm9sbG93ZWQgd2l0aCBtZXRh
Iik7CisgICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChJREVOVCksICJcImltcG9ydC5c
IiBjYW4gb25seSBiZSBmb2xsb3dlZCB3aXRoIG1ldGEiKTsKICAgICAgICAgICAgICAgICBmYWls
RHVlVG9VbmV4cGVjdGVkVG9rZW4oKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApp
bmRleCA0MDYzMzFjYWRlOTA1OGM0M2M0NjhiOGNlZWZhNTNmMmVlYjhjYzEzLi4zODc1Y2Y2YjYz
YzBkMzEyYWIyNTJkNjBlMGVmOTBiODM0MzI1NTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0xMDUsNiArMTA1LDcgQEAgdm9p
ZCBBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElP
Tih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWR1Y2VQdWJsaWNOYW1lKCksIGFy
cmF5UHJvdG90eXBlUmVkdWNlQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJ
VEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWR1Y2VS
aWdodFB1YmxpY05hbWUoKSwgYXJyYXlQcm90b3R5cGVSZWR1Y2VSaWdodENvZGVHZW5lcmF0b3Is
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAg
ICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkubWFwUHVibGljTmFtZSgpLCBhcnJheVByb3RvdHlwZU1hcENvZGVH
ZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKKyAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwUHJpdmF0ZU5hbWUoKSwgYXJyYXlQcm90b3R5
cGVNYXBDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSk7CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQdWJsaWNO
YW1lKCksIGFycmF5UHJvdG9GdW5jS2V5cywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIDAsIEFycmF5S2V5c0ludHJpbnNpYyk7CiAgICAgSlNDX05B
VElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCksIGFycmF5UHJvdG9GdW5jRW50
cmllcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSks
IDAsIEFycmF5RW50cmllc0ludHJpbnNpYyk7CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lU
SE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZpbmRQdWJs
aWNOYW1lKCksIGFycmF5UHJvdG90eXBlRmluZENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDQwYzE1OWU4ZDdj
NTQwNDlmZDk4YzhhNjY2OGE2NGE4ZGY0ZWEzNjQuLjc4MjhkMDA4YTg1MzQ2MWU0OGUzNmQyZmJl
YTYxYzcwOTU3NmRkYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaApAQCAtNTIsNiArNTIsNyBAQAogICAgIG1hY3JvKE9iamVjdCkg
XAogICAgIG1hY3JvKFBsdXJhbFJ1bGVzKSBcCiAgICAgbWFjcm8oUHJvbWlzZSkgXAorICAgIG1h
Y3JvKFNoYWRvd1JlYWxtKSBcCiAgICAgbWFjcm8oUmVmbGVjdCkgXAogICAgIG1hY3JvKFJlZ0V4
cCkgXAogICAgIG1hY3JvKFJlbGF0aXZlVGltZUZvcm1hdCkgXApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAppbmRl
eCA3NDk4MjA1MDE4Y2RlZjhmM2Y4MzY3YjRiYmUyZWY3OWRiZDE3YzFmLi4yOGIzYmRhZDRjMDMw
MjUyNWNiZmVkNTg4NWMxMzAzM2Y0OWJjOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcApAQCAtMzQsNyAr
MzQsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogSW5k
aXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250
ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZh
bENvbnRleHRUeXBlKQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBFcnJvckhhbmRsZXJGdW5jdG9yPgor
aW5saW5lIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNy
ZWF0ZUltcGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIEVycm9y
SGFuZGxlckZ1bmN0b3IgZXJyb3JIYW5kbGVyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC00
OSw3ICs1MSw3IEBAIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFi
bGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAKICAgICBQYXJzZXJFcnJvciBl
cnJvcjsKICAgICBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1v
ZGUgPSBnbG9iYWxPYmplY3QtPmRlZmF1bHRDb2RlR2VuZXJhdGlvbk1vZGUoKTsKLSAgICAKKwog
ICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRFdmFsQ29kZSA9IHZtLmNvZGVDYWNo
ZSgpLT5nZXRVbmxpbmtlZEV2YWxDb2RlQmxvY2soCiAgICAgICAgIHZtLCBleGVjdXRhYmxlLCBl
eGVjdXRhYmxlLT5zb3VyY2UoKSwgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIGNvZGVH
ZW5lcmF0aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSk7CiAKQEAgLTU3LDcgKzU5LDcg
QEAgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dl
cigpLT5zb3VyY2VQYXJzZWQoZ2xvYmFsT2JqZWN0LCBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92
aWRlcigpLCBlcnJvci5saW5lKCksIGVycm9yLm1lc3NhZ2UoKSk7CiAKICAgICBpZiAoZXJyb3Iu
aXNWYWxpZCgpKSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBl
cnJvci50b0Vycm9yT2JqZWN0KGdsb2JhbE9iamVjdCwgZXhlY3V0YWJsZS0+c291cmNlKCkpKTsK
KyAgICAgICAgZXJyb3JIYW5kbGVyKGV4ZWN1dGFibGUtPnNvdXJjZSgpLCAmZXJyb3IpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTY2LDYgKzY4LDI0IEBAIEluZGlyZWN0
RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqCiAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CiB9CiAKK0luZGlyZWN0RXZh
bEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZVNhZmUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29u
dGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQs
IEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIE5ha2VkUHRyPEpTT2JqZWN0PiYgcmVz
dWx0aW5nRXJyb3IpCit7CisgICAgYXV0byBoYW5kbGVFcnJvciA9IFsmXShjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIFBhcnNlckVycm9yKiBlcnJvcikgeworICAgICAgICByZXN1bHRpbmdFcnJv
ciA9IGVycm9yLT50b0Vycm9yT2JqZWN0KGdsb2JhbE9iamVjdCwgc291cmNlKTsKKyAgICB9Owor
ICAgIHJldHVybiBjcmVhdGVJbXBsKGdsb2JhbE9iamVjdCwgc291cmNlLCBkZXJpdmVkQ29udGV4
dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlwZSwgaGFuZGxlRXJy
b3IpOworfQorCitJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxl
OjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gaGFuZGxlRXJyb3IgPSBb
Jl0oY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciogZXJyb3IpIHsKKyAgICAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgICAgICB0aHJvd1ZN
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3ItPnRvRXJyb3JPYmplY3QoZ2xvYmFsT2Jq
ZWN0LCBzb3VyY2UpKTsKKyAgICB9OworICAgIHJldHVybiBjcmVhdGVJbXBsKGdsb2JhbE9iamVj
dCwgc291cmNlLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2
YWxDb250ZXh0VHlwZSwgaGFuZGxlRXJyb3IpOworfQorCiBjb25zdGV4cHIgYm9vbCBpblN0cmlj
dENvbnRleHQgPSBmYWxzZTsKIGNvbnN0ZXhwciBib29sIGluc2lkZU9yZGluYXJ5RnVuY3Rpb24g
PSBmYWxzZTsKIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBE
ZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmgKaW5k
ZXggNDk4YjVjODcwOThhYjM3NDc5N2EyNWJmNDgxNjM3Y2ZiYjkyZWRmNS4uYzhlNTI0NTY2NTg1
NTcxNDQ2NDIyOGYwMDBjZmIwNzM5ZGQ5NzM3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaApAQCAtMzIsNyArMzIs
MTEgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlIGZpbmFs
IDogcHVibGljIEV2YWxFeGVjdXRhYmxlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgSW5kaXJlY3RF
dmFsRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYs
IERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29u
dGV4dFR5cGUpOworICAgIHN0YXRpYyBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBjcmVhdGVTYWZl
KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRDb250ZXh0VHlwZSwg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUsIE5ha2VkUHRyPEpT
T2JqZWN0PiYpOwogcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFcnJvckhhbmRsZXJG
dW5jdG9yPgorICAgIGlubGluZSBzdGF0aWMgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogY3JlYXRl
SW1wbChKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJpdmVkQ29udGV4dFR5
cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlLCBFcnJvckhh
bmRsZXJGdW5jdG9yKTsKKwogICAgIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMDZmNjUzZWNiZjg0
YjM3OGE3YjNjYWVhZDI0MzQ2OTg4OTUyN2YyMC4uYWE1NGQ0ZTFiNWI2MWY3ZTE4MjQ1OTkzYjc5
NzQ5MTJlZWMwN2QzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcApAQCAtMTk0LDYgKzE5NCw5IEBACiAjaW5jbHVkZSAiU2V0Q29uc3Ry
dWN0b3IuaCIKICNpbmNsdWRlICJTZXRJdGVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlNl
dFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIlNoYWRvd1JlYWxtQ29uc3RydWN0b3IuaCIKKyNpbmNs
dWRlICJTaGFkb3dSZWFsbU9iamVjdC5oIgorI2luY2x1ZGUgIlNoYWRvd1JlYWxtUHJvdG90eXBl
LmgiCiAjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKICNpbmNsdWRlICJTdHJpbmdD
b25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgiCkBAIC05
MTYsNiArOTE5LDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IE51bWJlck9mQXJyYXlJbmRleGluZ01vZGVzOyArK2kpCiAg
ICAgICAgIG1fYXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1NoYXBlRHVyaW5nQWxsb2NhdGlvbltp
XSA9IG1fb3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5nU2hhcGVbaV07CiAKKyAgICBt
X3NoYWRvd1JlYWxtUHJvdG90eXBlLnNldCh2bSwgdGhpcywgU2hhZG93UmVhbG1Qcm90b3R5cGU6
OmNyZWF0ZSh2bSwgU2hhZG93UmVhbG1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CisgICAgbV9zaGFkb3dSZWFsbU9iamVjdFN0
cnVjdHVyZS5zZXQodm0sIHRoaXMsIFNoYWRvd1JlYWxtT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIG1fc2hhZG93UmVhbG1Qcm90b3R5cGUuZ2V0KCkpKTsKKwogICAgIG1fcmVnRXhw
UHJvdG90eXBlLnNldCh2bSwgdGhpcywgUmVnRXhwUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMs
IFJlZ0V4cFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3Rv
dHlwZS5nZXQoKSkpKTsKICAgICBtX3JlZ0V4cFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFJlZ0V4
cE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQo
KSkpOwogICAgIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLnNldCh2bSwgdGhpcywgY3Jl
YXRlUmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKHZtLCB0aGlzKSk7CkBAIC0xMDIwLDcgKzEw
MjYsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgQXJyYXlDb25z
dHJ1Y3RvciogYXJyYXlDb25zdHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwg
dGhpcywgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0
aW9uUHJvdG90eXBlLmdldCgpKSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0
dGVyU2V0dGVyLmdldCgpKTsKICAgICBtX2FycmF5Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBh
cnJheUNvbnN0cnVjdG9yKTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVu
c2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpBcnJheSldLnNldCh2bSwgdGhpcywgYXJyYXlDb25z
dHJ1Y3Rvcik7Ci0gICAgCisKKyAgICBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKiBzaGFkb3dSZWFs
bUNvbnN0cnVjdG9yID0gU2hhZG93UmVhbG1Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBTaGFkb3dS
ZWFsbUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90
b3R5cGUuZ2V0KCkpLCBtX3NoYWRvd1JlYWxtUHJvdG90eXBlLmdldCgpLCBtX3NwZWNpZXNHZXR0
ZXJTZXR0ZXIuZ2V0KCkpOworICAgIG1fc2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5zZXQodm0sIHRo
aXMsIHNoYWRvd1JlYWxtQ29uc3RydWN0b3IpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlNoYWRvd1JlYWxtKV0uc2V0KHZt
LCB0aGlzLCBzaGFkb3dSZWFsbUNvbnN0cnVjdG9yKTsKKwogICAgIFJlZ0V4cENvbnN0cnVjdG9y
KiByZWdFeHBDb25zdHJ1Y3RvciA9IFJlZ0V4cENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIFJlZ0V4
cENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5
cGUuZ2V0KCkpLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0dGVyU2V0dGVy
LmdldCgpKTsKICAgICBtX3JlZ0V4cENvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgcmVnRXhwQ29u
c3RydWN0b3IpOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KExpbmtUaW1lQ29uc3RhbnQ6OlJlZ0V4cCldLnNldCh2bSwgdGhpcywgcmVnRXhwQ29uc3RydWN0
b3IpOwpAQCAtMTEwMCw2ICsxMTEwLDcgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxv
d2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICBt
X2Z1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGZ1bmN0aW9uQ29uc3RydWN0b3IsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBtX2FycmF5UHJv
dG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
Y29uc3RydWN0b3IsIGFycmF5Q29uc3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBtX3JlZ0V4cFByb3RvdHlwZS0+cHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBy
ZWdFeHBDb25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSkpOworICAgIG1fc2hhZG93UmVhbG1Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwgc2hhZG93UmVh
bG1Db25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSkpOwogICAgIAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5PYmplY3QsIG9iamVjdENvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkZ1bmN0aW9uLCBmdW5jdGlvbkNvbnN0
cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CkBAIC0xMjUxLDYgKzEyNjIsOCBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93
ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgICAg
ICBUZW1wb3JhbE9iamVjdCogdGVtcG9yYWwgPSBUZW1wb3JhbE9iamVjdDo6Y3JlYXRlKHZtLCBU
ZW1wb3JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzKSk7CiAgICAgICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5UZW1wb3JhbCwgdGVt
cG9yYWwsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KTsKICAgICB9CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYWRvd1JlYWxtKCkpCisgICAgICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5TaGFkb3dSZWFs
bSwgc2hhZG93UmVhbG1Db25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOwogCiAgICAgbV9tb2R1bGVMb2FkZXIuaW5pdExhdGVyKAog
ICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNNb2R1bGVMb2FkZXI+JiBpbml0KSB7CkBA
IC0xNDIzLDYgKzE0MzYsMTIgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFt
ZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICBtX2xpbmtU
aW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpob3N0
UHJvbWlzZVJlamVjdGlvblRyYWNrZXIpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVy
PEpTQ2VsbD4mIGluaXQpIHsKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0
ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMiwgU3RyaW5n
KCksIGdsb2JhbEZ1bmNIb3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIpKTsKICAgICAgICAgfSk7
CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVD
b25zdGFudDo6aW1wb3J0SW5SZWFsbSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8
SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRl
KGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmco
KSwgaW1wb3J0SW5SZWFsbSkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpldmFsSW5SZWFsbSldLmlu
aXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAg
ICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9i
amVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgZXZhbEluUmVhbG0pKTsKKyAgICAgICAg
fSk7CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1Rp
bWVDb25zdGFudDo6dGhpc1RpbWVWYWx1ZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6
ZXI8SlNDZWxsPiYgaW5pdCkgewogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3Jl
YXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJp
bmcoKSwgZGF0ZVByb3RvRnVuY0dldFRpbWUsIERhdGVQcm90b3R5cGVHZXRUaW1lSW50cmluc2lj
KSk7CiAgICAgICAgIH0pOwpAQCAtMjEwNyw2ICsyMTI2LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogICAg
IHRoaXNPYmplY3QtPm1fVVJJRXJyb3JTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhp
c09iamVjdC0+bV9hZ2dyZWdhdGVFcnJvclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FycmF5Q29uc3RydWN0b3IpOworICAgIHZpc2l0
b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc2hhZG93UmVhbG1Db25zdHJ1Y3Rvcik7CiAgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWdFeHBDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV9vYmplY3RDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5h
cHBlbmQodGhpc09iamVjdC0+bV9mdW5jdGlvbkNvbnN0cnVjdG9yKTsKQEAgLTIyMDQsNiArMjIy
NCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2Vs
bCwgVmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0LT5tX2N1c3RvbVNldHRlckZ1bmN0
aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fYm91bmRGdW5j
dGlvblN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX25hdGl2ZVN0
ZEZ1bmN0aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fc2hhZG93UmVhbG1PYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFw
cGVuZCh0aGlzT2JqZWN0LT5tX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOwpAQCAtMjU2MCw2ICsy
NTgxLDEzIEBAIEpTR2xvYmFsT2JqZWN0KiBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdDsKIH0KIAorSlNH
bG9iYWxPYmplY3QqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVXaXRoQ3VzdG9tTWV0aG9kVGFibGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUqIG1ldGhvZFRhYmxlKQoreworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dsb2JhbE9iamVjdD4odm0uaGVhcCkpIEpTR2xv
YmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIG1ldGhvZFRhYmxlKTsKKyAgICBnbG9iYWxPYmplY3Qt
PmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0OworfQorCiB2b2lk
IEpTR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgRGVmZXJUZXJt
aW5hdGlvbiBkZWZlclRlcm1pbmF0aW9uKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDEyOGIzOTkxMGRkODA1N2Y3YWFiYjU5Nzc3
Y2E2ODBlOWRmNjE4OTIuLmYzZmU3NGIxOTk1ODM1OGU5NmJmYTQ1NDc2YjY4MjQ4YTdlNTFmMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApA
QCAtMTE1LDYgKzExNSw4IEBAIGNsYXNzIE51bGxTZXR0ZXJGdW5jdGlvbjsKIGNsYXNzIE9iamVj
dENvbnN0cnVjdG9yOwogY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFByb2dyYW1FeGVj
dXRhYmxlOworY2xhc3MgU2hhZG93UmVhbG1Db25zdHJ1Y3RvcjsKK2NsYXNzIFNoYWRvd1JlYWxt
UHJvdG90eXBlOwogY2xhc3MgUmVnRXhwQ29uc3RydWN0b3I7CiBjbGFzcyBSZWdFeHBQcm90b3R5
cGU7CiBjbGFzcyBTZXRJdGVyYXRvclByb3RvdHlwZTsKQEAgLTMwNiw2ICszMDgsNyBAQCBwdWJs
aWM6CiAKICAgICBXcml0ZUJhcnJpZXI8T2JqZWN0Q29uc3RydWN0b3I+IG1fb2JqZWN0Q29uc3Ry
dWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPEFycmF5Q29uc3RydWN0b3I+IG1fYXJyYXlDb25zdHJ1
Y3RvcjsKKyAgICBXcml0ZUJhcnJpZXI8U2hhZG93UmVhbG1Db25zdHJ1Y3Rvcj4gbV9zaGFkb3dS
ZWFsbUNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxSZWdFeHBDb25zdHJ1Y3Rvcj4gbV9y
ZWdFeHBDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8RnVuY3Rpb25Db25zdHJ1Y3Rvcj4g
bV9mdW5jdGlvbkNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VDb25zdHJ1
Y3Rvcj4gbV9wcm9taXNlQ29uc3RydWN0b3I7CkBAIC0zNTMsNiArMzU2LDcgQEAgcHVibGljOgog
ICAgIFdyaXRlQmFycmllcjxPYmplY3RQcm90b3R5cGU+IG1fb2JqZWN0UHJvdG90eXBlOwogICAg
IFdyaXRlQmFycmllcjxGdW5jdGlvblByb3RvdHlwZT4gbV9mdW5jdGlvblByb3RvdHlwZTsKICAg
ICBXcml0ZUJhcnJpZXI8QXJyYXlQcm90b3R5cGU+IG1fYXJyYXlQcm90b3R5cGU7CisgICAgV3Jp
dGVCYXJyaWVyPFNoYWRvd1JlYWxtUHJvdG90eXBlPiBtX3NoYWRvd1JlYWxtUHJvdG90eXBlOwog
ICAgIFdyaXRlQmFycmllcjxSZWdFeHBQcm90b3R5cGU+IG1fcmVnRXhwUHJvdG90eXBlOwogICAg
IFdyaXRlQmFycmllcjxJdGVyYXRvclByb3RvdHlwZT4gbV9pdGVyYXRvclByb3RvdHlwZTsKICAg
ICBXcml0ZUJhcnJpZXI8QXN5bmNJdGVyYXRvclByb3RvdHlwZT4gbV9hc3luY0l0ZXJhdG9yUHJv
dG90eXBlOwpAQCAtNDA5LDYgKzQxMyw3IEBAIHB1YmxpYzoKICAgICBMYXp5UHJvcGVydHk8SlNH
bG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jdXN0b21TZXR0ZXJGdW5jdGlvblN0cnVjdHVyZTsK
ICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9uYXRpdmVTdGRG
dW5jdGlvblN0cnVjdHVyZTsKICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNl
dDsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3NoYWRvd1JlYWxtT2JqZWN0U3RydWN0
dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwU3RydWN0dXJlOwogICAg
IFdyaXRlQmFycmllcjxBc3luY0Z1bmN0aW9uUHJvdG90eXBlPiBtX2FzeW5jRnVuY3Rpb25Qcm90
b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU+
IG1fYXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKQEAgLTYxMCw2ICs2MTUsNyBAQCBw
dWJsaWM6CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTR2xvYmFsT2Jq
ZWN0KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgSlNHbG9iYWxPYmplY3QqIGNyZWF0ZVdpdGhDdXN0b21NZXRob2RUYWJsZShWTSYsIFN0cnVj
dHVyZSosIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKik7CiAKICAgICBERUNMQVJFX0VY
UE9SVF9JTkZPOwogCkBAIC03MTMsNiArNzE5LDcgQEAgcHVibGljOgogICAgIEJpZ0ludFByb3Rv
dHlwZSogYmlnSW50UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9iaWdJbnRQcm90b3R5cGUu
Z2V0KCk7IH0KICAgICBKU09iamVjdCogZGF0ZVByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0ZVN0cnVjdHVyZS5wcm90b3R5cGUodGhpcyk7IH0KICAgICBKU09iamVjdCogc3ltYm9sUHJv
dG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUucHJvdG90eXBl
SW5pdGlhbGl6ZWRPbk1haW5UaHJlYWQodGhpcyk7IH0KKyAgICBTaGFkb3dSZWFsbVByb3RvdHlw
ZSogc2hhZG93UmVhbG1Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd1JlYWxtUHJv
dG90eXBlLmdldCgpOyB9CiAgICAgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUoKSBj
b25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKTsgfQogICAgIEpTT2JqZWN0KiBl
cnJvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JTdHJ1Y3R1cmUucHJvdG90eXBl
KHRoaXMpOyB9CiAgICAgSXRlcmF0b3JQcm90b3R5cGUqIGl0ZXJhdG9yUHJvdG90eXBlKCkgY29u
c3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQpAQCAtODMwLDYgKzgzNyw3
IEBAIHB1YmxpYzoKICAgICBQcm9wZXJ0eU9mZnNldCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBjb25z
dCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQogICAgIFN0cnVjdHVyZSogbnVtYmVy
T2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUu
Z2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogc2hhZG93UmVh
bG1TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd1JlYWxtT2JqZWN0U3RydWN0dXJl
LmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBnZW5lcmF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2dlbmVyYXRvclN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogYXN5bmNH
ZW5lcmF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jR2VuZXJhdG9yU3RydWN0
dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCmluZGV4IDVhOGExNGEzY2M2YWQx
OWVkNDA4MjRiODMwMmRiOTBjNGM0NzRjM2EuLjgyOGZkMDM2NzZlNDVhYTIzYWViZjI0MWM4MDY5
ZWJjMTQ0ODgwYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcApA
QCAtNDMsNiArNDMsNyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlND
OjpKU1R5cGUgdHlwZSkKICAgICBDQVNFKFN0cmluZ1R5cGUpCiAgICAgQ0FTRShTeW1ib2xUeXBl
KQogICAgIENBU0UoSGVhcEJpZ0ludFR5cGUpCisgICAgQ0FTRShTaGFkb3dSZWFsbVR5cGUpCiAg
ICAgQ0FTRShDdXN0b21HZXR0ZXJTZXR0ZXJUeXBlKQogICAgIENBU0UoQVBJVmFsdWVXcmFwcGVy
VHlwZSkKICAgICBDQVNFKE5hdGl2ZUV4ZWN1dGFibGVUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGUuaAppbmRleCA2NWVhOTRlZjU2M2Y0YjNhZTIxOTE3NTFjNzkyZWM1MTBk
NTc0MWMxLi40MzFiYmFmYzg0ZTY1MzQ0YzAwMmU0ZTVmNDc2N2M3YTM0NTU1OTQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaApAQCAtMTEwLDYgKzExMCw3IEBAIGVudW0g
SlNUeXBlIDogdWludDhfdCB7CiAgICAgLy8gRW5kIEpTU2NvcGUgdHlwZXMuCiAKICAgICBNb2R1
bGVOYW1lc3BhY2VPYmplY3RUeXBlLAorICAgIFNoYWRvd1JlYWxtVHlwZSwKICAgICBSZWdFeHBP
YmplY3RUeXBlLAogICAgIEpTRGF0ZVR5cGUsCiAgICAgUHJveHlPYmplY3RUeXBlLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggYTBjMjE3MGVjNGJh
NTIxYzUxYmVjNmQyMDNhNTFhOTU2OGIyZjRiMi4uMmFiMTg4NTAxYjhiZTk4NDNhNTNlYjc1MGE3
MzM0MjQwNzg3ZDI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
TGlzdC5oCkBAIC01NDAsNiArNTQwLDcgQEAgYm9vbCBjYW5Vc2VXZWJBc3NlbWJseUZhc3RNZW1v
cnkoKTsKICAgICB2KEJvb2wsIHVzZUhhc093biwgdHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBP
YmplY3QuaGFzT3duIG1ldGhvZCIpIFwKICAgICB2KEJvb2wsIHVzZUludGxFbnVtZXJhdGlvbiwg
dHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBJbnRsIGVudW1lcmF0aW9uIEFQSXMuIikgXAogICAg
IHYoQm9vbCwgdXNlU2hhcmVkQXJyYXlCdWZmZXIsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwK
KyAgICB2KEJvb2wsIHVzZVNoYWRvd1JlYWxtLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBT
aGFkb3dSZWFsbSBvYmplY3QuIikgXAogICAgIHYoQm9vbCwgdXNlVGVtcG9yYWwsIGZhbHNlLCBO
b3JtYWwsICJFeHBvc2UgdGhlIFRlbXBvcmFsIG9iamVjdC4iKSBcCiAgICAgdihCb29sLCB1c2VX
ZWJBc3NlbWJseVRocmVhZGluZywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgaW5zdHJ1Y3Rpb25zIGZy
b20gdGhlIHdhc20gdGhyZWFkaW5nIHNwZWMuIikgXAogICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1i
bHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcywgZmFsc2UsIE5vcm1hbCwgIkFsbG93IGZ1bmN0aW9u
IHR5cGVzIGZyb20gdGhlIHdhc20gdHlwZWQgZnVuY3Rpb24gcmVmZXJlbmNlcyBzcGVjLiIpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1D
b25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGM2ODQ3MjlmNDA1YTJkZTQ0ZTY1Zjk2ZGFjN2Uw
NDU3ZjhhNmM1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NoYWRvd1JlYWxtQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlNoYWRvd1JlYWxtQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKKyNpbmNsdWRlICJTaGFkb3dSZWFsbU9iamVjdC5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFNoYWRvd1JlYWxtQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKSB9OworCitTVEFU
SUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoU2hhZG93UmVhbG1Db25zdHJ1Y3Rv
cik7CisKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNhbGxTaGFkb3dSZWFsbSk7
CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RXaXRoU2hhZG93UmVh
bG1Db25zdHJ1Y3Rvcik7CisKK1NoYWRvd1JlYWxtQ29uc3RydWN0b3I6OlNoYWRvd1JlYWxtQ29u
c3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEludGVybmFsRnVu
Y3Rpb24odm0sIHN0cnVjdHVyZSwgY2FsbFNoYWRvd1JlYWxtLCBjb25zdHJ1Y3RXaXRoU2hhZG93
UmVhbG1Db25zdHJ1Y3RvcikKK3sKK30KKwordm9pZCBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIFNoYWRvd1JlYWxtUHJvdG90eXBlKiBzaGFkb3dSZWFsbVBy
b3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgdm0ucHJvcGVydHlO
YW1lcy0+U2hhZG93UmVhbG0uc3RyaW5nKCksIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0
U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgc2hhZG93UmVhbG1Qcm90b3R5cGUsIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKK30KKworc3RhdGljIEpTT2JqZWN0KiBjb25z
dHJ1Y3RTaGFkb3dSZWFsbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlLCBj
b25zdCBBcmdMaXN0JikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
U3RydWN0dXJlKiBzaGFkb3dSZWFsbVN0cnVjdHVyZSA9IFNoYWRvd1JlYWxtT2JqZWN0OjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5zaGFkb3dSZWFsbVBy
b3RvdHlwZSgpKTsKKyAgICByZXR1cm4gU2hhZG93UmVhbG1PYmplY3Q6OmNyZWF0ZSh2bSwgc2hh
ZG93UmVhbG1TdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUo
KSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RXaXRoU2hhZG93UmVh
bG1Db25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKK3sKKyAgICBBcmdMaXN0IGFyZ3MoY2FsbEZyYW1lKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdFNoYWRvd1JlYWxtKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT5uZXdUYXJnZXQoKSwgYXJncykpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
Y2FsbFNoYWRvd1JlYWxtLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KikpCit7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0
LT52bSgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5u
b3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlNoYWRv
d1JlYWxtIikpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtQ29uc3RydWN0b3IuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kZGNjZDIyNzAxNjU3MGM0MTg4Njc1MTE5NGViOThhZmQxMzMwYTQyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rv
ci5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMu
TC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9u
LmgiCisjaW5jbHVkZSAiU2hhZG93UmVhbG1Qcm90b3R5cGUuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEdldHRlclNldHRlcjsKKworY2xhc3MgU2hhZG93UmVhbG1Db25zdHJ1Y3RvciBm
aW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIElu
dGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxl
OworCisgICAgc3RhdGljIFNoYWRvd1JlYWxtQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBTaGFkb3dSZWFsbVByb3RvdHlwZSogc2hhZG93UmVhbG1Qcm90
b3R5cGUsIEdldHRlclNldHRlciopCisgICAgeworICAgICAgICBTaGFkb3dSZWFsbUNvbnN0cnVj
dG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFNoYWRvd1JlYWxt
Q29uc3RydWN0b3I+KHZtLmhlYXApKSBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1
cmUpOworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHNoYWRvd1JlYWxt
UHJvdG90eXBlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKworICAgIERF
Q0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU2hhZG93UmVhbG1Db25zdHJ1Y3RvcihW
TSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBTaGFkb3dSZWFs
bVByb3RvdHlwZSopOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFNo
YWRvd1JlYWxtQ29uc3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24pOworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93
UmVhbG1PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVh
bG1PYmplY3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1NDQ3YTcxZWUxNTA4NTM3YjQ1NmZhMzZiNGJmMWFj
YzM0OGRiNDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TaGFkb3dSZWFsbU9iamVjdC5jcHAKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiU2hhZG93UmVhbG1PYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJ
Q19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShTaGFkb3dSZWFsbU9iamVjdCk7CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZv
IFNoYWRvd1JlYWxtT2JqZWN0OjpzX2luZm8gPSB7ICJTaGFkb3dSZWFsbSIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoU2hhZG93UmVhbG1PYmpl
Y3QpIH07CisKK1NoYWRvd1JlYWxtT2JqZWN0OjpTaGFkb3dSZWFsbU9iamVjdChWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgordm9pZCBTaGFkb3dSZWFsbU9iamVjdDo6dmlzaXRD
aGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIFNoYWRv
d1JlYWxtT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFNoYWRvd1JlYWxtT2JqZWN0Kj4oY2Vs
bCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwor
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisKKyAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2dsb2JhbE9iamVjdCk7Cit9CisKK0RFRklORV9WSVNJ
VF9DSElMRFJFTihTaGFkb3dSZWFsbU9iamVjdCk7CisKK1NoYWRvd1JlYWxtT2JqZWN0KiBTaGFk
b3dSZWFsbU9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0
IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKiBtZXRob2RUYWJsZSkKK3sKKyAgICBTaGFkb3dSZWFs
bU9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2hhZG93UmVhbG1P
YmplY3Q+KHZtLmhlYXApKSBTaGFkb3dSZWFsbU9iamVjdCh2bSwgc3RydWN0dXJlKTsKKyAgICBv
YmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVdpdGhDdXN0b21NZXRob2RUYWJsZSh2bSwgSlNH
bG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpLCBtZXRob2RUYWJsZSk7
CisgICAgb2JqZWN0LT5tX2dsb2JhbE9iamVjdC5zZXQodm0sIG9iamVjdCwgZ2xvYmFsT2JqZWN0
KTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCit2b2lkIFNoYWRvd1JlYWxtT2JqZWN0OjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAg
IEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lU
SE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1PYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtT2JqZWN0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODViNGQ5Zjk3NjlhMWQwNWUzNzg5Y2RmNmU3OTcyMDcxYTE5OTRiMAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtT2JqZWN0LmgKQEAg
LTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFNoYWRvd1Jl
YWxtT2JqZWN0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAg
IHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAmdm0uc2hh
ZG93UmVhbG1TcGFjZTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKFNoYWRvd1JlYWxtVHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBT
aGFkb3dSZWFsbU9iamVjdCogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgY29uc3QgR2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUqKTsKKworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSB7
IHJldHVybiBtX2dsb2JhbE9iamVjdC5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFNoYWRvd1Jl
YWxtT2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYp
OworICAgIERFQ0xBUkVfVklTSVRfQ0hJTERSRU47CisKKyAgICBXcml0ZUJhcnJpZXI8SlNHbG9i
YWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlw
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDEzNTI3ODAxY2QxNGJhZjVlYmYxZjlmZTAyMmNlZmQyZmJmZWQz
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRv
d1JlYWxtUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDEzNSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiU2hhZG93UmVhbG1Qcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkluZGlyZWN0RXZhbEV4
ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0LmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2UuaCIKKyNpbmNsdWRlICJKU01v
ZHVsZUxvYWRlci5oIgorI2luY2x1ZGUgIkxpdGVyYWxQYXJzZXIuaCIKKyNpbmNsdWRlICJTaGFk
b3dSZWFsbU9iamVjdC5oIgorCisjaW5jbHVkZSAiU2hhZG93UmVhbG1Qcm90b3R5cGUubHV0Lmgi
CisKK25hbWVzcGFjZSBKU0MgeworCisvKiBTb3VyY2UgZm9yIFNoYWRvd1JlYWxtUHJvdG90eXBl
Lmx1dC5oCitAYmVnaW4gc2hhZG93UmVhbG1Qcm90b3R5cGVUYWJsZQorICBldmFsdWF0ZSAgICBK
U0J1aWx0aW4gICAgIERvbnRFbnVtfEZ1bmN0aW9uICAxCisgIGltcG9ydFZhbHVlIEpTQnVpbHRp
biAgICAgRG9udEVudW18RnVuY3Rpb24gIDIKK0BlbmQKKyovCisKK2NvbnN0IENsYXNzSW5mbyBT
aGFkb3dSZWFsbVByb3RvdHlwZTo6c19pbmZvID0geyAiU2hhZG93UmVhbG0iLCAmQmFzZTo6c19p
bmZvLCAmc2hhZG93UmVhbG1Qcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShTaGFkb3dSZWFsbVByb3RvdHlwZSkgfTsKKworU2hhZG93UmVhbG1Qcm90b3R5cGU6OlNo
YWRvd1JlYWxtUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBK
U05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgU2hhZG93UmVhbG1Q
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBKU0NfVE9f
U1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGltcG9ydEluUmVhbG0sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBTaGFkb3dS
ZWFsbU9iamVjdCogdGhpc1JlYWxtID0ganNEeW5hbWljQ2FzdDxTaGFkb3dSZWFsbU9iamVjdCo+
KHZtLCB0aGlzVmFsdWUpOworICAgIFJFTEVBU0VfQVNTRVJUKHRoaXNSZWFsbSk7CisKKyAgICBh
dXRvKiBwcm9taXNlID0gSlNQcm9taXNlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+cHJvbWlz
ZVN0cnVjdHVyZSgpKTsKKworICAgIGF1dG8gc291cmNlT3JpZ2luID0gY2FsbEZyYW1lLT5jYWxs
ZXJTb3VyY2VPcmlnaW4odm0pOworICAgIGF1dG8qIHNwZWNpZmllciA9IGNhbGxGcmFtZS0+dW5j
aGVja2VkQXJndW1lbnQoMSkudG9TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSlNHbG9iYWxPYmplY3QqIHJlYWxtR2xvYmFs
T2JqZWN0ID0gdGhpc1JlYWxtLT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvKiBpbnRlcm5hbFBy
b21pc2UgPSByZWFsbUdsb2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCktPmltcG9ydE1vZHVsZShy
ZWFsbUdsb2JhbE9iamVjdCwgc3BlY2lmaWVyLCBqc1VuZGVmaW5lZCgpLCBzb3VyY2VPcmlnaW4p
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShwcm9taXNl
LT5yZWplY3RXaXRoQ2F1Z2h0RXhjZXB0aW9uKHJlYWxtR2xvYmFsT2JqZWN0LCBzY29wZSkpKTsK
KworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICBwcm9taXNlLT5yZXNvbHZlKGdsb2JhbE9iamVj
dCwgaW50ZXJuYWxQcm9taXNlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2Up
OworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZXZhbEluUmVhbG0sIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KTsKKyAgICBTaGFkb3dSZWFsbU9iamVjdCogdGhpc1JlYWxtID0ganNEeW5hbWljQ2FzdDxTaGFk
b3dSZWFsbU9iamVjdCo+KHZtLCB0aGlzVmFsdWUpOworICAgIFJFTEVBU0VfQVNTRVJUKHRoaXNS
ZWFsbSk7CisgICAgSlNHbG9iYWxPYmplY3QqIHJlYWxtR2xvYmFsT2JqZWN0ID0gdGhpc1JlYWxt
LT5nbG9iYWxPYmplY3QoKTsKKworICAgIEpTVmFsdWUgZXZhbEFyZyA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMSk7CisgICAgLy8gZXZhbCBjb2RlIGFkYXB0ZWQgZnJvbSBKU0dsb2JhbE9iamVjRnVu
Y3Rpb25zOjpnbG9iYWxGdW5jRXZhbAorICAgIFN0cmluZyBzID0gYXNTdHJpbmcoZXZhbEFyZykt
PnZhbHVlKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CisKKyAgICBKU1ZhbHVlIHBhcnNlZE9iamVjdDsKKyAgICBpZiAocy5p
czhCaXQoKSkgeworICAgICAgICBMaXRlcmFsUGFyc2VyPExDaGFyPiBwcmVwYXJzZXIoZ2xvYmFs
T2JqZWN0LCBzLmNoYXJhY3RlcnM4KCksIHMubGVuZ3RoKCksIE5vblN0cmljdEpTT04sIG51bGxw
dHIpOworICAgICAgICBwYXJzZWRPYmplY3QgPSBwcmVwYXJzZXIudHJ5TGl0ZXJhbFBhcnNlKCk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgTGl0ZXJhbFBhcnNlcjxVQ2hhcj4gcHJlcGFyc2VyKGds
b2JhbE9iamVjdCwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5ndGgoKSwgTm9uU3RyaWN0SlNPTiwg
bnVsbHB0cik7CisgICAgICAgIHBhcnNlZE9iamVjdCA9IHByZXBhcnNlci50cnlMaXRlcmFsUGFy
c2UoKTsKKyAgICB9CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CisgICAgaWYgKHBhcnNlZE9iamVjdCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShwYXJzZWRPYmplY3QpOworCisgICAgTmFrZWRQdHI8SlNPYmplY3Q+IGV4ZWN1dGFibGVF
cnJvcjsKKyAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2UocywgY2FsbEZyYW1lLT5j
YWxsZXJTb3VyY2VPcmlnaW4odm0pKTsKKyAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEluZGly
ZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZVNhZmUocmVhbG1HbG9iYWxPYmplY3QsIHNvdXJjZSwg
RGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lLCBl
eGVjdXRhYmxlRXJyb3IpOworICAgIGlmIChleGVjdXRhYmxlRXJyb3IpIHsKKyAgICAgICAgRXJy
b3JJbnN0YW5jZSogZXJyb3IgPSBqc0R5bmFtaWNDYXN0PEVycm9ySW5zdGFuY2UqPih2bSwgSlNW
YWx1ZShleGVjdXRhYmxlRXJyb3IuZ2V0KCkpKTsKKyAgICAgICAgaWYgKGVycm9yICE9IG51bGxw
dHIgJiYgZXJyb3ItPmVycm9yVHlwZSgpID09IEVycm9yVHlwZTo6U3ludGF4RXJyb3IpIHsKKyAg
ICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgICAgICBjb25zdCBTdHJp
bmcgc3ludGF4RXJyb3JNZXNzYWdlID0gZXJyb3ItPnNhbml0aXplZE1lc3NhZ2VTdHJpbmcoZ2xv
YmFsT2JqZWN0KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisgICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3lu
dGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCBzeW50YXhFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkVycm9yIGVuY291bnRlcmVkIGR1cmluZyBldmFsdWF0
aW9uIl9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CisgICAgfQorICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBKU1Zh
bHVlIHJlc3VsdCA9IHZtLmludGVycHJldGVyLT5leGVjdXRlKGV2YWwsIHJlYWxtR2xvYmFsT2Jq
ZWN0LCByZWFsbUdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpLCByZWFsbUdsb2JhbE9iamVjdC0+
Z2xvYmFsU2NvcGUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwKKyAgICAgICAg
dGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsICJFcnJvciBlbmNvdW50ZXJlZCBkdXJpbmcgZXZhbHVhdGlvbiJfcykpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZWFlYjBiOGJhYjM5YzE2Nzk2
MDE5NmI0MmY2NDIxZmNlNTFlYzliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuaApAQCAtMCwwICsxLDY2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IFNoYWRvd1JlYWxtUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewor
cHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgU3Vic3BhY2VBY2Nlc3M+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCisgICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShTaGFkb3dSZWFsbVByb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICB9CisKKyAgICBzdGF0aWMgU2hhZG93UmVhbG1Qcm90b3R5cGUqIGNy
ZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgU2hhZG93
UmVhbG1Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFNo
YWRvd1JlYWxtUHJvdG90eXBlPih2bS5oZWFwKSkgU2hhZG93UmVhbG1Qcm90b3R5cGUodm0sIHN0
cnVjdHVyZSk7CisgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAg
ICByZXR1cm4gcHJvdG90eXBlOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBTaGFkb3dSZWFsbVByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mKTsKK307CisKK0pTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oaW1wb3J0SW5S
ZWFsbSk7CitKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGV2YWxJblJlYWxtKTsKKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggOTk2YTA2
ZGFhYmE4MmNjZWZiNDNkZjNmNjVmMTMxZTZmZGU2ZWUwNy4uY2U0ZTNiOTNmMzQ1NGQ3MmQzNGYz
ZGJhNTBhMDQxZGYyMWRlNmEyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApA
QCAtMTU0LDYgKzE1NCw3IEBACiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgogI2luY2x1
ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNoYWRvd0NoaWNrZW4uaCIKKyNpbmNs
dWRlICJTaGFkb3dSZWFsbU9iamVjdC5oIgogI2luY2x1ZGUgIlNpbXBsZVR5cGVkQXJyYXlDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXJDYWNoZS5oIgogI2luY2x1ZGUgIlN0
cmljdEV2YWxBY3RpdmF0aW9uLmgiCkBAIC0zNjgsNiArMzY5LDcgQEAgVk06OlZNKFZNVHlwZSB2
bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1bkxvb3AsIGJvb2wqIHN1
Y2Nlc3MpCiAgICAgLCBwcm9taXNlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNQcm9taXNlKQogICAgICwgcHJvcGVydHlOYW1lRW51bWVyYXRv
clNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvcikKICAgICAsIHByb3BlcnR5VGFibGVTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBQcm9w
ZXJ0eVRhYmxlKSAvLyBIYXNoOjB4YzZiYzlmMTIKKyAgICAsIHNoYWRvd1JlYWxtU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQoaGVhcCwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgU2hhZG93UmVhbG1P
YmplY3QpCiAgICAgLCByZWdFeHBTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBSZWdFeHApCiAgICAgLCByZWdFeHBPYmplY3RT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBSZWdF
eHBPYmplY3QpCiAgICAgLCByb3BlU3RyaW5nU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwg
c3RyaW5nSGVhcENlbGxUeXBlLmdldCgpLCBKU1JvcGVTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAppbmRleCA3YTU4YjI3OWU2NzBhODQwM2QxZjM5NDEyMzU3ZDVlNzcxMTNmNTc4
Li5hODg3YThlNTAyMTY4MGFhYWQxZWI1ZDg1ZmQ0NTdjZGI1OWRmM2M5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTUxMiw2ICs1MTIsNyBAQCBwdWJsaWM6CiAgICAgSXNvU3Vi
c3BhY2UgcHJvbWlzZVNwYWNlOwogICAgIElzb1N1YnNwYWNlIHByb3BlcnR5TmFtZUVudW1lcmF0
b3JTcGFjZTsKICAgICBJc29TdWJzcGFjZSBwcm9wZXJ0eVRhYmxlU3BhY2U7CisgICAgSXNvU3Vi
c3BhY2Ugc2hhZG93UmVhbG1TcGFjZTsKICAgICBJc29TdWJzcGFjZSByZWdFeHBTcGFjZTsKICAg
ICBJc29TdWJzcGFjZSByZWdFeHBPYmplY3RTcGFjZTsKICAgICBJc29TdWJzcGFjZSByb3BlU3Ry
aW5nU3BhY2U7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDgxZWU4NjBiZDg2ZTVlODg1NDhhMWMzM2U0ZmFkYjI2MjY3OTdjZjEuLjdlMDI0
ZjgzZmRiNmQ2ZjcwMjAwOTEzMGVmODNmNmFhZGY4NTY0NmIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjEt
MDktMjEgIFBoaWxsaXAgTWF0ZXMgIDxwbWF0ZXNAaWdhbGlhLmNvbT4KKworICAgICAgICBUZXN0
IGNvdmVyYWdlIGZvciBKU0Mgc2hhZG93IHJlYWxtcyBpbXBsZW1lbnRhdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNjAyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtb2R1bGVzL2ltcG9ydC1t
ZXRhLXN5bnRheC5qczoKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKiBzdHJlc3Mv
aW1wb3J0LXN5bnRheC5qczoKKyAgICAgICAgKiBzdHJlc3MvcmVzb3VyY2VzL3NoYWRvdy1yZWFs
bS1leGFtcGxlLW1vZHVsZS5qczogQWRkZWQuCisgICAgICAgIChwdXRJbkdsb2JhbCk6CisgICAg
ICAgIChnZXRGcm9tR2xvYmFsKToKKyAgICAgICAgKGdldEFuT2JqZWN0KToKKyAgICAgICAgKGdl
dENhbGxDb3VudCk6CisgICAgICAgICogc3RyZXNzL3NoYWRvdy1yZWFsbS1ldmFsdWF0ZS5qczog
QWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAg
ICAgIChhc3NlcnRpb25Gbik6CisgICAgICAgIChzaG91bGRCZS5TdHJpbmcpOgorICAgICAgICAo
c2hvdWxkQmUuZ2xvYmFsT2JqZWN0Rm9yLmRvRXZhbCk6CisgICAgICAgIChzaG91bGRCZS5nbG9i
YWxPYmplY3RGb3IpOgorICAgICAgICAqIHN0cmVzcy9zaGFkb3ctcmVhbG0taW1wb3J0LXZhbHVl
LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToK
KyAgICAgICAgKGFzeW5jIHNob3VsZFRocm93QXN5bmMpOgorICAgICAgICAoYXN5bmMgY29uc3Qp
OgorICAgICAgICAoZG9JbXBvcnQpOgorICAgICAgICAqIHN0cmVzcy9zaGFkb3ctcmVhbG0uanM6
IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGhyb3cubmV3LkVycm9yKToK
KwogMjAyMS0wOS0yMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtKU0NdIENvbXBhcmVTdHJpY3RFcSBpcyBvbWl0dGluZyBTdHJpbmcgY2hlY2sgaW5jb3Jy
ZWN0bHkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbW9kdWxlcy9pbXBvcnQtbWV0YS1zeW50YXguanMg
Yi9KU1Rlc3RzL21vZHVsZXMvaW1wb3J0LW1ldGEtc3ludGF4LmpzCmluZGV4IDNlZGY0ZTUxMjBl
MTJhNWI2ODk0OTEzYjA1YWE3MGFjNjc2ODU2NjIuLjU5YTJiMzYzNDYwYTYwMzVjN2ExMDVmMDhj
MjM2ZjlmNGE5NDM1MWEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvbW9kdWxlcy9pbXBvcnQtbWV0YS1z
eW50YXguanMKKysrIGIvSlNUZXN0cy9tb2R1bGVzL2ltcG9ydC1tZXRhLXN5bnRheC5qcwpAQCAt
MTAsNyArMTAsNyBAQCBzaG91bGROb3RUaHJvdygoKSA9PiB7CiAKIHNob3VsZFRocm93KCgpID0+
IHsKICAgICBjaGVja01vZHVsZVN5bnRheChgKGltcG9ydC5jb2NvYSlgKTsKLX0sIGBTeW50YXhF
cnJvcjogVW5leHBlY3RlZCBpZGVudGlmaWVyICdjb2NvYScuICJpbXBvcnQuIiBjYW4gb25seSBm
b2xsb3dlZCB3aXRoIG1ldGEuOjFgKTsKK30sIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCBpZGVu
dGlmaWVyICdjb2NvYScuICJpbXBvcnQuIiBjYW4gb25seSBiZSBmb2xsb3dlZCB3aXRoIG1ldGEu
OjFgKTsKIAogc2hvdWxkVGhyb3coKCkgPT4gewogICAgIGNoZWNrTW9kdWxlU3ludGF4KGAoaW1w
b3J0WyJDb2NvYSJdKWApOwpAQCAtMTgsNyArMTgsNyBAQCBzaG91bGRUaHJvdygoKSA9PiB7CiAK
IHNob3VsZFRocm93KCgpID0+IHsKICAgICBjaGVja01vZHVsZVN5bnRheChgaW1wb3J0LmNvY29h
YCk7Ci19LCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgaWRlbnRpZmllciAnY29jb2EnLiAiaW1w
b3J0LiIgY2FuIG9ubHkgZm9sbG93ZWQgd2l0aCBtZXRhLjoxYCk7Cit9LCBgU3ludGF4RXJyb3I6
IFVuZXhwZWN0ZWQgaWRlbnRpZmllciAnY29jb2EnLiAiaW1wb3J0LiIgY2FuIG9ubHkgYmUgZm9s
bG93ZWQgd2l0aCBtZXRhLjoxYCk7CiAKIHNob3VsZFRocm93KCgpID0+IHsKICAgICBjaGVja01v
ZHVsZVN5bnRheChgaW1wb3J0WyJDb2NvYSJdYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9pbXBvcnQtc3ludGF4LmpzIGIvSlNUZXN0cy9zdHJlc3MvaW1wb3J0LXN5bnRheC5qcwppbmRl
eCAyNWEzZmJiZjY4NjYxNTdiMTc1ZGE4ZWRhZTc4YzBlOWUyODE1YzI2Li45NGUwODUwZjdiMjg5
MmE4NjFhZDVkMGY0NTBmZjQ0ZjkxNzI0ZDIxIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9p
bXBvcnQtc3ludGF4LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ltcG9ydC1zeW50YXguanMKQEAg
LTI5LDcgKzI5LDcgQEAgYXN5bmMgZnVuY3Rpb24gdGVzdFN5bnRheChzY3JpcHQsIG1lc3NhZ2Up
IHsKIAogdGVzdFN5bnRheEVycm9yKGBpbXBvcnQpYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVk
IHRva2VuICcpJy4gaW1wb3J0IGNhbGwgZXhwZWN0cyBleGFjdGx5IG9uZSBhcmd1bWVudC5gKTsK
IHRlc3RTeW50YXhFcnJvcihgbmV3IGltcG9ydChgLCBgU3ludGF4RXJyb3I6IENhbm5vdCB1c2Ug
bmV3IHdpdGggaW1wb3J0LmApOwotdGVzdFN5bnRheEVycm9yKGBpbXBvcnQuaGVsbG8oKWAsIGBT
eW50YXhFcnJvcjogVW5leHBlY3RlZCBpZGVudGlmaWVyICdoZWxsbycuICJpbXBvcnQuIiBjYW4g
b25seSBmb2xsb3dlZCB3aXRoIG1ldGEuYCk7Cit0ZXN0U3ludGF4RXJyb3IoYGltcG9ydC5oZWxs
bygpYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGlkZW50aWZpZXIgJ2hlbGxvJy4gImltcG9y
dC4iIGNhbiBvbmx5IGJlIGZvbGxvd2VkIHdpdGggbWV0YS5gKTsKIHRlc3RTeW50YXhFcnJvcihg
aW1wb3J0W2AsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnWycuIGltcG9ydCBjYWxs
IGV4cGVjdHMgZXhhY3RseSBvbmUgYXJndW1lbnQuYCk7CiB0ZXN0U3ludGF4RXJyb3IoYGltcG9y
dDxgLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJzwnLiBpbXBvcnQgY2FsbCBleHBl
Y3RzIGV4YWN0bHkgb25lIGFyZ3VtZW50LmApOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9yZXNvdXJjZXMvc2hhZG93LXJlYWxtLWV4YW1wbGUtbW9kdWxlLmpzIGIvSlNUZXN0cy9zdHJl
c3MvcmVzb3VyY2VzL3NoYWRvdy1yZWFsbS1leGFtcGxlLW1vZHVsZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
YjRmNTc5YzJmOWE2ZGMyMzkwYmUyZmEwNTVjZTY4ZDY4MDMzMGYzCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvcmVzb3VyY2VzL3NoYWRvdy1yZWFsbS1leGFtcGxlLW1vZHVsZS5q
cwpAQCAtMCwwICsxLDI1IEBACit2YXIgY2FsbENvdW50ID0gMDsKKworZnVuY3Rpb24gcHV0SW5H
bG9iYWwoa2V5LCB2YWwpIHsKKyAgICBjYWxsQ291bnQrKzsKKyAgICBnbG9iYWxUaGlzLmtleSA9
IHZhbDsKK30KKworZnVuY3Rpb24gZ2V0RnJvbUdsb2JhbChrZXkpIHsKKyAgICBjYWxsQ291bnQr
KzsKKyAgICByZXR1cm4gZ2xvYmFsVGhpcy5rZXk7Cit9CisKK3ZhciBhbk9iamVjdCA9IG5ldyBP
YmplY3QoKTsKKworZnVuY3Rpb24gZ2V0QW5PYmplY3QoKSB7CisgICAgY2FsbENvdW50Kys7Cisg
ICAgcmV0dXJuIGFuT2JqZWN0OworfQorCitmdW5jdGlvbiBnZXRDYWxsQ291bnQoKSB7CisgICAg
cmV0dXJuIGNhbGxDb3VudDsKK30KKwordmFyIGFuc3dlciA9IDY7CitleHBvcnQgeyBhbk9iamVj
dCwgYW5zd2VyLCBnZXRDYWxsQ291bnQsIGdldEZyb21HbG9iYWwsIGdldEFuT2JqZWN0LCBwdXRJ
bkdsb2JhbCB9OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc2hhZG93LXJlYWxtLWV2YWx1
YXRlLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc2hhZG93LXJlYWxtLWV2YWx1YXRlLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjEwMzYwMzExOWI4MjIyZDkwM2RmZTViNjM1YjJjZjg4N2ZjNzZlNWYKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zaGFkb3ctcmVhbG0tZXZhbHVhdGUuanMKQEAgLTAsMCAr
MSwxNTMgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VTaGFkb3dSZWFsbT0xIikKKworZnVu
Y3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1
dCBnb3QgJHthY3R1YWx9YCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9y
VHlwZSwgYXNzZXJ0aW9uRm4pIHsKKyAgICBsZXQgZXJyb3I7CisgICAgdHJ5IHsKKyAgICAgICAg
ZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKwor
ICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKGBFeHBlY3RlZCAke2Vycm9yVHlwZS5uYW1lfSBidXQgZ290ICR7ZXJyb3IubmFtZX1g
KTsKKworICAgIGFzc2VydGlvbkZuKGVycm9yKTsKK30KKworLy8gYmFzaWMgZXZhbHVhdGlvbiBh
bmQgc3RhdGUgc2V0dGluZworeworICAgIGxldCByZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOwor
ICAgIGxldCBvdGhlclJlYWxtID0gbmV3IFNoYWRvd1JlYWxtKCk7CisKKyAgICBzaG91bGRCZShy
ZWFsbS5ldmFsdWF0ZSgiMSIpLCAxKTsKKyAgICB2YXIgeCA9IDI7CisgICAgcmVhbG0uZXZhbHVh
dGUoInZhciB4ID0gMSIpOworICAgIHNob3VsZEJlKHJlYWxtLmV2YWx1YXRlKCJ4IiksIDEpOwor
ICAgIHNob3VsZEJlKHgsIDIpOworCisgICAgLy8gc2NvcGUgaXNuJ3Qgc2hhcmVkIGFjcm9zcyBy
ZWFsbXMKKyAgICBzaG91bGRCZShvdGhlclJlYWxtLmV2YWx1YXRlKCJnbG9iYWxUaGlzLngiKSwg
dW5kZWZpbmVkKTsKK30KKworLy8gYWNjZXNzaW5nIGBnbG9iYWxUaGlzYCB3aXRoaW4gYW5kIG91
dHNpZGUgb2YgYSBzaGFkb3cgcmVhbG0KK3sKKyAgICBsZXQgcmVhbG0gPSBuZXcgU2hhZG93UmVh
bG0oKTsKKyAgICBnbG9iYWxUaGlzLmhpID0gNjsKKworICAgIHNob3VsZEJlKHJlYWxtLmV2YWx1
YXRlKCJnbG9iYWxUaGlzLmhpIiksIHVuZGVmaW5lZCk7CisKKyAgICByZWFsbS5ldmFsdWF0ZSgi
Z2xvYmFsVGhpcy5oaSA9ICdmYWxhIGFtaWdvJyIpOworCisgICAgc2hvdWxkQmUocmVhbG0uZXZh
bHVhdGUoImdsb2JhbFRoaXMuaGkiKSwgImZhbGEgYW1pZ28iKTsKKyAgICBzaG91bGRCZShnbG9i
YWxUaGlzLmhpLCA2KTsKK30KKworLy8gZW5zdXJlIHRoYXQgZXJyb3JzIHRocm93biBpc24ndCBh
c3NvY2lhdGVkIHdpdGggdGhlIHNoYWRvdyByZWFsbSdzIGdsb2JhbCBvYmplY3QKK3sKKyAgICBs
ZXQgcmVhbG0gPSBuZXcgU2hhZG93UmVhbG0oKTsKKyAgICBzaG91bGRUaHJvdygKKyAgICAgICgp
ID0+IHsgcmVhbG0uZXZhbHVhdGUoIi4uIik7IH0sCisgICAgICBTeW50YXhFcnJvciwKKyAgICAg
IChlcnIpID0+IHsKKyAgICAgICAgICBzaG91bGRCZSgkLmdsb2JhbE9iamVjdEZvcihlcnIpLCBn
bG9iYWxUaGlzKTsKKyAgICAgICAgICBzaG91bGRCZShTdHJpbmcoZXJyKSwgYFN5bnRheEVycm9y
OiBVbmV4cGVjdGVkIHRva2VuICcuJ2ApOworICAgICAgfSk7Cit9CisKKy8vIGVuc3VyZSB0aGF0
IGVycm9ycyB0aHJvd24gZG9uJ3QgY2FycnkgaW5mb3JtYXRpb24gZnJvbSB0aGUgc2hhZG93IHJl
YWxtCit7CisgICAgbGV0IHJlYWxtID0gbmV3IFNoYWRvd1JlYWxtKCk7CisgICAgc2hvdWxkVGhy
b3coCisgICAgICAoKSA9PiB7IHJlYWxtLmV2YWx1YXRlKCJ0aHJvdyBuZXcgRXJyb3IoJ3NlY3Jl
dCcpIik7IH0sCisgICAgICBUeXBlRXJyb3IsCisgICAgICAoZXJyKSA9PiB7CisgICAgICAgICAg
c2hvdWxkQmUoJC5nbG9iYWxPYmplY3RGb3IoZXJyKSwgZ2xvYmFsVGhpcyk7CisgICAgICAgICAg
c2hvdWxkQmUoU3RyaW5nKGVyciksICJUeXBlRXJyb3I6IEVycm9yIGVuY291bnRlcmVkIGR1cmlu
ZyBldmFsdWF0aW9uIik7CisgICAgICB9KTsKK30KKworLy8gd3JhcHBlZCBmdW5jdGlvbnMgcHJv
dGVjdCB0aGUgc2hhZG93IHJlYWxtCit7CisgICAgbGV0IHJlYWxtID0gbmV3IFNoYWRvd1JlYWxt
KCk7CisgICAgbGV0IHdyYXBwZWRJbnZva2VBbmRBZGQgPSByZWFsbS5ldmFsdWF0ZSgiZnVuY3Rp
b24gaW52b2tlQW5kQWRkKHhGbiwgeUZuKSB7IHJldHVybiB4Rm4oKSArIHlGbigpOyB9OyBpbnZv
a2VBbmRBZGQiKTsKKyAgICBzaG91bGRCZSh3cmFwcGVkSW52b2tlQW5kQWRkKCgpID0+IHsgcmV0
dXJuIDEgfSwgKCkgPT4geyByZXR1cm4gMiB9KSwgMyk7CisgICAgc2hvdWxkQmUoJC5nbG9iYWxP
YmplY3RGb3Iod3JhcHBlZEludm9rZUFuZEFkZCksIGdsb2JhbFRoaXMpOworCisgICAgLy8gbmFt
ZSBhbmQgbGVuZ3RoIHByb3BlcnRpZXMgZnJvbSB3cmFwcGVkIGZ1bmN0aW9uIGFyZSBhYnNlbnQK
KyAgICBzaG91bGRCZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdyYXBwZWRJbnZv
a2VBbmRBZGQsICJsZW5ndGgiKSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKHdyYXBwZWRJbnZva2VBbmRBZGQsICJuYW1lIiksIHVuZGVm
aW5lZCk7CisKKyAgICAvLyBjYW4ndCBwYXNzIG9iamVjdHMgaW50byBhIHNoYWRvdyByZWFsbS13
cmFwcGVkIGZ1bmN0aW9uCisgICAgbGV0IG51bWJlck9iaiA9IHsgdmFsdWVPZigpIHsgcmV0dXJu
IC0xIH0gfTsKKyAgICBzaG91bGRUaHJvdygKKyAgICAgICgpID0+IHsgd3JhcHBlZEludm9rZUFu
ZEFkZChudW1iZXJPYmosIDEpOyB9LAorICAgICAgVHlwZUVycm9yLAorICAgICAgKGVycikgPT4g
eworICAgICAgICAgIHNob3VsZEJlKCQuZ2xvYmFsT2JqZWN0Rm9yKGVyciksIGdsb2JhbFRoaXMp
OworICAgICAgICAgIHNob3VsZEJlKFN0cmluZyhlcnIpLCAiVHlwZUVycm9yOiB2YWx1ZSBwYXNz
aW5nIGJldHdlZW4gcmVhbG1zIG11c3QgYmUgY2FsbGFibGUgb3IgcHJpbWl0aXZlIik7CisgICAg
ICB9KTsKK30KKworeworICAgIGxldCByZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOworICAgIC8v
IGNhbid0IGNhbGwgYGV2YWx1YXRlYCBvbiBhIG5vbiBzaGFkb3cgcmVhbG0KKyAgICBsZXQgbm90
UmVhbG0gPSB7fTsKKyAgICBzaG91bGRUaHJvdygKKyAgICAgICgpID0+IHsgcmVhbG0uZXZhbHVh
dGUuY2FsbChub3RSZWFsbSwgJzEnKTsgfSwKKyAgICAgIFR5cGVFcnJvciwKKyAgICAgIChlcnIp
ID0+IHsgc2hvdWxkQmUoJC5nbG9iYWxPYmplY3RGb3IoZXJyKSwgZ2xvYmFsVGhpcyk7IH0KKyAg
ICApOworfQorCisvLyB0cmlnZ2VyIEpJVAoreworICAgIGZ1bmN0aW9uIGRvRXZhbChyZWFsbSwg
cykKKyAgICB7CisgICAgICAgIHJldHVybiByZWFsbS5ldmFsdWF0ZShzKTsKKyAgICB9CisKKyAg
ICBub0lubGluZShkb0V2YWwpOworCisgICAgbGV0IHJlYWxtID0gbmV3IFNoYWRvd1JlYWxtKCk7
CisgICAgcmVhbG0uZXZhbHVhdGUoImdsb2JhbFRoaXMuc2VjcmV0ID0gMTsiKTsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpCisgICAgICAgIHNob3VsZEJlKGRvRXZhbChyZWFs
bSwgJzQyJyksIDQyKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgewor
ICAgICAgICBsZXQgZiA9IGRvRXZhbChyZWFsbSwgJyh4KSA9PiB7IHJldHVybiB4KCkgKyBnbG9i
YWxUaGlzLnNlY3JldDsgfScpOworICAgICAgICBzaG91bGRCZSgkLmdsb2JhbE9iamVjdEZvcihm
KSwgZ2xvYmFsVGhpcyk7CisgICAgICAgIHNob3VsZEJlKGYoKCkgPT4geyByZXR1cm4gNDE7IH0p
LCA0Mik7CisgICAgfQorICAgIC8vIChwb3RlbnRpYWwpIGlubGluaW5nIG9mIHdyYXBwZWQgZnVu
Y3Rpb24gdXNlcyBjb3JyZWN0IGdsb2JhbCBvYmplY3QKKyAgICBsZXQgZiA9IGRvRXZhbChyZWFs
bSwgJyh4KSA9PiB7IHJldHVybiB4KCkgKyBnbG9iYWxUaGlzLnNlY3JldDsgfScpOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgICAgICBzaG91bGRCZSgkLmdsb2Jh
bE9iamVjdEZvcihmKSwgZ2xvYmFsVGhpcyk7CisgICAgICAgIHNob3VsZEJlKGYoKCkgPT4geyBy
ZXR1cm4gNDE7IH0pLCA0Mik7CisgICAgfQorICAgIC8vIChwb3RlbnRpYWwpIGlubGluaW5nIGlu
c2lkZSBhIHJlYWxtIHVzZXMgY29ycmVjdCBnbG9iYWwgb2JqZWN0CisgICAgbGV0IGxvb3BJbnNp
ZGUgPSBkb0V2YWwocmVhbG0sICcoeCkgPT4geyBsZXQgYWNjID0gMDsgZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDAwMDsgKytpKSB7IGFjYyArPSB4KCk7IH07IHJldHVybiBhY2M7IH0nKTsKKyAgICBn
bG9iYWxUaGlzLnNlY3JldCA9IC0xOworICAgIHNob3VsZEJlKGxvb3BJbnNpZGUoKCkgPT4geyBy
ZXR1cm4gZ2xvYmFsVGhpcy5zZWNyZXQ7IH0pLCAtMTAwMDApOworfQorCisvLyBldmFsdWF0ZSBz
cGVjcworeworICAgIHNob3VsZEJlKHR5cGVvZiBTaGFkb3dSZWFsbS5wcm90b3R5cGUuZXZhbHVh
dGUsICJmdW5jdGlvbiIpOworCisgICAgbGV0IGV2YWx1YXRlTmFtZSA9IE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoU2hhZG93UmVhbG0ucHJvdG90eXBlLmV2YWx1YXRlLCAibmFtZSIp
OworICAgIHNob3VsZEJlKGV2YWx1YXRlTmFtZS52YWx1ZSwgImV2YWx1YXRlIik7CisgICAgc2hv
dWxkQmUoZXZhbHVhdGVOYW1lLmVudW1lcmFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShldmFs
dWF0ZU5hbWUud3JpdGFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShldmFsdWF0ZU5hbWUuY29u
ZmlndXJhYmxlLCB0cnVlKTsKKworICAgIGxldCBldmFsdWF0ZUxlbmd0aCA9IE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoU2hhZG93UmVhbG0ucHJvdG90eXBlLmV2YWx1YXRlLCAibGVu
Z3RoIik7CisgICAgc2hvdWxkQmUoZXZhbHVhdGVMZW5ndGgudmFsdWUsIDEpOworICAgIHNob3Vs
ZEJlKGV2YWx1YXRlTGVuZ3RoLmVudW1lcmFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShldmFs
dWF0ZUxlbmd0aC53cml0YWJsZSwgZmFsc2UpOworICAgIHNob3VsZEJlKGV2YWx1YXRlTGVuZ3Ro
LmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zaGFk
b3ctcmVhbG0taW1wb3J0LXZhbHVlLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc2hhZG93LXJlYWxtLWlt
cG9ydC12YWx1ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDNjZDhlNjIzZjFmNmQxMzkzMWM3YjlkYjhkZGUz
MDg0NjA4YTg1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc2hhZG93LXJlYWxt
LWltcG9ydC12YWx1ZS5qcwpAQCAtMCwwICsxLDE0OCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCIt
LXVzZVNoYWRvd1JlYWxtPTEiKQorCit2YXIgYWJvcnQgPSAkdm0uYWJvcnQ7CisKK2Z1bmN0aW9u
IHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290
ICR7YWN0dWFsfWApOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUp
IHsKKyAgICBsZXQgZXJyb3I7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKworICAgIGlmICghKGVycm9yIGlu
c3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAk
e2Vycm9yVHlwZS5uYW1lfSEgZ290ICR7ZXJyb3IubmFtZX1gKTsKK30KKworYXN5bmMgZnVuY3Rp
b24gc2hvdWxkVGhyb3dBc3luYyhmdW5jLCBlcnJvclR5cGUpIHsKKyAgICBsZXQgZXJyb3I7Cisg
ICAgdHJ5IHsKKyAgICAgICAgYXdhaXQgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgZXJyb3IgPSBlOworICAgIH0KKworICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgZXJyb3JU
eXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2Vycm9yVHlwZS5uYW1l
fSEgZ290ICR7ZXJyb3IubmFtZX0gd2l0aCBtZXNzYWdlICR7ZXJyb3IubWVzc2FnZX1gKTsKK30K
KworKGFzeW5jIGZ1bmN0aW9uICgpIHsKKyAgICBjb25zdCBpbXBvcnRQYXRoID0gIi4vcmVzb3Vy
Y2VzL3NoYWRvdy1yZWFsbS1leGFtcGxlLW1vZHVsZS5qcyI7CisgICAgY29uc3QgeyBhbnN3ZXIs
IGdldENhbGxDb3VudCwgcHV0SW5HbG9iYWwsIGdldEZyb21HbG9iYWwsIGdldEFuT2JqZWN0IH0g
PSBhd2FpdCBpbXBvcnQoaW1wb3J0UGF0aCk7CisgICAgY29uc3Qgb3V0ZXJBbnN3ZXIgPSBhbnN3
ZXI7CisgICAgY29uc3Qgb3V0ZXJHZXRDYWxsQ291bnQgPSBnZXRDYWxsQ291bnQ7CisgICAgY29u
c3Qgb3V0ZXJQdXRJbkdsb2JhbCA9IHB1dEluR2xvYmFsOworICAgIGNvbnN0IG91dGVyR2V0RnJv
bUdsb2JhbCA9IGdldEZyb21HbG9iYWw7CisgICAgY29uc3Qgb3V0ZXJHZXRBbk9iamVjdCA9IGdl
dEFuT2JqZWN0OworCisgICAgeworICAgICAgICBsZXQgcmVhbG0gPSBuZXcgU2hhZG93UmVhbG0o
KTsKKworICAgICAgICAvLyB1cGRhdGUgbG9jYWwgbW9kdWxlIHN0YXRlICsgY2hlY2sgaXQKKyAg
ICAgICAgc2hvdWxkQmUob3V0ZXJHZXRDYWxsQ291bnQoKSwgMCk7CisgICAgICAgIG91dGVyR2V0
QW5PYmplY3QoKTsKKyAgICAgICAgc2hvdWxkQmUob3V0ZXJHZXRDYWxsQ291bnQoKSwgMSk7Cisg
ICAgICAgIC8vIHVwZGF0ZSByZWFsbSBtb2R1bGUgc3RhdGUgKyBjaGVjayBpdAorICAgICAgICBs
ZXQgaW5uZXJHZXRDYWxsQ291bnQgPSBhd2FpdCByZWFsbS5pbXBvcnRWYWx1ZShpbXBvcnRQYXRo
LCAiZ2V0Q2FsbENvdW50Iik7CisgICAgICAgIGxldCBpbm5lclB1dEluR2xvYmFsID0gYXdhaXQg
cmVhbG0uaW1wb3J0VmFsdWUoaW1wb3J0UGF0aCwgInB1dEluR2xvYmFsIik7CisgICAgICAgIHNo
b3VsZEJlKGlubmVyR2V0Q2FsbENvdW50KCksIDApOworICAgICAgICBpbm5lclB1dEluR2xvYmFs
KCJzb21ldGhpbmciLCAicmFuZG9tIik7CisgICAgICAgIHNob3VsZEJlKGlubmVyR2V0Q2FsbENv
dW50KCksIDEpOworICAgICAgICAvLyByZS1pbXBvcnRpbmcgdGhlIG1vZHVsZSBpbnRvIHRoZSBy
ZWFsbSBkb2Vzbid0IHJlbG9hZCB0aGUgbW9kdWxlCisgICAgICAgIGlubmVyR2V0Q2FsbENvdW50
ID0gYXdhaXQgcmVhbG0uaW1wb3J0VmFsdWUoaW1wb3J0UGF0aCwgImdldENhbGxDb3VudCIpOwor
ICAgICAgICBzaG91bGRCZShpbm5lckdldENhbGxDb3VudCgpLCAxKTsKKyAgICAgICAgLy8gdGhl
IChvdXRlcikgbG9jYWwgbW9kdWxlIHN0YXRlIHN0YXlzIGludGFjdAorICAgICAgICBzaG91bGRC
ZShvdXRlckdldENhbGxDb3VudCgpLCAxKTsKKworICAgICAgICAvLyBvbmUgY2FuIGltcG9ydGVk
IHByaW1pdGl2ZS9jYWxsYWJsZSB2YXJpYWJsZXMganVzdCBmaW5lCisgICAgICAgIC8vIHNob3Vs
ZEJlKGlubmVyQW5zd2VyLCBvdXRlckFuc3dlcik7CisgICAgICAgIGxldCBpbm5lckFuc3dlciA9
IGF3YWl0IHJlYWxtLmltcG9ydFZhbHVlKGltcG9ydFBhdGgsICJhbnN3ZXIiKTsKKyAgICAgICAg
c2hvdWxkQmUoaW5uZXJBbnN3ZXIsIG91dGVyQW5zd2VyKTsKKworICAgICAgICAvLyBpbXBvcnRl
ZCB2YXJpYWJsZXMgYXJlIGNoZWNrZWQgZm9yIHByaW10aXZlL2NhbGxhYmxlLW5lc3MKKyAgICAg
ICAgYXdhaXQgc2hvdWxkVGhyb3dBc3luYyhhc3luYyAoKSA9PiB7IGxldCB4ID0gYXdhaXQgcmVh
bG0uaW1wb3J0VmFsdWUoaW1wb3J0UGF0aCwgImFuT2JqZWN0Iik7IH0sIFR5cGVFcnJvcik7CisK
KyAgICAgICAgLy8gaW1wb3J0aW5nIG5vbi1leGlzdGVudCByZWYgZmFpbHMKKyAgICAgICAgYXdh
aXQgc2hvdWxkVGhyb3dBc3luYyhhc3luYyAoKSA9PiB7IGxldCB4ID0gYXdhaXQgcmVhbG0uaW1w
b3J0VmFsdWUoaW1wb3J0UGF0aCwgIm5vdGhpbmciKTsgfSwgVHlwZUVycm9yKTsKKworICAgICAg
ICAvLyBpbXBvcnRpbmcgZnJvbSBub24tZXhpc3RlbnQgZmlsZSBmYWlscworICAgICAgICBhd2Fp
dCBzaG91bGRUaHJvd0FzeW5jKGFzeW5jICgpID0+IHsgbGV0IHggPSBhd2FpdCByZWFsbS5pbXBv
cnRWYWx1ZSgicmFuZG9tIiwgIm5vdGhpbmciKTsgfSwgVHlwZUVycm9yKTsKKworICAgICAgICAv
LyB3ZSBjYW4gaW1wb3J0IGZ1bmN0aW9ucyB0aHJvdWdoIGFuIGlubmVyIHJlYWxtIGZvciB1c2Ug
aW4gdGhlIG91dGVyCisgICAgICAgIGxldCBpbm5lckdldEZyb21HbG9iYWwgPSBhd2FpdCByZWFs
bS5pbXBvcnRWYWx1ZShpbXBvcnRQYXRoLCAiZ2V0RnJvbUdsb2JhbCIpOworICAgICAgICBpbm5l
clB1dEluR2xvYmFsKCJzYWx1dGF0aW9uIiwgInNhcmF2YSIpOworICAgICAgICBzaG91bGRCZShp
bm5lckdldEZyb21HbG9iYWwoInNhbHV0YXRpb24iKSwgInNhcmF2YSIpOworCisgICAgICAgIC8v
IGlubmVyIGdsb2JhbCBzdGF0ZSBpcyB1bmNoYW5nZWQgYnkgb3V0ZXIgZ2xvYmFsIHN0YXRlIGNo
YW5nZQorICAgICAgICBvdXRlclB1dEluR2xvYmFsKCJzYWx1dGF0aW9uIiwgImhlbGxvIHdvcmxk
ISIpOworICAgICAgICBzaG91bGRCZShvdXRlckdldEZyb21HbG9iYWwoInNhbHV0YXRpb24iKSwg
ImhlbGxvIHdvcmxkISIpOworICAgICAgICBzaG91bGRCZShpbm5lckdldEZyb21HbG9iYWwoInNh
bHV0YXRpb24iKSwgInNhcmF2YSIpOworCisgICAgICAgIC8vIHdyYXBwZWQgZnVuY3Rpb25zIGNo
ZWNrIGFyZ3VtZW50cyBmb3IgcHJpbWl0aXZlL2NhbGxhYmxlLW5lc3MKKyAgICAgICAgc2hvdWxk
VGhyb3coKCkgPT4geyBpbm5lclB1dEluR2xvYmFsKCJ0cmVhc3VyZSIsIG5ldyBPYmplY3QoKSk7
IH0sIFR5cGVFcnJvcik7CisKKyAgICAgICAgLy8gaW1wb3J0ZWQgZnVuY3Rpb25zIGFyZSB3cmFw
cGVkIHdpdGggY29ycmVjdCByZXR1cm4gdmFsdWUgY2hlY2tzCisgICAgICAgIGxldCBnZXRBbk9i
amVjdEZuID0gYXdhaXQgcmVhbG0uaW1wb3J0VmFsdWUoaW1wb3J0UGF0aCwgImdldEFuT2JqZWN0
Iik7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgZ2V0QW5PYmplY3RGbigpOyB9LCBUeXBl
RXJyb3IpOworCisgICAgICAgIC8vIHRocmVhZCBhIGZ1bmN0aW9uIGluIGFuZCBvdXQgb2YgYSBy
ZWFsbSB0byB3cmFwIGl0IHVwCisgICAgICAgIGlubmVyUHV0SW5HbG9iYWwoIm91dGVyLXJlYWxt
LXB1dCIsIG91dGVyUHV0SW5HbG9iYWwpOworICAgICAgICB3cmFwcGVkT3V0ZXJQdXRJbkdsb2Jh
bCA9IGlubmVyR2V0RnJvbUdsb2JhbCgib3V0ZXItcmVhbG0tcHV0Iik7CisKKyAgICAgICAgLy8g
aXQgc3RpbGwgbWFuaXB1YXRlcyB0aGUgY29ycmVjdCBnbG9iYWwgb2JqZWN0IHN0YXRlCisgICAg
ICAgIHdyYXBwZWRPdXRlclB1dEluR2xvYmFsKCJ0cmVhc3VyZSIsICJzaGlueSB0aW4gc2NyYXAi
KTsKKyAgICAgICAgc2hvdWxkQmUob3V0ZXJHZXRGcm9tR2xvYmFsKCJ0cmVhc3VyZSIpLCAic2hp
bnkgdGluIHNjcmFwIik7CisKKyAgICAgICAgLy8gd3JhcHBlZCBmdW5jdGlvbnMgY2hlY2sgYXJn
dW1lbnRzIGZvciBwcmltaXRpdmUvY2FsbGFibGUtbmVzcworICAgICAgICBzaG91bGRUaHJvdygo
KSA9PiB7IHdyYXBwZWRPdXRlclB1dEluR2xvYmFsKCJ0cmVhc3VyZSIsIG5ldyBPYmplY3QoKSk7
IH0sIFR5cGVFcnJvcik7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgd3JhcHBlZE91dGVy
UHV0SW5HbG9iYWwobmV3IE9iamVjdCgpLCAic2hpbnkgdGluIHNjcmFwIik7IH0sIFR5cGVFcnJv
cik7CisKKyAgICAgICAgLy8gbXVzdCBiZSBjYWxsZWQgb24gYSBTaGFkb3dSZWFsbQorICAgICAg
ICBsZXQgbm90UmVhbG0gPSB7fTsKKyAgICAgICAgc2hvdWxkVGhyb3coCisgICAgICAgICAgKCkg
PT4geyByZWFsbS5pbXBvcnRWYWx1ZS5jYWxsKG5vdFJlYWxtLCBpbXBvcnRQYXRoLCAiYW5zd2Vy
Iik7IH0sCisgICAgICAgICAgVHlwZUVycm9yLAorICAgICAgICAgIChlcnIpID0+IHsgc2hvdWxk
QmUoJC5nbG9iYWxPYmplY3RGb3IoZXJyKSwgZ2xvYmFsVGhpcyk7IH0KKyAgICAgICAgKTsKKyAg
ICB9CisKKyAgICAvLyB0cmlnZ2VyIEpJVAorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gZG9JbXBv
cnQocmVhbG0sIHMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiByZWFsbS5pbXBvcnRW
YWx1ZShpbXBvcnRQYXRoLCBzKTsKKyAgICAgICAgfQorCisgICAgICAgIG5vSW5saW5lKGRvSW1w
b3J0KTsKKworICAgICAgICBsZXQgcmVhbG0gPSBuZXcgU2hhZG93UmVhbG0oKTsKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgICAgICBsZXQgcmVzdWx0
ID0gYXdhaXQgZG9JbXBvcnQocmVhbG0sICJnZXRDYWxsQ291bnQiKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlKHJlc3VsdCgpLCAwKTsKKyAgICAgICAgfQorICAgIH0KK30oKSkuY2F0Y2goKGVycm9y
KSA9PiB7CisgICAgcHJpbnQoU3RyaW5nKGVycm9yKSk7CisgICAgYWJvcnQoKTsKK30pOworCit7
CisgICAgc2hvdWxkQmUodHlwZW9mIFNoYWRvd1JlYWxtLnByb3RvdHlwZS5pbXBvcnRWYWx1ZSwg
ImZ1bmN0aW9uIik7CisKKyAgICBsZXQgaW1wb3J0VmFsdWVOYW1lID0gT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihTaGFkb3dSZWFsbS5wcm90b3R5cGUuaW1wb3J0VmFsdWUsICJuYW1l
Iik7CisgICAgc2hvdWxkQmUoaW1wb3J0VmFsdWVOYW1lLnZhbHVlLCAiaW1wb3J0VmFsdWUiKTsK
KyAgICBzaG91bGRCZShpbXBvcnRWYWx1ZU5hbWUuZW51bWVyYWJsZSwgZmFsc2UpOworICAgIHNo
b3VsZEJlKGltcG9ydFZhbHVlTmFtZS53cml0YWJsZSwgZmFsc2UpOworICAgIHNob3VsZEJlKGlt
cG9ydFZhbHVlTmFtZS5jb25maWd1cmFibGUsIHRydWUpOworCisgICAgbGV0IGltcG9ydFZhbHVl
TGVuZ3RoID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihTaGFkb3dSZWFsbS5wcm90
b3R5cGUuaW1wb3J0VmFsdWUsICJsZW5ndGgiKTsKKyAgICBzaG91bGRCZShpbXBvcnRWYWx1ZUxl
bmd0aC52YWx1ZSwgMik7CisgICAgc2hvdWxkQmUoaW1wb3J0VmFsdWVMZW5ndGguZW51bWVyYWJs
ZSwgZmFsc2UpOworICAgIHNob3VsZEJlKGltcG9ydFZhbHVlTGVuZ3RoLndyaXRhYmxlLCBmYWxz
ZSk7CisgICAgc2hvdWxkQmUoaW1wb3J0VmFsdWVMZW5ndGguY29uZmlndXJhYmxlLCB0cnVlKTsK
K30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3NoYWRvdy1yZWFsbS5qcyBiL0pTVGVzdHMv
c3RyZXNzL3NoYWRvdy1yZWFsbS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjJiODhjNmUzOTU5OTU2MzRkN2Vk
OGVmOWU5OWYyYzNmZDg4NmE1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc2hh
ZG93LXJlYWxtLmpzCkBAIC0wLDAgKzEsMzYgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VT
aGFkb3dSZWFsbT0xIikKKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewor
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4
cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9YCk7Cit9CisKKy8vIHNoYWRvdyBy
ZWFsbSBzcGVjcworeworICAgIGxldCBzaGFkb3dSZWFsbVByb3AgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKHRoaXMsICJTaGFkb3dSZWFsbSIpOworICAgIHNob3VsZEJlKHNoYWRv
d1JlYWxtUHJvcC5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1Q
cm9wLndyaXRhYmxlLCB0cnVlKTsKKyAgICBzaG91bGRCZShzaGFkb3dSZWFsbVByb3AuY29uZmln
dXJhYmxlLCB0cnVlKTsKKworICAgIGxldCBzaGFkb3dSZWFsbUV2YWx1YXRlID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihTaGFkb3dSZWFsbS5wcm90b3R5cGUsICJldmFsdWF0ZSIp
OworICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtRXZhbHVhdGUuZW51bWVyYWJsZSwgZmFsc2UpOwor
ICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtRXZhbHVhdGUud3JpdGFibGUsIHRydWUpOworICAgIHNo
b3VsZEJlKHNoYWRvd1JlYWxtRXZhbHVhdGUuY29uZmlndXJhYmxlLCB0cnVlKTsKKworICAgIGxl
dCBzaGFkb3dSZWFsbUltcG9ydFZhbHVlID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihTaGFkb3dSZWFsbS5wcm90b3R5cGUsICJpbXBvcnRWYWx1ZSIpOworICAgIHNob3VsZEJlKHNo
YWRvd1JlYWxtSW1wb3J0VmFsdWUuZW51bWVyYWJsZSwgZmFsc2UpOworICAgIHNob3VsZEJlKHNo
YWRvd1JlYWxtSW1wb3J0VmFsdWUud3JpdGFibGUsIHRydWUpOworICAgIHNob3VsZEJlKHNoYWRv
d1JlYWxtSW1wb3J0VmFsdWUuY29uZmlndXJhYmxlLCB0cnVlKTsKKworICAgIGxldCBzaGFkb3dS
ZWFsbU5hbWUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFNoYWRvd1JlYWxtLCAi
bmFtZSIpOworICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtTmFtZS52YWx1ZSwgIlNoYWRvd1JlYWxt
Iik7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1OYW1lLmVudW1lcmFibGUsIGZhbHNlKTsKKyAg
ICBzaG91bGRCZShzaGFkb3dSZWFsbU5hbWUud3JpdGFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRC
ZShzaGFkb3dSZWFsbU5hbWUuY29uZmlndXJhYmxlLCB0cnVlKTsKKworICAgIGxldCBzaGFkb3dS
ZWFsbUxlbmd0aCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU2hhZG93UmVhbG0s
ICJsZW5ndGgiKTsKKyAgICBzaG91bGRCZShzaGFkb3dSZWFsbUxlbmd0aC52YWx1ZSwgMCk7Cisg
ICAgc2hvdWxkQmUoc2hhZG93UmVhbG1MZW5ndGguZW51bWVyYWJsZSwgZmFsc2UpOworICAgIHNo
b3VsZEJlKHNoYWRvd1JlYWxtTGVuZ3RoLndyaXRhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUo
c2hhZG93UmVhbG1MZW5ndGguY29uZmlndXJhYmxlLCB0cnVlKTsKK30K
</data>
<flag name="commit-queue"
          id="462478"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438948</attachid>
            <date>2021-09-22 07:55:31 -0700</date>
            <delta_ts>2021-09-27 03:30:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230602-20210922165529.patch</filename>
            <type>text/plain</type>
            <size>88892</size>
            <attacher name="Phillip Mates">pmates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyODczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YTU4NDBhM2I5N2M0NTAxZDA4OTc4YTYyMTA2YzUxZjQwYjk5MzYzLi4xZWRmZWJlMTkwYTA3YWVi
YjZmMmQzNGRhOGFjOTc3MGY4ZDNmM2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5OCBAQAorMjAyMS0wOS0yMSAgUGhpbGxpcCBNYXRlcyAgPHBtYXRlc0BpZ2FsaWEuY29t
PgorCisgICAgICAgIHNoYWRvdyByZWFsbXMgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDYwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGF0aW9uIG9mIHRoZSBT
aGFkb3cgUmVhbG1zIHByb3Bvc2FsIChzdGFnZSAzIGluIFRDMzkpIFsxXQorCisgICAgICAgIE1h
aW4gQVBJcyBhZGRlZCBhcmUKKyAgICAgICAgIC0gYG5ldyBTaGFkb3dSZWFsbSgpYAorICAgICAg
ICAgICBjcmVhdGVzIGFuIG9iamVjdCB0aGF0IGhhcyBpdHMgb3duIGdsb2JhbCBvYmplY3QgYW5k
IG1vZHVsZSBncmFwaC4KKyAgICAgICAgIC0gU2hhZG93UmVhbG0ucHJvdG90eXBlLmV2YWx1YXRl
KHNvdXJjZVRleHQpCisgICAgICAgICAgIHRoaXMgYWxsb3dzIGZvciBldmFsdWF0aW5nIGNvZGUg
aW4gdGhlIGNvbnRleHQgb2YgdGhlIHJlYWxtLCB3aGljaAorICAgICAgICAgICBoYXMgaXRzIG93
biBtb2R1bGUgZ3JhcGggYW5kIGdsb2JhbCBvYmplY3QuCisgICAgICAgICAtIFNoYWRvd1JlYWxt
LnByb3RvdHlwZS5pbXBvcnRWYWx1ZShzcGVjaWZpZXIsIGV4cG9ydE5hbWUpCisgICAgICAgICAg
IHRoaXMgYWxsb3dzIGltcG9ydGluZyBtb2R1bGUgZXhwb3J0cyBpbiB0aGUgdGhlIGNvbnRleHQg
b2YgdGhlCisgICAgICAgICAgIHJlYWxtLCB3aGljaCBoYXMgaXRzIG93biBtb2R1bGUgZ3JhcGgg
YW5kIGdsb2JhbCBvYmplY3QuCisKKyAgICAgICAgVGhlIG1haW4gZGV0YWlsIG9mIHRoZSBTaGFk
b3cgUmVhbG0gaW1wbGVtZW50YXRpb24gaXMgdGhhdCB2YWx1ZXMKKyAgICAgICAgcGFzc2VkIGJl
dHdlZW4gcmVhbG1zIG11c3QgYmUgZWl0aGVyIHByaW1pdGl2ZXMgb3Igd3JhcHBlZCBjYWxsYWJs
ZXMuCisgICAgICAgIFdyYXBwZWQgY2FsbGFibGVzIHRoZW1zZWx2ZXMgYXJlIGNhbGxhYmxlcyB0
aGF0IGNoZWNrIHRoYXQgdGhlaXIKKyAgICAgICAgYXJndW1lbnRzIGFuZCByZXR1cm4gdmFsdWVz
IGFyZSBhbHNvIGVpdGhlciBwcmltaXRpdmVzIG9yIHdyYXBwZWQKKyAgICAgICAgY2FsbGFibGVz
LiBUaGlzIGRldGFpbCBpcyBpbXBsZW1lbnRlZCB2aWEgSlMgYnVpbHRpbnMgKyBhIGZldyBuZXcK
KyAgICAgICAgaW50cmluc2ljcy4KKworICAgICAgICBDYW4gYmUgZW5hYmxlZCB1c2luZyBgLS11
c2VTaGFkb3dSZWFsbT10cnVlYAorCisgICAgICAgIFsxXTogaHR0cHM6Ly9naXRodWIuY29tL3Rj
MzkvcHJvcG9zYWwtc2hhZG93cmVhbG0KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogYnVpbHRpbnMvU2hhZG93
UmVhbG1Qcm90b3R5cGUuanM6IEFkZGVkLgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS53cmFwKToK
KyAgICAgICAgKGV2YWx1YXRlKToKKyAgICAgICAgKGltcG9ydFZhbHVlKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgICogYnl0ZWNvZGUv
TGlua1RpbWVDb25zdGFudC5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdElzU2hhZG93UmVh
bG0pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAq
IGpzYy5jcHA6CisgICAgICAgIChKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAq
IHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9JbmRp
cmVjdEV2YWxFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0
YWJsZTo6Y3JlYXRlSW1wbCk6CisgICAgICAgIChKU0M6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGU6
OmNyZWF0ZVNhZmUpOgorICAgICAgICAoSlNDOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVu
SW1wbCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjcmVhdGVXaXRoQ3VzdG9tTWV0
aG9kVGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNoYWRvd1JlYWxtUHJvdG90eXBlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNoYWRvd1JlYWxtU3RydWN0dXJlIGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9PcHRpb25z
TGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5jcHA6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpTaGFkb3dSZWFsbUNvbnN0cnVjdG9yOjpTaGFkb3dSZWFsbUNv
bnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6U2hhZG93UmVhbG1Db25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RTaGFkb3dSZWFsbSk6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9TaGFk
b3dSZWFsbUNvbnN0cnVjdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaC4KKyAgICAgICAgKiBydW50aW1lL1NoYWRv
d1JlYWxtT2JqZWN0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlNoYWRvd1JlYWxtT2JqZWN0
OjpTaGFkb3dSZWFsbU9iamVjdCk6CisgICAgICAgIChKU0M6OlNoYWRvd1JlYWxtT2JqZWN0Ojp2
aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgIChKU0M6OlNoYWRvd1JlYWxtT2JqZWN0OjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpTaGFkb3dSZWFsbU9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvU2hhZG93UmVhbG1PYmplY3QuaDogQ29waWVkIGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oLgorICAgICAg
ICAqIHJ1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6U2hhZG93UmVhbG1Qcm90b3R5cGU6OlNoYWRvd1JlYWxtUHJvdG90eXBlKToKKyAgICAgICAg
KEpTQzo6U2hhZG93UmVhbG1Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1NoYWRvd1Jl
YWxtUHJvdG90eXBlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsRHVy
YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpwcm9wZXJ0eU5hbWVEdXJhdGlvbkltcGwpOgorICAg
ICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjpmcm9tRHVyYXRpb25MaWtlKToKKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6d2l0aCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9U
ZW1wb3JhbFBsYWluVGltZS5jcHA6CisgICAgICAgIChKU0M6OnByb3BlcnR5TmFtZVBsYWluVGlt
ZUltcGwpOgorICAgICAgICAoSlNDOjp0b1RlbXBvcmFsVGltZVJlY29yZCk6CisgICAgICAgIChK
U0M6OnRvUGFydGlhbFRpbWUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAo
SlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAyMS0wOS0yMSAgQWxl
eGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CiAKICAgICAgICAgW1dlYklETF0g
RE9NIGNvbnN0cnVjdG9ycyBzaG91bGQgZXh0ZW5kIEludGVybmFsRnVuY3Rpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAyZmQyMGQ3ZGVmOTJiNjRkMTk0YTc1NGFlZDFm
MWFjYmI4YmU5YThjLi5jYWMyOTI1ZTVhMDg2M2U3MzFiZWRiNjlmY2Y1NGEyYjEzNjRlYmY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMDMsNiArMTAzLDggQEAgc2V0
KEphdmFTY3JpcHRDb3JlX09CSkVDVF9MVVRfU09VUkNFUwogICAgIHJ1bnRpbWUvUmVnRXhwUHJv
dG90eXBlLmNwcAogICAgIHJ1bnRpbWUvUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3Bw
CiAgICAgcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9TaGFkb3dSZWFsbU9i
amVjdC5jcHAKKyAgICBydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmNwcAogICAgIHJ1bnRp
bWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
CiAgICAgcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKQEAgLTM2OSw2ICszNzEsNyBAQCBz
ZXQoSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7SkFWQVNDUklQVENPUkVf
RElSfS9idWlsdGlucy9SZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5qcwogICAgICR7SkFW
QVNDUklQVENPUkVfRElSfS9idWlsdGlucy9TZXRJdGVyYXRvclByb3RvdHlwZS5qcwogICAgICR7
SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9TZXRQcm90b3R5cGUuanMKKyAgICAke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvU2hhZG93UmVhbG1Qcm90b3R5cGUuanMKICAgICAke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvU3RyaW5nQ29uc3RydWN0b3IuanMKICAgICAke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuanMKICAg
ICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvU3RyaW5nUHJvdG90eXBlLmpzCkBAIC0x
MTQyLDYgKzExNDUsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUwogICAgIHJ1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oCiAgICAgcnVudGltZS9TY3JpcHRG
ZXRjaFBhcmFtZXRlcnMuaAogICAgIHJ1bnRpbWUvU2NyaXB0RmV0Y2hlci5oCisgICAgcnVudGlt
ZS9TaGFkb3dSZWFsbU9iamVjdC5oCiAgICAgcnVudGltZS9TbG93UGF0aEZ1bmN0aW9uLmgKICAg
ICBydW50aW1lL1Nsb3dQYXRoUmV0dXJuVHlwZS5oCiAgICAgcnVudGltZS9TbWFsbFN0cmluZ3Mu
aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2Ug
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBlY2JjZTY3
Zjc4YzAwMzRjMTY2ZjUwZDU4OTJhNmYwOGM1ZGE0MGQ2Li5iY2YzZWVhMjljZTdiYjIwNzc4OWE1
ZDljMjEzN2FlY2RkYWE5Y2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQpAQCAtMTIyLDYgKzEyMiw3IEBAIEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJD
RVMgPSBcCiAgICAgJHtKYXZhU2NyaXB0Q29yZX0vYnVpbHRpbnMvUmVnRXhwU3RyaW5nSXRlcmF0
b3JQcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1NldEl0ZXJh
dG9yUHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TZXRQcm90
b3R5cGUuanMgXAorICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1NoYWRvd1JlYWxtUHJv
dG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TdHJpbmdDb25zdHJ1
Y3Rvci5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvU3RyaW5nSXRlcmF0b3JQ
cm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1N0cmluZ1Byb3Rv
dHlwZS5qcyBcCkBAIC0xODcsNiArMTg4LDcgQEAgT0JKRUNUX0xVVF9IRUFERVJTID0gXAogICAg
IFJlZmxlY3RPYmplY3QubHV0LmggXAogICAgIFJlZ0V4cENvbnN0cnVjdG9yLmx1dC5oIFwKICAg
ICBTZXRQcm90b3R5cGUubHV0LmggXAorICAgIFNoYWRvd1JlYWxtUHJvdG90eXBlLmx1dC5oIFwK
ICAgICBTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgU3RyaW5nUHJvdG90eXBlLmx1dC5o
IFwKICAgICBTeW1ib2xDb25zdHJ1Y3Rvci5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGVlODZiYThkYzBiYjljYWJmNGIxMzRjYjEzMjRkMjQxNmZjY2Y5YTcuLjY0ZWMw
MWMzOGRiZjljMzY4MjM3NmQ4YThiOTE4YWVlY2FiMTk2YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xMjUzLDYgKzEyNTMsOSBAQAogCQk4NjAxNjFFMzBGM0E4M0MxMDBGODQ3
MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxREYwRjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4NjAxNjFFNTBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZf
NjQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2
MUUxMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2MDE2MUU2MEYzQTgzQzEw
MEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxRTIwRjNBODNDMTAwRjg0NzEwIC8qIE1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJODYwMjk2MDIyNkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxt
Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2MDI5NUZDMjZGQjU1MkMwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODYwMjk2
MDQyNkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjAyOTVGRTI2RkI1NTJEMDA3OEVCNjIg
LyogU2hhZG93UmVhbG1PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk4NjAyOTYwNTI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Q
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2MDI5NUZGMjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbVByb3RvdHlwZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2MDZEREVBMThE
QTQ0QUIwMEEzODNEMCAvKiBJZGVudGlmaWVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwNkRERTkxOERBNDRBQjAwQTM4M0QwIC8qIElk
ZW50aWZpZXJJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJODYwQkQ4MDExNDhFQTZGMjAwMTEyQjJGIC8qIEludHJpbnNpYy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCRjY0MkExNDhEQjJC
NTAwNERFMzZBIC8qIEludHJpbnNpYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTg2MTJFNENEMTUyMzg5RUMwMEM4MzZCRSAvKiBNYXRjaFJlc3Vs
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYxMkU0
Q0IxNTIyOTE4NDAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQyMDksNiArNDIxMiwxMiBAQAogCQk4NjAx
NjFERjBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2MDE2MUUxMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNy
b0Fzc2VtYmxlclg4Nl82NC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNy
b0Fzc2VtYmxlclg4Nl82NC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjAxNjFF
MjBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYwMjk1RkEyNkZCNTUyQzAwNzhFQjYyIC8qIFNoYWRv
d1JlYWxtUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNoYWRvd1JlYWxtUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODYwMjk1RkIyNkZCNTUyQzAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtT2JqZWN0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYWRvd1JlYWxtT2JqZWN0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYwMjk1RkMyNkZCNTUyQzAwNzhFQjYyIC8qIFNo
YWRvd1JlYWxtQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
NjAyOTVGRDI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFkb3dSZWFsbUNvbnN0cnVjdG9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYwMjk1RkUyNkZCNTUyRDAwNzhF
QjYyIC8qIFNoYWRvd1JlYWxtT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNoYWRvd1JlYWxtT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2
MDI5NUZGMjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbVByb3RvdHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkb3dSZWFsbVByb3RvdHlwZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4NjA0RjRGMjE0M0E2QzQ0MDBCMjk1RjUgLyogQ2hhbmdl
TG9nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBDaGFuZ2VMb2c7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2MDZEREU5MThEQTQ0QUIwMEEzODNEMCAvKiBJZGVudGlmaWVySW5saW5lcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZGVudGlmaWVySW5saW5lcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjEyRTRDQjE1MjI5MTg0MDBDODM2QkUgLyog
TWF0Y2hSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0Y2hSZXN1
bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc5NDcsNiArNzk1NiwxMiBAQAog
CQkJCUE3OTBERDY4MTgyRjQ5OTcwMDU4ODgwNyAvKiBTZXRJdGVyYXRvclByb3RvdHlwZS5oICov
LAogCQkJCUE3Mjk5RDlGMTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuY3BwICovLAog
CQkJCUE3Mjk5REEwMTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuaCAqLywKKwkJCQk4
NjAyOTVGRDI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5jcHAgKi8s
CisJCQkJODYwMjk1RkMyNkZCNTUyQzAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtQ29uc3RydWN0b3Iu
aCAqLywKKwkJCQk4NjAyOTVGQjI2RkI1NTJDMDA3OEVCNjIgLyogU2hhZG93UmVhbG1PYmplY3Qu
Y3BwICovLAorCQkJCTg2MDI5NUZFMjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbU9iamVj
dC5oICovLAorCQkJCTg2MDI5NUZBMjZGQjU1MkMwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbVByb3Rv
dHlwZS5jcHAgKi8sCisJCQkJODYwMjk1RkYyNkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxt
UHJvdG90eXBlLmggKi8sCiAJCQkJMEYyQjY2RDYxN0I2QjVBQjAwQTdBRTNGIC8qIFNpbXBsZVR5
cGVkQXJyYXlDb250cm9sbGVyLmNwcCAqLywKIAkJCQkwRjJCNjZENzE3QjZCNUFCMDBBN0FFM0Yg
LyogU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCAqLywKIAkJCQlGRThDMDMxMTI2NEE2OTEw
MDAxQTQ0QUQgLyogU2xvd1BhdGhGdW5jdGlvbi5oICovLApAQCAtMTA2NTMsNiArMTA2NjgsOSBA
QAogCQkJCTBGRUU5ODQxMUE4ODY1QjcwMDc1NEU5MyAvKiBTZXR1cFZhcmFyZ3NGcmFtZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJREMxN0U4MTgxQzlDOTFEOTAwOEE2QUIzIC8qIFNoYWRvd0NoaWNr
ZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCURDMTdFODE5MUM5QzkxREIwMDhBNkFCMyAvKiBTaGFk
b3dDaGlja2VuSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJODYwMjk2MDIyNkZCNTUyRDAw
NzhFQjYyIC8qIFNoYWRvd1JlYWxtQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2
MDI5NjA0MjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbU9iamVjdC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJODYwMjk2MDUyNkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtUHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTMwMjJEMzFFM0Q3M0E1MDBCQUM0OTMgLyogU2lnaWxs
Q3Jhc2hBbmFseXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0RDhDNzgxRkNBM0NGQTAwMUQz
MkFDIC8qIFNpbXBsZU1hcmtpbmdDb25zdHJhaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJC
NjcwNTE3QjZCNUFCMDBBN0FFM0YgLyogU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDg0NmU5ZWU3NWZlZDA1
NDc1NTZjNGJmZDRhMjYxZDgwZDU5YWZiZDcuLjU5MTBmZWZlZjM3YWYxYjE4NWE0ZmM1ZDQzOWEz
N2QzOTBmYjc5ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTk2OSw2ICs5Njks
OSBAQCBydW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3BwCiBydW50aW1lL1Byb3h5T2JqZWN0LmNw
cAogcnVudGltZS9Qcm94eVJldm9rZS5jcHAKIHJ1bnRpbWUvUmFuZG9taXppbmdGdXp6ZXJBZ2Vu
dC5jcHAKK3J1bnRpbWUvU2hhZG93UmVhbG1PYmplY3QuY3BwCitydW50aW1lL1NoYWRvd1JlYWxt
Q29uc3RydWN0b3IuY3BwCitydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmNwcAogcnVudGlt
ZS9SZWZsZWN0T2JqZWN0LmNwcAogcnVudGltZS9SZWdFeHAuY3BwCiBydW50aW1lL1JlZ0V4cENh
Y2hlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5o
CmluZGV4IGRjYWYwYmE2Y2EzMThmMTgwMjkyY2JhOGQ3ZGMwMGZhNTc3OTFlYTAuLjRiODY1MDY2
ZWM0YTYzMThkYzVlNzdmMzNhNmIxNmQ2YzgzMDM3YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTYyLDYgKzYyLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgbWFjcm8oTnVtYmVyKSBcCiAgICAgbWFjcm8oQXJyYXkpIFwKICAgICBtYWNy
byhBcnJheUJ1ZmZlcikgXAorICAgIG1hY3JvKFNoYWRvd1JlYWxtKSBcCiAgICAgbWFjcm8oUmVn
RXhwKSBcCiAgICAgbWFjcm8obWluKSBcCiAgICAgbWFjcm8odHJ1bmMpIFwKQEAgLTExNSw2ICsx
MTYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhhc3luY0dlbmVyYXRvclF1ZXVlSXRl
bU5leHQpIFwKICAgICBtYWNybyhkYXRlVGltZUZvcm1hdCkgXAogICAgIG1hY3JvKHRoaXMpIFwK
KyAgICBtYWNybyhpbXBvcnRJblJlYWxtKSBcCisgICAgbWFjcm8oZXZhbEluUmVhbG0pIFwKICAg
ICBtYWNybyh0aGlzVGltZVZhbHVlKSBcCiAgICAgbWFjcm8obmV3VGFyZ2V0TG9jYWwpIFwKICAg
ICBtYWNybyhkZXJpdmVkQ29uc3RydWN0b3IpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9TaGFkb3dSZWFsbVByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9TaGFkb3dSZWFsbVByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kN2E0
Yjk4NTY3NGY2Mjk3ZjhhMjhlMTg1ZTFlODYzY2JjODBiNWJlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1NoYWRvd1JlYWxtUHJvdG90eXBlLmpzCkBA
IC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworQGdsb2JhbFByaXZhdGUKK2Z1bmN0aW9uIHdyYXAodGFyZ2V0KQoreworICAgICJ1
c2Ugc3RyaWN0IjsKKworICAgIGlmIChAaXNDYWxsYWJsZSh0YXJnZXQpKSB7CisgICAgICAgIGxl
dCB3cmFwcGVkID0gKC4uLmFyZ3MpID0+IHsKKyAgICAgICAgICAgIHZhciB3cmFwcGVkQXJncyA9
IGFyZ3MuQG1hcChAd3JhcCkKKyAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRhcmdldC5AYXBw
bHkoQHVuZGVmaW5lZCwgd3JhcHBlZEFyZ3MpOworICAgICAgICAgICAgcmV0dXJuIEB3cmFwKHJl
c3VsdCk7CisgICAgICAgIH07CisgICAgICAgIGRlbGV0ZSB3cmFwcGVkWyduYW1lJ107CisgICAg
ICAgIGRlbGV0ZSB3cmFwcGVkWydsZW5ndGgnXTsKKyAgICAgICAgcmV0dXJuIHdyYXBwZWQ7Cisg
ICAgfSBlbHNlIGlmIChAaXNPYmplY3QodGFyZ2V0KSkgeworICAgICAgICBAdGhyb3dUeXBlRXJy
b3IoInZhbHVlIHBhc3NpbmcgYmV0d2VlbiByZWFsbXMgbXVzdCBiZSBjYWxsYWJsZSBvciBwcmlt
aXRpdmUiKTsKKyAgICB9CisgICAgcmV0dXJuIHRhcmdldDsKK30KKworZnVuY3Rpb24gZXZhbHVh
dGUoc291cmNlVGV4dCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIUBpc1NoYWRv
d1JlYWxtKHRoaXMpKQorICAgICAgICBAdGhyb3dUeXBlRXJyb3IoImAlU2hhZG93UmVhbG0lLmV2
YWx1YXRlIHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIGEgU2hhZG93UmVhbG0gaW5zdGFuY2UiKTsK
KworICAgIGlmICh0eXBlb2Ygc291cmNlVGV4dCAhPT0gJ3N0cmluZycpCisgICAgICAgIEB0aHJv
d1R5cGVFcnJvcigiYCVTaGFkb3dSZWFsbSUuZXZhbHVhdGUgcmVxdWlyZXMgdGhhdCB0aGUgfHNv
dXJjZVRleHR8IGFyZ3VtZW50IGJlIGEgc3RyaW5nIik7CisKKyAgICBsZXQgcmVzdWx0ID0gQGV2
YWxJblJlYWxtKHRoaXMsIHNvdXJjZVRleHQpCisgICAgcmV0dXJuIEB3cmFwKHJlc3VsdCk7Cit9
CisKK2Z1bmN0aW9uIGltcG9ydFZhbHVlKHNwZWNpZmllciwgZXhwb3J0TmFtZSkKK3sKKyAgICAi
dXNlIHN0cmljdCI7CisKKyAgICBpZiAoIUBpc1NoYWRvd1JlYWxtKHRoaXMpKQorICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoImAlU2hhZG93UmVhbG0lLmltcG9ydFZhbHVlIHJlcXVpcmVzIHRoYXQg
fHRoaXN8IGJlIGEgU2hhZG93UmVhbG0gaW5zdGFuY2UiKTsKKworICAgIGxldCBleHBvcnROYW1l
U3RyID0gQHRvU3RyaW5nKGV4cG9ydE5hbWUpOworICAgIGxldCBzcGVjaWZpZXJTdHIgPSBAdG9T
dHJpbmcoc3BlY2lmaWVyKTsKKworICAgIGxldCBsb29rdXBCaW5kaW5nID0gKG1vZHVsZSkgPT4g
eworICAgICAgICBsZXQgbG9va3VwID0gbW9kdWxlW2V4cG9ydE5hbWVTdHJdCisgICAgICAgIGlm
IChsb29rdXAgPT09IEB1bmRlZmluZWQpCisgICAgICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIiVT
aGFkb3dSZWFsbSUuaW1wb3J0VmFsdWUgcmVxdWlyZXMgfGV4cG9ydE5hbWV8IHRvIGV4aXN0IGlu
IHRoZSB8c3BlY2lmaWVyfCIpOworCisgICAgICAgIHJldHVybiBAd3JhcChsb29rdXApOworICAg
IH07CisKKyAgICBsZXQgY3Jvc3NSZWFsbVRocm93ID0gKGVycm9yKSA9PiB7CisgICAgICAgIC8v
IHJlLXRocm93IGJlY2F1c2UgaW1wb3J0IGlzc3VlcyByYWlzZSBlcnJvcnMgdXNpbmcgdGhlIHJl
YWxtJ3MgZ2xvYmFsIG9iamVjdAorICAgICAgICBAdGhyb3dUeXBlRXJyb3IoQHRvU3RyaW5nKGVy
cm9yKSk7CisgICAgfTsKKworICAgIHJldHVybiBAaW1wb3J0SW5SZWFsbSh0aGlzLCBzcGVjaWZp
ZXJTdHIpLkB0aGVuKGxvb2t1cEJpbmRpbmcsIGNyb3NzUmVhbG1UaHJvdyk7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkuaAppbmRleCA4NTU1OTc3ODY3MDcyZjJmZmY2N2E2NTU5YWNkOWE0NTRkNTJkMjc3
Li5iMzJjY2RhZjQzYTY2MmM4Nzc5NTU4MDdmNmQ0MWYxMjU5MTk0ZjUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5LmgKQEAgLTY2LDYgKzY2LDcgQEAgZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IDog
aW50MzJfdDsKICAgICBtYWNybyhpc1JlZ0V4cE9iamVjdCkgXAogICAgIG1hY3JvKGlzTWFwKSBc
CiAgICAgbWFjcm8oaXNTZXQpIFwKKyAgICBtYWNybyhpc1NoYWRvd1JlYWxtKSBcCiAgICAgbWFj
cm8oaXNTdHJpbmdJdGVyYXRvcikgXAogICAgIG1hY3JvKGlzQXJyYXlJdGVyYXRvcikgXAogICAg
IG1hY3JvKGlzTWFwSXRlcmF0b3IpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCmluZGV4IDVmMzJhZjgyMGU0NWZhNDlkYzkyZmM0NTY3
YWFmNDAxNTNjYmVhYmQuLjAxNTM5NDgyZTI5YjVkYWE0NzNjMTBjZGQ1YWU2NTlhODQ0MWIyMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0
YW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3Rh
bnQuaApAQCAtNjMsNiArNjMsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICB2KGluc3Rh
bmNlT2YsIG51bGxwdHIpIFwKICAgICB2KEJ1aWx0aW5Mb2csIG51bGxwdHIpIFwKICAgICB2KEJ1
aWx0aW5EZXNjcmliZSwgbnVsbHB0cikgXAorICAgIHYoU2hhZG93UmVhbG0sIG51bGxwdHIpIFwK
ICAgICB2KFJlZ0V4cCwgbnVsbHB0cikgXAogICAgIHYobWluLCBudWxscHRyKSBcCiAgICAgdih0
cnVuYywgbnVsbHB0cikgXApAQCAtNzgsNiArNzksOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsK
ICAgICB2KGhvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlciwgbnVsbHB0cikgXAogICAgIHYoU2V0
LCBudWxscHRyKSBcCiAgICAgdih0aGlzVGltZVZhbHVlLCBudWxscHRyKSBcCisgICAgdihpbXBv
cnRJblJlYWxtLCBudWxscHRyKSBcCisgICAgdihldmFsSW5SZWFsbSwgbnVsbHB0cikgXAogICAg
IHYoaXNDb25zdHJ1Y3RvciwgbnVsbHB0cikgXAogICAgIHYoc2FtZVZhbHVlLCBudWxscHRyKSBc
CiAgICAgdihyZWdFeHBQcm90b0ZsYWdzR2V0dGVyLCBudWxscHRyKSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5k
ZXggOGZhMDQ3ODg3YTA0ZmI2YjMxMzE0MDNhMmIxNzY2YTM1ZWFhY2RkYy4uZWE2NDIwMWYzNTVm
ZDg3ZmYzNGY3Yjk0ODg3NzI2MzRlY2ZmMjE2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtODgzLDYgKzg4
Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNSZWdFeHBP
YmplY3QoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0Nl
bGxXaXRoVHlwZShkc3QsIHNyYywgUmVnRXhwT2JqZWN0VHlwZSk7IH0KICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdElzTWFwKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVy
biBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTTWFwVHlwZSk7IH0KICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdElzU2V0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJl
dHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTU2V0VHlwZSk7IH0KKyAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdElzU2hhZG93UmVhbG0oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgU2hhZG93UmVhbG1U
eXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNTdHJpbmdJdGVyYXRvcihSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRz
dCwgc3JjLCBKU1N0cmluZ0l0ZXJhdG9yVHlwZSk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dElzQXJyYXlJdGVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1
cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU0FycmF5SXRlcmF0b3JUeXBlKTsgfQog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNNYXBJdGVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU01h
cEl0ZXJhdG9yVHlwZSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAzYjhhNjZmZWJkMmQyODQyMWYyN2I0OWFlOWI2
NzcwMjk4YTI2MDcxLi4xMzIwODkwNmE2NDg5YzA0ODFjMjk2NTc1MzEyYjYzYWU1M2QwMDVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCkBAIC0xODk0LDYgKzE4OTQsNyBAQCBDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9D
SEVDSyhpc1Byb21pc2UsIElzUHJvbWlzZSkKIENSRUFURV9JTlRSSU5TSUNfRk9SX0JSQU5EX0NI
RUNLKGlzUmVnRXhwT2JqZWN0LCBJc1JlZ0V4cE9iamVjdCkKIENSRUFURV9JTlRSSU5TSUNfRk9S
X0JSQU5EX0NIRUNLKGlzTWFwLCBJc01hcCkKIENSRUFURV9JTlRSSU5TSUNfRk9SX0JSQU5EX0NI
RUNLKGlzU2V0LCBJc1NldCkKK0NSRUFURV9JTlRSSU5TSUNfRk9SX0JSQU5EX0NIRUNLKGlzU2hh
ZG93UmVhbG0sIElzU2hhZG93UmVhbG0pCiBDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVD
Syhpc1N0cmluZ0l0ZXJhdG9yLCBJc1N0cmluZ0l0ZXJhdG9yKQogQ1JFQVRFX0lOVFJJTlNJQ19G
T1JfQlJBTkRfQ0hFQ0soaXNBcnJheUl0ZXJhdG9yLCBJc0FycmF5SXRlcmF0b3IpCiBDUkVBVEVf
SU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSyhpc01hcEl0ZXJhdG9yLCBJc01hcEl0ZXJhdG9yKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcAppbmRleCAxNzA5NmRhNzZmZWMxZjZkMGFkYjZiZTk4Zjc3YWUwMzlh
MjUyZDU5Li4wYzkwNWI1OTIwNzgyMDk1ODY0OGJmY2EzOGMzZjkxMGU1N2Y5NGNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcApAQCAtMzU5LDYgKzM1OSw3IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyQ3JlYXRlUmVhbG0pOwogc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJFdmFsU2NyaXB0KTsKIHN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyR0MpOwogc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJDbGVhcktlcHRPYmplY3RzKTsKK3N0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyR2xvYmFsT2JqZWN0Rm9yKTsK
IHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyQWdlbnRTdGFy
dCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckFnZW50
UmVjZWl2ZUJyb2FkY2FzdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5j
dGlvbkRvbGxhckFnZW50UmVwb3J0KTsKQEAgLTYzOCw2ICs2MzksNyBAQCBwcml2YXRlOgogICAg
ICAgICBhZGRGdW5jdGlvbih2bSwgZG9sbGFyLCAiZXZhbFNjcmlwdCIsIGZ1bmN0aW9uRG9sbGFy
RXZhbFNjcmlwdCwgMSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpO
b25lKSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCBkb2xsYXIsICJnYyIsIGZ1bmN0aW9uRG9s
bGFyR0MsIDAsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkp
OwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgZG9sbGFyLCAiY2xlYXJLZXB0T2JqZWN0cyIsIGZ1
bmN0aW9uRG9sbGFyQ2xlYXJLZXB0T2JqZWN0cywgMCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CisgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCBkb2xsYXIs
ICJnbG9iYWxPYmplY3RGb3IiLCBmdW5jdGlvbkRvbGxhckdsb2JhbE9iamVjdEZvciwgMSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CiAgICAgICAgIAog
ICAgICAgICBkb2xsYXItPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
Imdsb2JhbCIpLCBnbG9iYWxUaGlzKCkpOwogICAgICAgICBkb2xsYXItPnB1dERpcmVjdEN1c3Rv
bUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiSXNIVE1MRERBIiksCkBA
IC0yMDQ3LDYgKzIwNDksMjIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9s
bGFyQ2xlYXJLZXB0T2JqZWN0cywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCitKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oZnVuY3Rpb25Eb2xsYXJHbG9iYWxPYmplY3RGb3IsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3Jl
YXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiTm90IGVub3VnaCBhcmd1bWVudHMiX3MpKSk7CisgICAg
SlNWYWx1ZSBhcmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIGlmIChhcmcuaXNDZWxs
KCkpIHsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBhcmcuc3RydWN0dXJlT3JOdWxs
KHZtKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzdHJ1Y3R1cmUtPmdsb2JhbE9i
amVjdCgpLT5nbG9iYWxUaGlzKCkpOworICAgIH0KKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Cit9CisKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlv
bkRvbGxhckFnZW50U3RhcnQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGFhOWI4MDlmZDcxNzFiOTIx
ZmMzYzhhNTk1ODhjNWU5M2NkNGUxNmYuLjMzYjg5MTlkZDE1MTM2NWZmYTNlNjkwM2QxNDQyNzQz
NjE1NzVjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTUw
OTQsNyArNTA5NCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Np
b24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgICAgICAgICBuZXdD
b3VudC0tOwogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgZmFpbElmVHJ1ZShtYXRjaChJREVOVCksICJcIm5ldy5cIiBjYW4gb25seSBmb2xsb3dlZCB3
aXRoIHRhcmdldCIpOworICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChJREVOVCksICJcIm5l
dy5cIiBjYW4gb25seSBiZSBmb2xsb3dlZCB3aXRoIHRhcmdldCIpOwogICAgICAgICAgICAgZmFp
bER1ZVRvVW5leHBlY3RlZFRva2VuKCk7CiAgICAgICAgIH0KICAgICB9CkBAIC01MTI5LDcgKzUx
MjksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICAgICAgICAgIGJhc2UgPSBj
b250ZXh0LmNyZWF0ZUltcG9ydE1ldGFFeHByKGxvY2F0aW9uLCBjcmVhdGVSZXNvbHZlQW5kVXNl
VmFyaWFibGUoY29udGV4dCwgJm1fdm0ucHJvcGVydHlOYW1lcy0+bWV0YVByaXZhdGVOYW1lLCBm
YWxzZSwgZXhwcmVzc2lvblN0YXJ0LCBsb2NhdGlvbikpOwogICAgICAgICAgICAgICAgIG5leHQo
KTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRj
aChJREVOVCksICJcImltcG9ydC5cIiBjYW4gb25seSBmb2xsb3dlZCB3aXRoIG1ldGEiKTsKKyAg
ICAgICAgICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKElERU5UKSwgIlwiaW1wb3J0LlwiIGNhbiBv
bmx5IGJlIGZvbGxvd2VkIHdpdGggbWV0YSIpOwogICAgICAgICAgICAgICAgIGZhaWxEdWVUb1Vu
ZXhwZWN0ZWRUb2tlbigpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDQw
NjMzMWNhZGU5MDU4YzQzYzQ2OGI4Y2VlZmE1M2YyZWViOGNjMTMuLjM4NzVjZjZiNjNjMGQzMTJh
YjI1MmQ2MGUwZWY5MGI4MzQzMjU1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTEwNSw2ICsxMDUsNyBAQCB2b2lkIEFycmF5
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZHVjZVB1YmxpY05hbWUoKSwgYXJyYXlQcm90
b3R5cGVSZWR1Y2VDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZHVjZVJpZ2h0UHVi
bGljTmFtZSgpLCBhcnJheVByb3RvdHlwZVJlZHVjZVJpZ2h0Q29kZUdlbmVyYXRvciwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19C
VUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5tYXBQdWJsaWNOYW1lKCksIGFycmF5UHJvdG90eXBlTWFwQ29kZUdlbmVyYXRv
ciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwor
ICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5tYXBQcml2YXRlTmFtZSgpLCBhcnJheVByb3RvdHlwZU1hcENv
ZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pKTsKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5T
SVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1B1YmxpY05hbWUoKSwg
YXJyYXlQcm90b0Z1bmNLZXlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgMCwgQXJyYXlLZXlzSW50cmluc2ljKTsKICAgICBKU0NfTkFUSVZFX0lO
VFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKSwgYXJyYXlQcm90b0Z1bmNFbnRyaWVzLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMCwgQXJy
YXlFbnRyaWVzSW50cmluc2ljKTsKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RS
QU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZmluZFB1YmxpY05hbWUo
KSwgYXJyYXlQcm90b3R5cGVGaW5kQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggNDBjMTU5ZThkN2M1NDA0OWZk
OThjOGE2NjY4YTY0YThkZjRlYTM2NC4uNzgyOGQwMDhhODUzNDYxZTQ4ZTM2ZDJmYmVhNjFjNzA5
NTc2ZGRhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oCkBAIC01Miw2ICs1Miw3IEBACiAgICAgbWFjcm8oT2JqZWN0KSBcCiAgICAg
bWFjcm8oUGx1cmFsUnVsZXMpIFwKICAgICBtYWNybyhQcm9taXNlKSBcCisgICAgbWFjcm8oU2hh
ZG93UmVhbG0pIFwKICAgICBtYWNybyhSZWZsZWN0KSBcCiAgICAgbWFjcm8oUmVnRXhwKSBcCiAg
ICAgbWFjcm8oUmVsYXRpdmVUaW1lRm9ybWF0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCmluZGV4IDc0OTgy
MDUwMThjZGVmOGYzZjgzNjdiNGJiZTJlZjc5ZGJkMTdjMWYuLjI4YjNiZGFkNGMwMzAyNTI1Y2Jm
ZWQ1ODg1YzEzMDMzZjQ5YmM5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC0zNCw3ICszNCw5IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1JbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2
YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBl
LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4
dFR5cGUpCisKK3RlbXBsYXRlPHR5cGVuYW1lIEVycm9ySGFuZGxlckZ1bmN0b3I+CitpbmxpbmUg
SW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlSW1w
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgRXJyb3JIYW5kbGVy
RnVuY3RvciBlcnJvckhhbmRsZXIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQ5LDcgKzUx
LDcgQEAgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3Jl
YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKIAogICAgIFBhcnNlckVycm9yIGVycm9yOwog
ICAgIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSA9IGds
b2JhbE9iamVjdC0+ZGVmYXVsdENvZGVHZW5lcmF0aW9uTW9kZSgpOwotICAgIAorCiAgICAgVW5s
aW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gdm0uY29kZUNhY2hlKCktPmdl
dFVubGlua2VkRXZhbENvZGVCbG9jaygKICAgICAgICAgdm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFi
bGUtPnNvdXJjZSgpLCBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgY29kZUdlbmVyYXRp
b25Nb2RlLCBlcnJvciwgZXZhbENvbnRleHRUeXBlKTsKIApAQCAtNTcsNyArNTksNyBAQCBJbmRp
cmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iagogICAgICAgICBnbG9iYWxPYmplY3QtPmRlYnVnZ2VyKCktPnNv
dXJjZVBhcnNlZChnbG9iYWxPYmplY3QsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVyKCks
IGVycm9yLmxpbmUoKSwgZXJyb3IubWVzc2FnZSgpKTsKIAogICAgIGlmIChlcnJvci5pc1ZhbGlk
KCkpIHsKLSAgICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yLnRv
RXJyb3JPYmplY3QoZ2xvYmFsT2JqZWN0LCBleGVjdXRhYmxlLT5zb3VyY2UoKSkpOworICAgICAg
ICBlcnJvckhhbmRsZXIoZXhlY3V0YWJsZS0+c291cmNlKCksICZlcnJvcik7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNjYsNiArNjgsMjQgQEAgSW5kaXJlY3RFdmFsRXhl
Y3V0YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmoKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KIAorSW5kaXJlY3RFdmFsRXhlY3V0
YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlU2FmZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIERlcml2ZWRDb250ZXh0VHlw
ZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENv
bnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgTmFrZWRQdHI8SlNPYmplY3Q+JiByZXN1bHRpbmdF
cnJvcikKK3sKKyAgICBhdXRvIGhhbmRsZUVycm9yID0gWyZdKGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgUGFyc2VyRXJyb3IqIGVycm9yKSB7CisgICAgICAgIHJlc3VsdGluZ0Vycm9yID0gZXJy
b3ItPnRvRXJyb3JPYmplY3QoZ2xvYmFsT2JqZWN0LCBzb3VyY2UpOworICAgIH07CisgICAgcmV0
dXJuIGNyZWF0ZUltcGwoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGRlcml2ZWRDb250ZXh0VHlwZSwg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZXZhbENvbnRleHRUeXBlLCBoYW5kbGVFcnJvcik7Cit9
CisKK0luZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKK3sKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBoYW5kbGVFcnJvciA9IFsmXShjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yKiBlcnJvcikgeworICAgICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgIHRocm93Vk1FcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvci0+dG9FcnJvck9iamVjdChnbG9iYWxPYmplY3QsIHNv
dXJjZSkpOworICAgIH07CisgICAgcmV0dXJuIGNyZWF0ZUltcGwoZ2xvYmFsT2JqZWN0LCBzb3Vy
Y2UsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZXZhbENvbnRl
eHRUeXBlLCBoYW5kbGVFcnJvcik7Cit9CisKIGNvbnN0ZXhwciBib29sIGluU3RyaWN0Q29udGV4
dCA9IGZhbHNlOwogY29uc3RleHByIGJvb2wgaW5zaWRlT3JkaW5hcnlGdW5jdGlvbiA9IGZhbHNl
OwogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIERlcml2ZWRD
b250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaAppbmRleCA0OThi
NWM4NzA5OGFiMzc0Nzk3YTI1YmY0ODE2MzdjZmJiOTJlZGY1Li5jOGU1MjQ1NjY1ODU1NzE0NDY0
MjI4ZjAwMGNmYjA3MzlkZDk3MzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oCkBAIC0zMiw3ICszMiwxMSBAQCBu
YW1lc3BhY2UgSlNDIHsKIGNsYXNzIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUgZmluYWwgOiBwdWJs
aWMgRXZhbEV4ZWN1dGFibGUgewogcHVibGljOgogICAgIHN0YXRpYyBJbmRpcmVjdEV2YWxFeGVj
dXRhYmxlKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgRGVyaXZl
ZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlw
ZSk7CisgICAgc3RhdGljIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIGNyZWF0ZVNhZmUoSlNHbG9i
YWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSwgTmFrZWRQdHI8SlNPYmplY3Q+
Jik7CiBwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVycm9ySGFuZGxlckZ1bmN0b3I+
CisgICAgaW5saW5lIHN0YXRpYyBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBjcmVhdGVJbXBsKEpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9v
bCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUsIEVycm9ySGFuZGxlckZ1
bmN0b3IpOworCiAgICAgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCosIGNv
bnN0IFNvdXJjZUNvZGUmLCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
Q29udGV4dCwgRXZhbENvbnRleHRUeXBlKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAwNmY2NTNlY2JmODRiMzc4YTdi
M2NhZWFkMjQzNDY5ODg5NTI3ZjIwLi5hYTU0ZDRlMWI1YjYxZjdlMTgyNDU5OTNiNzk3NDkxMmVl
YzA3ZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCkBAIC0xOTQsNiArMTk0LDkgQEAKICNpbmNsdWRlICJTZXRDb25zdHJ1Y3Rvci5o
IgogI2luY2x1ZGUgIlNldEl0ZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiU2V0UHJvdG90
eXBlLmgiCisjaW5jbHVkZSAiU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIlNo
YWRvd1JlYWxtT2JqZWN0LmgiCisjaW5jbHVkZSAiU2hhZG93UmVhbG1Qcm90b3R5cGUuaCIKICNp
bmNsdWRlICJTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIlN0cmluZ0NvbnN0cnVj
dG9yLmgiCiAjaW5jbHVkZSAiU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaCIKQEAgLTkxNiw2ICs5
MTksOSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgTnVtYmVyT2ZBcnJheUluZGV4aW5nTW9kZXM7ICsraSkKICAgICAgICAg
bV9hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nU2hhcGVEdXJpbmdBbGxvY2F0aW9uW2ldID0gbV9v
cmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdTaGFwZVtpXTsKIAorICAgIG1fc2hhZG93
UmVhbG1Qcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBTaGFkb3dSZWFsbVByb3RvdHlwZTo6Y3JlYXRl
KHZtLCBTaGFkb3dSZWFsbVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29i
amVjdFByb3RvdHlwZS5nZXQoKSkpKTsKKyAgICBtX3NoYWRvd1JlYWxtT2JqZWN0U3RydWN0dXJl
LnNldCh2bSwgdGhpcywgU2hhZG93UmVhbG1PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9zaGFkb3dSZWFsbVByb3RvdHlwZS5nZXQoKSkpOworCiAgICAgbV9yZWdFeHBQcm90b3R5
cGUuc2V0KHZtLCB0aGlzLCBSZWdFeHBQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgUmVnRXhw
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdl
dCgpKSkpOwogICAgIG1fcmVnRXhwU3RydWN0dXJlLnNldCh2bSwgdGhpcywgUmVnRXhwT2JqZWN0
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpKSk7CiAg
ICAgbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBjcmVhdGVSZWdF
eHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUodm0sIHRoaXMpKTsKQEAgLTEwMjAsNyArMTAyNiwxMSBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBBcnJheUNvbnN0cnVjdG9y
KiBhcnJheUNvbnN0cnVjdG9yID0gQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBB
cnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90
b3R5cGUuZ2V0KCkpLCBtX2FycmF5UHJvdG90eXBlLmdldCgpLCBtX3NwZWNpZXNHZXR0ZXJTZXR0
ZXIuZ2V0KCkpOwogICAgIG1fYXJyYXlDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIGFycmF5Q29u
c3RydWN0b3IpOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KExpbmtUaW1lQ29uc3RhbnQ6OkFycmF5KV0uc2V0KHZtLCB0aGlzLCBhcnJheUNvbnN0cnVjdG9y
KTsKLSAgICAKKworICAgIFNoYWRvd1JlYWxtQ29uc3RydWN0b3IqIHNoYWRvd1JlYWxtQ29uc3Ry
dWN0b3IgPSBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIFNoYWRvd1JlYWxtQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5n
ZXQoKSksIG1fc2hhZG93UmVhbG1Qcm90b3R5cGUuZ2V0KCksIG1fc3BlY2llc0dldHRlclNldHRl
ci5nZXQoKSk7CisgICAgbV9zaGFkb3dSZWFsbUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgc2hh
ZG93UmVhbG1Db25zdHJ1Y3Rvcik7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6U2hhZG93UmVhbG0pXS5zZXQodm0sIHRoaXMs
IHNoYWRvd1JlYWxtQ29uc3RydWN0b3IpOworCiAgICAgUmVnRXhwQ29uc3RydWN0b3IqIHJlZ0V4
cENvbnN0cnVjdG9yID0gUmVnRXhwQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgUmVnRXhwQ29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSksIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCBtX3NwZWNpZXNHZXR0ZXJTZXR0ZXIuZ2V0KCkp
OwogICAgIG1fcmVnRXhwQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCByZWdFeHBDb25zdHJ1Y3Rv
cik7CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1Rp
bWVDb25zdGFudDo6UmVnRXhwKV0uc2V0KHZtLCB0aGlzLCByZWdFeHBDb25zdHJ1Y3Rvcik7CkBA
IC0xMTAwLDYgKzExMTAsNyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1l
ICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgIG1fZnVuY3Rp
b25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5jb25zdHJ1Y3RvciwgZnVuY3Rpb25Db25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIG1fYXJyYXlQcm90b3R5cGUt
PnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1
Y3RvciwgYXJyYXlDb25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSkpOwogICAgIG1fcmVnRXhwUHJvdG90eXBlLT5wdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHJlZ0V4cENv
bnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSk7CisgICAgbV9zaGFkb3dSZWFsbVByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBzaGFkb3dSZWFsbUNvbnN0
cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CiAgICAgCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPk9iamVjdCwgb2JqZWN0Q29uc3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+RnVuY3Rpb24sIGZ1bmN0aW9uQ29uc3RydWN0b3Is
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKQEAg
LTEyNTEsNiArMTI2Miw4IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUg
IyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgIFRlbXBv
cmFsT2JqZWN0KiB0ZW1wb3JhbCA9IFRlbXBvcmFsT2JqZWN0OjpjcmVhdGUodm0sIFRlbXBvcmFs
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMpKTsKICAgICAgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPlRlbXBvcmFsLCB0ZW1wb3JhbCwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAg
IH0KKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhZG93UmVhbG0oKSkKKyAgICAgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPlNoYWRvd1JlYWxtLCBzaGFk
b3dSZWFsbUNvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSk7CiAKICAgICBtX21vZHVsZUxvYWRlci5pbml0TGF0ZXIoCiAgICAgICAg
IFtdIChjb25zdCBJbml0aWFsaXplcjxKU01vZHVsZUxvYWRlcj4mIGluaXQpIHsKQEAgLTE0MjMs
NiArMTQzNiwxMiBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENv
bnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgIG1fbGlua1RpbWVDb25z
dGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Omhvc3RQcm9taXNl
UmVqZWN0aW9uVHJhY2tlcildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxs
PiYgaW5pdCkgewogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQu
dm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJpbmcoKSwgZ2xv
YmFsRnVuY0hvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlcikpOwogICAgICAgICB9KTsKKyAgICBt
X2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50
OjppbXBvcnRJblJlYWxtKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+
JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52
bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBpbXBv
cnRJblJlYWxtKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmV2YWxJblJlYWxtKV0uaW5pdExhdGVy
KFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0
LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
aW5pdC5vd25lciksIDAsIFN0cmluZygpLCBldmFsSW5SZWFsbSkpOworICAgICAgICB9KTsKICAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50Ojp0aGlzVGltZVZhbHVlKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Nl
bGw+JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5p
dC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBk
YXRlUHJvdG9GdW5jR2V0VGltZSwgRGF0ZVByb3RvdHlwZUdldFRpbWVJbnRyaW5zaWMpKTsKICAg
ICAgICAgfSk7CkBAIC0yMTA3LDYgKzIxMjYsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNp
dENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhpc09i
amVjdC0+bV9VUklFcnJvclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0
LT5tX2FnZ3JlZ2F0ZUVycm9yU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1fYXJyYXlDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRvci5hcHBl
bmQodGhpc09iamVjdC0+bV9zaGFkb3dSZWFsbUNvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFw
cGVuZCh0aGlzT2JqZWN0LT5tX3JlZ0V4cENvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCh0aGlzT2JqZWN0LT5tX29iamVjdENvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX2Z1bmN0aW9uQ29uc3RydWN0b3IpOwpAQCAtMjIwNCw2ICsyMjI0LDcgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNp
dG9yJiB2aXNpdG9yKQogICAgIHRoaXNPYmplY3QtPm1fY3VzdG9tU2V0dGVyRnVuY3Rpb25TdHJ1
Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9ib3VuZEZ1bmN0aW9uU3Ry
dWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fbmF0aXZlU3RkRnVuY3Rp
b25TdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9zaGFkb3dSZWFsbU9iamVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhp
c09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fYXN5bmNGdW5jdGlvblN0cnVjdHVyZSk7CkBAIC0yNTYwLDYgKzI1ODEsMTMg
QEAgSlNHbG9iYWxPYmplY3QqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0OwogfQogCitKU0dsb2JhbE9i
amVjdCogSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVdpdGhDdXN0b21NZXRob2RUYWJsZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSogbWV0
aG9kVGFibGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2xvYmFsT2JqZWN0Pih2bS5oZWFwKSkgSlNHbG9iYWxPYmpl
Y3Qodm0sIHN0cnVjdHVyZSwgbWV0aG9kVGFibGUpOworICAgIGdsb2JhbE9iamVjdC0+ZmluaXNo
Q3JlYXRpb24odm0pOworICAgIHJldHVybiBnbG9iYWxPYmplY3Q7Cit9CisKIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBEZWZlclRlcm1pbmF0aW9u
IGRlZmVyVGVybWluYXRpb24odm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMTI4YjM5OTEwZGQ4MDU3ZjdhYWJiNTk3NzdjYTY4MGU5
ZGY2MTg5Mi4uZjNmZTc0YjE5OTU4MzU4ZTk2YmZhNDU0NzZiNjgyNDhhN2U1MWYyZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0xMTUs
NiArMTE1LDggQEAgY2xhc3MgTnVsbFNldHRlckZ1bmN0aW9uOwogY2xhc3MgT2JqZWN0Q29uc3Ry
dWN0b3I7CiBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7
CitjbGFzcyBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yOworY2xhc3MgU2hhZG93UmVhbG1Qcm90b3R5
cGU7CiBjbGFzcyBSZWdFeHBDb25zdHJ1Y3RvcjsKIGNsYXNzIFJlZ0V4cFByb3RvdHlwZTsKIGNs
YXNzIFNldEl0ZXJhdG9yUHJvdG90eXBlOwpAQCAtMzA2LDYgKzMwOCw3IEBAIHB1YmxpYzoKIAog
ICAgIFdyaXRlQmFycmllcjxPYmplY3RDb25zdHJ1Y3Rvcj4gbV9vYmplY3RDb25zdHJ1Y3RvcjsK
ICAgICBXcml0ZUJhcnJpZXI8QXJyYXlDb25zdHJ1Y3Rvcj4gbV9hcnJheUNvbnN0cnVjdG9yOwor
ICAgIFdyaXRlQmFycmllcjxTaGFkb3dSZWFsbUNvbnN0cnVjdG9yPiBtX3NoYWRvd1JlYWxtQ29u
c3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPFJlZ0V4cENvbnN0cnVjdG9yPiBtX3JlZ0V4cENv
bnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxGdW5jdGlvbkNvbnN0cnVjdG9yPiBtX2Z1bmN0
aW9uQ29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVjdG9yPiBt
X3Byb21pc2VDb25zdHJ1Y3RvcjsKQEAgLTM1Myw2ICszNTYsNyBAQCBwdWJsaWM6CiAgICAgV3Jp
dGVCYXJyaWVyPE9iamVjdFByb3RvdHlwZT4gbV9vYmplY3RQcm90b3R5cGU7CiAgICAgV3JpdGVC
YXJyaWVyPEZ1bmN0aW9uUHJvdG90eXBlPiBtX2Z1bmN0aW9uUHJvdG90eXBlOwogICAgIFdyaXRl
QmFycmllcjxBcnJheVByb3RvdHlwZT4gbV9hcnJheVByb3RvdHlwZTsKKyAgICBXcml0ZUJhcnJp
ZXI8U2hhZG93UmVhbG1Qcm90b3R5cGU+IG1fc2hhZG93UmVhbG1Qcm90b3R5cGU7CiAgICAgV3Jp
dGVCYXJyaWVyPFJlZ0V4cFByb3RvdHlwZT4gbV9yZWdFeHBQcm90b3R5cGU7CiAgICAgV3JpdGVC
YXJyaWVyPEl0ZXJhdG9yUHJvdG90eXBlPiBtX2l0ZXJhdG9yUHJvdG90eXBlOwogICAgIFdyaXRl
QmFycmllcjxBc3luY0l0ZXJhdG9yUHJvdG90eXBlPiBtX2FzeW5jSXRlcmF0b3JQcm90b3R5cGU7
CkBAIC00MDksNiArNDEzLDcgQEAgcHVibGljOgogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9i
amVjdCwgU3RydWN0dXJlPiBtX2N1c3RvbVNldHRlckZ1bmN0aW9uU3RydWN0dXJlOwogICAgIExh
enlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX25hdGl2ZVN0ZEZ1bmN0aW9u
U3RydWN0dXJlOwogICAgIFByb3BlcnR5T2Zmc2V0IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OworICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc2hhZG93UmVhbG1PYmplY3RTdHJ1Y3R1cmU7CiAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBTdHJ1Y3R1cmU7CiAgICAgV3JpdGVC
YXJyaWVyPEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU+IG1fYXN5bmNGdW5jdGlvblByb3RvdHlwZTsK
ICAgICBXcml0ZUJhcnJpZXI8QXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZT4gbV9hc3lu
Y0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOwpAQCAtNjEwLDYgKzYxNSw3IEBAIHB1YmxpYzoK
ICAgICB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNHbG9iYWxPYmplY3QqIGNy
ZWF0ZShWTSYsIFN0cnVjdHVyZSopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0ds
b2JhbE9iamVjdCogY3JlYXRlV2l0aEN1c3RvbU1ldGhvZFRhYmxlKFZNJiwgU3RydWN0dXJlKiwg
Y29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqKTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lO
Rk87CiAKQEAgLTcxMyw2ICs3MTksNyBAQCBwdWJsaWM6CiAgICAgQmlnSW50UHJvdG90eXBlKiBi
aWdJbnRQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2JpZ0ludFByb3RvdHlwZS5nZXQoKTsg
fQogICAgIEpTT2JqZWN0KiBkYXRlUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRlU3Ry
dWN0dXJlLnByb3RvdHlwZSh0aGlzKTsgfQogICAgIEpTT2JqZWN0KiBzeW1ib2xQcm90b3R5cGUo
KSBjb25zdCB7IHJldHVybiBtX3N5bWJvbE9iamVjdFN0cnVjdHVyZS5wcm90b3R5cGVJbml0aWFs
aXplZE9uTWFpblRocmVhZCh0aGlzKTsgfQorICAgIFNoYWRvd1JlYWxtUHJvdG90eXBlKiBzaGFk
b3dSZWFsbVByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93UmVhbG1Qcm90b3R5cGUu
Z2V0KCk7IH0KICAgICBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpOyB9CiAgICAgSlNPYmplY3QqIGVycm9yUHJv
dG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvclN0cnVjdHVyZS5wcm90b3R5cGUodGhpcyk7
IH0KICAgICBJdGVyYXRvclByb3RvdHlwZSogaXRlcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9CkBAIC04MzAsNiArODM3LDcgQEAgcHVi
bGljOgogICAgIFByb3BlcnR5T2Zmc2V0IGZ1bmN0aW9uTmFtZU9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fZnVuY3Rpb25OYW1lT2Zmc2V0OyB9CiAgICAgU3RydWN0dXJlKiBudW1iZXJPYmplY3RT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX251bWJlck9iamVjdFN0cnVjdHVyZS5nZXQodGhp
cyk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVnRXhwU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBzaGFkb3dSZWFsbVN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93UmVhbG1PYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7
IH0KICAgICBTdHJ1Y3R1cmUqIGdlbmVyYXRvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Z2VuZXJhdG9yU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBhc3luY0dlbmVyYXRv
clN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXN5bmNHZW5lcmF0b3JTdHJ1Y3R1cmUuZ2V0
KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKaW5kZXggNWE4YTE0YTNjYzZhZDE5ZWQ0MDgy
NGI4MzAyZGI5MGM0YzQ3NGMzYS4uODI4ZmQwMzY3NmU0NWFhMjNhZWJmMjQxYzgwNjllYmMxNDQ4
ODBhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCkBAIC00Myw2
ICs0Myw3IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkpTVHlw
ZSB0eXBlKQogICAgIENBU0UoU3RyaW5nVHlwZSkKICAgICBDQVNFKFN5bWJvbFR5cGUpCiAgICAg
Q0FTRShIZWFwQmlnSW50VHlwZSkKKyAgICBDQVNFKFNoYWRvd1JlYWxtVHlwZSkKICAgICBDQVNF
KEN1c3RvbUdldHRlclNldHRlclR5cGUpCiAgICAgQ0FTRShBUElWYWx1ZVdyYXBwZXJUeXBlKQog
ICAgIENBU0UoTmF0aXZlRXhlY3V0YWJsZVR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZS5oCmluZGV4IDY1ZWE5NGVmNTYzZjRiM2FlMjE5MTc1MWM3OTJlYzUxMGQ1NzQxYzEu
LjQzMWJiYWZjODRlNjUzNDRjMDAyZTRlNWY0NzY3YzdhMzQ1NTU5NDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBAIC0xMTAsNiArMTEwLDcgQEAgZW51bSBKU1R5cGUg
OiB1aW50OF90IHsKICAgICAvLyBFbmQgSlNTY29wZSB0eXBlcy4KIAogICAgIE1vZHVsZU5hbWVz
cGFjZU9iamVjdFR5cGUsCisgICAgU2hhZG93UmVhbG1UeXBlLAogICAgIFJlZ0V4cE9iamVjdFR5
cGUsCiAgICAgSlNEYXRlVHlwZSwKICAgICBQcm94eU9iamVjdFR5cGUsCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCBhMGMyMTcwZWM0YmE1MjFjNTFi
ZWM2ZDIwM2E1MWE5NTY4YjJmNGIyLi4yYWIxODg1MDFiOGJlOTg0M2E1M2ViNzUwYTczMzQyNDA3
ODdkMjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
TGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgK
QEAgLTU0MCw2ICs1NDAsNyBAQCBib29sIGNhblVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpOwog
ICAgIHYoQm9vbCwgdXNlSGFzT3duLCB0cnVlLCBOb3JtYWwsICJFeHBvc2UgdGhlIE9iamVjdC5o
YXNPd24gbWV0aG9kIikgXAogICAgIHYoQm9vbCwgdXNlSW50bEVudW1lcmF0aW9uLCB0cnVlLCBO
b3JtYWwsICJFeHBvc2UgdGhlIEludGwgZW51bWVyYXRpb24gQVBJcy4iKSBcCiAgICAgdihCb29s
LCB1c2VTaGFyZWRBcnJheUJ1ZmZlciwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIHYo
Qm9vbCwgdXNlU2hhZG93UmVhbG0sIGZhbHNlLCBOb3JtYWwsICJFeHBvc2UgdGhlIFNoYWRvd1Jl
YWxtIG9iamVjdC4iKSBcCiAgICAgdihCb29sLCB1c2VUZW1wb3JhbCwgZmFsc2UsIE5vcm1hbCwg
IkV4cG9zZSB0aGUgVGVtcG9yYWwgb2JqZWN0LiIpIFwKICAgICB2KEJvb2wsIHVzZVdlYkFzc2Vt
Ymx5VGhyZWFkaW5nLCB0cnVlLCBOb3JtYWwsICJBbGxvdyBpbnN0cnVjdGlvbnMgZnJvbSB0aGUg
d2FzbSB0aHJlYWRpbmcgc3BlYy4iKSBcCiAgICAgdihCb29sLCB1c2VXZWJBc3NlbWJseVR5cGVk
RnVuY3Rpb25SZWZlcmVuY2VzLCBmYWxzZSwgTm9ybWFsLCAiQWxsb3cgZnVuY3Rpb24gdHlwZXMg
ZnJvbSB0aGUgd2FzbSB0eXBlZCBmdW5jdGlvbiByZWZlcmVuY2VzIHNwZWMuIikgXApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbUNvbnN0cnVj
dG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40YzY4NDcyOWY0MDVhMmRlNDRlNjVmOTZkYWM3ZTA0NTdmOGE2
YzVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hh
ZG93UmVhbG1Db25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorI2luY2x1ZGUgIlNoYWRvd1JlYWxtT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0Mgewor
Citjb25zdCBDbGFzc0luZm8gU2hhZG93UmVhbG1Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVu
Y3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKFNoYWRvd1JlYWxtQ29uc3RydWN0b3IpIH07CisKK1NUQVRJQ19BU1NF
UlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKTsKKwor
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY2FsbFNoYWRvd1JlYWxtKTsKK3N0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFdpdGhTaGFkb3dSZWFsbUNvbnN0
cnVjdG9yKTsKKworU2hhZG93UmVhbG1Db25zdHJ1Y3Rvcjo6U2hhZG93UmVhbG1Db25zdHJ1Y3Rv
cihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbih2
bSwgc3RydWN0dXJlLCBjYWxsU2hhZG93UmVhbG0sIGNvbnN0cnVjdFdpdGhTaGFkb3dSZWFsbUNv
bnN0cnVjdG9yKQoreworfQorCit2b2lkIFNoYWRvd1JlYWxtQ29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgU2hhZG93UmVhbG1Qcm90b3R5cGUqIHNoYWRvd1JlYWxtUHJvdG90eXBl
KQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT5T
aGFkb3dSZWFsbS5zdHJpbmcoKSwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1
cmVUcmFuc2l0aW9uKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBzaGFkb3dSZWFsbVByb3RvdHlwZSwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworfQorCitzdGF0aWMgSlNPYmplY3QqIGNvbnN0cnVjdFNo
YWRvd1JlYWxtKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUsIGNvbnN0IEFy
Z0xpc3QmKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBTdHJ1Y3R1
cmUqIHNoYWRvd1JlYWxtU3RydWN0dXJlID0gU2hhZG93UmVhbG1PYmplY3Q6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnNoYWRvd1JlYWxtUHJvdG90eXBl
KCkpOworICAgIHJldHVybiBTaGFkb3dSZWFsbU9iamVjdDo6Y3JlYXRlKHZtLCBzaGFkb3dSZWFs
bVN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpKTsKK30K
KworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFdpdGhTaGFkb3dSZWFsbUNvbnN0
cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQoreworICAgIEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY29uc3RydWN0U2hhZG93UmVhbG0oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPm5l
d1RhcmdldCgpLCBhcmdzKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjYWxsU2hh
ZG93UmVhbG0sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKSkKK3sK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShnbG9iYWxPYmplY3QtPnZtKCkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2Fs
bGVkQXNGdW5jdGlvblR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU2hhZG93UmVhbG0i
KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkY2Nk
MjI3MDE2NTcwYzQxODg2NzUxMTk0ZWI5OGFmZDEzMzBhNDIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmgKQEAg
LTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNp
bmNsdWRlICJTaGFkb3dSZWFsbVByb3RvdHlwZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgR2V0dGVyU2V0dGVyOworCitjbGFzcyBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yIGZpbmFsIDog
cHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxG
dW5jdGlvbiBCYXNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAg
ICBzdGF0aWMgU2hhZG93UmVhbG1Db25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFNoYWRvd1JlYWxtUHJvdG90eXBlKiBzaGFkb3dSZWFsbVByb3RvdHlwZSwg
R2V0dGVyU2V0dGVyKikKKyAgICB7CisgICAgICAgIFNoYWRvd1JlYWxtQ29uc3RydWN0b3IqIGNv
bnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2hhZG93UmVhbG1Db25zdHJ1
Y3Rvcj4odm0uaGVhcCkpIFNoYWRvd1JlYWxtQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7Cisg
ICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgc2hhZG93UmVhbG1Qcm90b3R5
cGUpOworICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CisgICAgfQorCisgICAgREVDTEFSRV9J
TkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKFZNJiwgU3Ry
dWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFNoYWRvd1JlYWxtUHJvdG90
eXBlKik7Cit9OworU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoU2hhZG93UmVh
bG1Db25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbU9i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbU9iamVj
dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjU0NDdhNzFlZTE1MDg1MzdiNDU2ZmEzNmI0YmYxYWNjMzQ4ZGI0
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRv
d1JlYWxtT2JqZWN0LmNwcApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTaGFkb3dSZWFsbU9iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VS
VF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKFNoYWRvd1JlYWxtT2JqZWN0KTsKKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gU2hhZG93
UmVhbG1PYmplY3Q6OnNfaW5mbyA9IHsgIlNoYWRvd1JlYWxtIiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShTaGFkb3dSZWFsbU9iamVjdCkgfTsK
KworU2hhZG93UmVhbG1PYmplY3Q6OlNoYWRvd1JlYWxtT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFZpc2l0b3I+Cit2b2lkIFNoYWRvd1JlYWxtT2JqZWN0Ojp2aXNpdENoaWxkcmVu
SW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgU2hhZG93UmVhbG1P
YmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8U2hhZG93UmVhbG1PYmplY3QqPihjZWxsKTsKKyAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFz
ZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fZ2xvYmFsT2JqZWN0KTsKK30KKworREVGSU5FX1ZJU0lUX0NISUxE
UkVOKFNoYWRvd1JlYWxtT2JqZWN0KTsKKworU2hhZG93UmVhbG1PYmplY3QqIFNoYWRvd1JlYWxt
T2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgR2xvYmFs
T2JqZWN0TWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlKQoreworICAgIFNoYWRvd1JlYWxtT2JqZWN0
KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTaGFkb3dSZWFsbU9iamVjdD4o
dm0uaGVhcCkpIFNoYWRvd1JlYWxtT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+
ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBK
U0dsb2JhbE9iamVjdDo6Y3JlYXRlV2l0aEN1c3RvbU1ldGhvZFRhYmxlKHZtLCBKU0dsb2JhbE9i
amVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051bGwoKSksIG1ldGhvZFRhYmxlKTsKKyAgICBv
YmplY3QtPm1fZ2xvYmFsT2JqZWN0LnNldCh2bSwgb2JqZWN0LCBnbG9iYWxPYmplY3QpOworICAg
IHJldHVybiBvYmplY3Q7Cit9CisKK3ZvaWQgU2hhZG93UmVhbG1PYmplY3Q6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJU
KGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RS
QU5TSVRJT04oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbU9iamVjdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1PYmplY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NWI0ZDlm
OTc2OWExZDA1ZTM3ODljZGY2ZTc5NzIwNzFhMTk5NGIwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1PYmplY3QuaApAQCAtMCwwICsx
LDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRl
ICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU2hhZG93UmVhbG1PYmpl
Y3QgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcg
QmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuICZ2bS5zaGFkb3dSZWFs
bVNwYWNlOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oU2hhZG93UmVhbG1UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFNoYWRvd1Jl
YWxtT2JqZWN0KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBHbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSopOworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIHsgcmV0dXJu
IG1fZ2xvYmFsT2JqZWN0LmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgU2hhZG93UmVhbG1PYmpl
Y3QoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisgICAg
REVDTEFSRV9WSVNJVF9DSElMRFJFTjsKKworICAgIFdyaXRlQmFycmllcjxKU0dsb2JhbE9iamVj
dD4gbV9nbG9iYWxPYmplY3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40MTM1Mjc4MDFjZDE0YmFmNWViZjFmOWZlMDIyY2VmZDJmYmZlZDMwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Q
cm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsMTM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
aGFkb3dSZWFsbVByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiSW5kaXJlY3RFdmFsRXhlY3V0YWJs
ZS5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3Qu
aCIKKyNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTTW9kdWxlTG9h
ZGVyLmgiCisjaW5jbHVkZSAiTGl0ZXJhbFBhcnNlci5oIgorI2luY2x1ZGUgIlNoYWRvd1JlYWxt
T2JqZWN0LmgiCisKKyNpbmNsdWRlICJTaGFkb3dSZWFsbVByb3RvdHlwZS5sdXQuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKKy8qIFNvdXJjZSBmb3IgU2hhZG93UmVhbG1Qcm90b3R5cGUubHV0LmgK
K0BiZWdpbiBzaGFkb3dSZWFsbVByb3RvdHlwZVRhYmxlCisgIGV2YWx1YXRlICAgIEpTQnVpbHRp
biAgICAgRG9udEVudW18RnVuY3Rpb24gIDEKKyAgaW1wb3J0VmFsdWUgSlNCdWlsdGluICAgICBE
b250RW51bXxGdW5jdGlvbiAgMgorQGVuZAorKi8KKworY29uc3QgQ2xhc3NJbmZvIFNoYWRvd1Jl
YWxtUHJvdG90eXBlOjpzX2luZm8gPSB7ICJTaGFkb3dSZWFsbSIsICZCYXNlOjpzX2luZm8sICZz
aGFkb3dSZWFsbVByb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFNo
YWRvd1JlYWxtUHJvdG90eXBlKSB9OworCitTaGFkb3dSZWFsbVByb3RvdHlwZTo6U2hhZG93UmVh
bG1Qcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9uRmlu
YWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBTaGFkb3dSZWFsbVByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworICAgIEpTQ19UT19TVFJJTkdf
VEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
aW1wb3J0SW5SZWFsbSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOworICAgIFNoYWRvd1JlYWxtT2Jq
ZWN0KiB0aGlzUmVhbG0gPSBqc0R5bmFtaWNDYXN0PFNoYWRvd1JlYWxtT2JqZWN0Kj4odm0sIHRo
aXNWYWx1ZSk7CisgICAgUkVMRUFTRV9BU1NFUlQodGhpc1JlYWxtKTsKKworICAgIGF1dG8qIHBy
b21pc2UgPSBKU1Byb21pc2U6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5wcm9taXNlU3RydWN0
dXJlKCkpOworCisgICAgYXV0byBzb3VyY2VPcmlnaW4gPSBjYWxsRnJhbWUtPmNhbGxlclNvdXJj
ZU9yaWdpbih2bSk7CisgICAgYXV0byogc3BlY2lmaWVyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgxKS50b1N0cmluZyhnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisKKyAgICBKU0dsb2JhbE9iamVjdCogcmVhbG1HbG9iYWxPYmplY3Qg
PSB0aGlzUmVhbG0tPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8qIGludGVybmFsUHJvbWlzZSA9
IHJlYWxtR2xvYmFsT2JqZWN0LT5tb2R1bGVMb2FkZXIoKS0+aW1wb3J0TW9kdWxlKHJlYWxtR2xv
YmFsT2JqZWN0LCBzcGVjaWZpZXIsIGpzVW5kZWZpbmVkKCksIHNvdXJjZU9yaWdpbik7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UtPnJlamVj
dFdpdGhDYXVnaHRFeGNlcHRpb24ocmVhbG1HbG9iYWxPYmplY3QsIHNjb3BlKSkpOworCisgICAg
c2NvcGUucmVsZWFzZSgpOworICAgIHByb21pc2UtPnJlc29sdmUoZ2xvYmFsT2JqZWN0LCBpbnRl
cm5hbFByb21pc2UpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZSk7Cit9CisK
K0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihldmFsSW5SZWFsbSwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAg
IFNoYWRvd1JlYWxtT2JqZWN0KiB0aGlzUmVhbG0gPSBqc0R5bmFtaWNDYXN0PFNoYWRvd1JlYWxt
T2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CisgICAgUkVMRUFTRV9BU1NFUlQodGhpc1JlYWxtKTsK
KyAgICBKU0dsb2JhbE9iamVjdCogcmVhbG1HbG9iYWxPYmplY3QgPSB0aGlzUmVhbG0tPmdsb2Jh
bE9iamVjdCgpOworCisgICAgSlNWYWx1ZSBldmFsQXJnID0gY2FsbEZyYW1lLT5hcmd1bWVudCgx
KTsKKyAgICAvLyBldmFsIGNvZGUgYWRhcHRlZCBmcm9tIEpTR2xvYmFsT2JqZWNGdW5jdGlvbnM6
Omdsb2JhbEZ1bmNFdmFsCisgICAgU3RyaW5nIHMgPSBhc1N0cmluZyhldmFsQXJnKS0+dmFsdWUo
Z2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKKworICAgIEpTVmFsdWUgcGFyc2VkT2JqZWN0OworICAgIGlmIChzLmlzOEJpdCgp
KSB7CisgICAgICAgIExpdGVyYWxQYXJzZXI8TENoYXI+IHByZXBhcnNlcihnbG9iYWxPYmplY3Qs
IHMuY2hhcmFjdGVyczgoKSwgcy5sZW5ndGgoKSwgTm9uU3RyaWN0SlNPTiwgbnVsbHB0cik7Cisg
ICAgICAgIHBhcnNlZE9iamVjdCA9IHByZXBhcnNlci50cnlMaXRlcmFsUGFyc2UoKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBMaXRlcmFsUGFyc2VyPFVDaGFyPiBwcmVwYXJzZXIoZ2xvYmFsT2Jq
ZWN0LCBzLmNoYXJhY3RlcnMxNigpLCBzLmxlbmd0aCgpLCBOb25TdHJpY3RKU09OLCBudWxscHRy
KTsKKyAgICAgICAgcGFyc2VkT2JqZWN0ID0gcHJlcGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpOwor
ICAgIH0KKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
KyAgICBpZiAocGFyc2VkT2JqZWN0KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHBh
cnNlZE9iamVjdCk7CisKKyAgICBOYWtlZFB0cjxKU09iamVjdD4gZXhlY3V0YWJsZUVycm9yOwor
ICAgIFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJjZShzLCBjYWxsRnJhbWUtPmNhbGxlclNv
dXJjZU9yaWdpbih2bSkpOworICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0gSW5kaXJlY3RFdmFs
RXhlY3V0YWJsZTo6Y3JlYXRlU2FmZShyZWFsbUdsb2JhbE9iamVjdCwgc291cmNlLCBEZXJpdmVk
Q29udGV4dFR5cGU6Ok5vbmUsIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUsIGV4ZWN1dGFi
bGVFcnJvcik7CisgICAgaWYgKGV4ZWN1dGFibGVFcnJvcikgeworICAgICAgICBFcnJvckluc3Rh
bmNlKiBlcnJvciA9IGpzRHluYW1pY0Nhc3Q8RXJyb3JJbnN0YW5jZSo+KHZtLCBKU1ZhbHVlKGV4
ZWN1dGFibGVFcnJvci5nZXQoKSkpOworICAgICAgICBpZiAoZXJyb3IgIT0gbnVsbHB0ciAmJiBl
cnJvci0+ZXJyb3JUeXBlKCkgPT0gRXJyb3JUeXBlOjpTeW50YXhFcnJvcikgeworICAgICAgICAg
ICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZyBzeW50
YXhFcnJvck1lc3NhZ2UgPSBlcnJvci0+c2FuaXRpemVkTWVzc2FnZVN0cmluZyhnbG9iYWxPYmpl
Y3QpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAg
ICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJv
cihnbG9iYWxPYmplY3QsIHN5bnRheEVycm9yTWVzc2FnZSkpOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCAiRXJyb3IgZW5jb3VudGVyZWQgZHVyaW5nIGV2YWx1YXRpb24iX3Mp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICB9
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEpTVmFsdWUgcmVz
dWx0ID0gdm0uaW50ZXJwcmV0ZXItPmV4ZWN1dGUoZXZhbCwgcmVhbG1HbG9iYWxPYmplY3QsIHJl
YWxtR2xvYmFsT2JqZWN0LT5nbG9iYWxUaGlzKCksIHJlYWxtR2xvYmFsT2JqZWN0LT5nbG9iYWxT
Y29wZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLAorICAgICAgICB0aHJvd1ZN
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
IkVycm9yIGVuY291bnRlcmVkIGR1cmluZyBldmFsdWF0aW9uIl9zKSkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1No
YWRvd1JlYWxtUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFk
b3dSZWFsbVByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllYWViMGI4YmFiMzljMTY3OTYwMTk2YjQy
ZjY0MjFmY2U1MWVjOWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU2hhZG93
UmVhbG1Qcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6
CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3Rh
dGljUHJvcGVydHlUYWJsZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJz
cGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
KyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFNoYWRv
d1JlYWxtUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgIH0KKworICAgIHN0YXRpYyBTaGFkb3dSZWFsbVByb3RvdHlwZSogY3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBTaGFkb3dSZWFsbVBy
b3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2hhZG93UmVh
bG1Qcm90b3R5cGU+KHZtLmhlYXApKSBTaGFkb3dSZWFsbVByb3RvdHlwZSh2bSwgc3RydWN0dXJl
KTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVy
biBwcm90b3R5cGU7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFNoYWRv
d1JlYWxtUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYpOworfTsKKworSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihpbXBvcnRJblJlYWxtKTsK
K0pTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZXZhbEluUmVhbG0pOworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFs
RHVyYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJh
dGlvbi5jcHAKaW5kZXggNTY1ZDdiMDIyOGJhYWE1MzA0NDNjZWY2ZDZlN2NlZTMxOWJkZGU4Ny4u
NTk1OTU5YzE3MjQ0NTdhOWIzNmYzZDY2YmJhNjMzNTQ1YmEyMWUwMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAKQEAgLTM0LDEx
ICszNCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgbmFu
b3NlY29uZHNQZXJEYXkgPSAyNC4wICogNjAgKiA2MCAqIDEwMDAgKiAxMDAwICogMTAwMDsKIAot
c3RhdGljIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUoVk0mIHZtLCB1bnNpZ25lZCBpbmRleCkK
K3N0YXRpYyBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lRHVyYXRpb25JbXBsKFZNJiB2bSwgdW5z
aWduZWQgaW5kZXgpCiB7CiAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZUZW1wb3JhbFVuaXRz
KTsKICAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PFRlbXBvcmFsVW5pdD4oaW5kZXgpKSB7Ci0jZGVm
aW5lIEpTQ19URU1QT1JBTF9EVVJBVElPTl9QUk9QRVJUWV9OQU1FKG5hbWUsIGNhcGl0YWxpemVk
TmFtZSkgY2FzZSBUZW1wb3JhbFVuaXQ6OmNhcGl0YWxpemVkTmFtZTogcmV0dXJuIHZtLnByb3Bl
cnR5TmFtZXMtPm5hbWUjI3M7IAorI2RlZmluZSBKU0NfVEVNUE9SQUxfRFVSQVRJT05fUFJPUEVS
VFlfTkFNRShuYW1lLCBjYXBpdGFsaXplZE5hbWUpIGNhc2UgVGVtcG9yYWxVbml0OjpjYXBpdGFs
aXplZE5hbWU6IHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lIyNzOwogICAgICAgICBKU0Nf
VEVNUE9SQUxfVU5JVFMoSlNDX1RFTVBPUkFMX0RVUkFUSU9OX1BST1BFUlRZX05BTUUpCiAjdW5k
ZWYgSlNDX1RFTVBPUkFMX0RVUkFUSU9OX1BST1BFUlRZX05BTUUKICAgICB9CkBAIC0xMDAsNyAr
MTAwLDcgQEAgSVNPODYwMTo6RHVyYXRpb24gVGVtcG9yYWxEdXJhdGlvbjo6ZnJvbUR1cmF0aW9u
TGlrZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBJU084NjAxOjpEdXJhdGlvbiBy
ZXN1bHQ7CiAgICAgYXV0byBoYXNSZWxldmFudFByb3BlcnR5ID0gZmFsc2U7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlRlbXBvcmFsVW5pdHM7IGkrKykgewotICAgICAgICBK
U1ZhbHVlIHZhbHVlID0gZHVyYXRpb25MaWtlLT5nZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUodm0sIGkpKTsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGR1cmF0aW9uTGlrZS0+Z2V0KGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lRHVyYXRpb25JbXBsKHZtLCBpKSk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAgICAgaWYgKHZhbHVlLmlzVW5k
ZWZpbmVkKCkpIHsKQEAgLTI0MSw3ICsyNDEsNyBAQCBJU084NjAxOjpEdXJhdGlvbiBUZW1wb3Jh
bER1cmF0aW9uOjp3aXRoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0Kgog
ICAgIElTTzg2MDE6OkR1cmF0aW9uIHJlc3VsdDsKICAgICBhdXRvIGhhc1JlbGV2YW50UHJvcGVy
dHkgPSBmYWxzZTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mVGVtcG9yYWxV
bml0czsgaSsrKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBkdXJhdGlvbkxpa2UtPmdldChn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSh2bSwgaSkpOworICAgICAgICBKU1ZhbHVlIHZhbHVl
ID0gZHVyYXRpb25MaWtlLT5nZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVEdXJhdGlvbklt
cGwodm0sIGkpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAog
ICAgICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuY3BwCmluZGV4IGU3NDdkMzk1MjIz
NjkxNzNhMDM1Y2I4NzJmMmJlNTAzZWEwMDgzMzMuLmZlN2Y2OWNlMmU3ZDkxOWI2OGQ5ZDBjNDU3
NjkwZDc0NGM5NWU2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsUGxhaW5UaW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbFBsYWluVGltZS5jcHAKQEAgLTI3OCw3ICsyNzgsNyBAQCBTdHJpbmcgVGVtcG9y
YWxQbGFpblRpbWU6OnRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgb3B0aW9ucwogfQogCiAKLXN0YXRpYyBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKFZNJiB2
bSwgdW5zaWduZWQgaW5kZXgpCitzdGF0aWMgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZVBsYWlu
VGltZUltcGwoVk0mIHZtLCB1bnNpZ25lZCBpbmRleCkKIHsKICAgICBBU1NFUlQoaW5kZXggPCBu
dW1iZXJPZlRlbXBvcmFsVW5pdHMpOwogICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8VGVtcG9yYWxV
bml0PihpbmRleCkpIHsKQEAgLTI5OCw3ICsyOTgsNyBAQCBzdGF0aWMgSVNPODYwMTo6RHVyYXRp
b24gdG9UZW1wb3JhbFRpbWVSZWNvcmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNP
YgogICAgIElTTzg2MDE6OkR1cmF0aW9uIGR1cmF0aW9uIHsgfTsKICAgICBmb3IgKHVuc2lnbmVk
IGluZGV4ID0gMDsgaW5kZXggPCBudW1iZXJPZlRlbXBvcmFsUGxhaW5UaW1lVW5pdHM7ICsraW5k
ZXgpIHsKICAgICAgICAgdW5zaWduZWQgZHVyYXRpb25JbmRleCA9IGluZGV4ICsgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFRlbXBvcmFsVW5pdDo6SG91cik7Ci0gICAgICAgIGF1dG8gbmFtZSA9IHBy
b3BlcnR5TmFtZSh2bSwgZHVyYXRpb25JbmRleCk7CisgICAgICAgIGF1dG8gbmFtZSA9IHByb3Bl
cnR5TmFtZVBsYWluVGltZUltcGwodm0sIGR1cmF0aW9uSW5kZXgpOwogICAgICAgICBKU1ZhbHVl
IHZhbHVlID0gdGVtcG9yYWxUaW1lTGlrZS0+Z2V0KGdsb2JhbE9iamVjdCwgbmFtZSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKQEAgLTMyOSw3ICszMjksNyBA
QCBzdGF0aWMgc3RkOjphcnJheTxzdGQ6Om9wdGlvbmFsPGRvdWJsZT4sIG51bWJlck9mVGVtcG9y
YWxQbGFpblRpbWVVbml0cz4gdG9QYXJ0aQogICAgIHN0ZDo6YXJyYXk8c3RkOjpvcHRpb25hbDxk
b3VibGU+LCBudW1iZXJPZlRlbXBvcmFsUGxhaW5UaW1lVW5pdHM+IHBhcnRpYWxUaW1lIHsgfTsK
ICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBudW1iZXJPZlRlbXBvcmFsUGxh
aW5UaW1lVW5pdHM7ICsraW5kZXgpIHsKICAgICAgICAgdW5zaWduZWQgZHVyYXRpb25JbmRleCA9
IGluZGV4ICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFRlbXBvcmFsVW5pdDo6SG91cik7Ci0gICAg
ICAgIGF1dG8gbmFtZSA9IHByb3BlcnR5TmFtZSh2bSwgZHVyYXRpb25JbmRleCk7CisgICAgICAg
IGF1dG8gbmFtZSA9IHByb3BlcnR5TmFtZVBsYWluVGltZUltcGwodm0sIGR1cmF0aW9uSW5kZXgp
OwogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gdGVtcG9yYWxUaW1lTGlrZS0+Z2V0KGdsb2JhbE9i
amVjdCwgbmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA5OTZhMDZkYWFiYTgyY2NlZmI0
M2RmM2Y2NWYxMzFlNmZkZTZlZTA3Li5jZTRlM2I5M2YzNDU0ZDcyZDM0ZjNkYmE1MGEwNDFkZjIx
ZGU2YTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xNTQsNiArMTU0
LDcgQEAKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJn
dW1lbnRzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgorI2luY2x1ZGUgIlNoYWRvd1Jl
YWxtT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJTb3VyY2VQcm92aWRlckNhY2hlLmgiCiAjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2
YXRpb24uaCIKQEAgLTM2OCw2ICszNjksNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5
cGUgaGVhcFR5cGUsIFdURjo6UnVuTG9vcCogcnVuTG9vcCwgYm9vbCogc3VjY2VzcykKICAgICAs
IHByb21pc2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBKU1Byb21pc2UpCiAgICAgLCBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoaGVhcCwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNQcm9wZXJ0eU5hbWVF
bnVtZXJhdG9yKQogICAgICwgcHJvcGVydHlUYWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhl
YXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFByb3BlcnR5VGFibGUpIC8v
IEhhc2g6MHhjNmJjOWYxMgorICAgICwgc2hhZG93UmVhbG1TcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VChoZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTaGFkb3dSZWFsbU9iamVjdCkKICAgICAs
IHJlZ0V4cFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIFJlZ0V4cCkKICAgICAsIHJlZ0V4cE9iamVjdFNwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFJlZ0V4cE9iamVjdCkKICAg
ICAsIHJvcGVTdHJpbmdTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBzdHJpbmdIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTUm9wZVN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmlu
ZGV4IDdhNThiMjc5ZTY3MGE4NDAzZDFmMzk0MTIzNTdkNWU3NzExM2Y1NzguLmE4ODdhOGU1MDIx
NjgwYWFhZDFlYjVkODVmZDQ1N2NkYjU5ZGYzYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaApAQCAtNTEyLDYgKzUxMiw3IEBAIHB1YmxpYzoKICAgICBJc29TdWJzcGFjZSBwcm9taXNl
U3BhY2U7CiAgICAgSXNvU3Vic3BhY2UgcHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlOwogICAg
IElzb1N1YnNwYWNlIHByb3BlcnR5VGFibGVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzaGFkb3dS
ZWFsbVNwYWNlOwogICAgIElzb1N1YnNwYWNlIHJlZ0V4cFNwYWNlOwogICAgIElzb1N1YnNwYWNl
IHJlZ0V4cE9iamVjdFNwYWNlOwogICAgIElzb1N1YnNwYWNlIHJvcGVTdHJpbmdTcGFjZTsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODFl
ZTg2MGJkODZlNWU4ODU0OGExYzMzZTRmYWRiMjYyNjc5N2NmMS4uN2UwMjRmODNmZGI2ZDZmNzAy
MDA5MTMwZWY4M2Y2YWFkZjg1NjQ2YiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAyMS0wOS0yMSAgUGhpbGxp
cCBNYXRlcyAgPHBtYXRlc0BpZ2FsaWEuY29tPgorCisgICAgICAgIFRlc3QgY292ZXJhZ2UgZm9y
IEpTQyBzaGFkb3cgcmVhbG1zIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA2MDIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1vZHVsZXMvaW1wb3J0LW1ldGEtc3ludGF4Lmpz
OgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAqIHN0cmVzcy9pbXBvcnQtc3ludGF4
LmpzOgorICAgICAgICAqIHN0cmVzcy9yZXNvdXJjZXMvc2hhZG93LXJlYWxtLWV4YW1wbGUtbW9k
dWxlLmpzOiBBZGRlZC4KKyAgICAgICAgKHB1dEluR2xvYmFsKToKKyAgICAgICAgKGdldEZyb21H
bG9iYWwpOgorICAgICAgICAoZ2V0QW5PYmplY3QpOgorICAgICAgICAoZ2V0Q2FsbENvdW50KToK
KyAgICAgICAgKiBzdHJlc3Mvc2hhZG93LXJlYWxtLWV2YWx1YXRlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKGFzc2VydGlv
bkZuKToKKyAgICAgICAgKHNob3VsZEJlLlN0cmluZyk6CisgICAgICAgIChzaG91bGRCZS5nbG9i
YWxPYmplY3RGb3IuZG9FdmFsKToKKyAgICAgICAgKHNob3VsZEJlLmdsb2JhbE9iamVjdEZvcik6
CisgICAgICAgICogc3RyZXNzL3NoYWRvdy1yZWFsbS1pbXBvcnQtdmFsdWUuanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoYXN5
bmMgc2hvdWxkVGhyb3dBc3luYyk6CisgICAgICAgIChhc3luYyBjb25zdCk6CisgICAgICAgIChk
b0ltcG9ydCk6CisgICAgICAgICogc3RyZXNzL3NoYWRvdy1yZWFsbS5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRCZSk6CisgICAgICAgICh0aHJvdy5uZXcuRXJyb3IpOgorCiAyMDIxLTA5LTIx
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gQ29t
cGFyZVN0cmljdEVxIGlzIG9taXR0aW5nIFN0cmluZyBjaGVjayBpbmNvcnJlY3RseQpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9tb2R1bGVzL2ltcG9ydC1tZXRhLXN5bnRheC5qcyBiL0pTVGVzdHMvbW9k
dWxlcy9pbXBvcnQtbWV0YS1zeW50YXguanMKaW5kZXggM2VkZjRlNTEyMGUxMmE1YjY4OTQ5MTNi
MDVhYTcwYWM2NzY4NTY2Mi4uNTlhMmIzNjM0NjBhNjAzNWM3YTEwNWYwOGMyMzZmOWY0YTk0MzUx
YSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9tb2R1bGVzL2ltcG9ydC1tZXRhLXN5bnRheC5qcworKysg
Yi9KU1Rlc3RzL21vZHVsZXMvaW1wb3J0LW1ldGEtc3ludGF4LmpzCkBAIC0xMCw3ICsxMCw3IEBA
IHNob3VsZE5vdFRocm93KCgpID0+IHsKIAogc2hvdWxkVGhyb3coKCkgPT4gewogICAgIGNoZWNr
TW9kdWxlU3ludGF4KGAoaW1wb3J0LmNvY29hKWApOwotfSwgYFN5bnRheEVycm9yOiBVbmV4cGVj
dGVkIGlkZW50aWZpZXIgJ2NvY29hJy4gImltcG9ydC4iIGNhbiBvbmx5IGZvbGxvd2VkIHdpdGgg
bWV0YS46MWApOworfSwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGlkZW50aWZpZXIgJ2NvY29h
Jy4gImltcG9ydC4iIGNhbiBvbmx5IGJlIGZvbGxvd2VkIHdpdGggbWV0YS46MWApOwogCiBzaG91
bGRUaHJvdygoKSA9PiB7CiAgICAgY2hlY2tNb2R1bGVTeW50YXgoYChpbXBvcnRbIkNvY29hIl0p
YCk7CkBAIC0xOCw3ICsxOCw3IEBAIHNob3VsZFRocm93KCgpID0+IHsKIAogc2hvdWxkVGhyb3co
KCkgPT4gewogICAgIGNoZWNrTW9kdWxlU3ludGF4KGBpbXBvcnQuY29jb2FgKTsKLX0sIGBTeW50
YXhFcnJvcjogVW5leHBlY3RlZCBpZGVudGlmaWVyICdjb2NvYScuICJpbXBvcnQuIiBjYW4gb25s
eSBmb2xsb3dlZCB3aXRoIG1ldGEuOjFgKTsKK30sIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCBp
ZGVudGlmaWVyICdjb2NvYScuICJpbXBvcnQuIiBjYW4gb25seSBiZSBmb2xsb3dlZCB3aXRoIG1l
dGEuOjFgKTsKIAogc2hvdWxkVGhyb3coKCkgPT4gewogICAgIGNoZWNrTW9kdWxlU3ludGF4KGBp
bXBvcnRbIkNvY29hIl1gKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ltcG9ydC1zeW50
YXguanMgYi9KU1Rlc3RzL3N0cmVzcy9pbXBvcnQtc3ludGF4LmpzCmluZGV4IDI1YTNmYmJmNjg2
NjE1N2IxNzVkYThlZGFlNzhjMGU5ZTI4MTVjMjYuLjk0ZTA4NTBmN2IyODkyYTg2MWFkNWQwZjQ1
MGZmNDRmOTE3MjRkMjEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2ltcG9ydC1zeW50YXgu
anMKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW1wb3J0LXN5bnRheC5qcwpAQCAtMjksNyArMjksNyBA
QCBhc3luYyBmdW5jdGlvbiB0ZXN0U3ludGF4KHNjcmlwdCwgbWVzc2FnZSkgewogCiB0ZXN0U3lu
dGF4RXJyb3IoYGltcG9ydClgLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJyknLiBp
bXBvcnQgY2FsbCBleHBlY3RzIGV4YWN0bHkgb25lIGFyZ3VtZW50LmApOwogdGVzdFN5bnRheEVy
cm9yKGBuZXcgaW1wb3J0KGAsIGBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSBuZXcgd2l0aCBpbXBv
cnQuYCk7Ci10ZXN0U3ludGF4RXJyb3IoYGltcG9ydC5oZWxsbygpYCwgYFN5bnRheEVycm9yOiBV
bmV4cGVjdGVkIGlkZW50aWZpZXIgJ2hlbGxvJy4gImltcG9ydC4iIGNhbiBvbmx5IGZvbGxvd2Vk
IHdpdGggbWV0YS5gKTsKK3Rlc3RTeW50YXhFcnJvcihgaW1wb3J0LmhlbGxvKClgLCBgU3ludGF4
RXJyb3I6IFVuZXhwZWN0ZWQgaWRlbnRpZmllciAnaGVsbG8nLiAiaW1wb3J0LiIgY2FuIG9ubHkg
YmUgZm9sbG93ZWQgd2l0aCBtZXRhLmApOwogdGVzdFN5bnRheEVycm9yKGBpbXBvcnRbYCwgYFN5
bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICdbJy4gaW1wb3J0IGNhbGwgZXhwZWN0cyBleGFj
dGx5IG9uZSBhcmd1bWVudC5gKTsKIHRlc3RTeW50YXhFcnJvcihgaW1wb3J0PGAsIGBTeW50YXhF
cnJvcjogVW5leHBlY3RlZCB0b2tlbiAnPCcuIGltcG9ydCBjYWxsIGV4cGVjdHMgZXhhY3RseSBv
bmUgYXJndW1lbnQuYCk7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Jlc291cmNlcy9z
aGFkb3ctcmVhbG0tZXhhbXBsZS1tb2R1bGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9yZXNvdXJjZXMv
c2hhZG93LXJlYWxtLWV4YW1wbGUtbW9kdWxlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiNGY1NzljMmY5YTZk
YzIzOTBiZTJmYTA1NWNlNjhkNjgwMzMwZjMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9yZXNvdXJjZXMvc2hhZG93LXJlYWxtLWV4YW1wbGUtbW9kdWxlLmpzCkBAIC0wLDAgKzEs
MjUgQEAKK3ZhciBjYWxsQ291bnQgPSAwOworCitmdW5jdGlvbiBwdXRJbkdsb2JhbChrZXksIHZh
bCkgeworICAgIGNhbGxDb3VudCsrOworICAgIGdsb2JhbFRoaXMua2V5ID0gdmFsOworfQorCitm
dW5jdGlvbiBnZXRGcm9tR2xvYmFsKGtleSkgeworICAgIGNhbGxDb3VudCsrOworICAgIHJldHVy
biBnbG9iYWxUaGlzLmtleTsKK30KKwordmFyIGFuT2JqZWN0ID0gbmV3IE9iamVjdCgpOworCitm
dW5jdGlvbiBnZXRBbk9iamVjdCgpIHsKKyAgICBjYWxsQ291bnQrKzsKKyAgICByZXR1cm4gYW5P
YmplY3Q7Cit9CisKK2Z1bmN0aW9uIGdldENhbGxDb3VudCgpIHsKKyAgICByZXR1cm4gY2FsbENv
dW50OworfQorCit2YXIgYW5zd2VyID0gNjsKK2V4cG9ydCB7IGFuT2JqZWN0LCBhbnN3ZXIsIGdl
dENhbGxDb3VudCwgZ2V0RnJvbUdsb2JhbCwgZ2V0QW5PYmplY3QsIHB1dEluR2xvYmFsIH07CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zaGFkb3ctcmVhbG0tZXZhbHVhdGUuanMgYi9KU1Rl
c3RzL3N0cmVzcy9zaGFkb3ctcmVhbG0tZXZhbHVhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTAzNjAzMTE5
YjgyMjJkOTAzZGZlNWI2MzViMmNmODg3ZmM3NmU1ZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL3NoYWRvdy1yZWFsbS1ldmFsdWF0ZS5qcwpAQCAtMCwwICsxLDE1MyBAQAorLy9A
IHJlcXVpcmVPcHRpb25zKCItLXVzZVNoYWRvd1JlYWxtPTEiKQorCitmdW5jdGlvbiBzaG91bGRC
ZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVh
bH1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlLCBhc3NlcnRp
b25GbikgeworICAgIGxldCBlcnJvcjsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorCisgICAgaWYgKCEoZXJy
b3IgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVj
dGVkICR7ZXJyb3JUeXBlLm5hbWV9IGJ1dCBnb3QgJHtlcnJvci5uYW1lfWApOworCisgICAgYXNz
ZXJ0aW9uRm4oZXJyb3IpOworfQorCisvLyBiYXNpYyBldmFsdWF0aW9uIGFuZCBzdGF0ZSBzZXR0
aW5nCit7CisgICAgbGV0IHJlYWxtID0gbmV3IFNoYWRvd1JlYWxtKCk7CisgICAgbGV0IG90aGVy
UmVhbG0gPSBuZXcgU2hhZG93UmVhbG0oKTsKKworICAgIHNob3VsZEJlKHJlYWxtLmV2YWx1YXRl
KCIxIiksIDEpOworICAgIHZhciB4ID0gMjsKKyAgICByZWFsbS5ldmFsdWF0ZSgidmFyIHggPSAx
Iik7CisgICAgc2hvdWxkQmUocmVhbG0uZXZhbHVhdGUoIngiKSwgMSk7CisgICAgc2hvdWxkQmUo
eCwgMik7CisKKyAgICAvLyBzY29wZSBpc24ndCBzaGFyZWQgYWNyb3NzIHJlYWxtcworICAgIHNo
b3VsZEJlKG90aGVyUmVhbG0uZXZhbHVhdGUoImdsb2JhbFRoaXMueCIpLCB1bmRlZmluZWQpOwor
fQorCisvLyBhY2Nlc3NpbmcgYGdsb2JhbFRoaXNgIHdpdGhpbiBhbmQgb3V0c2lkZSBvZiBhIHNo
YWRvdyByZWFsbQoreworICAgIGxldCByZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOworICAgIGds
b2JhbFRoaXMuaGkgPSA2OworCisgICAgc2hvdWxkQmUocmVhbG0uZXZhbHVhdGUoImdsb2JhbFRo
aXMuaGkiKSwgdW5kZWZpbmVkKTsKKworICAgIHJlYWxtLmV2YWx1YXRlKCJnbG9iYWxUaGlzLmhp
ID0gJ2ZhbGEgYW1pZ28nIik7CisKKyAgICBzaG91bGRCZShyZWFsbS5ldmFsdWF0ZSgiZ2xvYmFs
VGhpcy5oaSIpLCAiZmFsYSBhbWlnbyIpOworICAgIHNob3VsZEJlKGdsb2JhbFRoaXMuaGksIDYp
OworfQorCisvLyBlbnN1cmUgdGhhdCBlcnJvcnMgdGhyb3duIGlzbid0IGFzc29jaWF0ZWQgd2l0
aCB0aGUgc2hhZG93IHJlYWxtJ3MgZ2xvYmFsIG9iamVjdAoreworICAgIGxldCByZWFsbSA9IG5l
dyBTaGFkb3dSZWFsbSgpOworICAgIHNob3VsZFRocm93KAorICAgICAgKCkgPT4geyByZWFsbS5l
dmFsdWF0ZSgiLi4iKTsgfSwKKyAgICAgIFN5bnRheEVycm9yLAorICAgICAgKGVycikgPT4gewor
ICAgICAgICAgIHNob3VsZEJlKCQuZ2xvYmFsT2JqZWN0Rm9yKGVyciksIGdsb2JhbFRoaXMpOwor
ICAgICAgICAgIHNob3VsZEJlKFN0cmluZyhlcnIpLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQg
dG9rZW4gJy4nYCk7CisgICAgICB9KTsKK30KKworLy8gZW5zdXJlIHRoYXQgZXJyb3JzIHRocm93
biBkb24ndCBjYXJyeSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBzaGFkb3cgcmVhbG0KK3sKKyAgICBs
ZXQgcmVhbG0gPSBuZXcgU2hhZG93UmVhbG0oKTsKKyAgICBzaG91bGRUaHJvdygKKyAgICAgICgp
ID0+IHsgcmVhbG0uZXZhbHVhdGUoInRocm93IG5ldyBFcnJvcignc2VjcmV0JykiKTsgfSwKKyAg
ICAgIFR5cGVFcnJvciwKKyAgICAgIChlcnIpID0+IHsKKyAgICAgICAgICBzaG91bGRCZSgkLmds
b2JhbE9iamVjdEZvcihlcnIpLCBnbG9iYWxUaGlzKTsKKyAgICAgICAgICBzaG91bGRCZShTdHJp
bmcoZXJyKSwgIlR5cGVFcnJvcjogRXJyb3IgZW5jb3VudGVyZWQgZHVyaW5nIGV2YWx1YXRpb24i
KTsKKyAgICAgIH0pOworfQorCisvLyB3cmFwcGVkIGZ1bmN0aW9ucyBwcm90ZWN0IHRoZSBzaGFk
b3cgcmVhbG0KK3sKKyAgICBsZXQgcmVhbG0gPSBuZXcgU2hhZG93UmVhbG0oKTsKKyAgICBsZXQg
d3JhcHBlZEludm9rZUFuZEFkZCA9IHJlYWxtLmV2YWx1YXRlKCJmdW5jdGlvbiBpbnZva2VBbmRB
ZGQoeEZuLCB5Rm4pIHsgcmV0dXJuIHhGbigpICsgeUZuKCk7IH07IGludm9rZUFuZEFkZCIpOwor
ICAgIHNob3VsZEJlKHdyYXBwZWRJbnZva2VBbmRBZGQoKCkgPT4geyByZXR1cm4gMSB9LCAoKSA9
PiB7IHJldHVybiAyIH0pLCAzKTsKKyAgICBzaG91bGRCZSgkLmdsb2JhbE9iamVjdEZvcih3cmFw
cGVkSW52b2tlQW5kQWRkKSwgZ2xvYmFsVGhpcyk7CisKKyAgICAvLyBuYW1lIGFuZCBsZW5ndGgg
cHJvcGVydGllcyBmcm9tIHdyYXBwZWQgZnVuY3Rpb24gYXJlIGFic2VudAorICAgIHNob3VsZEJl
KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod3JhcHBlZEludm9rZUFuZEFkZCwgImxl
bmd0aCIpLCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3Iod3JhcHBlZEludm9rZUFuZEFkZCwgIm5hbWUiKSwgdW5kZWZpbmVkKTsKKworICAg
IC8vIGNhbid0IHBhc3Mgb2JqZWN0cyBpbnRvIGEgc2hhZG93IHJlYWxtLXdyYXBwZWQgZnVuY3Rp
b24KKyAgICBsZXQgbnVtYmVyT2JqID0geyB2YWx1ZU9mKCkgeyByZXR1cm4gLTEgfSB9OworICAg
IHNob3VsZFRocm93KAorICAgICAgKCkgPT4geyB3cmFwcGVkSW52b2tlQW5kQWRkKG51bWJlck9i
aiwgMSk7IH0sCisgICAgICBUeXBlRXJyb3IsCisgICAgICAoZXJyKSA9PiB7CisgICAgICAgICAg
c2hvdWxkQmUoJC5nbG9iYWxPYmplY3RGb3IoZXJyKSwgZ2xvYmFsVGhpcyk7CisgICAgICAgICAg
c2hvdWxkQmUoU3RyaW5nKGVyciksICJUeXBlRXJyb3I6IHZhbHVlIHBhc3NpbmcgYmV0d2VlbiBy
ZWFsbXMgbXVzdCBiZSBjYWxsYWJsZSBvciBwcmltaXRpdmUiKTsKKyAgICAgIH0pOworfQorCit7
CisgICAgbGV0IHJlYWxtID0gbmV3IFNoYWRvd1JlYWxtKCk7CisgICAgLy8gY2FuJ3QgY2FsbCBg
ZXZhbHVhdGVgIG9uIGEgbm9uIHNoYWRvdyByZWFsbQorICAgIGxldCBub3RSZWFsbSA9IHt9Owor
ICAgIHNob3VsZFRocm93KAorICAgICAgKCkgPT4geyByZWFsbS5ldmFsdWF0ZS5jYWxsKG5vdFJl
YWxtLCAnMScpOyB9LAorICAgICAgVHlwZUVycm9yLAorICAgICAgKGVycikgPT4geyBzaG91bGRC
ZSgkLmdsb2JhbE9iamVjdEZvcihlcnIpLCBnbG9iYWxUaGlzKTsgfQorICAgICk7Cit9CisKKy8v
IHRyaWdnZXIgSklUCit7CisgICAgZnVuY3Rpb24gZG9FdmFsKHJlYWxtLCBzKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHJlYWxtLmV2YWx1YXRlKHMpOworICAgIH0KKworICAgIG5vSW5saW5lKGRv
RXZhbCk7CisKKyAgICBsZXQgcmVhbG0gPSBuZXcgU2hhZG93UmVhbG0oKTsKKyAgICByZWFsbS5l
dmFsdWF0ZSgiZ2xvYmFsVGhpcy5zZWNyZXQgPSAxOyIpOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMTAwMDA7ICsraSkKKyAgICAgICAgc2hvdWxkQmUoZG9FdmFsKHJlYWxtLCAnNDInKSwgNDIp
OworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgIGxldCBm
ID0gZG9FdmFsKHJlYWxtLCAnKHgpID0+IHsgcmV0dXJuIHgoKSArIGdsb2JhbFRoaXMuc2VjcmV0
OyB9Jyk7CisgICAgICAgIHNob3VsZEJlKCQuZ2xvYmFsT2JqZWN0Rm9yKGYpLCBnbG9iYWxUaGlz
KTsKKyAgICAgICAgc2hvdWxkQmUoZigoKSA9PiB7IHJldHVybiA0MTsgfSksIDQyKTsKKyAgICB9
CisgICAgLy8gKHBvdGVudGlhbCkgaW5saW5pbmcgb2Ygd3JhcHBlZCBmdW5jdGlvbiB1c2VzIGNv
cnJlY3QgZ2xvYmFsIG9iamVjdAorICAgIGxldCBmID0gZG9FdmFsKHJlYWxtLCAnKHgpID0+IHsg
cmV0dXJuIHgoKSArIGdsb2JhbFRoaXMuc2VjcmV0OyB9Jyk7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgIHNob3VsZEJlKCQuZ2xvYmFsT2JqZWN0Rm9yKGYp
LCBnbG9iYWxUaGlzKTsKKyAgICAgICAgc2hvdWxkQmUoZigoKSA9PiB7IHJldHVybiA0MTsgfSks
IDQyKTsKKyAgICB9CisgICAgLy8gKHBvdGVudGlhbCkgaW5saW5pbmcgaW5zaWRlIGEgcmVhbG0g
dXNlcyBjb3JyZWN0IGdsb2JhbCBvYmplY3QKKyAgICBsZXQgbG9vcEluc2lkZSA9IGRvRXZhbChy
ZWFsbSwgJyh4KSA9PiB7IGxldCBhY2MgPSAwOyBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyAr
K2kpIHsgYWNjICs9IHgoKTsgfTsgcmV0dXJuIGFjYzsgfScpOworICAgIGdsb2JhbFRoaXMuc2Vj
cmV0ID0gLTE7CisgICAgc2hvdWxkQmUobG9vcEluc2lkZSgoKSA9PiB7IHJldHVybiBnbG9iYWxU
aGlzLnNlY3JldDsgfSksIC0xMDAwMCk7Cit9CisKKy8vIGV2YWx1YXRlIHNwZWNzCit7CisgICAg
c2hvdWxkQmUodHlwZW9mIFNoYWRvd1JlYWxtLnByb3RvdHlwZS5ldmFsdWF0ZSwgImZ1bmN0aW9u
Iik7CisKKyAgICBsZXQgZXZhbHVhdGVOYW1lID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihTaGFkb3dSZWFsbS5wcm90b3R5cGUuZXZhbHVhdGUsICJuYW1lIik7CisgICAgc2hvdWxk
QmUoZXZhbHVhdGVOYW1lLnZhbHVlLCAiZXZhbHVhdGUiKTsKKyAgICBzaG91bGRCZShldmFsdWF0
ZU5hbWUuZW51bWVyYWJsZSwgZmFsc2UpOworICAgIHNob3VsZEJlKGV2YWx1YXRlTmFtZS53cml0
YWJsZSwgZmFsc2UpOworICAgIHNob3VsZEJlKGV2YWx1YXRlTmFtZS5jb25maWd1cmFibGUsIHRy
dWUpOworCisgICAgbGV0IGV2YWx1YXRlTGVuZ3RoID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihTaGFkb3dSZWFsbS5wcm90b3R5cGUuZXZhbHVhdGUsICJsZW5ndGgiKTsKKyAgICBz
aG91bGRCZShldmFsdWF0ZUxlbmd0aC52YWx1ZSwgMSk7CisgICAgc2hvdWxkQmUoZXZhbHVhdGVM
ZW5ndGguZW51bWVyYWJsZSwgZmFsc2UpOworICAgIHNob3VsZEJlKGV2YWx1YXRlTGVuZ3RoLndy
aXRhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoZXZhbHVhdGVMZW5ndGguY29uZmlndXJhYmxl
LCB0cnVlKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3NoYWRvdy1yZWFsbS1pbXBv
cnQtdmFsdWUuanMgYi9KU1Rlc3RzL3N0cmVzcy9zaGFkb3ctcmVhbG0taW1wb3J0LXZhbHVlLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY0M2NkOGU2MjNmMWY2ZDEzOTMxYzdiOWRiOGRkZTMwODQ2MDhhODUKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zaGFkb3ctcmVhbG0taW1wb3J0LXZhbHVl
LmpzCkBAIC0wLDAgKzEsMTQ4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlU2hhZG93UmVh
bG09MSIpCisKK3ZhciBhYm9ydCA9ICR2bS5hYm9ydDsKKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0
dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9YCk7
Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yVHlwZSkgeworICAgIGxldCBl
cnJvcjsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICBlcnJvciA9IGU7CisgICAgfQorCisgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBlcnJv
clR5cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7ZXJyb3JUeXBlLm5h
bWV9ISBnb3QgJHtlcnJvci5uYW1lfWApOworfQorCithc3luYyBmdW5jdGlvbiBzaG91bGRUaHJv
d0FzeW5jKGZ1bmMsIGVycm9yVHlwZSkgeworICAgIGxldCBlcnJvcjsKKyAgICB0cnkgeworICAg
ICAgICBhd2FpdCBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7
CisgICAgfQorCisgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7ZXJyb3JUeXBlLm5hbWV9ISBnb3QgJHtlcnJv
ci5uYW1lfSB3aXRoIG1lc3NhZ2UgJHtlcnJvci5tZXNzYWdlfWApOworfQorCisoYXN5bmMgZnVu
Y3Rpb24gKCkgeworICAgIGNvbnN0IGltcG9ydFBhdGggPSAiLi9yZXNvdXJjZXMvc2hhZG93LXJl
YWxtLWV4YW1wbGUtbW9kdWxlLmpzIjsKKyAgICBjb25zdCB7IGFuc3dlciwgZ2V0Q2FsbENvdW50
LCBwdXRJbkdsb2JhbCwgZ2V0RnJvbUdsb2JhbCwgZ2V0QW5PYmplY3QgfSA9IGF3YWl0IGltcG9y
dChpbXBvcnRQYXRoKTsKKyAgICBjb25zdCBvdXRlckFuc3dlciA9IGFuc3dlcjsKKyAgICBjb25z
dCBvdXRlckdldENhbGxDb3VudCA9IGdldENhbGxDb3VudDsKKyAgICBjb25zdCBvdXRlclB1dElu
R2xvYmFsID0gcHV0SW5HbG9iYWw7CisgICAgY29uc3Qgb3V0ZXJHZXRGcm9tR2xvYmFsID0gZ2V0
RnJvbUdsb2JhbDsKKyAgICBjb25zdCBvdXRlckdldEFuT2JqZWN0ID0gZ2V0QW5PYmplY3Q7CisK
KyAgICB7CisgICAgICAgIGxldCByZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOworCisgICAgICAg
IC8vIHVwZGF0ZSBsb2NhbCBtb2R1bGUgc3RhdGUgKyBjaGVjayBpdAorICAgICAgICBzaG91bGRC
ZShvdXRlckdldENhbGxDb3VudCgpLCAwKTsKKyAgICAgICAgb3V0ZXJHZXRBbk9iamVjdCgpOwor
ICAgICAgICBzaG91bGRCZShvdXRlckdldENhbGxDb3VudCgpLCAxKTsKKyAgICAgICAgLy8gdXBk
YXRlIHJlYWxtIG1vZHVsZSBzdGF0ZSArIGNoZWNrIGl0CisgICAgICAgIGxldCBpbm5lckdldENh
bGxDb3VudCA9IGF3YWl0IHJlYWxtLmltcG9ydFZhbHVlKGltcG9ydFBhdGgsICJnZXRDYWxsQ291
bnQiKTsKKyAgICAgICAgbGV0IGlubmVyUHV0SW5HbG9iYWwgPSBhd2FpdCByZWFsbS5pbXBvcnRW
YWx1ZShpbXBvcnRQYXRoLCAicHV0SW5HbG9iYWwiKTsKKyAgICAgICAgc2hvdWxkQmUoaW5uZXJH
ZXRDYWxsQ291bnQoKSwgMCk7CisgICAgICAgIGlubmVyUHV0SW5HbG9iYWwoInNvbWV0aGluZyIs
ICJyYW5kb20iKTsKKyAgICAgICAgc2hvdWxkQmUoaW5uZXJHZXRDYWxsQ291bnQoKSwgMSk7Cisg
ICAgICAgIC8vIHJlLWltcG9ydGluZyB0aGUgbW9kdWxlIGludG8gdGhlIHJlYWxtIGRvZXNuJ3Qg
cmVsb2FkIHRoZSBtb2R1bGUKKyAgICAgICAgaW5uZXJHZXRDYWxsQ291bnQgPSBhd2FpdCByZWFs
bS5pbXBvcnRWYWx1ZShpbXBvcnRQYXRoLCAiZ2V0Q2FsbENvdW50Iik7CisgICAgICAgIHNob3Vs
ZEJlKGlubmVyR2V0Q2FsbENvdW50KCksIDEpOworICAgICAgICAvLyB0aGUgKG91dGVyKSBsb2Nh
bCBtb2R1bGUgc3RhdGUgc3RheXMgaW50YWN0CisgICAgICAgIHNob3VsZEJlKG91dGVyR2V0Q2Fs
bENvdW50KCksIDEpOworCisgICAgICAgIC8vIG9uZSBjYW4gaW1wb3J0ZWQgcHJpbWl0aXZlL2Nh
bGxhYmxlIHZhcmlhYmxlcyBqdXN0IGZpbmUKKyAgICAgICAgLy8gc2hvdWxkQmUoaW5uZXJBbnN3
ZXIsIG91dGVyQW5zd2VyKTsKKyAgICAgICAgbGV0IGlubmVyQW5zd2VyID0gYXdhaXQgcmVhbG0u
aW1wb3J0VmFsdWUoaW1wb3J0UGF0aCwgImFuc3dlciIpOworICAgICAgICBzaG91bGRCZShpbm5l
ckFuc3dlciwgb3V0ZXJBbnN3ZXIpOworCisgICAgICAgIC8vIGltcG9ydGVkIHZhcmlhYmxlcyBh
cmUgY2hlY2tlZCBmb3IgcHJpbXRpdmUvY2FsbGFibGUtbmVzcworICAgICAgICBhd2FpdCBzaG91
bGRUaHJvd0FzeW5jKGFzeW5jICgpID0+IHsgbGV0IHggPSBhd2FpdCByZWFsbS5pbXBvcnRWYWx1
ZShpbXBvcnRQYXRoLCAiYW5PYmplY3QiKTsgfSwgVHlwZUVycm9yKTsKKworICAgICAgICAvLyBp
bXBvcnRpbmcgbm9uLWV4aXN0ZW50IHJlZiBmYWlscworICAgICAgICBhd2FpdCBzaG91bGRUaHJv
d0FzeW5jKGFzeW5jICgpID0+IHsgbGV0IHggPSBhd2FpdCByZWFsbS5pbXBvcnRWYWx1ZShpbXBv
cnRQYXRoLCAibm90aGluZyIpOyB9LCBUeXBlRXJyb3IpOworCisgICAgICAgIC8vIGltcG9ydGlu
ZyBmcm9tIG5vbi1leGlzdGVudCBmaWxlIGZhaWxzCisgICAgICAgIGF3YWl0IHNob3VsZFRocm93
QXN5bmMoYXN5bmMgKCkgPT4geyBsZXQgeCA9IGF3YWl0IHJlYWxtLmltcG9ydFZhbHVlKCJyYW5k
b20iLCAibm90aGluZyIpOyB9LCBUeXBlRXJyb3IpOworCisgICAgICAgIC8vIHdlIGNhbiBpbXBv
cnQgZnVuY3Rpb25zIHRocm91Z2ggYW4gaW5uZXIgcmVhbG0gZm9yIHVzZSBpbiB0aGUgb3V0ZXIK
KyAgICAgICAgbGV0IGlubmVyR2V0RnJvbUdsb2JhbCA9IGF3YWl0IHJlYWxtLmltcG9ydFZhbHVl
KGltcG9ydFBhdGgsICJnZXRGcm9tR2xvYmFsIik7CisgICAgICAgIGlubmVyUHV0SW5HbG9iYWwo
InNhbHV0YXRpb24iLCAic2FyYXZhIik7CisgICAgICAgIHNob3VsZEJlKGlubmVyR2V0RnJvbUds
b2JhbCgic2FsdXRhdGlvbiIpLCAic2FyYXZhIik7CisKKyAgICAgICAgLy8gaW5uZXIgZ2xvYmFs
IHN0YXRlIGlzIHVuY2hhbmdlZCBieSBvdXRlciBnbG9iYWwgc3RhdGUgY2hhbmdlCisgICAgICAg
IG91dGVyUHV0SW5HbG9iYWwoInNhbHV0YXRpb24iLCAiaGVsbG8gd29ybGQhIik7CisgICAgICAg
IHNob3VsZEJlKG91dGVyR2V0RnJvbUdsb2JhbCgic2FsdXRhdGlvbiIpLCAiaGVsbG8gd29ybGQh
Iik7CisgICAgICAgIHNob3VsZEJlKGlubmVyR2V0RnJvbUdsb2JhbCgic2FsdXRhdGlvbiIpLCAi
c2FyYXZhIik7CisKKyAgICAgICAgLy8gd3JhcHBlZCBmdW5jdGlvbnMgY2hlY2sgYXJndW1lbnRz
IGZvciBwcmltaXRpdmUvY2FsbGFibGUtbmVzcworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7
IGlubmVyUHV0SW5HbG9iYWwoInRyZWFzdXJlIiwgbmV3IE9iamVjdCgpKTsgfSwgVHlwZUVycm9y
KTsKKworICAgICAgICAvLyBpbXBvcnRlZCBmdW5jdGlvbnMgYXJlIHdyYXBwZWQgd2l0aCBjb3Jy
ZWN0IHJldHVybiB2YWx1ZSBjaGVja3MKKyAgICAgICAgbGV0IGdldEFuT2JqZWN0Rm4gPSBhd2Fp
dCByZWFsbS5pbXBvcnRWYWx1ZShpbXBvcnRQYXRoLCAiZ2V0QW5PYmplY3QiKTsKKyAgICAgICAg
c2hvdWxkVGhyb3coKCkgPT4geyBnZXRBbk9iamVjdEZuKCk7IH0sIFR5cGVFcnJvcik7CisKKyAg
ICAgICAgLy8gdGhyZWFkIGEgZnVuY3Rpb24gaW4gYW5kIG91dCBvZiBhIHJlYWxtIHRvIHdyYXAg
aXQgdXAKKyAgICAgICAgaW5uZXJQdXRJbkdsb2JhbCgib3V0ZXItcmVhbG0tcHV0Iiwgb3V0ZXJQ
dXRJbkdsb2JhbCk7CisgICAgICAgIHdyYXBwZWRPdXRlclB1dEluR2xvYmFsID0gaW5uZXJHZXRG
cm9tR2xvYmFsKCJvdXRlci1yZWFsbS1wdXQiKTsKKworICAgICAgICAvLyBpdCBzdGlsbCBtYW5p
cHVhdGVzIHRoZSBjb3JyZWN0IGdsb2JhbCBvYmplY3Qgc3RhdGUKKyAgICAgICAgd3JhcHBlZE91
dGVyUHV0SW5HbG9iYWwoInRyZWFzdXJlIiwgInNoaW55IHRpbiBzY3JhcCIpOworICAgICAgICBz
aG91bGRCZShvdXRlckdldEZyb21HbG9iYWwoInRyZWFzdXJlIiksICJzaGlueSB0aW4gc2NyYXAi
KTsKKworICAgICAgICAvLyB3cmFwcGVkIGZ1bmN0aW9ucyBjaGVjayBhcmd1bWVudHMgZm9yIHBy
aW1pdGl2ZS9jYWxsYWJsZS1uZXNzCisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgd3JhcHBl
ZE91dGVyUHV0SW5HbG9iYWwoInRyZWFzdXJlIiwgbmV3IE9iamVjdCgpKTsgfSwgVHlwZUVycm9y
KTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyB3cmFwcGVkT3V0ZXJQdXRJbkdsb2JhbChu
ZXcgT2JqZWN0KCksICJzaGlueSB0aW4gc2NyYXAiKTsgfSwgVHlwZUVycm9yKTsKKworICAgICAg
ICAvLyBtdXN0IGJlIGNhbGxlZCBvbiBhIFNoYWRvd1JlYWxtCisgICAgICAgIGxldCBub3RSZWFs
bSA9IHt9OworICAgICAgICBzaG91bGRUaHJvdygKKyAgICAgICAgICAoKSA9PiB7IHJlYWxtLmlt
cG9ydFZhbHVlLmNhbGwobm90UmVhbG0sIGltcG9ydFBhdGgsICJhbnN3ZXIiKTsgfSwKKyAgICAg
ICAgICBUeXBlRXJyb3IsCisgICAgICAgICAgKGVycikgPT4geyBzaG91bGRCZSgkLmdsb2JhbE9i
amVjdEZvcihlcnIpLCBnbG9iYWxUaGlzKTsgfQorICAgICAgICApOworICAgIH0KKworICAgIC8v
IHRyaWdnZXIgSklUCisgICAgeworICAgICAgICBmdW5jdGlvbiBkb0ltcG9ydChyZWFsbSwgcykK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHJlYWxtLmltcG9ydFZhbHVlKGltcG9ydFBh
dGgsIHMpOworICAgICAgICB9CisKKyAgICAgICAgbm9JbmxpbmUoZG9JbXBvcnQpOworCisgICAg
ICAgIGxldCByZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBkb0lt
cG9ydChyZWFsbSwgImdldENhbGxDb3VudCIpOworICAgICAgICAgICAgc2hvdWxkQmUocmVzdWx0
KCksIDApOworICAgICAgICB9CisgICAgfQorfSgpKS5jYXRjaCgoZXJyb3IpID0+IHsKKyAgICBw
cmludChTdHJpbmcoZXJyb3IpKTsKKyAgICBhYm9ydCgpOworfSk7CisKK3sKKyAgICBzaG91bGRC
ZSh0eXBlb2YgU2hhZG93UmVhbG0ucHJvdG90eXBlLmltcG9ydFZhbHVlLCAiZnVuY3Rpb24iKTsK
KworICAgIGxldCBpbXBvcnRWYWx1ZU5hbWUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKFNoYWRvd1JlYWxtLnByb3RvdHlwZS5pbXBvcnRWYWx1ZSwgIm5hbWUiKTsKKyAgICBzaG91
bGRCZShpbXBvcnRWYWx1ZU5hbWUudmFsdWUsICJpbXBvcnRWYWx1ZSIpOworICAgIHNob3VsZEJl
KGltcG9ydFZhbHVlTmFtZS5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoaW1wb3J0
VmFsdWVOYW1lLndyaXRhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoaW1wb3J0VmFsdWVOYW1l
LmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7CisKKyAgICBsZXQgaW1wb3J0VmFsdWVMZW5ndGggPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFNoYWRvd1JlYWxtLnByb3RvdHlwZS5pbXBvcnRW
YWx1ZSwgImxlbmd0aCIpOworICAgIHNob3VsZEJlKGltcG9ydFZhbHVlTGVuZ3RoLnZhbHVlLCAy
KTsKKyAgICBzaG91bGRCZShpbXBvcnRWYWx1ZUxlbmd0aC5lbnVtZXJhYmxlLCBmYWxzZSk7Cisg
ICAgc2hvdWxkQmUoaW1wb3J0VmFsdWVMZW5ndGgud3JpdGFibGUsIGZhbHNlKTsKKyAgICBzaG91
bGRCZShpbXBvcnRWYWx1ZUxlbmd0aC5jb25maWd1cmFibGUsIHRydWUpOworfQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3Mvc2hhZG93LXJlYWxtLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc2hhZG93
LXJlYWxtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2MmI4OGM2ZTM5NTk5NTYzNGQ3ZWQ4ZWY5ZTk5ZjJjM2Zk
ODg2YTUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zaGFkb3ctcmVhbG0uanMK
QEAgLTAsMCArMSwzNiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVNoYWRvd1JlYWxtPTEi
KQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgJHtleHBl
Y3RlZH0gYnV0IGdvdCAke2FjdHVhbH1gKTsKK30KKworLy8gc2hhZG93IHJlYWxtIHNwZWNzCit7
CisgICAgbGV0IHNoYWRvd1JlYWxtUHJvcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IodGhpcywgIlNoYWRvd1JlYWxtIik7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1Qcm9wLmVu
dW1lcmFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShzaGFkb3dSZWFsbVByb3Aud3JpdGFibGUs
IHRydWUpOworICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtUHJvcC5jb25maWd1cmFibGUsIHRydWUp
OworCisgICAgbGV0IHNoYWRvd1JlYWxtRXZhbHVhdGUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKFNoYWRvd1JlYWxtLnByb3RvdHlwZSwgImV2YWx1YXRlIik7CisgICAgc2hvdWxk
QmUoc2hhZG93UmVhbG1FdmFsdWF0ZS5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUo
c2hhZG93UmVhbG1FdmFsdWF0ZS53cml0YWJsZSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoc2hhZG93
UmVhbG1FdmFsdWF0ZS5jb25maWd1cmFibGUsIHRydWUpOworCisgICAgbGV0IHNoYWRvd1JlYWxt
SW1wb3J0VmFsdWUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFNoYWRvd1JlYWxt
LnByb3RvdHlwZSwgImltcG9ydFZhbHVlIik7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1JbXBv
cnRWYWx1ZS5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1JbXBv
cnRWYWx1ZS53cml0YWJsZSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1JbXBvcnRW
YWx1ZS5jb25maWd1cmFibGUsIHRydWUpOworCisgICAgbGV0IHNoYWRvd1JlYWxtTmFtZSA9IE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU2hhZG93UmVhbG0sICJuYW1lIik7CisgICAg
c2hvdWxkQmUoc2hhZG93UmVhbG1OYW1lLnZhbHVlLCAiU2hhZG93UmVhbG0iKTsKKyAgICBzaG91
bGRCZShzaGFkb3dSZWFsbU5hbWUuZW51bWVyYWJsZSwgZmFsc2UpOworICAgIHNob3VsZEJlKHNo
YWRvd1JlYWxtTmFtZS53cml0YWJsZSwgZmFsc2UpOworICAgIHNob3VsZEJlKHNoYWRvd1JlYWxt
TmFtZS5jb25maWd1cmFibGUsIHRydWUpOworCisgICAgbGV0IHNoYWRvd1JlYWxtTGVuZ3RoID0g
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihTaGFkb3dSZWFsbSwgImxlbmd0aCIpOwor
ICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtTGVuZ3RoLnZhbHVlLCAwKTsKKyAgICBzaG91bGRCZShz
aGFkb3dSZWFsbUxlbmd0aC5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoc2hhZG93
UmVhbG1MZW5ndGgud3JpdGFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShzaGFkb3dSZWFsbUxl
bmd0aC5jb25maWd1cmFibGUsIHRydWUpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439337</attachid>
            <date>2021-09-27 03:30:36 -0700</date>
            <delta_ts>2021-09-27 12:36:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230602-20210927123034.patch</filename>
            <type>text/plain</type>
            <size>86526</size>
            <attacher name="Phillip Mates">pmates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NzZjYjg0MTUyNWVjZGU0YTQ5NmRmZGFjM2RkY2NlMzliNjNiODEwLi4zNDYwOGQwYTI4Y2Q0ZjBj
OTRiZDAzNDA0MzhmMGFiMTQzMDhjN2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MCBAQAorMjAyMS0wOS0yMSAgUGhpbGxpcCBNYXRlcyAgPHBtYXRlc0BpZ2FsaWEuY29t
PgorCisgICAgICAgIHNoYWRvdyByZWFsbXMgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDYwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGF0aW9uIG9mIHRoZSBT
aGFkb3cgUmVhbG1zIHByb3Bvc2FsIChzdGFnZSAzIGluIFRDMzkpIFsxXQorCisgICAgICAgIE1h
aW4gQVBJcyBhZGRlZCBhcmUKKyAgICAgICAgIC0gYG5ldyBTaGFkb3dSZWFsbSgpYAorICAgICAg
ICAgICBjcmVhdGVzIGFuIG9iamVjdCB0aGF0IGhhcyBpdHMgb3duIGdsb2JhbCBvYmplY3QgYW5k
IG1vZHVsZSBncmFwaC4KKyAgICAgICAgIC0gU2hhZG93UmVhbG0ucHJvdG90eXBlLmV2YWx1YXRl
KHNvdXJjZVRleHQpCisgICAgICAgICAgIHRoaXMgYWxsb3dzIGZvciBldmFsdWF0aW5nIGNvZGUg
aW4gdGhlIGNvbnRleHQgb2YgdGhlIHJlYWxtLCB3aGljaAorICAgICAgICAgICBoYXMgaXRzIG93
biBtb2R1bGUgZ3JhcGggYW5kIGdsb2JhbCBvYmplY3QuCisgICAgICAgICAtIFNoYWRvd1JlYWxt
LnByb3RvdHlwZS5pbXBvcnRWYWx1ZShzcGVjaWZpZXIsIGV4cG9ydE5hbWUpCisgICAgICAgICAg
IHRoaXMgYWxsb3dzIGltcG9ydGluZyBtb2R1bGUgZXhwb3J0cyBpbiB0aGUgdGhlIGNvbnRleHQg
b2YgdGhlCisgICAgICAgICAgIHJlYWxtLCB3aGljaCBoYXMgaXRzIG93biBtb2R1bGUgZ3JhcGgg
YW5kIGdsb2JhbCBvYmplY3QuCisKKyAgICAgICAgVGhlIG1haW4gZGV0YWlsIG9mIHRoZSBTaGFk
b3cgUmVhbG0gaW1wbGVtZW50YXRpb24gaXMgdGhhdCB2YWx1ZXMKKyAgICAgICAgcGFzc2VkIGJl
dHdlZW4gcmVhbG1zIG11c3QgYmUgZWl0aGVyIHByaW1pdGl2ZXMgb3Igd3JhcHBlZCBjYWxsYWJs
ZXMuCisgICAgICAgIFdyYXBwZWQgY2FsbGFibGVzIHRoZW1zZWx2ZXMgYXJlIGNhbGxhYmxlcyB0
aGF0IGNoZWNrIHRoYXQgdGhlaXIKKyAgICAgICAgYXJndW1lbnRzIGFuZCByZXR1cm4gdmFsdWVz
IGFyZSBhbHNvIGVpdGhlciBwcmltaXRpdmVzIG9yIHdyYXBwZWQKKyAgICAgICAgY2FsbGFibGVz
LiBUaGlzIGRldGFpbCBpcyBpbXBsZW1lbnRlZCB2aWEgSlMgYnVpbHRpbnMgKyBhIGZldyBuZXcK
KyAgICAgICAgaW50cmluc2ljcy4KKworICAgICAgICBDYW4gYmUgZW5hYmxlZCB1c2luZyBgLS11
c2VTaGFkb3dSZWFsbT10cnVlYAorCisgICAgICAgIFsxXTogaHR0cHM6Ly9naXRodWIuY29tL3Rj
MzkvcHJvcG9zYWwtc2hhZG93cmVhbG0KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogYnVpbHRpbnMvU2hhZG93
UmVhbG1Qcm90b3R5cGUuanM6IEFkZGVkLgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS53cmFwKToK
KyAgICAgICAgKGV2YWx1YXRlKToKKyAgICAgICAgKGltcG9ydFZhbHVlKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgICogYnl0ZWNvZGUv
TGlua1RpbWVDb25zdGFudC5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdElzU2hhZG93UmVh
bG0pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAq
IGpzYy5jcHA6CisgICAgICAgIChKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAq
IHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9JbmRp
cmVjdEV2YWxFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0
YWJsZTo6Y3JlYXRlSW1wbCk6CisgICAgICAgIChKU0M6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGU6
OmNyZWF0ZVNhZmUpOgorICAgICAgICAoSlNDOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVu
SW1wbCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjcmVhdGVXaXRoQ3VzdG9tTWV0
aG9kVGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNoYWRvd1JlYWxtUHJvdG90eXBlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNoYWRvd1JlYWxtU3RydWN0dXJlIGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9PcHRpb25z
TGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5jcHA6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpTaGFkb3dSZWFsbUNvbnN0cnVjdG9yOjpTaGFkb3dSZWFsbUNv
bnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6U2hhZG93UmVhbG1Db25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RTaGFkb3dSZWFsbSk6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9TaGFk
b3dSZWFsbUNvbnN0cnVjdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaC4KKyAgICAgICAgKiBydW50aW1lL1NoYWRv
d1JlYWxtT2JqZWN0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlNoYWRvd1JlYWxtT2JqZWN0
OjpTaGFkb3dSZWFsbU9iamVjdCk6CisgICAgICAgIChKU0M6OlNoYWRvd1JlYWxtT2JqZWN0Ojp2
aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgIChKU0M6OlNoYWRvd1JlYWxtT2JqZWN0OjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpTaGFkb3dSZWFsbU9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvU2hhZG93UmVhbG1PYmplY3QuaDogQ29waWVkIGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oLgorICAgICAg
ICAqIHJ1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6U2hhZG93UmVhbG1Qcm90b3R5cGU6OlNoYWRvd1JlYWxtUHJvdG90eXBlKToKKyAgICAgICAg
KEpTQzo6U2hhZG93UmVhbG1Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1NoYWRvd1Jl
YWxtUHJvdG90eXBlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaC4KKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAg
ICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMjEtMDkt
MjMgIFBoaWxpcCBDaGltZW50byAgPHBjaGltZW50b0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFZh
cmlvdXMgdHdlYWtzIGluIHByZXBhcmF0aW9uIGZvciBUZW1wb3JhbC5JbnN0YW50CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMmZkMjBkN2RlZjkyYjY0ZDE5NGE3NTRhZWQx
ZjFhY2JiOGJlOWE4Yy4uY2FjMjkyNWU1YTA4NjNlNzMxYmVkYjY5ZmNmNTRhMmIxMzY0ZWJmNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTAzLDYgKzEwMyw4IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL1JlZ0V4cFBy
b3RvdHlwZS5jcHAKICAgICBydW50aW1lL1JlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNw
cAogICAgIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvU2hhZG93UmVhbG1P
YmplY3QuY3BwCisgICAgcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5jcHAKICAgICBydW50
aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNw
cAogICAgIHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCkBAIC0zNjksNiArMzcxLDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vYnVpbHRpbnMvUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuanMKICAgICAke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvU2V0SXRlcmF0b3JQcm90b3R5cGUuanMKICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvU2V0UHJvdG90eXBlLmpzCisgICAgJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1NoYWRvd1JlYWxtUHJvdG90eXBlLmpzCiAgICAgJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1N0cmluZ0NvbnN0cnVjdG9yLmpzCiAgICAgJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmpzCiAg
ICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlwZS5qcwpAQCAt
MTE0Miw2ICsxMTQ1LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hF
QURFUlMKICAgICBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUvU2NyaXB0
RmV0Y2hQYXJhbWV0ZXJzLmgKICAgICBydW50aW1lL1NjcmlwdEZldGNoZXIuaAorICAgIHJ1bnRp
bWUvU2hhZG93UmVhbG1PYmplY3QuaAogICAgIHJ1bnRpbWUvU2xvd1BhdGhGdW5jdGlvbi5oCiAg
ICAgcnVudGltZS9TbG93UGF0aFJldHVyblR5cGUuaAogICAgIHJ1bnRpbWUvU21hbGxTdHJpbmdz
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZWNiY2U2
N2Y3OGMwMDM0YzE2NmY1MGQ1ODkyYTZmMDhjNWRhNDBkNi4uYmNmM2VlYTI5Y2U3YmIyMDc3ODlh
NWQ5YzIxMzdhZWNkZGFhOWNhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKQEAgLTEyMiw2ICsxMjIsNyBAQCBKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VS
Q0VTID0gXAogICAgICR7SmF2YVNjcmlwdENvcmV9L2J1aWx0aW5zL1JlZ0V4cFN0cmluZ0l0ZXJh
dG9yUHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TZXRJdGVy
YXRvclByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvU2V0UHJv
dG90eXBlLmpzIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TaGFkb3dSZWFsbVBy
b3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvU3RyaW5nQ29uc3Ry
dWN0b3IuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1N0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TdHJpbmdQcm90
b3R5cGUuanMgXApAQCAtMTg3LDYgKzE4OCw3IEBAIE9CSkVDVF9MVVRfSEVBREVSUyA9IFwKICAg
ICBSZWZsZWN0T2JqZWN0Lmx1dC5oIFwKICAgICBSZWdFeHBDb25zdHJ1Y3Rvci5sdXQuaCBcCiAg
ICAgU2V0UHJvdG90eXBlLmx1dC5oIFwKKyAgICBTaGFkb3dSZWFsbVByb3RvdHlwZS5sdXQuaCBc
CiAgICAgU3RyaW5nQ29uc3RydWN0b3IubHV0LmggXAogICAgIFN0cmluZ1Byb3RvdHlwZS5sdXQu
aCBcCiAgICAgU3ltYm9sQ29uc3RydWN0b3IubHV0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBlZTg2YmE4ZGMwYmI5Y2FiZjRiMTM0Y2IxMzI0ZDI0MTZmY2NmOWE3Li42NGVj
MDFjMzhkYmY5YzM2ODIzNzZkOGE4YjkxOGFlZWNhYjE5NmM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTI1Myw2ICsxMjUzLDkgQEAKIAkJODYwMTYxRTMwRjNBODNDMTAwRjg0
NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2MURGMEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJODYwMTYxRTUwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2
XzY0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjAx
NjFFMTBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjAxNjFFNjBGM0E4M0Mx
MDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2MUUyMEYzQTgzQzEwMEY4NDcxMCAvKiBN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTg2MDI5NjAyMjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFs
bUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NjAyOTVGQzI2RkI1NTJDMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2MDI5
NjA0MjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbU9iamVjdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMjk1RkUyNkZCNTUyRDAwNzhFQjYy
IC8qIFNoYWRvd1JlYWxtT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJODYwMjk2MDUyNkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxt
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NjAyOTVGRjI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Qcm90b3R5cGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjA2RERFQTE4
REE0NEFCMDBBMzgzRDAgLyogSWRlbnRpZmllcklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDZEREU5MThEQTQ0QUIwMEEzODNEMCAvKiBJ
ZGVudGlmaWVySW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTg2MEJEODAxMTQ4RUE2RjIwMDExMkIyRiAvKiBJbnRyaW5zaWMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkY2NDJBMTQ4REIy
QjUwMDRERTM2QSAvKiBJbnRyaW5zaWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk4NjEyRTRDRDE1MjM4OUVDMDBDODM2QkUgLyogTWF0Y2hSZXN1
bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MTJF
NENCMTUyMjkxODQwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00MjA5LDYgKzQyMTIsMTIgQEAKIAkJODYw
MTYxREYwRjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjAxNjFFMTBGM0E4M0MxMDBGODQ3MTAgLyogTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYwMTYx
RTIwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MDI5NUZBMjZGQjU1MkMwMDc4RUI2MiAvKiBTaGFk
b3dSZWFsbVByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTaGFkb3dSZWFsbVByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTg2MDI5NUZCMjZGQjU1MkMwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbU9iamVjdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFkb3dSZWFsbU9iamVjdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MDI5NUZDMjZGQjU1MkMwMDc4RUI2MiAvKiBT
aGFkb3dSZWFsbUNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNoYWRvd1JlYWxtQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODYwMjk1RkQyNkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtQ29uc3RydWN0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhZG93UmVhbG1Db25zdHJ1Y3Rv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MDI5NUZFMjZGQjU1MkQwMDc4
RUI2MiAvKiBTaGFkb3dSZWFsbU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTaGFkb3dSZWFsbU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
NjAyOTVGRjI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Qcm90b3R5cGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhZG93UmVhbG1Qcm90b3R5cGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYwNEY0RjIxNDNBNkM0NDAwQjI5NUY1IC8qIENoYW5n
ZUxvZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gQ2hhbmdlTG9nOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4NjA2RERFOTE4REE0NEFCMDBBMzgzRDAgLyogSWRlbnRpZmllcklubGluZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWRlbnRpZmllcklubGluZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYxMkU0Q0IxNTIyOTE4NDAwQzgzNkJFIC8q
IE1hdGNoUmVzdWx0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGNoUmVz
dWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03OTQ3LDYgKzc5NTYsMTIgQEAK
IAkJCQlBNzkwREQ2ODE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0b3JQcm90b3R5cGUuaCAq
LywKIAkJCQlBNzI5OUQ5RjE3RDEyODQ4MDA1RjVGRjkgLyogU2V0UHJvdG90eXBlLmNwcCAqLywK
IAkJCQlBNzI5OURBMDE3RDEyODQ4MDA1RjVGRjkgLyogU2V0UHJvdG90eXBlLmggKi8sCisJCQkJ
ODYwMjk1RkQyNkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtQ29uc3RydWN0b3IuY3BwICov
LAorCQkJCTg2MDI5NUZDMjZGQjU1MkMwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbUNvbnN0cnVjdG9y
LmggKi8sCisJCQkJODYwMjk1RkIyNkZCNTUyQzAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtT2JqZWN0
LmNwcCAqLywKKwkJCQk4NjAyOTVGRTI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1PYmpl
Y3QuaCAqLywKKwkJCQk4NjAyOTVGQTI2RkI1NTJDMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Qcm90
b3R5cGUuY3BwICovLAorCQkJCTg2MDI5NUZGMjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFs
bVByb3RvdHlwZS5oICovLAogCQkJCTBGMkI2NkQ2MTdCNkI1QUIwMEE3QUUzRiAvKiBTaW1wbGVU
eXBlZEFycmF5Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJMEYyQjY2RDcxN0I2QjVBQjAwQTdBRTNG
IC8qIFNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmggKi8sCiAJCQkJRkU4QzAzMTEyNjRBNjkx
MDAwMUE0NEFEIC8qIFNsb3dQYXRoRnVuY3Rpb24uaCAqLywKQEAgLTEwNjUzLDYgKzEwNjY4LDkg
QEAKIAkJCQkwRkVFOTg0MTFBODg2NUI3MDA3NTRFOTMgLyogU2V0dXBWYXJhcmdzRnJhbWUuaCBp
biBIZWFkZXJzICovLAogCQkJCURDMTdFODE4MUM5QzkxRDkwMDhBNkFCMyAvKiBTaGFkb3dDaGlj
a2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQlEQzE3RTgxOTFDOUM5MURCMDA4QTZBQjMgLyogU2hh
ZG93Q2hpY2tlbklubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2MDI5NjAyMjZGQjU1MkQw
MDc4RUI2MiAvKiBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk4
NjAyOTYwNDI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1PYmplY3QuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTg2MDI5NjA1MjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbVByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzMDIyRDMxRTNENzNBNTAwQkFDNDkzIC8qIFNpZ2ls
bENyYXNoQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNEQ4Qzc4MUZDQTNDRkEwMDFE
MzJBQyAvKiBTaW1wbGVNYXJraW5nQ29uc3RyYWludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
QjY3MDUxN0I2QjVBQjAwQTdBRTNGIC8qIFNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA4NDZlOWVlNzVmZWQw
NTQ3NTU2YzRiZmQ0YTI2MWQ4MGQ1OWFmYmQ3Li41OTEwZmVmZWYzN2FmMWIxODVhNGZjNWQ0Mzlh
MzdkMzkwZmI3OWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC05NjksNiArOTY5
LDkgQEAgcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcAogcnVudGltZS9Qcm94eU9iamVjdC5j
cHAKIHJ1bnRpbWUvUHJveHlSZXZva2UuY3BwCiBydW50aW1lL1JhbmRvbWl6aW5nRnV6emVyQWdl
bnQuY3BwCitydW50aW1lL1NoYWRvd1JlYWxtT2JqZWN0LmNwcAorcnVudGltZS9TaGFkb3dSZWFs
bUNvbnN0cnVjdG9yLmNwcAorcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5jcHAKIHJ1bnRp
bWUvUmVmbGVjdE9iamVjdC5jcHAKIHJ1bnRpbWUvUmVnRXhwLmNwcAogcnVudGltZS9SZWdFeHBD
YWNoZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMu
aAppbmRleCBkY2FmMGJhNmNhMzE4ZjE4MDI5MmNiYThkN2RjMDBmYTU3NzkxZWEwLi40Yjg2NTA2
NmVjNGE2MzE4ZGM1ZTc3ZjMzYTZiMTZkNmM4MzAzN2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC02Miw2ICs2Miw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIG1hY3JvKE51bWJlcikgXAogICAgIG1hY3JvKEFycmF5KSBcCiAgICAgbWFj
cm8oQXJyYXlCdWZmZXIpIFwKKyAgICBtYWNybyhTaGFkb3dSZWFsbSkgXAogICAgIG1hY3JvKFJl
Z0V4cCkgXAogICAgIG1hY3JvKG1pbikgXAogICAgIG1hY3JvKHRydW5jKSBcCkBAIC0xMTUsNiAr
MTE2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oYXN5bmNHZW5lcmF0b3JRdWV1ZUl0
ZW1OZXh0KSBcCiAgICAgbWFjcm8oZGF0ZVRpbWVGb3JtYXQpIFwKICAgICBtYWNybyh0aGlzKSBc
CisgICAgbWFjcm8oaW1wb3J0SW5SZWFsbSkgXAorICAgIG1hY3JvKGV2YWxJblJlYWxtKSBcCiAg
ICAgbWFjcm8odGhpc1RpbWVWYWx1ZSkgXAogICAgIG1hY3JvKG5ld1RhcmdldExvY2FsKSBcCiAg
ICAgbWFjcm8oZGVyaXZlZENvbnN0cnVjdG9yKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvU2hhZG93UmVhbG1Qcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvU2hhZG93UmVhbG1Qcm90b3R5cGUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDdh
NGI5ODU2NzRmNjI5N2Y4YTI4ZTE4NWUxZTg2M2NiYzgwYjViZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TaGFkb3dSZWFsbVByb3RvdHlwZS5qcwpA
QCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK0BnbG9iYWxQcml2YXRlCitmdW5jdGlvbiB3cmFwKHRhcmdldCkKK3sKKyAgICAi
dXNlIHN0cmljdCI7CisKKyAgICBpZiAoQGlzQ2FsbGFibGUodGFyZ2V0KSkgeworICAgICAgICBs
ZXQgd3JhcHBlZCA9ICguLi5hcmdzKSA9PiB7CisgICAgICAgICAgICB2YXIgd3JhcHBlZEFyZ3Mg
PSBhcmdzLkBtYXAoQHdyYXApCisgICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0YXJnZXQuQGFw
cGx5KEB1bmRlZmluZWQsIHdyYXBwZWRBcmdzKTsKKyAgICAgICAgICAgIHJldHVybiBAd3JhcChy
ZXN1bHQpOworICAgICAgICB9OworICAgICAgICBkZWxldGUgd3JhcHBlZFsnbmFtZSddOworICAg
ICAgICBkZWxldGUgd3JhcHBlZFsnbGVuZ3RoJ107CisgICAgICAgIHJldHVybiB3cmFwcGVkOwor
ICAgIH0gZWxzZSBpZiAoQGlzT2JqZWN0KHRhcmdldCkpIHsKKyAgICAgICAgQHRocm93VHlwZUVy
cm9yKCJ2YWx1ZSBwYXNzaW5nIGJldHdlZW4gcmVhbG1zIG11c3QgYmUgY2FsbGFibGUgb3IgcHJp
bWl0aXZlIik7CisgICAgfQorICAgIHJldHVybiB0YXJnZXQ7Cit9CisKK2Z1bmN0aW9uIGV2YWx1
YXRlKHNvdXJjZVRleHQpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNTaGFk
b3dSZWFsbSh0aGlzKSkKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJgJVNoYWRvd1JlYWxtJS5l
dmFsdWF0ZSByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBhIFNoYWRvd1JlYWxtIGluc3RhbmNlIik7
CisKKyAgICBpZiAodHlwZW9mIHNvdXJjZVRleHQgIT09ICdzdHJpbmcnKQorICAgICAgICBAdGhy
b3dUeXBlRXJyb3IoImAlU2hhZG93UmVhbG0lLmV2YWx1YXRlIHJlcXVpcmVzIHRoYXQgdGhlIHxz
b3VyY2VUZXh0fCBhcmd1bWVudCBiZSBhIHN0cmluZyIpOworCisgICAgbGV0IHJlc3VsdCA9IEBl
dmFsSW5SZWFsbSh0aGlzLCBzb3VyY2VUZXh0KQorICAgIHJldHVybiBAd3JhcChyZXN1bHQpOwor
fQorCitmdW5jdGlvbiBpbXBvcnRWYWx1ZShzcGVjaWZpZXIsIGV4cG9ydE5hbWUpCit7CisgICAg
InVzZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNTaGFkb3dSZWFsbSh0aGlzKSkKKyAgICAgICAg
QHRocm93VHlwZUVycm9yKCJgJVNoYWRvd1JlYWxtJS5pbXBvcnRWYWx1ZSByZXF1aXJlcyB0aGF0
IHx0aGlzfCBiZSBhIFNoYWRvd1JlYWxtIGluc3RhbmNlIik7CisKKyAgICBsZXQgZXhwb3J0TmFt
ZVN0ciA9IEB0b1N0cmluZyhleHBvcnROYW1lKTsKKyAgICBsZXQgc3BlY2lmaWVyU3RyID0gQHRv
U3RyaW5nKHNwZWNpZmllcik7CisKKyAgICBsZXQgbG9va3VwQmluZGluZyA9IChtb2R1bGUpID0+
IHsKKyAgICAgICAgbGV0IGxvb2t1cCA9IG1vZHVsZVtleHBvcnROYW1lU3RyXQorICAgICAgICBp
ZiAobG9va3VwID09PSBAdW5kZWZpbmVkKQorICAgICAgICAgICAgQHRocm93VHlwZUVycm9yKCIl
U2hhZG93UmVhbG0lLmltcG9ydFZhbHVlIHJlcXVpcmVzIHxleHBvcnROYW1lfCB0byBleGlzdCBp
biB0aGUgfHNwZWNpZmllcnwiKTsKKworICAgICAgICByZXR1cm4gQHdyYXAobG9va3VwKTsKKyAg
ICB9OworCisgICAgbGV0IGNyb3NzUmVhbG1UaHJvdyA9IChlcnJvcikgPT4geworICAgICAgICAv
LyByZS10aHJvdyBiZWNhdXNlIGltcG9ydCBpc3N1ZXMgcmFpc2UgZXJyb3JzIHVzaW5nIHRoZSBy
ZWFsbSdzIGdsb2JhbCBvYmplY3QKKyAgICAgICAgQHRocm93VHlwZUVycm9yKEB0b1N0cmluZyhl
cnJvcikpOworICAgIH07CisKKyAgICByZXR1cm4gQGltcG9ydEluUmVhbG0odGhpcywgc3BlY2lm
aWVyU3RyKS5AdGhlbihsb29rdXBCaW5kaW5nLCBjcm9zc1JlYWxtVGhyb3cpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNp
Y1JlZ2lzdHJ5LmgKaW5kZXggODU1NTk3Nzg2NzA3MmYyZmZmNjdhNjU1OWFjZDlhNDU0ZDUyZDI3
Ny4uYjMyY2NkYWY0M2E2NjJjODc3OTU1ODA3ZjZkNDFmMTI1OTE5NGY1MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnku
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeS5oCkBAIC02Niw2ICs2Niw3IEBAIGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6
IGludDMyX3Q7CiAgICAgbWFjcm8oaXNSZWdFeHBPYmplY3QpIFwKICAgICBtYWNybyhpc01hcCkg
XAogICAgIG1hY3JvKGlzU2V0KSBcCisgICAgbWFjcm8oaXNTaGFkb3dSZWFsbSkgXAogICAgIG1h
Y3JvKGlzU3RyaW5nSXRlcmF0b3IpIFwKICAgICBtYWNybyhpc0FycmF5SXRlcmF0b3IpIFwKICAg
ICBtYWNybyhpc01hcEl0ZXJhdG9yKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAppbmRleCA1ZjMyYWY4MjBlNDVmYTQ5ZGM5MmZjNDU2
N2FhZjQwMTUzY2JlYWJkLi4wMTUzOTQ4MmUyOWI1ZGFhNDczYzEwY2RkNWFlNjU5YTg0NDFiMjA0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25z
dGFudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0
YW50LmgKQEAgLTYzLDYgKzYzLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgdihpbnN0
YW5jZU9mLCBudWxscHRyKSBcCiAgICAgdihCdWlsdGluTG9nLCBudWxscHRyKSBcCiAgICAgdihC
dWlsdGluRGVzY3JpYmUsIG51bGxwdHIpIFwKKyAgICB2KFNoYWRvd1JlYWxtLCBudWxscHRyKSBc
CiAgICAgdihSZWdFeHAsIG51bGxwdHIpIFwKICAgICB2KG1pbiwgbnVsbHB0cikgXAogICAgIHYo
dHJ1bmMsIG51bGxwdHIpIFwKQEAgLTc4LDYgKzc5LDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7
CiAgICAgdihob3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIsIG51bGxwdHIpIFwKICAgICB2KFNl
dCwgbnVsbHB0cikgXAogICAgIHYodGhpc1RpbWVWYWx1ZSwgbnVsbHB0cikgXAorICAgIHYoaW1w
b3J0SW5SZWFsbSwgbnVsbHB0cikgXAorICAgIHYoZXZhbEluUmVhbG0sIG51bGxwdHIpIFwKICAg
ICB2KGlzQ29uc3RydWN0b3IsIG51bGxwdHIpIFwKICAgICB2KHNhbWVWYWx1ZSwgbnVsbHB0cikg
XAogICAgIHYocmVnRXhwUHJvdG9GbGFnc0dldHRlciwgbnVsbHB0cikgXApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmlu
ZGV4IDhmYTA0Nzg4N2EwNGZiNmIzMTMxNDAzYTJiMTc2NmEzNWVhYWNkZGMuLmVhNjQyMDFmMzU1
ZmQ4N2ZmMzRmN2I5NDg4NzcyNjM0ZWNmZjIxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTg4Myw2ICs4
ODMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzUmVnRXhw
T2JqZWN0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXND
ZWxsV2l0aFR5cGUoZHN0LCBzcmMsIFJlZ0V4cE9iamVjdFR5cGUpOyB9CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRJc01hcChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1
cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU01hcFR5cGUpOyB9CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRJc1NldChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyBy
ZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU1NldFR5cGUpOyB9CisgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRJc1NoYWRvd1JlYWxtKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIFNoYWRvd1JlYWxt
VHlwZSk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzU3RyaW5nSXRlcmF0b3IoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShk
c3QsIHNyYywgSlNTdHJpbmdJdGVyYXRvclR5cGUpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRJc0FycmF5SXRlcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0
dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgSlNBcnJheUl0ZXJhdG9yVHlwZSk7IH0K
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzTWFwSXRlcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgSlNN
YXBJdGVyYXRvclR5cGUpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggM2I4YTY2ZmViZDJkMjg0MjFmMjdiNDlhZTli
Njc3MDI5OGEyNjA3MS4uMTMyMDg5MDZhNjQ4OWMwNDgxYzI5NjU3NTMxMmI2M2FlNTNkMDA1YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcApAQCAtMTg5NCw2ICsxODk0LDcgQEAgQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRf
Q0hFQ0soaXNQcm9taXNlLCBJc1Byb21pc2UpCiBDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9D
SEVDSyhpc1JlZ0V4cE9iamVjdCwgSXNSZWdFeHBPYmplY3QpCiBDUkVBVEVfSU5UUklOU0lDX0ZP
Ul9CUkFORF9DSEVDSyhpc01hcCwgSXNNYXApCiBDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9D
SEVDSyhpc1NldCwgSXNTZXQpCitDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSyhpc1No
YWRvd1JlYWxtLCBJc1NoYWRvd1JlYWxtKQogQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hF
Q0soaXNTdHJpbmdJdGVyYXRvciwgSXNTdHJpbmdJdGVyYXRvcikKIENSRUFURV9JTlRSSU5TSUNf
Rk9SX0JSQU5EX0NIRUNLKGlzQXJyYXlJdGVyYXRvciwgSXNBcnJheUl0ZXJhdG9yKQogQ1JFQVRF
X0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0soaXNNYXBJdGVyYXRvciwgSXNNYXBJdGVyYXRvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMTcwOTZkYTc2ZmVjMWY2ZDBhZGI2YmU5OGY3N2FlMDM5
YTI1MmQ1OS4uMGM5MDViNTkyMDc4MjA5NTg2NDhiZmNhMzhjM2Y5MTBlNTdmOTRjZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKQEAgLTM1OSw2ICszNTksNyBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckNyZWF0ZVJlYWxtKTsKIHN0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyRXZhbFNjcmlwdCk7CiBzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckdDKTsKIHN0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyQ2xlYXJLZXB0T2JqZWN0cyk7CitzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckdsb2JhbE9iamVjdEZvcik7
CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckFnZW50U3Rh
cnQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJBZ2Vu
dFJlY2VpdmVCcm9hZGNhc3QpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVu
Y3Rpb25Eb2xsYXJBZ2VudFJlcG9ydCk7CkBAIC02MzgsNiArNjM5LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgYWRkRnVuY3Rpb24odm0sIGRvbGxhciwgImV2YWxTY3JpcHQiLCBmdW5jdGlvbkRvbGxh
ckV2YWxTY3JpcHQsIDEsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
Tm9uZSkpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgZG9sbGFyLCAiZ2MiLCBmdW5jdGlvbkRv
bGxhckdDLCAwLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6Ok5vbmUp
KTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sIGRvbGxhciwgImNsZWFyS2VwdE9iamVjdHMiLCBm
dW5jdGlvbkRvbGxhckNsZWFyS2VwdE9iamVjdHMsIDAsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkpOworICAgICAgICBhZGRGdW5jdGlvbih2bSwgZG9sbGFy
LCAiZ2xvYmFsT2JqZWN0Rm9yIiwgZnVuY3Rpb25Eb2xsYXJHbG9iYWxPYmplY3RGb3IsIDEsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkpOwogICAgICAgICAK
ICAgICAgICAgZG9sbGFyLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJnbG9iYWwiKSwgZ2xvYmFsVGhpcygpKTsKICAgICAgICAgZG9sbGFyLT5wdXREaXJlY3RDdXN0
b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIklzSFRNTEREQSIpLApA
QCAtMjA0Nyw2ICsyMDQ5LDIyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRv
bGxhckNsZWFyS2VwdE9iamVjdHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAorSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGZ1bmN0aW9uRG9sbGFyR2xvYmFsT2JqZWN0Rm9yLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgIk5vdCBlbm91Z2ggYXJndW1lbnRzIl9zKSkpOworICAg
IEpTVmFsdWUgYXJnID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoYXJnLmlzQ2Vs
bCgpKSB7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYXJnLnN0cnVjdHVyZU9yTnVs
bCh2bSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3RydWN0dXJlLT5nbG9iYWxP
YmplY3QoKS0+Z2xvYmFsVGhpcygpKTsKKyAgICB9CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworfQorCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rp
b25Eb2xsYXJBZ2VudFN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA2ODVkN2ZjZDkwZGEzZDYw
NzIwNGQ3MTBlMjE2NGZlOWYxYzU5ZTYyLi5jMGY2NTZlZjA2MzA3ODVhNGNmYjQyOTcwZmNhMWJh
MDdjZmI3ZmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC01
MDk2LDcgKzUwOTYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNz
aW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICAgICAgbmV3
Q291bnQtLTsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGZhaWxJZlRydWUobWF0Y2goSURFTlQpLCAiXCJuZXcuXCIgY2FuIG9ubHkgZm9sbG93ZWQg
d2l0aCB0YXJnZXQiKTsKKyAgICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goSURFTlQpLCAiXCJu
ZXcuXCIgY2FuIG9ubHkgYmUgZm9sbG93ZWQgd2l0aCB0YXJnZXQiKTsKICAgICAgICAgICAgIGZh
aWxEdWVUb1VuZXhwZWN0ZWRUb2tlbigpOwogICAgICAgICB9CiAgICAgfQpAQCAtNTEzMSw3ICs1
MTMxLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgICAgICAgICBiYXNlID0g
Y29udGV4dC5jcmVhdGVJbXBvcnRNZXRhRXhwcihsb2NhdGlvbiwgY3JlYXRlUmVzb2x2ZUFuZFVz
ZVZhcmlhYmxlKGNvbnRleHQsICZtX3ZtLnByb3BlcnR5TmFtZXMtPm1ldGFQcml2YXRlTmFtZSwg
ZmFsc2UsIGV4cHJlc3Npb25TdGFydCwgbG9jYXRpb24pKTsKICAgICAgICAgICAgICAgICBuZXh0
KCk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGZhaWxJZlRydWUobWF0
Y2goSURFTlQpLCAiXCJpbXBvcnQuXCIgY2FuIG9ubHkgZm9sbG93ZWQgd2l0aCBtZXRhIik7Cisg
ICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChJREVOVCksICJcImltcG9ydC5cIiBjYW4g
b25seSBiZSBmb2xsb3dlZCB3aXRoIG1ldGEiKTsKICAgICAgICAgICAgICAgICBmYWlsRHVlVG9V
bmV4cGVjdGVkVG9rZW4oKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCA0
MDYzMzFjYWRlOTA1OGM0M2M0NjhiOGNlZWZhNTNmMmVlYjhjYzEzLi4zODc1Y2Y2YjYzYzBkMzEy
YWIyNTJkNjBlMGVmOTBiODM0MzI1NTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0xMDUsNiArMTA1LDcgQEAgdm9pZCBBcnJh
eVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWR1Y2VQdWJsaWNOYW1lKCksIGFycmF5UHJv
dG90eXBlUmVkdWNlQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRf
VFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWR1Y2VSaWdodFB1
YmxpY05hbWUoKSwgYXJyYXlQcm90b3R5cGVSZWR1Y2VSaWdodENvZGVHZW5lcmF0b3IsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0Nf
QlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkubWFwUHVibGljTmFtZSgpLCBhcnJheVByb3RvdHlwZU1hcENvZGVHZW5lcmF0
b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsK
KyAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwUHJpdmF0ZU5hbWUoKSwgYXJyYXlQcm90b3R5cGVNYXBD
b2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSk7CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFO
U0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQdWJsaWNOYW1lKCks
IGFycmF5UHJvdG9GdW5jS2V5cywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIDAsIEFycmF5S2V5c0ludHJpbnNpYyk7CiAgICAgSlNDX05BVElWRV9J
TlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCksIGFycmF5UHJvdG9GdW5jRW50cmllcywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDAsIEFy
cmF5RW50cmllc0ludHJpbnNpYyk7CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZpbmRQdWJsaWNOYW1l
KCksIGFycmF5UHJvdG90eXBlRmluZENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDQwYzE1OWU4ZDdjNTQwNDlm
ZDk4YzhhNjY2OGE2NGE4ZGY0ZWEzNjQuLjc4MjhkMDA4YTg1MzQ2MWU0OGUzNmQyZmJlYTYxYzcw
OTU3NmRkYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaApAQCAtNTIsNiArNTIsNyBAQAogICAgIG1hY3JvKE9iamVjdCkgXAogICAg
IG1hY3JvKFBsdXJhbFJ1bGVzKSBcCiAgICAgbWFjcm8oUHJvbWlzZSkgXAorICAgIG1hY3JvKFNo
YWRvd1JlYWxtKSBcCiAgICAgbWFjcm8oUmVmbGVjdCkgXAogICAgIG1hY3JvKFJlZ0V4cCkgXAog
ICAgIG1hY3JvKFJlbGF0aXZlVGltZUZvcm1hdCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAppbmRleCA3NDk4
MjA1MDE4Y2RlZjhmM2Y4MzY3YjRiYmUyZWY3OWRiZDE3YzFmLi4yOGIzYmRhZDRjMDMwMjUyNWNi
ZmVkNTg4NWMxMzAzM2Y0OWJjOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcApAQCAtMzQsNyArMzQsOSBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogSW5kaXJlY3RF
dmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlw
ZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRl
eHRUeXBlKQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBFcnJvckhhbmRsZXJGdW5jdG9yPgoraW5saW5l
IEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZUlt
cGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5j
dGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIEVycm9ySGFuZGxl
ckZ1bmN0b3IgZXJyb3JIYW5kbGVyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC00OSw3ICs1
MSw3IEBAIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNy
ZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAKICAgICBQYXJzZXJFcnJvciBlcnJvcjsK
ICAgICBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUgPSBn
bG9iYWxPYmplY3QtPmRlZmF1bHRDb2RlR2VuZXJhdGlvbk1vZGUoKTsKLSAgICAKKwogICAgIFVu
bGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRFdmFsQ29kZSA9IHZtLmNvZGVDYWNoZSgpLT5n
ZXRVbmxpbmtlZEV2YWxDb2RlQmxvY2soCiAgICAgICAgIHZtLCBleGVjdXRhYmxlLCBleGVjdXRh
YmxlLT5zb3VyY2UoKSwgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIGNvZGVHZW5lcmF0
aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSk7CiAKQEAgLTU3LDcgKzU5LDcgQEAgSW5k
aXJlY3RFdmFsRXhlY3V0YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpLT5z
b3VyY2VQYXJzZWQoZ2xvYmFsT2JqZWN0LCBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigp
LCBlcnJvci5saW5lKCksIGVycm9yLm1lc3NhZ2UoKSk7CiAKICAgICBpZiAoZXJyb3IuaXNWYWxp
ZCgpKSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvci50
b0Vycm9yT2JqZWN0KGdsb2JhbE9iamVjdCwgZXhlY3V0YWJsZS0+c291cmNlKCkpKTsKKyAgICAg
ICAgZXJyb3JIYW5kbGVyKGV4ZWN1dGFibGUtPnNvdXJjZSgpLCAmZXJyb3IpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTY2LDYgKzY4LDI0IEBAIEluZGlyZWN0RXZhbEV4
ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqCiAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CiB9CiAKK0luZGlyZWN0RXZhbEV4ZWN1
dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZVNhZmUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5
cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxD
b250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIE5ha2VkUHRyPEpTT2JqZWN0PiYgcmVzdWx0aW5n
RXJyb3IpCit7CisgICAgYXV0byBoYW5kbGVFcnJvciA9IFsmXShjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIFBhcnNlckVycm9yKiBlcnJvcikgeworICAgICAgICByZXN1bHRpbmdFcnJvciA9IGVy
cm9yLT50b0Vycm9yT2JqZWN0KGdsb2JhbE9iamVjdCwgc291cmNlKTsKKyAgICB9OworICAgIHJl
dHVybiBjcmVhdGVJbXBsKGdsb2JhbE9iamVjdCwgc291cmNlLCBkZXJpdmVkQ29udGV4dFR5cGUs
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlwZSwgaGFuZGxlRXJyb3IpOwor
fQorCitJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5j
dGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gaGFuZGxlRXJyb3IgPSBbJl0oY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciogZXJyb3IpIHsKKyAgICAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgICAgICB0aHJvd1ZNRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3ItPnRvRXJyb3JPYmplY3QoZ2xvYmFsT2JqZWN0LCBz
b3VyY2UpKTsKKyAgICB9OworICAgIHJldHVybiBjcmVhdGVJbXBsKGdsb2JhbE9iamVjdCwgc291
cmNlLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250
ZXh0VHlwZSwgaGFuZGxlRXJyb3IpOworfQorCiBjb25zdGV4cHIgYm9vbCBpblN0cmljdENvbnRl
eHQgPSBmYWxzZTsKIGNvbnN0ZXhwciBib29sIGluc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxz
ZTsKIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVk
Q29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmgKaW5kZXggNDk4
YjVjODcwOThhYjM3NDc5N2EyNWJmNDgxNjM3Y2ZiYjkyZWRmNS4uYzhlNTI0NTY2NTg1NTcxNDQ2
NDIyOGYwMDBjZmIwNzM5ZGQ5NzM3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaApAQCAtMzIsNyArMzIsMTEgQEAg
bmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlIGZpbmFsIDogcHVi
bGljIEV2YWxFeGVjdXRhYmxlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgSW5kaXJlY3RFdmFsRXhl
Y3V0YWJsZSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2
ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5
cGUpOworICAgIHN0YXRpYyBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBjcmVhdGVTYWZlKEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUsIE5ha2VkUHRyPEpTT2JqZWN0
PiYpOwogcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFcnJvckhhbmRsZXJGdW5jdG9y
PgorICAgIGlubGluZSBzdGF0aWMgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogY3JlYXRlSW1wbChK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJpdmVkQ29udGV4dFR5cGUsIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlLCBFcnJvckhhbmRsZXJG
dW5jdG9yKTsKKwogICAgIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqLCBj
b25zdCBTb3VyY2VDb2RlJiwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMDZmNjUzZWNiZjg0YjM3OGE3
YjNjYWVhZDI0MzQ2OTg4OTUyN2YyMC4uYWE1NGQ0ZTFiNWI2MWY3ZTE4MjQ1OTkzYjc5NzQ5MTJl
ZWMwN2QzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcApAQCAtMTk0LDYgKzE5NCw5IEBACiAjaW5jbHVkZSAiU2V0Q29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJTZXRJdGVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlNldFByb3Rv
dHlwZS5oIgorI2luY2x1ZGUgIlNoYWRvd1JlYWxtQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJT
aGFkb3dSZWFsbU9iamVjdC5oIgorI2luY2x1ZGUgIlNoYWRvd1JlYWxtUHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKICNpbmNsdWRlICJTdHJpbmdDb25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgIlN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgiCkBAIC05MTYsNiAr
OTE5LDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IE51bWJlck9mQXJyYXlJbmRleGluZ01vZGVzOyArK2kpCiAgICAgICAg
IG1fYXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1NoYXBlRHVyaW5nQWxsb2NhdGlvbltpXSA9IG1f
b3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5nU2hhcGVbaV07CiAKKyAgICBtX3NoYWRv
d1JlYWxtUHJvdG90eXBlLnNldCh2bSwgdGhpcywgU2hhZG93UmVhbG1Qcm90b3R5cGU6OmNyZWF0
ZSh2bSwgU2hhZG93UmVhbG1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9v
YmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CisgICAgbV9zaGFkb3dSZWFsbU9iamVjdFN0cnVjdHVy
ZS5zZXQodm0sIHRoaXMsIFNoYWRvd1JlYWxtT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fc2hhZG93UmVhbG1Qcm90b3R5cGUuZ2V0KCkpKTsKKwogICAgIG1fcmVnRXhwUHJvdG90
eXBlLnNldCh2bSwgdGhpcywgUmVnRXhwUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIFJlZ0V4
cFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5n
ZXQoKSkpKTsKICAgICBtX3JlZ0V4cFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFJlZ0V4cE9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSkpOwog
ICAgIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLnNldCh2bSwgdGhpcywgY3JlYXRlUmVn
RXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKHZtLCB0aGlzKSk7CkBAIC0xMDIwLDcgKzEwMjYsMTEg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgQXJyYXlDb25zdHJ1Y3Rv
ciogYXJyYXlDb25zdHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywg
QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJv
dG90eXBlLmdldCgpKSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0dGVyU2V0
dGVyLmdldCgpKTsKICAgICBtX2FycmF5Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBhcnJheUNv
bnN0cnVjdG9yKTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVk
PihMaW5rVGltZUNvbnN0YW50OjpBcnJheSldLnNldCh2bSwgdGhpcywgYXJyYXlDb25zdHJ1Y3Rv
cik7Ci0gICAgCisKKyAgICBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKiBzaGFkb3dSZWFsbUNvbnN0
cnVjdG9yID0gU2hhZG93UmVhbG1Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBTaGFkb3dSZWFsbUNv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCkpLCBtX3NoYWRvd1JlYWxtUHJvdG90eXBlLmdldCgpLCBtX3NwZWNpZXNHZXR0ZXJTZXR0
ZXIuZ2V0KCkpOworICAgIG1fc2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIHNo
YWRvd1JlYWxtQ29uc3RydWN0b3IpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlNoYWRvd1JlYWxtKV0uc2V0KHZtLCB0aGlz
LCBzaGFkb3dSZWFsbUNvbnN0cnVjdG9yKTsKKwogICAgIFJlZ0V4cENvbnN0cnVjdG9yKiByZWdF
eHBDb25zdHJ1Y3RvciA9IFJlZ0V4cENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIFJlZ0V4cENvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLmdldCgp
KTsKICAgICBtX3JlZ0V4cENvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgcmVnRXhwQ29uc3RydWN0
b3IpOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtU
aW1lQ29uc3RhbnQ6OlJlZ0V4cCldLnNldCh2bSwgdGhpcywgcmVnRXhwQ29uc3RydWN0b3IpOwpA
QCAtMTEwMCw2ICsxMTEwLDcgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFt
ZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICBtX2Z1bmN0
aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+Y29uc3RydWN0b3IsIGZ1bmN0aW9uQ29uc3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBtX2FycmF5UHJvdG90eXBl
LT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3Ry
dWN0b3IsIGFycmF5Q29uc3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBtX3JlZ0V4cFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCByZWdFeHBD
b25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOworICAgIG1fc2hhZG93UmVhbG1Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwgc2hhZG93UmVhbG1Db25z
dHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSkpOwogICAgIAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5PYmplY3QsIG9iamVjdENvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkZ1bmN0aW9uLCBmdW5jdGlvbkNvbnN0cnVjdG9y
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CkBA
IC0xMjUxLDYgKzEyNjIsOCBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1l
ICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgICAgICBUZW1w
b3JhbE9iamVjdCogdGVtcG9yYWwgPSBUZW1wb3JhbE9iamVjdDo6Y3JlYXRlKHZtLCBUZW1wb3Jh
bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzKSk7CiAgICAgICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5UZW1wb3JhbCwgdGVtcG9yYWws
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAg
ICB9CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYWRvd1JlYWxtKCkpCisgICAgICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5TaGFkb3dSZWFsbSwgc2hh
ZG93UmVhbG1Db25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpOwogCiAgICAgbV9tb2R1bGVMb2FkZXIuaW5pdExhdGVyKAogICAgICAg
ICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNNb2R1bGVMb2FkZXI+JiBpbml0KSB7CkBAIC0xNDIz
LDYgKzE0MzYsMTIgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBD
b25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpob3N0UHJvbWlz
ZVJlamVjdGlvblRyYWNrZXIpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2Vs
bD4mIGluaXQpIHsKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0
LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMiwgU3RyaW5nKCksIGds
b2JhbEZ1bmNIb3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIpKTsKICAgICAgICAgfSk7CisgICAg
bV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFu
dDo6aW1wb3J0SW5SZWFsbSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxs
PiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQu
dm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgaW1w
b3J0SW5SZWFsbSkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpldmFsSW5SZWFsbSldLmluaXRMYXRl
cihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5p
dC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+
KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgZXZhbEluUmVhbG0pKTsKKyAgICAgICAgfSk7CiAg
ICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25z
dGFudDo6dGhpc1RpbWVWYWx1ZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlND
ZWxsPiYgaW5pdCkgewogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGlu
aXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwg
ZGF0ZVByb3RvRnVuY0dldFRpbWUsIERhdGVQcm90b3R5cGVHZXRUaW1lSW50cmluc2ljKSk7CiAg
ICAgICAgIH0pOwpAQCAtMjEwNyw2ICsyMTI2LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlz
aXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogICAgIHRoaXNP
YmplY3QtPm1fVVJJRXJyb3JTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+bV9hZ2dyZWdhdGVFcnJvclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FycmF5Q29uc3RydWN0b3IpOworICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fc2hhZG93UmVhbG1Db25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5h
cHBlbmQodGhpc09iamVjdC0+bV9yZWdFeHBDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBl
bmQodGhpc09iamVjdC0+bV9vYmplY3RDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9mdW5jdGlvbkNvbnN0cnVjdG9yKTsKQEAgLTIyMDQsNiArMjIyNCw3IEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlz
aXRvciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0LT5tX2N1c3RvbVNldHRlckZ1bmN0aW9uU3Ry
dWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fYm91bmRGdW5jdGlvblN0
cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX25hdGl2ZVN0ZEZ1bmN0
aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fc2hhZG93UmVhbG1PYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOwpAQCAtMjU2MCw2ICsyNTgxLDEz
IEBAIEpTR2xvYmFsT2JqZWN0KiBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdDsKIH0KIAorSlNHbG9iYWxP
YmplY3QqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVXaXRoQ3VzdG9tTWV0aG9kVGFibGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqIG1l
dGhvZFRhYmxlKQoreworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dsb2JhbE9iamVjdD4odm0uaGVhcCkpIEpTR2xvYmFsT2Jq
ZWN0KHZtLCBzdHJ1Y3R1cmUsIG1ldGhvZFRhYmxlKTsKKyAgICBnbG9iYWxPYmplY3QtPmZpbmlz
aENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0OworfQorCiB2b2lkIEpTR2xv
YmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgRGVmZXJUZXJtaW5hdGlv
biBkZWZlclRlcm1pbmF0aW9uKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDEyOGIzOTkxMGRkODA1N2Y3YWFiYjU5Nzc3Y2E2ODBl
OWRmNjE4OTIuLmYzZmU3NGIxOTk1ODM1OGU5NmJmYTQ1NDc2YjY4MjQ4YTdlNTFmMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMTE1
LDYgKzExNSw4IEBAIGNsYXNzIE51bGxTZXR0ZXJGdW5jdGlvbjsKIGNsYXNzIE9iamVjdENvbnN0
cnVjdG9yOwogY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxl
OworY2xhc3MgU2hhZG93UmVhbG1Db25zdHJ1Y3RvcjsKK2NsYXNzIFNoYWRvd1JlYWxtUHJvdG90
eXBlOwogY2xhc3MgUmVnRXhwQ29uc3RydWN0b3I7CiBjbGFzcyBSZWdFeHBQcm90b3R5cGU7CiBj
bGFzcyBTZXRJdGVyYXRvclByb3RvdHlwZTsKQEAgLTMwNiw2ICszMDgsNyBAQCBwdWJsaWM6CiAK
ICAgICBXcml0ZUJhcnJpZXI8T2JqZWN0Q29uc3RydWN0b3I+IG1fb2JqZWN0Q29uc3RydWN0b3I7
CiAgICAgV3JpdGVCYXJyaWVyPEFycmF5Q29uc3RydWN0b3I+IG1fYXJyYXlDb25zdHJ1Y3RvcjsK
KyAgICBXcml0ZUJhcnJpZXI8U2hhZG93UmVhbG1Db25zdHJ1Y3Rvcj4gbV9zaGFkb3dSZWFsbUNv
bnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxSZWdFeHBDb25zdHJ1Y3Rvcj4gbV9yZWdFeHBD
b25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8RnVuY3Rpb25Db25zdHJ1Y3Rvcj4gbV9mdW5j
dGlvbkNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4g
bV9wcm9taXNlQ29uc3RydWN0b3I7CkBAIC0zNTMsNiArMzU2LDcgQEAgcHVibGljOgogICAgIFdy
aXRlQmFycmllcjxPYmplY3RQcm90b3R5cGU+IG1fb2JqZWN0UHJvdG90eXBlOwogICAgIFdyaXRl
QmFycmllcjxGdW5jdGlvblByb3RvdHlwZT4gbV9mdW5jdGlvblByb3RvdHlwZTsKICAgICBXcml0
ZUJhcnJpZXI8QXJyYXlQcm90b3R5cGU+IG1fYXJyYXlQcm90b3R5cGU7CisgICAgV3JpdGVCYXJy
aWVyPFNoYWRvd1JlYWxtUHJvdG90eXBlPiBtX3NoYWRvd1JlYWxtUHJvdG90eXBlOwogICAgIFdy
aXRlQmFycmllcjxSZWdFeHBQcm90b3R5cGU+IG1fcmVnRXhwUHJvdG90eXBlOwogICAgIFdyaXRl
QmFycmllcjxJdGVyYXRvclByb3RvdHlwZT4gbV9pdGVyYXRvclByb3RvdHlwZTsKICAgICBXcml0
ZUJhcnJpZXI8QXN5bmNJdGVyYXRvclByb3RvdHlwZT4gbV9hc3luY0l0ZXJhdG9yUHJvdG90eXBl
OwpAQCAtNDA5LDYgKzQxMyw3IEBAIHB1YmxpYzoKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxP
YmplY3QsIFN0cnVjdHVyZT4gbV9jdXN0b21TZXR0ZXJGdW5jdGlvblN0cnVjdHVyZTsKICAgICBM
YXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9uYXRpdmVTdGRGdW5jdGlv
blN0cnVjdHVyZTsKICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKKyAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3NoYWRvd1JlYWxtT2JqZWN0U3RydWN0dXJlOwog
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwU3RydWN0dXJlOwogICAgIFdyaXRl
QmFycmllcjxBc3luY0Z1bmN0aW9uUHJvdG90eXBlPiBtX2FzeW5jRnVuY3Rpb25Qcm90b3R5cGU7
CiAgICAgV3JpdGVCYXJyaWVyPEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU+IG1fYXN5
bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKQEAgLTYxMCw2ICs2MTUsNyBAQCBwdWJsaWM6
CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTR2xvYmFsT2JqZWN0KiBj
cmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNH
bG9iYWxPYmplY3QqIGNyZWF0ZVdpdGhDdXN0b21NZXRob2RUYWJsZShWTSYsIFN0cnVjdHVyZSos
IGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKik7CiAKICAgICBERUNMQVJFX0VYUE9SVF9J
TkZPOwogCkBAIC03MTMsNiArNzE5LDcgQEAgcHVibGljOgogICAgIEJpZ0ludFByb3RvdHlwZSog
YmlnSW50UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9iaWdJbnRQcm90b3R5cGUuZ2V0KCk7
IH0KICAgICBKU09iamVjdCogZGF0ZVByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0ZVN0
cnVjdHVyZS5wcm90b3R5cGUodGhpcyk7IH0KICAgICBKU09iamVjdCogc3ltYm9sUHJvdG90eXBl
KCkgY29uc3QgeyByZXR1cm4gbV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUucHJvdG90eXBlSW5pdGlh
bGl6ZWRPbk1haW5UaHJlYWQodGhpcyk7IH0KKyAgICBTaGFkb3dSZWFsbVByb3RvdHlwZSogc2hh
ZG93UmVhbG1Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd1JlYWxtUHJvdG90eXBl
LmdldCgpOyB9CiAgICAgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUoKSBjb25zdCB7
IHJldHVybiBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKTsgfQogICAgIEpTT2JqZWN0KiBlcnJvclBy
b3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMp
OyB9CiAgICAgSXRlcmF0b3JQcm90b3R5cGUqIGl0ZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQpAQCAtODMwLDYgKzgzNyw3IEBAIHB1
YmxpYzoKICAgICBQcm9wZXJ0eU9mZnNldCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQogICAgIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRo
aXMpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogc2hhZG93UmVhbG1TdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd1JlYWxtT2JqZWN0U3RydWN0dXJlLmdldCgp
OyB9CiAgICAgU3RydWN0dXJlKiBnZW5lcmF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X2dlbmVyYXRvclN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogYXN5bmNHZW5lcmF0
b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jR2VuZXJhdG9yU3RydWN0dXJlLmdl
dCgpOyB9CiAgICAgU3RydWN0dXJlKiBnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCmluZGV4IDVhOGExNGEzY2M2YWQxOWVkNDA4
MjRiODMwMmRiOTBjNGM0NzRjM2EuLjgyOGZkMDM2NzZlNDVhYTIzYWViZjI0MWM4MDY5ZWJjMTQ0
ODgwYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcApAQCAtNDMs
NiArNDMsNyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpKU1R5
cGUgdHlwZSkKICAgICBDQVNFKFN0cmluZ1R5cGUpCiAgICAgQ0FTRShTeW1ib2xUeXBlKQogICAg
IENBU0UoSGVhcEJpZ0ludFR5cGUpCisgICAgQ0FTRShTaGFkb3dSZWFsbVR5cGUpCiAgICAgQ0FT
RShDdXN0b21HZXR0ZXJTZXR0ZXJUeXBlKQogICAgIENBU0UoQVBJVmFsdWVXcmFwcGVyVHlwZSkK
ICAgICBDQVNFKE5hdGl2ZUV4ZWN1dGFibGVUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGUuaAppbmRleCA2NWVhOTRlZjU2M2Y0YjNhZTIxOTE3NTFjNzkyZWM1MTBkNTc0MWMx
Li40MzFiYmFmYzg0ZTY1MzQ0YzAwMmU0ZTVmNDc2N2M3YTM0NTU1OTQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGUuaApAQCAtMTEwLDYgKzExMCw3IEBAIGVudW0gSlNUeXBl
IDogdWludDhfdCB7CiAgICAgLy8gRW5kIEpTU2NvcGUgdHlwZXMuCiAKICAgICBNb2R1bGVOYW1l
c3BhY2VPYmplY3RUeXBlLAorICAgIFNoYWRvd1JlYWxtVHlwZSwKICAgICBSZWdFeHBPYmplY3RU
eXBlLAogICAgIEpTRGF0ZVR5cGUsCiAgICAgUHJveHlPYmplY3RUeXBlLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggYTBjMjE3MGVjNGJhNTIxYzUx
YmVjNmQyMDNhNTFhOTU2OGIyZjRiMi4uMmFiMTg4NTAxYjhiZTk4NDNhNTNlYjc1MGE3MzM0MjQw
Nzg3ZDI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5o
CkBAIC01NDAsNiArNTQwLDcgQEAgYm9vbCBjYW5Vc2VXZWJBc3NlbWJseUZhc3RNZW1vcnkoKTsK
ICAgICB2KEJvb2wsIHVzZUhhc093biwgdHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBPYmplY3Qu
aGFzT3duIG1ldGhvZCIpIFwKICAgICB2KEJvb2wsIHVzZUludGxFbnVtZXJhdGlvbiwgdHJ1ZSwg
Tm9ybWFsLCAiRXhwb3NlIHRoZSBJbnRsIGVudW1lcmF0aW9uIEFQSXMuIikgXAogICAgIHYoQm9v
bCwgdXNlU2hhcmVkQXJyYXlCdWZmZXIsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2
KEJvb2wsIHVzZVNoYWRvd1JlYWxtLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBTaGFkb3dS
ZWFsbSBvYmplY3QuIikgXAogICAgIHYoQm9vbCwgdXNlVGVtcG9yYWwsIGZhbHNlLCBOb3JtYWws
ICJFeHBvc2UgdGhlIFRlbXBvcmFsIG9iamVjdC4iKSBcCiAgICAgdihCb29sLCB1c2VXZWJBc3Nl
bWJseVRocmVhZGluZywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgaW5zdHJ1Y3Rpb25zIGZyb20gdGhl
IHdhc20gdGhyZWFkaW5nIHNwZWMuIikgXAogICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlUeXBl
ZEZ1bmN0aW9uUmVmZXJlbmNlcywgZmFsc2UsIE5vcm1hbCwgIkFsbG93IGZ1bmN0aW9uIHR5cGVz
IGZyb20gdGhlIHdhc20gdHlwZWQgZnVuY3Rpb24gcmVmZXJlbmNlcyBzcGVjLiIpIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtQ29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1
Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGM2ODQ3MjlmNDA1YTJkZTQ0ZTY1Zjk2ZGFjN2UwNDU3Zjhh
NmM1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1No
YWRvd1JlYWxtQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlNoYWRvd1JlYWxtQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJTaGFkb3dSZWFsbU9iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY29uc3QgQ2xhc3NJbmZvIFNoYWRvd1JlYWxtQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1
bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKSB9OworCitTVEFUSUNfQVNT
RVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoU2hhZG93UmVhbG1Db25zdHJ1Y3Rvcik7CisK
K3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNhbGxTaGFkb3dSZWFsbSk7CitzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RXaXRoU2hhZG93UmVhbG1Db25z
dHJ1Y3Rvcik7CisKK1NoYWRvd1JlYWxtQ29uc3RydWN0b3I6OlNoYWRvd1JlYWxtQ29uc3RydWN0
b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24o
dm0sIHN0cnVjdHVyZSwgY2FsbFNoYWRvd1JlYWxtLCBjb25zdHJ1Y3RXaXRoU2hhZG93UmVhbG1D
b25zdHJ1Y3RvcikKK3sKK30KKwordm9pZCBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIFNoYWRvd1JlYWxtUHJvdG90eXBlKiBzaGFkb3dSZWFsbVByb3RvdHlw
ZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgdm0ucHJvcGVydHlOYW1lcy0+
U2hhZG93UmVhbG0uc3RyaW5nKCksIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0
dXJlVHJhbnNpdGlvbik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgc2hhZG93UmVhbG1Qcm90b3R5cGUsIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKK30KKworc3RhdGljIEpTT2JqZWN0KiBjb25zdHJ1Y3RT
aGFkb3dSZWFsbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlLCBjb25zdCBB
cmdMaXN0JikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgU3RydWN0
dXJlKiBzaGFkb3dSZWFsbVN0cnVjdHVyZSA9IFNoYWRvd1JlYWxtT2JqZWN0OjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5zaGFkb3dSZWFsbVByb3RvdHlw
ZSgpKTsKKyAgICByZXR1cm4gU2hhZG93UmVhbG1PYmplY3Q6OmNyZWF0ZSh2bSwgc2hhZG93UmVh
bG1TdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKSk7Cit9
CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RXaXRoU2hhZG93UmVhbG1Db25z
dHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKK3sKKyAgICBBcmdMaXN0IGFyZ3MoY2FsbEZyYW1lKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGNvbnN0cnVjdFNoYWRvd1JlYWxtKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5u
ZXdUYXJnZXQoKSwgYXJncykpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY2FsbFNo
YWRvd1JlYWxtLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikpCit7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LT52bSgp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNh
bGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlNoYWRvd1JlYWxt
IikpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZGNj
ZDIyNzAxNjU3MGM0MTg4Njc1MTE5NGViOThhZmQxMzMwYTQyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5oCkBA
IC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisj
aW5jbHVkZSAiU2hhZG93UmVhbG1Qcm90b3R5cGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIEdldHRlclNldHRlcjsKKworY2xhc3MgU2hhZG93UmVhbG1Db25zdHJ1Y3RvciBmaW5hbCA6
IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFs
RnVuY3Rpb24gQmFzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisg
ICAgc3RhdGljIFNoYWRvd1JlYWxtQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBTaGFkb3dSZWFsbVByb3RvdHlwZSogc2hhZG93UmVhbG1Qcm90b3R5cGUs
IEdldHRlclNldHRlciopCisgICAgeworICAgICAgICBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKiBj
b25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFNoYWRvd1JlYWxtQ29uc3Ry
dWN0b3I+KHZtLmhlYXApKSBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwor
ICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHNoYWRvd1JlYWxtUHJvdG90
eXBlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKworICAgIERFQ0xBUkVf
SU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgVHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU2hhZG93UmVhbG1Db25zdHJ1Y3RvcihWTSYsIFN0
cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBTaGFkb3dSZWFsbVByb3Rv
dHlwZSopOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFNoYWRvd1Jl
YWxtQ29uc3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24pOworCit9IC8vIG5hbWVzcGFjZSBKU0MK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1P
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1PYmpl
Y3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjI1NDQ3YTcxZWUxNTA4NTM3YjQ1NmZhMzZiNGJmMWFjYzM0OGRi
NDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFk
b3dSZWFsbU9iamVjdC5jcHAKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU2hhZG93UmVhbG1PYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NF
UlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShTaGFkb3dSZWFsbU9iamVjdCk7CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFNoYWRv
d1JlYWxtT2JqZWN0OjpzX2luZm8gPSB7ICJTaGFkb3dSZWFsbSIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoU2hhZG93UmVhbG1PYmplY3QpIH07
CisKK1NoYWRvd1JlYWxtT2JqZWN0OjpTaGFkb3dSZWFsbU9iamVjdChWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBWaXNpdG9yPgordm9pZCBTaGFkb3dSZWFsbU9iamVjdDo6dmlzaXRDaGlsZHJl
bkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIFNoYWRvd1JlYWxt
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFNoYWRvd1JlYWxtT2JqZWN0Kj4oY2VsbCk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisKKyAgICB2aXNpdG9yLmFw
cGVuZCh0aGlzT2JqZWN0LT5tX2dsb2JhbE9iamVjdCk7Cit9CisKK0RFRklORV9WSVNJVF9DSElM
RFJFTihTaGFkb3dSZWFsbU9iamVjdCk7CisKK1NoYWRvd1JlYWxtT2JqZWN0KiBTaGFkb3dSZWFs
bU9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IEdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlKiBtZXRob2RUYWJsZSkKK3sKKyAgICBTaGFkb3dSZWFsbU9iamVj
dCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2hhZG93UmVhbG1PYmplY3Q+
KHZtLmhlYXApKSBTaGFkb3dSZWFsbU9iamVjdCh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3Qt
PmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
SlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVdpdGhDdXN0b21NZXRob2RUYWJsZSh2bSwgSlNHbG9iYWxP
YmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpLCBtZXRob2RUYWJsZSk7CisgICAg
b2JqZWN0LT5tX2dsb2JhbE9iamVjdC5zZXQodm0sIG9iamVjdCwgZ2xvYmFsT2JqZWN0KTsKKyAg
ICByZXR1cm4gb2JqZWN0OworfQorCit2b2lkIFNoYWRvd1JlYWxtT2JqZWN0OjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VS
VChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9U
UkFOU0lUSU9OKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1PYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtT2JqZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODViNGQ5
Zjk3NjlhMWQwNWUzNzg5Y2RmNmU3OTcyMDcxYTE5OTRiMAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtT2JqZWN0LmgKQEAgLTAsMCAr
MSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFNoYWRvd1JlYWxtT2Jq
ZWN0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5n
IEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAmdm0uc2hhZG93UmVh
bG1TcGFjZTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKFNoYWRvd1JlYWxtVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTaGFkb3dS
ZWFsbU9iamVjdCogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgY29uc3QgR2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUqKTsKKworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSB7IHJldHVy
biBtX2dsb2JhbE9iamVjdC5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFNoYWRvd1JlYWxtT2Jq
ZWN0KFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAg
IERFQ0xBUkVfVklTSVRfQ0hJTERSRU47CisKKyAgICBXcml0ZUJhcnJpZXI8SlNHbG9iYWxPYmpl
Y3Q+IG1fZ2xvYmFsT2JqZWN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDEzNTI3ODAxY2QxNGJhZjVlYmYxZjlmZTAyMmNlZmQyZmJmZWQzMAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxt
UHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDEzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
U2hhZG93UmVhbG1Qcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkluZGlyZWN0RXZhbEV4ZWN1dGFi
bGUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
LmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2UuaCIKKyNpbmNsdWRlICJKU01vZHVsZUxv
YWRlci5oIgorI2luY2x1ZGUgIkxpdGVyYWxQYXJzZXIuaCIKKyNpbmNsdWRlICJTaGFkb3dSZWFs
bU9iamVjdC5oIgorCisjaW5jbHVkZSAiU2hhZG93UmVhbG1Qcm90b3R5cGUubHV0LmgiCisKK25h
bWVzcGFjZSBKU0MgeworCisvKiBTb3VyY2UgZm9yIFNoYWRvd1JlYWxtUHJvdG90eXBlLmx1dC5o
CitAYmVnaW4gc2hhZG93UmVhbG1Qcm90b3R5cGVUYWJsZQorICBldmFsdWF0ZSAgICBKU0J1aWx0
aW4gICAgIERvbnRFbnVtfEZ1bmN0aW9uICAxCisgIGltcG9ydFZhbHVlIEpTQnVpbHRpbiAgICAg
RG9udEVudW18RnVuY3Rpb24gIDIKK0BlbmQKKyovCisKK2NvbnN0IENsYXNzSW5mbyBTaGFkb3dS
ZWFsbVByb3RvdHlwZTo6c19pbmZvID0geyAiU2hhZG93UmVhbG0iLCAmQmFzZTo6c19pbmZvLCAm
c2hhZG93UmVhbG1Qcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShT
aGFkb3dSZWFsbVByb3RvdHlwZSkgfTsKKworU2hhZG93UmVhbG1Qcm90b3R5cGU6OlNoYWRvd1Jl
YWxtUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZp
bmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgU2hhZG93UmVhbG1Qcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBKU0NfVE9fU1RSSU5H
X1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGltcG9ydEluUmVhbG0sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBTaGFkb3dSZWFsbU9i
amVjdCogdGhpc1JlYWxtID0ganNEeW5hbWljQ2FzdDxTaGFkb3dSZWFsbU9iamVjdCo+KHZtLCB0
aGlzVmFsdWUpOworICAgIFJFTEVBU0VfQVNTRVJUKHRoaXNSZWFsbSk7CisKKyAgICBhdXRvKiBw
cm9taXNlID0gSlNQcm9taXNlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+cHJvbWlzZVN0cnVj
dHVyZSgpKTsKKworICAgIGF1dG8gc291cmNlT3JpZ2luID0gY2FsbEZyYW1lLT5jYWxsZXJTb3Vy
Y2VPcmlnaW4odm0pOworICAgIGF1dG8qIHNwZWNpZmllciA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMSkudG9TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgSlNHbG9iYWxPYmplY3QqIHJlYWxtR2xvYmFsT2JqZWN0
ID0gdGhpc1JlYWxtLT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvKiBpbnRlcm5hbFByb21pc2Ug
PSByZWFsbUdsb2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCktPmltcG9ydE1vZHVsZShyZWFsbUds
b2JhbE9iamVjdCwgc3BlY2lmaWVyLCBqc1VuZGVmaW5lZCgpLCBzb3VyY2VPcmlnaW4pOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShwcm9taXNlLT5yZWpl
Y3RXaXRoQ2F1Z2h0RXhjZXB0aW9uKHJlYWxtR2xvYmFsT2JqZWN0LCBzY29wZSkpKTsKKworICAg
IHNjb3BlLnJlbGVhc2UoKTsKKyAgICBwcm9taXNlLT5yZXNvbHZlKGdsb2JhbE9iamVjdCwgaW50
ZXJuYWxQcm9taXNlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UpOworfQor
CitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZXZhbEluUmVhbG0sIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAg
ICBTaGFkb3dSZWFsbU9iamVjdCogdGhpc1JlYWxtID0ganNEeW5hbWljQ2FzdDxTaGFkb3dSZWFs
bU9iamVjdCo+KHZtLCB0aGlzVmFsdWUpOworICAgIFJFTEVBU0VfQVNTRVJUKHRoaXNSZWFsbSk7
CisgICAgSlNHbG9iYWxPYmplY3QqIHJlYWxtR2xvYmFsT2JqZWN0ID0gdGhpc1JlYWxtLT5nbG9i
YWxPYmplY3QoKTsKKworICAgIEpTVmFsdWUgZXZhbEFyZyA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MSk7CisgICAgLy8gZXZhbCBjb2RlIGFkYXB0ZWQgZnJvbSBKU0dsb2JhbE9iamVjRnVuY3Rpb25z
OjpnbG9iYWxGdW5jRXZhbAorICAgIFN0cmluZyBzID0gYXNTdHJpbmcoZXZhbEFyZyktPnZhbHVl
KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CisKKyAgICBKU1ZhbHVlIHBhcnNlZE9iamVjdDsKKyAgICBpZiAocy5pczhCaXQo
KSkgeworICAgICAgICBMaXRlcmFsUGFyc2VyPExDaGFyPiBwcmVwYXJzZXIoZ2xvYmFsT2JqZWN0
LCBzLmNoYXJhY3RlcnM4KCksIHMubGVuZ3RoKCksIE5vblN0cmljdEpTT04sIG51bGxwdHIpOwor
ICAgICAgICBwYXJzZWRPYmplY3QgPSBwcmVwYXJzZXIudHJ5TGl0ZXJhbFBhcnNlKCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgTGl0ZXJhbFBhcnNlcjxVQ2hhcj4gcHJlcGFyc2VyKGdsb2JhbE9i
amVjdCwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5ndGgoKSwgTm9uU3RyaWN0SlNPTiwgbnVsbHB0
cik7CisgICAgICAgIHBhcnNlZE9iamVjdCA9IHByZXBhcnNlci50cnlMaXRlcmFsUGFyc2UoKTsK
KyAgICB9CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CisgICAgaWYgKHBhcnNlZE9iamVjdCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShw
YXJzZWRPYmplY3QpOworCisgICAgTmFrZWRQdHI8SlNPYmplY3Q+IGV4ZWN1dGFibGVFcnJvcjsK
KyAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2UocywgY2FsbEZyYW1lLT5jYWxsZXJT
b3VyY2VPcmlnaW4odm0pKTsKKyAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEluZGlyZWN0RXZh
bEV4ZWN1dGFibGU6OmNyZWF0ZVNhZmUocmVhbG1HbG9iYWxPYmplY3QsIHNvdXJjZSwgRGVyaXZl
ZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lLCBleGVjdXRh
YmxlRXJyb3IpOworICAgIGlmIChleGVjdXRhYmxlRXJyb3IpIHsKKyAgICAgICAgRXJyb3JJbnN0
YW5jZSogZXJyb3IgPSBqc0R5bmFtaWNDYXN0PEVycm9ySW5zdGFuY2UqPih2bSwgSlNWYWx1ZShl
eGVjdXRhYmxlRXJyb3IuZ2V0KCkpKTsKKyAgICAgICAgaWYgKGVycm9yICE9IG51bGxwdHIgJiYg
ZXJyb3ItPmVycm9yVHlwZSgpID09IEVycm9yVHlwZTo6U3ludGF4RXJyb3IpIHsKKyAgICAgICAg
ICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgICAgICBjb25zdCBTdHJpbmcgc3lu
dGF4RXJyb3JNZXNzYWdlID0gZXJyb3ItPnNhbml0aXplZE1lc3NhZ2VTdHJpbmcoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAg
ICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4RXJy
b3IoZ2xvYmFsT2JqZWN0LCBzeW50YXhFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgIkVycm9yIGVuY291bnRlcmVkIGR1cmluZyBldmFsdWF0aW9uIl9z
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAg
fQorICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IHZtLmludGVycHJldGVyLT5leGVjdXRlKGV2YWwsIHJlYWxtR2xvYmFsT2JqZWN0LCBy
ZWFsbUdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpLCByZWFsbUdsb2JhbE9iamVjdC0+Z2xvYmFs
U2NvcGUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwKKyAgICAgICAgdGhyb3dW
TUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
ICJFcnJvciBlbmNvdW50ZXJlZCBkdXJpbmcgZXZhbHVhdGlvbiJfcykpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
aGFkb3dSZWFsbVByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hh
ZG93UmVhbG1Qcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZWFlYjBiOGJhYjM5YzE2Nzk2MDE5NmI0
MmY2NDIxZmNlNTFlYzliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuaApAQCAtMCwwICsxLDY2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFNoYWRv
d1JlYWxtUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGlj
OgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0
YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vi
c3BhY2VBY2Nlc3M+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CisgICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShTaGFk
b3dSZWFsbVByb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICB9CisKKyAgICBzdGF0aWMgU2hhZG93UmVhbG1Qcm90b3R5cGUqIGNyZWF0ZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgU2hhZG93UmVhbG1Q
cm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFNoYWRvd1Jl
YWxtUHJvdG90eXBlPih2bS5oZWFwKSkgU2hhZG93UmVhbG1Qcm90b3R5cGUodm0sIHN0cnVjdHVy
ZSk7CisgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1
cm4gcHJvdG90eXBlOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTaGFk
b3dSZWFsbVByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mKTsKK307CisKK0pTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oaW1wb3J0SW5SZWFsbSk7
CitKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGV2YWxJblJlYWxtKTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggOTk2YTA2ZGFhYmE4
MmNjZWZiNDNkZjNmNjVmMTMxZTZmZGU2ZWUwNy4uY2U0ZTNiOTNmMzQ1NGQ3MmQzNGYzZGJhNTBh
MDQxZGYyMWRlNmEyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTU0
LDYgKzE1NCw3IEBACiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgogI2luY2x1ZGUgIlNj
b3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNoYWRvd0NoaWNrZW4uaCIKKyNpbmNsdWRlICJT
aGFkb3dSZWFsbU9iamVjdC5oIgogI2luY2x1ZGUgIlNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXJDYWNoZS5oIgogI2luY2x1ZGUgIlN0cmljdEV2
YWxBY3RpdmF0aW9uLmgiCkBAIC0zNjgsNiArMzY5LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUs
IEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1bkxvb3AsIGJvb2wqIHN1Y2Nlc3Mp
CiAgICAgLCBwcm9taXNlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgY2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNQcm9taXNlKQogICAgICwgcHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNl
IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvcikKICAgICAsIHByb3BlcnR5VGFibGVTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBQcm9wZXJ0eVRh
YmxlKSAvLyBIYXNoOjB4YzZiYzlmMTIKKyAgICAsIHNoYWRvd1JlYWxtU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgU2hhZG93UmVhbG1PYmplY3Qp
CiAgICAgLCByZWdFeHBTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVD
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBSZWdFeHApCiAgICAgLCByZWdFeHBPYmplY3RTcGFjZSBJ
U09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBSZWdFeHBPYmpl
Y3QpCiAgICAgLCByb3BlU3RyaW5nU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgc3RyaW5n
SGVhcENlbGxUeXBlLmdldCgpLCBKU1JvcGVTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAppbmRleCA3YTU4YjI3OWU2NzBhODQwM2QxZjM5NDEyMzU3ZDVlNzcxMTNmNTc4Li5hODg3
YThlNTAyMTY4MGFhYWQxZWI1ZDg1ZmQ0NTdjZGI1OWRmM2M5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKQEAgLTUxMiw2ICs1MTIsNyBAQCBwdWJsaWM6CiAgICAgSXNvU3Vic3BhY2Ug
cHJvbWlzZVNwYWNlOwogICAgIElzb1N1YnNwYWNlIHByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFj
ZTsKICAgICBJc29TdWJzcGFjZSBwcm9wZXJ0eVRhYmxlU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ug
c2hhZG93UmVhbG1TcGFjZTsKICAgICBJc29TdWJzcGFjZSByZWdFeHBTcGFjZTsKICAgICBJc29T
dWJzcGFjZSByZWdFeHBPYmplY3RTcGFjZTsKICAgICBJc29TdWJzcGFjZSByb3BlU3RyaW5nU3Bh
Y2U7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGNmZTQwOTgxNzljYTBmYzQ2ODQ5M2EyMGVmNGMzMTZjMDJhOTE5MzkuLmUwYmY3ZmYzNzBi
MTMwNWE3ZmI2OWVmNTJkNTUzMDBhMzZhYzIzYzYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjEtMDktMjEg
IFBoaWxsaXAgTWF0ZXMgIDxwbWF0ZXNAaWdhbGlhLmNvbT4KKworICAgICAgICBUZXN0IGNvdmVy
YWdlIGZvciBKU0Mgc2hhZG93IHJlYWxtcyBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNjAyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtb2R1bGVzL2ltcG9ydC1tZXRhLXN5
bnRheC5qczoKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKiBzdHJlc3MvaW1wb3J0
LXN5bnRheC5qczoKKyAgICAgICAgKiBzdHJlc3MvcmVzb3VyY2VzL3NoYWRvdy1yZWFsbS1leGFt
cGxlLW1vZHVsZS5qczogQWRkZWQuCisgICAgICAgIChwdXRJbkdsb2JhbCk6CisgICAgICAgIChn
ZXRGcm9tR2xvYmFsKToKKyAgICAgICAgKGdldEFuT2JqZWN0KToKKyAgICAgICAgKGdldENhbGxD
b3VudCk6CisgICAgICAgICogc3RyZXNzL3NoYWRvdy1yZWFsbS1ldmFsdWF0ZS5qczogQWRkZWQu
CisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChh
c3NlcnRpb25Gbik6CisgICAgICAgIChzaG91bGRCZS5TdHJpbmcpOgorICAgICAgICAoc2hvdWxk
QmUuZ2xvYmFsT2JqZWN0Rm9yLmRvRXZhbCk6CisgICAgICAgIChzaG91bGRCZS5nbG9iYWxPYmpl
Y3RGb3IpOgorICAgICAgICAqIHN0cmVzcy9zaGFkb3ctcmVhbG0taW1wb3J0LXZhbHVlLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAg
ICAgKGFzeW5jIHNob3VsZFRocm93QXN5bmMpOgorICAgICAgICAoYXN5bmMgY29uc3QpOgorICAg
ICAgICAoZG9JbXBvcnQpOgorICAgICAgICAqIHN0cmVzcy9zaGFkb3ctcmVhbG0uanM6IEFkZGVk
LgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGhyb3cubmV3LkVycm9yKToKKwogMjAy
MS0wOS0yMyAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAg
ICAgW0pTQ10gSGFuZGxlIHN5bnRhY3RpYyBwcm9kdWN0aW9uIGZvciBgI3ggaW4gZXhwcmAgY29y
cmVjdGx5CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21vZHVsZXMvaW1wb3J0LW1ldGEtc3ludGF4Lmpz
IGIvSlNUZXN0cy9tb2R1bGVzL2ltcG9ydC1tZXRhLXN5bnRheC5qcwppbmRleCAzZWRmNGU1MTIw
ZTEyYTViNjg5NDkxM2IwNWFhNzBhYzY3Njg1NjYyLi41OWEyYjM2MzQ2MGE2MDM1YzdhMTA1ZjA4
YzIzNmY5ZjRhOTQzNTFhIDEwMDY0NAotLS0gYS9KU1Rlc3RzL21vZHVsZXMvaW1wb3J0LW1ldGEt
c3ludGF4LmpzCisrKyBiL0pTVGVzdHMvbW9kdWxlcy9pbXBvcnQtbWV0YS1zeW50YXguanMKQEAg
LTEwLDcgKzEwLDcgQEAgc2hvdWxkTm90VGhyb3coKCkgPT4gewogCiBzaG91bGRUaHJvdygoKSA9
PiB7CiAgICAgY2hlY2tNb2R1bGVTeW50YXgoYChpbXBvcnQuY29jb2EpYCk7Ci19LCBgU3ludGF4
RXJyb3I6IFVuZXhwZWN0ZWQgaWRlbnRpZmllciAnY29jb2EnLiAiaW1wb3J0LiIgY2FuIG9ubHkg
Zm9sbG93ZWQgd2l0aCBtZXRhLjoxYCk7Cit9LCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgaWRl
bnRpZmllciAnY29jb2EnLiAiaW1wb3J0LiIgY2FuIG9ubHkgYmUgZm9sbG93ZWQgd2l0aCBtZXRh
LjoxYCk7CiAKIHNob3VsZFRocm93KCgpID0+IHsKICAgICBjaGVja01vZHVsZVN5bnRheChgKGlt
cG9ydFsiQ29jb2EiXSlgKTsKQEAgLTE4LDcgKzE4LDcgQEAgc2hvdWxkVGhyb3coKCkgPT4gewog
CiBzaG91bGRUaHJvdygoKSA9PiB7CiAgICAgY2hlY2tNb2R1bGVTeW50YXgoYGltcG9ydC5jb2Nv
YWApOwotfSwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGlkZW50aWZpZXIgJ2NvY29hJy4gImlt
cG9ydC4iIGNhbiBvbmx5IGZvbGxvd2VkIHdpdGggbWV0YS46MWApOworfSwgYFN5bnRheEVycm9y
OiBVbmV4cGVjdGVkIGlkZW50aWZpZXIgJ2NvY29hJy4gImltcG9ydC4iIGNhbiBvbmx5IGJlIGZv
bGxvd2VkIHdpdGggbWV0YS46MWApOwogCiBzaG91bGRUaHJvdygoKSA9PiB7CiAgICAgY2hlY2tN
b2R1bGVTeW50YXgoYGltcG9ydFsiQ29jb2EiXWApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvaW1wb3J0LXN5bnRheC5qcyBiL0pTVGVzdHMvc3RyZXNzL2ltcG9ydC1zeW50YXguanMKaW5k
ZXggMjVhM2ZiYmY2ODY2MTU3YjE3NWRhOGVkYWU3OGMwZTllMjgxNWMyNi4uOTRlMDg1MGY3YjI4
OTJhODYxYWQ1ZDBmNDUwZmY0NGY5MTcyNGQyMSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3Mv
aW1wb3J0LXN5bnRheC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9pbXBvcnQtc3ludGF4LmpzCkBA
IC0yOSw3ICsyOSw3IEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3RTeW50YXgoc2NyaXB0LCBtZXNzYWdl
KSB7CiAKIHRlc3RTeW50YXhFcnJvcihgaW1wb3J0KWAsIGBTeW50YXhFcnJvcjogVW5leHBlY3Rl
ZCB0b2tlbiAnKScuIGltcG9ydCBjYWxsIGV4cGVjdHMgZXhhY3RseSBvbmUgYXJndW1lbnQuYCk7
CiB0ZXN0U3ludGF4RXJyb3IoYG5ldyBpbXBvcnQoYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgdXNl
IG5ldyB3aXRoIGltcG9ydC5gKTsKLXRlc3RTeW50YXhFcnJvcihgaW1wb3J0LmhlbGxvKClgLCBg
U3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgaWRlbnRpZmllciAnaGVsbG8nLiAiaW1wb3J0LiIgY2Fu
IG9ubHkgZm9sbG93ZWQgd2l0aCBtZXRhLmApOwordGVzdFN5bnRheEVycm9yKGBpbXBvcnQuaGVs
bG8oKWAsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCBpZGVudGlmaWVyICdoZWxsbycuICJpbXBv
cnQuIiBjYW4gb25seSBiZSBmb2xsb3dlZCB3aXRoIG1ldGEuYCk7CiB0ZXN0U3ludGF4RXJyb3Io
YGltcG9ydFtgLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJ1snLiBpbXBvcnQgY2Fs
bCBleHBlY3RzIGV4YWN0bHkgb25lIGFyZ3VtZW50LmApOwogdGVzdFN5bnRheEVycm9yKGBpbXBv
cnQ8YCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICc8Jy4gaW1wb3J0IGNhbGwgZXhw
ZWN0cyBleGFjdGx5IG9uZSBhcmd1bWVudC5gKTsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvcmVzb3VyY2VzL3NoYWRvdy1yZWFsbS1leGFtcGxlLW1vZHVsZS5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL3Jlc291cmNlcy9zaGFkb3ctcmVhbG0tZXhhbXBsZS1tb2R1bGUuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGI0ZjU3OWMyZjlhNmRjMjM5MGJlMmZhMDU1Y2U2OGQ2ODAzMzBmMwotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL3Jlc291cmNlcy9zaGFkb3ctcmVhbG0tZXhhbXBsZS1tb2R1bGUu
anMKQEAgLTAsMCArMSwyNSBAQAordmFyIGNhbGxDb3VudCA9IDA7CisKK2Z1bmN0aW9uIHB1dElu
R2xvYmFsKGtleSwgdmFsKSB7CisgICAgY2FsbENvdW50Kys7CisgICAgZ2xvYmFsVGhpcy5rZXkg
PSB2YWw7Cit9CisKK2Z1bmN0aW9uIGdldEZyb21HbG9iYWwoa2V5KSB7CisgICAgY2FsbENvdW50
Kys7CisgICAgcmV0dXJuIGdsb2JhbFRoaXMua2V5OworfQorCit2YXIgYW5PYmplY3QgPSBuZXcg
T2JqZWN0KCk7CisKK2Z1bmN0aW9uIGdldEFuT2JqZWN0KCkgeworICAgIGNhbGxDb3VudCsrOwor
ICAgIHJldHVybiBhbk9iamVjdDsKK30KKworZnVuY3Rpb24gZ2V0Q2FsbENvdW50KCkgeworICAg
IHJldHVybiBjYWxsQ291bnQ7Cit9CisKK3ZhciBhbnN3ZXIgPSA2OworZXhwb3J0IHsgYW5PYmpl
Y3QsIGFuc3dlciwgZ2V0Q2FsbENvdW50LCBnZXRGcm9tR2xvYmFsLCBnZXRBbk9iamVjdCwgcHV0
SW5HbG9iYWwgfTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3NoYWRvdy1yZWFsbS1ldmFs
dWF0ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3NoYWRvdy1yZWFsbS1ldmFsdWF0ZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xMDM2MDMxMTliODIyMmQ5MDNkZmU1YjYzNWIyY2Y4ODdmYzc2ZTVmCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc2hhZG93LXJlYWxtLWV2YWx1YXRlLmpzCkBAIC0wLDAg
KzEsMTUzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlU2hhZG93UmVhbG09MSIpCisKK2Z1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAke2V4cGVjdGVkfSBi
dXQgZ290ICR7YWN0dWFsfWApOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJv
clR5cGUsIGFzc2VydGlvbkZuKSB7CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7CisgICAgICAg
IGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisK
KyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0gYnV0IGdvdCAke2Vycm9yLm5hbWV9
YCk7CisKKyAgICBhc3NlcnRpb25GbihlcnJvcik7Cit9CisKKy8vIGJhc2ljIGV2YWx1YXRpb24g
YW5kIHN0YXRlIHNldHRpbmcKK3sKKyAgICBsZXQgcmVhbG0gPSBuZXcgU2hhZG93UmVhbG0oKTsK
KyAgICBsZXQgb3RoZXJSZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOworCisgICAgc2hvdWxkQmUo
cmVhbG0uZXZhbHVhdGUoIjEiKSwgMSk7CisgICAgdmFyIHggPSAyOworICAgIHJlYWxtLmV2YWx1
YXRlKCJ2YXIgeCA9IDEiKTsKKyAgICBzaG91bGRCZShyZWFsbS5ldmFsdWF0ZSgieCIpLCAxKTsK
KyAgICBzaG91bGRCZSh4LCAyKTsKKworICAgIC8vIHNjb3BlIGlzbid0IHNoYXJlZCBhY3Jvc3Mg
cmVhbG1zCisgICAgc2hvdWxkQmUob3RoZXJSZWFsbS5ldmFsdWF0ZSgiZ2xvYmFsVGhpcy54Iiks
IHVuZGVmaW5lZCk7Cit9CisKKy8vIGFjY2Vzc2luZyBgZ2xvYmFsVGhpc2Agd2l0aGluIGFuZCBv
dXRzaWRlIG9mIGEgc2hhZG93IHJlYWxtCit7CisgICAgbGV0IHJlYWxtID0gbmV3IFNoYWRvd1Jl
YWxtKCk7CisgICAgZ2xvYmFsVGhpcy5oaSA9IDY7CisKKyAgICBzaG91bGRCZShyZWFsbS5ldmFs
dWF0ZSgiZ2xvYmFsVGhpcy5oaSIpLCB1bmRlZmluZWQpOworCisgICAgcmVhbG0uZXZhbHVhdGUo
Imdsb2JhbFRoaXMuaGkgPSAnZmFsYSBhbWlnbyciKTsKKworICAgIHNob3VsZEJlKHJlYWxtLmV2
YWx1YXRlKCJnbG9iYWxUaGlzLmhpIiksICJmYWxhIGFtaWdvIik7CisgICAgc2hvdWxkQmUoZ2xv
YmFsVGhpcy5oaSwgNik7Cit9CisKKy8vIGVuc3VyZSB0aGF0IGVycm9ycyB0aHJvd24gaXNuJ3Qg
YXNzb2NpYXRlZCB3aXRoIHRoZSBzaGFkb3cgcmVhbG0ncyBnbG9iYWwgb2JqZWN0Cit7CisgICAg
bGV0IHJlYWxtID0gbmV3IFNoYWRvd1JlYWxtKCk7CisgICAgc2hvdWxkVGhyb3coCisgICAgICAo
KSA9PiB7IHJlYWxtLmV2YWx1YXRlKCIuLiIpOyB9LAorICAgICAgU3ludGF4RXJyb3IsCisgICAg
ICAoZXJyKSA9PiB7CisgICAgICAgICAgc2hvdWxkQmUoJC5nbG9iYWxPYmplY3RGb3IoZXJyKSwg
Z2xvYmFsVGhpcyk7CisgICAgICAgICAgc2hvdWxkQmUoU3RyaW5nKGVyciksIGBTeW50YXhFcnJv
cjogVW5leHBlY3RlZCB0b2tlbiAnLidgKTsKKyAgICAgIH0pOworfQorCisvLyBlbnN1cmUgdGhh
dCBlcnJvcnMgdGhyb3duIGRvbid0IGNhcnJ5IGluZm9ybWF0aW9uIGZyb20gdGhlIHNoYWRvdyBy
ZWFsbQoreworICAgIGxldCByZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOworICAgIHNob3VsZFRo
cm93KAorICAgICAgKCkgPT4geyByZWFsbS5ldmFsdWF0ZSgidGhyb3cgbmV3IEVycm9yKCdzZWNy
ZXQnKSIpOyB9LAorICAgICAgVHlwZUVycm9yLAorICAgICAgKGVycikgPT4geworICAgICAgICAg
IHNob3VsZEJlKCQuZ2xvYmFsT2JqZWN0Rm9yKGVyciksIGdsb2JhbFRoaXMpOworICAgICAgICAg
IHNob3VsZEJlKFN0cmluZyhlcnIpLCAiVHlwZUVycm9yOiBFcnJvciBlbmNvdW50ZXJlZCBkdXJp
bmcgZXZhbHVhdGlvbiIpOworICAgICAgfSk7Cit9CisKKy8vIHdyYXBwZWQgZnVuY3Rpb25zIHBy
b3RlY3QgdGhlIHNoYWRvdyByZWFsbQoreworICAgIGxldCByZWFsbSA9IG5ldyBTaGFkb3dSZWFs
bSgpOworICAgIGxldCB3cmFwcGVkSW52b2tlQW5kQWRkID0gcmVhbG0uZXZhbHVhdGUoImZ1bmN0
aW9uIGludm9rZUFuZEFkZCh4Rm4sIHlGbikgeyByZXR1cm4geEZuKCkgKyB5Rm4oKTsgfTsgaW52
b2tlQW5kQWRkIik7CisgICAgc2hvdWxkQmUod3JhcHBlZEludm9rZUFuZEFkZCgoKSA9PiB7IHJl
dHVybiAxIH0sICgpID0+IHsgcmV0dXJuIDIgfSksIDMpOworICAgIHNob3VsZEJlKCQuZ2xvYmFs
T2JqZWN0Rm9yKHdyYXBwZWRJbnZva2VBbmRBZGQpLCBnbG9iYWxUaGlzKTsKKworICAgIC8vIG5h
bWUgYW5kIGxlbmd0aCBwcm9wZXJ0aWVzIGZyb20gd3JhcHBlZCBmdW5jdGlvbiBhcmUgYWJzZW50
CisgICAgc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3cmFwcGVkSW52
b2tlQW5kQWRkLCAibGVuZ3RoIiksIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcih3cmFwcGVkSW52b2tlQW5kQWRkLCAibmFtZSIpLCB1bmRl
ZmluZWQpOworCisgICAgLy8gY2FuJ3QgcGFzcyBvYmplY3RzIGludG8gYSBzaGFkb3cgcmVhbG0t
d3JhcHBlZCBmdW5jdGlvbgorICAgIGxldCBudW1iZXJPYmogPSB7IHZhbHVlT2YoKSB7IHJldHVy
biAtMSB9IH07CisgICAgc2hvdWxkVGhyb3coCisgICAgICAoKSA9PiB7IHdyYXBwZWRJbnZva2VB
bmRBZGQobnVtYmVyT2JqLCAxKTsgfSwKKyAgICAgIFR5cGVFcnJvciwKKyAgICAgIChlcnIpID0+
IHsKKyAgICAgICAgICBzaG91bGRCZSgkLmdsb2JhbE9iamVjdEZvcihlcnIpLCBnbG9iYWxUaGlz
KTsKKyAgICAgICAgICBzaG91bGRCZShTdHJpbmcoZXJyKSwgIlR5cGVFcnJvcjogdmFsdWUgcGFz
c2luZyBiZXR3ZWVuIHJlYWxtcyBtdXN0IGJlIGNhbGxhYmxlIG9yIHByaW1pdGl2ZSIpOworICAg
ICAgfSk7Cit9CisKK3sKKyAgICBsZXQgcmVhbG0gPSBuZXcgU2hhZG93UmVhbG0oKTsKKyAgICAv
LyBjYW4ndCBjYWxsIGBldmFsdWF0ZWAgb24gYSBub24gc2hhZG93IHJlYWxtCisgICAgbGV0IG5v
dFJlYWxtID0ge307CisgICAgc2hvdWxkVGhyb3coCisgICAgICAoKSA9PiB7IHJlYWxtLmV2YWx1
YXRlLmNhbGwobm90UmVhbG0sICcxJyk7IH0sCisgICAgICBUeXBlRXJyb3IsCisgICAgICAoZXJy
KSA9PiB7IHNob3VsZEJlKCQuZ2xvYmFsT2JqZWN0Rm9yKGVyciksIGdsb2JhbFRoaXMpOyB9Cisg
ICAgKTsKK30KKworLy8gdHJpZ2dlciBKSVQKK3sKKyAgICBmdW5jdGlvbiBkb0V2YWwocmVhbG0s
IHMpCisgICAgeworICAgICAgICByZXR1cm4gcmVhbG0uZXZhbHVhdGUocyk7CisgICAgfQorCisg
ICAgbm9JbmxpbmUoZG9FdmFsKTsKKworICAgIGxldCByZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgp
OworICAgIHJlYWxtLmV2YWx1YXRlKCJnbG9iYWxUaGlzLnNlY3JldCA9IDE7Iik7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQorICAgICAgICBzaG91bGRCZShkb0V2YWwocmVh
bG0sICc0MicpLCA0Mik7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsK
KyAgICAgICAgbGV0IGYgPSBkb0V2YWwocmVhbG0sICcoeCkgPT4geyByZXR1cm4geCgpICsgZ2xv
YmFsVGhpcy5zZWNyZXQ7IH0nKTsKKyAgICAgICAgc2hvdWxkQmUoJC5nbG9iYWxPYmplY3RGb3Io
ZiksIGdsb2JhbFRoaXMpOworICAgICAgICBzaG91bGRCZShmKCgpID0+IHsgcmV0dXJuIDQxOyB9
KSwgNDIpOworICAgIH0KKyAgICAvLyAocG90ZW50aWFsKSBpbmxpbmluZyBvZiB3cmFwcGVkIGZ1
bmN0aW9uIHVzZXMgY29ycmVjdCBnbG9iYWwgb2JqZWN0CisgICAgbGV0IGYgPSBkb0V2YWwocmVh
bG0sICcoeCkgPT4geyByZXR1cm4geCgpICsgZ2xvYmFsVGhpcy5zZWNyZXQ7IH0nKTsKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgc2hvdWxkQmUoJC5nbG9i
YWxPYmplY3RGb3IoZiksIGdsb2JhbFRoaXMpOworICAgICAgICBzaG91bGRCZShmKCgpID0+IHsg
cmV0dXJuIDQxOyB9KSwgNDIpOworICAgIH0KKyAgICAvLyAocG90ZW50aWFsKSBpbmxpbmluZyBp
bnNpZGUgYSByZWFsbSB1c2VzIGNvcnJlY3QgZ2xvYmFsIG9iamVjdAorICAgIGxldCBsb29wSW5z
aWRlID0gZG9FdmFsKHJlYWxtLCAnKHgpID0+IHsgbGV0IGFjYyA9IDA7IGZvciAodmFyIGkgPSAw
OyBpIDwgMTAwMDA7ICsraSkgeyBhY2MgKz0geCgpOyB9OyByZXR1cm4gYWNjOyB9Jyk7CisgICAg
Z2xvYmFsVGhpcy5zZWNyZXQgPSAtMTsKKyAgICBzaG91bGRCZShsb29wSW5zaWRlKCgpID0+IHsg
cmV0dXJuIGdsb2JhbFRoaXMuc2VjcmV0OyB9KSwgLTEwMDAwKTsKK30KKworLy8gZXZhbHVhdGUg
c3BlY3MKK3sKKyAgICBzaG91bGRCZSh0eXBlb2YgU2hhZG93UmVhbG0ucHJvdG90eXBlLmV2YWx1
YXRlLCAiZnVuY3Rpb24iKTsKKworICAgIGxldCBldmFsdWF0ZU5hbWUgPSBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKFNoYWRvd1JlYWxtLnByb3RvdHlwZS5ldmFsdWF0ZSwgIm5hbWUi
KTsKKyAgICBzaG91bGRCZShldmFsdWF0ZU5hbWUudmFsdWUsICJldmFsdWF0ZSIpOworICAgIHNo
b3VsZEJlKGV2YWx1YXRlTmFtZS5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoZXZh
bHVhdGVOYW1lLndyaXRhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoZXZhbHVhdGVOYW1lLmNv
bmZpZ3VyYWJsZSwgdHJ1ZSk7CisKKyAgICBsZXQgZXZhbHVhdGVMZW5ndGggPSBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKFNoYWRvd1JlYWxtLnByb3RvdHlwZS5ldmFsdWF0ZSwgImxl
bmd0aCIpOworICAgIHNob3VsZEJlKGV2YWx1YXRlTGVuZ3RoLnZhbHVlLCAxKTsKKyAgICBzaG91
bGRCZShldmFsdWF0ZUxlbmd0aC5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoZXZh
bHVhdGVMZW5ndGgud3JpdGFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShldmFsdWF0ZUxlbmd0
aC5jb25maWd1cmFibGUsIHRydWUpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc2hh
ZG93LXJlYWxtLWltcG9ydC12YWx1ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3NoYWRvdy1yZWFsbS1p
bXBvcnQtdmFsdWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQzY2Q4ZTYyM2YxZjZkMTM5MzFjN2I5ZGI4ZGRl
MzA4NDYwOGE4NQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3NoYWRvdy1yZWFs
bS1pbXBvcnQtdmFsdWUuanMKQEAgLTAsMCArMSwxNDggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygi
LS11c2VTaGFkb3dSZWFsbT0xIikKKwordmFyIGFib3J0ID0gJHZtLmFib3J0OworCitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdv
dCAke2FjdHVhbH1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBl
KSB7CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisKKyAgICBpZiAoIShlcnJvciBp
bnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQg
JHtlcnJvclR5cGUubmFtZX0hIGdvdCAke2Vycm9yLm5hbWV9YCk7Cit9CisKK2FzeW5jIGZ1bmN0
aW9uIHNob3VsZFRocm93QXN5bmMoZnVuYywgZXJyb3JUeXBlKSB7CisgICAgbGV0IGVycm9yOwor
ICAgIHRyeSB7CisgICAgICAgIGF3YWl0IGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgIGVycm9yID0gZTsKKyAgICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9y
VHlwZSkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFt
ZX0hIGdvdCAke2Vycm9yLm5hbWV9IHdpdGggbWVzc2FnZSAke2Vycm9yLm1lc3NhZ2V9YCk7Cit9
CisKKyhhc3luYyBmdW5jdGlvbiAoKSB7CisgICAgY29uc3QgaW1wb3J0UGF0aCA9ICIuL3Jlc291
cmNlcy9zaGFkb3ctcmVhbG0tZXhhbXBsZS1tb2R1bGUuanMiOworICAgIGNvbnN0IHsgYW5zd2Vy
LCBnZXRDYWxsQ291bnQsIHB1dEluR2xvYmFsLCBnZXRGcm9tR2xvYmFsLCBnZXRBbk9iamVjdCB9
ID0gYXdhaXQgaW1wb3J0KGltcG9ydFBhdGgpOworICAgIGNvbnN0IG91dGVyQW5zd2VyID0gYW5z
d2VyOworICAgIGNvbnN0IG91dGVyR2V0Q2FsbENvdW50ID0gZ2V0Q2FsbENvdW50OworICAgIGNv
bnN0IG91dGVyUHV0SW5HbG9iYWwgPSBwdXRJbkdsb2JhbDsKKyAgICBjb25zdCBvdXRlckdldEZy
b21HbG9iYWwgPSBnZXRGcm9tR2xvYmFsOworICAgIGNvbnN0IG91dGVyR2V0QW5PYmplY3QgPSBn
ZXRBbk9iamVjdDsKKworICAgIHsKKyAgICAgICAgbGV0IHJlYWxtID0gbmV3IFNoYWRvd1JlYWxt
KCk7CisKKyAgICAgICAgLy8gdXBkYXRlIGxvY2FsIG1vZHVsZSBzdGF0ZSArIGNoZWNrIGl0Cisg
ICAgICAgIHNob3VsZEJlKG91dGVyR2V0Q2FsbENvdW50KCksIDApOworICAgICAgICBvdXRlckdl
dEFuT2JqZWN0KCk7CisgICAgICAgIHNob3VsZEJlKG91dGVyR2V0Q2FsbENvdW50KCksIDEpOwor
ICAgICAgICAvLyB1cGRhdGUgcmVhbG0gbW9kdWxlIHN0YXRlICsgY2hlY2sgaXQKKyAgICAgICAg
bGV0IGlubmVyR2V0Q2FsbENvdW50ID0gYXdhaXQgcmVhbG0uaW1wb3J0VmFsdWUoaW1wb3J0UGF0
aCwgImdldENhbGxDb3VudCIpOworICAgICAgICBsZXQgaW5uZXJQdXRJbkdsb2JhbCA9IGF3YWl0
IHJlYWxtLmltcG9ydFZhbHVlKGltcG9ydFBhdGgsICJwdXRJbkdsb2JhbCIpOworICAgICAgICBz
aG91bGRCZShpbm5lckdldENhbGxDb3VudCgpLCAwKTsKKyAgICAgICAgaW5uZXJQdXRJbkdsb2Jh
bCgic29tZXRoaW5nIiwgInJhbmRvbSIpOworICAgICAgICBzaG91bGRCZShpbm5lckdldENhbGxD
b3VudCgpLCAxKTsKKyAgICAgICAgLy8gcmUtaW1wb3J0aW5nIHRoZSBtb2R1bGUgaW50byB0aGUg
cmVhbG0gZG9lc24ndCByZWxvYWQgdGhlIG1vZHVsZQorICAgICAgICBpbm5lckdldENhbGxDb3Vu
dCA9IGF3YWl0IHJlYWxtLmltcG9ydFZhbHVlKGltcG9ydFBhdGgsICJnZXRDYWxsQ291bnQiKTsK
KyAgICAgICAgc2hvdWxkQmUoaW5uZXJHZXRDYWxsQ291bnQoKSwgMSk7CisgICAgICAgIC8vIHRo
ZSAob3V0ZXIpIGxvY2FsIG1vZHVsZSBzdGF0ZSBzdGF5cyBpbnRhY3QKKyAgICAgICAgc2hvdWxk
QmUob3V0ZXJHZXRDYWxsQ291bnQoKSwgMSk7CisKKyAgICAgICAgLy8gb25lIGNhbiBpbXBvcnRl
ZCBwcmltaXRpdmUvY2FsbGFibGUgdmFyaWFibGVzIGp1c3QgZmluZQorICAgICAgICAvLyBzaG91
bGRCZShpbm5lckFuc3dlciwgb3V0ZXJBbnN3ZXIpOworICAgICAgICBsZXQgaW5uZXJBbnN3ZXIg
PSBhd2FpdCByZWFsbS5pbXBvcnRWYWx1ZShpbXBvcnRQYXRoLCAiYW5zd2VyIik7CisgICAgICAg
IHNob3VsZEJlKGlubmVyQW5zd2VyLCBvdXRlckFuc3dlcik7CisKKyAgICAgICAgLy8gaW1wb3J0
ZWQgdmFyaWFibGVzIGFyZSBjaGVja2VkIGZvciBwcmltdGl2ZS9jYWxsYWJsZS1uZXNzCisgICAg
ICAgIGF3YWl0IHNob3VsZFRocm93QXN5bmMoYXN5bmMgKCkgPT4geyBsZXQgeCA9IGF3YWl0IHJl
YWxtLmltcG9ydFZhbHVlKGltcG9ydFBhdGgsICJhbk9iamVjdCIpOyB9LCBUeXBlRXJyb3IpOwor
CisgICAgICAgIC8vIGltcG9ydGluZyBub24tZXhpc3RlbnQgcmVmIGZhaWxzCisgICAgICAgIGF3
YWl0IHNob3VsZFRocm93QXN5bmMoYXN5bmMgKCkgPT4geyBsZXQgeCA9IGF3YWl0IHJlYWxtLmlt
cG9ydFZhbHVlKGltcG9ydFBhdGgsICJub3RoaW5nIik7IH0sIFR5cGVFcnJvcik7CisKKyAgICAg
ICAgLy8gaW1wb3J0aW5nIGZyb20gbm9uLWV4aXN0ZW50IGZpbGUgZmFpbHMKKyAgICAgICAgYXdh
aXQgc2hvdWxkVGhyb3dBc3luYyhhc3luYyAoKSA9PiB7IGxldCB4ID0gYXdhaXQgcmVhbG0uaW1w
b3J0VmFsdWUoInJhbmRvbSIsICJub3RoaW5nIik7IH0sIFR5cGVFcnJvcik7CisKKyAgICAgICAg
Ly8gd2UgY2FuIGltcG9ydCBmdW5jdGlvbnMgdGhyb3VnaCBhbiBpbm5lciByZWFsbSBmb3IgdXNl
IGluIHRoZSBvdXRlcgorICAgICAgICBsZXQgaW5uZXJHZXRGcm9tR2xvYmFsID0gYXdhaXQgcmVh
bG0uaW1wb3J0VmFsdWUoaW1wb3J0UGF0aCwgImdldEZyb21HbG9iYWwiKTsKKyAgICAgICAgaW5u
ZXJQdXRJbkdsb2JhbCgic2FsdXRhdGlvbiIsICJzYXJhdmEiKTsKKyAgICAgICAgc2hvdWxkQmUo
aW5uZXJHZXRGcm9tR2xvYmFsKCJzYWx1dGF0aW9uIiksICJzYXJhdmEiKTsKKworICAgICAgICAv
LyBpbm5lciBnbG9iYWwgc3RhdGUgaXMgdW5jaGFuZ2VkIGJ5IG91dGVyIGdsb2JhbCBzdGF0ZSBj
aGFuZ2UKKyAgICAgICAgb3V0ZXJQdXRJbkdsb2JhbCgic2FsdXRhdGlvbiIsICJoZWxsbyB3b3Js
ZCEiKTsKKyAgICAgICAgc2hvdWxkQmUob3V0ZXJHZXRGcm9tR2xvYmFsKCJzYWx1dGF0aW9uIiks
ICJoZWxsbyB3b3JsZCEiKTsKKyAgICAgICAgc2hvdWxkQmUoaW5uZXJHZXRGcm9tR2xvYmFsKCJz
YWx1dGF0aW9uIiksICJzYXJhdmEiKTsKKworICAgICAgICAvLyB3cmFwcGVkIGZ1bmN0aW9ucyBj
aGVjayBhcmd1bWVudHMgZm9yIHByaW1pdGl2ZS9jYWxsYWJsZS1uZXNzCisgICAgICAgIHNob3Vs
ZFRocm93KCgpID0+IHsgaW5uZXJQdXRJbkdsb2JhbCgidHJlYXN1cmUiLCBuZXcgT2JqZWN0KCkp
OyB9LCBUeXBlRXJyb3IpOworCisgICAgICAgIC8vIGltcG9ydGVkIGZ1bmN0aW9ucyBhcmUgd3Jh
cHBlZCB3aXRoIGNvcnJlY3QgcmV0dXJuIHZhbHVlIGNoZWNrcworICAgICAgICBsZXQgZ2V0QW5P
YmplY3RGbiA9IGF3YWl0IHJlYWxtLmltcG9ydFZhbHVlKGltcG9ydFBhdGgsICJnZXRBbk9iamVj
dCIpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IGdldEFuT2JqZWN0Rm4oKTsgfSwgVHlw
ZUVycm9yKTsKKworICAgICAgICAvLyB0aHJlYWQgYSBmdW5jdGlvbiBpbiBhbmQgb3V0IG9mIGEg
cmVhbG0gdG8gd3JhcCBpdCB1cAorICAgICAgICBpbm5lclB1dEluR2xvYmFsKCJvdXRlci1yZWFs
bS1wdXQiLCBvdXRlclB1dEluR2xvYmFsKTsKKyAgICAgICAgd3JhcHBlZE91dGVyUHV0SW5HbG9i
YWwgPSBpbm5lckdldEZyb21HbG9iYWwoIm91dGVyLXJlYWxtLXB1dCIpOworCisgICAgICAgIC8v
IGl0IHN0aWxsIG1hbmlwdWF0ZXMgdGhlIGNvcnJlY3QgZ2xvYmFsIG9iamVjdCBzdGF0ZQorICAg
ICAgICB3cmFwcGVkT3V0ZXJQdXRJbkdsb2JhbCgidHJlYXN1cmUiLCAic2hpbnkgdGluIHNjcmFw
Iik7CisgICAgICAgIHNob3VsZEJlKG91dGVyR2V0RnJvbUdsb2JhbCgidHJlYXN1cmUiKSwgInNo
aW55IHRpbiBzY3JhcCIpOworCisgICAgICAgIC8vIHdyYXBwZWQgZnVuY3Rpb25zIGNoZWNrIGFy
Z3VtZW50cyBmb3IgcHJpbWl0aXZlL2NhbGxhYmxlLW5lc3MKKyAgICAgICAgc2hvdWxkVGhyb3co
KCkgPT4geyB3cmFwcGVkT3V0ZXJQdXRJbkdsb2JhbCgidHJlYXN1cmUiLCBuZXcgT2JqZWN0KCkp
OyB9LCBUeXBlRXJyb3IpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IHdyYXBwZWRPdXRl
clB1dEluR2xvYmFsKG5ldyBPYmplY3QoKSwgInNoaW55IHRpbiBzY3JhcCIpOyB9LCBUeXBlRXJy
b3IpOworCisgICAgICAgIC8vIG11c3QgYmUgY2FsbGVkIG9uIGEgU2hhZG93UmVhbG0KKyAgICAg
ICAgbGV0IG5vdFJlYWxtID0ge307CisgICAgICAgIHNob3VsZFRocm93KAorICAgICAgICAgICgp
ID0+IHsgcmVhbG0uaW1wb3J0VmFsdWUuY2FsbChub3RSZWFsbSwgaW1wb3J0UGF0aCwgImFuc3dl
ciIpOyB9LAorICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAoZXJyKSA9PiB7IHNob3Vs
ZEJlKCQuZ2xvYmFsT2JqZWN0Rm9yKGVyciksIGdsb2JhbFRoaXMpOyB9CisgICAgICAgICk7Cisg
ICAgfQorCisgICAgLy8gdHJpZ2dlciBKSVQKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIGRvSW1w
b3J0KHJlYWxtLCBzKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gcmVhbG0uaW1wb3J0
VmFsdWUoaW1wb3J0UGF0aCwgcyk7CisgICAgICAgIH0KKworICAgICAgICBub0lubGluZShkb0lt
cG9ydCk7CisKKyAgICAgICAgbGV0IHJlYWxtID0gbmV3IFNoYWRvd1JlYWxtKCk7CisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgICAgICAgICAgbGV0IHJlc3Vs
dCA9IGF3YWl0IGRvSW1wb3J0KHJlYWxtLCAiZ2V0Q2FsbENvdW50Iik7CisgICAgICAgICAgICBz
aG91bGRCZShyZXN1bHQoKSwgMCk7CisgICAgICAgIH0KKyAgICB9Cit9KCkpLmNhdGNoKChlcnJv
cikgPT4geworICAgIHByaW50KFN0cmluZyhlcnJvcikpOworICAgIGFib3J0KCk7Cit9KTsKKwor
eworICAgIHNob3VsZEJlKHR5cGVvZiBTaGFkb3dSZWFsbS5wcm90b3R5cGUuaW1wb3J0VmFsdWUs
ICJmdW5jdGlvbiIpOworCisgICAgbGV0IGltcG9ydFZhbHVlTmFtZSA9IE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoU2hhZG93UmVhbG0ucHJvdG90eXBlLmltcG9ydFZhbHVlLCAibmFt
ZSIpOworICAgIHNob3VsZEJlKGltcG9ydFZhbHVlTmFtZS52YWx1ZSwgImltcG9ydFZhbHVlIik7
CisgICAgc2hvdWxkQmUoaW1wb3J0VmFsdWVOYW1lLmVudW1lcmFibGUsIGZhbHNlKTsKKyAgICBz
aG91bGRCZShpbXBvcnRWYWx1ZU5hbWUud3JpdGFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShp
bXBvcnRWYWx1ZU5hbWUuY29uZmlndXJhYmxlLCB0cnVlKTsKKworICAgIGxldCBpbXBvcnRWYWx1
ZUxlbmd0aCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU2hhZG93UmVhbG0ucHJv
dG90eXBlLmltcG9ydFZhbHVlLCAibGVuZ3RoIik7CisgICAgc2hvdWxkQmUoaW1wb3J0VmFsdWVM
ZW5ndGgudmFsdWUsIDIpOworICAgIHNob3VsZEJlKGltcG9ydFZhbHVlTGVuZ3RoLmVudW1lcmFi
bGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShpbXBvcnRWYWx1ZUxlbmd0aC53cml0YWJsZSwgZmFs
c2UpOworICAgIHNob3VsZEJlKGltcG9ydFZhbHVlTGVuZ3RoLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7
Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zaGFkb3ctcmVhbG0uanMgYi9KU1Rlc3Rz
L3N0cmVzcy9zaGFkb3ctcmVhbG0uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDYyYjg4YzZlMzk1OTk1NjM0ZDdl
ZDhlZjllOTlmMmMzZmQ4ODZhNQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3No
YWRvdy1yZWFsbS5qcwpAQCAtMCwwICsxLDM2IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNl
U2hhZG93UmVhbG09MSIpCisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsK
KyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBl
eHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfWApOworfQorCisvLyBzaGFkb3cg
cmVhbG0gc3BlY3MKK3sKKyAgICBsZXQgc2hhZG93UmVhbG1Qcm9wID0gT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcih0aGlzLCAiU2hhZG93UmVhbG0iKTsKKyAgICBzaG91bGRCZShzaGFk
b3dSZWFsbVByb3AuZW51bWVyYWJsZSwgZmFsc2UpOworICAgIHNob3VsZEJlKHNoYWRvd1JlYWxt
UHJvcC53cml0YWJsZSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1Qcm9wLmNvbmZp
Z3VyYWJsZSwgdHJ1ZSk7CisKKyAgICBsZXQgc2hhZG93UmVhbG1FdmFsdWF0ZSA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU2hhZG93UmVhbG0ucHJvdG90eXBlLCAiZXZhbHVhdGUi
KTsKKyAgICBzaG91bGRCZShzaGFkb3dSZWFsbUV2YWx1YXRlLmVudW1lcmFibGUsIGZhbHNlKTsK
KyAgICBzaG91bGRCZShzaGFkb3dSZWFsbUV2YWx1YXRlLndyaXRhYmxlLCB0cnVlKTsKKyAgICBz
aG91bGRCZShzaGFkb3dSZWFsbUV2YWx1YXRlLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7CisKKyAgICBs
ZXQgc2hhZG93UmVhbG1JbXBvcnRWYWx1ZSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoU2hhZG93UmVhbG0ucHJvdG90eXBlLCAiaW1wb3J0VmFsdWUiKTsKKyAgICBzaG91bGRCZShz
aGFkb3dSZWFsbUltcG9ydFZhbHVlLmVudW1lcmFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShz
aGFkb3dSZWFsbUltcG9ydFZhbHVlLndyaXRhYmxlLCB0cnVlKTsKKyAgICBzaG91bGRCZShzaGFk
b3dSZWFsbUltcG9ydFZhbHVlLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7CisKKyAgICBsZXQgc2hhZG93
UmVhbG1OYW1lID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihTaGFkb3dSZWFsbSwg
Im5hbWUiKTsKKyAgICBzaG91bGRCZShzaGFkb3dSZWFsbU5hbWUudmFsdWUsICJTaGFkb3dSZWFs
bSIpOworICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtTmFtZS5lbnVtZXJhYmxlLCBmYWxzZSk7Cisg
ICAgc2hvdWxkQmUoc2hhZG93UmVhbG1OYW1lLndyaXRhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxk
QmUoc2hhZG93UmVhbG1OYW1lLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7CisKKyAgICBsZXQgc2hhZG93
UmVhbG1MZW5ndGggPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFNoYWRvd1JlYWxt
LCAibGVuZ3RoIik7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1MZW5ndGgudmFsdWUsIDApOwor
ICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtTGVuZ3RoLmVudW1lcmFibGUsIGZhbHNlKTsKKyAgICBz
aG91bGRCZShzaGFkb3dSZWFsbUxlbmd0aC53cml0YWJsZSwgZmFsc2UpOworICAgIHNob3VsZEJl
KHNoYWRvd1JlYWxtTGVuZ3RoLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7Cit9CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwK
aW5kZXggMzEyYzI2ODZmMDA0YmI2MTI0YmE3ZDBlYjRjYmI0OWZlMDEwOGQ4MC4uMjg2YmE2MTg3
MDk1ZDY1MWIwZmNlZDA2OGEzNDc4YzNkY2M0MzY4OSAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0
MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApAQCAtOSw2
ICs5LDcgQEAgZmxhZ3M6CiAgIFRlbXBvcmFsOiB1c2VUZW1wb3JhbAogICBhcnJheS1maW5kLWZy
b20tbGFzdDogdXNlQXJyYXlGaW5kTGFzdE1ldGhvZAogICBPYmplY3QuaGFzT3duOiB1c2VIYXNP
d24KKyAgU2hhZG93UmVhbG06IHVzZVNoYWRvd1JlYWxtCiBza2lwOgogICBmZWF0dXJlczoKICAg
ICAtIEF0b21pY3Mud2FpdEFzeW5jCkBAIC0yMCw3ICsyMSw2IEBAIHNraXA6CiAgICAgLSBqc29u
LW1vZHVsZXMKICAgICAtIGNsYXNzLXN0YXRpYy1ibG9jawogICAgIC0gY2FsbGFibGUtYm91bmRh
cnktcmVhbG1zCi0gICAgLSBTaGFkb3dSZWFsbQogICBwYXRoczoKICAgICAtIHRlc3QvYnVpbHQt
aW5zL1RlbXBvcmFsL0NhbGVuZGFyCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0
YW50CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwgYi9KU1Rl
c3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKaW5kZXggMGQ5NjNkZTNmNDA2MTdlZDc4YTAx
ZDdiMmM3ZWNhYmExOTIxYTIwNi4uNzlhNjcwMmQ0MWMwMmZmZmQ3ZjdmMWY3ZGRkY2MxZDRhMTEz
NGY2YyAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCisrKyBi
L0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbApAQCAtODI1LDYgKzgyNSw5IEBAIHRl
c3QvYnVpbHQtaW5zL1JlZ0V4cC9wcm90b3R5cGUvZXhlYy91LWxhc3RpbmRleC1hZHYuanM6CiB0
ZXN0L2J1aWx0LWlucy9SZWdFeHAvcXVhbnRpZmllci1pbnRlZ2VyLWxpbWl0LmpzOgogICBkZWZh
dWx0OiAnU3ludGF4RXJyb3I6IEludmFsaWQgcmVndWxhciBleHByZXNzaW9uOiBudW1iZXIgdG9v
IGxhcmdlIGluIHt9IHF1YW50aWZpZXInCiAgIHN0cmljdCBtb2RlOiAnU3ludGF4RXJyb3I6IElu
dmFsaWQgcmVndWxhciBleHByZXNzaW9uOiBudW1iZXIgdG9vIGxhcmdlIGluIHt9IHF1YW50aWZp
ZXInCit0ZXN0L2J1aWx0LWlucy9TaGFkb3dSZWFsbS9wcm90b3R5cGUvZXZhbHVhdGUvcmV0dXJu
cy1wcm94eS1jYWxsYWJsZS1vYmplY3QuanM6CisgIGRlZmF1bHQ6ICdUeXBlRXJyb3I6IGluc3Rh
bmNlb2YgY2FsbGVkIG9uIGFuIG9iamVjdCB3aXRoIGFuIGludmFsaWQgcHJvdG90eXBlIHByb3Bl
cnR5LicKKyAgc3RyaWN0IG1vZGU6ICdUeXBlRXJyb3I6IGluc3RhbmNlb2YgY2FsbGVkIG9uIGFu
IG9iamVjdCB3aXRoIGFuIGludmFsaWQgcHJvdG90eXBlIHByb3BlcnR5LicKIHRlc3QvaW50bDQw
Mi9EYXRlVGltZUZvcm1hdC9wcm90b3R5cGUvZm9ybWF0UmFuZ2UvZW4tVVMuanM6CiAgIGRlZmF1
bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzEvMy8yMDE54oCJ4oCT4oCJ
MS81LzIwMTnCuywgwqsxLzMvMjAxOSDigJMgMS81LzIwMTnCuykgdG8gYmUgdHJ1ZScKICAgc3Ry
aWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzEvMy8yMDE54oCJ
4oCT4oCJMS81LzIwMTnCuywgwqsxLzMvMjAxOSDigJMgMS81LzIwMTnCuykgdG8gYmUgdHJ1ZScK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439380</attachid>
            <date>2021-09-27 12:36:59 -0700</date>
            <delta_ts>2021-09-29 03:22:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230602-20210927213658.patch</filename>
            <type>text/plain</type>
            <size>87888</size>
            <attacher name="Phillip Mates">pmates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NzZjYjg0MTUyNWVjZGU0YTQ5NmRmZGFjM2RkY2NlMzliNjNiODEwLi4zNDYwOGQwYTI4Y2Q0ZjBj
OTRiZDAzNDA0MzhmMGFiMTQzMDhjN2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MCBAQAorMjAyMS0wOS0yMSAgUGhpbGxpcCBNYXRlcyAgPHBtYXRlc0BpZ2FsaWEuY29t
PgorCisgICAgICAgIHNoYWRvdyByZWFsbXMgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDYwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGF0aW9uIG9mIHRoZSBT
aGFkb3cgUmVhbG1zIHByb3Bvc2FsIChzdGFnZSAzIGluIFRDMzkpIFsxXQorCisgICAgICAgIE1h
aW4gQVBJcyBhZGRlZCBhcmUKKyAgICAgICAgIC0gYG5ldyBTaGFkb3dSZWFsbSgpYAorICAgICAg
ICAgICBjcmVhdGVzIGFuIG9iamVjdCB0aGF0IGhhcyBpdHMgb3duIGdsb2JhbCBvYmplY3QgYW5k
IG1vZHVsZSBncmFwaC4KKyAgICAgICAgIC0gU2hhZG93UmVhbG0ucHJvdG90eXBlLmV2YWx1YXRl
KHNvdXJjZVRleHQpCisgICAgICAgICAgIHRoaXMgYWxsb3dzIGZvciBldmFsdWF0aW5nIGNvZGUg
aW4gdGhlIGNvbnRleHQgb2YgdGhlIHJlYWxtLCB3aGljaAorICAgICAgICAgICBoYXMgaXRzIG93
biBtb2R1bGUgZ3JhcGggYW5kIGdsb2JhbCBvYmplY3QuCisgICAgICAgICAtIFNoYWRvd1JlYWxt
LnByb3RvdHlwZS5pbXBvcnRWYWx1ZShzcGVjaWZpZXIsIGV4cG9ydE5hbWUpCisgICAgICAgICAg
IHRoaXMgYWxsb3dzIGltcG9ydGluZyBtb2R1bGUgZXhwb3J0cyBpbiB0aGUgdGhlIGNvbnRleHQg
b2YgdGhlCisgICAgICAgICAgIHJlYWxtLCB3aGljaCBoYXMgaXRzIG93biBtb2R1bGUgZ3JhcGgg
YW5kIGdsb2JhbCBvYmplY3QuCisKKyAgICAgICAgVGhlIG1haW4gZGV0YWlsIG9mIHRoZSBTaGFk
b3cgUmVhbG0gaW1wbGVtZW50YXRpb24gaXMgdGhhdCB2YWx1ZXMKKyAgICAgICAgcGFzc2VkIGJl
dHdlZW4gcmVhbG1zIG11c3QgYmUgZWl0aGVyIHByaW1pdGl2ZXMgb3Igd3JhcHBlZCBjYWxsYWJs
ZXMuCisgICAgICAgIFdyYXBwZWQgY2FsbGFibGVzIHRoZW1zZWx2ZXMgYXJlIGNhbGxhYmxlcyB0
aGF0IGNoZWNrIHRoYXQgdGhlaXIKKyAgICAgICAgYXJndW1lbnRzIGFuZCByZXR1cm4gdmFsdWVz
IGFyZSBhbHNvIGVpdGhlciBwcmltaXRpdmVzIG9yIHdyYXBwZWQKKyAgICAgICAgY2FsbGFibGVz
LiBUaGlzIGRldGFpbCBpcyBpbXBsZW1lbnRlZCB2aWEgSlMgYnVpbHRpbnMgKyBhIGZldyBuZXcK
KyAgICAgICAgaW50cmluc2ljcy4KKworICAgICAgICBDYW4gYmUgZW5hYmxlZCB1c2luZyBgLS11
c2VTaGFkb3dSZWFsbT10cnVlYAorCisgICAgICAgIFsxXTogaHR0cHM6Ly9naXRodWIuY29tL3Rj
MzkvcHJvcG9zYWwtc2hhZG93cmVhbG0KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogYnVpbHRpbnMvU2hhZG93
UmVhbG1Qcm90b3R5cGUuanM6IEFkZGVkLgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS53cmFwKToK
KyAgICAgICAgKGV2YWx1YXRlKToKKyAgICAgICAgKGltcG9ydFZhbHVlKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgICogYnl0ZWNvZGUv
TGlua1RpbWVDb25zdGFudC5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdElzU2hhZG93UmVh
bG0pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAq
IGpzYy5jcHA6CisgICAgICAgIChKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAq
IHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9JbmRp
cmVjdEV2YWxFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0
YWJsZTo6Y3JlYXRlSW1wbCk6CisgICAgICAgIChKU0M6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGU6
OmNyZWF0ZVNhZmUpOgorICAgICAgICAoSlNDOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVu
SW1wbCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjcmVhdGVXaXRoQ3VzdG9tTWV0
aG9kVGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNoYWRvd1JlYWxtUHJvdG90eXBlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNoYWRvd1JlYWxtU3RydWN0dXJlIGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9PcHRpb25z
TGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5jcHA6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpTaGFkb3dSZWFsbUNvbnN0cnVjdG9yOjpTaGFkb3dSZWFsbUNv
bnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6U2hhZG93UmVhbG1Db25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RTaGFkb3dSZWFsbSk6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9TaGFk
b3dSZWFsbUNvbnN0cnVjdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaC4KKyAgICAgICAgKiBydW50aW1lL1NoYWRv
d1JlYWxtT2JqZWN0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlNoYWRvd1JlYWxtT2JqZWN0
OjpTaGFkb3dSZWFsbU9iamVjdCk6CisgICAgICAgIChKU0M6OlNoYWRvd1JlYWxtT2JqZWN0Ojp2
aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgIChKU0M6OlNoYWRvd1JlYWxtT2JqZWN0OjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpTaGFkb3dSZWFsbU9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvU2hhZG93UmVhbG1PYmplY3QuaDogQ29waWVkIGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oLgorICAgICAg
ICAqIHJ1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6U2hhZG93UmVhbG1Qcm90b3R5cGU6OlNoYWRvd1JlYWxtUHJvdG90eXBlKToKKyAgICAgICAg
KEpTQzo6U2hhZG93UmVhbG1Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1NoYWRvd1Jl
YWxtUHJvdG90eXBlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaC4KKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAg
ICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMjEtMDkt
MjMgIFBoaWxpcCBDaGltZW50byAgPHBjaGltZW50b0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFZh
cmlvdXMgdHdlYWtzIGluIHByZXBhcmF0aW9uIGZvciBUZW1wb3JhbC5JbnN0YW50CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMmZkMjBkN2RlZjkyYjY0ZDE5NGE3NTRhZWQx
ZjFhY2JiOGJlOWE4Yy4uY2FjMjkyNWU1YTA4NjNlNzMxYmVkYjY5ZmNmNTRhMmIxMzY0ZWJmNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTAzLDYgKzEwMyw4IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL1JlZ0V4cFBy
b3RvdHlwZS5jcHAKICAgICBydW50aW1lL1JlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNw
cAogICAgIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvU2hhZG93UmVhbG1P
YmplY3QuY3BwCisgICAgcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5jcHAKICAgICBydW50
aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNw
cAogICAgIHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCkBAIC0zNjksNiArMzcxLDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vYnVpbHRpbnMvUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuanMKICAgICAke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvU2V0SXRlcmF0b3JQcm90b3R5cGUuanMKICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvU2V0UHJvdG90eXBlLmpzCisgICAgJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1NoYWRvd1JlYWxtUHJvdG90eXBlLmpzCiAgICAgJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1N0cmluZ0NvbnN0cnVjdG9yLmpzCiAgICAgJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmpzCiAg
ICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlwZS5qcwpAQCAt
MTE0Miw2ICsxMTQ1LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hF
QURFUlMKICAgICBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUvU2NyaXB0
RmV0Y2hQYXJhbWV0ZXJzLmgKICAgICBydW50aW1lL1NjcmlwdEZldGNoZXIuaAorICAgIHJ1bnRp
bWUvU2hhZG93UmVhbG1PYmplY3QuaAogICAgIHJ1bnRpbWUvU2xvd1BhdGhGdW5jdGlvbi5oCiAg
ICAgcnVudGltZS9TbG93UGF0aFJldHVyblR5cGUuaAogICAgIHJ1bnRpbWUvU21hbGxTdHJpbmdz
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZWNiY2U2
N2Y3OGMwMDM0YzE2NmY1MGQ1ODkyYTZmMDhjNWRhNDBkNi4uYmNmM2VlYTI5Y2U3YmIyMDc3ODlh
NWQ5YzIxMzdhZWNkZGFhOWNhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKQEAgLTEyMiw2ICsxMjIsNyBAQCBKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VS
Q0VTID0gXAogICAgICR7SmF2YVNjcmlwdENvcmV9L2J1aWx0aW5zL1JlZ0V4cFN0cmluZ0l0ZXJh
dG9yUHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TZXRJdGVy
YXRvclByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvU2V0UHJv
dG90eXBlLmpzIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TaGFkb3dSZWFsbVBy
b3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvU3RyaW5nQ29uc3Ry
dWN0b3IuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1N0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TdHJpbmdQcm90
b3R5cGUuanMgXApAQCAtMTg3LDYgKzE4OCw3IEBAIE9CSkVDVF9MVVRfSEVBREVSUyA9IFwKICAg
ICBSZWZsZWN0T2JqZWN0Lmx1dC5oIFwKICAgICBSZWdFeHBDb25zdHJ1Y3Rvci5sdXQuaCBcCiAg
ICAgU2V0UHJvdG90eXBlLmx1dC5oIFwKKyAgICBTaGFkb3dSZWFsbVByb3RvdHlwZS5sdXQuaCBc
CiAgICAgU3RyaW5nQ29uc3RydWN0b3IubHV0LmggXAogICAgIFN0cmluZ1Byb3RvdHlwZS5sdXQu
aCBcCiAgICAgU3ltYm9sQ29uc3RydWN0b3IubHV0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBlZTg2YmE4ZGMwYmI5Y2FiZjRiMTM0Y2IxMzI0ZDI0MTZmY2NmOWE3Li42NGVj
MDFjMzhkYmY5YzM2ODIzNzZkOGE4YjkxOGFlZWNhYjE5NmM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTI1Myw2ICsxMjUzLDkgQEAKIAkJODYwMTYxRTMwRjNBODNDMTAwRjg0
NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2MURGMEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJODYwMTYxRTUwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2
XzY0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjAx
NjFFMTBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjAxNjFFNjBGM0E4M0Mx
MDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2MUUyMEYzQTgzQzEwMEY4NDcxMCAvKiBN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTg2MDI5NjAyMjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFs
bUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NjAyOTVGQzI2RkI1NTJDMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2MDI5
NjA0MjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbU9iamVjdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMjk1RkUyNkZCNTUyRDAwNzhFQjYy
IC8qIFNoYWRvd1JlYWxtT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJODYwMjk2MDUyNkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxt
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NjAyOTVGRjI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Qcm90b3R5cGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjA2RERFQTE4
REE0NEFCMDBBMzgzRDAgLyogSWRlbnRpZmllcklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDZEREU5MThEQTQ0QUIwMEEzODNEMCAvKiBJ
ZGVudGlmaWVySW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTg2MEJEODAxMTQ4RUE2RjIwMDExMkIyRiAvKiBJbnRyaW5zaWMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkY2NDJBMTQ4REIy
QjUwMDRERTM2QSAvKiBJbnRyaW5zaWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk4NjEyRTRDRDE1MjM4OUVDMDBDODM2QkUgLyogTWF0Y2hSZXN1
bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MTJF
NENCMTUyMjkxODQwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00MjA5LDYgKzQyMTIsMTIgQEAKIAkJODYw
MTYxREYwRjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjAxNjFFMTBGM0E4M0MxMDBGODQ3MTAgLyogTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYwMTYx
RTIwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MDI5NUZBMjZGQjU1MkMwMDc4RUI2MiAvKiBTaGFk
b3dSZWFsbVByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTaGFkb3dSZWFsbVByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTg2MDI5NUZCMjZGQjU1MkMwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbU9iamVjdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFkb3dSZWFsbU9iamVjdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MDI5NUZDMjZGQjU1MkMwMDc4RUI2MiAvKiBT
aGFkb3dSZWFsbUNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNoYWRvd1JlYWxtQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODYwMjk1RkQyNkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtQ29uc3RydWN0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhZG93UmVhbG1Db25zdHJ1Y3Rv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MDI5NUZFMjZGQjU1MkQwMDc4
RUI2MiAvKiBTaGFkb3dSZWFsbU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTaGFkb3dSZWFsbU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
NjAyOTVGRjI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Qcm90b3R5cGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhZG93UmVhbG1Qcm90b3R5cGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYwNEY0RjIxNDNBNkM0NDAwQjI5NUY1IC8qIENoYW5n
ZUxvZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gQ2hhbmdlTG9nOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4NjA2RERFOTE4REE0NEFCMDBBMzgzRDAgLyogSWRlbnRpZmllcklubGluZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWRlbnRpZmllcklubGluZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYxMkU0Q0IxNTIyOTE4NDAwQzgzNkJFIC8q
IE1hdGNoUmVzdWx0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGNoUmVz
dWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03OTQ3LDYgKzc5NTYsMTIgQEAK
IAkJCQlBNzkwREQ2ODE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0b3JQcm90b3R5cGUuaCAq
LywKIAkJCQlBNzI5OUQ5RjE3RDEyODQ4MDA1RjVGRjkgLyogU2V0UHJvdG90eXBlLmNwcCAqLywK
IAkJCQlBNzI5OURBMDE3RDEyODQ4MDA1RjVGRjkgLyogU2V0UHJvdG90eXBlLmggKi8sCisJCQkJ
ODYwMjk1RkQyNkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtQ29uc3RydWN0b3IuY3BwICov
LAorCQkJCTg2MDI5NUZDMjZGQjU1MkMwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbUNvbnN0cnVjdG9y
LmggKi8sCisJCQkJODYwMjk1RkIyNkZCNTUyQzAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtT2JqZWN0
LmNwcCAqLywKKwkJCQk4NjAyOTVGRTI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1PYmpl
Y3QuaCAqLywKKwkJCQk4NjAyOTVGQTI2RkI1NTJDMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Qcm90
b3R5cGUuY3BwICovLAorCQkJCTg2MDI5NUZGMjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFs
bVByb3RvdHlwZS5oICovLAogCQkJCTBGMkI2NkQ2MTdCNkI1QUIwMEE3QUUzRiAvKiBTaW1wbGVU
eXBlZEFycmF5Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJMEYyQjY2RDcxN0I2QjVBQjAwQTdBRTNG
IC8qIFNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmggKi8sCiAJCQkJRkU4QzAzMTEyNjRBNjkx
MDAwMUE0NEFEIC8qIFNsb3dQYXRoRnVuY3Rpb24uaCAqLywKQEAgLTEwNjUzLDYgKzEwNjY4LDkg
QEAKIAkJCQkwRkVFOTg0MTFBODg2NUI3MDA3NTRFOTMgLyogU2V0dXBWYXJhcmdzRnJhbWUuaCBp
biBIZWFkZXJzICovLAogCQkJCURDMTdFODE4MUM5QzkxRDkwMDhBNkFCMyAvKiBTaGFkb3dDaGlj
a2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQlEQzE3RTgxOTFDOUM5MURCMDA4QTZBQjMgLyogU2hh
ZG93Q2hpY2tlbklubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2MDI5NjAyMjZGQjU1MkQw
MDc4RUI2MiAvKiBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk4
NjAyOTYwNDI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1PYmplY3QuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTg2MDI5NjA1MjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbVByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzMDIyRDMxRTNENzNBNTAwQkFDNDkzIC8qIFNpZ2ls
bENyYXNoQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNEQ4Qzc4MUZDQTNDRkEwMDFE
MzJBQyAvKiBTaW1wbGVNYXJraW5nQ29uc3RyYWludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
QjY3MDUxN0I2QjVBQjAwQTdBRTNGIC8qIFNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA4NDZlOWVlNzVmZWQw
NTQ3NTU2YzRiZmQ0YTI2MWQ4MGQ1OWFmYmQ3Li41OTEwZmVmZWYzN2FmMWIxODVhNGZjNWQ0Mzlh
MzdkMzkwZmI3OWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC05NjksNiArOTY5
LDkgQEAgcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcAogcnVudGltZS9Qcm94eU9iamVjdC5j
cHAKIHJ1bnRpbWUvUHJveHlSZXZva2UuY3BwCiBydW50aW1lL1JhbmRvbWl6aW5nRnV6emVyQWdl
bnQuY3BwCitydW50aW1lL1NoYWRvd1JlYWxtT2JqZWN0LmNwcAorcnVudGltZS9TaGFkb3dSZWFs
bUNvbnN0cnVjdG9yLmNwcAorcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5jcHAKIHJ1bnRp
bWUvUmVmbGVjdE9iamVjdC5jcHAKIHJ1bnRpbWUvUmVnRXhwLmNwcAogcnVudGltZS9SZWdFeHBD
YWNoZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMu
aAppbmRleCBkY2FmMGJhNmNhMzE4ZjE4MDI5MmNiYThkN2RjMDBmYTU3NzkxZWEwLi40Yjg2NTA2
NmVjNGE2MzE4ZGM1ZTc3ZjMzYTZiMTZkNmM4MzAzN2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC02Miw2ICs2Miw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIG1hY3JvKE51bWJlcikgXAogICAgIG1hY3JvKEFycmF5KSBcCiAgICAgbWFj
cm8oQXJyYXlCdWZmZXIpIFwKKyAgICBtYWNybyhTaGFkb3dSZWFsbSkgXAogICAgIG1hY3JvKFJl
Z0V4cCkgXAogICAgIG1hY3JvKG1pbikgXAogICAgIG1hY3JvKHRydW5jKSBcCkBAIC0xMTUsNiAr
MTE2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oYXN5bmNHZW5lcmF0b3JRdWV1ZUl0
ZW1OZXh0KSBcCiAgICAgbWFjcm8oZGF0ZVRpbWVGb3JtYXQpIFwKICAgICBtYWNybyh0aGlzKSBc
CisgICAgbWFjcm8oaW1wb3J0SW5SZWFsbSkgXAorICAgIG1hY3JvKGV2YWxJblJlYWxtKSBcCiAg
ICAgbWFjcm8odGhpc1RpbWVWYWx1ZSkgXAogICAgIG1hY3JvKG5ld1RhcmdldExvY2FsKSBcCiAg
ICAgbWFjcm8oZGVyaXZlZENvbnN0cnVjdG9yKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvU2hhZG93UmVhbG1Qcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvU2hhZG93UmVhbG1Qcm90b3R5cGUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDdh
NGI5ODU2NzRmNjI5N2Y4YTI4ZTE4NWUxZTg2M2NiYzgwYjViZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TaGFkb3dSZWFsbVByb3RvdHlwZS5qcwpA
QCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK0BnbG9iYWxQcml2YXRlCitmdW5jdGlvbiB3cmFwKHRhcmdldCkKK3sKKyAgICAi
dXNlIHN0cmljdCI7CisKKyAgICBpZiAoQGlzQ2FsbGFibGUodGFyZ2V0KSkgeworICAgICAgICBs
ZXQgd3JhcHBlZCA9ICguLi5hcmdzKSA9PiB7CisgICAgICAgICAgICB2YXIgd3JhcHBlZEFyZ3Mg
PSBhcmdzLkBtYXAoQHdyYXApCisgICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0YXJnZXQuQGFw
cGx5KEB1bmRlZmluZWQsIHdyYXBwZWRBcmdzKTsKKyAgICAgICAgICAgIHJldHVybiBAd3JhcChy
ZXN1bHQpOworICAgICAgICB9OworICAgICAgICBkZWxldGUgd3JhcHBlZFsnbmFtZSddOworICAg
ICAgICBkZWxldGUgd3JhcHBlZFsnbGVuZ3RoJ107CisgICAgICAgIHJldHVybiB3cmFwcGVkOwor
ICAgIH0gZWxzZSBpZiAoQGlzT2JqZWN0KHRhcmdldCkpIHsKKyAgICAgICAgQHRocm93VHlwZUVy
cm9yKCJ2YWx1ZSBwYXNzaW5nIGJldHdlZW4gcmVhbG1zIG11c3QgYmUgY2FsbGFibGUgb3IgcHJp
bWl0aXZlIik7CisgICAgfQorICAgIHJldHVybiB0YXJnZXQ7Cit9CisKK2Z1bmN0aW9uIGV2YWx1
YXRlKHNvdXJjZVRleHQpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNTaGFk
b3dSZWFsbSh0aGlzKSkKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJgJVNoYWRvd1JlYWxtJS5l
dmFsdWF0ZSByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBhIFNoYWRvd1JlYWxtIGluc3RhbmNlIik7
CisKKyAgICBpZiAodHlwZW9mIHNvdXJjZVRleHQgIT09ICdzdHJpbmcnKQorICAgICAgICBAdGhy
b3dUeXBlRXJyb3IoImAlU2hhZG93UmVhbG0lLmV2YWx1YXRlIHJlcXVpcmVzIHRoYXQgdGhlIHxz
b3VyY2VUZXh0fCBhcmd1bWVudCBiZSBhIHN0cmluZyIpOworCisgICAgbGV0IHJlc3VsdCA9IEBl
dmFsSW5SZWFsbSh0aGlzLCBzb3VyY2VUZXh0KQorICAgIHJldHVybiBAd3JhcChyZXN1bHQpOwor
fQorCitmdW5jdGlvbiBpbXBvcnRWYWx1ZShzcGVjaWZpZXIsIGV4cG9ydE5hbWUpCit7CisgICAg
InVzZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNTaGFkb3dSZWFsbSh0aGlzKSkKKyAgICAgICAg
QHRocm93VHlwZUVycm9yKCJgJVNoYWRvd1JlYWxtJS5pbXBvcnRWYWx1ZSByZXF1aXJlcyB0aGF0
IHx0aGlzfCBiZSBhIFNoYWRvd1JlYWxtIGluc3RhbmNlIik7CisKKyAgICBsZXQgZXhwb3J0TmFt
ZVN0ciA9IEB0b1N0cmluZyhleHBvcnROYW1lKTsKKyAgICBsZXQgc3BlY2lmaWVyU3RyID0gQHRv
U3RyaW5nKHNwZWNpZmllcik7CisKKyAgICBsZXQgbG9va3VwQmluZGluZyA9IChtb2R1bGUpID0+
IHsKKyAgICAgICAgbGV0IGxvb2t1cCA9IG1vZHVsZVtleHBvcnROYW1lU3RyXQorICAgICAgICBp
ZiAobG9va3VwID09PSBAdW5kZWZpbmVkKQorICAgICAgICAgICAgQHRocm93VHlwZUVycm9yKCIl
U2hhZG93UmVhbG0lLmltcG9ydFZhbHVlIHJlcXVpcmVzIHxleHBvcnROYW1lfCB0byBleGlzdCBp
biB0aGUgfHNwZWNpZmllcnwiKTsKKworICAgICAgICByZXR1cm4gQHdyYXAobG9va3VwKTsKKyAg
ICB9OworCisgICAgbGV0IGNyb3NzUmVhbG1UaHJvdyA9IChlcnJvcikgPT4geworICAgICAgICAv
LyByZS10aHJvdyBiZWNhdXNlIGltcG9ydCBpc3N1ZXMgcmFpc2UgZXJyb3JzIHVzaW5nIHRoZSBy
ZWFsbSdzIGdsb2JhbCBvYmplY3QKKyAgICAgICAgQHRocm93VHlwZUVycm9yKEB0b1N0cmluZyhl
cnJvcikpOworICAgIH07CisKKyAgICByZXR1cm4gQGltcG9ydEluUmVhbG0odGhpcywgc3BlY2lm
aWVyU3RyKS5AdGhlbihsb29rdXBCaW5kaW5nLCBjcm9zc1JlYWxtVGhyb3cpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNp
Y1JlZ2lzdHJ5LmgKaW5kZXggODU1NTk3Nzg2NzA3MmYyZmZmNjdhNjU1OWFjZDlhNDU0ZDUyZDI3
Ny4uYjMyY2NkYWY0M2E2NjJjODc3OTU1ODA3ZjZkNDFmMTI1OTE5NGY1MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnku
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeS5oCkBAIC02Niw2ICs2Niw3IEBAIGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6
IGludDMyX3Q7CiAgICAgbWFjcm8oaXNSZWdFeHBPYmplY3QpIFwKICAgICBtYWNybyhpc01hcCkg
XAogICAgIG1hY3JvKGlzU2V0KSBcCisgICAgbWFjcm8oaXNTaGFkb3dSZWFsbSkgXAogICAgIG1h
Y3JvKGlzU3RyaW5nSXRlcmF0b3IpIFwKICAgICBtYWNybyhpc0FycmF5SXRlcmF0b3IpIFwKICAg
ICBtYWNybyhpc01hcEl0ZXJhdG9yKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAppbmRleCA1ZjMyYWY4MjBlNDVmYTQ5ZGM5MmZjNDU2
N2FhZjQwMTUzY2JlYWJkLi4wMTUzOTQ4MmUyOWI1ZGFhNDczYzEwY2RkNWFlNjU5YTg0NDFiMjA0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25z
dGFudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0
YW50LmgKQEAgLTYzLDYgKzYzLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgdihpbnN0
YW5jZU9mLCBudWxscHRyKSBcCiAgICAgdihCdWlsdGluTG9nLCBudWxscHRyKSBcCiAgICAgdihC
dWlsdGluRGVzY3JpYmUsIG51bGxwdHIpIFwKKyAgICB2KFNoYWRvd1JlYWxtLCBudWxscHRyKSBc
CiAgICAgdihSZWdFeHAsIG51bGxwdHIpIFwKICAgICB2KG1pbiwgbnVsbHB0cikgXAogICAgIHYo
dHJ1bmMsIG51bGxwdHIpIFwKQEAgLTc4LDYgKzc5LDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7
CiAgICAgdihob3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIsIG51bGxwdHIpIFwKICAgICB2KFNl
dCwgbnVsbHB0cikgXAogICAgIHYodGhpc1RpbWVWYWx1ZSwgbnVsbHB0cikgXAorICAgIHYoaW1w
b3J0SW5SZWFsbSwgbnVsbHB0cikgXAorICAgIHYoZXZhbEluUmVhbG0sIG51bGxwdHIpIFwKICAg
ICB2KGlzQ29uc3RydWN0b3IsIG51bGxwdHIpIFwKICAgICB2KHNhbWVWYWx1ZSwgbnVsbHB0cikg
XAogICAgIHYocmVnRXhwUHJvdG9GbGFnc0dldHRlciwgbnVsbHB0cikgXApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmlu
ZGV4IDhmYTA0Nzg4N2EwNGZiNmIzMTMxNDAzYTJiMTc2NmEzNWVhYWNkZGMuLmVhNjQyMDFmMzU1
ZmQ4N2ZmMzRmN2I5NDg4NzcyNjM0ZWNmZjIxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTg4Myw2ICs4
ODMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzUmVnRXhw
T2JqZWN0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXND
ZWxsV2l0aFR5cGUoZHN0LCBzcmMsIFJlZ0V4cE9iamVjdFR5cGUpOyB9CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRJc01hcChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1
cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU01hcFR5cGUpOyB9CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRJc1NldChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyBy
ZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU1NldFR5cGUpOyB9CisgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRJc1NoYWRvd1JlYWxtKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIFNoYWRvd1JlYWxt
VHlwZSk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzU3RyaW5nSXRlcmF0b3IoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShk
c3QsIHNyYywgSlNTdHJpbmdJdGVyYXRvclR5cGUpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRJc0FycmF5SXRlcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0
dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgSlNBcnJheUl0ZXJhdG9yVHlwZSk7IH0K
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzTWFwSXRlcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgSlNN
YXBJdGVyYXRvclR5cGUpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggM2I4YTY2ZmViZDJkMjg0MjFmMjdiNDlhZTli
Njc3MDI5OGEyNjA3MS4uMTMyMDg5MDZhNjQ4OWMwNDgxYzI5NjU3NTMxMmI2M2FlNTNkMDA1YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcApAQCAtMTg5NCw2ICsxODk0LDcgQEAgQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRf
Q0hFQ0soaXNQcm9taXNlLCBJc1Byb21pc2UpCiBDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9D
SEVDSyhpc1JlZ0V4cE9iamVjdCwgSXNSZWdFeHBPYmplY3QpCiBDUkVBVEVfSU5UUklOU0lDX0ZP
Ul9CUkFORF9DSEVDSyhpc01hcCwgSXNNYXApCiBDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9D
SEVDSyhpc1NldCwgSXNTZXQpCitDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSyhpc1No
YWRvd1JlYWxtLCBJc1NoYWRvd1JlYWxtKQogQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hF
Q0soaXNTdHJpbmdJdGVyYXRvciwgSXNTdHJpbmdJdGVyYXRvcikKIENSRUFURV9JTlRSSU5TSUNf
Rk9SX0JSQU5EX0NIRUNLKGlzQXJyYXlJdGVyYXRvciwgSXNBcnJheUl0ZXJhdG9yKQogQ1JFQVRF
X0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0soaXNNYXBJdGVyYXRvciwgSXNNYXBJdGVyYXRvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMTcwOTZkYTc2ZmVjMWY2ZDBhZGI2YmU5OGY3N2FlMDM5
YTI1MmQ1OS4uMGM5MDViNTkyMDc4MjA5NTg2NDhiZmNhMzhjM2Y5MTBlNTdmOTRjZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKQEAgLTM1OSw2ICszNTksNyBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckNyZWF0ZVJlYWxtKTsKIHN0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyRXZhbFNjcmlwdCk7CiBzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckdDKTsKIHN0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyQ2xlYXJLZXB0T2JqZWN0cyk7CitzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckdsb2JhbE9iamVjdEZvcik7
CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckFnZW50U3Rh
cnQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJBZ2Vu
dFJlY2VpdmVCcm9hZGNhc3QpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVu
Y3Rpb25Eb2xsYXJBZ2VudFJlcG9ydCk7CkBAIC02MzgsNiArNjM5LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgYWRkRnVuY3Rpb24odm0sIGRvbGxhciwgImV2YWxTY3JpcHQiLCBmdW5jdGlvbkRvbGxh
ckV2YWxTY3JpcHQsIDEsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
Tm9uZSkpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgZG9sbGFyLCAiZ2MiLCBmdW5jdGlvbkRv
bGxhckdDLCAwLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6Ok5vbmUp
KTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sIGRvbGxhciwgImNsZWFyS2VwdE9iamVjdHMiLCBm
dW5jdGlvbkRvbGxhckNsZWFyS2VwdE9iamVjdHMsIDAsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkpOworICAgICAgICBhZGRGdW5jdGlvbih2bSwgZG9sbGFy
LCAiZ2xvYmFsT2JqZWN0Rm9yIiwgZnVuY3Rpb25Eb2xsYXJHbG9iYWxPYmplY3RGb3IsIDEsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkpOwogICAgICAgICAK
ICAgICAgICAgZG9sbGFyLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJnbG9iYWwiKSwgZ2xvYmFsVGhpcygpKTsKICAgICAgICAgZG9sbGFyLT5wdXREaXJlY3RDdXN0
b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIklzSFRNTEREQSIpLApA
QCAtMjA0Nyw2ICsyMDQ5LDIyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRv
bGxhckNsZWFyS2VwdE9iamVjdHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAorSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGZ1bmN0aW9uRG9sbGFyR2xvYmFsT2JqZWN0Rm9yLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgIk5vdCBlbm91Z2ggYXJndW1lbnRzIl9zKSkpOworICAg
IEpTVmFsdWUgYXJnID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoYXJnLmlzQ2Vs
bCgpKSB7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYXJnLnN0cnVjdHVyZU9yTnVs
bCh2bSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3RydWN0dXJlLT5nbG9iYWxP
YmplY3QoKS0+Z2xvYmFsVGhpcygpKTsKKyAgICB9CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworfQorCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rp
b25Eb2xsYXJBZ2VudFN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA2ODVkN2ZjZDkwZGEzZDYw
NzIwNGQ3MTBlMjE2NGZlOWYxYzU5ZTYyLi5jMGY2NTZlZjA2MzA3ODVhNGNmYjQyOTcwZmNhMWJh
MDdjZmI3ZmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC01
MDk2LDcgKzUwOTYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNz
aW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICAgICAgbmV3
Q291bnQtLTsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGZhaWxJZlRydWUobWF0Y2goSURFTlQpLCAiXCJuZXcuXCIgY2FuIG9ubHkgZm9sbG93ZWQg
d2l0aCB0YXJnZXQiKTsKKyAgICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goSURFTlQpLCAiXCJu
ZXcuXCIgY2FuIG9ubHkgYmUgZm9sbG93ZWQgd2l0aCB0YXJnZXQiKTsKICAgICAgICAgICAgIGZh
aWxEdWVUb1VuZXhwZWN0ZWRUb2tlbigpOwogICAgICAgICB9CiAgICAgfQpAQCAtNTEzMSw3ICs1
MTMxLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgICAgICAgICBiYXNlID0g
Y29udGV4dC5jcmVhdGVJbXBvcnRNZXRhRXhwcihsb2NhdGlvbiwgY3JlYXRlUmVzb2x2ZUFuZFVz
ZVZhcmlhYmxlKGNvbnRleHQsICZtX3ZtLnByb3BlcnR5TmFtZXMtPm1ldGFQcml2YXRlTmFtZSwg
ZmFsc2UsIGV4cHJlc3Npb25TdGFydCwgbG9jYXRpb24pKTsKICAgICAgICAgICAgICAgICBuZXh0
KCk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGZhaWxJZlRydWUobWF0
Y2goSURFTlQpLCAiXCJpbXBvcnQuXCIgY2FuIG9ubHkgZm9sbG93ZWQgd2l0aCBtZXRhIik7Cisg
ICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChJREVOVCksICJcImltcG9ydC5cIiBjYW4g
b25seSBiZSBmb2xsb3dlZCB3aXRoIG1ldGEiKTsKICAgICAgICAgICAgICAgICBmYWlsRHVlVG9V
bmV4cGVjdGVkVG9rZW4oKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCA0
MDYzMzFjYWRlOTA1OGM0M2M0NjhiOGNlZWZhNTNmMmVlYjhjYzEzLi4zODc1Y2Y2YjYzYzBkMzEy
YWIyNTJkNjBlMGVmOTBiODM0MzI1NTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0xMDUsNiArMTA1LDcgQEAgdm9pZCBBcnJh
eVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWR1Y2VQdWJsaWNOYW1lKCksIGFycmF5UHJv
dG90eXBlUmVkdWNlQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRf
VFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWR1Y2VSaWdodFB1
YmxpY05hbWUoKSwgYXJyYXlQcm90b3R5cGVSZWR1Y2VSaWdodENvZGVHZW5lcmF0b3IsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0Nf
QlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkubWFwUHVibGljTmFtZSgpLCBhcnJheVByb3RvdHlwZU1hcENvZGVHZW5lcmF0
b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsK
KyAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwUHJpdmF0ZU5hbWUoKSwgYXJyYXlQcm90b3R5cGVNYXBD
b2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSk7CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFO
U0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQdWJsaWNOYW1lKCks
IGFycmF5UHJvdG9GdW5jS2V5cywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIDAsIEFycmF5S2V5c0ludHJpbnNpYyk7CiAgICAgSlNDX05BVElWRV9J
TlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCksIGFycmF5UHJvdG9GdW5jRW50cmllcywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDAsIEFy
cmF5RW50cmllc0ludHJpbnNpYyk7CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZpbmRQdWJsaWNOYW1l
KCksIGFycmF5UHJvdG90eXBlRmluZENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDQwYzE1OWU4ZDdjNTQwNDlm
ZDk4YzhhNjY2OGE2NGE4ZGY0ZWEzNjQuLjc4MjhkMDA4YTg1MzQ2MWU0OGUzNmQyZmJlYTYxYzcw
OTU3NmRkYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaApAQCAtNTIsNiArNTIsNyBAQAogICAgIG1hY3JvKE9iamVjdCkgXAogICAg
IG1hY3JvKFBsdXJhbFJ1bGVzKSBcCiAgICAgbWFjcm8oUHJvbWlzZSkgXAorICAgIG1hY3JvKFNo
YWRvd1JlYWxtKSBcCiAgICAgbWFjcm8oUmVmbGVjdCkgXAogICAgIG1hY3JvKFJlZ0V4cCkgXAog
ICAgIG1hY3JvKFJlbGF0aXZlVGltZUZvcm1hdCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAppbmRleCA3NDk4
MjA1MDE4Y2RlZjhmM2Y4MzY3YjRiYmUyZWY3OWRiZDE3YzFmLi4yOGIzYmRhZDRjMDMwMjUyNWNi
ZmVkNTg4NWMxMzAzM2Y0OWJjOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcApAQCAtMzQsNyArMzQsOSBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogSW5kaXJlY3RF
dmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlw
ZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRl
eHRUeXBlKQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBFcnJvckhhbmRsZXJGdW5jdG9yPgoraW5saW5l
IEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZUlt
cGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5j
dGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIEVycm9ySGFuZGxl
ckZ1bmN0b3IgZXJyb3JIYW5kbGVyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC00OSw3ICs1
MSw3IEBAIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNy
ZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAKICAgICBQYXJzZXJFcnJvciBlcnJvcjsK
ICAgICBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUgPSBn
bG9iYWxPYmplY3QtPmRlZmF1bHRDb2RlR2VuZXJhdGlvbk1vZGUoKTsKLSAgICAKKwogICAgIFVu
bGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRFdmFsQ29kZSA9IHZtLmNvZGVDYWNoZSgpLT5n
ZXRVbmxpbmtlZEV2YWxDb2RlQmxvY2soCiAgICAgICAgIHZtLCBleGVjdXRhYmxlLCBleGVjdXRh
YmxlLT5zb3VyY2UoKSwgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIGNvZGVHZW5lcmF0
aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSk7CiAKQEAgLTU3LDcgKzU5LDcgQEAgSW5k
aXJlY3RFdmFsRXhlY3V0YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpLT5z
b3VyY2VQYXJzZWQoZ2xvYmFsT2JqZWN0LCBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigp
LCBlcnJvci5saW5lKCksIGVycm9yLm1lc3NhZ2UoKSk7CiAKICAgICBpZiAoZXJyb3IuaXNWYWxp
ZCgpKSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvci50
b0Vycm9yT2JqZWN0KGdsb2JhbE9iamVjdCwgZXhlY3V0YWJsZS0+c291cmNlKCkpKTsKKyAgICAg
ICAgZXJyb3JIYW5kbGVyKGV4ZWN1dGFibGUtPnNvdXJjZSgpLCAmZXJyb3IpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTY2LDYgKzY4LDI0IEBAIEluZGlyZWN0RXZhbEV4
ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqCiAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CiB9CiAKK0luZGlyZWN0RXZhbEV4ZWN1
dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZVNhZmUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5
cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxD
b250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIE5ha2VkUHRyPEpTT2JqZWN0PiYgcmVzdWx0aW5n
RXJyb3IpCit7CisgICAgYXV0byBoYW5kbGVFcnJvciA9IFsmXShjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIFBhcnNlckVycm9yKiBlcnJvcikgeworICAgICAgICByZXN1bHRpbmdFcnJvciA9IGVy
cm9yLT50b0Vycm9yT2JqZWN0KGdsb2JhbE9iamVjdCwgc291cmNlKTsKKyAgICB9OworICAgIHJl
dHVybiBjcmVhdGVJbXBsKGdsb2JhbE9iamVjdCwgc291cmNlLCBkZXJpdmVkQ29udGV4dFR5cGUs
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlwZSwgaGFuZGxlRXJyb3IpOwor
fQorCitJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5j
dGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gaGFuZGxlRXJyb3IgPSBbJl0oY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciogZXJyb3IpIHsKKyAgICAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgICAgICB0aHJvd1ZNRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3ItPnRvRXJyb3JPYmplY3QoZ2xvYmFsT2JqZWN0LCBz
b3VyY2UpKTsKKyAgICB9OworICAgIHJldHVybiBjcmVhdGVJbXBsKGdsb2JhbE9iamVjdCwgc291
cmNlLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250
ZXh0VHlwZSwgaGFuZGxlRXJyb3IpOworfQorCiBjb25zdGV4cHIgYm9vbCBpblN0cmljdENvbnRl
eHQgPSBmYWxzZTsKIGNvbnN0ZXhwciBib29sIGluc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxz
ZTsKIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVk
Q29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmgKaW5kZXggNDk4
YjVjODcwOThhYjM3NDc5N2EyNWJmNDgxNjM3Y2ZiYjkyZWRmNS4uYzhlNTI0NTY2NTg1NTcxNDQ2
NDIyOGYwMDBjZmIwNzM5ZGQ5NzM3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaApAQCAtMzIsNyArMzIsMTEgQEAg
bmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlIGZpbmFsIDogcHVi
bGljIEV2YWxFeGVjdXRhYmxlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgSW5kaXJlY3RFdmFsRXhl
Y3V0YWJsZSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2
ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5
cGUpOworICAgIHN0YXRpYyBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBjcmVhdGVTYWZlKEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUsIE5ha2VkUHRyPEpTT2JqZWN0
PiYpOwogcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFcnJvckhhbmRsZXJGdW5jdG9y
PgorICAgIGlubGluZSBzdGF0aWMgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogY3JlYXRlSW1wbChK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJpdmVkQ29udGV4dFR5cGUsIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlLCBFcnJvckhhbmRsZXJG
dW5jdG9yKTsKKwogICAgIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqLCBj
b25zdCBTb3VyY2VDb2RlJiwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMDZmNjUzZWNiZjg0YjM3OGE3
YjNjYWVhZDI0MzQ2OTg4OTUyN2YyMC4uYWE1NGQ0ZTFiNWI2MWY3ZTE4MjQ1OTkzYjc5NzQ5MTJl
ZWMwN2QzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcApAQCAtMTk0LDYgKzE5NCw5IEBACiAjaW5jbHVkZSAiU2V0Q29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJTZXRJdGVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlNldFByb3Rv
dHlwZS5oIgorI2luY2x1ZGUgIlNoYWRvd1JlYWxtQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJT
aGFkb3dSZWFsbU9iamVjdC5oIgorI2luY2x1ZGUgIlNoYWRvd1JlYWxtUHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKICNpbmNsdWRlICJTdHJpbmdDb25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgIlN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgiCkBAIC05MTYsNiAr
OTE5LDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IE51bWJlck9mQXJyYXlJbmRleGluZ01vZGVzOyArK2kpCiAgICAgICAg
IG1fYXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1NoYXBlRHVyaW5nQWxsb2NhdGlvbltpXSA9IG1f
b3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5nU2hhcGVbaV07CiAKKyAgICBtX3NoYWRv
d1JlYWxtUHJvdG90eXBlLnNldCh2bSwgdGhpcywgU2hhZG93UmVhbG1Qcm90b3R5cGU6OmNyZWF0
ZSh2bSwgU2hhZG93UmVhbG1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9v
YmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CisgICAgbV9zaGFkb3dSZWFsbU9iamVjdFN0cnVjdHVy
ZS5zZXQodm0sIHRoaXMsIFNoYWRvd1JlYWxtT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fc2hhZG93UmVhbG1Qcm90b3R5cGUuZ2V0KCkpKTsKKwogICAgIG1fcmVnRXhwUHJvdG90
eXBlLnNldCh2bSwgdGhpcywgUmVnRXhwUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIFJlZ0V4
cFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5n
ZXQoKSkpKTsKICAgICBtX3JlZ0V4cFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFJlZ0V4cE9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSkpOwog
ICAgIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLnNldCh2bSwgdGhpcywgY3JlYXRlUmVn
RXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKHZtLCB0aGlzKSk7CkBAIC0xMDIwLDcgKzEwMjYsMTEg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgQXJyYXlDb25zdHJ1Y3Rv
ciogYXJyYXlDb25zdHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywg
QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJv
dG90eXBlLmdldCgpKSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0dGVyU2V0
dGVyLmdldCgpKTsKICAgICBtX2FycmF5Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBhcnJheUNv
bnN0cnVjdG9yKTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVk
PihMaW5rVGltZUNvbnN0YW50OjpBcnJheSldLnNldCh2bSwgdGhpcywgYXJyYXlDb25zdHJ1Y3Rv
cik7Ci0gICAgCisKKyAgICBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKiBzaGFkb3dSZWFsbUNvbnN0
cnVjdG9yID0gU2hhZG93UmVhbG1Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBTaGFkb3dSZWFsbUNv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCkpLCBtX3NoYWRvd1JlYWxtUHJvdG90eXBlLmdldCgpLCBtX3NwZWNpZXNHZXR0ZXJTZXR0
ZXIuZ2V0KCkpOworICAgIG1fc2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIHNo
YWRvd1JlYWxtQ29uc3RydWN0b3IpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlNoYWRvd1JlYWxtKV0uc2V0KHZtLCB0aGlz
LCBzaGFkb3dSZWFsbUNvbnN0cnVjdG9yKTsKKwogICAgIFJlZ0V4cENvbnN0cnVjdG9yKiByZWdF
eHBDb25zdHJ1Y3RvciA9IFJlZ0V4cENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIFJlZ0V4cENvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLmdldCgp
KTsKICAgICBtX3JlZ0V4cENvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgcmVnRXhwQ29uc3RydWN0
b3IpOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtU
aW1lQ29uc3RhbnQ6OlJlZ0V4cCldLnNldCh2bSwgdGhpcywgcmVnRXhwQ29uc3RydWN0b3IpOwpA
QCAtMTEwMCw2ICsxMTEwLDcgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFt
ZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICBtX2Z1bmN0
aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+Y29uc3RydWN0b3IsIGZ1bmN0aW9uQ29uc3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBtX2FycmF5UHJvdG90eXBl
LT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3Ry
dWN0b3IsIGFycmF5Q29uc3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBtX3JlZ0V4cFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCByZWdFeHBD
b25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOworICAgIG1fc2hhZG93UmVhbG1Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwgc2hhZG93UmVhbG1Db25z
dHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSkpOwogICAgIAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5PYmplY3QsIG9iamVjdENvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkZ1bmN0aW9uLCBmdW5jdGlvbkNvbnN0cnVjdG9y
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CkBA
IC0xMjUxLDYgKzEyNjIsOCBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1l
ICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgICAgICBUZW1w
b3JhbE9iamVjdCogdGVtcG9yYWwgPSBUZW1wb3JhbE9iamVjdDo6Y3JlYXRlKHZtLCBUZW1wb3Jh
bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzKSk7CiAgICAgICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5UZW1wb3JhbCwgdGVtcG9yYWws
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAg
ICB9CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYWRvd1JlYWxtKCkpCisgICAgICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5TaGFkb3dSZWFsbSwgc2hh
ZG93UmVhbG1Db25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpOwogCiAgICAgbV9tb2R1bGVMb2FkZXIuaW5pdExhdGVyKAogICAgICAg
ICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNNb2R1bGVMb2FkZXI+JiBpbml0KSB7CkBAIC0xNDIz
LDYgKzE0MzYsMTIgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBD
b25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpob3N0UHJvbWlz
ZVJlamVjdGlvblRyYWNrZXIpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2Vs
bD4mIGluaXQpIHsKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0
LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMiwgU3RyaW5nKCksIGds
b2JhbEZ1bmNIb3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIpKTsKICAgICAgICAgfSk7CisgICAg
bV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFu
dDo6aW1wb3J0SW5SZWFsbSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxs
PiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQu
dm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgaW1w
b3J0SW5SZWFsbSkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpldmFsSW5SZWFsbSldLmluaXRMYXRl
cihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5p
dC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+
KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgZXZhbEluUmVhbG0pKTsKKyAgICAgICAgfSk7CiAg
ICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25z
dGFudDo6dGhpc1RpbWVWYWx1ZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlND
ZWxsPiYgaW5pdCkgewogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGlu
aXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwg
ZGF0ZVByb3RvRnVuY0dldFRpbWUsIERhdGVQcm90b3R5cGVHZXRUaW1lSW50cmluc2ljKSk7CiAg
ICAgICAgIH0pOwpAQCAtMjEwNyw2ICsyMTI2LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlz
aXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogICAgIHRoaXNP
YmplY3QtPm1fVVJJRXJyb3JTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+bV9hZ2dyZWdhdGVFcnJvclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FycmF5Q29uc3RydWN0b3IpOworICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fc2hhZG93UmVhbG1Db25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5h
cHBlbmQodGhpc09iamVjdC0+bV9yZWdFeHBDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBl
bmQodGhpc09iamVjdC0+bV9vYmplY3RDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9mdW5jdGlvbkNvbnN0cnVjdG9yKTsKQEAgLTIyMDQsNiArMjIyNCw3IEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlz
aXRvciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0LT5tX2N1c3RvbVNldHRlckZ1bmN0aW9uU3Ry
dWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fYm91bmRGdW5jdGlvblN0
cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX25hdGl2ZVN0ZEZ1bmN0
aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fc2hhZG93UmVhbG1PYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOwpAQCAtMjU2MCw2ICsyNTgxLDEz
IEBAIEpTR2xvYmFsT2JqZWN0KiBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdDsKIH0KIAorSlNHbG9iYWxP
YmplY3QqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVXaXRoQ3VzdG9tTWV0aG9kVGFibGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqIG1l
dGhvZFRhYmxlKQoreworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dsb2JhbE9iamVjdD4odm0uaGVhcCkpIEpTR2xvYmFsT2Jq
ZWN0KHZtLCBzdHJ1Y3R1cmUsIG1ldGhvZFRhYmxlKTsKKyAgICBnbG9iYWxPYmplY3QtPmZpbmlz
aENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0OworfQorCiB2b2lkIEpTR2xv
YmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgRGVmZXJUZXJtaW5hdGlv
biBkZWZlclRlcm1pbmF0aW9uKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDEyOGIzOTkxMGRkODA1N2Y3YWFiYjU5Nzc3Y2E2ODBl
OWRmNjE4OTIuLmYzZmU3NGIxOTk1ODM1OGU5NmJmYTQ1NDc2YjY4MjQ4YTdlNTFmMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMTE1
LDYgKzExNSw4IEBAIGNsYXNzIE51bGxTZXR0ZXJGdW5jdGlvbjsKIGNsYXNzIE9iamVjdENvbnN0
cnVjdG9yOwogY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxl
OworY2xhc3MgU2hhZG93UmVhbG1Db25zdHJ1Y3RvcjsKK2NsYXNzIFNoYWRvd1JlYWxtUHJvdG90
eXBlOwogY2xhc3MgUmVnRXhwQ29uc3RydWN0b3I7CiBjbGFzcyBSZWdFeHBQcm90b3R5cGU7CiBj
bGFzcyBTZXRJdGVyYXRvclByb3RvdHlwZTsKQEAgLTMwNiw2ICszMDgsNyBAQCBwdWJsaWM6CiAK
ICAgICBXcml0ZUJhcnJpZXI8T2JqZWN0Q29uc3RydWN0b3I+IG1fb2JqZWN0Q29uc3RydWN0b3I7
CiAgICAgV3JpdGVCYXJyaWVyPEFycmF5Q29uc3RydWN0b3I+IG1fYXJyYXlDb25zdHJ1Y3RvcjsK
KyAgICBXcml0ZUJhcnJpZXI8U2hhZG93UmVhbG1Db25zdHJ1Y3Rvcj4gbV9zaGFkb3dSZWFsbUNv
bnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxSZWdFeHBDb25zdHJ1Y3Rvcj4gbV9yZWdFeHBD
b25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8RnVuY3Rpb25Db25zdHJ1Y3Rvcj4gbV9mdW5j
dGlvbkNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4g
bV9wcm9taXNlQ29uc3RydWN0b3I7CkBAIC0zNTMsNiArMzU2LDcgQEAgcHVibGljOgogICAgIFdy
aXRlQmFycmllcjxPYmplY3RQcm90b3R5cGU+IG1fb2JqZWN0UHJvdG90eXBlOwogICAgIFdyaXRl
QmFycmllcjxGdW5jdGlvblByb3RvdHlwZT4gbV9mdW5jdGlvblByb3RvdHlwZTsKICAgICBXcml0
ZUJhcnJpZXI8QXJyYXlQcm90b3R5cGU+IG1fYXJyYXlQcm90b3R5cGU7CisgICAgV3JpdGVCYXJy
aWVyPFNoYWRvd1JlYWxtUHJvdG90eXBlPiBtX3NoYWRvd1JlYWxtUHJvdG90eXBlOwogICAgIFdy
aXRlQmFycmllcjxSZWdFeHBQcm90b3R5cGU+IG1fcmVnRXhwUHJvdG90eXBlOwogICAgIFdyaXRl
QmFycmllcjxJdGVyYXRvclByb3RvdHlwZT4gbV9pdGVyYXRvclByb3RvdHlwZTsKICAgICBXcml0
ZUJhcnJpZXI8QXN5bmNJdGVyYXRvclByb3RvdHlwZT4gbV9hc3luY0l0ZXJhdG9yUHJvdG90eXBl
OwpAQCAtNDA5LDYgKzQxMyw3IEBAIHB1YmxpYzoKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxP
YmplY3QsIFN0cnVjdHVyZT4gbV9jdXN0b21TZXR0ZXJGdW5jdGlvblN0cnVjdHVyZTsKICAgICBM
YXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9uYXRpdmVTdGRGdW5jdGlv
blN0cnVjdHVyZTsKICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKKyAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3NoYWRvd1JlYWxtT2JqZWN0U3RydWN0dXJlOwog
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwU3RydWN0dXJlOwogICAgIFdyaXRl
QmFycmllcjxBc3luY0Z1bmN0aW9uUHJvdG90eXBlPiBtX2FzeW5jRnVuY3Rpb25Qcm90b3R5cGU7
CiAgICAgV3JpdGVCYXJyaWVyPEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU+IG1fYXN5
bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKQEAgLTYxMCw2ICs2MTUsNyBAQCBwdWJsaWM6
CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTR2xvYmFsT2JqZWN0KiBj
cmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNH
bG9iYWxPYmplY3QqIGNyZWF0ZVdpdGhDdXN0b21NZXRob2RUYWJsZShWTSYsIFN0cnVjdHVyZSos
IGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKik7CiAKICAgICBERUNMQVJFX0VYUE9SVF9J
TkZPOwogCkBAIC03MTMsNiArNzE5LDcgQEAgcHVibGljOgogICAgIEJpZ0ludFByb3RvdHlwZSog
YmlnSW50UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9iaWdJbnRQcm90b3R5cGUuZ2V0KCk7
IH0KICAgICBKU09iamVjdCogZGF0ZVByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0ZVN0
cnVjdHVyZS5wcm90b3R5cGUodGhpcyk7IH0KICAgICBKU09iamVjdCogc3ltYm9sUHJvdG90eXBl
KCkgY29uc3QgeyByZXR1cm4gbV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUucHJvdG90eXBlSW5pdGlh
bGl6ZWRPbk1haW5UaHJlYWQodGhpcyk7IH0KKyAgICBTaGFkb3dSZWFsbVByb3RvdHlwZSogc2hh
ZG93UmVhbG1Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd1JlYWxtUHJvdG90eXBl
LmdldCgpOyB9CiAgICAgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUoKSBjb25zdCB7
IHJldHVybiBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKTsgfQogICAgIEpTT2JqZWN0KiBlcnJvclBy
b3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMp
OyB9CiAgICAgSXRlcmF0b3JQcm90b3R5cGUqIGl0ZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQpAQCAtODMwLDYgKzgzNyw3IEBAIHB1
YmxpYzoKICAgICBQcm9wZXJ0eU9mZnNldCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQogICAgIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRo
aXMpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogc2hhZG93UmVhbG1TdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd1JlYWxtT2JqZWN0U3RydWN0dXJlLmdldCgp
OyB9CiAgICAgU3RydWN0dXJlKiBnZW5lcmF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X2dlbmVyYXRvclN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogYXN5bmNHZW5lcmF0
b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jR2VuZXJhdG9yU3RydWN0dXJlLmdl
dCgpOyB9CiAgICAgU3RydWN0dXJlKiBnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCmluZGV4IDVhOGExNGEzY2M2YWQxOWVkNDA4
MjRiODMwMmRiOTBjNGM0NzRjM2EuLjgyOGZkMDM2NzZlNDVhYTIzYWViZjI0MWM4MDY5ZWJjMTQ0
ODgwYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcApAQCAtNDMs
NiArNDMsNyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpKU1R5
cGUgdHlwZSkKICAgICBDQVNFKFN0cmluZ1R5cGUpCiAgICAgQ0FTRShTeW1ib2xUeXBlKQogICAg
IENBU0UoSGVhcEJpZ0ludFR5cGUpCisgICAgQ0FTRShTaGFkb3dSZWFsbVR5cGUpCiAgICAgQ0FT
RShDdXN0b21HZXR0ZXJTZXR0ZXJUeXBlKQogICAgIENBU0UoQVBJVmFsdWVXcmFwcGVyVHlwZSkK
ICAgICBDQVNFKE5hdGl2ZUV4ZWN1dGFibGVUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGUuaAppbmRleCA2NWVhOTRlZjU2M2Y0YjNhZTIxOTE3NTFjNzkyZWM1MTBkNTc0MWMx
Li40MzFiYmFmYzg0ZTY1MzQ0YzAwMmU0ZTVmNDc2N2M3YTM0NTU1OTQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGUuaApAQCAtMTEwLDYgKzExMCw3IEBAIGVudW0gSlNUeXBl
IDogdWludDhfdCB7CiAgICAgLy8gRW5kIEpTU2NvcGUgdHlwZXMuCiAKICAgICBNb2R1bGVOYW1l
c3BhY2VPYmplY3RUeXBlLAorICAgIFNoYWRvd1JlYWxtVHlwZSwKICAgICBSZWdFeHBPYmplY3RU
eXBlLAogICAgIEpTRGF0ZVR5cGUsCiAgICAgUHJveHlPYmplY3RUeXBlLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggYTBjMjE3MGVjNGJhNTIxYzUx
YmVjNmQyMDNhNTFhOTU2OGIyZjRiMi4uMmFiMTg4NTAxYjhiZTk4NDNhNTNlYjc1MGE3MzM0MjQw
Nzg3ZDI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5o
CkBAIC01NDAsNiArNTQwLDcgQEAgYm9vbCBjYW5Vc2VXZWJBc3NlbWJseUZhc3RNZW1vcnkoKTsK
ICAgICB2KEJvb2wsIHVzZUhhc093biwgdHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBPYmplY3Qu
aGFzT3duIG1ldGhvZCIpIFwKICAgICB2KEJvb2wsIHVzZUludGxFbnVtZXJhdGlvbiwgdHJ1ZSwg
Tm9ybWFsLCAiRXhwb3NlIHRoZSBJbnRsIGVudW1lcmF0aW9uIEFQSXMuIikgXAogICAgIHYoQm9v
bCwgdXNlU2hhcmVkQXJyYXlCdWZmZXIsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2
KEJvb2wsIHVzZVNoYWRvd1JlYWxtLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBTaGFkb3dS
ZWFsbSBvYmplY3QuIikgXAogICAgIHYoQm9vbCwgdXNlVGVtcG9yYWwsIGZhbHNlLCBOb3JtYWws
ICJFeHBvc2UgdGhlIFRlbXBvcmFsIG9iamVjdC4iKSBcCiAgICAgdihCb29sLCB1c2VXZWJBc3Nl
bWJseVRocmVhZGluZywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgaW5zdHJ1Y3Rpb25zIGZyb20gdGhl
IHdhc20gdGhyZWFkaW5nIHNwZWMuIikgXAogICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlUeXBl
ZEZ1bmN0aW9uUmVmZXJlbmNlcywgZmFsc2UsIE5vcm1hbCwgIkFsbG93IGZ1bmN0aW9uIHR5cGVz
IGZyb20gdGhlIHdhc20gdHlwZWQgZnVuY3Rpb24gcmVmZXJlbmNlcyBzcGVjLiIpIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtQ29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1
Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGM2ODQ3MjlmNDA1YTJkZTQ0ZTY1Zjk2ZGFjN2UwNDU3Zjhh
NmM1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1No
YWRvd1JlYWxtQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlNoYWRvd1JlYWxtQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJTaGFkb3dSZWFsbU9iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY29uc3QgQ2xhc3NJbmZvIFNoYWRvd1JlYWxtQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1
bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKSB9OworCitTVEFUSUNfQVNT
RVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoU2hhZG93UmVhbG1Db25zdHJ1Y3Rvcik7CisK
K3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNhbGxTaGFkb3dSZWFsbSk7CitzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RXaXRoU2hhZG93UmVhbG1Db25z
dHJ1Y3Rvcik7CisKK1NoYWRvd1JlYWxtQ29uc3RydWN0b3I6OlNoYWRvd1JlYWxtQ29uc3RydWN0
b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24o
dm0sIHN0cnVjdHVyZSwgY2FsbFNoYWRvd1JlYWxtLCBjb25zdHJ1Y3RXaXRoU2hhZG93UmVhbG1D
b25zdHJ1Y3RvcikKK3sKK30KKwordm9pZCBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIFNoYWRvd1JlYWxtUHJvdG90eXBlKiBzaGFkb3dSZWFsbVByb3RvdHlw
ZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgdm0ucHJvcGVydHlOYW1lcy0+
U2hhZG93UmVhbG0uc3RyaW5nKCksIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0
dXJlVHJhbnNpdGlvbik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgc2hhZG93UmVhbG1Qcm90b3R5cGUsIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKK30KKworc3RhdGljIEpTT2JqZWN0KiBjb25zdHJ1Y3RT
aGFkb3dSZWFsbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlLCBjb25zdCBB
cmdMaXN0JikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgU3RydWN0
dXJlKiBzaGFkb3dSZWFsbVN0cnVjdHVyZSA9IFNoYWRvd1JlYWxtT2JqZWN0OjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5zaGFkb3dSZWFsbVByb3RvdHlw
ZSgpKTsKKyAgICByZXR1cm4gU2hhZG93UmVhbG1PYmplY3Q6OmNyZWF0ZSh2bSwgc2hhZG93UmVh
bG1TdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKSk7Cit9
CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RXaXRoU2hhZG93UmVhbG1Db25z
dHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKK3sKKyAgICBBcmdMaXN0IGFyZ3MoY2FsbEZyYW1lKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGNvbnN0cnVjdFNoYWRvd1JlYWxtKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5u
ZXdUYXJnZXQoKSwgYXJncykpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY2FsbFNo
YWRvd1JlYWxtLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikpCit7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LT52bSgp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNh
bGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlNoYWRvd1JlYWxt
IikpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZGNj
ZDIyNzAxNjU3MGM0MTg4Njc1MTE5NGViOThhZmQxMzMwYTQyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5oCkBA
IC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisj
aW5jbHVkZSAiU2hhZG93UmVhbG1Qcm90b3R5cGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIEdldHRlclNldHRlcjsKKworY2xhc3MgU2hhZG93UmVhbG1Db25zdHJ1Y3RvciBmaW5hbCA6
IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFs
RnVuY3Rpb24gQmFzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisg
ICAgc3RhdGljIFNoYWRvd1JlYWxtQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBTaGFkb3dSZWFsbVByb3RvdHlwZSogc2hhZG93UmVhbG1Qcm90b3R5cGUs
IEdldHRlclNldHRlciopCisgICAgeworICAgICAgICBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKiBj
b25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFNoYWRvd1JlYWxtQ29uc3Ry
dWN0b3I+KHZtLmhlYXApKSBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwor
ICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHNoYWRvd1JlYWxtUHJvdG90
eXBlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKworICAgIERFQ0xBUkVf
SU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgVHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU2hhZG93UmVhbG1Db25zdHJ1Y3RvcihWTSYsIFN0
cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBTaGFkb3dSZWFsbVByb3Rv
dHlwZSopOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFNoYWRvd1Jl
YWxtQ29uc3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24pOworCit9IC8vIG5hbWVzcGFjZSBKU0MK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1P
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1PYmpl
Y3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjI1NDQ3YTcxZWUxNTA4NTM3YjQ1NmZhMzZiNGJmMWFjYzM0OGRi
NDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFk
b3dSZWFsbU9iamVjdC5jcHAKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU2hhZG93UmVhbG1PYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NF
UlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShTaGFkb3dSZWFsbU9iamVjdCk7CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFNoYWRv
d1JlYWxtT2JqZWN0OjpzX2luZm8gPSB7ICJTaGFkb3dSZWFsbSIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoU2hhZG93UmVhbG1PYmplY3QpIH07
CisKK1NoYWRvd1JlYWxtT2JqZWN0OjpTaGFkb3dSZWFsbU9iamVjdChWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBWaXNpdG9yPgordm9pZCBTaGFkb3dSZWFsbU9iamVjdDo6dmlzaXRDaGlsZHJl
bkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIFNoYWRvd1JlYWxt
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFNoYWRvd1JlYWxtT2JqZWN0Kj4oY2VsbCk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisKKyAgICB2aXNpdG9yLmFw
cGVuZCh0aGlzT2JqZWN0LT5tX2dsb2JhbE9iamVjdCk7Cit9CisKK0RFRklORV9WSVNJVF9DSElM
RFJFTihTaGFkb3dSZWFsbU9iamVjdCk7CisKK1NoYWRvd1JlYWxtT2JqZWN0KiBTaGFkb3dSZWFs
bU9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IEdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlKiBtZXRob2RUYWJsZSkKK3sKKyAgICBTaGFkb3dSZWFsbU9iamVj
dCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2hhZG93UmVhbG1PYmplY3Q+
KHZtLmhlYXApKSBTaGFkb3dSZWFsbU9iamVjdCh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3Qt
PmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
SlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVdpdGhDdXN0b21NZXRob2RUYWJsZSh2bSwgSlNHbG9iYWxP
YmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpLCBtZXRob2RUYWJsZSk7CisgICAg
b2JqZWN0LT5tX2dsb2JhbE9iamVjdC5zZXQodm0sIG9iamVjdCwgZ2xvYmFsT2JqZWN0KTsKKyAg
ICByZXR1cm4gb2JqZWN0OworfQorCit2b2lkIFNoYWRvd1JlYWxtT2JqZWN0OjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VS
VChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9U
UkFOU0lUSU9OKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1PYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtT2JqZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODViNGQ5
Zjk3NjlhMWQwNWUzNzg5Y2RmNmU3OTcyMDcxYTE5OTRiMAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtT2JqZWN0LmgKQEAgLTAsMCAr
MSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFNoYWRvd1JlYWxtT2Jq
ZWN0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5n
IEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAmdm0uc2hhZG93UmVh
bG1TcGFjZTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKFNoYWRvd1JlYWxtVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTaGFkb3dS
ZWFsbU9iamVjdCogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgY29uc3QgR2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUqKTsKKworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSB7IHJldHVy
biBtX2dsb2JhbE9iamVjdC5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFNoYWRvd1JlYWxtT2Jq
ZWN0KFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAg
IERFQ0xBUkVfVklTSVRfQ0hJTERSRU47CisKKyAgICBXcml0ZUJhcnJpZXI8SlNHbG9iYWxPYmpl
Y3Q+IG1fZ2xvYmFsT2JqZWN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDEzNTI3ODAxY2QxNGJhZjVlYmYxZjlmZTAyMmNlZmQyZmJmZWQzMAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxt
UHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDEzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
U2hhZG93UmVhbG1Qcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkluZGlyZWN0RXZhbEV4ZWN1dGFi
bGUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
LmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2UuaCIKKyNpbmNsdWRlICJKU01vZHVsZUxv
YWRlci5oIgorI2luY2x1ZGUgIkxpdGVyYWxQYXJzZXIuaCIKKyNpbmNsdWRlICJTaGFkb3dSZWFs
bU9iamVjdC5oIgorCisjaW5jbHVkZSAiU2hhZG93UmVhbG1Qcm90b3R5cGUubHV0LmgiCisKK25h
bWVzcGFjZSBKU0MgeworCisvKiBTb3VyY2UgZm9yIFNoYWRvd1JlYWxtUHJvdG90eXBlLmx1dC5o
CitAYmVnaW4gc2hhZG93UmVhbG1Qcm90b3R5cGVUYWJsZQorICBldmFsdWF0ZSAgICBKU0J1aWx0
aW4gICAgIERvbnRFbnVtfEZ1bmN0aW9uICAxCisgIGltcG9ydFZhbHVlIEpTQnVpbHRpbiAgICAg
RG9udEVudW18RnVuY3Rpb24gIDIKK0BlbmQKKyovCisKK2NvbnN0IENsYXNzSW5mbyBTaGFkb3dS
ZWFsbVByb3RvdHlwZTo6c19pbmZvID0geyAiU2hhZG93UmVhbG0iLCAmQmFzZTo6c19pbmZvLCAm
c2hhZG93UmVhbG1Qcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShT
aGFkb3dSZWFsbVByb3RvdHlwZSkgfTsKKworU2hhZG93UmVhbG1Qcm90b3R5cGU6OlNoYWRvd1Jl
YWxtUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZp
bmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgU2hhZG93UmVhbG1Qcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBKU0NfVE9fU1RSSU5H
X1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGltcG9ydEluUmVhbG0sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBTaGFkb3dSZWFsbU9i
amVjdCogdGhpc1JlYWxtID0ganNEeW5hbWljQ2FzdDxTaGFkb3dSZWFsbU9iamVjdCo+KHZtLCB0
aGlzVmFsdWUpOworICAgIFJFTEVBU0VfQVNTRVJUKHRoaXNSZWFsbSk7CisKKyAgICBhdXRvKiBw
cm9taXNlID0gSlNQcm9taXNlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+cHJvbWlzZVN0cnVj
dHVyZSgpKTsKKworICAgIGF1dG8gc291cmNlT3JpZ2luID0gY2FsbEZyYW1lLT5jYWxsZXJTb3Vy
Y2VPcmlnaW4odm0pOworICAgIGF1dG8qIHNwZWNpZmllciA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMSkudG9TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgSlNHbG9iYWxPYmplY3QqIHJlYWxtR2xvYmFsT2JqZWN0
ID0gdGhpc1JlYWxtLT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvKiBpbnRlcm5hbFByb21pc2Ug
PSByZWFsbUdsb2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCktPmltcG9ydE1vZHVsZShyZWFsbUds
b2JhbE9iamVjdCwgc3BlY2lmaWVyLCBqc1VuZGVmaW5lZCgpLCBzb3VyY2VPcmlnaW4pOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShwcm9taXNlLT5yZWpl
Y3RXaXRoQ2F1Z2h0RXhjZXB0aW9uKHJlYWxtR2xvYmFsT2JqZWN0LCBzY29wZSkpKTsKKworICAg
IHNjb3BlLnJlbGVhc2UoKTsKKyAgICBwcm9taXNlLT5yZXNvbHZlKGdsb2JhbE9iamVjdCwgaW50
ZXJuYWxQcm9taXNlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UpOworfQor
CitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZXZhbEluUmVhbG0sIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAg
ICBTaGFkb3dSZWFsbU9iamVjdCogdGhpc1JlYWxtID0ganNEeW5hbWljQ2FzdDxTaGFkb3dSZWFs
bU9iamVjdCo+KHZtLCB0aGlzVmFsdWUpOworICAgIFJFTEVBU0VfQVNTRVJUKHRoaXNSZWFsbSk7
CisgICAgSlNHbG9iYWxPYmplY3QqIHJlYWxtR2xvYmFsT2JqZWN0ID0gdGhpc1JlYWxtLT5nbG9i
YWxPYmplY3QoKTsKKworICAgIEpTVmFsdWUgZXZhbEFyZyA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MSk7CisgICAgLy8gZXZhbCBjb2RlIGFkYXB0ZWQgZnJvbSBKU0dsb2JhbE9iamVjRnVuY3Rpb25z
OjpnbG9iYWxGdW5jRXZhbAorICAgIFN0cmluZyBzID0gYXNTdHJpbmcoZXZhbEFyZyktPnZhbHVl
KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CisKKyAgICBKU1ZhbHVlIHBhcnNlZE9iamVjdDsKKyAgICBpZiAocy5pczhCaXQo
KSkgeworICAgICAgICBMaXRlcmFsUGFyc2VyPExDaGFyPiBwcmVwYXJzZXIoZ2xvYmFsT2JqZWN0
LCBzLmNoYXJhY3RlcnM4KCksIHMubGVuZ3RoKCksIE5vblN0cmljdEpTT04sIG51bGxwdHIpOwor
ICAgICAgICBwYXJzZWRPYmplY3QgPSBwcmVwYXJzZXIudHJ5TGl0ZXJhbFBhcnNlKCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgTGl0ZXJhbFBhcnNlcjxVQ2hhcj4gcHJlcGFyc2VyKGdsb2JhbE9i
amVjdCwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5ndGgoKSwgTm9uU3RyaWN0SlNPTiwgbnVsbHB0
cik7CisgICAgICAgIHBhcnNlZE9iamVjdCA9IHByZXBhcnNlci50cnlMaXRlcmFsUGFyc2UoKTsK
KyAgICB9CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CisgICAgaWYgKHBhcnNlZE9iamVjdCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShw
YXJzZWRPYmplY3QpOworCisgICAgTmFrZWRQdHI8SlNPYmplY3Q+IGV4ZWN1dGFibGVFcnJvcjsK
KyAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2UocywgY2FsbEZyYW1lLT5jYWxsZXJT
b3VyY2VPcmlnaW4odm0pKTsKKyAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEluZGlyZWN0RXZh
bEV4ZWN1dGFibGU6OmNyZWF0ZVNhZmUocmVhbG1HbG9iYWxPYmplY3QsIHNvdXJjZSwgRGVyaXZl
ZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lLCBleGVjdXRh
YmxlRXJyb3IpOworICAgIGlmIChleGVjdXRhYmxlRXJyb3IpIHsKKyAgICAgICAgRXJyb3JJbnN0
YW5jZSogZXJyb3IgPSBqc0R5bmFtaWNDYXN0PEVycm9ySW5zdGFuY2UqPih2bSwgSlNWYWx1ZShl
eGVjdXRhYmxlRXJyb3IuZ2V0KCkpKTsKKyAgICAgICAgaWYgKGVycm9yICE9IG51bGxwdHIgJiYg
ZXJyb3ItPmVycm9yVHlwZSgpID09IEVycm9yVHlwZTo6U3ludGF4RXJyb3IpIHsKKyAgICAgICAg
ICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgICAgICBjb25zdCBTdHJpbmcgc3lu
dGF4RXJyb3JNZXNzYWdlID0gZXJyb3ItPnNhbml0aXplZE1lc3NhZ2VTdHJpbmcoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAg
ICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4RXJy
b3IoZ2xvYmFsT2JqZWN0LCBzeW50YXhFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgIkVycm9yIGVuY291bnRlcmVkIGR1cmluZyBldmFsdWF0aW9uIl9z
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAg
fQorICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IHZtLmludGVycHJldGVyLT5leGVjdXRlKGV2YWwsIHJlYWxtR2xvYmFsT2JqZWN0LCBy
ZWFsbUdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpLCByZWFsbUdsb2JhbE9iamVjdC0+Z2xvYmFs
U2NvcGUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwKKyAgICAgICAgdGhyb3dW
TUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
ICJFcnJvciBlbmNvdW50ZXJlZCBkdXJpbmcgZXZhbHVhdGlvbiJfcykpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
aGFkb3dSZWFsbVByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hh
ZG93UmVhbG1Qcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZWFlYjBiOGJhYjM5YzE2Nzk2MDE5NmI0
MmY2NDIxZmNlNTFlYzliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuaApAQCAtMCwwICsxLDY2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFNoYWRv
d1JlYWxtUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGlj
OgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0
YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vi
c3BhY2VBY2Nlc3M+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CisgICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShTaGFk
b3dSZWFsbVByb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICB9CisKKyAgICBzdGF0aWMgU2hhZG93UmVhbG1Qcm90b3R5cGUqIGNyZWF0ZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgU2hhZG93UmVhbG1Q
cm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFNoYWRvd1Jl
YWxtUHJvdG90eXBlPih2bS5oZWFwKSkgU2hhZG93UmVhbG1Qcm90b3R5cGUodm0sIHN0cnVjdHVy
ZSk7CisgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1
cm4gcHJvdG90eXBlOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTaGFk
b3dSZWFsbVByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mKTsKK307CisKK0pTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oaW1wb3J0SW5SZWFsbSk7
CitKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGV2YWxJblJlYWxtKTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggOTk2YTA2ZGFhYmE4
MmNjZWZiNDNkZjNmNjVmMTMxZTZmZGU2ZWUwNy4uY2U0ZTNiOTNmMzQ1NGQ3MmQzNGYzZGJhNTBh
MDQxZGYyMWRlNmEyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTU0
LDYgKzE1NCw3IEBACiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgogI2luY2x1ZGUgIlNj
b3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNoYWRvd0NoaWNrZW4uaCIKKyNpbmNsdWRlICJT
aGFkb3dSZWFsbU9iamVjdC5oIgogI2luY2x1ZGUgIlNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXJDYWNoZS5oIgogI2luY2x1ZGUgIlN0cmljdEV2
YWxBY3RpdmF0aW9uLmgiCkBAIC0zNjgsNiArMzY5LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUs
IEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1bkxvb3AsIGJvb2wqIHN1Y2Nlc3Mp
CiAgICAgLCBwcm9taXNlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgY2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNQcm9taXNlKQogICAgICwgcHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNl
IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvcikKICAgICAsIHByb3BlcnR5VGFibGVTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBQcm9wZXJ0eVRh
YmxlKSAvLyBIYXNoOjB4YzZiYzlmMTIKKyAgICAsIHNoYWRvd1JlYWxtU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgU2hhZG93UmVhbG1PYmplY3Qp
CiAgICAgLCByZWdFeHBTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVD
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBSZWdFeHApCiAgICAgLCByZWdFeHBPYmplY3RTcGFjZSBJ
U09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBSZWdFeHBPYmpl
Y3QpCiAgICAgLCByb3BlU3RyaW5nU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgc3RyaW5n
SGVhcENlbGxUeXBlLmdldCgpLCBKU1JvcGVTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAppbmRleCA3YTU4YjI3OWU2NzBhODQwM2QxZjM5NDEyMzU3ZDVlNzcxMTNmNTc4Li5hODg3
YThlNTAyMTY4MGFhYWQxZWI1ZDg1ZmQ0NTdjZGI1OWRmM2M5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKQEAgLTUxMiw2ICs1MTIsNyBAQCBwdWJsaWM6CiAgICAgSXNvU3Vic3BhY2Ug
cHJvbWlzZVNwYWNlOwogICAgIElzb1N1YnNwYWNlIHByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFj
ZTsKICAgICBJc29TdWJzcGFjZSBwcm9wZXJ0eVRhYmxlU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ug
c2hhZG93UmVhbG1TcGFjZTsKICAgICBJc29TdWJzcGFjZSByZWdFeHBTcGFjZTsKICAgICBJc29T
dWJzcGFjZSByZWdFeHBPYmplY3RTcGFjZTsKICAgICBJc29TdWJzcGFjZSByb3BlU3RyaW5nU3Bh
Y2U7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGNmZTQwOTgxNzljYTBmYzQ2ODQ5M2EyMGVmNGMzMTZjMDJhOTE5MzkuLmUwYmY3ZmYzNzBi
MTMwNWE3ZmI2OWVmNTJkNTUzMDBhMzZhYzIzYzYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjEtMDktMjEg
IFBoaWxsaXAgTWF0ZXMgIDxwbWF0ZXNAaWdhbGlhLmNvbT4KKworICAgICAgICBUZXN0IGNvdmVy
YWdlIGZvciBKU0Mgc2hhZG93IHJlYWxtcyBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNjAyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtb2R1bGVzL2ltcG9ydC1tZXRhLXN5
bnRheC5qczoKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKiBzdHJlc3MvaW1wb3J0
LXN5bnRheC5qczoKKyAgICAgICAgKiBzdHJlc3MvcmVzb3VyY2VzL3NoYWRvdy1yZWFsbS1leGFt
cGxlLW1vZHVsZS5qczogQWRkZWQuCisgICAgICAgIChwdXRJbkdsb2JhbCk6CisgICAgICAgIChn
ZXRGcm9tR2xvYmFsKToKKyAgICAgICAgKGdldEFuT2JqZWN0KToKKyAgICAgICAgKGdldENhbGxD
b3VudCk6CisgICAgICAgICogc3RyZXNzL3NoYWRvdy1yZWFsbS1ldmFsdWF0ZS5qczogQWRkZWQu
CisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChh
c3NlcnRpb25Gbik6CisgICAgICAgIChzaG91bGRCZS5TdHJpbmcpOgorICAgICAgICAoc2hvdWxk
QmUuZ2xvYmFsT2JqZWN0Rm9yLmRvRXZhbCk6CisgICAgICAgIChzaG91bGRCZS5nbG9iYWxPYmpl
Y3RGb3IpOgorICAgICAgICAqIHN0cmVzcy9zaGFkb3ctcmVhbG0taW1wb3J0LXZhbHVlLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAg
ICAgKGFzeW5jIHNob3VsZFRocm93QXN5bmMpOgorICAgICAgICAoYXN5bmMgY29uc3QpOgorICAg
ICAgICAoZG9JbXBvcnQpOgorICAgICAgICAqIHN0cmVzcy9zaGFkb3ctcmVhbG0uanM6IEFkZGVk
LgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGhyb3cubmV3LkVycm9yKToKKwogMjAy
MS0wOS0yMyAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAg
ICAgW0pTQ10gSGFuZGxlIHN5bnRhY3RpYyBwcm9kdWN0aW9uIGZvciBgI3ggaW4gZXhwcmAgY29y
cmVjdGx5CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21vZHVsZXMvaW1wb3J0LW1ldGEtc3ludGF4Lmpz
IGIvSlNUZXN0cy9tb2R1bGVzL2ltcG9ydC1tZXRhLXN5bnRheC5qcwppbmRleCAzZWRmNGU1MTIw
ZTEyYTViNjg5NDkxM2IwNWFhNzBhYzY3Njg1NjYyLi41OWEyYjM2MzQ2MGE2MDM1YzdhMTA1ZjA4
YzIzNmY5ZjRhOTQzNTFhIDEwMDY0NAotLS0gYS9KU1Rlc3RzL21vZHVsZXMvaW1wb3J0LW1ldGEt
c3ludGF4LmpzCisrKyBiL0pTVGVzdHMvbW9kdWxlcy9pbXBvcnQtbWV0YS1zeW50YXguanMKQEAg
LTEwLDcgKzEwLDcgQEAgc2hvdWxkTm90VGhyb3coKCkgPT4gewogCiBzaG91bGRUaHJvdygoKSA9
PiB7CiAgICAgY2hlY2tNb2R1bGVTeW50YXgoYChpbXBvcnQuY29jb2EpYCk7Ci19LCBgU3ludGF4
RXJyb3I6IFVuZXhwZWN0ZWQgaWRlbnRpZmllciAnY29jb2EnLiAiaW1wb3J0LiIgY2FuIG9ubHkg
Zm9sbG93ZWQgd2l0aCBtZXRhLjoxYCk7Cit9LCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgaWRl
bnRpZmllciAnY29jb2EnLiAiaW1wb3J0LiIgY2FuIG9ubHkgYmUgZm9sbG93ZWQgd2l0aCBtZXRh
LjoxYCk7CiAKIHNob3VsZFRocm93KCgpID0+IHsKICAgICBjaGVja01vZHVsZVN5bnRheChgKGlt
cG9ydFsiQ29jb2EiXSlgKTsKQEAgLTE4LDcgKzE4LDcgQEAgc2hvdWxkVGhyb3coKCkgPT4gewog
CiBzaG91bGRUaHJvdygoKSA9PiB7CiAgICAgY2hlY2tNb2R1bGVTeW50YXgoYGltcG9ydC5jb2Nv
YWApOwotfSwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGlkZW50aWZpZXIgJ2NvY29hJy4gImlt
cG9ydC4iIGNhbiBvbmx5IGZvbGxvd2VkIHdpdGggbWV0YS46MWApOworfSwgYFN5bnRheEVycm9y
OiBVbmV4cGVjdGVkIGlkZW50aWZpZXIgJ2NvY29hJy4gImltcG9ydC4iIGNhbiBvbmx5IGJlIGZv
bGxvd2VkIHdpdGggbWV0YS46MWApOwogCiBzaG91bGRUaHJvdygoKSA9PiB7CiAgICAgY2hlY2tN
b2R1bGVTeW50YXgoYGltcG9ydFsiQ29jb2EiXWApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvaW1wb3J0LXN5bnRheC5qcyBiL0pTVGVzdHMvc3RyZXNzL2ltcG9ydC1zeW50YXguanMKaW5k
ZXggMjVhM2ZiYmY2ODY2MTU3YjE3NWRhOGVkYWU3OGMwZTllMjgxNWMyNi4uOTRlMDg1MGY3YjI4
OTJhODYxYWQ1ZDBmNDUwZmY0NGY5MTcyNGQyMSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3Mv
aW1wb3J0LXN5bnRheC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9pbXBvcnQtc3ludGF4LmpzCkBA
IC0yOSw3ICsyOSw3IEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3RTeW50YXgoc2NyaXB0LCBtZXNzYWdl
KSB7CiAKIHRlc3RTeW50YXhFcnJvcihgaW1wb3J0KWAsIGBTeW50YXhFcnJvcjogVW5leHBlY3Rl
ZCB0b2tlbiAnKScuIGltcG9ydCBjYWxsIGV4cGVjdHMgZXhhY3RseSBvbmUgYXJndW1lbnQuYCk7
CiB0ZXN0U3ludGF4RXJyb3IoYG5ldyBpbXBvcnQoYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgdXNl
IG5ldyB3aXRoIGltcG9ydC5gKTsKLXRlc3RTeW50YXhFcnJvcihgaW1wb3J0LmhlbGxvKClgLCBg
U3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgaWRlbnRpZmllciAnaGVsbG8nLiAiaW1wb3J0LiIgY2Fu
IG9ubHkgZm9sbG93ZWQgd2l0aCBtZXRhLmApOwordGVzdFN5bnRheEVycm9yKGBpbXBvcnQuaGVs
bG8oKWAsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCBpZGVudGlmaWVyICdoZWxsbycuICJpbXBv
cnQuIiBjYW4gb25seSBiZSBmb2xsb3dlZCB3aXRoIG1ldGEuYCk7CiB0ZXN0U3ludGF4RXJyb3Io
YGltcG9ydFtgLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJ1snLiBpbXBvcnQgY2Fs
bCBleHBlY3RzIGV4YWN0bHkgb25lIGFyZ3VtZW50LmApOwogdGVzdFN5bnRheEVycm9yKGBpbXBv
cnQ8YCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICc8Jy4gaW1wb3J0IGNhbGwgZXhw
ZWN0cyBleGFjdGx5IG9uZSBhcmd1bWVudC5gKTsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvcmVzb3VyY2VzL3NoYWRvdy1yZWFsbS1leGFtcGxlLW1vZHVsZS5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL3Jlc291cmNlcy9zaGFkb3ctcmVhbG0tZXhhbXBsZS1tb2R1bGUuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGI0ZjU3OWMyZjlhNmRjMjM5MGJlMmZhMDU1Y2U2OGQ2ODAzMzBmMwotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL3Jlc291cmNlcy9zaGFkb3ctcmVhbG0tZXhhbXBsZS1tb2R1bGUu
anMKQEAgLTAsMCArMSwyNSBAQAordmFyIGNhbGxDb3VudCA9IDA7CisKK2Z1bmN0aW9uIHB1dElu
R2xvYmFsKGtleSwgdmFsKSB7CisgICAgY2FsbENvdW50Kys7CisgICAgZ2xvYmFsVGhpcy5rZXkg
PSB2YWw7Cit9CisKK2Z1bmN0aW9uIGdldEZyb21HbG9iYWwoa2V5KSB7CisgICAgY2FsbENvdW50
Kys7CisgICAgcmV0dXJuIGdsb2JhbFRoaXMua2V5OworfQorCit2YXIgYW5PYmplY3QgPSBuZXcg
T2JqZWN0KCk7CisKK2Z1bmN0aW9uIGdldEFuT2JqZWN0KCkgeworICAgIGNhbGxDb3VudCsrOwor
ICAgIHJldHVybiBhbk9iamVjdDsKK30KKworZnVuY3Rpb24gZ2V0Q2FsbENvdW50KCkgeworICAg
IHJldHVybiBjYWxsQ291bnQ7Cit9CisKK3ZhciBhbnN3ZXIgPSA2OworZXhwb3J0IHsgYW5PYmpl
Y3QsIGFuc3dlciwgZ2V0Q2FsbENvdW50LCBnZXRGcm9tR2xvYmFsLCBnZXRBbk9iamVjdCwgcHV0
SW5HbG9iYWwgfTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3NoYWRvdy1yZWFsbS1ldmFs
dWF0ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3NoYWRvdy1yZWFsbS1ldmFsdWF0ZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xMDM2MDMxMTliODIyMmQ5MDNkZmU1YjYzNWIyY2Y4ODdmYzc2ZTVmCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc2hhZG93LXJlYWxtLWV2YWx1YXRlLmpzCkBAIC0wLDAg
KzEsMTUzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlU2hhZG93UmVhbG09MSIpCisKK2Z1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAke2V4cGVjdGVkfSBi
dXQgZ290ICR7YWN0dWFsfWApOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJv
clR5cGUsIGFzc2VydGlvbkZuKSB7CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7CisgICAgICAg
IGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisK
KyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0gYnV0IGdvdCAke2Vycm9yLm5hbWV9
YCk7CisKKyAgICBhc3NlcnRpb25GbihlcnJvcik7Cit9CisKKy8vIGJhc2ljIGV2YWx1YXRpb24g
YW5kIHN0YXRlIHNldHRpbmcKK3sKKyAgICBsZXQgcmVhbG0gPSBuZXcgU2hhZG93UmVhbG0oKTsK
KyAgICBsZXQgb3RoZXJSZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOworCisgICAgc2hvdWxkQmUo
cmVhbG0uZXZhbHVhdGUoIjEiKSwgMSk7CisgICAgdmFyIHggPSAyOworICAgIHJlYWxtLmV2YWx1
YXRlKCJ2YXIgeCA9IDEiKTsKKyAgICBzaG91bGRCZShyZWFsbS5ldmFsdWF0ZSgieCIpLCAxKTsK
KyAgICBzaG91bGRCZSh4LCAyKTsKKworICAgIC8vIHNjb3BlIGlzbid0IHNoYXJlZCBhY3Jvc3Mg
cmVhbG1zCisgICAgc2hvdWxkQmUob3RoZXJSZWFsbS5ldmFsdWF0ZSgiZ2xvYmFsVGhpcy54Iiks
IHVuZGVmaW5lZCk7Cit9CisKKy8vIGFjY2Vzc2luZyBgZ2xvYmFsVGhpc2Agd2l0aGluIGFuZCBv
dXRzaWRlIG9mIGEgc2hhZG93IHJlYWxtCit7CisgICAgbGV0IHJlYWxtID0gbmV3IFNoYWRvd1Jl
YWxtKCk7CisgICAgZ2xvYmFsVGhpcy5oaSA9IDY7CisKKyAgICBzaG91bGRCZShyZWFsbS5ldmFs
dWF0ZSgiZ2xvYmFsVGhpcy5oaSIpLCB1bmRlZmluZWQpOworCisgICAgcmVhbG0uZXZhbHVhdGUo
Imdsb2JhbFRoaXMuaGkgPSAnZmFsYSBhbWlnbyciKTsKKworICAgIHNob3VsZEJlKHJlYWxtLmV2
YWx1YXRlKCJnbG9iYWxUaGlzLmhpIiksICJmYWxhIGFtaWdvIik7CisgICAgc2hvdWxkQmUoZ2xv
YmFsVGhpcy5oaSwgNik7Cit9CisKKy8vIGVuc3VyZSB0aGF0IGVycm9ycyB0aHJvd24gaXNuJ3Qg
YXNzb2NpYXRlZCB3aXRoIHRoZSBzaGFkb3cgcmVhbG0ncyBnbG9iYWwgb2JqZWN0Cit7CisgICAg
bGV0IHJlYWxtID0gbmV3IFNoYWRvd1JlYWxtKCk7CisgICAgc2hvdWxkVGhyb3coCisgICAgICAo
KSA9PiB7IHJlYWxtLmV2YWx1YXRlKCIuLiIpOyB9LAorICAgICAgU3ludGF4RXJyb3IsCisgICAg
ICAoZXJyKSA9PiB7CisgICAgICAgICAgc2hvdWxkQmUoJC5nbG9iYWxPYmplY3RGb3IoZXJyKSwg
Z2xvYmFsVGhpcyk7CisgICAgICAgICAgc2hvdWxkQmUoU3RyaW5nKGVyciksIGBTeW50YXhFcnJv
cjogVW5leHBlY3RlZCB0b2tlbiAnLidgKTsKKyAgICAgIH0pOworfQorCisvLyBlbnN1cmUgdGhh
dCBlcnJvcnMgdGhyb3duIGRvbid0IGNhcnJ5IGluZm9ybWF0aW9uIGZyb20gdGhlIHNoYWRvdyBy
ZWFsbQoreworICAgIGxldCByZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOworICAgIHNob3VsZFRo
cm93KAorICAgICAgKCkgPT4geyByZWFsbS5ldmFsdWF0ZSgidGhyb3cgbmV3IEVycm9yKCdzZWNy
ZXQnKSIpOyB9LAorICAgICAgVHlwZUVycm9yLAorICAgICAgKGVycikgPT4geworICAgICAgICAg
IHNob3VsZEJlKCQuZ2xvYmFsT2JqZWN0Rm9yKGVyciksIGdsb2JhbFRoaXMpOworICAgICAgICAg
IHNob3VsZEJlKFN0cmluZyhlcnIpLCAiVHlwZUVycm9yOiBFcnJvciBlbmNvdW50ZXJlZCBkdXJp
bmcgZXZhbHVhdGlvbiIpOworICAgICAgfSk7Cit9CisKKy8vIHdyYXBwZWQgZnVuY3Rpb25zIHBy
b3RlY3QgdGhlIHNoYWRvdyByZWFsbQoreworICAgIGxldCByZWFsbSA9IG5ldyBTaGFkb3dSZWFs
bSgpOworICAgIGxldCB3cmFwcGVkSW52b2tlQW5kQWRkID0gcmVhbG0uZXZhbHVhdGUoImZ1bmN0
aW9uIGludm9rZUFuZEFkZCh4Rm4sIHlGbikgeyByZXR1cm4geEZuKCkgKyB5Rm4oKTsgfTsgaW52
b2tlQW5kQWRkIik7CisgICAgc2hvdWxkQmUod3JhcHBlZEludm9rZUFuZEFkZCgoKSA9PiB7IHJl
dHVybiAxIH0sICgpID0+IHsgcmV0dXJuIDIgfSksIDMpOworICAgIHNob3VsZEJlKCQuZ2xvYmFs
T2JqZWN0Rm9yKHdyYXBwZWRJbnZva2VBbmRBZGQpLCBnbG9iYWxUaGlzKTsKKworICAgIC8vIG5h
bWUgYW5kIGxlbmd0aCBwcm9wZXJ0aWVzIGZyb20gd3JhcHBlZCBmdW5jdGlvbiBhcmUgYWJzZW50
CisgICAgc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3cmFwcGVkSW52
b2tlQW5kQWRkLCAibGVuZ3RoIiksIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcih3cmFwcGVkSW52b2tlQW5kQWRkLCAibmFtZSIpLCB1bmRl
ZmluZWQpOworCisgICAgLy8gY2FuJ3QgcGFzcyBvYmplY3RzIGludG8gYSBzaGFkb3cgcmVhbG0t
d3JhcHBlZCBmdW5jdGlvbgorICAgIGxldCBudW1iZXJPYmogPSB7IHZhbHVlT2YoKSB7IHJldHVy
biAtMSB9IH07CisgICAgc2hvdWxkVGhyb3coCisgICAgICAoKSA9PiB7IHdyYXBwZWRJbnZva2VB
bmRBZGQobnVtYmVyT2JqLCAxKTsgfSwKKyAgICAgIFR5cGVFcnJvciwKKyAgICAgIChlcnIpID0+
IHsKKyAgICAgICAgICBzaG91bGRCZSgkLmdsb2JhbE9iamVjdEZvcihlcnIpLCBnbG9iYWxUaGlz
KTsKKyAgICAgICAgICBzaG91bGRCZShTdHJpbmcoZXJyKSwgIlR5cGVFcnJvcjogdmFsdWUgcGFz
c2luZyBiZXR3ZWVuIHJlYWxtcyBtdXN0IGJlIGNhbGxhYmxlIG9yIHByaW1pdGl2ZSIpOworICAg
ICAgfSk7Cit9CisKK3sKKyAgICBsZXQgcmVhbG0gPSBuZXcgU2hhZG93UmVhbG0oKTsKKyAgICAv
LyBjYW4ndCBjYWxsIGBldmFsdWF0ZWAgb24gYSBub24gc2hhZG93IHJlYWxtCisgICAgbGV0IG5v
dFJlYWxtID0ge307CisgICAgc2hvdWxkVGhyb3coCisgICAgICAoKSA9PiB7IHJlYWxtLmV2YWx1
YXRlLmNhbGwobm90UmVhbG0sICcxJyk7IH0sCisgICAgICBUeXBlRXJyb3IsCisgICAgICAoZXJy
KSA9PiB7IHNob3VsZEJlKCQuZ2xvYmFsT2JqZWN0Rm9yKGVyciksIGdsb2JhbFRoaXMpOyB9Cisg
ICAgKTsKK30KKworLy8gdHJpZ2dlciBKSVQKK3sKKyAgICBmdW5jdGlvbiBkb0V2YWwocmVhbG0s
IHMpCisgICAgeworICAgICAgICByZXR1cm4gcmVhbG0uZXZhbHVhdGUocyk7CisgICAgfQorCisg
ICAgbm9JbmxpbmUoZG9FdmFsKTsKKworICAgIGxldCByZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgp
OworICAgIHJlYWxtLmV2YWx1YXRlKCJnbG9iYWxUaGlzLnNlY3JldCA9IDE7Iik7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQorICAgICAgICBzaG91bGRCZShkb0V2YWwocmVh
bG0sICc0MicpLCA0Mik7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsK
KyAgICAgICAgbGV0IGYgPSBkb0V2YWwocmVhbG0sICcoeCkgPT4geyByZXR1cm4geCgpICsgZ2xv
YmFsVGhpcy5zZWNyZXQ7IH0nKTsKKyAgICAgICAgc2hvdWxkQmUoJC5nbG9iYWxPYmplY3RGb3Io
ZiksIGdsb2JhbFRoaXMpOworICAgICAgICBzaG91bGRCZShmKCgpID0+IHsgcmV0dXJuIDQxOyB9
KSwgNDIpOworICAgIH0KKyAgICAvLyAocG90ZW50aWFsKSBpbmxpbmluZyBvZiB3cmFwcGVkIGZ1
bmN0aW9uIHVzZXMgY29ycmVjdCBnbG9iYWwgb2JqZWN0CisgICAgbGV0IGYgPSBkb0V2YWwocmVh
bG0sICcoeCkgPT4geyByZXR1cm4geCgpICsgZ2xvYmFsVGhpcy5zZWNyZXQ7IH0nKTsKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgc2hvdWxkQmUoJC5nbG9i
YWxPYmplY3RGb3IoZiksIGdsb2JhbFRoaXMpOworICAgICAgICBzaG91bGRCZShmKCgpID0+IHsg
cmV0dXJuIDQxOyB9KSwgNDIpOworICAgIH0KKyAgICAvLyAocG90ZW50aWFsKSBpbmxpbmluZyBp
bnNpZGUgYSByZWFsbSB1c2VzIGNvcnJlY3QgZ2xvYmFsIG9iamVjdAorICAgIGxldCBsb29wSW5z
aWRlID0gZG9FdmFsKHJlYWxtLCAnKHgpID0+IHsgbGV0IGFjYyA9IDA7IGZvciAodmFyIGkgPSAw
OyBpIDwgMTAwMDA7ICsraSkgeyBhY2MgKz0geCgpOyB9OyByZXR1cm4gYWNjOyB9Jyk7CisgICAg
Z2xvYmFsVGhpcy5zZWNyZXQgPSAtMTsKKyAgICBzaG91bGRCZShsb29wSW5zaWRlKCgpID0+IHsg
cmV0dXJuIGdsb2JhbFRoaXMuc2VjcmV0OyB9KSwgLTEwMDAwKTsKK30KKworLy8gZXZhbHVhdGUg
c3BlY3MKK3sKKyAgICBzaG91bGRCZSh0eXBlb2YgU2hhZG93UmVhbG0ucHJvdG90eXBlLmV2YWx1
YXRlLCAiZnVuY3Rpb24iKTsKKworICAgIGxldCBldmFsdWF0ZU5hbWUgPSBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKFNoYWRvd1JlYWxtLnByb3RvdHlwZS5ldmFsdWF0ZSwgIm5hbWUi
KTsKKyAgICBzaG91bGRCZShldmFsdWF0ZU5hbWUudmFsdWUsICJldmFsdWF0ZSIpOworICAgIHNo
b3VsZEJlKGV2YWx1YXRlTmFtZS5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoZXZh
bHVhdGVOYW1lLndyaXRhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoZXZhbHVhdGVOYW1lLmNv
bmZpZ3VyYWJsZSwgdHJ1ZSk7CisKKyAgICBsZXQgZXZhbHVhdGVMZW5ndGggPSBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKFNoYWRvd1JlYWxtLnByb3RvdHlwZS5ldmFsdWF0ZSwgImxl
bmd0aCIpOworICAgIHNob3VsZEJlKGV2YWx1YXRlTGVuZ3RoLnZhbHVlLCAxKTsKKyAgICBzaG91
bGRCZShldmFsdWF0ZUxlbmd0aC5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoZXZh
bHVhdGVMZW5ndGgud3JpdGFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShldmFsdWF0ZUxlbmd0
aC5jb25maWd1cmFibGUsIHRydWUpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc2hh
ZG93LXJlYWxtLWltcG9ydC12YWx1ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3NoYWRvdy1yZWFsbS1p
bXBvcnQtdmFsdWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQzY2Q4ZTYyM2YxZjZkMTM5MzFjN2I5ZGI4ZGRl
MzA4NDYwOGE4NQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3NoYWRvdy1yZWFs
bS1pbXBvcnQtdmFsdWUuanMKQEAgLTAsMCArMSwxNDggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygi
LS11c2VTaGFkb3dSZWFsbT0xIikKKwordmFyIGFib3J0ID0gJHZtLmFib3J0OworCitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdv
dCAke2FjdHVhbH1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBl
KSB7CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisKKyAgICBpZiAoIShlcnJvciBp
bnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQg
JHtlcnJvclR5cGUubmFtZX0hIGdvdCAke2Vycm9yLm5hbWV9YCk7Cit9CisKK2FzeW5jIGZ1bmN0
aW9uIHNob3VsZFRocm93QXN5bmMoZnVuYywgZXJyb3JUeXBlKSB7CisgICAgbGV0IGVycm9yOwor
ICAgIHRyeSB7CisgICAgICAgIGF3YWl0IGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgIGVycm9yID0gZTsKKyAgICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9y
VHlwZSkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFt
ZX0hIGdvdCAke2Vycm9yLm5hbWV9IHdpdGggbWVzc2FnZSAke2Vycm9yLm1lc3NhZ2V9YCk7Cit9
CisKKyhhc3luYyBmdW5jdGlvbiAoKSB7CisgICAgY29uc3QgaW1wb3J0UGF0aCA9ICIuL3Jlc291
cmNlcy9zaGFkb3ctcmVhbG0tZXhhbXBsZS1tb2R1bGUuanMiOworICAgIGNvbnN0IHsgYW5zd2Vy
LCBnZXRDYWxsQ291bnQsIHB1dEluR2xvYmFsLCBnZXRGcm9tR2xvYmFsLCBnZXRBbk9iamVjdCB9
ID0gYXdhaXQgaW1wb3J0KGltcG9ydFBhdGgpOworICAgIGNvbnN0IG91dGVyQW5zd2VyID0gYW5z
d2VyOworICAgIGNvbnN0IG91dGVyR2V0Q2FsbENvdW50ID0gZ2V0Q2FsbENvdW50OworICAgIGNv
bnN0IG91dGVyUHV0SW5HbG9iYWwgPSBwdXRJbkdsb2JhbDsKKyAgICBjb25zdCBvdXRlckdldEZy
b21HbG9iYWwgPSBnZXRGcm9tR2xvYmFsOworICAgIGNvbnN0IG91dGVyR2V0QW5PYmplY3QgPSBn
ZXRBbk9iamVjdDsKKworICAgIHsKKyAgICAgICAgbGV0IHJlYWxtID0gbmV3IFNoYWRvd1JlYWxt
KCk7CisKKyAgICAgICAgLy8gdXBkYXRlIGxvY2FsIG1vZHVsZSBzdGF0ZSArIGNoZWNrIGl0Cisg
ICAgICAgIHNob3VsZEJlKG91dGVyR2V0Q2FsbENvdW50KCksIDApOworICAgICAgICBvdXRlckdl
dEFuT2JqZWN0KCk7CisgICAgICAgIHNob3VsZEJlKG91dGVyR2V0Q2FsbENvdW50KCksIDEpOwor
ICAgICAgICAvLyB1cGRhdGUgcmVhbG0gbW9kdWxlIHN0YXRlICsgY2hlY2sgaXQKKyAgICAgICAg
bGV0IGlubmVyR2V0Q2FsbENvdW50ID0gYXdhaXQgcmVhbG0uaW1wb3J0VmFsdWUoaW1wb3J0UGF0
aCwgImdldENhbGxDb3VudCIpOworICAgICAgICBsZXQgaW5uZXJQdXRJbkdsb2JhbCA9IGF3YWl0
IHJlYWxtLmltcG9ydFZhbHVlKGltcG9ydFBhdGgsICJwdXRJbkdsb2JhbCIpOworICAgICAgICBz
aG91bGRCZShpbm5lckdldENhbGxDb3VudCgpLCAwKTsKKyAgICAgICAgaW5uZXJQdXRJbkdsb2Jh
bCgic29tZXRoaW5nIiwgInJhbmRvbSIpOworICAgICAgICBzaG91bGRCZShpbm5lckdldENhbGxD
b3VudCgpLCAxKTsKKyAgICAgICAgLy8gcmUtaW1wb3J0aW5nIHRoZSBtb2R1bGUgaW50byB0aGUg
cmVhbG0gZG9lc24ndCByZWxvYWQgdGhlIG1vZHVsZQorICAgICAgICBpbm5lckdldENhbGxDb3Vu
dCA9IGF3YWl0IHJlYWxtLmltcG9ydFZhbHVlKGltcG9ydFBhdGgsICJnZXRDYWxsQ291bnQiKTsK
KyAgICAgICAgc2hvdWxkQmUoaW5uZXJHZXRDYWxsQ291bnQoKSwgMSk7CisgICAgICAgIC8vIHRo
ZSAob3V0ZXIpIGxvY2FsIG1vZHVsZSBzdGF0ZSBzdGF5cyBpbnRhY3QKKyAgICAgICAgc2hvdWxk
QmUob3V0ZXJHZXRDYWxsQ291bnQoKSwgMSk7CisKKyAgICAgICAgLy8gb25lIGNhbiBpbXBvcnRl
ZCBwcmltaXRpdmUvY2FsbGFibGUgdmFyaWFibGVzIGp1c3QgZmluZQorICAgICAgICAvLyBzaG91
bGRCZShpbm5lckFuc3dlciwgb3V0ZXJBbnN3ZXIpOworICAgICAgICBsZXQgaW5uZXJBbnN3ZXIg
PSBhd2FpdCByZWFsbS5pbXBvcnRWYWx1ZShpbXBvcnRQYXRoLCAiYW5zd2VyIik7CisgICAgICAg
IHNob3VsZEJlKGlubmVyQW5zd2VyLCBvdXRlckFuc3dlcik7CisKKyAgICAgICAgLy8gaW1wb3J0
ZWQgdmFyaWFibGVzIGFyZSBjaGVja2VkIGZvciBwcmltdGl2ZS9jYWxsYWJsZS1uZXNzCisgICAg
ICAgIGF3YWl0IHNob3VsZFRocm93QXN5bmMoYXN5bmMgKCkgPT4geyBsZXQgeCA9IGF3YWl0IHJl
YWxtLmltcG9ydFZhbHVlKGltcG9ydFBhdGgsICJhbk9iamVjdCIpOyB9LCBUeXBlRXJyb3IpOwor
CisgICAgICAgIC8vIGltcG9ydGluZyBub24tZXhpc3RlbnQgcmVmIGZhaWxzCisgICAgICAgIGF3
YWl0IHNob3VsZFRocm93QXN5bmMoYXN5bmMgKCkgPT4geyBsZXQgeCA9IGF3YWl0IHJlYWxtLmlt
cG9ydFZhbHVlKGltcG9ydFBhdGgsICJub3RoaW5nIik7IH0sIFR5cGVFcnJvcik7CisKKyAgICAg
ICAgLy8gaW1wb3J0aW5nIGZyb20gbm9uLWV4aXN0ZW50IGZpbGUgZmFpbHMKKyAgICAgICAgYXdh
aXQgc2hvdWxkVGhyb3dBc3luYyhhc3luYyAoKSA9PiB7IGxldCB4ID0gYXdhaXQgcmVhbG0uaW1w
b3J0VmFsdWUoInJhbmRvbSIsICJub3RoaW5nIik7IH0sIFR5cGVFcnJvcik7CisKKyAgICAgICAg
Ly8gd2UgY2FuIGltcG9ydCBmdW5jdGlvbnMgdGhyb3VnaCBhbiBpbm5lciByZWFsbSBmb3IgdXNl
IGluIHRoZSBvdXRlcgorICAgICAgICBsZXQgaW5uZXJHZXRGcm9tR2xvYmFsID0gYXdhaXQgcmVh
bG0uaW1wb3J0VmFsdWUoaW1wb3J0UGF0aCwgImdldEZyb21HbG9iYWwiKTsKKyAgICAgICAgaW5u
ZXJQdXRJbkdsb2JhbCgic2FsdXRhdGlvbiIsICJzYXJhdmEiKTsKKyAgICAgICAgc2hvdWxkQmUo
aW5uZXJHZXRGcm9tR2xvYmFsKCJzYWx1dGF0aW9uIiksICJzYXJhdmEiKTsKKworICAgICAgICAv
LyBpbm5lciBnbG9iYWwgc3RhdGUgaXMgdW5jaGFuZ2VkIGJ5IG91dGVyIGdsb2JhbCBzdGF0ZSBj
aGFuZ2UKKyAgICAgICAgb3V0ZXJQdXRJbkdsb2JhbCgic2FsdXRhdGlvbiIsICJoZWxsbyB3b3Js
ZCEiKTsKKyAgICAgICAgc2hvdWxkQmUob3V0ZXJHZXRGcm9tR2xvYmFsKCJzYWx1dGF0aW9uIiks
ICJoZWxsbyB3b3JsZCEiKTsKKyAgICAgICAgc2hvdWxkQmUoaW5uZXJHZXRGcm9tR2xvYmFsKCJz
YWx1dGF0aW9uIiksICJzYXJhdmEiKTsKKworICAgICAgICAvLyB3cmFwcGVkIGZ1bmN0aW9ucyBj
aGVjayBhcmd1bWVudHMgZm9yIHByaW1pdGl2ZS9jYWxsYWJsZS1uZXNzCisgICAgICAgIHNob3Vs
ZFRocm93KCgpID0+IHsgaW5uZXJQdXRJbkdsb2JhbCgidHJlYXN1cmUiLCBuZXcgT2JqZWN0KCkp
OyB9LCBUeXBlRXJyb3IpOworCisgICAgICAgIC8vIGltcG9ydGVkIGZ1bmN0aW9ucyBhcmUgd3Jh
cHBlZCB3aXRoIGNvcnJlY3QgcmV0dXJuIHZhbHVlIGNoZWNrcworICAgICAgICBsZXQgZ2V0QW5P
YmplY3RGbiA9IGF3YWl0IHJlYWxtLmltcG9ydFZhbHVlKGltcG9ydFBhdGgsICJnZXRBbk9iamVj
dCIpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IGdldEFuT2JqZWN0Rm4oKTsgfSwgVHlw
ZUVycm9yKTsKKworICAgICAgICAvLyB0aHJlYWQgYSBmdW5jdGlvbiBpbiBhbmQgb3V0IG9mIGEg
cmVhbG0gdG8gd3JhcCBpdCB1cAorICAgICAgICBpbm5lclB1dEluR2xvYmFsKCJvdXRlci1yZWFs
bS1wdXQiLCBvdXRlclB1dEluR2xvYmFsKTsKKyAgICAgICAgd3JhcHBlZE91dGVyUHV0SW5HbG9i
YWwgPSBpbm5lckdldEZyb21HbG9iYWwoIm91dGVyLXJlYWxtLXB1dCIpOworCisgICAgICAgIC8v
IGl0IHN0aWxsIG1hbmlwdWF0ZXMgdGhlIGNvcnJlY3QgZ2xvYmFsIG9iamVjdCBzdGF0ZQorICAg
ICAgICB3cmFwcGVkT3V0ZXJQdXRJbkdsb2JhbCgidHJlYXN1cmUiLCAic2hpbnkgdGluIHNjcmFw
Iik7CisgICAgICAgIHNob3VsZEJlKG91dGVyR2V0RnJvbUdsb2JhbCgidHJlYXN1cmUiKSwgInNo
aW55IHRpbiBzY3JhcCIpOworCisgICAgICAgIC8vIHdyYXBwZWQgZnVuY3Rpb25zIGNoZWNrIGFy
Z3VtZW50cyBmb3IgcHJpbWl0aXZlL2NhbGxhYmxlLW5lc3MKKyAgICAgICAgc2hvdWxkVGhyb3co
KCkgPT4geyB3cmFwcGVkT3V0ZXJQdXRJbkdsb2JhbCgidHJlYXN1cmUiLCBuZXcgT2JqZWN0KCkp
OyB9LCBUeXBlRXJyb3IpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IHdyYXBwZWRPdXRl
clB1dEluR2xvYmFsKG5ldyBPYmplY3QoKSwgInNoaW55IHRpbiBzY3JhcCIpOyB9LCBUeXBlRXJy
b3IpOworCisgICAgICAgIC8vIG11c3QgYmUgY2FsbGVkIG9uIGEgU2hhZG93UmVhbG0KKyAgICAg
ICAgbGV0IG5vdFJlYWxtID0ge307CisgICAgICAgIHNob3VsZFRocm93KAorICAgICAgICAgICgp
ID0+IHsgcmVhbG0uaW1wb3J0VmFsdWUuY2FsbChub3RSZWFsbSwgaW1wb3J0UGF0aCwgImFuc3dl
ciIpOyB9LAorICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAoZXJyKSA9PiB7IHNob3Vs
ZEJlKCQuZ2xvYmFsT2JqZWN0Rm9yKGVyciksIGdsb2JhbFRoaXMpOyB9CisgICAgICAgICk7Cisg
ICAgfQorCisgICAgLy8gdHJpZ2dlciBKSVQKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIGRvSW1w
b3J0KHJlYWxtLCBzKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gcmVhbG0uaW1wb3J0
VmFsdWUoaW1wb3J0UGF0aCwgcyk7CisgICAgICAgIH0KKworICAgICAgICBub0lubGluZShkb0lt
cG9ydCk7CisKKyAgICAgICAgbGV0IHJlYWxtID0gbmV3IFNoYWRvd1JlYWxtKCk7CisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgICAgICAgICAgbGV0IHJlc3Vs
dCA9IGF3YWl0IGRvSW1wb3J0KHJlYWxtLCAiZ2V0Q2FsbENvdW50Iik7CisgICAgICAgICAgICBz
aG91bGRCZShyZXN1bHQoKSwgMCk7CisgICAgICAgIH0KKyAgICB9Cit9KCkpLmNhdGNoKChlcnJv
cikgPT4geworICAgIHByaW50KFN0cmluZyhlcnJvcikpOworICAgIGFib3J0KCk7Cit9KTsKKwor
eworICAgIHNob3VsZEJlKHR5cGVvZiBTaGFkb3dSZWFsbS5wcm90b3R5cGUuaW1wb3J0VmFsdWUs
ICJmdW5jdGlvbiIpOworCisgICAgbGV0IGltcG9ydFZhbHVlTmFtZSA9IE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoU2hhZG93UmVhbG0ucHJvdG90eXBlLmltcG9ydFZhbHVlLCAibmFt
ZSIpOworICAgIHNob3VsZEJlKGltcG9ydFZhbHVlTmFtZS52YWx1ZSwgImltcG9ydFZhbHVlIik7
CisgICAgc2hvdWxkQmUoaW1wb3J0VmFsdWVOYW1lLmVudW1lcmFibGUsIGZhbHNlKTsKKyAgICBz
aG91bGRCZShpbXBvcnRWYWx1ZU5hbWUud3JpdGFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShp
bXBvcnRWYWx1ZU5hbWUuY29uZmlndXJhYmxlLCB0cnVlKTsKKworICAgIGxldCBpbXBvcnRWYWx1
ZUxlbmd0aCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU2hhZG93UmVhbG0ucHJv
dG90eXBlLmltcG9ydFZhbHVlLCAibGVuZ3RoIik7CisgICAgc2hvdWxkQmUoaW1wb3J0VmFsdWVM
ZW5ndGgudmFsdWUsIDIpOworICAgIHNob3VsZEJlKGltcG9ydFZhbHVlTGVuZ3RoLmVudW1lcmFi
bGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShpbXBvcnRWYWx1ZUxlbmd0aC53cml0YWJsZSwgZmFs
c2UpOworICAgIHNob3VsZEJlKGltcG9ydFZhbHVlTGVuZ3RoLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7
Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zaGFkb3ctcmVhbG0uanMgYi9KU1Rlc3Rz
L3N0cmVzcy9zaGFkb3ctcmVhbG0uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDYyYjg4YzZlMzk1OTk1NjM0ZDdl
ZDhlZjllOTlmMmMzZmQ4ODZhNQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3No
YWRvdy1yZWFsbS5qcwpAQCAtMCwwICsxLDM2IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNl
U2hhZG93UmVhbG09MSIpCisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsK
KyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBl
eHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfWApOworfQorCisvLyBzaGFkb3cg
cmVhbG0gc3BlY3MKK3sKKyAgICBsZXQgc2hhZG93UmVhbG1Qcm9wID0gT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcih0aGlzLCAiU2hhZG93UmVhbG0iKTsKKyAgICBzaG91bGRCZShzaGFk
b3dSZWFsbVByb3AuZW51bWVyYWJsZSwgZmFsc2UpOworICAgIHNob3VsZEJlKHNoYWRvd1JlYWxt
UHJvcC53cml0YWJsZSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1Qcm9wLmNvbmZp
Z3VyYWJsZSwgdHJ1ZSk7CisKKyAgICBsZXQgc2hhZG93UmVhbG1FdmFsdWF0ZSA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU2hhZG93UmVhbG0ucHJvdG90eXBlLCAiZXZhbHVhdGUi
KTsKKyAgICBzaG91bGRCZShzaGFkb3dSZWFsbUV2YWx1YXRlLmVudW1lcmFibGUsIGZhbHNlKTsK
KyAgICBzaG91bGRCZShzaGFkb3dSZWFsbUV2YWx1YXRlLndyaXRhYmxlLCB0cnVlKTsKKyAgICBz
aG91bGRCZShzaGFkb3dSZWFsbUV2YWx1YXRlLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7CisKKyAgICBs
ZXQgc2hhZG93UmVhbG1JbXBvcnRWYWx1ZSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoU2hhZG93UmVhbG0ucHJvdG90eXBlLCAiaW1wb3J0VmFsdWUiKTsKKyAgICBzaG91bGRCZShz
aGFkb3dSZWFsbUltcG9ydFZhbHVlLmVudW1lcmFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShz
aGFkb3dSZWFsbUltcG9ydFZhbHVlLndyaXRhYmxlLCB0cnVlKTsKKyAgICBzaG91bGRCZShzaGFk
b3dSZWFsbUltcG9ydFZhbHVlLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7CisKKyAgICBsZXQgc2hhZG93
UmVhbG1OYW1lID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihTaGFkb3dSZWFsbSwg
Im5hbWUiKTsKKyAgICBzaG91bGRCZShzaGFkb3dSZWFsbU5hbWUudmFsdWUsICJTaGFkb3dSZWFs
bSIpOworICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtTmFtZS5lbnVtZXJhYmxlLCBmYWxzZSk7Cisg
ICAgc2hvdWxkQmUoc2hhZG93UmVhbG1OYW1lLndyaXRhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxk
QmUoc2hhZG93UmVhbG1OYW1lLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7CisKKyAgICBsZXQgc2hhZG93
UmVhbG1MZW5ndGggPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFNoYWRvd1JlYWxt
LCAibGVuZ3RoIik7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1MZW5ndGgudmFsdWUsIDApOwor
ICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtTGVuZ3RoLmVudW1lcmFibGUsIGZhbHNlKTsKKyAgICBz
aG91bGRCZShzaGFkb3dSZWFsbUxlbmd0aC53cml0YWJsZSwgZmFsc2UpOworICAgIHNob3VsZEJl
KHNoYWRvd1JlYWxtTGVuZ3RoLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7Cit9CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwK
aW5kZXggMzEyYzI2ODZmMDA0YmI2MTI0YmE3ZDBlYjRjYmI0OWZlMDEwOGQ4MC4uMjg2YmE2MTg3
MDk1ZDY1MWIwZmNlZDA2OGEzNDc4YzNkY2M0MzY4OSAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0
MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApAQCAtOSw2
ICs5LDcgQEAgZmxhZ3M6CiAgIFRlbXBvcmFsOiB1c2VUZW1wb3JhbAogICBhcnJheS1maW5kLWZy
b20tbGFzdDogdXNlQXJyYXlGaW5kTGFzdE1ldGhvZAogICBPYmplY3QuaGFzT3duOiB1c2VIYXNP
d24KKyAgU2hhZG93UmVhbG06IHVzZVNoYWRvd1JlYWxtCiBza2lwOgogICBmZWF0dXJlczoKICAg
ICAtIEF0b21pY3Mud2FpdEFzeW5jCkBAIC0yMCw3ICsyMSw2IEBAIHNraXA6CiAgICAgLSBqc29u
LW1vZHVsZXMKICAgICAtIGNsYXNzLXN0YXRpYy1ibG9jawogICAgIC0gY2FsbGFibGUtYm91bmRh
cnktcmVhbG1zCi0gICAgLSBTaGFkb3dSZWFsbQogICBwYXRoczoKICAgICAtIHRlc3QvYnVpbHQt
aW5zL1RlbXBvcmFsL0NhbGVuZGFyCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0
YW50CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvdGVzdC9idWlsdC1pbnMvU2hhZG93UmVh
bG0vcHJvdG90eXBlL2V2YWx1YXRlL3JldHVybnMtcHJveHktY2FsbGFibGUtb2JqZWN0LmpzIGIv
SlNUZXN0cy90ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL1NoYWRvd1JlYWxtL3Byb3RvdHlwZS9ldmFs
dWF0ZS9yZXR1cm5zLXByb3h5LWNhbGxhYmxlLW9iamVjdC5qcwppbmRleCBkYjE5NGM2ODA5ZjVm
YmUwYmEwYTJlMDBhYzBmYjVkZGFmOTllYTI2Li42MWEwNGU0ZWUzMDRkZjc5MzE3NTBmM2ZmYTUx
Yzg0NTg3NzRjNjkzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvdGVzdC9idWlsdC1pbnMv
U2hhZG93UmVhbG0vcHJvdG90eXBlL2V2YWx1YXRlL3JldHVybnMtcHJveHktY2FsbGFibGUtb2Jq
ZWN0LmpzCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9TaGFkb3dSZWFsbS9w
cm90b3R5cGUvZXZhbHVhdGUvcmV0dXJucy1wcm94eS1jYWxsYWJsZS1vYmplY3QuanMKQEAgLTIy
LDQgKzIyLDQgQEAgbmV3IFByb3h5KGZuLCB7fSk7CiAKIGFzc2VydC5zYW1lVmFsdWUodHlwZW9m
IHByb3h5Q2FsbGFibGUsICdmdW5jdGlvbicsICd3cmFwcGVkIHByb3h5IGNhbGxhYmxlIG9iamVj
dCBpcyB0eXBlb2YgZnVuY3Rpb24nKTsKIGFzc2VydC5zYW1lVmFsdWUocHJveHlDYWxsYWJsZSgp
LCA0MiwgJ3dyYXBwZWRwZm4oKSByZXR1cm5zIDQyJyk7Ci1hc3NlcnQuc2FtZVZhbHVlKHByb3h5
Q2FsbGFibGUgaW5zdGFuY2VvZiBQcm94eSwgZmFsc2UsICd0aGUgd3JhcHBlZCBmdW5jdGlvbiAi
aGlkZXMiIHRoZSBwcm94eSBpbnN0YW5jZScpOworYXNzZXJ0LnNhbWVWYWx1ZSgobmV3IFByb3h5
KHByb3h5Q2FsbGFibGUsIHt9KSkoKSwgNDIsICd3cmFwcGVkIGZ1bmN0aW9ucyBjYW4gYmUgcHJv
eGllZCcpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL1NoYWRv
d1JlYWxtL3Byb3RvdHlwZS9ldmFsdWF0ZS93cmFwcGVkLWZ1bmN0aW9uLXByb3hpZWQtb2JzZXJ2
ZXMtYm91bmRhcnkuanMgYi9KU1Rlc3RzL3Rlc3QyNjIvdGVzdC9idWlsdC1pbnMvU2hhZG93UmVh
bG0vcHJvdG90eXBlL2V2YWx1YXRlL3dyYXBwZWQtZnVuY3Rpb24tcHJveGllZC1vYnNlcnZlcy1i
b3VuZGFyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NTM2M2NjOTg5YTc2ZDYyYThkMjlkY2JkOWUyZDAyZGYz
YTZjMDM1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL3Rlc3QvYnVpbHQtaW5z
L1NoYWRvd1JlYWxtL3Byb3RvdHlwZS9ldmFsdWF0ZS93cmFwcGVkLWZ1bmN0aW9uLXByb3hpZWQt
b2JzZXJ2ZXMtYm91bmRhcnkuanMKQEAgLTAsMCArMSw0MSBAQAorLy8gQ29weXJpZ2h0IChDKSAy
MDIxIFJpY2sgV2FsZHJvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFRoaXMgY29kZSBpcyBn
b3Zlcm5lZCBieSB0aGUgQlNEIGxpY2Vuc2UgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8q
LS0tCitlc2lkOiBzZWMtc2hhZG93cmVhbG0ucHJvdG90eXBlLmV2YWx1YXRlCitkZXNjcmlwdGlv
bjogPgorICBQcm94eWluZyBhIHdyYXBwZWQgZnVuY3Rpb24gYW5kIGludm9raW5nIGl0IHN0aWxs
IHBlcmZvcm1zIGJvdW5kYXJ5IGNoZWNrcworZmVhdHVyZXM6IFtTaGFkb3dSZWFsbV0KKy0tLSov
CisKK2Fzc2VydC5zYW1lVmFsdWUoCisgIHR5cGVvZiBTaGFkb3dSZWFsbS5wcm90b3R5cGUuZXZh
bHVhdGUsCisgICdmdW5jdGlvbicsCisgICdUaGlzIHRlc3QgbXVzdCBmYWlsIGlmIFNoYWRvd1Jl
YWxtLnByb3RvdHlwZS5ldmFsdWF0ZSBpcyBub3QgYSBmdW5jdGlvbicKKyk7CisKK2NvbnN0IHIg
PSBuZXcgU2hhZG93UmVhbG0oKTsKKworY29uc3Qgd3JhcHBlZCA9IHIuZXZhbHVhdGUoYCgpID0+
IHsgcmV0dXJuIDE7IH07YCk7CisKK2NvbnN0IHNlY3JldE9iaiA9IHt4OiAyfTsKKworbGV0IHJl
Y2VpdmVkOworCitjb25zdCBwcm94aWVkV3JhcHBlZCA9IG5ldyBQcm94eSh3cmFwcGVkLCB7Cisg
IGFwcGx5KHRhcmdldCwgXywgYXJncykgeworICAgIGFzc2VydC5zYW1lVmFsdWUodGFyZ2V0LCB3
cmFwcGVkKTsKKyAgICByZWNlaXZlZCA9IGFyZ3M7CisKKyAgICAvLyBPYmplY3QgY2FuJ3QgYmUg
c2VudCB0byB0aGUgb3RoZXIgUmVhbG0KKyAgICByZXR1cm4gdGFyZ2V0KHt4OiAxfSk7CisgIH0K
K30pOworCithc3NlcnQudGhyb3dzKAorICBUeXBlRXJyb3IsCisgICgpID0+IHByb3hpZWRXcmFw
cGVkKHNlY3JldE9iaiksCisgICdQcm94eWluZyBhIHdyYXBwZWQgZnVuY3Rpb24gYW5kIGludm9r
aW5nIGl0IHN0aWxsIHBlcmZvcm1zIGJvdW5kYXJ5IGNoZWNrcycKKyk7CisKK2Fzc2VydC5zYW1l
VmFsdWUocmVjZWl2ZWRbMF0sIHNlY3JldE9iaiwgJ3Byb3h5IHN0aWxsIGNhbGxzIHRoZSBoYW5k
bGVyIHRyYXAnKTsKK2Fzc2VydC5zYW1lVmFsdWUocmVjZWl2ZWQubGVuZ3RoLCAxKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439587</attachid>
            <date>2021-09-29 03:22:57 -0700</date>
            <delta_ts>2021-10-11 04:46:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230602-20210929122255.patch</filename>
            <type>text/plain</type>
            <size>88879</size>
            <attacher name="Phillip Mates">pmates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NTBjNDlhMTU2Y2NmNTkyZDFlYjA4NmE3YmRjMmM2YWY0ZGZkMjhhLi40ZDdiOTQ5Y2EyOWJjNDU3
MjcwZTZlOGEzNDI3NjJjMWI1MDY5MzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MCBAQAorMjAyMS0wOS0yOSAgUGhpbGxpcCBNYXRlcyAgPHBtYXRlc0BpZ2FsaWEuY29t
PgorCisgICAgICAgIHNoYWRvdyByZWFsbXMgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDYwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGF0aW9uIG9mIHRoZSBT
aGFkb3cgUmVhbG1zIHByb3Bvc2FsIChzdGFnZSAzIGluIFRDMzkpIFsxXQorCisgICAgICAgIE1h
aW4gQVBJcyBhZGRlZCBhcmUKKyAgICAgICAgIC0gYG5ldyBTaGFkb3dSZWFsbSgpYAorICAgICAg
ICAgICBjcmVhdGVzIGFuIG9iamVjdCB0aGF0IGhhcyBpdHMgb3duIGdsb2JhbCBvYmplY3QgYW5k
IG1vZHVsZSBncmFwaC4KKyAgICAgICAgIC0gU2hhZG93UmVhbG0ucHJvdG90eXBlLmV2YWx1YXRl
KHNvdXJjZVRleHQpCisgICAgICAgICAgIHRoaXMgYWxsb3dzIGZvciBldmFsdWF0aW5nIGNvZGUg
aW4gdGhlIGNvbnRleHQgb2YgdGhlIHJlYWxtLCB3aGljaAorICAgICAgICAgICBoYXMgaXRzIG93
biBtb2R1bGUgZ3JhcGggYW5kIGdsb2JhbCBvYmplY3QuCisgICAgICAgICAtIFNoYWRvd1JlYWxt
LnByb3RvdHlwZS5pbXBvcnRWYWx1ZShzcGVjaWZpZXIsIGV4cG9ydE5hbWUpCisgICAgICAgICAg
IHRoaXMgYWxsb3dzIGltcG9ydGluZyBtb2R1bGUgZXhwb3J0cyBpbiB0aGUgdGhlIGNvbnRleHQg
b2YgdGhlCisgICAgICAgICAgIHJlYWxtLCB3aGljaCBoYXMgaXRzIG93biBtb2R1bGUgZ3JhcGgg
YW5kIGdsb2JhbCBvYmplY3QuCisKKyAgICAgICAgVGhlIG1haW4gZGV0YWlsIG9mIHRoZSBTaGFk
b3cgUmVhbG0gaW1wbGVtZW50YXRpb24gaXMgdGhhdCB2YWx1ZXMKKyAgICAgICAgcGFzc2VkIGJl
dHdlZW4gcmVhbG1zIG11c3QgYmUgZWl0aGVyIHByaW1pdGl2ZXMgb3Igd3JhcHBlZCBjYWxsYWJs
ZXMuCisgICAgICAgIFdyYXBwZWQgY2FsbGFibGVzIHRoZW1zZWx2ZXMgYXJlIGNhbGxhYmxlcyB0
aGF0IGNoZWNrIHRoYXQgdGhlaXIKKyAgICAgICAgYXJndW1lbnRzIGFuZCByZXR1cm4gdmFsdWVz
IGFyZSBhbHNvIGVpdGhlciBwcmltaXRpdmVzIG9yIHdyYXBwZWQKKyAgICAgICAgY2FsbGFibGVz
LiBUaGlzIGRldGFpbCBpcyBpbXBsZW1lbnRlZCB2aWEgSlMgYnVpbHRpbnMgKyBhIGZldyBuZXcK
KyAgICAgICAgaW50cmluc2ljcy4KKworICAgICAgICBDYW4gYmUgZW5hYmxlZCB1c2luZyBgLS11
c2VTaGFkb3dSZWFsbT10cnVlYAorCisgICAgICAgIFsxXTogaHR0cHM6Ly9naXRodWIuY29tL3Rj
MzkvcHJvcG9zYWwtc2hhZG93cmVhbG0KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogYnVpbHRpbnMvU2hhZG93
UmVhbG1Qcm90b3R5cGUuanM6IEFkZGVkLgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS53cmFwKToK
KyAgICAgICAgKGV2YWx1YXRlKToKKyAgICAgICAgKGltcG9ydFZhbHVlKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgICogYnl0ZWNvZGUv
TGlua1RpbWVDb25zdGFudC5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdElzU2hhZG93UmVh
bG0pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAq
IGpzYy5jcHA6CisgICAgICAgIChKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAq
IHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9JbmRp
cmVjdEV2YWxFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0
YWJsZTo6Y3JlYXRlSW1wbCk6CisgICAgICAgIChKU0M6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGU6
OmNyZWF0ZVNhZmUpOgorICAgICAgICAoSlNDOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVu
SW1wbCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjcmVhdGVXaXRoQ3VzdG9tTWV0
aG9kVGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNoYWRvd1JlYWxtUHJvdG90eXBlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNoYWRvd1JlYWxtU3RydWN0dXJlIGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9PcHRpb25z
TGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5jcHA6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpTaGFkb3dSZWFsbUNvbnN0cnVjdG9yOjpTaGFkb3dSZWFsbUNv
bnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6U2hhZG93UmVhbG1Db25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RTaGFkb3dSZWFsbSk6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9TaGFk
b3dSZWFsbUNvbnN0cnVjdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaC4KKyAgICAgICAgKiBydW50aW1lL1NoYWRv
d1JlYWxtT2JqZWN0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlNoYWRvd1JlYWxtT2JqZWN0
OjpTaGFkb3dSZWFsbU9iamVjdCk6CisgICAgICAgIChKU0M6OlNoYWRvd1JlYWxtT2JqZWN0Ojp2
aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgIChKU0M6OlNoYWRvd1JlYWxtT2JqZWN0OjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpTaGFkb3dSZWFsbU9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvU2hhZG93UmVhbG1PYmplY3QuaDogQ29waWVkIGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oLgorICAgICAg
ICAqIHJ1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6U2hhZG93UmVhbG1Qcm90b3R5cGU6OlNoYWRvd1JlYWxtUHJvdG90eXBlKToKKyAgICAgICAg
KEpTQzo6U2hhZG93UmVhbG1Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1NoYWRvd1Jl
YWxtUHJvdG90eXBlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaC4KKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAg
ICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMjEtMDkt
MjggIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgRG9lc0dDQ2hl
Y2sgZG9lcyBub3QgdXNlIGVub3VnaCBiaXRzIGZvciBub2RlSW5kZXgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCA4ODAyZGMyYzdmNzg2NTFmOTE2ZTVhZjQwNDkwMDQ0OTkx
MDE5YzcwLi5hY2QzNjM0OTViYzViNDc3ZTAyYjcyOWRjZmVjODA5MWY2Mjk2YWY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMDMsNiArMTAzLDggQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX09CSkVDVF9MVVRfU09VUkNFUwogICAgIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBl
LmNwcAogICAgIHJ1bnRpbWUvUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwCiAgICAg
cnVudGltZS9TZXRQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9TaGFkb3dSZWFsbU9iamVjdC5j
cHAKKyAgICBydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvU3Ry
aW5nQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCiAgICAg
cnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKQEAgLTM2OSw2ICszNzEsNyBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9i
dWlsdGlucy9SZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQ
VENPUkVfRElSfS9idWlsdGlucy9TZXRJdGVyYXRvclByb3RvdHlwZS5qcwogICAgICR7SkFWQVND
UklQVENPUkVfRElSfS9idWlsdGlucy9TZXRQcm90b3R5cGUuanMKKyAgICAke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vYnVpbHRpbnMvU2hhZG93UmVhbG1Qcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vYnVpbHRpbnMvU3RyaW5nQ29uc3RydWN0b3IuanMKICAgICAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vYnVpbHRpbnMvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuanMKICAgICAke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvU3RyaW5nUHJvdG90eXBlLmpzCkBAIC0xMTQ1LDYg
KzExNDgsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIHJ1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oCiAgICAgcnVudGltZS9TY3JpcHRGZXRjaFBh
cmFtZXRlcnMuaAogICAgIHJ1bnRpbWUvU2NyaXB0RmV0Y2hlci5oCisgICAgcnVudGltZS9TaGFk
b3dSZWFsbU9iamVjdC5oCiAgICAgcnVudGltZS9TbG93UGF0aEZ1bmN0aW9uLmgKICAgICBydW50
aW1lL1Nsb3dQYXRoUmV0dXJuVHlwZS5oCiAgICAgcnVudGltZS9TbWFsbFN0cmluZ3MuaApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBlY2JjZTY3Zjc4YzAw
MzRjMTY2ZjUwZDU4OTJhNmYwOGM1ZGE0MGQ2Li5iY2YzZWVhMjljZTdiYjIwNzc4OWE1ZDljMjEz
N2FlY2RkYWE5Y2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQpAQCAtMTIyLDYgKzEyMiw3IEBAIEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMgPSBc
CiAgICAgJHtKYXZhU2NyaXB0Q29yZX0vYnVpbHRpbnMvUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90
b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1NldEl0ZXJhdG9yUHJv
dG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TZXRQcm90b3R5cGUu
anMgXAorICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1NoYWRvd1JlYWxtUHJvdG90eXBl
LmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TdHJpbmdDb25zdHJ1Y3Rvci5q
cyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvU3RyaW5nSXRlcmF0b3JQcm90b3R5
cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlwZS5q
cyBcCkBAIC0xODcsNiArMTg4LDcgQEAgT0JKRUNUX0xVVF9IRUFERVJTID0gXAogICAgIFJlZmxl
Y3RPYmplY3QubHV0LmggXAogICAgIFJlZ0V4cENvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBTZXRQ
cm90b3R5cGUubHV0LmggXAorICAgIFNoYWRvd1JlYWxtUHJvdG90eXBlLmx1dC5oIFwKICAgICBT
dHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgU3RyaW5nUHJvdG90eXBlLmx1dC5oIFwKICAg
ICBTeW1ib2xDb25zdHJ1Y3Rvci5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGNkOTgwZmY0YzEwYzYyNmU5NTgyZTcyM2ZhZjI4MDE0ZGRkZWQ3ZDMuLmJmOWQxZjAzM2Vk
NzgzZTVhZjZiYzc5MmUzZDJmZTZmNDhlYmMxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMjU0LDYgKzEyNTQsOSBAQAogCQk4NjAxNjFFMzBGM0E4M0MxMDBGODQ3MTAgLyog
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODYwMTYxREYwRjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk4NjAxNjFFNTBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2MUUxMEYz
QTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2MDE2MUU2MEYzQTgzQzEwMEY4NDcx
MCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxRTIwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJODYwMjk2MDIyNkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtQ29uc3Ry
dWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
MDI5NUZDMjZGQjU1MkMwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODYwMjk2MDQyNkZC
NTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjAyOTVGRTI2RkI1NTJEMDA3OEVCNjIgLyogU2hh
ZG93UmVhbG1PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk4NjAyOTYwNTI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Qcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDI5
NUZGMjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbVByb3RvdHlwZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2MDZEREVBMThEQTQ0QUIw
MEEzODNEMCAvKiBJZGVudGlmaWVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODYwNkRERTkxOERBNDRBQjAwQTM4M0QwIC8qIElkZW50aWZp
ZXJJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJODYwQkQ4MDExNDhFQTZGMjAwMTEyQjJGIC8qIEludHJpbnNpYy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCRjY0MkExNDhEQjJCNTAwNERF
MzZBIC8qIEludHJpbnNpYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTg2MTJFNENEMTUyMzg5RUMwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYxMkU0Q0IxNTIy
OTE4NDAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQyMTIsNiArNDIxNSwxMiBAQAogCQk4NjAxNjFERjBG
M0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTg2MDE2MUUxMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2Vt
Ymxlclg4Nl82NC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2Vt
Ymxlclg4Nl82NC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjAxNjFFMjBGM0E4
M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODYwMjk1RkEyNkZCNTUyQzAwNzhFQjYyIC8qIFNoYWRvd1JlYWxt
UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYWRv
d1JlYWxtUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYwMjk1
RkIyNkZCNTUyQzAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYWRvd1JlYWxtT2JqZWN0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYwMjk1RkMyNkZCNTUyQzAwNzhFQjYyIC8qIFNoYWRvd1Jl
YWxtQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhZG93
UmVhbG1Db25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjAyOTVG
RDI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYwMjk1RkUyNkZCNTUyRDAwNzhFQjYyIC8q
IFNoYWRvd1JlYWxtT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNo
YWRvd1JlYWxtT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MDI5NUZG
MjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbVByb3RvdHlwZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkb3dSZWFsbVByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4NjA0RjRGMjE0M0E2QzQ0MDBCMjk1RjUgLyogQ2hhbmdlTG9nICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbGlu
ZUVuZGluZyA9IDA7IHBhdGggPSBDaGFuZ2VMb2c7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg2MDZEREU5MThEQTQ0QUIwMEEzODNEMCAvKiBJZGVudGlmaWVySW5saW5lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZGVudGlmaWVySW5saW5lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4NjEyRTRDQjE1MjI5MTg0MDBDODM2QkUgLyogTWF0Y2hS
ZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0Y2hSZXN1bHQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc5NTIsNiArNzk2MSwxMiBAQAogCQkJCUE3
OTBERDY4MTgyRjQ5OTcwMDU4ODgwNyAvKiBTZXRJdGVyYXRvclByb3RvdHlwZS5oICovLAogCQkJ
CUE3Mjk5RDlGMTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuY3BwICovLAogCQkJCUE3
Mjk5REEwMTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuaCAqLywKKwkJCQk4NjAyOTVG
RDI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJ
ODYwMjk1RkMyNkZCNTUyQzAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtQ29uc3RydWN0b3IuaCAqLywK
KwkJCQk4NjAyOTVGQjI2RkI1NTJDMDA3OEVCNjIgLyogU2hhZG93UmVhbG1PYmplY3QuY3BwICov
LAorCQkJCTg2MDI5NUZFMjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbU9iamVjdC5oICov
LAorCQkJCTg2MDI5NUZBMjZGQjU1MkMwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbVByb3RvdHlwZS5j
cHAgKi8sCisJCQkJODYwMjk1RkYyNkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtUHJvdG90
eXBlLmggKi8sCiAJCQkJMEYyQjY2RDYxN0I2QjVBQjAwQTdBRTNGIC8qIFNpbXBsZVR5cGVkQXJy
YXlDb250cm9sbGVyLmNwcCAqLywKIAkJCQkwRjJCNjZENzE3QjZCNUFCMDBBN0FFM0YgLyogU2lt
cGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCAqLywKIAkJCQlGRThDMDMxMTI2NEE2OTEwMDAxQTQ0
QUQgLyogU2xvd1BhdGhGdW5jdGlvbi5oICovLApAQCAtMTA2NTksNiArMTA2NzQsOSBAQAogCQkJ
CTBGRUU5ODQxMUE4ODY1QjcwMDc1NEU5MyAvKiBTZXR1cFZhcmFyZ3NGcmFtZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJREMxN0U4MTgxQzlDOTFEOTAwOEE2QUIzIC8qIFNoYWRvd0NoaWNrZW4uaCBp
biBIZWFkZXJzICovLAogCQkJCURDMTdFODE5MUM5QzkxREIwMDhBNkFCMyAvKiBTaGFkb3dDaGlj
a2VuSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJODYwMjk2MDIyNkZCNTUyRDAwNzhFQjYy
IC8qIFNoYWRvd1JlYWxtQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2MDI5NjA0
MjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJODYwMjk2MDUyNkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRTMwMjJEMzFFM0Q3M0E1MDBCQUM0OTMgLyogU2lnaWxsQ3Jhc2hB
bmFseXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0RDhDNzgxRkNBM0NGQTAwMUQzMkFDIC8q
IFNpbXBsZU1hcmtpbmdDb25zdHJhaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjcwNTE3
QjZCNUFCMDBBN0FFM0YgLyogU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGE4NTk3M2U3ZWRjZTFiODM3MTFl
MDI5MTk3MmEzMWE0NDZhZjg1MTAuLjhmOTRiN2I0YjY3ZWU3NjkzMmI0YTgzNDU4YzVkYjIyMmRk
ZWU4YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTk3MCw2ICs5NzAsOSBAQCBy
dW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3BwCiBydW50aW1lL1Byb3h5T2JqZWN0LmNwcAogcnVu
dGltZS9Qcm94eVJldm9rZS5jcHAKIHJ1bnRpbWUvUmFuZG9taXppbmdGdXp6ZXJBZ2VudC5jcHAK
K3J1bnRpbWUvU2hhZG93UmVhbG1PYmplY3QuY3BwCitydW50aW1lL1NoYWRvd1JlYWxtQ29uc3Ry
dWN0b3IuY3BwCitydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmNwcAogcnVudGltZS9SZWZs
ZWN0T2JqZWN0LmNwcAogcnVudGltZS9SZWdFeHAuY3BwCiBydW50aW1lL1JlZ0V4cENhY2hlLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4
IDI5YmMzYWUwMTA0MTMwZTUxZWEyZTA5YWUzN2Q0MGJmMDIxMTMxNWEuLmNlZDMwYThlYThmNzFm
N2EwMmE2MmViNDJiNWUxNTc2NjI4OWRhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTYyLDYgKzYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgbWFjcm8oTnVtYmVyKSBcCiAgICAgbWFjcm8oQXJyYXkpIFwKICAgICBtYWNybyhBcnJh
eUJ1ZmZlcikgXAorICAgIG1hY3JvKFNoYWRvd1JlYWxtKSBcCiAgICAgbWFjcm8oUmVnRXhwKSBc
CiAgICAgbWFjcm8obWluKSBcCiAgICAgbWFjcm8odHJ1bmMpIFwKQEAgLTExNSw2ICsxMTYsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhhc3luY0dlbmVyYXRvclF1ZXVlSXRlbU5leHQp
IFwKICAgICBtYWNybyhkYXRlVGltZUZvcm1hdCkgXAogICAgIG1hY3JvKHRoaXMpIFwKKyAgICBt
YWNybyhpbXBvcnRJblJlYWxtKSBcCisgICAgbWFjcm8oZXZhbEluUmVhbG0pIFwKICAgICBtYWNy
byh0aGlzVGltZVZhbHVlKSBcCiAgICAgbWFjcm8obmV3VGFyZ2V0TG9jYWwpIFwKICAgICBtYWNy
byhkZXJpdmVkQ29uc3RydWN0b3IpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9TaGFkb3dSZWFsbVByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9TaGFkb3dSZWFsbVByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kN2E0Yjk4NTY3
NGY2Mjk3ZjhhMjhlMTg1ZTFlODYzY2JjODBiNWJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1NoYWRvd1JlYWxtUHJvdG90eXBlLmpzCkBAIC0wLDAg
KzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworQGdsb2JhbFByaXZhdGUKK2Z1bmN0aW9uIHdyYXAodGFyZ2V0KQoreworICAgICJ1c2Ugc3Ry
aWN0IjsKKworICAgIGlmIChAaXNDYWxsYWJsZSh0YXJnZXQpKSB7CisgICAgICAgIGxldCB3cmFw
cGVkID0gKC4uLmFyZ3MpID0+IHsKKyAgICAgICAgICAgIHZhciB3cmFwcGVkQXJncyA9IGFyZ3Mu
QG1hcChAd3JhcCkKKyAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRhcmdldC5AYXBwbHkoQHVu
ZGVmaW5lZCwgd3JhcHBlZEFyZ3MpOworICAgICAgICAgICAgcmV0dXJuIEB3cmFwKHJlc3VsdCk7
CisgICAgICAgIH07CisgICAgICAgIGRlbGV0ZSB3cmFwcGVkWyduYW1lJ107CisgICAgICAgIGRl
bGV0ZSB3cmFwcGVkWydsZW5ndGgnXTsKKyAgICAgICAgcmV0dXJuIHdyYXBwZWQ7CisgICAgfSBl
bHNlIGlmIChAaXNPYmplY3QodGFyZ2V0KSkgeworICAgICAgICBAdGhyb3dUeXBlRXJyb3IoInZh
bHVlIHBhc3NpbmcgYmV0d2VlbiByZWFsbXMgbXVzdCBiZSBjYWxsYWJsZSBvciBwcmltaXRpdmUi
KTsKKyAgICB9CisgICAgcmV0dXJuIHRhcmdldDsKK30KKworZnVuY3Rpb24gZXZhbHVhdGUoc291
cmNlVGV4dCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIUBpc1NoYWRvd1JlYWxt
KHRoaXMpKQorICAgICAgICBAdGhyb3dUeXBlRXJyb3IoImAlU2hhZG93UmVhbG0lLmV2YWx1YXRl
IHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIGEgU2hhZG93UmVhbG0gaW5zdGFuY2UiKTsKKworICAg
IGlmICh0eXBlb2Ygc291cmNlVGV4dCAhPT0gJ3N0cmluZycpCisgICAgICAgIEB0aHJvd1R5cGVF
cnJvcigiYCVTaGFkb3dSZWFsbSUuZXZhbHVhdGUgcmVxdWlyZXMgdGhhdCB0aGUgfHNvdXJjZVRl
eHR8IGFyZ3VtZW50IGJlIGEgc3RyaW5nIik7CisKKyAgICBsZXQgcmVzdWx0ID0gQGV2YWxJblJl
YWxtKHRoaXMsIHNvdXJjZVRleHQpCisgICAgcmV0dXJuIEB3cmFwKHJlc3VsdCk7Cit9CisKK2Z1
bmN0aW9uIGltcG9ydFZhbHVlKHNwZWNpZmllciwgZXhwb3J0TmFtZSkKK3sKKyAgICAidXNlIHN0
cmljdCI7CisKKyAgICBpZiAoIUBpc1NoYWRvd1JlYWxtKHRoaXMpKQorICAgICAgICBAdGhyb3dU
eXBlRXJyb3IoImAlU2hhZG93UmVhbG0lLmltcG9ydFZhbHVlIHJlcXVpcmVzIHRoYXQgfHRoaXN8
IGJlIGEgU2hhZG93UmVhbG0gaW5zdGFuY2UiKTsKKworICAgIGxldCBleHBvcnROYW1lU3RyID0g
QHRvU3RyaW5nKGV4cG9ydE5hbWUpOworICAgIGxldCBzcGVjaWZpZXJTdHIgPSBAdG9TdHJpbmco
c3BlY2lmaWVyKTsKKworICAgIGxldCBsb29rdXBCaW5kaW5nID0gKG1vZHVsZSkgPT4geworICAg
ICAgICBsZXQgbG9va3VwID0gbW9kdWxlW2V4cG9ydE5hbWVTdHJdCisgICAgICAgIGlmIChsb29r
dXAgPT09IEB1bmRlZmluZWQpCisgICAgICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIiVTaGFkb3dS
ZWFsbSUuaW1wb3J0VmFsdWUgcmVxdWlyZXMgfGV4cG9ydE5hbWV8IHRvIGV4aXN0IGluIHRoZSB8
c3BlY2lmaWVyfCIpOworCisgICAgICAgIHJldHVybiBAd3JhcChsb29rdXApOworICAgIH07CisK
KyAgICBsZXQgY3Jvc3NSZWFsbVRocm93ID0gKGVycm9yKSA9PiB7CisgICAgICAgIC8vIHJlLXRo
cm93IGJlY2F1c2UgaW1wb3J0IGlzc3VlcyByYWlzZSBlcnJvcnMgdXNpbmcgdGhlIHJlYWxtJ3Mg
Z2xvYmFsIG9iamVjdAorICAgICAgICBAdGhyb3dUeXBlRXJyb3IoQHRvU3RyaW5nKGVycm9yKSk7
CisgICAgfTsKKworICAgIHJldHVybiBAaW1wb3J0SW5SZWFsbSh0aGlzLCBzcGVjaWZpZXJTdHIp
LkB0aGVuKGxvb2t1cEJpbmRpbmcsIGNyb3NzUmVhbG1UaHJvdyk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnkuaAppbmRleCA4NTU1OTc3ODY3MDcyZjJmZmY2N2E2NTU5YWNkOWE0NTRkNTJkMjc3Li5iMzJj
Y2RhZjQzYTY2MmM4Nzc5NTU4MDdmNmQ0MWYxMjU5MTk0ZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
LmgKQEAgLTY2LDYgKzY2LDcgQEAgZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IDogaW50MzJf
dDsKICAgICBtYWNybyhpc1JlZ0V4cE9iamVjdCkgXAogICAgIG1hY3JvKGlzTWFwKSBcCiAgICAg
bWFjcm8oaXNTZXQpIFwKKyAgICBtYWNybyhpc1NoYWRvd1JlYWxtKSBcCiAgICAgbWFjcm8oaXNT
dHJpbmdJdGVyYXRvcikgXAogICAgIG1hY3JvKGlzQXJyYXlJdGVyYXRvcikgXAogICAgIG1hY3Jv
KGlzTWFwSXRlcmF0b3IpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9MaW5rVGltZUNvbnN0YW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TGlua1RpbWVDb25zdGFudC5oCmluZGV4IGJmYmFkMmE1MmYxNjRhNGM1ZjVlOTc3YTQyY2JjYzhi
OWVhN2EyOTQuLmFkYWMyNzA5MTkwM2NhNTJlNGEwM2Y1ZDM5ZTdlOWU5NmUzMGNmZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaApA
QCAtNjMsNiArNjMsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICB2KGluc3RhbmNlT2Ys
IG51bGxwdHIpIFwKICAgICB2KEJ1aWx0aW5Mb2csIG51bGxwdHIpIFwKICAgICB2KEJ1aWx0aW5E
ZXNjcmliZSwgbnVsbHB0cikgXAorICAgIHYoU2hhZG93UmVhbG0sIG51bGxwdHIpIFwKICAgICB2
KFJlZ0V4cCwgbnVsbHB0cikgXAogICAgIHYobWluLCBudWxscHRyKSBcCiAgICAgdih0cnVuYywg
bnVsbHB0cikgXApAQCAtNzgsNiArNzksOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICB2
KGhvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlciwgbnVsbHB0cikgXAogICAgIHYoU2V0LCBudWxs
cHRyKSBcCiAgICAgdih0aGlzVGltZVZhbHVlLCBudWxscHRyKSBcCisgICAgdihpbXBvcnRJblJl
YWxtLCBudWxscHRyKSBcCisgICAgdihldmFsSW5SZWFsbSwgbnVsbHB0cikgXAogICAgIHYoaXND
b25zdHJ1Y3RvciwgbnVsbHB0cikgXAogICAgIHYoc2FtZVZhbHVlLCBudWxscHRyKSBcCiAgICAg
dihyZWdFeHBQcm90b0ZsYWdzR2V0dGVyLCBudWxscHRyKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMjc3
YjE1NTI4ZDFlODBjNzY3NmJlYzUxMWY3NzYxZTU1YjdmOTM1OC4uZjM3NWE3OGUzMDNlNTIxYWE4
MDk1MWZhMjhlZGY3ZmI3MmE3ZjVhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtODg1LDYgKzg4NSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNSZWdFeHBPYmplY3Qo
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRo
VHlwZShkc3QsIHNyYywgUmVnRXhwT2JqZWN0VHlwZSk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdElzTWFwKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0
SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTTWFwVHlwZSk7IH0KICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdElzU2V0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBl
bWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTU2V0VHlwZSk7IH0KKyAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdElzU2hhZG93UmVhbG0oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMp
IHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgU2hhZG93UmVhbG1UeXBlKTsg
fQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNTdHJpbmdJdGVyYXRvcihSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3Jj
LCBKU1N0cmluZ0l0ZXJhdG9yVHlwZSk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzQXJy
YXlJdGVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1p
dElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU0FycmF5SXRlcmF0b3JUeXBlKTsgfQogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0SXNNYXBJdGVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU01hcEl0ZXJh
dG9yVHlwZSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcAppbmRleCAxNTg4MGU2YmU2MTZiZjJhNDVjZDNiNjdjYzdkNzkzYjY3
ZDU1MjFiLi5mZWRmMjlhZTEwYzk5NmJkYmRmN2ZkY2Q0NjYxOTM2ZTY4MGQxNjg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CkBAIC0xODk0LDYgKzE4OTQsNyBAQCBDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSyhp
c1Byb21pc2UsIElzUHJvbWlzZSkKIENSRUFURV9JTlRSSU5TSUNfRk9SX0JSQU5EX0NIRUNLKGlz
UmVnRXhwT2JqZWN0LCBJc1JlZ0V4cE9iamVjdCkKIENSRUFURV9JTlRSSU5TSUNfRk9SX0JSQU5E
X0NIRUNLKGlzTWFwLCBJc01hcCkKIENSRUFURV9JTlRSSU5TSUNfRk9SX0JSQU5EX0NIRUNLKGlz
U2V0LCBJc1NldCkKK0NSRUFURV9JTlRSSU5TSUNfRk9SX0JSQU5EX0NIRUNLKGlzU2hhZG93UmVh
bG0sIElzU2hhZG93UmVhbG0pCiBDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSyhpc1N0
cmluZ0l0ZXJhdG9yLCBJc1N0cmluZ0l0ZXJhdG9yKQogQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJB
TkRfQ0hFQ0soaXNBcnJheUl0ZXJhdG9yLCBJc0FycmF5SXRlcmF0b3IpCiBDUkVBVEVfSU5UUklO
U0lDX0ZPUl9CUkFORF9DSEVDSyhpc01hcEl0ZXJhdG9yLCBJc01hcEl0ZXJhdG9yKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAppbmRleCBjYzIyNjRmY2ExMDg2YTJhZTRjNjcwNjI3MjQ2NjA5NDZkYWE3OTNi
Li4yYjMyYTdiYTc5OWRkZGU5ODU5MjZkOWNlZTZkYzdhMTRlY2E2Y2YwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcApAQCAtMzYwLDYgKzM2MCw3IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKGZ1bmN0aW9uRG9sbGFyQ3JlYXRlUmVhbG0pOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJFdmFsU2NyaXB0KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyR0MpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJDbGVhcktlcHRPYmplY3RzKTsKK3N0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyR2xvYmFsT2JqZWN0Rm9yKTsKIHN0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyQWdlbnRTdGFydCk7CiBz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckFnZW50UmVjZWl2
ZUJyb2FkY2FzdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRv
bGxhckFnZW50UmVwb3J0KTsKQEAgLTY0MCw2ICs2NDEsNyBAQCBwcml2YXRlOgogICAgICAgICBh
ZGRGdW5jdGlvbih2bSwgZG9sbGFyLCAiZXZhbFNjcmlwdCIsIGZ1bmN0aW9uRG9sbGFyRXZhbFNj
cmlwdCwgMSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7
CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCBkb2xsYXIsICJnYyIsIGZ1bmN0aW9uRG9sbGFyR0Ms
IDAsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkpOwogICAg
ICAgICBhZGRGdW5jdGlvbih2bSwgZG9sbGFyLCAiY2xlYXJLZXB0T2JqZWN0cyIsIGZ1bmN0aW9u
RG9sbGFyQ2xlYXJLZXB0T2JqZWN0cywgMCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpOb25lKSk7CisgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCBkb2xsYXIsICJnbG9i
YWxPYmplY3RGb3IiLCBmdW5jdGlvbkRvbGxhckdsb2JhbE9iamVjdEZvciwgMSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CiAgICAgICAgIAogICAgICAg
ICBkb2xsYXItPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImdsb2Jh
bCIpLCBnbG9iYWxUaGlzKCkpOwogICAgICAgICBkb2xsYXItPnB1dERpcmVjdEN1c3RvbUFjY2Vz
c29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiSXNIVE1MRERBIiksCkBAIC0yMDQ5
LDYgKzIwNTEsMjIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyQ2xl
YXJLZXB0T2JqZWN0cywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
ZnVuY3Rpb25Eb2xsYXJHbG9iYWxPYmplY3RGb3IsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJy
b3IoZ2xvYmFsT2JqZWN0LCAiTm90IGVub3VnaCBhcmd1bWVudHMiX3MpKSk7CisgICAgSlNWYWx1
ZSBhcmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIGlmIChhcmcuaXNDZWxsKCkpIHsK
KyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBhcmcuc3RydWN0dXJlT3JOdWxsKHZtKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgp
LT5nbG9iYWxUaGlzKCkpOworICAgIH0KKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Cit9CisKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxh
ckFnZW50U3RhcnQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDY4NWQ3ZmNkOTBkYTNkNjA3MjA0ZDcx
MGUyMTY0ZmU5ZjFjNTllNjIuLmMwZjY1NmVmMDYzMDc4NWE0Y2ZiNDI5NzBmY2ExYmEwN2NmYjdm
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTUwOTYsNyAr
NTA5Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgICAgICAgICBuZXdDb3VudC0t
OwogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZmFp
bElmVHJ1ZShtYXRjaChJREVOVCksICJcIm5ldy5cIiBjYW4gb25seSBmb2xsb3dlZCB3aXRoIHRh
cmdldCIpOworICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChJREVOVCksICJcIm5ldy5cIiBj
YW4gb25seSBiZSBmb2xsb3dlZCB3aXRoIHRhcmdldCIpOwogICAgICAgICAgICAgZmFpbER1ZVRv
VW5leHBlY3RlZFRva2VuKCk7CiAgICAgICAgIH0KICAgICB9CkBAIC01MTMxLDcgKzUxMzEsNyBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0
LmNyZWF0ZUltcG9ydE1ldGFFeHByKGxvY2F0aW9uLCBjcmVhdGVSZXNvbHZlQW5kVXNlVmFyaWFi
bGUoY29udGV4dCwgJm1fdm0ucHJvcGVydHlOYW1lcy0+bWV0YVByaXZhdGVOYW1lLCBmYWxzZSwg
ZXhwcmVzc2lvblN0YXJ0LCBsb2NhdGlvbikpOwogICAgICAgICAgICAgICAgIG5leHQoKTsKICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChJREVO
VCksICJcImltcG9ydC5cIiBjYW4gb25seSBmb2xsb3dlZCB3aXRoIG1ldGEiKTsKKyAgICAgICAg
ICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKElERU5UKSwgIlwiaW1wb3J0LlwiIGNhbiBvbmx5IGJl
IGZvbGxvd2VkIHdpdGggbWV0YSIpOwogICAgICAgICAgICAgICAgIGZhaWxEdWVUb1VuZXhwZWN0
ZWRUb2tlbigpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDQwNjMzMWNh
ZGU5MDU4YzQzYzQ2OGI4Y2VlZmE1M2YyZWViOGNjMTMuLjM4NzVjZjZiNjNjMGQzMTJhYjI1MmQ2
MGUwZWY5MGI4MzQzMjU1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTEwNSw2ICsxMDUsNyBAQCB2b2lkIEFycmF5UHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZHVjZVB1YmxpY05hbWUoKSwgYXJyYXlQcm90b3R5cGVS
ZWR1Y2VDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSk7CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZHVjZVJpZ2h0UHVibGljTmFt
ZSgpLCBhcnJheVByb3RvdHlwZVJlZHVjZVJpZ2h0Q29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19CVUlMVElO
X0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5tYXBQdWJsaWNOYW1lKCksIGFycmF5UHJvdG90eXBlTWFwQ29kZUdlbmVyYXRvciwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIEpT
Q19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5tYXBQcml2YXRlTmFtZSgpLCBhcnJheVByb3RvdHlwZU1hcENvZGVHZW5l
cmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KTsKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1B1YmxpY05hbWUoKSwgYXJyYXlQ
cm90b0Z1bmNLZXlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgMCwgQXJyYXlLZXlzSW50cmluc2ljKTsKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJ
Q19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuZW50cmllc1B1YmxpY05hbWUoKSwgYXJyYXlQcm90b0Z1bmNFbnRyaWVzLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMCwgQXJyYXlFbnRy
aWVzSW50cmluc2ljKTsKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJ
T04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZmluZFB1YmxpY05hbWUoKSwgYXJy
YXlQcm90b3R5cGVGaW5kQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggNDBjMTU5ZThkN2M1NDA0OWZkOThjOGE2
NjY4YTY0YThkZjRlYTM2NC4uNzgyOGQwMDhhODUzNDYxZTQ4ZTM2ZDJmYmVhNjFjNzA5NTc2ZGRh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oCkBAIC01Miw2ICs1Miw3IEBACiAgICAgbWFjcm8oT2JqZWN0KSBcCiAgICAgbWFjcm8o
UGx1cmFsUnVsZXMpIFwKICAgICBtYWNybyhQcm9taXNlKSBcCisgICAgbWFjcm8oU2hhZG93UmVh
bG0pIFwKICAgICBtYWNybyhSZWZsZWN0KSBcCiAgICAgbWFjcm8oUmVnRXhwKSBcCiAgICAgbWFj
cm8oUmVsYXRpdmVUaW1lRm9ybWF0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCmluZGV4IDc0OTgyMDUwMThj
ZGVmOGYzZjgzNjdiNGJiZTJlZjc5ZGJkMTdjMWYuLjllOWQzYTdjN2M2NDQ3NWZhZDI3OWU2YWI2
OWUzMmU4NzQxMjgzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC0zNCw3ICszNCw5IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi1JbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVj
dXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29s
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUp
CisKK3RlbXBsYXRlPHR5cGVuYW1lIEVycm9ySGFuZGxlckZ1bmN0b3I+CitpbmxpbmUgSW5kaXJl
Y3RFdmFsRXhlY3V0YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlSW1wbChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIERlcml2
ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgRXJyb3JIYW5kbGVyRnVuY3Rv
ciBlcnJvckhhbmRsZXIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQ5LDcgKzUxLDcgQEAg
SW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKIAogICAgIFBhcnNlckVycm9yIGVycm9yOwogICAgIE9w
dGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSA9IGdsb2JhbE9i
amVjdC0+ZGVmYXVsdENvZGVHZW5lcmF0aW9uTW9kZSgpOwotICAgIAorCiAgICAgVW5saW5rZWRF
dmFsQ29kZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gdm0uY29kZUNhY2hlKCktPmdldFVubGlu
a2VkRXZhbENvZGVCbG9jaygKICAgICAgICAgdm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNv
dXJjZSgpLCBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgY29kZUdlbmVyYXRpb25Nb2Rl
LCBlcnJvciwgZXZhbENvbnRleHRUeXBlKTsKIApAQCAtNTcsNyArNTksNyBAQCBJbmRpcmVjdEV2
YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iagogICAgICAgICBnbG9iYWxPYmplY3QtPmRlYnVnZ2VyKCktPnNvdXJjZVBh
cnNlZChnbG9iYWxPYmplY3QsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVyKCksIGVycm9y
LmxpbmUoKSwgZXJyb3IubWVzc2FnZSgpKTsKIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpIHsK
LSAgICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yLnRvRXJyb3JP
YmplY3QoZ2xvYmFsT2JqZWN0LCBleGVjdXRhYmxlLT5zb3VyY2UoKSkpOworICAgICAgICBlcnJv
ckhhbmRsZXIoZXhlY3V0YWJsZS0+c291cmNlKCksICZlcnJvcik7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIApAQCAtNjYsNiArNjgsMjQgQEAgSW5kaXJlY3RFdmFsRXhlY3V0YWJs
ZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmoKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KIAorSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSog
SW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRD
b250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUg
ZXZhbENvbnRleHRUeXBlLCBOYWtlZFB0cjxKU09iamVjdD4mIHJlc3VsdGluZ0Vycm9yKQorewor
ICAgIGF1dG8gaGFuZGxlRXJyb3IgPSBbJl0oY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJz
ZXJFcnJvciogZXJyb3IpIHsKKyAgICAgICAgcmVzdWx0aW5nRXJyb3IgPSBlcnJvci0+dG9FcnJv
ck9iamVjdChnbG9iYWxPYmplY3QsIHNvdXJjZSk7CisgICAgfTsKKyAgICByZXR1cm4gY3JlYXRl
SW1wbChnbG9iYWxPYmplY3QsIHNvdXJjZSwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVu
Y3Rpb25Db250ZXh0LCBldmFsQ29udGV4dFR5cGUsIGhhbmRsZUVycm9yKTsKK30KKworSW5kaXJl
Y3RFdmFsRXhlY3V0YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6dHJ5Q3JlYXRlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRGVyaXZl
ZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIGhhbmRsZUVycm9yID0gWyZdKGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3IqIGVycm9yKSB7CisgICAgICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGVycm9yLT50b0Vycm9yT2JqZWN0KGdsb2JhbE9iamVjdCwgc291cmNlKSk7
CisgICAgfTsKKyAgICByZXR1cm4gY3JlYXRlSW1wbChnbG9iYWxPYmplY3QsIHNvdXJjZSwgZGVy
aXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBldmFsQ29udGV4dFR5cGUs
IGhhbmRsZUVycm9yKTsKK30KKwogY29uc3RleHByIGJvb2wgaW5TdHJpY3RDb250ZXh0ID0gZmFs
c2U7CiBjb25zdGV4cHIgYm9vbCBpbnNpZGVPcmRpbmFyeUZ1bmN0aW9uID0gZmFsc2U7CiBJbmRp
cmVjdEV2YWxFeGVjdXRhYmxlOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRleHRU
eXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFs
Q29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oCmluZGV4IDQ5OGI1Yzg3MDk4
YWIzNzQ3OTdhMjViZjQ4MTYzN2NmYmI5MmVkZjUuLjM3MDRiMjQ2OGE0Y2FiNDZkNzljNTMzNWZk
NzEyMDFhNDZhYjNmNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmgKQEAgLTMxLDggKzMxLDEyIEBAIG5hbWVzcGFj
ZSBKU0MgewogCiBjbGFzcyBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEV2
YWxFeGVjdXRhYmxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgSW5kaXJlY3RFdmFsRXhlY3V0YWJs
ZSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRDb250
ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUpOwor
ICAgIHN0YXRpYyBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiB0cnlDcmVhdGUoSlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSk7CisgICAgc3RhdGljIEluZGlyZWN0RXZh
bEV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBE
ZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRl
eHRUeXBlLCBOYWtlZFB0cjxKU09iamVjdD4mKTsKIHByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRXJyb3JIYW5kbGVyRnVuY3Rvcj4KKyAgICBpbmxpbmUgc3RhdGljIEluZGlyZWN0RXZh
bEV4ZWN1dGFibGUqIGNyZWF0ZUltcGwoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2Rl
JiwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxD
b250ZXh0VHlwZSwgRXJyb3JIYW5kbGVyRnVuY3Rvcik7CisKICAgICBJbmRpcmVjdEV2YWxFeGVj
dXRhYmxlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRDb250ZXh0
VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUpOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CmluZGV4IDlkYWU0NmQwMzNiZmJiNDljYzE5MjhhNjY1MTc4NzRhNDg4Njk5OWYuLmIyODQwNGI0
NDAyZGJjNjliYmU3ZDAwZDZiNTQ4YmQ4ZGUwNjBmZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTE5NCw2ICsxOTQsOSBAQAog
I2luY2x1ZGUgIlNldENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiU2V0SXRlcmF0b3JQcm90b3R5
cGUuaCIKICNpbmNsdWRlICJTZXRQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJTaGFkb3dSZWFsbUNv
bnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiU2hhZG93UmVhbG1PYmplY3QuaCIKKyNpbmNsdWRlICJT
aGFkb3dSZWFsbVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgi
CiAjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJTdHJpbmdJdGVyYXRv
clByb3RvdHlwZS5oIgpAQCAtOTE2LDYgKzkxOSw5IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6Omlu
aXQoVk0mIHZtKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOdW1iZXJPZkFycmF5SW5k
ZXhpbmdNb2RlczsgKytpKQogICAgICAgICBtX2FycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdTaGFw
ZUR1cmluZ0FsbG9jYXRpb25baV0gPSBtX29yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGlu
Z1NoYXBlW2ldOwogCisgICAgbV9zaGFkb3dSZWFsbVByb3RvdHlwZS5zZXQodm0sIHRoaXMsIFNo
YWRvd1JlYWxtUHJvdG90eXBlOjpjcmVhdGUodm0sIFNoYWRvd1JlYWxtUHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOworICAgIG1f
c2hhZG93UmVhbG1PYmplY3RTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBTaGFkb3dSZWFsbU9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX3NoYWRvd1JlYWxtUHJvdG90eXBlLmdldCgp
KSk7CisKICAgICBtX3JlZ0V4cFByb3RvdHlwZS5zZXQodm0sIHRoaXMsIFJlZ0V4cFByb3RvdHlw
ZTo6Y3JlYXRlKHZtLCB0aGlzLCBSZWdFeHBQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgbV9yZWdFeHBTdHJ1Y3R1cmUu
c2V0KHZtLCB0aGlzLCBSZWdFeHBPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9y
ZWdFeHBQcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVy
ZS5zZXQodm0sIHRoaXMsIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSh2bSwgdGhp
cykpOwpAQCAtMTAyMiw3ICsxMDI4LDExIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0m
IHZtKQogICAgIEFycmF5Q29uc3RydWN0b3IqIGFycmF5Q29uc3RydWN0b3IgPSBBcnJheUNvbnN0
cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fYXJyYXlQcm90b3R5cGUu
Z2V0KCksIG1fc3BlY2llc0dldHRlclNldHRlci5nZXQoKSk7CiAgICAgbV9hcnJheUNvbnN0cnVj
dG9yLnNldCh2bSwgdGhpcywgYXJyYXlDb25zdHJ1Y3Rvcik7CiAgICAgbV9saW5rVGltZUNvbnN0
YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6QXJyYXkpXS5zZXQo
dm0sIHRoaXMsIGFycmF5Q29uc3RydWN0b3IpOwotICAgIAorCisgICAgU2hhZG93UmVhbG1Db25z
dHJ1Y3Rvciogc2hhZG93UmVhbG1Db25zdHJ1Y3RvciA9IFNoYWRvd1JlYWxtQ29uc3RydWN0b3I6
OmNyZWF0ZSh2bSwgU2hhZG93UmVhbG1Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9zaGFkb3dSZWFsbVByb3RvdHlwZS5n
ZXQoKSwgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLmdldCgpKTsKKyAgICBtX3NoYWRvd1JlYWxtQ29u
c3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBzaGFkb3dSZWFsbUNvbnN0cnVjdG9yKTsKKyAgICBtX2xp
bmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpT
aGFkb3dSZWFsbSldLnNldCh2bSwgdGhpcywgc2hhZG93UmVhbG1Db25zdHJ1Y3Rvcik7CisKICAg
ICBSZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3IgPSBSZWdFeHBDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKHZtLCBSZWdFeHBDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCksIG1f
c3BlY2llc0dldHRlclNldHRlci5nZXQoKSk7CiAgICAgbV9yZWdFeHBDb25zdHJ1Y3Rvci5zZXQo
dm0sIHRoaXMsIHJlZ0V4cENvbnN0cnVjdG9yKTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpSZWdFeHApXS5zZXQodm0sIHRo
aXMsIHJlZ0V4cENvbnN0cnVjdG9yKTsKQEAgLTExMDIsNiArMTExMiw3IEBAIGNhcGl0YWxOYW1l
ICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/
IGNhcGl0YWxOYW1lCiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0
cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CiAgICAgbV9hcnJheVByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBhcnJheUNvbnN0cnVjdG9yLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgbV9yZWdF
eHBQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5jb25zdHJ1Y3RvciwgcmVnRXhwQ29uc3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBtX3NoYWRvd1JlYWxtUHJvdG90
eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29u
c3RydWN0b3IsIHNoYWRvd1JlYWxtQ29uc3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICAKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+T2JqZWN0LCBvYmplY3RDb25zdHJ1Y3Rv
ciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5GdW5j
dGlvbiwgZnVuY3Rpb25Db25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOwpAQCAtMTI1Myw2ICsxMjY0LDggQEAgY2FwaXRhbE5hbWUg
IyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8g
Y2FwaXRhbE5hbWUKICAgICAgICAgVGVtcG9yYWxPYmplY3QqIHRlbXBvcmFsID0gVGVtcG9yYWxP
YmplY3Q6OmNyZWF0ZSh2bSwgVGVtcG9yYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cykpOwogICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+VGVtcG9yYWwsIHRlbXBvcmFsLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgfQorICAgIGlmIChPcHRpb25zOjp1c2VTaGFkb3dS
ZWFsbSgpKQorICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+U2hhZG93UmVhbG0sIHNoYWRvd1JlYWxtQ29uc3RydWN0b3IsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAogICAgIG1fbW9kdWxl
TG9hZGVyLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTTW9kdWxl
TG9hZGVyPiYgaW5pdCkgewpAQCAtMTQyNSw2ICsxNDM4LDEyIEBAIGNhcGl0YWxOYW1lICMjIENv
bnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0
YWxOYW1lCiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlu
a1RpbWVDb25zdGFudDo6aG9zdFByb21pc2VSZWplY3Rpb25UcmFja2VyKV0uaW5pdExhdGVyKFtd
IChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNl
dChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5p
dC5vd25lciksIDIsIFN0cmluZygpLCBnbG9iYWxGdW5jSG9zdFByb21pc2VSZWplY3Rpb25UcmFj
a2VyKSk7CiAgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmltcG9ydEluUmVhbG0pXS5pbml0TGF0ZXIoW10g
KGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0
KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0
Lm93bmVyKSwgMCwgU3RyaW5nKCksIGltcG9ydEluUmVhbG0pKTsKKyAgICAgICAgfSk7CisgICAg
bV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFu
dDo6ZXZhbEluUmVhbG0pXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4m
IGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZt
LCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGV2YWxJ
blJlYWxtKSk7CisgICAgICAgIH0pOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnRoaXNUaW1lVmFsdWUpXS5pbml0TGF0ZXIo
W10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKICAgICAgICAgICAgIGluaXQu
c2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGRhdGVQcm90b0Z1bmNHZXRUaW1lLCBEYXRlUHJvdG90
eXBlR2V0VGltZUludHJpbnNpYykpOwogICAgICAgICB9KTsKQEAgLTIxMDksNiArMjEyOCw3IEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlz
aXRvciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0LT5tX1VSSUVycm9yU3RydWN0dXJlLnZpc2l0
KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fYWdncmVnYXRlRXJyb3JTdHJ1Y3R1cmUudmlz
aXQodmlzaXRvcik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hcnJheUNvbnN0
cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3NoYWRvd1JlYWxtQ29u
c3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhwQ29uc3Ry
dWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fb2JqZWN0Q29uc3RydWN0
b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZnVuY3Rpb25Db25zdHJ1Y3Rv
cik7CkBAIC0yMjA2LDYgKzIyMjYsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxk
cmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+
bV9jdXN0b21TZXR0ZXJGdW5jdGlvblN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlz
T2JqZWN0LT5tX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhp
c09iamVjdC0+bV9uYXRpdmVTdGRGdW5jdGlvblN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKKyAg
ICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3NoYWRvd1JlYWxtT2JqZWN0U3RydWN0dXJl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVy
ZSk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hc3luY0Z1bmN0aW9uU3RydWN0
dXJlKTsKQEAgLTI1NjIsNiArMjU4MywxMyBAQCBKU0dsb2JhbE9iamVjdCogSlNHbG9iYWxPYmpl
Y3Q6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHJldHVybiBnbG9i
YWxPYmplY3Q7CiB9CiAKK0pTR2xvYmFsT2JqZWN0KiBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlV2l0
aEN1c3RvbU1ldGhvZFRhYmxlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IEds
b2JhbE9iamVjdE1ldGhvZFRhYmxlKiBtZXRob2RUYWJsZSkKK3sKKyAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHbG9iYWxPYmpl
Y3Q+KHZtLmhlYXApKSBKU0dsb2JhbE9iamVjdCh2bSwgc3RydWN0dXJlLCBtZXRob2RUYWJsZSk7
CisgICAgZ2xvYmFsT2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIGdsb2Jh
bE9iamVjdDsKK30KKwogdm9pZCBKU0dsb2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
KQogewogICAgIERlZmVyVGVybWluYXRpb24gZGVmZXJUZXJtaW5hdGlvbih2bSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAxMjhiMzk5
MTBkZDgwNTdmN2FhYmI1OTc3N2NhNjgwZTlkZjYxODkyLi5mM2ZlNzRiMTk5NTgzNThlOTZiZmE0
NTQ3NmI2ODI0OGE3ZTUxZjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKQEAgLTExNSw2ICsxMTUsOCBAQCBjbGFzcyBOdWxsU2V0dGVyRnVu
Y3Rpb247CiBjbGFzcyBPYmplY3RDb25zdHJ1Y3RvcjsKIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7
CiBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKK2NsYXNzIFNoYWRvd1JlYWxtQ29uc3RydWN0b3I7
CitjbGFzcyBTaGFkb3dSZWFsbVByb3RvdHlwZTsKIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yOwog
Y2xhc3MgUmVnRXhwUHJvdG90eXBlOwogY2xhc3MgU2V0SXRlcmF0b3JQcm90b3R5cGU7CkBAIC0z
MDYsNiArMzA4LDcgQEAgcHVibGljOgogCiAgICAgV3JpdGVCYXJyaWVyPE9iamVjdENvbnN0cnVj
dG9yPiBtX29iamVjdENvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxBcnJheUNvbnN0cnVj
dG9yPiBtX2FycmF5Q29uc3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPFNoYWRvd1JlYWxtQ29u
c3RydWN0b3I+IG1fc2hhZG93UmVhbG1Db25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8UmVn
RXhwQ29uc3RydWN0b3I+IG1fcmVnRXhwQ29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPEZ1
bmN0aW9uQ29uc3RydWN0b3I+IG1fZnVuY3Rpb25Db25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJp
ZXI8SlNQcm9taXNlQ29uc3RydWN0b3I+IG1fcHJvbWlzZUNvbnN0cnVjdG9yOwpAQCAtMzUzLDYg
KzM1Niw3IEBAIHB1YmxpYzoKICAgICBXcml0ZUJhcnJpZXI8T2JqZWN0UHJvdG90eXBlPiBtX29i
amVjdFByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8RnVuY3Rpb25Qcm90b3R5cGU+IG1fZnVu
Y3Rpb25Qcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEFycmF5UHJvdG90eXBlPiBtX2FycmF5
UHJvdG90eXBlOworICAgIFdyaXRlQmFycmllcjxTaGFkb3dSZWFsbVByb3RvdHlwZT4gbV9zaGFk
b3dSZWFsbVByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8UmVnRXhwUHJvdG90eXBlPiBtX3Jl
Z0V4cFByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8SXRlcmF0b3JQcm90b3R5cGU+IG1faXRl
cmF0b3JQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEFzeW5jSXRlcmF0b3JQcm90b3R5cGU+
IG1fYXN5bmNJdGVyYXRvclByb3RvdHlwZTsKQEAgLTQwOSw2ICs0MTMsNyBAQCBwdWJsaWM6CiAg
ICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY3VzdG9tU2V0dGVy
RnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmU+IG1fbmF0aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgUHJvcGVydHlPZmZzZXQg
bV9mdW5jdGlvbk5hbWVPZmZzZXQ7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zaGFk
b3dSZWFsbU9iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Jl
Z0V4cFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8QXN5bmNGdW5jdGlvblByb3RvdHlwZT4g
bV9hc3luY0Z1bmN0aW9uUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxBc3luY0dlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlPiBtX2FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7CkBA
IC02MTAsNiArNjE1LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBKU0dsb2JhbE9iamVjdCogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTR2xvYmFsT2JqZWN0KiBjcmVhdGVXaXRoQ3VzdG9tTWV0
aG9kVGFibGUoVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSop
OwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIApAQCAtNzEzLDYgKzcxOSw3IEBAIHB1Ymxp
YzoKICAgICBCaWdJbnRQcm90b3R5cGUqIGJpZ0ludFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYmlnSW50UHJvdG90eXBlLmdldCgpOyB9CiAgICAgSlNPYmplY3QqIGRhdGVQcm90b3R5cGUo
KSBjb25zdCB7IHJldHVybiBtX2RhdGVTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpOyB9CiAgICAg
SlNPYmplY3QqIHN5bWJvbFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sT2JqZWN0
U3RydWN0dXJlLnByb3RvdHlwZUluaXRpYWxpemVkT25NYWluVGhyZWFkKHRoaXMpOyB9CisgICAg
U2hhZG93UmVhbG1Qcm90b3R5cGUqIHNoYWRvd1JlYWxtUHJvdG90eXBlKCkgY29uc3QgeyByZXR1
cm4gbV9zaGFkb3dSZWFsbVByb3RvdHlwZS5nZXQoKTsgfQogICAgIFJlZ0V4cFByb3RvdHlwZSog
cmVnRXhwUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCk7
IH0KICAgICBKU09iamVjdCogZXJyb3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2Vycm9y
U3RydWN0dXJlLnByb3RvdHlwZSh0aGlzKTsgfQogICAgIEl0ZXJhdG9yUHJvdG90eXBlKiBpdGVy
YXRvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCk7
IH0KQEAgLTgzMCw2ICs4MzcsNyBAQCBwdWJsaWM6CiAgICAgUHJvcGVydHlPZmZzZXQgZnVuY3Rp
b25OYW1lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk5hbWVPZmZzZXQ7IH0KICAg
ICBTdHJ1Y3R1cmUqIG51bWJlck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVt
YmVyT2JqZWN0U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogcmVnRXhwU3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBT
dHJ1Y3R1cmUqIHNoYWRvd1JlYWxtU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dS
ZWFsbU9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9yU3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAg
ICBTdHJ1Y3R1cmUqIGFzeW5jR2VuZXJhdG9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9h
c3luY0dlbmVyYXRvclN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9y
RnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uU3Ry
dWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggNDRlMmRhOWFiNjk5N2I5ZTlh
NGI1NjQwMzY0MGZkNGI2Zjc3ODFlMi4uNGM2NTc1ODQzZjViMTA3NmU5ZmUzMjA5MWE2OGUwYjIz
NGVjYjg1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtNDkxLDcgKzQ5MSw3IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5jRXZhbCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocGFyc2VkT2Jq
ZWN0KTsKIAogICAgIFNvdXJjZU9yaWdpbiBzb3VyY2VPcmlnaW4gPSBjYWxsRnJhbWUtPmNhbGxl
clNvdXJjZU9yaWdpbih2bSk7Ci0gICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBJbmRpcmVjdEV2
YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHMsIHNvdXJjZU9y
aWdpbiksIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6
Tm9uZSk7CisgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBJbmRpcmVjdEV2YWxFeGVjdXRhYmxl
Ojp0cnlDcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHMsIHNvdXJjZU9yaWdpbiksIERl
cml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7CiAg
ICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICFldmFsKTsKICAgICBp
ZiAoIWV2YWwpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKaW5kZXggNWE4YTE0YTNjYzZhZDE5ZWQ0MDgyNGI4
MzAyZGI5MGM0YzQ3NGMzYS4uODI4ZmQwMzY3NmU0NWFhMjNhZWJmMjQxYzgwNjllYmMxNDQ4ODBh
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCkBAIC00Myw2ICs0
Myw3IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkpTVHlwZSB0
eXBlKQogICAgIENBU0UoU3RyaW5nVHlwZSkKICAgICBDQVNFKFN5bWJvbFR5cGUpCiAgICAgQ0FT
RShIZWFwQmlnSW50VHlwZSkKKyAgICBDQVNFKFNoYWRvd1JlYWxtVHlwZSkKICAgICBDQVNFKEN1
c3RvbUdldHRlclNldHRlclR5cGUpCiAgICAgQ0FTRShBUElWYWx1ZVdyYXBwZXJUeXBlKQogICAg
IENBU0UoTmF0aXZlRXhlY3V0YWJsZVR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VHlwZS5oCmluZGV4IDY1ZWE5NGVmNTYzZjRiM2FlMjE5MTc1MWM3OTJlYzUxMGQ1NzQxYzEuLjQz
MWJiYWZjODRlNjUzNDRjMDAyZTRlNWY0NzY3YzdhMzQ1NTU5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBAIC0xMTAsNiArMTEwLDcgQEAgZW51bSBKU1R5cGUgOiB1
aW50OF90IHsKICAgICAvLyBFbmQgSlNTY29wZSB0eXBlcy4KIAogICAgIE1vZHVsZU5hbWVzcGFj
ZU9iamVjdFR5cGUsCisgICAgU2hhZG93UmVhbG1UeXBlLAogICAgIFJlZ0V4cE9iamVjdFR5cGUs
CiAgICAgSlNEYXRlVHlwZSwKICAgICBQcm94eU9iamVjdFR5cGUsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCA1NDAxZmYzODMxZDg2NTA3MTU1YjE5
MzI0YmUzOTdmZmJkMzNkOTM0Li4wNTRhZjVmY2Y0MzczNWNlY2I0YTZlZDhhZGEwYWE2OTc0ODBh
Y2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlz
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAg
LTU0MCw2ICs1NDAsNyBAQCBib29sIGNhblVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpOwogICAg
IHYoQm9vbCwgdXNlSGFzT3duLCB0cnVlLCBOb3JtYWwsICJFeHBvc2UgdGhlIE9iamVjdC5oYXNP
d24gbWV0aG9kIikgXAogICAgIHYoQm9vbCwgdXNlSW50bEVudW1lcmF0aW9uLCB0cnVlLCBOb3Jt
YWwsICJFeHBvc2UgdGhlIEludGwgZW51bWVyYXRpb24gQVBJcy4iKSBcCiAgICAgdihCb29sLCB1
c2VTaGFyZWRBcnJheUJ1ZmZlciwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIHYoQm9v
bCwgdXNlU2hhZG93UmVhbG0sIGZhbHNlLCBOb3JtYWwsICJFeHBvc2UgdGhlIFNoYWRvd1JlYWxt
IG9iamVjdC4iKSBcCiAgICAgdihCb29sLCB1c2VUZW1wb3JhbCwgZmFsc2UsIE5vcm1hbCwgIkV4
cG9zZSB0aGUgVGVtcG9yYWwgb2JqZWN0LiIpIFwKICAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5
VGhyZWFkaW5nLCB0cnVlLCBOb3JtYWwsICJBbGxvdyBpbnN0cnVjdGlvbnMgZnJvbSB0aGUgd2Fz
bSB0aHJlYWRpbmcgc3BlYy4iKSBcCiAgICAgdihCb29sLCB1c2VXZWJBc3NlbWJseVR5cGVkRnVu
Y3Rpb25SZWZlcmVuY2VzLCBmYWxzZSwgTm9ybWFsLCAiQWxsb3cgZnVuY3Rpb24gdHlwZXMgZnJv
bSB0aGUgd2FzbSB0eXBlZCBmdW5jdGlvbiByZWZlcmVuY2VzIHNwZWMuIikgXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbUNvbnN0cnVjdG9y
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40YzY4NDcyOWY0MDVhMmRlNDRlNjVmOTZkYWM3ZTA0NTdmOGE2YzVk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93
UmVhbG1Db25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorI2luY2x1ZGUgIlNoYWRvd1JlYWxtT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
b25zdCBDbGFzc0luZm8gU2hhZG93UmVhbG1Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rp
b24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKFNoYWRvd1JlYWxtQ29uc3RydWN0b3IpIH07CisKK1NUQVRJQ19BU1NFUlRf
SVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKTsKKworc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY2FsbFNoYWRvd1JlYWxtKTsKK3N0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFdpdGhTaGFkb3dSZWFsbUNvbnN0cnVj
dG9yKTsKKworU2hhZG93UmVhbG1Db25zdHJ1Y3Rvcjo6U2hhZG93UmVhbG1Db25zdHJ1Y3RvcihW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwg
c3RydWN0dXJlLCBjYWxsU2hhZG93UmVhbG0sIGNvbnN0cnVjdFdpdGhTaGFkb3dSZWFsbUNvbnN0
cnVjdG9yKQoreworfQorCit2b2lkIFNoYWRvd1JlYWxtQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgU2hhZG93UmVhbG1Qcm90b3R5cGUqIHNoYWRvd1JlYWxtUHJvdG90eXBlKQor
eworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT5TaGFk
b3dSZWFsbS5zdHJpbmcoKSwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVU
cmFuc2l0aW9uKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBzaGFkb3dSZWFsbVByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpOworfQorCitzdGF0aWMgSlNPYmplY3QqIGNvbnN0cnVjdFNoYWRv
d1JlYWxtKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUsIGNvbnN0IEFyZ0xp
c3QmKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBTdHJ1Y3R1cmUq
IHNoYWRvd1JlYWxtU3RydWN0dXJlID0gU2hhZG93UmVhbG1PYmplY3Q6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnNoYWRvd1JlYWxtUHJvdG90eXBlKCkp
OworICAgIHJldHVybiBTaGFkb3dSZWFsbU9iamVjdDo6Y3JlYXRlKHZtLCBzaGFkb3dSZWFsbVN0
cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpKTsKK30KKwor
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFdpdGhTaGFkb3dSZWFsbUNvbnN0cnVj
dG9yLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQoreworICAgIEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoY29uc3RydWN0U2hhZG93UmVhbG0oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPm5ld1Rh
cmdldCgpLCBhcmdzKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjYWxsU2hhZG93
UmVhbG0sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKSkKK3sKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShnbG9iYWxPYmplY3QtPnZtKCkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVk
QXNGdW5jdGlvblR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU2hhZG93UmVhbG0iKSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwY2I5NGM4
MDE3YzJlMTVjOTlkZmYyMzM1MjVkNzliNTFjMThiZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmgKQEAgLTAs
MCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJTaGFkb3dSZWFsbVByb3RvdHlwZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
R2V0dGVyU2V0dGVyOworCitjbGFzcyBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yIGZpbmFsIDogcHVi
bGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5j
dGlvbiBCYXNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIHN0YXRpYyBTaGFkb3dSZWFsbUNvbnN0cnVj
dG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU2hhZG93UmVhbG1Qcm90
b3R5cGUqIHNoYWRvd1JlYWxtUHJvdG90eXBlLCBHZXR0ZXJTZXR0ZXIqKQorICAgIHsKKyAgICAg
ICAgU2hhZG93UmVhbG1Db25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxTaGFkb3dSZWFsbUNvbnN0cnVjdG9yPih2bS5oZWFwKSkgU2hhZG93UmVhbG1D
b25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENy
ZWF0aW9uKHZtLCBzaGFkb3dSZWFsbVByb3RvdHlwZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1
Y3RvcjsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25U
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFNo
YWRvd1JlYWxtQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiwgU2hhZG93UmVhbG1Qcm90b3R5cGUqKTsKK307CitTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShTaGFkb3dSZWFsbUNvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0
aW9uKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtT2JqZWN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNTQ0N2E3MWVl
MTUwODUzN2I0NTZmYTM2YjRiZjFhY2MzNDhkYjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1PYmplY3QuY3BwCkBAIC0wLDAgKzEs
NzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYWRvd1JlYWxtT2JqZWN0LmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUo
U2hhZG93UmVhbG1PYmplY3QpOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NvbnN0IENsYXNzSW5mbyBTaGFkb3dSZWFsbU9iamVjdDo6c19pbmZvID0geyAiU2hh
ZG93UmVhbG0iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKFNoYWRvd1JlYWxtT2JqZWN0KSB9OworCitTaGFkb3dSZWFsbU9iamVjdDo6U2hhZG93
UmVhbG1PYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0s
IHN0cnVjdHVyZSkKK3sKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KK3ZvaWQgU2hh
ZG93UmVhbG1PYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICBTaGFkb3dSZWFsbU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxT
aGFkb3dSZWFsbU9iamVjdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3Qs
IHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9nbG9iYWxPYmpl
Y3QpOworfQorCitERUZJTkVfVklTSVRfQ0hJTERSRU4oU2hhZG93UmVhbG1PYmplY3QpOworCitT
aGFkb3dSZWFsbU9iamVjdCogU2hhZG93UmVhbG1PYmplY3Q6OmNyZWF0ZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSogbWV0aG9kVGFi
bGUpCit7CisgICAgU2hhZG93UmVhbG1PYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFNoYWRvd1JlYWxtT2JqZWN0Pih2bS5oZWFwKSkgU2hhZG93UmVhbG1PYmplY3Qo
dm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVXaXRoQ3Vz
dG9tTWV0aG9kVGFibGUodm0sIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGpz
TnVsbCgpKSwgbWV0aG9kVGFibGUpOworICAgIG9iamVjdC0+bV9nbG9iYWxPYmplY3Quc2V0KHZt
LCBvYmplY3QsIGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKwordm9pZCBT
aGFkb3dSZWFsbU9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworICAg
IEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRv
d1JlYWxtT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFs
bU9iamVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwODhmZjc4NDJlMjBhZTU0MjUyZjZkYjA1ZDRjN2U4NGY5
ZWIxNWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
aGFkb3dSZWFsbU9iamVjdC5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBTaGFkb3dSZWFsbU9iamVjdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFs
T2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3M7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3MgbW9kZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAg
ICB7CisgICAgICAgIHJldHVybiB2bS5zaGFkb3dSZWFsbVNwYWNlPG1vZGU+KCk7CisgICAgfQor
CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhTaGFkb3dSZWFsbVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisK
KyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU2hhZG93UmVhbG1PYmplY3QqIGNyZWF0
ZShWTSYsIFN0cnVjdHVyZSosIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKik7CisKKyAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgeyByZXR1cm4gbV9nbG9iYWxPYmplY3Qu
Z2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBTaGFkb3dSZWFsbU9iamVjdChWTSYsIFN0cnVjdHVy
ZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKyAgICBERUNMQVJFX1ZJU0lUX0NI
SUxEUkVOOworCisgICAgV3JpdGVCYXJyaWVyPEpTR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVj
dDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1ZDk4
ZTNiOWJjYzIxMTVkMzRkOWM1YWM5ZjFiMmY2NDQ4N2ZkY2IKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5jcHAKQEAg
LTAsMCArMSwxMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYWRvd1JlYWxtUHJvdG90
eXBlLmgiCisKKyNpbmNsdWRlICJJbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAi
SW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpT
SW50ZXJuYWxQcm9taXNlLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVMb2FkZXIuaCIKKyNpbmNsdWRl
ICJTaGFkb3dSZWFsbU9iamVjdC5oIgorCisjaW5jbHVkZSAiU2hhZG93UmVhbG1Qcm90b3R5cGUu
bHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCisvKiBTb3VyY2UgZm9yIFNoYWRvd1JlYWxtUHJv
dG90eXBlLmx1dC5oCitAYmVnaW4gc2hhZG93UmVhbG1Qcm90b3R5cGVUYWJsZQorICBldmFsdWF0
ZSAgICBKU0J1aWx0aW4gICAgIERvbnRFbnVtfEZ1bmN0aW9uICAxCisgIGltcG9ydFZhbHVlIEpT
QnVpbHRpbiAgICAgRG9udEVudW18RnVuY3Rpb24gIDIKK0BlbmQKKyovCisKK2NvbnN0IENsYXNz
SW5mbyBTaGFkb3dSZWFsbVByb3RvdHlwZTo6c19pbmZvID0geyAiU2hhZG93UmVhbG0iLCAmQmFz
ZTo6c19pbmZvLCAmc2hhZG93UmVhbG1Qcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShTaGFkb3dSZWFsbVByb3RvdHlwZSkgfTsKKworU2hhZG93UmVhbG1Qcm90b3R5
cGU6OlNoYWRvd1JlYWxtUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisg
ICAgOiBKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgU2hhZG93
UmVhbG1Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBK
U0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGltcG9ydEluUmVhbG0sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBT
aGFkb3dSZWFsbU9iamVjdCogdGhpc1JlYWxtID0ganNEeW5hbWljQ2FzdDxTaGFkb3dSZWFsbU9i
amVjdCo+KHZtLCB0aGlzVmFsdWUpOworICAgIEFTU0VSVCh0aGlzUmVhbG0pOworCisgICAgYXV0
byogcHJvbWlzZSA9IEpTUHJvbWlzZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnByb21pc2VT
dHJ1Y3R1cmUoKSk7CisKKyAgICBhdXRvIHNvdXJjZU9yaWdpbiA9IGNhbGxGcmFtZS0+Y2FsbGVy
U291cmNlT3JpZ2luKHZtKTsKKyAgICBhdXRvKiBzcGVjaWZpZXIgPSBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDEpLnRvU3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEpTR2xvYmFsT2JqZWN0KiByZWFsbUdsb2JhbE9i
amVjdCA9IHRoaXNSZWFsbS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byogaW50ZXJuYWxQcm9t
aXNlID0gcmVhbG1HbG9iYWxPYmplY3QtPm1vZHVsZUxvYWRlcigpLT5pbXBvcnRNb2R1bGUocmVh
bG1HbG9iYWxPYmplY3QsIHNwZWNpZmllciwganNVbmRlZmluZWQoKSwgc291cmNlT3JpZ2luKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+
cmVqZWN0V2l0aENhdWdodEV4Y2VwdGlvbihyZWFsbUdsb2JhbE9iamVjdCwgc2NvcGUpKSk7CisK
KyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgcHJvbWlzZS0+cmVzb2x2ZShnbG9iYWxPYmplY3Qs
IGludGVybmFsUHJvbWlzZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwcm9taXNlKTsK
K30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGV2YWxJblJlYWxtLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7
CisgICAgU2hhZG93UmVhbG1PYmplY3QqIHRoaXNSZWFsbSA9IGpzRHluYW1pY0Nhc3Q8U2hhZG93
UmVhbG1PYmplY3QqPih2bSwgdGhpc1ZhbHVlKTsKKyAgICBBU1NFUlQodGhpc1JlYWxtKTsKKyAg
ICBKU0dsb2JhbE9iamVjdCogcmVhbG1HbG9iYWxPYmplY3QgPSB0aGlzUmVhbG0tPmdsb2JhbE9i
amVjdCgpOworCisgICAgSlNWYWx1ZSBldmFsQXJnID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsK
KyAgICAvLyBldmFsIGNvZGUgYWRhcHRlZCBmcm9tIEpTR2xvYmFsT2JqZWNGdW5jdGlvbnM6Omds
b2JhbEZ1bmNFdmFsCisgICAgU3RyaW5nIHNjcmlwdCA9IGFzU3RyaW5nKGV2YWxBcmcpLT52YWx1
ZShnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisK
KyAgICBOYWtlZFB0cjxKU09iamVjdD4gZXhlY3V0YWJsZUVycm9yOworICAgIFNvdXJjZUNvZGUg
c291cmNlID0gbWFrZVNvdXJjZShzY3JpcHQsIGNhbGxGcmFtZS0+Y2FsbGVyU291cmNlT3JpZ2lu
KHZtKSk7CisgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBJbmRpcmVjdEV2YWxFeGVjdXRhYmxl
OjpjcmVhdGUocmVhbG1HbG9iYWxPYmplY3QsIHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlOjpO
b25lLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lLCBleGVjdXRhYmxlRXJyb3IpOworICAg
IGlmIChleGVjdXRhYmxlRXJyb3IpIHsKKyAgICAgICAgRXJyb3JJbnN0YW5jZSogZXJyb3IgPSBq
c0R5bmFtaWNDYXN0PEVycm9ySW5zdGFuY2UqPih2bSwgSlNWYWx1ZShleGVjdXRhYmxlRXJyb3Iu
Z2V0KCkpKTsKKyAgICAgICAgaWYgKGVycm9yICE9IG51bGxwdHIgJiYgZXJyb3ItPmVycm9yVHlw
ZSgpID09IEVycm9yVHlwZTo6U3ludGF4RXJyb3IpIHsKKyAgICAgICAgICAgIHNjb3BlLmNsZWFy
RXhjZXB0aW9uKCk7CisgICAgICAgICAgICBjb25zdCBTdHJpbmcgc3ludGF4RXJyb3JNZXNzYWdl
ID0gZXJyb3ItPnNhbml0aXplZE1lc3NhZ2VTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgICAgICB0aHJvd1ZN
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0
LCBzeW50YXhFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aHJv
d1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgIkVycm9yIGVuY291bnRlcmVkIGR1cmluZyBldmFsdWF0aW9uIl9zKSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgfQorICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHZtLmludGVy
cHJldGVyLT5leGVjdXRlKGV2YWwsIHJlYWxtR2xvYmFsT2JqZWN0LCByZWFsbUdsb2JhbE9iamVj
dC0+Z2xvYmFsVGhpcygpLCByZWFsbUdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUoKSk7CisgICAg
aWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgeworICAgICAgICBzY29wZS5jbGVhckV4
Y2VwdGlvbigpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJFcnJvciBlbmNvdW50ZXJlZCBkdXJp
bmcgZXZhbHVhdGlvbiJfcykpOworICAgIH0KKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90
eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlw
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjllYWViMGI4YmFiMzljMTY3OTYwMTk2YjQyZjY0MjFmY2U1MWVjOWIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dS
ZWFsbVByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU09i
amVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU2hhZG93UmVhbG1Qcm90b3R5cGUg
ZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFz
ZSA9IEpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJs
ZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFNoYWRvd1JlYWxtUHJvdG90eXBl
LCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgIH0KKwor
ICAgIHN0YXRpYyBTaGFkb3dSZWFsbVByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBTaGFkb3dSZWFsbVByb3RvdHlwZSogcHJvdG90
eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2hhZG93UmVhbG1Qcm90b3R5cGU+KHZt
LmhlYXApKSBTaGFkb3dSZWFsbVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcHJv
dG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwcm90b3R5cGU7Cisg
ICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFNoYWRvd1JlYWxtUHJvdG90eXBl
KFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworfTsKKwor
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihpbXBvcnRJblJlYWxtKTsKK0pTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oZXZhbEluUmVhbG0pOworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA5OTZhMDZkYWFiYTgyY2NlZmI0M2RmM2Y2NWYx
MzFlNmZkZTZlZTA3Li41ZDZmNzZkYzg1OTU2ZDAzZjhlMmQzYmViYjE1ZWI5NGQ3ZGY2OGNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xNTQsNiArMTU0LDcgQEAKICNp
bmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgi
CiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgorI2luY2x1ZGUgIlNoYWRvd1JlYWxtT2JqZWN0
LmgiCiAjaW5jbHVkZSAiU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJT
b3VyY2VQcm92aWRlckNhY2hlLmgiCiAjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIK
QEAgLTE1ODMsNiArMTU4NCw3IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhzY3JpcHRGZXRjaGVyU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwCiBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0QnVja2V0U3BhY2UsIGNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTU2V0OjpCdWNrZXRUeXBlKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHNldEl0ZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTU2V0SXRlcmF0b3IpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
c2V0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTU2V0KQorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNoYWRvd1JlYWxtU3BhY2UsIGNlbGxIZWFwQ2VsbFR5
cGUuZ2V0KCksIFNoYWRvd1JlYWxtT2JqZWN0KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHN0cmljdEV2YWxBY3RpdmF0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIFN0cmljdEV2YWxBY3RpdmF0aW9uKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHN0cmluZ0l0ZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTU3RyaW5nSXRlcmF0b3IpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coc291cmNlQ29kZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBK
U1NvdXJjZUNvZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA3YTU4YjI3OWU2
NzBhODQwM2QxZjM5NDEyMzU3ZDVlNzcxMTNmNTc4Li5kZTQ5NmE4NzY2ZjlkZmI2NGMzMjQyMTEy
ZTViMGQ5ZjM0MmY1ZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTU4OSw2
ICs1ODksNyBAQCBwdWJsaWM6CiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
UihzZXRCdWNrZXRTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KHNldEl0ZXJhdG9yU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
UihzZXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNoYWRv
d1JlYWxtU3BhY2UpOwogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc3Ry
aWN0RXZhbEFjdGl2YXRpb25TcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKHN0cmluZ0l0ZXJhdG9yU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihzb3VyY2VDb2RlU3BhY2UpCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxv
ZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQyYjdiOGE1YmM2NGM0ODJkNzJmYzlmMDdlMzE0
NDY3YzRhODA2OTYuLjk4NmE1YjZhN2RhNDFmYmQxYjczOWMwNzg0MmE2MDY3ZTI4OTI4ZDggMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzUgQEAKKzIwMjEtMDktMjkgIFBoaWxsaXAgTWF0ZXMgIDxwbWF0ZXNAaWdhbGlhLmNv
bT4KKworICAgICAgICBUZXN0IGNvdmVyYWdlIGZvciBKU0Mgc2hhZG93IHJlYWxtcyBpbXBsZW1l
bnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMwNjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBtb2R1bGVzL2ltcG9ydC1tZXRhLXN5bnRheC5qczoKKyAgICAgICAgKHNob3VsZFRocm93KToK
KyAgICAgICAgKiBzdHJlc3MvaW1wb3J0LXN5bnRheC5qczoKKyAgICAgICAgKiBzdHJlc3MvcmVz
b3VyY2VzL3NoYWRvdy1yZWFsbS1leGFtcGxlLW1vZHVsZS5qczogQWRkZWQuCisgICAgICAgIChw
dXRJbkdsb2JhbCk6CisgICAgICAgIChnZXRGcm9tR2xvYmFsKToKKyAgICAgICAgKGdldEFuT2Jq
ZWN0KToKKyAgICAgICAgKGdldENhbGxDb3VudCk6CisgICAgICAgICogc3RyZXNzL3NoYWRvdy1y
ZWFsbS1ldmFsdWF0ZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChz
aG91bGRUaHJvdyk6CisgICAgICAgIChhc3NlcnRpb25Gbik6CisgICAgICAgIChzaG91bGRCZS5T
dHJpbmcpOgorICAgICAgICAoc2hvdWxkQmUuZ2xvYmFsT2JqZWN0Rm9yLmRvRXZhbCk6CisgICAg
ICAgIChzaG91bGRCZS5nbG9iYWxPYmplY3RGb3IpOgorICAgICAgICAqIHN0cmVzcy9zaGFkb3ct
cmVhbG0taW1wb3J0LXZhbHVlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAg
ICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKGFzeW5jIHNob3VsZFRocm93QXN5bmMpOgorICAg
ICAgICAoYXN5bmMgY29uc3QpOgorICAgICAgICAoZG9JbXBvcnQpOgorICAgICAgICAqIHN0cmVz
cy9zaGFkb3ctcmVhbG0uanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAo
dGhyb3cubmV3LkVycm9yKToKKwogMjAyMS0wOS0yOCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFw
cGxlLmNvbT4KIAogICAgICAgICBEb2VzR0NDaGVjayBkb2VzIG5vdCB1c2UgZW5vdWdoIGJpdHMg
Zm9yIG5vZGVJbmRleApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9tb2R1bGVzL2ltcG9ydC1tZXRhLXN5
bnRheC5qcyBiL0pTVGVzdHMvbW9kdWxlcy9pbXBvcnQtbWV0YS1zeW50YXguanMKaW5kZXggM2Vk
ZjRlNTEyMGUxMmE1YjY4OTQ5MTNiMDVhYTcwYWM2NzY4NTY2Mi4uNTlhMmIzNjM0NjBhNjAzNWM3
YTEwNWYwOGMyMzZmOWY0YTk0MzUxYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9tb2R1bGVzL2ltcG9y
dC1tZXRhLXN5bnRheC5qcworKysgYi9KU1Rlc3RzL21vZHVsZXMvaW1wb3J0LW1ldGEtc3ludGF4
LmpzCkBAIC0xMCw3ICsxMCw3IEBAIHNob3VsZE5vdFRocm93KCgpID0+IHsKIAogc2hvdWxkVGhy
b3coKCkgPT4gewogICAgIGNoZWNrTW9kdWxlU3ludGF4KGAoaW1wb3J0LmNvY29hKWApOwotfSwg
YFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGlkZW50aWZpZXIgJ2NvY29hJy4gImltcG9ydC4iIGNh
biBvbmx5IGZvbGxvd2VkIHdpdGggbWV0YS46MWApOworfSwgYFN5bnRheEVycm9yOiBVbmV4cGVj
dGVkIGlkZW50aWZpZXIgJ2NvY29hJy4gImltcG9ydC4iIGNhbiBvbmx5IGJlIGZvbGxvd2VkIHdp
dGggbWV0YS46MWApOwogCiBzaG91bGRUaHJvdygoKSA9PiB7CiAgICAgY2hlY2tNb2R1bGVTeW50
YXgoYChpbXBvcnRbIkNvY29hIl0pYCk7CkBAIC0xOCw3ICsxOCw3IEBAIHNob3VsZFRocm93KCgp
ID0+IHsKIAogc2hvdWxkVGhyb3coKCkgPT4gewogICAgIGNoZWNrTW9kdWxlU3ludGF4KGBpbXBv
cnQuY29jb2FgKTsKLX0sIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCBpZGVudGlmaWVyICdjb2Nv
YScuICJpbXBvcnQuIiBjYW4gb25seSBmb2xsb3dlZCB3aXRoIG1ldGEuOjFgKTsKK30sIGBTeW50
YXhFcnJvcjogVW5leHBlY3RlZCBpZGVudGlmaWVyICdjb2NvYScuICJpbXBvcnQuIiBjYW4gb25s
eSBiZSBmb2xsb3dlZCB3aXRoIG1ldGEuOjFgKTsKIAogc2hvdWxkVGhyb3coKCkgPT4gewogICAg
IGNoZWNrTW9kdWxlU3ludGF4KGBpbXBvcnRbIkNvY29hIl1gKTsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2ltcG9ydC1zeW50YXguanMgYi9KU1Rlc3RzL3N0cmVzcy9pbXBvcnQtc3ludGF4
LmpzCmluZGV4IDI1YTNmYmJmNjg2NjE1N2IxNzVkYThlZGFlNzhjMGU5ZTI4MTVjMjYuLjk0ZTA4
NTBmN2IyODkyYTg2MWFkNWQwZjQ1MGZmNDRmOTE3MjRkMjEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
c3RyZXNzL2ltcG9ydC1zeW50YXguanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW1wb3J0LXN5bnRh
eC5qcwpAQCAtMjksNyArMjksNyBAQCBhc3luYyBmdW5jdGlvbiB0ZXN0U3ludGF4KHNjcmlwdCwg
bWVzc2FnZSkgewogCiB0ZXN0U3ludGF4RXJyb3IoYGltcG9ydClgLCBgU3ludGF4RXJyb3I6IFVu
ZXhwZWN0ZWQgdG9rZW4gJyknLiBpbXBvcnQgY2FsbCBleHBlY3RzIGV4YWN0bHkgb25lIGFyZ3Vt
ZW50LmApOwogdGVzdFN5bnRheEVycm9yKGBuZXcgaW1wb3J0KGAsIGBTeW50YXhFcnJvcjogQ2Fu
bm90IHVzZSBuZXcgd2l0aCBpbXBvcnQuYCk7Ci10ZXN0U3ludGF4RXJyb3IoYGltcG9ydC5oZWxs
bygpYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGlkZW50aWZpZXIgJ2hlbGxvJy4gImltcG9y
dC4iIGNhbiBvbmx5IGZvbGxvd2VkIHdpdGggbWV0YS5gKTsKK3Rlc3RTeW50YXhFcnJvcihgaW1w
b3J0LmhlbGxvKClgLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgaWRlbnRpZmllciAnaGVsbG8n
LiAiaW1wb3J0LiIgY2FuIG9ubHkgYmUgZm9sbG93ZWQgd2l0aCBtZXRhLmApOwogdGVzdFN5bnRh
eEVycm9yKGBpbXBvcnRbYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICdbJy4gaW1w
b3J0IGNhbGwgZXhwZWN0cyBleGFjdGx5IG9uZSBhcmd1bWVudC5gKTsKIHRlc3RTeW50YXhFcnJv
cihgaW1wb3J0PGAsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnPCcuIGltcG9ydCBj
YWxsIGV4cGVjdHMgZXhhY3RseSBvbmUgYXJndW1lbnQuYCk7CiAKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL3Jlc291cmNlcy9zaGFkb3ctcmVhbG0tZXhhbXBsZS1tb2R1bGUuanMgYi9KU1Rl
c3RzL3N0cmVzcy9yZXNvdXJjZXMvc2hhZG93LXJlYWxtLWV4YW1wbGUtbW9kdWxlLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjhiNGY1NzljMmY5YTZkYzIzOTBiZTJmYTA1NWNlNjhkNjgwMzMwZjMKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9yZXNvdXJjZXMvc2hhZG93LXJlYWxtLWV4YW1wbGUt
bW9kdWxlLmpzCkBAIC0wLDAgKzEsMjUgQEAKK3ZhciBjYWxsQ291bnQgPSAwOworCitmdW5jdGlv
biBwdXRJbkdsb2JhbChrZXksIHZhbCkgeworICAgIGNhbGxDb3VudCsrOworICAgIGdsb2JhbFRo
aXMua2V5ID0gdmFsOworfQorCitmdW5jdGlvbiBnZXRGcm9tR2xvYmFsKGtleSkgeworICAgIGNh
bGxDb3VudCsrOworICAgIHJldHVybiBnbG9iYWxUaGlzLmtleTsKK30KKwordmFyIGFuT2JqZWN0
ID0gbmV3IE9iamVjdCgpOworCitmdW5jdGlvbiBnZXRBbk9iamVjdCgpIHsKKyAgICBjYWxsQ291
bnQrKzsKKyAgICByZXR1cm4gYW5PYmplY3Q7Cit9CisKK2Z1bmN0aW9uIGdldENhbGxDb3VudCgp
IHsKKyAgICByZXR1cm4gY2FsbENvdW50OworfQorCit2YXIgYW5zd2VyID0gNjsKK2V4cG9ydCB7
IGFuT2JqZWN0LCBhbnN3ZXIsIGdldENhbGxDb3VudCwgZ2V0RnJvbUdsb2JhbCwgZ2V0QW5PYmpl
Y3QsIHB1dEluR2xvYmFsIH07CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zaGFkb3ctcmVh
bG0tZXZhbHVhdGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9zaGFkb3ctcmVhbG0tZXZhbHVhdGUuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDk4MWM5NGJmOGVkNWQ2ZDAzMzVjYzRiNGQyMjllNTFmZjhjMTNkMQotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3NoYWRvdy1yZWFsbS1ldmFsdWF0ZS5qcwpA
QCAtMCwwICsxLDE1NiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVNoYWRvd1JlYWxtPTEi
KQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgJHtleHBl
Y3RlZH0gYnV0IGdvdCAke2FjdHVhbH1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVu
YywgZXJyb3JUeXBlLCBhc3NlcnRpb25GbikgeworICAgIGxldCBlcnJvcjsKKyAgICB0cnkgewor
ICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7Cisg
ICAgfQorCisgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7ZXJyb3JUeXBlLm5hbWV9IGJ1dCBnb3QgJHtlcnJv
ci5uYW1lfWApOworCisgICAgYXNzZXJ0aW9uRm4oZXJyb3IpOworfQorCisvLyBiYXNpYyBldmFs
dWF0aW9uIGFuZCBzdGF0ZSBzZXR0aW5nCit7CisgICAgbGV0IHJlYWxtID0gbmV3IFNoYWRvd1Jl
YWxtKCk7CisgICAgbGV0IG90aGVyUmVhbG0gPSBuZXcgU2hhZG93UmVhbG0oKTsKKworICAgIHNo
b3VsZEJlKHJlYWxtLmV2YWx1YXRlKCIxIiksIDEpOworICAgIHZhciB4ID0gMjsKKyAgICByZWFs
bS5ldmFsdWF0ZSgidmFyIHggPSAxIik7CisgICAgc2hvdWxkQmUocmVhbG0uZXZhbHVhdGUoIngi
KSwgMSk7CisgICAgc2hvdWxkQmUoeCwgMik7CisKKyAgICAvLyBzY29wZSBpc24ndCBzaGFyZWQg
YWNyb3NzIHJlYWxtcworICAgIHNob3VsZEJlKG90aGVyUmVhbG0uZXZhbHVhdGUoImdsb2JhbFRo
aXMueCIpLCB1bmRlZmluZWQpOworfQorCisvLyBhY2Nlc3NpbmcgYGdsb2JhbFRoaXNgIHdpdGhp
biBhbmQgb3V0c2lkZSBvZiBhIHNoYWRvdyByZWFsbQoreworICAgIGxldCByZWFsbSA9IG5ldyBT
aGFkb3dSZWFsbSgpOworICAgIGdsb2JhbFRoaXMuaGkgPSA2OworCisgICAgc2hvdWxkQmUocmVh
bG0uZXZhbHVhdGUoImdsb2JhbFRoaXMuaGkiKSwgdW5kZWZpbmVkKTsKKworICAgIHJlYWxtLmV2
YWx1YXRlKCJnbG9iYWxUaGlzLmhpID0gJ2ZhbGEgYW1pZ28nIik7CisKKyAgICBzaG91bGRCZShy
ZWFsbS5ldmFsdWF0ZSgiZ2xvYmFsVGhpcy5oaSIpLCAiZmFsYSBhbWlnbyIpOworICAgIHNob3Vs
ZEJlKGdsb2JhbFRoaXMuaGksIDYpOworfQorCisvLyBlbnN1cmUgdGhhdCBlcnJvcnMgdGhyb3du
IGlzbid0IGFzc29jaWF0ZWQgd2l0aCB0aGUgc2hhZG93IHJlYWxtJ3MgZ2xvYmFsIG9iamVjdAor
eworICAgIGxldCByZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOworICAgIHNob3VsZFRocm93KAor
ICAgICAgKCkgPT4geyByZWFsbS5ldmFsdWF0ZSgiLi4iKTsgfSwKKyAgICAgIFN5bnRheEVycm9y
LAorICAgICAgKGVycikgPT4geworICAgICAgICAgIHNob3VsZEJlKCQuZ2xvYmFsT2JqZWN0Rm9y
KGVyciksIGdsb2JhbFRoaXMpOworICAgICAgICAgIHNob3VsZEJlKFN0cmluZyhlcnIpLCBgU3lu
dGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJy4nYCk7CisgICAgICB9KTsKK30KKworLy8gZW5z
dXJlIHRoYXQgZXJyb3JzIHRocm93biBkb24ndCBjYXJyeSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBz
aGFkb3cgcmVhbG0KK3sKKyAgICBsZXQgcmVhbG0gPSBuZXcgU2hhZG93UmVhbG0oKTsKKyAgICBz
aG91bGRUaHJvdygKKyAgICAgICgpID0+IHsgcmVhbG0uZXZhbHVhdGUoInRocm93IG5ldyBFcnJv
cignc2VjcmV0JykiKTsgfSwKKyAgICAgIFR5cGVFcnJvciwKKyAgICAgIChlcnIpID0+IHsKKyAg
ICAgICAgICBzaG91bGRCZSgkLmdsb2JhbE9iamVjdEZvcihlcnIpLCBnbG9iYWxUaGlzKTsKKyAg
ICAgICAgICBzaG91bGRCZShTdHJpbmcoZXJyKSwgIlR5cGVFcnJvcjogRXJyb3IgZW5jb3VudGVy
ZWQgZHVyaW5nIGV2YWx1YXRpb24iKTsKKyAgICAgIH0pOworfQorCisvLyB3cmFwcGVkIGZ1bmN0
aW9ucyBwcm90ZWN0IHRoZSBzaGFkb3cgcmVhbG0KK3sKKyAgICBsZXQgcmVhbG0gPSBuZXcgU2hh
ZG93UmVhbG0oKTsKKyAgICBsZXQgd3JhcHBlZEludm9rZUFuZEFkZCA9IHJlYWxtLmV2YWx1YXRl
KCJmdW5jdGlvbiBpbnZva2VBbmRBZGQoeEZuLCB5Rm4pIHsgcmV0dXJuIHhGbigpICsgeUZuKCk7
IH07IGludm9rZUFuZEFkZCIpOworICAgIHNob3VsZEJlKHdyYXBwZWRJbnZva2VBbmRBZGQoKCkg
PT4geyByZXR1cm4gMSB9LCAoKSA9PiB7IHJldHVybiAyIH0pLCAzKTsKKyAgICBzaG91bGRCZSgk
Lmdsb2JhbE9iamVjdEZvcih3cmFwcGVkSW52b2tlQW5kQWRkKSwgZ2xvYmFsVGhpcyk7CisKKyAg
ICAvLyBuYW1lIGFuZCBsZW5ndGggcHJvcGVydGllcyBmcm9tIHdyYXBwZWQgZnVuY3Rpb24gYXJl
IGFic2VudAorICAgIHNob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod3Jh
cHBlZEludm9rZUFuZEFkZCwgImxlbmd0aCIpLCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod3JhcHBlZEludm9rZUFuZEFkZCwgIm5hbWUi
KSwgdW5kZWZpbmVkKTsKKworICAgIC8vIGNhbid0IHBhc3Mgb2JqZWN0cyBpbnRvIGEgc2hhZG93
IHJlYWxtLXdyYXBwZWQgZnVuY3Rpb24KKyAgICBsZXQgbnVtYmVyT2JqID0geyB2YWx1ZU9mKCkg
eyByZXR1cm4gLTEgfSB9OworICAgIHNob3VsZFRocm93KAorICAgICAgKCkgPT4geyB3cmFwcGVk
SW52b2tlQW5kQWRkKG51bWJlck9iaiwgMSk7IH0sCisgICAgICBUeXBlRXJyb3IsCisgICAgICAo
ZXJyKSA9PiB7CisgICAgICAgICAgc2hvdWxkQmUoJC5nbG9iYWxPYmplY3RGb3IoZXJyKSwgZ2xv
YmFsVGhpcyk7CisgICAgICAgICAgc2hvdWxkQmUoU3RyaW5nKGVyciksICJUeXBlRXJyb3I6IHZh
bHVlIHBhc3NpbmcgYmV0d2VlbiByZWFsbXMgbXVzdCBiZSBjYWxsYWJsZSBvciBwcmltaXRpdmUi
KTsKKyAgICAgIH0pOworfQorCit7CisgICAgbGV0IHJlYWxtID0gbmV3IFNoYWRvd1JlYWxtKCk7
CisgICAgLy8gY2FuJ3QgY2FsbCBgZXZhbHVhdGVgIG9uIGEgbm9uIHNoYWRvdyByZWFsbQorICAg
IGxldCBub3RSZWFsbSA9IHt9OworICAgIHNob3VsZFRocm93KAorICAgICAgKCkgPT4geyByZWFs
bS5ldmFsdWF0ZS5jYWxsKG5vdFJlYWxtLCAnMScpOyB9LAorICAgICAgVHlwZUVycm9yLAorICAg
ICAgKGVycikgPT4geyBzaG91bGRCZSgkLmdsb2JhbE9iamVjdEZvcihlcnIpLCBnbG9iYWxUaGlz
KTsgfQorICAgICk7Cit9CisKKy8vIHRyaWdnZXIgSklUCit7CisgICAgZnVuY3Rpb24gZG9FdmFs
KHJlYWxtLCBzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlYWxtLmV2YWx1YXRlKHMpOworICAg
IH0KKworICAgIG5vSW5saW5lKGRvRXZhbCk7CisKKyAgICBsZXQgcmVhbG0gPSBuZXcgU2hhZG93
UmVhbG0oKTsKKyAgICByZWFsbS5ldmFsdWF0ZSgiZ2xvYmFsVGhpcy5zZWNyZXQgPSAxOyIpOwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKKyAgICAgICAgc2hvdWxkQmUoZG9F
dmFsKHJlYWxtLCAnNDInKSwgNDIpOworCisgICAgLy8gTk9URTogbW9yZSBpdGVyYXRpb25zIGhl
cmUgdHJpZ2dlcnMgYSBHQy9PT00gaXNzdWUgb24gQVJNIGRldmljZXMuCisgICAgLy8gICAgICAg
bWluaW1hbCByZXByb2R1Y3Rpb246CisgICAgLy8gICAgICAgYGZvciAodmFyIGkgPSAwOyBpIDwg
MjAwMDA7ICsraSkgeyAoMCwgZXZhbCkoIigpID0+IHsgfSIpOyB9YAorICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZG9FdmFsKHJlYWxtLCAnKHgp
ID0+IHsgcmV0dXJuIHgoKSArIGdsb2JhbFRoaXMuc2VjcmV0OyB9Jyk7CisgICAgICAgIHNob3Vs
ZEJlKCQuZ2xvYmFsT2JqZWN0Rm9yKGYpLCBnbG9iYWxUaGlzKTsKKyAgICAgICAgc2hvdWxkQmUo
ZigoKSA9PiB7IHJldHVybiA0MTsgfSksIDQyKTsKKyAgICB9CisgICAgLy8gKHBvdGVudGlhbCkg
aW5saW5pbmcgb2Ygd3JhcHBlZCBmdW5jdGlvbiB1c2VzIGNvcnJlY3QgZ2xvYmFsIG9iamVjdAor
ICAgIGxldCBmID0gZG9FdmFsKHJlYWxtLCAnKHgpID0+IHsgcmV0dXJuIHgoKSArIGdsb2JhbFRo
aXMuc2VjcmV0OyB9Jyk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7Cisg
ICAgICAgIHNob3VsZEJlKCQuZ2xvYmFsT2JqZWN0Rm9yKGYpLCBnbG9iYWxUaGlzKTsKKyAgICAg
ICAgc2hvdWxkQmUoZigoKSA9PiB7IHJldHVybiA0MTsgfSksIDQyKTsKKyAgICB9CisgICAgLy8g
KHBvdGVudGlhbCkgaW5saW5pbmcgaW5zaWRlIGEgcmVhbG0gdXNlcyBjb3JyZWN0IGdsb2JhbCBv
YmplY3QKKyAgICBsZXQgbG9vcEluc2lkZSA9IGRvRXZhbChyZWFsbSwgJyh4KSA9PiB7IGxldCBh
Y2MgPSAwOyBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsgYWNjICs9IHgoKTsgfTsg
cmV0dXJuIGFjYzsgfScpOworICAgIGdsb2JhbFRoaXMuc2VjcmV0ID0gLTE7CisgICAgc2hvdWxk
QmUobG9vcEluc2lkZSgoKSA9PiB7IHJldHVybiBnbG9iYWxUaGlzLnNlY3JldDsgfSksIC0xMDAw
MCk7Cit9CisKKy8vIGV2YWx1YXRlIHNwZWNzCit7CisgICAgc2hvdWxkQmUodHlwZW9mIFNoYWRv
d1JlYWxtLnByb3RvdHlwZS5ldmFsdWF0ZSwgImZ1bmN0aW9uIik7CisKKyAgICBsZXQgZXZhbHVh
dGVOYW1lID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihTaGFkb3dSZWFsbS5wcm90
b3R5cGUuZXZhbHVhdGUsICJuYW1lIik7CisgICAgc2hvdWxkQmUoZXZhbHVhdGVOYW1lLnZhbHVl
LCAiZXZhbHVhdGUiKTsKKyAgICBzaG91bGRCZShldmFsdWF0ZU5hbWUuZW51bWVyYWJsZSwgZmFs
c2UpOworICAgIHNob3VsZEJlKGV2YWx1YXRlTmFtZS53cml0YWJsZSwgZmFsc2UpOworICAgIHNo
b3VsZEJlKGV2YWx1YXRlTmFtZS5jb25maWd1cmFibGUsIHRydWUpOworCisgICAgbGV0IGV2YWx1
YXRlTGVuZ3RoID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihTaGFkb3dSZWFsbS5w
cm90b3R5cGUuZXZhbHVhdGUsICJsZW5ndGgiKTsKKyAgICBzaG91bGRCZShldmFsdWF0ZUxlbmd0
aC52YWx1ZSwgMSk7CisgICAgc2hvdWxkQmUoZXZhbHVhdGVMZW5ndGguZW51bWVyYWJsZSwgZmFs
c2UpOworICAgIHNob3VsZEJlKGV2YWx1YXRlTGVuZ3RoLndyaXRhYmxlLCBmYWxzZSk7CisgICAg
c2hvdWxkQmUoZXZhbHVhdGVMZW5ndGguY29uZmlndXJhYmxlLCB0cnVlKTsKK30KZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3NoYWRvdy1yZWFsbS1pbXBvcnQtdmFsdWUuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9zaGFkb3ctcmVhbG0taW1wb3J0LXZhbHVlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0M2NkOGU2
MjNmMWY2ZDEzOTMxYzdiOWRiOGRkZTMwODQ2MDhhODUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9zaGFkb3ctcmVhbG0taW1wb3J0LXZhbHVlLmpzCkBAIC0wLDAgKzEsMTQ4IEBA
CisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlU2hhZG93UmVhbG09MSIpCisKK3ZhciBhYm9ydCA9
ICR2bS5hYm9ydDsKKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVj
dGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9YCk7Cit9CisKK2Z1bmN0aW9uIHNob3Vs
ZFRocm93KGZ1bmMsIGVycm9yVHlwZSkgeworICAgIGxldCBlcnJvcjsKKyAgICB0cnkgeworICAg
ICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7CisgICAg
fQorCisgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7ZXJyb3JUeXBlLm5hbWV9ISBnb3QgJHtlcnJvci5uYW1l
fWApOworfQorCithc3luYyBmdW5jdGlvbiBzaG91bGRUaHJvd0FzeW5jKGZ1bmMsIGVycm9yVHlw
ZSkgeworICAgIGxldCBlcnJvcjsKKyAgICB0cnkgeworICAgICAgICBhd2FpdCBmdW5jKCk7Cisg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorCisgICAgaWYgKCEo
ZXJyb3IgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4
cGVjdGVkICR7ZXJyb3JUeXBlLm5hbWV9ISBnb3QgJHtlcnJvci5uYW1lfSB3aXRoIG1lc3NhZ2Ug
JHtlcnJvci5tZXNzYWdlfWApOworfQorCisoYXN5bmMgZnVuY3Rpb24gKCkgeworICAgIGNvbnN0
IGltcG9ydFBhdGggPSAiLi9yZXNvdXJjZXMvc2hhZG93LXJlYWxtLWV4YW1wbGUtbW9kdWxlLmpz
IjsKKyAgICBjb25zdCB7IGFuc3dlciwgZ2V0Q2FsbENvdW50LCBwdXRJbkdsb2JhbCwgZ2V0RnJv
bUdsb2JhbCwgZ2V0QW5PYmplY3QgfSA9IGF3YWl0IGltcG9ydChpbXBvcnRQYXRoKTsKKyAgICBj
b25zdCBvdXRlckFuc3dlciA9IGFuc3dlcjsKKyAgICBjb25zdCBvdXRlckdldENhbGxDb3VudCA9
IGdldENhbGxDb3VudDsKKyAgICBjb25zdCBvdXRlclB1dEluR2xvYmFsID0gcHV0SW5HbG9iYWw7
CisgICAgY29uc3Qgb3V0ZXJHZXRGcm9tR2xvYmFsID0gZ2V0RnJvbUdsb2JhbDsKKyAgICBjb25z
dCBvdXRlckdldEFuT2JqZWN0ID0gZ2V0QW5PYmplY3Q7CisKKyAgICB7CisgICAgICAgIGxldCBy
ZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOworCisgICAgICAgIC8vIHVwZGF0ZSBsb2NhbCBtb2R1
bGUgc3RhdGUgKyBjaGVjayBpdAorICAgICAgICBzaG91bGRCZShvdXRlckdldENhbGxDb3VudCgp
LCAwKTsKKyAgICAgICAgb3V0ZXJHZXRBbk9iamVjdCgpOworICAgICAgICBzaG91bGRCZShvdXRl
ckdldENhbGxDb3VudCgpLCAxKTsKKyAgICAgICAgLy8gdXBkYXRlIHJlYWxtIG1vZHVsZSBzdGF0
ZSArIGNoZWNrIGl0CisgICAgICAgIGxldCBpbm5lckdldENhbGxDb3VudCA9IGF3YWl0IHJlYWxt
LmltcG9ydFZhbHVlKGltcG9ydFBhdGgsICJnZXRDYWxsQ291bnQiKTsKKyAgICAgICAgbGV0IGlu
bmVyUHV0SW5HbG9iYWwgPSBhd2FpdCByZWFsbS5pbXBvcnRWYWx1ZShpbXBvcnRQYXRoLCAicHV0
SW5HbG9iYWwiKTsKKyAgICAgICAgc2hvdWxkQmUoaW5uZXJHZXRDYWxsQ291bnQoKSwgMCk7Cisg
ICAgICAgIGlubmVyUHV0SW5HbG9iYWwoInNvbWV0aGluZyIsICJyYW5kb20iKTsKKyAgICAgICAg
c2hvdWxkQmUoaW5uZXJHZXRDYWxsQ291bnQoKSwgMSk7CisgICAgICAgIC8vIHJlLWltcG9ydGlu
ZyB0aGUgbW9kdWxlIGludG8gdGhlIHJlYWxtIGRvZXNuJ3QgcmVsb2FkIHRoZSBtb2R1bGUKKyAg
ICAgICAgaW5uZXJHZXRDYWxsQ291bnQgPSBhd2FpdCByZWFsbS5pbXBvcnRWYWx1ZShpbXBvcnRQ
YXRoLCAiZ2V0Q2FsbENvdW50Iik7CisgICAgICAgIHNob3VsZEJlKGlubmVyR2V0Q2FsbENvdW50
KCksIDEpOworICAgICAgICAvLyB0aGUgKG91dGVyKSBsb2NhbCBtb2R1bGUgc3RhdGUgc3RheXMg
aW50YWN0CisgICAgICAgIHNob3VsZEJlKG91dGVyR2V0Q2FsbENvdW50KCksIDEpOworCisgICAg
ICAgIC8vIG9uZSBjYW4gaW1wb3J0ZWQgcHJpbWl0aXZlL2NhbGxhYmxlIHZhcmlhYmxlcyBqdXN0
IGZpbmUKKyAgICAgICAgLy8gc2hvdWxkQmUoaW5uZXJBbnN3ZXIsIG91dGVyQW5zd2VyKTsKKyAg
ICAgICAgbGV0IGlubmVyQW5zd2VyID0gYXdhaXQgcmVhbG0uaW1wb3J0VmFsdWUoaW1wb3J0UGF0
aCwgImFuc3dlciIpOworICAgICAgICBzaG91bGRCZShpbm5lckFuc3dlciwgb3V0ZXJBbnN3ZXIp
OworCisgICAgICAgIC8vIGltcG9ydGVkIHZhcmlhYmxlcyBhcmUgY2hlY2tlZCBmb3IgcHJpbXRp
dmUvY2FsbGFibGUtbmVzcworICAgICAgICBhd2FpdCBzaG91bGRUaHJvd0FzeW5jKGFzeW5jICgp
ID0+IHsgbGV0IHggPSBhd2FpdCByZWFsbS5pbXBvcnRWYWx1ZShpbXBvcnRQYXRoLCAiYW5PYmpl
Y3QiKTsgfSwgVHlwZUVycm9yKTsKKworICAgICAgICAvLyBpbXBvcnRpbmcgbm9uLWV4aXN0ZW50
IHJlZiBmYWlscworICAgICAgICBhd2FpdCBzaG91bGRUaHJvd0FzeW5jKGFzeW5jICgpID0+IHsg
bGV0IHggPSBhd2FpdCByZWFsbS5pbXBvcnRWYWx1ZShpbXBvcnRQYXRoLCAibm90aGluZyIpOyB9
LCBUeXBlRXJyb3IpOworCisgICAgICAgIC8vIGltcG9ydGluZyBmcm9tIG5vbi1leGlzdGVudCBm
aWxlIGZhaWxzCisgICAgICAgIGF3YWl0IHNob3VsZFRocm93QXN5bmMoYXN5bmMgKCkgPT4geyBs
ZXQgeCA9IGF3YWl0IHJlYWxtLmltcG9ydFZhbHVlKCJyYW5kb20iLCAibm90aGluZyIpOyB9LCBU
eXBlRXJyb3IpOworCisgICAgICAgIC8vIHdlIGNhbiBpbXBvcnQgZnVuY3Rpb25zIHRocm91Z2gg
YW4gaW5uZXIgcmVhbG0gZm9yIHVzZSBpbiB0aGUgb3V0ZXIKKyAgICAgICAgbGV0IGlubmVyR2V0
RnJvbUdsb2JhbCA9IGF3YWl0IHJlYWxtLmltcG9ydFZhbHVlKGltcG9ydFBhdGgsICJnZXRGcm9t
R2xvYmFsIik7CisgICAgICAgIGlubmVyUHV0SW5HbG9iYWwoInNhbHV0YXRpb24iLCAic2FyYXZh
Iik7CisgICAgICAgIHNob3VsZEJlKGlubmVyR2V0RnJvbUdsb2JhbCgic2FsdXRhdGlvbiIpLCAi
c2FyYXZhIik7CisKKyAgICAgICAgLy8gaW5uZXIgZ2xvYmFsIHN0YXRlIGlzIHVuY2hhbmdlZCBi
eSBvdXRlciBnbG9iYWwgc3RhdGUgY2hhbmdlCisgICAgICAgIG91dGVyUHV0SW5HbG9iYWwoInNh
bHV0YXRpb24iLCAiaGVsbG8gd29ybGQhIik7CisgICAgICAgIHNob3VsZEJlKG91dGVyR2V0RnJv
bUdsb2JhbCgic2FsdXRhdGlvbiIpLCAiaGVsbG8gd29ybGQhIik7CisgICAgICAgIHNob3VsZEJl
KGlubmVyR2V0RnJvbUdsb2JhbCgic2FsdXRhdGlvbiIpLCAic2FyYXZhIik7CisKKyAgICAgICAg
Ly8gd3JhcHBlZCBmdW5jdGlvbnMgY2hlY2sgYXJndW1lbnRzIGZvciBwcmltaXRpdmUvY2FsbGFi
bGUtbmVzcworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IGlubmVyUHV0SW5HbG9iYWwoInRy
ZWFzdXJlIiwgbmV3IE9iamVjdCgpKTsgfSwgVHlwZUVycm9yKTsKKworICAgICAgICAvLyBpbXBv
cnRlZCBmdW5jdGlvbnMgYXJlIHdyYXBwZWQgd2l0aCBjb3JyZWN0IHJldHVybiB2YWx1ZSBjaGVj
a3MKKyAgICAgICAgbGV0IGdldEFuT2JqZWN0Rm4gPSBhd2FpdCByZWFsbS5pbXBvcnRWYWx1ZShp
bXBvcnRQYXRoLCAiZ2V0QW5PYmplY3QiKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBn
ZXRBbk9iamVjdEZuKCk7IH0sIFR5cGVFcnJvcik7CisKKyAgICAgICAgLy8gdGhyZWFkIGEgZnVu
Y3Rpb24gaW4gYW5kIG91dCBvZiBhIHJlYWxtIHRvIHdyYXAgaXQgdXAKKyAgICAgICAgaW5uZXJQ
dXRJbkdsb2JhbCgib3V0ZXItcmVhbG0tcHV0Iiwgb3V0ZXJQdXRJbkdsb2JhbCk7CisgICAgICAg
IHdyYXBwZWRPdXRlclB1dEluR2xvYmFsID0gaW5uZXJHZXRGcm9tR2xvYmFsKCJvdXRlci1yZWFs
bS1wdXQiKTsKKworICAgICAgICAvLyBpdCBzdGlsbCBtYW5pcHVhdGVzIHRoZSBjb3JyZWN0IGds
b2JhbCBvYmplY3Qgc3RhdGUKKyAgICAgICAgd3JhcHBlZE91dGVyUHV0SW5HbG9iYWwoInRyZWFz
dXJlIiwgInNoaW55IHRpbiBzY3JhcCIpOworICAgICAgICBzaG91bGRCZShvdXRlckdldEZyb21H
bG9iYWwoInRyZWFzdXJlIiksICJzaGlueSB0aW4gc2NyYXAiKTsKKworICAgICAgICAvLyB3cmFw
cGVkIGZ1bmN0aW9ucyBjaGVjayBhcmd1bWVudHMgZm9yIHByaW1pdGl2ZS9jYWxsYWJsZS1uZXNz
CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgd3JhcHBlZE91dGVyUHV0SW5HbG9iYWwoInRy
ZWFzdXJlIiwgbmV3IE9iamVjdCgpKTsgfSwgVHlwZUVycm9yKTsKKyAgICAgICAgc2hvdWxkVGhy
b3coKCkgPT4geyB3cmFwcGVkT3V0ZXJQdXRJbkdsb2JhbChuZXcgT2JqZWN0KCksICJzaGlueSB0
aW4gc2NyYXAiKTsgfSwgVHlwZUVycm9yKTsKKworICAgICAgICAvLyBtdXN0IGJlIGNhbGxlZCBv
biBhIFNoYWRvd1JlYWxtCisgICAgICAgIGxldCBub3RSZWFsbSA9IHt9OworICAgICAgICBzaG91
bGRUaHJvdygKKyAgICAgICAgICAoKSA9PiB7IHJlYWxtLmltcG9ydFZhbHVlLmNhbGwobm90UmVh
bG0sIGltcG9ydFBhdGgsICJhbnN3ZXIiKTsgfSwKKyAgICAgICAgICBUeXBlRXJyb3IsCisgICAg
ICAgICAgKGVycikgPT4geyBzaG91bGRCZSgkLmdsb2JhbE9iamVjdEZvcihlcnIpLCBnbG9iYWxU
aGlzKTsgfQorICAgICAgICApOworICAgIH0KKworICAgIC8vIHRyaWdnZXIgSklUCisgICAgewor
ICAgICAgICBmdW5jdGlvbiBkb0ltcG9ydChyZWFsbSwgcykKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIHJlYWxtLmltcG9ydFZhbHVlKGltcG9ydFBhdGgsIHMpOworICAgICAgICB9CisK
KyAgICAgICAgbm9JbmxpbmUoZG9JbXBvcnQpOworCisgICAgICAgIGxldCByZWFsbSA9IG5ldyBT
aGFkb3dSZWFsbSgpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsK
KyAgICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBkb0ltcG9ydChyZWFsbSwgImdldENhbGxD
b3VudCIpOworICAgICAgICAgICAgc2hvdWxkQmUocmVzdWx0KCksIDApOworICAgICAgICB9Cisg
ICAgfQorfSgpKS5jYXRjaCgoZXJyb3IpID0+IHsKKyAgICBwcmludChTdHJpbmcoZXJyb3IpKTsK
KyAgICBhYm9ydCgpOworfSk7CisKK3sKKyAgICBzaG91bGRCZSh0eXBlb2YgU2hhZG93UmVhbG0u
cHJvdG90eXBlLmltcG9ydFZhbHVlLCAiZnVuY3Rpb24iKTsKKworICAgIGxldCBpbXBvcnRWYWx1
ZU5hbWUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFNoYWRvd1JlYWxtLnByb3Rv
dHlwZS5pbXBvcnRWYWx1ZSwgIm5hbWUiKTsKKyAgICBzaG91bGRCZShpbXBvcnRWYWx1ZU5hbWUu
dmFsdWUsICJpbXBvcnRWYWx1ZSIpOworICAgIHNob3VsZEJlKGltcG9ydFZhbHVlTmFtZS5lbnVt
ZXJhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoaW1wb3J0VmFsdWVOYW1lLndyaXRhYmxlLCBm
YWxzZSk7CisgICAgc2hvdWxkQmUoaW1wb3J0VmFsdWVOYW1lLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7
CisKKyAgICBsZXQgaW1wb3J0VmFsdWVMZW5ndGggPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKFNoYWRvd1JlYWxtLnByb3RvdHlwZS5pbXBvcnRWYWx1ZSwgImxlbmd0aCIpOworICAg
IHNob3VsZEJlKGltcG9ydFZhbHVlTGVuZ3RoLnZhbHVlLCAyKTsKKyAgICBzaG91bGRCZShpbXBv
cnRWYWx1ZUxlbmd0aC5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoaW1wb3J0VmFs
dWVMZW5ndGgud3JpdGFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShpbXBvcnRWYWx1ZUxlbmd0
aC5jb25maWd1cmFibGUsIHRydWUpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc2hh
ZG93LXJlYWxtLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc2hhZG93LXJlYWxtLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA2MmI4OGM2ZTM5NTk5NTYzNGQ3ZWQ4ZWY5ZTk5ZjJjM2ZkODg2YTUKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9zaGFkb3ctcmVhbG0uanMKQEAgLTAsMCArMSwzNiBAQAorLy9A
IHJlcXVpcmVPcHRpb25zKCItLXVzZVNoYWRvd1JlYWxtPTEiKQorCitmdW5jdGlvbiBzaG91bGRC
ZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVh
bH1gKTsKK30KKworLy8gc2hhZG93IHJlYWxtIHNwZWNzCit7CisgICAgbGV0IHNoYWRvd1JlYWxt
UHJvcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcywgIlNoYWRvd1JlYWxt
Iik7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1Qcm9wLmVudW1lcmFibGUsIGZhbHNlKTsKKyAg
ICBzaG91bGRCZShzaGFkb3dSZWFsbVByb3Aud3JpdGFibGUsIHRydWUpOworICAgIHNob3VsZEJl
KHNoYWRvd1JlYWxtUHJvcC5jb25maWd1cmFibGUsIHRydWUpOworCisgICAgbGV0IHNoYWRvd1Jl
YWxtRXZhbHVhdGUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFNoYWRvd1JlYWxt
LnByb3RvdHlwZSwgImV2YWx1YXRlIik7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1FdmFsdWF0
ZS5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1FdmFsdWF0ZS53
cml0YWJsZSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1FdmFsdWF0ZS5jb25maWd1
cmFibGUsIHRydWUpOworCisgICAgbGV0IHNoYWRvd1JlYWxtSW1wb3J0VmFsdWUgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFNoYWRvd1JlYWxtLnByb3RvdHlwZSwgImltcG9ydFZh
bHVlIik7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1JbXBvcnRWYWx1ZS5lbnVtZXJhYmxlLCBm
YWxzZSk7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1JbXBvcnRWYWx1ZS53cml0YWJsZSwgdHJ1
ZSk7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1JbXBvcnRWYWx1ZS5jb25maWd1cmFibGUsIHRy
dWUpOworCisgICAgbGV0IHNoYWRvd1JlYWxtTmFtZSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoU2hhZG93UmVhbG0sICJuYW1lIik7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1O
YW1lLnZhbHVlLCAiU2hhZG93UmVhbG0iKTsKKyAgICBzaG91bGRCZShzaGFkb3dSZWFsbU5hbWUu
ZW51bWVyYWJsZSwgZmFsc2UpOworICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtTmFtZS53cml0YWJs
ZSwgZmFsc2UpOworICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtTmFtZS5jb25maWd1cmFibGUsIHRy
dWUpOworCisgICAgbGV0IHNoYWRvd1JlYWxtTGVuZ3RoID0gT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihTaGFkb3dSZWFsbSwgImxlbmd0aCIpOworICAgIHNob3VsZEJlKHNoYWRvd1Jl
YWxtTGVuZ3RoLnZhbHVlLCAwKTsKKyAgICBzaG91bGRCZShzaGFkb3dSZWFsbUxlbmd0aC5lbnVt
ZXJhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1MZW5ndGgud3JpdGFibGUs
IGZhbHNlKTsKKyAgICBzaG91bGRCZShzaGFkb3dSZWFsbUxlbmd0aC5jb25maWd1cmFibGUsIHRy
dWUpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0
cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IDMxMmMyNjg2ZjAwNGJiNjEyNGJhN2QwZWI0Y2Ji
NDlmZTAxMDhkODAuLjI4NmJhNjE4NzA5NWQ2NTFiMGZjZWQwNjhhMzQ3OGMzZGNjNDM2ODkgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3Qy
NjIvY29uZmlnLnlhbWwKQEAgLTksNiArOSw3IEBAIGZsYWdzOgogICBUZW1wb3JhbDogdXNlVGVt
cG9yYWwKICAgYXJyYXktZmluZC1mcm9tLWxhc3Q6IHVzZUFycmF5RmluZExhc3RNZXRob2QKICAg
T2JqZWN0Lmhhc093bjogdXNlSGFzT3duCisgIFNoYWRvd1JlYWxtOiB1c2VTaGFkb3dSZWFsbQog
c2tpcDoKICAgZmVhdHVyZXM6CiAgICAgLSBBdG9taWNzLndhaXRBc3luYwpAQCAtMjAsNyArMjEs
NiBAQCBza2lwOgogICAgIC0ganNvbi1tb2R1bGVzCiAgICAgLSBjbGFzcy1zdGF0aWMtYmxvY2sK
ICAgICAtIGNhbGxhYmxlLWJvdW5kYXJ5LXJlYWxtcwotICAgIC0gU2hhZG93UmVhbG0KICAgcGF0
aHM6CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9DYWxlbmRhcgogICAgIC0gdGVzdC9i
dWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudApkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL3Rl
c3QvYnVpbHQtaW5zL1NoYWRvd1JlYWxtL3Byb3RvdHlwZS9ldmFsdWF0ZS9yZXR1cm5zLXByb3h5
LWNhbGxhYmxlLW9iamVjdC5qcyBiL0pTVGVzdHMvdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9TaGFk
b3dSZWFsbS9wcm90b3R5cGUvZXZhbHVhdGUvcmV0dXJucy1wcm94eS1jYWxsYWJsZS1vYmplY3Qu
anMKaW5kZXggZGIxOTRjNjgwOWY1ZmJlMGJhMGEyZTAwYWMwZmI1ZGRhZjk5ZWEyNi4uNjFhMDRl
NGVlMzA0ZGY3OTMxNzUwZjNmZmE1MWM4NDU4Nzc0YzY5MyAxMDA2NDQKLS0tIGEvSlNUZXN0cy90
ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL1NoYWRvd1JlYWxtL3Byb3RvdHlwZS9ldmFsdWF0ZS9yZXR1
cm5zLXByb3h5LWNhbGxhYmxlLW9iamVjdC5qcworKysgYi9KU1Rlc3RzL3Rlc3QyNjIvdGVzdC9i
dWlsdC1pbnMvU2hhZG93UmVhbG0vcHJvdG90eXBlL2V2YWx1YXRlL3JldHVybnMtcHJveHktY2Fs
bGFibGUtb2JqZWN0LmpzCkBAIC0yMiw0ICsyMiw0IEBAIG5ldyBQcm94eShmbiwge30pOwogCiBh
c3NlcnQuc2FtZVZhbHVlKHR5cGVvZiBwcm94eUNhbGxhYmxlLCAnZnVuY3Rpb24nLCAnd3JhcHBl
ZCBwcm94eSBjYWxsYWJsZSBvYmplY3QgaXMgdHlwZW9mIGZ1bmN0aW9uJyk7CiBhc3NlcnQuc2Ft
ZVZhbHVlKHByb3h5Q2FsbGFibGUoKSwgNDIsICd3cmFwcGVkcGZuKCkgcmV0dXJucyA0MicpOwot
YXNzZXJ0LnNhbWVWYWx1ZShwcm94eUNhbGxhYmxlIGluc3RhbmNlb2YgUHJveHksIGZhbHNlLCAn
dGhlIHdyYXBwZWQgZnVuY3Rpb24gImhpZGVzIiB0aGUgcHJveHkgaW5zdGFuY2UnKTsKK2Fzc2Vy
dC5zYW1lVmFsdWUoKG5ldyBQcm94eShwcm94eUNhbGxhYmxlLCB7fSkpKCksIDQyLCAnd3JhcHBl
ZCBmdW5jdGlvbnMgY2FuIGJlIHByb3hpZWQnKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2
Mi90ZXN0L2J1aWx0LWlucy9TaGFkb3dSZWFsbS9wcm90b3R5cGUvZXZhbHVhdGUvd3JhcHBlZC1m
dW5jdGlvbi1wcm94aWVkLW9ic2VydmVzLWJvdW5kYXJ5LmpzIGIvSlNUZXN0cy90ZXN0MjYyL3Rl
c3QvYnVpbHQtaW5zL1NoYWRvd1JlYWxtL3Byb3RvdHlwZS9ldmFsdWF0ZS93cmFwcGVkLWZ1bmN0
aW9uLXByb3hpZWQtb2JzZXJ2ZXMtYm91bmRhcnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODUzNjNjYzk4OWE3
NmQ2MmE4ZDI5ZGNiZDllMmQwMmRmM2E2YzAzNQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
dGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9TaGFkb3dSZWFsbS9wcm90b3R5cGUvZXZhbHVhdGUvd3Jh
cHBlZC1mdW5jdGlvbi1wcm94aWVkLW9ic2VydmVzLWJvdW5kYXJ5LmpzCkBAIC0wLDAgKzEsNDEg
QEAKKy8vIENvcHlyaWdodCAoQykgMjAyMSBSaWNrIFdhbGRyb24uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBUaGlzIGNvZGUgaXMgZ292ZXJuZWQgYnkgdGhlIEJTRCBsaWNlbnNlIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvKi0tLQorZXNpZDogc2VjLXNoYWRvd3JlYWxtLnByb3RvdHlw
ZS5ldmFsdWF0ZQorZGVzY3JpcHRpb246ID4KKyAgUHJveHlpbmcgYSB3cmFwcGVkIGZ1bmN0aW9u
IGFuZCBpbnZva2luZyBpdCBzdGlsbCBwZXJmb3JtcyBib3VuZGFyeSBjaGVja3MKK2ZlYXR1cmVz
OiBbU2hhZG93UmVhbG1dCistLS0qLworCithc3NlcnQuc2FtZVZhbHVlKAorICB0eXBlb2YgU2hh
ZG93UmVhbG0ucHJvdG90eXBlLmV2YWx1YXRlLAorICAnZnVuY3Rpb24nLAorICAnVGhpcyB0ZXN0
IG11c3QgZmFpbCBpZiBTaGFkb3dSZWFsbS5wcm90b3R5cGUuZXZhbHVhdGUgaXMgbm90IGEgZnVu
Y3Rpb24nCispOworCitjb25zdCByID0gbmV3IFNoYWRvd1JlYWxtKCk7CisKK2NvbnN0IHdyYXBw
ZWQgPSByLmV2YWx1YXRlKGAoKSA9PiB7IHJldHVybiAxOyB9O2ApOworCitjb25zdCBzZWNyZXRP
YmogPSB7eDogMn07CisKK2xldCByZWNlaXZlZDsKKworY29uc3QgcHJveGllZFdyYXBwZWQgPSBu
ZXcgUHJveHkod3JhcHBlZCwgeworICBhcHBseSh0YXJnZXQsIF8sIGFyZ3MpIHsKKyAgICBhc3Nl
cnQuc2FtZVZhbHVlKHRhcmdldCwgd3JhcHBlZCk7CisgICAgcmVjZWl2ZWQgPSBhcmdzOworCisg
ICAgLy8gT2JqZWN0IGNhbid0IGJlIHNlbnQgdG8gdGhlIG90aGVyIFJlYWxtCisgICAgcmV0dXJu
IHRhcmdldCh7eDogMX0pOworICB9Cit9KTsKKworYXNzZXJ0LnRocm93cygKKyAgVHlwZUVycm9y
LAorICAoKSA9PiBwcm94aWVkV3JhcHBlZChzZWNyZXRPYmopLAorICAnUHJveHlpbmcgYSB3cmFw
cGVkIGZ1bmN0aW9uIGFuZCBpbnZva2luZyBpdCBzdGlsbCBwZXJmb3JtcyBib3VuZGFyeSBjaGVj
a3MnCispOworCithc3NlcnQuc2FtZVZhbHVlKHJlY2VpdmVkWzBdLCBzZWNyZXRPYmosICdwcm94
eSBzdGlsbCBjYWxscyB0aGUgaGFuZGxlciB0cmFwJyk7Cithc3NlcnQuc2FtZVZhbHVlKHJlY2Vp
dmVkLmxlbmd0aCwgMSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440773</attachid>
            <date>2021-10-11 04:46:25 -0700</date>
            <delta_ts>2021-10-13 05:42:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230602-20211011134623.patch</filename>
            <type>text/plain</type>
            <size>87276</size>
            <attacher name="Phillip Mates">pmates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzODg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
M2MwNGU4MGUzNGNjMjQ3ZGJiMDU5YmI5Mzg1MWZhN2YxNzUzZTVkLi4yZWUxZjg1YjY0ZmU1Njk1
MzJjMzI2Y2M1YTFkMjA1M2MxN2UzM2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MSBAQAorMjAyMS0xMC0xMSAgUGhpbGxpcCBNYXRlcyAgPHBtYXRlc0BpZ2FsaWEuY29t
PgorCisgICAgICAgIHNoYWRvdyByZWFsbXMgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDYwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGF0aW9uIG9mIHRoZSBT
aGFkb3cgUmVhbG1zIHByb3Bvc2FsIChzdGFnZSAzIGluIFRDMzkpIFsxXQorCisgICAgICAgIE1h
aW4gQVBJcyBhZGRlZCBhcmUKKyAgICAgICAgIC0gYG5ldyBTaGFkb3dSZWFsbSgpYAorICAgICAg
ICAgICBjcmVhdGVzIGFuIG9iamVjdCB0aGF0IGhhcyBpdHMgb3duIGdsb2JhbCBvYmplY3QgYW5k
IG1vZHVsZSBncmFwaC4KKyAgICAgICAgIC0gU2hhZG93UmVhbG0ucHJvdG90eXBlLmV2YWx1YXRl
KHNvdXJjZVRleHQpCisgICAgICAgICAgIHRoaXMgYWxsb3dzIGZvciBldmFsdWF0aW5nIGNvZGUg
aW4gdGhlIGNvbnRleHQgb2YgdGhlIHJlYWxtLCB3aGljaAorICAgICAgICAgICBoYXMgaXRzIG93
biBtb2R1bGUgZ3JhcGggYW5kIGdsb2JhbCBvYmplY3QuCisgICAgICAgICAtIFNoYWRvd1JlYWxt
LnByb3RvdHlwZS5pbXBvcnRWYWx1ZShzcGVjaWZpZXIsIGV4cG9ydE5hbWUpCisgICAgICAgICAg
IHRoaXMgYWxsb3dzIGltcG9ydGluZyBtb2R1bGUgZXhwb3J0cyBpbiB0aGUgdGhlIGNvbnRleHQg
b2YgdGhlCisgICAgICAgICAgIHJlYWxtLCB3aGljaCBoYXMgaXRzIG93biBtb2R1bGUgZ3JhcGgg
YW5kIGdsb2JhbCBvYmplY3QuCisKKyAgICAgICAgVGhlIG1haW4gZGV0YWlsIG9mIHRoZSBTaGFk
b3cgUmVhbG0gaW1wbGVtZW50YXRpb24gaXMgdGhhdCB2YWx1ZXMKKyAgICAgICAgcGFzc2VkIGJl
dHdlZW4gcmVhbG1zIG11c3QgYmUgZWl0aGVyIHByaW1pdGl2ZXMgb3Igd3JhcHBlZCBjYWxsYWJs
ZXMuCisgICAgICAgIFdyYXBwZWQgY2FsbGFibGVzIHRoZW1zZWx2ZXMgYXJlIGNhbGxhYmxlcyB0
aGF0IGNoZWNrIHRoYXQgdGhlaXIKKyAgICAgICAgYXJndW1lbnRzIGFuZCByZXR1cm4gdmFsdWVz
IGFyZSBhbHNvIGVpdGhlciBwcmltaXRpdmVzIG9yIHdyYXBwZWQKKyAgICAgICAgY2FsbGFibGVz
LiBUaGlzIGRldGFpbCBpcyBpbXBsZW1lbnRlZCB2aWEgSlMgYnVpbHRpbnMgKyBhIGZldyBuZXcK
KyAgICAgICAgaW50cmluc2ljcy4KKworICAgICAgICBDYW4gYmUgZW5hYmxlZCB1c2luZyBgLS11
c2VTaGFkb3dSZWFsbT10cnVlYAorCisgICAgICAgIFsxXTogaHR0cHM6Ly9naXRodWIuY29tL3Rj
MzkvcHJvcG9zYWwtc2hhZG93cmVhbG0KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBidWlsdGlucy9TaGFkb3dSZWFs
bVByb3RvdHlwZS5qczogQWRkZWQuCisgICAgICAgIChnbG9iYWxQcml2YXRlLndyYXApOgorICAg
ICAgICAoZXZhbHVhdGUpOgorICAgICAgICAoaW1wb3J0VmFsdWUpOgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaDoKKyAgICAgICAgKiBieXRlY29kZS9MaW5r
VGltZUNvbnN0YW50Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNTaGFkb3dSZWFsbSk6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgICoganNj
LmNwcDoKKyAgICAgICAgKEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcGFy
c2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1l
bWJlckV4cHJlc3Npb24pOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0luZGlyZWN0
RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxl
OjpjcmVhdGVJbXBsKToKKyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6dHJ5Q3JlYXRlKToK
KyAgICAgICAgKiBydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3JlYXRlV2l0aEN1c3RvbU1ldGhvZFRh
YmxlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjpzaGFkb3dSZWFsbVByb3RvdHlwZSBjb25zdCk6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjpzaGFkb3dSZWFsbVN0cnVjdHVyZSBjb25zdCk6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuY3BwOgor
ICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1No
YWRvd1JlYWxtQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6U2hhZG93UmVh
bG1Db25zdHJ1Y3Rvcjo6U2hhZG93UmVhbG1Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OlNo
YWRvd1JlYWxtQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1NoYWRvd1JlYWxtQ29u
c3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9TaGFkb3dSZWFsbU9iamVjdC5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpTaGFkb3dSZWFsbU9iamVjdDo6U2hhZG93UmVhbG1P
YmplY3QpOgorICAgICAgICAoSlNDOjpTaGFkb3dSZWFsbU9iamVjdDo6dmlzaXRDaGlsZHJlbklt
cGwpOgorICAgICAgICAoSlNDOjpTaGFkb3dSZWFsbU9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6U2hhZG93UmVhbG1PYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL1NoYWRvd1JlYWxtT2JqZWN0Lmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvU2hhZG93
UmVhbG1Qcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6U2hhZG93UmVhbG1Qcm90
b3R5cGU6OlNoYWRvd1JlYWxtUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6U2hhZG93UmVhbG1Q
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmg6IEFk
ZGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoK
KwogMjAyMS0xMC0xMSAgR2V6YSBMb3JlICA8Z2xvcmVAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
SlNDXVszMmJpdF0gRml4IHByb2ZpbGluZyBpbiBiYXNlbGluZQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IGY0MmZkOGI2NzljY2RiYzAyMWVhYzI1MDhmZjFhNmEyZTcwYWFi
MDUuLmVhMzg2YWI0ODg4ZjVkYjI1NjdmYTA2NjFjZWM1NTkyNDhlZjNjYjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEwMyw2ICsxMDMsOCBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfT0JKRUNUX0xVVF9TT1VSQ0VTCiAgICAgcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3Bw
CiAgICAgcnVudGltZS9SZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50
aW1lL1NldFByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL1NoYWRvd1JlYWxtT2JqZWN0LmNwcAor
ICAgIHJ1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9TdHJpbmdD
b25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKICAgICBydW50
aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcApAQCAtMzczLDYgKzM3NSw3IEBAIHNldChKYXZhU2Ny
aXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0
aW5zL1JlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L2J1aWx0aW5zL1NldEl0ZXJhdG9yUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2J1aWx0aW5zL1NldFByb3RvdHlwZS5qcworICAgICR7SkFWQVNDUklQVENPUkVf
RElSfS9idWlsdGlucy9TaGFkb3dSZWFsbVByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENP
UkVfRElSfS9idWlsdGlucy9TdHJpbmdDb25zdHJ1Y3Rvci5qcwogICAgICR7SkFWQVNDUklQVENP
UkVfRElSfS9idWlsdGlucy9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5qcwogICAgICR7SkFWQVND
UklQVENPUkVfRElSfS9idWlsdGlucy9TdHJpbmdQcm90b3R5cGUuanMKQEAgLTExNTYsNiArMTE1
OSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
cnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmgKICAgICBydW50aW1lL1NjcmlwdEZldGNoUGFyYW1l
dGVycy5oCiAgICAgcnVudGltZS9TY3JpcHRGZXRjaGVyLmgKKyAgICBydW50aW1lL1NoYWRvd1Jl
YWxtT2JqZWN0LmgKICAgICBydW50aW1lL1Nsb3dQYXRoRnVuY3Rpb24uaAogICAgIHJ1bnRpbWUv
U2xvd1BhdGhSZXR1cm5UeXBlLmgKICAgICBydW50aW1lL1NtYWxsU3RyaW5ncy5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDc4OTc1NmYxMGY4YmRiODBj
NTJmNGJlOTgwZjUzZjQ5MmEyZDFkNGIuLjY1YjczN2FjMTQwMGZmNTM3YjI3ZTMwOTI2YzFhZjEy
MDMyNjI3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBA
IC0xMjIsNiArMTIyLDcgQEAgSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKICAg
ICAke0phdmFTY3JpcHRDb3JlfS9idWlsdGlucy9SZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlw
ZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvU2V0SXRlcmF0b3JQcm90b3R5
cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1NldFByb3RvdHlwZS5qcyBc
CisgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvU2hhZG93UmVhbG1Qcm90b3R5cGUuanMg
XAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1N0cmluZ0NvbnN0cnVjdG9yLmpzIFwK
ICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5q
cyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvU3RyaW5nUHJvdG90eXBlLmpzIFwK
QEAgLTE4Nyw2ICsxODgsNyBAQCBPQkpFQ1RfTFVUX0hFQURFUlMgPSBcCiAgICAgUmVmbGVjdE9i
amVjdC5sdXQuaCBcCiAgICAgUmVnRXhwQ29uc3RydWN0b3IubHV0LmggXAogICAgIFNldFByb3Rv
dHlwZS5sdXQuaCBcCisgICAgU2hhZG93UmVhbG1Qcm90b3R5cGUubHV0LmggXAogICAgIFN0cmlu
Z0NvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBTdHJpbmdQcm90b3R5cGUubHV0LmggXAogICAgIFN5
bWJvbENvbnN0cnVjdG9yLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NzU4Yjg2YmU0YTFmOTVkMzRlOWRjYTE5ODRhYmFmNjAzMGU5YjVlYi4uMGI5YTIzMGU2YjkyMWNm
ZmZhNDQ2MDVlZGM0YmFkZjMzMDkxMzBiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEyNjIsNiArMTI2Miw5IEBACiAJCTg2MDE2MUUzMEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NjAxNjFERjBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTg2MDE2MUU1MEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxRTEwRjNBODND
MTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODYwMTYxRTYwRjNBODNDMTAwRjg0NzEwIC8q
IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NjAxNjFFMjBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJs
ZXJYODZDb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk4NjAyOTYwMjI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Db25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMjk1
RkMyNkZCNTUyQzAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtQ29uc3RydWN0b3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NjAyOTYwNDI2RkI1NTJE
MDA3OEVCNjIgLyogU2hhZG93UmVhbG1PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDI5NUZFMjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dS
ZWFsbU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTg2MDI5NjA1MjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbVByb3RvdHlwZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMjk1RkYy
NkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODYwNkRERUExOERBNDRBQjAwQTM4
M0QwIC8qIElkZW50aWZpZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NjA2RERFOTE4REE0NEFCMDBBMzgzRDAgLyogSWRlbnRpZmllcklu
bGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk4NjBCRDgwMTE0OEVBNkYyMDAxMTJCMkYgLyogSW50cmluc2ljLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJGNjQyQTE0OERCMkI1MDA0REUzNkEg
LyogSW50cmluc2ljLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJODYxMkU0Q0QxNTIzODlFQzAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjEyRTRDQjE1MjI5MTg0
MDBDODM2QkUgLyogTWF0Y2hSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtNDI0MCw2ICs0MjQzLDEyIEBACiAJCTg2MDE2MURGMEYzQTgz
QzEwMEY4NDcxMCAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVy
WDg2XzY0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVy
WDg2XzY0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2MDE2MUUyMEYzQTgzQzEw
MEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4NjAyOTVGQTI2RkI1NTJDMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Qcm90
b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhZG93UmVh
bG1Qcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjAyOTVGQjI2
RkI1NTJDMDA3OEVCNjIgLyogU2hhZG93UmVhbG1PYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2hhZG93UmVhbG1PYmplY3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4NjAyOTVGQzI2RkI1NTJDMDA3OEVCNjIgLyogU2hhZG93UmVhbG1D
b25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkb3dSZWFs
bUNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MDI5NUZEMjZG
QjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYWRvd1JlYWxtQ29uc3RydWN0b3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjAyOTVGRTI2RkI1NTJEMDA3OEVCNjIgLyogU2hh
ZG93UmVhbG1PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhZG93
UmVhbG1PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYwMjk1RkYyNkZC
NTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNoYWRvd1JlYWxtUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTg2MDRGNEYyMTQzQTZDNDQwMEIyOTVGNSAvKiBDaGFuZ2VMb2cgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBsaW5lRW5k
aW5nID0gMDsgcGF0aCA9IENoYW5nZUxvZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODYwNkRERTkxOERBNDRBQjAwQTM4M0QwIC8qIElkZW50aWZpZXJJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElkZW50aWZpZXJJbmxpbmVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTg2MTJFNENCMTUyMjkxODQwMEM4MzZCRSAvKiBNYXRjaFJlc3Vs
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRjaFJlc3VsdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzk5MSw2ICs4MDAwLDEyIEBACiAJCQkJQTc5MERE
NjgxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggKi8sCiAJCQkJQTcy
OTlEOUYxN0QxMjg0ODAwNUY1RkY5IC8qIFNldFByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQTcyOTlE
QTAxN0QxMjg0ODAwNUY1RkY5IC8qIFNldFByb3RvdHlwZS5oICovLAorCQkJCTg2MDI5NUZEMjZG
QjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQk4NjAy
OTVGQzI2RkI1NTJDMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5oICovLAorCQkJ
CTg2MDI5NUZCMjZGQjU1MkMwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbU9iamVjdC5jcHAgKi8sCisJ
CQkJODYwMjk1RkUyNkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtT2JqZWN0LmggKi8sCisJ
CQkJODYwMjk1RkEyNkZCNTUyQzAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtUHJvdG90eXBlLmNwcCAq
LywKKwkJCQk4NjAyOTVGRjI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Qcm90b3R5cGUu
aCAqLywKIAkJCQkwRjJCNjZENjE3QjZCNUFCMDBBN0FFM0YgLyogU2ltcGxlVHlwZWRBcnJheUNv
bnRyb2xsZXIuY3BwICovLAogCQkJCTBGMkI2NkQ3MTdCNkI1QUIwMEE3QUUzRiAvKiBTaW1wbGVU
eXBlZEFycmF5Q29udHJvbGxlci5oICovLAogCQkJCUZFOEMwMzExMjY0QTY5MTAwMDFBNDRBRCAv
KiBTbG93UGF0aEZ1bmN0aW9uLmggKi8sCkBAIC0xMDcxMiw2ICsxMDcyNyw5IEBACiAJCQkJMEZF
RTk4NDExQTg4NjVCNzAwNzU0RTkzIC8qIFNldHVwVmFyYXJnc0ZyYW1lLmggaW4gSGVhZGVycyAq
LywKIAkJCQlEQzE3RTgxODFDOUM5MUQ5MDA4QTZBQjMgLyogU2hhZG93Q2hpY2tlbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJREMxN0U4MTkxQzlDOTFEQjAwOEE2QUIzIC8qIFNoYWRvd0NoaWNrZW5J
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NjAyOTYwMjI2RkI1NTJEMDA3OEVCNjIgLyog
U2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODYwMjk2MDQyNkZC
NTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4
NjAyOTYwNTI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Qcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZFMzAyMkQzMUUzRDczQTUwMEJBQzQ5MyAvKiBTaWdpbGxDcmFzaEFuYWx5
emVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjREOEM3ODFGQ0EzQ0ZBMDAxRDMyQUMgLyogU2lt
cGxlTWFya2luZ0NvbnN0cmFpbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzA1MTdCNkI1
QUIwMEE3QUUzRiAvKiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggZjA0NDUxZDAzOGRiMzBjNzUxZjQ2YTlh
NGQ3NDg2M2NiNmIyZDg1NS4uZTBlMjNhMmYzNmMxMjVlOTY3ZjBlZmE1YzRkOWI5OGRhODhjZWMx
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtOTcwLDYgKzk3MCw5IEBAIHJ1bnRp
bWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwCiBydW50aW1l
L1Byb3h5UmV2b2tlLmNwcAogcnVudGltZS9SYW5kb21pemluZ0Z1enplckFnZW50LmNwcAorcnVu
dGltZS9TaGFkb3dSZWFsbU9iamVjdC5jcHAKK3J1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rv
ci5jcHAKK3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuY3BwCiBydW50aW1lL1JlZmxlY3RP
YmplY3QuY3BwCiBydW50aW1lL1JlZ0V4cC5jcHAKIHJ1bnRpbWUvUmVnRXhwQ2FjaGUuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggMjli
YzNhZTAxMDQxMzBlNTFlYTJlMDlhZTM3ZDQwYmYwMjExMzE1YS4uY2VkMzBhOGVhOGY3MWY3YTAy
YTYyZWI0MmI1ZTE1NzY2Mjg5ZGEzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9CdWlsdGluTmFtZXMuaApAQCAtNjIsNiArNjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBtYWNybyhOdW1iZXIpIFwKICAgICBtYWNybyhBcnJheSkgXAogICAgIG1hY3JvKEFycmF5QnVm
ZmVyKSBcCisgICAgbWFjcm8oU2hhZG93UmVhbG0pIFwKICAgICBtYWNybyhSZWdFeHApIFwKICAg
ICBtYWNybyhtaW4pIFwKICAgICBtYWNybyh0cnVuYykgXApAQCAtMTE1LDYgKzExNiw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIG1hY3JvKGFzeW5jR2VuZXJhdG9yUXVldWVJdGVtTmV4dCkgXAog
ICAgIG1hY3JvKGRhdGVUaW1lRm9ybWF0KSBcCiAgICAgbWFjcm8odGhpcykgXAorICAgIG1hY3Jv
KGltcG9ydEluUmVhbG0pIFwKKyAgICBtYWNybyhldmFsSW5SZWFsbSkgXAogICAgIG1hY3JvKHRo
aXNUaW1lVmFsdWUpIFwKICAgICBtYWNybyhuZXdUYXJnZXRMb2NhbCkgXAogICAgIG1hY3JvKGRl
cml2ZWRDb25zdHJ1Y3RvcikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL1NoYWRvd1JlYWxtUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL1NoYWRvd1JlYWxtUHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhMGUyYjBjM2FmNmI5
NjdiNjZlNmEzNzAwM2YxOTQzNWFkZDQ1MzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvU2hhZG93UmVhbG1Qcm90b3R5cGUuanMKQEAgLTAsMCArMSw4
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitA
Z2xvYmFsUHJpdmF0ZQorZnVuY3Rpb24gd3JhcCh0YXJnZXQpCit7CisgICAgInVzZSBzdHJpY3Qi
OworCisgICAgaWYgKEBpc0NhbGxhYmxlKHRhcmdldCkpIHsKKyAgICAgICAgdmFyIHdyYXBwZWQg
PSAoLi4uYXJncykgPT4geworICAgICAgICAgICAgdmFyIHdyYXBwZWRBcmdzID0gYXJncy5AbWFw
KEB3cmFwKQorICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRhcmdldC5AYXBwbHkoQHVuZGVmaW5l
ZCwgd3JhcHBlZEFyZ3MpOworICAgICAgICAgICAgcmV0dXJuIEB3cmFwKHJlc3VsdCk7CisgICAg
ICAgIH07CisgICAgICAgIGRlbGV0ZSB3cmFwcGVkWyduYW1lJ107CisgICAgICAgIGRlbGV0ZSB3
cmFwcGVkWydsZW5ndGgnXTsKKyAgICAgICAgcmV0dXJuIHdyYXBwZWQ7CisgICAgfSBlbHNlIGlm
IChAaXNPYmplY3QodGFyZ2V0KSkgeworICAgICAgICBAdGhyb3dUeXBlRXJyb3IoInZhbHVlIHBh
c3NpbmcgYmV0d2VlbiByZWFsbXMgbXVzdCBiZSBjYWxsYWJsZSBvciBwcmltaXRpdmUiKTsKKyAg
ICB9CisgICAgcmV0dXJuIHRhcmdldDsKK30KKworZnVuY3Rpb24gZXZhbHVhdGUoc291cmNlVGV4
dCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIUBpc1NoYWRvd1JlYWxtKHRoaXMp
KQorICAgICAgICBAdGhyb3dUeXBlRXJyb3IoImAlU2hhZG93UmVhbG0lLmV2YWx1YXRlIHJlcXVp
cmVzIHRoYXQgfHRoaXN8IGJlIGEgU2hhZG93UmVhbG0gaW5zdGFuY2UiKTsKKworICAgIGlmICh0
eXBlb2Ygc291cmNlVGV4dCAhPT0gJ3N0cmluZycpCisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigi
YCVTaGFkb3dSZWFsbSUuZXZhbHVhdGUgcmVxdWlyZXMgdGhhdCB0aGUgfHNvdXJjZVRleHR8IGFy
Z3VtZW50IGJlIGEgc3RyaW5nIik7CisKKyAgICB2YXIgcmVzdWx0ID0gQGV2YWxJblJlYWxtKHRo
aXMsIHNvdXJjZVRleHQpCisgICAgcmV0dXJuIEB3cmFwKHJlc3VsdCk7Cit9CisKK2Z1bmN0aW9u
IGltcG9ydFZhbHVlKHNwZWNpZmllciwgZXhwb3J0TmFtZSkKK3sKKyAgICAidXNlIHN0cmljdCI7
CisKKyAgICBpZiAoIUBpc1NoYWRvd1JlYWxtKHRoaXMpKQorICAgICAgICBAdGhyb3dUeXBlRXJy
b3IoImAlU2hhZG93UmVhbG0lLmltcG9ydFZhbHVlIHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIGEg
U2hhZG93UmVhbG0gaW5zdGFuY2UiKTsKKworICAgIHZhciBleHBvcnROYW1lU3RyaW5nID0gQHRv
U3RyaW5nKGV4cG9ydE5hbWUpOworICAgIHZhciBzcGVjaWZpZXJTdHJpbmcgPSBAdG9TdHJpbmco
c3BlY2lmaWVyKTsKKworICAgIHZhciBsb29rdXBCaW5kaW5nID0gKG1vZHVsZSkgPT4geworICAg
ICAgICB2YXIgbG9va3VwID0gbW9kdWxlW2V4cG9ydE5hbWVTdHJpbmddCisgICAgICAgIGlmIChs
b29rdXAgPT09IEB1bmRlZmluZWQpCisgICAgICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIiVTaGFk
b3dSZWFsbSUuaW1wb3J0VmFsdWUgcmVxdWlyZXMgfGV4cG9ydE5hbWV8IHRvIGV4aXN0IGluIHRo
ZSB8c3BlY2lmaWVyfCIpOworCisgICAgICAgIHJldHVybiBAd3JhcChsb29rdXApOworICAgIH07
CisKKyAgICB2YXIgY3Jvc3NSZWFsbVRocm93ID0gKGVycm9yKSA9PiB7CisgICAgICAgIC8vIHJl
LXRocm93IGJlY2F1c2UgaW1wb3J0IGlzc3VlcyByYWlzZSBlcnJvcnMgdXNpbmcgdGhlIHJlYWxt
J3MgZ2xvYmFsIG9iamVjdAorICAgICAgICBAdGhyb3dUeXBlRXJyb3IoQHRvU3RyaW5nKGVycm9y
KSk7CisgICAgfTsKKworICAgIHJldHVybiBAaW1wb3J0SW5SZWFsbSh0aGlzLCBzcGVjaWZpZXJT
dHJpbmcpLkB0aGVuKGxvb2t1cEJpbmRpbmcsIGNyb3NzUmVhbG1UaHJvdyk7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkuaAppbmRleCA4NTU1OTc3ODY3MDcyZjJmZmY2N2E2NTU5YWNkOWE0NTRkNTJkMjc3
Li5iMzJjY2RhZjQzYTY2MmM4Nzc5NTU4MDdmNmQ0MWYxMjU5MTk0ZjUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5LmgKQEAgLTY2LDYgKzY2LDcgQEAgZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IDog
aW50MzJfdDsKICAgICBtYWNybyhpc1JlZ0V4cE9iamVjdCkgXAogICAgIG1hY3JvKGlzTWFwKSBc
CiAgICAgbWFjcm8oaXNTZXQpIFwKKyAgICBtYWNybyhpc1NoYWRvd1JlYWxtKSBcCiAgICAgbWFj
cm8oaXNTdHJpbmdJdGVyYXRvcikgXAogICAgIG1hY3JvKGlzQXJyYXlJdGVyYXRvcikgXAogICAg
IG1hY3JvKGlzTWFwSXRlcmF0b3IpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCmluZGV4IGJmYmFkMmE1MmYxNjRhNGM1ZjVlOTc3YTQy
Y2JjYzhiOWVhN2EyOTQuLmFkYWMyNzA5MTkwM2NhNTJlNGEwM2Y1ZDM5ZTdlOWU5NmUzMGNmZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0
YW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3Rh
bnQuaApAQCAtNjMsNiArNjMsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICB2KGluc3Rh
bmNlT2YsIG51bGxwdHIpIFwKICAgICB2KEJ1aWx0aW5Mb2csIG51bGxwdHIpIFwKICAgICB2KEJ1
aWx0aW5EZXNjcmliZSwgbnVsbHB0cikgXAorICAgIHYoU2hhZG93UmVhbG0sIG51bGxwdHIpIFwK
ICAgICB2KFJlZ0V4cCwgbnVsbHB0cikgXAogICAgIHYobWluLCBudWxscHRyKSBcCiAgICAgdih0
cnVuYywgbnVsbHB0cikgXApAQCAtNzgsNiArNzksOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsK
ICAgICB2KGhvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlciwgbnVsbHB0cikgXAogICAgIHYoU2V0
LCBudWxscHRyKSBcCiAgICAgdih0aGlzVGltZVZhbHVlLCBudWxscHRyKSBcCisgICAgdihpbXBv
cnRJblJlYWxtLCBudWxscHRyKSBcCisgICAgdihldmFsSW5SZWFsbSwgbnVsbHB0cikgXAogICAg
IHYoaXNDb25zdHJ1Y3RvciwgbnVsbHB0cikgXAogICAgIHYoc2FtZVZhbHVlLCBudWxscHRyKSBc
CiAgICAgdihyZWdFeHBQcm90b0ZsYWdzR2V0dGVyLCBudWxscHRyKSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5k
ZXggMjc3YjE1NTI4ZDFlODBjNzY3NmJlYzUxMWY3NzYxZTU1YjdmOTM1OC4uZjM3NWE3OGUzMDNl
NTIxYWE4MDk1MWZhMjhlZGY3ZmI3MmE3ZjVhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtODg1LDYgKzg4
NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNSZWdFeHBP
YmplY3QoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0Nl
bGxXaXRoVHlwZShkc3QsIHNyYywgUmVnRXhwT2JqZWN0VHlwZSk7IH0KICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdElzTWFwKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVy
biBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTTWFwVHlwZSk7IH0KICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdElzU2V0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJl
dHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTU2V0VHlwZSk7IH0KKyAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdElzU2hhZG93UmVhbG0oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgU2hhZG93UmVhbG1U
eXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNTdHJpbmdJdGVyYXRvcihSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRz
dCwgc3JjLCBKU1N0cmluZ0l0ZXJhdG9yVHlwZSk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dElzQXJyYXlJdGVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1
cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU0FycmF5SXRlcmF0b3JUeXBlKTsgfQog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNNYXBJdGVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU01h
cEl0ZXJhdG9yVHlwZSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAxNTg4MGU2YmU2MTZiZjJhNDVjZDNiNjdjYzdk
NzkzYjY3ZDU1MjFiLi5mZWRmMjlhZTEwYzk5NmJkYmRmN2ZkY2Q0NjYxOTM2ZTY4MGQxNjg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCkBAIC0xODk0LDYgKzE4OTQsNyBAQCBDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9D
SEVDSyhpc1Byb21pc2UsIElzUHJvbWlzZSkKIENSRUFURV9JTlRSSU5TSUNfRk9SX0JSQU5EX0NI
RUNLKGlzUmVnRXhwT2JqZWN0LCBJc1JlZ0V4cE9iamVjdCkKIENSRUFURV9JTlRSSU5TSUNfRk9S
X0JSQU5EX0NIRUNLKGlzTWFwLCBJc01hcCkKIENSRUFURV9JTlRSSU5TSUNfRk9SX0JSQU5EX0NI
RUNLKGlzU2V0LCBJc1NldCkKK0NSRUFURV9JTlRSSU5TSUNfRk9SX0JSQU5EX0NIRUNLKGlzU2hh
ZG93UmVhbG0sIElzU2hhZG93UmVhbG0pCiBDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVD
Syhpc1N0cmluZ0l0ZXJhdG9yLCBJc1N0cmluZ0l0ZXJhdG9yKQogQ1JFQVRFX0lOVFJJTlNJQ19G
T1JfQlJBTkRfQ0hFQ0soaXNBcnJheUl0ZXJhdG9yLCBJc0FycmF5SXRlcmF0b3IpCiBDUkVBVEVf
SU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSyhpc01hcEl0ZXJhdG9yLCBJc01hcEl0ZXJhdG9yKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcAppbmRleCA5OWQ3YjZmZmJjY2Q2NjA5NzUwOTE0NmJlY2QxOTkxZjNm
N2Y3OTRiLi4yNDAyNTcyYjk1NTk5NTRkYjQ0NWI2YmZiZDE2NWQyYzc3MmM5ZjNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcApAQCAtMzY0LDYgKzM2NCw3IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyQ3JlYXRlUmVhbG0pOwogc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJFdmFsU2NyaXB0KTsKIHN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyR0MpOwogc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJDbGVhcktlcHRPYmplY3RzKTsKK3N0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyR2xvYmFsT2JqZWN0Rm9yKTsK
IHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyQWdlbnRTdGFy
dCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckFnZW50
UmVjZWl2ZUJyb2FkY2FzdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5j
dGlvbkRvbGxhckFnZW50UmVwb3J0KTsKQEAgLTY0Niw2ICs2NDcsNyBAQCBwcml2YXRlOgogICAg
ICAgICBhZGRGdW5jdGlvbih2bSwgZG9sbGFyLCAiZXZhbFNjcmlwdCIsIGZ1bmN0aW9uRG9sbGFy
RXZhbFNjcmlwdCwgMSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpO
b25lKSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCBkb2xsYXIsICJnYyIsIGZ1bmN0aW9uRG9s
bGFyR0MsIDAsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkp
OwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgZG9sbGFyLCAiY2xlYXJLZXB0T2JqZWN0cyIsIGZ1
bmN0aW9uRG9sbGFyQ2xlYXJLZXB0T2JqZWN0cywgMCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CisgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCBkb2xsYXIs
ICJnbG9iYWxPYmplY3RGb3IiLCBmdW5jdGlvbkRvbGxhckdsb2JhbE9iamVjdEZvciwgMSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CiAgICAgICAgIAog
ICAgICAgICBkb2xsYXItPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
Imdsb2JhbCIpLCBnbG9iYWxUaGlzKCkpOwogICAgICAgICBkb2xsYXItPnB1dERpcmVjdEN1c3Rv
bUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiSXNIVE1MRERBIiksCkBA
IC0yMDY2LDYgKzIwNjgsMjAgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9s
bGFyQ2xlYXJLZXB0T2JqZWN0cywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCitKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oZnVuY3Rpb25Eb2xsYXJHbG9iYWxPYmplY3RGb3IsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3Jl
YXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiTm90IGVub3VnaCBhcmd1bWVudHMiX3MpKSk7CisgICAg
SlNWYWx1ZSBhcmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIGlmIChhcmcuaXNDZWxs
KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXJnLmFzQ2VsbCgpLT5zdHJ1Y3R1
cmUodm0pLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsVGhpcygpKTsKKworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihmdW5jdGlvbkRvbGxhckFnZW50U3RhcnQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDFlMmU3ZTE2
N2ZlNzNjNmY1ZDA3MmMwZTllNTU1NDI2NWVkNGVjNmUuLmZlM2Y5OWVkNzk5MzkyODI5ZmZiOWZm
NjY2M2NlMWQ3YjE3NWZlNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKQEAgLTUwOTYsNyArNTA5Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgICAg
ICAgICBuZXdDb3VudC0tOwogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChJREVOVCksICJcIm5ldy5cIiBjYW4gb25seSBm
b2xsb3dlZCB3aXRoIHRhcmdldCIpOworICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChJREVO
VCksICJcIm5ldy5cIiBjYW4gb25seSBiZSBmb2xsb3dlZCB3aXRoIHRhcmdldCIpOwogICAgICAg
ICAgICAgZmFpbER1ZVRvVW5leHBlY3RlZFRva2VuKCk7CiAgICAgICAgIH0KICAgICB9CkBAIC01
MTMxLDcgKzUxMzEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNz
aW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICAgICAgICAg
IGJhc2UgPSBjb250ZXh0LmNyZWF0ZUltcG9ydE1ldGFFeHByKGxvY2F0aW9uLCBjcmVhdGVSZXNv
bHZlQW5kVXNlVmFyaWFibGUoY29udGV4dCwgJm1fdm0ucHJvcGVydHlOYW1lcy0+bWV0YVByaXZh
dGVOYW1lLCBmYWxzZSwgZXhwcmVzc2lvblN0YXJ0LCBsb2NhdGlvbikpOwogICAgICAgICAgICAg
ICAgIG5leHQoKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZmFpbElm
VHJ1ZShtYXRjaChJREVOVCksICJcImltcG9ydC5cIiBjYW4gb25seSBmb2xsb3dlZCB3aXRoIG1l
dGEiKTsKKyAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKElERU5UKSwgIlwiaW1wb3J0
LlwiIGNhbiBvbmx5IGJlIGZvbGxvd2VkIHdpdGggbWV0YSIpOwogICAgICAgICAgICAgICAgIGZh
aWxEdWVUb1VuZXhwZWN0ZWRUb2tlbigpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ug
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
CmluZGV4IDQwNjMzMWNhZGU5MDU4YzQzYzQ2OGI4Y2VlZmE1M2YyZWViOGNjMTMuLjM4NzVjZjZi
NjNjMGQzMTJhYjI1MmQ2MGUwZWY5MGI4MzQzMjU1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTEwNSw2ICsxMDUsNyBAQCB2
b2lkIEFycmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZHVjZVB1YmxpY05hbWUoKSwg
YXJyYXlQcm90b3R5cGVSZWR1Y2VDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZHVj
ZVJpZ2h0UHVibGljTmFtZSgpLCBhcnJheVByb3RvdHlwZVJlZHVjZVJpZ2h0Q29kZUdlbmVyYXRv
ciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwog
ICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5tYXBQdWJsaWNOYW1lKCksIGFycmF5UHJvdG90eXBlTWFwQ29k
ZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOworICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBQcml2YXRlTmFtZSgpLCBhcnJheVByb3Rv
dHlwZU1hcENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRI
T1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1B1Ymxp
Y05hbWUoKSwgYXJyYXlQcm90b0Z1bmNLZXlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMCwgQXJyYXlLZXlzSW50cmluc2ljKTsKICAgICBKU0Nf
TkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKSwgYXJyYXlQcm90b0Z1bmNF
bnRyaWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgMCwgQXJyYXlFbnRyaWVzSW50cmluc2ljKTsKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9X
SVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZmluZFB1
YmxpY05hbWUoKSwgYXJyYXlQcm90b3R5cGVGaW5kQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggNDBjMTU5ZThk
N2M1NDA0OWZkOThjOGE2NjY4YTY0YThkZjRlYTM2NC4uNzgyOGQwMDhhODUzNDYxZTQ4ZTM2ZDJm
YmVhNjFjNzA5NTc2ZGRhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC01Miw2ICs1Miw3IEBACiAgICAgbWFjcm8oT2JqZWN0
KSBcCiAgICAgbWFjcm8oUGx1cmFsUnVsZXMpIFwKICAgICBtYWNybyhQcm9taXNlKSBcCisgICAg
bWFjcm8oU2hhZG93UmVhbG0pIFwKICAgICBtYWNybyhSZWZsZWN0KSBcCiAgICAgbWFjcm8oUmVn
RXhwKSBcCiAgICAgbWFjcm8oUmVsYXRpdmVUaW1lRm9ybWF0KSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCmlu
ZGV4IGU0ZmY2MWNiZmIxOWY2NjQ5ZWM1OGYwMmVjY2Y2N2YxODJiMDU2NjAuLjRiMzIyZTU2YTFj
NzFkNzNmNzNiNTBjMzNjYjEwZWU5YmM0MWI2ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC0zNCw3
ICszNCw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1JbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJ
bmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENv
bnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBl
dmFsQ29udGV4dFR5cGUpCisKK3RlbXBsYXRlPHR5cGVuYW1lIEVycm9ySGFuZGxlckZ1bmN0b3I+
CitpbmxpbmUgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6
Y3JlYXRlSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgRXJy
b3JIYW5kbGVyRnVuY3RvciBlcnJvckhhbmRsZXIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAg
LTUwLDcgKzUyLDcgQEAgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0
YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKIAogICAgIFBhcnNlckVycm9y
IGVycm9yOwogICAgIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9u
TW9kZSA9IGdsb2JhbE9iamVjdC0+ZGVmYXVsdENvZGVHZW5lcmF0aW9uTW9kZSgpOwotICAgIAor
CiAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gdm0uY29kZUNh
Y2hlKCktPmdldFVubGlua2VkRXZhbENvZGVCbG9jaygKICAgICAgICAgdm0sIGV4ZWN1dGFibGUs
IGV4ZWN1dGFibGUtPnNvdXJjZSgpLCBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgY29k
ZUdlbmVyYXRpb25Nb2RlLCBlcnJvciwgZXZhbENvbnRleHRUeXBlKTsKIApAQCAtNTgsNyArNjAs
OCBAQCBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgICAgICBnbG9iYWxPYmplY3QtPmRlYnVn
Z2VyKCktPnNvdXJjZVBhcnNlZChnbG9iYWxPYmplY3QsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnBy
b3ZpZGVyKCksIGVycm9yLmxpbmUoKSwgZXJyb3IubWVzc2FnZSgpKTsKIAogICAgIGlmIChlcnJv
ci5pc1ZhbGlkKCkpIHsKLSAgICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
IGVycm9yLnRvRXJyb3JPYmplY3QoZ2xvYmFsT2JqZWN0LCBleGVjdXRhYmxlLT5zb3VyY2UoKSkp
OworICAgICAgICBlcnJvckhhbmRsZXIoZXhlY3V0YWJsZS0+c291cmNlKCksICZlcnJvcik7Cisg
ICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
CkBAIC02Nyw2ICs3MCwyNCBAQCBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxF
eGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIHJldHVybiBl
eGVjdXRhYmxlOwogfQogCitJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVj
dXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29s
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUs
IE5ha2VkUHRyPEpTT2JqZWN0PiYgcmVzdWx0aW5nRXJyb3IpCit7CisgICAgYXV0byBoYW5kbGVF
cnJvciA9IFsmXShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yKiBlcnJvcikg
eworICAgICAgICByZXN1bHRpbmdFcnJvciA9IGVycm9yLT50b0Vycm9yT2JqZWN0KGdsb2JhbE9i
amVjdCwgc291cmNlKTsKKyAgICB9OworICAgIHJldHVybiBjcmVhdGVJbXBsKGdsb2JhbE9iamVj
dCwgc291cmNlLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2
YWxDb250ZXh0VHlwZSwgaGFuZGxlRXJyb3IpOworfQorCitJbmRpcmVjdEV2YWxFeGVjdXRhYmxl
KiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjp0cnlDcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVy
aXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0
VHlwZSBldmFsQ29udGV4dFR5cGUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gaGFuZGxlRXJyb3IgPSBbJl0oY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQ
YXJzZXJFcnJvciogZXJyb3IpIHsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJy
b3ItPnRvRXJyb3JPYmplY3QoZ2xvYmFsT2JqZWN0LCBzb3VyY2UpKTsKKyAgICB9OworICAgIHJl
dHVybiBjcmVhdGVJbXBsKGdsb2JhbE9iamVjdCwgc291cmNlLCBkZXJpdmVkQ29udGV4dFR5cGUs
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlwZSwgaGFuZGxlRXJyb3IpOwor
fQorCiBjb25zdGV4cHIgYm9vbCBpblN0cmljdENvbnRleHQgPSBmYWxzZTsKIGNvbnN0ZXhwciBi
b29sIGluc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxzZTsKIEluZGlyZWN0RXZhbEV4ZWN1dGFi
bGU6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRl
eHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFs
Q29udGV4dFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bmRpcmVjdEV2YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bmRpcmVjdEV2YWxFeGVjdXRhYmxlLmgKaW5kZXggNDk4YjVjODcwOThhYjM3NDc5N2EyNWJmNDgx
NjM3Y2ZiYjkyZWRmNS4uMzcwNGIyNDY4YTRjYWI0NmQ3OWM1MzM1ZmQ3MTIwMWE0NmFiM2Y0YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhl
Y3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZh
bEV4ZWN1dGFibGUuaApAQCAtMzEsOCArMzEsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNz
IEluZGlyZWN0RXZhbEV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXZhbEV4ZWN1dGFibGUgewog
cHVibGljOgotICAgIHN0YXRpYyBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBjcmVhdGUoSlNHbG9i
YWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSk7CisgICAgc3RhdGljIEluZGly
ZWN0RXZhbEV4ZWN1dGFibGUqIHRyeUNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJj
ZUNvZGUmLCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwg
RXZhbENvbnRleHRUeXBlKTsKKyAgICBzdGF0aWMgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogY3Jl
YXRlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRDb250ZXh0VHlw
ZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUsIE5ha2VkUHRy
PEpTT2JqZWN0PiYpOwogcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFcnJvckhhbmRs
ZXJGdW5jdG9yPgorICAgIGlubGluZSBzdGF0aWMgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogY3Jl
YXRlSW1wbChKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJpdmVkQ29udGV4
dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlLCBFcnJv
ckhhbmRsZXJGdW5jdG9yKTsKKwogICAgIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxP
YmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSk7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggZTBjZWI0YmUw
MjMxNTBjZTVhOTRkYjhhODhiY2Q2ZDFjMGZlZWUzNC4uMzc3OGQxNzRlMDNhOWI5N2E3NTkyNTJj
MTNlNTk3MzgwYTNlMzJiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMTk2LDYgKzE5Niw5IEBACiAjaW5jbHVkZSAiU2V0Q29u
c3RydWN0b3IuaCIKICNpbmNsdWRlICJTZXRJdGVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUg
IlNldFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIlNoYWRvd1JlYWxtQ29uc3RydWN0b3IuaCIKKyNp
bmNsdWRlICJTaGFkb3dSZWFsbU9iamVjdC5oIgorI2luY2x1ZGUgIlNoYWRvd1JlYWxtUHJvdG90
eXBlLmgiCiAjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKICNpbmNsdWRlICJTdHJp
bmdDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgiCkBA
IC05MjQsNiArOTI3LDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE51bWJlck9mQXJyYXlJbmRleGluZ01vZGVzOyArK2kp
CiAgICAgICAgIG1fYXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1NoYXBlRHVyaW5nQWxsb2NhdGlv
bltpXSA9IG1fb3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5nU2hhcGVbaV07CiAKKyAg
ICBtX3NoYWRvd1JlYWxtUHJvdG90eXBlLnNldCh2bSwgdGhpcywgU2hhZG93UmVhbG1Qcm90b3R5
cGU6OmNyZWF0ZSh2bSwgU2hhZG93UmVhbG1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CisgICAgbV9zaGFkb3dSZWFsbU9iamVj
dFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFNoYWRvd1JlYWxtT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMsIG1fc2hhZG93UmVhbG1Qcm90b3R5cGUuZ2V0KCkpKTsKKwogICAgIG1fcmVn
RXhwUHJvdG90eXBlLnNldCh2bSwgdGhpcywgUmVnRXhwUHJvdG90eXBlOjpjcmVhdGUodm0sIHRo
aXMsIFJlZ0V4cFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFBy
b3RvdHlwZS5nZXQoKSkpKTsKICAgICBtX3JlZ0V4cFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFJl
Z0V4cE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5n
ZXQoKSkpOwogICAgIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLnNldCh2bSwgdGhpcywg
Y3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKHZtLCB0aGlzKSk7CkBAIC0xMDMwLDcg
KzEwMzYsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgQXJyYXlD
b25zdHJ1Y3RvciogYXJyYXlDb25zdHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2
bSwgdGhpcywgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1
bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVz
R2V0dGVyU2V0dGVyLmdldCgpKTsKICAgICBtX2FycmF5Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlz
LCBhcnJheUNvbnN0cnVjdG9yKTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpBcnJheSldLnNldCh2bSwgdGhpcywgYXJyYXlD
b25zdHJ1Y3Rvcik7Ci0gICAgCisKKyAgICBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKiBzaGFkb3dS
ZWFsbUNvbnN0cnVjdG9yID0gU2hhZG93UmVhbG1Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBTaGFk
b3dSZWFsbUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Q
cm90b3R5cGUuZ2V0KCkpLCBtX3NoYWRvd1JlYWxtUHJvdG90eXBlLmdldCgpLCBtX3NwZWNpZXNH
ZXR0ZXJTZXR0ZXIuZ2V0KCkpOworICAgIG1fc2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5zZXQodm0s
IHRoaXMsIHNoYWRvd1JlYWxtQ29uc3RydWN0b3IpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlNoYWRvd1JlYWxtKV0uc2V0
KHZtLCB0aGlzLCBzaGFkb3dSZWFsbUNvbnN0cnVjdG9yKTsKKwogICAgIFJlZ0V4cENvbnN0cnVj
dG9yKiByZWdFeHBDb25zdHJ1Y3RvciA9IFJlZ0V4cENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIFJl
Z0V4cENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90
b3R5cGUuZ2V0KCkpLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0dGVyU2V0
dGVyLmdldCgpKTsKICAgICBtX3JlZ0V4cENvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgcmVnRXhw
Q29uc3RydWN0b3IpOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlJlZ0V4cCldLnNldCh2bSwgdGhpcywgcmVnRXhwQ29uc3Ry
dWN0b3IpOwpAQCAtMTExMCw2ICsxMTIwLDcgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3Iq
IGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAg
ICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGZ1bmN0aW9uQ29uc3RydWN0b3IsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBtX2FycmF5
UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+Y29uc3RydWN0b3IsIGFycmF5Q29uc3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBtX3JlZ0V4cFByb3RvdHlwZS0+cHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9y
LCByZWdFeHBDb25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpOworICAgIG1fc2hhZG93UmVhbG1Qcm90b3R5cGUtPnB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwgc2hhZG93
UmVhbG1Db25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSkpOwogICAgIAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5PYmplY3QsIG9iamVjdENvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkZ1bmN0aW9uLCBmdW5jdGlvbkNv
bnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSk7CkBAIC0xMjYxLDYgKzEyNzIsOCBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3Rvciog
bG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAg
ICAgICBUZW1wb3JhbE9iamVjdCogdGVtcG9yYWwgPSBUZW1wb3JhbE9iamVjdDo6Y3JlYXRlKHZt
LCBUZW1wb3JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzKSk7CiAgICAgICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5UZW1wb3JhbCwg
dGVtcG9yYWwsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKICAgICB9CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYWRvd1JlYWxtKCkpCisgICAgICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5TaGFkb3dS
ZWFsbSwgc2hhZG93UmVhbG1Db25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogCiAgICAgbV9tb2R1bGVMb2FkZXIuaW5pdExhdGVy
KAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNNb2R1bGVMb2FkZXI+JiBpbml0KSB7
CkBAIC0xNDMzLDYgKzE0NDYsMTIgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2Vy
TmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICBtX2xp
bmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpo
b3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxp
emVyPEpTQ2VsbD4mIGluaXQpIHsKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNy
ZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMiwgU3Ry
aW5nKCksIGdsb2JhbEZ1bmNIb3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIpKTsKICAgICAgICAg
fSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1Rp
bWVDb25zdGFudDo6aW1wb3J0SW5SZWFsbSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6
ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3Jl
YXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJp
bmcoKSwgaW1wb3J0SW5SZWFsbSkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3Rh
bnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpldmFsSW5SZWFsbSld
LmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAg
ICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2Jh
bE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgZXZhbEluUmVhbG0pKTsKKyAgICAg
ICAgfSk7CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlu
a1RpbWVDb25zdGFudDo6dGhpc1RpbWVWYWx1ZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlh
bGl6ZXI8SlNDZWxsPiYgaW5pdCkgewogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6
Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBT
dHJpbmcoKSwgZGF0ZVByb3RvRnVuY0dldFRpbWUsIERhdGVQcm90b3R5cGVHZXRUaW1lSW50cmlu
c2ljKSk7CiAgICAgICAgIH0pOwpAQCAtMjExNyw2ICsyMTM2LDcgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQog
ICAgIHRoaXNPYmplY3QtPm1fVVJJRXJyb3JTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAg
dGhpc09iamVjdC0+bV9hZ2dyZWdhdGVFcnJvclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FycmF5Q29uc3RydWN0b3IpOworICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc2hhZG93UmVhbG1Db25zdHJ1Y3Rvcik7CiAgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWdFeHBDb25zdHJ1Y3Rvcik7CiAgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9vYmplY3RDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV9mdW5jdGlvbkNvbnN0cnVjdG9yKTsKQEAgLTIyMTQsNiAr
MjIzNCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCog
Y2VsbCwgVmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0LT5tX2N1c3RvbVNldHRlckZ1
bmN0aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fYm91bmRG
dW5jdGlvblN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX25hdGl2
ZVN0ZEZ1bmN0aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fc2hhZG93UmVhbG1PYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCh0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOwpAQCAtMjU3MCw2
ICsyNTkxLDEzIEBAIEpTR2xvYmFsT2JqZWN0KiBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdDsKIH0KIAor
SlNHbG9iYWxPYmplY3QqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVXaXRoQ3VzdG9tTWV0aG9kVGFi
bGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUqIG1ldGhvZFRhYmxlKQoreworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dsb2JhbE9iamVjdD4odm0uaGVhcCkpIEpT
R2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIG1ldGhvZFRhYmxlKTsKKyAgICBnbG9iYWxPYmpl
Y3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0OworfQorCiB2
b2lkIEpTR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgRGVmZXJU
ZXJtaW5hdGlvbiBkZWZlclRlcm1pbmF0aW9uKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGUwNmE1YWIyZDRiMGY0OTYzNjcyMWVm
ZjFjY2RmZWExYmJjNmQ4MjMuLjk0ZTEyYTIzYmJhYjI1MzU5Njc2ZDBiMTljYmYyN2ViNDI4M2Jk
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aApAQCAtMTE1LDYgKzExNSw4IEBAIGNsYXNzIE51bGxTZXR0ZXJGdW5jdGlvbjsKIGNsYXNzIE9i
amVjdENvbnN0cnVjdG9yOwogY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFByb2dyYW1F
eGVjdXRhYmxlOworY2xhc3MgU2hhZG93UmVhbG1Db25zdHJ1Y3RvcjsKK2NsYXNzIFNoYWRvd1Jl
YWxtUHJvdG90eXBlOwogY2xhc3MgUmVnRXhwQ29uc3RydWN0b3I7CiBjbGFzcyBSZWdFeHBQcm90
b3R5cGU7CiBjbGFzcyBTZXRJdGVyYXRvclByb3RvdHlwZTsKQEAgLTMxMSw2ICszMTMsNyBAQCBw
dWJsaWM6CiAKICAgICBXcml0ZUJhcnJpZXI8T2JqZWN0Q29uc3RydWN0b3I+IG1fb2JqZWN0Q29u
c3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPEFycmF5Q29uc3RydWN0b3I+IG1fYXJyYXlDb25z
dHJ1Y3RvcjsKKyAgICBXcml0ZUJhcnJpZXI8U2hhZG93UmVhbG1Db25zdHJ1Y3Rvcj4gbV9zaGFk
b3dSZWFsbUNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxSZWdFeHBDb25zdHJ1Y3Rvcj4g
bV9yZWdFeHBDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8RnVuY3Rpb25Db25zdHJ1Y3Rv
cj4gbV9mdW5jdGlvbkNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VDb25z
dHJ1Y3Rvcj4gbV9wcm9taXNlQ29uc3RydWN0b3I7CkBAIC0zNTgsNiArMzYxLDcgQEAgcHVibGlj
OgogICAgIFdyaXRlQmFycmllcjxPYmplY3RQcm90b3R5cGU+IG1fb2JqZWN0UHJvdG90eXBlOwog
ICAgIFdyaXRlQmFycmllcjxGdW5jdGlvblByb3RvdHlwZT4gbV9mdW5jdGlvblByb3RvdHlwZTsK
ICAgICBXcml0ZUJhcnJpZXI8QXJyYXlQcm90b3R5cGU+IG1fYXJyYXlQcm90b3R5cGU7CisgICAg
V3JpdGVCYXJyaWVyPFNoYWRvd1JlYWxtUHJvdG90eXBlPiBtX3NoYWRvd1JlYWxtUHJvdG90eXBl
OwogICAgIFdyaXRlQmFycmllcjxSZWdFeHBQcm90b3R5cGU+IG1fcmVnRXhwUHJvdG90eXBlOwog
ICAgIFdyaXRlQmFycmllcjxJdGVyYXRvclByb3RvdHlwZT4gbV9pdGVyYXRvclByb3RvdHlwZTsK
ICAgICBXcml0ZUJhcnJpZXI8QXN5bmNJdGVyYXRvclByb3RvdHlwZT4gbV9hc3luY0l0ZXJhdG9y
UHJvdG90eXBlOwpAQCAtNDE0LDYgKzQxOCw3IEBAIHB1YmxpYzoKICAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jdXN0b21TZXR0ZXJGdW5jdGlvblN0cnVjdHVy
ZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9uYXRpdmVT
dGRGdW5jdGlvblN0cnVjdHVyZTsKICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9m
ZnNldDsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3NoYWRvd1JlYWxtT2JqZWN0U3Ry
dWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwU3RydWN0dXJlOwog
ICAgIFdyaXRlQmFycmllcjxBc3luY0Z1bmN0aW9uUHJvdG90eXBlPiBtX2FzeW5jRnVuY3Rpb25Q
cm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGU+IG1fYXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKQEAgLTYxNiw2ICs2MjEsNyBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTR2xvYmFs
T2JqZWN0KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgSlNHbG9iYWxPYmplY3QqIGNyZWF0ZVdpdGhDdXN0b21NZXRob2RUYWJsZShWTSYsIFN0
cnVjdHVyZSosIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKik7CiAKICAgICBERUNMQVJF
X0VYUE9SVF9JTkZPOwogCkBAIC03MjAsNiArNzI2LDcgQEAgcHVibGljOgogICAgIEJpZ0ludFBy
b3RvdHlwZSogYmlnSW50UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9iaWdJbnRQcm90b3R5
cGUuZ2V0KCk7IH0KICAgICBKU09iamVjdCogZGF0ZVByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0ZVN0cnVjdHVyZS5wcm90b3R5cGUodGhpcyk7IH0KICAgICBKU09iamVjdCogc3ltYm9s
UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUucHJvdG90
eXBlSW5pdGlhbGl6ZWRPbk1haW5UaHJlYWQodGhpcyk7IH0KKyAgICBTaGFkb3dSZWFsbVByb3Rv
dHlwZSogc2hhZG93UmVhbG1Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd1JlYWxt
UHJvdG90eXBlLmdldCgpOyB9CiAgICAgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUo
KSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKTsgfQogICAgIEpTT2JqZWN0
KiBlcnJvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JTdHJ1Y3R1cmUucHJvdG90
eXBlKHRoaXMpOyB9CiAgICAgSXRlcmF0b3JQcm90b3R5cGUqIGl0ZXJhdG9yUHJvdG90eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQpAQCAtODM3LDYgKzg0
NCw3IEBAIHB1YmxpYzoKICAgICBQcm9wZXJ0eU9mZnNldCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBj
b25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQogICAgIFN0cnVjdHVyZSogbnVt
YmVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1
cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogc2hhZG93
UmVhbG1TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd1JlYWxtT2JqZWN0U3RydWN0
dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBnZW5lcmF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX2dlbmVyYXRvclN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogYXN5
bmNHZW5lcmF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jR2VuZXJhdG9yU3Ry
dWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmNwcAppbmRleCBjOGQ5MTJhYWVkMjA4ZGNjYTRmMmI1NTk3MjM0OWY4Nzc1
ZmQ3Nzg5Li5mOTliOWRmYzVmNzgyZjVlNzNkODNiMjBhNDUxOWVmOWQ1MmI2M2VhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9u
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuY3BwCkBAIC00OTIsNyArNDkyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGdsb2JhbEZ1bmNFdmFsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW0K
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwYXJzZWRPYmplY3QpOwogCiAgICAgU291
cmNlT3JpZ2luIHNvdXJjZU9yaWdpbiA9IGNhbGxGcmFtZS0+Y2FsbGVyU291cmNlT3JpZ2luKHZt
KTsKLSAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNy
ZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2Uocywgc291cmNlT3JpZ2luKSwgRGVyaXZlZENv
bnRleHRUeXBlOjpOb25lLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsKKyAgICBFdmFs
RXhlY3V0YWJsZSogZXZhbCA9IEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OnRyeUNyZWF0ZShnbG9i
YWxPYmplY3QsIG1ha2VTb3VyY2Uocywgc291cmNlT3JpZ2luKSwgRGVyaXZlZENvbnRleHRUeXBl
OjpOb25lLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsKICAgICBFWENFUFRJT05fQVNT
RVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIWV2YWwpOwogICAgIGlmICghZXZhbCkKICAgICAg
ICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlLmNwcAppbmRleCA1YThhMTRhM2NjNmFkMTllZDQwODI0YjgzMDJkYjkwYzRjNDc0YzNh
Li4wOTFjMzBhZDA1NzJjZjVjN2QxYmE5ODM1ODFhZmUwNTczNDNlNDBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKQEAgLTk2LDYgKzk2LDcgQEAgdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6SlNUeXBlIHR5cGUpCiAgICAgQ0FTRShT
dHJpY3RFdmFsQWN0aXZhdGlvblR5cGUpCiAgICAgQ0FTRShXaXRoU2NvcGVUeXBlKQogICAgIENB
U0UoTW9kdWxlTmFtZXNwYWNlT2JqZWN0VHlwZSkKKyAgICBDQVNFKFNoYWRvd1JlYWxtVHlwZSkK
ICAgICBDQVNFKFJlZ0V4cE9iamVjdFR5cGUpCiAgICAgQ0FTRShKU0RhdGVUeXBlKQogICAgIENB
U0UoUHJveHlPYmplY3RUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaApp
bmRleCA2NWVhOTRlZjU2M2Y0YjNhZTIxOTE3NTFjNzkyZWM1MTBkNTc0MWMxLi40MzFiYmFmYzg0
ZTY1MzQ0YzAwMmU0ZTVmNDc2N2M3YTM0NTU1OTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGUuaApAQCAtMTEwLDYgKzExMCw3IEBAIGVudW0gSlNUeXBlIDogdWludDhfdCB7
CiAgICAgLy8gRW5kIEpTU2NvcGUgdHlwZXMuCiAKICAgICBNb2R1bGVOYW1lc3BhY2VPYmplY3RU
eXBlLAorICAgIFNoYWRvd1JlYWxtVHlwZSwKICAgICBSZWdFeHBPYmplY3RUeXBlLAogICAgIEpT
RGF0ZVR5cGUsCiAgICAgUHJveHlPYmplY3RUeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggZTA3ODMzZjQ3YWJjMWE0YjA5MjQyMTVjNTc1N2Jm
NmViZGU1NjQ2ZC4uNzU3ZjMxZmFhYTNlNDQwYjE3ZGY4M2NkMTZmN2Y2MmE5OGQxOWZiYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC01NDAsNiAr
NTQwLDggQEAgYm9vbCBjYW5Vc2VXZWJBc3NlbWJseUZhc3RNZW1vcnkoKTsKICAgICB2KEJvb2ws
IHVzZUhhc093biwgdHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBPYmplY3QuaGFzT3duIG1ldGhv
ZCIpIFwKICAgICB2KEJvb2wsIHVzZUludGxFbnVtZXJhdGlvbiwgdHJ1ZSwgTm9ybWFsLCAiRXhw
b3NlIHRoZSBJbnRsIGVudW1lcmF0aW9uIEFQSXMuIikgXAogICAgIHYoQm9vbCwgdXNlU2hhcmVk
QXJyYXlCdWZmZXIsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICAvKiBGSVhNRTogU2hh
ZG93blJlYWxtIGNhbiBiZSBlbmFibGVkIG9uY2UgV2ViQ29yZSdzIEpTR2xvYmFsT2JqZWN0ID09
IEpTRE9NR2xvYmFsT2JqZWN0IGFzc3VtcHRpb24gaXMgcmVtb3ZlZCwgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE1MDYgKi9cCisgICAgdihCb29sLCB1c2VTaGFk
b3dSZWFsbSwgZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgU2hhZG93UmVhbG0gb2JqZWN0LiIp
IFwKICAgICB2KEJvb2wsIHVzZVRlbXBvcmFsLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBU
ZW1wb3JhbCBvYmplY3QuIikgXAogICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlUaHJlYWRpbmcs
IHRydWUsIE5vcm1hbCwgIkFsbG93IGluc3RydWN0aW9ucyBmcm9tIHRoZSB3YXNtIHRocmVhZGlu
ZyBzcGVjLiIpIFwKICAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVy
ZW5jZXMsIGZhbHNlLCBOb3JtYWwsICJBbGxvdyBmdW5jdGlvbiB0eXBlcyBmcm9tIHRoZSB3YXNt
IHR5cGVkIGZ1bmN0aW9uIHJlZmVyZW5jZXMgc3BlYy4iKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtQ29uc3RydWN0b3IuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE2ZThhYWMzZGFmMzFjYWJmNmIxODllYWQxYjMzMTZjNGFjMTU3ZjcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbUNvbnN0
cnVjdG9yLmNwcApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEln
YWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFk
b3dSZWFsbUNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiU2hhZG93UmVhbG1PYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNz
SW5mbyBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRl
cm5hbEZ1bmN0aW9uOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoU2hhZG93UmVhbG1Db25zdHJ1Y3RvcikgfTsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFM
TFlfREVTVFJVQ1RJQkxFKFNoYWRvd1JlYWxtQ29uc3RydWN0b3IpOworCitzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihjYWxsU2hhZG93UmVhbG0pOworc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04oY29uc3RydWN0V2l0aFNoYWRvd1JlYWxtQ29uc3RydWN0b3IpOworCitT
aGFkb3dSZWFsbUNvbnN0cnVjdG9yOjpTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUs
IGNhbGxTaGFkb3dSZWFsbSwgY29uc3RydWN0V2l0aFNoYWRvd1JlYWxtQ29uc3RydWN0b3IpCit7
Cit9CisKK3ZvaWQgU2hhZG93UmVhbG1Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBTaGFkb3dSZWFsbVByb3RvdHlwZSogc2hhZG93UmVhbG1Qcm90b3R5cGUpCit7CisgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0sIDAsIHZtLnByb3BlcnR5TmFtZXMtPlNoYWRvd1JlYWxtLnN0
cmluZygpLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24p
OworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIHNoYWRvd1JlYWxtUHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RXaXRoU2hh
ZG93UmVhbG1Db25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSopKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBTdHJ1Y3R1
cmUqIHNoYWRvd1JlYWxtU3RydWN0dXJlID0gU2hhZG93UmVhbG1PYmplY3Q6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnNoYWRvd1JlYWxtUHJvdG90eXBl
KCkpOworICAgIEpTT2JqZWN0KiBzaGFkb3dSZWFsbU9iamVjdCA9IFNoYWRvd1JlYWxtT2JqZWN0
OjpjcmVhdGUodm0sIHNoYWRvd1JlYWxtU3RydWN0dXJlLCBnbG9iYWxPYmplY3QtPmdsb2JhbE9i
amVjdE1ldGhvZFRhYmxlKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2hhZG93UmVh
bG1PYmplY3QpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY2FsbFNoYWRvd1JlYWxt
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikpCit7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVu
Y3Rpb25UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlNoYWRvd1JlYWxtIikpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NoYWRvd1JlYWxtQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NoYWRvd1JlYWxtQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMGNiOTRjODAxN2My
ZTE1Yzk5ZGZmMjMzNTI1ZDc5YjUxYzE4YmZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEs
NjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAi
U2hhZG93UmVhbG1Qcm90b3R5cGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdldHRl
clNldHRlcjsKKworY2xhc3MgU2hhZG93UmVhbG1Db25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJ
bnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24g
QmFzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBzdGF0aWMgU2hhZG93UmVhbG1Db25zdHJ1Y3Rvciog
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFNoYWRvd1JlYWxtUHJvdG90eXBl
KiBzaGFkb3dSZWFsbVByb3RvdHlwZSwgR2V0dGVyU2V0dGVyKikKKyAgICB7CisgICAgICAgIFNo
YWRvd1JlYWxtQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8U2hhZG93UmVhbG1Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFNoYWRvd1JlYWxtQ29uc3Ry
dWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlv
bih2bSwgc2hhZG93UmVhbG1Qcm90b3R5cGUpOworICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7
CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTaGFkb3dS
ZWFsbUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYsIFNoYWRvd1JlYWxtUHJvdG90eXBlKik7Cit9OworU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoU2hhZG93UmVhbG1Db25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbik7
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TaGFkb3dSZWFsbU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TaGFkb3dSZWFsbU9iamVjdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjU0NDdhNzFlZTE1MDg1
MzdiNDU2ZmEzNmI0YmYxYWNjMzQ4ZGI0NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtT2JqZWN0LmNwcApAQCAtMCwwICsxLDcyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFkb3dSZWFsbU9iamVjdC5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKFNoYWRv
d1JlYWxtT2JqZWN0KTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBKU0Mgewor
Citjb25zdCBDbGFzc0luZm8gU2hhZG93UmVhbG1PYmplY3Q6OnNfaW5mbyA9IHsgIlNoYWRvd1Jl
YWxtIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShTaGFkb3dSZWFsbU9iamVjdCkgfTsKKworU2hhZG93UmVhbG1PYmplY3Q6OlNoYWRvd1JlYWxt
T2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1
Y3R1cmUpCit7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Cit2b2lkIFNoYWRvd1Jl
YWxtT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0
b3IpCit7CisgICAgU2hhZG93UmVhbG1PYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8U2hhZG93
UmVhbG1PYmplY3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNp
dG9yKTsKKworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZ2xvYmFsT2JqZWN0KTsK
K30KKworREVGSU5FX1ZJU0lUX0NISUxEUkVOKFNoYWRvd1JlYWxtT2JqZWN0KTsKKworU2hhZG93
UmVhbG1PYmplY3QqIFNoYWRvd1JlYWxtT2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlKQor
eworICAgIFNoYWRvd1JlYWxtT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxTaGFkb3dSZWFsbU9iamVjdD4odm0uaGVhcCkpIFNoYWRvd1JlYWxtT2JqZWN0KHZtLCBz
dHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlV2l0aEN1c3RvbU1l
dGhvZFRhYmxlKHZtLCBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051bGwo
KSksIG1ldGhvZFRhYmxlKTsKKyAgICBvYmplY3QtPm1fZ2xvYmFsT2JqZWN0LnNldCh2bSwgb2Jq
ZWN0LCBnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK3ZvaWQgU2hhZG93
UmVhbG1PYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBKU0Nf
VE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFs
bU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1PYmpl
Y3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kMDg4ZmY3ODQyZTIwYWU1NDI1MmY2ZGIwNWQ0YzdlODRmOWViMTVj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93
UmVhbG1PYmplY3QuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgU2hhZG93UmVhbG1PYmplY3QgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1v
ZGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgewor
ICAgICAgICByZXR1cm4gdm0uc2hhZG93UmVhbG1TcGFjZTxtb2RlPigpOworICAgIH0KKworICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8o
U2hhZG93UmVhbG1UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAg
REVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFNoYWRvd1JlYWxtT2JqZWN0KiBjcmVhdGUoVk0m
LCBTdHJ1Y3R1cmUqLCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSopOworCisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0LmdldCgp
OyB9CisKK3ByaXZhdGU6CisgICAgU2hhZG93UmVhbG1PYmplY3QoVk0mLCBTdHJ1Y3R1cmUqKTsK
KyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisgICAgREVDTEFSRV9WSVNJVF9DSElMRFJF
TjsKKworICAgIFdyaXRlQmFycmllcjxKU0dsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NWQ5OGUzYjli
Y2MyMTE1ZDM0ZDljNWFjOWYxYjJmNjQ0ODdmZGNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuY3BwCkBAIC0wLDAg
KzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFkb3dSZWFsbVByb3RvdHlwZS5o
IgorCisjaW5jbHVkZSAiSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0ludGVy
bmFsUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTTW9kdWxlTG9hZGVyLmgiCisjaW5jbHVkZSAiU2hh
ZG93UmVhbG1PYmplY3QuaCIKKworI2luY2x1ZGUgIlNoYWRvd1JlYWxtUHJvdG90eXBlLmx1dC5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworLyogU291cmNlIGZvciBTaGFkb3dSZWFsbVByb3RvdHlw
ZS5sdXQuaAorQGJlZ2luIHNoYWRvd1JlYWxtUHJvdG90eXBlVGFibGUKKyAgZXZhbHVhdGUgICAg
SlNCdWlsdGluICAgICBEb250RW51bXxGdW5jdGlvbiAgMQorICBpbXBvcnRWYWx1ZSBKU0J1aWx0
aW4gICAgIERvbnRFbnVtfEZ1bmN0aW9uICAyCitAZW5kCisqLworCitjb25zdCBDbGFzc0luZm8g
U2hhZG93UmVhbG1Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIlNoYWRvd1JlYWxtIiwgJkJhc2U6OnNf
aW5mbywgJnNoYWRvd1JlYWxtUHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoU2hhZG93UmVhbG1Qcm90b3R5cGUpIH07CisKK1NoYWRvd1JlYWxtUHJvdG90eXBlOjpT
aGFkb3dSZWFsbVByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDog
SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIFNoYWRvd1JlYWxt
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAgSlNDX1RP
X1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihpbXBvcnRJblJlYWxtLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CisgICAgU2hhZG93
UmVhbG1PYmplY3QqIHRoaXNSZWFsbSA9IGpzRHluYW1pY0Nhc3Q8U2hhZG93UmVhbG1PYmplY3Qq
Pih2bSwgdGhpc1ZhbHVlKTsKKyAgICBBU1NFUlQodGhpc1JlYWxtKTsKKworICAgIGF1dG8qIHBy
b21pc2UgPSBKU1Byb21pc2U6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5wcm9taXNlU3RydWN0
dXJlKCkpOworCisgICAgYXV0byBzb3VyY2VPcmlnaW4gPSBjYWxsRnJhbWUtPmNhbGxlclNvdXJj
ZU9yaWdpbih2bSk7CisgICAgYXV0byogc3BlY2lmaWVyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgxKS50b1N0cmluZyhnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisKKyAgICBKU0dsb2JhbE9iamVjdCogcmVhbG1HbG9iYWxPYmplY3Qg
PSB0aGlzUmVhbG0tPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8qIGludGVybmFsUHJvbWlzZSA9
IHJlYWxtR2xvYmFsT2JqZWN0LT5tb2R1bGVMb2FkZXIoKS0+aW1wb3J0TW9kdWxlKHJlYWxtR2xv
YmFsT2JqZWN0LCBzcGVjaWZpZXIsIGpzVW5kZWZpbmVkKCksIHNvdXJjZU9yaWdpbik7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UtPnJlamVj
dFdpdGhDYXVnaHRFeGNlcHRpb24ocmVhbG1HbG9iYWxPYmplY3QsIHNjb3BlKSkpOworCisgICAg
c2NvcGUucmVsZWFzZSgpOworICAgIHByb21pc2UtPnJlc29sdmUoZ2xvYmFsT2JqZWN0LCBpbnRl
cm5hbFByb21pc2UpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZSk7Cit9CisK
K0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihldmFsSW5SZWFsbSwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAg
IFNoYWRvd1JlYWxtT2JqZWN0KiB0aGlzUmVhbG0gPSBqc0R5bmFtaWNDYXN0PFNoYWRvd1JlYWxt
T2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CisgICAgQVNTRVJUKHRoaXNSZWFsbSk7CisgICAgSlNH
bG9iYWxPYmplY3QqIHJlYWxtR2xvYmFsT2JqZWN0ID0gdGhpc1JlYWxtLT5nbG9iYWxPYmplY3Qo
KTsKKworICAgIEpTVmFsdWUgZXZhbEFyZyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAg
Ly8gZXZhbCBjb2RlIGFkYXB0ZWQgZnJvbSBKU0dsb2JhbE9iamVjRnVuY3Rpb25zOjpnbG9iYWxG
dW5jRXZhbAorICAgIFN0cmluZyBzY3JpcHQgPSBhc1N0cmluZyhldmFsQXJnKS0+dmFsdWUoZ2xv
YmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAg
TmFrZWRQdHI8SlNPYmplY3Q+IGV4ZWN1dGFibGVFcnJvcjsKKyAgICBTb3VyY2VDb2RlIHNvdXJj
ZSA9IG1ha2VTb3VyY2Uoc2NyaXB0LCBjYWxsRnJhbWUtPmNhbGxlclNvdXJjZU9yaWdpbih2bSkp
OworICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0gSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3Jl
YXRlKHJlYWxtR2xvYmFsT2JqZWN0LCBzb3VyY2UsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwg
ZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSwgZXhlY3V0YWJsZUVycm9yKTsKKyAgICBpZiAo
ZXhlY3V0YWJsZUVycm9yKSB7CisgICAgICAgIEVycm9ySW5zdGFuY2UqIGVycm9yID0ganNEeW5h
bWljQ2FzdDxFcnJvckluc3RhbmNlKj4odm0sIEpTVmFsdWUoZXhlY3V0YWJsZUVycm9yLmdldCgp
KSk7CisgICAgICAgIGlmIChlcnJvciAhPSBudWxscHRyICYmIGVycm9yLT5lcnJvclR5cGUoKSA9
PSBFcnJvclR5cGU6OlN5bnRheEVycm9yKSB7CisgICAgICAgICAgICBzY29wZS5jbGVhckV4Y2Vw
dGlvbigpOworICAgICAgICAgICAgY29uc3QgU3RyaW5nIHN5bnRheEVycm9yTWVzc2FnZSA9IGVy
cm9yLT5zYW5pdGl6ZWRNZXNzYWdlU3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICAgICAgdGhyb3dWTUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKGdsb2JhbE9iamVjdCwgc3lu
dGF4RXJyb3JNZXNzYWdlKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGhyb3dWTUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJF
cnJvciBlbmNvdW50ZXJlZCBkdXJpbmcgZXZhbHVhdGlvbiJfcykpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIH0KKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSB2bS5pbnRlcnByZXRl
ci0+ZXhlY3V0ZShldmFsLCByZWFsbUdsb2JhbE9iamVjdCwgcmVhbG1HbG9iYWxPYmplY3QtPmds
b2JhbFRoaXMoKSwgcmVhbG1HbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCkpOworICAgIGlmIChV
TkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKKyAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRp
b24oKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBj
cmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiRXJyb3IgZW5jb3VudGVyZWQgZHVyaW5nIGV2
YWx1YXRpb24iX3MpKTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45ZWFlYjBiOGJhYjM5YzE2Nzk2MDE5NmI0MmY2NDIxZmNlNTFlYzliCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Q
cm90b3R5cGUuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEln
YWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFNoYWRvd1JlYWxtUHJvdG90eXBlIGZpbmFs
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBK
U05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CisgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShTaGFkb3dSZWFsbVByb3RvdHlwZSwgQmFz
ZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisKKyAgICBz
dGF0aWMgU2hhZG93UmVhbG1Qcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgIHsKKyAgICAgICAgU2hhZG93UmVhbG1Qcm90b3R5cGUqIHByb3RvdHlwZSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFNoYWRvd1JlYWxtUHJvdG90eXBlPih2bS5oZWFw
KSkgU2hhZG93UmVhbG1Qcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIHByb3RvdHlw
ZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHJvdG90eXBlOworICAgIH0K
KworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTaGFkb3dSZWFsbVByb3RvdHlwZShWTSYs
IFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKK307CisKK0pTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oaW1wb3J0SW5SZWFsbSk7CitKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKGV2YWxJblJlYWxtKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKaW5kZXggMzhlOTUxMjliYTlmMDIxMTBhMWM0M2UwNTFjNGFhNjc4
YzZmZDBkMy4uMmZhYzczNDM1NDg5ZWI3MGQ0ZDk2ZThkMjliMzRiZDNiNjhkYjhjZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTU2LDYgKzE1Niw3IEBACiAjaW5jbHVk
ZSAiU2FtcGxpbmdQcm9maWxlci5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2lu
Y2x1ZGUgIlNoYWRvd0NoaWNrZW4uaCIKKyNpbmNsdWRlICJTaGFkb3dSZWFsbU9iamVjdC5oIgog
I2luY2x1ZGUgIlNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU291cmNl
UHJvdmlkZXJDYWNoZS5oIgogI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCkBAIC0x
NTg3LDYgKzE1ODgsNyBAQCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
c2NyaXB0RmV0Y2hlclNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcAogRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNldEJ1Y2tldFNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBKU1NldDo6QnVja2V0VHlwZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhzZXRJdGVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Nl
dEl0ZXJhdG9yKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNldFNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1NldCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhzaGFkb3dSZWFsbVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBTaGFkb3dSZWFsbU9iamVjdCkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhzdHJpY3RFdmFsQWN0aXZhdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgp
LCBTdHJpY3RFdmFsQWN0aXZhdGlvbikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhzdHJpbmdJdGVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1N0
cmluZ0l0ZXJhdG9yKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNv
dXJjZUNvZGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNTb3Vy
Y2VDb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggYWE4OWIyOGFkZTJmMjVi
NmNjODQ0MGQ2MTRiYzk0N2FlM2JhNGY3NC4uYmRmNDMxZTg0ZWYwOTQ4NTZiYzAyNzMwYzQwZmZl
NmVkYWE1YzFkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC01OTIsNiArNTky
LDcgQEAgcHVibGljOgogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc2V0
QnVja2V0U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzZXRJ
dGVyYXRvclNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc2V0
U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzaGFkb3dSZWFs
bVNwYWNlKTsKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHN0cmljdEV2
YWxBY3RpdmF0aW9uU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
UihzdHJpbmdJdGVyYXRvclNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoc291cmNlQ29kZVNwYWNlKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9K
U1Rlc3RzL0NoYW5nZUxvZwppbmRleCA4NmYzYzMxNTRmNzkxMjAyNjIwMTllM2JjNDUzNmY3NWFi
MTE3YTkyLi4xODk1YWJjZTg1NzE4MDUyZjhiY2Q3YmU1ZDQ2MDkxMjY1YjFhYWVkIDEwMDY0NAot
LS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM4IEBACisyMDIxLTEwLTExICBQaGlsbGlwIE1hdGVzICA8cG1hdGVzQGlnYWxpYS5jb20+CisK
KyAgICAgICAgVGVzdCBjb3ZlcmFnZSBmb3IgSlNDIHNoYWRvdyByZWFsbXMgaW1wbGVtZW50YXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDYw
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbW9k
dWxlcy9pbXBvcnQtbWV0YS1zeW50YXguanM6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAg
ICAgICogc3RyZXNzL2V2YWwtaW5kaXJlY3QuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUp
OgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAqIHN0cmVzcy9pbXBvcnQtc3ludGF4
LmpzOgorICAgICAgICAqIHN0cmVzcy9yZXNvdXJjZXMvc2hhZG93LXJlYWxtLWV4YW1wbGUtbW9k
dWxlLmpzOiBBZGRlZC4KKyAgICAgICAgKHB1dEluR2xvYmFsKToKKyAgICAgICAgKGdldEZyb21H
bG9iYWwpOgorICAgICAgICAoZ2V0QW5PYmplY3QpOgorICAgICAgICAoZ2V0Q2FsbENvdW50KToK
KyAgICAgICAgKiBzdHJlc3Mvc2hhZG93LXJlYWxtLWV2YWx1YXRlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKGFzc2VydGlv
bkZuKToKKyAgICAgICAgKHNob3VsZEJlLlN0cmluZyk6CisgICAgICAgIChzaG91bGRCZS5nbG9i
YWxPYmplY3RGb3IuZG9FdmFsKToKKyAgICAgICAgKHNob3VsZEJlLmdsb2JhbE9iamVjdEZvcik6
CisgICAgICAgICogc3RyZXNzL3NoYWRvdy1yZWFsbS1pbXBvcnQtdmFsdWUuanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoYXN5
bmMgc2hvdWxkVGhyb3dBc3luYyk6CisgICAgICAgIChhc3luYyBjb25zdCk6CisgICAgICAgIChk
b0ltcG9ydCk6CisgICAgICAgICogc3RyZXNzL3NoYWRvdy1yZWFsbS5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRCZSk6CisgICAgICAgICh0aHJvdy5uZXcuRXJyb3IpOgorCiAyMDIxLTEwLTA5
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gUmVm
aW5lIFJlZ0V4cCNjb21waWxlIGJhc2VkIG9uIHJlZ2V4cC1sZWdhY3ktZmVhdHVyZXMgcHJvcG9z
YWwKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbW9kdWxlcy9pbXBvcnQtbWV0YS1zeW50YXguanMgYi9K
U1Rlc3RzL21vZHVsZXMvaW1wb3J0LW1ldGEtc3ludGF4LmpzCmluZGV4IDNlZGY0ZTUxMjBlMTJh
NWI2ODk0OTEzYjA1YWE3MGFjNjc2ODU2NjIuLjU5YTJiMzYzNDYwYTYwMzVjN2ExMDVmMDhjMjM2
ZjlmNGE5NDM1MWEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvbW9kdWxlcy9pbXBvcnQtbWV0YS1zeW50
YXguanMKKysrIGIvSlNUZXN0cy9tb2R1bGVzL2ltcG9ydC1tZXRhLXN5bnRheC5qcwpAQCAtMTAs
NyArMTAsNyBAQCBzaG91bGROb3RUaHJvdygoKSA9PiB7CiAKIHNob3VsZFRocm93KCgpID0+IHsK
ICAgICBjaGVja01vZHVsZVN5bnRheChgKGltcG9ydC5jb2NvYSlgKTsKLX0sIGBTeW50YXhFcnJv
cjogVW5leHBlY3RlZCBpZGVudGlmaWVyICdjb2NvYScuICJpbXBvcnQuIiBjYW4gb25seSBmb2xs
b3dlZCB3aXRoIG1ldGEuOjFgKTsKK30sIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCBpZGVudGlm
aWVyICdjb2NvYScuICJpbXBvcnQuIiBjYW4gb25seSBiZSBmb2xsb3dlZCB3aXRoIG1ldGEuOjFg
KTsKIAogc2hvdWxkVGhyb3coKCkgPT4gewogICAgIGNoZWNrTW9kdWxlU3ludGF4KGAoaW1wb3J0
WyJDb2NvYSJdKWApOwpAQCAtMTgsNyArMTgsNyBAQCBzaG91bGRUaHJvdygoKSA9PiB7CiAKIHNo
b3VsZFRocm93KCgpID0+IHsKICAgICBjaGVja01vZHVsZVN5bnRheChgaW1wb3J0LmNvY29hYCk7
Ci19LCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgaWRlbnRpZmllciAnY29jb2EnLiAiaW1wb3J0
LiIgY2FuIG9ubHkgZm9sbG93ZWQgd2l0aCBtZXRhLjoxYCk7Cit9LCBgU3ludGF4RXJyb3I6IFVu
ZXhwZWN0ZWQgaWRlbnRpZmllciAnY29jb2EnLiAiaW1wb3J0LiIgY2FuIG9ubHkgYmUgZm9sbG93
ZWQgd2l0aCBtZXRhLjoxYCk7CiAKIHNob3VsZFRocm93KCgpID0+IHsKICAgICBjaGVja01vZHVs
ZVN5bnRheChgaW1wb3J0WyJDb2NvYSJdYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9l
dmFsLWluZGlyZWN0LmpzIGIvSlNUZXN0cy9zdHJlc3MvZXZhbC1pbmRpcmVjdC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mMWI1OTE0MDVhZjFjMGNlYWVjYjYwYTgzMGYxMGEwMmI2MWEyZDFkCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZXZhbC1pbmRpcmVjdC5qcwpAQCAtMCwwICsxLDM0IEBA
CisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFs
ICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAke2V4cGVj
dGVkfSBidXQgZ290ICR7YWN0dWFsfWApOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5j
LCBlcnJvclR5cGUsIGFzc2VydGlvbkZuKSB7CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7Cisg
ICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsKKyAg
ICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0gYnV0IGdvdCAke2Vycm9y
Lm5hbWV9YCk7CisKKyAgICBhc3NlcnRpb25GbihlcnJvcik7Cit9CisKK3Nob3VsZEJlKCgwLCBl
dmFsKSgiKCkgPT4geyByZXR1cm4gMTsgfSIpKCksIDEpOworCitzaG91bGRUaHJvdygKKyAgKCkg
PT4geyAoMCwgZXZhbCkoIi4uIikgfSwKKyAgU3ludGF4RXJyb3IsCisgIChlcnIpID0+IHsKKyAg
ICAgIHNob3VsZEJlKFN0cmluZyhlcnIpLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4g
Jy4nYCk7CisgIH0pOworCisvLyBOT1RFOiBtb3JlIGl0ZXJhdGlvbnMgKGxpa2UgMjAwMDApIHdp
bGwgdHJpZ2dlciBhIEdDL09PTSBpc3N1ZSBvbiAzMi1iaXQgZGV2aWNlcy4KK2ZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgbGV0IGYgPSAoMCwgZXZhbCkoIigpID0+IHsgcmV0
dXJuIDE7IH0iKTsKKyAgICBzaG91bGRCZShmKCksIDEpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvaW1wb3J0LXN5bnRheC5qcyBiL0pTVGVzdHMvc3RyZXNzL2ltcG9ydC1zeW50YXgu
anMKaW5kZXggMjVhM2ZiYmY2ODY2MTU3YjE3NWRhOGVkYWU3OGMwZTllMjgxNWMyNi4uOTRlMDg1
MGY3YjI4OTJhODYxYWQ1ZDBmNDUwZmY0NGY5MTcyNGQyMSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9z
dHJlc3MvaW1wb3J0LXN5bnRheC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9pbXBvcnQtc3ludGF4
LmpzCkBAIC0yOSw3ICsyOSw3IEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3RTeW50YXgoc2NyaXB0LCBt
ZXNzYWdlKSB7CiAKIHRlc3RTeW50YXhFcnJvcihgaW1wb3J0KWAsIGBTeW50YXhFcnJvcjogVW5l
eHBlY3RlZCB0b2tlbiAnKScuIGltcG9ydCBjYWxsIGV4cGVjdHMgZXhhY3RseSBvbmUgYXJndW1l
bnQuYCk7CiB0ZXN0U3ludGF4RXJyb3IoYG5ldyBpbXBvcnQoYCwgYFN5bnRheEVycm9yOiBDYW5u
b3QgdXNlIG5ldyB3aXRoIGltcG9ydC5gKTsKLXRlc3RTeW50YXhFcnJvcihgaW1wb3J0LmhlbGxv
KClgLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgaWRlbnRpZmllciAnaGVsbG8nLiAiaW1wb3J0
LiIgY2FuIG9ubHkgZm9sbG93ZWQgd2l0aCBtZXRhLmApOwordGVzdFN5bnRheEVycm9yKGBpbXBv
cnQuaGVsbG8oKWAsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCBpZGVudGlmaWVyICdoZWxsbycu
ICJpbXBvcnQuIiBjYW4gb25seSBiZSBmb2xsb3dlZCB3aXRoIG1ldGEuYCk7CiB0ZXN0U3ludGF4
RXJyb3IoYGltcG9ydFtgLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJ1snLiBpbXBv
cnQgY2FsbCBleHBlY3RzIGV4YWN0bHkgb25lIGFyZ3VtZW50LmApOwogdGVzdFN5bnRheEVycm9y
KGBpbXBvcnQ8YCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICc8Jy4gaW1wb3J0IGNh
bGwgZXhwZWN0cyBleGFjdGx5IG9uZSBhcmd1bWVudC5gKTsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvcmVzb3VyY2VzL3NoYWRvdy1yZWFsbS1leGFtcGxlLW1vZHVsZS5qcyBiL0pTVGVz
dHMvc3RyZXNzL3Jlc291cmNlcy9zaGFkb3ctcmVhbG0tZXhhbXBsZS1tb2R1bGUuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOGI0ZjU3OWMyZjlhNmRjMjM5MGJlMmZhMDU1Y2U2OGQ2ODAzMzBmMwotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Jlc291cmNlcy9zaGFkb3ctcmVhbG0tZXhhbXBsZS1t
b2R1bGUuanMKQEAgLTAsMCArMSwyNSBAQAordmFyIGNhbGxDb3VudCA9IDA7CisKK2Z1bmN0aW9u
IHB1dEluR2xvYmFsKGtleSwgdmFsKSB7CisgICAgY2FsbENvdW50Kys7CisgICAgZ2xvYmFsVGhp
cy5rZXkgPSB2YWw7Cit9CisKK2Z1bmN0aW9uIGdldEZyb21HbG9iYWwoa2V5KSB7CisgICAgY2Fs
bENvdW50Kys7CisgICAgcmV0dXJuIGdsb2JhbFRoaXMua2V5OworfQorCit2YXIgYW5PYmplY3Qg
PSBuZXcgT2JqZWN0KCk7CisKK2Z1bmN0aW9uIGdldEFuT2JqZWN0KCkgeworICAgIGNhbGxDb3Vu
dCsrOworICAgIHJldHVybiBhbk9iamVjdDsKK30KKworZnVuY3Rpb24gZ2V0Q2FsbENvdW50KCkg
eworICAgIHJldHVybiBjYWxsQ291bnQ7Cit9CisKK3ZhciBhbnN3ZXIgPSA2OworZXhwb3J0IHsg
YW5PYmplY3QsIGFuc3dlciwgZ2V0Q2FsbENvdW50LCBnZXRGcm9tR2xvYmFsLCBnZXRBbk9iamVj
dCwgcHV0SW5HbG9iYWwgfTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3NoYWRvdy1yZWFs
bS1ldmFsdWF0ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3NoYWRvdy1yZWFsbS1ldmFsdWF0ZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lYzAzZjgzOGI4NmUyOWIwZjk2ZDFiNDk1ZDE0MDVkZDViM2UyMmNjCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc2hhZG93LXJlYWxtLWV2YWx1YXRlLmpzCkBA
IC0wLDAgKzEsMTUzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlU2hhZG93UmVhbG09MSIp
CisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFs
ICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAke2V4cGVj
dGVkfSBidXQgZ290ICR7YWN0dWFsfWApOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5j
LCBlcnJvclR5cGUsIGFzc2VydGlvbkZuKSB7CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7Cisg
ICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsKKyAg
ICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0gYnV0IGdvdCAke2Vycm9y
Lm5hbWV9YCk7CisKKyAgICBhc3NlcnRpb25GbihlcnJvcik7Cit9CisKKy8vIGJhc2ljIGV2YWx1
YXRpb24gYW5kIHN0YXRlIHNldHRpbmcKK3sKKyAgICBsZXQgcmVhbG0gPSBuZXcgU2hhZG93UmVh
bG0oKTsKKyAgICBsZXQgb3RoZXJSZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOworCisgICAgc2hv
dWxkQmUocmVhbG0uZXZhbHVhdGUoIjEiKSwgMSk7CisgICAgdmFyIHggPSAyOworICAgIHJlYWxt
LmV2YWx1YXRlKCJ2YXIgeCA9IDEiKTsKKyAgICBzaG91bGRCZShyZWFsbS5ldmFsdWF0ZSgieCIp
LCAxKTsKKyAgICBzaG91bGRCZSh4LCAyKTsKKworICAgIC8vIHNjb3BlIGlzbid0IHNoYXJlZCBh
Y3Jvc3MgcmVhbG1zCisgICAgc2hvdWxkQmUob3RoZXJSZWFsbS5ldmFsdWF0ZSgiZ2xvYmFsVGhp
cy54IiksIHVuZGVmaW5lZCk7Cit9CisKKy8vIGFjY2Vzc2luZyBgZ2xvYmFsVGhpc2Agd2l0aGlu
IGFuZCBvdXRzaWRlIG9mIGEgc2hhZG93IHJlYWxtCit7CisgICAgbGV0IHJlYWxtID0gbmV3IFNo
YWRvd1JlYWxtKCk7CisgICAgZ2xvYmFsVGhpcy5oaSA9IDY7CisKKyAgICBzaG91bGRCZShyZWFs
bS5ldmFsdWF0ZSgiZ2xvYmFsVGhpcy5oaSIpLCB1bmRlZmluZWQpOworCisgICAgcmVhbG0uZXZh
bHVhdGUoImdsb2JhbFRoaXMuaGkgPSAnZmFsYSBhbWlnbyciKTsKKworICAgIHNob3VsZEJlKHJl
YWxtLmV2YWx1YXRlKCJnbG9iYWxUaGlzLmhpIiksICJmYWxhIGFtaWdvIik7CisgICAgc2hvdWxk
QmUoZ2xvYmFsVGhpcy5oaSwgNik7Cit9CisKKy8vIGVuc3VyZSB0aGF0IGVycm9ycyB0aHJvd24g
aXNuJ3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBzaGFkb3cgcmVhbG0ncyBnbG9iYWwgb2JqZWN0Cit7
CisgICAgbGV0IHJlYWxtID0gbmV3IFNoYWRvd1JlYWxtKCk7CisgICAgc2hvdWxkVGhyb3coCisg
ICAgICAoKSA9PiB7IHJlYWxtLmV2YWx1YXRlKCIuLiIpOyB9LAorICAgICAgU3ludGF4RXJyb3Is
CisgICAgICAoZXJyKSA9PiB7CisgICAgICAgICAgc2hvdWxkQmUoJC5nbG9iYWxPYmplY3RGb3Io
ZXJyKSwgZ2xvYmFsVGhpcyk7CisgICAgICAgICAgc2hvdWxkQmUoU3RyaW5nKGVyciksIGBTeW50
YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnLidgKTsKKyAgICAgIH0pOworfQorCisvLyBlbnN1
cmUgdGhhdCBlcnJvcnMgdGhyb3duIGRvbid0IGNhcnJ5IGluZm9ybWF0aW9uIGZyb20gdGhlIHNo
YWRvdyByZWFsbQoreworICAgIGxldCByZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOworICAgIHNo
b3VsZFRocm93KAorICAgICAgKCkgPT4geyByZWFsbS5ldmFsdWF0ZSgidGhyb3cgbmV3IEVycm9y
KCdzZWNyZXQnKSIpOyB9LAorICAgICAgVHlwZUVycm9yLAorICAgICAgKGVycikgPT4geworICAg
ICAgICAgIHNob3VsZEJlKCQuZ2xvYmFsT2JqZWN0Rm9yKGVyciksIGdsb2JhbFRoaXMpOworICAg
ICAgICAgIHNob3VsZEJlKFN0cmluZyhlcnIpLCAiVHlwZUVycm9yOiBFcnJvciBlbmNvdW50ZXJl
ZCBkdXJpbmcgZXZhbHVhdGlvbiIpOworICAgICAgfSk7Cit9CisKKy8vIHdyYXBwZWQgZnVuY3Rp
b25zIHByb3RlY3QgdGhlIHNoYWRvdyByZWFsbQoreworICAgIGxldCByZWFsbSA9IG5ldyBTaGFk
b3dSZWFsbSgpOworICAgIGxldCB3cmFwcGVkSW52b2tlQW5kQWRkID0gcmVhbG0uZXZhbHVhdGUo
ImZ1bmN0aW9uIGludm9rZUFuZEFkZCh4Rm4sIHlGbikgeyByZXR1cm4geEZuKCkgKyB5Rm4oKTsg
fTsgaW52b2tlQW5kQWRkIik7CisgICAgc2hvdWxkQmUod3JhcHBlZEludm9rZUFuZEFkZCgoKSA9
PiB7IHJldHVybiAxIH0sICgpID0+IHsgcmV0dXJuIDIgfSksIDMpOworICAgIHNob3VsZEJlKCQu
Z2xvYmFsT2JqZWN0Rm9yKHdyYXBwZWRJbnZva2VBbmRBZGQpLCBnbG9iYWxUaGlzKTsKKworICAg
IC8vIG5hbWUgYW5kIGxlbmd0aCBwcm9wZXJ0aWVzIGZyb20gd3JhcHBlZCBmdW5jdGlvbiBhcmUg
YWJzZW50CisgICAgc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3cmFw
cGVkSW52b2tlQW5kQWRkLCAibGVuZ3RoIiksIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3cmFwcGVkSW52b2tlQW5kQWRkLCAibmFtZSIp
LCB1bmRlZmluZWQpOworCisgICAgLy8gY2FuJ3QgcGFzcyBvYmplY3RzIGludG8gYSBzaGFkb3cg
cmVhbG0td3JhcHBlZCBmdW5jdGlvbgorICAgIGxldCBudW1iZXJPYmogPSB7IHZhbHVlT2YoKSB7
IHJldHVybiAtMSB9IH07CisgICAgc2hvdWxkVGhyb3coCisgICAgICAoKSA9PiB7IHdyYXBwZWRJ
bnZva2VBbmRBZGQobnVtYmVyT2JqLCAxKTsgfSwKKyAgICAgIFR5cGVFcnJvciwKKyAgICAgIChl
cnIpID0+IHsKKyAgICAgICAgICBzaG91bGRCZSgkLmdsb2JhbE9iamVjdEZvcihlcnIpLCBnbG9i
YWxUaGlzKTsKKyAgICAgICAgICBzaG91bGRCZShTdHJpbmcoZXJyKSwgIlR5cGVFcnJvcjogdmFs
dWUgcGFzc2luZyBiZXR3ZWVuIHJlYWxtcyBtdXN0IGJlIGNhbGxhYmxlIG9yIHByaW1pdGl2ZSIp
OworICAgICAgfSk7Cit9CisKK3sKKyAgICBsZXQgcmVhbG0gPSBuZXcgU2hhZG93UmVhbG0oKTsK
KyAgICAvLyBjYW4ndCBjYWxsIGBldmFsdWF0ZWAgb24gYSBub24gc2hhZG93IHJlYWxtCisgICAg
bGV0IG5vdFJlYWxtID0ge307CisgICAgc2hvdWxkVGhyb3coCisgICAgICAoKSA9PiB7IHJlYWxt
LmV2YWx1YXRlLmNhbGwobm90UmVhbG0sICcxJyk7IH0sCisgICAgICBUeXBlRXJyb3IsCisgICAg
ICAoZXJyKSA9PiB7IHNob3VsZEJlKCQuZ2xvYmFsT2JqZWN0Rm9yKGVyciksIGdsb2JhbFRoaXMp
OyB9CisgICAgKTsKK30KKworLy8gdHJpZ2dlciBKSVQKK3sKKyAgICBmdW5jdGlvbiBkb0V2YWwo
cmVhbG0sIHMpCisgICAgeworICAgICAgICByZXR1cm4gcmVhbG0uZXZhbHVhdGUocyk7CisgICAg
fQorCisgICAgbm9JbmxpbmUoZG9FdmFsKTsKKworICAgIGxldCByZWFsbSA9IG5ldyBTaGFkb3dS
ZWFsbSgpOworICAgIHJlYWxtLmV2YWx1YXRlKCJnbG9iYWxUaGlzLnNlY3JldCA9IDE7Iik7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQorICAgICAgICBzaG91bGRCZShkb0V2
YWwocmVhbG0sICc0MicpLCA0Mik7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7ICsr
aSkgeworICAgICAgICBsZXQgZiA9IGRvRXZhbChyZWFsbSwgJyh4KSA9PiB7IHJldHVybiB4KCkg
KyBnbG9iYWxUaGlzLnNlY3JldDsgfScpOworICAgICAgICBzaG91bGRCZSgkLmdsb2JhbE9iamVj
dEZvcihmKSwgZ2xvYmFsVGhpcyk7CisgICAgICAgIHNob3VsZEJlKGYoKCkgPT4geyByZXR1cm4g
NDE7IH0pLCA0Mik7CisgICAgfQorICAgIC8vIChwb3RlbnRpYWwpIGlubGluaW5nIG9mIHdyYXBw
ZWQgZnVuY3Rpb24gdXNlcyBjb3JyZWN0IGdsb2JhbCBvYmplY3QKKyAgICBsZXQgZiA9IGRvRXZh
bChyZWFsbSwgJyh4KSA9PiB7IHJldHVybiB4KCkgKyBnbG9iYWxUaGlzLnNlY3JldDsgfScpOwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgICAgICBzaG91bGRCZSgk
Lmdsb2JhbE9iamVjdEZvcihmKSwgZ2xvYmFsVGhpcyk7CisgICAgICAgIHNob3VsZEJlKGYoKCkg
PT4geyByZXR1cm4gNDE7IH0pLCA0Mik7CisgICAgfQorICAgIC8vIChwb3RlbnRpYWwpIGlubGlu
aW5nIGluc2lkZSBhIHJlYWxtIHVzZXMgY29ycmVjdCBnbG9iYWwgb2JqZWN0CisgICAgbGV0IGxv
b3BJbnNpZGUgPSBkb0V2YWwocmVhbG0sICcoeCkgPT4geyBsZXQgYWNjID0gMDsgZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7IGFjYyArPSB4KCk7IH07IHJldHVybiBhY2M7IH0nKTsK
KyAgICBnbG9iYWxUaGlzLnNlY3JldCA9IC0xOworICAgIHNob3VsZEJlKGxvb3BJbnNpZGUoKCkg
PT4geyByZXR1cm4gZ2xvYmFsVGhpcy5zZWNyZXQ7IH0pLCAtMTAwMDApOworfQorCisvLyBldmFs
dWF0ZSBzcGVjcworeworICAgIHNob3VsZEJlKHR5cGVvZiBTaGFkb3dSZWFsbS5wcm90b3R5cGUu
ZXZhbHVhdGUsICJmdW5jdGlvbiIpOworCisgICAgbGV0IGV2YWx1YXRlTmFtZSA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU2hhZG93UmVhbG0ucHJvdG90eXBlLmV2YWx1YXRlLCAi
bmFtZSIpOworICAgIHNob3VsZEJlKGV2YWx1YXRlTmFtZS52YWx1ZSwgImV2YWx1YXRlIik7Cisg
ICAgc2hvdWxkQmUoZXZhbHVhdGVOYW1lLmVudW1lcmFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRC
ZShldmFsdWF0ZU5hbWUud3JpdGFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShldmFsdWF0ZU5h
bWUuY29uZmlndXJhYmxlLCB0cnVlKTsKKworICAgIGxldCBldmFsdWF0ZUxlbmd0aCA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU2hhZG93UmVhbG0ucHJvdG90eXBlLmV2YWx1YXRl
LCAibGVuZ3RoIik7CisgICAgc2hvdWxkQmUoZXZhbHVhdGVMZW5ndGgudmFsdWUsIDEpOworICAg
IHNob3VsZEJlKGV2YWx1YXRlTGVuZ3RoLmVudW1lcmFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRC
ZShldmFsdWF0ZUxlbmd0aC53cml0YWJsZSwgZmFsc2UpOworICAgIHNob3VsZEJlKGV2YWx1YXRl
TGVuZ3RoLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9zaGFkb3ctcmVhbG0taW1wb3J0LXZhbHVlLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc2hhZG93LXJl
YWxtLWltcG9ydC12YWx1ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDNjZDhlNjIzZjFmNmQxMzkzMWM3Yjlk
YjhkZGUzMDg0NjA4YTg1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc2hhZG93
LXJlYWxtLWltcG9ydC12YWx1ZS5qcwpAQCAtMCwwICsxLDE0OCBAQAorLy9AIHJlcXVpcmVPcHRp
b25zKCItLXVzZVNoYWRvd1JlYWxtPTEiKQorCit2YXIgYWJvcnQgPSAkdm0uYWJvcnQ7CisKK2Z1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAke2V4cGVjdGVkfSBi
dXQgZ290ICR7YWN0dWFsfWApOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJv
clR5cGUpIHsKKyAgICBsZXQgZXJyb3I7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKworICAgIGlmICghKGVy
cm9yIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBl
Y3RlZCAke2Vycm9yVHlwZS5uYW1lfSEgZ290ICR7ZXJyb3IubmFtZX1gKTsKK30KKworYXN5bmMg
ZnVuY3Rpb24gc2hvdWxkVGhyb3dBc3luYyhmdW5jLCBlcnJvclR5cGUpIHsKKyAgICBsZXQgZXJy
b3I7CisgICAgdHJ5IHsKKyAgICAgICAgYXdhaXQgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKworICAgIGlmICghKGVycm9yIGluc3RhbmNlb2Yg
ZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2Vycm9yVHlw
ZS5uYW1lfSEgZ290ICR7ZXJyb3IubmFtZX0gd2l0aCBtZXNzYWdlICR7ZXJyb3IubWVzc2FnZX1g
KTsKK30KKworKGFzeW5jIGZ1bmN0aW9uICgpIHsKKyAgICBjb25zdCBpbXBvcnRQYXRoID0gIi4v
cmVzb3VyY2VzL3NoYWRvdy1yZWFsbS1leGFtcGxlLW1vZHVsZS5qcyI7CisgICAgY29uc3QgeyBh
bnN3ZXIsIGdldENhbGxDb3VudCwgcHV0SW5HbG9iYWwsIGdldEZyb21HbG9iYWwsIGdldEFuT2Jq
ZWN0IH0gPSBhd2FpdCBpbXBvcnQoaW1wb3J0UGF0aCk7CisgICAgY29uc3Qgb3V0ZXJBbnN3ZXIg
PSBhbnN3ZXI7CisgICAgY29uc3Qgb3V0ZXJHZXRDYWxsQ291bnQgPSBnZXRDYWxsQ291bnQ7Cisg
ICAgY29uc3Qgb3V0ZXJQdXRJbkdsb2JhbCA9IHB1dEluR2xvYmFsOworICAgIGNvbnN0IG91dGVy
R2V0RnJvbUdsb2JhbCA9IGdldEZyb21HbG9iYWw7CisgICAgY29uc3Qgb3V0ZXJHZXRBbk9iamVj
dCA9IGdldEFuT2JqZWN0OworCisgICAgeworICAgICAgICBsZXQgcmVhbG0gPSBuZXcgU2hhZG93
UmVhbG0oKTsKKworICAgICAgICAvLyB1cGRhdGUgbG9jYWwgbW9kdWxlIHN0YXRlICsgY2hlY2sg
aXQKKyAgICAgICAgc2hvdWxkQmUob3V0ZXJHZXRDYWxsQ291bnQoKSwgMCk7CisgICAgICAgIG91
dGVyR2V0QW5PYmplY3QoKTsKKyAgICAgICAgc2hvdWxkQmUob3V0ZXJHZXRDYWxsQ291bnQoKSwg
MSk7CisgICAgICAgIC8vIHVwZGF0ZSByZWFsbSBtb2R1bGUgc3RhdGUgKyBjaGVjayBpdAorICAg
ICAgICBsZXQgaW5uZXJHZXRDYWxsQ291bnQgPSBhd2FpdCByZWFsbS5pbXBvcnRWYWx1ZShpbXBv
cnRQYXRoLCAiZ2V0Q2FsbENvdW50Iik7CisgICAgICAgIGxldCBpbm5lclB1dEluR2xvYmFsID0g
YXdhaXQgcmVhbG0uaW1wb3J0VmFsdWUoaW1wb3J0UGF0aCwgInB1dEluR2xvYmFsIik7CisgICAg
ICAgIHNob3VsZEJlKGlubmVyR2V0Q2FsbENvdW50KCksIDApOworICAgICAgICBpbm5lclB1dElu
R2xvYmFsKCJzb21ldGhpbmciLCAicmFuZG9tIik7CisgICAgICAgIHNob3VsZEJlKGlubmVyR2V0
Q2FsbENvdW50KCksIDEpOworICAgICAgICAvLyByZS1pbXBvcnRpbmcgdGhlIG1vZHVsZSBpbnRv
IHRoZSByZWFsbSBkb2Vzbid0IHJlbG9hZCB0aGUgbW9kdWxlCisgICAgICAgIGlubmVyR2V0Q2Fs
bENvdW50ID0gYXdhaXQgcmVhbG0uaW1wb3J0VmFsdWUoaW1wb3J0UGF0aCwgImdldENhbGxDb3Vu
dCIpOworICAgICAgICBzaG91bGRCZShpbm5lckdldENhbGxDb3VudCgpLCAxKTsKKyAgICAgICAg
Ly8gdGhlIChvdXRlcikgbG9jYWwgbW9kdWxlIHN0YXRlIHN0YXlzIGludGFjdAorICAgICAgICBz
aG91bGRCZShvdXRlckdldENhbGxDb3VudCgpLCAxKTsKKworICAgICAgICAvLyBvbmUgY2FuIGlt
cG9ydGVkIHByaW1pdGl2ZS9jYWxsYWJsZSB2YXJpYWJsZXMganVzdCBmaW5lCisgICAgICAgIC8v
IHNob3VsZEJlKGlubmVyQW5zd2VyLCBvdXRlckFuc3dlcik7CisgICAgICAgIGxldCBpbm5lckFu
c3dlciA9IGF3YWl0IHJlYWxtLmltcG9ydFZhbHVlKGltcG9ydFBhdGgsICJhbnN3ZXIiKTsKKyAg
ICAgICAgc2hvdWxkQmUoaW5uZXJBbnN3ZXIsIG91dGVyQW5zd2VyKTsKKworICAgICAgICAvLyBp
bXBvcnRlZCB2YXJpYWJsZXMgYXJlIGNoZWNrZWQgZm9yIHByaW10aXZlL2NhbGxhYmxlLW5lc3MK
KyAgICAgICAgYXdhaXQgc2hvdWxkVGhyb3dBc3luYyhhc3luYyAoKSA9PiB7IGxldCB4ID0gYXdh
aXQgcmVhbG0uaW1wb3J0VmFsdWUoaW1wb3J0UGF0aCwgImFuT2JqZWN0Iik7IH0sIFR5cGVFcnJv
cik7CisKKyAgICAgICAgLy8gaW1wb3J0aW5nIG5vbi1leGlzdGVudCByZWYgZmFpbHMKKyAgICAg
ICAgYXdhaXQgc2hvdWxkVGhyb3dBc3luYyhhc3luYyAoKSA9PiB7IGxldCB4ID0gYXdhaXQgcmVh
bG0uaW1wb3J0VmFsdWUoaW1wb3J0UGF0aCwgIm5vdGhpbmciKTsgfSwgVHlwZUVycm9yKTsKKwor
ICAgICAgICAvLyBpbXBvcnRpbmcgZnJvbSBub24tZXhpc3RlbnQgZmlsZSBmYWlscworICAgICAg
ICBhd2FpdCBzaG91bGRUaHJvd0FzeW5jKGFzeW5jICgpID0+IHsgbGV0IHggPSBhd2FpdCByZWFs
bS5pbXBvcnRWYWx1ZSgicmFuZG9tIiwgIm5vdGhpbmciKTsgfSwgVHlwZUVycm9yKTsKKworICAg
ICAgICAvLyB3ZSBjYW4gaW1wb3J0IGZ1bmN0aW9ucyB0aHJvdWdoIGFuIGlubmVyIHJlYWxtIGZv
ciB1c2UgaW4gdGhlIG91dGVyCisgICAgICAgIGxldCBpbm5lckdldEZyb21HbG9iYWwgPSBhd2Fp
dCByZWFsbS5pbXBvcnRWYWx1ZShpbXBvcnRQYXRoLCAiZ2V0RnJvbUdsb2JhbCIpOworICAgICAg
ICBpbm5lclB1dEluR2xvYmFsKCJzYWx1dGF0aW9uIiwgInNhcmF2YSIpOworICAgICAgICBzaG91
bGRCZShpbm5lckdldEZyb21HbG9iYWwoInNhbHV0YXRpb24iKSwgInNhcmF2YSIpOworCisgICAg
ICAgIC8vIGlubmVyIGdsb2JhbCBzdGF0ZSBpcyB1bmNoYW5nZWQgYnkgb3V0ZXIgZ2xvYmFsIHN0
YXRlIGNoYW5nZQorICAgICAgICBvdXRlclB1dEluR2xvYmFsKCJzYWx1dGF0aW9uIiwgImhlbGxv
IHdvcmxkISIpOworICAgICAgICBzaG91bGRCZShvdXRlckdldEZyb21HbG9iYWwoInNhbHV0YXRp
b24iKSwgImhlbGxvIHdvcmxkISIpOworICAgICAgICBzaG91bGRCZShpbm5lckdldEZyb21HbG9i
YWwoInNhbHV0YXRpb24iKSwgInNhcmF2YSIpOworCisgICAgICAgIC8vIHdyYXBwZWQgZnVuY3Rp
b25zIGNoZWNrIGFyZ3VtZW50cyBmb3IgcHJpbWl0aXZlL2NhbGxhYmxlLW5lc3MKKyAgICAgICAg
c2hvdWxkVGhyb3coKCkgPT4geyBpbm5lclB1dEluR2xvYmFsKCJ0cmVhc3VyZSIsIG5ldyBPYmpl
Y3QoKSk7IH0sIFR5cGVFcnJvcik7CisKKyAgICAgICAgLy8gaW1wb3J0ZWQgZnVuY3Rpb25zIGFy
ZSB3cmFwcGVkIHdpdGggY29ycmVjdCByZXR1cm4gdmFsdWUgY2hlY2tzCisgICAgICAgIGxldCBn
ZXRBbk9iamVjdEZuID0gYXdhaXQgcmVhbG0uaW1wb3J0VmFsdWUoaW1wb3J0UGF0aCwgImdldEFu
T2JqZWN0Iik7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgZ2V0QW5PYmplY3RGbigpOyB9
LCBUeXBlRXJyb3IpOworCisgICAgICAgIC8vIHRocmVhZCBhIGZ1bmN0aW9uIGluIGFuZCBvdXQg
b2YgYSByZWFsbSB0byB3cmFwIGl0IHVwCisgICAgICAgIGlubmVyUHV0SW5HbG9iYWwoIm91dGVy
LXJlYWxtLXB1dCIsIG91dGVyUHV0SW5HbG9iYWwpOworICAgICAgICB3cmFwcGVkT3V0ZXJQdXRJ
bkdsb2JhbCA9IGlubmVyR2V0RnJvbUdsb2JhbCgib3V0ZXItcmVhbG0tcHV0Iik7CisKKyAgICAg
ICAgLy8gaXQgc3RpbGwgbWFuaXB1YXRlcyB0aGUgY29ycmVjdCBnbG9iYWwgb2JqZWN0IHN0YXRl
CisgICAgICAgIHdyYXBwZWRPdXRlclB1dEluR2xvYmFsKCJ0cmVhc3VyZSIsICJzaGlueSB0aW4g
c2NyYXAiKTsKKyAgICAgICAgc2hvdWxkQmUob3V0ZXJHZXRGcm9tR2xvYmFsKCJ0cmVhc3VyZSIp
LCAic2hpbnkgdGluIHNjcmFwIik7CisKKyAgICAgICAgLy8gd3JhcHBlZCBmdW5jdGlvbnMgY2hl
Y2sgYXJndW1lbnRzIGZvciBwcmltaXRpdmUvY2FsbGFibGUtbmVzcworICAgICAgICBzaG91bGRU
aHJvdygoKSA9PiB7IHdyYXBwZWRPdXRlclB1dEluR2xvYmFsKCJ0cmVhc3VyZSIsIG5ldyBPYmpl
Y3QoKSk7IH0sIFR5cGVFcnJvcik7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgd3JhcHBl
ZE91dGVyUHV0SW5HbG9iYWwobmV3IE9iamVjdCgpLCAic2hpbnkgdGluIHNjcmFwIik7IH0sIFR5
cGVFcnJvcik7CisKKyAgICAgICAgLy8gbXVzdCBiZSBjYWxsZWQgb24gYSBTaGFkb3dSZWFsbQor
ICAgICAgICBsZXQgbm90UmVhbG0gPSB7fTsKKyAgICAgICAgc2hvdWxkVGhyb3coCisgICAgICAg
ICAgKCkgPT4geyByZWFsbS5pbXBvcnRWYWx1ZS5jYWxsKG5vdFJlYWxtLCBpbXBvcnRQYXRoLCAi
YW5zd2VyIik7IH0sCisgICAgICAgICAgVHlwZUVycm9yLAorICAgICAgICAgIChlcnIpID0+IHsg
c2hvdWxkQmUoJC5nbG9iYWxPYmplY3RGb3IoZXJyKSwgZ2xvYmFsVGhpcyk7IH0KKyAgICAgICAg
KTsKKyAgICB9CisKKyAgICAvLyB0cmlnZ2VyIEpJVAorICAgIHsKKyAgICAgICAgZnVuY3Rpb24g
ZG9JbXBvcnQocmVhbG0sIHMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiByZWFsbS5p
bXBvcnRWYWx1ZShpbXBvcnRQYXRoLCBzKTsKKyAgICAgICAgfQorCisgICAgICAgIG5vSW5saW5l
KGRvSW1wb3J0KTsKKworICAgICAgICBsZXQgcmVhbG0gPSBuZXcgU2hhZG93UmVhbG0oKTsKKyAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgICAgICBsZXQg
cmVzdWx0ID0gYXdhaXQgZG9JbXBvcnQocmVhbG0sICJnZXRDYWxsQ291bnQiKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKHJlc3VsdCgpLCAwKTsKKyAgICAgICAgfQorICAgIH0KK30oKSkuY2F0Y2go
KGVycm9yKSA9PiB7CisgICAgcHJpbnQoU3RyaW5nKGVycm9yKSk7CisgICAgYWJvcnQoKTsKK30p
OworCit7CisgICAgc2hvdWxkQmUodHlwZW9mIFNoYWRvd1JlYWxtLnByb3RvdHlwZS5pbXBvcnRW
YWx1ZSwgImZ1bmN0aW9uIik7CisKKyAgICBsZXQgaW1wb3J0VmFsdWVOYW1lID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihTaGFkb3dSZWFsbS5wcm90b3R5cGUuaW1wb3J0VmFsdWUs
ICJuYW1lIik7CisgICAgc2hvdWxkQmUoaW1wb3J0VmFsdWVOYW1lLnZhbHVlLCAiaW1wb3J0VmFs
dWUiKTsKKyAgICBzaG91bGRCZShpbXBvcnRWYWx1ZU5hbWUuZW51bWVyYWJsZSwgZmFsc2UpOwor
ICAgIHNob3VsZEJlKGltcG9ydFZhbHVlTmFtZS53cml0YWJsZSwgZmFsc2UpOworICAgIHNob3Vs
ZEJlKGltcG9ydFZhbHVlTmFtZS5jb25maWd1cmFibGUsIHRydWUpOworCisgICAgbGV0IGltcG9y
dFZhbHVlTGVuZ3RoID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihTaGFkb3dSZWFs
bS5wcm90b3R5cGUuaW1wb3J0VmFsdWUsICJsZW5ndGgiKTsKKyAgICBzaG91bGRCZShpbXBvcnRW
YWx1ZUxlbmd0aC52YWx1ZSwgMik7CisgICAgc2hvdWxkQmUoaW1wb3J0VmFsdWVMZW5ndGguZW51
bWVyYWJsZSwgZmFsc2UpOworICAgIHNob3VsZEJlKGltcG9ydFZhbHVlTGVuZ3RoLndyaXRhYmxl
LCBmYWxzZSk7CisgICAgc2hvdWxkQmUoaW1wb3J0VmFsdWVMZW5ndGguY29uZmlndXJhYmxlLCB0
cnVlKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3NoYWRvdy1yZWFsbS5qcyBiL0pT
VGVzdHMvc3RyZXNzL3NoYWRvdy1yZWFsbS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjJiODhjNmUzOTU5OTU2
MzRkN2VkOGVmOWU5OWYyYzNmZDg4NmE1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3Mvc2hhZG93LXJlYWxtLmpzCkBAIC0wLDAgKzEsMzYgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygi
LS11c2VTaGFkb3dSZWFsbT0xIikKKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9YCk7Cit9CisKKy8vIHNo
YWRvdyByZWFsbSBzcGVjcworeworICAgIGxldCBzaGFkb3dSZWFsbVByb3AgPSBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMsICJTaGFkb3dSZWFsbSIpOworICAgIHNob3VsZEJl
KHNoYWRvd1JlYWxtUHJvcC5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoc2hhZG93
UmVhbG1Qcm9wLndyaXRhYmxlLCB0cnVlKTsKKyAgICBzaG91bGRCZShzaGFkb3dSZWFsbVByb3Au
Y29uZmlndXJhYmxlLCB0cnVlKTsKKworICAgIGxldCBzaGFkb3dSZWFsbUV2YWx1YXRlID0gT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihTaGFkb3dSZWFsbS5wcm90b3R5cGUsICJldmFs
dWF0ZSIpOworICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtRXZhbHVhdGUuZW51bWVyYWJsZSwgZmFs
c2UpOworICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtRXZhbHVhdGUud3JpdGFibGUsIHRydWUpOwor
ICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtRXZhbHVhdGUuY29uZmlndXJhYmxlLCB0cnVlKTsKKwor
ICAgIGxldCBzaGFkb3dSZWFsbUltcG9ydFZhbHVlID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihTaGFkb3dSZWFsbS5wcm90b3R5cGUsICJpbXBvcnRWYWx1ZSIpOworICAgIHNob3Vs
ZEJlKHNoYWRvd1JlYWxtSW1wb3J0VmFsdWUuZW51bWVyYWJsZSwgZmFsc2UpOworICAgIHNob3Vs
ZEJlKHNoYWRvd1JlYWxtSW1wb3J0VmFsdWUud3JpdGFibGUsIHRydWUpOworICAgIHNob3VsZEJl
KHNoYWRvd1JlYWxtSW1wb3J0VmFsdWUuY29uZmlndXJhYmxlLCB0cnVlKTsKKworICAgIGxldCBz
aGFkb3dSZWFsbU5hbWUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFNoYWRvd1Jl
YWxtLCAibmFtZSIpOworICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtTmFtZS52YWx1ZSwgIlNoYWRv
d1JlYWxtIik7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1OYW1lLmVudW1lcmFibGUsIGZhbHNl
KTsKKyAgICBzaG91bGRCZShzaGFkb3dSZWFsbU5hbWUud3JpdGFibGUsIGZhbHNlKTsKKyAgICBz
aG91bGRCZShzaGFkb3dSZWFsbU5hbWUuY29uZmlndXJhYmxlLCB0cnVlKTsKKworICAgIGxldCBz
aGFkb3dSZWFsbUxlbmd0aCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU2hhZG93
UmVhbG0sICJsZW5ndGgiKTsKKyAgICBzaG91bGRCZShzaGFkb3dSZWFsbUxlbmd0aC52YWx1ZSwg
MCk7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1MZW5ndGguZW51bWVyYWJsZSwgZmFsc2UpOwor
ICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtTGVuZ3RoLndyaXRhYmxlLCBmYWxzZSk7CisgICAgc2hv
dWxkQmUoc2hhZG93UmVhbG1MZW5ndGguY29uZmlndXJhYmxlLCB0cnVlKTsKK30KZGlmZiAtLWdp
dCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcu
eWFtbAppbmRleCA4OTA4ZGNlZGJiMzk0OTdkYzAxN2RkZGVhNmQzMzg5YjI4ZDRmZGZkLi45NjJk
NTI0NjI1MjVhZmJiMjk2ZDlhY2ZkNmQ4YTBhMTQ0ZjIwYjM0IDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBA
IC05LDYgKzksNyBAQCBmbGFnczoKICAgVGVtcG9yYWw6IHVzZVRlbXBvcmFsCiAgIGFycmF5LWZp
bmQtZnJvbS1sYXN0OiB1c2VBcnJheUZpbmRMYXN0TWV0aG9kCiAgIE9iamVjdC5oYXNPd246IHVz
ZUhhc093bgorICBTaGFkb3dSZWFsbTogdXNlU2hhZG93UmVhbG0KIHNraXA6CiAgIGZlYXR1cmVz
OgogICAgIC0gQXRvbWljcy53YWl0QXN5bmMKQEAgLTIwLDcgKzIxLDYgQEAgc2tpcDoKICAgICAt
IGpzb24tbW9kdWxlcwogICAgIC0gY2xhc3Mtc3RhdGljLWJsb2NrCiAgICAgLSBjYWxsYWJsZS1i
b3VuZGFyeS1yZWFsbXMKLSAgICAtIFNoYWRvd1JlYWxtCiAgIHBhdGhzOgogICAgIC0gdGVzdC9i
dWlsdC1pbnMvVGVtcG9yYWwvQ2FsZW5kYXIKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFs
L0luc3RhbnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441060</attachid>
            <date>2021-10-13 05:42:40 -0700</date>
            <delta_ts>2021-10-14 02:11:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230602-20211013144238.patch</filename>
            <type>text/plain</type>
            <size>85373</size>
            <attacher name="Phillip Mates">pmates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzODg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
M2MwNGU4MGUzNGNjMjQ3ZGJiMDU5YmI5Mzg1MWZhN2YxNzUzZTVkLi4yZWUxZjg1YjY0ZmU1Njk1
MzJjMzI2Y2M1YTFkMjA1M2MxN2UzM2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MSBAQAorMjAyMS0xMC0xMSAgUGhpbGxpcCBNYXRlcyAgPHBtYXRlc0BpZ2FsaWEuY29t
PgorCisgICAgICAgIHNoYWRvdyByZWFsbXMgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDYwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGF0aW9uIG9mIHRoZSBT
aGFkb3cgUmVhbG1zIHByb3Bvc2FsIChzdGFnZSAzIGluIFRDMzkpIFsxXQorCisgICAgICAgIE1h
aW4gQVBJcyBhZGRlZCBhcmUKKyAgICAgICAgIC0gYG5ldyBTaGFkb3dSZWFsbSgpYAorICAgICAg
ICAgICBjcmVhdGVzIGFuIG9iamVjdCB0aGF0IGhhcyBpdHMgb3duIGdsb2JhbCBvYmplY3QgYW5k
IG1vZHVsZSBncmFwaC4KKyAgICAgICAgIC0gU2hhZG93UmVhbG0ucHJvdG90eXBlLmV2YWx1YXRl
KHNvdXJjZVRleHQpCisgICAgICAgICAgIHRoaXMgYWxsb3dzIGZvciBldmFsdWF0aW5nIGNvZGUg
aW4gdGhlIGNvbnRleHQgb2YgdGhlIHJlYWxtLCB3aGljaAorICAgICAgICAgICBoYXMgaXRzIG93
biBtb2R1bGUgZ3JhcGggYW5kIGdsb2JhbCBvYmplY3QuCisgICAgICAgICAtIFNoYWRvd1JlYWxt
LnByb3RvdHlwZS5pbXBvcnRWYWx1ZShzcGVjaWZpZXIsIGV4cG9ydE5hbWUpCisgICAgICAgICAg
IHRoaXMgYWxsb3dzIGltcG9ydGluZyBtb2R1bGUgZXhwb3J0cyBpbiB0aGUgdGhlIGNvbnRleHQg
b2YgdGhlCisgICAgICAgICAgIHJlYWxtLCB3aGljaCBoYXMgaXRzIG93biBtb2R1bGUgZ3JhcGgg
YW5kIGdsb2JhbCBvYmplY3QuCisKKyAgICAgICAgVGhlIG1haW4gZGV0YWlsIG9mIHRoZSBTaGFk
b3cgUmVhbG0gaW1wbGVtZW50YXRpb24gaXMgdGhhdCB2YWx1ZXMKKyAgICAgICAgcGFzc2VkIGJl
dHdlZW4gcmVhbG1zIG11c3QgYmUgZWl0aGVyIHByaW1pdGl2ZXMgb3Igd3JhcHBlZCBjYWxsYWJs
ZXMuCisgICAgICAgIFdyYXBwZWQgY2FsbGFibGVzIHRoZW1zZWx2ZXMgYXJlIGNhbGxhYmxlcyB0
aGF0IGNoZWNrIHRoYXQgdGhlaXIKKyAgICAgICAgYXJndW1lbnRzIGFuZCByZXR1cm4gdmFsdWVz
IGFyZSBhbHNvIGVpdGhlciBwcmltaXRpdmVzIG9yIHdyYXBwZWQKKyAgICAgICAgY2FsbGFibGVz
LiBUaGlzIGRldGFpbCBpcyBpbXBsZW1lbnRlZCB2aWEgSlMgYnVpbHRpbnMgKyBhIGZldyBuZXcK
KyAgICAgICAgaW50cmluc2ljcy4KKworICAgICAgICBDYW4gYmUgZW5hYmxlZCB1c2luZyBgLS11
c2VTaGFkb3dSZWFsbT10cnVlYAorCisgICAgICAgIFsxXTogaHR0cHM6Ly9naXRodWIuY29tL3Rj
MzkvcHJvcG9zYWwtc2hhZG93cmVhbG0KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBidWlsdGlucy9TaGFkb3dSZWFs
bVByb3RvdHlwZS5qczogQWRkZWQuCisgICAgICAgIChnbG9iYWxQcml2YXRlLndyYXApOgorICAg
ICAgICAoZXZhbHVhdGUpOgorICAgICAgICAoaW1wb3J0VmFsdWUpOgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaDoKKyAgICAgICAgKiBieXRlY29kZS9MaW5r
VGltZUNvbnN0YW50Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNTaGFkb3dSZWFsbSk6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgICoganNj
LmNwcDoKKyAgICAgICAgKEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcGFy
c2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1l
bWJlckV4cHJlc3Npb24pOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0luZGlyZWN0
RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxl
OjpjcmVhdGVJbXBsKToKKyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6dHJ5Q3JlYXRlKToK
KyAgICAgICAgKiBydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3JlYXRlV2l0aEN1c3RvbU1ldGhvZFRh
YmxlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjpzaGFkb3dSZWFsbVByb3RvdHlwZSBjb25zdCk6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjpzaGFkb3dSZWFsbVN0cnVjdHVyZSBjb25zdCk6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuY3BwOgor
ICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1No
YWRvd1JlYWxtQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6U2hhZG93UmVh
bG1Db25zdHJ1Y3Rvcjo6U2hhZG93UmVhbG1Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OlNo
YWRvd1JlYWxtQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1NoYWRvd1JlYWxtQ29u
c3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9TaGFkb3dSZWFsbU9iamVjdC5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpTaGFkb3dSZWFsbU9iamVjdDo6U2hhZG93UmVhbG1P
YmplY3QpOgorICAgICAgICAoSlNDOjpTaGFkb3dSZWFsbU9iamVjdDo6dmlzaXRDaGlsZHJlbklt
cGwpOgorICAgICAgICAoSlNDOjpTaGFkb3dSZWFsbU9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6U2hhZG93UmVhbG1PYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL1NoYWRvd1JlYWxtT2JqZWN0Lmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvU2hhZG93
UmVhbG1Qcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6U2hhZG93UmVhbG1Qcm90
b3R5cGU6OlNoYWRvd1JlYWxtUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6U2hhZG93UmVhbG1Q
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmg6IEFk
ZGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoK
KwogMjAyMS0xMC0xMSAgR2V6YSBMb3JlICA8Z2xvcmVAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
SlNDXVszMmJpdF0gRml4IHByb2ZpbGluZyBpbiBiYXNlbGluZQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IGY0MmZkOGI2NzljY2RiYzAyMWVhYzI1MDhmZjFhNmEyZTcwYWFi
MDUuLmVhMzg2YWI0ODg4ZjVkYjI1NjdmYTA2NjFjZWM1NTkyNDhlZjNjYjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEwMyw2ICsxMDMsOCBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfT0JKRUNUX0xVVF9TT1VSQ0VTCiAgICAgcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3Bw
CiAgICAgcnVudGltZS9SZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50
aW1lL1NldFByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL1NoYWRvd1JlYWxtT2JqZWN0LmNwcAor
ICAgIHJ1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9TdHJpbmdD
b25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKICAgICBydW50
aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcApAQCAtMzczLDYgKzM3NSw3IEBAIHNldChKYXZhU2Ny
aXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0
aW5zL1JlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L2J1aWx0aW5zL1NldEl0ZXJhdG9yUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2J1aWx0aW5zL1NldFByb3RvdHlwZS5qcworICAgICR7SkFWQVNDUklQVENPUkVf
RElSfS9idWlsdGlucy9TaGFkb3dSZWFsbVByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENP
UkVfRElSfS9idWlsdGlucy9TdHJpbmdDb25zdHJ1Y3Rvci5qcwogICAgICR7SkFWQVNDUklQVENP
UkVfRElSfS9idWlsdGlucy9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5qcwogICAgICR7SkFWQVND
UklQVENPUkVfRElSfS9idWlsdGlucy9TdHJpbmdQcm90b3R5cGUuanMKQEAgLTExNTYsNiArMTE1
OSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
cnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmgKICAgICBydW50aW1lL1NjcmlwdEZldGNoUGFyYW1l
dGVycy5oCiAgICAgcnVudGltZS9TY3JpcHRGZXRjaGVyLmgKKyAgICBydW50aW1lL1NoYWRvd1Jl
YWxtT2JqZWN0LmgKICAgICBydW50aW1lL1Nsb3dQYXRoRnVuY3Rpb24uaAogICAgIHJ1bnRpbWUv
U2xvd1BhdGhSZXR1cm5UeXBlLmgKICAgICBydW50aW1lL1NtYWxsU3RyaW5ncy5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDc4OTc1NmYxMGY4YmRiODBj
NTJmNGJlOTgwZjUzZjQ5MmEyZDFkNGIuLjY1YjczN2FjMTQwMGZmNTM3YjI3ZTMwOTI2YzFhZjEy
MDMyNjI3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBA
IC0xMjIsNiArMTIyLDcgQEAgSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKICAg
ICAke0phdmFTY3JpcHRDb3JlfS9idWlsdGlucy9SZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlw
ZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvU2V0SXRlcmF0b3JQcm90b3R5
cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1NldFByb3RvdHlwZS5qcyBc
CisgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvU2hhZG93UmVhbG1Qcm90b3R5cGUuanMg
XAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1N0cmluZ0NvbnN0cnVjdG9yLmpzIFwK
ICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5q
cyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvU3RyaW5nUHJvdG90eXBlLmpzIFwK
QEAgLTE4Nyw2ICsxODgsNyBAQCBPQkpFQ1RfTFVUX0hFQURFUlMgPSBcCiAgICAgUmVmbGVjdE9i
amVjdC5sdXQuaCBcCiAgICAgUmVnRXhwQ29uc3RydWN0b3IubHV0LmggXAogICAgIFNldFByb3Rv
dHlwZS5sdXQuaCBcCisgICAgU2hhZG93UmVhbG1Qcm90b3R5cGUubHV0LmggXAogICAgIFN0cmlu
Z0NvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBTdHJpbmdQcm90b3R5cGUubHV0LmggXAogICAgIFN5
bWJvbENvbnN0cnVjdG9yLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NzU4Yjg2YmU0YTFmOTVkMzRlOWRjYTE5ODRhYmFmNjAzMGU5YjVlYi4uMGI5YTIzMGU2YjkyMWNm
ZmZhNDQ2MDVlZGM0YmFkZjMzMDkxMzBiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEyNjIsNiArMTI2Miw5IEBACiAJCTg2MDE2MUUzMEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NjAxNjFERjBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTg2MDE2MUU1MEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxRTEwRjNBODND
MTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODYwMTYxRTYwRjNBODNDMTAwRjg0NzEwIC8q
IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NjAxNjFFMjBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJs
ZXJYODZDb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk4NjAyOTYwMjI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Db25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMjk1
RkMyNkZCNTUyQzAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtQ29uc3RydWN0b3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NjAyOTYwNDI2RkI1NTJE
MDA3OEVCNjIgLyogU2hhZG93UmVhbG1PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDI5NUZFMjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dS
ZWFsbU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTg2MDI5NjA1MjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbVByb3RvdHlwZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMjk1RkYy
NkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODYwNkRERUExOERBNDRBQjAwQTM4
M0QwIC8qIElkZW50aWZpZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NjA2RERFOTE4REE0NEFCMDBBMzgzRDAgLyogSWRlbnRpZmllcklu
bGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk4NjBCRDgwMTE0OEVBNkYyMDAxMTJCMkYgLyogSW50cmluc2ljLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJGNjQyQTE0OERCMkI1MDA0REUzNkEg
LyogSW50cmluc2ljLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJODYxMkU0Q0QxNTIzODlFQzAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjEyRTRDQjE1MjI5MTg0
MDBDODM2QkUgLyogTWF0Y2hSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtNDI0MCw2ICs0MjQzLDEyIEBACiAJCTg2MDE2MURGMEYzQTgz
QzEwMEY4NDcxMCAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVy
WDg2XzY0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVy
WDg2XzY0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2MDE2MUUyMEYzQTgzQzEw
MEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4NjAyOTVGQTI2RkI1NTJDMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Qcm90
b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhZG93UmVh
bG1Qcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjAyOTVGQjI2
RkI1NTJDMDA3OEVCNjIgLyogU2hhZG93UmVhbG1PYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2hhZG93UmVhbG1PYmplY3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4NjAyOTVGQzI2RkI1NTJDMDA3OEVCNjIgLyogU2hhZG93UmVhbG1D
b25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkb3dSZWFs
bUNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MDI5NUZEMjZG
QjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYWRvd1JlYWxtQ29uc3RydWN0b3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjAyOTVGRTI2RkI1NTJEMDA3OEVCNjIgLyogU2hh
ZG93UmVhbG1PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhZG93
UmVhbG1PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYwMjk1RkYyNkZC
NTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNoYWRvd1JlYWxtUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTg2MDRGNEYyMTQzQTZDNDQwMEIyOTVGNSAvKiBDaGFuZ2VMb2cgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBsaW5lRW5k
aW5nID0gMDsgcGF0aCA9IENoYW5nZUxvZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODYwNkRERTkxOERBNDRBQjAwQTM4M0QwIC8qIElkZW50aWZpZXJJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElkZW50aWZpZXJJbmxpbmVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTg2MTJFNENCMTUyMjkxODQwMEM4MzZCRSAvKiBNYXRjaFJlc3Vs
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRjaFJlc3VsdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzk5MSw2ICs4MDAwLDEyIEBACiAJCQkJQTc5MERE
NjgxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggKi8sCiAJCQkJQTcy
OTlEOUYxN0QxMjg0ODAwNUY1RkY5IC8qIFNldFByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQTcyOTlE
QTAxN0QxMjg0ODAwNUY1RkY5IC8qIFNldFByb3RvdHlwZS5oICovLAorCQkJCTg2MDI5NUZEMjZG
QjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQk4NjAy
OTVGQzI2RkI1NTJDMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5oICovLAorCQkJ
CTg2MDI5NUZCMjZGQjU1MkMwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbU9iamVjdC5jcHAgKi8sCisJ
CQkJODYwMjk1RkUyNkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtT2JqZWN0LmggKi8sCisJ
CQkJODYwMjk1RkEyNkZCNTUyQzAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtUHJvdG90eXBlLmNwcCAq
LywKKwkJCQk4NjAyOTVGRjI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Qcm90b3R5cGUu
aCAqLywKIAkJCQkwRjJCNjZENjE3QjZCNUFCMDBBN0FFM0YgLyogU2ltcGxlVHlwZWRBcnJheUNv
bnRyb2xsZXIuY3BwICovLAogCQkJCTBGMkI2NkQ3MTdCNkI1QUIwMEE3QUUzRiAvKiBTaW1wbGVU
eXBlZEFycmF5Q29udHJvbGxlci5oICovLAogCQkJCUZFOEMwMzExMjY0QTY5MTAwMDFBNDRBRCAv
KiBTbG93UGF0aEZ1bmN0aW9uLmggKi8sCkBAIC0xMDcxMiw2ICsxMDcyNyw5IEBACiAJCQkJMEZF
RTk4NDExQTg4NjVCNzAwNzU0RTkzIC8qIFNldHVwVmFyYXJnc0ZyYW1lLmggaW4gSGVhZGVycyAq
LywKIAkJCQlEQzE3RTgxODFDOUM5MUQ5MDA4QTZBQjMgLyogU2hhZG93Q2hpY2tlbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJREMxN0U4MTkxQzlDOTFEQjAwOEE2QUIzIC8qIFNoYWRvd0NoaWNrZW5J
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NjAyOTYwMjI2RkI1NTJEMDA3OEVCNjIgLyog
U2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODYwMjk2MDQyNkZC
NTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4
NjAyOTYwNTI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Qcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZFMzAyMkQzMUUzRDczQTUwMEJBQzQ5MyAvKiBTaWdpbGxDcmFzaEFuYWx5
emVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjREOEM3ODFGQ0EzQ0ZBMDAxRDMyQUMgLyogU2lt
cGxlTWFya2luZ0NvbnN0cmFpbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzA1MTdCNkI1
QUIwMEE3QUUzRiAvKiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggZjA0NDUxZDAzOGRiMzBjNzUxZjQ2YTlh
NGQ3NDg2M2NiNmIyZDg1NS4uZTBlMjNhMmYzNmMxMjVlOTY3ZjBlZmE1YzRkOWI5OGRhODhjZWMx
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtOTcwLDYgKzk3MCw5IEBAIHJ1bnRp
bWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwCiBydW50aW1l
L1Byb3h5UmV2b2tlLmNwcAogcnVudGltZS9SYW5kb21pemluZ0Z1enplckFnZW50LmNwcAorcnVu
dGltZS9TaGFkb3dSZWFsbU9iamVjdC5jcHAKK3J1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rv
ci5jcHAKK3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuY3BwCiBydW50aW1lL1JlZmxlY3RP
YmplY3QuY3BwCiBydW50aW1lL1JlZ0V4cC5jcHAKIHJ1bnRpbWUvUmVnRXhwQ2FjaGUuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggMjli
YzNhZTAxMDQxMzBlNTFlYTJlMDlhZTM3ZDQwYmYwMjExMzE1YS4uY2VkMzBhOGVhOGY3MWY3YTAy
YTYyZWI0MmI1ZTE1NzY2Mjg5ZGEzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9CdWlsdGluTmFtZXMuaApAQCAtNjIsNiArNjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBtYWNybyhOdW1iZXIpIFwKICAgICBtYWNybyhBcnJheSkgXAogICAgIG1hY3JvKEFycmF5QnVm
ZmVyKSBcCisgICAgbWFjcm8oU2hhZG93UmVhbG0pIFwKICAgICBtYWNybyhSZWdFeHApIFwKICAg
ICBtYWNybyhtaW4pIFwKICAgICBtYWNybyh0cnVuYykgXApAQCAtMTE1LDYgKzExNiw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIG1hY3JvKGFzeW5jR2VuZXJhdG9yUXVldWVJdGVtTmV4dCkgXAog
ICAgIG1hY3JvKGRhdGVUaW1lRm9ybWF0KSBcCiAgICAgbWFjcm8odGhpcykgXAorICAgIG1hY3Jv
KGltcG9ydEluUmVhbG0pIFwKKyAgICBtYWNybyhldmFsSW5SZWFsbSkgXAogICAgIG1hY3JvKHRo
aXNUaW1lVmFsdWUpIFwKICAgICBtYWNybyhuZXdUYXJnZXRMb2NhbCkgXAogICAgIG1hY3JvKGRl
cml2ZWRDb25zdHJ1Y3RvcikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL1NoYWRvd1JlYWxtUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL1NoYWRvd1JlYWxtUHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjMDAzNTk3ZWY2MDgz
NGNhMGI3YWUwMDBjMDNmNTJhODRkZWY0YTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvU2hhZG93UmVhbG1Qcm90b3R5cGUuanMKQEAgLTAsMCArMSw4
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitA
Z2xvYmFsUHJpdmF0ZQorZnVuY3Rpb24gd3JhcCh0YXJnZXQpCit7CisgICAgInVzZSBzdHJpY3Qi
OworCisgICAgaWYgKEBpc0NhbGxhYmxlKHRhcmdldCkpIHsKKyAgICAgICAgdmFyIHdyYXBwZWQg
PSBmdW5jdGlvbigvKiBhcmdzLi4uICovKSB7CisgICAgICAgICAgICB2YXIgbGVuZ3RoID0gYXJn
dW1lbnRzLmxlbmd0aDsKKyAgICAgICAgICAgIHZhciB3cmFwcGVkQXJncyA9IEBuZXdBcnJheVdp
dGhTaXplKGxlbmd0aCk7CisgICAgICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwg
bGVuZ3RoOyArK2luZGV4KQorICAgICAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdCh3cmFwcGVk
QXJncywgaW5kZXgsIEB3cmFwKGFyZ3VtZW50c1tpbmRleF0pKTsKKworICAgICAgICAgICAgdmFy
IHJlc3VsdCA9IHRhcmdldC5AYXBwbHkoQHVuZGVmaW5lZCwgd3JhcHBlZEFyZ3MpOworICAgICAg
ICAgICAgcmV0dXJuIEB3cmFwKHJlc3VsdCk7CisgICAgICAgIH07CisgICAgICAgIGRlbGV0ZSB3
cmFwcGVkWyduYW1lJ107CisgICAgICAgIGRlbGV0ZSB3cmFwcGVkWydsZW5ndGgnXTsKKyAgICAg
ICAgcmV0dXJuIHdyYXBwZWQ7CisgICAgfSBlbHNlIGlmIChAaXNPYmplY3QodGFyZ2V0KSkgewor
ICAgICAgICBAdGhyb3dUeXBlRXJyb3IoInZhbHVlIHBhc3NpbmcgYmV0d2VlbiByZWFsbXMgbXVz
dCBiZSBjYWxsYWJsZSBvciBwcmltaXRpdmUiKTsKKyAgICB9CisgICAgcmV0dXJuIHRhcmdldDsK
K30KKworZnVuY3Rpb24gZXZhbHVhdGUoc291cmNlVGV4dCkKK3sKKyAgICAidXNlIHN0cmljdCI7
CisKKyAgICBpZiAoIUBpc1NoYWRvd1JlYWxtKHRoaXMpKQorICAgICAgICBAdGhyb3dUeXBlRXJy
b3IoImAlU2hhZG93UmVhbG0lLmV2YWx1YXRlIHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIGEgU2hh
ZG93UmVhbG0gaW5zdGFuY2UiKTsKKworICAgIGlmICh0eXBlb2Ygc291cmNlVGV4dCAhPT0gJ3N0
cmluZycpCisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiYCVTaGFkb3dSZWFsbSUuZXZhbHVhdGUg
cmVxdWlyZXMgdGhhdCB0aGUgfHNvdXJjZVRleHR8IGFyZ3VtZW50IGJlIGEgc3RyaW5nIik7CisK
KyAgICB2YXIgcmVzdWx0ID0gQGV2YWxJblJlYWxtKHRoaXMsIHNvdXJjZVRleHQpCisgICAgcmV0
dXJuIEB3cmFwKHJlc3VsdCk7Cit9CisKK2Z1bmN0aW9uIGltcG9ydFZhbHVlKHNwZWNpZmllciwg
ZXhwb3J0TmFtZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIUBpc1NoYWRvd1Jl
YWxtKHRoaXMpKQorICAgICAgICBAdGhyb3dUeXBlRXJyb3IoImAlU2hhZG93UmVhbG0lLmltcG9y
dFZhbHVlIHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIGEgU2hhZG93UmVhbG0gaW5zdGFuY2UiKTsK
KworICAgIHZhciBleHBvcnROYW1lU3RyaW5nID0gQHRvU3RyaW5nKGV4cG9ydE5hbWUpOworICAg
IHZhciBzcGVjaWZpZXJTdHJpbmcgPSBAdG9TdHJpbmcoc3BlY2lmaWVyKTsKKworICAgIHZhciBs
b29rdXBCaW5kaW5nID0gKG1vZHVsZSkgPT4geworICAgICAgICB2YXIgbG9va3VwID0gbW9kdWxl
W2V4cG9ydE5hbWVTdHJpbmddCisgICAgICAgIGlmIChsb29rdXAgPT09IEB1bmRlZmluZWQpCisg
ICAgICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIiVTaGFkb3dSZWFsbSUuaW1wb3J0VmFsdWUgcmVx
dWlyZXMgfGV4cG9ydE5hbWV8IHRvIGV4aXN0IGluIHRoZSB8c3BlY2lmaWVyfCIpOworCisgICAg
ICAgIHJldHVybiBAd3JhcChsb29rdXApOworICAgIH07CisKKyAgICB2YXIgY3Jvc3NSZWFsbVRo
cm93ID0gKGVycm9yKSA9PiB7CisgICAgICAgIC8vIHJlLXRocm93IGJlY2F1c2UgaW1wb3J0IGlz
c3VlcyByYWlzZSBlcnJvcnMgdXNpbmcgdGhlIHJlYWxtJ3MgZ2xvYmFsIG9iamVjdAorICAgICAg
ICBAdGhyb3dUeXBlRXJyb3IoQHRvU3RyaW5nKGVycm9yKSk7CisgICAgfTsKKworICAgIHJldHVy
biBAaW1wb3J0SW5SZWFsbSh0aGlzLCBzcGVjaWZpZXJTdHJpbmcpLkB0aGVuKGxvb2t1cEJpbmRp
bmcsIGNyb3NzUmVhbG1UaHJvdyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAppbmRleCA4NTU1OTc3
ODY3MDcyZjJmZmY2N2E2NTU5YWNkOWE0NTRkNTJkMjc3Li5iMzJjY2RhZjQzYTY2MmM4Nzc5NTU4
MDdmNmQ0MWYxMjU5MTk0ZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKQEAgLTY2LDYgKzY2LDcg
QEAgZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IDogaW50MzJfdDsKICAgICBtYWNybyhpc1Jl
Z0V4cE9iamVjdCkgXAogICAgIG1hY3JvKGlzTWFwKSBcCiAgICAgbWFjcm8oaXNTZXQpIFwKKyAg
ICBtYWNybyhpc1NoYWRvd1JlYWxtKSBcCiAgICAgbWFjcm8oaXNTdHJpbmdJdGVyYXRvcikgXAog
ICAgIG1hY3JvKGlzQXJyYXlJdGVyYXRvcikgXAogICAgIG1hY3JvKGlzTWFwSXRlcmF0b3IpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0
YW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5o
CmluZGV4IGJmYmFkMmE1MmYxNjRhNGM1ZjVlOTc3YTQyY2JjYzhiOWVhN2EyOTQuLjFlNTIzOGRk
ZjJkYmQwNjZiZTI2ZmEyMGFmZTM3YzliNzRlMGZmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaApAQCAtNzgsNiArNzgsOCBAQCBj
bGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICB2KGhvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlciwg
bnVsbHB0cikgXAogICAgIHYoU2V0LCBudWxscHRyKSBcCiAgICAgdih0aGlzVGltZVZhbHVlLCBu
dWxscHRyKSBcCisgICAgdihpbXBvcnRJblJlYWxtLCBudWxscHRyKSBcCisgICAgdihldmFsSW5S
ZWFsbSwgbnVsbHB0cikgXAogICAgIHYoaXNDb25zdHJ1Y3RvciwgbnVsbHB0cikgXAogICAgIHYo
c2FtZVZhbHVlLCBudWxscHRyKSBcCiAgICAgdihyZWdFeHBQcm90b0ZsYWdzR2V0dGVyLCBudWxs
cHRyKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMjc3YjE1NTI4ZDFlODBjNzY3NmJlYzUxMWY3NzYxZTU1
YjdmOTM1OC4uZjM3NWE3OGUzMDNlNTIxYWE4MDk1MWZhMjhlZGY3ZmI3MmE3ZjVhNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaApAQCAtODg1LDYgKzg4NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0SXNSZWdFeHBPYmplY3QoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBz
cmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgUmVnRXhwT2JqZWN0VHlw
ZSk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzTWFwKFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTTWFw
VHlwZSk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzU2V0KFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpT
U2V0VHlwZSk7IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzU2hhZG93UmVhbG0oUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShk
c3QsIHNyYywgU2hhZG93UmVhbG1UeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNT
dHJpbmdJdGVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4g
ZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU1N0cmluZ0l0ZXJhdG9yVHlwZSk7IH0KICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdElzQXJyYXlJdGVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU0Fy
cmF5SXRlcmF0b3JUeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNNYXBJdGVyYXRv
cihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdp
dGhUeXBlKGRzdCwgc3JjLCBKU01hcEl0ZXJhdG9yVHlwZSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAxNTg4MGU2
YmU2MTZiZjJhNDVjZDNiNjdjYzdkNzkzYjY3ZDU1MjFiLi5mZWRmMjlhZTEwYzk5NmJkYmRmN2Zk
Y2Q0NjYxOTM2ZTY4MGQxNjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0xODk0LDYgKzE4OTQsNyBAQCBDUkVBVEVf
SU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSyhpc1Byb21pc2UsIElzUHJvbWlzZSkKIENSRUFURV9J
TlRSSU5TSUNfRk9SX0JSQU5EX0NIRUNLKGlzUmVnRXhwT2JqZWN0LCBJc1JlZ0V4cE9iamVjdCkK
IENSRUFURV9JTlRSSU5TSUNfRk9SX0JSQU5EX0NIRUNLKGlzTWFwLCBJc01hcCkKIENSRUFURV9J
TlRSSU5TSUNfRk9SX0JSQU5EX0NIRUNLKGlzU2V0LCBJc1NldCkKK0NSRUFURV9JTlRSSU5TSUNf
Rk9SX0JSQU5EX0NIRUNLKGlzU2hhZG93UmVhbG0sIElzU2hhZG93UmVhbG0pCiBDUkVBVEVfSU5U
UklOU0lDX0ZPUl9CUkFORF9DSEVDSyhpc1N0cmluZ0l0ZXJhdG9yLCBJc1N0cmluZ0l0ZXJhdG9y
KQogQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0soaXNBcnJheUl0ZXJhdG9yLCBJc0Fy
cmF5SXRlcmF0b3IpCiBDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSyhpc01hcEl0ZXJh
dG9yLCBJc01hcEl0ZXJhdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA5OWQ3YjZmZmJjY2Q2
NjA5NzUwOTE0NmJlY2QxOTkxZjNmN2Y3OTRiLi4yNDAyNTcyYjk1NTk5NTRkYjQ0NWI2YmZiZDE2
NWQyYzc3MmM5ZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMzY0LDYgKzM2NCw3IEBAIHN0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyQ3JlYXRlUmVhbG0p
Owogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJFdmFsU2Ny
aXB0KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyR0Mp
Owogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJDbGVhcktl
cHRPYmplY3RzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9s
bGFyR2xvYmFsT2JqZWN0Rm9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1
bmN0aW9uRG9sbGFyQWdlbnRTdGFydCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
TihmdW5jdGlvbkRvbGxhckFnZW50UmVjZWl2ZUJyb2FkY2FzdCk7CiBzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckFnZW50UmVwb3J0KTsKQEAgLTY0Niw2ICs2
NDcsNyBAQCBwcml2YXRlOgogICAgICAgICBhZGRGdW5jdGlvbih2bSwgZG9sbGFyLCAiZXZhbFNj
cmlwdCIsIGZ1bmN0aW9uRG9sbGFyRXZhbFNjcmlwdCwgMSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCBkb2xs
YXIsICJnYyIsIGZ1bmN0aW9uRG9sbGFyR0MsIDAsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgZG9sbGFyLCAi
Y2xlYXJLZXB0T2JqZWN0cyIsIGZ1bmN0aW9uRG9sbGFyQ2xlYXJLZXB0T2JqZWN0cywgMCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CisgICAgICAgIGFk
ZEZ1bmN0aW9uKHZtLCBkb2xsYXIsICJnbG9iYWxPYmplY3RGb3IiLCBmdW5jdGlvbkRvbGxhckds
b2JhbE9iamVjdEZvciwgMSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpOb25lKSk7CiAgICAgICAgIAogICAgICAgICBkb2xsYXItPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImdsb2JhbCIpLCBnbG9iYWxUaGlzKCkpOwogICAgICAgICBk
b2xsYXItPnB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiSXNIVE1MRERBIiksCkBAIC0yMDY2LDYgKzIwNjgsMjAgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyQ2xlYXJLZXB0T2JqZWN0cywgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
CitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJHbG9iYWxPYmplY3RGb3Is
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQo
KSA8IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiTm90IGVub3VnaCBh
cmd1bWVudHMiX3MpKSk7CisgICAgSlNWYWx1ZSBhcmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
OworICAgIGlmIChhcmcuaXNDZWxsKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
YXJnLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsVGhpcygp
KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckFnZW50U3RhcnQsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCmluZGV4IDFlMmU3ZTE2N2ZlNzNjNmY1ZDA3MmMwZTllNTU1NDI2NWVkNGVjNmUuLmZl
M2Y5OWVkNzk5MzkyODI5ZmZiOWZmNjY2M2NlMWQ3YjE3NWZlNjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTUwOTYsNyArNTA5Niw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
TWVtYmVyRXhwcmVzCiAgICAgICAgICAgICBuZXdDb3VudC0tOwogICAgICAgICAgICAgbmV4dCgp
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChJREVOVCks
ICJcIm5ldy5cIiBjYW4gb25seSBmb2xsb3dlZCB3aXRoIHRhcmdldCIpOworICAgICAgICAgICAg
ZmFpbElmVHJ1ZShtYXRjaChJREVOVCksICJcIm5ldy5cIiBjYW4gb25seSBiZSBmb2xsb3dlZCB3
aXRoIHRhcmdldCIpOwogICAgICAgICAgICAgZmFpbER1ZVRvVW5leHBlY3RlZFRva2VuKCk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC01MTMxLDcgKzUxMzEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4
cHJlcwogICAgICAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZUltcG9ydE1ldGFFeHBy
KGxvY2F0aW9uLCBjcmVhdGVSZXNvbHZlQW5kVXNlVmFyaWFibGUoY29udGV4dCwgJm1fdm0ucHJv
cGVydHlOYW1lcy0+bWV0YVByaXZhdGVOYW1lLCBmYWxzZSwgZXhwcmVzc2lvblN0YXJ0LCBsb2Nh
dGlvbikpOwogICAgICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChJREVOVCksICJcImltcG9ydC5cIiBjYW4g
b25seSBmb2xsb3dlZCB3aXRoIG1ldGEiKTsKKyAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKG1h
dGNoKElERU5UKSwgIlwiaW1wb3J0LlwiIGNhbiBvbmx5IGJlIGZvbGxvd2VkIHdpdGggbWV0YSIp
OwogICAgICAgICAgICAgICAgIGZhaWxEdWVUb1VuZXhwZWN0ZWRUb2tlbigpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggNDBjMTU5ZThkN2M1NDA0OWZkOThjOGE2NjY4
YTY0YThkZjRlYTM2NC4uNzgyOGQwMDhhODUzNDYxZTQ4ZTM2ZDJmYmVhNjFjNzA5NTc2ZGRhZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oCkBAIC01Miw2ICs1Miw3IEBACiAgICAgbWFjcm8oT2JqZWN0KSBcCiAgICAgbWFjcm8oUGx1
cmFsUnVsZXMpIFwKICAgICBtYWNybyhQcm9taXNlKSBcCisgICAgbWFjcm8oU2hhZG93UmVhbG0p
IFwKICAgICBtYWNybyhSZWZsZWN0KSBcCiAgICAgbWFjcm8oUmVnRXhwKSBcCiAgICAgbWFjcm8o
UmVsYXRpdmVUaW1lRm9ybWF0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCmluZGV4IGU0ZmY2MWNiZmIxOWY2
NjQ5ZWM1OGYwMmVjY2Y2N2YxODJiMDU2NjAuLjRiMzIyZTU2YTFjNzFkNzNmNzNiNTBjMzNjYjEw
ZWU5YmM0MWI2ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
ZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC0zNCw3ICszNCw5IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCi1JbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRh
YmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCisK
K3RlbXBsYXRlPHR5cGVuYW1lIEVycm9ySGFuZGxlckZ1bmN0b3I+CitpbmxpbmUgSW5kaXJlY3RF
dmFsRXhlY3V0YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlSW1wbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIERlcml2ZWRD
b250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgRXJyb3JIYW5kbGVyRnVuY3RvciBl
cnJvckhhbmRsZXIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTUwLDcgKzUyLDcgQEAgSW5k
aXJlY3RFdmFsRXhlY3V0YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmoKIAogICAgIFBhcnNlckVycm9yIGVycm9yOwogICAgIE9wdGlv
blNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSA9IGdsb2JhbE9iamVj
dC0+ZGVmYXVsdENvZGVHZW5lcmF0aW9uTW9kZSgpOwotICAgIAorCiAgICAgVW5saW5rZWRFdmFs
Q29kZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gdm0uY29kZUNhY2hlKCktPmdldFVubGlua2Vk
RXZhbENvZGVCbG9jaygKICAgICAgICAgdm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJj
ZSgpLCBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgY29kZUdlbmVyYXRpb25Nb2RlLCBl
cnJvciwgZXZhbENvbnRleHRUeXBlKTsKIApAQCAtNTgsNyArNjAsOCBAQCBJbmRpcmVjdEV2YWxF
eGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iagogICAgICAgICBnbG9iYWxPYmplY3QtPmRlYnVnZ2VyKCktPnNvdXJjZVBhcnNl
ZChnbG9iYWxPYmplY3QsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVyKCksIGVycm9yLmxp
bmUoKSwgZXJyb3IubWVzc2FnZSgpKTsKIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpIHsKLSAg
ICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yLnRvRXJyb3JPYmpl
Y3QoZ2xvYmFsT2JqZWN0LCBleGVjdXRhYmxlLT5zb3VyY2UoKSkpOworICAgICAgICBlcnJvckhh
bmRsZXIoZXhlY3V0YWJsZS0+c291cmNlKCksICZlcnJvcik7CisgICAgICAgIHNjb3BlLnJlbGVh
c2UoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC02Nyw2ICs3MCwyNCBA
QCBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIHJldHVybiBleGVjdXRhYmxlOwogfQogCitJ
bmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJp
dmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIE5ha2VkUHRyPEpTT2JqZWN0
PiYgcmVzdWx0aW5nRXJyb3IpCit7CisgICAgYXV0byBoYW5kbGVFcnJvciA9IFsmXShjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yKiBlcnJvcikgeworICAgICAgICByZXN1bHRp
bmdFcnJvciA9IGVycm9yLT50b0Vycm9yT2JqZWN0KGdsb2JhbE9iamVjdCwgc291cmNlKTsKKyAg
ICB9OworICAgIHJldHVybiBjcmVhdGVJbXBsKGdsb2JhbE9iamVjdCwgc291cmNlLCBkZXJpdmVk
Q29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlwZSwgaGFu
ZGxlRXJyb3IpOworfQorCitJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVj
dXRhYmxlOjp0cnlDcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBi
b29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5
cGUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gaGFuZGxl
RXJyb3IgPSBbJl0oY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciogZXJyb3Ip
IHsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgICAg
ICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3ItPnRvRXJyb3JPYmplY3Qo
Z2xvYmFsT2JqZWN0LCBzb3VyY2UpKTsKKyAgICB9OworICAgIHJldHVybiBjcmVhdGVJbXBsKGds
b2JhbE9iamVjdCwgc291cmNlLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQsIGV2YWxDb250ZXh0VHlwZSwgaGFuZGxlRXJyb3IpOworfQorCiBjb25zdGV4cHIgYm9v
bCBpblN0cmljdENvbnRleHQgPSBmYWxzZTsKIGNvbnN0ZXhwciBib29sIGluc2lkZU9yZGluYXJ5
RnVuY3Rpb24gPSBmYWxzZTsKIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OkluZGlyZWN0RXZhbEV4
ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRh
YmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRh
YmxlLmgKaW5kZXggNDk4YjVjODcwOThhYjM3NDc5N2EyNWJmNDgxNjM3Y2ZiYjkyZWRmNS4uMzcw
NGIyNDY4YTRjYWI0NmQ3OWM1MzM1ZmQ3MTIwMWE0NmFiM2Y0YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaApAQCAt
MzEsOCArMzEsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEluZGlyZWN0RXZhbEV4ZWN1
dGFibGUgZmluYWwgOiBwdWJsaWMgRXZhbEV4ZWN1dGFibGUgewogcHVibGljOgotICAgIHN0YXRp
YyBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBT
b3VyY2VDb2RlJiwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQsIEV2YWxDb250ZXh0VHlwZSk7CisgICAgc3RhdGljIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUq
IHRyeUNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJpdmVkQ29u
dGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlKTsK
KyAgICBzdGF0aWMgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0
KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVu
Y3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUsIE5ha2VkUHRyPEpTT2JqZWN0PiYpOwogcHJp
dmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFcnJvckhhbmRsZXJGdW5jdG9yPgorICAgIGlu
bGluZSBzdGF0aWMgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogY3JlYXRlSW1wbChKU0dsb2JhbE9i
amVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlLCBFcnJvckhhbmRsZXJGdW5jdG9yKTsK
KwogICAgIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQs
IEV2YWxDb250ZXh0VHlwZSk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggZTBjZWI0YmUwMjMxNTBjZTVhOTRkYjhhODhi
Y2Q2ZDFjMGZlZWUzNC4uNzRmZjM2ZDZiOWYyYjkxNjM0Nzc3MGNlZWUyOTFlODhiN2IzYTllYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cApAQCAtMTk2LDYgKzE5Niw5IEBACiAjaW5jbHVkZSAiU2V0Q29uc3RydWN0b3IuaCIKICNpbmNs
dWRlICJTZXRJdGVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlNldFByb3RvdHlwZS5oIgor
I2luY2x1ZGUgIlNoYWRvd1JlYWxtQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJTaGFkb3dSZWFs
bU9iamVjdC5oIgorI2luY2x1ZGUgIlNoYWRvd1JlYWxtUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAi
U3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKICNpbmNsdWRlICJTdHJpbmdDb25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIlN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgiCkBAIC05MjQsNiArOTI3LDkgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IE51bWJlck9mQXJyYXlJbmRleGluZ01vZGVzOyArK2kpCiAgICAgICAgIG1fYXJyYXlT
dHJ1Y3R1cmVGb3JJbmRleGluZ1NoYXBlRHVyaW5nQWxsb2NhdGlvbltpXSA9IG1fb3JpZ2luYWxB
cnJheVN0cnVjdHVyZUZvckluZGV4aW5nU2hhcGVbaV07CiAKKyAgICBtX3NoYWRvd1JlYWxtUHJv
dG90eXBlLnNldCh2bSwgdGhpcywgU2hhZG93UmVhbG1Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgU2hh
ZG93UmVhbG1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90
b3R5cGUuZ2V0KCkpKSk7CisgICAgbV9zaGFkb3dSZWFsbU9iamVjdFN0cnVjdHVyZS5zZXQodm0s
IHRoaXMsIFNoYWRvd1JlYWxtT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fc2hh
ZG93UmVhbG1Qcm90b3R5cGUuZ2V0KCkpKTsKKwogICAgIG1fcmVnRXhwUHJvdG90eXBlLnNldCh2
bSwgdGhpcywgUmVnRXhwUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIFJlZ0V4cFByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsK
ICAgICBtX3JlZ0V4cFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFJlZ0V4cE9iamVjdDo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fcmVn
RXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLnNldCh2bSwgdGhpcywgY3JlYXRlUmVnRXhwTWF0Y2hl
c0FycmF5U3RydWN0dXJlKHZtLCB0aGlzKSk7CkBAIC0xMDMwLDcgKzEwMzYsMTAgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgQXJyYXlDb25zdHJ1Y3RvciogYXJyYXlD
b25zdHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgQXJyYXlDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdl
dCgpKSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLmdldCgp
KTsKICAgICBtX2FycmF5Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBhcnJheUNvbnN0cnVjdG9y
KTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGlt
ZUNvbnN0YW50OjpBcnJheSldLnNldCh2bSwgdGhpcywgYXJyYXlDb25zdHJ1Y3Rvcik7Ci0gICAg
CisKKyAgICBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKiBzaGFkb3dSZWFsbUNvbnN0cnVjdG9yID0g
U2hhZG93UmVhbG1Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBTaGFkb3dSZWFsbUNvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBt
X3NoYWRvd1JlYWxtUHJvdG90eXBlLmdldCgpLCBtX3NwZWNpZXNHZXR0ZXJTZXR0ZXIuZ2V0KCkp
OworICAgIG1fc2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIHNoYWRvd1JlYWxt
Q29uc3RydWN0b3IpOworCiAgICAgUmVnRXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9y
ID0gUmVnRXhwQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgUmVnRXhwQ29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fcmVnRXhw
UHJvdG90eXBlLmdldCgpLCBtX3NwZWNpZXNHZXR0ZXJTZXR0ZXIuZ2V0KCkpOwogICAgIG1fcmVn
RXhwQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCByZWdFeHBDb25zdHJ1Y3Rvcik7CiAgICAgbV9s
aW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6
UmVnRXhwKV0uc2V0KHZtLCB0aGlzLCByZWdFeHBDb25zdHJ1Y3Rvcik7CkBAIC0xMTEwLDYgKzEx
MTksNyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVj
dG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUt
PnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1
Y3RvciwgZnVuY3Rpb25Db25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIG1fYXJyYXlQcm90b3R5cGUtPnB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgYXJyYXlD
b25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOwogICAgIG1fcmVnRXhwUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHJlZ0V4cENvbnN0cnVjdG9yLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAg
bV9zaGFkb3dSZWFsbVByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBzaGFkb3dSZWFsbUNvbnN0cnVjdG9yLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgCiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPk9iamVj
dCwgb2JqZWN0Q29uc3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+RnVuY3Rpb24sIGZ1bmN0aW9uQ29uc3RydWN0b3IsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKQEAgLTEyNjEsNiArMTI3
MSw4IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0
b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgIFRlbXBvcmFsT2JqZWN0KiB0
ZW1wb3JhbCA9IFRlbXBvcmFsT2JqZWN0OjpjcmVhdGUodm0sIFRlbXBvcmFsT2JqZWN0OjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMpKTsKICAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPlRlbXBvcmFsLCB0ZW1wb3JhbCwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIH0KKyAgICBpZiAo
T3B0aW9uczo6dXNlU2hhZG93UmVhbG0oKSkKKyAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPlNoYWRvd1JlYWxtLCBzaGFkb3dSZWFsbUNvbnN0
cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CiAKICAgICBtX21vZHVsZUxvYWRlci5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJ
bml0aWFsaXplcjxKU01vZHVsZUxvYWRlcj4mIGluaXQpIHsKQEAgLTE0MzMsNiArMTQ0NSwxMiBA
QCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0g
ZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Omhvc3RQcm9taXNlUmVqZWN0aW9uVHJh
Y2tlcildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewog
ICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxK
U0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0hvc3RQ
cm9taXNlUmVqZWN0aW9uVHJhY2tlcikpOwogICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjppbXBvcnRJblJl
YWxtKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7Cisg
ICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpT
R2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBpbXBvcnRJblJlYWxtKSk7
CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmV2YWxJblJlYWxtKV0uaW5pdExhdGVyKFtdIChjb25zdCBJ
bml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0
aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciks
IDAsIFN0cmluZygpLCBldmFsSW5SZWFsbSkpOworICAgICAgICB9KTsKICAgICBtX2xpbmtUaW1l
Q29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojp0aGlzVGlt
ZVZhbHVlKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7
CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBkYXRlUHJvdG9GdW5j
R2V0VGltZSwgRGF0ZVByb3RvdHlwZUdldFRpbWVJbnRyaW5zaWMpKTsKICAgICAgICAgfSk7CkBA
IC0yMTE3LDYgKzIxMzUsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1w
bChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+bV9VUklF
cnJvclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2FnZ3JlZ2F0
ZUVycm9yU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNP
YmplY3QtPm1fYXJyYXlDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9zaGFkb3dSZWFsbUNvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX3JlZ0V4cENvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX29iamVjdENvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5t
X2Z1bmN0aW9uQ29uc3RydWN0b3IpOwpAQCAtMjIxNCw2ICsyMjMzLDcgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9y
KQogICAgIHRoaXNPYmplY3QtPm1fY3VzdG9tU2V0dGVyRnVuY3Rpb25TdHJ1Y3R1cmUudmlzaXQo
dmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlLnZpc2l0
KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fbmF0aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmUu
dmlzaXQodmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zaGFkb3dS
ZWFsbU9iamVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9y
ZWdFeHBTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZ2VuZXJh
dG9yRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1f
YXN5bmNGdW5jdGlvblN0cnVjdHVyZSk7CkBAIC0yNTcwLDYgKzI1OTAsMTMgQEAgSlNHbG9iYWxP
YmplY3QqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0OwogfQogCitKU0dsb2JhbE9iamVjdCogSlNHbG9i
YWxPYmplY3Q6OmNyZWF0ZVdpdGhDdXN0b21NZXRob2RUYWJsZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSogbWV0aG9kVGFibGUpCit7
CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTR2xvYmFsT2JqZWN0Pih2bS5oZWFwKSkgSlNHbG9iYWxPYmplY3Qodm0sIHN0cnVj
dHVyZSwgbWV0aG9kVGFibGUpOworICAgIGdsb2JhbE9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIHJldHVybiBnbG9iYWxPYmplY3Q7Cit9CisKIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBEZWZlclRlcm1pbmF0aW9uIGRlZmVyVGVybWlu
YXRpb24odm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKaW5kZXggZTA2YTVhYjJkNGIwZjQ5NjM2NzIxZWZmMWNjZGZlYTFiYmM2ZDgyMy4uOTRl
MTJhMjNiYmFiMjUzNTk2NzZkMGIxOWNiZjI3ZWI0MjgzYmRkNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0xMTUsNiArMTE1LDggQEAg
Y2xhc3MgTnVsbFNldHRlckZ1bmN0aW9uOwogY2xhc3MgT2JqZWN0Q29uc3RydWN0b3I7CiBjbGFz
cyBQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CitjbGFzcyBTaGFk
b3dSZWFsbUNvbnN0cnVjdG9yOworY2xhc3MgU2hhZG93UmVhbG1Qcm90b3R5cGU7CiBjbGFzcyBS
ZWdFeHBDb25zdHJ1Y3RvcjsKIGNsYXNzIFJlZ0V4cFByb3RvdHlwZTsKIGNsYXNzIFNldEl0ZXJh
dG9yUHJvdG90eXBlOwpAQCAtMzExLDYgKzMxMyw3IEBAIHB1YmxpYzoKIAogICAgIFdyaXRlQmFy
cmllcjxPYmplY3RDb25zdHJ1Y3Rvcj4gbV9vYmplY3RDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJh
cnJpZXI8QXJyYXlDb25zdHJ1Y3Rvcj4gbV9hcnJheUNvbnN0cnVjdG9yOworICAgIFdyaXRlQmFy
cmllcjxTaGFkb3dSZWFsbUNvbnN0cnVjdG9yPiBtX3NoYWRvd1JlYWxtQ29uc3RydWN0b3I7CiAg
ICAgV3JpdGVCYXJyaWVyPFJlZ0V4cENvbnN0cnVjdG9yPiBtX3JlZ0V4cENvbnN0cnVjdG9yOwog
ICAgIFdyaXRlQmFycmllcjxGdW5jdGlvbkNvbnN0cnVjdG9yPiBtX2Z1bmN0aW9uQ29uc3RydWN0
b3I7CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVjdG9yPiBtX3Byb21pc2VDb25z
dHJ1Y3RvcjsKQEAgLTM1OCw2ICszNjEsNyBAQCBwdWJsaWM6CiAgICAgV3JpdGVCYXJyaWVyPE9i
amVjdFByb3RvdHlwZT4gbV9vYmplY3RQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEZ1bmN0
aW9uUHJvdG90eXBlPiBtX2Z1bmN0aW9uUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxBcnJh
eVByb3RvdHlwZT4gbV9hcnJheVByb3RvdHlwZTsKKyAgICBXcml0ZUJhcnJpZXI8U2hhZG93UmVh
bG1Qcm90b3R5cGU+IG1fc2hhZG93UmVhbG1Qcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPFJl
Z0V4cFByb3RvdHlwZT4gbV9yZWdFeHBQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEl0ZXJh
dG9yUHJvdG90eXBlPiBtX2l0ZXJhdG9yUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxBc3lu
Y0l0ZXJhdG9yUHJvdG90eXBlPiBtX2FzeW5jSXRlcmF0b3JQcm90b3R5cGU7CkBAIC00MTQsNiAr
NDE4LDcgQEAgcHVibGljOgogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0
dXJlPiBtX2N1c3RvbVNldHRlckZ1bmN0aW9uU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX25hdGl2ZVN0ZEZ1bmN0aW9uU3RydWN0dXJlOwog
ICAgIFByb3BlcnR5T2Zmc2V0IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OworICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fc2hhZG93UmVhbG1PYmplY3RTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPEFzeW5j
RnVuY3Rpb25Qcm90b3R5cGU+IG1fYXN5bmNGdW5jdGlvblByb3RvdHlwZTsKICAgICBXcml0ZUJh
cnJpZXI8QXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZT4gbV9hc3luY0dlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlOwpAQCAtNjE2LDYgKzYyMSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNHbG9iYWxPYmplY3QqIGNyZWF0ZShWTSYsIFN0
cnVjdHVyZSopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0dsb2JhbE9iamVjdCog
Y3JlYXRlV2l0aEN1c3RvbU1ldGhvZFRhYmxlKFZNJiwgU3RydWN0dXJlKiwgY29uc3QgR2xvYmFs
T2JqZWN0TWV0aG9kVGFibGUqKTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKQEAgLTcy
MCw2ICs3MjYsNyBAQCBwdWJsaWM6CiAgICAgQmlnSW50UHJvdG90eXBlKiBiaWdJbnRQcm90b3R5
cGUoKSBjb25zdCB7IHJldHVybiBtX2JpZ0ludFByb3RvdHlwZS5nZXQoKTsgfQogICAgIEpTT2Jq
ZWN0KiBkYXRlUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRlU3RydWN0dXJlLnByb3Rv
dHlwZSh0aGlzKTsgfQogICAgIEpTT2JqZWN0KiBzeW1ib2xQcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3N5bWJvbE9iamVjdFN0cnVjdHVyZS5wcm90b3R5cGVJbml0aWFsaXplZE9uTWFpblRo
cmVhZCh0aGlzKTsgfQorICAgIFNoYWRvd1JlYWxtUHJvdG90eXBlKiBzaGFkb3dSZWFsbVByb3Rv
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93UmVhbG1Qcm90b3R5cGUuZ2V0KCk7IH0KICAg
ICBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVn
RXhwUHJvdG90eXBlLmdldCgpOyB9CiAgICAgSlNPYmplY3QqIGVycm9yUHJvdG90eXBlKCkgY29u
c3QgeyByZXR1cm4gbV9lcnJvclN0cnVjdHVyZS5wcm90b3R5cGUodGhpcyk7IH0KICAgICBJdGVy
YXRvclByb3RvdHlwZSogaXRlcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJh
dG9yUHJvdG90eXBlLmdldCgpOyB9CkBAIC04MzcsNiArODQ0LDcgQEAgcHVibGljOgogICAgIFBy
b3BlcnR5T2Zmc2V0IGZ1bmN0aW9uTmFtZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rp
b25OYW1lT2Zmc2V0OyB9CiAgICAgU3RydWN0dXJlKiBudW1iZXJPYmplY3RTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX251bWJlck9iamVjdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBT
dHJ1Y3R1cmUqIHJlZ0V4cFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwU3RydWN0
dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBzaGFkb3dSZWFsbVN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2hhZG93UmVhbG1PYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1
Y3R1cmUqIGdlbmVyYXRvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yU3Ry
dWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBhc3luY0dlbmVyYXRvclN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYXN5bmNHZW5lcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBT
dHJ1Y3R1cmUqIGdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9n
ZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCmluZGV4
IGM4ZDkxMmFhZWQyMDhkY2NhNGYyYjU1OTcyMzQ5Zjg3NzVmZDc3ODkuLmY5OWI5ZGZjNWY3ODJm
NWU3M2Q4M2IyMGE0NTE5ZWY5ZDUyYjYzZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKQEAgLTQ5Miw3
ICs0OTIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZ2xvYmFsRnVuY0V2YWwsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHBhcnNlZE9iamVjdCk7CiAKICAgICBTb3VyY2VPcmlnaW4gc291cmNlT3JpZ2lu
ID0gY2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pOwotICAgIEV2YWxFeGVjdXRhYmxl
KiBldmFsID0gSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFr
ZVNvdXJjZShzLCBzb3VyY2VPcmlnaW4pLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGZhbHNl
LCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOworICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0gSW5k
aXJlY3RFdmFsRXhlY3V0YWJsZTo6dHJ5Q3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShz
LCBzb3VyY2VPcmlnaW4pLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGZhbHNlLCBFdmFsQ29u
dGV4dFR5cGU6Ok5vbmUpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24o
KSA9PSAhZXZhbCk7CiAgICAgaWYgKCFldmFsKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFs
dWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCmluZGV4IDVhOGEx
NGEzY2M2YWQxOWVkNDA4MjRiODMwMmRiOTBjNGM0NzRjM2EuLjA5MWMzMGFkMDU3MmNmNWM3ZDFi
YTk4MzU4MWFmZTA1NzM0M2U0MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmNwcApAQCAtOTYsNiArOTYsNyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgSlNDOjpKU1R5cGUgdHlwZSkKICAgICBDQVNFKFN0cmljdEV2YWxBY3RpdmF0aW9uVHlw
ZSkKICAgICBDQVNFKFdpdGhTY29wZVR5cGUpCiAgICAgQ0FTRShNb2R1bGVOYW1lc3BhY2VPYmpl
Y3RUeXBlKQorICAgIENBU0UoU2hhZG93UmVhbG1UeXBlKQogICAgIENBU0UoUmVnRXhwT2JqZWN0
VHlwZSkKICAgICBDQVNFKEpTRGF0ZVR5cGUpCiAgICAgQ0FTRShQcm94eU9iamVjdFR5cGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCmluZGV4IDY1ZWE5NGVmNTYzZjRiM2Fl
MjE5MTc1MWM3OTJlYzUxMGQ1NzQxYzEuLjQzMWJiYWZjODRlNjUzNDRjMDAyZTRlNWY0NzY3Yzdh
MzQ1NTU5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBAIC0xMTAs
NiArMTEwLDcgQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsKICAgICAvLyBFbmQgSlNTY29wZSB0
eXBlcy4KIAogICAgIE1vZHVsZU5hbWVzcGFjZU9iamVjdFR5cGUsCisgICAgU2hhZG93UmVhbG1U
eXBlLAogICAgIFJlZ0V4cE9iamVjdFR5cGUsCiAgICAgSlNEYXRlVHlwZSwKICAgICBQcm94eU9i
amVjdFR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApp
bmRleCBlMDc4MzNmNDdhYmMxYTRiMDkyNDIxNWM1NzU3YmY2ZWJkZTU2NDZkLi43NTdmMzFmYWFh
M2U0NDBiMTdkZjgzY2QxNmY3ZjYyYTk4ZDE5ZmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTU0MCw2ICs1NDAsOCBAQCBib29sIGNhblVzZVdl
YkFzc2VtYmx5RmFzdE1lbW9yeSgpOwogICAgIHYoQm9vbCwgdXNlSGFzT3duLCB0cnVlLCBOb3Jt
YWwsICJFeHBvc2UgdGhlIE9iamVjdC5oYXNPd24gbWV0aG9kIikgXAogICAgIHYoQm9vbCwgdXNl
SW50bEVudW1lcmF0aW9uLCB0cnVlLCBOb3JtYWwsICJFeHBvc2UgdGhlIEludGwgZW51bWVyYXRp
b24gQVBJcy4iKSBcCiAgICAgdihCb29sLCB1c2VTaGFyZWRBcnJheUJ1ZmZlciwgZmFsc2UsIE5v
cm1hbCwgbnVsbHB0cikgXAorICAgIC8qIEZJWE1FOiBTaGFkb3duUmVhbG0gY2FuIGJlIGVuYWJs
ZWQgb25jZSBXZWJDb3JlJ3MgSlNHbG9iYWxPYmplY3QgPT0gSlNET01HbG9iYWxPYmplY3QgYXNz
dW1wdGlvbiBpcyByZW1vdmVkLCAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMTUwNiAqL1wKKyAgICB2KEJvb2wsIHVzZVNoYWRvd1JlYWxtLCBmYWxzZSwgTm9ybWFs
LCAiRXhwb3NlIHRoZSBTaGFkb3dSZWFsbSBvYmplY3QuIikgXAogICAgIHYoQm9vbCwgdXNlVGVt
cG9yYWwsIGZhbHNlLCBOb3JtYWwsICJFeHBvc2UgdGhlIFRlbXBvcmFsIG9iamVjdC4iKSBcCiAg
ICAgdihCb29sLCB1c2VXZWJBc3NlbWJseVRocmVhZGluZywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cg
aW5zdHJ1Y3Rpb25zIGZyb20gdGhlIHdhc20gdGhyZWFkaW5nIHNwZWMuIikgXAogICAgIHYoQm9v
bCwgdXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcywgZmFsc2UsIE5vcm1hbCwg
IkFsbG93IGZ1bmN0aW9uIHR5cGVzIGZyb20gdGhlIHdhc20gdHlwZWQgZnVuY3Rpb24gcmVmZXJl
bmNlcyBzcGVjLiIpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NoYWRvd1JlYWxtQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTZlOGFhYzNkYWYzMWNh
YmY2YjE4OWVhZDFiMzMxNmM0YWMxNTdmNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEs
NjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYWRvd1JlYWxtQ29uc3RydWN0b3IuaCIK
KworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJTaGFkb3dSZWFsbU9iamVjdC5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFNoYWRvd1JlYWxtQ29uc3Ry
dWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShTaGFkb3dSZWFsbUNvbnN0cnVj
dG9yKSB9OworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoU2hhZG93
UmVhbG1Db25zdHJ1Y3Rvcik7CisKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNh
bGxTaGFkb3dSZWFsbSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjb25zdHJ1
Y3RXaXRoU2hhZG93UmVhbG1Db25zdHJ1Y3Rvcik7CisKK1NoYWRvd1JlYWxtQ29uc3RydWN0b3I6
OlNoYWRvd1JlYWxtQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSwgY2FsbFNoYWRvd1JlYWxtLCBjb25z
dHJ1Y3RXaXRoU2hhZG93UmVhbG1Db25zdHJ1Y3RvcikKK3sKK30KKwordm9pZCBTaGFkb3dSZWFs
bUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNoYWRvd1JlYWxtUHJvdG90eXBl
KiBzaGFkb3dSZWFsbVByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwg
MCwgdm0ucHJvcGVydHlOYW1lcy0+U2hhZG93UmVhbG0uc3RyaW5nKCksIFByb3BlcnR5QWRkaXRp
b25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgc2hhZG93UmVhbG1Q
cm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKK30KKworSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFdpdGhTaGFkb3dSZWFsbUNvbnN0cnVjdG9yLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikpCit7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIFN0cnVjdHVyZSogc2hhZG93UmVhbG1TdHJ1Y3R1
cmUgPSBTaGFkb3dSZWFsbU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdC0+c2hhZG93UmVhbG1Qcm90b3R5cGUoKSk7CisgICAgSlNPYmplY3QqIHNo
YWRvd1JlYWxtT2JqZWN0ID0gU2hhZG93UmVhbG1PYmplY3Q6OmNyZWF0ZSh2bSwgc2hhZG93UmVh
bG1TdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzaGFkb3dSZWFsbU9iamVjdCk7Cit9CisKK0pTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihjYWxsU2hhZG93UmVhbG0sIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqKSkKK3sKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRShnbG9iYWxPYmplY3QtPnZtKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiU2hhZG93UmVhbG0iKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Db25z
dHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Db25z
dHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwY2I5NGM4MDE3YzJlMTVjOTlkZmYyMzM1MjVkNzliNTFj
MThiZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
aGFkb3dSZWFsbUNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJTaGFkb3dSZWFsbVByb3RvdHlwZS5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2V0dGVyU2V0dGVyOworCitjbGFzcyBTaGFk
b3dSZWFsbUNvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVi
bGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKwor
ICAgIHN0YXRpYyBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgU2hhZG93UmVhbG1Qcm90b3R5cGUqIHNoYWRvd1JlYWxtUHJvdG90eXBl
LCBHZXR0ZXJTZXR0ZXIqKQorICAgIHsKKyAgICAgICAgU2hhZG93UmVhbG1Db25zdHJ1Y3Rvciog
Y29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTaGFkb3dSZWFsbUNvbnN0
cnVjdG9yPih2bS5oZWFwKSkgU2hhZG93UmVhbG1Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsK
KyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBzaGFkb3dSZWFsbVByb3Rv
dHlwZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9CisKKyAgICBERUNMQVJF
X0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFNoYWRvd1JlYWxtQ29uc3RydWN0b3IoVk0mLCBT
dHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgU2hhZG93UmVhbG1Qcm90
b3R5cGUqKTsKK307CitTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShTaGFkb3dS
ZWFsbUNvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uKTsKKworfSAvLyBuYW1lc3BhY2UgSlND
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxt
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtT2Jq
ZWN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yNTQ0N2E3MWVlMTUwODUzN2I0NTZmYTM2YjRiZjFhY2MzNDhk
YjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hh
ZG93UmVhbG1PYmplY3QuY3BwCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlNoYWRvd1JlYWxtT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNT
RVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoU2hhZG93UmVhbG1PYmplY3QpOworCit9IC8v
IG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBTaGFk
b3dSZWFsbU9iamVjdDo6c19pbmZvID0geyAiU2hhZG93UmVhbG0iLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFNoYWRvd1JlYWxtT2JqZWN0KSB9
OworCitTaGFkb3dSZWFsbU9iamVjdDo6U2hhZG93UmVhbG1PYmplY3QoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgVmlzaXRvcj4KK3ZvaWQgU2hhZG93UmVhbG1PYmplY3Q6OnZpc2l0Q2hpbGRy
ZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBTaGFkb3dSZWFs
bU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTaGFkb3dSZWFsbU9iamVjdCo+KGNlbGwpOwor
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5h
cHBlbmQodGhpc09iamVjdC0+bV9nbG9iYWxPYmplY3QpOworfQorCitERUZJTkVfVklTSVRfQ0hJ
TERSRU4oU2hhZG93UmVhbG1PYmplY3QpOworCitTaGFkb3dSZWFsbU9iamVjdCogU2hhZG93UmVh
bG1PYmplY3Q6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBHbG9i
YWxPYmplY3RNZXRob2RUYWJsZSogbWV0aG9kVGFibGUpCit7CisgICAgU2hhZG93UmVhbG1PYmpl
Y3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFNoYWRvd1JlYWxtT2JqZWN0
Pih2bS5oZWFwKSkgU2hhZG93UmVhbG1PYmplY3Qodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0
LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVXaXRoQ3VzdG9tTWV0aG9kVGFibGUodm0sIEpTR2xvYmFs
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGpzTnVsbCgpKSwgbWV0aG9kVGFibGUpOworICAg
IG9iamVjdC0+bV9nbG9iYWxPYmplY3Quc2V0KHZtLCBvYmplY3QsIGdsb2JhbE9iamVjdCk7Cisg
ICAgcmV0dXJuIG9iamVjdDsKK30KKwordm9pZCBTaGFkb3dSZWFsbU9iamVjdDo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NF
UlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRf
VFJBTlNJVElPTigpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbU9iamVjdC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwODhm
Zjc4NDJlMjBhZTU0MjUyZjZkYjA1ZDRjN2U4NGY5ZWIxNWMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbU9iamVjdC5oCkBAIC0wLDAg
KzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBTaGFkb3dSZWFsbU9i
amVjdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2lu
ZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KKyAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiB2bS5zaGFk
b3dSZWFsbVNwYWNlPG1vZGU+KCk7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhTaGFkb3dSZWFsbVR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBz
dGF0aWMgU2hhZG93UmVhbG1PYmplY3QqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIGNvbnN0IEds
b2JhbE9iamVjdE1ldGhvZFRhYmxlKik7CisKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KCkgeyByZXR1cm4gbV9nbG9iYWxPYmplY3QuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBT
aGFkb3dSZWFsbU9iamVjdChWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mKTsKKyAgICBERUNMQVJFX1ZJU0lUX0NISUxEUkVOOworCisgICAgV3JpdGVCYXJyaWVy
PEpTR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Q
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Q
cm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1ZDk4ZTNiOWJjYzIxMTVkMzRkOWM1YWM5ZjFiMmY2
NDQ4N2ZkY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlNoYWRvd1JlYWxtUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJJbmRpcmVj
dEV2YWxFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgiCisjaW5jbHVk
ZSAiSlNNb2R1bGVMb2FkZXIuaCIKKyNpbmNsdWRlICJTaGFkb3dSZWFsbU9iamVjdC5oIgorCisj
aW5jbHVkZSAiU2hhZG93UmVhbG1Qcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CisvKiBTb3VyY2UgZm9yIFNoYWRvd1JlYWxtUHJvdG90eXBlLmx1dC5oCitAYmVnaW4gc2hhZG93
UmVhbG1Qcm90b3R5cGVUYWJsZQorICBldmFsdWF0ZSAgICBKU0J1aWx0aW4gICAgIERvbnRFbnVt
fEZ1bmN0aW9uICAxCisgIGltcG9ydFZhbHVlIEpTQnVpbHRpbiAgICAgRG9udEVudW18RnVuY3Rp
b24gIDIKK0BlbmQKKyovCisKK2NvbnN0IENsYXNzSW5mbyBTaGFkb3dSZWFsbVByb3RvdHlwZTo6
c19pbmZvID0geyAiU2hhZG93UmVhbG0iLCAmQmFzZTo6c19pbmZvLCAmc2hhZG93UmVhbG1Qcm90
b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShTaGFkb3dSZWFsbVByb3Rv
dHlwZSkgfTsKKworU2hhZG93UmVhbG1Qcm90b3R5cGU6OlNoYWRvd1JlYWxtUHJvdG90eXBlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFsT2JqZWN0KHZtLCBz
dHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgU2hhZG93UmVhbG1Qcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJU
KGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RS
QU5TSVRJT04oKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGltcG9ydEluUmVhbG0s
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBTaGFkb3dSZWFsbU9iamVjdCogdGhpc1JlYWxt
ID0ganNEeW5hbWljQ2FzdDxTaGFkb3dSZWFsbU9iamVjdCo+KHZtLCB0aGlzVmFsdWUpOworICAg
IEFTU0VSVCh0aGlzUmVhbG0pOworCisgICAgYXV0byogcHJvbWlzZSA9IEpTUHJvbWlzZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QtPnByb21pc2VTdHJ1Y3R1cmUoKSk7CisKKyAgICBhdXRvIHNv
dXJjZU9yaWdpbiA9IGNhbGxGcmFtZS0+Y2FsbGVyU291cmNlT3JpZ2luKHZtKTsKKyAgICBhdXRv
KiBzcGVjaWZpZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvU3RyaW5nKGds
b2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAg
IEpTR2xvYmFsT2JqZWN0KiByZWFsbUdsb2JhbE9iamVjdCA9IHRoaXNSZWFsbS0+Z2xvYmFsT2Jq
ZWN0KCk7CisgICAgYXV0byogaW50ZXJuYWxQcm9taXNlID0gcmVhbG1HbG9iYWxPYmplY3QtPm1v
ZHVsZUxvYWRlcigpLT5pbXBvcnRNb2R1bGUocmVhbG1HbG9iYWxPYmplY3QsIHNwZWNpZmllciwg
anNVbmRlZmluZWQoKSwgc291cmNlT3JpZ2luKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+cmVqZWN0V2l0aENhdWdodEV4Y2VwdGlvbihy
ZWFsbUdsb2JhbE9iamVjdCwgc2NvcGUpKSk7CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAg
cHJvbWlzZS0+cmVzb2x2ZShnbG9iYWxPYmplY3QsIGludGVybmFsUHJvbWlzZSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShwcm9taXNlKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGV2YWxJblJlYWxtLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgU2hhZG93UmVhbG1PYmplY3QqIHRo
aXNSZWFsbSA9IGpzRHluYW1pY0Nhc3Q8U2hhZG93UmVhbG1PYmplY3QqPih2bSwgdGhpc1ZhbHVl
KTsKKyAgICBBU1NFUlQodGhpc1JlYWxtKTsKKyAgICBKU0dsb2JhbE9iamVjdCogcmVhbG1HbG9i
YWxPYmplY3QgPSB0aGlzUmVhbG0tPmdsb2JhbE9iamVjdCgpOworCisgICAgSlNWYWx1ZSBldmFs
QXJnID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICAvLyBldmFsIGNvZGUgYWRhcHRlZCBm
cm9tIEpTR2xvYmFsT2JqZWNGdW5jdGlvbnM6Omdsb2JhbEZ1bmNFdmFsCisgICAgU3RyaW5nIHNj
cmlwdCA9IGFzU3RyaW5nKGV2YWxBcmcpLT52YWx1ZShnbG9iYWxPYmplY3QpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBOYWtlZFB0cjxKU09iamVjdD4gZXhl
Y3V0YWJsZUVycm9yOworICAgIFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJjZShzY3JpcHQs
IGNhbGxGcmFtZS0+Y2FsbGVyU291cmNlT3JpZ2luKHZtKSk7CisgICAgRXZhbEV4ZWN1dGFibGUq
IGV2YWwgPSBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUocmVhbG1HbG9iYWxPYmplY3Qs
IHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSwgRXZhbENvbnRleHRUeXBl
OjpOb25lLCBleGVjdXRhYmxlRXJyb3IpOworICAgIGlmIChleGVjdXRhYmxlRXJyb3IpIHsKKyAg
ICAgICAgRXJyb3JJbnN0YW5jZSogZXJyb3IgPSBqc0R5bmFtaWNDYXN0PEVycm9ySW5zdGFuY2Uq
Pih2bSwgSlNWYWx1ZShleGVjdXRhYmxlRXJyb3IuZ2V0KCkpKTsKKyAgICAgICAgaWYgKGVycm9y
ICE9IG51bGxwdHIgJiYgZXJyb3ItPmVycm9yVHlwZSgpID09IEVycm9yVHlwZTo6U3ludGF4RXJy
b3IpIHsKKyAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgICAgICBj
b25zdCBTdHJpbmcgc3ludGF4RXJyb3JNZXNzYWdlID0gZXJyb3ItPnNhbml0aXplZE1lc3NhZ2VT
dHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisgICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Y3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCBzeW50YXhFcnJvck1lc3NhZ2UpKTsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkVycm9yIGVuY291bnRlcmVkIGR1cmlu
ZyBldmFsdWF0aW9uIl9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisgICAgfQorICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IHZtLmludGVycHJldGVyLT5leGVjdXRlKGV2YWwsIHJlYWxt
R2xvYmFsT2JqZWN0LCByZWFsbUdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpLCByZWFsbUdsb2Jh
bE9iamVjdC0+Z2xvYmFsU2NvcGUoKSk7CisgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlv
bigpKSkgeworICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsICJFcnJvciBlbmNvdW50ZXJlZCBkdXJpbmcgZXZhbHVhdGlvbiJfcykpOworICAgIH0K
KworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCkp
OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllYWViMGI4YmFi
MzljMTY3OTYwMTk2YjQyZjY0MjFmY2U1MWVjOWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oCkBAIC0wLDAgKzEs
NjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgU2hhZG93UmVhbG1Qcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKFNoYWRvd1JlYWxtUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgIH0KKworICAgIHN0YXRpYyBTaGFkb3dSZWFsbVByb3Rv
dHlwZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAg
ICBTaGFkb3dSZWFsbVByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8U2hhZG93UmVhbG1Qcm90b3R5cGU+KHZtLmhlYXApKSBTaGFkb3dSZWFsbVByb3RvdHlw
ZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7
CisgICAgICAgIHJldHVybiBwcm90b3R5cGU7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOwor
CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2
YXRlOgorICAgIFNoYWRvd1JlYWxtUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYpOworfTsKKworSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihp
bXBvcnRJblJlYWxtKTsKK0pTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZXZhbEluUmVhbG0pOwor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRl
eCAzOGU5NTEyOWJhOWYwMjExMGExYzQzZTA1MWM0YWE2NzhjNmZkMGQzLi4yZmFjNzM0MzU0ODll
YjcwZDRkOTZlOGQyOWIzNGJkM2I2OGRiOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCkBAIC0xNTYsNiArMTU2LDcgQEAKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgi
CiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5o
IgorI2luY2x1ZGUgIlNoYWRvd1JlYWxtT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2ltcGxlVHlwZWRB
cnJheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTb3VyY2VQcm92aWRlckNhY2hlLmgiCiAjaW5j
bHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKQEAgLTE1ODcsNiArMTU4OCw3IEBAIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzY3JpcHRGZXRjaGVyU3BhY2UsIGRl
c3RydWN0aWJsZUNlbGxIZWFwCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coc2V0QnVja2V0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTU2V0OjpCdWNrZXRU
eXBlKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNldEl0ZXJhdG9y
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTU2V0SXRlcmF0b3IpCiBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTU2V0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNo
YWRvd1JlYWxtU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFNoYWRvd1JlYWxtT2JqZWN0
KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN0cmljdEV2YWxBY3Rp
dmF0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFN0cmljdEV2YWxBY3RpdmF0aW9u
KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN0cmluZ0l0ZXJhdG9y
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTU3RyaW5nSXRlcmF0b3IpCiBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc291cmNlQ29kZVNwYWNlLCBkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1NvdXJjZUNvZGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAppbmRleCBhYTg5YjI4YWRlMmYyNWI2Y2M4NDQwZDYxNGJjOTQ3YWUzYmE0
Zjc0Li5iZGY0MzFlODRlZjA5NDg1NmJjMDI3MzBjNDBmZmU2ZWRhYTVjMWQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTU5Miw2ICs1OTIsNyBAQCBwdWJsaWM6CiAgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzZXRCdWNrZXRTcGFjZSkKICAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNldEl0ZXJhdG9yU3BhY2UpCiAgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzZXRTcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNoYWRvd1JlYWxtU3BhY2UpOwogICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc3RyaWN0RXZhbEFjdGl2YXRpb25TcGFjZSkKICAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHN0cmluZ0l0ZXJhdG9yU3BhY2Up
CiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzb3VyY2VDb2RlU3BhY2Up
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDg2ZjNjMzE1NGY3OTEyMDI2MjAxOWUzYmM0NTM2Zjc1YWIxMTdhOTIuLjE4OTVhYmNlODU3MTgw
NTJmOGJjZDdiZTVkNDYwOTEyNjViMWFhZWQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjEtMTAtMTEgIFBo
aWxsaXAgTWF0ZXMgIDxwbWF0ZXNAaWdhbGlhLmNvbT4KKworICAgICAgICBUZXN0IGNvdmVyYWdl
IGZvciBKU0Mgc2hhZG93IHJlYWxtcyBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNjAyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtb2R1bGVzL2ltcG9ydC1tZXRhLXN5bnRh
eC5qczoKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKiBzdHJlc3MvZXZhbC1pbmRp
cmVjdC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJv
dyk6CisgICAgICAgICogc3RyZXNzL2ltcG9ydC1zeW50YXguanM6CisgICAgICAgICogc3RyZXNz
L3Jlc291cmNlcy9zaGFkb3ctcmVhbG0tZXhhbXBsZS1tb2R1bGUuanM6IEFkZGVkLgorICAgICAg
ICAocHV0SW5HbG9iYWwpOgorICAgICAgICAoZ2V0RnJvbUdsb2JhbCk6CisgICAgICAgIChnZXRB
bk9iamVjdCk6CisgICAgICAgIChnZXRDYWxsQ291bnQpOgorICAgICAgICAqIHN0cmVzcy9zaGFk
b3ctcmVhbG0tZXZhbHVhdGUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAg
ICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoYXNzZXJ0aW9uRm4pOgorICAgICAgICAoc2hvdWxk
QmUuU3RyaW5nKToKKyAgICAgICAgKHNob3VsZEJlLmdsb2JhbE9iamVjdEZvci5kb0V2YWwpOgor
ICAgICAgICAoc2hvdWxkQmUuZ2xvYmFsT2JqZWN0Rm9yKToKKyAgICAgICAgKiBzdHJlc3Mvc2hh
ZG93LXJlYWxtLWltcG9ydC12YWx1ZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6Cisg
ICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChhc3luYyBzaG91bGRUaHJvd0FzeW5jKToK
KyAgICAgICAgKGFzeW5jIGNvbnN0KToKKyAgICAgICAgKGRvSW1wb3J0KToKKyAgICAgICAgKiBz
dHJlc3Mvc2hhZG93LXJlYWxtLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAg
ICAgKHRocm93Lm5ldy5FcnJvcik6CisKIDIwMjEtMTAtMDkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBSZWZpbmUgUmVnRXhwI2NvbXBpbGUgYmFz
ZWQgb24gcmVnZXhwLWxlZ2FjeS1mZWF0dXJlcyBwcm9wb3NhbApkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9tb2R1bGVzL2ltcG9ydC1tZXRhLXN5bnRheC5qcyBiL0pTVGVzdHMvbW9kdWxlcy9pbXBvcnQt
bWV0YS1zeW50YXguanMKaW5kZXggM2VkZjRlNTEyMGUxMmE1YjY4OTQ5MTNiMDVhYTcwYWM2NzY4
NTY2Mi4uNTlhMmIzNjM0NjBhNjAzNWM3YTEwNWYwOGMyMzZmOWY0YTk0MzUxYSAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9tb2R1bGVzL2ltcG9ydC1tZXRhLXN5bnRheC5qcworKysgYi9KU1Rlc3RzL21v
ZHVsZXMvaW1wb3J0LW1ldGEtc3ludGF4LmpzCkBAIC0xMCw3ICsxMCw3IEBAIHNob3VsZE5vdFRo
cm93KCgpID0+IHsKIAogc2hvdWxkVGhyb3coKCkgPT4gewogICAgIGNoZWNrTW9kdWxlU3ludGF4
KGAoaW1wb3J0LmNvY29hKWApOwotfSwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGlkZW50aWZp
ZXIgJ2NvY29hJy4gImltcG9ydC4iIGNhbiBvbmx5IGZvbGxvd2VkIHdpdGggbWV0YS46MWApOwor
fSwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGlkZW50aWZpZXIgJ2NvY29hJy4gImltcG9ydC4i
IGNhbiBvbmx5IGJlIGZvbGxvd2VkIHdpdGggbWV0YS46MWApOwogCiBzaG91bGRUaHJvdygoKSA9
PiB7CiAgICAgY2hlY2tNb2R1bGVTeW50YXgoYChpbXBvcnRbIkNvY29hIl0pYCk7CkBAIC0xOCw3
ICsxOCw3IEBAIHNob3VsZFRocm93KCgpID0+IHsKIAogc2hvdWxkVGhyb3coKCkgPT4gewogICAg
IGNoZWNrTW9kdWxlU3ludGF4KGBpbXBvcnQuY29jb2FgKTsKLX0sIGBTeW50YXhFcnJvcjogVW5l
eHBlY3RlZCBpZGVudGlmaWVyICdjb2NvYScuICJpbXBvcnQuIiBjYW4gb25seSBmb2xsb3dlZCB3
aXRoIG1ldGEuOjFgKTsKK30sIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCBpZGVudGlmaWVyICdj
b2NvYScuICJpbXBvcnQuIiBjYW4gb25seSBiZSBmb2xsb3dlZCB3aXRoIG1ldGEuOjFgKTsKIAog
c2hvdWxkVGhyb3coKCkgPT4gewogICAgIGNoZWNrTW9kdWxlU3ludGF4KGBpbXBvcnRbIkNvY29h
Il1gKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2V2YWwtaW5kaXJlY3QuanMgYi9KU1Rl
c3RzL3N0cmVzcy9ldmFsLWluZGlyZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxYjU5MTQwNWFmMWMwY2Vh
ZWNiNjBhODMwZjEwYTAyYjYxYTJkMWQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9ldmFsLWluZGlyZWN0LmpzCkBAIC0wLDAgKzEsMzQgQEAKKworZnVuY3Rpb24gc2hvdWxkQmUo
YWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9
YCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yVHlwZSwgYXNzZXJ0aW9u
Rm4pIHsKKyAgICBsZXQgZXJyb3I7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKworICAgIGlmICghKGVycm9y
IGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3Rl
ZCAke2Vycm9yVHlwZS5uYW1lfSBidXQgZ290ICR7ZXJyb3IubmFtZX1gKTsKKworICAgIGFzc2Vy
dGlvbkZuKGVycm9yKTsKK30KKworc2hvdWxkQmUoKDAsIGV2YWwpKCIoKSA9PiB7IHJldHVybiAx
OyB9IikoKSwgMSk7CisKK3Nob3VsZFRocm93KAorICAoKSA9PiB7ICgwLCBldmFsKSgiLi4iKSB9
LAorICBTeW50YXhFcnJvciwKKyAgKGVycikgPT4geworICAgICAgc2hvdWxkQmUoU3RyaW5nKGVy
ciksIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnLidgKTsKKyAgfSk7CisKKy8vIE5P
VEU6IG1vcmUgaXRlcmF0aW9ucyAobGlrZSAyMDAwMCkgd2lsbCB0cmlnZ2VyIGEgR0MvT09NIGlz
c3VlIG9uIDMyLWJpdCBkZXZpY2VzLgorZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsK
KyAgICBsZXQgZiA9ICgwLCBldmFsKSgiKCkgPT4geyByZXR1cm4gMTsgfSIpOworICAgIHNob3Vs
ZEJlKGYoKSwgMSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbXBvcnQtc3ludGF4
LmpzIGIvSlNUZXN0cy9zdHJlc3MvaW1wb3J0LXN5bnRheC5qcwppbmRleCAyNWEzZmJiZjY4NjYx
NTdiMTc1ZGE4ZWRhZTc4YzBlOWUyODE1YzI2Li45NGUwODUwZjdiMjg5MmE4NjFhZDVkMGY0NTBm
ZjQ0ZjkxNzI0ZDIxIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9pbXBvcnQtc3ludGF4Lmpz
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2ltcG9ydC1zeW50YXguanMKQEAgLTI5LDcgKzI5LDcgQEAg
YXN5bmMgZnVuY3Rpb24gdGVzdFN5bnRheChzY3JpcHQsIG1lc3NhZ2UpIHsKIAogdGVzdFN5bnRh
eEVycm9yKGBpbXBvcnQpYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICcpJy4gaW1w
b3J0IGNhbGwgZXhwZWN0cyBleGFjdGx5IG9uZSBhcmd1bWVudC5gKTsKIHRlc3RTeW50YXhFcnJv
cihgbmV3IGltcG9ydChgLCBgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgbmV3IHdpdGggaW1wb3J0
LmApOwotdGVzdFN5bnRheEVycm9yKGBpbXBvcnQuaGVsbG8oKWAsIGBTeW50YXhFcnJvcjogVW5l
eHBlY3RlZCBpZGVudGlmaWVyICdoZWxsbycuICJpbXBvcnQuIiBjYW4gb25seSBmb2xsb3dlZCB3
aXRoIG1ldGEuYCk7Cit0ZXN0U3ludGF4RXJyb3IoYGltcG9ydC5oZWxsbygpYCwgYFN5bnRheEVy
cm9yOiBVbmV4cGVjdGVkIGlkZW50aWZpZXIgJ2hlbGxvJy4gImltcG9ydC4iIGNhbiBvbmx5IGJl
IGZvbGxvd2VkIHdpdGggbWV0YS5gKTsKIHRlc3RTeW50YXhFcnJvcihgaW1wb3J0W2AsIGBTeW50
YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnWycuIGltcG9ydCBjYWxsIGV4cGVjdHMgZXhhY3Rs
eSBvbmUgYXJndW1lbnQuYCk7CiB0ZXN0U3ludGF4RXJyb3IoYGltcG9ydDxgLCBgU3ludGF4RXJy
b3I6IFVuZXhwZWN0ZWQgdG9rZW4gJzwnLiBpbXBvcnQgY2FsbCBleHBlY3RzIGV4YWN0bHkgb25l
IGFyZ3VtZW50LmApOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9yZXNvdXJjZXMvc2hh
ZG93LXJlYWxtLWV4YW1wbGUtbW9kdWxlLmpzIGIvSlNUZXN0cy9zdHJlc3MvcmVzb3VyY2VzL3No
YWRvdy1yZWFsbS1leGFtcGxlLW1vZHVsZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjRmNTc5YzJmOWE2ZGMy
MzkwYmUyZmEwNTVjZTY4ZDY4MDMzMGYzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvcmVzb3VyY2VzL3NoYWRvdy1yZWFsbS1leGFtcGxlLW1vZHVsZS5qcwpAQCAtMCwwICsxLDI1
IEBACit2YXIgY2FsbENvdW50ID0gMDsKKworZnVuY3Rpb24gcHV0SW5HbG9iYWwoa2V5LCB2YWwp
IHsKKyAgICBjYWxsQ291bnQrKzsKKyAgICBnbG9iYWxUaGlzLmtleSA9IHZhbDsKK30KKworZnVu
Y3Rpb24gZ2V0RnJvbUdsb2JhbChrZXkpIHsKKyAgICBjYWxsQ291bnQrKzsKKyAgICByZXR1cm4g
Z2xvYmFsVGhpcy5rZXk7Cit9CisKK3ZhciBhbk9iamVjdCA9IG5ldyBPYmplY3QoKTsKKworZnVu
Y3Rpb24gZ2V0QW5PYmplY3QoKSB7CisgICAgY2FsbENvdW50Kys7CisgICAgcmV0dXJuIGFuT2Jq
ZWN0OworfQorCitmdW5jdGlvbiBnZXRDYWxsQ291bnQoKSB7CisgICAgcmV0dXJuIGNhbGxDb3Vu
dDsKK30KKwordmFyIGFuc3dlciA9IDY7CitleHBvcnQgeyBhbk9iamVjdCwgYW5zd2VyLCBnZXRD
YWxsQ291bnQsIGdldEZyb21HbG9iYWwsIGdldEFuT2JqZWN0LCBwdXRJbkdsb2JhbCB9OwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc2hhZG93LXJlYWxtLWV2YWx1YXRlLmpzIGIvSlNUZXN0
cy9zdHJlc3Mvc2hhZG93LXJlYWxtLWV2YWx1YXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjMDNmODM4Yjg2
ZTI5YjBmOTZkMWI0OTVkMTQwNWRkNWIzZTIyY2MKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9zaGFkb3ctcmVhbG0tZXZhbHVhdGUuanMKQEAgLTAsMCArMSwxNTMgQEAKKy8vQCBy
ZXF1aXJlT3B0aW9ucygiLS11c2VTaGFkb3dSZWFsbT0xIikKKworZnVuY3Rpb24gc2hvdWxkQmUo
YWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9
YCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yVHlwZSwgYXNzZXJ0aW9u
Rm4pIHsKKyAgICBsZXQgZXJyb3I7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKworICAgIGlmICghKGVycm9y
IGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3Rl
ZCAke2Vycm9yVHlwZS5uYW1lfSBidXQgZ290ICR7ZXJyb3IubmFtZX1gKTsKKworICAgIGFzc2Vy
dGlvbkZuKGVycm9yKTsKK30KKworLy8gYmFzaWMgZXZhbHVhdGlvbiBhbmQgc3RhdGUgc2V0dGlu
ZworeworICAgIGxldCByZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOworICAgIGxldCBvdGhlclJl
YWxtID0gbmV3IFNoYWRvd1JlYWxtKCk7CisKKyAgICBzaG91bGRCZShyZWFsbS5ldmFsdWF0ZSgi
MSIpLCAxKTsKKyAgICB2YXIgeCA9IDI7CisgICAgcmVhbG0uZXZhbHVhdGUoInZhciB4ID0gMSIp
OworICAgIHNob3VsZEJlKHJlYWxtLmV2YWx1YXRlKCJ4IiksIDEpOworICAgIHNob3VsZEJlKHgs
IDIpOworCisgICAgLy8gc2NvcGUgaXNuJ3Qgc2hhcmVkIGFjcm9zcyByZWFsbXMKKyAgICBzaG91
bGRCZShvdGhlclJlYWxtLmV2YWx1YXRlKCJnbG9iYWxUaGlzLngiKSwgdW5kZWZpbmVkKTsKK30K
KworLy8gYWNjZXNzaW5nIGBnbG9iYWxUaGlzYCB3aXRoaW4gYW5kIG91dHNpZGUgb2YgYSBzaGFk
b3cgcmVhbG0KK3sKKyAgICBsZXQgcmVhbG0gPSBuZXcgU2hhZG93UmVhbG0oKTsKKyAgICBnbG9i
YWxUaGlzLmhpID0gNjsKKworICAgIHNob3VsZEJlKHJlYWxtLmV2YWx1YXRlKCJnbG9iYWxUaGlz
LmhpIiksIHVuZGVmaW5lZCk7CisKKyAgICByZWFsbS5ldmFsdWF0ZSgiZ2xvYmFsVGhpcy5oaSA9
ICdmYWxhIGFtaWdvJyIpOworCisgICAgc2hvdWxkQmUocmVhbG0uZXZhbHVhdGUoImdsb2JhbFRo
aXMuaGkiKSwgImZhbGEgYW1pZ28iKTsKKyAgICBzaG91bGRCZShnbG9iYWxUaGlzLmhpLCA2KTsK
K30KKworLy8gZW5zdXJlIHRoYXQgZXJyb3JzIHRocm93biBpc24ndCBhc3NvY2lhdGVkIHdpdGgg
dGhlIHNoYWRvdyByZWFsbSdzIGdsb2JhbCBvYmplY3QKK3sKKyAgICBsZXQgcmVhbG0gPSBuZXcg
U2hhZG93UmVhbG0oKTsKKyAgICBzaG91bGRUaHJvdygKKyAgICAgICgpID0+IHsgcmVhbG0uZXZh
bHVhdGUoIi4uIik7IH0sCisgICAgICBTeW50YXhFcnJvciwKKyAgICAgIChlcnIpID0+IHsKKyAg
ICAgICAgICBzaG91bGRCZSgkLmdsb2JhbE9iamVjdEZvcihlcnIpLCBnbG9iYWxUaGlzKTsKKyAg
ICAgICAgICBzaG91bGRCZShTdHJpbmcoZXJyKSwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRv
a2VuICcuJ2ApOworICAgICAgfSk7Cit9CisKKy8vIGVuc3VyZSB0aGF0IGVycm9ycyB0aHJvd24g
ZG9uJ3QgY2FycnkgaW5mb3JtYXRpb24gZnJvbSB0aGUgc2hhZG93IHJlYWxtCit7CisgICAgbGV0
IHJlYWxtID0gbmV3IFNoYWRvd1JlYWxtKCk7CisgICAgc2hvdWxkVGhyb3coCisgICAgICAoKSA9
PiB7IHJlYWxtLmV2YWx1YXRlKCJ0aHJvdyBuZXcgRXJyb3IoJ3NlY3JldCcpIik7IH0sCisgICAg
ICBUeXBlRXJyb3IsCisgICAgICAoZXJyKSA9PiB7CisgICAgICAgICAgc2hvdWxkQmUoJC5nbG9i
YWxPYmplY3RGb3IoZXJyKSwgZ2xvYmFsVGhpcyk7CisgICAgICAgICAgc2hvdWxkQmUoU3RyaW5n
KGVyciksICJUeXBlRXJyb3I6IEVycm9yIGVuY291bnRlcmVkIGR1cmluZyBldmFsdWF0aW9uIik7
CisgICAgICB9KTsKK30KKworLy8gd3JhcHBlZCBmdW5jdGlvbnMgcHJvdGVjdCB0aGUgc2hhZG93
IHJlYWxtCit7CisgICAgbGV0IHJlYWxtID0gbmV3IFNoYWRvd1JlYWxtKCk7CisgICAgbGV0IHdy
YXBwZWRJbnZva2VBbmRBZGQgPSByZWFsbS5ldmFsdWF0ZSgiZnVuY3Rpb24gaW52b2tlQW5kQWRk
KHhGbiwgeUZuKSB7IHJldHVybiB4Rm4oKSArIHlGbigpOyB9OyBpbnZva2VBbmRBZGQiKTsKKyAg
ICBzaG91bGRCZSh3cmFwcGVkSW52b2tlQW5kQWRkKCgpID0+IHsgcmV0dXJuIDEgfSwgKCkgPT4g
eyByZXR1cm4gMiB9KSwgMyk7CisgICAgc2hvdWxkQmUoJC5nbG9iYWxPYmplY3RGb3Iod3JhcHBl
ZEludm9rZUFuZEFkZCksIGdsb2JhbFRoaXMpOworCisgICAgLy8gbmFtZSBhbmQgbGVuZ3RoIHBy
b3BlcnRpZXMgZnJvbSB3cmFwcGVkIGZ1bmN0aW9uIGFyZSBhYnNlbnQKKyAgICBzaG91bGRCZShP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdyYXBwZWRJbnZva2VBbmRBZGQsICJsZW5n
dGgiKSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKHdyYXBwZWRJbnZva2VBbmRBZGQsICJuYW1lIiksIHVuZGVmaW5lZCk7CisKKyAgICAv
LyBjYW4ndCBwYXNzIG9iamVjdHMgaW50byBhIHNoYWRvdyByZWFsbS13cmFwcGVkIGZ1bmN0aW9u
CisgICAgbGV0IG51bWJlck9iaiA9IHsgdmFsdWVPZigpIHsgcmV0dXJuIC0xIH0gfTsKKyAgICBz
aG91bGRUaHJvdygKKyAgICAgICgpID0+IHsgd3JhcHBlZEludm9rZUFuZEFkZChudW1iZXJPYmos
IDEpOyB9LAorICAgICAgVHlwZUVycm9yLAorICAgICAgKGVycikgPT4geworICAgICAgICAgIHNo
b3VsZEJlKCQuZ2xvYmFsT2JqZWN0Rm9yKGVyciksIGdsb2JhbFRoaXMpOworICAgICAgICAgIHNo
b3VsZEJlKFN0cmluZyhlcnIpLCAiVHlwZUVycm9yOiB2YWx1ZSBwYXNzaW5nIGJldHdlZW4gcmVh
bG1zIG11c3QgYmUgY2FsbGFibGUgb3IgcHJpbWl0aXZlIik7CisgICAgICB9KTsKK30KKworewor
ICAgIGxldCByZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOworICAgIC8vIGNhbid0IGNhbGwgYGV2
YWx1YXRlYCBvbiBhIG5vbiBzaGFkb3cgcmVhbG0KKyAgICBsZXQgbm90UmVhbG0gPSB7fTsKKyAg
ICBzaG91bGRUaHJvdygKKyAgICAgICgpID0+IHsgcmVhbG0uZXZhbHVhdGUuY2FsbChub3RSZWFs
bSwgJzEnKTsgfSwKKyAgICAgIFR5cGVFcnJvciwKKyAgICAgIChlcnIpID0+IHsgc2hvdWxkQmUo
JC5nbG9iYWxPYmplY3RGb3IoZXJyKSwgZ2xvYmFsVGhpcyk7IH0KKyAgICApOworfQorCisvLyB0
cmlnZ2VyIEpJVAoreworICAgIGZ1bmN0aW9uIGRvRXZhbChyZWFsbSwgcykKKyAgICB7CisgICAg
ICAgIHJldHVybiByZWFsbS5ldmFsdWF0ZShzKTsKKyAgICB9CisKKyAgICBub0lubGluZShkb0V2
YWwpOworCisgICAgbGV0IHJlYWxtID0gbmV3IFNoYWRvd1JlYWxtKCk7CisgICAgcmVhbG0uZXZh
bHVhdGUoImdsb2JhbFRoaXMuc2VjcmV0ID0gMTsiKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDAwOyArK2kpCisgICAgICAgIHNob3VsZEJlKGRvRXZhbChyZWFsbSwgJzQyJyksIDQyKTsK
KworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxldCBmID0g
ZG9FdmFsKHJlYWxtLCAnKHgpID0+IHsgcmV0dXJuIHgoKSArIGdsb2JhbFRoaXMuc2VjcmV0OyB9
Jyk7CisgICAgICAgIHNob3VsZEJlKCQuZ2xvYmFsT2JqZWN0Rm9yKGYpLCBnbG9iYWxUaGlzKTsK
KyAgICAgICAgc2hvdWxkQmUoZigoKSA9PiB7IHJldHVybiA0MTsgfSksIDQyKTsKKyAgICB9Cisg
ICAgLy8gKHBvdGVudGlhbCkgaW5saW5pbmcgb2Ygd3JhcHBlZCBmdW5jdGlvbiB1c2VzIGNvcnJl
Y3QgZ2xvYmFsIG9iamVjdAorICAgIGxldCBmID0gZG9FdmFsKHJlYWxtLCAnKHgpID0+IHsgcmV0
dXJuIHgoKSArIGdsb2JhbFRoaXMuc2VjcmV0OyB9Jyk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwMDsgKytpKSB7CisgICAgICAgIHNob3VsZEJlKCQuZ2xvYmFsT2JqZWN0Rm9yKGYpLCBn
bG9iYWxUaGlzKTsKKyAgICAgICAgc2hvdWxkQmUoZigoKSA9PiB7IHJldHVybiA0MTsgfSksIDQy
KTsKKyAgICB9CisgICAgLy8gKHBvdGVudGlhbCkgaW5saW5pbmcgaW5zaWRlIGEgcmVhbG0gdXNl
cyBjb3JyZWN0IGdsb2JhbCBvYmplY3QKKyAgICBsZXQgbG9vcEluc2lkZSA9IGRvRXZhbChyZWFs
bSwgJyh4KSA9PiB7IGxldCBhY2MgPSAwOyBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kp
IHsgYWNjICs9IHgoKTsgfTsgcmV0dXJuIGFjYzsgfScpOworICAgIGdsb2JhbFRoaXMuc2VjcmV0
ID0gLTE7CisgICAgc2hvdWxkQmUobG9vcEluc2lkZSgoKSA9PiB7IHJldHVybiBnbG9iYWxUaGlz
LnNlY3JldDsgfSksIC0xMDAwMCk7Cit9CisKKy8vIGV2YWx1YXRlIHNwZWNzCit7CisgICAgc2hv
dWxkQmUodHlwZW9mIFNoYWRvd1JlYWxtLnByb3RvdHlwZS5ldmFsdWF0ZSwgImZ1bmN0aW9uIik7
CisKKyAgICBsZXQgZXZhbHVhdGVOYW1lID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihTaGFkb3dSZWFsbS5wcm90b3R5cGUuZXZhbHVhdGUsICJuYW1lIik7CisgICAgc2hvdWxkQmUo
ZXZhbHVhdGVOYW1lLnZhbHVlLCAiZXZhbHVhdGUiKTsKKyAgICBzaG91bGRCZShldmFsdWF0ZU5h
bWUuZW51bWVyYWJsZSwgZmFsc2UpOworICAgIHNob3VsZEJlKGV2YWx1YXRlTmFtZS53cml0YWJs
ZSwgZmFsc2UpOworICAgIHNob3VsZEJlKGV2YWx1YXRlTmFtZS5jb25maWd1cmFibGUsIHRydWUp
OworCisgICAgbGV0IGV2YWx1YXRlTGVuZ3RoID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihTaGFkb3dSZWFsbS5wcm90b3R5cGUuZXZhbHVhdGUsICJsZW5ndGgiKTsKKyAgICBzaG91
bGRCZShldmFsdWF0ZUxlbmd0aC52YWx1ZSwgMSk7CisgICAgc2hvdWxkQmUoZXZhbHVhdGVMZW5n
dGguZW51bWVyYWJsZSwgZmFsc2UpOworICAgIHNob3VsZEJlKGV2YWx1YXRlTGVuZ3RoLndyaXRh
YmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoZXZhbHVhdGVMZW5ndGguY29uZmlndXJhYmxlLCB0
cnVlKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3NoYWRvdy1yZWFsbS1pbXBvcnQt
dmFsdWUuanMgYi9KU1Rlc3RzL3N0cmVzcy9zaGFkb3ctcmVhbG0taW1wb3J0LXZhbHVlLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmY0M2NkOGU2MjNmMWY2ZDEzOTMxYzdiOWRiOGRkZTMwODQ2MDhhODUKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zaGFkb3ctcmVhbG0taW1wb3J0LXZhbHVlLmpz
CkBAIC0wLDAgKzEsMTQ4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlU2hhZG93UmVhbG09
MSIpCisKK3ZhciBhYm9ydCA9ICR2bS5hYm9ydDsKKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9YCk7Cit9
CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yVHlwZSkgeworICAgIGxldCBlcnJv
cjsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICBlcnJvciA9IGU7CisgICAgfQorCisgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBlcnJvclR5
cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7ZXJyb3JUeXBlLm5hbWV9
ISBnb3QgJHtlcnJvci5uYW1lfWApOworfQorCithc3luYyBmdW5jdGlvbiBzaG91bGRUaHJvd0Fz
eW5jKGZ1bmMsIGVycm9yVHlwZSkgeworICAgIGxldCBlcnJvcjsKKyAgICB0cnkgeworICAgICAg
ICBhd2FpdCBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7Cisg
ICAgfQorCisgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7ZXJyb3JUeXBlLm5hbWV9ISBnb3QgJHtlcnJvci5u
YW1lfSB3aXRoIG1lc3NhZ2UgJHtlcnJvci5tZXNzYWdlfWApOworfQorCisoYXN5bmMgZnVuY3Rp
b24gKCkgeworICAgIGNvbnN0IGltcG9ydFBhdGggPSAiLi9yZXNvdXJjZXMvc2hhZG93LXJlYWxt
LWV4YW1wbGUtbW9kdWxlLmpzIjsKKyAgICBjb25zdCB7IGFuc3dlciwgZ2V0Q2FsbENvdW50LCBw
dXRJbkdsb2JhbCwgZ2V0RnJvbUdsb2JhbCwgZ2V0QW5PYmplY3QgfSA9IGF3YWl0IGltcG9ydChp
bXBvcnRQYXRoKTsKKyAgICBjb25zdCBvdXRlckFuc3dlciA9IGFuc3dlcjsKKyAgICBjb25zdCBv
dXRlckdldENhbGxDb3VudCA9IGdldENhbGxDb3VudDsKKyAgICBjb25zdCBvdXRlclB1dEluR2xv
YmFsID0gcHV0SW5HbG9iYWw7CisgICAgY29uc3Qgb3V0ZXJHZXRGcm9tR2xvYmFsID0gZ2V0RnJv
bUdsb2JhbDsKKyAgICBjb25zdCBvdXRlckdldEFuT2JqZWN0ID0gZ2V0QW5PYmplY3Q7CisKKyAg
ICB7CisgICAgICAgIGxldCByZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOworCisgICAgICAgIC8v
IHVwZGF0ZSBsb2NhbCBtb2R1bGUgc3RhdGUgKyBjaGVjayBpdAorICAgICAgICBzaG91bGRCZShv
dXRlckdldENhbGxDb3VudCgpLCAwKTsKKyAgICAgICAgb3V0ZXJHZXRBbk9iamVjdCgpOworICAg
ICAgICBzaG91bGRCZShvdXRlckdldENhbGxDb3VudCgpLCAxKTsKKyAgICAgICAgLy8gdXBkYXRl
IHJlYWxtIG1vZHVsZSBzdGF0ZSArIGNoZWNrIGl0CisgICAgICAgIGxldCBpbm5lckdldENhbGxD
b3VudCA9IGF3YWl0IHJlYWxtLmltcG9ydFZhbHVlKGltcG9ydFBhdGgsICJnZXRDYWxsQ291bnQi
KTsKKyAgICAgICAgbGV0IGlubmVyUHV0SW5HbG9iYWwgPSBhd2FpdCByZWFsbS5pbXBvcnRWYWx1
ZShpbXBvcnRQYXRoLCAicHV0SW5HbG9iYWwiKTsKKyAgICAgICAgc2hvdWxkQmUoaW5uZXJHZXRD
YWxsQ291bnQoKSwgMCk7CisgICAgICAgIGlubmVyUHV0SW5HbG9iYWwoInNvbWV0aGluZyIsICJy
YW5kb20iKTsKKyAgICAgICAgc2hvdWxkQmUoaW5uZXJHZXRDYWxsQ291bnQoKSwgMSk7CisgICAg
ICAgIC8vIHJlLWltcG9ydGluZyB0aGUgbW9kdWxlIGludG8gdGhlIHJlYWxtIGRvZXNuJ3QgcmVs
b2FkIHRoZSBtb2R1bGUKKyAgICAgICAgaW5uZXJHZXRDYWxsQ291bnQgPSBhd2FpdCByZWFsbS5p
bXBvcnRWYWx1ZShpbXBvcnRQYXRoLCAiZ2V0Q2FsbENvdW50Iik7CisgICAgICAgIHNob3VsZEJl
KGlubmVyR2V0Q2FsbENvdW50KCksIDEpOworICAgICAgICAvLyB0aGUgKG91dGVyKSBsb2NhbCBt
b2R1bGUgc3RhdGUgc3RheXMgaW50YWN0CisgICAgICAgIHNob3VsZEJlKG91dGVyR2V0Q2FsbENv
dW50KCksIDEpOworCisgICAgICAgIC8vIG9uZSBjYW4gaW1wb3J0ZWQgcHJpbWl0aXZlL2NhbGxh
YmxlIHZhcmlhYmxlcyBqdXN0IGZpbmUKKyAgICAgICAgLy8gc2hvdWxkQmUoaW5uZXJBbnN3ZXIs
IG91dGVyQW5zd2VyKTsKKyAgICAgICAgbGV0IGlubmVyQW5zd2VyID0gYXdhaXQgcmVhbG0uaW1w
b3J0VmFsdWUoaW1wb3J0UGF0aCwgImFuc3dlciIpOworICAgICAgICBzaG91bGRCZShpbm5lckFu
c3dlciwgb3V0ZXJBbnN3ZXIpOworCisgICAgICAgIC8vIGltcG9ydGVkIHZhcmlhYmxlcyBhcmUg
Y2hlY2tlZCBmb3IgcHJpbXRpdmUvY2FsbGFibGUtbmVzcworICAgICAgICBhd2FpdCBzaG91bGRU
aHJvd0FzeW5jKGFzeW5jICgpID0+IHsgbGV0IHggPSBhd2FpdCByZWFsbS5pbXBvcnRWYWx1ZShp
bXBvcnRQYXRoLCAiYW5PYmplY3QiKTsgfSwgVHlwZUVycm9yKTsKKworICAgICAgICAvLyBpbXBv
cnRpbmcgbm9uLWV4aXN0ZW50IHJlZiBmYWlscworICAgICAgICBhd2FpdCBzaG91bGRUaHJvd0Fz
eW5jKGFzeW5jICgpID0+IHsgbGV0IHggPSBhd2FpdCByZWFsbS5pbXBvcnRWYWx1ZShpbXBvcnRQ
YXRoLCAibm90aGluZyIpOyB9LCBUeXBlRXJyb3IpOworCisgICAgICAgIC8vIGltcG9ydGluZyBm
cm9tIG5vbi1leGlzdGVudCBmaWxlIGZhaWxzCisgICAgICAgIGF3YWl0IHNob3VsZFRocm93QXN5
bmMoYXN5bmMgKCkgPT4geyBsZXQgeCA9IGF3YWl0IHJlYWxtLmltcG9ydFZhbHVlKCJyYW5kb20i
LCAibm90aGluZyIpOyB9LCBUeXBlRXJyb3IpOworCisgICAgICAgIC8vIHdlIGNhbiBpbXBvcnQg
ZnVuY3Rpb25zIHRocm91Z2ggYW4gaW5uZXIgcmVhbG0gZm9yIHVzZSBpbiB0aGUgb3V0ZXIKKyAg
ICAgICAgbGV0IGlubmVyR2V0RnJvbUdsb2JhbCA9IGF3YWl0IHJlYWxtLmltcG9ydFZhbHVlKGlt
cG9ydFBhdGgsICJnZXRGcm9tR2xvYmFsIik7CisgICAgICAgIGlubmVyUHV0SW5HbG9iYWwoInNh
bHV0YXRpb24iLCAic2FyYXZhIik7CisgICAgICAgIHNob3VsZEJlKGlubmVyR2V0RnJvbUdsb2Jh
bCgic2FsdXRhdGlvbiIpLCAic2FyYXZhIik7CisKKyAgICAgICAgLy8gaW5uZXIgZ2xvYmFsIHN0
YXRlIGlzIHVuY2hhbmdlZCBieSBvdXRlciBnbG9iYWwgc3RhdGUgY2hhbmdlCisgICAgICAgIG91
dGVyUHV0SW5HbG9iYWwoInNhbHV0YXRpb24iLCAiaGVsbG8gd29ybGQhIik7CisgICAgICAgIHNo
b3VsZEJlKG91dGVyR2V0RnJvbUdsb2JhbCgic2FsdXRhdGlvbiIpLCAiaGVsbG8gd29ybGQhIik7
CisgICAgICAgIHNob3VsZEJlKGlubmVyR2V0RnJvbUdsb2JhbCgic2FsdXRhdGlvbiIpLCAic2Fy
YXZhIik7CisKKyAgICAgICAgLy8gd3JhcHBlZCBmdW5jdGlvbnMgY2hlY2sgYXJndW1lbnRzIGZv
ciBwcmltaXRpdmUvY2FsbGFibGUtbmVzcworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IGlu
bmVyUHV0SW5HbG9iYWwoInRyZWFzdXJlIiwgbmV3IE9iamVjdCgpKTsgfSwgVHlwZUVycm9yKTsK
KworICAgICAgICAvLyBpbXBvcnRlZCBmdW5jdGlvbnMgYXJlIHdyYXBwZWQgd2l0aCBjb3JyZWN0
IHJldHVybiB2YWx1ZSBjaGVja3MKKyAgICAgICAgbGV0IGdldEFuT2JqZWN0Rm4gPSBhd2FpdCBy
ZWFsbS5pbXBvcnRWYWx1ZShpbXBvcnRQYXRoLCAiZ2V0QW5PYmplY3QiKTsKKyAgICAgICAgc2hv
dWxkVGhyb3coKCkgPT4geyBnZXRBbk9iamVjdEZuKCk7IH0sIFR5cGVFcnJvcik7CisKKyAgICAg
ICAgLy8gdGhyZWFkIGEgZnVuY3Rpb24gaW4gYW5kIG91dCBvZiBhIHJlYWxtIHRvIHdyYXAgaXQg
dXAKKyAgICAgICAgaW5uZXJQdXRJbkdsb2JhbCgib3V0ZXItcmVhbG0tcHV0Iiwgb3V0ZXJQdXRJ
bkdsb2JhbCk7CisgICAgICAgIHdyYXBwZWRPdXRlclB1dEluR2xvYmFsID0gaW5uZXJHZXRGcm9t
R2xvYmFsKCJvdXRlci1yZWFsbS1wdXQiKTsKKworICAgICAgICAvLyBpdCBzdGlsbCBtYW5pcHVh
dGVzIHRoZSBjb3JyZWN0IGdsb2JhbCBvYmplY3Qgc3RhdGUKKyAgICAgICAgd3JhcHBlZE91dGVy
UHV0SW5HbG9iYWwoInRyZWFzdXJlIiwgInNoaW55IHRpbiBzY3JhcCIpOworICAgICAgICBzaG91
bGRCZShvdXRlckdldEZyb21HbG9iYWwoInRyZWFzdXJlIiksICJzaGlueSB0aW4gc2NyYXAiKTsK
KworICAgICAgICAvLyB3cmFwcGVkIGZ1bmN0aW9ucyBjaGVjayBhcmd1bWVudHMgZm9yIHByaW1p
dGl2ZS9jYWxsYWJsZS1uZXNzCisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgd3JhcHBlZE91
dGVyUHV0SW5HbG9iYWwoInRyZWFzdXJlIiwgbmV3IE9iamVjdCgpKTsgfSwgVHlwZUVycm9yKTsK
KyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyB3cmFwcGVkT3V0ZXJQdXRJbkdsb2JhbChuZXcg
T2JqZWN0KCksICJzaGlueSB0aW4gc2NyYXAiKTsgfSwgVHlwZUVycm9yKTsKKworICAgICAgICAv
LyBtdXN0IGJlIGNhbGxlZCBvbiBhIFNoYWRvd1JlYWxtCisgICAgICAgIGxldCBub3RSZWFsbSA9
IHt9OworICAgICAgICBzaG91bGRUaHJvdygKKyAgICAgICAgICAoKSA9PiB7IHJlYWxtLmltcG9y
dFZhbHVlLmNhbGwobm90UmVhbG0sIGltcG9ydFBhdGgsICJhbnN3ZXIiKTsgfSwKKyAgICAgICAg
ICBUeXBlRXJyb3IsCisgICAgICAgICAgKGVycikgPT4geyBzaG91bGRCZSgkLmdsb2JhbE9iamVj
dEZvcihlcnIpLCBnbG9iYWxUaGlzKTsgfQorICAgICAgICApOworICAgIH0KKworICAgIC8vIHRy
aWdnZXIgSklUCisgICAgeworICAgICAgICBmdW5jdGlvbiBkb0ltcG9ydChyZWFsbSwgcykKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHJlYWxtLmltcG9ydFZhbHVlKGltcG9ydFBhdGgs
IHMpOworICAgICAgICB9CisKKyAgICAgICAgbm9JbmxpbmUoZG9JbXBvcnQpOworCisgICAgICAg
IGxldCByZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOworICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBkb0ltcG9y
dChyZWFsbSwgImdldENhbGxDb3VudCIpOworICAgICAgICAgICAgc2hvdWxkQmUocmVzdWx0KCks
IDApOworICAgICAgICB9CisgICAgfQorfSgpKS5jYXRjaCgoZXJyb3IpID0+IHsKKyAgICBwcmlu
dChTdHJpbmcoZXJyb3IpKTsKKyAgICBhYm9ydCgpOworfSk7CisKK3sKKyAgICBzaG91bGRCZSh0
eXBlb2YgU2hhZG93UmVhbG0ucHJvdG90eXBlLmltcG9ydFZhbHVlLCAiZnVuY3Rpb24iKTsKKwor
ICAgIGxldCBpbXBvcnRWYWx1ZU5hbWUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KFNoYWRvd1JlYWxtLnByb3RvdHlwZS5pbXBvcnRWYWx1ZSwgIm5hbWUiKTsKKyAgICBzaG91bGRC
ZShpbXBvcnRWYWx1ZU5hbWUudmFsdWUsICJpbXBvcnRWYWx1ZSIpOworICAgIHNob3VsZEJlKGlt
cG9ydFZhbHVlTmFtZS5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoaW1wb3J0VmFs
dWVOYW1lLndyaXRhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoaW1wb3J0VmFsdWVOYW1lLmNv
bmZpZ3VyYWJsZSwgdHJ1ZSk7CisKKyAgICBsZXQgaW1wb3J0VmFsdWVMZW5ndGggPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFNoYWRvd1JlYWxtLnByb3RvdHlwZS5pbXBvcnRWYWx1
ZSwgImxlbmd0aCIpOworICAgIHNob3VsZEJlKGltcG9ydFZhbHVlTGVuZ3RoLnZhbHVlLCAyKTsK
KyAgICBzaG91bGRCZShpbXBvcnRWYWx1ZUxlbmd0aC5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAg
c2hvdWxkQmUoaW1wb3J0VmFsdWVMZW5ndGgud3JpdGFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRC
ZShpbXBvcnRWYWx1ZUxlbmd0aC5jb25maWd1cmFibGUsIHRydWUpOworfQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3Mvc2hhZG93LXJlYWxtLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc2hhZG93LXJl
YWxtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA2MmI4OGM2ZTM5NTk5NTYzNGQ3ZWQ4ZWY5ZTk5ZjJjM2ZkODg2
YTUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zaGFkb3ctcmVhbG0uanMKQEAg
LTAsMCArMSwzNiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVNoYWRvd1JlYWxtPTEiKQor
CitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgJHtleHBlY3Rl
ZH0gYnV0IGdvdCAke2FjdHVhbH1gKTsKK30KKworLy8gc2hhZG93IHJlYWxtIHNwZWNzCit7Cisg
ICAgbGV0IHNoYWRvd1JlYWxtUHJvcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
dGhpcywgIlNoYWRvd1JlYWxtIik7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1Qcm9wLmVudW1l
cmFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShzaGFkb3dSZWFsbVByb3Aud3JpdGFibGUsIHRy
dWUpOworICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtUHJvcC5jb25maWd1cmFibGUsIHRydWUpOwor
CisgICAgbGV0IHNoYWRvd1JlYWxtRXZhbHVhdGUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKFNoYWRvd1JlYWxtLnByb3RvdHlwZSwgImV2YWx1YXRlIik7CisgICAgc2hvdWxkQmUo
c2hhZG93UmVhbG1FdmFsdWF0ZS5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoc2hh
ZG93UmVhbG1FdmFsdWF0ZS53cml0YWJsZSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoc2hhZG93UmVh
bG1FdmFsdWF0ZS5jb25maWd1cmFibGUsIHRydWUpOworCisgICAgbGV0IHNoYWRvd1JlYWxtSW1w
b3J0VmFsdWUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFNoYWRvd1JlYWxtLnBy
b3RvdHlwZSwgImltcG9ydFZhbHVlIik7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1JbXBvcnRW
YWx1ZS5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1JbXBvcnRW
YWx1ZS53cml0YWJsZSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1JbXBvcnRWYWx1
ZS5jb25maWd1cmFibGUsIHRydWUpOworCisgICAgbGV0IHNoYWRvd1JlYWxtTmFtZSA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU2hhZG93UmVhbG0sICJuYW1lIik7CisgICAgc2hv
dWxkQmUoc2hhZG93UmVhbG1OYW1lLnZhbHVlLCAiU2hhZG93UmVhbG0iKTsKKyAgICBzaG91bGRC
ZShzaGFkb3dSZWFsbU5hbWUuZW51bWVyYWJsZSwgZmFsc2UpOworICAgIHNob3VsZEJlKHNoYWRv
d1JlYWxtTmFtZS53cml0YWJsZSwgZmFsc2UpOworICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtTmFt
ZS5jb25maWd1cmFibGUsIHRydWUpOworCisgICAgbGV0IHNoYWRvd1JlYWxtTGVuZ3RoID0gT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihTaGFkb3dSZWFsbSwgImxlbmd0aCIpOworICAg
IHNob3VsZEJlKHNoYWRvd1JlYWxtTGVuZ3RoLnZhbHVlLCAwKTsKKyAgICBzaG91bGRCZShzaGFk
b3dSZWFsbUxlbmd0aC5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoc2hhZG93UmVh
bG1MZW5ndGgud3JpdGFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShzaGFkb3dSZWFsbUxlbmd0
aC5jb25maWd1cmFibGUsIHRydWUpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2Nv
bmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IDg5MDhkY2VkYmIz
OTQ5N2RjMDE3ZGRkZWE2ZDMzODliMjhkNGZkZmQuLjk2MmQ1MjQ2MjUyNWFmYmIyOTZkOWFjZmQ2
ZDhhMGExNDRmMjBiMzQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAor
KysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKQEAgLTksNiArOSw3IEBAIGZsYWdzOgog
ICBUZW1wb3JhbDogdXNlVGVtcG9yYWwKICAgYXJyYXktZmluZC1mcm9tLWxhc3Q6IHVzZUFycmF5
RmluZExhc3RNZXRob2QKICAgT2JqZWN0Lmhhc093bjogdXNlSGFzT3duCisgIFNoYWRvd1JlYWxt
OiB1c2VTaGFkb3dSZWFsbQogc2tpcDoKICAgZmVhdHVyZXM6CiAgICAgLSBBdG9taWNzLndhaXRB
c3luYwpAQCAtMjAsNyArMjEsNiBAQCBza2lwOgogICAgIC0ganNvbi1tb2R1bGVzCiAgICAgLSBj
bGFzcy1zdGF0aWMtYmxvY2sKICAgICAtIGNhbGxhYmxlLWJvdW5kYXJ5LXJlYWxtcwotICAgIC0g
U2hhZG93UmVhbG0KICAgcGF0aHM6CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9DYWxl
bmRhcgogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441193</attachid>
            <date>2021-10-14 02:11:46 -0700</date>
            <delta_ts>2021-10-18 21:07:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230602-20211014111146.patch</filename>
            <type>text/plain</type>
            <size>87222</size>
            <attacher name="Phillip Mates">pmates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzODg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
M2MwNGU4MGUzNGNjMjQ3ZGJiMDU5YmI5Mzg1MWZhN2YxNzUzZTVkLi5lY2YxZjEwODVlMDVkMzE3
ZmU4OTk1YzBiNWY1M2Q1MDY2MDQ4OGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MiBAQAorMjAyMS0xMC0xNCAgUGhpbGxpcCBNYXRlcyAgPHBtYXRlc0BpZ2FsaWEuY29t
PgorCisgICAgICAgIHNoYWRvdyByZWFsbXMgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDYwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgSW1wbGVtZW50YXRpb24gb2YgdGhlIFNo
YWRvdyBSZWFsbXMgcHJvcG9zYWwgKHN0YWdlIDMgaW4gVEMzOSkgWzFdCisKKyAgICAgICAgTWFp
biBBUElzIGFkZGVkIGFyZQorICAgICAgICAgLSBgbmV3IFNoYWRvd1JlYWxtKClgCisgICAgICAg
ICAgIGNyZWF0ZXMgYW4gb2JqZWN0IHRoYXQgaGFzIGl0cyBvd24gZ2xvYmFsIG9iamVjdCBhbmQg
bW9kdWxlIGdyYXBoLgorICAgICAgICAgLSBTaGFkb3dSZWFsbS5wcm90b3R5cGUuZXZhbHVhdGUo
c291cmNlVGV4dCkKKyAgICAgICAgICAgdGhpcyBhbGxvd3MgZm9yIGV2YWx1YXRpbmcgY29kZSBp
biB0aGUgY29udGV4dCBvZiB0aGUgcmVhbG0sIHdoaWNoCisgICAgICAgICAgIGhhcyBpdHMgb3du
IG1vZHVsZSBncmFwaCBhbmQgZ2xvYmFsIG9iamVjdC4KKyAgICAgICAgIC0gU2hhZG93UmVhbG0u
cHJvdG90eXBlLmltcG9ydFZhbHVlKHNwZWNpZmllciwgZXhwb3J0TmFtZSkKKyAgICAgICAgICAg
dGhpcyBhbGxvd3MgaW1wb3J0aW5nIG1vZHVsZSBleHBvcnRzIGluIHRoZSB0aGUgY29udGV4dCBv
ZiB0aGUKKyAgICAgICAgICAgcmVhbG0sIHdoaWNoIGhhcyBpdHMgb3duIG1vZHVsZSBncmFwaCBh
bmQgZ2xvYmFsIG9iamVjdC4KKworICAgICAgICBUaGUgbWFpbiBkZXRhaWwgb2YgdGhlIFNoYWRv
dyBSZWFsbSBpbXBsZW1lbnRhdGlvbiBpcyB0aGF0IHZhbHVlcworICAgICAgICBwYXNzZWQgYmV0
d2VlbiByZWFsbXMgbXVzdCBiZSBlaXRoZXIgcHJpbWl0aXZlcyBvciB3cmFwcGVkIGNhbGxhYmxl
cy4KKyAgICAgICAgV3JhcHBlZCBjYWxsYWJsZXMgdGhlbXNlbHZlcyBhcmUgY2FsbGFibGVzIHRo
YXQgY2hlY2sgdGhhdCB0aGVpcgorICAgICAgICBhcmd1bWVudHMgYW5kIHJldHVybiB2YWx1ZXMg
YXJlIGFsc28gZWl0aGVyIHByaW1pdGl2ZXMgb3Igd3JhcHBlZAorICAgICAgICBjYWxsYWJsZXMu
IFRoaXMgZGV0YWlsIGlzIGltcGxlbWVudGVkIHZpYSBKUyBidWlsdGlucyArIGEgZmV3IG5ldwor
ICAgICAgICBpbnRyaW5zaWNzLgorCisgICAgICAgIENhbiBiZSBlbmFibGVkIHVzaW5nIGAtLXVz
ZVNoYWRvd1JlYWxtPXRydWVgCisKKyAgICAgICAgWzFdOiBodHRwczovL2dpdGh1Yi5jb20vdGMz
OS9wcm9wb3NhbC1zaGFkb3dyZWFsbQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtl
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6
CisgICAgICAgICogYnVpbHRpbnMvU2hhZG93UmVhbG1Qcm90b3R5cGUuanM6IEFkZGVkLgorICAg
ICAgICAoZ2xvYmFsUHJpdmF0ZS53cmFwLndyYXBwZWQpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0
ZS53cmFwKToKKyAgICAgICAgKGV2YWx1YXRlKToKKyAgICAgICAgKGltcG9ydFZhbHVlKToKKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgICog
Ynl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdElz
U2hhZG93UmVhbG0pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgor
ICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgor
ICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNw
cDoKKyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlSW1wbCk6Cisg
ICAgICAgIChKU0M6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OnRyeUNyZWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVdpdGhDdXN0b21NZXRob2RUYWJsZSk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
c2hhZG93UmVhbG1Qcm90b3R5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6c2hhZG93UmVhbG1TdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmNwcDoKKyAgICAgICAgKFdURjo6cHJp
bnRJbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKyAgICAgICAgKiBydW50
aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9TaGFkb3dSZWFsbUNvbnN0cnVj
dG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlNoYWRvd1JlYWxtQ29uc3RydWN0b3I6OlNo
YWRvd1JlYWxtQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpTaGFkb3dSZWFsbUNvbnN0cnVj
dG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTik6CisgICAgICAgICogcnVudGltZS9TaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmg6IEFkZGVk
LgorICAgICAgICAqIHJ1bnRpbWUvU2hhZG93UmVhbG1PYmplY3QuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6U2hhZG93UmVhbG1PYmplY3Q6OlNoYWRvd1JlYWxtT2JqZWN0KToKKyAgICAgICAg
KEpTQzo6U2hhZG93UmVhbG1PYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKEpT
Qzo6U2hhZG93UmVhbG1PYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlNoYWRvd1JlYWxt
T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9TaGFkb3dSZWFsbU9i
amVjdC5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmNw
cDogQWRkZWQuCisgICAgICAgIChKU0M6OlNoYWRvd1JlYWxtUHJvdG90eXBlOjpTaGFkb3dSZWFs
bVByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OlNoYWRvd1JlYWxtUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAg
ICAgICogcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBy
dW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMjEtMTAtMTEgIEdl
emEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ11bMzJiaXRdIEZpeCBw
cm9maWxpbmcgaW4gYmFzZWxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCBmNDJmZDhiNjc5Y2NkYmMwMjFlYWMyNTA4ZmYxYTZhMmU3MGFhYjA1Li5lYTM4NmFiNDg4OGY1
ZGIyNTY3ZmEwNjYxY2VjNTU5MjQ4ZWYzY2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC0xMDMsNiArMTAzLDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX09CSkVDVF9MVVRf
U09VUkNFUwogICAgIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvUmVn
RXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9TZXRQcm90b3R5cGUu
Y3BwCisgICAgcnVudGltZS9TaGFkb3dSZWFsbU9iamVjdC5jcHAKKyAgICBydW50aW1lL1NoYWRv
d1JlYWxtUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCiAg
ICAgcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9TeW1ib2xDb25zdHJ1
Y3Rvci5jcHAKQEAgLTM3Myw2ICszNzUsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNf
U09VUkNFUwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9SZWdFeHBTdHJpbmdJ
dGVyYXRvclByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9T
ZXRJdGVyYXRvclByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlu
cy9TZXRQcm90b3R5cGUuanMKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvU2hh
ZG93UmVhbG1Qcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMv
U3RyaW5nQ29uc3RydWN0b3IuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMv
U3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVp
bHRpbnMvU3RyaW5nUHJvdG90eXBlLmpzCkBAIC0xMTU2LDYgKzExNTksNyBAQCBzZXQoSmF2YVNj
cmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJ1bnRpbWUvU2NyaXB0RXhl
Y3V0YWJsZS5oCiAgICAgcnVudGltZS9TY3JpcHRGZXRjaFBhcmFtZXRlcnMuaAogICAgIHJ1bnRp
bWUvU2NyaXB0RmV0Y2hlci5oCisgICAgcnVudGltZS9TaGFkb3dSZWFsbU9iamVjdC5oCiAgICAg
cnVudGltZS9TbG93UGF0aEZ1bmN0aW9uLmgKICAgICBydW50aW1lL1Nsb3dQYXRoUmV0dXJuVHlw
ZS5oCiAgICAgcnVudGltZS9TbWFsbFN0cmluZ3MuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCAwNmIyMTc1MTJj
NmZiYzJkODUyNzI0YWFhNzZmYTU3OTRlM2RhZDZjLi45MjJjNWM0N2U0M2Y2MzkxMWVhNzM4ZTU3
MDRjZmRlNjg3NDBmNGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtNTAsNiArNTAsNyBAQCAkKFBST0pFQ1Rf
RElSKS9idWlsdGlucy9SZWdFeHBQcm90b3R5cGUuanMKICQoUFJPSkVDVF9ESVIpL2J1aWx0aW5z
L1JlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmpzCiAkKFBST0pFQ1RfRElSKS9idWlsdGlu
cy9TZXRJdGVyYXRvclByb3RvdHlwZS5qcwogJChQUk9KRUNUX0RJUikvYnVpbHRpbnMvU2V0UHJv
dG90eXBlLmpzCiskKFBST0pFQ1RfRElSKS9idWlsdGlucy9TaGFkb3dSZWFsbVByb3RvdHlwZS5q
cwogJChQUk9KRUNUX0RJUikvYnVpbHRpbnMvU3RyaW5nQ29uc3RydWN0b3IuanMKICQoUFJPSkVD
VF9ESVIpL2J1aWx0aW5zL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmpzCiAkKFBST0pFQ1RfRElS
KS9idWlsdGlucy9TdHJpbmdQcm90b3R5cGUuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBjYjA1ZDgyMTYy
YWQ5YzRjZmY2NGNhMThjYWVhZTE4NzFiZWM2ZjYyLi4xMTIyOWQ1N2IyYjNiZTg4ZjE4MGNjNmU4
MDcxNzM1ZWU0Y2ZhOWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC02Miw2ICs2Miw4IEBAICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9SZWZsZWN0T2JqZWN0
Lmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvUmVnRXhwQ29uc3RydWN0b3IubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9SZWdFeHBKaXRUYWJsZXMuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1NldFByb3RvdHlwZS5sdXQuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1NoYWRv
d1JlYWxtT2JqZWN0Lmx1dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvU2hhZG93UmVhbG1Qcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9TdHJpbmdDb25zdHJ1Y3Rvci5s
dXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L1N0cmluZ1Byb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL1N5bWJvbENvbnN0cnVjdG9yLmx1dC5oCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDc4OTc1NmYxMGY4YmRiODBjNTJmNGJl
OTgwZjUzZjQ5MmEyZDFkNGIuLjY1YjczN2FjMTQwMGZmNTM3YjI3ZTMwOTI2YzFhZjEyMDMyNjI3
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMjIs
NiArMTIyLDcgQEAgSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKICAgICAke0ph
dmFTY3JpcHRDb3JlfS9idWlsdGlucy9SZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5qcyBc
CiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvU2V0SXRlcmF0b3JQcm90b3R5cGUuanMg
XAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1NldFByb3RvdHlwZS5qcyBcCisgICAg
JChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvU2hhZG93UmVhbG1Qcm90b3R5cGUuanMgXAogICAg
ICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1N0cmluZ0NvbnN0cnVjdG9yLmpzIFwKICAgICAk
KEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5qcyBcCiAg
ICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvU3RyaW5nUHJvdG90eXBlLmpzIFwKQEAgLTE4
Nyw2ICsxODgsNyBAQCBPQkpFQ1RfTFVUX0hFQURFUlMgPSBcCiAgICAgUmVmbGVjdE9iamVjdC5s
dXQuaCBcCiAgICAgUmVnRXhwQ29uc3RydWN0b3IubHV0LmggXAogICAgIFNldFByb3RvdHlwZS5s
dXQuaCBcCisgICAgU2hhZG93UmVhbG1Qcm90b3R5cGUubHV0LmggXAogICAgIFN0cmluZ0NvbnN0
cnVjdG9yLmx1dC5oIFwKICAgICBTdHJpbmdQcm90b3R5cGUubHV0LmggXAogICAgIFN5bWJvbENv
bnN0cnVjdG9yLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzU4Yjg2
YmU0YTFmOTVkMzRlOWRjYTE5ODRhYmFmNjAzMGU5YjVlYi4uMGI5YTIzMGU2YjkyMWNmZmZhNDQ2
MDVlZGM0YmFkZjMzMDkxMzBiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEy
NjIsNiArMTI2Miw5IEBACiAJCTg2MDE2MUUzMEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NjAxNjFERjBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2MDE2
MUU1MEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxRTEwRjNBODNDMTAwRjg0
NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODYwMTYxRTYwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NjAxNjFFMjBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk4NjAyOTYwMjI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMjk1RkMyNkZC
NTUyQzAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtQ29uc3RydWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NjAyOTYwNDI2RkI1NTJEMDA3OEVC
NjIgLyogU2hhZG93UmVhbG1PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2MDI5NUZFMjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbU9i
amVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTg2MDI5NjA1MjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbVByb3RvdHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMjk1RkYyNkZCNTUy
RDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODYwNkRERUExOERBNDRBQjAwQTM4M0QwIC8q
IElkZW50aWZpZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NjA2RERFOTE4REE0NEFCMDBBMzgzRDAgLyogSWRlbnRpZmllcklubGluZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjBC
RDgwMTE0OEVBNkYyMDAxMTJCMkYgLyogSW50cmluc2ljLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJGNjQyQTE0OERCMkI1MDA0REUzNkEgLyogSW50
cmluc2ljLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJODYxMkU0Q0QxNTIzODlFQzAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjEyRTRDQjE1MjI5MTg0MDBDODM2
QkUgLyogTWF0Y2hSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtNDI0MCw2ICs0MjQzLDEyIEBACiAJCTg2MDE2MURGMEYzQTgzQzEwMEY4
NDcxMCAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2XzY0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyWDg2XzY0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2MDE2MUUyMEYzQTgzQzEwMEY4NDcx
MCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4NjAyOTVGQTI2RkI1NTJDMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Qcm90b3R5cGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhZG93UmVhbG1Qcm90
b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjAyOTVGQjI2RkI1NTJD
MDA3OEVCNjIgLyogU2hhZG93UmVhbG1PYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2hhZG93UmVhbG1PYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4NjAyOTVGQzI2RkI1NTJDMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Db25zdHJ1
Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkb3dSZWFsbUNvbnN0
cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MDI5NUZEMjZGQjU1MkQw
MDc4RUI2MiAvKiBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNoYWRvd1JlYWxtQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4NjAyOTVGRTI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVh
bG1PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhZG93UmVhbG1P
YmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYwMjk1RkYyNkZCNTUyRDAw
NzhFQjYyIC8qIFNoYWRvd1JlYWxtUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNoYWRvd1JlYWxtUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg2MDRGNEYyMTQzQTZDNDQwMEIyOTVGNSAvKiBDaGFuZ2VMb2cgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBsaW5lRW5kaW5nID0g
MDsgcGF0aCA9IENoYW5nZUxvZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYwNkRE
RTkxOERBNDRBQjAwQTM4M0QwIC8qIElkZW50aWZpZXJJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IElkZW50aWZpZXJJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTg2MTJFNENCMTUyMjkxODQwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRjaFJlc3VsdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNzk5MSw2ICs4MDAwLDEyIEBACiAJCQkJQTc5MERENjgxODJG
NDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggKi8sCiAJCQkJQTcyOTlEOUYx
N0QxMjg0ODAwNUY1RkY5IC8qIFNldFByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQTcyOTlEQTAxN0Qx
Mjg0ODAwNUY1RkY5IC8qIFNldFByb3RvdHlwZS5oICovLAorCQkJCTg2MDI5NUZEMjZGQjU1MkQw
MDc4RUI2MiAvKiBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQk4NjAyOTVGQzI2
RkI1NTJDMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5oICovLAorCQkJCTg2MDI5
NUZCMjZGQjU1MkMwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbU9iamVjdC5jcHAgKi8sCisJCQkJODYw
Mjk1RkUyNkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtT2JqZWN0LmggKi8sCisJCQkJODYw
Mjk1RkEyNkZCNTUyQzAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtUHJvdG90eXBlLmNwcCAqLywKKwkJ
CQk4NjAyOTVGRjI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Qcm90b3R5cGUuaCAqLywK
IAkJCQkwRjJCNjZENjE3QjZCNUFCMDBBN0FFM0YgLyogU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xs
ZXIuY3BwICovLAogCQkJCTBGMkI2NkQ3MTdCNkI1QUIwMEE3QUUzRiAvKiBTaW1wbGVUeXBlZEFy
cmF5Q29udHJvbGxlci5oICovLAogCQkJCUZFOEMwMzExMjY0QTY5MTAwMDFBNDRBRCAvKiBTbG93
UGF0aEZ1bmN0aW9uLmggKi8sCkBAIC0xMDcxMiw2ICsxMDcyNyw5IEBACiAJCQkJMEZFRTk4NDEx
QTg4NjVCNzAwNzU0RTkzIC8qIFNldHVwVmFyYXJnc0ZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlEQzE3RTgxODFDOUM5MUQ5MDA4QTZBQjMgLyogU2hhZG93Q2hpY2tlbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJREMxN0U4MTkxQzlDOTFEQjAwOEE2QUIzIC8qIFNoYWRvd0NoaWNrZW5JbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NjAyOTYwMjI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93
UmVhbG1Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODYwMjk2MDQyNkZCNTUyRDAw
NzhFQjYyIC8qIFNoYWRvd1JlYWxtT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NjAyOTYw
NTI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZFMzAyMkQzMUUzRDczQTUwMEJBQzQ5MyAvKiBTaWdpbGxDcmFzaEFuYWx5emVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjREOEM3ODFGQ0EzQ0ZBMDAxRDMyQUMgLyogU2ltcGxlTWFy
a2luZ0NvbnN0cmFpbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzA1MTdCNkI1QUIwMEE3
QUUzRiAvKiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggZjA0NDUxZDAzOGRiMzBjNzUxZjQ2YTlhNGQ3NDg2
M2NiNmIyZDg1NS4uZTBlMjNhMmYzNmMxMjVlOTY3ZjBlZmE1YzRkOWI5OGRhODhjZWMxMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtOTcwLDYgKzk3MCw5IEBAIHJ1bnRpbWUvUHJv
eHlDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwCiBydW50aW1lL1Byb3h5
UmV2b2tlLmNwcAogcnVudGltZS9SYW5kb21pemluZ0Z1enplckFnZW50LmNwcAorcnVudGltZS9T
aGFkb3dSZWFsbU9iamVjdC5jcHAKK3J1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5jcHAK
K3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuY3BwCiBydW50aW1lL1JlZmxlY3RPYmplY3Qu
Y3BwCiBydW50aW1lL1JlZ0V4cC5jcHAKIHJ1bnRpbWUvUmVnRXhwQ2FjaGUuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggMjliYzNhZTAx
MDQxMzBlNTFlYTJlMDlhZTM3ZDQwYmYwMjExMzE1YS4uY2VkMzBhOGVhOGY3MWY3YTAyYTYyZWI0
MmI1ZTE1NzY2Mjg5ZGEzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluTmFtZXMuaApAQCAtNjIsNiArNjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNy
byhOdW1iZXIpIFwKICAgICBtYWNybyhBcnJheSkgXAogICAgIG1hY3JvKEFycmF5QnVmZmVyKSBc
CisgICAgbWFjcm8oU2hhZG93UmVhbG0pIFwKICAgICBtYWNybyhSZWdFeHApIFwKICAgICBtYWNy
byhtaW4pIFwKICAgICBtYWNybyh0cnVuYykgXApAQCAtMTE1LDYgKzExNiw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIG1hY3JvKGFzeW5jR2VuZXJhdG9yUXVldWVJdGVtTmV4dCkgXAogICAgIG1h
Y3JvKGRhdGVUaW1lRm9ybWF0KSBcCiAgICAgbWFjcm8odGhpcykgXAorICAgIG1hY3JvKGltcG9y
dEluUmVhbG0pIFwKKyAgICBtYWNybyhldmFsSW5SZWFsbSkgXAogICAgIG1hY3JvKHRoaXNUaW1l
VmFsdWUpIFwKICAgICBtYWNybyhuZXdUYXJnZXRMb2NhbCkgXAogICAgIG1hY3JvKGRlcml2ZWRD
b25zdHJ1Y3RvcikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L1NoYWRvd1JlYWxtUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L1NoYWRvd1JlYWxtUHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjMDAzNTk3ZWY2MDgzNGNhMGI3
YWUwMDBjMDNmNTJhODRkZWY0YTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvU2hhZG93UmVhbG1Qcm90b3R5cGUuanMKQEAgLTAsMCArMSw4OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitAZ2xvYmFs
UHJpdmF0ZQorZnVuY3Rpb24gd3JhcCh0YXJnZXQpCit7CisgICAgInVzZSBzdHJpY3QiOworCisg
ICAgaWYgKEBpc0NhbGxhYmxlKHRhcmdldCkpIHsKKyAgICAgICAgdmFyIHdyYXBwZWQgPSBmdW5j
dGlvbigvKiBhcmdzLi4uICovKSB7CisgICAgICAgICAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRz
Lmxlbmd0aDsKKyAgICAgICAgICAgIHZhciB3cmFwcGVkQXJncyA9IEBuZXdBcnJheVdpdGhTaXpl
KGxlbmd0aCk7CisgICAgICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3Ro
OyArK2luZGV4KQorICAgICAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdCh3cmFwcGVkQXJncywg
aW5kZXgsIEB3cmFwKGFyZ3VtZW50c1tpbmRleF0pKTsKKworICAgICAgICAgICAgdmFyIHJlc3Vs
dCA9IHRhcmdldC5AYXBwbHkoQHVuZGVmaW5lZCwgd3JhcHBlZEFyZ3MpOworICAgICAgICAgICAg
cmV0dXJuIEB3cmFwKHJlc3VsdCk7CisgICAgICAgIH07CisgICAgICAgIGRlbGV0ZSB3cmFwcGVk
WyduYW1lJ107CisgICAgICAgIGRlbGV0ZSB3cmFwcGVkWydsZW5ndGgnXTsKKyAgICAgICAgcmV0
dXJuIHdyYXBwZWQ7CisgICAgfSBlbHNlIGlmIChAaXNPYmplY3QodGFyZ2V0KSkgeworICAgICAg
ICBAdGhyb3dUeXBlRXJyb3IoInZhbHVlIHBhc3NpbmcgYmV0d2VlbiByZWFsbXMgbXVzdCBiZSBj
YWxsYWJsZSBvciBwcmltaXRpdmUiKTsKKyAgICB9CisgICAgcmV0dXJuIHRhcmdldDsKK30KKwor
ZnVuY3Rpb24gZXZhbHVhdGUoc291cmNlVGV4dCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAg
ICBpZiAoIUBpc1NoYWRvd1JlYWxtKHRoaXMpKQorICAgICAgICBAdGhyb3dUeXBlRXJyb3IoImAl
U2hhZG93UmVhbG0lLmV2YWx1YXRlIHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIGEgU2hhZG93UmVh
bG0gaW5zdGFuY2UiKTsKKworICAgIGlmICh0eXBlb2Ygc291cmNlVGV4dCAhPT0gJ3N0cmluZycp
CisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiYCVTaGFkb3dSZWFsbSUuZXZhbHVhdGUgcmVxdWly
ZXMgdGhhdCB0aGUgfHNvdXJjZVRleHR8IGFyZ3VtZW50IGJlIGEgc3RyaW5nIik7CisKKyAgICB2
YXIgcmVzdWx0ID0gQGV2YWxJblJlYWxtKHRoaXMsIHNvdXJjZVRleHQpCisgICAgcmV0dXJuIEB3
cmFwKHJlc3VsdCk7Cit9CisKK2Z1bmN0aW9uIGltcG9ydFZhbHVlKHNwZWNpZmllciwgZXhwb3J0
TmFtZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIUBpc1NoYWRvd1JlYWxtKHRo
aXMpKQorICAgICAgICBAdGhyb3dUeXBlRXJyb3IoImAlU2hhZG93UmVhbG0lLmltcG9ydFZhbHVl
IHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIGEgU2hhZG93UmVhbG0gaW5zdGFuY2UiKTsKKworICAg
IHZhciBleHBvcnROYW1lU3RyaW5nID0gQHRvU3RyaW5nKGV4cG9ydE5hbWUpOworICAgIHZhciBz
cGVjaWZpZXJTdHJpbmcgPSBAdG9TdHJpbmcoc3BlY2lmaWVyKTsKKworICAgIHZhciBsb29rdXBC
aW5kaW5nID0gKG1vZHVsZSkgPT4geworICAgICAgICB2YXIgbG9va3VwID0gbW9kdWxlW2V4cG9y
dE5hbWVTdHJpbmddCisgICAgICAgIGlmIChsb29rdXAgPT09IEB1bmRlZmluZWQpCisgICAgICAg
ICAgICBAdGhyb3dUeXBlRXJyb3IoIiVTaGFkb3dSZWFsbSUuaW1wb3J0VmFsdWUgcmVxdWlyZXMg
fGV4cG9ydE5hbWV8IHRvIGV4aXN0IGluIHRoZSB8c3BlY2lmaWVyfCIpOworCisgICAgICAgIHJl
dHVybiBAd3JhcChsb29rdXApOworICAgIH07CisKKyAgICB2YXIgY3Jvc3NSZWFsbVRocm93ID0g
KGVycm9yKSA9PiB7CisgICAgICAgIC8vIHJlLXRocm93IGJlY2F1c2UgaW1wb3J0IGlzc3VlcyBy
YWlzZSBlcnJvcnMgdXNpbmcgdGhlIHJlYWxtJ3MgZ2xvYmFsIG9iamVjdAorICAgICAgICBAdGhy
b3dUeXBlRXJyb3IoQHRvU3RyaW5nKGVycm9yKSk7CisgICAgfTsKKworICAgIHJldHVybiBAaW1w
b3J0SW5SZWFsbSh0aGlzLCBzcGVjaWZpZXJTdHJpbmcpLkB0aGVuKGxvb2t1cEJpbmRpbmcsIGNy
b3NzUmVhbG1UaHJvdyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAppbmRleCA4NTU1OTc3ODY3MDcy
ZjJmZmY2N2E2NTU5YWNkOWE0NTRkNTJkMjc3Li5iMzJjY2RhZjQzYTY2MmM4Nzc5NTU4MDdmNmQ0
MWYxMjU5MTk0ZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKQEAgLTY2LDYgKzY2LDcgQEAgZW51
bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IDogaW50MzJfdDsKICAgICBtYWNybyhpc1JlZ0V4cE9i
amVjdCkgXAogICAgIG1hY3JvKGlzTWFwKSBcCiAgICAgbWFjcm8oaXNTZXQpIFwKKyAgICBtYWNy
byhpc1NoYWRvd1JlYWxtKSBcCiAgICAgbWFjcm8oaXNTdHJpbmdJdGVyYXRvcikgXAogICAgIG1h
Y3JvKGlzQXJyYXlJdGVyYXRvcikgXAogICAgIG1hY3JvKGlzTWFwSXRlcmF0b3IpIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCmluZGV4
IGJmYmFkMmE1MmYxNjRhNGM1ZjVlOTc3YTQyY2JjYzhiOWVhN2EyOTQuLjFlNTIzOGRkZjJkYmQw
NjZiZTI2ZmEyMGFmZTM3YzliNzRlMGZmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaApAQCAtNzgsNiArNzgsOCBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdDsKICAgICB2KGhvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlciwgbnVsbHB0
cikgXAogICAgIHYoU2V0LCBudWxscHRyKSBcCiAgICAgdih0aGlzVGltZVZhbHVlLCBudWxscHRy
KSBcCisgICAgdihpbXBvcnRJblJlYWxtLCBudWxscHRyKSBcCisgICAgdihldmFsSW5SZWFsbSwg
bnVsbHB0cikgXAogICAgIHYoaXNDb25zdHJ1Y3RvciwgbnVsbHB0cikgXAogICAgIHYoc2FtZVZh
bHVlLCBudWxscHRyKSBcCiAgICAgdihyZWdFeHBQcm90b0ZsYWdzR2V0dGVyLCBudWxscHRyKSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKaW5kZXggMjc3YjE1NTI4ZDFlODBjNzY3NmJlYzUxMWY3NzYxZTU1YjdmOTM1
OC4uZjM3NWE3OGUzMDNlNTIxYWE4MDk1MWZhMjhlZGY3ZmI3MmE3ZjVhNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aApAQCAtODg1LDYgKzg4NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0SXNSZWdFeHBPYmplY3QoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsg
cmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgUmVnRXhwT2JqZWN0VHlwZSk7IH0K
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzTWFwKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTTWFwVHlwZSk7
IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzU2V0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTU2V0VHlw
ZSk7IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzU2hhZG93UmVhbG0oUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNy
YywgU2hhZG93UmVhbG1UeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNTdHJpbmdJ
dGVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElz
Q2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU1N0cmluZ0l0ZXJhdG9yVHlwZSk7IH0KICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdElzQXJyYXlJdGVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU0FycmF5SXRl
cmF0b3JUeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNNYXBJdGVyYXRvcihSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBl
KGRzdCwgc3JjLCBKU01hcEl0ZXJhdG9yVHlwZSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAxNTg4MGU2YmU2MTZi
ZjJhNDVjZDNiNjdjYzdkNzkzYjY3ZDU1MjFiLi5mZWRmMjlhZTEwYzk5NmJkYmRmN2ZkY2Q0NjYx
OTM2ZTY4MGQxNjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0xODk0LDYgKzE4OTQsNyBAQCBDUkVBVEVfSU5UUklO
U0lDX0ZPUl9CUkFORF9DSEVDSyhpc1Byb21pc2UsIElzUHJvbWlzZSkKIENSRUFURV9JTlRSSU5T
SUNfRk9SX0JSQU5EX0NIRUNLKGlzUmVnRXhwT2JqZWN0LCBJc1JlZ0V4cE9iamVjdCkKIENSRUFU
RV9JTlRSSU5TSUNfRk9SX0JSQU5EX0NIRUNLKGlzTWFwLCBJc01hcCkKIENSRUFURV9JTlRSSU5T
SUNfRk9SX0JSQU5EX0NIRUNLKGlzU2V0LCBJc1NldCkKK0NSRUFURV9JTlRSSU5TSUNfRk9SX0JS
QU5EX0NIRUNLKGlzU2hhZG93UmVhbG0sIElzU2hhZG93UmVhbG0pCiBDUkVBVEVfSU5UUklOU0lD
X0ZPUl9CUkFORF9DSEVDSyhpc1N0cmluZ0l0ZXJhdG9yLCBJc1N0cmluZ0l0ZXJhdG9yKQogQ1JF
QVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0soaXNBcnJheUl0ZXJhdG9yLCBJc0FycmF5SXRl
cmF0b3IpCiBDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSyhpc01hcEl0ZXJhdG9yLCBJ
c01hcEl0ZXJhdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA5OWQ3YjZmZmJjY2Q2NjA5NzUw
OTE0NmJlY2QxOTkxZjNmN2Y3OTRiLi4yNDAyNTcyYjk1NTk5NTRkYjQ0NWI2YmZiZDE2NWQyYzc3
MmM5ZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMzY0LDYgKzM2NCw3IEBAIHN0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyQ3JlYXRlUmVhbG0pOwogc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJFdmFsU2NyaXB0KTsK
IHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyR0MpOwogc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJDbGVhcktlcHRPYmpl
Y3RzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyR2xv
YmFsT2JqZWN0Rm9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9u
RG9sbGFyQWdlbnRTdGFydCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5j
dGlvbkRvbGxhckFnZW50UmVjZWl2ZUJyb2FkY2FzdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckFnZW50UmVwb3J0KTsKQEAgLTY0Niw2ICs2NDcsNyBA
QCBwcml2YXRlOgogICAgICAgICBhZGRGdW5jdGlvbih2bSwgZG9sbGFyLCAiZXZhbFNjcmlwdCIs
IGZ1bmN0aW9uRG9sbGFyRXZhbFNjcmlwdCwgMSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpOb25lKSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCBkb2xsYXIsICJn
YyIsIGZ1bmN0aW9uRG9sbGFyR0MsIDAsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6Tm9uZSkpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgZG9sbGFyLCAiY2xlYXJL
ZXB0T2JqZWN0cyIsIGZ1bmN0aW9uRG9sbGFyQ2xlYXJLZXB0T2JqZWN0cywgMCwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CisgICAgICAgIGFkZEZ1bmN0
aW9uKHZtLCBkb2xsYXIsICJnbG9iYWxPYmplY3RGb3IiLCBmdW5jdGlvbkRvbGxhckdsb2JhbE9i
amVjdEZvciwgMSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpOb25l
KSk7CiAgICAgICAgIAogICAgICAgICBkb2xsYXItPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImdsb2JhbCIpLCBnbG9iYWxUaGlzKCkpOwogICAgICAgICBkb2xsYXIt
PnB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
SXNIVE1MRERBIiksCkBAIC0yMDY2LDYgKzIwNjgsMjAgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGZ1bmN0aW9uRG9sbGFyQ2xlYXJLZXB0T2JqZWN0cywgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCitKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJHbG9iYWxPYmplY3RGb3IsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiTm90IGVub3VnaCBhcmd1bWVu
dHMiX3MpKSk7CisgICAgSlNWYWx1ZSBhcmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAg
IGlmIChhcmcuaXNDZWxsKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXJnLmFz
Q2VsbCgpLT5zdHJ1Y3R1cmUodm0pLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsVGhpcygpKTsKKwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckFnZW50U3RhcnQsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
CmluZGV4IDFlMmU3ZTE2N2ZlNzNjNmY1ZDA3MmMwZTllNTU1NDI2NWVkNGVjNmUuLmZlM2Y5OWVk
Nzk5MzkyODI5ZmZiOWZmNjY2M2NlMWQ3YjE3NWZlNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAKQEAgLTUwOTYsNyArNTA5Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVy
RXhwcmVzCiAgICAgICAgICAgICBuZXdDb3VudC0tOwogICAgICAgICAgICAgbmV4dCgpOwogICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChJREVOVCksICJcIm5l
dy5cIiBjYW4gb25seSBmb2xsb3dlZCB3aXRoIHRhcmdldCIpOworICAgICAgICAgICAgZmFpbElm
VHJ1ZShtYXRjaChJREVOVCksICJcIm5ldy5cIiBjYW4gb25seSBiZSBmb2xsb3dlZCB3aXRoIHRh
cmdldCIpOwogICAgICAgICAgICAgZmFpbER1ZVRvVW5leHBlY3RlZFRva2VuKCk7CiAgICAgICAg
IH0KICAgICB9CkBAIC01MTMxLDcgKzUxMzEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwog
ICAgICAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZUltcG9ydE1ldGFFeHByKGxvY2F0
aW9uLCBjcmVhdGVSZXNvbHZlQW5kVXNlVmFyaWFibGUoY29udGV4dCwgJm1fdm0ucHJvcGVydHlO
YW1lcy0+bWV0YVByaXZhdGVOYW1lLCBmYWxzZSwgZXhwcmVzc2lvblN0YXJ0LCBsb2NhdGlvbikp
OwogICAgICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChJREVOVCksICJcImltcG9ydC5cIiBjYW4gb25seSBm
b2xsb3dlZCB3aXRoIG1ldGEiKTsKKyAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKElE
RU5UKSwgIlwiaW1wb3J0LlwiIGNhbiBvbmx5IGJlIGZvbGxvd2VkIHdpdGggbWV0YSIpOwogICAg
ICAgICAgICAgICAgIGZhaWxEdWVUb1VuZXhwZWN0ZWRUb2tlbigpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKaW5kZXggNDBjMTU5ZThkN2M1NDA0OWZkOThjOGE2NjY4YTY0YThk
ZjRlYTM2NC4uNzgyOGQwMDhhODUzNDYxZTQ4ZTM2ZDJmYmVhNjFjNzA5NTc2ZGRhZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBA
IC01Miw2ICs1Miw3IEBACiAgICAgbWFjcm8oT2JqZWN0KSBcCiAgICAgbWFjcm8oUGx1cmFsUnVs
ZXMpIFwKICAgICBtYWNybyhQcm9taXNlKSBcCisgICAgbWFjcm8oU2hhZG93UmVhbG0pIFwKICAg
ICBtYWNybyhSZWZsZWN0KSBcCiAgICAgbWFjcm8oUmVnRXhwKSBcCiAgICAgbWFjcm8oUmVsYXRp
dmVUaW1lRm9ybWF0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCmluZGV4IGU0ZmY2MWNiZmIxOWY2NjQ5ZWM1
OGYwMmVjY2Y2N2YxODJiMDU2NjAuLjRiMzIyZTU2YTFjNzFkNzNmNzNiNTBjMzNjYjEwZWU5YmM0
MWI2ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0
RXZhbEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
ZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC0zNCw3ICszNCw5IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi1JbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpj
cmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCisKK3RlbXBs
YXRlPHR5cGVuYW1lIEVycm9ySGFuZGxlckZ1bmN0b3I+CitpbmxpbmUgSW5kaXJlY3RFdmFsRXhl
Y3V0YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlSW1wbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIERlcml2ZWRDb250ZXh0
VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZh
bENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgRXJyb3JIYW5kbGVyRnVuY3RvciBlcnJvckhh
bmRsZXIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTUwLDcgKzUyLDcgQEAgSW5kaXJlY3RF
dmFsRXhlY3V0YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmoKIAogICAgIFBhcnNlckVycm9yIGVycm9yOwogICAgIE9wdGlvblNldDxD
b2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSA9IGdsb2JhbE9iamVjdC0+ZGVm
YXVsdENvZGVHZW5lcmF0aW9uTW9kZSgpOwotICAgIAorCiAgICAgVW5saW5rZWRFdmFsQ29kZUJs
b2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gdm0uY29kZUNhY2hlKCktPmdldFVubGlua2VkRXZhbENv
ZGVCbG9jaygKICAgICAgICAgdm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLCBK
U1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgY29kZUdlbmVyYXRpb25Nb2RlLCBlcnJvciwg
ZXZhbENvbnRleHRUeXBlKTsKIApAQCAtNTgsNyArNjAsOCBAQCBJbmRpcmVjdEV2YWxFeGVjdXRh
YmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iagogICAgICAgICBnbG9iYWxPYmplY3QtPmRlYnVnZ2VyKCktPnNvdXJjZVBhcnNlZChnbG9i
YWxPYmplY3QsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVyKCksIGVycm9yLmxpbmUoKSwg
ZXJyb3IubWVzc2FnZSgpKTsKIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpIHsKLSAgICAgICAg
dGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yLnRvRXJyb3JPYmplY3QoZ2xv
YmFsT2JqZWN0LCBleGVjdXRhYmxlLT5zb3VyY2UoKSkpOworICAgICAgICBlcnJvckhhbmRsZXIo
ZXhlY3V0YWJsZS0+c291cmNlKCksICZlcnJvcik7CisgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC02Nyw2ICs3MCwyNCBAQCBJbmRp
cmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iagogICAgIHJldHVybiBleGVjdXRhYmxlOwogfQogCitJbmRpcmVj
dEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29u
dGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQs
IEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIE5ha2VkUHRyPEpTT2JqZWN0PiYgcmVz
dWx0aW5nRXJyb3IpCit7CisgICAgYXV0byBoYW5kbGVFcnJvciA9IFsmXShjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIFBhcnNlckVycm9yKiBlcnJvcikgeworICAgICAgICByZXN1bHRpbmdFcnJv
ciA9IGVycm9yLT50b0Vycm9yT2JqZWN0KGdsb2JhbE9iamVjdCwgc291cmNlKTsKKyAgICB9Owor
ICAgIHJldHVybiBjcmVhdGVJbXBsKGdsb2JhbE9iamVjdCwgc291cmNlLCBkZXJpdmVkQ29udGV4
dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlwZSwgaGFuZGxlRXJy
b3IpOworfQorCitJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxl
Ojp0cnlDcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gaGFuZGxlRXJyb3Ig
PSBbJl0oY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciogZXJyb3IpIHsKKyAg
ICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgICAgICB0aHJv
d1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3ItPnRvRXJyb3JPYmplY3QoZ2xvYmFs
T2JqZWN0LCBzb3VyY2UpKTsKKyAgICB9OworICAgIHJldHVybiBjcmVhdGVJbXBsKGdsb2JhbE9i
amVjdCwgc291cmNlLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQs
IGV2YWxDb250ZXh0VHlwZSwgaGFuZGxlRXJyb3IpOworfQorCiBjb25zdGV4cHIgYm9vbCBpblN0
cmljdENvbnRleHQgPSBmYWxzZTsKIGNvbnN0ZXhwciBib29sIGluc2lkZU9yZGluYXJ5RnVuY3Rp
b24gPSBmYWxzZTsKIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OkluZGlyZWN0RXZhbEV4ZWN1dGFi
bGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5j
dGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmgK
aW5kZXggNDk4YjVjODcwOThhYjM3NDc5N2EyNWJmNDgxNjM3Y2ZiYjkyZWRmNS4uMzcwNGIyNDY4
YTRjYWI0NmQ3OWM1MzM1ZmQ3MTIwMWE0NmFiM2Y0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaApAQCAtMzEsOCAr
MzEsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUg
ZmluYWwgOiBwdWJsaWMgRXZhbEV4ZWN1dGFibGUgewogcHVibGljOgotICAgIHN0YXRpYyBJbmRp
cmVjdEV2YWxFeGVjdXRhYmxlKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VD
b2RlJiwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2
YWxDb250ZXh0VHlwZSk7CisgICAgc3RhdGljIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIHRyeUNy
ZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJpdmVkQ29udGV4dFR5
cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlKTsKKyAgICBz
dGF0aWMgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgU291cmNlQ29kZSYsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25D
b250ZXh0LCBFdmFsQ29udGV4dFR5cGUsIE5ha2VkUHRyPEpTT2JqZWN0PiYpOwogcHJpdmF0ZToK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFcnJvckhhbmRsZXJGdW5jdG9yPgorICAgIGlubGluZSBz
dGF0aWMgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogY3JlYXRlSW1wbChKU0dsb2JhbE9iamVjdCos
IGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlLCBFcnJvckhhbmRsZXJGdW5jdG9yKTsKKwogICAg
IEluZGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2Rl
JiwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxD
b250ZXh0VHlwZSk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKaW5kZXggZTBjZWI0YmUwMjMxNTBjZTVhOTRkYjhhODhiY2Q2ZDFj
MGZlZWUzNC4uNzRmZjM2ZDZiOWYyYjkxNjM0Nzc3MGNlZWUyOTFlODhiN2IzYTllYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAt
MTk2LDYgKzE5Niw5IEBACiAjaW5jbHVkZSAiU2V0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJT
ZXRJdGVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlNldFByb3RvdHlwZS5oIgorI2luY2x1
ZGUgIlNoYWRvd1JlYWxtQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJTaGFkb3dSZWFsbU9iamVj
dC5oIgorI2luY2x1ZGUgIlNoYWRvd1JlYWxtUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiU3RyaWN0
RXZhbEFjdGl2YXRpb24uaCIKICNpbmNsdWRlICJTdHJpbmdDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIlN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgiCkBAIC05MjQsNiArOTI3LDkgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IE51bWJlck9mQXJyYXlJbmRleGluZ01vZGVzOyArK2kpCiAgICAgICAgIG1fYXJyYXlTdHJ1Y3R1
cmVGb3JJbmRleGluZ1NoYXBlRHVyaW5nQWxsb2NhdGlvbltpXSA9IG1fb3JpZ2luYWxBcnJheVN0
cnVjdHVyZUZvckluZGV4aW5nU2hhcGVbaV07CiAKKyAgICBtX3NoYWRvd1JlYWxtUHJvdG90eXBl
LnNldCh2bSwgdGhpcywgU2hhZG93UmVhbG1Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgU2hhZG93UmVh
bG1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUu
Z2V0KCkpKSk7CisgICAgbV9zaGFkb3dSZWFsbU9iamVjdFN0cnVjdHVyZS5zZXQodm0sIHRoaXMs
IFNoYWRvd1JlYWxtT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fc2hhZG93UmVh
bG1Qcm90b3R5cGUuZ2V0KCkpKTsKKwogICAgIG1fcmVnRXhwUHJvdG90eXBlLnNldCh2bSwgdGhp
cywgUmVnRXhwUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIFJlZ0V4cFByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKICAgICBt
X3JlZ0V4cFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFJlZ0V4cE9iamVjdDo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fcmVnRXhwTWF0
Y2hlc0FycmF5U3RydWN0dXJlLnNldCh2bSwgdGhpcywgY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5
U3RydWN0dXJlKHZtLCB0aGlzKSk7CkBAIC0xMDMwLDcgKzEwMzYsMTAgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgQXJyYXlDb25zdHJ1Y3RvciogYXJyYXlDb25zdHJ1
Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgQXJyYXlDb25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwg
bV9hcnJheVByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLmdldCgpKTsKICAg
ICBtX2FycmF5Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBhcnJheUNvbnN0cnVjdG9yKTsKICAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50OjpBcnJheSldLnNldCh2bSwgdGhpcywgYXJyYXlDb25zdHJ1Y3Rvcik7Ci0gICAgCisKKyAg
ICBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKiBzaGFkb3dSZWFsbUNvbnN0cnVjdG9yID0gU2hhZG93
UmVhbG1Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX3NoYWRv
d1JlYWxtUHJvdG90eXBlLmdldCgpLCBtX3NwZWNpZXNHZXR0ZXJTZXR0ZXIuZ2V0KCkpOworICAg
IG1fc2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIHNoYWRvd1JlYWxtQ29uc3Ry
dWN0b3IpOworCiAgICAgUmVnRXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9yID0gUmVn
RXhwQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgUmVnRXhwQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fcmVnRXhwUHJvdG90
eXBlLmdldCgpLCBtX3NwZWNpZXNHZXR0ZXJTZXR0ZXIuZ2V0KCkpOwogICAgIG1fcmVnRXhwQ29u
c3RydWN0b3Iuc2V0KHZtLCB0aGlzLCByZWdFeHBDb25zdHJ1Y3Rvcik7CiAgICAgbV9saW5rVGlt
ZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6UmVnRXhw
KV0uc2V0KHZtLCB0aGlzLCByZWdFeHBDb25zdHJ1Y3Rvcik7CkBAIC0xMTEwLDYgKzExMTksNyBA
QCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0g
ZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUtPnB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwg
ZnVuY3Rpb25Db25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpOwogICAgIG1fYXJyYXlQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgYXJyYXlDb25zdHJ1
Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkp
OwogICAgIG1fcmVnRXhwUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHJlZ0V4cENvbnN0cnVjdG9yLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgbV9zaGFk
b3dSZWFsbVByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBzaGFkb3dSZWFsbUNvbnN0cnVjdG9yLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgCiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPk9iamVjdCwgb2Jq
ZWN0Q29uc3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+RnVuY3Rpb24sIGZ1bmN0aW9uQ29uc3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKQEAgLTEyNjEsNiArMTI3MSw4IEBA
IGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBm
ZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgIFRlbXBvcmFsT2JqZWN0KiB0ZW1wb3Jh
bCA9IFRlbXBvcmFsT2JqZWN0OjpjcmVhdGUodm0sIFRlbXBvcmFsT2JqZWN0OjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMpKTsKICAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPlRlbXBvcmFsLCB0ZW1wb3JhbCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIH0KKyAgICBpZiAoT3B0aW9u
czo6dXNlU2hhZG93UmVhbG0oKSkKKyAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPlNoYWRvd1JlYWxtLCBzaGFkb3dSZWFsbUNvbnN0cnVjdG9y
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAK
ICAgICBtX21vZHVsZUxvYWRlci5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFs
aXplcjxKU01vZHVsZUxvYWRlcj4mIGluaXQpIHsKQEAgLTE0MzMsNiArMTQ0NSwxMiBAQCBjYXBp
dGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVy
ZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Omhvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlcild
LmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewogICAgICAg
ICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2Jh
bE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0hvc3RQcm9taXNl
UmVqZWN0aW9uVHJhY2tlcikpOwogICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjppbXBvcnRJblJlYWxtKV0u
aW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAg
ICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBpbXBvcnRJblJlYWxtKSk7CisgICAg
ICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OmV2YWxJblJlYWxtKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFs
aXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpj
cmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0
cmluZygpLCBldmFsSW5SZWFsbSkpOworICAgICAgICB9KTsKICAgICBtX2xpbmtUaW1lQ29uc3Rh
bnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojp0aGlzVGltZVZhbHVl
KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CiAgICAg
ICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xv
YmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBkYXRlUHJvdG9GdW5jR2V0VGlt
ZSwgRGF0ZVByb3RvdHlwZUdldFRpbWVJbnRyaW5zaWMpKTsKICAgICAgICAgfSk7CkBAIC0yMTE3
LDYgKzIxMzUsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbChKU0Nl
bGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+bV9VUklFcnJvclN0
cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2FnZ3JlZ2F0ZUVycm9y
U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3Qt
Pm1fYXJyYXlDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9z
aGFkb3dSZWFsbUNvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5t
X3JlZ0V4cENvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX29i
amVjdENvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2Z1bmN0
aW9uQ29uc3RydWN0b3IpOwpAQCAtMjIxNCw2ICsyMjMzLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogICAg
IHRoaXNPYmplY3QtPm1fY3VzdG9tU2V0dGVyRnVuY3Rpb25TdHJ1Y3R1cmUudmlzaXQodmlzaXRv
cik7CiAgICAgdGhpc09iamVjdC0+bV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0
b3IpOwogICAgIHRoaXNPYmplY3QtPm1fbmF0aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmUudmlzaXQo
dmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zaGFkb3dSZWFsbU9i
amVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWdFeHBT
dHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yRnVu
Y3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYXN5bmNG
dW5jdGlvblN0cnVjdHVyZSk7CkBAIC0yNTcwLDYgKzI1OTAsMTMgQEAgSlNHbG9iYWxPYmplY3Qq
IEpTR2xvYmFsT2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAg
ICByZXR1cm4gZ2xvYmFsT2JqZWN0OwogfQogCitKU0dsb2JhbE9iamVjdCogSlNHbG9iYWxPYmpl
Y3Q6OmNyZWF0ZVdpdGhDdXN0b21NZXRob2RUYWJsZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSogbWV0aG9kVGFibGUpCit7CisgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEpTR2xvYmFsT2JqZWN0Pih2bS5oZWFwKSkgSlNHbG9iYWxPYmplY3Qodm0sIHN0cnVjdHVyZSwg
bWV0aG9kVGFibGUpOworICAgIGdsb2JhbE9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAg
IHJldHVybiBnbG9iYWxPYmplY3Q7Cit9CisKIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKIHsKICAgICBEZWZlclRlcm1pbmF0aW9uIGRlZmVyVGVybWluYXRpb24o
dm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
aW5kZXggZTA2YTVhYjJkNGIwZjQ5NjM2NzIxZWZmMWNjZGZlYTFiYmM2ZDgyMy4uOTRlMTJhMjNi
YmFiMjUzNTk2NzZkMGIxOWNiZjI3ZWI0MjgzYmRkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0xMTUsNiArMTE1LDggQEAgY2xhc3Mg
TnVsbFNldHRlckZ1bmN0aW9uOwogY2xhc3MgT2JqZWN0Q29uc3RydWN0b3I7CiBjbGFzcyBQcm9n
cmFtQ29kZUJsb2NrOwogY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CitjbGFzcyBTaGFkb3dSZWFs
bUNvbnN0cnVjdG9yOworY2xhc3MgU2hhZG93UmVhbG1Qcm90b3R5cGU7CiBjbGFzcyBSZWdFeHBD
b25zdHJ1Y3RvcjsKIGNsYXNzIFJlZ0V4cFByb3RvdHlwZTsKIGNsYXNzIFNldEl0ZXJhdG9yUHJv
dG90eXBlOwpAQCAtMzExLDYgKzMxMyw3IEBAIHB1YmxpYzoKIAogICAgIFdyaXRlQmFycmllcjxP
YmplY3RDb25zdHJ1Y3Rvcj4gbV9vYmplY3RDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8
QXJyYXlDb25zdHJ1Y3Rvcj4gbV9hcnJheUNvbnN0cnVjdG9yOworICAgIFdyaXRlQmFycmllcjxT
aGFkb3dSZWFsbUNvbnN0cnVjdG9yPiBtX3NoYWRvd1JlYWxtQ29uc3RydWN0b3I7CiAgICAgV3Jp
dGVCYXJyaWVyPFJlZ0V4cENvbnN0cnVjdG9yPiBtX3JlZ0V4cENvbnN0cnVjdG9yOwogICAgIFdy
aXRlQmFycmllcjxGdW5jdGlvbkNvbnN0cnVjdG9yPiBtX2Z1bmN0aW9uQ29uc3RydWN0b3I7CiAg
ICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVjdG9yPiBtX3Byb21pc2VDb25zdHJ1Y3Rv
cjsKQEAgLTM1OCw2ICszNjEsNyBAQCBwdWJsaWM6CiAgICAgV3JpdGVCYXJyaWVyPE9iamVjdFBy
b3RvdHlwZT4gbV9vYmplY3RQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEZ1bmN0aW9uUHJv
dG90eXBlPiBtX2Z1bmN0aW9uUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxBcnJheVByb3Rv
dHlwZT4gbV9hcnJheVByb3RvdHlwZTsKKyAgICBXcml0ZUJhcnJpZXI8U2hhZG93UmVhbG1Qcm90
b3R5cGU+IG1fc2hhZG93UmVhbG1Qcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPFJlZ0V4cFBy
b3RvdHlwZT4gbV9yZWdFeHBQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEl0ZXJhdG9yUHJv
dG90eXBlPiBtX2l0ZXJhdG9yUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxBc3luY0l0ZXJh
dG9yUHJvdG90eXBlPiBtX2FzeW5jSXRlcmF0b3JQcm90b3R5cGU7CkBAIC00MTQsNiArNDE4LDcg
QEAgcHVibGljOgogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBt
X2N1c3RvbVNldHRlckZ1bmN0aW9uU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2Jh
bE9iamVjdCwgU3RydWN0dXJlPiBtX25hdGl2ZVN0ZEZ1bmN0aW9uU3RydWN0dXJlOwogICAgIFBy
b3BlcnR5T2Zmc2V0IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OworICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fc2hhZG93UmVhbG1PYmplY3RTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9yZWdFeHBTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPEFzeW5jRnVuY3Rp
b25Qcm90b3R5cGU+IG1fYXN5bmNGdW5jdGlvblByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8
QXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZT4gbV9hc3luY0dlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlOwpAQCAtNjE2LDYgKzYyMSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgSlNHbG9iYWxPYmplY3QqIGNyZWF0ZShWTSYsIFN0cnVjdHVy
ZSopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0dsb2JhbE9iamVjdCogY3JlYXRl
V2l0aEN1c3RvbU1ldGhvZFRhYmxlKFZNJiwgU3RydWN0dXJlKiwgY29uc3QgR2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUqKTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKQEAgLTcyMCw2ICs3
MjYsNyBAQCBwdWJsaWM6CiAgICAgQmlnSW50UHJvdG90eXBlKiBiaWdJbnRQcm90b3R5cGUoKSBj
b25zdCB7IHJldHVybiBtX2JpZ0ludFByb3RvdHlwZS5nZXQoKTsgfQogICAgIEpTT2JqZWN0KiBk
YXRlUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRlU3RydWN0dXJlLnByb3RvdHlwZSh0
aGlzKTsgfQogICAgIEpTT2JqZWN0KiBzeW1ib2xQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBt
X3N5bWJvbE9iamVjdFN0cnVjdHVyZS5wcm90b3R5cGVJbml0aWFsaXplZE9uTWFpblRocmVhZCh0
aGlzKTsgfQorICAgIFNoYWRvd1JlYWxtUHJvdG90eXBlKiBzaGFkb3dSZWFsbVByb3RvdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93UmVhbG1Qcm90b3R5cGUuZ2V0KCk7IH0KICAgICBSZWdF
eHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJv
dG90eXBlLmdldCgpOyB9CiAgICAgSlNPYmplY3QqIGVycm9yUHJvdG90eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9lcnJvclN0cnVjdHVyZS5wcm90b3R5cGUodGhpcyk7IH0KICAgICBJdGVyYXRvclBy
b3RvdHlwZSogaXRlcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUHJv
dG90eXBlLmdldCgpOyB9CkBAIC04MzcsNiArODQ0LDcgQEAgcHVibGljOgogICAgIFByb3BlcnR5
T2Zmc2V0IGZ1bmN0aW9uTmFtZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25OYW1l
T2Zmc2V0OyB9CiAgICAgU3RydWN0dXJlKiBudW1iZXJPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX251bWJlck9iamVjdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1
cmUqIHJlZ0V4cFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwU3RydWN0dXJlLmdl
dCgpOyB9CisgICAgU3RydWN0dXJlKiBzaGFkb3dSZWFsbVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2hhZG93UmVhbG1PYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUq
IGdlbmVyYXRvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yU3RydWN0dXJl
LmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBhc3luY0dlbmVyYXRvclN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYXN5bmNHZW5lcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1
cmUqIGdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0
b3JGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCmluZGV4IGM4ZDkx
MmFhZWQyMDhkY2NhNGYyYjU1OTcyMzQ5Zjg3NzVmZDc3ODkuLmY5OWI5ZGZjNWY3ODJmNWU3M2Q4
M2IyMGE0NTE5ZWY5ZDUyYjYzZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKQEAgLTQ5Miw3ICs0OTIs
NyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZ2xvYmFsRnVuY0V2YWwsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHBhcnNlZE9iamVjdCk7CiAKICAgICBTb3VyY2VPcmlnaW4gc291cmNlT3JpZ2luID0gY2Fs
bEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pOwotICAgIEV2YWxFeGVjdXRhYmxlKiBldmFs
ID0gSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJj
ZShzLCBzb3VyY2VPcmlnaW4pLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGZhbHNlLCBFdmFs
Q29udGV4dFR5cGU6Ok5vbmUpOworICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0gSW5kaXJlY3RF
dmFsRXhlY3V0YWJsZTo6dHJ5Q3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShzLCBzb3Vy
Y2VPcmlnaW4pLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGZhbHNlLCBFdmFsQ29udGV4dFR5
cGU6Ok5vbmUpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAh
ZXZhbCk7CiAgICAgaWYgKCFldmFsKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCmluZGV4IDVhOGExNGEzY2M2
YWQxOWVkNDA4MjRiODMwMmRiOTBjNGM0NzRjM2EuLjA5MWMzMGFkMDU3MmNmNWM3ZDFiYTk4MzU4
MWFmZTA1NzM0M2U0MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNw
cApAQCAtOTYsNiArOTYsNyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
SlNDOjpKU1R5cGUgdHlwZSkKICAgICBDQVNFKFN0cmljdEV2YWxBY3RpdmF0aW9uVHlwZSkKICAg
ICBDQVNFKFdpdGhTY29wZVR5cGUpCiAgICAgQ0FTRShNb2R1bGVOYW1lc3BhY2VPYmplY3RUeXBl
KQorICAgIENBU0UoU2hhZG93UmVhbG1UeXBlKQogICAgIENBU0UoUmVnRXhwT2JqZWN0VHlwZSkK
ICAgICBDQVNFKEpTRGF0ZVR5cGUpCiAgICAgQ0FTRShQcm94eU9iamVjdFR5cGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCmluZGV4IDY1ZWE5NGVmNTYzZjRiM2FlMjE5MTc1
MWM3OTJlYzUxMGQ1NzQxYzEuLjQzMWJiYWZjODRlNjUzNDRjMDAyZTRlNWY0NzY3YzdhMzQ1NTU5
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBAIC0xMTAsNiArMTEw
LDcgQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsKICAgICAvLyBFbmQgSlNTY29wZSB0eXBlcy4K
IAogICAgIE1vZHVsZU5hbWVzcGFjZU9iamVjdFR5cGUsCisgICAgU2hhZG93UmVhbG1UeXBlLAog
ICAgIFJlZ0V4cE9iamVjdFR5cGUsCiAgICAgSlNEYXRlVHlwZSwKICAgICBQcm94eU9iamVjdFR5
cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlz
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCBl
MDc4MzNmNDdhYmMxYTRiMDkyNDIxNWM1NzU3YmY2ZWJkZTU2NDZkLi43NTdmMzFmYWFhM2U0NDBi
MTdkZjgzY2QxNmY3ZjYyYTk4ZDE5ZmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnNMaXN0LmgKQEAgLTU0MCw2ICs1NDAsOCBAQCBib29sIGNhblVzZVdlYkFzc2Vt
Ymx5RmFzdE1lbW9yeSgpOwogICAgIHYoQm9vbCwgdXNlSGFzT3duLCB0cnVlLCBOb3JtYWwsICJF
eHBvc2UgdGhlIE9iamVjdC5oYXNPd24gbWV0aG9kIikgXAogICAgIHYoQm9vbCwgdXNlSW50bEVu
dW1lcmF0aW9uLCB0cnVlLCBOb3JtYWwsICJFeHBvc2UgdGhlIEludGwgZW51bWVyYXRpb24gQVBJ
cy4iKSBcCiAgICAgdihCb29sLCB1c2VTaGFyZWRBcnJheUJ1ZmZlciwgZmFsc2UsIE5vcm1hbCwg
bnVsbHB0cikgXAorICAgIC8qIEZJWE1FOiBTaGFkb3duUmVhbG0gY2FuIGJlIGVuYWJsZWQgb25j
ZSBXZWJDb3JlJ3MgSlNHbG9iYWxPYmplY3QgPT0gSlNET01HbG9iYWxPYmplY3QgYXNzdW1wdGlv
biBpcyByZW1vdmVkLCAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MTUwNiAqL1wKKyAgICB2KEJvb2wsIHVzZVNoYWRvd1JlYWxtLCBmYWxzZSwgTm9ybWFsLCAiRXhw
b3NlIHRoZSBTaGFkb3dSZWFsbSBvYmplY3QuIikgXAogICAgIHYoQm9vbCwgdXNlVGVtcG9yYWws
IGZhbHNlLCBOb3JtYWwsICJFeHBvc2UgdGhlIFRlbXBvcmFsIG9iamVjdC4iKSBcCiAgICAgdihC
b29sLCB1c2VXZWJBc3NlbWJseVRocmVhZGluZywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgaW5zdHJ1
Y3Rpb25zIGZyb20gdGhlIHdhc20gdGhyZWFkaW5nIHNwZWMuIikgXAogICAgIHYoQm9vbCwgdXNl
V2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcywgZmFsc2UsIE5vcm1hbCwgIkFsbG93
IGZ1bmN0aW9uIHR5cGVzIGZyb20gdGhlIHdhc20gdHlwZWQgZnVuY3Rpb24gcmVmZXJlbmNlcyBz
cGVjLiIpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRv
d1JlYWxtQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hh
ZG93UmVhbG1Db25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTZlOGFhYzNkYWYzMWNhYmY2YjE4
OWVhZDFiMzMxNmM0YWMxNTdmNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsNjYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYWRvd1JlYWxtQ29uc3RydWN0b3IuaCIKKworI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJTaGFkb3dSZWFsbU9iamVjdC5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFNoYWRvd1JlYWxtQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKSB9
OworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoU2hhZG93UmVhbG1D
b25zdHJ1Y3Rvcik7CisKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNhbGxTaGFk
b3dSZWFsbSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RXaXRo
U2hhZG93UmVhbG1Db25zdHJ1Y3Rvcik7CisKK1NoYWRvd1JlYWxtQ29uc3RydWN0b3I6OlNoYWRv
d1JlYWxtQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IElu
dGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSwgY2FsbFNoYWRvd1JlYWxtLCBjb25zdHJ1Y3RX
aXRoU2hhZG93UmVhbG1Db25zdHJ1Y3RvcikKK3sKK30KKwordm9pZCBTaGFkb3dSZWFsbUNvbnN0
cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNoYWRvd1JlYWxtUHJvdG90eXBlKiBzaGFk
b3dSZWFsbVByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgdm0u
cHJvcGVydHlOYW1lcy0+U2hhZG93UmVhbG0uc3RyaW5nKCksIFByb3BlcnR5QWRkaXRpb25Nb2Rl
OjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgc2hhZG93UmVhbG1Qcm90b3R5
cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKK30KKworSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFdpdGhTaGFkb3dSZWFsbUNvbnN0cnVjdG9yLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIFN0cnVjdHVyZSogc2hhZG93UmVhbG1TdHJ1Y3R1cmUgPSBT
aGFkb3dSZWFsbU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC0+c2hhZG93UmVhbG1Qcm90b3R5cGUoKSk7CisgICAgSlNPYmplY3QqIHNoYWRvd1Jl
YWxtT2JqZWN0ID0gU2hhZG93UmVhbG1PYmplY3Q6OmNyZWF0ZSh2bSwgc2hhZG93UmVhbG1TdHJ1
Y3R1cmUsIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShzaGFkb3dSZWFsbU9iamVjdCk7Cit9CisKK0pTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihjYWxsU2hhZG93UmVhbG0sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqKSkKK3sKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RShnbG9iYWxPYmplY3QtPnZtKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dD
b25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiU2hhZG93UmVhbG0iKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rv
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmUwY2I5NGM4MDE3YzJlMTVjOTlkZmYyMzM1MjVkNzliNTFjMThiZmUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dS
ZWFsbUNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIklu
dGVybmFsRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJTaGFkb3dSZWFsbVByb3RvdHlwZS5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2V0dGVyU2V0dGVyOworCitjbGFzcyBTaGFkb3dSZWFs
bUNvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgor
ICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIHN0
YXRpYyBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgU2hhZG93UmVhbG1Qcm90b3R5cGUqIHNoYWRvd1JlYWxtUHJvdG90eXBlLCBHZXR0
ZXJTZXR0ZXIqKQorICAgIHsKKyAgICAgICAgU2hhZG93UmVhbG1Db25zdHJ1Y3RvciogY29uc3Ry
dWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTaGFkb3dSZWFsbUNvbnN0cnVjdG9y
Pih2bS5oZWFwKSkgU2hhZG93UmVhbG1Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAg
ICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBzaGFkb3dSZWFsbVByb3RvdHlwZSk7
CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87
CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIFNoYWRvd1JlYWxtQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1
cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgU2hhZG93UmVhbG1Qcm90b3R5cGUq
KTsKK307CitTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShTaGFkb3dSZWFsbUNv
bnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtT2JqZWN0LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yNTQ0N2E3MWVlMTUwODUzN2I0NTZmYTM2YjRiZjFhY2MzNDhkYjQ0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVh
bG1PYmplY3QuY3BwCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
SWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNo
YWRvd1JlYWxtT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lT
X1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoU2hhZG93UmVhbG1PYmplY3QpOworCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBTaGFkb3dSZWFs
bU9iamVjdDo6c19pbmZvID0geyAiU2hhZG93UmVhbG0iLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFNoYWRvd1JlYWxtT2JqZWN0KSB9OworCitT
aGFkb3dSZWFsbU9iamVjdDo6U2hhZG93UmVhbG1PYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgVmlzaXRvcj4KK3ZvaWQgU2hhZG93UmVhbG1PYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBs
KEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBTaGFkb3dSZWFsbU9iamVj
dCogdGhpc09iamVjdCA9IGpzQ2FzdDxTaGFkb3dSZWFsbU9iamVjdCo+KGNlbGwpOworICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9nbG9iYWxPYmplY3QpOworfQorCitERUZJTkVfVklTSVRfQ0hJTERSRU4o
U2hhZG93UmVhbG1PYmplY3QpOworCitTaGFkb3dSZWFsbU9iamVjdCogU2hhZG93UmVhbG1PYmpl
Y3Q6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBHbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZSogbWV0aG9kVGFibGUpCit7CisgICAgU2hhZG93UmVhbG1PYmplY3QqIG9i
amVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFNoYWRvd1JlYWxtT2JqZWN0Pih2bS5o
ZWFwKSkgU2hhZG93UmVhbG1PYmplY3Qodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5p
c2hDcmVhdGlvbih2bSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEpTR2xv
YmFsT2JqZWN0OjpjcmVhdGVXaXRoQ3VzdG9tTWV0aG9kVGFibGUodm0sIEpTR2xvYmFsT2JqZWN0
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGpzTnVsbCgpKSwgbWV0aG9kVGFibGUpOworICAgIG9iamVj
dC0+bV9nbG9iYWxPYmplY3Quc2V0KHZtLCBvYmplY3QsIGdsb2JhbE9iamVjdCk7CisgICAgcmV0
dXJuIG9iamVjdDsKK30KKwordm9pZCBTaGFkb3dSZWFsbU9iamVjdDo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5o
ZXJpdHModm0sIGluZm8oKSkpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJ
VElPTigpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TaGFkb3dSZWFsbU9iamVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwODhmZjc4NDJl
MjBhZTU0MjUyZjZkYjA1ZDRjN2U4NGY5ZWIxNWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbU9iamVjdC5oCkBAIC0wLDAgKzEsNjMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpT
T2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBTaGFkb3dSZWFsbU9iamVjdCBm
aW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNl
ID0gSlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiB2bS5zaGFkb3dSZWFs
bVNwYWNlPG1vZGU+KCk7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhTaGFkb3dSZWFsbVR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMg
U2hhZG93UmVhbG1PYmplY3QqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIGNvbnN0IEdsb2JhbE9i
amVjdE1ldGhvZFRhYmxlKik7CisKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkg
eyByZXR1cm4gbV9nbG9iYWxPYmplY3QuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBTaGFkb3dS
ZWFsbU9iamVjdChWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
KTsKKyAgICBERUNMQVJFX1ZJU0lUX0NISUxEUkVOOworCisgICAgV3JpdGVCYXJyaWVyPEpTR2xv
YmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5
cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ1ZDk4ZTNiOWJjYzIxMTVkMzRkOWM1YWM5ZjFiMmY2NDQ4N2Zk
Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFk
b3dSZWFsbVByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlNoYWRvd1JlYWxtUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJJbmRpcmVjdEV2YWxF
eGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgiCisjaW5jbHVkZSAiSlNN
b2R1bGVMb2FkZXIuaCIKKyNpbmNsdWRlICJTaGFkb3dSZWFsbU9iamVjdC5oIgorCisjaW5jbHVk
ZSAiU2hhZG93UmVhbG1Qcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCisvKiBT
b3VyY2UgZm9yIFNoYWRvd1JlYWxtUHJvdG90eXBlLmx1dC5oCitAYmVnaW4gc2hhZG93UmVhbG1Q
cm90b3R5cGVUYWJsZQorICBldmFsdWF0ZSAgICBKU0J1aWx0aW4gICAgIERvbnRFbnVtfEZ1bmN0
aW9uICAxCisgIGltcG9ydFZhbHVlIEpTQnVpbHRpbiAgICAgRG9udEVudW18RnVuY3Rpb24gIDIK
K0BlbmQKKyovCisKK2NvbnN0IENsYXNzSW5mbyBTaGFkb3dSZWFsbVByb3RvdHlwZTo6c19pbmZv
ID0geyAiU2hhZG93UmVhbG0iLCAmQmFzZTo6c19pbmZvLCAmc2hhZG93UmVhbG1Qcm90b3R5cGVU
YWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShTaGFkb3dSZWFsbVByb3RvdHlwZSkg
fTsKKworU2hhZG93UmVhbG1Qcm90b3R5cGU6OlNoYWRvd1JlYWxtUHJvdG90eXBlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1
cmUpCit7Cit9CisKK3ZvaWQgU2hhZG93UmVhbG1Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVy
aXRzKHZtLCBpbmZvKCkpKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJ
T04oKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGltcG9ydEluUmVhbG0sIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT51bmNo
ZWNrZWRBcmd1bWVudCgwKTsKKyAgICBTaGFkb3dSZWFsbU9iamVjdCogdGhpc1JlYWxtID0ganNE
eW5hbWljQ2FzdDxTaGFkb3dSZWFsbU9iamVjdCo+KHZtLCB0aGlzVmFsdWUpOworICAgIEFTU0VS
VCh0aGlzUmVhbG0pOworCisgICAgYXV0byogcHJvbWlzZSA9IEpTUHJvbWlzZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QtPnByb21pc2VTdHJ1Y3R1cmUoKSk7CisKKyAgICBhdXRvIHNvdXJjZU9y
aWdpbiA9IGNhbGxGcmFtZS0+Y2FsbGVyU291cmNlT3JpZ2luKHZtKTsKKyAgICBhdXRvKiBzcGVj
aWZpZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvU3RyaW5nKGdsb2JhbE9i
amVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEpTR2xv
YmFsT2JqZWN0KiByZWFsbUdsb2JhbE9iamVjdCA9IHRoaXNSZWFsbS0+Z2xvYmFsT2JqZWN0KCk7
CisgICAgYXV0byogaW50ZXJuYWxQcm9taXNlID0gcmVhbG1HbG9iYWxPYmplY3QtPm1vZHVsZUxv
YWRlcigpLT5pbXBvcnRNb2R1bGUocmVhbG1HbG9iYWxPYmplY3QsIHNwZWNpZmllciwganNVbmRl
ZmluZWQoKSwgc291cmNlT3JpZ2luKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+cmVqZWN0V2l0aENhdWdodEV4Y2VwdGlvbihyZWFsbUds
b2JhbE9iamVjdCwgc2NvcGUpKSk7CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgcHJvbWlz
ZS0+cmVzb2x2ZShnbG9iYWxPYmplY3QsIGludGVybmFsUHJvbWlzZSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShwcm9taXNlKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGV2
YWxJblJlYWxtLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgU2hhZG93UmVhbG1PYmplY3QqIHRoaXNSZWFs
bSA9IGpzRHluYW1pY0Nhc3Q8U2hhZG93UmVhbG1PYmplY3QqPih2bSwgdGhpc1ZhbHVlKTsKKyAg
ICBBU1NFUlQodGhpc1JlYWxtKTsKKyAgICBKU0dsb2JhbE9iamVjdCogcmVhbG1HbG9iYWxPYmpl
Y3QgPSB0aGlzUmVhbG0tPmdsb2JhbE9iamVjdCgpOworCisgICAgSlNWYWx1ZSBldmFsQXJnID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICAvLyBldmFsIGNvZGUgYWRhcHRlZCBmcm9tIEpT
R2xvYmFsT2JqZWNGdW5jdGlvbnM6Omdsb2JhbEZ1bmNFdmFsCisgICAgU3RyaW5nIHNjcmlwdCA9
IGFzU3RyaW5nKGV2YWxBcmcpLT52YWx1ZShnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBOYWtlZFB0cjxKU09iamVjdD4gZXhlY3V0YWJs
ZUVycm9yOworICAgIFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJjZShzY3JpcHQsIGNhbGxG
cmFtZS0+Y2FsbGVyU291cmNlT3JpZ2luKHZtKSk7CisgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwg
PSBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUocmVhbG1HbG9iYWxPYmplY3QsIHNvdXJj
ZSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25l
LCBleGVjdXRhYmxlRXJyb3IpOworICAgIGlmIChleGVjdXRhYmxlRXJyb3IpIHsKKyAgICAgICAg
RXJyb3JJbnN0YW5jZSogZXJyb3IgPSBqc0R5bmFtaWNDYXN0PEVycm9ySW5zdGFuY2UqPih2bSwg
SlNWYWx1ZShleGVjdXRhYmxlRXJyb3IuZ2V0KCkpKTsKKyAgICAgICAgaWYgKGVycm9yICE9IG51
bGxwdHIgJiYgZXJyb3ItPmVycm9yVHlwZSgpID09IEVycm9yVHlwZTo6U3ludGF4RXJyb3IpIHsK
KyAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgICAgICBjb25zdCBT
dHJpbmcgc3ludGF4RXJyb3JNZXNzYWdlID0gZXJyb3ItPnNhbml0aXplZE1lc3NhZ2VTdHJpbmco
Z2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisgICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
U3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCBzeW50YXhFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3Jl
YXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkVycm9yIGVuY291bnRlcmVkIGR1cmluZyBldmFs
dWF0aW9uIl9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisgICAgfQorICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IHZtLmludGVycHJldGVyLT5leGVjdXRlKGV2YWwsIHJlYWxtR2xvYmFs
T2JqZWN0LCByZWFsbUdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpLCByZWFsbUdsb2JhbE9iamVj
dC0+Z2xvYmFsU2NvcGUoKSk7CisgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkg
eworICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
ICJFcnJvciBlbmNvdW50ZXJlZCBkdXJpbmcgZXZhbHVhdGlvbiJfcykpOworICAgIH0KKworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCkpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllYWViMGI4YmFiMzljMTY3
OTYwMTk2YjQyZjY0MjFmY2U1MWVjOWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNjYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgU2hhZG93UmVhbG1Qcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxU
eXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKFNoYWRvd1JlYWxtUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgIH0KKworICAgIHN0YXRpYyBTaGFkb3dSZWFsbVByb3RvdHlwZSog
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBTaGFk
b3dSZWFsbVByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
U2hhZG93UmVhbG1Qcm90b3R5cGU+KHZtLmhlYXApKSBTaGFkb3dSZWFsbVByb3RvdHlwZSh2bSwg
c3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAg
ICAgIHJldHVybiBwcm90b3R5cGU7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIFNoYWRvd1JlYWxtUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYpOworfTsKKworSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihpbXBvcnRJ
blJlYWxtKTsKK0pTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZXZhbEluUmVhbG0pOworCit9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAzOGU5
NTEyOWJhOWYwMjExMGExYzQzZTA1MWM0YWE2NzhjNmZkMGQzLi4yZmFjNzM0MzU0ODllYjcwZDRk
OTZlOGQyOWIzNGJkM2I2OGRiOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CkBAIC0xNTYsNiArMTU2LDcgQEAKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgiCiAjaW5j
bHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgorI2lu
Y2x1ZGUgIlNoYWRvd1JlYWxtT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2ltcGxlVHlwZWRBcnJheUNv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJTb3VyY2VQcm92aWRlckNhY2hlLmgiCiAjaW5jbHVkZSAi
U3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKQEAgLTE1ODcsNiArMTU4OCw3IEBAIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzY3JpcHRGZXRjaGVyU3BhY2UsIGRlc3RydWN0
aWJsZUNlbGxIZWFwCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0
QnVja2V0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTU2V0OjpCdWNrZXRUeXBlKQog
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNldEl0ZXJhdG9yU3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTU2V0SXRlcmF0b3IpCiBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTU2V0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNoYWRvd1Jl
YWxtU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFNoYWRvd1JlYWxtT2JqZWN0KQogRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN0cmljdEV2YWxBY3RpdmF0aW9u
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFN0cmljdEV2YWxBY3RpdmF0aW9uKQogRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN0cmluZ0l0ZXJhdG9yU3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTU3RyaW5nSXRlcmF0b3IpCiBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc291cmNlQ29kZVNwYWNlLCBkZXN0cnVjdGlibGVD
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1NvdXJjZUNvZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAppbmRleCBhYTg5YjI4YWRlMmYyNWI2Y2M4NDQwZDYxNGJjOTQ3YWUzYmE0Zjc0Li5i
ZGY0MzFlODRlZjA5NDg1NmJjMDI3MzBjNDBmZmU2ZWRhYTVjMWQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKQEAgLTU5Miw2ICs1OTIsNyBAQCBwdWJsaWM6CiAgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzZXRCdWNrZXRTcGFjZSkKICAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNldEl0ZXJhdG9yU3BhY2UpCiAgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzZXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKHNoYWRvd1JlYWxtU3BhY2UpOwogICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoc3RyaWN0RXZhbEFjdGl2YXRpb25TcGFjZSkKICAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHN0cmluZ0l0ZXJhdG9yU3BhY2UpCiAgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzb3VyY2VDb2RlU3BhY2UpCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg2ZjNj
MzE1NGY3OTEyMDI2MjAxOWUzYmM0NTM2Zjc1YWIxMTdhOTIuLjFmZDVjMTlhZDJhMjdjMGU5MWJi
ZGFkMTlmOTg4ZTY2ZDIyYjdmYzMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjEtMTAtMTQgIFBoaWxsaXAg
TWF0ZXMgIDxwbWF0ZXNAaWdhbGlhLmNvbT4KKworICAgICAgICBUZXN0IGNvdmVyYWdlIGZvciBK
U0Mgc2hhZG93IHJlYWxtcyBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVz
dWtlIFN1enVraS4KKworICAgICAgICAqIG1vZHVsZXMvaW1wb3J0LW1ldGEtc3ludGF4LmpzOgor
ICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAqIHN0cmVzcy9ldmFsLWluZGlyZWN0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAg
ICAgICAgKiBzdHJlc3MvaW1wb3J0LXN5bnRheC5qczoKKyAgICAgICAgKiBzdHJlc3MvcmVzb3Vy
Y2VzL3NoYWRvdy1yZWFsbS1leGFtcGxlLW1vZHVsZS5qczogQWRkZWQuCisgICAgICAgIChwdXRJ
bkdsb2JhbCk6CisgICAgICAgIChnZXRGcm9tR2xvYmFsKToKKyAgICAgICAgKGdldEFuT2JqZWN0
KToKKyAgICAgICAgKGdldENhbGxDb3VudCk6CisgICAgICAgICogc3RyZXNzL3NoYWRvdy1yZWFs
bS1ldmFsdWF0ZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91
bGRUaHJvdyk6CisgICAgICAgIChhc3NlcnRpb25Gbik6CisgICAgICAgIChzaG91bGRCZS5TdHJp
bmcpOgorICAgICAgICAoc2hvdWxkQmUuZ2xvYmFsT2JqZWN0Rm9yLmRvRXZhbCk6CisgICAgICAg
IChzaG91bGRCZS5nbG9iYWxPYmplY3RGb3IpOgorICAgICAgICAqIHN0cmVzcy9zaGFkb3ctcmVh
bG0taW1wb3J0LXZhbHVlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAg
KHNob3VsZFRocm93KToKKyAgICAgICAgKGFzeW5jIHNob3VsZFRocm93QXN5bmMpOgorICAgICAg
ICAoYXN5bmMgY29uc3QpOgorICAgICAgICAoZG9JbXBvcnQpOgorICAgICAgICAqIHN0cmVzcy9z
aGFkb3ctcmVhbG0uanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGhy
b3cubmV3LkVycm9yKToKKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIxLTEw
LTA5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
UmVmaW5lIFJlZ0V4cCNjb21waWxlIGJhc2VkIG9uIHJlZ2V4cC1sZWdhY3ktZmVhdHVyZXMgcHJv
cG9zYWwKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbW9kdWxlcy9pbXBvcnQtbWV0YS1zeW50YXguanMg
Yi9KU1Rlc3RzL21vZHVsZXMvaW1wb3J0LW1ldGEtc3ludGF4LmpzCmluZGV4IDNlZGY0ZTUxMjBl
MTJhNWI2ODk0OTEzYjA1YWE3MGFjNjc2ODU2NjIuLjU5YTJiMzYzNDYwYTYwMzVjN2ExMDVmMDhj
MjM2ZjlmNGE5NDM1MWEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvbW9kdWxlcy9pbXBvcnQtbWV0YS1z
eW50YXguanMKKysrIGIvSlNUZXN0cy9tb2R1bGVzL2ltcG9ydC1tZXRhLXN5bnRheC5qcwpAQCAt
MTAsNyArMTAsNyBAQCBzaG91bGROb3RUaHJvdygoKSA9PiB7CiAKIHNob3VsZFRocm93KCgpID0+
IHsKICAgICBjaGVja01vZHVsZVN5bnRheChgKGltcG9ydC5jb2NvYSlgKTsKLX0sIGBTeW50YXhF
cnJvcjogVW5leHBlY3RlZCBpZGVudGlmaWVyICdjb2NvYScuICJpbXBvcnQuIiBjYW4gb25seSBm
b2xsb3dlZCB3aXRoIG1ldGEuOjFgKTsKK30sIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCBpZGVu
dGlmaWVyICdjb2NvYScuICJpbXBvcnQuIiBjYW4gb25seSBiZSBmb2xsb3dlZCB3aXRoIG1ldGEu
OjFgKTsKIAogc2hvdWxkVGhyb3coKCkgPT4gewogICAgIGNoZWNrTW9kdWxlU3ludGF4KGAoaW1w
b3J0WyJDb2NvYSJdKWApOwpAQCAtMTgsNyArMTgsNyBAQCBzaG91bGRUaHJvdygoKSA9PiB7CiAK
IHNob3VsZFRocm93KCgpID0+IHsKICAgICBjaGVja01vZHVsZVN5bnRheChgaW1wb3J0LmNvY29h
YCk7Ci19LCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgaWRlbnRpZmllciAnY29jb2EnLiAiaW1w
b3J0LiIgY2FuIG9ubHkgZm9sbG93ZWQgd2l0aCBtZXRhLjoxYCk7Cit9LCBgU3ludGF4RXJyb3I6
IFVuZXhwZWN0ZWQgaWRlbnRpZmllciAnY29jb2EnLiAiaW1wb3J0LiIgY2FuIG9ubHkgYmUgZm9s
bG93ZWQgd2l0aCBtZXRhLjoxYCk7CiAKIHNob3VsZFRocm93KCgpID0+IHsKICAgICBjaGVja01v
ZHVsZVN5bnRheChgaW1wb3J0WyJDb2NvYSJdYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9ldmFsLWluZGlyZWN0LmpzIGIvSlNUZXN0cy9zdHJlc3MvZXZhbC1pbmRpcmVjdC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mMWI1OTE0MDVhZjFjMGNlYWVjYjYwYTgzMGYxMGEwMmI2MWEyZDFkCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZXZhbC1pbmRpcmVjdC5qcwpAQCAtMCwwICsxLDM0
IEBACisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAke2V4
cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfWApOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhm
dW5jLCBlcnJvclR5cGUsIGFzc2VydGlvbkZuKSB7CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7
CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsK
KyAgICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0gYnV0IGdvdCAke2Vy
cm9yLm5hbWV9YCk7CisKKyAgICBhc3NlcnRpb25GbihlcnJvcik7Cit9CisKK3Nob3VsZEJlKCgw
LCBldmFsKSgiKCkgPT4geyByZXR1cm4gMTsgfSIpKCksIDEpOworCitzaG91bGRUaHJvdygKKyAg
KCkgPT4geyAoMCwgZXZhbCkoIi4uIikgfSwKKyAgU3ludGF4RXJyb3IsCisgIChlcnIpID0+IHsK
KyAgICAgIHNob3VsZEJlKFN0cmluZyhlcnIpLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9r
ZW4gJy4nYCk7CisgIH0pOworCisvLyBOT1RFOiBtb3JlIGl0ZXJhdGlvbnMgKGxpa2UgMjAwMDAp
IHdpbGwgdHJpZ2dlciBhIEdDL09PTSBpc3N1ZSBvbiAzMi1iaXQgZGV2aWNlcy4KK2ZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgbGV0IGYgPSAoMCwgZXZhbCkoIigpID0+IHsg
cmV0dXJuIDE7IH0iKTsKKyAgICBzaG91bGRCZShmKCksIDEpOworfQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvaW1wb3J0LXN5bnRheC5qcyBiL0pTVGVzdHMvc3RyZXNzL2ltcG9ydC1zeW50
YXguanMKaW5kZXggMjVhM2ZiYmY2ODY2MTU3YjE3NWRhOGVkYWU3OGMwZTllMjgxNWMyNi4uOTRl
MDg1MGY3YjI4OTJhODYxYWQ1ZDBmNDUwZmY0NGY5MTcyNGQyMSAxMDA2NDQKLS0tIGEvSlNUZXN0
cy9zdHJlc3MvaW1wb3J0LXN5bnRheC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9pbXBvcnQtc3lu
dGF4LmpzCkBAIC0yOSw3ICsyOSw3IEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3RTeW50YXgoc2NyaXB0
LCBtZXNzYWdlKSB7CiAKIHRlc3RTeW50YXhFcnJvcihgaW1wb3J0KWAsIGBTeW50YXhFcnJvcjog
VW5leHBlY3RlZCB0b2tlbiAnKScuIGltcG9ydCBjYWxsIGV4cGVjdHMgZXhhY3RseSBvbmUgYXJn
dW1lbnQuYCk7CiB0ZXN0U3ludGF4RXJyb3IoYG5ldyBpbXBvcnQoYCwgYFN5bnRheEVycm9yOiBD
YW5ub3QgdXNlIG5ldyB3aXRoIGltcG9ydC5gKTsKLXRlc3RTeW50YXhFcnJvcihgaW1wb3J0Lmhl
bGxvKClgLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgaWRlbnRpZmllciAnaGVsbG8nLiAiaW1w
b3J0LiIgY2FuIG9ubHkgZm9sbG93ZWQgd2l0aCBtZXRhLmApOwordGVzdFN5bnRheEVycm9yKGBp
bXBvcnQuaGVsbG8oKWAsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCBpZGVudGlmaWVyICdoZWxs
bycuICJpbXBvcnQuIiBjYW4gb25seSBiZSBmb2xsb3dlZCB3aXRoIG1ldGEuYCk7CiB0ZXN0U3lu
dGF4RXJyb3IoYGltcG9ydFtgLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJ1snLiBp
bXBvcnQgY2FsbCBleHBlY3RzIGV4YWN0bHkgb25lIGFyZ3VtZW50LmApOwogdGVzdFN5bnRheEVy
cm9yKGBpbXBvcnQ8YCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICc8Jy4gaW1wb3J0
IGNhbGwgZXhwZWN0cyBleGFjdGx5IG9uZSBhcmd1bWVudC5gKTsKIApkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvcmVzb3VyY2VzL3NoYWRvdy1yZWFsbS1leGFtcGxlLW1vZHVsZS5qcyBiL0pT
VGVzdHMvc3RyZXNzL3Jlc291cmNlcy9zaGFkb3ctcmVhbG0tZXhhbXBsZS1tb2R1bGUuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGI0ZjU3OWMyZjlhNmRjMjM5MGJlMmZhMDU1Y2U2OGQ2ODAzMzBmMwotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Jlc291cmNlcy9zaGFkb3ctcmVhbG0tZXhhbXBs
ZS1tb2R1bGUuanMKQEAgLTAsMCArMSwyNSBAQAordmFyIGNhbGxDb3VudCA9IDA7CisKK2Z1bmN0
aW9uIHB1dEluR2xvYmFsKGtleSwgdmFsKSB7CisgICAgY2FsbENvdW50Kys7CisgICAgZ2xvYmFs
VGhpcy5rZXkgPSB2YWw7Cit9CisKK2Z1bmN0aW9uIGdldEZyb21HbG9iYWwoa2V5KSB7CisgICAg
Y2FsbENvdW50Kys7CisgICAgcmV0dXJuIGdsb2JhbFRoaXMua2V5OworfQorCit2YXIgYW5PYmpl
Y3QgPSBuZXcgT2JqZWN0KCk7CisKK2Z1bmN0aW9uIGdldEFuT2JqZWN0KCkgeworICAgIGNhbGxD
b3VudCsrOworICAgIHJldHVybiBhbk9iamVjdDsKK30KKworZnVuY3Rpb24gZ2V0Q2FsbENvdW50
KCkgeworICAgIHJldHVybiBjYWxsQ291bnQ7Cit9CisKK3ZhciBhbnN3ZXIgPSA2OworZXhwb3J0
IHsgYW5PYmplY3QsIGFuc3dlciwgZ2V0Q2FsbENvdW50LCBnZXRGcm9tR2xvYmFsLCBnZXRBbk9i
amVjdCwgcHV0SW5HbG9iYWwgfTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3NoYWRvdy1y
ZWFsbS1ldmFsdWF0ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3NoYWRvdy1yZWFsbS1ldmFsdWF0ZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lYzAzZjgzOGI4NmUyOWIwZjk2ZDFiNDk1ZDE0MDVkZDViM2UyMmNjCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc2hhZG93LXJlYWxtLWV2YWx1YXRlLmpz
CkBAIC0wLDAgKzEsMTUzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlU2hhZG93UmVhbG09
MSIpCisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAke2V4
cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfWApOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhm
dW5jLCBlcnJvclR5cGUsIGFzc2VydGlvbkZuKSB7CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7
CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsK
KyAgICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0gYnV0IGdvdCAke2Vy
cm9yLm5hbWV9YCk7CisKKyAgICBhc3NlcnRpb25GbihlcnJvcik7Cit9CisKKy8vIGJhc2ljIGV2
YWx1YXRpb24gYW5kIHN0YXRlIHNldHRpbmcKK3sKKyAgICBsZXQgcmVhbG0gPSBuZXcgU2hhZG93
UmVhbG0oKTsKKyAgICBsZXQgb3RoZXJSZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOworCisgICAg
c2hvdWxkQmUocmVhbG0uZXZhbHVhdGUoIjEiKSwgMSk7CisgICAgdmFyIHggPSAyOworICAgIHJl
YWxtLmV2YWx1YXRlKCJ2YXIgeCA9IDEiKTsKKyAgICBzaG91bGRCZShyZWFsbS5ldmFsdWF0ZSgi
eCIpLCAxKTsKKyAgICBzaG91bGRCZSh4LCAyKTsKKworICAgIC8vIHNjb3BlIGlzbid0IHNoYXJl
ZCBhY3Jvc3MgcmVhbG1zCisgICAgc2hvdWxkQmUob3RoZXJSZWFsbS5ldmFsdWF0ZSgiZ2xvYmFs
VGhpcy54IiksIHVuZGVmaW5lZCk7Cit9CisKKy8vIGFjY2Vzc2luZyBgZ2xvYmFsVGhpc2Agd2l0
aGluIGFuZCBvdXRzaWRlIG9mIGEgc2hhZG93IHJlYWxtCit7CisgICAgbGV0IHJlYWxtID0gbmV3
IFNoYWRvd1JlYWxtKCk7CisgICAgZ2xvYmFsVGhpcy5oaSA9IDY7CisKKyAgICBzaG91bGRCZShy
ZWFsbS5ldmFsdWF0ZSgiZ2xvYmFsVGhpcy5oaSIpLCB1bmRlZmluZWQpOworCisgICAgcmVhbG0u
ZXZhbHVhdGUoImdsb2JhbFRoaXMuaGkgPSAnZmFsYSBhbWlnbyciKTsKKworICAgIHNob3VsZEJl
KHJlYWxtLmV2YWx1YXRlKCJnbG9iYWxUaGlzLmhpIiksICJmYWxhIGFtaWdvIik7CisgICAgc2hv
dWxkQmUoZ2xvYmFsVGhpcy5oaSwgNik7Cit9CisKKy8vIGVuc3VyZSB0aGF0IGVycm9ycyB0aHJv
d24gaXNuJ3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBzaGFkb3cgcmVhbG0ncyBnbG9iYWwgb2JqZWN0
Cit7CisgICAgbGV0IHJlYWxtID0gbmV3IFNoYWRvd1JlYWxtKCk7CisgICAgc2hvdWxkVGhyb3co
CisgICAgICAoKSA9PiB7IHJlYWxtLmV2YWx1YXRlKCIuLiIpOyB9LAorICAgICAgU3ludGF4RXJy
b3IsCisgICAgICAoZXJyKSA9PiB7CisgICAgICAgICAgc2hvdWxkQmUoJC5nbG9iYWxPYmplY3RG
b3IoZXJyKSwgZ2xvYmFsVGhpcyk7CisgICAgICAgICAgc2hvdWxkQmUoU3RyaW5nKGVyciksIGBT
eW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnLidgKTsKKyAgICAgIH0pOworfQorCisvLyBl
bnN1cmUgdGhhdCBlcnJvcnMgdGhyb3duIGRvbid0IGNhcnJ5IGluZm9ybWF0aW9uIGZyb20gdGhl
IHNoYWRvdyByZWFsbQoreworICAgIGxldCByZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOworICAg
IHNob3VsZFRocm93KAorICAgICAgKCkgPT4geyByZWFsbS5ldmFsdWF0ZSgidGhyb3cgbmV3IEVy
cm9yKCdzZWNyZXQnKSIpOyB9LAorICAgICAgVHlwZUVycm9yLAorICAgICAgKGVycikgPT4gewor
ICAgICAgICAgIHNob3VsZEJlKCQuZ2xvYmFsT2JqZWN0Rm9yKGVyciksIGdsb2JhbFRoaXMpOwor
ICAgICAgICAgIHNob3VsZEJlKFN0cmluZyhlcnIpLCAiVHlwZUVycm9yOiBFcnJvciBlbmNvdW50
ZXJlZCBkdXJpbmcgZXZhbHVhdGlvbiIpOworICAgICAgfSk7Cit9CisKKy8vIHdyYXBwZWQgZnVu
Y3Rpb25zIHByb3RlY3QgdGhlIHNoYWRvdyByZWFsbQoreworICAgIGxldCByZWFsbSA9IG5ldyBT
aGFkb3dSZWFsbSgpOworICAgIGxldCB3cmFwcGVkSW52b2tlQW5kQWRkID0gcmVhbG0uZXZhbHVh
dGUoImZ1bmN0aW9uIGludm9rZUFuZEFkZCh4Rm4sIHlGbikgeyByZXR1cm4geEZuKCkgKyB5Rm4o
KTsgfTsgaW52b2tlQW5kQWRkIik7CisgICAgc2hvdWxkQmUod3JhcHBlZEludm9rZUFuZEFkZCgo
KSA9PiB7IHJldHVybiAxIH0sICgpID0+IHsgcmV0dXJuIDIgfSksIDMpOworICAgIHNob3VsZEJl
KCQuZ2xvYmFsT2JqZWN0Rm9yKHdyYXBwZWRJbnZva2VBbmRBZGQpLCBnbG9iYWxUaGlzKTsKKwor
ICAgIC8vIG5hbWUgYW5kIGxlbmd0aCBwcm9wZXJ0aWVzIGZyb20gd3JhcHBlZCBmdW5jdGlvbiBh
cmUgYWJzZW50CisgICAgc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3
cmFwcGVkSW52b2tlQW5kQWRkLCAibGVuZ3RoIiksIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUo
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3cmFwcGVkSW52b2tlQW5kQWRkLCAibmFt
ZSIpLCB1bmRlZmluZWQpOworCisgICAgLy8gY2FuJ3QgcGFzcyBvYmplY3RzIGludG8gYSBzaGFk
b3cgcmVhbG0td3JhcHBlZCBmdW5jdGlvbgorICAgIGxldCBudW1iZXJPYmogPSB7IHZhbHVlT2Yo
KSB7IHJldHVybiAtMSB9IH07CisgICAgc2hvdWxkVGhyb3coCisgICAgICAoKSA9PiB7IHdyYXBw
ZWRJbnZva2VBbmRBZGQobnVtYmVyT2JqLCAxKTsgfSwKKyAgICAgIFR5cGVFcnJvciwKKyAgICAg
IChlcnIpID0+IHsKKyAgICAgICAgICBzaG91bGRCZSgkLmdsb2JhbE9iamVjdEZvcihlcnIpLCBn
bG9iYWxUaGlzKTsKKyAgICAgICAgICBzaG91bGRCZShTdHJpbmcoZXJyKSwgIlR5cGVFcnJvcjog
dmFsdWUgcGFzc2luZyBiZXR3ZWVuIHJlYWxtcyBtdXN0IGJlIGNhbGxhYmxlIG9yIHByaW1pdGl2
ZSIpOworICAgICAgfSk7Cit9CisKK3sKKyAgICBsZXQgcmVhbG0gPSBuZXcgU2hhZG93UmVhbG0o
KTsKKyAgICAvLyBjYW4ndCBjYWxsIGBldmFsdWF0ZWAgb24gYSBub24gc2hhZG93IHJlYWxtCisg
ICAgbGV0IG5vdFJlYWxtID0ge307CisgICAgc2hvdWxkVGhyb3coCisgICAgICAoKSA9PiB7IHJl
YWxtLmV2YWx1YXRlLmNhbGwobm90UmVhbG0sICcxJyk7IH0sCisgICAgICBUeXBlRXJyb3IsCisg
ICAgICAoZXJyKSA9PiB7IHNob3VsZEJlKCQuZ2xvYmFsT2JqZWN0Rm9yKGVyciksIGdsb2JhbFRo
aXMpOyB9CisgICAgKTsKK30KKworLy8gdHJpZ2dlciBKSVQKK3sKKyAgICBmdW5jdGlvbiBkb0V2
YWwocmVhbG0sIHMpCisgICAgeworICAgICAgICByZXR1cm4gcmVhbG0uZXZhbHVhdGUocyk7Cisg
ICAgfQorCisgICAgbm9JbmxpbmUoZG9FdmFsKTsKKworICAgIGxldCByZWFsbSA9IG5ldyBTaGFk
b3dSZWFsbSgpOworICAgIHJlYWxtLmV2YWx1YXRlKCJnbG9iYWxUaGlzLnNlY3JldCA9IDE7Iik7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQorICAgICAgICBzaG91bGRCZShk
b0V2YWwocmVhbG0sICc0MicpLCA0Mik7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7
ICsraSkgeworICAgICAgICBsZXQgZiA9IGRvRXZhbChyZWFsbSwgJyh4KSA9PiB7IHJldHVybiB4
KCkgKyBnbG9iYWxUaGlzLnNlY3JldDsgfScpOworICAgICAgICBzaG91bGRCZSgkLmdsb2JhbE9i
amVjdEZvcihmKSwgZ2xvYmFsVGhpcyk7CisgICAgICAgIHNob3VsZEJlKGYoKCkgPT4geyByZXR1
cm4gNDE7IH0pLCA0Mik7CisgICAgfQorICAgIC8vIChwb3RlbnRpYWwpIGlubGluaW5nIG9mIHdy
YXBwZWQgZnVuY3Rpb24gdXNlcyBjb3JyZWN0IGdsb2JhbCBvYmplY3QKKyAgICBsZXQgZiA9IGRv
RXZhbChyZWFsbSwgJyh4KSA9PiB7IHJldHVybiB4KCkgKyBnbG9iYWxUaGlzLnNlY3JldDsgfScp
OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgICAgICBzaG91bGRC
ZSgkLmdsb2JhbE9iamVjdEZvcihmKSwgZ2xvYmFsVGhpcyk7CisgICAgICAgIHNob3VsZEJlKGYo
KCkgPT4geyByZXR1cm4gNDE7IH0pLCA0Mik7CisgICAgfQorICAgIC8vIChwb3RlbnRpYWwpIGlu
bGluaW5nIGluc2lkZSBhIHJlYWxtIHVzZXMgY29ycmVjdCBnbG9iYWwgb2JqZWN0CisgICAgbGV0
IGxvb3BJbnNpZGUgPSBkb0V2YWwocmVhbG0sICcoeCkgPT4geyBsZXQgYWNjID0gMDsgZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7IGFjYyArPSB4KCk7IH07IHJldHVybiBhY2M7IH0n
KTsKKyAgICBnbG9iYWxUaGlzLnNlY3JldCA9IC0xOworICAgIHNob3VsZEJlKGxvb3BJbnNpZGUo
KCkgPT4geyByZXR1cm4gZ2xvYmFsVGhpcy5zZWNyZXQ7IH0pLCAtMTAwMDApOworfQorCisvLyBl
dmFsdWF0ZSBzcGVjcworeworICAgIHNob3VsZEJlKHR5cGVvZiBTaGFkb3dSZWFsbS5wcm90b3R5
cGUuZXZhbHVhdGUsICJmdW5jdGlvbiIpOworCisgICAgbGV0IGV2YWx1YXRlTmFtZSA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU2hhZG93UmVhbG0ucHJvdG90eXBlLmV2YWx1YXRl
LCAibmFtZSIpOworICAgIHNob3VsZEJlKGV2YWx1YXRlTmFtZS52YWx1ZSwgImV2YWx1YXRlIik7
CisgICAgc2hvdWxkQmUoZXZhbHVhdGVOYW1lLmVudW1lcmFibGUsIGZhbHNlKTsKKyAgICBzaG91
bGRCZShldmFsdWF0ZU5hbWUud3JpdGFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShldmFsdWF0
ZU5hbWUuY29uZmlndXJhYmxlLCB0cnVlKTsKKworICAgIGxldCBldmFsdWF0ZUxlbmd0aCA9IE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU2hhZG93UmVhbG0ucHJvdG90eXBlLmV2YWx1
YXRlLCAibGVuZ3RoIik7CisgICAgc2hvdWxkQmUoZXZhbHVhdGVMZW5ndGgudmFsdWUsIDEpOwor
ICAgIHNob3VsZEJlKGV2YWx1YXRlTGVuZ3RoLmVudW1lcmFibGUsIGZhbHNlKTsKKyAgICBzaG91
bGRCZShldmFsdWF0ZUxlbmd0aC53cml0YWJsZSwgZmFsc2UpOworICAgIHNob3VsZEJlKGV2YWx1
YXRlTGVuZ3RoLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9zaGFkb3ctcmVhbG0taW1wb3J0LXZhbHVlLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc2hhZG93
LXJlYWxtLWltcG9ydC12YWx1ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDNjZDhlNjIzZjFmNmQxMzkzMWM3
YjlkYjhkZGUzMDg0NjA4YTg1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc2hh
ZG93LXJlYWxtLWltcG9ydC12YWx1ZS5qcwpAQCAtMCwwICsxLDE0OCBAQAorLy9AIHJlcXVpcmVP
cHRpb25zKCItLXVzZVNoYWRvd1JlYWxtPTEiKQorCit2YXIgYWJvcnQgPSAkdm0uYWJvcnQ7CisK
K2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAke2V4cGVjdGVk
fSBidXQgZ290ICR7YWN0dWFsfWApOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBl
cnJvclR5cGUpIHsKKyAgICBsZXQgZXJyb3I7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOwor
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKworICAgIGlmICgh
KGVycm9yIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBF
eHBlY3RlZCAke2Vycm9yVHlwZS5uYW1lfSEgZ290ICR7ZXJyb3IubmFtZX1gKTsKK30KKworYXN5
bmMgZnVuY3Rpb24gc2hvdWxkVGhyb3dBc3luYyhmdW5jLCBlcnJvclR5cGUpIHsKKyAgICBsZXQg
ZXJyb3I7CisgICAgdHJ5IHsKKyAgICAgICAgYXdhaXQgZnVuYygpOworICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKworICAgIGlmICghKGVycm9yIGluc3RhbmNl
b2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2Vycm9y
VHlwZS5uYW1lfSEgZ290ICR7ZXJyb3IubmFtZX0gd2l0aCBtZXNzYWdlICR7ZXJyb3IubWVzc2Fn
ZX1gKTsKK30KKworKGFzeW5jIGZ1bmN0aW9uICgpIHsKKyAgICBjb25zdCBpbXBvcnRQYXRoID0g
Ii4vcmVzb3VyY2VzL3NoYWRvdy1yZWFsbS1leGFtcGxlLW1vZHVsZS5qcyI7CisgICAgY29uc3Qg
eyBhbnN3ZXIsIGdldENhbGxDb3VudCwgcHV0SW5HbG9iYWwsIGdldEZyb21HbG9iYWwsIGdldEFu
T2JqZWN0IH0gPSBhd2FpdCBpbXBvcnQoaW1wb3J0UGF0aCk7CisgICAgY29uc3Qgb3V0ZXJBbnN3
ZXIgPSBhbnN3ZXI7CisgICAgY29uc3Qgb3V0ZXJHZXRDYWxsQ291bnQgPSBnZXRDYWxsQ291bnQ7
CisgICAgY29uc3Qgb3V0ZXJQdXRJbkdsb2JhbCA9IHB1dEluR2xvYmFsOworICAgIGNvbnN0IG91
dGVyR2V0RnJvbUdsb2JhbCA9IGdldEZyb21HbG9iYWw7CisgICAgY29uc3Qgb3V0ZXJHZXRBbk9i
amVjdCA9IGdldEFuT2JqZWN0OworCisgICAgeworICAgICAgICBsZXQgcmVhbG0gPSBuZXcgU2hh
ZG93UmVhbG0oKTsKKworICAgICAgICAvLyB1cGRhdGUgbG9jYWwgbW9kdWxlIHN0YXRlICsgY2hl
Y2sgaXQKKyAgICAgICAgc2hvdWxkQmUob3V0ZXJHZXRDYWxsQ291bnQoKSwgMCk7CisgICAgICAg
IG91dGVyR2V0QW5PYmplY3QoKTsKKyAgICAgICAgc2hvdWxkQmUob3V0ZXJHZXRDYWxsQ291bnQo
KSwgMSk7CisgICAgICAgIC8vIHVwZGF0ZSByZWFsbSBtb2R1bGUgc3RhdGUgKyBjaGVjayBpdAor
ICAgICAgICBsZXQgaW5uZXJHZXRDYWxsQ291bnQgPSBhd2FpdCByZWFsbS5pbXBvcnRWYWx1ZShp
bXBvcnRQYXRoLCAiZ2V0Q2FsbENvdW50Iik7CisgICAgICAgIGxldCBpbm5lclB1dEluR2xvYmFs
ID0gYXdhaXQgcmVhbG0uaW1wb3J0VmFsdWUoaW1wb3J0UGF0aCwgInB1dEluR2xvYmFsIik7Cisg
ICAgICAgIHNob3VsZEJlKGlubmVyR2V0Q2FsbENvdW50KCksIDApOworICAgICAgICBpbm5lclB1
dEluR2xvYmFsKCJzb21ldGhpbmciLCAicmFuZG9tIik7CisgICAgICAgIHNob3VsZEJlKGlubmVy
R2V0Q2FsbENvdW50KCksIDEpOworICAgICAgICAvLyByZS1pbXBvcnRpbmcgdGhlIG1vZHVsZSBp
bnRvIHRoZSByZWFsbSBkb2Vzbid0IHJlbG9hZCB0aGUgbW9kdWxlCisgICAgICAgIGlubmVyR2V0
Q2FsbENvdW50ID0gYXdhaXQgcmVhbG0uaW1wb3J0VmFsdWUoaW1wb3J0UGF0aCwgImdldENhbGxD
b3VudCIpOworICAgICAgICBzaG91bGRCZShpbm5lckdldENhbGxDb3VudCgpLCAxKTsKKyAgICAg
ICAgLy8gdGhlIChvdXRlcikgbG9jYWwgbW9kdWxlIHN0YXRlIHN0YXlzIGludGFjdAorICAgICAg
ICBzaG91bGRCZShvdXRlckdldENhbGxDb3VudCgpLCAxKTsKKworICAgICAgICAvLyBvbmUgY2Fu
IGltcG9ydGVkIHByaW1pdGl2ZS9jYWxsYWJsZSB2YXJpYWJsZXMganVzdCBmaW5lCisgICAgICAg
IC8vIHNob3VsZEJlKGlubmVyQW5zd2VyLCBvdXRlckFuc3dlcik7CisgICAgICAgIGxldCBpbm5l
ckFuc3dlciA9IGF3YWl0IHJlYWxtLmltcG9ydFZhbHVlKGltcG9ydFBhdGgsICJhbnN3ZXIiKTsK
KyAgICAgICAgc2hvdWxkQmUoaW5uZXJBbnN3ZXIsIG91dGVyQW5zd2VyKTsKKworICAgICAgICAv
LyBpbXBvcnRlZCB2YXJpYWJsZXMgYXJlIGNoZWNrZWQgZm9yIHByaW10aXZlL2NhbGxhYmxlLW5l
c3MKKyAgICAgICAgYXdhaXQgc2hvdWxkVGhyb3dBc3luYyhhc3luYyAoKSA9PiB7IGxldCB4ID0g
YXdhaXQgcmVhbG0uaW1wb3J0VmFsdWUoaW1wb3J0UGF0aCwgImFuT2JqZWN0Iik7IH0sIFR5cGVF
cnJvcik7CisKKyAgICAgICAgLy8gaW1wb3J0aW5nIG5vbi1leGlzdGVudCByZWYgZmFpbHMKKyAg
ICAgICAgYXdhaXQgc2hvdWxkVGhyb3dBc3luYyhhc3luYyAoKSA9PiB7IGxldCB4ID0gYXdhaXQg
cmVhbG0uaW1wb3J0VmFsdWUoaW1wb3J0UGF0aCwgIm5vdGhpbmciKTsgfSwgVHlwZUVycm9yKTsK
KworICAgICAgICAvLyBpbXBvcnRpbmcgZnJvbSBub24tZXhpc3RlbnQgZmlsZSBmYWlscworICAg
ICAgICBhd2FpdCBzaG91bGRUaHJvd0FzeW5jKGFzeW5jICgpID0+IHsgbGV0IHggPSBhd2FpdCBy
ZWFsbS5pbXBvcnRWYWx1ZSgicmFuZG9tIiwgIm5vdGhpbmciKTsgfSwgVHlwZUVycm9yKTsKKwor
ICAgICAgICAvLyB3ZSBjYW4gaW1wb3J0IGZ1bmN0aW9ucyB0aHJvdWdoIGFuIGlubmVyIHJlYWxt
IGZvciB1c2UgaW4gdGhlIG91dGVyCisgICAgICAgIGxldCBpbm5lckdldEZyb21HbG9iYWwgPSBh
d2FpdCByZWFsbS5pbXBvcnRWYWx1ZShpbXBvcnRQYXRoLCAiZ2V0RnJvbUdsb2JhbCIpOworICAg
ICAgICBpbm5lclB1dEluR2xvYmFsKCJzYWx1dGF0aW9uIiwgInNhcmF2YSIpOworICAgICAgICBz
aG91bGRCZShpbm5lckdldEZyb21HbG9iYWwoInNhbHV0YXRpb24iKSwgInNhcmF2YSIpOworCisg
ICAgICAgIC8vIGlubmVyIGdsb2JhbCBzdGF0ZSBpcyB1bmNoYW5nZWQgYnkgb3V0ZXIgZ2xvYmFs
IHN0YXRlIGNoYW5nZQorICAgICAgICBvdXRlclB1dEluR2xvYmFsKCJzYWx1dGF0aW9uIiwgImhl
bGxvIHdvcmxkISIpOworICAgICAgICBzaG91bGRCZShvdXRlckdldEZyb21HbG9iYWwoInNhbHV0
YXRpb24iKSwgImhlbGxvIHdvcmxkISIpOworICAgICAgICBzaG91bGRCZShpbm5lckdldEZyb21H
bG9iYWwoInNhbHV0YXRpb24iKSwgInNhcmF2YSIpOworCisgICAgICAgIC8vIHdyYXBwZWQgZnVu
Y3Rpb25zIGNoZWNrIGFyZ3VtZW50cyBmb3IgcHJpbWl0aXZlL2NhbGxhYmxlLW5lc3MKKyAgICAg
ICAgc2hvdWxkVGhyb3coKCkgPT4geyBpbm5lclB1dEluR2xvYmFsKCJ0cmVhc3VyZSIsIG5ldyBP
YmplY3QoKSk7IH0sIFR5cGVFcnJvcik7CisKKyAgICAgICAgLy8gaW1wb3J0ZWQgZnVuY3Rpb25z
IGFyZSB3cmFwcGVkIHdpdGggY29ycmVjdCByZXR1cm4gdmFsdWUgY2hlY2tzCisgICAgICAgIGxl
dCBnZXRBbk9iamVjdEZuID0gYXdhaXQgcmVhbG0uaW1wb3J0VmFsdWUoaW1wb3J0UGF0aCwgImdl
dEFuT2JqZWN0Iik7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgZ2V0QW5PYmplY3RGbigp
OyB9LCBUeXBlRXJyb3IpOworCisgICAgICAgIC8vIHRocmVhZCBhIGZ1bmN0aW9uIGluIGFuZCBv
dXQgb2YgYSByZWFsbSB0byB3cmFwIGl0IHVwCisgICAgICAgIGlubmVyUHV0SW5HbG9iYWwoIm91
dGVyLXJlYWxtLXB1dCIsIG91dGVyUHV0SW5HbG9iYWwpOworICAgICAgICB3cmFwcGVkT3V0ZXJQ
dXRJbkdsb2JhbCA9IGlubmVyR2V0RnJvbUdsb2JhbCgib3V0ZXItcmVhbG0tcHV0Iik7CisKKyAg
ICAgICAgLy8gaXQgc3RpbGwgbWFuaXB1YXRlcyB0aGUgY29ycmVjdCBnbG9iYWwgb2JqZWN0IHN0
YXRlCisgICAgICAgIHdyYXBwZWRPdXRlclB1dEluR2xvYmFsKCJ0cmVhc3VyZSIsICJzaGlueSB0
aW4gc2NyYXAiKTsKKyAgICAgICAgc2hvdWxkQmUob3V0ZXJHZXRGcm9tR2xvYmFsKCJ0cmVhc3Vy
ZSIpLCAic2hpbnkgdGluIHNjcmFwIik7CisKKyAgICAgICAgLy8gd3JhcHBlZCBmdW5jdGlvbnMg
Y2hlY2sgYXJndW1lbnRzIGZvciBwcmltaXRpdmUvY2FsbGFibGUtbmVzcworICAgICAgICBzaG91
bGRUaHJvdygoKSA9PiB7IHdyYXBwZWRPdXRlclB1dEluR2xvYmFsKCJ0cmVhc3VyZSIsIG5ldyBP
YmplY3QoKSk7IH0sIFR5cGVFcnJvcik7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgd3Jh
cHBlZE91dGVyUHV0SW5HbG9iYWwobmV3IE9iamVjdCgpLCAic2hpbnkgdGluIHNjcmFwIik7IH0s
IFR5cGVFcnJvcik7CisKKyAgICAgICAgLy8gbXVzdCBiZSBjYWxsZWQgb24gYSBTaGFkb3dSZWFs
bQorICAgICAgICBsZXQgbm90UmVhbG0gPSB7fTsKKyAgICAgICAgc2hvdWxkVGhyb3coCisgICAg
ICAgICAgKCkgPT4geyByZWFsbS5pbXBvcnRWYWx1ZS5jYWxsKG5vdFJlYWxtLCBpbXBvcnRQYXRo
LCAiYW5zd2VyIik7IH0sCisgICAgICAgICAgVHlwZUVycm9yLAorICAgICAgICAgIChlcnIpID0+
IHsgc2hvdWxkQmUoJC5nbG9iYWxPYmplY3RGb3IoZXJyKSwgZ2xvYmFsVGhpcyk7IH0KKyAgICAg
ICAgKTsKKyAgICB9CisKKyAgICAvLyB0cmlnZ2VyIEpJVAorICAgIHsKKyAgICAgICAgZnVuY3Rp
b24gZG9JbXBvcnQocmVhbG0sIHMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiByZWFs
bS5pbXBvcnRWYWx1ZShpbXBvcnRQYXRoLCBzKTsKKyAgICAgICAgfQorCisgICAgICAgIG5vSW5s
aW5lKGRvSW1wb3J0KTsKKworICAgICAgICBsZXQgcmVhbG0gPSBuZXcgU2hhZG93UmVhbG0oKTsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgICAgICBs
ZXQgcmVzdWx0ID0gYXdhaXQgZG9JbXBvcnQocmVhbG0sICJnZXRDYWxsQ291bnQiKTsKKyAgICAg
ICAgICAgIHNob3VsZEJlKHJlc3VsdCgpLCAwKTsKKyAgICAgICAgfQorICAgIH0KK30oKSkuY2F0
Y2goKGVycm9yKSA9PiB7CisgICAgcHJpbnQoU3RyaW5nKGVycm9yKSk7CisgICAgYWJvcnQoKTsK
K30pOworCit7CisgICAgc2hvdWxkQmUodHlwZW9mIFNoYWRvd1JlYWxtLnByb3RvdHlwZS5pbXBv
cnRWYWx1ZSwgImZ1bmN0aW9uIik7CisKKyAgICBsZXQgaW1wb3J0VmFsdWVOYW1lID0gT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihTaGFkb3dSZWFsbS5wcm90b3R5cGUuaW1wb3J0VmFs
dWUsICJuYW1lIik7CisgICAgc2hvdWxkQmUoaW1wb3J0VmFsdWVOYW1lLnZhbHVlLCAiaW1wb3J0
VmFsdWUiKTsKKyAgICBzaG91bGRCZShpbXBvcnRWYWx1ZU5hbWUuZW51bWVyYWJsZSwgZmFsc2Up
OworICAgIHNob3VsZEJlKGltcG9ydFZhbHVlTmFtZS53cml0YWJsZSwgZmFsc2UpOworICAgIHNo
b3VsZEJlKGltcG9ydFZhbHVlTmFtZS5jb25maWd1cmFibGUsIHRydWUpOworCisgICAgbGV0IGlt
cG9ydFZhbHVlTGVuZ3RoID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihTaGFkb3dS
ZWFsbS5wcm90b3R5cGUuaW1wb3J0VmFsdWUsICJsZW5ndGgiKTsKKyAgICBzaG91bGRCZShpbXBv
cnRWYWx1ZUxlbmd0aC52YWx1ZSwgMik7CisgICAgc2hvdWxkQmUoaW1wb3J0VmFsdWVMZW5ndGgu
ZW51bWVyYWJsZSwgZmFsc2UpOworICAgIHNob3VsZEJlKGltcG9ydFZhbHVlTGVuZ3RoLndyaXRh
YmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoaW1wb3J0VmFsdWVMZW5ndGguY29uZmlndXJhYmxl
LCB0cnVlKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3NoYWRvdy1yZWFsbS5qcyBi
L0pTVGVzdHMvc3RyZXNzL3NoYWRvdy1yZWFsbS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjJiODhjNmUzOTU5
OTU2MzRkN2VkOGVmOWU5OWYyYzNmZDg4NmE1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3Mvc2hhZG93LXJlYWxtLmpzCkBAIC0wLDAgKzEsMzYgQEAKKy8vQCByZXF1aXJlT3B0aW9u
cygiLS11c2VTaGFkb3dSZWFsbT0xIikKKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBl
Y3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9YCk7Cit9CisKKy8v
IHNoYWRvdyByZWFsbSBzcGVjcworeworICAgIGxldCBzaGFkb3dSZWFsbVByb3AgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMsICJTaGFkb3dSZWFsbSIpOworICAgIHNob3Vs
ZEJlKHNoYWRvd1JlYWxtUHJvcC5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoc2hh
ZG93UmVhbG1Qcm9wLndyaXRhYmxlLCB0cnVlKTsKKyAgICBzaG91bGRCZShzaGFkb3dSZWFsbVBy
b3AuY29uZmlndXJhYmxlLCB0cnVlKTsKKworICAgIGxldCBzaGFkb3dSZWFsbUV2YWx1YXRlID0g
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihTaGFkb3dSZWFsbS5wcm90b3R5cGUsICJl
dmFsdWF0ZSIpOworICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtRXZhbHVhdGUuZW51bWVyYWJsZSwg
ZmFsc2UpOworICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtRXZhbHVhdGUud3JpdGFibGUsIHRydWUp
OworICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtRXZhbHVhdGUuY29uZmlndXJhYmxlLCB0cnVlKTsK
KworICAgIGxldCBzaGFkb3dSZWFsbUltcG9ydFZhbHVlID0gT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihTaGFkb3dSZWFsbS5wcm90b3R5cGUsICJpbXBvcnRWYWx1ZSIpOworICAgIHNo
b3VsZEJlKHNoYWRvd1JlYWxtSW1wb3J0VmFsdWUuZW51bWVyYWJsZSwgZmFsc2UpOworICAgIHNo
b3VsZEJlKHNoYWRvd1JlYWxtSW1wb3J0VmFsdWUud3JpdGFibGUsIHRydWUpOworICAgIHNob3Vs
ZEJlKHNoYWRvd1JlYWxtSW1wb3J0VmFsdWUuY29uZmlndXJhYmxlLCB0cnVlKTsKKworICAgIGxl
dCBzaGFkb3dSZWFsbU5hbWUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFNoYWRv
d1JlYWxtLCAibmFtZSIpOworICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtTmFtZS52YWx1ZSwgIlNo
YWRvd1JlYWxtIik7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1OYW1lLmVudW1lcmFibGUsIGZh
bHNlKTsKKyAgICBzaG91bGRCZShzaGFkb3dSZWFsbU5hbWUud3JpdGFibGUsIGZhbHNlKTsKKyAg
ICBzaG91bGRCZShzaGFkb3dSZWFsbU5hbWUuY29uZmlndXJhYmxlLCB0cnVlKTsKKworICAgIGxl
dCBzaGFkb3dSZWFsbUxlbmd0aCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU2hh
ZG93UmVhbG0sICJsZW5ndGgiKTsKKyAgICBzaG91bGRCZShzaGFkb3dSZWFsbUxlbmd0aC52YWx1
ZSwgMCk7CisgICAgc2hvdWxkQmUoc2hhZG93UmVhbG1MZW5ndGguZW51bWVyYWJsZSwgZmFsc2Up
OworICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtTGVuZ3RoLndyaXRhYmxlLCBmYWxzZSk7CisgICAg
c2hvdWxkQmUoc2hhZG93UmVhbG1MZW5ndGguY29uZmlndXJhYmxlLCB0cnVlKTsKK30KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9jb25m
aWcueWFtbAppbmRleCA4OTA4ZGNlZGJiMzk0OTdkYzAxN2RkZGVhNmQzMzg5YjI4ZDRmZGZkLi45
NjJkNTI0NjI1MjVhZmJiMjk2ZDlhY2ZkNmQ4YTBhMTQ0ZjIwYjM0IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1s
CkBAIC05LDYgKzksNyBAQCBmbGFnczoKICAgVGVtcG9yYWw6IHVzZVRlbXBvcmFsCiAgIGFycmF5
LWZpbmQtZnJvbS1sYXN0OiB1c2VBcnJheUZpbmRMYXN0TWV0aG9kCiAgIE9iamVjdC5oYXNPd246
IHVzZUhhc093bgorICBTaGFkb3dSZWFsbTogdXNlU2hhZG93UmVhbG0KIHNraXA6CiAgIGZlYXR1
cmVzOgogICAgIC0gQXRvbWljcy53YWl0QXN5bmMKQEAgLTIwLDcgKzIxLDYgQEAgc2tpcDoKICAg
ICAtIGpzb24tbW9kdWxlcwogICAgIC0gY2xhc3Mtc3RhdGljLWJsb2NrCiAgICAgLSBjYWxsYWJs
ZS1ib3VuZGFyeS1yZWFsbXMKLSAgICAtIFNoYWRvd1JlYWxtCiAgIHBhdGhzOgogICAgIC0gdGVz
dC9idWlsdC1pbnMvVGVtcG9yYWwvQ2FsZW5kYXIKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBv
cmFsL0luc3RhbnQK
</data>

          </attachment>
      

    </bug>

</bugzilla>