<?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>213545</bug_id>
          
          <creation_ts>2020-06-23 19:13:30 -0700</creation_ts>
          <short_desc>[JSC] add IC support for op_get_private_name</short_desc>
          <delta_ts>2020-07-28 12:29:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>206431</dependson>
    
    <dependson>213544</dependson>
          <blocked>212781</blocked>
    
    <blocked>213372</blocked>
    
    <blocked>214861</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Caitlin Potter (:caitp)">caitp</reporter>
          <assigned_to name="Caitlin Potter (:caitp)">caitp</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1665621</commentid>
    <comment_count>0</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-06-23 19:13:30 -0700</bug_when>
    <thetext>[JSC] add IC support for op_get_private_name</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665626</commentid>
    <comment_count>1</comment_count>
      <attachid>402618</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-06-23 19:26:12 -0700</bug_when>
    <thetext>Created attachment 402618
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666597</commentid>
    <comment_count>2</comment_count>
      <attachid>402899</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-06-26 14:00:39 -0700</bug_when>
    <thetext>Created attachment 402899
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668077</commentid>
    <comment_count>3</comment_count>
      <attachid>403323</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-07-01 14:58:21 -0700</bug_when>
    <thetext>Created attachment 403323
Patch

Fixes the JSVALUE32_64 builds, but I haven&apos;t been able to actually test them yet</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671097</commentid>
    <comment_count>4</comment_count>
      <attachid>403323</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-07-13 11:33:24 -0700</bug_when>
    <thetext>Comment on attachment 403323
Patch

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

Mostly LGTM, I agree with the direction here. But I have a suggestion and I also found a bug that we should have a test for.

&gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:268
&gt; +    case LoadPrivate:

name nit: I&apos;d call this &quot;PrivateFieldLoad&quot;

&gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:1437
&gt; +        if (viaProxy() &amp;&amp; m_type != LoadPrivate) {

why not have this be an assert inside viaProxy()?

We could just bail on caching if via window proxy.

&gt; Source/JavaScriptCore/bytecode/AccessCase.h:127
&gt; +        LoadPrivate,

Do we really need this to be a different type? It&apos;s going down the same path as Load. Why can&apos;t all the logic for private fields and cacheablility be done inside Repatch.cpp when deciding if it&apos;s ok to cache?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:2229
&gt; +    if (baseValue.isCell() &amp;&amp; baseValue.asCell()-&gt;isObject()) {

nit: baseValue.isObject() instead

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:2231
&gt; +        RETURN_IF_EXCEPTION(scope, encodedJSValue());

can this throw in practice? Maybe this should be an EXCEPTION_ASSERT that no exception happened? IIRC, throwing is related to OOM for resolving rope strings.

&gt; Source/JavaScriptCore/jit/JITPropertyAccess.cpp:112
&gt; +        auto notCell = branchIfNotCell(regT0);
&gt; +        notCell.link(this);

not needed

&gt; Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp:302
&gt; +        auto notCell = branchIfNotCell(regT1);
&gt; +        notCell.link(this);

ditto

&gt; Source/JavaScriptCore/jit/Repatch.cpp:181
&gt; +        return operationGetPrivateName;

this is wrong because the two functions here don&apos;t actually have the same signature. This will lead to it being called with the wrong arguments when you repatch. (For comparison, you can look at operationGetById and operationGetByIdOptimize).

Please add a test for this, as it should lead to a crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671213</commentid>
    <comment_count>5</comment_count>
      <attachid>403323</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-07-13 16:05:20 -0700</bug_when>
    <thetext>Comment on attachment 403323
Patch

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

&gt;&gt; Source/JavaScriptCore/jit/Repatch.cpp:181
&gt;&gt; +        return operationGetPrivateName;
&gt; 
&gt; this is wrong because the two functions here don&apos;t actually have the same signature. This will lead to it being called with the wrong arguments when you repatch. (For comparison, you can look at operationGetById and operationGetByIdOptimize).
&gt; 
&gt; Please add a test for this, as it should lead to a crash.

Is there a way I can make this work without having the signature match? It seems like a shame that it needs to match</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671262</commentid>
    <comment_count>6</comment_count>
      <attachid>403323</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-07-13 19:14:31 -0700</bug_when>
    <thetext>Comment on attachment 403323
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/jit/Repatch.cpp:181
&gt;&gt;&gt; +        return operationGetPrivateName;
&gt;&gt; 
&gt;&gt; this is wrong because the two functions here don&apos;t actually have the same signature. This will lead to it being called with the wrong arguments when you repatch. (For comparison, you can look at operationGetById and operationGetByIdOptimize).
&gt;&gt; 
&gt;&gt; Please add a test for this, as it should lead to a crash.
&gt; 
&gt; Is there a way I can make this work without having the signature match? It seems like a shame that it needs to match

I mean, there is definitely a way. But it&apos;d be crazy, and require patching way more code than just the call. The only reasonable way is to make them match IMO.

If you think about the machine code, we already have a call laid out. So as part of the ABI, we&apos;ve prepped the argument registers with the required values. When we switch the call, we rewire just the call instruction (or materialization of constant) to be A or B. To rewire it to a different signature function would require a lot more machinery, that isn&apos;t really profitable in any way to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671710</commentid>
    <comment_count>7</comment_count>
      <attachid>403323</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-07-15 05:28:36 -0700</bug_when>
    <thetext>Comment on attachment 403323
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/AccessCase.h:127
&gt;&gt; +        LoadPrivate,
&gt; 
&gt; Do we really need this to be a different type? It&apos;s going down the same path as Load. Why can&apos;t all the logic for private fields and cacheablility be done inside Repatch.cpp when deciding if it&apos;s ok to cache?

I share the same question. The only difference from `LoadPrivate` and `Load` I can see is the way we print things on `PolymorphicAccess::printInternal`, but I might be missing something.

&gt; Source/JavaScriptCore/jit/JITPropertyAccess.cpp:119
&gt; +            JSValueRegs(regT0), JSValueRegs(regT1), JSValueRegs(regT0));

I think it is very good to have `GPRReg baseGRP = regT0;` and `GPRReg propertyGRP = regT1;` above, so the call here is easier to read as `JITGetByValGenerator gen(..., JSValueRegs(baseGPR), JSValueRegs(propertyGPR), JSValueRegs(regT0));`

&gt; Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp:309
&gt; +            JSValueRegs::payloadOnly(regT0), JSValueRegs(regT3, regT2), JSValueRegs(regT1, regT0));

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671787</commentid>
    <comment_count>8</comment_count>
      <attachid>403323</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-07-15 10:25:02 -0700</bug_when>
    <thetext>Comment on attachment 403323
Patch

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

&gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:1504
&gt; +        if (m_type == Load || m_type == GetGetter || m_type == LoadPrivate) {

We are missing the inclusion of `m_type == LoadPrivate` above into 32-bits path and this is making we only copy payload when the executing IC&apos;s fast path. This endup corrupting the result of `get_private_name`, which is triggering some segmentation faults into ARMv7 and MIPS (they are reported on last EWS run, BTW).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671811</commentid>
    <comment_count>9</comment_count>
      <attachid>403323</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-07-15 11:07:40 -0700</bug_when>
    <thetext>Comment on attachment 403323
Patch

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

&gt;&gt; Source/JavaScriptCore/jit/JITPropertyAccess.cpp:112
&gt;&gt; +        notCell.link(this);
&gt; 
&gt; not needed

I&apos;m not sure if we would like to have this path here. IIRC, this was added as a mitigation into get_by_val IC due to some performance regression into JetStream 2 or Speedometer 2, but I&apos;m not sure if this would be necessary for private fields. It will only be possible to take this path if we have multiple evaluations of class and this might be a unlikely case IMHO. We might decide to add it later if we identify that multiple class evaluation is a common pattern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671899</commentid>
    <comment_count>10</comment_count>
      <attachid>404383</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-07-15 13:22:40 -0700</bug_when>
    <thetext>Created attachment 404383
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671907</commentid>
    <comment_count>11</comment_count>
      <attachid>403323</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-07-15 13:28:56 -0700</bug_when>
    <thetext>Comment on attachment 403323
Patch

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

I&apos;ve found some minor problems with the current patch so far, including some mentioned here. Nothing significant though.

&gt;&gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:268
&gt;&gt; +    case LoadPrivate:
&gt; 
&gt; name nit: I&apos;d call this &quot;PrivateFieldLoad&quot;

I&apos;ve removed the LoadPrivate enum value instead, as requested below

&gt;&gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:1437
&gt;&gt; +        if (viaProxy() &amp;&amp; m_type != LoadPrivate) {
&gt; 
&gt; why not have this be an assert inside viaProxy()?
&gt; 
&gt; We could just bail on caching if via window proxy.

done

&gt;&gt;&gt; Source/JavaScriptCore/bytecode/AccessCase.h:127
&gt;&gt;&gt; +        LoadPrivate,
&gt;&gt; 
&gt;&gt; Do we really need this to be a different type? It&apos;s going down the same path as Load. Why can&apos;t all the logic for private fields and cacheablility be done inside Repatch.cpp when deciding if it&apos;s ok to cache?
&gt; 
&gt; I share the same question. The only difference from `LoadPrivate` and `Load` I can see is the way we print things on `PolymorphicAccess::printInternal`, but I might be missing something.

It doesn&apos;t really need to be a different type in practice, but it seemed nice to have a different descriptive string for it. I&apos;ve removed it.

&gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:2229
&gt;&gt; +    if (baseValue.isCell() &amp;&amp; baseValue.asCell()-&gt;isObject()) {
&gt; 
&gt; nit: baseValue.isObject() instead

done

&gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:2231
&gt;&gt; +        RETURN_IF_EXCEPTION(scope, encodedJSValue());
&gt; 
&gt; can this throw in practice? Maybe this should be an EXCEPTION_ASSERT that no exception happened? IIRC, throwing is related to OOM for resolving rope strings.

no, in practice it should be impossible

--- oops, I haven&apos;t changed this yet...

&gt;&gt;&gt; Source/JavaScriptCore/jit/JITPropertyAccess.cpp:112
&gt;&gt;&gt; +        notCell.link(this);
&gt;&gt; 
&gt;&gt; not needed
&gt; 
&gt; I&apos;m not sure if we would like to have this path here. IIRC, this was added as a mitigation into get_by_val IC due to some performance regression into JetStream 2 or Speedometer 2, but I&apos;m not sure if this would be necessary for private fields. It will only be possible to take this path if we have multiple evaluations of class and this might be a unlikely case IMHO. We might decide to add it later if we identify that multiple class evaluation is a common pattern.

it&apos;s gone

&gt;&gt; Source/JavaScriptCore/jit/JITPropertyAccess.cpp:119
&gt;&gt; +            JSValueRegs(regT0), JSValueRegs(regT1), JSValueRegs(regT0));
&gt; 
&gt; I think it is very good to have `GPRReg baseGRP = regT0;` and `GPRReg propertyGRP = regT1;` above, so the call here is easier to read as `JITGetByValGenerator gen(..., JSValueRegs(baseGPR), JSValueRegs(propertyGPR), JSValueRegs(regT0));`

Done... I&apos;m undecided on if it&apos;s actually better or not though 👀

&gt;&gt;&gt;&gt; Source/JavaScriptCore/jit/Repatch.cpp:181
&gt;&gt;&gt;&gt; +        return operationGetPrivateName;
&gt;&gt;&gt; 
&gt;&gt;&gt; this is wrong because the two functions here don&apos;t actually have the same signature. This will lead to it being called with the wrong arguments when you repatch. (For comparison, you can look at operationGetById and operationGetByIdOptimize).
&gt;&gt;&gt; 
&gt;&gt;&gt; Please add a test for this, as it should lead to a crash.
&gt;&gt; 
&gt;&gt; Is there a way I can make this work without having the signature match? It seems like a shame that it needs to match
&gt; 
&gt; I mean, there is definitely a way. But it&apos;d be crazy, and require patching way more code than just the call. The only reasonable way is to make them match IMO.
&gt; 
&gt; If you think about the machine code, we already have a call laid out. So as part of the ABI, we&apos;ve prepped the argument registers with the required values. When we switch the call, we rewire just the call instruction (or materialization of constant) to be A or B. To rewire it to a different signature function would require a lot more machinery, that isn&apos;t really profitable in any way to do.

My mistake, I didn&apos;t notice I was using this in 2 cases --- one where it worked (megamorphic before baseline JIT) and switching to megamorphic in the JIT slow path.

I&apos;ve added a StructureStub parameter to the generic case, and just have it pass null for it if no StubInfo will be created (as opposed to having 2 generic variants, like GetByVal has)

I&apos;ll add an explicit test to make sure both paths are hit.

----

I&apos;ve added a test since writing this draft, and talked with Caio offline about this... I haven&apos;t been able to actually get the IC system to completely give up on caching (and repatch with `operationGetPrivateName` instead of `operationGetPrivateNameOptimize`), so the only way I&apos;ve been able to reproduce it is with --forceICFailure. This seems like a problem, but I&apos;m not sure if it&apos;s with my changes to `tryCacheGetBy` or something upstream

&gt; Source/JavaScriptCore/jit/Repatch.cpp:256
&gt; +            if (baseCell-&gt;type() == PureForwardingProxyType &amp;&amp; !isPrivate) {

I had tried adding `if (isPrivate) return GiveUpOnCache;` but the branch was never taken, even when the base object is `globalThis`.

I really have no idea :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671916</commentid>
    <comment_count>12</comment_count>
      <attachid>404389</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-07-15 13:42:57 -0700</bug_when>
    <thetext>Created attachment 404389
Patch

fixes the build, I think/hope. Not sure why cmake builds aren&apos;t erroring on unused variables ��</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671957</commentid>
    <comment_count>13</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-07-15 15:02:05 -0700</bug_when>
    <thetext>I&apos;ve fixed the C-linkage-for-C++-function compiler error locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672602</commentid>
    <comment_count>14</comment_count>
      <attachid>404586</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-07-17 13:38:31 -0700</bug_when>
    <thetext>Created attachment 404586
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675484</commentid>
    <comment_count>15</comment_count>
      <attachid>405334</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-07-27 17:53:13 -0700</bug_when>
    <thetext>Created attachment 405334
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675665</commentid>
    <comment_count>16</comment_count>
      <attachid>405334</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-07-28 10:13:44 -0700</bug_when>
    <thetext>Comment on attachment 405334
Patch

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

Mostly LGTM, just a few comments.

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:2231
&gt; +    // Only consider caching if the base value doesn&apos;t need to be converted to a JSObject

nit: this comment is not needed given the code is doing what the comment says

Question: should we invalidate the opportunity to cache if we ever see non-object?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:2237
&gt; +        JSObject* base = baseValue.asCell()-&gt;toObject(globalObject);

this should be a jsCast&lt;JSObject*&gt;

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:2260
&gt; +    auto scope = DECLARE_THROW_SCOPE(vm);

nit: You can remove this.

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:2267
&gt; +    RELEASE_AND_RETURN(scope, JSValue::encode(getPrivateName(globalObject, callFrame, baseValue, fieldNameValue)));

and just turn this into a normal return.

&gt; Source/JavaScriptCore/jit/JITPropertyAccess.cpp:115
&gt; +    gen.stubInfo()-&gt;accessType = AccessType::GetPrivateName;

nit: This is a bit fragile. It&apos;s relying on SSI&apos;s constructor not looking at this access type. Why not have JITGetByValGenerator take an AccessType as a parameter?

&gt; Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp:306
&gt; +    gen.stubInfo()-&gt;accessType = AccessType::GetPrivateName;

ditto

&gt; Source/JavaScriptCore/jit/Repatch.cpp:385
&gt; +                    ASSERT(!slot.isUnset());

let&apos;s RELEASE_ASSERT

&gt; Source/JavaScriptCore/jit/Repatch.cpp:386
&gt; +                    constexpr bool cannotBeProxy = false;

This name has a negative that it should not. I&apos;d do:
&quot;constexpr bool isProxy = false;&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675705</commentid>
    <comment_count>17</comment_count>
      <attachid>405385</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-07-28 11:50:36 -0700</bug_when>
    <thetext>Created attachment 405385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675707</commentid>
    <comment_count>18</comment_count>
      <attachid>405334</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-07-28 11:53:41 -0700</bug_when>
    <thetext>Comment on attachment 405334
Patch

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

Thanks for the review, Saam

&gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:2231
&gt;&gt; +    // Only consider caching if the base value doesn&apos;t need to be converted to a JSObject
&gt; 
&gt; nit: this comment is not needed given the code is doing what the comment says
&gt; 
&gt; Question: should we invalidate the opportunity to cache if we ever see non-object?

I&apos;m not sure. I&apos;m imagining an application which primarily falls on the fast path, but rarely takes the slow path due to a primitive. It would be a shame to eliminate the fast path if the primitive case is taken rarely. But maybe it does make sense to do that.

Anyways, comment removed.

&gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:2237
&gt;&gt; +        JSObject* base = baseValue.asCell()-&gt;toObject(globalObject);
&gt; 
&gt; this should be a jsCast&lt;JSObject*&gt;

done

&gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:2260
&gt;&gt; +    auto scope = DECLARE_THROW_SCOPE(vm);
&gt; 
&gt; nit: You can remove this.

done and done

&gt;&gt; Source/JavaScriptCore/jit/JITPropertyAccess.cpp:115
&gt;&gt; +    gen.stubInfo()-&gt;accessType = AccessType::GetPrivateName;
&gt; 
&gt; nit: This is a bit fragile. It&apos;s relying on SSI&apos;s constructor not looking at this access type. Why not have JITGetByValGenerator take an AccessType as a parameter?

Done and done

&gt;&gt; Source/JavaScriptCore/jit/Repatch.cpp:385
&gt;&gt; +                    ASSERT(!slot.isUnset());
&gt; 
&gt; let&apos;s RELEASE_ASSERT

done

&gt;&gt; Source/JavaScriptCore/jit/Repatch.cpp:386
&gt;&gt; +                    constexpr bool cannotBeProxy = false;
&gt; 
&gt; This name has a negative that it should not. I&apos;d do:
&gt; &quot;constexpr bool isProxy = false;&quot;

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675719</commentid>
    <comment_count>19</comment_count>
      <attachid>405385</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-07-28 12:14:55 -0700</bug_when>
    <thetext>Comment on attachment 405385
Patch

Nice. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675734</commentid>
    <comment_count>20</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-28 12:28:21 -0700</bug_when>
    <thetext>Committed r265000: &lt;https://trac.webkit.org/changeset/265000&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 405385.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675735</commentid>
    <comment_count>21</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-28 12:29:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/66231520&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402618</attachid>
            <date>2020-06-23 19:26:12 -0700</date>
            <delta_ts>2020-06-26 14:00:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213545-20200623222612.patch</filename>
            <type>text/plain</type>
            <size>28576</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YjFhYzgyNGRjYTc4YjU1MWFhYzliMDdiNGQyNGU1YjhiZTE1NmZmLi4yYjU1ZGJkYzY0M2QxZThi
OTIzMzNlMTNiMTJhYTNmZDcwMThkNjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MyBAQAorMjAyMC0wNi0yMyAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIGFkZCBJQyBzdXBwb3J0IGZvciBvcF9nZXRfcHJpdmF0ZV9uYW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM1NDUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgYmFz
ZWxpbmUgSklUIG5vdyBzdXBwb3J0cyBhIGZhc3QgcGF0aCBmb3Igb3BfcHJpdmF0ZV9uYW1lLAor
ICAgICAgICB1c2luZyBhIHZhcmlhbnQgb2YgR2V0QnlWYWwgSUMuCisKKyAgICAgICAgVGhlIGdl
bmVyYXRlZCBBY2Nlc3NDYXNlIGhhcyB0aGUgZm9sbG93aW5nIHF1YWxpdGllczoKKyAgICAgICAg
ICAtIEFsd2F5cyAiZGlyZWN0IiwgcmVseWluZyBvbmx5IG9uIHRoZSBjdXJyZW50IHN0cnVjdHVy
ZSBmb3IgY2FjaGViaWxpdHkKKyAgICAgICAgICAtIE5ldmVyIGltcHVyZSAoRE9NIHByb3BlcnRp
ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgdGhpcyB0aW1lLCBQcm94eU9iamVjdHMgYXJlIHRyZWF0
ZWQgYXMgSlNPYmplY3RzKQorCisgICAgICAgIFRoaXMgYWxzbyBhZGRzIGlkZW50aWZpZXIgdHJh
Y2tpbmcgdmlhIEdldEJ5VmFsSGlzdG9yeSB0byB0aGUKKyAgICAgICAgb3BfZ2V0X3ByaXZhdGVf
bmFtZSBMTEludCBzbG93IHBhdGgsIHRvIHRyYWNrIGlmIGEgcHJpdmF0ZSBmaWVsZCBsb2FkCisg
ICAgICAgIGJlY29tZXMgIm1lZ2Ftb3JwaGljIiAod2hpY2ggbWF5IGhhcHBlbiBpZiB0aGVyZSBh
cmUgbWFueSBpbnN0YW5jZXMgb2YKKyAgICAgICAgdGhlIHNhbWUgY2xhc3MpLgorCisgICAgICAg
IEJhc2VkIG9uIHRoZSBtaWNyb2JlbmNobWFyayByZXZpZXdlZCBvbiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNTQ0LCB0aGlzIHNlZXMKKyAgICAgICAgYW4gaW1w
cm92ZW1lbnQgb2Ygcm91Z2hseSA1MCUgb24gYXZlcmFnZS4KKworICAgICAgICAqIGJ5dGVjb2Rl
L0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpyZXF1aXJlc0lkZW50
aWZpZXJOYW1lTWF0Y2ggY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpyZXF1aXJl
c0ludDMyUHJvcGVydHlDaGVjayBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Om5l
ZWRzU2NyYXRjaEZQUiBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmZvckVhY2hE
ZXBlbmRlbnRDZWxsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6ZG9lc0NhbGxz
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y2FuUmVwbGFjZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAg
ICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5j
cHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnJl
c2V0KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAq
IGppdC9JQ1N0YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklU
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Z2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3By
aXZhdGVfbmFtZSk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgICogaml0L1Jl
cGF0Y2guY3BwOgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVHZXRCeUZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6dHJ5Q2FjaGVHZXRCeSk6CisgICAgICAgICogaml0L1JlcGF0Y2guaDoKKyAgICAgICAg
KiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9T
TE9XX1BBVEhfREVDTCk6CisKIDIwMjAtMDYtMjMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIEhhbmRsZSBzdHJpbmcgb3ZlcmZsb3cgaW4gREZHIGdyYXBoIGR1bXAg
d2hpbGUgdmFsaWRhdGluZyBBSS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
Y2Nlc3NDYXNlLmNwcAppbmRleCBkOGQ4MDZkNmY5Y2UxYTVkYjQxNzU4ZGQwM2FkNThiM2UzZGQ4
NTBiLi4zZTI3MDQwMzA3Njg4ZGU1MmZlYTVlMzk3OGQ0NTlmMGNiNTQ0OWQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCkBAIC0yNjUsNiArMjY1
LDcgQEAgYm9vbCBBY2Nlc3NDYXNlOjpyZXF1aXJlc0lkZW50aWZpZXJOYW1lTWF0Y2goKSBjb25z
dAogewogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBMb2FkOgorICAgIGNhc2UgR2V0
UHJpdmF0ZU5hbWU6CiAgICAgLy8gV2UgZG9uJ3QgY3VycmVudGx5IGhhdmUgYSBieV92YWwgZm9y
IHRoZXNlIHB1dHMsIGJ1dCB3ZSBkbyBjYXJlIGFib3V0IHRoZSBpZGVudGlmaWVyLgogICAgIGNh
c2UgVHJhbnNpdGlvbjoKICAgICBjYXNlIERlbGV0ZToKQEAgLTM0MCw2ICszNDEsNyBAQCBib29s
IEFjY2Vzc0Nhc2U6OnJlcXVpcmVzSW50MzJQcm9wZXJ0eUNoZWNrKCkgY29uc3QKICAgICBjYXNl
IEluc3RhbmNlT2ZIaXQ6CiAgICAgY2FzZSBJbnN0YW5jZU9mTWlzczoKICAgICBjYXNlIEluc3Rh
bmNlT2ZHZW5lcmljOgorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBjYXNlIEluZGV4ZWRJbnQzMkxvYWQ6CiAgICAgY2FzZSBJbmRleGVkRG91Ymxl
TG9hZDoKQEAgLTQwMiw2ICs0MDQsNyBAQCBib29sIEFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQ
UigpIGNvbnN0CiAgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQxNkxvYWQ6CiAgICAgY2Fz
ZSBJbmRleGVkVHlwZWRBcnJheUludDMyTG9hZDoKICAgICBjYXNlIEluZGV4ZWRTdHJpbmdMb2Fk
OgorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBj
YXNlIEluZGV4ZWREb3VibGVMb2FkOgogICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlGbG9hdDMy
TG9hZDoKQEAgLTQ5MCw2ICs0OTMsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmZvckVhY2hEZXBlbmRl
bnRDZWxsKFZNJiB2bSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKICAgICBjYXNlIElu
ZGV4ZWRUeXBlZEFycmF5RmxvYXQzMkxvYWQ6CiAgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZs
b2F0NjRMb2FkOgogICAgIGNhc2UgSW5kZXhlZFN0cmluZ0xvYWQ6CisgICAgY2FzZSBHZXRQcml2
YXRlTmFtZToKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpAQCAtNTQzLDYgKzU0Nyw3IEBAIGJv
b2wgQWNjZXNzQ2FzZTo6ZG9lc0NhbGxzKFZNJiB2bSwgVmVjdG9yPEpTQ2VsbCo+KiBjZWxsc1Rv
TWFya0lmRG9lc0NhbGxzKSBjb25zCiAgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0MzJM
b2FkOgogICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlGbG9hdDY0TG9hZDoKICAgICBjYXNlIElu
ZGV4ZWRTdHJpbmdMb2FkOgorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CiAgICAgICAgIGRvZXND
YWxscyA9IGZhbHNlOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC02NjQsNiArNjY5LDcgQEAg
Ym9vbCBBY2Nlc3NDYXNlOjpjYW5SZXBsYWNlKGNvbnN0IEFjY2Vzc0Nhc2UmIG90aGVyKSBjb25z
dAogICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6CiAgICAgY2FzZSBJbkhpdDoKICAgICBj
YXNlIEluTWlzczoKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lOgogICAgICAgICBpZiAob3RoZXIu
dHlwZSgpICE9IHR5cGUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTQyMyw3
ICsxNDI5LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlv
blN0YXRlJiBzdGF0ZSkKICAgICAgICAgaml0LmJveEJvb2xlYW5QYXlsb2FkKG1fdHlwZSA9PSBJ
bnN0YW5jZU9mSGl0LCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKTsKICAgICAgICAgc3RhdGUuc3Vj
Y2VlZCgpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAgIAorICAgIGNhc2UgR2V0UHJp
dmF0ZU5hbWU6CiAgICAgY2FzZSBMb2FkOgogICAgIGNhc2UgR2V0R2V0dGVyOgogICAgIGNhc2Ug
R2V0dGVyOgpAQCAtMTQ0NCw3ICsxNDUxLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUlt
cGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgfQogCiAgICAgICAgIEdQ
UlJlZyBiYXNlRm9yR2V0R1BSOwotICAgICAgICBpZiAodmlhUHJveHkoKSkgeworICAgICAgICBp
ZiAodmlhUHJveHkoKSAmJiBtX3R5cGUgIT0gR2V0UHJpdmF0ZU5hbWUpIHsKICAgICAgICAgICAg
IEFTU0VSVChtX3R5cGUgIT0gQ3VzdG9tVmFsdWVTZXR0ZXIgfHwgbV90eXBlICE9IEN1c3RvbUFj
Y2Vzc29yU2V0dGVyKTsgLy8gQmVjYXVzZSBzZXR0ZXJzIG5lZWQgdG8gbm90IHRyYXNoIHZhbHVl
UmVnc1BheWxvYWRHUFIuCiAgICAgICAgICAgICBpZiAobV90eXBlID09IEdldHRlciB8fCBtX3R5
cGUgPT0gU2V0dGVyKQogICAgICAgICAgICAgICAgIGJhc2VGb3JHZXRHUFIgPSBzY3JhdGNoR1BS
OwpAQCAtMTQ2NSw2ICsxNDcyLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNj
ZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIC8vIFRoaXMgaXNuJ3QgcHJl
dHR5LCBidXQgd2Uga25vdyB3ZSBnb3QgaGVyZSB2aWEgZ2VuZXJhdGVXaXRoR3VhcmQsCiAgICAg
ICAgICAgICAvLyBhbmQgaXQgbGVmdCB0aGUgYmFzZUZvckFjY2VzcyBpbnNpZGUgc2NyYXRjaEdQ
Ui4gV2UgY291bGQgcmUtZGVyaXZlIHRoZSBiYXNlLAogICAgICAgICAgICAgLy8gYnV0IGl0J2Qg
cmVxdWlyZSBlbWl0dGluZyB0aGUgc2FtZSBjb2RlIHRvIGxvYWQgdGhlIGJhc2UgdHdpY2UuCisg
ICAgICAgICAgICBBU1NFUlQobV90eXBlICE9IEdldFByaXZhdGVOYW1lKTsKICAgICAgICAgICAg
IGJhc2VGb3JBY2Nlc3NHUFIgPSBzY3JhdGNoR1BSOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgaWYgKGhhc0FsdGVybmF0ZUJhc2UoKSkgewpAQCAtMTQ3Nyw3ICsxNDg1LDcgQEAgdm9p
ZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkK
IAogICAgICAgICBHUFJSZWcgbG9hZGVkVmFsdWVHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgICAg
ICBpZiAobV90eXBlICE9IEN1c3RvbVZhbHVlR2V0dGVyICYmIG1fdHlwZSAhPSBDdXN0b21BY2Nl
c3NvckdldHRlciAmJiBtX3R5cGUgIT0gQ3VzdG9tVmFsdWVTZXR0ZXIgJiYgbV90eXBlICE9IEN1
c3RvbUFjY2Vzc29yU2V0dGVyKSB7Ci0gICAgICAgICAgICBpZiAobV90eXBlID09IExvYWQgfHwg
bV90eXBlID09IEdldEdldHRlcikKKyAgICAgICAgICAgIGlmIChtX3R5cGUgPT0gTG9hZCB8fCBt
X3R5cGUgPT0gR2V0R2V0dGVyIHx8IG1fdHlwZSA9PSBHZXRQcml2YXRlTmFtZSkKICAgICAgICAg
ICAgICAgICBsb2FkZWRWYWx1ZUdQUiA9IHZhbHVlUmVnc1BheWxvYWRHUFI7CiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgbG9hZGVkVmFsdWVHUFIgPSBzY3JhdGNoR1BSOwpAQCAt
MTUxMCw3ICsxNTE4LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2Vu
ZXJhdGlvblN0YXRlJiBzdGF0ZSkKICNlbmRpZgogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1f
dHlwZSA9PSBMb2FkIHx8IG1fdHlwZSA9PSBHZXRHZXR0ZXIpIHsKKyAgICAgICAgaWYgKG1fdHlw
ZSA9PSBMb2FkIHx8IG1fdHlwZSA9PSBHZXRHZXR0ZXIgfHwgbV90eXBlID09IEdldFByaXZhdGVO
YW1lKSB7CiAgICAgICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
Y2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5o
CmluZGV4IDEwOGZlZjNiMzMwMTJjZjRlN2RiMjdlMjBhNjI2MDIwNzg1ZDIxNTkuLjIwNjliNTY1
MGQyMjE3ZDM3ZjZiODg0ODMxNzk0MDA2ZWVjNjVlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaApAQCAtMTIzLDcgKzEyMyw4IEBAIHB1YmxpYzoKICAg
ICAgICAgSW5kZXhlZFR5cGVkQXJyYXlVaW50MzJMb2FkLAogICAgICAgICBJbmRleGVkVHlwZWRB
cnJheUZsb2F0MzJMb2FkLAogICAgICAgICBJbmRleGVkVHlwZWRBcnJheUZsb2F0NjRMb2FkLAot
ICAgICAgICBJbmRleGVkU3RyaW5nTG9hZAorICAgICAgICBJbmRleGVkU3RyaW5nTG9hZCwKKyAg
ICAgICAgR2V0UHJpdmF0ZU5hbWUsCiAgICAgfTsKIAogICAgIGVudW0gU3RhdGUgOiB1aW50OF90
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmlu
ZGV4IDA4YWVhZTlmN2NlOTJjZGRkZmYyNzUzYzlhNDczODUyMDMwZjYyMmMuLjcxNzcyYzcwODdi
N2I1OTA0M2M2NTUxYTAwYzg5YjVkNDcyNGIxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtNTcxLDYgKzU3MSw3IEBAIG9wIDpnZXRf
cHJpdmF0ZV9uYW1lLAogICAgICAgICBzdHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCiAgICAgICAg
IG9mZnNldDogdW5zaWduZWQsCiAgICAgICAgIHByb3BlcnR5OiBXcml0ZUJhcnJpZXJbSlNDZWxs
XSwKKyAgICAgICAgc2VlbklkZW50aWZpZXJzOiBHZXRCeVZhbEhpc3RvcnksCiAgICAgfQogCiBv
cCA6cHV0X2J5X3ZhbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKaW5kZXggOTE4MDVjNDI3ODJlNGRhNzg3ZTYzOTZlNjAzOGRhYzlkODMyNjg0OC4uZGVl
MDQ4OWM1OWYzODQ1OWRmNDczYjZiZTI1MGJhNTdiYjZiOTAzYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTUwOCw2ICs1MDgsNyBAQCBib29s
IENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25l
ckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5LKE9wVGFpbENhbGxGb3J3YXJkQXJndW1l
bnRzLCBwcm9maWxlKQogICAgICAgICBMSU5LKE9wQ29uc3RydWN0VmFyYXJncywgcHJvZmlsZSkK
ICAgICAgICAgTElOSyhPcEdldEJ5VmFsLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9wR2V0UHJp
dmF0ZU5hbWUsIHByb2ZpbGUpCiAKICAgICAgICAgTElOSyhPcEdldERpcmVjdFBuYW1lLCBwcm9m
aWxlKQogICAgICAgICBMSU5LKE9wR2V0QnlJZFdpdGhUaGlzLCBwcm9maWxlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5k
ZXggODkxNDExNjk4M2QwODQ0MjM0YjdiZmM1MWM4ZGMyNWI0YmMwOTM0Ni4uODcxYzQzOTZiYjA5
NDhmOTU5OTVlNDYwM2EzYmY1ZDk2NDdjM2JlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC05MTEsNiArOTExLDkg
QEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFjY2Vzc0Nhc2U6OkFjY2Vz
c1R5cGUgdHlwZSkKICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkluZGV4ZWRTdHJpbmdMb2FkOgogICAg
ICAgICBvdXQucHJpbnQoIkluZGV4ZWRTdHJpbmdMb2FkIik7CiAgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIEFjY2Vzc0Nhc2U6OkdldFByaXZhdGVOYW1lOgorICAgICAgICBvdXQucHJpbnQoIkdl
dFByaXZhdGVOYW1lIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggYmViNDE1OTAxMjY1ZjRhYmJlNGU3MGZh
MjFiOTBkZjQxMjE3MjMxNy4uYmE4MDgyMzdjYjM2NzliN2UwNWU1ZGJhNDhiNmZhYTViMmZhNmJl
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uY3BwCkBAIC0yNjUsNiArMjY1LDkgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6
cmVzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRCeVZh
bDoKICAgICAgICAgcmVzZXRHZXRCeShjb2RlQmxvY2ssICp0aGlzLCBHZXRCeUtpbmQ6Ok5vcm1h
bEJ5VmFsKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRQcml2YXRl
TmFtZToKKyAgICAgICAgcmVzZXRHZXRCeShjb2RlQmxvY2ssICp0aGlzLCBHZXRCeUtpbmQ6OlBy
aXZhdGVOYW1lKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpQdXQ6CiAg
ICAgICAgIHJlc2V0UHV0QnlJRChjb2RlQmxvY2ssICp0aGlzKTsKICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
CmluZGV4IDdhNGY1ODBlYmIyNzE5MTM5NzEwYmQ1OTZmMzJhYTY5ODYxNzI2YTQuLmJkYmYzYjg4
ZTk2ODQxY2RjMzUwZmE1ZjE5NTYzMjk5NTJhNGVkZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC01Nyw3ICs1Nyw4IEBA
IGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6IGludDhfdCB7CiAgICAgSW4sCiAgICAgSW5zdGFuY2VP
ZiwKICAgICBEZWxldGVCeUlELAotICAgIERlbGV0ZUJ5VmFsCisgICAgRGVsZXRlQnlWYWwsCisg
ICAgR2V0UHJpdmF0ZU5hbWUsCiB9OwogCiBlbnVtIGNsYXNzIENhY2hlVHlwZSA6IGludDhfdCB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCmluZGV4IDk2YzE5YTE3YmRjMmE3ZDEwZjE1
ZjliY2EzOTAyMTYyMWM5OWRiODIuLjEzNzhlNjNjYzI3M2Y2YWM3YzEzNzEyZWJiYTBmZWFmM2Yy
MDQ0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCkBAIC03NCw3ICs3NCw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKFB1dEJ5SWRTZWxmUGF0Y2gpIFwKICAgICBtYWNy
byhJbkJ5SWRTZWxmUGF0Y2gpIFwKICAgICBtYWNybyhEZWxCeVJlcGxhY2VXaXRoSnVtcCkgXAot
ICAgIG1hY3JvKERlbEJ5UmVwbGFjZVdpdGhHZW5lcmljKQorICAgIG1hY3JvKERlbEJ5UmVwbGFj
ZVdpdGhHZW5lcmljKSBcCisgICAgbWFjcm8oT3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6
ZSkKIAogY2xhc3MgSUNFdmVudCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
aW5kZXggNjAwNWNkNGU1MjJkYTljMDE2ZDZjMDc3YTQ0N2NhMmI1MGQ0MzFlYS4uMjM3MTcyOTE4
Y2ZkYjMyYzJhMjNmM2Y4NjgzZmNkYjI0ZjRhNjVlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcApAQCAtMjkyLDcgKzI5Miw2IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNz
KCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AocHVzaF93aXRoX3Njb3BlKQogICAgICAgICBERUZJ
TkVfU0xPV19PUChjcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKICAgICAgICAgREVGSU5FX1NM
T1dfT1AoZ2V0X2J5X3ZhbF93aXRoX3RoaXMpCi0gICAgICAgIERFRklORV9TTE9XX09QKGdldF9w
cml2YXRlX25hbWUpCiAgICAgICAgIERFRklORV9TTE9XX09QKHB1dF9ieV9pZF93aXRoX3RoaXMp
CiAgICAgICAgIERFRklORV9TTE9XX09QKHB1dF9ieV92YWxfd2l0aF90aGlzKQogICAgICAgICBE
RUZJTkVfU0xPV19PUChyZXNvbHZlX3Njb3BlX2Zvcl9ob2lzdGluZ19mdW5jX2RlY2xfaW5fZXZh
bCkKQEAgLTM2MCw2ICszNTksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygp
CiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlfaWRfd2l0aF90aGlzKQogICAgICAgICBERUZJ
TkVfT1Aob3BfZ2V0X2J5X2lkX2RpcmVjdCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV92
YWwpCisgICAgICAgIERFRklORV9PUChvcF9nZXRfcHJpdmF0ZV9uYW1lKQogICAgICAgICBERUZJ
TkVfT1Aob3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZSkKICAgICAgICAgREVGSU5FX09QKG9wX2lu
c3RhbmNlb2YpCiAgICAgICAgIERFRklORV9PUChvcF9pbnN0YW5jZW9mX2N1c3RvbSkKQEAgLTU2
Niw2ICs1NjYsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2J5X2lkX3dpdGhfdGhpcykKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX2dldF9ieV9pZF9kaXJlY3QpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9nZXRfYnlfdmFsKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0
X3ByaXZhdGVfbmFtZSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2luc3RhbmNlb2Yp
CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9pbnN0YW5jZW9mX2N1c3RvbSkKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2psZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5k
ZXggNjY2ZTBlZDRjOGEwOTM0NGY0YjRmZjQyNTcwZTY3ZDY5NWNiMTc0OS4uN2MzNzViNjY1ZTc1
ZmRiZTIzMjU2NTIxMzNkM2M4NTZkM2M4YzkzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBA
IC01MjcsNiArNTI3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9n
ZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1p
dF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9nZXRfcHJvdG90eXBlX29mKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwpAQCAtNjU3LDYg
KzY1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9i
eV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2FyZ3VtZW50X2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKaW5kZXggYmMzY2NjODAyMzVkNzM5Y2QxYWY1MjY5YzFlNmFiMTVmZWQ3NDg5NS4uZTVhMDRm
ZDY0ZGUyNzczZjcyMDVkYWVkZjU2MmNjNzY2NjU0MjI2MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yMTkzLDYgKzIxOTMsNzUgQEAgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmMKIH0KIAogCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdl
dFByaXZhdGVOYW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBmaWVsZE5hbWVWYWx1ZSkKK3sKKyAg
ICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYmFz
ZVZhbHVlLnJlcXVpcmVPYmplY3RDb2VyY2libGUoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworICAgIGF1dG8gZmllbGROYW1lID0gZmll
bGROYW1lVmFsdWUudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisKKyAgICBKU09iamVjdCogYmFzZSA9IGJhc2VW
YWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2Us
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIGJhc2Ut
PmdldFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIGZpZWxkTmFtZSwgc2xvdCk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKworICAgIHJldHVybiBzbG90Lmdl
dFZhbHVlKGdsb2JhbE9iamVjdCwgZmllbGROYW1lKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRGaWVsZE5hbWUpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZEJhc2UpOworICAgIEpTVmFsdWUgZmllbGROYW1lVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZEZpZWxkTmFtZSk7CisgICAgQVNTRVJUKENhY2hlYWJsZUlkZW50aWZpZXI6
OmlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwoZmllbGROYW1lVmFsdWUpKTsKKworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKworICAgIC8vIE9ubHkg
Y29uc2lkZXIgY2FjaGluZyBpZiB0aGUgYmFzZSB2YWx1ZSBkb2Vzbid0IG5lZWQgdG8gYmUgY29u
dmVydGVkIHRvIGEgSlNPYmplY3QKKyAgICBpZiAoYmFzZVZhbHVlLmlzQ2VsbCgpICYmIGJhc2VW
YWx1ZS5hc0NlbGwoKS0+aXNPYmplY3QoKSkgeworICAgICAgICBjb25zdCBJZGVudGlmaWVyIGZp
ZWxkTmFtZSA9IGZpZWxkTmFtZVZhbHVlLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAg
ICAgIEFTU0VSVChmaWVsZE5hbWUuaXNTeW1ib2woKSk7CisKKyAgICAgICAgSlNPYmplY3QqIGJh
c2UgPSBiYXNlVmFsdWUuYXNDZWxsKCktPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgICAg
IFByb3BlcnR5U2xvdCBzbG90KGJhc2UsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnkpOworICAgICAgICBiYXNlLT5nZXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0
LCBmaWVsZE5hbWUsIHNsb3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKKworICAgICAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlvbkdl
dFByaXZhdGVOYW1lT3B0aW1pemUsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwodm0pLCBmaWVs
ZE5hbWUsIHRydWUpKTsKKworICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIg
PSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2VsbChmaWVsZE5hbWVWYWx1ZS5hc0Nl
bGwoKSk7CisgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVC
bG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpLCBpZGVudGlmaWVyKSkKKyAgICAgICAg
ICAgIHJlcGF0Y2hHZXRCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBpZGVu
dGlmaWVyLCBzbG90LCAqc3R1YkluZm8sIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWUpOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0LCBmaWVs
ZE5hbWUpKTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShnZXRQcml2YXRlTmFtZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVl
LCBmaWVsZE5hbWVWYWx1ZSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25HZXRQcml2YXRlTmFtZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEZpZWxkTmFtZSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1ZSBmaWVsZE5hbWVWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkRmllbGROYW1lKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGdldFByaXZhdGVOYW1lKGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLCBiYXNlVmFsdWUsIGZpZWxkTmFtZVZhbHVlKSkpOworfQorCiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgKaW5kZXggNGMyMjA1MzBhYjRkZTViMjZkN2Q5YWQzZDNiODJlM2I0ZGI5
N2Q5YS4uYTgxNDZmZTMzYTJjMzNhMWQ4YmY1MGRjNzEyZGY3NWYwZjhkM2QyOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTI3Myw2ICsyNzMsOSBAQCBp
bnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncyhKU0dsb2Jh
bE9iamVjdCosIEVuY29kZWRKU1ZhbAogQ2FsbEZyYW1lKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blNldHVwRm9yd2FyZEFyZ3VtZW50c0ZyYW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwg
RW5jb2RlZEpTVmFsdWUsIGludDMyX3QsIGludDMyX3QgbGVuZ3RoKSBXVEZfSU5URVJOQUw7CiBD
YWxsRnJhbWUqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqLCBFbmNvZGVkSlNWYWx1ZSBhcmd1bWVudHMsIGludDMyX3Qg
Zmlyc3RWYXJBcmdPZmZzZXQsIGludDMyX3QgbGVuZ3RoKSBXVEZfSU5URVJOQUw7CiAKK0VuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWUoSlNHbG9iYWxP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEZpZWxkTmFtZSkgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEZpZWxkTmFtZSkgV1RGX0lOVEVSTkFMOworCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblN3aXRjaENoYXJXaXRoVW5rbm93bktleVR5cGUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSBrZXksIHNpemVfdCB0YWJsZUluZGV4KSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblN3aXRjaEltbVdpdGhVbmtub3duS2V5VHlwZShWTSosIEVuY29k
ZWRKU1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5kZXgpIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uU3dpdGNoU3RyaW5nV2l0aFVua25vd25LZXlUeXBlKEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUga2V5LCBzaXplX3QgdGFibGVJbmRleCkgV1RGX0lO
VEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcAppbmRleCA4NjhhMWQxMDU5MDlkMDE0ZTU4NzY0MzdkMzI2YTNkMjQ5ZGRhMzhhLi5jNmVh
OGYxM2I0ZWNjNmY5OTljNDQwYTJkNjJlNTY1Y2JjMzQ4M2I1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtOTYsNiArOTYsNTIgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICB9CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2dl
dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sK
KyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFByaXZhdGVO
YW1lPigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxv
Y2spOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0
dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIg
cHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OworCisgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihiYXNlLCByZWdUMCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwg
cmVnVDEpOworCisgICAgaWYgKG1ldGFkYXRhLm1fc2VlbklkZW50aWZpZXJzLmNvdW50KCkgPiBP
cHRpb25zOjpnZXRCeVZhbElDTWF4TnVtYmVyT2ZJZGVudGlmaWVycygpKSB7CisgICAgICAgIGF1
dG8gbm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7CisgICAgICAgIG5vdENlbGwubGlu
ayh0aGlzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFk
YXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWUsIGRzdCwgVHJ1c3RlZElt
bVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVnVDEpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7
CisKKyAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAorICAgICAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAg
ICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJl
Z3MocmVnVDApKTsKKyAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgICAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBtX2dldEJ5VmFscy5h
cHBlbmQoZ2VuKTsKKworICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1l
dGFkYXRhKG1fY29kZUJsb2NrKSk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0
KTsKKyAgICB9Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgaWYgKGhhc0FueVNsb3dDYXNlcyhpdGVyKSkgewor
ICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFByaXZh
dGVOYW1lPigpOworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7
CisKKyAgICAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAgICAgICBKSVRHZXRCeVZh
bEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4XTsKKyAgICAgICAg
KyttX2dldEJ5VmFsSW5kZXg7CisgICAgICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgp
OworICAgICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUu
bWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLCBk
c3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJ
bmZvKCksIHJlZ1QwLCByZWdUMSk7CisgICAgICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29s
ZFBhdGhCZWdpbiwgY2FsbCk7CisgICAgfQorfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlf
dmFsX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGVtaXRfb3BfcHV0X2J5X3ZhbDxPcFB1dEJ5VmFsRGlyZWN0PihjdXJyZW50SW5zdHJ1Y3Rpb24p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mz
Ml82NC5jcHAKaW5kZXggYzA0N2QyYjEzOWU2YTJiNWFhZDUyZjM0ZWY3NThkZjk0MzBhYWViNS4u
YzAzNjU4MDQzYThhNTU1NWM5MjcwMTlkMDdjMDFmYzU0N2JiNjg4YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0y
ODcsNiArMjg3LDUzIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgfQogfQogCit2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BHZXRQcml2YXRlTmFtZT4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1l
dGFkYXRhKG1fY29kZUJsb2NrKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUu
bV9kc3Q7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAg
VmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKworICAgIGVt
aXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIpOworCisg
ICAgaWYgKG1ldGFkYXRhLm1fc2VlbklkZW50aWZpZXJzLmNvdW50KCkgPiBPcHRpb25zOjpnZXRC
eVZhbElDTWF4TnVtYmVyT2ZJZGVudGlmaWVycygpKSB7CisgICAgICAgIGF1dG8gbm90Q2VsbCA9
IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7CisgICAgICAgIG5vdENlbGwubGluayh0aGlzKTsKKyAg
ICAgICAgY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJs
b2NrKSwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWUsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBKU1ZhbHVl
UmVncyhyZWdUMywgcmVnVDIpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBlbWl0SnVtcFNsb3dD
YXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOworCisgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJh
dG9yIGdlbigKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRP
bmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDEs
IHJlZ1QwKSk7CisgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICAgICAg
YWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgbV9nZXRCeVZhbHMuYXBw
ZW5kKGdlbik7CisKKyAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRh
ZGF0YShtX2NvZGVCbG9jaykpOworICAgICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDAp
OworICAgIH0KK30KKworCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGlmIChoYXNBbnlTbG93Q2FzZXMoaXRlcikpIHsK
KyAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRQcml2
YXRlTmFtZT4oKTsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0
OworCisgICAgICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICAgICAgSklUR2V0QnlW
YWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleF07CisgICAgICAg
ICsrbV9nZXRCeVZhbEluZGV4OworICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwo
KTsKKyAgICAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2Rl
Lm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwg
ZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHVi
SW5mbygpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVn
VDIpKTsKKyAgICAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxs
KTsKKyAgICB9Cit9CisKKwogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X29wX3B1dF9i
eV92YWw8T3BQdXRCeVZhbERpcmVjdD4oY3VycmVudEluc3RydWN0aW9uKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IGNhNWI4OTRkMDdjNTVkZmJmM2IwZWExZTU2OGE1
ODU5OGNlMWQ5ZTQuLjE5OWNlMmE4Yjk2NmZjMTQ0YTc5MTQ4OGZhNzY0ODNlOTI3OGMzZmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtMTU4LDYgKzE1OCw4IEBAIGlu
bGluZSBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGFwcHJvcHJpYXRlT3B0aW1pemluZ0dl
dEJ5RnVuY3Rpb24oR2V0QnlLaW5kCiAgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRCeUlkRGly
ZWN0T3B0aW1pemU7CiAgICAgY2FzZSBHZXRCeUtpbmQ6Ok5vcm1hbEJ5VmFsOgogICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZTsKKyAgICBjYXNlIEdldEJ5S2luZDo6UHJp
dmF0ZU5hbWU6CisgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXpl
OwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpAQCAtMTc1LDYg
KzE3Nyw4IEBAIGlubGluZSBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGFwcHJvcHJpYXRl
R2V0QnlGdW5jdGlvbihHZXRCeUtpbmQga2luZCkKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdl
dEJ5SWREaXJlY3Q7CiAgICAgY2FzZSBHZXRCeUtpbmQ6Ok5vcm1hbEJ5VmFsOgogICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uR2V0QnlWYWxHZW5lcmljOworICAgIGNhc2UgR2V0QnlLaW5kOjpQcml2
YXRlTmFtZToKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lOwogICAgIH0K
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpAQCAtMTk0LDYgKzE5OCw3IEBA
IHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGVCbG9jayoKICAgICAgICAgaWYgKCFiYXNlVmFsdWUuaXNDZWxsKCkp
CiAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKICAgICAgICAgSlNDZWxsKiBiYXNl
Q2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgY29uc3QgYm9vbCBpc1ByaXZhdGUg
PSBraW5kID09IEdldEJ5S2luZDo6UHJpdmF0ZU5hbWU7CiAKICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAKQEAgLTI0OCw3ICsyNTMsNyBAQCBzdGF0aWMgSW5s
aW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2RlQmxvY2sqCiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxs
LT5zdHJ1Y3R1cmUodm0pOwogCiAgICAgICAgICAgICBib29sIGxvYWRUYXJnZXRGcm9tUHJveHkg
PSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChiYXNlQ2VsbC0+dHlwZSgpID09IFB1cmVGb3J3YXJk
aW5nUHJveHlUeXBlKSB7CisgICAgICAgICAgICBpZiAoYmFzZUNlbGwtPnR5cGUoKSA9PSBQdXJl
Rm9yd2FyZGluZ1Byb3h5VHlwZSAmJiAhaXNQcml2YXRlKSB7CiAgICAgICAgICAgICAgICAgYmFz
ZVZhbHVlID0ganNDYXN0PEpTUHJveHkqPihiYXNlQ2VsbCktPnRhcmdldCgpOwogICAgICAgICAg
ICAgICAgIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwogICAgICAgICAgICAgICAgIHN0
cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUodm0pOwpAQCAtMzA0LDkgKzMwOSw5IEBAIHN0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENvZGVCbG9jayoKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1Vuc2V0KCkg
JiYgc3RydWN0dXJlLT50eXBlSW5mbygpLmdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJv
cGVydHlBYnNlbmNlKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hl
OwogCi0gICAgICAgICAgICAgICAgLy8gSWYgYSBraW5kIGlzIEdldEJ5S2luZDo6RGlyZWN0LCB3
ZSBkbyBub3QgbmVlZCB0byBpbnZlc3RpZ2F0ZSBwcm90b3R5cGUgY2hhaW5zIGZ1cnRoZXIuCisg
ICAgICAgICAgICAgICAgLy8gSWYgYSBraW5kIGlzIEdldEJ5S2luZDo6RGlyZWN0IG9yIEdldEJ5
S2luZDo6UHJpdmF0ZU5hbWUsIHdlIGRvIG5vdCBuZWVkIHRvIGludmVzdGlnYXRlIHByb3RvdHlw
ZSBjaGFpbnMgZnVydGhlci4KICAgICAgICAgICAgICAgICAvLyBDYWNoZWFiaWxpdHkganVzdCBk
ZXBlbmRzIG9uIHRoZSBoZWFkIHN0cnVjdHVyZS4KLSAgICAgICAgICAgICAgICBpZiAoa2luZCAh
PSBHZXRCeUtpbmQ6OkRpcmVjdCkgeworICAgICAgICAgICAgICAgIGlmIChraW5kICE9IEdldEJ5
S2luZDo6RGlyZWN0ICYmICFpc1ByaXZhdGUpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byBj
YWNoZVN0YXR1cyA9IHByZXBhcmVDaGFpbkZvckNhY2hpbmcoZ2xvYmFsT2JqZWN0LCBiYXNlQ2Vs
bCwgc2xvdCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghY2FjaGVTdGF0dXMpCiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmgKaW5kZXggZDg5MGZkNzBhYWNkODJmZmJmNGRhOGZiMjRlMWYzZGZmNTc0OWRj
MC4uMDgzYTNkNWQ2ODRjYWJkZmIxNGNjYWViNzQ1ZmVjNzYzZGZiY2EyMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZXBhdGNoLmgKQEAgLTM4LDcgKzM4LDggQEAgZW51bSBjbGFzcyBHZXRCeUtp
bmQgewogICAgIE5vcm1hbEJ5VmFsLAogICAgIFRyeSwKICAgICBXaXRoVGhpcywKLSAgICBEaXJl
Y3QKKyAgICBEaXJlY3QsCisgICAgUHJpdmF0ZU5hbWUsCiB9OwogCiBlbnVtIGNsYXNzIERlbEJ5
S2luZCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAppbmRleCA0ZmYyMWVmZmYzNTZhMDFmNmIxODBmNzJmYzdhMTYyOGM3ZDU1OGJiLi5iOTk0Nzc2
ZTQzODQ2ZTk1YzIzMTY4NzE3MzhiMTdkNzJhMDk1ODNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTEwODUsMTIgKzEwODUsMTUgQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9wcml2YXRlX25hbWUpCiAgICAgTExJ
TlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgQVNTRVJUKHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUo
KSk7CiAKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7
CisgICAgaWYgKG1ldGFkYXRhLm1fc2VlbklkZW50aWZpZXJzLmNvdW50KCkgPD0gT3B0aW9uczo6
Z2V0QnlWYWxJQ01heE51bWJlck9mSWRlbnRpZmllcnMoKSkKKyAgICAgICAgbWV0YWRhdGEubV9z
ZWVuSWRlbnRpZmllcnMub2JzZXJ2ZShwcm9wZXJ0eS5pbXBsKCkpOworCiAgICAgUHJvcGVydHlT
bG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1J
bnF1aXJ5KTsKICAgICBhc09iamVjdChiYXNlVmFsdWUpLT5nZXRQcml2YXRlRmllbGQoZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAK
ICAgICBpZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVyAmJiBzbG90LmlzQ2FjaGVhYmxlKCkg
JiYgIXNsb3QuaXNVbnNldCgpKSB7Ci0gICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUu
bWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICAgICAgewogICAgICAgICAgICAgU3RydWN0dXJlSUQg
b2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX3N0cnVjdHVyZUlEOwogICAgICAgICAgICAgaWYg
KG9sZFN0cnVjdHVyZUlEKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402899</attachid>
            <date>2020-06-26 14:00:39 -0700</date>
            <delta_ts>2020-07-01 14:58:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213545-20200626170039.patch</filename>
            <type>text/plain</type>
            <size>31045</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
OTJlMDA5MmVhNGJmODY0ZjBlMWNhYTZiOGU4NmJlNTFjMjA0YTY2Li5jZTBkYzM4MWZlOWUzN2Uy
MmYwZmM0OGUxMTg0MmMzY2VkYzBkMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAyMC0wNi0yNiAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIGFkZCBJQyBzdXBwb3J0IGZvciBvcF9nZXRfcHJpdmF0ZV9uYW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM1NDUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgYmFz
ZWxpbmUgSklUIG5vdyBzdXBwb3J0cyBhIGZhc3QgcGF0aCBmb3Igb3BfcHJpdmF0ZV9uYW1lLAor
ICAgICAgICB1c2luZyBhIHZhcmlhbnQgb2YgR2V0QnlWYWwgSUMuCisKKyAgICAgICAgVGhlIGdl
bmVyYXRlZCBBY2Nlc3NDYXNlIGhhcyB0aGUgZm9sbG93aW5nIHF1YWxpdGllczoKKyAgICAgICAg
ICAtIEFsd2F5cyAiZGlyZWN0IiwgcmVseWluZyBvbmx5IG9uIHRoZSBjdXJyZW50IHN0cnVjdHVy
ZSBmb3IgY2FjaGViaWxpdHkKKyAgICAgICAgICAtIE5ldmVyIGltcHVyZSAoRE9NIHByb3BlcnRp
ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgdGhpcyB0aW1lLCBQcm94eU9iamVjdHMgYXJlIHRyZWF0
ZWQgYXMgSlNPYmplY3RzKQorCisgICAgICAgIFRoaXMgYWxzbyBhZGRzIGlkZW50aWZpZXIgdHJh
Y2tpbmcgdmlhIEdldEJ5VmFsSGlzdG9yeSB0byB0aGUKKyAgICAgICAgb3BfZ2V0X3ByaXZhdGVf
bmFtZSBMTEludCBzbG93IHBhdGgsIHRvIHRyYWNrIGlmIGEgcHJpdmF0ZSBmaWVsZCBsb2FkCisg
ICAgICAgIGJlY29tZXMgIm1lZ2Ftb3JwaGljIiAod2hpY2ggbWF5IGhhcHBlbiBpZiB0aGVyZSBh
cmUgbWFueSBpbnN0YW5jZXMgb2YKKyAgICAgICAgdGhlIHNhbWUgY2xhc3MpLgorCisgICAgICAg
IEJhc2VkIG9uIHRoZSBtaWNyb2JlbmNobWFyayByZXZpZXdlZCBvbiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNTQ0LCB0aGlzIHNlZXMKKyAgICAgICAgYW4gaW1w
cm92ZW1lbnQgb2Ygcm91Z2hseSA1MCUgb24gYXZlcmFnZS4KKworICAgICAgICAqIGJ5dGVjb2Rl
L0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpyZXF1aXJlc0lkZW50
aWZpZXJOYW1lTWF0Y2ggY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpyZXF1aXJl
c0ludDMyUHJvcGVydHlDaGVjayBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Om5l
ZWRzU2NyYXRjaEZQUiBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmZvckVhY2hE
ZXBlbmRlbnRDZWxsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6ZG9lc0NhbGxz
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y2FuUmVwbGFjZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAg
ICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5j
cHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL1By
b3h5YWJsZUFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpQcm94eWFibGVBY2Nlc3NDYXNl
OjpjcmVhdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KToKKyAgICAgICAgKiBieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGppdC9JQ1N0YXRzLmg6CisgICAgICAg
ICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAg
ICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
ICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgICog
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0
X3ByaXZhdGVfbmFtZSk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlND
OjphcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6YXBw
cm9wcmlhdGVHZXRCeUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeSk6Cisg
ICAgICAgICogaml0L1JlcGF0Y2guaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5j
cHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisKIDIwMjAt
MDYtMjYgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBJbml0
aWFsaXppbmcgdGhlIG1haW4gdGhyZWFkIHNob3VsZCBpbml0aWFsaXplIHRoZSBtYWluIHJ1biBs
b29wCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2Fz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5k
ZXggNGEzYmI1YTg2MjA3ODEwYjdmODA5YzhiOWMxZjdhMTM2ZTBiNTU3OC4uNjNhZjFiZGM2ZWEw
OWI4NTkwNmQzOTgyNGYyZDJjZDBmY2FjY2JiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtMjY1LDYgKzI2NSw3IEBAIGJvb2wgQWNjZXNz
Q2FzZTo6cmVxdWlyZXNJZGVudGlmaWVyTmFtZU1hdGNoKCkgY29uc3QKIHsKICAgICBzd2l0Y2gg
KG1fdHlwZSkgewogICAgIGNhc2UgTG9hZDoKKyAgICBjYXNlIExvYWRQcml2YXRlOgogICAgIC8v
IFdlIGRvbid0IGN1cnJlbnRseSBoYXZlIGEgYnlfdmFsIGZvciB0aGVzZSBwdXRzLCBidXQgd2Ug
ZG8gY2FyZSBhYm91dCB0aGUgaWRlbnRpZmllci4KICAgICBjYXNlIFRyYW5zaXRpb246CiAgICAg
Y2FzZSBEZWxldGU6CkBAIC0zNDAsNiArMzQxLDcgQEAgYm9vbCBBY2Nlc3NDYXNlOjpyZXF1aXJl
c0ludDMyUHJvcGVydHlDaGVjaygpIGNvbnN0CiAgICAgY2FzZSBJbnN0YW5jZU9mSGl0OgogICAg
IGNhc2UgSW5zdGFuY2VPZk1pc3M6CiAgICAgY2FzZSBJbnN0YW5jZU9mR2VuZXJpYzoKKyAgICBj
YXNlIExvYWRQcml2YXRlOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY2FzZSBJbmRleGVk
SW50MzJMb2FkOgogICAgIGNhc2UgSW5kZXhlZERvdWJsZUxvYWQ6CkBAIC0zNjYsNiArMzY4LDcg
QEAgYm9vbCBBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0Y2hGUFIoKSBjb25zdAogewogICAgIHN3aXRj
aCAobV90eXBlKSB7CiAgICAgY2FzZSBMb2FkOgorICAgIGNhc2UgTG9hZFByaXZhdGU6CiAgICAg
Y2FzZSBUcmFuc2l0aW9uOgogICAgIGNhc2UgRGVsZXRlOgogICAgIGNhc2UgRGVsZXRlTm9uQ29u
ZmlndXJhYmxlOgpAQCAtNDYwLDYgKzQ2Myw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Zm9yRWFjaERl
cGVuZGVudENlbGwoVk0mIHZtLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKSBjb25zdAogICAgIGNh
c2UgQ3VzdG9tQWNjZXNzb3JHZXR0ZXI6CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjoK
ICAgICBjYXNlIExvYWQ6CisgICAgY2FzZSBMb2FkUHJpdmF0ZToKICAgICBjYXNlIFRyYW5zaXRp
b246CiAgICAgY2FzZSBEZWxldGU6CiAgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CkBA
IC01MTMsNiArNTE3LDcgQEAgYm9vbCBBY2Nlc3NDYXNlOjpkb2VzQ2FsbHMoVk0mIHZtLCBWZWN0
b3I8SlNDZWxsKj4qIGNlbGxzVG9NYXJrSWZEb2VzQ2FsbHMpIGNvbnMKICAgICBjYXNlIERlbGV0
ZU5vbkNvbmZpZ3VyYWJsZToKICAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBMb2FkOgor
ICAgIGNhc2UgTG9hZFByaXZhdGU6CiAgICAgY2FzZSBSZXBsYWNlOgogICAgIGNhc2UgTWlzczoK
ICAgICBjYXNlIEdldEdldHRlcjoKQEAgLTY1MCw2ICs2NTUsNyBAQCBib29sIEFjY2Vzc0Nhc2U6
OmNhblJlcGxhY2UoY29uc3QgQWNjZXNzQ2FzZSYgb3RoZXIpIGNvbnN0CiAgICAgICAgIH0KIAog
ICAgIGNhc2UgTG9hZDoKKyAgICBjYXNlIExvYWRQcml2YXRlOgogICAgIGNhc2UgVHJhbnNpdGlv
bjoKICAgICBjYXNlIERlbGV0ZToKICAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKQEAg
LTE0MDYsOCArMTQxMiw5IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dl
bmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgIGppdC5ib3hCb29sZWFuUGF5bG9hZChtX3R5
cGUgPT0gSW5zdGFuY2VPZkhpdCwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSk7CiAgICAgICAgIHN0
YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwogICAgIGNhc2UgTG9h
ZDoKKyAgICBjYXNlIExvYWRQcml2YXRlOgogICAgIGNhc2UgR2V0R2V0dGVyOgogICAgIGNhc2Ug
R2V0dGVyOgogICAgIGNhc2UgU2V0dGVyOgpAQCAtMTQyNyw3ICsxNDM0LDcgQEAgdm9pZCBBY2Nl
c3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAg
ICAgfQogCiAgICAgICAgIEdQUlJlZyBiYXNlRm9yR2V0R1BSOwotICAgICAgICBpZiAodmlhUHJv
eHkoKSkgeworICAgICAgICBpZiAodmlhUHJveHkoKSAmJiBtX3R5cGUgIT0gTG9hZFByaXZhdGUp
IHsKICAgICAgICAgICAgIEFTU0VSVChtX3R5cGUgIT0gQ3VzdG9tVmFsdWVTZXR0ZXIgfHwgbV90
eXBlICE9IEN1c3RvbUFjY2Vzc29yU2V0dGVyKTsgLy8gQmVjYXVzZSBzZXR0ZXJzIG5lZWQgdG8g
bm90IHRyYXNoIHZhbHVlUmVnc1BheWxvYWRHUFIuCiAgICAgICAgICAgICBpZiAobV90eXBlID09
IEdldHRlciB8fCBtX3R5cGUgPT0gU2V0dGVyKQogICAgICAgICAgICAgICAgIGJhc2VGb3JHZXRH
UFIgPSBzY3JhdGNoR1BSOwpAQCAtMTQ0OCw2ICsxNDU1LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpn
ZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIC8v
IFRoaXMgaXNuJ3QgcHJldHR5LCBidXQgd2Uga25vdyB3ZSBnb3QgaGVyZSB2aWEgZ2VuZXJhdGVX
aXRoR3VhcmQsCiAgICAgICAgICAgICAvLyBhbmQgaXQgbGVmdCB0aGUgYmFzZUZvckFjY2VzcyBp
bnNpZGUgc2NyYXRjaEdQUi4gV2UgY291bGQgcmUtZGVyaXZlIHRoZSBiYXNlLAogICAgICAgICAg
ICAgLy8gYnV0IGl0J2QgcmVxdWlyZSBlbWl0dGluZyB0aGUgc2FtZSBjb2RlIHRvIGxvYWQgdGhl
IGJhc2UgdHdpY2UuCisgICAgICAgICAgICBBU1NFUlQobV90eXBlICE9IExvYWRQcml2YXRlKTsK
ICAgICAgICAgICAgIGJhc2VGb3JBY2Nlc3NHUFIgPSBzY3JhdGNoR1BSOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgaWYgKGhhc0FsdGVybmF0ZUJhc2UoKSkgewpAQCAtMTQ2MCw3ICsx
NDY4LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0
YXRlJiBzdGF0ZSkKIAogICAgICAgICBHUFJSZWcgbG9hZGVkVmFsdWVHUFIgPSBJbnZhbGlkR1BS
UmVnOwogICAgICAgICBpZiAobV90eXBlICE9IEN1c3RvbVZhbHVlR2V0dGVyICYmIG1fdHlwZSAh
PSBDdXN0b21BY2Nlc3NvckdldHRlciAmJiBtX3R5cGUgIT0gQ3VzdG9tVmFsdWVTZXR0ZXIgJiYg
bV90eXBlICE9IEN1c3RvbUFjY2Vzc29yU2V0dGVyKSB7Ci0gICAgICAgICAgICBpZiAobV90eXBl
ID09IExvYWQgfHwgbV90eXBlID09IEdldEdldHRlcikKKyAgICAgICAgICAgIGlmIChtX3R5cGUg
PT0gTG9hZCB8fCBtX3R5cGUgPT0gR2V0R2V0dGVyIHx8IG1fdHlwZSA9PSBMb2FkUHJpdmF0ZSkK
ICAgICAgICAgICAgICAgICBsb2FkZWRWYWx1ZUdQUiA9IHZhbHVlUmVnc1BheWxvYWRHUFI7CiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbG9hZGVkVmFsdWVHUFIgPSBzY3JhdGNo
R1BSOwpAQCAtMTQ5Myw3ICsxNTAxLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwo
QWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICNlbmRpZgogICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKG1fdHlwZSA9PSBMb2FkIHx8IG1fdHlwZSA9PSBHZXRHZXR0ZXIpIHsKKyAgICAgICAg
aWYgKG1fdHlwZSA9PSBMb2FkIHx8IG1fdHlwZSA9PSBHZXRHZXR0ZXIgfHwgbV90eXBlID09IExv
YWRQcml2YXRlKSB7CiAgICAgICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9BY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5oCmluZGV4IDEwOGZlZjNiMzMwMTJjZjRlN2RiMjdlMjBhNjI2MDIwNzg1ZDIxNTkuLjdk
ZDFiZGNkY2M4MzAyNTEwMjBlYmU3ZjEyODlkODg0YjFmNTlkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaApAQCAtMTIzLDcgKzEyMyw4IEBAIHB1Ymxp
YzoKICAgICAgICAgSW5kZXhlZFR5cGVkQXJyYXlVaW50MzJMb2FkLAogICAgICAgICBJbmRleGVk
VHlwZWRBcnJheUZsb2F0MzJMb2FkLAogICAgICAgICBJbmRleGVkVHlwZWRBcnJheUZsb2F0NjRM
b2FkLAotICAgICAgICBJbmRleGVkU3RyaW5nTG9hZAorICAgICAgICBJbmRleGVkU3RyaW5nTG9h
ZCwKKyAgICAgICAgTG9hZFByaXZhdGUsCiAgICAgfTsKIAogICAgIGVudW0gU3RhdGUgOiB1aW50
OF90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJi
CmluZGV4IDA4YWVhZTlmN2NlOTJjZGRkZmYyNzUzYzlhNDczODUyMDMwZjYyMmMuLjcxNzcyYzcw
ODdiN2I1OTA0M2M2NTUxYTAwYzg5YjVkNDcyNGIxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtNTcxLDYgKzU3MSw3IEBAIG9wIDpn
ZXRfcHJpdmF0ZV9uYW1lLAogICAgICAgICBzdHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCiAgICAg
ICAgIG9mZnNldDogdW5zaWduZWQsCiAgICAgICAgIHByb3BlcnR5OiBXcml0ZUJhcnJpZXJbSlND
ZWxsXSwKKyAgICAgICAgc2VlbklkZW50aWZpZXJzOiBHZXRCeVZhbEhpc3RvcnksCiAgICAgfQog
CiBvcCA6cHV0X2J5X3ZhbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKaW5kZXggOTE4MDVjNDI3ODJlNGRhNzg3ZTYzOTZlNjAzOGRhYzlkODMyNjg0OC4u
ZGVlMDQ4OWM1OWYzODQ1OWRmNDczYjZiZTI1MGJhNTdiYjZiOTAzYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTUwOCw2ICs1MDgsNyBAQCBi
b29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBv
d25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5LKE9wVGFpbENhbGxGb3J3YXJkQXJn
dW1lbnRzLCBwcm9maWxlKQogICAgICAgICBMSU5LKE9wQ29uc3RydWN0VmFyYXJncywgcHJvZmls
ZSkKICAgICAgICAgTElOSyhPcEdldEJ5VmFsLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9wR2V0
UHJpdmF0ZU5hbWUsIHByb2ZpbGUpCiAKICAgICAgICAgTElOSyhPcEdldERpcmVjdFBuYW1lLCBw
cm9maWxlKQogICAgICAgICBMSU5LKE9wR2V0QnlJZFdpdGhUaGlzLCBwcm9maWxlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAK
aW5kZXggODkxNDExNjk4M2QwODQ0MjM0YjdiZmM1MWM4ZGMyNWI0YmMwOTM0Ni4uYzkwMTA4ZWJh
NjkyMGJmNDEwM2RkZjI1ZWY2NzZkZDRmMmQ0YTgxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC05MTEsNiArOTEx
LDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFjY2Vzc0Nhc2U6OkFj
Y2Vzc1R5cGUgdHlwZSkKICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkluZGV4ZWRTdHJpbmdMb2FkOgog
ICAgICAgICBvdXQucHJpbnQoIkluZGV4ZWRTdHJpbmdMb2FkIik7CiAgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIEFjY2Vzc0Nhc2U6OkxvYWRQcml2YXRlOgorICAgICAgICBvdXQucHJpbnQoIkxv
YWRQcml2YXRlIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCmluZGV4IDQ5OWM0ZTZiMmU1MTEzOTlmODVmNzM0
NWZiM2JmN2E5Zjk2YWE3NTkuLjZlYjIzMDFmN2Y0NjFlNDk3NTVmMmEyNmI2ODhhZmUzM2U2NzJi
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVB
Y2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlh
YmxlQWNjZXNzQ2FzZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgUHJveHlhYmxlQWNjZXNzQ2FzZTo6
UHJveHlhYmxlQWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgYWNj
ZXMKIAogc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNy
ZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBi
b29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBzdGQ6OnVuaXF1ZV9w
dHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluKQogewotICAgIEFT
U0VSVCh0eXBlID09IExvYWQgfHwgdHlwZSA9PSBNaXNzIHx8IHR5cGUgPT0gR2V0R2V0dGVyKTsK
KyAgICBBU1NFUlQodHlwZSA9PSBMb2FkIHx8IHR5cGUgPT0gTWlzcyB8fCB0eXBlID09IEdldEdl
dHRlciB8fCB0eXBlID09IExvYWRQcml2YXRlKTsKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+KG5ldyBQcm94eWFibGVBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRl
bnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0
aW9uYWxTZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmlu
ZGV4IGJlYjQxNTkwMTI2NWY0YWJiZTRlNzBmYTIxYjkwZGY0MTIxNzIzMTcuLmJhODA4MjM3Y2Iz
Njc5YjdlMDVlNWRiYTQ4YjZmYWE1YjJmYTZiZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtMjY1LDYgKzI2NSw5
IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OnJlc2V0KENvZGVCbG9jayogY29kZUJsb2NrKQog
ICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0QnlWYWw6CiAgICAgICAgIHJlc2V0R2V0QnkoY29kZUJs
b2NrLCAqdGhpcywgR2V0QnlLaW5kOjpOb3JtYWxCeVZhbCk7CiAgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWU6CisgICAgICAgIHJlc2V0R2V0QnkoY29k
ZUJsb2NrLCAqdGhpcywgR2V0QnlLaW5kOjpQcml2YXRlTmFtZSk7CisgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQWNjZXNzVHlwZTo6UHV0OgogICAgICAgICByZXNldFB1dEJ5SUQoY29kZUJsb2Nr
LCAqdGhpcyk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAppbmRleCA3YTRmNTgwZWJiMjcxOTEzOTcxMGJk
NTk2ZjMyYWE2OTg2MTcyNmE0Li5iZGJmM2I4OGU5Njg0MWNkYzM1MGZhNWYxOTU2MzI5OTUyYTRl
ZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uaApAQCAtNTcsNyArNTcsOCBAQCBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4
X3QgewogICAgIEluLAogICAgIEluc3RhbmNlT2YsCiAgICAgRGVsZXRlQnlJRCwKLSAgICBEZWxl
dGVCeVZhbAorICAgIERlbGV0ZUJ5VmFsLAorICAgIEdldFByaXZhdGVOYW1lLAogfTsKIAogZW51
bSBjbGFzcyBDYWNoZVR5cGUgOiBpbnQ4X3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9JQ1N0YXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMu
aAppbmRleCA5NmMxOWExN2JkYzJhN2QxMGYxNWY5YmNhMzkwMjE2MjFjOTlkYjgyLi4xMzc4ZTYz
Y2MyNzNmNmFjN2MxMzcxMmViYmEwZmVhZjNmMjA0NDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0lDU3RhdHMuaApAQCAtNzQsNyArNzQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhQ
dXRCeUlkU2VsZlBhdGNoKSBcCiAgICAgbWFjcm8oSW5CeUlkU2VsZlBhdGNoKSBcCiAgICAgbWFj
cm8oRGVsQnlSZXBsYWNlV2l0aEp1bXApIFwKLSAgICBtYWNybyhEZWxCeVJlcGxhY2VXaXRoR2Vu
ZXJpYykKKyAgICBtYWNybyhEZWxCeVJlcGxhY2VXaXRoR2VuZXJpYykgXAorICAgIG1hY3JvKE9w
ZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpCiAKIGNsYXNzIElDRXZlbnQgewogcHVibGlj
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDE5NDk2YTk5YjE3NWI1OWUwMTBjNDRl
YzQ3OWFmZTlkMmM4ODI1NDAuLjAzZDYzNjQzM2VmNTU3NWU1NmIxNTZiNWFhYmY4NmY2Mjc0MzJk
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTI5Miw3ICsyOTIsNiBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9TTE9XX09QKHB1
c2hfd2l0aF9zY29wZSkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX2xleGljYWxfZW52
aXJvbm1lbnQpCiAgICAgICAgIERFRklORV9TTE9XX09QKGdldF9ieV92YWxfd2l0aF90aGlzKQot
ICAgICAgICBERUZJTkVfU0xPV19PUChnZXRfcHJpdmF0ZV9uYW1lKQogICAgICAgICBERUZJTkVf
U0xPV19PUChwdXRfYnlfaWRfd2l0aF90aGlzKQogICAgICAgICBERUZJTkVfU0xPV19PUChwdXRf
YnlfdmFsX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dfT1AocmVzb2x2ZV9zY29wZV9m
b3JfaG9pc3RpbmdfZnVuY19kZWNsX2luX2V2YWwpCkBAIC0zNTcsNiArMzU2LDcgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5
X2lkX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV9pZF9kaXJlY3QpCiAg
ICAgICAgIERFRklORV9PUChvcF9nZXRfYnlfdmFsKQorICAgICAgICBERUZJTkVfT1Aob3BfZ2V0
X3ByaXZhdGVfbmFtZSkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9wcm90b3R5cGVfb2YpCiAg
ICAgICAgIERFRklORV9PUChvcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKQogICAgICAgICBERUZJ
TkVfT1Aob3BfaW5zdGFuY2VvZikKQEAgLTU2MSw2ICs1NjEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2J5
X2lkX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9ieV9pZF9k
aXJlY3QpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYnlfdmFsKQorICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X3ByaXZhdGVfbmFtZSkKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX2luc3RhbmNlb2YpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9pbnN0YW5jZW9mX2N1c3RvbSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2psZXNz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggNjY2ZTBlZDRjOGEwOTM0NGY0YjRmZjQyNTcw
ZTY3ZDY5NWNiMTc0OS4uN2MzNzViNjY1ZTc1ZmRiZTIzMjU2NTIxMzNkM2M4NTZkM2M4YzkzNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC01MjcsNiArNTI3LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcHJvdG90eXBlX29m
KGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pbl9ieV9pZChjb25z
dCBJbnN0cnVjdGlvbiopOwpAQCAtNjU3LDYgKzY1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9p
bl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggYmMzY2NjODAyMzVkNzM5Y2QxYWY1
MjY5YzFlNmFiMTVmZWQ3NDg5NS4uZTVhMDRmZDY0ZGUyNzczZjcyMDVkYWVkZjU2MmNjNzY2NjU0
MjI2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBA
IC0yMTkzLDYgKzIxOTMsNzUgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25HZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmMKIH0KIAogCitBTFdB
WVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldFByaXZhdGVOYW1lKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNW
YWx1ZSBmaWVsZE5hbWVWYWx1ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RDb2VyY2libGUo
Z2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkp
OworICAgIGF1dG8gZmllbGROYW1lID0gZmllbGROYW1lVmFsdWUudG9Qcm9wZXJ0eUtleShnbG9i
YWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisK
KyAgICBKU09iamVjdCogYmFzZSA9IGJhc2VWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwor
ICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2UsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnkpOworICAgIGJhc2UtPmdldFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3Qs
IGZpZWxkTmFtZSwgc2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1
ZSgpKTsKKworICAgIHJldHVybiBzbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgZmllbGROYW1l
KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcml2YXRl
TmFtZU9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRGaWVsZE5hbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworICAgIEpTVmFsdWUg
ZmllbGROYW1lVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEZpZWxkTmFtZSk7CisgICAg
QVNTRVJUKENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwoZmll
bGROYW1lVmFsdWUpKTsKKworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5j
b2RlQmxvY2soKTsKKworICAgIC8vIE9ubHkgY29uc2lkZXIgY2FjaGluZyBpZiB0aGUgYmFzZSB2
YWx1ZSBkb2Vzbid0IG5lZWQgdG8gYmUgY29udmVydGVkIHRvIGEgSlNPYmplY3QKKyAgICBpZiAo
YmFzZVZhbHVlLmlzQ2VsbCgpICYmIGJhc2VWYWx1ZS5hc0NlbGwoKS0+aXNPYmplY3QoKSkgewor
ICAgICAgICBjb25zdCBJZGVudGlmaWVyIGZpZWxkTmFtZSA9IGZpZWxkTmFtZVZhbHVlLnRvUHJv
cGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgICAgIEFTU0VSVChmaWVsZE5hbWUuaXNTeW1ib2wo
KSk7CisKKyAgICAgICAgSlNPYmplY3QqIGJhc2UgPSBiYXNlVmFsdWUuYXNDZWxsKCktPnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOworCisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2UsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgICAgICBiYXNlLT5n
ZXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBmaWVsZE5hbWUsIHNsb3QpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgICAgICBM
T0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIGJhc2VWYWx1
ZS5jbGFzc0luZm9Pck51bGwodm0pLCBmaWVsZE5hbWUsIHRydWUpKTsKKworICAgICAgICBDYWNo
ZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tQ2VsbChmaWVsZE5hbWVWYWx1ZS5hc0NlbGwoKSk7CisgICAgICAgIGlmIChzdHViSW5mby0+
Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVs
bCgpLCBpZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJlcGF0Y2hHZXRCeShnbG9iYWxPYmplY3Qs
IGNvZGVCbG9jaywgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCBzbG90LCAqc3R1YkluZm8sIEdldEJ5
S2luZDo6UHJpdmF0ZU5hbWUpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3Qu
Z2V0VmFsdWUoZ2xvYmFsT2JqZWN0LCBmaWVsZE5hbWUpKTsKKyAgICB9CisKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShnZXRQcml2YXRlTmFtZShnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBmaWVsZE5hbWVWYWx1ZSkpKTsKK30KKworRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEZpZWxkTmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAg
SlNWYWx1ZSBmaWVsZE5hbWVWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkRmllbGROYW1l
KTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGdldFBy
aXZhdGVOYW1lKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUsIGZpZWxkTmFtZVZh
bHVlKSkpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0lu
ZGV4ZWRQcm9wZXJ0eURlZmF1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEJ5
VmFsSW5mbyogYnlWYWxJbmZvKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggNGMyMjA1MzBh
YjRkZTViMjZkN2Q5YWQzZDNiODJlM2I0ZGI5N2Q5YS4uYTgxNDZmZTMzYTJjMzNhMWQ4YmY1MGRj
NzEyZGY3NWYwZjhkM2QyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmgKQEAgLTI3Myw2ICsyNzMsOSBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
U2l6ZUZyYW1lRm9yVmFyYXJncyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbAogQ2FsbEZy
YW1lKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldHVwRm9yd2FyZEFyZ3VtZW50c0ZyYW1lKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QsIGludDMy
X3QgbGVuZ3RoKSBXVEZfSU5URVJOQUw7CiBDYWxsRnJhbWUqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uU2V0dXBWYXJhcmdzRnJhbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBFbmNvZGVk
SlNWYWx1ZSBhcmd1bWVudHMsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIGludDMyX3QgbGVu
Z3RoKSBXVEZfSU5URVJOQUw7CiAKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uR2V0UHJpdmF0ZU5hbWUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEZpZWxkTmFtZSkgV1RGX0lOVEVSTkFMOworRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXpl
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEZpZWxkTmFtZSkgV1RGX0lOVEVSTkFMOwor
CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN3aXRjaENoYXJXaXRoVW5rbm93bktleVR5
cGUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBrZXksIHNpemVfdCB0YWJsZUluZGV4
KSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN3aXRjaEltbVdp
dGhVbmtub3duS2V5VHlwZShWTSosIEVuY29kZWRKU1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5k
ZXgpIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3dpdGNoU3Ry
aW5nV2l0aFVua25vd25LZXlUeXBlKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUga2V5
LCBzaXplX3QgdGFibGVJbmRleCkgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA4NjhhMWQxMDU5MDlkMDE0ZTU4
NzY0MzdkMzI2YTNkMjQ5ZGRhMzhhLi41NGUxOGE1ZDIyZjVmZjk2NTA3MTNjZjJjZWQzMDA0Yjdh
OTg1Mzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcApAQCAtOTYsNiArOTYsNTMgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92
YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICB9
CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcEdldFByaXZhdGVOYW1lPigpOworICAgIGF1dG8mIG1ldGFkYXRhID0g
Ynl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3Qg
PSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1f
YmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5
OworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CisgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOworCisgICAgaWYgKG1ldGFkYXRhLm1f
c2VlbklkZW50aWZpZXJzLmNvdW50KCkgPiBPcHRpb25zOjpnZXRCeVZhbElDTWF4TnVtYmVyT2ZJ
ZGVudGlmaWVycygpKSB7CisgICAgICAgIGF1dG8gbm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChy
ZWdUMCk7CisgICAgICAgIG5vdENlbGwubGluayh0aGlzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0
UHJpdmF0ZU5hbWUsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCkpLCByZWdUMCwgcmVnVDEpOworICAgIH0gZWxzZSB7CisgICAgICAgIGVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7CisKKyAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0
b3IgZ2VuKAorICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpT
VmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICAgICAgZ2VuLnN0dWJJ
bmZvKCktPmFjY2Vzc1R5cGUgPSBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZTsKKyAgICAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wKCkpOworICAgICAgICBtX2dldEJ5VmFscy5hcHBlbmQoZ2VuKTsKKworICAgICAg
ICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7
CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKKyAgICB9Cit9CisKK3ZvaWQg
SklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7
CisgICAgaWYgKGhhc0FueVNsb3dDYXNlcyhpdGVyKSkgeworICAgICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFByaXZhdGVOYW1lPigpOworICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisKKyAgICAgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKKworICAgICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9n
ZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4XTsKKyAgICAgICAgKyttX2dldEJ5VmFsSW5kZXg7Cisg
ICAgICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgICAgICBDYWxsIGNhbGwg
PSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2sp
LCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLCBkc3QsIFRydXN0ZWRJbW1QdHIobV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCByZWdUMSk7
CisgICAgICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Cisg
ICAgfQorfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVjdChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRfb3BfcHV0X2J5X3ZhbDxP
cFB1dEJ5VmFsRGlyZWN0PihjdXJyZW50SW5zdHJ1Y3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggYzA0N2Qy
YjEzOWU2YTJiNWFhZDUyZjM0ZWY3NThkZjk0MzBhYWViNS4uNmYzOTNhMTk1YmI1OTEwZGU2OWM0
M2RlZmVmMDc3YzRkMGVjMzAxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0yODcsNiArMjg3LDU0IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgfQogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJp
dmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRQcml2YXRlTmFtZT4o
KTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsK
KyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJl
Z2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3Bl
cnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKworICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwg
cmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIpOworCisgICAgaWYgKG1ldGFkYXRhLm1fc2Vl
bklkZW50aWZpZXJzLmNvdW50KCkgPiBPcHRpb25zOjpnZXRCeVZhbElDTWF4TnVtYmVyT2ZJZGVu
dGlmaWVycygpKSB7CisgICAgICAgIGF1dG8gbm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdU
MCk7CisgICAgICAgIG5vdENlbGwubGluayh0aGlzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbldp
dGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0UHJp
dmF0ZU5hbWUsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkp
LCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAs
IGJhc2UpOworCisgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgICAg
IG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJl
Z3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7CisgICAgICAgIGdl
bi5zdHViSW5mbygpLT5hY2Nlc3NUeXBlID0gQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWU7Cisg
ICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICAgICAgYWRkU2xvd0Nhc2Uo
Z2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgbV9nZXRCeVZhbHMuYXBwZW5kKGdlbik7CisK
KyAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVC
bG9jaykpOworICAgICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOworICAgIH0KK30K
KworCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQoreworICAgIGlmIChoYXNBbnlTbG93Q2FzZXMoaXRlcikpIHsKKyAgICAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRQcml2YXRlTmFtZT4oKTsK
KyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworCisgICAgICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3Im
IGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleF07CisgICAgICAgICsrbV9nZXRCeVZh
bEluZGV4OworICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICAgICAg
Q2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1f
Y29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgZHN0LCBUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBKU1Zh
bHVlUmVncyhyZWdUMSwgcmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpKTsKKyAgICAg
ICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKyAgICB9Cit9
CisKKwogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X29wX3B1dF9ieV92YWw8T3BQdXRC
eVZhbERpcmVjdD4oY3VycmVudEluc3RydWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
cGF0Y2guY3BwCmluZGV4IDI1OGYxMzkyNGFlZDM3ZDAxMTA5YmNiMzc0MjFiNThkZjhjNjc3OGMu
LjQ5MGYzN2QxYzdkMjEyNDgwNzFlODNmZDE2YWQ2ODI0Y2FjYWUxMzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtMTU4LDYgKzE1OCw4IEBAIGlubGluZSBGdW5jdGlv
blB0cjxDRnVuY3Rpb25QdHJUYWc+IGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24o
R2V0QnlLaW5kCiAgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemU7
CiAgICAgY2FzZSBHZXRCeUtpbmQ6Ok5vcm1hbEJ5VmFsOgogICAgICAgICByZXR1cm4gb3BlcmF0
aW9uR2V0QnlWYWxPcHRpbWl6ZTsKKyAgICBjYXNlIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWU6Cisg
ICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplOwogICAgIH0KICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpAQCAtMTc1LDYgKzE3Nyw4IEBAIGlu
bGluZSBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGFwcHJvcHJpYXRlR2V0QnlGdW5jdGlv
bihHZXRCeUtpbmQga2luZCkKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldEJ5SWREaXJlY3Q7
CiAgICAgY2FzZSBHZXRCeUtpbmQ6Ok5vcm1hbEJ5VmFsOgogICAgICAgICByZXR1cm4gb3BlcmF0
aW9uR2V0QnlWYWxHZW5lcmljOworICAgIGNhc2UgR2V0QnlLaW5kOjpQcml2YXRlTmFtZToKKyAg
ICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lOwogICAgIH0KICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpAQCAtMTk0LDYgKzE5OCw3IEBAIHN0YXRpYyBJbmxp
bmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZGVCbG9jayoKICAgICAgICAgaWYgKCFiYXNlVmFsdWUuaXNDZWxsKCkpCiAgICAgICAgICAg
ICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKICAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VW
YWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgY29uc3QgYm9vbCBpc1ByaXZhdGUgPSBraW5kID09IEdl
dEJ5S2luZDo6UHJpdmF0ZU5hbWU7CiAKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IG5ld0Nhc2U7CiAKQEAgLTI0OCw3ICsyNTMsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rp
b24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sq
CiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUo
dm0pOwogCiAgICAgICAgICAgICBib29sIGxvYWRUYXJnZXRGcm9tUHJveHkgPSBmYWxzZTsKLSAg
ICAgICAgICAgIGlmIChiYXNlQ2VsbC0+dHlwZSgpID09IFB1cmVGb3J3YXJkaW5nUHJveHlUeXBl
KSB7CisgICAgICAgICAgICBpZiAoYmFzZUNlbGwtPnR5cGUoKSA9PSBQdXJlRm9yd2FyZGluZ1By
b3h5VHlwZSAmJiAhaXNQcml2YXRlKSB7CiAgICAgICAgICAgICAgICAgYmFzZVZhbHVlID0ganND
YXN0PEpTUHJveHkqPihiYXNlQ2VsbCktPnRhcmdldCgpOwogICAgICAgICAgICAgICAgIGJhc2VD
ZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwogICAgICAgICAgICAgICAgIHN0cnVjdHVyZSA9IGJh
c2VDZWxsLT5zdHJ1Y3R1cmUodm0pOwpAQCAtMzA0LDkgKzMwOSw5IEBAIHN0YXRpYyBJbmxpbmVD
YWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENv
ZGVCbG9jayoKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1Vuc2V0KCkgJiYgc3RydWN0dXJl
LT50eXBlSW5mbygpLmdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNl
KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogCi0gICAgICAg
ICAgICAgICAgLy8gSWYgYSBraW5kIGlzIEdldEJ5S2luZDo6RGlyZWN0LCB3ZSBkbyBub3QgbmVl
ZCB0byBpbnZlc3RpZ2F0ZSBwcm90b3R5cGUgY2hhaW5zIGZ1cnRoZXIuCisgICAgICAgICAgICAg
ICAgLy8gSWYgYSBraW5kIGlzIEdldEJ5S2luZDo6RGlyZWN0IG9yIEdldEJ5S2luZDo6UHJpdmF0
ZU5hbWUsIHdlIGRvIG5vdCBuZWVkIHRvIGludmVzdGlnYXRlIHByb3RvdHlwZSBjaGFpbnMgZnVy
dGhlci4KICAgICAgICAgICAgICAgICAvLyBDYWNoZWFiaWxpdHkganVzdCBkZXBlbmRzIG9uIHRo
ZSBoZWFkIHN0cnVjdHVyZS4KLSAgICAgICAgICAgICAgICBpZiAoa2luZCAhPSBHZXRCeUtpbmQ6
OkRpcmVjdCkgeworICAgICAgICAgICAgICAgIGlmIChraW5kICE9IEdldEJ5S2luZDo6RGlyZWN0
ICYmICFpc1ByaXZhdGUpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byBjYWNoZVN0YXR1cyA9
IHByZXBhcmVDaGFpbkZvckNhY2hpbmcoZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgc2xvdCk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmICghY2FjaGVTdGF0dXMpCiAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKQEAgLTM3MCw3ICszNzUsMTMgQEAgc3RhdGljIElu
bGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ29kZUJsb2NrKgogICAgICAgICAgICAgfSBlbHNlIGlmICghbG9hZFRhcmdldEZyb21Qcm94
eSAmJiBnZXR0ZXIgJiYgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y2FuRW1pdEludHJpbnNp
Y0dldHRlcihnZXR0ZXIsIHN0cnVjdHVyZSkpCiAgICAgICAgICAgICAgICAgbmV3Q2FzZSA9IElu
dHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBwcm9wZXJ0eU5h
bWUsIHNsb3QuY2FjaGVkT2Zmc2V0KCksIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBnZXR0ZXIs
IFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKICAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSB8fCBzbG90LmlzVW5zZXQo
KSkgeworICAgICAgICAgICAgICAgIGlmIChpc1ByaXZhdGUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKCFzbG90LmlzVW5zZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghc2xv
dC5pc0NhY2hlYWJsZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9u
Q2FjaGU7CisgICAgICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBQcm94eWFibGVBY2Nlc3NDYXNl
OjpjcmVhdGUodm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6TG9hZFByaXZhdGUsIHByb3BlcnR5
TmFtZSwgb2Zmc2V0LCBzdHJ1Y3R1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRp
b25TZXQsIGxvYWRUYXJnZXRGcm9tUHJveHksIHNsb3Qud2F0Y2hwb2ludFNldCgpLCBXVEZNb3Zl
KHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzbG90
LmlzQ2FjaGVhYmxlVmFsdWUoKSB8fCBzbG90LmlzVW5zZXQoKSkgewogICAgICAgICAgICAgICAg
ICAgICBuZXdDYXNlID0gUHJveHlhYmxlQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ss
IHNsb3QuaXNVbnNldCgpID8gQWNjZXNzQ2FzZTo6TWlzcyA6IEFjY2Vzc0Nhc2U6OkxvYWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgc3RydWN0dXJlLCBj
b25kaXRpb25TZXQsIGxvYWRUYXJnZXRGcm9tUHJveHksIHNsb3Qud2F0Y2hwb2ludFNldCgpLCBX
VEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKaW5kZXggZDg5MGZkNzBhYWNkODJmZmJmNGRh
OGZiMjRlMWYzZGZmNTc0OWRjMC4uMDgzYTNkNWQ2ODRjYWJkZmIxNGNjYWViNzQ1ZmVjNzYzZGZi
Y2EyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKQEAgLTM4LDcgKzM4LDggQEAg
ZW51bSBjbGFzcyBHZXRCeUtpbmQgewogICAgIE5vcm1hbEJ5VmFsLAogICAgIFRyeSwKICAgICBX
aXRoVGhpcywKLSAgICBEaXJlY3QKKyAgICBEaXJlY3QsCisgICAgUHJpdmF0ZU5hbWUsCiB9Owog
CiBlbnVtIGNsYXNzIERlbEJ5S2luZCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA0ZmYyMWVmZmYzNTZhMDFmNmIxODBmNzJmYzdhMTYy
OGM3ZDU1OGJiLi5iOTk0Nzc2ZTQzODQ2ZTk1YzIzMTY4NzE3MzhiMTdkNzJhMDk1ODNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTEw
ODUsMTIgKzEwODUsMTUgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9wcml2
YXRlX25hbWUpCiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgQVNTRVJUKHByb3Bl
cnR5LmlzUHJpdmF0ZU5hbWUoKSk7CiAKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1l
dGFkYXRhKGNvZGVCbG9jayk7CisgICAgaWYgKG1ldGFkYXRhLm1fc2VlbklkZW50aWZpZXJzLmNv
dW50KCkgPD0gT3B0aW9uczo6Z2V0QnlWYWxJQ01heE51bWJlck9mSWRlbnRpZmllcnMoKSkKKyAg
ICAgICAgbWV0YWRhdGEubV9zZWVuSWRlbnRpZmllcnMub2JzZXJ2ZShwcm9wZXJ0eS5pbXBsKCkp
OworCiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKICAgICBhc09iamVjdChiYXNlVmFsdWUpLT5nZXRQ
cml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAgTExJTlRfQ0hF
Q0tfRVhDRVBUSU9OKCk7CiAKICAgICBpZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVyAmJiBz
bG90LmlzQ2FjaGVhYmxlKCkgJiYgIXNsb3QuaXNVbnNldCgpKSB7Ci0gICAgICAgIGF1dG8mIG1l
dGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICAgICAgewogICAgICAg
ICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX3N0cnVjdHVyZUlE
OwogICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZUlEKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403323</attachid>
            <date>2020-07-01 14:58:21 -0700</date>
            <delta_ts>2020-07-15 13:22:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213545-20200701175820.patch</filename>
            <type>text/plain</type>
            <size>31036</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzODIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
OTE5OWMxMTY1MWRkN2YyMDBmMGU3NGMxMTY1NGNjNmIwNjc0YzIzLi4wMjU0MTA4YzcyNzBlNzEy
YzY2M2EwZGUzYjM0MWIwODMyZGI2MzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAyMC0wNy0wMSAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIGFkZCBJQyBzdXBwb3J0IGZvciBvcF9nZXRfcHJpdmF0ZV9uYW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM1NDUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgYmFz
ZWxpbmUgSklUIG5vdyBzdXBwb3J0cyBhIGZhc3QgcGF0aCBmb3Igb3BfcHJpdmF0ZV9uYW1lLAor
ICAgICAgICB1c2luZyBhIHZhcmlhbnQgb2YgR2V0QnlWYWwgSUMuCisKKyAgICAgICAgVGhlIGdl
bmVyYXRlZCBBY2Nlc3NDYXNlIGhhcyB0aGUgZm9sbG93aW5nIHF1YWxpdGllczoKKyAgICAgICAg
ICAtIEFsd2F5cyAiZGlyZWN0IiwgcmVseWluZyBvbmx5IG9uIHRoZSBjdXJyZW50IHN0cnVjdHVy
ZSBmb3IgY2FjaGViaWxpdHkKKyAgICAgICAgICAtIE5ldmVyIGltcHVyZSAoRE9NIHByb3BlcnRp
ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgdGhpcyB0aW1lLCBQcm94eU9iamVjdHMgYXJlIHRyZWF0
ZWQgYXMgSlNPYmplY3RzKQorCisgICAgICAgIFRoaXMgYWxzbyBhZGRzIGlkZW50aWZpZXIgdHJh
Y2tpbmcgdmlhIEdldEJ5VmFsSGlzdG9yeSB0byB0aGUKKyAgICAgICAgb3BfZ2V0X3ByaXZhdGVf
bmFtZSBMTEludCBzbG93IHBhdGgsIHRvIHRyYWNrIGlmIGEgcHJpdmF0ZSBmaWVsZCBsb2FkCisg
ICAgICAgIGJlY29tZXMgIm1lZ2Ftb3JwaGljIiAod2hpY2ggbWF5IGhhcHBlbiBpZiB0aGVyZSBh
cmUgbWFueSBpbnN0YW5jZXMgb2YKKyAgICAgICAgdGhlIHNhbWUgY2xhc3MpLgorCisgICAgICAg
IEJhc2VkIG9uIHRoZSBtaWNyb2JlbmNobWFyayByZXZpZXdlZCBvbiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNTQ0LCB0aGlzIHNlZXMKKyAgICAgICAgYW4gaW1w
cm92ZW1lbnQgb2Ygcm91Z2hseSA1MCUgb24gYXZlcmFnZS4KKworICAgICAgICAqIGJ5dGVjb2Rl
L0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpyZXF1aXJlc0lkZW50
aWZpZXJOYW1lTWF0Y2ggY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpyZXF1aXJl
c0ludDMyUHJvcGVydHlDaGVjayBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Om5l
ZWRzU2NyYXRjaEZQUiBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmZvckVhY2hE
ZXBlbmRlbnRDZWxsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6ZG9lc0NhbGxz
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y2FuUmVwbGFjZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAg
ICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5j
cHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL1By
b3h5YWJsZUFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpQcm94eWFibGVBY2Nlc3NDYXNl
OjpjcmVhdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KToKKyAgICAgICAgKiBieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGppdC9JQ1N0YXRzLmg6CisgICAgICAg
ICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAg
ICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
ICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgICog
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0
X3ByaXZhdGVfbmFtZSk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlND
OjphcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6YXBw
cm9wcmlhdGVHZXRCeUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeSk6Cisg
ICAgICAgICogaml0L1JlcGF0Y2guaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5j
cHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisKIDIwMjAt
MDctMDEgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgU2NyaXB0
IHRvIGNvcHkgb3ZlciB0ZXN0YXBpLmpzIGlzIHJlZHVuZGFudCBpbiB4Y29kZWJ1aWxkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggNGEzYmI1
YTg2MjA3ODEwYjdmODA5YzhiOWMxZjdhMTM2ZTBiNTU3OC4uNjNhZjFiZGM2ZWEwOWI4NTkwNmQz
OTgyNGYyZDJjZDBmY2FjY2JiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BY2Nlc3NDYXNlLmNwcApAQCAtMjY1LDYgKzI2NSw3IEBAIGJvb2wgQWNjZXNzQ2FzZTo6cmVx
dWlyZXNJZGVudGlmaWVyTmFtZU1hdGNoKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fdHlwZSkg
ewogICAgIGNhc2UgTG9hZDoKKyAgICBjYXNlIExvYWRQcml2YXRlOgogICAgIC8vIFdlIGRvbid0
IGN1cnJlbnRseSBoYXZlIGEgYnlfdmFsIGZvciB0aGVzZSBwdXRzLCBidXQgd2UgZG8gY2FyZSBh
Ym91dCB0aGUgaWRlbnRpZmllci4KICAgICBjYXNlIFRyYW5zaXRpb246CiAgICAgY2FzZSBEZWxl
dGU6CkBAIC0zNDAsNiArMzQxLDcgQEAgYm9vbCBBY2Nlc3NDYXNlOjpyZXF1aXJlc0ludDMyUHJv
cGVydHlDaGVjaygpIGNvbnN0CiAgICAgY2FzZSBJbnN0YW5jZU9mSGl0OgogICAgIGNhc2UgSW5z
dGFuY2VPZk1pc3M6CiAgICAgY2FzZSBJbnN0YW5jZU9mR2VuZXJpYzoKKyAgICBjYXNlIExvYWRQ
cml2YXRlOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY2FzZSBJbmRleGVkSW50MzJMb2Fk
OgogICAgIGNhc2UgSW5kZXhlZERvdWJsZUxvYWQ6CkBAIC0zNjYsNiArMzY4LDcgQEAgYm9vbCBB
Y2Nlc3NDYXNlOjpuZWVkc1NjcmF0Y2hGUFIoKSBjb25zdAogewogICAgIHN3aXRjaCAobV90eXBl
KSB7CiAgICAgY2FzZSBMb2FkOgorICAgIGNhc2UgTG9hZFByaXZhdGU6CiAgICAgY2FzZSBUcmFu
c2l0aW9uOgogICAgIGNhc2UgRGVsZXRlOgogICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxl
OgpAQCAtNDYwLDYgKzQ2Myw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Zm9yRWFjaERlcGVuZGVudENl
bGwoVk0mIHZtLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKSBjb25zdAogICAgIGNhc2UgQ3VzdG9t
QWNjZXNzb3JHZXR0ZXI6CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjoKICAgICBjYXNl
IExvYWQ6CisgICAgY2FzZSBMb2FkUHJpdmF0ZToKICAgICBjYXNlIFRyYW5zaXRpb246CiAgICAg
Y2FzZSBEZWxldGU6CiAgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CkBAIC01MTMsNiAr
NTE3LDcgQEAgYm9vbCBBY2Nlc3NDYXNlOjpkb2VzQ2FsbHMoVk0mIHZtLCBWZWN0b3I8SlNDZWxs
Kj4qIGNlbGxzVG9NYXJrSWZEb2VzQ2FsbHMpIGNvbnMKICAgICBjYXNlIERlbGV0ZU5vbkNvbmZp
Z3VyYWJsZToKICAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBMb2FkOgorICAgIGNhc2Ug
TG9hZFByaXZhdGU6CiAgICAgY2FzZSBSZXBsYWNlOgogICAgIGNhc2UgTWlzczoKICAgICBjYXNl
IEdldEdldHRlcjoKQEAgLTY1MCw2ICs2NTUsNyBAQCBib29sIEFjY2Vzc0Nhc2U6OmNhblJlcGxh
Y2UoY29uc3QgQWNjZXNzQ2FzZSYgb3RoZXIpIGNvbnN0CiAgICAgICAgIH0KIAogICAgIGNhc2Ug
TG9hZDoKKyAgICBjYXNlIExvYWRQcml2YXRlOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKICAgICBj
YXNlIERlbGV0ZToKICAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKQEAgLTE0MDYsOCAr
MTQxMiw5IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25T
dGF0ZSYgc3RhdGUpCiAgICAgICAgIGppdC5ib3hCb29sZWFuUGF5bG9hZChtX3R5cGUgPT0gSW5z
dGFuY2VPZkhpdCwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSk7CiAgICAgICAgIHN0YXRlLnN1Y2Nl
ZWQoKTsKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwogICAgIGNhc2UgTG9hZDoKKyAgICBj
YXNlIExvYWRQcml2YXRlOgogICAgIGNhc2UgR2V0R2V0dGVyOgogICAgIGNhc2UgR2V0dGVyOgog
ICAgIGNhc2UgU2V0dGVyOgpAQCAtMTQyNyw3ICsxNDM0LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpn
ZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgfQogCiAg
ICAgICAgIEdQUlJlZyBiYXNlRm9yR2V0R1BSOwotICAgICAgICBpZiAodmlhUHJveHkoKSkgewor
ICAgICAgICBpZiAodmlhUHJveHkoKSAmJiBtX3R5cGUgIT0gTG9hZFByaXZhdGUpIHsKICAgICAg
ICAgICAgIEFTU0VSVChtX3R5cGUgIT0gQ3VzdG9tVmFsdWVTZXR0ZXIgfHwgbV90eXBlICE9IEN1
c3RvbUFjY2Vzc29yU2V0dGVyKTsgLy8gQmVjYXVzZSBzZXR0ZXJzIG5lZWQgdG8gbm90IHRyYXNo
IHZhbHVlUmVnc1BheWxvYWRHUFIuCiAgICAgICAgICAgICBpZiAobV90eXBlID09IEdldHRlciB8
fCBtX3R5cGUgPT0gU2V0dGVyKQogICAgICAgICAgICAgICAgIGJhc2VGb3JHZXRHUFIgPSBzY3Jh
dGNoR1BSOwpAQCAtMTQ0OCw2ICsxNDU1LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUlt
cGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIC8vIFRoaXMgaXNu
J3QgcHJldHR5LCBidXQgd2Uga25vdyB3ZSBnb3QgaGVyZSB2aWEgZ2VuZXJhdGVXaXRoR3VhcmQs
CiAgICAgICAgICAgICAvLyBhbmQgaXQgbGVmdCB0aGUgYmFzZUZvckFjY2VzcyBpbnNpZGUgc2Ny
YXRjaEdQUi4gV2UgY291bGQgcmUtZGVyaXZlIHRoZSBiYXNlLAogICAgICAgICAgICAgLy8gYnV0
IGl0J2QgcmVxdWlyZSBlbWl0dGluZyB0aGUgc2FtZSBjb2RlIHRvIGxvYWQgdGhlIGJhc2UgdHdp
Y2UuCisgICAgICAgICAgICBBU1NFUlQobV90eXBlICE9IExvYWRQcml2YXRlKTsKICAgICAgICAg
ICAgIGJhc2VGb3JBY2Nlc3NHUFIgPSBzY3JhdGNoR1BSOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgaWYgKGhhc0FsdGVybmF0ZUJhc2UoKSkgewpAQCAtMTQ2MCw3ICsxNDY4LDcgQEAg
dm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0
ZSkKIAogICAgICAgICBHUFJSZWcgbG9hZGVkVmFsdWVHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAg
ICAgICBpZiAobV90eXBlICE9IEN1c3RvbVZhbHVlR2V0dGVyICYmIG1fdHlwZSAhPSBDdXN0b21B
Y2Nlc3NvckdldHRlciAmJiBtX3R5cGUgIT0gQ3VzdG9tVmFsdWVTZXR0ZXIgJiYgbV90eXBlICE9
IEN1c3RvbUFjY2Vzc29yU2V0dGVyKSB7Ci0gICAgICAgICAgICBpZiAobV90eXBlID09IExvYWQg
fHwgbV90eXBlID09IEdldEdldHRlcikKKyAgICAgICAgICAgIGlmIChtX3R5cGUgPT0gTG9hZCB8
fCBtX3R5cGUgPT0gR2V0R2V0dGVyIHx8IG1fdHlwZSA9PSBMb2FkUHJpdmF0ZSkKICAgICAgICAg
ICAgICAgICBsb2FkZWRWYWx1ZUdQUiA9IHZhbHVlUmVnc1BheWxvYWRHUFI7CiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgbG9hZGVkVmFsdWVHUFIgPSBzY3JhdGNoR1BSOwpAQCAt
MTQ5Myw3ICsxNTAxLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2Vu
ZXJhdGlvblN0YXRlJiBzdGF0ZSkKICNlbmRpZgogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1f
dHlwZSA9PSBMb2FkIHx8IG1fdHlwZSA9PSBHZXRHZXR0ZXIpIHsKKyAgICAgICAgaWYgKG1fdHlw
ZSA9PSBMb2FkIHx8IG1fdHlwZSA9PSBHZXRHZXR0ZXIgfHwgbV90eXBlID09IExvYWRQcml2YXRl
KSB7CiAgICAgICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCmlu
ZGV4IDEwOGZlZjNiMzMwMTJjZjRlN2RiMjdlMjBhNjI2MDIwNzg1ZDIxNTkuLjdkZDFiZGNkY2M4
MzAyNTEwMjBlYmU3ZjEyODlkODg0YjFmNTlkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaApAQCAtMTIzLDcgKzEyMyw4IEBAIHB1YmxpYzoKICAgICAg
ICAgSW5kZXhlZFR5cGVkQXJyYXlVaW50MzJMb2FkLAogICAgICAgICBJbmRleGVkVHlwZWRBcnJh
eUZsb2F0MzJMb2FkLAogICAgICAgICBJbmRleGVkVHlwZWRBcnJheUZsb2F0NjRMb2FkLAotICAg
ICAgICBJbmRleGVkU3RyaW5nTG9hZAorICAgICAgICBJbmRleGVkU3RyaW5nTG9hZCwKKyAgICAg
ICAgTG9hZFByaXZhdGUsCiAgICAgfTsKIAogICAgIGVudW0gU3RhdGUgOiB1aW50OF90IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDA4
YWVhZTlmN2NlOTJjZGRkZmYyNzUzYzlhNDczODUyMDMwZjYyMmMuLjcxNzcyYzcwODdiN2I1OTA0
M2M2NTUxYTAwYzg5YjVkNDcyNGIxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtNTcxLDYgKzU3MSw3IEBAIG9wIDpnZXRfcHJpdmF0
ZV9uYW1lLAogICAgICAgICBzdHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCiAgICAgICAgIG9mZnNl
dDogdW5zaWduZWQsCiAgICAgICAgIHByb3BlcnR5OiBXcml0ZUJhcnJpZXJbSlNDZWxsXSwKKyAg
ICAgICAgc2VlbklkZW50aWZpZXJzOiBHZXRCeVZhbEhpc3RvcnksCiAgICAgfQogCiBvcCA6cHV0
X2J5X3ZhbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
aW5kZXggMzZlOGQ4MTYyMWUwZjVjNTk0ODA0NjcyNmVjMDA1Yjg0YjcxZjg0MS4uMTE3OWVkNjIy
YmY0Y2NmNWY1MTk0MzhhZTg5OWFkZWQ5NmRmNDYzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTUwOSw2ICs1MDksNyBAQCBib29sIENvZGVC
bG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1
dGFibGUsIFVubGluawogICAgICAgICBMSU5LKE9wVGFpbENhbGxGb3J3YXJkQXJndW1lbnRzLCBw
cm9maWxlKQogICAgICAgICBMSU5LKE9wQ29uc3RydWN0VmFyYXJncywgcHJvZmlsZSkKICAgICAg
ICAgTElOSyhPcEdldEJ5VmFsLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9wR2V0UHJpdmF0ZU5h
bWUsIHByb2ZpbGUpCiAKICAgICAgICAgTElOSyhPcEdldERpcmVjdFBuYW1lLCBwcm9maWxlKQog
ICAgICAgICBMSU5LKE9wR2V0QnlJZFdpdGhUaGlzLCBwcm9maWxlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggODkx
NDExNjk4M2QwODQ0MjM0YjdiZmM1MWM4ZGMyNWI0YmMwOTM0Ni4uYzkwMTA4ZWJhNjkyMGJmNDEw
M2RkZjI1ZWY2NzZkZDRmMmQ0YTgxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC05MTEsNiArOTExLDkgQEAgdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFjY2Vzc0Nhc2U6OkFjY2Vzc1R5cGUg
dHlwZSkKICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkluZGV4ZWRTdHJpbmdMb2FkOgogICAgICAgICBv
dXQucHJpbnQoIkluZGV4ZWRTdHJpbmdMb2FkIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IEFjY2Vzc0Nhc2U6OkxvYWRQcml2YXRlOgorICAgICAgICBvdXQucHJpbnQoIkxvYWRQcml2YXRl
Iik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5
YWJsZUFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5
YWJsZUFjY2Vzc0Nhc2UuY3BwCmluZGV4IDQ5OWM0ZTZiMmU1MTEzOTlmODVmNzM0NWZiM2JmN2E5
Zjk2YWE3NTkuLjZlYjIzMDFmN2Y0NjFlNDk3NTVmMmEyNmI2ODhhZmUzM2U2NzJiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNz
Q2FzZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgUHJveHlhYmxlQWNjZXNzQ2FzZTo6UHJveHlhYmxl
QWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgYWNjZXMKIAogc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYg
dm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBib29sIHZpYVBy
b3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVBy
b3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluKQogewotICAgIEFTU0VSVCh0eXBl
ID09IExvYWQgfHwgdHlwZSA9PSBNaXNzIHx8IHR5cGUgPT0gR2V0R2V0dGVyKTsKKyAgICBBU1NF
UlQodHlwZSA9PSBMb2FkIHx8IHR5cGUgPT0gTWlzcyB8fCB0eXBlID09IEdldEdldHRlciB8fCB0
eXBlID09IExvYWRQcml2YXRlKTsKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+KG5ldyBQcm94eWFibGVBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwg
b2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0aW9uYWxTZXQs
IFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IGJlYjQx
NTkwMTI2NWY0YWJiZTRlNzBmYTIxYjkwZGY0MTIxNzIzMTcuLmJhODA4MjM3Y2IzNjc5YjdlMDVl
NWRiYTQ4YjZmYWE1YjJmYTZiZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtMjY1LDYgKzI2NSw5IEBAIHZvaWQg
U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIGNhc2Ug
QWNjZXNzVHlwZTo6R2V0QnlWYWw6CiAgICAgICAgIHJlc2V0R2V0QnkoY29kZUJsb2NrLCAqdGhp
cywgR2V0QnlLaW5kOjpOb3JtYWxCeVZhbCk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNj
ZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWU6CisgICAgICAgIHJlc2V0R2V0QnkoY29kZUJsb2NrLCAq
dGhpcywgR2V0QnlLaW5kOjpQcml2YXRlTmFtZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
QWNjZXNzVHlwZTo6UHV0OgogICAgICAgICByZXNldFB1dEJ5SUQoY29kZUJsb2NrLCAqdGhpcyk7
CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uaAppbmRleCA3YTRmNTgwZWJiMjcxOTEzOTcxMGJkNTk2ZjMyYWE2
OTg2MTcyNmE0Li5iZGJmM2I4OGU5Njg0MWNkYzM1MGZhNWYxOTU2MzI5OTUyYTRlZGRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8u
aApAQCAtNTcsNyArNTcsOCBAQCBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3QgewogICAg
IEluLAogICAgIEluc3RhbmNlT2YsCiAgICAgRGVsZXRlQnlJRCwKLSAgICBEZWxldGVCeVZhbAor
ICAgIERlbGV0ZUJ5VmFsLAorICAgIEdldFByaXZhdGVOYW1lLAogfTsKIAogZW51bSBjbGFzcyBD
YWNoZVR5cGUgOiBpbnQ4X3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9JQ1N0YXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAppbmRleCA5
NmMxOWExN2JkYzJhN2QxMGYxNWY5YmNhMzkwMjE2MjFjOTlkYjgyLi4xMzc4ZTYzY2MyNzNmNmFj
N2MxMzcxMmViYmEwZmVhZjNmMjA0NDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0lDU3RhdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMu
aApAQCAtNzQsNyArNzQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhQdXRCeUlkU2Vs
ZlBhdGNoKSBcCiAgICAgbWFjcm8oSW5CeUlkU2VsZlBhdGNoKSBcCiAgICAgbWFjcm8oRGVsQnlS
ZXBsYWNlV2l0aEp1bXApIFwKLSAgICBtYWNybyhEZWxCeVJlcGxhY2VXaXRoR2VuZXJpYykKKyAg
ICBtYWNybyhEZWxCeVJlcGxhY2VXaXRoR2VuZXJpYykgXAorICAgIG1hY3JvKE9wZXJhdGlvbkdl
dFByaXZhdGVOYW1lT3B0aW1pemUpCiAKIGNsYXNzIElDRXZlbnQgewogcHVibGljOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDE5NDk2YTk5YjE3NWI1OWUwMTBjNDRlYzQ3OWFmZTlk
MmM4ODI1NDAuLjAzZDYzNjQzM2VmNTU3NWU1NmIxNTZiNWFhYmY4NmY2Mjc0MzJkZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTI5Miw3ICsyOTIsNiBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9TTE9XX09QKHB1c2hfd2l0aF9z
Y29wZSkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQp
CiAgICAgICAgIERFRklORV9TTE9XX09QKGdldF9ieV92YWxfd2l0aF90aGlzKQotICAgICAgICBE
RUZJTkVfU0xPV19PUChnZXRfcHJpdmF0ZV9uYW1lKQogICAgICAgICBERUZJTkVfU0xPV19PUChw
dXRfYnlfaWRfd2l0aF90aGlzKQogICAgICAgICBERUZJTkVfU0xPV19PUChwdXRfYnlfdmFsX3dp
dGhfdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dfT1AocmVzb2x2ZV9zY29wZV9mb3JfaG9pc3Rp
bmdfZnVuY19kZWNsX2luX2V2YWwpCkBAIC0zNTcsNiArMzU2LDcgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lkX3dpdGhf
dGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV9pZF9kaXJlY3QpCiAgICAgICAgIERF
RklORV9PUChvcF9nZXRfYnlfdmFsKQorICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3ByaXZhdGVf
bmFtZSkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9wcm90b3R5cGVfb2YpCiAgICAgICAgIERF
RklORV9PUChvcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKQogICAgICAgICBERUZJTkVfT1Aob3Bf
aW5zdGFuY2VvZikKQEAgLTU2MSw2ICs1NjEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2J5X2lkX3dpdGhf
dGhpcykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9ieV9pZF9kaXJlY3QpCiAg
ICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYnlfdmFsKQorICAgICAgICBERUZJTkVf
U0xPV0NBU0VfT1Aob3BfZ2V0X3ByaXZhdGVfbmFtZSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X09QKG9wX2luc3RhbmNlb2YpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9pbnN0YW5j
ZW9mX2N1c3RvbSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2psZXNzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgKaW5kZXggNjY2ZTBlZDRjOGEwOTM0NGY0YjRmZjQyNTcwZTY3ZDY5NWNi
MTc0OS4uN2MzNzViNjY1ZTc1ZmRiZTIzMjU2NTIxMzNkM2M4NTZkM2M4YzkzNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCkBAIC01MjcsNiArNTI3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcHJvdG90eXBlX29mKGNvbnN0IElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVj
dGlvbiopOwpAQCAtNjU3LDYgKzY1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lk
IGVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
Z2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3df
b3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbl9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggYmMzY2NjODAyMzVkNzM5Y2QxYWY1MjY5YzFlNmFi
MTVmZWQ3NDg5NS4uZTVhMDRmZDY0ZGUyNzczZjcyMDVkYWVkZjU2MmNjNzY2NjU0MjI2MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yMTkzLDYg
KzIxOTMsNzUgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZh
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmMKIH0KIAogCitBTFdBWVNfSU5MSU5F
IHN0YXRpYyBKU1ZhbHVlIGdldFByaXZhdGVOYW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBmaWVs
ZE5hbWVWYWx1ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RDb2VyY2libGUoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworICAgIGF1
dG8gZmllbGROYW1lID0gZmllbGROYW1lVmFsdWUudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3Qp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisKKyAgICBKU09i
amVjdCogYmFzZSA9IGJhc2VWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIFByb3Bl
cnR5U2xvdCBzbG90KGJhc2UsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlu
cXVpcnkpOworICAgIGJhc2UtPmdldFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIGZpZWxkTmFt
ZSwgc2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKwor
ICAgIHJldHVybiBzbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgZmllbGROYW1lKTsKK30KKwor
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRG
aWVsZE5hbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworICAgIEpTVmFsdWUgZmllbGROYW1l
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEZpZWxkTmFtZSk7CisgICAgQVNTRVJUKENh
Y2hlYWJsZUlkZW50aWZpZXI6OmlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwoZmllbGROYW1lVmFs
dWUpKTsKKworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2so
KTsKKworICAgIC8vIE9ubHkgY29uc2lkZXIgY2FjaGluZyBpZiB0aGUgYmFzZSB2YWx1ZSBkb2Vz
bid0IG5lZWQgdG8gYmUgY29udmVydGVkIHRvIGEgSlNPYmplY3QKKyAgICBpZiAoYmFzZVZhbHVl
LmlzQ2VsbCgpICYmIGJhc2VWYWx1ZS5hc0NlbGwoKS0+aXNPYmplY3QoKSkgeworICAgICAgICBj
b25zdCBJZGVudGlmaWVyIGZpZWxkTmFtZSA9IGZpZWxkTmFtZVZhbHVlLnRvUHJvcGVydHlLZXko
Z2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CisgICAgICAgIEFTU0VSVChmaWVsZE5hbWUuaXNTeW1ib2woKSk7CisKKyAg
ICAgICAgSlNPYmplY3QqIGJhc2UgPSBiYXNlVmFsdWUuYXNDZWxsKCktPnRvT2JqZWN0KGdsb2Jh
bE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOworCisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2UsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgICAgICBiYXNlLT5nZXRQcml2YXRl
RmllbGQoZ2xvYmFsT2JqZWN0LCBmaWVsZE5hbWUsIHNsb3QpOworICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgICAgICBMT0dfSUMoKElD
RXZlbnQ6Ok9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIGJhc2VWYWx1ZS5jbGFzc0lu
Zm9Pck51bGwodm0pLCBmaWVsZE5hbWUsIHRydWUpKTsKKworICAgICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2VsbChm
aWVsZE5hbWVWYWx1ZS5hc0NlbGwoKSk7CisgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJD
YWNoaW5nQnkodm0sIGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpLCBpZGVu
dGlmaWVyKSkKKyAgICAgICAgICAgIHJlcGF0Y2hHZXRCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9j
aywgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCBzbG90LCAqc3R1YkluZm8sIEdldEJ5S2luZDo6UHJp
dmF0ZU5hbWUpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0VmFsdWUo
Z2xvYmFsT2JqZWN0LCBmaWVsZE5hbWUpKTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShnZXRQcml2YXRlTmFtZShnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZSwgYmFzZVZhbHVlLCBmaWVsZE5hbWVWYWx1ZSkpKTsKK30KKworRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEZpZWxkTmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVl
IGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1ZSBm
aWVsZE5hbWVWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkRmllbGROYW1lKTsKKworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGdldFByaXZhdGVOYW1l
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUsIGZpZWxkTmFtZVZhbHVlKSkpOwor
fQorCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9w
ZXJ0eURlZmF1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEJ5VmFsSW5mbyog
YnlWYWxJbmZvKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggNGMyMjA1MzBhYjRkZTViMjZk
N2Q5YWQzZDNiODJlM2I0ZGI5N2Q5YS4uYTgxNDZmZTMzYTJjMzNhMWQ4YmY1MGRjNzEyZGY3NWYw
ZjhkM2QyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAg
LTI3Myw2ICsyNzMsOSBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2l6ZUZyYW1l
Rm9yVmFyYXJncyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbAogQ2FsbEZyYW1lKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblNldHVwRm9yd2FyZEFyZ3VtZW50c0ZyYW1lKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QsIGludDMyX3QgbGVuZ3Ro
KSBXVEZfSU5URVJOQUw7CiBDYWxsRnJhbWUqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0dXBW
YXJhcmdzRnJhbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBFbmNvZGVkSlNWYWx1ZSBh
cmd1bWVudHMsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIGludDMyX3QgbGVuZ3RoKSBXVEZf
SU5URVJOQUw7CiAKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJp
dmF0ZU5hbWUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEZpZWxkTmFtZSkgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEZpZWxkTmFtZSkgV1RGX0lOVEVSTkFMOworCiBjaGFyKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblN3aXRjaENoYXJXaXRoVW5rbm93bktleVR5cGUoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBrZXksIHNpemVfdCB0YWJsZUluZGV4KSBXVEZfSU5U
RVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN3aXRjaEltbVdpdGhVbmtub3du
S2V5VHlwZShWTSosIEVuY29kZWRKU1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5kZXgpIFdURl9J
TlRFUk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3dpdGNoU3RyaW5nV2l0aFVu
a25vd25LZXlUeXBlKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUga2V5LCBzaXplX3Qg
dGFibGVJbmRleCkgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA4NjhhMWQxMDU5MDlkMDE0ZTU4NzY0MzdkMzI2
YTNkMjQ5ZGRhMzhhLi41NGUxOGE1ZDIyZjVmZjk2NTA3MTNjZjJjZWQzMDA0YjdhOTg1Mzc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApA
QCAtOTYsNiArOTYsNTMgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICB9CiB9CiAKK3Zv
aWQgSklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEdldFByaXZhdGVOYW1lPigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUu
bWV0YWRhdGEobV9jb2RlQmxvY2spOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29k
ZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAg
ICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OworCisgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CisgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOworCisgICAgaWYgKG1ldGFkYXRhLm1fc2VlbklkZW50
aWZpZXJzLmNvdW50KCkgPiBPcHRpb25zOjpnZXRCeVZhbElDTWF4TnVtYmVyT2ZJZGVudGlmaWVy
cygpKSB7CisgICAgICAgIGF1dG8gbm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7Cisg
ICAgICAgIG5vdENlbGwubGluayh0aGlzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhQcm9m
aWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5h
bWUsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdU
MCwgcmVnVDEpOworICAgIH0gZWxzZSB7CisgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpT
Q2VsbChyZWdUMCwgYmFzZSk7CisKKyAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAor
ICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2Fs
bFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksCisgICAgICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPmFj
Y2Vzc1R5cGUgPSBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZTsKKyAgICAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgoKnRoaXMpOworICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1w
KCkpOworICAgICAgICBtX2dldEJ5VmFscy5hcHBlbmQoZ2VuKTsKKworICAgICAgICBlbWl0VmFs
dWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7CisgICAgICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKKyAgICB9Cit9CisKK3ZvaWQgSklUOjplbWl0
U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgaWYg
KGhhc0FueVNsb3dDYXNlcyhpdGVyKSkgeworICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEdldFByaXZhdGVOYW1lPigpOworICAgICAgICBWaXJ0dWFsUmVn
aXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisKKyAgICAgICAgbGlua0FsbFNsb3dDYXNlcyhp
dGVyKTsKKworICAgICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNb
bV9nZXRCeVZhbEluZGV4XTsKKyAgICAgICAgKyttX2dldEJ5VmFsSW5kZXg7CisgICAgICAgIExh
YmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgICAgICBDYWxsIGNhbGwgPSBjYWxsT3Bl
cmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRp
b25HZXRQcml2YXRlTmFtZU9wdGltaXplLCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCByZWdUMSk7CisgICAgICAg
IGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisgICAgfQorfQor
CiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRfb3BfcHV0X2J5X3ZhbDxPcFB1dEJ5VmFs
RGlyZWN0PihjdXJyZW50SW5zdHJ1Y3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggYzA0N2QyYjEzOWU2YTJi
NWFhZDUyZjM0ZWY3NThkZjk0MzBhYWViNS4uZWIxZTJmM2NmMDM3MzQ1OTE1NWVjNjNiZjcxZGEw
N2IwMjAyZDRjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0yODcsNiArMjg3LDU0IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTCiAgICAgfQogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1l
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRQcml2YXRlTmFtZT4oKTsKKyAgICBh
dXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKKyAgICBWaXJ0
dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJh
c2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0
ZWNvZGUubV9wcm9wZXJ0eTsKKworICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHBy
b3BlcnR5LCByZWdUMywgcmVnVDIpOworCisgICAgaWYgKG1ldGFkYXRhLm1fc2VlbklkZW50aWZp
ZXJzLmNvdW50KCkgPiBPcHRpb25zOjpnZXRCeVZhbElDTWF4TnVtYmVyT2ZJZGVudGlmaWVycygp
KSB7CisgICAgICAgIGF1dG8gbm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMSk7CisgICAg
ICAgIG5vdENlbGwubGluayh0aGlzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhQcm9maWxl
KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWUs
IGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBKU1ZhbHVl
UmVncyhyZWdUMSwgcmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOwor
CisgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgICAgIG1fY29kZUJs
b2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMs
IHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7CisgICAgICAgIGdlbi5zdHViSW5m
bygpLT5hY2Nlc3NUeXBlID0gQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWU7CisgICAgICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKKyAgICAgICAgbV9nZXRCeVZhbHMuYXBwZW5kKGdlbik7CisKKyAgICAgICAg
ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jaykpOwor
ICAgICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOworICAgIH0KK30KKworCit2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
eworICAgIGlmIChoYXNBbnlTbG93Q2FzZXMoaXRlcikpIHsKKyAgICAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRQcml2YXRlTmFtZT4oKTsKKyAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworCisgICAgICAgIGxpbmtBbGxT
bG93Q2FzZXMoaXRlcik7CisKKyAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1f
Z2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleF07CisgICAgICAgICsrbV9nZXRCeVZhbEluZGV4Owor
ICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICAgICAgQ2FsbCBjYWxs
ID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2Nr
KSwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgZHN0LCBUcnVzdGVkSW1tUHRyKG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhy
ZWdUMSwgcmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpKTsKKyAgICAgICAgZ2VuLnJl
cG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKyAgICB9Cit9CisKKwogdm9p
ZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X29wX3B1dF9ieV92YWw8T3BQdXRCeVZhbERpcmVj
dD4oY3VycmVudEluc3RydWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CmluZGV4IDI1OGYxMzkyNGFlZDM3ZDAxMTA5YmNiMzc0MjFiNThkZjhjNjc3OGMuLjQ5MGYzN2Qx
YzdkMjEyNDgwNzFlODNmZDE2YWQ2ODI0Y2FjYWUxMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcApAQCAtMTU4LDYgKzE1OCw4IEBAIGlubGluZSBGdW5jdGlvblB0cjxDRnVu
Y3Rpb25QdHJUYWc+IGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oR2V0QnlLaW5k
CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemU7CiAgICAgY2Fz
ZSBHZXRCeUtpbmQ6Ok5vcm1hbEJ5VmFsOgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0QnlW
YWxPcHRpbWl6ZTsKKyAgICBjYXNlIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWU6CisgICAgICAgIHJl
dHVybiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplOwogICAgIH0KICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpAQCAtMTc1LDYgKzE3Nyw4IEBAIGlubGluZSBGdW5j
dGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGFwcHJvcHJpYXRlR2V0QnlGdW5jdGlvbihHZXRCeUtp
bmQga2luZCkKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldEJ5SWREaXJlY3Q7CiAgICAgY2Fz
ZSBHZXRCeUtpbmQ6Ok5vcm1hbEJ5VmFsOgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0QnlW
YWxHZW5lcmljOworICAgIGNhc2UgR2V0QnlLaW5kOjpQcml2YXRlTmFtZToKKyAgICAgICAgcmV0
dXJuIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQpAQCAtMTk0LDYgKzE5OCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9j
ayoKICAgICAgICAgaWYgKCFiYXNlVmFsdWUuaXNDZWxsKCkpCiAgICAgICAgICAgICByZXR1cm4g
R2l2ZVVwT25DYWNoZTsKICAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0Nl
bGwoKTsKKyAgICAgICAgY29uc3QgYm9vbCBpc1ByaXZhdGUgPSBraW5kID09IEdldEJ5S2luZDo6
UHJpdmF0ZU5hbWU7CiAKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nh
c2U7CiAKQEAgLTI0OCw3ICsyNTMsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2Fj
aGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAgICAgICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUodm0pOwogCiAg
ICAgICAgICAgICBib29sIGxvYWRUYXJnZXRGcm9tUHJveHkgPSBmYWxzZTsKLSAgICAgICAgICAg
IGlmIChiYXNlQ2VsbC0+dHlwZSgpID09IFB1cmVGb3J3YXJkaW5nUHJveHlUeXBlKSB7CisgICAg
ICAgICAgICBpZiAoYmFzZUNlbGwtPnR5cGUoKSA9PSBQdXJlRm9yd2FyZGluZ1Byb3h5VHlwZSAm
JiAhaXNQcml2YXRlKSB7CiAgICAgICAgICAgICAgICAgYmFzZVZhbHVlID0ganNDYXN0PEpTUHJv
eHkqPihiYXNlQ2VsbCktPnRhcmdldCgpOwogICAgICAgICAgICAgICAgIGJhc2VDZWxsID0gYmFz
ZVZhbHVlLmFzQ2VsbCgpOwogICAgICAgICAgICAgICAgIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5z
dHJ1Y3R1cmUodm0pOwpAQCAtMzA0LDkgKzMwOSw5IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlv
biB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoK
ICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1Vuc2V0KCkgJiYgc3RydWN0dXJlLT50eXBlSW5m
bygpLmdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlKCkpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogCi0gICAgICAgICAgICAgICAg
Ly8gSWYgYSBraW5kIGlzIEdldEJ5S2luZDo6RGlyZWN0LCB3ZSBkbyBub3QgbmVlZCB0byBpbnZl
c3RpZ2F0ZSBwcm90b3R5cGUgY2hhaW5zIGZ1cnRoZXIuCisgICAgICAgICAgICAgICAgLy8gSWYg
YSBraW5kIGlzIEdldEJ5S2luZDo6RGlyZWN0IG9yIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWUsIHdl
IGRvIG5vdCBuZWVkIHRvIGludmVzdGlnYXRlIHByb3RvdHlwZSBjaGFpbnMgZnVydGhlci4KICAg
ICAgICAgICAgICAgICAvLyBDYWNoZWFiaWxpdHkganVzdCBkZXBlbmRzIG9uIHRoZSBoZWFkIHN0
cnVjdHVyZS4KLSAgICAgICAgICAgICAgICBpZiAoa2luZCAhPSBHZXRCeUtpbmQ6OkRpcmVjdCkg
eworICAgICAgICAgICAgICAgIGlmIChraW5kICE9IEdldEJ5S2luZDo6RGlyZWN0ICYmICFpc1By
aXZhdGUpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byBjYWNoZVN0YXR1cyA9IHByZXBhcmVD
aGFpbkZvckNhY2hpbmcoZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgc2xvdCk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICghY2FjaGVTdGF0dXMpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gR2l2ZVVwT25DYWNoZTsKQEAgLTM3MCw3ICszNzUsMTMgQEAgc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2NrKgogICAgICAgICAgICAgfSBlbHNlIGlmICghbG9hZFRhcmdldEZyb21Qcm94eSAmJiBnZXR0
ZXIgJiYgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y2FuRW1pdEludHJpbnNpY0dldHRlcihn
ZXR0ZXIsIHN0cnVjdHVyZSkpCiAgICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEludHJpbnNpY0dl
dHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBwcm9wZXJ0eU5hbWUsIHNsb3Qu
Y2FjaGVkT2Zmc2V0KCksIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBnZXR0ZXIsIFdURk1vdmUo
cHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSB8fCBzbG90LmlzVW5zZXQoKSkgeworICAg
ICAgICAgICAgICAgIGlmIChpc1ByaXZhdGUpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KCFzbG90LmlzVW5zZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghc2xvdC5pc0NhY2hl
YWJsZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7Cisg
ICAgICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBQcm94eWFibGVBY2Nlc3NDYXNlOjpjcmVhdGUo
dm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6TG9hZFByaXZhdGUsIHByb3BlcnR5TmFtZSwgb2Zm
c2V0LCBzdHJ1Y3R1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25TZXQsIGxv
YWRUYXJnZXRGcm9tUHJveHksIHNsb3Qud2F0Y2hwb2ludFNldCgpLCBXVEZNb3ZlKHByb3RvdHlw
ZUFjY2Vzc0NoYWluKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzbG90LmlzQ2FjaGVh
YmxlVmFsdWUoKSB8fCBzbG90LmlzVW5zZXQoKSkgewogICAgICAgICAgICAgICAgICAgICBuZXdD
YXNlID0gUHJveHlhYmxlQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIHNsb3QuaXNV
bnNldCgpID8gQWNjZXNzQ2FzZTo6TWlzcyA6IEFjY2Vzc0Nhc2U6OkxvYWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25T
ZXQsIGxvYWRUYXJnZXRGcm9tUHJveHksIHNsb3Qud2F0Y2hwb2ludFNldCgpLCBXVEZNb3ZlKHBy
b3RvdHlwZUFjY2Vzc0NoYWluKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZXBhdGNoLmgKaW5kZXggZDg5MGZkNzBhYWNkODJmZmJmNGRhOGZiMjRlMWYz
ZGZmNTc0OWRjMC4uMDgzYTNkNWQ2ODRjYWJkZmIxNGNjYWViNzQ1ZmVjNzYzZGZiY2EyMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKQEAgLTM4LDcgKzM4LDggQEAgZW51bSBjbGFz
cyBHZXRCeUtpbmQgewogICAgIE5vcm1hbEJ5VmFsLAogICAgIFRyeSwKICAgICBXaXRoVGhpcywK
LSAgICBEaXJlY3QKKyAgICBEaXJlY3QsCisgICAgUHJpdmF0ZU5hbWUsCiB9OwogCiBlbnVtIGNs
YXNzIERlbEJ5S2luZCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAppbmRleCA0ZmYyMWVmZmYzNTZhMDFmNmIxODBmNzJmYzdhMTYyOGM3ZDU1OGJi
Li5iOTk0Nzc2ZTQzODQ2ZTk1YzIzMTY4NzE3MzhiMTdkNzJhMDk1ODNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTEwODUsMTIgKzEw
ODUsMTUgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9wcml2YXRlX25hbWUp
CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgQVNTRVJUKHByb3BlcnR5LmlzUHJp
dmF0ZU5hbWUoKSk7CiAKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNv
ZGVCbG9jayk7CisgICAgaWYgKG1ldGFkYXRhLm1fc2VlbklkZW50aWZpZXJzLmNvdW50KCkgPD0g
T3B0aW9uczo6Z2V0QnlWYWxJQ01heE51bWJlck9mSWRlbnRpZmllcnMoKSkKKyAgICAgICAgbWV0
YWRhdGEubV9zZWVuSWRlbnRpZmllcnMub2JzZXJ2ZShwcm9wZXJ0eS5pbXBsKCkpOworCiAgICAg
UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6Vk1JbnF1aXJ5KTsKICAgICBhc09iamVjdChiYXNlVmFsdWUpLT5nZXRQcml2YXRlRmll
bGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7CiAKICAgICBpZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVyAmJiBzbG90LmlzQ2Fj
aGVhYmxlKCkgJiYgIXNsb3QuaXNVbnNldCgpKSB7Ci0gICAgICAgIGF1dG8mIG1ldGFkYXRhID0g
Ynl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICAgICAgewogICAgICAgICAgICAgU3Ry
dWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX3N0cnVjdHVyZUlEOwogICAgICAg
ICAgICAgaWYgKG9sZFN0cnVjdHVyZUlEKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404383</attachid>
            <date>2020-07-15 13:22:40 -0700</date>
            <delta_ts>2020-07-15 13:42:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213545-20200715162240.patch</filename>
            <type>text/plain</type>
            <size>23892</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MTA0YTk4YjVkZTkwYWY3NmIwODNlODc5NmNkZTk2YTE2OGY3ODZlLi5hN2Q4Y2Y2M2RiYjQzYjc2
ZDYxMzVmYzBjMzZlNmI1ZGYyZWUyODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAyMC0wNy0xNSAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIGFkZCBJQyBzdXBwb3J0IGZvciBvcF9nZXRfcHJpdmF0ZV9uYW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM1NDUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgYmFz
ZWxpbmUgSklUIG5vdyBzdXBwb3J0cyBhIGZhc3QgcGF0aCBmb3Igb3BfcHJpdmF0ZV9uYW1lLAor
ICAgICAgICB1c2luZyBhIHZhcmlhbnQgb2YgR2V0QnlWYWwgSUMuCisKKyAgICAgICAgVGhlIGdl
bmVyYXRlZCBBY2Nlc3NDYXNlIGhhcyB0aGUgZm9sbG93aW5nIHF1YWxpdGllczoKKyAgICAgICAg
ICAtIEFsd2F5cyAiZGlyZWN0IiwgcmVseWluZyBvbmx5IG9uIHRoZSBjdXJyZW50IHN0cnVjdHVy
ZSBmb3IgY2FjaGViaWxpdHkKKyAgICAgICAgICAtIE5ldmVyIGltcHVyZSAoRE9NIHByb3BlcnRp
ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgdGhpcyB0aW1lLCBQcm94eU9iamVjdHMgYXJlIHRyZWF0
ZWQgYXMgSlNPYmplY3RzKQorCisgICAgICAgIEJhc2VkIG9uIHRoZSBtaWNyb2JlbmNobWFyayBy
ZXZpZXdlZCBvbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNTQ0
LCB0aGlzIHNlZXMKKyAgICAgICAgYW4gaW1wcm92ZW1lbnQgb2Ygcm91Z2hseSA1MCUgb24gYXZl
cmFnZS4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KToK
KyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGppdC9J
Q1N0YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3By
aXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVf
bmFtZSk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgICogaml0L1JlcGF0Y2gu
Y3BwOgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKToK
KyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVHZXRCeUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6
dHJ5Q2FjaGVHZXRCeSk6CisgICAgICAgICogaml0L1JlcGF0Y2guaDoKKwogMjAyMC0wNy0xNSAg
TWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGhhbmRsaW5nIG9m
IG91dCBvZiBtZW1vcnkgaGFuZGxpbmcgd2hpbGUgYWRkaW5nIGEgd29ya2xldCBtb2R1bGUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDM3MDdk
NGEwNjI0NDdmYzYwZjEzYTQ3YjM2ZTRhNDdjOWY2ODZhZDUuLmJlNWM3MmNkMWU0ZDFmNmQ1ZGE3
YWI3YjBlNmM1YTQ2NTE4MWJlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCkBAIC01MDksNiArNTA5LDcgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxp
bmsKICAgICAgICAgTElOSyhPcFRhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cywgcHJvZmlsZSkKICAg
ICAgICAgTElOSyhPcENvbnN0cnVjdFZhcmFyZ3MsIHByb2ZpbGUpCiAgICAgICAgIExJTksoT3BH
ZXRCeVZhbCwgcHJvZmlsZSkKKyAgICAgICAgTElOSyhPcEdldFByaXZhdGVOYW1lLCBwcm9maWxl
KQogCiAgICAgICAgIExJTksoT3BHZXREaXJlY3RQbmFtZSwgcHJvZmlsZSkKICAgICAgICAgTElO
SyhPcEdldEJ5SWRXaXRoVGhpcywgcHJvZmlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IGRkN2NmNDVjZTViNTQ0
ZGRiMjdmM2MxMzdjNzg2OTc4MWMwZWJiMTQuLjAzYzZlNjFmN2QyNTEwMTM4NjgwODgyNzZiNDQx
ZDM4OWQ0YjhiNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtMjY1LDYgKzI2NSw5IEBAIHZvaWQgU3RydWN0dXJl
U3R1YkluZm86OnJlc2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmIGxvY2tlciwgQ29k
ZUJsb2NrKiBjCiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRCeVZhbDoKICAgICAgICAgcmVzZXRH
ZXRCeShjb2RlQmxvY2ssICp0aGlzLCBHZXRCeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZToKKyAgICAgICAgcmVz
ZXRHZXRCeShjb2RlQmxvY2ssICp0aGlzLCBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lKTsKKyAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpQdXQ6CiAgICAgICAgIHJlc2V0UHV0QnlJ
RChjb2RlQmxvY2ssICp0aGlzKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCmluZGV4IGM2M2FlOWJjMDRh
MDUzNmZiZTBkM2YwMGUwY2IzNTczM2RhYjI0MmQuLjE4ZGI2NDFkZWIyYWJjNDI2ZTc3Yjg3MDZl
Y2I5ZDQ4NTA1YzlhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC01Nyw3ICs1Nyw4IEBAIGVudW0gY2xhc3MgQWNjZXNz
VHlwZSA6IGludDhfdCB7CiAgICAgSW4sCiAgICAgSW5zdGFuY2VPZiwKICAgICBEZWxldGVCeUlE
LAotICAgIERlbGV0ZUJ5VmFsCisgICAgRGVsZXRlQnlWYWwsCisgICAgR2V0UHJpdmF0ZU5hbWUs
CiB9OwogCiBlbnVtIGNsYXNzIENhY2hlVHlwZSA6IGludDhfdCB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSUNTdGF0cy5oCmluZGV4IDk2YzE5YTE3YmRjMmE3ZDEwZjE1ZjliY2EzOTAyMTYyMWM5OWRi
ODIuLjEzNzhlNjNjYzI3M2Y2YWM3YzEzNzEyZWJiYTBmZWFmM2YyMDQ0OTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSUNTdGF0cy5oCkBAIC03NCw3ICs3NCw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIG1hY3JvKFB1dEJ5SWRTZWxmUGF0Y2gpIFwKICAgICBtYWNybyhJbkJ5SWRTZWxmUGF0Y2gp
IFwKICAgICBtYWNybyhEZWxCeVJlcGxhY2VXaXRoSnVtcCkgXAotICAgIG1hY3JvKERlbEJ5UmVw
bGFjZVdpdGhHZW5lcmljKQorICAgIG1hY3JvKERlbEJ5UmVwbGFjZVdpdGhHZW5lcmljKSBcCisg
ICAgbWFjcm8oT3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSkKIAogY2xhc3MgSUNFdmVu
dCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggMTk0OTZhOTliMTc1
YjU5ZTAxMGM0NGVjNDc5YWZlOWQyYzg4MjU0MC4uMDNkNjM2NDMzZWY1NTc1ZTU2YjE1NmI1YWFi
Zjg2ZjYyNzQzMmRkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjkyLDcgKzI5
Miw2IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5F
X1NMT1dfT1AocHVzaF93aXRoX3Njb3BlKQogICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVf
bGV4aWNhbF9lbnZpcm9ubWVudCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoZ2V0X2J5X3ZhbF93
aXRoX3RoaXMpCi0gICAgICAgIERFRklORV9TTE9XX09QKGdldF9wcml2YXRlX25hbWUpCiAgICAg
ICAgIERFRklORV9TTE9XX09QKHB1dF9ieV9pZF93aXRoX3RoaXMpCiAgICAgICAgIERFRklORV9T
TE9XX09QKHB1dF9ieV92YWxfd2l0aF90aGlzKQogICAgICAgICBERUZJTkVfU0xPV19PUChyZXNv
bHZlX3Njb3BlX2Zvcl9ob2lzdGluZ19mdW5jX2RlY2xfaW5fZXZhbCkKQEAgLTM1Nyw2ICszNTYs
NyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9P
UChvcF9nZXRfYnlfaWRfd2l0aF90aGlzKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lk
X2RpcmVjdCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV92YWwpCisgICAgICAgIERFRklO
RV9PUChvcF9nZXRfcHJpdmF0ZV9uYW1lKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3Byb3Rv
dHlwZV9vZikKICAgICAgICAgREVGSU5FX09QKG9wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UpCiAg
ICAgICAgIERFRklORV9PUChvcF9pbnN0YW5jZW9mKQpAQCAtNTYxLDYgKzU2MSw3IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9nZXRfYnlfaWRfd2l0aF90aGlzKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
Z2V0X2J5X2lkX2RpcmVjdCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9ieV92
YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfcHJpdmF0ZV9uYW1lKQogICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaW5zdGFuY2VvZikKICAgICAgICAgREVGSU5FX1NM
T1dDQVNFX09QKG9wX2luc3RhbmNlb2ZfY3VzdG9tKQogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
T1Aob3Bfamxlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA2NjZlMGVkNGM4YTA5MzQ0
ZjRiNGZmNDI1NzBlNjdkNjk1Y2IxNzQ5Li43YzM3NWI2NjVlNzVmZGJlMjMyNTY1MjEzM2QzYzg1
NmQzYzhjOTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTUyNyw2ICs1MjcsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9pZF9kaXJl
Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9wcml2YXRlX25h
bWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9hcmd1bWVu
dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9w
cm90b3R5cGVfb2YoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2lu
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7CkBAIC02NTcsNiArNjU4LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25z
dCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93
X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYXJndW1lbnRfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVt
aXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2luc3RhbmNlb2YoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBiYzNjY2M4MDIz
NWQ3MzljZDFhZjUyNjljMWU2YWIxNWZlZDc0ODk1Li42N2YzNWM2MWQ1YmNmZGEwNjUyZWFlYmEw
ZDYyOTk3MmJhYzZjYzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKQEAgLTIxOTMsNiArMjE5Myw3OCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwog
fQogCiAKK0FMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0UHJpdmF0ZU5hbWUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgYmFz
ZVZhbHVlLCBKU1ZhbHVlIGZpZWxkTmFtZVZhbHVlKQoreworICAgIFVOVVNFRF9QQVJBTShjYWxs
RnJhbWUpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBiYXNlVmFsdWUucmVxdWlyZU9iamVj
dENvZXJjaWJsZShnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IEpTVmFsdWUoKSk7CisgICAgYXV0byBmaWVsZE5hbWUgPSBmaWVsZE5hbWVWYWx1ZS50b1Byb3Bl
cnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNW
YWx1ZSgpKTsKKworICAgIEpTT2JqZWN0KiBiYXNlID0gYmFzZVZhbHVlLnRvT2JqZWN0KGdsb2Jh
bE9iamVjdCk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSwgUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgYmFzZS0+Z2V0UHJpdmF0ZUZpZWxkKGds
b2JhbE9iamVjdCwgZmllbGROYW1lLCBzbG90KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBKU1ZhbHVlKCkpOworCisgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0
LCBmaWVsZE5hbWUpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEZpZWxkTmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7Cisg
ICAgSlNWYWx1ZSBmaWVsZE5hbWVWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkRmllbGRO
YW1lKTsKKyAgICBBU1NFUlQoQ2FjaGVhYmxlSWRlbnRpZmllcjo6aXNDYWNoZWFibGVJZGVudGlm
aWVyQ2VsbChmaWVsZE5hbWVWYWx1ZSkpOworCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBj
YWxsRnJhbWUtPmNvZGVCbG9jaygpOworCisgICAgLy8gT25seSBjb25zaWRlciBjYWNoaW5nIGlm
IHRoZSBiYXNlIHZhbHVlIGRvZXNuJ3QgbmVlZCB0byBiZSBjb252ZXJ0ZWQgdG8gYSBKU09iamVj
dAorICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICBjb25zdCBJZGVudGlm
aWVyIGZpZWxkTmFtZSA9IGZpZWxkTmFtZVZhbHVlLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0
KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CisgICAgICAgIEFTU0VSVChmaWVsZE5hbWUuaXNTeW1ib2woKSk7CisKKyAgICAgICAgSlNPYmpl
Y3QqIGJhc2UgPSBiYXNlVmFsdWUuYXNDZWxsKCktPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisg
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2UsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpWTUlucXVpcnkpOworICAgICAgICBiYXNlLT5nZXRQcml2YXRlRmllbGQoZ2xvYmFs
T2JqZWN0LCBmaWVsZE5hbWUsIHNsb3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgICAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJh
dGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwodm0p
LCBmaWVsZE5hbWUsIHRydWUpKTsKKworICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2VsbChmaWVsZE5hbWVWYWx1
ZS5hc0NlbGwoKSk7CisgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0s
IGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpLCBpZGVudGlmaWVyKSkKKyAg
ICAgICAgICAgIHJlcGF0Y2hHZXRCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVl
LCBpZGVudGlmaWVyLCBzbG90LCAqc3R1YkluZm8sIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWUpOwor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0
LCBmaWVsZE5hbWUpKTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShnZXRQcml2YXRlTmFtZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFz
ZVZhbHVlLCBmaWVsZE5hbWVWYWx1ZSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkRmllbGROYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNl
KTsKKyAgICBKU1ZhbHVlIGZpZWxkTmFtZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRG
aWVsZE5hbWUpOworCisgICAgaWYgKHN0dWJJbmZvKQorICAgICAgICBzdHViSW5mby0+dG9va1Ns
b3dQYXRoID0gdHJ1ZTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGdldFByaXZhdGVOYW1lKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUs
IGZpZWxkTmFtZVZhbHVlKSkpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRT
dWJzY3JpcHQsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5k
ZXggNGMyMjA1MzBhYjRkZTViMjZkN2Q5YWQzZDNiODJlM2I0ZGI5N2Q5YS4uMzhjZDlmZDljMTRj
ZmQ3MzhkZDU1MDVlYzQ2YTI3MzYzNjkwYzljYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgKQEAgLTI3Myw2ICsyNzMsOSBAQCBpbnQzMl90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbAogQ2FsbEZyYW1lKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldHVwRm9yd2FyZEFyZ3Vt
ZW50c0ZyYW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRW5jb2RlZEpTVmFsdWUsIGlu
dDMyX3QsIGludDMyX3QgbGVuZ3RoKSBXVEZfSU5URVJOQUw7CiBDYWxsRnJhbWUqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqLCBFbmNvZGVkSlNWYWx1ZSBhcmd1bWVudHMsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQs
IGludDMyX3QgbGVuZ3RoKSBXVEZfSU5URVJOQUw7CiAKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkRmllbGROYW1lKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkRmllbGROYW1lKSBXVEZfSU5URVJOQUw7CisKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uU3dpdGNoQ2hhcldpdGhVbmtub3duS2V5VHlwZShKU0dsb2JhbE9iamVjdCosIEVuY29k
ZWRKU1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5kZXgpIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uU3dpdGNoSW1tV2l0aFVua25vd25LZXlUeXBlKFZNKiwgRW5j
b2RlZEpTVmFsdWUga2V5LCBzaXplX3QgdGFibGVJbmRleCkgV1RGX0lOVEVSTkFMOwogY2hhciog
SklUX09QRVJBVElPTiBvcGVyYXRpb25Td2l0Y2hTdHJpbmdXaXRoVW5rbm93bktleVR5cGUoSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBrZXksIHNpemVfdCB0YWJsZUluZGV4KSBXVEZf
SU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCmluZGV4IDdlMDk0NDIwOTIyNTZjOGVhZjU3OGRhN2I0ZTE5NTI0YzAxZWQ5Y2IuLjMy
ZWQxMTY1Y2ZjZTNiY2M1NzhhNWJmMWQ0MzJlODc1ZTk3NGM4N2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC05Niw2ICs5Niw0OSBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIH0KIH0KIAordm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
eworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0UHJpdmF0
ZU5hbWU+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVC
bG9jayk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworICAgIFZp
cnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3Rl
ciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisgICAgR1BSUmVnIGJhc2VHUFIgPSBy
ZWdUMDsKKyAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKKyAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJhc2UsIGJhc2VHUFIpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJv
cGVydHksIHByb3BlcnR5R1BSKTsKKworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChy
ZWdUMCwgYmFzZSk7CisKKyAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1f
Y29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAor
ICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBK
U1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGdlbi5zdHViSW5mbygpLT5hY2Nlc3NUeXBlID0gQWNj
ZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWU7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMp
OworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgbV9nZXRCeVZhbHMu
YXBwZW5kKGdlbik7CisKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFk
YXRhKG1fY29kZUJsb2NrKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOworfQor
Cit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQoreworICAgIEFTU0VSVChoYXNBbnlTbG93Q2FzZXMoaXRlcikpOworICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0UHJpdmF0ZU5hbWU+KCk7CisgICAg
VmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworICAgIEdQUlJlZyBiYXNlR1BS
ID0gcmVnVDA7CisgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcmVnVDE7CisKKyAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOworCisgICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0
QnlWYWxzW21fZ2V0QnlWYWxJbmRleF07CisgICAgKyttX2dldEJ5VmFsSW5kZXg7CisgICAgTGFi
ZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlv
bldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0
UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKK30KKwogdm9pZCBK
SVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBlbWl0X29wX3B1dF9ieV92YWw8T3BQdXRCeVZhbERpcmVjdD4o
Y3VycmVudEluc3RydWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IGMwNDdkMmIxMzllNmEyYjVhYWQ1MmYz
NGVmNzU4ZGY5NDMwYWFlYjUuLmFlMTk4YWYxYjljODAyYmJlNzg2YTFkZDcwOTBiNzUzNWM5ODM4
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2VzczMyXzY0LmNwcApAQCAtMjg3LDYgKzI4Nyw1MiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
Z2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
UwogICAgIH0KIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0UHJpdmF0ZU5hbWU+KCk7CisgICAgYXV0byYgbWV0
YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CisgICAgVmlydHVhbFJlZ2lz
dGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0
ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1f
cHJvcGVydHk7CisgICAgYXV0byBiYXNlR1BSID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJl
Z1QwKTsKKyAgICBhdXRvIHByb3BlcnR5R1BSID0gSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKTsK
KworICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVn
VDIpOworCisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsKKwor
ICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIGJhc2VHUFIs
IHByb3BlcnR5R1BSLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsKKyAgICBnZW4uc3R1Yklu
Zm8oKS0+YWNjZXNzVHlwZSA9IEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lOworICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1w
KCkpOworICAgIG1fZ2V0QnlWYWxzLmFwcGVuZChnZW4pOworCisgICAgZW1pdFZhbHVlUHJvZmls
aW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jaykpOworICAgIGVtaXRTdG9yZShk
c3QsIHJlZ1QxLCByZWdUMCk7Cit9CisKKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBBU1NFUlQoaGFzQW55U2xvd0Nh
c2VzKGl0ZXIpKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEdldFByaXZhdGVOYW1lPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5t
X2RzdDsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICBKSVRHZXRCeVZhbEdl
bmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4XTsKKyAgICArK21fZ2V0
QnlWYWxJbmRleDsKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKworICAgIGF1
dG8gYmFzZUdQUiA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CisgICAgYXV0byBwcm9wZXJ0
eUdQUiA9IEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMik7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9w
ZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0
aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7
CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKK30KKwor
CiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRfb3BfcHV0X2J5X3ZhbDxPcFB1dEJ5VmFs
RGlyZWN0PihjdXJyZW50SW5zdHJ1Y3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRj
aC5jcHAKaW5kZXggZGMwMDhhNGJmZjRiNzEyNWEzMTk1N2UyOGJmYTRiMjBlNDk0YTMyMi4uZTFk
MTg5NzBiODk5ZTNjMTZlZTlkN2QwMzdlMTFiNTMwMmQzMjU0MSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwCkBAIC0xNjIsNiArMTYyLDggQEAgaW5saW5lIEZ1bmN0aW9uUHRy
PENGdW5jdGlvblB0clRhZz4gYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihHZXRC
eUtpbmQKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZTsKICAg
ICBjYXNlIEdldEJ5S2luZDo6Tm9ybWFsQnlWYWw6CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25H
ZXRCeVZhbE9wdGltaXplOworICAgIGNhc2UgR2V0QnlLaW5kOjpQcml2YXRlTmFtZToKKyAgICAg
ICAgcmV0dXJuIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemU7CiAgICAgfQogICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC0xNzksNiArMTgxLDggQEAgaW5saW5l
IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gYXBwcm9wcmlhdGVHZXRCeUZ1bmN0aW9uKEdl
dEJ5S2luZCBraW5kKQogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0QnlJZERpcmVjdDsKICAg
ICBjYXNlIEdldEJ5S2luZDo6Tm9ybWFsQnlWYWw6CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25H
ZXRCeVZhbEdlbmVyaWM7CisgICAgY2FzZSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lOgorICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWU7CiAgICAgfQogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC0xOTgsNiArMjAyLDcgQEAgc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29k
ZUJsb2NrKgogICAgICAgICBpZiAoIWJhc2VWYWx1ZS5pc0NlbGwoKSkKICAgICAgICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVl
LmFzQ2VsbCgpOworICAgICAgICBjb25zdCBib29sIGlzUHJpdmF0ZSA9IGtpbmQgPT0gR2V0QnlL
aW5kOjpQcml2YXRlTmFtZTsKIAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4g
bmV3Q2FzZTsKIApAQCAtMjUzLDYgKzI1OCw4IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0
cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoKIAog
ICAgICAgICAgICAgYm9vbCBsb2FkVGFyZ2V0RnJvbVByb3h5ID0gZmFsc2U7CiAgICAgICAgICAg
ICBpZiAoYmFzZUNlbGwtPnR5cGUoKSA9PSBQdXJlRm9yd2FyZGluZ1Byb3h5VHlwZSkgeworICAg
ICAgICAgICAgICAgIGlmIChpc1ByaXZhdGUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBH
aXZlVXBPbkNhY2hlOwogICAgICAgICAgICAgICAgIGJhc2VWYWx1ZSA9IGpzQ2FzdDxKU1Byb3h5
Kj4oYmFzZUNlbGwpLT50YXJnZXQoKTsKICAgICAgICAgICAgICAgICBiYXNlQ2VsbCA9IGJhc2VW
YWx1ZS5hc0NlbGwoKTsKICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3Ry
dWN0dXJlKHZtKTsKQEAgLTMwOCw5ICszMTUsOSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAg
ICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNVbnNldCgpICYmIHN0cnVjdHVyZS0+dHlwZUluZm8o
KS5nZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSgpKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKIAotICAgICAgICAgICAgICAgIC8v
IElmIGEga2luZCBpcyBHZXRCeUtpbmQ6OkRpcmVjdCwgd2UgZG8gbm90IG5lZWQgdG8gaW52ZXN0
aWdhdGUgcHJvdG90eXBlIGNoYWlucyBmdXJ0aGVyLgorICAgICAgICAgICAgICAgIC8vIElmIGEg
a2luZCBpcyBHZXRCeUtpbmQ6OkRpcmVjdCBvciBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lLCB3ZSBk
byBub3QgbmVlZCB0byBpbnZlc3RpZ2F0ZSBwcm90b3R5cGUgY2hhaW5zIGZ1cnRoZXIuCiAgICAg
ICAgICAgICAgICAgLy8gQ2FjaGVhYmlsaXR5IGp1c3QgZGVwZW5kcyBvbiB0aGUgaGVhZCBzdHJ1
Y3R1cmUuCi0gICAgICAgICAgICAgICAgaWYgKGtpbmQgIT0gR2V0QnlLaW5kOjpEaXJlY3QpIHsK
KyAgICAgICAgICAgICAgICBpZiAoa2luZCAhPSBHZXRCeUtpbmQ6OkRpcmVjdCAmJiAhaXNQcml2
YXRlKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gY2FjaGVTdGF0dXMgPSBwcmVwYXJlQ2hh
aW5Gb3JDYWNoaW5nKGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIHNsb3QpOwogICAgICAgICAgICAg
ICAgICAgICBpZiAoIWNhY2hlU3RhdHVzKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEdpdmVVcE9uQ2FjaGU7CkBAIC0zNzQsNyArMzgxLDE0IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9j
ayoKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWxvYWRUYXJnZXRGcm9tUHJveHkgJiYgZ2V0dGVy
ICYmIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNhbkVtaXRJbnRyaW5zaWNHZXR0ZXIoZ2V0
dGVyLCBzdHJ1Y3R1cmUpKQogICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBJbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgcHJvcGVydHlOYW1lLCBzbG90LmNh
Y2hlZE9mZnNldCgpLCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgZ2V0dGVyLCBXVEZNb3ZlKHBy
b3RvdHlwZUFjY2Vzc0NoYWluKSk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBpZiAoc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkgfHwgc2xvdC5pc1Vuc2V0KCkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoaXNQcml2YXRlKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCgh
c2xvdC5pc1Vuc2V0KCkpOworICAgICAgICAgICAgICAgICAgICBjb25zdGV4cHIgYm9vbCBjYW5u
b3RCZVByb3h5ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGlmICghc2xvdC5pc0NhY2hl
YWJsZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7Cisg
ICAgICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBQcm94eWFibGVBY2Nlc3NDYXNlOjpjcmVhdGUo
dm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6TG9hZCwgcHJvcGVydHlOYW1lLCBvZmZzZXQsIHN0
cnVjdHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvblNldCwgbG9hZFRhcmdl
dEZyb21Qcm94eSwgc2xvdC53YXRjaHBvaW50U2V0KCksIFdURk1vdmUocHJvdG90eXBlQWNjZXNz
Q2hhaW4pKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1
ZSgpIHx8IHNsb3QuaXNVbnNldCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBQ
cm94eWFibGVBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgc2xvdC5pc1Vuc2V0KCkg
PyBBY2Nlc3NDYXNlOjpNaXNzIDogQWNjZXNzQ2FzZTo6TG9hZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgIHByb3BlcnR5TmFtZSwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgbG9h
ZFRhcmdldEZyb21Qcm94eSwgc2xvdC53YXRjaHBvaW50U2V0KCksIFdURk1vdmUocHJvdG90eXBl
QWNjZXNzQ2hhaW4pKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guaAppbmRleCBkODkwZmQ3MGFhY2Q4MmZmYmY0ZGE4ZmIyNGUxZjNkZmY1NzQ5
ZGMwLi4wODNhM2Q1ZDY4NGNhYmRmYjE0Y2NhZWI3NDVmZWM3NjNkZmJjYTIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlcGF0Y2guaApAQCAtMzgsNyArMzgsOCBAQCBlbnVtIGNsYXNzIEdldEJ5
S2luZCB7CiAgICAgTm9ybWFsQnlWYWwsCiAgICAgVHJ5LAogICAgIFdpdGhUaGlzLAotICAgIERp
cmVjdAorICAgIERpcmVjdCwKKyAgICBQcml2YXRlTmFtZSwKIH07CiAKIGVudW0gY2xhc3MgRGVs
QnlLaW5kIHsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggYTAzOGI2MmY3Y2IwOWM1YWI5M2NkODNiNmVhY2ViMzA4YjdlNGVmNC4uODBjOGMz
YjM0YTAxMGRjNGExNzVhMjc4NDJmNDQ3ZDJhNWEwMzcwYiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0w
Ny0xNSAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0Nd
IGFkZCBJQyBzdXBwb3J0IGZvciBvcF9nZXRfcHJpdmF0ZV9uYW1lCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM1NDUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBjcmFzaHRlc3QgZm9yIGEgY3Jh
c2ggaW4gYW4gZWFybGllciBlZGl0aW9uIG9mIHRoZSBHUE4gSUMgcGF0Y2guCisKKyAgICAgICAg
KiBzdHJlc3MvZ2V0LXByaXZhdGUtbmFtZS1jYWNoZS1mYWlsdXJlLmpzOiBBZGRlZC4KKwogMjAy
MC0wNy0xNSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CiAKICAgICAg
ICAgRW1pdCBIYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uQ2FsbERvdE5vZGUgZm9yICJSZWZsZWN0IiBp
ZGVudGlmaWVycwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtbmFtZS1j
YWNoZS1mYWlsdXJlLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtbmFtZS1jYWNoZS1m
YWlsdXJlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmZDMzYzE3NmIxZWQ0NDdmMTE0YWEwZGFkOWY4OThiZDc4
ZGEwZjcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZXQtcHJpdmF0ZS1uYW1l
LWNhY2hlLWZhaWx1cmUuanMKQEAgLTAsMCArMSw0MiBAQAorLy9AcmVxdWlyZU9wdGlvbnMoIi0t
dXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiLCAiLS11c2VMTEludD1mYWxzZSIsICItLWZvcmNl
SUNGYWlsdXJlPXRydWUiKQorLy8gUmVncmVzc2lvbiB0ZXN0OiBFbnN1cmUgdGhhdCB3ZSBkb24n
dCBjcmFzaCB3aGVuIG9wX2dldF9wcml2YXRlX2ZpZWxkIGNhY2hpbmcgcmVzdWx0cyBpbgorLy8g
Z2l2aW5nIHVwIG9uIGNhY2hpbmcuYAorCitmdW5jdGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSkg
eworICBpZiAoIWV4cHIpCisgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gRmFpbGVkOiAk
e21lc3NhZ2V9YCk7Cit9CitPYmplY3QuYXNzaWduKGFzc2VydCwgeworICBlcXVhbHMoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIGFzc2VydChhY3R1YWwgPT09IGV4cGVjdGVkLCBgZXhwZWN0ZWQg
JHtleHBlY3RlZH0gYnV0IGZvdW5kICR7YWN0dWFsfWApOworICB9LAorICB0aHJvd3MoZm4sIGVy
cm9yVHlwZSkgeworICAgIHRyeSB7CisgICAgICBmbigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgIGlmICh0eXBlb2YgZXJyb3JUeXBlID09PSAiZnVuY3Rpb24iKQorICAgICAgICBhc3NlcnQo
ZSBpbnN0YW5jZW9mIGVycm9yVHlwZSwgYGV4cGVjdGVkIHRvIHRocm93ICR7ZXJyb3JUeXBlLm5h
bWV9IGJ1dCB0aHJldyAke2V9YCk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGFzc2VydChm
YWxzZSwgYGV4cGVjdGVkIHRvIHRocm93LCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24uYCk7
CisgIH0KK30pOworCitjbGFzcyBDIHsKKyAgI3ggPSA1OworICBnZXQobykgeyByZXR1cm4gby4j
eDsgfQorfQorbGV0IGdldCA9IEMucHJvdG90eXBlLmdldDsKK2Z1bmN0aW9uIHRlc3RBY2Nlc3Mo
KSB7CisgIGFzc2VydC5lcXVhbHMoZ2V0KG5ldyBDKSwgNSk7Cit9Citub0lubGluZSh0ZXN0QWNj
ZXNzKTsKK2Z1bmN0aW9uIHRlc3RUaHJvd3MoKSB7CisgIGFzc2VydC50aHJvd3MoKCkgPT4gZ2V0
KGdsb2JhbFRoaXMpLCBUeXBlRXJyb3IpOworfQorbm9JbmxpbmUodGVzdFRocm93cyk7CisKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMjA7ICsraSkgeworICB0ZXN0QWNjZXNzKCk7CisgIHRlc3RUaHJv
d3MoKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404389</attachid>
            <date>2020-07-15 13:42:57 -0700</date>
            <delta_ts>2020-07-17 13:38:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213545-20200715164257.patch</filename>
            <type>text/plain</type>
            <size>23747</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MTA0YTk4YjVkZTkwYWY3NmIwODNlODc5NmNkZTk2YTE2OGY3ODZlLi5hN2Q4Y2Y2M2RiYjQzYjc2
ZDYxMzVmYzBjMzZlNmI1ZGYyZWUyODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAyMC0wNy0xNSAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIGFkZCBJQyBzdXBwb3J0IGZvciBvcF9nZXRfcHJpdmF0ZV9uYW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM1NDUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgYmFz
ZWxpbmUgSklUIG5vdyBzdXBwb3J0cyBhIGZhc3QgcGF0aCBmb3Igb3BfcHJpdmF0ZV9uYW1lLAor
ICAgICAgICB1c2luZyBhIHZhcmlhbnQgb2YgR2V0QnlWYWwgSUMuCisKKyAgICAgICAgVGhlIGdl
bmVyYXRlZCBBY2Nlc3NDYXNlIGhhcyB0aGUgZm9sbG93aW5nIHF1YWxpdGllczoKKyAgICAgICAg
ICAtIEFsd2F5cyAiZGlyZWN0IiwgcmVseWluZyBvbmx5IG9uIHRoZSBjdXJyZW50IHN0cnVjdHVy
ZSBmb3IgY2FjaGViaWxpdHkKKyAgICAgICAgICAtIE5ldmVyIGltcHVyZSAoRE9NIHByb3BlcnRp
ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgdGhpcyB0aW1lLCBQcm94eU9iamVjdHMgYXJlIHRyZWF0
ZWQgYXMgSlNPYmplY3RzKQorCisgICAgICAgIEJhc2VkIG9uIHRoZSBtaWNyb2JlbmNobWFyayBy
ZXZpZXdlZCBvbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNTQ0
LCB0aGlzIHNlZXMKKyAgICAgICAgYW4gaW1wcm92ZW1lbnQgb2Ygcm91Z2hseSA1MCUgb24gYXZl
cmFnZS4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KToK
KyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGppdC9J
Q1N0YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3By
aXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVf
bmFtZSk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgICogaml0L1JlcGF0Y2gu
Y3BwOgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKToK
KyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVHZXRCeUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6
dHJ5Q2FjaGVHZXRCeSk6CisgICAgICAgICogaml0L1JlcGF0Y2guaDoKKwogMjAyMC0wNy0xNSAg
TWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGhhbmRsaW5nIG9m
IG91dCBvZiBtZW1vcnkgaGFuZGxpbmcgd2hpbGUgYWRkaW5nIGEgd29ya2xldCBtb2R1bGUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDM3MDdk
NGEwNjI0NDdmYzYwZjEzYTQ3YjM2ZTRhNDdjOWY2ODZhZDUuLmJlNWM3MmNkMWU0ZDFmNmQ1ZGE3
YWI3YjBlNmM1YTQ2NTE4MWJlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCkBAIC01MDksNiArNTA5LDcgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxp
bmsKICAgICAgICAgTElOSyhPcFRhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cywgcHJvZmlsZSkKICAg
ICAgICAgTElOSyhPcENvbnN0cnVjdFZhcmFyZ3MsIHByb2ZpbGUpCiAgICAgICAgIExJTksoT3BH
ZXRCeVZhbCwgcHJvZmlsZSkKKyAgICAgICAgTElOSyhPcEdldFByaXZhdGVOYW1lLCBwcm9maWxl
KQogCiAgICAgICAgIExJTksoT3BHZXREaXJlY3RQbmFtZSwgcHJvZmlsZSkKICAgICAgICAgTElO
SyhPcEdldEJ5SWRXaXRoVGhpcywgcHJvZmlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IGRkN2NmNDVjZTViNTQ0
ZGRiMjdmM2MxMzdjNzg2OTc4MWMwZWJiMTQuLjAzYzZlNjFmN2QyNTEwMTM4NjgwODgyNzZiNDQx
ZDM4OWQ0YjhiNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtMjY1LDYgKzI2NSw5IEBAIHZvaWQgU3RydWN0dXJl
U3R1YkluZm86OnJlc2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmIGxvY2tlciwgQ29k
ZUJsb2NrKiBjCiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRCeVZhbDoKICAgICAgICAgcmVzZXRH
ZXRCeShjb2RlQmxvY2ssICp0aGlzLCBHZXRCeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZToKKyAgICAgICAgcmVz
ZXRHZXRCeShjb2RlQmxvY2ssICp0aGlzLCBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lKTsKKyAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpQdXQ6CiAgICAgICAgIHJlc2V0UHV0QnlJ
RChjb2RlQmxvY2ssICp0aGlzKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCmluZGV4IGM2M2FlOWJjMDRh
MDUzNmZiZTBkM2YwMGUwY2IzNTczM2RhYjI0MmQuLjE4ZGI2NDFkZWIyYWJjNDI2ZTc3Yjg3MDZl
Y2I5ZDQ4NTA1YzlhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC01Nyw3ICs1Nyw4IEBAIGVudW0gY2xhc3MgQWNjZXNz
VHlwZSA6IGludDhfdCB7CiAgICAgSW4sCiAgICAgSW5zdGFuY2VPZiwKICAgICBEZWxldGVCeUlE
LAotICAgIERlbGV0ZUJ5VmFsCisgICAgRGVsZXRlQnlWYWwsCisgICAgR2V0UHJpdmF0ZU5hbWUs
CiB9OwogCiBlbnVtIGNsYXNzIENhY2hlVHlwZSA6IGludDhfdCB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSUNTdGF0cy5oCmluZGV4IDk2YzE5YTE3YmRjMmE3ZDEwZjE1ZjliY2EzOTAyMTYyMWM5OWRi
ODIuLjEzNzhlNjNjYzI3M2Y2YWM3YzEzNzEyZWJiYTBmZWFmM2YyMDQ0OTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSUNTdGF0cy5oCkBAIC03NCw3ICs3NCw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIG1hY3JvKFB1dEJ5SWRTZWxmUGF0Y2gpIFwKICAgICBtYWNybyhJbkJ5SWRTZWxmUGF0Y2gp
IFwKICAgICBtYWNybyhEZWxCeVJlcGxhY2VXaXRoSnVtcCkgXAotICAgIG1hY3JvKERlbEJ5UmVw
bGFjZVdpdGhHZW5lcmljKQorICAgIG1hY3JvKERlbEJ5UmVwbGFjZVdpdGhHZW5lcmljKSBcCisg
ICAgbWFjcm8oT3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSkKIAogY2xhc3MgSUNFdmVu
dCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggMTk0OTZhOTliMTc1
YjU5ZTAxMGM0NGVjNDc5YWZlOWQyYzg4MjU0MC4uMDNkNjM2NDMzZWY1NTc1ZTU2YjE1NmI1YWFi
Zjg2ZjYyNzQzMmRkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjkyLDcgKzI5
Miw2IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5F
X1NMT1dfT1AocHVzaF93aXRoX3Njb3BlKQogICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVf
bGV4aWNhbF9lbnZpcm9ubWVudCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoZ2V0X2J5X3ZhbF93
aXRoX3RoaXMpCi0gICAgICAgIERFRklORV9TTE9XX09QKGdldF9wcml2YXRlX25hbWUpCiAgICAg
ICAgIERFRklORV9TTE9XX09QKHB1dF9ieV9pZF93aXRoX3RoaXMpCiAgICAgICAgIERFRklORV9T
TE9XX09QKHB1dF9ieV92YWxfd2l0aF90aGlzKQogICAgICAgICBERUZJTkVfU0xPV19PUChyZXNv
bHZlX3Njb3BlX2Zvcl9ob2lzdGluZ19mdW5jX2RlY2xfaW5fZXZhbCkKQEAgLTM1Nyw2ICszNTYs
NyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9P
UChvcF9nZXRfYnlfaWRfd2l0aF90aGlzKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lk
X2RpcmVjdCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV92YWwpCisgICAgICAgIERFRklO
RV9PUChvcF9nZXRfcHJpdmF0ZV9uYW1lKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3Byb3Rv
dHlwZV9vZikKICAgICAgICAgREVGSU5FX09QKG9wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UpCiAg
ICAgICAgIERFRklORV9PUChvcF9pbnN0YW5jZW9mKQpAQCAtNTYxLDYgKzU2MSw3IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9nZXRfYnlfaWRfd2l0aF90aGlzKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
Z2V0X2J5X2lkX2RpcmVjdCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9ieV92
YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfcHJpdmF0ZV9uYW1lKQogICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaW5zdGFuY2VvZikKICAgICAgICAgREVGSU5FX1NM
T1dDQVNFX09QKG9wX2luc3RhbmNlb2ZfY3VzdG9tKQogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
T1Aob3Bfamxlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA2NjZlMGVkNGM4YTA5MzQ0
ZjRiNGZmNDI1NzBlNjdkNjk1Y2IxNzQ5Li43YzM3NWI2NjVlNzVmZGJlMjMyNTY1MjEzM2QzYzg1
NmQzYzhjOTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTUyNyw2ICs1MjcsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9pZF9kaXJl
Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9wcml2YXRlX25h
bWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9hcmd1bWVu
dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9w
cm90b3R5cGVfb2YoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2lu
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7CkBAIC02NTcsNiArNjU4LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25z
dCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93
X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYXJndW1lbnRfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVt
aXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2luc3RhbmNlb2YoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBiYzNjY2M4MDIz
NWQ3MzljZDFhZjUyNjljMWU2YWIxNWZlZDc0ODk1Li4yMjk1NmE2Y2NmYzVkOWRkMjlmZWE2MmUy
ZjU3OGY2NTMzMTMwOTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKQEAgLTIxOTMsNiArMjE5Myw3NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwog
fQogCiAKK0FMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0UHJpdmF0ZU5hbWUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgYmFz
ZVZhbHVlLCBKU1ZhbHVlIGZpZWxkTmFtZVZhbHVlKQoreworICAgIFVOVVNFRF9QQVJBTShjYWxs
RnJhbWUpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBiYXNlVmFsdWUucmVxdWlyZU9iamVj
dENvZXJjaWJsZShnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IEpTVmFsdWUoKSk7CisgICAgYXV0byBmaWVsZE5hbWUgPSBmaWVsZE5hbWVWYWx1ZS50b1Byb3Bl
cnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNW
YWx1ZSgpKTsKKworICAgIEpTT2JqZWN0KiBiYXNlID0gYmFzZVZhbHVlLnRvT2JqZWN0KGdsb2Jh
bE9iamVjdCk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSwgUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgYmFzZS0+Z2V0UHJpdmF0ZUZpZWxkKGds
b2JhbE9iamVjdCwgZmllbGROYW1lLCBzbG90KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBKU1ZhbHVlKCkpOworCisgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0
LCBmaWVsZE5hbWUpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEZpZWxkTmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7Cisg
ICAgSlNWYWx1ZSBmaWVsZE5hbWVWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkRmllbGRO
YW1lKTsKKyAgICBBU1NFUlQoQ2FjaGVhYmxlSWRlbnRpZmllcjo6aXNDYWNoZWFibGVJZGVudGlm
aWVyQ2VsbChmaWVsZE5hbWVWYWx1ZSkpOworCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBj
YWxsRnJhbWUtPmNvZGVCbG9jaygpOworCisgICAgLy8gT25seSBjb25zaWRlciBjYWNoaW5nIGlm
IHRoZSBiYXNlIHZhbHVlIGRvZXNuJ3QgbmVlZCB0byBiZSBjb252ZXJ0ZWQgdG8gYSBKU09iamVj
dAorICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICBjb25zdCBJZGVudGlm
aWVyIGZpZWxkTmFtZSA9IGZpZWxkTmFtZVZhbHVlLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0
KTsKKyAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOworICAgICAg
ICBBU1NFUlQoZmllbGROYW1lLmlzU3ltYm9sKCkpOworCisgICAgICAgIEpTT2JqZWN0KiBiYXNl
ID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChiYXNlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5KTsKKyAgICAgICAgYmFzZS0+Z2V0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwg
ZmllbGROYW1lLCBzbG90KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CisKKyAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25HZXRQ
cml2YXRlTmFtZU9wdGltaXplLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKHZtKSwgZmllbGRO
YW1lLCB0cnVlKSk7CisKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0g
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUNlbGwoZmllbGROYW1lVmFsdWUuYXNDZWxs
KCkpOworICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxv
Y2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSwgaWRlbnRpZmllcikpCisgICAgICAgICAg
ICByZXBhdGNoR2V0QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgaWRlbnRp
Zmllciwgc2xvdCwgKnN0dWJJbmZvLCBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgZmllbGRO
YW1lKSk7CisgICAgfQorCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoZ2V0UHJpdmF0ZU5hbWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwg
ZmllbGROYW1lVmFsdWUpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uR2V0UHJpdmF0ZU5hbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEZpZWxkTmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAg
SlNWYWx1ZSBmaWVsZE5hbWVWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkRmllbGROYW1l
KTsKKworICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOworCisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZ2V0UHJpdmF0ZU5hbWUoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgZmllbGROYW1lVmFsdWUpKSk7Cit9CisKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVs
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlWYWxJbmZvKiBieVZhbEluZm8p
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA0YzIyMDUzMGFiNGRlNWIyNmQ3ZDlhZDNkM2I4
MmUzYjRkYjk3ZDlhLi4zOGNkOWZkOWMxNGNmZDczOGRkNTUwNWVjNDZhMjczNjM2OTBjOWNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMjczLDYgKzI3
Myw5IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25TaXplRnJhbWVGb3JWYXJhcmdz
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsCiBDYWxsRnJhbWUqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uU2V0dXBGb3J3YXJkQXJndW1lbnRzRnJhbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgaW50MzJfdCBsZW5ndGgpIFdURl9JTlRF
Uk5BTDsKIENhbGxGcmFtZSogSklUX09QRVJBVElPTiBvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFt
ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIEVuY29kZWRKU1ZhbHVlIGFyZ3VtZW50cywg
aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgaW50MzJfdCBsZW5ndGgpIFdURl9JTlRFUk5BTDsK
IAorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZShK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRGaWVsZE5hbWUpIFdURl9JTlRFUk5BTDsKK0Vu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6
ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRGaWVsZE5hbWUpIFdURl9JTlRFUk5BTDsK
KwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25Td2l0Y2hDaGFyV2l0aFVua25vd25LZXlU
eXBlKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUga2V5LCBzaXplX3QgdGFibGVJbmRl
eCkgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25Td2l0Y2hJbW1X
aXRoVW5rbm93bktleVR5cGUoVk0qLCBFbmNvZGVkSlNWYWx1ZSBrZXksIHNpemVfdCB0YWJsZUlu
ZGV4KSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN3aXRjaFN0
cmluZ1dpdGhVbmtub3duS2V5VHlwZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGtl
eSwgc2l6ZV90IHRhYmxlSW5kZXgpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggN2UwOTQ0MjA5MjI1NmM4ZWFm
NTc4ZGE3YjRlMTk1MjRjMDFlZDljYi4uMWExZGZlNzdhYmQxMDdhZDM1NGY3MGYwMzRhZjBkZjQx
YzA1MTU3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAKQEAgLTk2LDYgKzk2LDQ4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAg
fQogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BHZXRQcml2YXRlTmFtZT4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIg
ZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29k
ZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9w
ZXJ0eTsKKyAgICBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOworICAgIEdQUlJlZyBwcm9wZXJ0eUdQ
UiA9IHJlZ1QxOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUdQUik7Cisg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlHUFIpOworCisgICAg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKKworICAgIEpJVEdldEJ5
VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIp
LCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAgZ2Vu
LnN0dWJJbmZvKCktPmFjY2Vzc1R5cGUgPSBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZTsKKyAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKKyAgICBtX2dldEJ5VmFscy5hcHBlbmQoZ2VuKTsKKworICAgIGVtaXRWYWx1
ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spKTsKKyAgICBlbWl0
UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRf
cHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgQVNTRVJUKGhhc0FueVNs
b3dDYXNlcyhpdGVyKSk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BHZXRQcml2YXRlTmFtZT4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNv
ZGUubV9kc3Q7CisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAgICBHUFJSZWcgcHJvcGVy
dHlHUFIgPSByZWdUMTsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICBKSVRH
ZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4XTsKKyAg
ICArK21fZ2V0QnlWYWxJbmRleDsKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsK
KyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRh
dGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLCBkc3QsIFRy
dXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCks
IGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQ
YXRoQmVnaW4sIGNhbGwpOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVj
dChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRfb3Bf
cHV0X2J5X3ZhbDxPcFB1dEJ5VmFsRGlyZWN0PihjdXJyZW50SW5zdHJ1Y3Rpb24pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAK
aW5kZXggYzA0N2QyYjEzOWU2YTJiNWFhZDUyZjM0ZWY3NThkZjk0MzBhYWViNS4uOGEyYWYyZTJm
YWZmZjJmMzY3YTMyODcyMzJiNTk1OThjZDU5NDAwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0yODcsNiArMjg3
LDUxIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgfQogfQogCit2b2lkIEpJVDo6ZW1p
dF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRQ
cml2YXRlTmFtZT4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7
CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVh
bFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBhdXRvIGJhc2VH
UFIgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApOworICAgIGF1dG8gcHJvcGVydHlH
UFIgPSBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpOworCisgICAgZW1pdExvYWQyKGJhc2UsIHJl
Z1QxLCByZWdUMCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7CisKKyAgICBlbWl0SnVtcFNsb3dD
YXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOworCisgICAgSklUR2V0QnlWYWxHZW5lcmF0b3Ig
Z2VuKAorICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwKKyAgICAgICAgYmFzZUdQUiwgcHJvcGVydHlHUFIsIEpTVmFsdWVSZWdz
KHJlZ1QxLCByZWdUMCkpOworICAgIGdlbi5zdHViSW5mbygpLT5hY2Nlc3NUeXBlID0gQWNjZXNz
VHlwZTo6R2V0UHJpdmF0ZU5hbWU7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwor
ICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgbV9nZXRCeVZhbHMuYXBw
ZW5kKGdlbik7CisKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRh
KG1fY29kZUJsb2NrKSk7CisgICAgZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsKK30KKwor
Cit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQoreworICAgIEFTU0VSVChoYXNBbnlTbG93Q2FzZXMoaXRlcikpOworICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0UHJpdmF0ZU5hbWU+KCk7CisgICAg
VmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworCisgICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKKworICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFs
c1ttX2dldEJ5VmFsSW5kZXhdOworICAgICsrbV9nZXRCeVZhbEluZGV4OworICAgIExhYmVsIGNv
bGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAgYXV0byBiYXNlR1BSID0gSlNWYWx1ZVJlZ3Mo
cmVnVDEsIHJlZ1QwKTsKKyAgICBhdXRvIHByb3BlcnR5R1BSID0gSlNWYWx1ZVJlZ3MocmVnVDMs
IHJlZ1QyKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNv
ZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXpl
LCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0
dWJJbmZvKCksIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhD
YWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworfQorCisKIHZvaWQgSklUOjplbWl0X29wX3B1dF9i
eV92YWxfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgZW1pdF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGN1cnJlbnRJbnN0cnVjdGlv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCBkYzAwOGE0YmZmNGI3
MTI1YTMxOTU3ZTI4YmZhNGIyMGU0OTRhMzIyLi5lZDRiMjg4ZDgxMjkwNWYxY2YwOWRlMDFjYmVl
YTNmMTI2OGEyOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTE2
Miw2ICsxNjIsOCBAQCBpbmxpbmUgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBhcHByb3By
aWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKEdldEJ5S2luZAogICAgICAgICByZXR1cm4gb3Bl
cmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplOwogICAgIGNhc2UgR2V0QnlLaW5kOjpOb3JtYWxC
eVZhbDoKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemU7CisgICAgY2Fz
ZSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lOgorICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0UHJp
dmF0ZU5hbWVPcHRpbWl6ZTsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KQEAgLTE3OSw2ICsxODEsOCBAQCBpbmxpbmUgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRy
VGFnPiBhcHByb3ByaWF0ZUdldEJ5RnVuY3Rpb24oR2V0QnlLaW5kIGtpbmQpCiAgICAgICAgIHJl
dHVybiBvcGVyYXRpb25HZXRCeUlkRGlyZWN0OwogICAgIGNhc2UgR2V0QnlLaW5kOjpOb3JtYWxC
eVZhbDoKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldEJ5VmFsR2VuZXJpYzsKKyAgICBjYXNl
IEdldEJ5S2luZDo6UHJpdmF0ZU5hbWU6CisgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRQcml2
YXRlTmFtZTsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KQEAg
LTE5OCw2ICsyMDIsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAgICAgICAgIGlmICghYmFz
ZVZhbHVlLmlzQ2VsbCgpKQogICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAg
ICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIGNvbnN0
IGJvb2wgaXNQcml2YXRlID0ga2luZCA9PSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lOwogCiAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwogCkBAIC0yNTMsNiArMjU4
LDggQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogCiAgICAgICAgICAgICBib29sIGxvYWRUYXJn
ZXRGcm9tUHJveHkgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChiYXNlQ2VsbC0+dHlwZSgpID09
IFB1cmVGb3J3YXJkaW5nUHJveHlUeXBlKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzUHJpdmF0
ZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgICAg
ICAgICAgYmFzZVZhbHVlID0ganNDYXN0PEpTUHJveHkqPihiYXNlQ2VsbCktPnRhcmdldCgpOwog
ICAgICAgICAgICAgICAgIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwogICAgICAgICAg
ICAgICAgIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUodm0pOwpAQCAtMzA4LDkgKzMx
NSw5IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5p
c1Vuc2V0KCkgJiYgc3RydWN0dXJlLT50eXBlSW5mbygpLmdldE93blByb3BlcnR5U2xvdElzSW1w
dXJlRm9yUHJvcGVydHlBYnNlbmNlKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZl
VXBPbkNhY2hlOwogCi0gICAgICAgICAgICAgICAgLy8gSWYgYSBraW5kIGlzIEdldEJ5S2luZDo6
RGlyZWN0LCB3ZSBkbyBub3QgbmVlZCB0byBpbnZlc3RpZ2F0ZSBwcm90b3R5cGUgY2hhaW5zIGZ1
cnRoZXIuCisgICAgICAgICAgICAgICAgLy8gSWYgYSBraW5kIGlzIEdldEJ5S2luZDo6RGlyZWN0
IG9yIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWUsIHdlIGRvIG5vdCBuZWVkIHRvIGludmVzdGlnYXRl
IHByb3RvdHlwZSBjaGFpbnMgZnVydGhlci4KICAgICAgICAgICAgICAgICAvLyBDYWNoZWFiaWxp
dHkganVzdCBkZXBlbmRzIG9uIHRoZSBoZWFkIHN0cnVjdHVyZS4KLSAgICAgICAgICAgICAgICBp
ZiAoa2luZCAhPSBHZXRCeUtpbmQ6OkRpcmVjdCkgeworICAgICAgICAgICAgICAgIGlmIChraW5k
ICE9IEdldEJ5S2luZDo6RGlyZWN0ICYmICFpc1ByaXZhdGUpIHsKICAgICAgICAgICAgICAgICAg
ICAgYXV0byBjYWNoZVN0YXR1cyA9IHByZXBhcmVDaGFpbkZvckNhY2hpbmcoZ2xvYmFsT2JqZWN0
LCBiYXNlQ2VsbCwgc2xvdCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghY2FjaGVTdGF0dXMp
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKQEAgLTM3NCw3
ICszODEsMTQgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogICAgICAgICAgICAgfSBlbHNlIGlm
ICghbG9hZFRhcmdldEZyb21Qcm94eSAmJiBnZXR0ZXIgJiYgSW50cmluc2ljR2V0dGVyQWNjZXNz
Q2FzZTo6Y2FuRW1pdEludHJpbnNpY0dldHRlcihnZXR0ZXIsIHN0cnVjdHVyZSkpCiAgICAgICAg
ICAgICAgICAgbmV3Q2FzZSA9IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwg
Y29kZUJsb2NrLCBwcm9wZXJ0eU5hbWUsIHNsb3QuY2FjaGVkT2Zmc2V0KCksIHN0cnVjdHVyZSwg
Y29uZGl0aW9uU2V0LCBnZXR0ZXIsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKICAg
ICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFs
dWUoKSB8fCBzbG90LmlzVW5zZXQoKSkgeworICAgICAgICAgICAgICAgIGlmIChpc1ByaXZhdGUp
IHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFzbG90LmlzVW5zZXQoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnN0ZXhwciBib29sIGNhbm5vdEJlUHJveHkgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFzbG90LmlzQ2FjaGVhYmxlKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKyAgICAgICAgICAgICAgICAgICAgbmV3Q2Fz
ZSA9IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNl
OjpMb2FkLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgc3RydWN0dXJlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgY29uZGl0aW9uU2V0LCBjYW5ub3RCZVByb3h5LCBzbG90LndhdGNocG9pbnRTZXQo
KSwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpOworICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkgfHwgc2xvdC5pc1Vuc2V0KCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgbmV3Q2FzZSA9IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwg
Y29kZUJsb2NrLCBzbG90LmlzVW5zZXQoKSA/IEFjY2Vzc0Nhc2U6Ok1pc3MgOiBBY2Nlc3NDYXNl
OjpMb2FkLAogICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lLCBvZmZzZXQsIHN0
cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBsb2FkVGFyZ2V0RnJvbVByb3h5LCBzbG90LndhdGNocG9p
bnRTZXQoKSwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpOwogICAgICAgICAgICAgICAg
IH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCmluZGV4IGQ4OTBmZDcwYWFj
ZDgyZmZiZjRkYThmYjI0ZTFmM2RmZjU3NDlkYzAuLjA4M2EzZDVkNjg0Y2FiZGZiMTRjY2FlYjc0
NWZlYzc2M2RmYmNhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCkBAIC0zOCw3
ICszOCw4IEBAIGVudW0gY2xhc3MgR2V0QnlLaW5kIHsKICAgICBOb3JtYWxCeVZhbCwKICAgICBU
cnksCiAgICAgV2l0aFRoaXMsCi0gICAgRGlyZWN0CisgICAgRGlyZWN0LAorICAgIFByaXZhdGVO
YW1lLAogfTsKIAogZW51bSBjbGFzcyBEZWxCeUtpbmQgewpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9D
aGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBhMDM4YjYyZjdjYjA5YzVhYjkzY2Q4
M2I2ZWFjZWIzMDhiN2U0ZWY0Li44MGM4YzNiMzRhMDEwZGM0YTE3NWEyNzg0MmY0NDdkMmE1YTAz
NzBiIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA3LTE1ICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gYWRkIElDIHN1cHBvcnQgZm9yIG9wX2dldF9wcml2
YXRlX25hbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMzU0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBhIGNyYXNodGVzdCBmb3IgYSBjcmFzaCBpbiBhbiBlYXJsaWVyIGVkaXRpb24gb2YgdGhl
IEdQTiBJQyBwYXRjaC4KKworICAgICAgICAqIHN0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLWNhY2hl
LWZhaWx1cmUuanM6IEFkZGVkLgorCiAyMDIwLTA3LTE1ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFp
a2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBFbWl0IEhhc093blByb3BlcnR5RnVuY3Rpb25D
YWxsRG90Tm9kZSBmb3IgIlJlZmxlY3QiIGlkZW50aWZpZXJzCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLWNhY2hlLWZhaWx1cmUuanMgYi9KU1Rlc3RzL3N0cmVz
cy9nZXQtcHJpdmF0ZS1uYW1lLWNhY2hlLWZhaWx1cmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWZkMzNjMTc2
YjFlZDQ0N2YxMTRhYTBkYWQ5Zjg5OGJkNzhkYTBmNwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL2dldC1wcml2YXRlLW5hbWUtY2FjaGUtZmFpbHVyZS5qcwpAQCAtMCwwICsxLDQy
IEBACisvL0ByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIsICIt
LXVzZUxMSW50PWZhbHNlIiwgIi0tZm9yY2VJQ0ZhaWx1cmU9dHJ1ZSIpCisvLyBSZWdyZXNzaW9u
IHRlc3Q6IEVuc3VyZSB0aGF0IHdlIGRvbid0IGNyYXNoIHdoZW4gb3BfZ2V0X3ByaXZhdGVfZmll
bGQgY2FjaGluZyByZXN1bHRzIGluCisvLyBnaXZpbmcgdXAgb24gY2FjaGluZy5gCisKK2Z1bmN0
aW9uIGFzc2VydChleHByLCBtZXNzYWdlKSB7CisgIGlmICghZXhwcikKKyAgICB0aHJvdyBuZXcg
RXJyb3IoYEFzc2VydGlvbiBGYWlsZWQ6ICR7bWVzc2FnZX1gKTsKK30KK09iamVjdC5hc3NpZ24o
YXNzZXJ0LCB7CisgIGVxdWFscyhhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgYXNzZXJ0KGFjdHVh
bCA9PT0gZXhwZWN0ZWQsIGBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZm91bmQgJHthY3R1YWx9
YCk7CisgIH0sCisgIHRocm93cyhmbiwgZXJyb3JUeXBlKSB7CisgICAgdHJ5IHsKKyAgICAgIGZu
KCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgaWYgKHR5cGVvZiBlcnJvclR5cGUgPT09ICJm
dW5jdGlvbiIpCisgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgZXJyb3JUeXBlLCBgZXhwZWN0
ZWQgdG8gdGhyb3cgJHtlcnJvclR5cGUubmFtZX0gYnV0IHRocmV3ICR7ZX1gKTsKKyAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgYXNzZXJ0KGZhbHNlLCBgZXhwZWN0ZWQgdG8gdGhyb3csIGJ1dCBu
byBleGNlcHRpb24gd2FzIHRocm93bi5gKTsKKyAgfQorfSk7CisKK2NsYXNzIEMgeworICAjeCA9
IDU7CisgIGdldChvKSB7IHJldHVybiBvLiN4OyB9Cit9CitsZXQgZ2V0ID0gQy5wcm90b3R5cGUu
Z2V0OworZnVuY3Rpb24gdGVzdEFjY2VzcygpIHsKKyAgYXNzZXJ0LmVxdWFscyhnZXQobmV3IEMp
LCA1KTsKK30KK25vSW5saW5lKHRlc3RBY2Nlc3MpOworZnVuY3Rpb24gdGVzdFRocm93cygpIHsK
KyAgYXNzZXJ0LnRocm93cygoKSA9PiBnZXQoZ2xvYmFsVGhpcyksIFR5cGVFcnJvcik7Cit9Citu
b0lubGluZSh0ZXN0VGhyb3dzKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAyMDsgKytpKSB7Cisg
IHRlc3RBY2Nlc3MoKTsKKyAgdGVzdFRocm93cygpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404586</attachid>
            <date>2020-07-17 13:38:31 -0700</date>
            <delta_ts>2020-07-27 17:53:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213545-20200717163829.patch</filename>
            <type>text/plain</type>
            <size>23829</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ZjA3Zjk3Y2EwNzllMGFjMjhkOGY1YmY2OGM4Y2IxNTkxN2Q4ZGUwLi43NDQyMTllMGFiOTU0ODll
MGUwMGUxZWNjMTlkOTczYzU0M2FkODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NSBAQAorMjAyMC0wNy0xNyAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIGFkZCBJQyBzdXBwb3J0IGZvciBvcF9nZXRfcHJpdmF0ZV9uYW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM1NDUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgYmFz
ZWxpbmUgSklUIG5vdyBzdXBwb3J0cyBhIGZhc3QgcGF0aCBmb3Igb3BfcHJpdmF0ZV9uYW1lLAor
ICAgICAgICB1c2luZyBhIHZhcmlhbnQgb2YgR2V0QnlWYWwgSUMuCisKKyAgICAgICAgVGhlIGdl
bmVyYXRlZCBBY2Nlc3NDYXNlIGhhcyB0aGUgZm9sbG93aW5nIHF1YWxpdGllczoKKyAgICAgICAg
ICAtIEFsd2F5cyAiZGlyZWN0IiwgcmVseWluZyBvbmx5IG9uIHRoZSBjdXJyZW50IHN0cnVjdHVy
ZSBmb3IgY2FjaGViaWxpdHkKKyAgICAgICAgICAtIE5ldmVyIGltcHVyZSAoRE9NIHByb3BlcnRp
ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgdGhpcyB0aW1lLCBQcm94eU9iamVjdHMgYXJlIHRyZWF0
ZWQgYXMgSlNPYmplY3RzKQorCisgICAgICAgIEJhc2VkIG9uIHRoZSBtaWNyb2JlbmNobWFyayBy
ZXZpZXdlZCBvbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNTQ0
LCB0aGlzIHNlZXMKKyAgICAgICAgYW4gaW1wcm92ZW1lbnQgb2Ygcm91Z2hseSA1MCUgb24gYXZl
cmFnZS4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KToK
KyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGppdC9J
Q1N0YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmdldFByaXZhdGVOYW1lKToKKyAgICAgICAgKiBqaXQv
SklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKiBqaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRf
cHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0
ZV9uYW1lKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OmFwcHJv
cHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjphcHByb3ByaWF0
ZUdldEJ5RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5KToKKyAgICAgICAg
KiBqaXQvUmVwYXRjaC5oOgorCiAyMDIwLTA3LTE3ICBYYW4gTMOzcGV6ICA8eGFuQGlnYWxpYS5j
b20+CiAKICAgICAgICAgTWF0aC5tYXgoKSBjYW4geWllbGQgdGhlIHdyb25nIHJlc3VsdCBmb3Ig
bWF4KDAsIC0wKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKaW5kZXggNzljNTA1ZjRkMmY1MzFmZWVkNzEzY2E0MzY0NWZiNzlhYzE4Y2JkOS4uYmZhNjMw
ZTNmODFjNTkyZjNlYjFjZjBhN2I0ZDk0ZTZkMWQ2YWRjNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTUwOSw2ICs1MDksNyBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4
ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5LKE9wVGFpbENhbGxGb3J3YXJkQXJndW1lbnRz
LCBwcm9maWxlKQogICAgICAgICBMSU5LKE9wQ29uc3RydWN0VmFyYXJncywgcHJvZmlsZSkKICAg
ICAgICAgTElOSyhPcEdldEJ5VmFsLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9wR2V0UHJpdmF0
ZU5hbWUsIHByb2ZpbGUpCiAKICAgICAgICAgTElOSyhPcEdldERpcmVjdFBuYW1lLCBwcm9maWxl
KQogICAgICAgICBMSU5LKE9wR2V0QnlJZFdpdGhUaGlzLCBwcm9maWxlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXgg
ZGQ3Y2Y0NWNlNWI1NDRkZGIyN2YzYzEzN2M3ODY5NzgxYzBlYmIxNC4uMDNjNmU2MWY3ZDI1MTAx
Mzg2ODA4ODI3NmI0NDFkMzg5ZDRiOGI1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC0yNjUsNiArMjY1LDkgQEAg
dm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFz
ZSYgbG9ja2VyLCBDb2RlQmxvY2sqIGMKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldEJ5VmFsOgog
ICAgICAgICByZXNldEdldEJ5KGNvZGVCbG9jaywgKnRoaXMsIEdldEJ5S2luZDo6Tm9ybWFsQnlW
YWwpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1l
OgorICAgICAgICByZXNldEdldEJ5KGNvZGVCbG9jaywgKnRoaXMsIEdldEJ5S2luZDo6UHJpdmF0
ZU5hbWUpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dDoKICAgICAg
ICAgcmVzZXRQdXRCeUlEKGNvZGVCbG9jaywgKnRoaXMpOwogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKaW5k
ZXggYzYzYWU5YmMwNGEwNTM2ZmJlMGQzZjAwZTBjYjM1NzMzZGFiMjQyZC4uMThkYjY0MWRlYjJh
YmM0MjZlNzdiODcwNmVjYjlkNDg1MDVjOWE1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKQEAgLTU3LDcgKzU3LDggQEAgZW51
bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90IHsKICAgICBJbiwKICAgICBJbnN0YW5jZU9mLAog
ICAgIERlbGV0ZUJ5SUQsCi0gICAgRGVsZXRlQnlWYWwKKyAgICBEZWxldGVCeVZhbCwKKyAgICBH
ZXRQcml2YXRlTmFtZSwKIH07CiAKIGVudW0gY2xhc3MgQ2FjaGVUeXBlIDogaW50OF90IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKaW5kZXggOGZiN2QwNjk1Mjg5MmYyNDg3ZDdiNDZk
NjVmZjgxNmE1NzMxNzM1My4uYzhkNDEyOThiOTcwODhiNjJjN2U3ZTM1ZDI2MGU4ZWUwMmZkNjM0
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKQEAgLTc0LDcgKzc0LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oUHV0QnlJZFNlbGZQYXRjaCkgXAogICAgIG1hY3JvKElu
QnlJZFNlbGZQYXRjaCkgXAogICAgIG1hY3JvKERlbEJ5UmVwbGFjZVdpdGhKdW1wKSBcCi0gICAg
bWFjcm8oRGVsQnlSZXBsYWNlV2l0aEdlbmVyaWMpCisgICAgbWFjcm8oRGVsQnlSZXBsYWNlV2l0
aEdlbmVyaWMpIFwKKyAgICBtYWNybyhPcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKQog
CiBjbGFzcyBJQ0V2ZW50IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRl
eCAyMWFkNzZjZjIwNDU0ZTJmOTg3YjBmMDAyM2Y1OWVjMDBhZmM4YWFjLi4xZTFjZjA2ZTMxNTdk
MDUxNDk2NTI1MGU0YmMxM2JiMTAxZWRkYzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CkBAIC0yOTIsNyArMjkyLDYgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQog
ICAgICAgICBERUZJTkVfU0xPV19PUChwdXNoX3dpdGhfc2NvcGUpCiAgICAgICAgIERFRklORV9T
TE9XX09QKGNyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQogICAgICAgICBERUZJTkVfU0xPV19P
UChnZXRfYnlfdmFsX3dpdGhfdGhpcykKLSAgICAgICAgREVGSU5FX1NMT1dfT1AoZ2V0X3ByaXZh
dGVfbmFtZSkKICAgICAgICAgREVGSU5FX1NMT1dfT1AocHV0X2J5X2lkX3dpdGhfdGhpcykKICAg
ICAgICAgREVGSU5FX1NMT1dfT1AocHV0X2J5X3ZhbF93aXRoX3RoaXMpCiAgICAgICAgIERFRklO
RV9TTE9XX09QKHJlc29sdmVfc2NvcGVfZm9yX2hvaXN0aW5nX2Z1bmNfZGVjbF9pbl9ldmFsKQpA
QCAtMzU3LDYgKzM1Niw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAg
ICAgICAgREVGSU5FX09QKG9wX2dldF9ieV9pZF93aXRoX3RoaXMpCiAgICAgICAgIERFRklORV9P
UChvcF9nZXRfYnlfaWRfZGlyZWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X3ZhbCkK
KyAgICAgICAgREVGSU5FX09QKG9wX2dldF9wcml2YXRlX25hbWUpCiAgICAgICAgIERFRklORV9P
UChvcF9nZXRfcHJvdG90eXBlX29mKQogICAgICAgICBERUZJTkVfT1Aob3Bfb3ZlcnJpZGVzX2hh
c19pbnN0YW5jZSkKICAgICAgICAgREVGSU5FX09QKG9wX2luc3RhbmNlb2YpCkBAIC01NjEsNiAr
NTYxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX2dldF9ieV9pZF93aXRoX3RoaXMpCiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9nZXRfYnlfaWRfZGlyZWN0KQogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
T1Aob3BfZ2V0X2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9wcml2
YXRlX25hbWUpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9pbnN0YW5jZW9mKQogICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaW5zdGFuY2VvZl9jdXN0b20pCiAgICAgICAgIERF
RklORV9TTE9XQ0FTRV9PUChvcF9qbGVzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDQ3
OGNjMDdlYzZmNTUyZDI0NjI1NGNlYzMxMDAzZWI2NjU4NmI4ZDIuLmYzYjA5MjQwMTkzNDc3MDRk
YjA1NGViNDdhMDhiZDg1MmRhZTA1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNTI3
LDYgKzUyNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5
X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
Z2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bf
Z2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRfb3BfZ2V0X3Byb3RvdHlwZV9vZihjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKQEAgLTY1Nyw2ICs2NTgs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfaWRf
d2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAg
IHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRf
cHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9hcmd1bWVudF9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAg
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
aW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmlu
ZGV4IGJjM2NjYzgwMjM1ZDczOWNkMWFmNTI2OWMxZTZhYjE1ZmVkNzQ4OTUuLjZlZjcyMmNiYjFi
YTY3NjI1OGFmNzk0MmVlNjY3ODAzZTUwNzY4ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMjE5Miw2ICsyMTkyLDgwIEBAIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoYmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSkpKTsKIH0KIAorfSAv
LyBleHRlcm4gIkMiCisKK0FMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0UHJpdmF0ZU5h
bWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpT
VmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIGZpZWxkTmFtZVZhbHVlKQoreworICAgIFVOVVNFRF9Q
QVJBTShjYWxsRnJhbWUpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBiYXNlVmFsdWUucmVx
dWlyZU9iamVjdENvZXJjaWJsZShnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIEpTVmFsdWUoKSk7CisgICAgYXV0byBmaWVsZE5hbWUgPSBmaWVsZE5hbWVWYWx1
ZS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgSlNWYWx1ZSgpKTsKKworICAgIEpTT2JqZWN0KiBiYXNlID0gYmFzZVZhbHVlLnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgYmFzZS0+Z2V0UHJpdmF0
ZUZpZWxkKGdsb2JhbE9iamVjdCwgZmllbGROYW1lLCBzbG90KTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworCisgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZ2xv
YmFsT2JqZWN0LCBmaWVsZE5hbWUpOworfQorCitleHRlcm4gIkMiIHsKKworRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRGaWVsZE5hbWUpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZEJhc2UpOworICAgIEpTVmFsdWUgZmllbGROYW1lVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZEZpZWxkTmFtZSk7CisgICAgQVNTRVJUKENhY2hlYWJsZUlkZW50
aWZpZXI6OmlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwoZmllbGROYW1lVmFsdWUpKTsKKworICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKworICAgIC8v
IE9ubHkgY29uc2lkZXIgY2FjaGluZyBpZiB0aGUgYmFzZSB2YWx1ZSBkb2Vzbid0IG5lZWQgdG8g
YmUgY29udmVydGVkIHRvIGEgSlNPYmplY3QKKyAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkp
IHsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciBmaWVsZE5hbWUgPSBmaWVsZE5hbWVWYWx1ZS50
b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNj
b3BlLmV4Y2VwdGlvbigpKTsKKyAgICAgICAgQVNTRVJUKGZpZWxkTmFtZS5pc1N5bWJvbCgpKTsK
KworICAgICAgICBKU09iamVjdCogYmFzZSA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+dG9PYmplY3Qo
Z2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CisKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgICAgIGJhc2UtPmdldFBy
aXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIGZpZWxkTmFtZSwgc2xvdCk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgICAgIExPR19J
QygoSUNFdmVudDo6T3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgYmFzZVZhbHVlLmNs
YXNzSW5mb09yTnVsbCh2bSksIGZpZWxkTmFtZSwgdHJ1ZSkpOworCisgICAgICAgIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21D
ZWxsKGZpZWxkTmFtZVZhbHVlLmFzQ2VsbCgpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25z
aWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCks
IGlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmVwYXRjaEdldEJ5KGdsb2JhbE9iamVjdCwgY29k
ZUJsb2NrLCBiYXNlVmFsdWUsIGlkZW50aWZpZXIsIHNsb3QsICpzdHViSW5mbywgR2V0QnlLaW5k
OjpQcml2YXRlTmFtZSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvdC5nZXRW
YWx1ZShnbG9iYWxPYmplY3QsIGZpZWxkTmFtZSkpOworICAgIH0KKworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGdldFByaXZhdGVOYW1lKGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUsIGZpZWxkTmFtZVZhbHVlKSkpOworfQorCitFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRGaWVsZE5hbWUpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZEJhc2UpOworICAgIEpTVmFsdWUgZmllbGROYW1lVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZEZpZWxkTmFtZSk7CisKKyAgICBzdHViSW5mby0+dG9va1Nsb3dQYXRo
ID0gdHJ1ZTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KGdldFByaXZhdGVOYW1lKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUsIGZpZWxk
TmFtZVZhbHVlKSkpOworfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3Jp
cHQsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaAppbmRleCA0YzIyMDUzMGFiNGRlNWIyNmQ3ZDlhZDNkM2I4MmUzYjRkYjk3
ZDlhLi4zOGNkOWZkOWMxNGNmZDczOGRkNTUwNWVjNDZhMjczNjM2OTBjOWNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMjczLDYgKzI3Myw5IEBAIGlu
dDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25TaXplRnJhbWVGb3JWYXJhcmdzKEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsCiBDYWxsRnJhbWUqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
U2V0dXBGb3J3YXJkQXJndW1lbnRzRnJhbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBF
bmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgaW50MzJfdCBsZW5ndGgpIFdURl9JTlRFUk5BTDsKIENh
bGxGcmFtZSogSklUX09QRVJBVElPTiBvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZShKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSosIEVuY29kZWRKU1ZhbHVlIGFyZ3VtZW50cywgaW50MzJfdCBm
aXJzdFZhckFyZ09mZnNldCwgaW50MzJfdCBsZW5ndGgpIFdURl9JTlRFUk5BTDsKIAorRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZShKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRGaWVsZE5hbWUpIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZShKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRGaWVsZE5hbWUpIFdURl9JTlRFUk5BTDsKKwogY2hhciog
SklUX09QRVJBVElPTiBvcGVyYXRpb25Td2l0Y2hDaGFyV2l0aFVua25vd25LZXlUeXBlKEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUga2V5LCBzaXplX3QgdGFibGVJbmRleCkgV1RGX0lO
VEVSTkFMOwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25Td2l0Y2hJbW1XaXRoVW5rbm93
bktleVR5cGUoVk0qLCBFbmNvZGVkSlNWYWx1ZSBrZXksIHNpemVfdCB0YWJsZUluZGV4KSBXVEZf
SU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN3aXRjaFN0cmluZ1dpdGhV
bmtub3duS2V5VHlwZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGtleSwgc2l6ZV90
IHRhYmxlSW5kZXgpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggN2UwOTQ0MjA5MjI1NmM4ZWFmNTc4ZGE3YjRl
MTk1MjRjMDFlZDljYi4uMWExZGZlNzdhYmQxMDdhZDM1NGY3MGYwMzRhZjBkZjQxYzA1MTU3YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAK
QEAgLTk2LDYgKzk2LDQ4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgfQogfQogCit2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BHZXRQcml2YXRlTmFtZT4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0
ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7
CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAg
ICBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOworICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHJlZ1Qx
OworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUdQUik7CisgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlHUFIpOworCisgICAgZW1pdEp1bXBT
bG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKKworICAgIEpJVEdldEJ5VmFsR2VuZXJh
dG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVl
UmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAgZ2VuLnN0dWJJbmZv
KCktPmFjY2Vzc1R5cGUgPSBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZTsKKyAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKKyAgICBtX2dldEJ5VmFscy5hcHBlbmQoZ2VuKTsKKworICAgIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spKTsKKyAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGRzdCk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9u
YW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgQVNTRVJUKGhhc0FueVNsb3dDYXNlcyhp
dGVyKSk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRQ
cml2YXRlTmFtZT4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7
CisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBy
ZWdUMTsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICBKSVRHZXRCeVZhbEdl
bmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4XTsKKyAgICArK21fZ2V0
QnlWYWxJbmRleDsKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBDYWxs
IGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2Rl
QmxvY2spLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLCBkc3QsIFRydXN0ZWRJbW1Q
dHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIs
IHByb3BlcnR5R1BSKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4s
IGNhbGwpOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVjdChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRfb3BfcHV0X2J5X3Zh
bDxPcFB1dEJ5VmFsRGlyZWN0PihjdXJyZW50SW5zdHJ1Y3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggYzA0
N2QyYjEzOWU2YTJiNWFhZDUyZjM0ZWY3NThkZjk0MzBhYWViNS4uOGEyYWYyZTJmYWZmZjJmMzY3
YTMyODcyMzJiNTk1OThjZDU5NDAwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0yODcsNiArMjg3LDUxIEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgfQogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
cHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7Cisg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRQcml2YXRlTmFt
ZT4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmly
dHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVy
IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBhdXRvIGJhc2VHUFIgPSBKU1Zh
bHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApOworICAgIGF1dG8gcHJvcGVydHlHUFIgPSBKU1Zh
bHVlUmVncyhyZWdUMywgcmVnVDIpOworCisgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1QxLCByZWdU
MCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7CisKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RK
U0NlbGwoYmFzZSwgcmVnVDEpOworCisgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAorICAg
ICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKKyAgICAgICAgYmFzZUdQUiwgcHJvcGVydHlHUFIsIEpTVmFsdWVSZWdzKHJlZ1QxLCBy
ZWdUMCkpOworICAgIGdlbi5zdHViSW5mbygpLT5hY2Nlc3NUeXBlID0gQWNjZXNzVHlwZTo6R2V0
UHJpdmF0ZU5hbWU7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNs
b3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgbV9nZXRCeVZhbHMuYXBwZW5kKGdlbik7
CisKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJs
b2NrKSk7CisgICAgZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsKK30KKworCit2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQorewor
ICAgIEFTU0VSVChoYXNBbnlTbG93Q2FzZXMoaXRlcikpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0UHJpdmF0ZU5hbWU+KCk7CisgICAgVmlydHVhbFJl
Z2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworCisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVy
KTsKKworICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5
VmFsSW5kZXhdOworICAgICsrbV9nZXRCeVZhbEluZGV4OworICAgIExhYmVsIGNvbGRQYXRoQmVn
aW4gPSBsYWJlbCgpOworCisgICAgYXV0byBiYXNlR1BSID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJl
Z1QwKTsKKyAgICBhdXRvIHByb3BlcnR5R1BSID0gSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKTsK
KyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRh
dGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLCBkc3QsIFRy
dXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCks
IGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQ
YXRoQmVnaW4sIGNhbGwpOworfQorCisKIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWxfZGly
ZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9v
cF9wdXRfYnlfdmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGN1cnJlbnRJbnN0cnVjdGlvbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCBkYzAwOGE0YmZmNGI3MTI1YTMxOTU3
ZTI4YmZhNGIyMGU0OTRhMzIyLi5lZDRiMjg4ZDgxMjkwNWYxY2YwOWRlMDFjYmVlYTNmMTI2OGEy
OWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTE2Miw2ICsxNjIs
OCBAQCBpbmxpbmUgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBhcHByb3ByaWF0ZU9wdGlt
aXppbmdHZXRCeUZ1bmN0aW9uKEdldEJ5S2luZAogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0
QnlJZERpcmVjdE9wdGltaXplOwogICAgIGNhc2UgR2V0QnlLaW5kOjpOb3JtYWxCeVZhbDoKICAg
ICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemU7CisgICAgY2FzZSBHZXRCeUtp
bmQ6OlByaXZhdGVOYW1lOgorICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVP
cHRpbWl6ZTsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KQEAg
LTE3OSw2ICsxODEsOCBAQCBpbmxpbmUgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBhcHBy
b3ByaWF0ZUdldEJ5RnVuY3Rpb24oR2V0QnlLaW5kIGtpbmQpCiAgICAgICAgIHJldHVybiBvcGVy
YXRpb25HZXRCeUlkRGlyZWN0OwogICAgIGNhc2UgR2V0QnlLaW5kOjpOb3JtYWxCeVZhbDoKICAg
ICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldEJ5VmFsR2VuZXJpYzsKKyAgICBjYXNlIEdldEJ5S2lu
ZDo6UHJpdmF0ZU5hbWU6CisgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZTsK
ICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KQEAgLTE5OCw2ICsy
MDIsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAgICAgICAgIGlmICghYmFzZVZhbHVlLmlz
Q2VsbCgpKQogICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgIEpTQ2Vs
bCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIGNvbnN0IGJvb2wgaXNQ
cml2YXRlID0ga2luZCA9PSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lOwogCiAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwogCkBAIC0yNTMsNiArMjU4LDggQEAgc3Rh
dGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrKgogCiAgICAgICAgICAgICBib29sIGxvYWRUYXJnZXRGcm9tUHJv
eHkgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChiYXNlQ2VsbC0+dHlwZSgpID09IFB1cmVGb3J3
YXJkaW5nUHJveHlUeXBlKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzUHJpdmF0ZSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgICAgICAgICAgYmFz
ZVZhbHVlID0ganNDYXN0PEpTUHJveHkqPihiYXNlQ2VsbCktPnRhcmdldCgpOwogICAgICAgICAg
ICAgICAgIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwogICAgICAgICAgICAgICAgIHN0
cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUodm0pOwpAQCAtMzA4LDkgKzMxNSw5IEBAIHN0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENvZGVCbG9jayoKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1Vuc2V0KCkg
JiYgc3RydWN0dXJlLT50eXBlSW5mbygpLmdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJv
cGVydHlBYnNlbmNlKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hl
OwogCi0gICAgICAgICAgICAgICAgLy8gSWYgYSBraW5kIGlzIEdldEJ5S2luZDo6RGlyZWN0LCB3
ZSBkbyBub3QgbmVlZCB0byBpbnZlc3RpZ2F0ZSBwcm90b3R5cGUgY2hhaW5zIGZ1cnRoZXIuCisg
ICAgICAgICAgICAgICAgLy8gSWYgYSBraW5kIGlzIEdldEJ5S2luZDo6RGlyZWN0IG9yIEdldEJ5
S2luZDo6UHJpdmF0ZU5hbWUsIHdlIGRvIG5vdCBuZWVkIHRvIGludmVzdGlnYXRlIHByb3RvdHlw
ZSBjaGFpbnMgZnVydGhlci4KICAgICAgICAgICAgICAgICAvLyBDYWNoZWFiaWxpdHkganVzdCBk
ZXBlbmRzIG9uIHRoZSBoZWFkIHN0cnVjdHVyZS4KLSAgICAgICAgICAgICAgICBpZiAoa2luZCAh
PSBHZXRCeUtpbmQ6OkRpcmVjdCkgeworICAgICAgICAgICAgICAgIGlmIChraW5kICE9IEdldEJ5
S2luZDo6RGlyZWN0ICYmICFpc1ByaXZhdGUpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byBj
YWNoZVN0YXR1cyA9IHByZXBhcmVDaGFpbkZvckNhY2hpbmcoZ2xvYmFsT2JqZWN0LCBiYXNlQ2Vs
bCwgc2xvdCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghY2FjaGVTdGF0dXMpCiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKQEAgLTM3NCw3ICszODEsMTQg
QEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogICAgICAgICAgICAgfSBlbHNlIGlmICghbG9hZFRh
cmdldEZyb21Qcm94eSAmJiBnZXR0ZXIgJiYgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y2Fu
RW1pdEludHJpbnNpY0dldHRlcihnZXR0ZXIsIHN0cnVjdHVyZSkpCiAgICAgICAgICAgICAgICAg
bmV3Q2FzZSA9IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2Nr
LCBwcm9wZXJ0eU5hbWUsIHNsb3QuY2FjaGVkT2Zmc2V0KCksIHN0cnVjdHVyZSwgY29uZGl0aW9u
U2V0LCBnZXR0ZXIsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKICAgICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSB8fCBz
bG90LmlzVW5zZXQoKSkgeworICAgICAgICAgICAgICAgIGlmIChpc1ByaXZhdGUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKCFzbG90LmlzVW5zZXQoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnN0ZXhwciBib29sIGNhbm5vdEJlUHJveHkgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKCFzbG90LmlzQ2FjaGVhYmxlKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gR2l2ZVVwT25DYWNoZTsKKyAgICAgICAgICAgICAgICAgICAgbmV3Q2FzZSA9IFByb3h5
YWJsZUFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpMb2FkLCBw
cm9wZXJ0eU5hbWUsIG9mZnNldCwgc3RydWN0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAg
Y29uZGl0aW9uU2V0LCBjYW5ub3RCZVByb3h5LCBzbG90LndhdGNocG9pbnRTZXQoKSwgV1RGTW92
ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2xv
dC5pc0NhY2hlYWJsZVZhbHVlKCkgfHwgc2xvdC5pc1Vuc2V0KCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgbmV3Q2FzZSA9IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2Nr
LCBzbG90LmlzVW5zZXQoKSA/IEFjY2Vzc0Nhc2U6Ok1pc3MgOiBBY2Nlc3NDYXNlOjpMb2FkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lLCBvZmZzZXQsIHN0cnVjdHVyZSwg
Y29uZGl0aW9uU2V0LCBsb2FkVGFyZ2V0RnJvbVByb3h5LCBzbG90LndhdGNocG9pbnRTZXQoKSwg
V1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCmluZGV4IGQ4OTBmZDcwYWFjZDgyZmZiZjRk
YThmYjI0ZTFmM2RmZjU3NDlkYzAuLjA4M2EzZDVkNjg0Y2FiZGZiMTRjY2FlYjc0NWZlYzc2M2Rm
YmNhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCkBAIC0zOCw3ICszOCw4IEBA
IGVudW0gY2xhc3MgR2V0QnlLaW5kIHsKICAgICBOb3JtYWxCeVZhbCwKICAgICBUcnksCiAgICAg
V2l0aFRoaXMsCi0gICAgRGlyZWN0CisgICAgRGlyZWN0LAorICAgIFByaXZhdGVOYW1lLAogfTsK
IAogZW51bSBjbGFzcyBEZWxCeUtpbmQgewpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAxOWM4NWI2MmNiYzFjMDE2MGNjNzk3MWY3MjM3NmMz
OTVjNzRmNGQ1Li42MjY4MmNiMWE3NDk0MjdhMDgwNGI2ODk0NmY1ZDdhYzFmNDQxZjE0IDEwMDY0
NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDIwLTA3LTE3ICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxpYS5jb20+
CisKKyAgICAgICAgW0pTQ10gYWRkIElDIHN1cHBvcnQgZm9yIG9wX2dldF9wcml2YXRlX25hbWUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzU0NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGNy
YXNodGVzdCBmb3IgYSBjcmFzaCBpbiBhbiBlYXJsaWVyIGVkaXRpb24gb2YgdGhlIEdQTiBJQyBw
YXRjaC4KKworICAgICAgICAqIHN0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLWNhY2hlLWZhaWx1cmUu
anM6IEFkZGVkLgorCiAyMDIwLTA3LTE3ICBYYW4gTG9wZXogIDx4YW5AaWdhbGlhLmNvbT4KIAog
ICAgICAgICBNYXRoLm1heCgpIGNhbiB5aWVsZCB0aGUgd3JvbmcgcmVzdWx0IGZvciBtYXgoMCwg
LTApLgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtbmFtZS1jYWNoZS1m
YWlsdXJlLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtbmFtZS1jYWNoZS1mYWlsdXJl
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjVmZDMzYzE3NmIxZWQ0NDdmMTE0YWEwZGFkOWY4OThiZDc4ZGEwZjcK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLWNhY2hl
LWZhaWx1cmUuanMKQEAgLTAsMCArMSw0MiBAQAorLy9AcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJp
dmF0ZUNsYXNzRmllbGRzPXRydWUiLCAiLS11c2VMTEludD1mYWxzZSIsICItLWZvcmNlSUNGYWls
dXJlPXRydWUiKQorLy8gUmVncmVzc2lvbiB0ZXN0OiBFbnN1cmUgdGhhdCB3ZSBkb24ndCBjcmFz
aCB3aGVuIG9wX2dldF9wcml2YXRlX2ZpZWxkIGNhY2hpbmcgcmVzdWx0cyBpbgorLy8gZ2l2aW5n
IHVwIG9uIGNhY2hpbmcuYAorCitmdW5jdGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSkgeworICBp
ZiAoIWV4cHIpCisgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gRmFpbGVkOiAke21lc3Nh
Z2V9YCk7Cit9CitPYmplY3QuYXNzaWduKGFzc2VydCwgeworICBlcXVhbHMoYWN0dWFsLCBleHBl
Y3RlZCkgeworICAgIGFzc2VydChhY3R1YWwgPT09IGV4cGVjdGVkLCBgZXhwZWN0ZWQgJHtleHBl
Y3RlZH0gYnV0IGZvdW5kICR7YWN0dWFsfWApOworICB9LAorICB0aHJvd3MoZm4sIGVycm9yVHlw
ZSkgeworICAgIHRyeSB7CisgICAgICBmbigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGlm
ICh0eXBlb2YgZXJyb3JUeXBlID09PSAiZnVuY3Rpb24iKQorICAgICAgICBhc3NlcnQoZSBpbnN0
YW5jZW9mIGVycm9yVHlwZSwgYGV4cGVjdGVkIHRvIHRocm93ICR7ZXJyb3JUeXBlLm5hbWV9IGJ1
dCB0aHJldyAke2V9YCk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGFzc2VydChmYWxzZSwg
YGV4cGVjdGVkIHRvIHRocm93LCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24uYCk7CisgIH0K
K30pOworCitjbGFzcyBDIHsKKyAgI3ggPSA1OworICBnZXQobykgeyByZXR1cm4gby4jeDsgfQor
fQorbGV0IGdldCA9IEMucHJvdG90eXBlLmdldDsKK2Z1bmN0aW9uIHRlc3RBY2Nlc3MoKSB7Cisg
IGFzc2VydC5lcXVhbHMoZ2V0KG5ldyBDKSwgNSk7Cit9Citub0lubGluZSh0ZXN0QWNjZXNzKTsK
K2Z1bmN0aW9uIHRlc3RUaHJvd3MoKSB7CisgIGFzc2VydC50aHJvd3MoKCkgPT4gZ2V0KGdsb2Jh
bFRoaXMpLCBUeXBlRXJyb3IpOworfQorbm9JbmxpbmUodGVzdFRocm93cyk7CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMjA7ICsraSkgeworICB0ZXN0QWNjZXNzKCk7CisgIHRlc3RUaHJvd3MoKTsK
K30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405334</attachid>
            <date>2020-07-27 17:53:13 -0700</date>
            <delta_ts>2020-07-28 11:50:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213545-20200727205312.patch</filename>
            <type>text/plain</type>
            <size>23849</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0OTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZmY2MzhlYTlmZWE0OWMzYjNmNGZiMTdjZTBlMDVjNDZiZjdlZmNiLi4yZTc2YzZkZWMxYTY1ZDQ1
ZjQzMzY5NTczNTAyYmQ3Y2YzMDMyNDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NSBAQAorMjAyMC0wNy0yNyAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIGFkZCBJQyBzdXBwb3J0IGZvciBvcF9nZXRfcHJpdmF0ZV9uYW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM1NDUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgYmFz
ZWxpbmUgSklUIG5vdyBzdXBwb3J0cyBhIGZhc3QgcGF0aCBmb3Igb3BfcHJpdmF0ZV9uYW1lLAor
ICAgICAgICB1c2luZyBhIHZhcmlhbnQgb2YgR2V0QnlWYWwgSUMuCisKKyAgICAgICAgVGhlIGdl
bmVyYXRlZCBBY2Nlc3NDYXNlIGhhcyB0aGUgZm9sbG93aW5nIHF1YWxpdGllczoKKyAgICAgICAg
ICAtIEFsd2F5cyAiZGlyZWN0IiwgcmVseWluZyBvbmx5IG9uIHRoZSBjdXJyZW50IHN0cnVjdHVy
ZSBmb3IgY2FjaGViaWxpdHkKKyAgICAgICAgICAtIE5ldmVyIGltcHVyZSAoRE9NIHByb3BlcnRp
ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgdGhpcyB0aW1lLCBQcm94eU9iamVjdHMgYXJlIHRyZWF0
ZWQgYXMgSlNPYmplY3RzKQorCisgICAgICAgIEJhc2VkIG9uIHRoZSBtaWNyb2JlbmNobWFyayBy
ZXZpZXdlZCBvbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNTQ0
LCB0aGlzIHNlZXMKKyAgICAgICAgYW4gaW1wcm92ZW1lbnQgb2Ygcm91Z2hseSA1MCUgb24gYXZl
cmFnZS4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KToK
KyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGppdC9J
Q1N0YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmdldFByaXZhdGVOYW1lKToKKyAgICAgICAgKiBqaXQv
SklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKiBqaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRf
cHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0
ZV9uYW1lKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OmFwcHJv
cHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjphcHByb3ByaWF0
ZUdldEJ5RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5KToKKyAgICAgICAg
KiBqaXQvUmVwYXRjaC5oOgorCiAyMDIwLTA3LTI3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxl
LmNvbT4KIAogICAgICAgICBEaXNhbGxvd1ZNRW50cnkgbmVlZHMgYSBjb3B5IGFzc2lnbm1lbnQg
b3BlcmF0b3IsIGRldGVjdGVkIGJ5IGdjYydzIC1XZGVwcmVjYXRlZC1jb3B5IHdhcm5pbmcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggNzljNTA1
ZjRkMmY1MzFmZWVkNzEzY2E0MzY0NWZiNzlhYzE4Y2JkOS4uYmZhNjMwZTNmODFjNTkyZjNlYjFj
ZjBhN2I0ZDk0ZTZkMWQ2YWRjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKQEAgLTUwOSw2ICs1MDksNyBAQCBib29sIENvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlu
awogICAgICAgICBMSU5LKE9wVGFpbENhbGxGb3J3YXJkQXJndW1lbnRzLCBwcm9maWxlKQogICAg
ICAgICBMSU5LKE9wQ29uc3RydWN0VmFyYXJncywgcHJvZmlsZSkKICAgICAgICAgTElOSyhPcEdl
dEJ5VmFsLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9wR2V0UHJpdmF0ZU5hbWUsIHByb2ZpbGUp
CiAKICAgICAgICAgTElOSyhPcEdldERpcmVjdFBuYW1lLCBwcm9maWxlKQogICAgICAgICBMSU5L
KE9wR2V0QnlJZFdpdGhUaGlzLCBwcm9maWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggZGQ3Y2Y0NWNlNWI1NDRk
ZGIyN2YzYzEzN2M3ODY5NzgxYzBlYmIxNC4uMDNjNmU2MWY3ZDI1MTAxMzg2ODA4ODI3NmI0NDFk
Mzg5ZDRiOGI1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC0yNjUsNiArMjY1LDkgQEAgdm9pZCBTdHJ1Y3R1cmVT
dHViSW5mbzo6cmVzZXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYgbG9ja2VyLCBDb2Rl
QmxvY2sqIGMKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldEJ5VmFsOgogICAgICAgICByZXNldEdl
dEJ5KGNvZGVCbG9jaywgKnRoaXMsIEdldEJ5S2luZDo6Tm9ybWFsQnlWYWwpOwogICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lOgorICAgICAgICByZXNl
dEdldEJ5KGNvZGVCbG9jaywgKnRoaXMsIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWUpOworICAgICAg
ICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dDoKICAgICAgICAgcmVzZXRQdXRCeUlE
KGNvZGVCbG9jaywgKnRoaXMpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKaW5kZXggYzYzYWU5YmMwNGEw
NTM2ZmJlMGQzZjAwZTBjYjM1NzMzZGFiMjQyZC4uMThkYjY0MWRlYjJhYmM0MjZlNzdiODcwNmVj
YjlkNDg1MDVjOWE1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmgKQEAgLTU3LDcgKzU3LDggQEAgZW51bSBjbGFzcyBBY2Nlc3NU
eXBlIDogaW50OF90IHsKICAgICBJbiwKICAgICBJbnN0YW5jZU9mLAogICAgIERlbGV0ZUJ5SUQs
Ci0gICAgRGVsZXRlQnlWYWwKKyAgICBEZWxldGVCeVZhbCwKKyAgICBHZXRQcml2YXRlTmFtZSwK
IH07CiAKIGVudW0gY2xhc3MgQ2FjaGVUeXBlIDogaW50OF90IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9JQ1N0YXRzLmgKaW5kZXggOGZiN2QwNjk1Mjg5MmYyNDg3ZDdiNDZkNjVmZjgxNmE1NzMxNzM1
My4uYzhkNDEyOThiOTcwODhiNjJjN2U3ZTM1ZDI2MGU4ZWUwMmZkNjM0NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9JQ1N0YXRzLmgKQEAgLTc0LDcgKzc0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgbWFjcm8oUHV0QnlJZFNlbGZQYXRjaCkgXAogICAgIG1hY3JvKEluQnlJZFNlbGZQYXRjaCkg
XAogICAgIG1hY3JvKERlbEJ5UmVwbGFjZVdpdGhKdW1wKSBcCi0gICAgbWFjcm8oRGVsQnlSZXBs
YWNlV2l0aEdlbmVyaWMpCisgICAgbWFjcm8oRGVsQnlSZXBsYWNlV2l0aEdlbmVyaWMpIFwKKyAg
ICBtYWNybyhPcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKQogCiBjbGFzcyBJQ0V2ZW50
IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCAyMWFkNzZjZjIwNDU0
ZTJmOTg3YjBmMDAyM2Y1OWVjMDBhZmM4YWFjLi4xZTFjZjA2ZTMxNTdkMDUxNDk2NTI1MGU0YmMx
M2JiMTAxZWRkYzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yOTIsNyArMjky
LDYgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVf
U0xPV19PUChwdXNoX3dpdGhfc2NvcGUpCiAgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9s
ZXhpY2FsX2Vudmlyb25tZW50KQogICAgICAgICBERUZJTkVfU0xPV19PUChnZXRfYnlfdmFsX3dp
dGhfdGhpcykKLSAgICAgICAgREVGSU5FX1NMT1dfT1AoZ2V0X3ByaXZhdGVfbmFtZSkKICAgICAg
ICAgREVGSU5FX1NMT1dfT1AocHV0X2J5X2lkX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5FX1NM
T1dfT1AocHV0X2J5X3ZhbF93aXRoX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XX09QKHJlc29s
dmVfc2NvcGVfZm9yX2hvaXN0aW5nX2Z1bmNfZGVjbF9pbl9ldmFsKQpAQCAtMzU3LDYgKzM1Niw3
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09Q
KG9wX2dldF9ieV9pZF93aXRoX3RoaXMpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlfaWRf
ZGlyZWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X3ZhbCkKKyAgICAgICAgREVGSU5F
X09QKG9wX2dldF9wcml2YXRlX25hbWUpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfcHJvdG90
eXBlX29mKQogICAgICAgICBERUZJTkVfT1Aob3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZSkKICAg
ICAgICAgREVGSU5FX09QKG9wX2luc3RhbmNlb2YpCkBAIC01NjEsNiArNTYxLDcgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX2dldF9ieV9pZF93aXRoX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9n
ZXRfYnlfaWRfZGlyZWN0KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2J5X3Zh
bCkKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9wcml2YXRlX25hbWUpCiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9pbnN0YW5jZW9mKQogICAgICAgICBERUZJTkVfU0xP
V0NBU0VfT1Aob3BfaW5zdGFuY2VvZl9jdXN0b20pCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9qbGVzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDQ3OGNjMDdlYzZmNTUyZDI0
NjI1NGNlYzMxMDAzZWI2NjU4NmI4ZDIuLmYzYjA5MjQwMTkzNDc3MDRkYjA1NGViNDdhMDhiZDg1
MmRhZTA1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNTI3LDYgKzUyNyw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhj
b25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVj
dChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFt
ZShjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2FyZ3VtZW50
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3By
b3RvdHlwZV9vZihjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaW5f
YnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKQEAgLTY1Nyw2ICs2NTgsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3df
b3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9hcmd1bWVudF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5zdGFuY2VvZihjb25z
dCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGVmMGU4M2Y0OWQy
OTYwZTJmZjc0MzRmOGFlMGE4ZjIwYjM1Nzc0Y2MuLjFmYmFjZTA4MTAzZjg3YWY2NWUwZGVkYmZh
ZTAwNWYyZmUzNDU0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcApAQCAtMjE5Miw2ICsyMTkyLDgwIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uR2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jCiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoYmFzZVZhbHVlLmdl
dChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSkpKTsKIH0KIAorfSAvLyBleHRlcm4gIkMiCisK
K0FMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0UHJpdmF0ZU5hbWUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgYmFzZVZhbHVl
LCBKU1ZhbHVlIGZpZWxkTmFtZVZhbHVlKQoreworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBiYXNlVmFsdWUucmVxdWlyZU9iamVjdENvZXJj
aWJsZShnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFs
dWUoKSk7CisgICAgYXV0byBmaWVsZE5hbWUgPSBmaWVsZE5hbWVWYWx1ZS50b1Byb3BlcnR5S2V5
KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgp
KTsKKworICAgIEpTT2JqZWN0KiBiYXNlID0gYmFzZVZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVj
dCk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKKyAgICBiYXNlLT5nZXRQcml2YXRlRmllbGQoZ2xv
YmFsT2JqZWN0LCBmaWVsZE5hbWUsIHNsb3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIEpTVmFsdWUoKSk7CisKKyAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3Qs
IGZpZWxkTmFtZSk7Cit9CisKK2V4dGVybiAiQyIgeworCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEZpZWxkTmFtZSkKK3sKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkQmFzZSk7CisgICAgSlNWYWx1ZSBmaWVsZE5hbWVWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkRmllbGROYW1lKTsKKyAgICBBU1NFUlQoQ2FjaGVhYmxlSWRlbnRpZmllcjo6aXND
YWNoZWFibGVJZGVudGlmaWVyQ2VsbChmaWVsZE5hbWVWYWx1ZSkpOworCisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworCisgICAgLy8gT25seSBjb25z
aWRlciBjYWNoaW5nIGlmIHRoZSBiYXNlIHZhbHVlIGRvZXNuJ3QgbmVlZCB0byBiZSBjb252ZXJ0
ZWQgdG8gYSBKU09iamVjdAorICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAg
ICBjb25zdCBJZGVudGlmaWVyIGZpZWxkTmFtZSA9IGZpZWxkTmFtZVZhbHVlLnRvUHJvcGVydHlL
ZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0
aW9uKCkpOworICAgICAgICBBU1NFUlQoZmllbGROYW1lLmlzU3ltYm9sKCkpOworCisgICAgICAg
IEpTT2JqZWN0KiBiYXNlID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT50b09iamVjdChnbG9iYWxPYmpl
Y3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKKworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlLCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOworICAgICAgICBiYXNlLT5nZXRQcml2YXRl
RmllbGQoZ2xvYmFsT2JqZWN0LCBmaWVsZE5hbWUsIHNsb3QpOworICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgICAgICBMT0dfSUMoKElD
RXZlbnQ6Ok9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIGJhc2VWYWx1ZS5jbGFzc0lu
Zm9Pck51bGwodm0pLCBmaWVsZE5hbWUsIHRydWUpKTsKKworICAgICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2VsbChm
aWVsZE5hbWVWYWx1ZS5hc0NlbGwoKSk7CisgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJD
YWNoaW5nQnkodm0sIGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpLCBpZGVu
dGlmaWVyKSkKKyAgICAgICAgICAgIHJlcGF0Y2hHZXRCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9j
aywgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCBzbG90LCAqc3R1YkluZm8sIEdldEJ5S2luZDo6UHJp
dmF0ZU5hbWUpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0VmFsdWUo
Z2xvYmFsT2JqZWN0LCBmaWVsZE5hbWUpKTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShnZXRQcml2YXRlTmFtZShnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZSwgYmFzZVZhbHVlLCBmaWVsZE5hbWVWYWx1ZSkpKTsKK30KKworRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkRmllbGROYW1lKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRCYXNlKTsKKyAgICBKU1ZhbHVlIGZpZWxkTmFtZVZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRGaWVsZE5hbWUpOworCisgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRy
dWU7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShnZXRQ
cml2YXRlTmFtZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBmaWVsZE5hbWVW
YWx1ZSkpKTsKK30KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJ
bmRleGVkUHJvcGVydHlEZWZhdWx0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBC
eVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmgKaW5kZXggNGMyMjA1MzBhYjRkZTViMjZkN2Q5YWQzZDNiODJlM2I0ZGI5N2Q5YS4u
MzhjZDlmZDljMTRjZmQ3MzhkZDU1MDVlYzQ2YTI3MzYzNjkwYzljYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTI3Myw2ICsyNzMsOSBAQCBpbnQzMl90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncyhKU0dsb2JhbE9iamVj
dCosIEVuY29kZWRKU1ZhbAogQ2FsbEZyYW1lKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldHVw
Rm9yd2FyZEFyZ3VtZW50c0ZyYW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRW5jb2Rl
ZEpTVmFsdWUsIGludDMyX3QsIGludDMyX3QgbGVuZ3RoKSBXVEZfSU5URVJOQUw7CiBDYWxsRnJh
bWUqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqLCBFbmNvZGVkSlNWYWx1ZSBhcmd1bWVudHMsIGludDMyX3QgZmlyc3RW
YXJBcmdPZmZzZXQsIGludDMyX3QgbGVuZ3RoKSBXVEZfSU5URVJOQUw7CiAKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWUoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkRmllbGROYW1lKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkRmllbGROYW1lKSBXVEZfSU5URVJOQUw7CisKIGNoYXIqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uU3dpdGNoQ2hhcldpdGhVbmtub3duS2V5VHlwZShKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5kZXgpIFdURl9JTlRFUk5B
TDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3dpdGNoSW1tV2l0aFVua25vd25LZXlU
eXBlKFZNKiwgRW5jb2RlZEpTVmFsdWUga2V5LCBzaXplX3QgdGFibGVJbmRleCkgV1RGX0lOVEVS
TkFMOwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25Td2l0Y2hTdHJpbmdXaXRoVW5rbm93
bktleVR5cGUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBrZXksIHNpemVfdCB0YWJs
ZUluZGV4KSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDdlMDk0NDIwOTIyNTZjOGVhZjU3OGRhN2I0ZTE5NTI0
YzAxZWQ5Y2IuLjFhMWRmZTc3YWJkMTA3YWQzNTRmNzBmMDM0YWYwZGY0MWMwNTE1N2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC05
Niw2ICs5Niw0OCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIH0KIH0KIAordm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wR2V0UHJpdmF0ZU5hbWU+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2Rl
Lm1fZHN0OworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAg
IFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisgICAgR1BS
UmVnIGJhc2VHUFIgPSByZWdUMDsKKyAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKKyAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VHUFIpOworICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5R1BSKTsKKworICAgIGVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7CisKKyAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBn
ZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3Mo
cHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGdlbi5zdHViSW5mbygpLT5h
Y2Nlc3NUeXBlID0gQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWU7CisgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7Cisg
ICAgbV9nZXRCeVZhbHMuYXBwZW5kKGdlbik7CisKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRl
KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3Rlcihkc3QpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIEFTU0VSVChoYXNBbnlTbG93Q2FzZXMoaXRlcikp
OworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0UHJpdmF0
ZU5hbWU+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworICAg
IEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7CisgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcmVnVDE7
CisKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgSklUR2V0QnlWYWxHZW5lcmF0
b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleF07CisgICAgKyttX2dldEJ5VmFs
SW5kZXg7CisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgQ2FsbCBjYWxs
ID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2Nr
KSwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgZHN0LCBUcnVzdGVkSW1tUHRyKG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCBwcm9w
ZXJ0eUdQUik7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxs
KTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X29wX3B1dF9ieV92YWw8T3BQ
dXRCeVZhbERpcmVjdD4oY3VycmVudEluc3RydWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IGMwNDdkMmIx
MzllNmEyYjVhYWQ1MmYzNGVmNzU4ZGY5NDMwYWFlYjUuLjhhMmFmMmUyZmFmZmYyZjM2N2EzMjg3
MjMyYjU5NTk4Y2Q1OTQwMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMjg3LDYgKzI4Nyw1MSBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8UwogICAgIH0KIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZh
dGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0UHJpdmF0ZU5hbWU+KCk7
CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworICAgIFZpcnR1YWxS
ZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBwcm9w
ZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisgICAgYXV0byBiYXNlR1BSID0gSlNWYWx1ZVJl
Z3M6OnBheWxvYWRPbmx5KHJlZ1QwKTsKKyAgICBhdXRvIHByb3BlcnR5R1BSID0gSlNWYWx1ZVJl
Z3MocmVnVDMsIHJlZ1QyKTsKKworICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHBy
b3BlcnR5LCByZWdUMywgcmVnVDIpOworCisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KGJhc2UsIHJlZ1QxKTsKKworICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAg
bV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
CisgICAgICAgIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDAp
KTsKKyAgICBnZW4uc3R1YkluZm8oKS0+YWNjZXNzVHlwZSA9IEFjY2Vzc1R5cGU6OkdldFByaXZh
dGVOYW1lOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2Fz
ZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1fZ2V0QnlWYWxzLmFwcGVuZChnZW4pOworCisg
ICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jaykp
OworICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7Cit9CisKKwordm9pZCBKSVQ6OmVt
aXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBB
U1NFUlQoaGFzQW55U2xvd0Nhc2VzKGl0ZXIpKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEdldFByaXZhdGVOYW1lPigpOworICAgIFZpcnR1YWxSZWdpc3Rl
ciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisK
KyAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbElu
ZGV4XTsKKyAgICArK21fZ2V0QnlWYWxJbmRleDsKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0g
bGFiZWwoKTsKKworICAgIGF1dG8gYmFzZUdQUiA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7
CisgICAgYXV0byBwcm9wZXJ0eUdQUiA9IEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMik7CisgICAg
Q2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1f
Y29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgZHN0LCBUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBiYXNl
R1BSLCBwcm9wZXJ0eUdQUik7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJl
Z2luLCBjYWxsKTsKK30KKworCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVjdChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRfb3BfcHV0
X2J5X3ZhbDxPcFB1dEJ5VmFsRGlyZWN0PihjdXJyZW50SW5zdHJ1Y3Rpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggZGMwMDhhNGJmZjRiNzEyNWEzMTk1N2UyOGJm
YTRiMjBlNDk0YTMyMi4uZWQ0YjI4OGQ4MTI5MDVmMWNmMDlkZTAxY2JlZWEzZjEyNjhhMjliNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC0xNjIsNiArMTYyLDggQEAg
aW5saW5lIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gYXBwcm9wcmlhdGVPcHRpbWl6aW5n
R2V0QnlGdW5jdGlvbihHZXRCeUtpbmQKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldEJ5SWRE
aXJlY3RPcHRpbWl6ZTsKICAgICBjYXNlIEdldEJ5S2luZDo6Tm9ybWFsQnlWYWw6CiAgICAgICAg
IHJldHVybiBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplOworICAgIGNhc2UgR2V0QnlLaW5kOjpQ
cml2YXRlTmFtZToKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1p
emU7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC0xNzks
NiArMTgxLDggQEAgaW5saW5lIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gYXBwcm9wcmlh
dGVHZXRCeUZ1bmN0aW9uKEdldEJ5S2luZCBraW5kKQogICAgICAgICByZXR1cm4gb3BlcmF0aW9u
R2V0QnlJZERpcmVjdDsKICAgICBjYXNlIEdldEJ5S2luZDo6Tm9ybWFsQnlWYWw6CiAgICAgICAg
IHJldHVybiBvcGVyYXRpb25HZXRCeVZhbEdlbmVyaWM7CisgICAgY2FzZSBHZXRCeUtpbmQ6OlBy
aXZhdGVOYW1lOgorICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWU7CiAgICAg
fQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC0xOTgsNiArMjAyLDcg
QEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogICAgICAgICBpZiAoIWJhc2VWYWx1ZS5pc0NlbGwo
KSkKICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICBKU0NlbGwqIGJh
c2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBjb25zdCBib29sIGlzUHJpdmF0
ZSA9IGtpbmQgPT0gR2V0QnlLaW5kOjpQcml2YXRlTmFtZTsKIAogICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKIApAQCAtMjUzLDYgKzI1OCw4IEBAIHN0YXRpYyBJ
bmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENvZGVCbG9jayoKIAogICAgICAgICAgICAgYm9vbCBsb2FkVGFyZ2V0RnJvbVByb3h5ID0g
ZmFsc2U7CiAgICAgICAgICAgICBpZiAoYmFzZUNlbGwtPnR5cGUoKSA9PSBQdXJlRm9yd2FyZGlu
Z1Byb3h5VHlwZSkgeworICAgICAgICAgICAgICAgIGlmIChpc1ByaXZhdGUpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICAgICAgICAgIGJhc2VWYWx1
ZSA9IGpzQ2FzdDxKU1Byb3h5Kj4oYmFzZUNlbGwpLT50YXJnZXQoKTsKICAgICAgICAgICAgICAg
ICBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKICAgICAgICAgICAgICAgICBzdHJ1Y3R1
cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKHZtKTsKQEAgLTMwOCw5ICszMTUsOSBAQCBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDb2RlQmxvY2sqCiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNVbnNldCgpICYmIHN0
cnVjdHVyZS0+dHlwZUluZm8oKS5nZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5
QWJzZW5jZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKIAot
ICAgICAgICAgICAgICAgIC8vIElmIGEga2luZCBpcyBHZXRCeUtpbmQ6OkRpcmVjdCwgd2UgZG8g
bm90IG5lZWQgdG8gaW52ZXN0aWdhdGUgcHJvdG90eXBlIGNoYWlucyBmdXJ0aGVyLgorICAgICAg
ICAgICAgICAgIC8vIElmIGEga2luZCBpcyBHZXRCeUtpbmQ6OkRpcmVjdCBvciBHZXRCeUtpbmQ6
OlByaXZhdGVOYW1lLCB3ZSBkbyBub3QgbmVlZCB0byBpbnZlc3RpZ2F0ZSBwcm90b3R5cGUgY2hh
aW5zIGZ1cnRoZXIuCiAgICAgICAgICAgICAgICAgLy8gQ2FjaGVhYmlsaXR5IGp1c3QgZGVwZW5k
cyBvbiB0aGUgaGVhZCBzdHJ1Y3R1cmUuCi0gICAgICAgICAgICAgICAgaWYgKGtpbmQgIT0gR2V0
QnlLaW5kOjpEaXJlY3QpIHsKKyAgICAgICAgICAgICAgICBpZiAoa2luZCAhPSBHZXRCeUtpbmQ6
OkRpcmVjdCAmJiAhaXNQcml2YXRlKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gY2FjaGVT
dGF0dXMgPSBwcmVwYXJlQ2hhaW5Gb3JDYWNoaW5nKGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIHNs
b3QpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWNhY2hlU3RhdHVzKQogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CkBAIC0zNzQsNyArMzgxLDE0IEBAIHN0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENvZGVCbG9jayoKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWxvYWRUYXJnZXRG
cm9tUHJveHkgJiYgZ2V0dGVyICYmIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNhbkVtaXRJ
bnRyaW5zaWNHZXR0ZXIoZ2V0dGVyLCBzdHJ1Y3R1cmUpKQogICAgICAgICAgICAgICAgIG5ld0Nh
c2UgPSBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgcHJv
cGVydHlOYW1lLCBzbG90LmNhY2hlZE9mZnNldCgpLCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwg
Z2V0dGVyLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CiAgICAgICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkgfHwgc2xvdC5p
c1Vuc2V0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNQcml2YXRlKSB7CisgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVCghc2xvdC5pc1Vuc2V0KCkpOworICAgICAgICAgICAgICAgICAgICBj
b25zdGV4cHIgYm9vbCBjYW5ub3RCZVByb3h5ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAg
IGlmICghc2xvdC5pc0NhY2hlYWJsZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEdpdmVVcE9uQ2FjaGU7CisgICAgICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBQcm94eWFibGVB
Y2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6TG9hZCwgcHJvcGVy
dHlOYW1lLCBvZmZzZXQsIHN0cnVjdHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRp
dGlvblNldCwgY2Fubm90QmVQcm94eSwgc2xvdC53YXRjaHBvaW50U2V0KCksIFdURk1vdmUocHJv
dG90eXBlQWNjZXNzQ2hhaW4pKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNsb3QuaXND
YWNoZWFibGVWYWx1ZSgpIHx8IHNsb3QuaXNVbnNldCgpKSB7CiAgICAgICAgICAgICAgICAgICAg
IG5ld0Nhc2UgPSBQcm94eWFibGVBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgc2xv
dC5pc1Vuc2V0KCkgPyBBY2Nlc3NDYXNlOjpNaXNzIDogQWNjZXNzQ2FzZTo6TG9hZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZSwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRp
dGlvblNldCwgbG9hZFRhcmdldEZyb21Qcm94eSwgc2xvdC53YXRjaHBvaW50U2V0KCksIFdURk1v
dmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAppbmRleCBkODkwZmQ3MGFhY2Q4MmZmYmY0ZGE4ZmIy
NGUxZjNkZmY1NzQ5ZGMwLi4wODNhM2Q1ZDY4NGNhYmRmYjE0Y2NhZWI3NDVmZWM3NjNkZmJjYTIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaApAQCAtMzgsNyArMzgsOCBAQCBlbnVt
IGNsYXNzIEdldEJ5S2luZCB7CiAgICAgTm9ybWFsQnlWYWwsCiAgICAgVHJ5LAogICAgIFdpdGhU
aGlzLAotICAgIERpcmVjdAorICAgIERpcmVjdCwKKyAgICBQcml2YXRlTmFtZSwKIH07CiAKIGVu
dW0gY2xhc3MgRGVsQnlLaW5kIHsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjFhZDNhZjMyMjIyMmE1MzM1ZGI1ODg4YjE1MWNjOTJjODU4
M2M5NC4uZmZmYzZkMTFlYjRhMzFjMTg5NmY3ZDBmMzg1ZjgzODZkMWI0NTRiOCAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAyMC0wNy0yNyAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtKU0NdIGFkZCBJQyBzdXBwb3J0IGZvciBvcF9nZXRfcHJpdmF0ZV9uYW1lCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM1NDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBjcmFzaHRl
c3QgZm9yIGEgY3Jhc2ggaW4gYW4gZWFybGllciBlZGl0aW9uIG9mIHRoZSBHUE4gSUMgcGF0Y2gu
CisKKyAgICAgICAgKiBzdHJlc3MvZ2V0LXByaXZhdGUtbmFtZS1jYWNoZS1mYWlsdXJlLmpzOiBB
ZGRlZC4KKwogMjAyMC0wNy0yNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgog
CiAgICAgICAgIFVwZGF0ZSB0ZXN0MjYyCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZXQt
cHJpdmF0ZS1uYW1lLWNhY2hlLWZhaWx1cmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZXQtcHJpdmF0
ZS1uYW1lLWNhY2hlLWZhaWx1cmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWZkMzNjMTc2YjFlZDQ0N2YxMTRh
YTBkYWQ5Zjg5OGJkNzhkYTBmNwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dl
dC1wcml2YXRlLW5hbWUtY2FjaGUtZmFpbHVyZS5qcwpAQCAtMCwwICsxLDQyIEBACisvL0ByZXF1
aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIsICItLXVzZUxMSW50PWZh
bHNlIiwgIi0tZm9yY2VJQ0ZhaWx1cmU9dHJ1ZSIpCisvLyBSZWdyZXNzaW9uIHRlc3Q6IEVuc3Vy
ZSB0aGF0IHdlIGRvbid0IGNyYXNoIHdoZW4gb3BfZ2V0X3ByaXZhdGVfZmllbGQgY2FjaGluZyBy
ZXN1bHRzIGluCisvLyBnaXZpbmcgdXAgb24gY2FjaGluZy5gCisKK2Z1bmN0aW9uIGFzc2VydChl
eHByLCBtZXNzYWdlKSB7CisgIGlmICghZXhwcikKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2Vy
dGlvbiBGYWlsZWQ6ICR7bWVzc2FnZX1gKTsKK30KK09iamVjdC5hc3NpZ24oYXNzZXJ0LCB7Cisg
IGVxdWFscyhhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgYXNzZXJ0KGFjdHVhbCA9PT0gZXhwZWN0
ZWQsIGBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZm91bmQgJHthY3R1YWx9YCk7CisgIH0sCisg
IHRocm93cyhmbiwgZXJyb3JUeXBlKSB7CisgICAgdHJ5IHsKKyAgICAgIGZuKCk7CisgICAgfSBj
YXRjaCAoZSkgeworICAgICAgaWYgKHR5cGVvZiBlcnJvclR5cGUgPT09ICJmdW5jdGlvbiIpCisg
ICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgZXJyb3JUeXBlLCBgZXhwZWN0ZWQgdG8gdGhyb3cg
JHtlcnJvclR5cGUubmFtZX0gYnV0IHRocmV3ICR7ZX1gKTsKKyAgICAgIHJldHVybjsKKyAgICB9
CisgICAgYXNzZXJ0KGZhbHNlLCBgZXhwZWN0ZWQgdG8gdGhyb3csIGJ1dCBubyBleGNlcHRpb24g
d2FzIHRocm93bi5gKTsKKyAgfQorfSk7CisKK2NsYXNzIEMgeworICAjeCA9IDU7CisgIGdldChv
KSB7IHJldHVybiBvLiN4OyB9Cit9CitsZXQgZ2V0ID0gQy5wcm90b3R5cGUuZ2V0OworZnVuY3Rp
b24gdGVzdEFjY2VzcygpIHsKKyAgYXNzZXJ0LmVxdWFscyhnZXQobmV3IEMpLCA1KTsKK30KK25v
SW5saW5lKHRlc3RBY2Nlc3MpOworZnVuY3Rpb24gdGVzdFRocm93cygpIHsKKyAgYXNzZXJ0LnRo
cm93cygoKSA9PiBnZXQoZ2xvYmFsVGhpcyksIFR5cGVFcnJvcik7Cit9Citub0lubGluZSh0ZXN0
VGhyb3dzKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAyMDsgKytpKSB7CisgIHRlc3RBY2Nlc3Mo
KTsKKyAgdGVzdFRocm93cygpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405385</attachid>
            <date>2020-07-28 11:50:36 -0700</date>
            <delta_ts>2020-07-28 12:28:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213545-20200728145034.patch</filename>
            <type>text/plain</type>
            <size>30045</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0OTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NTY0NjQ1YjYyYjk3NDM4MWMzZTEzOTM3NDZkZGYxNjFiMWQzZjA4Li5iNDlhOTdhZWViM2VmZWEy
Y2Q2MjRmYzM1MDlkYWY0MGQ4MzQxODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NiBAQAorMjAyMC0wNy0yOCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIGFkZCBJQyBzdXBwb3J0IGZvciBvcF9nZXRfcHJpdmF0ZV9uYW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM1NDUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgYmFz
ZWxpbmUgSklUIG5vdyBzdXBwb3J0cyBhIGZhc3QgcGF0aCBmb3Igb3BfcHJpdmF0ZV9uYW1lLAor
ICAgICAgICB1c2luZyBhIHZhcmlhbnQgb2YgR2V0QnlWYWwgSUMuCisKKyAgICAgICAgVGhlIGdl
bmVyYXRlZCBBY2Nlc3NDYXNlIGhhcyB0aGUgZm9sbG93aW5nIHF1YWxpdGllczoKKyAgICAgICAg
ICAtIEFsd2F5cyAiZGlyZWN0IiwgcmVseWluZyBvbmx5IG9uIHRoZSBjdXJyZW50IHN0cnVjdHVy
ZSBmb3IgY2FjaGViaWxpdHkKKyAgICAgICAgICAtIE5ldmVyIGltcHVyZSAoRE9NIHByb3BlcnRp
ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgdGhpcyB0aW1lLCBQcm94eU9iamVjdHMgYXJlIHRyZWF0
ZWQgYXMgSlNPYmplY3RzKQorCisgICAgICAgIEJhc2VkIG9uIHRoZSBtaWNyb2JlbmNobWFyayBy
ZXZpZXdlZCBvbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNTQ0
LCB0aGlzIHNlZXMKKyAgICAgICAgYW4gaW1wcm92ZW1lbnQgb2Ygcm91Z2hseSA1MCUgb24gYXZl
cmFnZS4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KToK
KyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBm
dGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZUdldEJ5VmFsKToKKyAgICAgICAgKiBqaXQvSUNTdGF0cy5oOgorICAgICAg
ICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBh
c3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAg
ICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6SklUR2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2VuZXJh
dG9yKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAgICAg
KiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmdldFByaXZhdGVOYW1lKToK
KyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUpOgorICAgICAgICAqIGppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9i
eV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAg
ICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZU9wdGltaXppbmdH
ZXRCeUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVHZXRCeUZ1bmN0aW9uKToK
KyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeSk6CisgICAgICAgICogaml0L1JlcGF0Y2guaDoK
KwogMjAyMC0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtKU0NdW3dhc21dIFRydW5jYXRpbmcgc2xpZ2h0bHkgbGVzcyB0aGFuIElOVDMyX01JTiBp
cyBpbmNvcnJlY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKaW5kZXggNzljNTA1ZjRkMmY1MzFmZWVkNzEzY2E0MzY0NWZiNzlhYzE4Y2JkOS4uYmZhNjMw
ZTNmODFjNTkyZjNlYjFjZjBhN2I0ZDk0ZTZkMWQ2YWRjNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTUwOSw2ICs1MDksNyBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4
ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5LKE9wVGFpbENhbGxGb3J3YXJkQXJndW1lbnRz
LCBwcm9maWxlKQogICAgICAgICBMSU5LKE9wQ29uc3RydWN0VmFyYXJncywgcHJvZmlsZSkKICAg
ICAgICAgTElOSyhPcEdldEJ5VmFsLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9wR2V0UHJpdmF0
ZU5hbWUsIHByb2ZpbGUpCiAKICAgICAgICAgTElOSyhPcEdldERpcmVjdFBuYW1lLCBwcm9maWxl
KQogICAgICAgICBMSU5LKE9wR2V0QnlJZFdpdGhUaGlzLCBwcm9maWxlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXgg
ZGQ3Y2Y0NWNlNWI1NDRkZGIyN2YzYzEzN2M3ODY5NzgxYzBlYmIxNC4uMDNjNmU2MWY3ZDI1MTAx
Mzg2ODA4ODI3NmI0NDFkMzg5ZDRiOGI1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC0yNjUsNiArMjY1LDkgQEAg
dm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFz
ZSYgbG9ja2VyLCBDb2RlQmxvY2sqIGMKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldEJ5VmFsOgog
ICAgICAgICByZXNldEdldEJ5KGNvZGVCbG9jaywgKnRoaXMsIEdldEJ5S2luZDo6Tm9ybWFsQnlW
YWwpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1l
OgorICAgICAgICByZXNldEdldEJ5KGNvZGVCbG9jaywgKnRoaXMsIEdldEJ5S2luZDo6UHJpdmF0
ZU5hbWUpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dDoKICAgICAg
ICAgcmVzZXRQdXRCeUlEKGNvZGVCbG9jaywgKnRoaXMpOwogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKaW5k
ZXggYzYzYWU5YmMwNGEwNTM2ZmJlMGQzZjAwZTBjYjM1NzMzZGFiMjQyZC4uMThkYjY0MWRlYjJh
YmM0MjZlNzdiODcwNmVjYjlkNDg1MDVjOWE1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKQEAgLTU3LDcgKzU3LDggQEAgZW51
bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90IHsKICAgICBJbiwKICAgICBJbnN0YW5jZU9mLAog
ICAgIERlbGV0ZUJ5SUQsCi0gICAgRGVsZXRlQnlWYWwKKyAgICBEZWxldGVCeVZhbCwKKyAgICBH
ZXRQcml2YXRlTmFtZSwKIH07CiAKIGVudW0gY2xhc3MgQ2FjaGVUeXBlIDogaW50OF90IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCmluZGV4IGExZjMxYWI0NDkxZTFjMTQ3NjhlNzBiOWI2NWFkZjJkMGMzYjdmZTIuLjhhOTVk
ZjU1Mjg0NmFhNjRkYmZlM2E2NGM2YzM3NTM0YWI4NDkxNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjMyNiw3
ICsyMzI2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VS
ZWdzLnRhZ0dQUigpKSk7CiAKICAgICAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigK
LSAgICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUs
IHVzZWRSZWdpc3RlcnMsCisgICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVP
cmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgdXNlZFJlZ2lzdGVycywKICAg
ICAgICAgICAgICAgICBiYXNlUmVncywgcHJvcGVydHlSZWdzLCByZXN1bHRSZWdzKTsKIAogICAg
ICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEp
KS5pc1R5cGUoU3BlY1N0cmluZykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCAwNmEwODFjYWRjZTJhZjQ4YWE1ZWYwMzViOWMy
MTg0YjE3ZGE2NjMyLi41MGYyY2QwZjNkY2EwNmNmYjVlYTZjZGZhOWQ3YTk4YmVjZTgxMjlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKQEAgLTI2OTUsNyArMjY5NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElm
Tm90Q2VsbChiYXNlR1BSKSk7CiAKICAgICAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdl
bigKLSAgICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNp
dGUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNv
ZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgdXNlZFJlZ2lzdGVycywK
ICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVy
dHlHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpKTsKIAogICAgICAgICAgICAgaWYgKG1fc3Rh
dGUuZm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKS5pc1R5cGUoU3BlY1N0cmlu
ZykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5k
ZXggNjcxMjIwZmNlZjkxOGM5ODRmOGFiZmM3NjA4NjAzZmQyYTBhOTYyMi4uNWFiMzY4Y2E4MjFh
MWRjOTcwNDM1NjExYTFjM2YzOTE5OGI3ZTJhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNDg5Nyw4ICs0ODk3LDggQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwYXJhbXNbMl0uZ3ByKCk7CiAK
ICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeVZhbEdlbmVyYXRv
cj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJl
Z3MocHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpKTsKKyAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5k
ZXgsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLAorICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHBy
b3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSk7CiAKICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3ItPnN0dWJJbmZvKCktPnByb3BlcnR5SXNTdHJpbmcgPSBwcm9wZXJ0eUlzU3RyaW5n
OwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+cHJvcGVydHlJc0ludDMy
ID0gcHJvcGVydHlJc0ludDMyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9JQ1N0YXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAppbmRleCA4
ZmI3ZDA2OTUyODkyZjI0ODdkN2I0NmQ2NWZmODE2YTU3MzE3MzUzLi5jOGQ0MTI5OGI5NzA4OGI2
MmM3ZTdlMzVkMjYwZThlZTAyZmQ2MzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0lDU3RhdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMu
aApAQCAtNzQsNyArNzQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhQdXRCeUlkU2Vs
ZlBhdGNoKSBcCiAgICAgbWFjcm8oSW5CeUlkU2VsZlBhdGNoKSBcCiAgICAgbWFjcm8oRGVsQnlS
ZXBsYWNlV2l0aEp1bXApIFwKLSAgICBtYWNybyhEZWxCeVJlcGxhY2VXaXRoR2VuZXJpYykKKyAg
ICBtYWNybyhEZWxCeVJlcGxhY2VXaXRoR2VuZXJpYykgXAorICAgIG1hY3JvKE9wZXJhdGlvbkdl
dFByaXZhdGVOYW1lT3B0aW1pemUpCiAKIGNsYXNzIElDRXZlbnQgewogcHVibGljOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDIxYWQ3NmNmMjA0NTRlMmY5ODdiMGYwMDIzZjU5ZWMw
MGFmYzhhYWMuLjFlMWNmMDZlMzE1N2QwNTE0OTY1MjUwZTRiYzEzYmIxMDFlZGRjMmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTI5Miw3ICsyOTIsNiBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9TTE9XX09QKHB1c2hfd2l0aF9z
Y29wZSkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQp
CiAgICAgICAgIERFRklORV9TTE9XX09QKGdldF9ieV92YWxfd2l0aF90aGlzKQotICAgICAgICBE
RUZJTkVfU0xPV19PUChnZXRfcHJpdmF0ZV9uYW1lKQogICAgICAgICBERUZJTkVfU0xPV19PUChw
dXRfYnlfaWRfd2l0aF90aGlzKQogICAgICAgICBERUZJTkVfU0xPV19PUChwdXRfYnlfdmFsX3dp
dGhfdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dfT1AocmVzb2x2ZV9zY29wZV9mb3JfaG9pc3Rp
bmdfZnVuY19kZWNsX2luX2V2YWwpCkBAIC0zNTcsNiArMzU2LDcgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lkX3dpdGhf
dGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV9pZF9kaXJlY3QpCiAgICAgICAgIERF
RklORV9PUChvcF9nZXRfYnlfdmFsKQorICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3ByaXZhdGVf
bmFtZSkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9wcm90b3R5cGVfb2YpCiAgICAgICAgIERF
RklORV9PUChvcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKQogICAgICAgICBERUZJTkVfT1Aob3Bf
aW5zdGFuY2VvZikKQEAgLTU2MSw2ICs1NjEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2J5X2lkX3dpdGhf
dGhpcykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9ieV9pZF9kaXJlY3QpCiAg
ICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYnlfdmFsKQorICAgICAgICBERUZJTkVf
U0xPV0NBU0VfT1Aob3BfZ2V0X3ByaXZhdGVfbmFtZSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X09QKG9wX2luc3RhbmNlb2YpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9pbnN0YW5j
ZW9mX2N1c3RvbSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2psZXNzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgKaW5kZXggNDc4Y2MwN2VjNmY1NTJkMjQ2MjU0Y2VjMzEwMDNlYjY2NTg2
YjhkMi4uZjNiMDkyNDAxOTM0NzcwNGRiMDU0ZWI0N2EwOGJkODUyZGFlMDVhYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCkBAIC01MjcsNiArNTI3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcHJvdG90eXBlX29mKGNvbnN0IElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVj
dGlvbiopOwpAQCAtNjU3LDYgKzY1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lk
IGVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
Z2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3df
b3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbl9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCAyMzY4MzA0NWYx
ZmQxZjZhYTQ1ZTYxZDYzODlhZWYxZmMyODIwMWU2Li5kOGY5NWJiMGY3Y2ZjODk4MmIzOGU4NzBl
MWJiYjdhMWQ0OTBkMmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApAQCAtMjkxLDggKzI5MSw4IEBAIHZvaWQgSklU
SW5zdGFuY2VPZkdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtC
dWZmZXImIHNsb3dQYXRoCiAgICAgZmFzdFBhdGgubGluayhtX2p1bXAubV9qdW1wLCBzbG93UGF0
aC5sb2NhdGlvbk9mPE5vUHRyVGFnPihtX3Nsb3dQYXRoQmVnaW4pKTsKIH0KIAotSklUR2V0QnlW
YWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBD
b2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdz
IHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQpCi0gICAgOiBCYXNlKGNvZGVCbG9jaywgY29k
ZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIHVzZWRSZWdpc3Rl
cnMpCitKSVRHZXRCeVZhbEdlbmVyYXRvcjo6SklUR2V0QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJl
Z3MgcmVzdWx0KQorICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5k
ZXgsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCiAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAs
IG1fcmVzdWx0KHJlc3VsdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRleCA3MzI5ZDZiNzM4MTRkNmM0YmE1NTJhNTg5
M2U3MmIwMjFlNmE1MTIwLi4yOWMyZDJlNmQzMjhkYTljYjM3NjExNWQ5OTJlYTJhMmM1MGM1OTk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5oCkBAIC0yMzIsNyArMjMyLDcgQEAgcHVibGljOgogICAgIEpJVEdldEJ5VmFsR2Vu
ZXJhdG9yKCkgeyB9CiAKICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJs
b2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsCisgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgs
IEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAogICAgICAgICBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0
KTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBlZjBlODNmNDlk
Mjk2MGUyZmY3NDM0ZjhhZTBhOGYyMGIzNTc3NGNjLi4xZmE2OWJhMmIyNjQwZGEwOTlhYTg3ZTc2
ZDcwOTg2NWUwMjJiZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKQEAgLTIxOTIsNiArMjE5Miw3OCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwog
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5n
ZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSk7CiB9CiAKK30gLy8gZXh0ZXJuICJDIgor
CitBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldFByaXZhdGVOYW1lKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGJhc2VWYWx1
ZSwgSlNWYWx1ZSBmaWVsZE5hbWVWYWx1ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1l
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RDb2Vy
Y2libGUoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1Zh
bHVlKCkpOworICAgIGF1dG8gZmllbGROYW1lID0gZmllbGROYW1lVmFsdWUudG9Qcm9wZXJ0eUtl
eShnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUo
KSk7CisKKyAgICBKU09iamVjdCogYmFzZSA9IGJhc2VWYWx1ZS50b09iamVjdChnbG9iYWxPYmpl
Y3QpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2UsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7CisgICAgYmFzZS0+Z2V0UHJpdmF0ZUZpZWxkKGds
b2JhbE9iamVjdCwgZmllbGROYW1lLCBzbG90KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBKU1ZhbHVlKCkpOworCisgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0
LCBmaWVsZE5hbWUpOworfQorCitleHRlcm4gIkMiIHsKKworRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRGaWVsZE5hbWUpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZEJhc2UpOworICAgIEpTVmFsdWUgZmllbGROYW1lVmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZEZpZWxkTmFtZSk7CisgICAgQVNTRVJUKENhY2hlYWJsZUlkZW50aWZpZXI6Omlz
Q2FjaGVhYmxlSWRlbnRpZmllckNlbGwoZmllbGROYW1lVmFsdWUpKTsKKworICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKworICAgIGlmIChiYXNlVmFs
dWUuaXNPYmplY3QoKSkgeworICAgICAgICBjb25zdCBJZGVudGlmaWVyIGZpZWxkTmFtZSA9IGZp
ZWxkTmFtZVZhbHVlLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgRVhDRVBU
SU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOworICAgICAgICBBU1NFUlQoZmllbGROYW1l
LmlzU3ltYm9sKCkpOworCisgICAgICAgIEpTT2JqZWN0KiBiYXNlID0ganNDYXN0PEpTT2JqZWN0
Kj4oYmFzZVZhbHVlLmFzQ2VsbCgpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKKyAgICAg
ICAgYmFzZS0+Z2V0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgZmllbGROYW1lLCBzbG90KTsK
KyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisK
KyAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXpl
LCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKHZtKSwgZmllbGROYW1lLCB0cnVlKSk7CisKKyAg
ICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUNlbGwoZmllbGROYW1lVmFsdWUuYXNDZWxsKCkpOworICAgICAgICBpZiAo
c3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIGJhc2VWYWx1ZS5zdHJ1
Y3R1cmVPck51bGwoKSwgaWRlbnRpZmllcikpCisgICAgICAgICAgICByZXBhdGNoR2V0QnkoZ2xv
YmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgaWRlbnRpZmllciwgc2xvdCwgKnN0dWJJ
bmZvLCBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShzbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgZmllbGROYW1lKSk7CisgICAgfQorCisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZ2V0UHJpdmF0ZU5h
bWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgZmllbGROYW1lVmFsdWUpKSk7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJpdmF0ZU5h
bWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEZp
ZWxkTmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAgIEpT
VmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKyAgICBKU1Zh
bHVlIGZpZWxkTmFtZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRGaWVsZE5hbWUpOwor
CisgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CisKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGdldFByaXZhdGVOYW1lKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFs
dWUsIGZpZWxkTmFtZVZhbHVlKSk7Cit9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFN1YnNjcmlwdCwgQnlWYWxJbmZvKiBieVZhbEluZm8pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDRjMjIwNTMwYWI0ZGU1YjI2ZDdkOWFkM2QzYjgy
ZTNiNGRiOTdkOWEuLjM4Y2Q5ZmQ5YzE0Y2ZkNzM4ZGQ1NTA1ZWM0NmEyNzM2MzY5MGM5Y2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0yNzMsNiArMjcz
LDkgQEAgaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3Mo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWwKIENhbGxGcmFtZSogSklUX09QRVJBVElPTiBv
cGVyYXRpb25TZXR1cEZvcndhcmRBcmd1bWVudHNGcmFtZShKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90LCBpbnQzMl90IGxlbmd0aCkgV1RGX0lOVEVS
TkFMOwogQ2FsbEZyYW1lKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1l
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRW5jb2RlZEpTVmFsdWUgYXJndW1lbnRzLCBp
bnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBpbnQzMl90IGxlbmd0aCkgV1RGX0lOVEVSTkFMOwog
CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEZpZWxkTmFtZSkgV1RGX0lOVEVSTkFMOworRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXpl
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEZpZWxkTmFtZSkgV1RGX0lOVEVSTkFMOwor
CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN3aXRjaENoYXJXaXRoVW5rbm93bktleVR5
cGUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBrZXksIHNpemVfdCB0YWJsZUluZGV4
KSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN3aXRjaEltbVdp
dGhVbmtub3duS2V5VHlwZShWTSosIEVuY29kZWRKU1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5k
ZXgpIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3dpdGNoU3Ry
aW5nV2l0aFVua25vd25LZXlUeXBlKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUga2V5
LCBzaXplX3QgdGFibGVJbmRleCkgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA3ZTA5NDQyMDkyMjU2YzhlYWY1
NzhkYTdiNGUxOTUyNGMwMWVkOWNiLi5jMjFjMGU2MWJlYjE1MzhiNjBhZTJhYTMxNzBjNTUyYTIz
ZjM2YmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIGVtaXRBcnJheVBy
b2ZpbGluZ1NpdGVXaXRoQ2VsbChyZWdUMCwgcmVnVDIsIHByb2ZpbGUpOwogCiAgICAgICAgIEpJ
VEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpLAogICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVl
UmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CiAgICAgICAgIGlmIChpc09wZXJhbmRD
b25zdGFudEludChwcm9wZXJ0eSkpCiAgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVy
dHlJc0ludDMyID0gdHJ1ZTsKQEAgLTk2LDYgKzk2LDQ3IEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTCiAgICAgfQogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRQcml2YXRlTmFtZT4oKTsKKyAgICBWaXJ0dWFs
UmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2Ug
PSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNv
ZGUubV9wcm9wZXJ0eTsKKyAgICBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOworICAgIEdQUlJlZyBw
cm9wZXJ0eUdQUiA9IHJlZ1QxOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFz
ZUdQUik7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlHUFIp
OworCisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKKworICAg
IEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nl
c3NUeXBlOjpHZXRQcml2YXRlTmFtZSwKKyAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVy
dHlHUFIpLCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0
aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1fZ2V0QnlW
YWxzLmFwcGVuZChnZW4pOworCisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5t
ZXRhZGF0YShtX2NvZGVCbG9jaykpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsK
K30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKK3sKKyAgICBBU1NFUlQoaGFzQW55U2xvd0Nhc2VzKGl0ZXIpKTsKKyAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFByaXZhdGVOYW1lPigpOwor
ICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBHUFJSZWcgYmFz
ZUdQUiA9IHJlZ1QwOworICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHJlZ1QxOworCisgICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBt
X2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXhdOworICAgICsrbV9nZXRCeVZhbEluZGV4OworICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVy
YXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lT3B0aW1pemUsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwor
ICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Cit9CisKIHZv
aWQgSklUOjplbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWxEaXJl
Y3Q+KGN1cnJlbnRJbnN0cnVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCBjMDQ3ZDJiMTM5ZTZhMmI1YWFk
NTJmMzRlZjc1OGRmOTQzMGFhZWI1Li4yYTVlY2M3NDIxNDU1MDQ3MTU3M2IwOTE5OGNjMTVlYjQ5
NGJmZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9n
ZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAg
IGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChyZWdUMCwgcmVnVDQsIHByb2ZpbGUpOwog
CiAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgIG1fY29kZUJs
b2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAg
ICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBh
eWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3Mo
cmVnVDEsIHJlZ1QwKSk7CiAgICAgICAgIGlmIChpc09wZXJhbmRDb25zdGFudEludChwcm9wZXJ0
eSkpCiAgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc0ludDMyID0gdHJ1ZTsK
QEAgLTI4Nyw2ICsyODcsNTAgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICB9CiB9CiAK
K3ZvaWQgSklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEdldFByaXZhdGVOYW1lPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBi
eXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFz
ZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5Owor
ICAgIGF1dG8gYmFzZUdQUiA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCk7CisgICAg
YXV0byBwcm9wZXJ0eUdQUiA9IEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMik7CisKKyAgICBlbWl0
TG9hZDIoYmFzZSwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eSwgcmVnVDMsIHJlZ1QyKTsKKworICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7CisKKyAgICBKSVRHZXRC
eVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6
R2V0UHJpdmF0ZU5hbWUsCisgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkp
OworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4u
c2xvd1BhdGhKdW1wKCkpOworICAgIG1fZ2V0QnlWYWxzLmFwcGVuZChnZW4pOworCisgICAgZW1p
dFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jaykpOworICAg
IGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7Cit9CisKKwordm9pZCBKSVQ6OmVtaXRTbG93
X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBBU1NFUlQo
aGFzQW55U2xvd0Nhc2VzKGl0ZXIpKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcEdldFByaXZhdGVOYW1lPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3Qg
PSBieXRlY29kZS5tX2RzdDsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICBK
SVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4XTsK
KyAgICArK21fZ2V0QnlWYWxJbmRleDsKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwo
KTsKKworICAgIGF1dG8gYmFzZUdQUiA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CisgICAg
YXV0byBwcm9wZXJ0eUdQUiA9IEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMik7CisgICAgQ2FsbCBj
YWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJs
b2NrKSwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgZHN0LCBUcnVzdGVkSW1tUHRy
KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCBw
cm9wZXJ0eUdQUik7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBj
YWxsKTsKK30KKworCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVjdChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRfb3BfcHV0X2J5X3Zh
bDxPcFB1dEJ5VmFsRGlyZWN0PihjdXJyZW50SW5zdHJ1Y3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggZGMwMDhhNGJmZjRiNzEyNWEzMTk1N2UyOGJmYTRiMjBl
NDk0YTMyMi4uYjc2MGNiMzQ1MWVlZjQ0MTc0ZDUzYjdlZGNlZjNkMzk2ZWNjNzQwYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC0xNjIsNiArMTYyLDggQEAgaW5saW5l
IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlG
dW5jdGlvbihHZXRCeUtpbmQKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldEJ5SWREaXJlY3RP
cHRpbWl6ZTsKICAgICBjYXNlIEdldEJ5S2luZDo6Tm9ybWFsQnlWYWw6CiAgICAgICAgIHJldHVy
biBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplOworICAgIGNhc2UgR2V0QnlLaW5kOjpQcml2YXRl
TmFtZToKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemU7CiAg
ICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC0xNzksNiArMTgx
LDggQEAgaW5saW5lIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gYXBwcm9wcmlhdGVHZXRC
eUZ1bmN0aW9uKEdldEJ5S2luZCBraW5kKQogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0QnlJ
ZERpcmVjdDsKICAgICBjYXNlIEdldEJ5S2luZDo6Tm9ybWFsQnlWYWw6CiAgICAgICAgIHJldHVy
biBvcGVyYXRpb25HZXRCeVZhbEdlbmVyaWM7CisgICAgY2FzZSBHZXRCeUtpbmQ6OlByaXZhdGVO
YW1lOgorICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWU7CiAgICAgfQogICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC0xOTgsNiArMjAyLDcgQEAgc3Rh
dGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrKgogICAgICAgICBpZiAoIWJhc2VWYWx1ZS5pc0NlbGwoKSkKICAg
ICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICBKU0NlbGwqIGJhc2VDZWxs
ID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBjb25zdCBib29sIGlzUHJpdmF0ZSA9IGtp
bmQgPT0gR2V0QnlLaW5kOjpQcml2YXRlTmFtZTsKIAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKIApAQCAtMjUzLDYgKzI1OCw4IEBAIHN0YXRpYyBJbmxpbmVD
YWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENv
ZGVCbG9jayoKIAogICAgICAgICAgICAgYm9vbCBsb2FkVGFyZ2V0RnJvbVByb3h5ID0gZmFsc2U7
CiAgICAgICAgICAgICBpZiAoYmFzZUNlbGwtPnR5cGUoKSA9PSBQdXJlRm9yd2FyZGluZ1Byb3h5
VHlwZSkgeworICAgICAgICAgICAgICAgIGlmIChpc1ByaXZhdGUpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICAgICAgICAgIGJhc2VWYWx1ZSA9IGpz
Q2FzdDxKU1Byb3h5Kj4oYmFzZUNlbGwpLT50YXJnZXQoKTsKICAgICAgICAgICAgICAgICBiYXNl
Q2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBi
YXNlQ2VsbC0+c3RydWN0dXJlKHZtKTsKQEAgLTMwOCw5ICszMTUsOSBAQCBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqCiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNVbnNldCgpICYmIHN0cnVjdHVy
ZS0+dHlwZUluZm8oKS5nZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5j
ZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKIAotICAgICAg
ICAgICAgICAgIC8vIElmIGEga2luZCBpcyBHZXRCeUtpbmQ6OkRpcmVjdCwgd2UgZG8gbm90IG5l
ZWQgdG8gaW52ZXN0aWdhdGUgcHJvdG90eXBlIGNoYWlucyBmdXJ0aGVyLgorICAgICAgICAgICAg
ICAgIC8vIElmIGEga2luZCBpcyBHZXRCeUtpbmQ6OkRpcmVjdCBvciBHZXRCeUtpbmQ6OlByaXZh
dGVOYW1lLCB3ZSBkbyBub3QgbmVlZCB0byBpbnZlc3RpZ2F0ZSBwcm90b3R5cGUgY2hhaW5zIGZ1
cnRoZXIuCiAgICAgICAgICAgICAgICAgLy8gQ2FjaGVhYmlsaXR5IGp1c3QgZGVwZW5kcyBvbiB0
aGUgaGVhZCBzdHJ1Y3R1cmUuCi0gICAgICAgICAgICAgICAgaWYgKGtpbmQgIT0gR2V0QnlLaW5k
OjpEaXJlY3QpIHsKKyAgICAgICAgICAgICAgICBpZiAoa2luZCAhPSBHZXRCeUtpbmQ6OkRpcmVj
dCAmJiAhaXNQcml2YXRlKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gY2FjaGVTdGF0dXMg
PSBwcmVwYXJlQ2hhaW5Gb3JDYWNoaW5nKGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIHNsb3QpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoIWNhY2hlU3RhdHVzKQogICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CkBAIC0zNzQsNyArMzgxLDE0IEBAIHN0YXRpYyBJ
bmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENvZGVCbG9jayoKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWxvYWRUYXJnZXRGcm9tUHJv
eHkgJiYgZ2V0dGVyICYmIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNhbkVtaXRJbnRyaW5z
aWNHZXR0ZXIoZ2V0dGVyLCBzdHJ1Y3R1cmUpKQogICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBJ
bnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgcHJvcGVydHlO
YW1lLCBzbG90LmNhY2hlZE9mZnNldCgpLCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgZ2V0dGVy
LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CiAgICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkgfHwgc2xvdC5pc1Vuc2V0
KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNQcml2YXRlKSB7CisgICAgICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKCFzbG90LmlzVW5zZXQoKSk7CisgICAgICAgICAgICAgICAgICAg
IGNvbnN0ZXhwciBib29sIGlzUHJveHkgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFzbG90LmlzQ2FjaGVhYmxlKCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2
ZVVwT25DYWNoZTsKKyAgICAgICAgICAgICAgICAgICAgbmV3Q2FzZSA9IFByb3h5YWJsZUFjY2Vz
c0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpMb2FkLCBwcm9wZXJ0eU5h
bWUsIG9mZnNldCwgc3RydWN0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9u
U2V0LCBpc1Byb3h5LCBzbG90LndhdGNocG9pbnRTZXQoKSwgV1RGTW92ZShwcm90b3R5cGVBY2Nl
c3NDaGFpbikpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2xvdC5pc0NhY2hlYWJsZVZh
bHVlKCkgfHwgc2xvdC5pc1Vuc2V0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgbmV3Q2FzZSA9
IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBzbG90LmlzVW5zZXQo
KSA/IEFjY2Vzc0Nhc2U6Ok1pc3MgOiBBY2Nlc3NDYXNlOjpMb2FkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvcGVydHlOYW1lLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBs
b2FkVGFyZ2V0RnJvbVByb3h5LCBzbG90LndhdGNocG9pbnRTZXQoKSwgV1RGTW92ZShwcm90b3R5
cGVBY2Nlc3NDaGFpbikpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5oCmluZGV4IGQ4OTBmZDcwYWFjZDgyZmZiZjRkYThmYjI0ZTFmM2RmZjU3
NDlkYzAuLjA4M2EzZDVkNjg0Y2FiZGZiMTRjY2FlYjc0NWZlYzc2M2RmYmNhMjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCkBAIC0zOCw3ICszOCw4IEBAIGVudW0gY2xhc3MgR2V0
QnlLaW5kIHsKICAgICBOb3JtYWxCeVZhbCwKICAgICBUcnksCiAgICAgV2l0aFRoaXMsCi0gICAg
RGlyZWN0CisgICAgRGlyZWN0LAorICAgIFByaXZhdGVOYW1lLAogfTsKIAogZW51bSBjbGFzcyBE
ZWxCeUtpbmQgewpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5n
ZUxvZwppbmRleCA4YjJjY2ZiY2Y1ZWNjZTk1ZmFjOWYxYWYzMDczMmZhODdkOGE4ZTIwLi43ZjVl
MGFkZDE4MWI0MzA0MjI4NTdlNWI1YjJhY2FjMTI2YTlhOTQzIDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIw
LTA3LTI4ICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pT
Q10gYWRkIElDIHN1cHBvcnQgZm9yIG9wX2dldF9wcml2YXRlX25hbWUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzU0NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGNyYXNodGVzdCBmb3IgYSBj
cmFzaCBpbiBhbiBlYXJsaWVyIGVkaXRpb24gb2YgdGhlIEdQTiBJQyBwYXRjaC4KKworICAgICAg
ICAqIHN0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLWNhY2hlLWZhaWx1cmUuanM6IEFkZGVkLgorCiAy
MDIwLTA3LTI3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAg
W0pTQ11bd2FzbV0gVHJ1bmNhdGluZyBzbGlnaHRseSBsZXNzIHRoYW4gSU5UMzJfTUlOIGlzIGlu
Y29ycmVjdApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtbmFtZS1jYWNo
ZS1mYWlsdXJlLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtbmFtZS1jYWNoZS1mYWls
dXJlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVmZDMzYzE3NmIxZWQ0NDdmMTE0YWEwZGFkOWY4OThiZDc4ZGEw
ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLWNh
Y2hlLWZhaWx1cmUuanMKQEAgLTAsMCArMSw0MiBAQAorLy9AcmVxdWlyZU9wdGlvbnMoIi0tdXNl
UHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiLCAiLS11c2VMTEludD1mYWxzZSIsICItLWZvcmNlSUNG
YWlsdXJlPXRydWUiKQorLy8gUmVncmVzc2lvbiB0ZXN0OiBFbnN1cmUgdGhhdCB3ZSBkb24ndCBj
cmFzaCB3aGVuIG9wX2dldF9wcml2YXRlX2ZpZWxkIGNhY2hpbmcgcmVzdWx0cyBpbgorLy8gZ2l2
aW5nIHVwIG9uIGNhY2hpbmcuYAorCitmdW5jdGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSkgewor
ICBpZiAoIWV4cHIpCisgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gRmFpbGVkOiAke21l
c3NhZ2V9YCk7Cit9CitPYmplY3QuYXNzaWduKGFzc2VydCwgeworICBlcXVhbHMoYWN0dWFsLCBl
eHBlY3RlZCkgeworICAgIGFzc2VydChhY3R1YWwgPT09IGV4cGVjdGVkLCBgZXhwZWN0ZWQgJHtl
eHBlY3RlZH0gYnV0IGZvdW5kICR7YWN0dWFsfWApOworICB9LAorICB0aHJvd3MoZm4sIGVycm9y
VHlwZSkgeworICAgIHRyeSB7CisgICAgICBmbigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
IGlmICh0eXBlb2YgZXJyb3JUeXBlID09PSAiZnVuY3Rpb24iKQorICAgICAgICBhc3NlcnQoZSBp
bnN0YW5jZW9mIGVycm9yVHlwZSwgYGV4cGVjdGVkIHRvIHRocm93ICR7ZXJyb3JUeXBlLm5hbWV9
IGJ1dCB0aHJldyAke2V9YCk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGFzc2VydChmYWxz
ZSwgYGV4cGVjdGVkIHRvIHRocm93LCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24uYCk7Cisg
IH0KK30pOworCitjbGFzcyBDIHsKKyAgI3ggPSA1OworICBnZXQobykgeyByZXR1cm4gby4jeDsg
fQorfQorbGV0IGdldCA9IEMucHJvdG90eXBlLmdldDsKK2Z1bmN0aW9uIHRlc3RBY2Nlc3MoKSB7
CisgIGFzc2VydC5lcXVhbHMoZ2V0KG5ldyBDKSwgNSk7Cit9Citub0lubGluZSh0ZXN0QWNjZXNz
KTsKK2Z1bmN0aW9uIHRlc3RUaHJvd3MoKSB7CisgIGFzc2VydC50aHJvd3MoKCkgPT4gZ2V0KGds
b2JhbFRoaXMpLCBUeXBlRXJyb3IpOworfQorbm9JbmxpbmUodGVzdFRocm93cyk7CisKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMjA7ICsraSkgeworICB0ZXN0QWNjZXNzKCk7CisgIHRlc3RUaHJvd3Mo
KTsKK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>