<?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>238966</bug_id>
          
          <creation_ts>2022-04-07 15:50:40 -0700</creation_ts>
          <short_desc>[WebAuthn] Implement getTransports() and getAuthenticatorData() on AuthenticatorAttestationResponse</short_desc>
          <delta_ts>2022-04-15 10:39:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="pascoe@apple.com">pascoe</reporter>
          <assigned_to name="pascoe@apple.com">pascoe</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1859480</commentid>
    <comment_count>0</comment_count>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-04-07 15:50:40 -0700</bug_when>
    <thetext>^
https://www.w3.org/TR/webauthn-2/#authenticatorattestationresponse</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859481</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-07 15:50:52 -0700</bug_when>
    <thetext>&lt;rdar://problem/91449906&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859598</commentid>
    <comment_count>2</comment_count>
      <attachid>457020</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-04-07 22:22:15 -0700</bug_when>
    <thetext>Created attachment 457020
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860304</commentid>
    <comment_count>3</comment_count>
      <attachid>457257</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-04-11 09:25:07 -0700</bug_when>
    <thetext>Created attachment 457257
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860348</commentid>
    <comment_count>4</comment_count>
      <attachid>457271</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-04-11 10:44:36 -0700</bug_when>
    <thetext>Created attachment 457271
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860353</commentid>
    <comment_count>5</comment_count>
      <attachid>457271</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-11 11:02:26 -0700</bug_when>
    <thetext>Comment on attachment 457271
Patch

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

&gt; Source/WebCore/Modules/webauthn/AuthenticatorAttestationResponse.cpp:65
&gt; +    return m_transports;

Should probably be inline in the header.

&gt; Source/WebCore/Modules/webauthn/AuthenticatorAttestationResponse.h:43
&gt; +    Vector&lt;AuthenticatorTransport&gt; getTransports() const;

should return a const Vector&lt;AuthenticatorTransport&gt;&amp;

&gt; Source/WebCore/Modules/webauthn/AuthenticatorAttestationResponse.idl:33
&gt; +    sequence&lt;AuthenticatorTransport&gt;            getTransports();

We don&apos;t usually do alignment like this in modern WebKit code.

&gt; Source/WebCore/Modules/webauthn/AuthenticatorAttestationResponse.idl:34
&gt; +    ArrayBuffer                                 getAuthenticatorData();

ditto.

&gt; Source/WebCore/Modules/webauthn/AuthenticatorResponseData.h:151
&gt; +        result.transports = *transports;

WTFMove(*transports)

&gt; Source/WebCore/Modules/webauthn/WebAuthenticationConstants.h:96
&gt; +constexpr const char authenticatorTransportUsb[] = &quot;usb&quot;;

These should likely be defined as ASCIILiteral, not const char*.

&gt; Source/WebCore/Modules/webauthn/fido/AuthenticatorGetInfoResponse.cpp:89
&gt; +    for (auto&amp; transport : transports) {

Seems like we want a function that returns a String from a AuthenticatorTransport. Then we wouldn&apos;t need this whole function to convert the vector, you would just use transports.map(convertAuthenticatorTransportToString).

Vector::map() would also be more efficient than your implementation.

&gt; Source/WebCore/Modules/webauthn/fido/AuthenticatorGetInfoResponse.cpp:92
&gt; +            stringTransports.append(String::fromLatin1(WebCore::authenticatorTransportUsb));

Then here you wouldn&apos;t need the String::fromLatin1(). String construction would also be more efficient as we wouldn&apos;t need to copy the chars.

&gt; Source/WebCore/Modules/webauthn/fido/AuthenticatorGetInfoResponse.h:64
&gt; +    const std::optional&lt;Vector&lt;WebCore::AuthenticatorTransport&gt;&gt; transports() const { return m_transports; }

should return a `const std::optional&lt;Vector&lt;WebCore::AuthenticatorTransport&gt;&gt;&amp;`, not a `const std::optional&lt;Vector&lt;WebCore::AuthenticatorTransport&gt;&gt;`

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticatorCoordinatorProxy.mm:345
&gt; +    Vector&lt;WebCore::AuthenticatorTransport&gt; transports;

Should call reserveInitialCapacity()

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticatorCoordinatorProxy.mm:347
&gt; +        transports.append(static_cast&lt;WebCore::AuthenticatorTransport&gt;(ascTransport.intValue));

Should call uncheckedAppend() once you reserve capacity.

&gt; Source/WebKit/UIProcess/WebAuthentication/fido/CtapDriver.h:56
&gt; +    CtapDriver(WebCore::AuthenticatorTransport transport) { m_transport = transport; }

Please use the initialization list, not an assignment in the constructor body.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860390</commentid>
    <comment_count>6</comment_count>
      <attachid>457282</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-04-11 13:32:37 -0700</bug_when>
    <thetext>Created attachment 457282
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860911</commentid>
    <comment_count>7</comment_count>
      <attachid>457282</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-04-12 14:57:39 -0700</bug_when>
    <thetext>Comment on attachment 457282
Patch

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

I think this looks good, but please correct the ArrayBuffer handling. At present, I think you will end up returning deallocated memory as the ArrayBuffer will be +0 reference count as currently written.

&gt; Source/WebCore/Modules/webauthn/AuthenticatorAttestationResponse.cpp:63
&gt; +ArrayBuffer* AuthenticatorAttestationResponse::getAuthenticatorData() const

This should be RefPtr&lt;ArrayBuffer&gt; ...

&gt; Source/WebCore/Modules/webauthn/AuthenticatorAttestationResponse.cpp:68
&gt; +        return nullptr;

You could do something fancy for JavaScript:

if (!decodedResponse || !decodedResponse-&gt;isMap())
    return Exception { SyntaxError, &quot;CBOR parsing failed&quot;_s };

&gt; Source/WebCore/Modules/webauthn/AuthenticatorAttestationResponse.cpp:74
&gt; +        return nullptr;

Ditto:
if (it == attObjMap.end() || !it-&gt;second.isByteString())
    return Exception { SyntaxError, &quot;Attestation missing authData &lt;&lt;OR SOMETHING&gt;&gt;&quot;_s {;

&gt; Source/WebCore/Modules/webauthn/AuthenticatorAttestationResponse.cpp:75
&gt; +    }

Is there any benefit to caching the converted bytes so we don&apos;t have to do this work repeatedly? Or does the m_attestationObject change too much for that to be worth doing?

&gt; Source/WebCore/Modules/webauthn/AuthenticatorAttestationResponse.cpp:77
&gt; +    return ArrayBuffer::create(authData.data(), authData.size()).ptr();

Why don&apos;t we return the Ref&lt;&gt; instead of this bare pointer? Seems likely to be the source of memory issues.

Instead, I think you should do:

return ArrayBuffer::tryCreate(authData.data(), authData.size());

Better yet, change the signature to ExceptionOr&lt;RefPtr&lt;JSC::ArrayBuffer&gt;&gt;, too.

&gt; Source/WebCore/Modules/webauthn/AuthenticatorAttestationResponse.h:44
&gt; +    ArrayBuffer* getAuthenticatorData() const;

I think this should be something like:
    ExceptionOr&lt;RefPtr&lt;JSC::ArrayBuffer&gt;&gt; getAuthenticatorData();

Or just:
RefPtr&lt;JSC::ArrayBuffer&gt; getAuthenticationData();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860918</commentid>
    <comment_count>8</comment_count>
      <attachid>457282</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-12 15:05:54 -0700</bug_when>
    <thetext>Comment on attachment 457282
Patch

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

&gt;&gt; Source/WebCore/Modules/webauthn/AuthenticatorAttestationResponse.cpp:77
&gt;&gt; +    return ArrayBuffer::create(authData.data(), authData.size()).ptr();
&gt; 
&gt; Why don&apos;t we return the Ref&lt;&gt; instead of this bare pointer? Seems likely to be the source of memory issues.
&gt; 
&gt; Instead, I think you should do:
&gt; 
&gt; return ArrayBuffer::tryCreate(authData.data(), authData.size());
&gt; 
&gt; Better yet, change the signature to ExceptionOr&lt;RefPtr&lt;JSC::ArrayBuffer&gt;&gt;, too.

I agree about returning a RefPtr&lt;&lt;JSC::ArrayBuffer&gt;&gt;, the current code is definitely unsafe.
However, I don&apos;t understand why we would want to return a `ExceptionOr&lt;RefPtr&lt;JSC::ArrayBuffer&gt;&gt;` as Brent suggested, given that this function never returns any exception. This will result in an extra branch in JS bindings code for no reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860919</commentid>
    <comment_count>9</comment_count>
      <attachid>457282</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-12 15:07:37 -0700</bug_when>
    <thetext>Comment on attachment 457282
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/webauthn/AuthenticatorAttestationResponse.cpp:77
&gt;&gt;&gt; +    return ArrayBuffer::create(authData.data(), authData.size()).ptr();
&gt;&gt; 
&gt;&gt; Why don&apos;t we return the Ref&lt;&gt; instead of this bare pointer? Seems likely to be the source of memory issues.
&gt;&gt; 
&gt;&gt; Instead, I think you should do:
&gt;&gt; 
&gt;&gt; return ArrayBuffer::tryCreate(authData.data(), authData.size());
&gt;&gt; 
&gt;&gt; Better yet, change the signature to ExceptionOr&lt;RefPtr&lt;JSC::ArrayBuffer&gt;&gt;, too.
&gt; 
&gt; I agree about returning a RefPtr&lt;&lt;JSC::ArrayBuffer&gt;&gt;, the current code is definitely unsafe.
&gt; However, I don&apos;t understand why we would want to return a `ExceptionOr&lt;RefPtr&lt;JSC::ArrayBuffer&gt;&gt;` as Brent suggested, given that this function never returns any exception. This will result in an extra branch in JS bindings code for no reason.

Doh! I missed that Brent suggested above to return an Exception in some cases. Please disregard my comment then :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860920</commentid>
    <comment_count>10</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-04-12 15:08:02 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; Comment on attachment 457282 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=457282&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/Modules/webauthn/AuthenticatorAttestationResponse.cpp:77
&gt; &gt;&gt; +    return ArrayBuffer::create(authData.data(), authData.size()).ptr();
&gt; &gt; 
&gt; &gt; Why don&apos;t we return the Ref&lt;&gt; instead of this bare pointer? Seems likely to be the source of memory issues.
&gt; &gt; 
&gt; &gt; Instead, I think you should do:
&gt; &gt; 
&gt; &gt; return ArrayBuffer::tryCreate(authData.data(), authData.size());
&gt; &gt; 
&gt; &gt; Better yet, change the signature to ExceptionOr&lt;RefPtr&lt;JSC::ArrayBuffer&gt;&gt;, too.
&gt; 
&gt; I agree about returning a RefPtr&lt;&lt;JSC::ArrayBuffer&gt;&gt;, the current code is
&gt; definitely unsafe.
&gt; However, I don&apos;t understand why we would want to return a
&gt; `ExceptionOr&lt;RefPtr&lt;JSC::ArrayBuffer&gt;&gt;` as Brent suggested, given that this
&gt; function never returns any exception. This will result in an extra branch in
&gt; JS bindings code for no reason.

Pascoe mentioned this was primarily a convenience function for websites, so I thought that returning an Exception in the two failure cases (above) would be helpful to the developer.

For example, missing &quot;authData&quot; might be something they could fix or report to the user in some useful way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860923</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-12 15:10:44 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #10)
&gt; (In reply to Chris Dumez from comment #8)
&gt; &gt; Comment on attachment 457282 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=457282&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/Modules/webauthn/AuthenticatorAttestationResponse.cpp:77
&gt; &gt; &gt;&gt; +    return ArrayBuffer::create(authData.data(), authData.size()).ptr();
&gt; &gt; &gt; 
&gt; &gt; &gt; Why don&apos;t we return the Ref&lt;&gt; instead of this bare pointer? Seems likely to be the source of memory issues.
&gt; &gt; &gt; 
&gt; &gt; &gt; Instead, I think you should do:
&gt; &gt; &gt; 
&gt; &gt; &gt; return ArrayBuffer::tryCreate(authData.data(), authData.size());
&gt; &gt; &gt; 
&gt; &gt; &gt; Better yet, change the signature to ExceptionOr&lt;RefPtr&lt;JSC::ArrayBuffer&gt;&gt;, too.
&gt; &gt; 
&gt; &gt; I agree about returning a RefPtr&lt;&lt;JSC::ArrayBuffer&gt;&gt;, the current code is
&gt; &gt; definitely unsafe.
&gt; &gt; However, I don&apos;t understand why we would want to return a
&gt; &gt; `ExceptionOr&lt;RefPtr&lt;JSC::ArrayBuffer&gt;&gt;` as Brent suggested, given that this
&gt; &gt; function never returns any exception. This will result in an extra branch in
&gt; &gt; JS bindings code for no reason.
&gt; 
&gt; Pascoe mentioned this was primarily a convenience function for websites, so
&gt; I thought that returning an Exception in the two failure cases (above) would
&gt; be helpful to the developer.
&gt; 
&gt; For example, missing &quot;authData&quot; might be something they could fix or report
&gt; to the user in some useful way.

Yes, I had missed that you suggested raising an exception in some cases. Note that it really depends if these cases are supposed to be possible or not.
Given that there was an ASSERT_NOT_REACHED(), I assumed we don&apos;t expect this to happen in practice so presumably, whatever exception we generate would not be observable (unless the assertion is wrong). I don&apos;t really mind adding exception throwing code though here if we&apos;re unsure this can happen in practice or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860930</commentid>
    <comment_count>12</comment_count>
      <attachid>457282</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-04-12 15:21:33 -0700</bug_when>
    <thetext>Comment on attachment 457282
Patch

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

&gt;&gt;&gt;&gt;&gt;&gt; Source/WebCore/Modules/webauthn/AuthenticatorAttestationResponse.cpp:77
&gt;&gt;&gt;&gt;&gt;&gt; +    return ArrayBuffer::create(authData.data(), authData.size()).ptr();
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; Why don&apos;t we return the Ref&lt;&gt; instead of this bare pointer? Seems likely to be the source of memory issues.
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; Instead, I think you should do:
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; return ArrayBuffer::tryCreate(authData.data(), authData.size());
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; Better yet, change the signature to ExceptionOr&lt;RefPtr&lt;JSC::ArrayBuffer&gt;&gt;, too.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I agree about returning a RefPtr&lt;&lt;JSC::ArrayBuffer&gt;&gt;, the current code is definitely unsafe.
&gt;&gt;&gt;&gt; However, I don&apos;t understand why we would want to return a `ExceptionOr&lt;RefPtr&lt;JSC::ArrayBuffer&gt;&gt;` as Brent suggested, given that this function never returns any exception. This will result in an extra branch in JS bindings code for no reason.
&gt;&gt;&gt; 
&gt;&gt;&gt; Doh! I missed that Brent suggested above to return an Exception in some cases. Please disregard my comment then :)
&gt;&gt; 
&gt;&gt; Pascoe mentioned this was primarily a convenience function for websites, so I thought that returning an Exception in the two failure cases (above) would be helpful to the developer.
&gt;&gt; 
&gt;&gt; For example, missing &quot;authData&quot; might be something they could fix or report to the user in some useful way.
&gt; 
&gt; Yes, I had missed that you suggested raising an exception in some cases. Note that it really depends if these cases are supposed to be possible or not.
&gt; Given that there was an ASSERT_NOT_REACHED(), I assumed we don&apos;t expect this to happen in practice so presumably, whatever exception we generate would not be observable (unless the assertion is wrong). I don&apos;t really mind adding exception throwing code though here if we&apos;re unsure this can happen in practice or not.

That&apos;s a good point. Probably better to avoid the complexity and runtime cost since these are ASSERT_NOT_REACHED cases. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860933</commentid>
    <comment_count>13</comment_count>
      <attachid>457282</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-12 15:22:11 -0700</bug_when>
    <thetext>Comment on attachment 457282
Patch

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

&gt; Source/WebCore/Modules/webauthn/WebAuthenticationConstants.h:96
&gt; +constexpr ASCIILiteral authenticatorTransportUsb = { &quot;usb&quot;_s };

nit: Could use use auto instead of ASCIILiteral here and for other below.

&gt; Source/WebCore/Modules/webauthn/WebAuthenticationUtils.cpp:49
&gt; +    return convertBytesToVector(reinterpret_cast&lt;uint8_t*&gt;(buffer-&gt;data()), buffer-&gt;byteLength());

This should be a static_cast&lt;&gt;, not a reinterpret_cast&lt;&gt;.

&gt; Source/WebCore/Modules/webauthn/fido/AuthenticatorGetInfoResponse.h:64
&gt; +    const std::optional&lt;Vector&lt;WebCore::AuthenticatorTransport&gt;&gt; transports() const { return m_transports; }

As mentioned in my earlier review, I believe this should return a `const std::optional&lt;Vector&lt;WebCore::AuthenticatorTransport&gt;&gt;&amp;`, not a `const std::optional&lt;Vector&lt;WebCore::AuthenticatorTransport&gt;&gt;`

&gt; Source/WebCore/Modules/webauthn/fido/DeviceResponseConverter.cpp:350
&gt; +            if (!transportString.isString())

Isn&apos;t it a little odd that having a non-string in the array will cause us to return nullopt but having an invalid string in that array will just be ignored and will return a vector?
The inconsistency doesn&apos;t seem great unless there is a good reason for it.

&gt; Source/WebCore/Modules/webauthn/fido/DeviceResponseConverter.cpp:353
&gt; +            if (transport)

could reduce scope by doing:
if (auto transport = convertStringToAuthenticatorTransport(transportString.getString()))

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:-52
&gt; -

I think we should keep this blank line. Seems unusual otherwise.

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:67
&gt; +#import &quot;AuthenticationServicesCoreSoftLink.h&quot;

Why isn&apos;t this with the other includes?

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticatorCoordinatorProxy.mm:348
&gt; +        transports.uncheckedAppend(static_cast&lt;WebCore::AuthenticatorTransport&gt;(ascTransport.intValue));

Don&apos;t we need to do some validation here? What if the array contains an int for the given enum?

&gt; Source/WebKit/UIProcess/WebAuthentication/fido/CtapAuthenticator.cpp:390
&gt; +    if (infoTransports)

if (auto infoTransports = m_info.transports())

to reduce scope. Also, if m_info.transports() returns a reference (hard for me to tell here), this would be even better:
if (auto&amp; infoTransports = m_info.transports())

&gt; Source/WebKit/UIProcess/WebAuthentication/fido/CtapAuthenticator.h:73
&gt; +    Vector&lt;WebCore::AuthenticatorTransport&gt; transports();

can this be const?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860942</commentid>
    <comment_count>14</comment_count>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-04-12 15:38:58 -0700</bug_when>
    <thetext>Really appreciate all the comments / review. Will fix these issues and put up another revision shortly.

(In reply to Chris Dumez from comment #13)
&gt; &gt; Source/WebCore/Modules/webauthn/fido/DeviceResponseConverter.cpp:350
&gt; &gt; +            if (!transportString.isString())
&gt; 
&gt; Isn&apos;t it a little odd that having a non-string in the array will cause us to
&gt; return nullopt but having an invalid string in that array will just be
&gt; ignored and will return a vector?
&gt; The inconsistency doesn&apos;t seem great unless there is a good reason for it.
&gt; 
&gt; &gt; Source/WebCore/Modules/webauthn/fido/DeviceResponseConverter.cpp:353
&gt; &gt; +            if (transport)
&gt; 

This is a list of transports the authenticator supports, specified here: https://fidoalliance.org/specs/fido-v2.1-rd-20201208/fido-client-to-authenticator-protocol-v2.1-rd-20201208.html#getinfo-transports

The spec says &quot;Platforms MUST tolerate unknown values,&quot; so invalid strings are fine. We don&apos;t want to reject future authenticators that support transport=&quot;carrier-pigeon&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860946</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-12 15:46:49 -0700</bug_when>
    <thetext>(In reply to j_pascoe@apple.com from comment #14)
&gt; Really appreciate all the comments / review. Will fix these issues and put
&gt; up another revision shortly.
&gt; 
&gt; (In reply to Chris Dumez from comment #13)
&gt; &gt; &gt; Source/WebCore/Modules/webauthn/fido/DeviceResponseConverter.cpp:350
&gt; &gt; &gt; +            if (!transportString.isString())
&gt; &gt; 
&gt; &gt; Isn&apos;t it a little odd that having a non-string in the array will cause us to
&gt; &gt; return nullopt but having an invalid string in that array will just be
&gt; &gt; ignored and will return a vector?
&gt; &gt; The inconsistency doesn&apos;t seem great unless there is a good reason for it.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/Modules/webauthn/fido/DeviceResponseConverter.cpp:353
&gt; &gt; &gt; +            if (transport)
&gt; &gt; 
&gt; 
&gt; This is a list of transports the authenticator supports, specified here:
&gt; https://fidoalliance.org/specs/fido-v2.1-rd-20201208/fido-client-to-
&gt; authenticator-protocol-v2.1-rd-20201208.html#getinfo-transports
&gt; 
&gt; The spec says &quot;Platforms MUST tolerate unknown values,&quot; so invalid strings
&gt; are fine. We don&apos;t want to reject future authenticators that support
&gt; transport=&quot;carrier-pigeon&quot;

So maybe we can ignore values that aren&apos;t strings (use continue instead of return), similarly to what we do for invalid strings?

Also how about JS values that can be converted into a String? For e.g., what should happen if the array contains this:
{ toString: () =&gt; { return &quot;usb&quot;; } };

Because you reject non-strings right now, you would ignore it. If you weren&apos;t rejecting non-string and calling JSValue::toString() instead of JSValue::getString(), you would treat it as &quot;usb&quot;.
Not sure which is right, just thought I would mention it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860948</commentid>
    <comment_count>16</comment_count>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-04-12 15:53:20 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #15)
&gt; (In reply to j_pascoe@apple.com from comment #14)
&gt; &gt; Really appreciate all the comments / review. Will fix these issues and put
&gt; &gt; up another revision shortly.
&gt; &gt; 
&gt; &gt; (In reply to Chris Dumez from comment #13)
&gt; &gt; &gt; &gt; Source/WebCore/Modules/webauthn/fido/DeviceResponseConverter.cpp:350
&gt; &gt; &gt; &gt; +            if (!transportString.isString())
&gt; &gt; &gt; 
&gt; &gt; &gt; Isn&apos;t it a little odd that having a non-string in the array will cause us to
&gt; &gt; &gt; return nullopt but having an invalid string in that array will just be
&gt; &gt; &gt; ignored and will return a vector?
&gt; &gt; &gt; The inconsistency doesn&apos;t seem great unless there is a good reason for it.
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/Modules/webauthn/fido/DeviceResponseConverter.cpp:353
&gt; &gt; &gt; &gt; +            if (transport)
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; This is a list of transports the authenticator supports, specified here:
&gt; &gt; https://fidoalliance.org/specs/fido-v2.1-rd-20201208/fido-client-to-
&gt; &gt; authenticator-protocol-v2.1-rd-20201208.html#getinfo-transports
&gt; &gt; 
&gt; &gt; The spec says &quot;Platforms MUST tolerate unknown values,&quot; so invalid strings
&gt; &gt; are fine. We don&apos;t want to reject future authenticators that support
&gt; &gt; transport=&quot;carrier-pigeon&quot;
&gt; 
&gt; So maybe we can ignore values that aren&apos;t strings (use continue instead of
&gt; return), similarly to what we do for invalid strings?
&gt; 
&gt; Also how about JS values that can be converted into a String? For e.g., what
&gt; should happen if the array contains this:
&gt; { toString: () =&gt; { return &quot;usb&quot;; } };
&gt; 
&gt; Because you reject non-strings right now, you would ignore it. If you
&gt; weren&apos;t rejecting non-string and calling JSValue::toString() instead of
&gt; JSValue::getString(), you would treat it as &quot;usb&quot;.
&gt; Not sure which is right, just thought I would mention it.

We could, the spec says transports MUST either not be present or be a non-empty array of strings. We don&apos;t need to worry about JS values that can be converted to string here as we are parsing CBOR.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861179</commentid>
    <comment_count>17</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-04-13 11:09:53 -0700</bug_when>
    <thetext>*** Bug 204807 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861584</commentid>
    <comment_count>18</comment_count>
      <attachid>457643</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-04-14 11:43:50 -0700</bug_when>
    <thetext>Created attachment 457643
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861837</commentid>
    <comment_count>19</comment_count>
      <attachid>457643</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-04-15 10:14:09 -0700</bug_when>
    <thetext>Comment on attachment 457643
Patch

Thanks for making those changes! r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861843</commentid>
    <comment_count>20</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-15 10:39:53 -0700</bug_when>
    <thetext>Committed r292913 (249683@main): &lt;https://commits.webkit.org/249683@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 457643.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457020</attachid>
            <date>2022-04-07 22:22:15 -0700</date>
            <delta_ts>2022-04-11 09:25:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238966-20220407222214.patch</filename>
            <type>text/plain</type>
            <size>61201</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzZjOGZlOTcwYzA5NTcz
MzkwYjMyZjc4YjRhYTM0NWY5MDg1NjYyYS4uNWEwODVlNmZjNjMzNzFlOGQwZTVkOTk5NjU4OGYw
MzgwZWJlOGVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIyLTA0LTA3ICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVu
dCBnZXRUcmFuc3BvcnRzKCkgYW5kIGdldEF1dGhlbnRpY2F0b3JEYXRhKCkgb24gQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzODk2NgorICAgICAgICByZGFyOi8vcHJvYmxlbS85MTQ0OTkwNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpBdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Z2V0VHJhbnNwb3J0cyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Z2V0QXV0
aGVudGljYXRvckRhdGEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdG9yUmVzcG9uc2U6OnRyeUNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JSZXNwb25zZURhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yUmVzcG9uc2VEYXRhOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0
aG4vQXV0aGVudGljYXRvclRyYW5zcG9ydC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvclRyYW5zcG9ydC5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9X
ZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4v
V2ViQXV0aGVudGljYXRpb25VdGlscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0QXJy
YXlCdWZmZXJUb1ZlY3Rvcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50
aWNhdGlvblV0aWxzLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0F1dGhlbnRp
Y2F0b3JHZXRJbmZvUmVzcG9uc2UuY3BwOgorICAgICAgICAoZmlkbzo6QXV0aGVudGljYXRvckdl
dEluZm9SZXNwb25zZTo6c2V0VHJhbnNwb3J0cyk6CisgICAgICAgIChmaWRvOjp0b1N0cmluZ1Zl
Y3Rvcik6CisgICAgICAgIChmaWRvOjplbmNvZGVBc0NCT1IpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXV0aG4vZmlkby9BdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlLmg6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcDoKKyAgICAg
ICAgKGZpZG86OmNvbnZlcnRTdHJpbmdUb0F1dGhlbnRpY2F0b3JUcmFuc3BvcnQpOgorICAgICAg
ICAoZmlkbzo6cmVhZENUQVBNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKToKKyAgICAgICAgKGZpZG86
OnJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoZmlkbzo6cmVhZFUyZlJl
Z2lzdGVyUmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNw
b25zZUNvbnZlcnRlci5oOgorICAgICAgICAoZmlkbzo6cmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2Up
OgorCiAyMDIyLTA0LTA2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFVuaWZ5IHRoZSB0d28gSW1hZ2VCdWZmZXI6OmNyZWF0ZSgpIGZ1bmN0aW9ucywg
cGFzc2luZyBSZW5kZXJpbmdQdXJwb3NlIGV2ZXJ5d2hlcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjAzMzFjYzgz
YjdhM2NiZGRhYWU3ZjhmOWZlY2U0NTAzOWQwNzY5ZC4uNmJlNGE0NzI1YjIwOGFhMTczZDM1YTYy
NDc5YWU2ZjIzMzM0ODU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAyMi0wNC0wNyAg
SiBQYXNjb2UgIDxqX3Bhc2NvZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBs
ZW1lbnQgZ2V0VHJhbnNwb3J0cygpIGFuZCBnZXRBdXRoZW50aWNhdG9yRGF0YSgpIG9uIEF1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg5NjYKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vOTE0NDk5
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBs
YXRmb3JtL3NwaS9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlLm1tOgorICAgICAgICAoLVtfV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRp
b25SZXNwb25zZSBpbml0V2l0aENsaWVudERhdGFKU09OOnJhd0lkOmV4dGVuc2lvbnM6YXR0ZXN0
YXRpb25PYmplY3Q6YXR0YWNobWVudDp0cmFuc3BvcnRzOl0pOgorICAgICAgICAoLVtfV0tBdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSBpbml0V2l0aENsaWVudERhdGFKU09OOnJhd0lk
OmV4dGVuc2lvbnM6YXR0ZXN0YXRpb25PYmplY3Q6YXR0YWNobWVudDpdKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlSW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwubW06CisgICAgICAgICh3a0V4dGVuc2lvbnNDbGllbnRPdXRwdXRz
KToKKyAgICAgICAgKHdrQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UpOgorICAgICAg
ICAod2tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW06CisgICAgICAg
IChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvckludGVybmFsOjp0cmFuc3BvcnRzKToKKyAgICAg
ICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0
ZXJVc2VyVmVyaWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9y
Ojpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5Lm1tOgorICAgICAgICAoV2ViS2l0Ojp0b0FTQ0Rlc2NyaXB0b3IpOgorICAgICAgICAoV2Vi
S2l0Ojp0b0F1dGhlbnRpY2F0b3JUcmFuc3BvcnRzKToKKyAgICAgICAgKFdlYktpdDo6Y29udGlu
dWVBZnRlclJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9m
aWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q3RhcEF1dGhlbnRp
Y2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclJlc3BvbnNlUmVjZWl2ZWQpOgorICAg
ICAgICAoV2ViS2l0OjpDdGFwQXV0aGVudGljYXRvcjo6dHJhbnNwb3J0cyk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwRHJpdmVyLmg6Cisg
ICAgICAgIChXZWJLaXQ6OkN0YXBEcml2ZXI6OnRyYW5zcG9ydCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OkN0YXBEcml2ZXI6OnByb3RvY29sIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Q3Rh
cERyaXZlcjo6Q3RhcERyaXZlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkN0YXBIaWREcml2
ZXI6OkN0YXBIaWREcml2ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9maWRvL0N0YXBOZmNEcml2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpDdGFwTmZjRHJpdmVy
OjpDdGFwTmZjRHJpdmVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Zmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VTJmQXV0aGVudGlj
YXRvcjo6Y29udGludWVSZWdpc3RlckNvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQpOgorCiAy
MDIyLTA0LTA2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBJ
biBjYXNlIG9mIENPT1AtYmFzZWQgcHJvY2VzcyBzd2FwLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0
aGUgZG9jdW1lbnQgZ2V0cyBjb250cm9sbGVkIGJ5IGl0cyBtYXRjaGluZyBzZXJ2aWNlIHdvcmtl
ciByZWdpc3RyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5jcHAKaW5k
ZXggNGU4Yjc0OWU0YzAwNzA5ZmRhMzAxYTdhZmU1ZmQ5OTVlNDA3ODQ1MC4uYjQzZDMyYjEyZDM1
ODkyYzQyMWY4MTkzYTNjNjJkY2Q2Mzc5MDg2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRp
b25SZXNwb25zZS5jcHAKQEAgLTI5LDIyICsyOSwyNSBAQAogI2lmIEVOQUJMRShXRUJfQVVUSE4p
CiAKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmgiCisjaW5jbHVkZSAiQ0JP
UlJlYWRlci5oIgorI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1SZWY8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IEF1
dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYm
IHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0
b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpCitSZWY8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2U+IEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoUmVmPEFycmF5
QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1
dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQsIFZlY3RvcjxBdXRoZW50aWNhdG9yVHJh
bnNwb3J0PiYmIHRyYW5zcG9ydHMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UoV1RGTW92ZShyYXdJZCksIFdURk1vdmUoYXR0ZXN0
YXRpb25PYmplY3QpLCBhdHRhY2htZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0
aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UoV1RGTW92ZShyYXdJZCksIFdURk1vdmUoYXR0
ZXN0YXRpb25PYmplY3QpLCBhdHRhY2htZW50LCBXVEZNb3ZlKHRyYW5zcG9ydHMpKSk7CiB9CiAK
LVJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0lkLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIGF0dGVzdGF0aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNo
bWVudCBhdHRhY2htZW50KQorUmVmPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1
dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQsIFZlY3RvcjxBdXRoZW50aWNhdG9yVHJh
bnNwb3J0PiYmIHRyYW5zcG9ydHMpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShBcnJheUJ1ZmZlcjo6
Y3JlYXRlKHJhd0lkLmRhdGEoKSwgcmF3SWQuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShh
dHRlc3RhdGlvbk9iamVjdC5kYXRhKCksIGF0dGVzdGF0aW9uT2JqZWN0LnNpemUoKSksIGF0dGFj
aG1lbnQpOworICAgIHJldHVybiBjcmVhdGUoQXJyYXlCdWZmZXI6OmNyZWF0ZShyYXdJZC5kYXRh
KCksIHJhd0lkLnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUoYXR0ZXN0YXRpb25PYmplY3Qu
ZGF0YSgpLCBhdHRlc3RhdGlvbk9iamVjdC5zaXplKCkpLCBhdHRhY2htZW50LCBXVEZNb3ZlKHRy
YW5zcG9ydHMpKTsKIH0KIAotQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OkF1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVm
PEFycmF5QnVmZmVyPiYmIGF0dGVzdGF0aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNobWVu
dCBhdHRhY2htZW50KQorQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OkF1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFy
cmF5QnVmZmVyPiYmIGF0dGVzdGF0aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBh
dHRhY2htZW50LCBWZWN0b3I8QXV0aGVudGljYXRvclRyYW5zcG9ydD4mJiB0cmFuc3BvcnRzKQog
ICAgIDogQXV0aGVudGljYXRvclJlc3BvbnNlKFdURk1vdmUocmF3SWQpLCBhdHRhY2htZW50KQog
ICAgICwgbV9hdHRlc3RhdGlvbk9iamVjdChXVEZNb3ZlKGF0dGVzdGF0aW9uT2JqZWN0KSkKKyAg
ICAsIG1fdHJhbnNwb3J0cyhXVEZNb3ZlKHRyYW5zcG9ydHMpKQogewogfQogCkBAIC01Myw5ICs1
NiwzMiBAQCBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlv
blJlc3BvbnNlOjpkYXRhKCkgY29uc3QKICAgICBhdXRvIGRhdGEgPSBBdXRoZW50aWNhdG9yUmVz
cG9uc2U6OmRhdGEoKTsKICAgICBkYXRhLmlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2UgPSB0cnVlOwogICAgIGRhdGEuYXR0ZXN0YXRpb25PYmplY3QgPSBtX2F0dGVzdGF0aW9uT2Jq
ZWN0LmNvcHlSZWYoKTsKKyAgICBkYXRhLnRyYW5zcG9ydHMgPSBtX3RyYW5zcG9ydHM7CiAgICAg
cmV0dXJuIGRhdGE7CiB9CiAKK1ZlY3RvcjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiBBdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Z2V0VHJhbnNwb3J0cygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fdHJhbnNwb3J0czsKK30KKworQXJyYXlCdWZmZXIqIEF1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlOjpnZXRBdXRoZW50aWNhdG9yRGF0YSgpIGNvbnN0Cit7CisgICAgYXV0
byBkZWNvZGVkUmVzcG9uc2UgPSBjYm9yOjpDQk9SUmVhZGVyOjpyZWFkKGNvbnZlcnRBcnJheUJ1
ZmZlclRvVmVjdG9yKG1fYXR0ZXN0YXRpb25PYmplY3QucHRyKCkpKTsKKyAgICBpZiAoIWRlY29k
ZWRSZXNwb25zZSB8fCAhZGVjb2RlZFJlc3BvbnNlLT5pc01hcCgpKSB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgY29u
c3QgYXV0byYgYXR0T2JqTWFwID0gZGVjb2RlZFJlc3BvbnNlLT5nZXRNYXAoKTsKKyAgICBhdXRv
IGl0ID0gYXR0T2JqTWFwLmZpbmQoY2Jvcjo6Q0JPUlZhbHVlKCJhdXRoRGF0YSIpKTsKKyAgICBp
ZiAoaXQgPT0gYXR0T2JqTWFwLmVuZCgpIHx8ICFpdC0+c2Vjb25kLmlzQnl0ZVN0cmluZygpKSB7
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisgICAgYXV0byBhdXRoRGF0YSA9IGl0LT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpOwor
ICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhEYXRhLmRhdGEoKSwgYXV0aERhdGEu
c2l6ZSgpKS5wdHIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaAppbmRl
eCAyNjIzZWE4NTk5YzQ3MTU0N2FhYTUwOWM3YTI2OGI0YWU0OGY2YjFlLi5kZjIzNThhZGYzMGU5
YzdmYWMxYjIwYWMxYzdkOGU5ZDg2YjI3YjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25S
ZXNwb25zZS5oCkBAIC0yOCwyNSArMjgsMjkgQEAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCiAj
aW5jbHVkZSAiQXV0aGVudGljYXRvclJlc3BvbnNlLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRv
clRyYW5zcG9ydC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlIDogcHVibGljIEF1dGhlbnRpY2F0b3JSZXNwb25zZSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4g
Y3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF0dGVz
dGF0aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gY3JlYXRlKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXR0ZXN0
YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTsKKyAgICBzdGF0aWMgUmVmPEF1
dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYm
IHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0
b3JBdHRhY2htZW50LCBWZWN0b3I8QXV0aGVudGljYXRvclRyYW5zcG9ydD4mJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4g
Y3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50LCBWZWN0b3I8QXV0
aGVudGljYXRvclRyYW5zcG9ydD4mJik7CiAKICAgICB2aXJ0dWFsIH5BdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZSgpID0gZGVmYXVsdDsKIAogICAgIEFycmF5QnVmZmVyKiBhdHRlc3Rh
dGlvbk9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fYXR0ZXN0YXRpb25PYmplY3QucHRyKCk7IH0K
KyAgICBWZWN0b3I8QXV0aGVudGljYXRvclRyYW5zcG9ydD4gZ2V0VHJhbnNwb3J0cygpIGNvbnN0
OworICAgIEFycmF5QnVmZmVyKiBnZXRBdXRoZW50aWNhdG9yRGF0YSgpIGNvbnN0OwogCiBwcml2
YXRlOgotICAgIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZl
cj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCk7CisgICAg
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmLCBSZWY8
QXJyYXlCdWZmZXI+JiYsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50LCBWZWN0b3I8QXV0aGVudGlj
YXRvclRyYW5zcG9ydD4mJik7CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBUeXBlOjpBdHRlc3RhdGlvbjsgfQogICAgIEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0
YSgpIGNvbnN0IGZpbmFsOwogCiAgICAgUmVmPEFycmF5QnVmZmVyPiBtX2F0dGVzdGF0aW9uT2Jq
ZWN0OworICAgIFZlY3RvcjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiBtX3RyYW5zcG9ydHM7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2UuaWRsCmluZGV4IDFjMDBjMTVmYjUwNDg4NjA4YTU5ZGQxYWUyNGE5YmUzNzE2YzIzZDMu
LmJjZGMxMjlkZWM1NjljZTc3MTBkMzQ4NzI3MjdjYWI1MTc5Y2Y4MjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaWRsCkBAIC0zMCw0ICszMCw2IEBACiAgICAgU2VjdXJl
Q29udGV4dAogXSBpbnRlcmZhY2UgQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgOiBB
dXRoZW50aWNhdG9yUmVzcG9uc2UgewogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1
dGUgQXJyYXlCdWZmZXIgYXR0ZXN0YXRpb25PYmplY3Q7CisgICAgc2VxdWVuY2U8QXV0aGVudGlj
YXRvclRyYW5zcG9ydD4gICAgICAgICAgICBnZXRUcmFuc3BvcnRzKCk7CisgICAgQXJyYXlCdWZm
ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRBdXRoZW50aWNhdG9yRGF0YSgp
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvclJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvclJlc3BvbnNlLmNwcAppbmRleCA3YTQxNjY5ZGQ2ZTdhZjQwM2QxZGUyMjY5N2M4
NDQ1MDkyOGM1YjdkLi5jNmQzMmI4ZGNmODNiMTAzZmMxMzYwYzI4YjQ5NWMwMmNmNDg0MzY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JS
ZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdG9yUmVzcG9uc2UuY3BwCkBAIC00Myw3ICs0Myw3IEBAIFJlZlB0cjxBdXRoZW50aWNhdG9y
UmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6dHJ5Q3JlYXRlKEF1dGhlbnRpY2F0b3JS
ZXNwCiAgICAgICAgIGlmICghZGF0YS5hdHRlc3RhdGlvbk9iamVjdCkKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgICAgIHJldHVybiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25S
ZXNwb25zZTo6Y3JlYXRlKGRhdGEucmF3SWQucmVsZWFzZU5vbk51bGwoKSwgZGF0YS5hdHRlc3Rh
dGlvbk9iamVjdC5yZWxlYXNlTm9uTnVsbCgpLCBhdHRhY2htZW50KTsKKyAgICAgICAgcmV0dXJu
IEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoZGF0YS5yYXdJZC5yZWxl
YXNlTm9uTnVsbCgpLCBkYXRhLmF0dGVzdGF0aW9uT2JqZWN0LnJlbGVhc2VOb25OdWxsKCksIGF0
dGFjaG1lbnQsIFdURk1vdmUoZGF0YS50cmFuc3BvcnRzKSk7CiAgICAgfQogCiAgICAgaWYgKCFk
YXRhLmF1dGhlbnRpY2F0b3JEYXRhIHx8ICFkYXRhLnNpZ25hdHVyZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oCmlu
ZGV4IGIwNjcxZWViMTExZmU1ZGFiMGI0MzA0OTJkMDljMWZiNDU1ZDUyZmYuLmZkMWY1MGRiYTAz
NWI5OTZmYmRhMmQ5Mjk3NWFjZmI4MjI3YzJjYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuaApAQCAtMzUsNiAr
MzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIEF1dGhlbnRpY2F0b3JB
dHRhY2htZW50OworZW51bSBjbGFzcyBBdXRoZW50aWNhdG9yVHJhbnNwb3J0OwogCiBzdHJ1Y3Qg
QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaAppbmRleCA4
MTkwZjM4ZjI3NGZiYWYyZDgyZGU0OTAzZDRiMmFkYzQ1ZDc4YTljLi5jNTRmMWQ0NzQ2ZTQ1NGEz
NmZkYjliYWI2MDYzNTJmMDllM2RiMDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaApAQCAtMjcs
NiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAorI2luY2x1ZGUgIkF1dGhlbnRp
Y2F0b3JUcmFuc3BvcnQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTUxLDYgKzUyLDggQEAgc3RydWN0IEF1
dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgewogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2lnbmF0
dXJlOwogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdXNlckhhbmRsZTsKIAorICAgIFZlY3RvcjxX
ZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiB0cmFuc3BvcnRzOworCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEF1dGhlbnRpY2F0b3JSZXNw
b25zZURhdGE+IGRlY29kZShEZWNvZGVyJik7CiB9OwpAQCAtOTQsNiArOTcsNyBAQCB2b2lkIEF1
dGhlbnRpY2F0b3JSZXNwb25zZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
CiAgICAgaWYgKGlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgJiYgYXR0ZXN0YXRp
b25PYmplY3QpIHsKICAgICAgICAgZW5jb2RlQXJyYXlCdWZmZXIoZW5jb2RlciwgKmF0dGVzdGF0
aW9uT2JqZWN0KTsKKyAgICAgICAgZW5jb2RlciA8PCB0cmFuc3BvcnRzOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0xMzksNiArMTQzLDEyIEBAIHN0ZDo6b3B0aW9uYWw8QXV0aGVudGlj
YXRvclJlc3BvbnNlRGF0YT4gQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YTo6ZGVjb2RlKERlY29k
CiAgICAgICAgIHJlc3VsdC5hdHRlc3RhdGlvbk9iamVjdCA9IGRlY29kZUFycmF5QnVmZmVyKGRl
Y29kZXIpOwogICAgICAgICBpZiAoIXJlc3VsdC5hdHRlc3RhdGlvbk9iamVjdCkKICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8
QXV0aGVudGljYXRvclRyYW5zcG9ydD4+IHRyYW5zcG9ydHM7CisgICAgICAgIGRlY29kZXIgPj4g
dHJhbnNwb3J0czsKKyAgICAgICAgaWYgKCF0cmFuc3BvcnRzKQorICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmVzdWx0LnRyYW5zcG9ydHMgPSAqdHJhbnNwb3J0czsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclRyYW5zcG9ydC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0LmgKaW5kZXggYTNi
MzdiNmI2YTI4NTljY2QxYjk0MmQwYThhN2ExYzFmODgxNDA1YS4uZTQwOWQzYmM5MjRlNWY5ZTdj
Nzc5MzI1NGE3YjFkN2IxMjk5YTQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0LmgKQEAgLTM1LDcgKzM1LDgg
QEAgZW51bSBjbGFzcyBBdXRoZW50aWNhdG9yVHJhbnNwb3J0IHsKICAgICBVc2IsCiAgICAgTmZj
LAogICAgIEJsZSwKLSAgICBJbnRlcm5hbAorICAgIEludGVybmFsLAorICAgIENhYmxlCiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkBAIC00OCw3ICs0OSw4IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydD4gewogICAgICAg
ICBXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2IsCiAgICAgICAgIFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6Ok5mYywKICAgICAgICAgV2ViQ29yZTo6QXV0aGVudGlj
YXRvclRyYW5zcG9ydDo6QmxlLAotICAgICAgICBXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNw
b3J0OjpJbnRlcm5hbAorICAgICAgICBXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJ
bnRlcm5hbCwKKyAgICAgICAgV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6Q2FibGUK
ICAgICA+OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvclRyYW5zcG9ydC5pZGwKaW5kZXggOGJjOGY1NDdlMjg0ZWMyYzg4
MWVkMmFlMDBmMGRmNTY5NTlkMDMzMi4uY2Y3YTQzOTllMTRhZTRiM2Y0ZTBmYWIwZmRlMWU0ODkz
NzYyMGI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yVHJhbnNwb3J0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnQuaWRsCkBAIC0yOSw1ICsyOSw2IEBACiAgICAgInVz
YiIsCiAgICAgIm5mYyIsCiAgICAgImJsZSIsCi0gICAgImludGVybmFsIgorICAgICJpbnRlcm5h
bCIsCisgICAgImNhYmxlIgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaAppbmRleCBmODVmMWZh
YmNmY2MyMjdkMDYzYjhkMTRkMTVkNTY3Nzk3NDM1NTRjLi5hNDk0YTlkYmMwZjQ1MGY5ZGQ1OTY5
MzkxM2MxMzUxNmJkZGQxMTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oCkBAIC05Myw2ICs5
MywxMiBAQCBjb25zdGV4cHIgY29uc3QgY2hhciBrZXlTaXplS2V5W10gPSAia2V5X3NpemUiOwog
Y29uc3RleHByIGNvbnN0IGNoYXIgcmVseWluZ1BhcnR5S2V5W10gPSAicnAiOwogY29uc3RleHBy
IGNvbnN0IGNoYXIgYXBwbGljYXRpb25UYWdLZXlbXSA9ICJ0YWciOwogCitjb25zdGV4cHIgY29u
c3QgY2hhciBhdXRoZW50aWNhdG9yVHJhbnNwb3J0VXNiW10gPSAidXNiIjsKK2NvbnN0ZXhwciBj
b25zdCBjaGFyIGF1dGhlbnRpY2F0b3JUcmFuc3BvcnROZmNbXSA9ICJuZmMiOworY29uc3RleHBy
IGNvbnN0IGNoYXIgYXV0aGVudGljYXRvclRyYW5zcG9ydEJsZVtdID0gImJsZSI7Citjb25zdGV4
cHIgY29uc3QgY2hhciBhdXRoZW50aWNhdG9yVHJhbnNwb3J0SW50ZXJuYWxbXSA9ICJpbnRlcm5h
bCI7Citjb25zdGV4cHIgY29uc3QgY2hhciBhdXRoZW50aWNhdG9yVHJhbnNwb3J0Q2FibGVbXSA9
ICJjYWJsZSI7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFdlYkF1dGhu
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVu
dGljYXRpb25VdGlscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1
dGhlbnRpY2F0aW9uVXRpbHMuY3BwCmluZGV4IDMzMmUyYmU3OTVhMDFmMWUwNDY2MmRjNDExM2Jh
ZWFjNDQwNzFlNzUuLjY5MGU4MjY2ZmQwMTkxMWFiMDQ3MDkwYTIyYjgxY2NkZWYwNDIyMjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRp
b25VdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRo
ZW50aWNhdGlvblV0aWxzLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9B
VVRITikKIAorI2luY2x1ZGUgIkNCT1JSZWFkZXIuaCIKICNpbmNsdWRlICJDQk9SV3JpdGVyLmgi
CiAjaW5jbHVkZSAiRmlkb0NvbnN0YW50cy5oIgogI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0aW9u
Q29uc3RhbnRzLmgiCkBAIC00Myw2ICs0NCwxMSBAQCBWZWN0b3I8dWludDhfdD4gY29udmVydEJ5
dGVzVG9WZWN0b3IoY29uc3QgdWludDhfdCBieXRlQXJyYXlbXSwgY29uc3Qgc2l6ZV90IGxlbgog
ICAgIHJldHVybiB7IGJ5dGVBcnJheSwgbGVuZ3RoIH07CiB9CiAKK1ZlY3Rvcjx1aW50OF90PiBj
b252ZXJ0QXJyYXlCdWZmZXJUb1ZlY3RvcihBcnJheUJ1ZmZlciogYnVmZmVyKQoreworICAgIHJl
dHVybiBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihidWZm
ZXItPmRhdGEoKSksIGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKK30KKwogVmVjdG9yPHVpbnQ4X3Q+
IHByb2R1Y2VScElkSGFzaChjb25zdCBTdHJpbmcmIHJwSWQpCiB7CiAgICAgYXV0byBjcnlwdG8g
PSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV8yNTYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9X
ZWJBdXRoZW50aWNhdGlvblV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaAppbmRleCA0ZmVhMTFjMDdhOGEzOTJiYjg0NjI4MmVj
YTg5ZDlkOTgyMGQ3NjI3Li40NWYzM2Y0ZGQ4YzE0Zjg3N2I1MmIzYjY5N2I4NjZkMGE1YTIyNjRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRp
Y2F0aW9uVXRpbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1
dGhlbnRpY2F0aW9uVXRpbHMuaApAQCAtMzgsNiArMzgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0Qnl0ZXNUb1ZlY3Rvcihj
b25zdCB1aW50OF90IGJ5dGVBcnJheVtdLCBjb25zdCBzaXplX3QgbGVuZ3RoKTsKIAorV0VCQ09S
RV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRBcnJheUJ1ZmZlclRvVmVjdG9yKEFycmF5
QnVmZmVyKik7CisKIC8vIFByb2R1Y2UgYSBTSEEtMjU2IGhhc2ggb2YgdGhlIGdpdmVuIFJQIElE
LgogV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHByb2R1Y2VScElkSGFzaChjb25zdCBT
dHJpbmcmIHJwSWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL2ZpZG8vQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZS5jcHAK
aW5kZXggNTZmZGRlMmZjZDMzMDkxZjk5NTUyZjkyNDQxNTViNjlkMjY0NzI0Zi4uZGI1ZDg1M2Mz
MWNiNTA2NGMyMjcwYzc0ODI4ZGQwMjUxZWMwMDMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0F1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9BdXRoZW50aWNhdG9y
R2V0SW5mb1Jlc3BvbnNlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogCiAjaW5jbHVkZSAiQ0JPUlZh
bHVlLmgiCiAjaW5jbHVkZSAiQ0JPUldyaXRlci5oIgorI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0
aW9uQ29uc3RhbnRzLmgiCiAKIG5hbWVzcGFjZSBmaWRvIHsKIApAQCAtNzYsNiArNzcsMzkgQEAg
QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSYgQXV0aGVudGljYXRvckdldEluZm9SZXNwb25z
ZTo6c2V0T3B0aW9ucyhBdXRoZW50aWMKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKK0F1dGhlbnRp
Y2F0b3JHZXRJbmZvUmVzcG9uc2UmIEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2U6OnNldFRy
YW5zcG9ydHMoVmVjdG9yPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+JiYgdHJhbnNw
b3J0cykKK3sKKyAgICBtX3RyYW5zcG9ydHMgPSBXVEZNb3ZlKHRyYW5zcG9ydHMpOworICAgIHJl
dHVybiAqdGhpczsKK30KKworc3RhdGljIFZlY3RvcjxTdHJpbmc+IHRvU3RyaW5nVmVjdG9yKFZl
Y3RvcjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiB0cmFuc3BvcnRzKQoreworICAg
IFZlY3RvcjxTdHJpbmc+IHN0cmluZ1RyYW5zcG9ydHM7CisgICAgZm9yIChhdXRvJiB0cmFuc3Bv
cnQgOiB0cmFuc3BvcnRzKSB7CisgICAgICAgIHN3aXRjaCAodHJhbnNwb3J0KSB7CisgICAgICAg
IGNhc2UgV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6VXNiOgorICAgICAgICAgICAg
c3RyaW5nVHJhbnNwb3J0cy5hcHBlbmQoV2ViQ29yZTo6YXV0aGVudGljYXRvclRyYW5zcG9ydFVz
Yik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpBdXRoZW50aWNh
dG9yVHJhbnNwb3J0OjpOZmM6CisgICAgICAgICAgICBzdHJpbmdUcmFuc3BvcnRzLmFwcGVuZChX
ZWJDb3JlOjphdXRoZW50aWNhdG9yVHJhbnNwb3J0TmZjKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkJsZToKKyAgICAg
ICAgICAgIHN0cmluZ1RyYW5zcG9ydHMuYXBwZW5kKFdlYkNvcmU6OmF1dGhlbnRpY2F0b3JUcmFu
c3BvcnRCbGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6QXV0
aGVudGljYXRvclRyYW5zcG9ydDo6SW50ZXJuYWw6CisgICAgICAgICAgICBzdHJpbmdUcmFuc3Bv
cnRzLmFwcGVuZChXZWJDb3JlOjphdXRoZW50aWNhdG9yVHJhbnNwb3J0SW50ZXJuYWwpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5z
cG9ydDo6Q2FibGU6CisgICAgICAgICAgICBzdHJpbmdUcmFuc3BvcnRzLmFwcGVuZChXZWJDb3Jl
OjphdXRoZW50aWNhdG9yVHJhbnNwb3J0Q2FibGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gc3RyaW5nVHJhbnNwb3J0czsKK30KKwogVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUFzQ0JP
Uihjb25zdCBBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICB1
c2luZyBuYW1lc3BhY2UgY2JvcjsKQEAgLTk4LDYgKzEzMiw5IEBAIFZlY3Rvcjx1aW50OF90PiBl
bmNvZGVBc0NCT1IoY29uc3QgQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSYgcmVzcG9uc2Up
CiAKICAgICBpZiAocmVzcG9uc2UucGluUHJvdG9jb2woKSkKICAgICAgICAgZGV2aWNlSW5mb01h
cC5lbXBsYWNlKENCT1JWYWx1ZSg2KSwgdG9BcnJheVZhbHVlKCpyZXNwb25zZS5waW5Qcm90b2Nv
bCgpKSk7CisgICAgCisgICAgaWYgKHJlc3BvbnNlLnRyYW5zcG9ydHMoKSkKKyAgICAgICAgZGV2
aWNlSW5mb01hcC5lbXBsYWNlKENCT1JWYWx1ZSg3KSwgdG9BcnJheVZhbHVlKHRvU3RyaW5nVmVj
dG9yKCpyZXNwb25zZS50cmFuc3BvcnRzKCkpKSk7CiAKICAgICBhdXRvIGVuY29kZWRCeXRlcyA9
IENCT1JXcml0ZXI6OndyaXRlKENCT1JWYWx1ZShXVEZNb3ZlKGRldmljZUluZm9NYXApKSk7CiAg
ICAgQVNTRVJUKGVuY29kZWRCeXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL2ZpZG8vQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0F1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9u
c2UuaAppbmRleCBjMDYzYzRmNWM5MzVmOTczZGMxMTU0MDIwMzU5N2M1ODU2YzM0YWZlLi40MmJi
MWJhMTMzOGZlY2RlZTA0NDQ2MzM4M2FiZGQyZmRiZjAxZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vQXV0aGVudGljYXRvckdldEluZm9SZXNwb25z
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9BdXRoZW50aWNh
dG9yR2V0SW5mb1Jlc3BvbnNlLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpZiBFTkFCTEUoV0VCX0FV
VEhOKQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnMuaCIKKyNpbmNs
dWRlICJBdXRoZW50aWNhdG9yVHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAiRmlkb0NvbnN0YW50cy5o
IgogI2luY2x1ZGUgPHd0Zi9TdGRTZXQuaD4KIApAQCAtNTIsNiArNTMsNyBAQCBwdWJsaWM6CiAg
ICAgQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSYgc2V0UGluUHJvdG9jb2xzKFZlY3Rvcjx1
aW50OF90PiYmKTsKICAgICBBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlJiBzZXRFeHRlbnNp
b25zKFZlY3RvcjxTdHJpbmc+JiYpOwogICAgIEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2Um
IHNldE9wdGlvbnMoQXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnMmJik7CisgICAgQXV0aGVu
dGljYXRvckdldEluZm9SZXNwb25zZSYgc2V0VHJhbnNwb3J0cyhWZWN0b3I8V2ViQ29yZTo6QXV0
aGVudGljYXRvclRyYW5zcG9ydD4mJik7CiAKICAgICBjb25zdCBTdGRTZXQ8UHJvdG9jb2xWZXJz
aW9uPiYgdmVyc2lvbnMoKSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb25zOyB9CiAgICAgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBhYWd1aWQoKSBjb25zdCB7IHJldHVybiBtX2FhZ3VpZDsgfQpAQCAt
NTksNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+JiBwaW5Qcm90b2NvbCgpIGNvbnN0IHsgcmV0dXJuIG1fcGluUHJvdG9jb2xzOyB9CiAg
ICAgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4mIGV4dGVuc2lvbnMoKSBjb25z
dCB7IHJldHVybiBtX2V4dGVuc2lvbnM7IH0KICAgICBjb25zdCBBdXRoZW50aWNhdG9yU3VwcG9y
dGVkT3B0aW9ucyYgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQorICAgIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+
PiB0cmFuc3BvcnRzKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc3BvcnRzOyB9CiAKIHByaXZhdGU6
CiAgICAgU3RkU2V0PFByb3RvY29sVmVyc2lvbj4gbV92ZXJzaW9uczsKQEAgLTY3LDYgKzcwLDcg
QEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbV9waW5Qcm90
b2NvbHM7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gbV9leHRlbnNpb25zOwog
ICAgIEF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zIG1fb3B0aW9uczsKKyAgICBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0Pj4gbV90cmFuc3Bv
cnRzOwogfTsKIAogV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUFzQ0JPUihj
b25zdCBBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29u
dmVydGVyLmNwcAppbmRleCA3MzVhOWJmOGUwM2E4NDJhOTdkNDY5NGFjY2M2YjIyZTEzZWZlMDQ4
Li43MjAyMDljYzQxZDM3MzIzOGI3MjM4YTQzZWM1NWQ2NTU5YjRhM2U5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VS
ZXNwb25zZUNvbnZlcnRlci5jcHAKQEAgLTU0LDYgKzU0LDIxIEBAIHN0YXRpYyBQcm90b2NvbFZl
cnNpb24gY29udmVydFN0cmluZ1RvUHJvdG9jb2xWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lv
bikKICAgICByZXR1cm4gUHJvdG9jb2xWZXJzaW9uOjprVW5rbm93bjsKIH0KIAorc3RhdGljIHN0
ZDo6b3B0aW9uYWw8QXV0aGVudGljYXRvclRyYW5zcG9ydD4gY29udmVydFN0cmluZ1RvQXV0aGVu
dGljYXRvclRyYW5zcG9ydChjb25zdCBTdHJpbmcmIHRyYW5zcG9ydCkKK3sKKyAgICBpZiAodHJh
bnNwb3J0ID09IGF1dGhlbnRpY2F0b3JUcmFuc3BvcnRVc2IpCisgICAgICAgIHJldHVybiBBdXRo
ZW50aWNhdG9yVHJhbnNwb3J0OjpVc2I7CisgICAgaWYgKHRyYW5zcG9ydCA9PSBhdXRoZW50aWNh
dG9yVHJhbnNwb3J0TmZjKQorICAgICAgICByZXR1cm4gQXV0aGVudGljYXRvclRyYW5zcG9ydDo6
TmZjOworICAgIGlmICh0cmFuc3BvcnQgPT0gYXV0aGVudGljYXRvclRyYW5zcG9ydEJsZSkKKyAg
ICAgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkJsZTsKKyAgICBpZiAodHJhbnNw
b3J0ID09IGF1dGhlbnRpY2F0b3JUcmFuc3BvcnRJbnRlcm5hbCkKKyAgICAgICAgcmV0dXJuIEF1
dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkludGVybmFsOworICAgIGlmICh0cmFuc3BvcnQgPT0gYXV0
aGVudGljYXRvclRyYW5zcG9ydENhYmxlKQorICAgICAgICByZXR1cm4gQXV0aGVudGljYXRvclRy
YW5zcG9ydDo6Q2FibGU7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKwogc3RkOjpvcHRp
b25hbDxjYm9yOjpDQk9SVmFsdWU+IGRlY29kZVJlc3BvbnNlTWFwKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgaW5CdWZmZXIpCiB7CiAgICAgaWYgKGluQnVmZmVyLnNpemUoKSA8PSBrUmVzcG9uc2VD
b2RlTGVuZ3RoIHx8IGdldFJlc3BvbnNlQ29kZShpbkJ1ZmZlcikgIT0gQ3RhcERldmljZVJlc3Bv
bnNlQ29kZTo6a1N1Y2Nlc3MpCkBAIC05NSw3ICsxMTAsNyBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4
X3Q+IGdldENyZWRlbnRpYWxJZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0b3JE
YXRhKQogCiAvLyBEZWNvZGVzIGJ5dGUgYXJyYXkgcmVzcG9uc2UgZnJvbSBhdXRoZW50aWNhdG9y
IHRvIENCT1IgdmFsdWUgb2JqZWN0IGFuZAogLy8gY2hlY2tzIGZvciBjb3JyZWN0IGVuY29kaW5n
IGZvcm1hdC4KLVJlZlB0cjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZENU
QVBNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIs
IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQsIGNvbnN0IEF0dGVz
dGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmIGF0dGVzdGF0aW9uKQorUmVmUHRyPEF1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiByZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVzcG9uc2Uo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbkJ1ZmZlciwgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0
dGFjaG1lbnQgYXR0YWNobWVudCwgVmVjdG9yPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+JiYgdHJh
bnNwb3J0cywgY29uc3QgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSYgYXR0ZXN0YXRp
b24pCiB7CiAgICAgYXV0byBkZWNvZGVkTWFwID0gZGVjb2RlUmVzcG9uc2VNYXAoaW5CdWZmZXIp
OwogICAgIGlmICghZGVjb2RlZE1hcCkKQEAgLTEzNSw3ICsxNTAsNyBAQCBSZWZQdHI8QXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25z
ZShjb25zdCBWZQogICAgICAgICBhdHRlc3RhdGlvbk9iamVjdCA9IGNib3I6OkNCT1JXcml0ZXI6
OndyaXRlKENCT1IoV1RGTW92ZShhdHRlc3RhdGlvbk9iamVjdE1hcCkpKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50
aWFsSWQsICphdHRlc3RhdGlvbk9iamVjdCwgYXR0YWNobWVudCk7CisgICAgcmV0dXJuIEF1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCAqYXR0ZXN0
YXRpb25PYmplY3QsIGF0dGFjaG1lbnQsIFdURk1vdmUodHJhbnNwb3J0cykpOwogfQogCiBSZWZQ
dHI8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiByZWFkQ1RBUEdldEFzc2VydGlvblJl
c3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIsIFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpCkBAIC0zMjUsNiArMzQwLDIyIEBAIHN0ZDo6b3B0
aW9uYWw8QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZT4gcmVhZENUQVBHZXRJbmZvUmVzcG9u
c2UoY29uc3QgVmVjdG9yCiAgICAgICAgIHJlc3BvbnNlLnNldFBpblByb3RvY29scyhXVEZNb3Zl
KHN1cHBvcnRlZFBpblByb3RvY29scykpOwogICAgIH0KIAorICAgIGl0ID0gcmVzcG9uc2VNYXAu
ZmluZChDQk9SKDkpKTsKKyAgICBpZiAoaXQgIT0gcmVzcG9uc2VNYXAuZW5kKCkpIHsKKyAgICAg
ICAgaWYgKCFpdC0+c2Vjb25kLmlzQXJyYXkoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICAgICAgVmVjdG9yPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+IHRyYW5zcG9y
dHM7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgdHJhbnNwb3J0U3RyaW5nIDogaXQtPnNlY29u
ZC5nZXRBcnJheSgpKSB7CisgICAgICAgICAgICBpZiAoIXRyYW5zcG9ydFN0cmluZy5pc1N0cmlu
ZygpKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICBh
dXRvIHRyYW5zcG9ydCA9IGNvbnZlcnRTdHJpbmdUb0F1dGhlbnRpY2F0b3JUcmFuc3BvcnQodHJh
bnNwb3J0U3RyaW5nLmdldFN0cmluZygpKTsKKyAgICAgICAgICAgIGlmICh0cmFuc3BvcnQpCisg
ICAgICAgICAgICAgICAgdHJhbnNwb3J0cy5hcHBlbmQoKnRyYW5zcG9ydCk7CisgICAgICAgIH0K
KyAgICAgICAgcmVzcG9uc2Uuc2V0VHJhbnNwb3J0cyhXVEZNb3ZlKHRyYW5zcG9ydHMpKTsKKyAg
ICB9CisKICAgICByZXR1cm4gV1RGTW92ZShyZXNwb25zZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNl
Q29udmVydGVyLmgKaW5kZXggYTJlMjhhODE4ZmZjOGE5ZjAzYWI4MjllODlhYjFkNDQzMWRkYmFi
OS4uZmRjNjFkMmIzYmJkN2JmZDk1NjgzNTIwZDVjNDUzNGM0NTMzYTUyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVy
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJl
c3BvbnNlQ29udmVydGVyLmgKQEAgLTUyLDcgKzUyLDcgQEAgV0VCQ09SRV9FWFBPUlQgQ3RhcERl
dmljZVJlc3BvbnNlQ29kZSBnZXRSZXNwb25zZUNvZGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7
CiAvLyBhbmQgY29udmVydHMgcmVzcG9uc2UgdG8gQXV0aGVudGljYXRvck1ha2VDcmVkZW50aWFs
UmVzcG9uc2Ugb2JqZWN0IHdpdGgKIC8vIENCT1IgbWFwIGtleXMgdGhhdCBjb25mb3JtIHRvIGZv
cm1hdCBvZiBhdHRlc3RhdGlvbiBvYmplY3QgZGVmaW5lZCBieSB0aGUKIC8vIFdlYkF1dGhOIHNw
ZWMgOiBodHRwczovL3czYy5naXRodWIuaW8vd2ViYXV0aG4vI2ZpZy1hdHRTdHJ1Y3RzCi1XRUJD
T1JFX0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2U+IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZShjb25zdCBWZWN0b3I8dWludDhfdD4m
LCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCwgY29uc3QgV2ViQ29yZTo6QXR0ZXN0
YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSYgPSBXZWJDb3JlOjpBdHRlc3RhdGlvbkNvbnZleWFu
Y2VQcmVmZXJlbmNlOjpEaXJlY3QpOworV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiByZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVz
cG9uc2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFj
aG1lbnQsIFZlY3RvcjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiYmLCBjb25zdCBX
ZWJDb3JlOjpBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlJiA9IFdlYkNvcmU6OkF0dGVz
dGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6OkRpcmVjdCk7CiAKIC8vIERlLXNlcmlhbGl6ZXMg
Q0JPUiBlbmNvZGVkIHJlc3BvbnNlIHRvIEF1dGhlbnRpY2F0b3JHZXRBc3NlcnRpb24gLwogLy8g
QXV0aGVudGljYXRvckdldE5leHRBc3NlcnRpb24gcmVxdWVzdCB0byBBdXRoZW50aWNhdG9yR2V0
QXNzZXJ0aW9uUmVzcG9uc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCmluZGV4IGE0ZmRlMTVm
ZmJmZDU1NTc3YjIyOWQ4NjQ5YzY3NjQ4Y2U3ZWI5NmQuLjE3NWQwZTVhNTk3MmI2OTNlZTc0MGQ2
YTVlZjdkNzIxYjQwZjBmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcApAQCAtMTM3LDcg
KzEzNyw3IEBAIHN0YXRpYyBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlIGNyZWF0ZUZpZG9BdHRl
c3RhdGlvblN0YXRlbWVudEZyb21VMmZSZWdpc3RlclJlCiAKIH0gLy8gbmFtZXNwYWNlCiAKLVJl
ZlB0cjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZFUyZlJlZ2lzdGVyUmVz
cG9uc2UoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEs
IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQsIGNvbnN0IEF0dGVzdGF0aW9uQ29u
dmV5YW5jZVByZWZlcmVuY2UmIGF0dGVzdGF0aW9uKQorUmVmUHRyPEF1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlPiByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShjb25zdCBTdHJpbmcmIHJw
SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdTJmRGF0YSwgQXV0aGVudGljYXRvckF0dGFjaG1l
bnQgYXR0YWNobWVudCwgVmVjdG9yPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+JiYgdHJhbnNwb3J0
cywgY29uc3QgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSYgYXR0ZXN0YXRpb24pCiB7
CiAgICAgYXV0byBwdWJsaWNLZXkgPSBleHRyYWN0RUNQdWJsaWNLZXlGcm9tVTJmUmVnaXN0cmF0
aW9uUmVzcG9uc2UodTJmRGF0YSk7CiAgICAgaWYgKHB1YmxpY0tleS5pc0VtcHR5KCkpCkBAIC0x
NjAsNyArMTYwLDcgQEAgUmVmUHRyPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBy
ZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShjb25zdCBTdHJpbmcmIHIKIAogICAgIGF1dG8gYXR0ZXN0
YXRpb25PYmplY3QgPSBidWlsZEF0dGVzdGF0aW9uT2JqZWN0KFdURk1vdmUoYXV0aERhdGEpLCAi
Zmlkby11MmYiX3MsIFdURk1vdmUoZmlkb0F0dGVzdGF0aW9uU3RhdGVtZW50KSwgYXR0ZXN0YXRp
b24pOwogCi0gICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVh
dGUoY3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9iamVjdCwgYXR0YWNobWVudCk7CisgICAgcmV0
dXJuIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElk
LCBhdHRlc3RhdGlvbk9iamVjdCwgYXR0YWNobWVudCwgV1RGTW92ZSh0cmFuc3BvcnRzKSk7CiB9
CiAKIFJlZlB0cjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHJlYWRVMmZTaWduUmVz
cG9uc2UoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBXZWJDb3JlOjpCdWZmZXJTb3VyY2UmIGtl
eUhhbmRsZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhLCBBdXRoZW50aWNhdG9yQXR0
YWNobWVudCBhdHRhY2htZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaAppbmRleCA1N2Q1M2M3MWMy
MTk4ODM0ZmQ5OGRmYjIwM2RiNzc3ZjFjNDM3YjYwLi40MWQ5NjlkY2I3ZTY3MTNkOThlNTNlOTBk
ZjliNTk1MjU1YTkyYmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaApAQCAtNDQsNyArNDQsNyBA
QCBuYW1lc3BhY2UgZmlkbyB7CiAKIC8vIENvbnZlcnRzIGEgVTJGIHJlZ2lzdGVyIHJlc3BvbnNl
IHRvIFdlYkF1dGhOIG1ha2VDcmVkZW50aWFsIHJlc3BvbnNlLgogLy8gaHR0cHM6Ly9maWRvYWxs
aWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1pZC0yMDE4MDIyNy9maWRvLWNsaWVudC10by1hdXRo
ZW50aWNhdG9yLXByb3RvY29sLXYyLjAtaWQtMjAxODAyMjcuaHRtbCN1MmYtYXV0aGVudGljYXRv
ck1ha2VDcmVkZW50aWFsLWludGVyb3BlcmFiaWxpdHkKLVdFQkNPUkVfRVhQT1JUIFJlZlB0cjxX
ZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZFUyZlJlZ2lzdGVy
UmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRh
dGEsIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50LCBjb25zdCBXZWJDb3JlOjpBdHRl
c3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlJiA9IFdlYkNvcmU6OkF0dGVzdGF0aW9uQ29udmV5
YW5jZVByZWZlcmVuY2U6OkRpcmVjdCk7CitXRUJDT1JFX0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNl
KGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhLCBXZWJD
b3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCwgVmVjdG9yPFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JUcmFuc3BvcnQ+JiYgdHJhbnNwb3J0cyA9IHsgfSwgY29uc3QgV2ViQ29yZTo6QXR0ZXN0YXRp
b25Db252ZXlhbmNlUHJlZmVyZW5jZSYgPSBXZWJDb3JlOjpBdHRlc3RhdGlvbkNvbnZleWFuY2VQ
cmVmZXJlbmNlOjpEaXJlY3QpOwogCiAvLyBDb252ZXJ0cyBhIFUyRiBhdXRoZW50aWNhdGlvbiBy
ZXNwb25zZSB0byBXZWJBdXRoTiBnZXRBc3NlcnRpb24gcmVzcG9uc2UuCiAvLyBodHRwczovL2Zp
ZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlkby12Mi4wLWlkLTIwMTgwMjI3L2ZpZG8tY2xpZW50LXRv
LWF1dGhlbnRpY2F0b3ItcHJvdG9jb2wtdjIuMC1pZC0yMDE4MDIyNy5odG1sI3UyZi1hdXRoZW50
aWNhdG9yR2V0QXNzZXJ0aW9uLWludGVyb3BlcmFiaWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2Vz
Q29yZVNQSS5oCmluZGV4IDM5Mzk1NzY3ODRmNjA0NGE4YTdiMWJkYjIyZjQ0MjZlM2FiY2FlNzYu
LjA2OGI2NGZlYWY3MjFhZjljMWM4NWY0NDVlZmQ2Yzg3NWQ2ZTdiODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3Jl
U1BJLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGljYXRp
b25TZXJ2aWNlc0NvcmVTUEkuaApAQCAtMjkwLDYgKzI5MCw3IEBAIHR5cGVkZWYgTlNfRU5VTShO
U0ludGVnZXIsIEFTQ3JlZGVudGlhbFJlcXVlc3RTdHlsZSkgewogQHByb3BlcnR5IChub25hdG9t
aWMsIGNvcHksIHJlYWRvbmx5KSBOU1N0cmluZyAqcmVseWluZ1BhcnR5SWRlbnRpZmllcjsKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCByZWFkb25seSkgTlNEYXRhICphdHRlc3RhdGlvbk9i
amVjdDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCByZWFkb25seSkgTlNEYXRhICpyYXdD
bGllbnREYXRhSlNPTjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU0FycmF5PE5TTnVt
YmVyICo+ICp0cmFuc3BvcnRzOwogCiArIChpbnN0YW5jZXR5cGUpbmV3IE5TX1VOQVZBSUxBQkxF
OwogLSAoaW5zdGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7CkBAIC0zMDQsNiArMzA1LDcg
QEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgQVNDcmVkZW50aWFsUmVxdWVzdFN0eWxlKSB7
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgcmVhZG9ubHkpIE5TRGF0YSAqcmF3Q2xpZW50
RGF0YUpTT047CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgcmVhZG9ubHkpIE5TU3RyaW5n
ICpyZWx5aW5nUGFydHlJZGVudGlmaWVyOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHJl
YWRvbmx5KSBOU0RhdGEgKmF0dGVzdGF0aW9uT2JqZWN0OworQHByb3BlcnR5IChub25hdG9taWMs
IGNvcHkpIE5TQXJyYXk8TlNOdW1iZXIgKj4gKnRyYW5zcG9ydHM7CiAKIEBlbmQKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaAppbmRleCA3MmQ5NGMxMmEyMWZk
NGYzODBiMTg0YTA1N2YyMDA1MWI1ZDNjMTFjLi5lNWY5Y2UxYWQ3YzllNDEyOGEwMTIzYTZjOTI2
NjFlYWVmYzQ2N2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2UuaApAQCAtMzMsNiArMzMsNyBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlv
cygxNS4wKSkKIEBpbnRlcmZhY2UgX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2Ug
OiBfV0tBdXRoZW50aWNhdG9yUmVzcG9uc2UKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5KSBOU0RhdGEgKmF0dGVzdGF0aW9uT2JqZWN0OworQHByb3BlcnR5IChub25hdG9taWMsIGNv
cHkpIE5TQXJyYXk8TlNOdW1iZXIgKj4gKnRyYW5zcG9ydHM7CiAKIEBlbmQKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLm1tCmluZGV4IGJkYzBlMzViOTI0Nzg5
NzhkYmIwNGY4NjE3NTY5MjY4MjUzZGE2OGQuLjA3MWQ1MjJmYTgzODdmMTg2OWVlMWRlNjc2NDkw
YTdlNDYxMjkyNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2UubW0KQEAgLTMyLDEyICszMiwxMyBAQAogCiBAaW1wbGVtZW50YXRpb24gX1dLQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2UKIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ2xpZW50
RGF0YUpTT046KE5TRGF0YSAqKWNsaWVudERhdGFKU09OIHJhd0lkOihOU0RhdGEgKilyYXdJZCBl
eHRlbnNpb25zOihSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0
cHV0cz4mJilleHRlbnNpb25zIGF0dGVzdGF0aW9uT2JqZWN0OihOU0RhdGEgKilhdHRlc3RhdGlv
bk9iamVjdCBhdHRhY2htZW50OihfV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudClhdHRhY2htZW50
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50
RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4dGVuc2lvbnM6KFJldGFpblB0cjxfV0tB
dXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKWV4dGVuc2lvbnMgYXR0ZXN0
YXRpb25PYmplY3Q6KE5TRGF0YSAqKWF0dGVzdGF0aW9uT2JqZWN0IGF0dGFjaG1lbnQ6KF9XS0F1
dGhlbnRpY2F0b3JBdHRhY2htZW50KWF0dGFjaG1lbnQgdHJhbnNwb3J0czooTlNBcnJheTxOU051
bWJlciAqPiAqKXRyYW5zcG9ydHMKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRo
Q2xpZW50RGF0YUpTT046Y2xpZW50RGF0YUpTT04gcmF3SWQ6cmF3SWQgZXh0ZW5zaW9uczpXVEZN
b3ZlKGV4dGVuc2lvbnMpIGF0dGFjaG1lbnQ6YXR0YWNobWVudF0pKQogICAgICAgICByZXR1cm4g
bmlsOwogCiAgICAgX2F0dGVzdGF0aW9uT2JqZWN0ID0gYXR0ZXN0YXRpb25PYmplY3Q7CisgICAg
X3RyYW5zcG9ydHMgPSB0cmFuc3BvcnRzOwogICAgIHJldHVybiBzZWxmOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2VJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlSW50ZXJuYWwuaAppbmRl
eCBhYWZiZjBiZDQzZmM4MGU5NDEwZGUwODIzYmY0MTU4YmU3ZGE2Y2I5Li41YWUwZDkwNjA2ZjIw
YjBlYjUwY2E3YjA1MDJkMjgyYWE0NjNiYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2VJbnRl
cm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZUludGVybmFsLmgKQEAgLTM0LDcgKzM0LDcgQEAgTlNf
QVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGludGVyZmFjZSBfV0tBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZSAoKQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnREYXRhSlNP
TjooTlNEYXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4dGVuc2lv
bnM6KFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYm
KWV4dGVuc2lvbnMgYXR0ZXN0YXRpb25PYmplY3Q6KE5TRGF0YSAqKWF0dGVzdGF0aW9uT2JqZWN0
IGF0dGFjaG1lbnQ6KF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50KWF0dGFjaG1lbnQ7CistIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpT
T04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4dGVuc2lvbnM6KFJldGFpblB0cjxfV0tBdXRoZW50
aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKWV4dGVuc2lvbnMgYXR0ZXN0YXRpb25P
YmplY3Q6KE5TRGF0YSAqKWF0dGVzdGF0aW9uT2JqZWN0IGF0dGFjaG1lbnQ6KF9XS0F1dGhlbnRp
Y2F0b3JBdHRhY2htZW50KWF0dGFjaG1lbnQgdHJhbnNwb3J0czooTlNBcnJheTxOU051bWJlciAq
PiAqKXRyYW5zcG9ydHM7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRl
eCBkN2ZkMWE2ODM2MzJlOTFiNTY4NWU3MzI0ZGVmZGE1Nzc5NDhiMWQ1Li5lNDM2MDNmNjRmMmYx
NmJmNGZiYjc1MzMzYTAxOTgxMDZhMjA1MDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5t
bQpAQCAtODQ4LDkgKzg0OCwyOCBAQCBzdGF0aWMgX1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQg
YXV0aGVudGljYXRvckF0dGFjaG1lbnRUb1dLQXV0aGVudGljYXRvckF0dGFjaAogICAgIH0KIH0K
IAorc3RhdGljIFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRw
dXRzPiB3a0V4dGVuc2lvbnNDbGllbnRPdXRwdXRzKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JSZXNwb25zZURhdGEmIGRhdGEpCit7CisgICAgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9u
RXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+IGV4dGVuc2lvbnM7CisgICAgaWYgKGRhdGEuYXBwaWQp
CisgICAgICAgIGV4dGVuc2lvbnMgPSBhZG9wdE5TKFtbX1dLQXV0aGVudGljYXRpb25FeHRlbnNp
b25zQ2xpZW50T3V0cHV0cyBhbGxvY10gaW5pdFdpdGhBcHBpZDpkYXRhLmFwcGlkLnZhbHVlKCld
KTsKKyAgICByZXR1cm4gZXh0ZW5zaW9uczsKK30KKworc3RhdGljIFJldGFpblB0cjxOU0FycmF5
PE5TTnVtYmVyICo+PiB3a1RyYW5zcG9ydHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JUcmFuc3BvcnQ+JiB0cmFuc3BvcnRzKQoreworICAgIGF1dG8gd2tUcmFuc3BvcnRzID0g
YWRvcHROUyhbTlNNdXRhYmxlQXJyYXk8TlNOdW1iZXIgKj4gbmV3XSk7CisgICAgZm9yIChhdXRv
IHRyYW5zcG9ydCA6IHRyYW5zcG9ydHMpCisgICAgICAgIFt3a1RyYW5zcG9ydHMgYWRkT2JqZWN0
OltOU051bWJlciBudW1iZXJXaXRoSW50OihpbnQpdHJhbnNwb3J0XV07CisgICAgcmV0dXJuIHdr
VHJhbnNwb3J0czsKK30KKworCiBzdGF0aWMgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlPiB3a0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKGNvbnN0
IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmIGRhdGEsIE5TRGF0YSAqY2xpZW50
RGF0YUpTT04sIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0TlMoW1tfV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZSBhbGxvY10gaW5pdFdpdGhDbGllbnREYXRhSlNPTjpjbGllbnREYXRhSlNPTiByYXdJZDpbTlNE
YXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5yYXdJZC0+ZGF0YSgpIGxlbmd0aDpkYXRhLnJhd0lkLT5i
eXRlTGVuZ3RoKCldIGV4dGVuc2lvbnM6bmlsIGF0dGVzdGF0aW9uT2JqZWN0OltOU0RhdGEgZGF0
YVdpdGhCeXRlczpkYXRhLmF0dGVzdGF0aW9uT2JqZWN0LT5kYXRhKCkgbGVuZ3RoOmRhdGEuYXR0
ZXN0YXRpb25PYmplY3QtPmJ5dGVMZW5ndGgoKV0gYXR0YWNobWVudDogYXV0aGVudGljYXRvckF0
dGFjaG1lbnRUb1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQoYXR0YWNobWVudCldKTsKKyAgICBh
dXRvIHZhbHVlID0gYWRvcHROUyhbW19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
IGFsbG9jXSBpbml0V2l0aENsaWVudERhdGFKU09OOmNsaWVudERhdGFKU09OIHJhd0lkOltOU0Rh
dGEgZGF0YVdpdGhCeXRlczpkYXRhLnJhd0lkLT5kYXRhKCkgbGVuZ3RoOmRhdGEucmF3SWQtPmJ5
dGVMZW5ndGgoKV0gZXh0ZW5zaW9uczp3a0V4dGVuc2lvbnNDbGllbnRPdXRwdXRzKGRhdGEpIGF0
dGVzdGF0aW9uT2JqZWN0OltOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLmF0dGVzdGF0aW9uT2Jq
ZWN0LT5kYXRhKCkgbGVuZ3RoOmRhdGEuYXR0ZXN0YXRpb25PYmplY3QtPmJ5dGVMZW5ndGgoKV0g
YXR0YWNobWVudDogYXV0aGVudGljYXRvckF0dGFjaG1lbnRUb1dLQXV0aGVudGljYXRvckF0dGFj
aG1lbnQoYXR0YWNobWVudCkgdHJhbnNwb3J0czp3a1RyYW5zcG9ydHMoZGF0YS50cmFuc3BvcnRz
KS5hdXRvcmVsZWFzZSgpXSk7CisgICAgCisgICAgcmV0dXJuIHZhbHVlOwogfQogI2VuZGlmCiAK
QEAgLTkxMSwxNSArOTMwLDExIEBAIHN0YXRpYyBSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckF0dGVzdGF0aW9uCiAjaWYgRU5BQkxF
KFdFQl9BVVRITikKIHN0YXRpYyBSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlPiB3a0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShjb25zdCBXZWJDb3JlOjpB
dXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiBkYXRhLCBOU0RhdGEgKmNsaWVudERhdGFKU09OLCBX
ZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50KQogewotICAgIFJldGFp
blB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiBleHRlbnNpb25z
OwotICAgIGlmIChkYXRhLmFwcGlkKQotICAgICAgICBleHRlbnNpb25zID0gYWRvcHROUyhbW19X
S0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMgYWxsb2NdIGluaXRXaXRoQXBw
aWQ6ZGF0YS5hcHBpZC52YWx1ZSgpXSk7Ci0KICAgICBOU0RhdGEgKnVzZXJIYW5kbGUgPSBuaWw7
CiAgICAgaWYgKGRhdGEudXNlckhhbmRsZSkKICAgICAgICAgdXNlckhhbmRsZSA9IFtOU0RhdGEg
ZGF0YVdpdGhCeXRlczpkYXRhLnVzZXJIYW5kbGUtPmRhdGEoKSBsZW5ndGg6ZGF0YS51c2VySGFu
ZGxlLT5ieXRlTGVuZ3RoKCldOwogCi0gICAgcmV0dXJuIGFkb3B0TlMoW1tfV0tBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoQ2xpZW50RGF0YUpTT046Y2xpZW50
RGF0YUpTT04gcmF3SWQ6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEucmF3SWQtPmRhdGEoKSBs
ZW5ndGg6ZGF0YS5yYXdJZC0+Ynl0ZUxlbmd0aCgpXSBleHRlbnNpb25zOldURk1vdmUoZXh0ZW5z
aW9ucykgYXV0aGVudGljYXRvckRhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuYXV0aGVu
dGljYXRvckRhdGEtPmRhdGEoKSBsZW5ndGg6ZGF0YS5hdXRoZW50aWNhdG9yRGF0YS0+Ynl0ZUxl
bmd0aCgpXSBzaWduYXR1cmU6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuc2lnbmF0dXJlLT5k
YXRhKCkgbGVuZ3RoOmRhdGEuc2lnbmF0dXJlLT5ieXRlTGVuZ3RoKCldIHVzZXJIYW5kbGU6dXNl
ckhhbmRsZSBhdHRhY2htZW50OmF1dGhlbnRpY2F0b3JBdHRhY2htZW50VG9XS0F1dGhlbnRpY2F0
b3JBdHRhY2htZW50KGF0dGFjaG1lbnQpXSk7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tfV0tBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoQ2xpZW50RGF0YUpTT046
Y2xpZW50RGF0YUpTT04gcmF3SWQ6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEucmF3SWQtPmRh
dGEoKSBsZW5ndGg6ZGF0YS5yYXdJZC0+Ynl0ZUxlbmd0aCgpXSBleHRlbnNpb25zOndrRXh0ZW5z
aW9uc0NsaWVudE91dHB1dHMoZGF0YSkgYXV0aGVudGljYXRvckRhdGE6W05TRGF0YSBkYXRhV2l0
aEJ5dGVzOmRhdGEuYXV0aGVudGljYXRvckRhdGEtPmRhdGEoKSBsZW5ndGg6ZGF0YS5hdXRoZW50
aWNhdG9yRGF0YS0+Ynl0ZUxlbmd0aCgpXSBzaWduYXR1cmU6W05TRGF0YSBkYXRhV2l0aEJ5dGVz
OmRhdGEuc2lnbmF0dXJlLT5kYXRhKCkgbGVuZ3RoOmRhdGEuc2lnbmF0dXJlLT5ieXRlTGVuZ3Ro
KCldIHVzZXJIYW5kbGU6dXNlckhhbmRsZSBhdHRhY2htZW50OmF1dGhlbnRpY2F0b3JBdHRhY2ht
ZW50VG9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50KGF0dGFjaG1lbnQpXSk7CiB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCmluZGV4IDlkNWRkOGQz
MTk4YzkxM2RkMzRjYTdjYzk0NTBjOTVjM2Y2MWI1ZDUuLjU5NDBmNWRkZTRmMjdmN2YzNjY3YzJk
M2FkYTMxY2JhMmY4YTk3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0
b3IubW0KQEAgLTE4MSw2ICsxODEsMTQgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJl
ZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+Pj4gZ2V0RXhpc3RpbmdDcmUKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgVmVjdG9yPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+
IHRyYW5zcG9ydHMoKQoreworICAgIFZlY3RvcjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNw
b3J0PiB0cmFuc3BvcnRzID0geyBXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRl
cm5hbCB9OworICAgIGlmIChbZ2V0QVNDV2ViS2l0U1BJU3VwcG9ydENsYXNzKCkgc2hvdWxkVXNl
QWx0ZXJuYXRlQ3JlZGVudGlhbFN0b3JlXSkKKyAgICAgICAgdHJhbnNwb3J0cy5hcHBlbmQoV2Vi
Q29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6Q2FibGUpOworICAgIHJldHVybiB0cmFuc3Bv
cnRzOworfQorCiB9IC8vIExvY2FsQXV0aGVudGljYXRvckludGVybmFsCiAKIHZvaWQgTG9jYWxB
dXRoZW50aWNhdG9yOjpjbGVhckFsbENyZWRlbnRpYWxzKCkKQEAgLTQ0Niw3ICs0NTQsNyBAQCB2
b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlclZl
cmlmaWNhdGlvbihTZWNBY2Nlc3NDbwogCiAgICAgICAgIGF1dG8gYXV0aERhdGEgPSBidWlsZEF1
dGhEYXRhKGNyZWF0aW9uT3B0aW9ucy5ycC5pZCwgZmxhZ3MsIGNvdW50ZXIsIGJ1aWxkQXR0ZXN0
ZWRDcmVkZW50aWFsRGF0YShWZWN0b3I8dWludDhfdD4oYWFndWlkTGVuZ3RoLCAwKSwgY3JlZGVu
dGlhbElkLCBjb3NlUHVibGljS2V5KSk7CiAgICAgICAgIGF1dG8gYXR0ZXN0YXRpb25PYmplY3Qg
PSBidWlsZEF0dGVzdGF0aW9uT2JqZWN0KFdURk1vdmUoYXV0aERhdGEpLCBTdHJpbmcgeyBlbXB0
eVN0cmluZygpIH0sIHsgfSwgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9uZSk7
Ci0gICAgICAgIHJlY2VpdmVSZXNwb25kKEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
OjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9iamVjdCwgQXV0aGVudGljYXRvckF0
dGFjaG1lbnQ6OlBsYXRmb3JtKSk7CisgICAgICAgIHJlY2VpdmVSZXNwb25kKEF1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9i
amVjdCwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtLCB0cmFuc3BvcnRzKCkpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDczLDcgKzQ4MSw3IEBAIHZvaWQgTG9jYWxB
dXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChWZWN0b3I8
dWludDhfdD4mJiBjCiAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGRu
J3QgYXR0ZXN0OiAlcyIsIFN0cmluZyhlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbikudXRmOCgp
LmRhdGEoKSk7CiAgICAgICAgIGF1dG8gYXR0ZXN0YXRpb25PYmplY3QgPSBidWlsZEF0dGVzdGF0
aW9uT2JqZWN0KFdURk1vdmUoYXV0aERhdGEpLCBTdHJpbmcgeyBlbXB0eVN0cmluZygpIH0sIHsg
fSwgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9uZSk7Ci0gICAgICAgIHJlY2Vp
dmVSZXNwb25kKEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVu
dGlhbElkLCBhdHRlc3RhdGlvbk9iamVjdCwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRm
b3JtKSk7CisgICAgICAgIHJlY2VpdmVSZXNwb25kKEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9iamVjdCwgQXV0aGVudGlj
YXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtLCB0cmFuc3BvcnRzKCkpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAvLyBBdHRlc3RhdGlvbiBDZXJ0aWZpY2F0ZSBhbmQgQXR0ZXN0YXRpb24g
SXNzdWluZyBDQQpAQCAtNDkyLDcgKzUwMCw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpj
b250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChWZWN0b3I8dWludDhfdD4mJiBjCiAg
ICAgYXV0byBhdHRlc3RhdGlvbk9iamVjdCA9IGJ1aWxkQXR0ZXN0YXRpb25PYmplY3QoV1RGTW92
ZShhdXRoRGF0YSksICJhcHBsZSJfcywgV1RGTW92ZShhdHRlc3RhdGlvblN0YXRlbWVudE1hcCks
IGNyZWF0aW9uT3B0aW9ucy5hdHRlc3RhdGlvbik7CiAKICAgICBkZWxldGVEdXBsaWNhdGVDcmVk
ZW50aWFsKCk7Ci0gICAgcmVjZWl2ZVJlc3BvbmQoQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF0dGVzdGF0aW9uT2JqZWN0LCBBdXRoZW50aWNh
dG9yQXR0YWNobWVudDo6UGxhdGZvcm0pKTsKKyAgICByZWNlaXZlUmVzcG9uZChBdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKGNyZWRlbnRpYWxJZCwgYXR0ZXN0YXRpb25P
YmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpQbGF0Zm9ybSwgdHJhbnNwb3J0cygpKSk7
CiB9CiAKIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5t
bQppbmRleCBmNjdjZTQwNDMxNWVkNjI4ZWYxZjgyZTQxMzUyYjFhNWE4NmMxMDcyLi43MTBhZDM5
MjBjZTdlNWMwNWZhNzFjYzAwNDc3ZDQ0NjNhZjBlMmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbQpAQCAtMTU0
LDYgKzE1NCw5IEBAIHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPEFTQ1B1YmxpY0tleUNyZWRlbnRp
YWxEZXNjcmlwdG9yPiB0b0FTQ0Rlc2NyaXB0b3IoUHVibGljCiAgICAgICAgICAgICBjYXNlIEF1
dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkludGVybmFsOgogICAgICAgICAgICAgICAgIHRyYW5zcG9y
dFN0cmluZyA9IEAiaW50ZXJuYWwiOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpDYWJsZToKKyAgICAgICAgICAgICAgICB0
cmFuc3BvcnRTdHJpbmcgPSBAImNhYmxlIjsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKHRyYW5zcG9ydFN0cmluZykKQEAgLTMzNyw2ICsz
NDAsMTQgQEAgc3RhdGljIFJldGFpblB0cjxBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHQ+IGNv
bmZpZ3VyYXRpb25Bc3NlcnRpb25SZXF1ZXN0Q29udGUKICAgICByZXR1cm4gcmVxdWVzdENvbnRl
eHQ7CiB9CiAKK3N0YXRpYyBWZWN0b3I8V2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydD4g
dG9BdXRoZW50aWNhdG9yVHJhbnNwb3J0cyhOU0FycmF5PE5TTnVtYmVyICo+ICphc2NUcmFuc3Bv
cnRzKQoreworICAgIFZlY3RvcjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiB0cmFu
c3BvcnRzOworICAgIGZvciAoTlNOdW1iZXIgKmFzY1RyYW5zcG9ydCA6IGFzY1RyYW5zcG9ydHMp
CisgICAgICAgIHRyYW5zcG9ydHMuYXBwZW5kKHN0YXRpY19jYXN0PFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JUcmFuc3BvcnQ+KGFzY1RyYW5zcG9ydC5pbnRWYWx1ZSkpOworICAgIHJldHVybiB0cmFu
c3BvcnRzOworfQorCiBSZXRhaW5QdHI8QVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0PiBXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6Y29udGV4dEZvclJlcXVlc3QoV2ViQXV0aGVu
dGljYXRpb25SZXF1ZXN0RGF0YSYmIHJlcXVlc3REYXRhKQogewogICAgIFJldGFpblB0cjxBU0ND
cmVkZW50aWFsUmVxdWVzdENvbnRleHQ+IHJlc3VsdDsKQEAgLTM2MSw2ICszNzIsOCBAQCBzdGF0
aWMgaW5saW5lIHZvaWQgY29udGludWVBZnRlclJlcXVlc3QoUmV0YWluUHRyPGlkIDxBU0NDcmVk
ZW50aWFsUHJvdG9jb2w+PiBjcgogICAgICAgICBBU0NQbGF0Zm9ybVB1YmxpY0tleUNyZWRlbnRp
YWxSZWdpc3RyYXRpb24gKnJlZ2lzdHJhdGlvbkNyZWRlbnRpYWwgPSBjcmVkZW50aWFsLmdldCgp
OwogICAgICAgICByZXNwb25zZS5yYXdJZCA9IHRvQXJyYXlCdWZmZXIocmVnaXN0cmF0aW9uQ3Jl
ZGVudGlhbC5jcmVkZW50aWFsSUQpOwogICAgICAgICByZXNwb25zZS5hdHRlc3RhdGlvbk9iamVj
dCA9IHRvQXJyYXlCdWZmZXIocmVnaXN0cmF0aW9uQ3JlZGVudGlhbC5hdHRlc3RhdGlvbk9iamVj
dCk7CisgICAgICAgIGlmIChbcmVnaXN0cmF0aW9uQ3JlZGVudGlhbCByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHRyYW5zcG9ydHMpXSkKKyAgICAgICAgICAgIHJlc3BvbnNlLnRyYW5zcG9y
dHMgPSB0b0F1dGhlbnRpY2F0b3JUcmFuc3BvcnRzKHJlZ2lzdHJhdGlvbkNyZWRlbnRpYWwudHJh
bnNwb3J0cyk7CiAgICAgfSBlbHNlIGlmIChbY3JlZGVudGlhbCBpc0tpbmRPZkNsYXNzOmdldEFT
Q1NlY3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbFJlZ2lzdHJhdGlvbkNsYXNzKCldKSB7CiAg
ICAgICAgIGF0dGFjaG1lbnQgPSBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9y
bTsKICAgICAgICAgcmVzcG9uc2UuaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSA9
IHRydWU7CkBAIC0zNjgsNiArMzgxLDggQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbnRpbnVlQWZ0
ZXJSZXF1ZXN0KFJldGFpblB0cjxpZCA8QVNDQ3JlZGVudGlhbFByb3RvY29sPj4gY3IKICAgICAg
ICAgQVNDU2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50aWFsUmVnaXN0cmF0aW9uICpyZWdpc3Ry
YXRpb25DcmVkZW50aWFsID0gY3JlZGVudGlhbC5nZXQoKTsKICAgICAgICAgcmVzcG9uc2UucmF3
SWQgPSB0b0FycmF5QnVmZmVyKHJlZ2lzdHJhdGlvbkNyZWRlbnRpYWwuY3JlZGVudGlhbElEKTsK
ICAgICAgICAgcmVzcG9uc2UuYXR0ZXN0YXRpb25PYmplY3QgPSB0b0FycmF5QnVmZmVyKHJlZ2lz
dHJhdGlvbkNyZWRlbnRpYWwuYXR0ZXN0YXRpb25PYmplY3QpOworICAgICAgICBpZiAoW3JlZ2lz
dHJhdGlvbkNyZWRlbnRpYWwgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih0cmFuc3BvcnRz
KV0pCisgICAgICAgICAgICByZXNwb25zZS50cmFuc3BvcnRzID0gdG9BdXRoZW50aWNhdG9yVHJh
bnNwb3J0cyhyZWdpc3RyYXRpb25DcmVkZW50aWFsLnRyYW5zcG9ydHMpOwogICAgIH0gZWxzZSBp
ZiAoW2NyZWRlbnRpYWwgaXNLaW5kT2ZDbGFzczpnZXRBU0NQbGF0Zm9ybVB1YmxpY0tleUNyZWRl
bnRpYWxBc3NlcnRpb25DbGFzcygpXSkgewogICAgICAgICBhdHRhY2htZW50ID0gQXV0aGVudGlj
YXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtOwogICAgICAgICByZXNwb25zZS5pc0F1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhl
bnRpY2F0b3IuY3BwCmluZGV4IDE3OGZhZjg2OGVkYjY5ZWQ5ZjA2NWRlMTI1MDc2NzJjYTg3Zjc4
MGMuLmFmMTIyMDIwZTBmY2Q4YzE0NTMyNTNkYjRhNTU2ZGZiMWQwOTVlYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhl
bnRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBD
dGFwQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoKQogCiB2b2lkIEN0YXBBdXRoZW50aWNh
dG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFZlY3Rvcjx1
aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgYXV0byByZXNwb25zZSA9IHJlYWRDVEFQTWFrZUNyZWRl
bnRpYWxSZXNwb25zZShkYXRhLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9y
bSwgc3RkOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERh
dGEoKS5vcHRpb25zKS5hdHRlc3RhdGlvbik7CisgICAgYXV0byByZXNwb25zZSA9IHJlYWRDVEFQ
TWFrZUNyZWRlbnRpYWxSZXNwb25zZShkYXRhLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jv
c3NQbGF0Zm9ybSwgdHJhbnNwb3J0cygpLCBzdGQ6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpLmF0dGVzdGF0aW9uKTsKICAgICBp
ZiAoIXJlc3BvbnNlKSB7CiAgICAgICAgIGF1dG8gZXJyb3IgPSBnZXRSZXNwb25zZUNvZGUoZGF0
YSk7CiAKQEAgLTM4NCw2ICszODQsMTQgQEAgYm9vbCBDdGFwQXV0aGVudGljYXRvcjo6cHJvY2Vz
c0dvb2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4dGVuc2lvbigpCiAgICAgcmV0dXJuIGV4dGVuc2lv
bnMtPmdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydDsKIH0KIAorVmVjdG9yPEF1dGhlbnRpY2F0b3JU
cmFuc3BvcnQ+IEN0YXBBdXRoZW50aWNhdG9yOjp0cmFuc3BvcnRzKCkKK3sKKyAgICBhdXRvIGlu
Zm9UcmFuc3BvcnRzID0gbV9pbmZvLnRyYW5zcG9ydHMoKTsKKyAgICBpZiAoaW5mb1RyYW5zcG9y
dHMpCisgICAgICAgIHJldHVybiAqaW5mb1RyYW5zcG9ydHM7CisgICAgcmV0dXJuIFZlY3RvciB7
IGRyaXZlcigpLnRyYW5zcG9ydCgpIH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0
b3IuaAppbmRleCA5MTUwNWMwN2RlNjUzYTA4MDdiY2FiNzBkNjcwMjJmNDRjMmNiNDk3Li4yZmFi
MDM3ZjFkNzBjMmExZjhkNDNmOWFmMzQ5ZDMwZmQyN2UyMmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9y
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9D
dGFwQXV0aGVudGljYXRvci5oCkBAIC03MCw2ICs3MCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCB0
cnlEb3duZ3JhZGUoKTsKICAgICBib29sIHByb2Nlc3NHb29nbGVMZWdhY3lBcHBJZFN1cHBvcnRF
eHRlbnNpb24oKTsKIAorICAgIFZlY3RvcjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0
PiB0cmFuc3BvcnRzKCk7CisKICAgICBmaWRvOjpBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNl
IG1faW5mbzsKICAgICBib29sIG1faXNEb3duZ3JhZGVkIHsgZmFsc2UgfTsKICAgICBzaXplX3Qg
bV9yZW1haW5pbmdBc3NlcnRpb25SZXNwb25zZXMgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBEcml2ZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcERyaXZlci5o
CmluZGV4IDdhNDIwZmUxY2VjMjE4YjkwNjZlNjMwMzZlZmJiYzYzYTQxN2IxMDUuLmFmNGFjODM4
ZWRjM2RjZDc2MjFhYzM4ODVkMmVmMWEzODdjMTc4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcERyaXZlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcERyaXZlci5o
CkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCisjaW5jbHVkZSA8
V2ViQ29yZS9BdXRoZW50aWNhdG9yVHJhbnNwb3J0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWRv
Q29uc3RhbnRzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KQEAgLTQ1LDE1ICs0NiwxOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFByb3Rv
Y29sKGZpZG86OlByb3RvY29sVmVyc2lvbiBwcm90b2NvbCkgeyBtX3Byb3RvY29sID0gcHJvdG9j
b2w7IH0KIAorICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQgdHJhbnNwb3J0KCkg
Y29uc3QgeyByZXR1cm4gbV90cmFuc3BvcnQ7IH0KKyAgICBmaWRvOjpQcm90b2NvbFZlcnNpb24g
cHJvdG9jb2woKSBjb25zdCB7IHJldHVybiBtX3Byb3RvY29sOyB9CisKICAgICB2aXJ0dWFsIHZv
aWQgdHJhbnNhY3QoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgUmVzcG9uc2VDYWxsYmFjayYmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpIHsgfTsKIAogcHJvdGVjdGVkOgotICAgIEN0
YXBEcml2ZXIoKSA9IGRlZmF1bHQ7Ci0gICAgZmlkbzo6UHJvdG9jb2xWZXJzaW9uIHByb3RvY29s
KCkgY29uc3QgeyByZXR1cm4gbV9wcm90b2NvbDsgfQorICAgIEN0YXBEcml2ZXIoV2ViQ29yZTo6
QXV0aGVudGljYXRvclRyYW5zcG9ydCB0cmFuc3BvcnQpIHsgbV90cmFuc3BvcnQgPSB0cmFuc3Bv
cnQ7IH0KIAogcHJpdmF0ZToKICAgICBmaWRvOjpQcm90b2NvbFZlcnNpb24gbV9wcm90b2NvbCB7
IGZpZG86OlByb3RvY29sVmVyc2lvbjo6a0N0YXAgfTsKKyAgICBXZWJDb3JlOjpBdXRoZW50aWNh
dG9yVHJhbnNwb3J0IG1fdHJhbnNwb3J0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRv
L0N0YXBIaWREcml2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmNwcAppbmRleCAzZDZlYTQ0Y2I5ZDU2M2U5Zjc4N2I5
ZjZiMDc5NzViMWMxYzZlMmY0Li4xYmUzM2QwZTdiNzg4MDNhYTJlYjFlMjM5NjIwMjAwN2Q2OTgy
ZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9maWRvL0N0YXBIaWREcml2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5jcHAKQEAgLTE1Nyw3ICsxNTcsOCBA
QCB2b2lkIEN0YXBIaWREcml2ZXI6Oldvcmtlcjo6Y2FuY2VsKGZpZG86OkZpZG9IaWRNZXNzYWdl
JiYgcmVxdWVzdE1lc3NhZ2UpCiB9CiAKIEN0YXBIaWREcml2ZXI6OkN0YXBIaWREcml2ZXIoVW5p
cXVlUmVmPEhpZENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKLSAgICA6IG1fd29ya2VyKG1ha2VV
bmlxdWVSZWY8V29ya2VyPihXVEZNb3ZlKGNvbm5lY3Rpb24pKSkKKyAgICA6IEN0YXBEcml2ZXIo
V2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6VXNiKQorICAgICwgbV93b3JrZXIobWFr
ZVVuaXF1ZVJlZjxXb3JrZXI+KFdURk1vdmUoY29ubmVjdGlvbikpKQogICAgICwgbV9ub25jZShr
SGlkSW5pdE5vbmNlTGVuZ3RoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwTmZjRHJpdmVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcE5mY0RyaXZlci5jcHAK
aW5kZXggNGE5Y2FmMjAzMGY3NjY3MzI4YzgwYzVjYTliMzIwNWQyNGFlNTRiNC4uNjgwYzE4Mzll
ZDZmMDBjNDYzMTJhZWQ0ZmRiM2RmOGRhMGQ3ZGQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwTmZjRHJpdmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBOZmNE
cml2ZXIuY3BwCkBAIC0zNyw3ICszNyw4IEBAIHVzaW5nIG5hbWVzcGFjZSBhcGR1OwogdXNpbmcg
bmFtZXNwYWNlIGZpZG87CiAKIEN0YXBOZmNEcml2ZXI6OkN0YXBOZmNEcml2ZXIoUmVmPE5mY0Nv
bm5lY3Rpb24+JiYgY29ubmVjdGlvbikKLSAgICA6IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5l
Y3Rpb24pKQorICAgIDogQ3RhcERyaXZlcihBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpOZmMpCisg
ICAgLCBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRo
ZW50aWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHAKaW5kZXggMDQ5OGJkMDFkMGUxNTQyMDU2OWJhMDNh
OTZhNDkyZDZhMGM5MjI2Yy4uZTI2ZWM2ZjQ2MjkwMGI4ZmJhZmRmNGY5ZjNkNzY0OGIwZjVjNGZm
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Zmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwCkBAIC0xNTcsNyArMTU3
LDcgQEAgdm9pZCBVMmZBdXRoZW50aWNhdG9yOjpjb250aW51ZVJlZ2lzdGVyQ29tbWFuZEFmdGVy
UmVzcG9uc2VSZWNlaXZlZChBcGR1UmVzcG9uc2UKICAgICBjYXNlIEFwZHVSZXNwb25zZTo6U3Rh
dHVzOjpTV19OT19FUlJPUjogewogICAgICAgICBhdXRvJiBvcHRpb25zID0gc3RkOjpnZXQ8UHVi
bGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsK
ICAgICAgICAgYXV0byBhcHBJZCA9IHByb2Nlc3NHb29nbGVMZWdhY3lBcHBJZFN1cHBvcnRFeHRl
bnNpb24ob3B0aW9ucy5leHRlbnNpb25zKTsKLSAgICAgICAgYXV0byByZXNwb25zZSA9IHJlYWRV
MmZSZWdpc3RlclJlc3BvbnNlKCFhcHBJZCA/IG9wdGlvbnMucnAuaWQgOiBhcHBJZCwgYXBkdVJl
c3BvbnNlLmRhdGEoKSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0sIG9w
dGlvbnMuYXR0ZXN0YXRpb24pOworICAgICAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lz
dGVyUmVzcG9uc2UoIWFwcElkID8gb3B0aW9ucy5ycC5pZCA6IGFwcElkLCBhcGR1UmVzcG9uc2Uu
ZGF0YSgpLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSwgeyBkcml2ZXIo
KS50cmFuc3BvcnQoKSB9LCBvcHRpb25zLmF0dGVzdGF0aW9uKTsKICAgICAgICAgaWYgKCFyZXNw
b25zZSkgewogICAgICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25v
d25FcnJvciwgIkNvdWxkbid0IHBhcnNlIHRoZSBVMkYgcmVnaXN0ZXIgcmVzcG9uc2UuIl9zIH0p
OwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDAxZTBjYWU3MTExZDE1NDliZTE0NjQxYWFiZGJmNTNiM2M5N2U5
YWYuLjNjMDlhNDMxM2FlY2NiNmY5NzNjM2NiNTRmZTJiZjA3NTU2MzgzNGIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAyMi0wNC0wNyAgSiBQYXNjb2UgIDxqX3Bhc2NvZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dl
YkF1dGhuXSBJbXBsZW1lbnQgZ2V0VHJhbnNwb3J0cygpIGFuZCBnZXRBdXRoZW50aWNhdG9yRGF0
YSgpIG9uIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4OTY2CisgICAgICAgIHJkYXI6Ly9w
cm9ibGVtLzkxNDQ5OTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlc3BvbnNlVGVzdC5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb1Rlc3REYXRhLmg6CisKIDIwMjItMDQtMDYgIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgVW5pZnkgdGhlIHR3byBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKCkgZnVuY3Rpb25zLCBwYXNzaW5nIFJlbmRlcmluZ1B1cnBvc2Ug
ZXZlcnl3aGVyZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0N0YXBSZXNwb25zZVRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0N0YXBSZXNwb25zZVRlc3QuY3BwCmluZGV4IDllMWIxYjEzNDkxNDVhMDA3NDNiZGIzODkyYzMw
ZjIyMGJkNDRhOWUuLjQ1MTExYjA2YTRjYmEyNzNhODlhYWY1ZDg2MWI2NjQ5YTQwMWJmMzkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9uc2VU
ZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlc3Bv
bnNlVGVzdC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJGaWRvVGVzdERhdGEuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQXV0aGVudGljYXRvckF0dGFjaG1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRp
Y2F0b3JUcmFuc3BvcnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0J1ZmZlclNvdXJjZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ0JPUlJlYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ0JPUlZhbHVl
Lmg+CkBAIC0zNTMsOSArMzU0LDkgQEAgVmVjdG9yPHVpbnQ4X3Q+IGdldFRlc3RVMmZSZWdpc3Rl
clJlc3BvbnNlKHNpemVfdCBwcmVmaXhTaXplLCBjb25zdCB1aW50OF90IGFwcGUKIC8vIGh0dHBz
Oi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxNzA5MjcvZmlkby1jbGll
bnQtdG8tYXV0aGVudGljYXRvci1wcm90b2NvbC12Mi4wLXBzLTIwMTcwOTI3Lmh0bWwjY29tbWFu
ZHMKIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFJlYWRNYWtlQ3JlZGVudGlhbFJlc3BvbnNl
KQogewotICAgIGF1dG8gbWFrZUNyZWRlbnRpYWxSZXNwb25zZSA9IHJlYWRDVEFQTWFrZUNyZWRl
bnRpYWxSZXNwb25zZShjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1Rlc3RNYWtlQ3Jl
ZGVudGlhbFJlc3BvbnNlLCBzaXplb2YoVGVzdERhdGE6OmtUZXN0TWFrZUNyZWRlbnRpYWxSZXNw
b25zZSkpLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CisgICAgYXV0
byBtYWtlQ3JlZGVudGlhbFJlc3BvbnNlID0gcmVhZENUQVBNYWtlQ3JlZGVudGlhbFJlc3BvbnNl
KGNvbnZlcnRCeXRlc1RvVmVjdG9yKFRlc3REYXRhOjprVGVzdE1ha2VDcmVkZW50aWFsUmVzcG9u
c2UsIHNpemVvZihUZXN0RGF0YTo6a1Rlc3RNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKSksIEF1dGhl
bnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtLCB7IH0pOwogICAgIEFTU0VSVF9UUlVF
KG1ha2VDcmVkZW50aWFsUmVzcG9uc2UpOwotICAgIGF1dG8gY2JvckF0dGVzdGF0aW9uT2JqZWN0
ID0gY2Jvcjo6Q0JPUlJlYWRlcjo6cmVhZChjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihyZWludGVycHJl
dF9jYXN0PHVpbnQ4X3QqPihtYWtlQ3JlZGVudGlhbFJlc3BvbnNlLT5hdHRlc3RhdGlvbk9iamVj
dCgpLT5kYXRhKCkpLCBtYWtlQ3JlZGVudGlhbFJlc3BvbnNlLT5hdHRlc3RhdGlvbk9iamVjdCgp
LT5ieXRlTGVuZ3RoKCkpKTsKKyAgICBhdXRvIGNib3JBdHRlc3RhdGlvbk9iamVjdCA9IGNib3I6
OkNCT1JSZWFkZXI6OnJlYWQoY29udmVydEFycmF5QnVmZmVyVG9WZWN0b3IobWFrZUNyZWRlbnRp
YWxSZXNwb25zZS0+YXR0ZXN0YXRpb25PYmplY3QoKSkpOwogICAgIEFTU0VSVF9UUlVFKGNib3JB
dHRlc3RhdGlvbk9iamVjdCk7CiAgICAgQVNTRVJUX1RSVUUoY2JvckF0dGVzdGF0aW9uT2JqZWN0
LT5pc01hcCgpKTsKIApAQCAtNjEwLDYgKzYxMSwyNCBAQCBURVNUKENUQVBSZXNwb25zZVRlc3Qs
IFRlc3RSZWFkR2V0SW5mb1Jlc3BvbnNlMikKICAgICBFWFBFQ1RfRVEoQXV0aGVudGljYXRvclN1
cHBvcnRlZE9wdGlvbnM6OkNsaWVudFBpbkF2YWlsYWJpbGl0eTo6a1N1cHBvcnRlZEJ1dFBpbk5v
dFNldCwgZ2V0SW5mb1Jlc3BvbnNlLT5vcHRpb25zKCkuY2xpZW50UGluQXZhaWxhYmlsaXR5KCkp
OwogfQogCitURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RSZWFkR2V0SW5mb1Jlc3BvbnNlRGV2
aWNlWXViaWtleTVjKQoreworICAgIGF1dG8gZ2V0SW5mb1Jlc3BvbnNlID0gcmVhZENUQVBHZXRJ
bmZvUmVzcG9uc2UoY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtUZXN0R2V0SW5mb1Jl
c3BvbnNlRGV2aWNlWXViaWtleTVjLCBzaXplb2YoVGVzdERhdGE6OmtUZXN0R2V0SW5mb1Jlc3Bv
bnNlRGV2aWNlWXViaWtleTVjKSkpOworICAgIEFTU0VSVF9UUlVFKGdldEluZm9SZXNwb25zZSk7
CisgICAgQVNTRVJUX1RSVUUoZ2V0SW5mb1Jlc3BvbnNlLT5tYXhNc2dTaXplKCkpOworICAgIEVY
UEVDVF9FUSgqZ2V0SW5mb1Jlc3BvbnNlLT5tYXhNc2dTaXplKCksIDEyMDB1KTsKKyAgICBFWFBF
Q1RfTkUoZ2V0SW5mb1Jlc3BvbnNlLT52ZXJzaW9ucygpLmZpbmQoUHJvdG9jb2xWZXJzaW9uOjpr
Q3RhcCksIGdldEluZm9SZXNwb25zZS0+dmVyc2lvbnMoKS5lbmQoKSk7CisgICAgRVhQRUNUX05F
KGdldEluZm9SZXNwb25zZS0+dmVyc2lvbnMoKS5maW5kKFByb3RvY29sVmVyc2lvbjo6a1UyZiks
IGdldEluZm9SZXNwb25zZS0+dmVyc2lvbnMoKS5lbmQoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGdl
dEluZm9SZXNwb25zZS0+b3B0aW9ucygpLmlzUGxhdGZvcm1EZXZpY2UoKSk7CisgICAgRVhQRUNU
X0VRKEF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zOjpSZXNpZGVudEtleUF2YWlsYWJpbGl0
eTo6a1N1cHBvcnRlZCwgZ2V0SW5mb1Jlc3BvbnNlLT5vcHRpb25zKCkucmVzaWRlbnRLZXlBdmFp
bGFiaWxpdHkoKSk7CisgICAgRVhQRUNUX1RSVUUoZ2V0SW5mb1Jlc3BvbnNlLT5vcHRpb25zKCku
dXNlclByZXNlbmNlUmVxdWlyZWQoKSk7CisgICAgRVhQRUNUX0VRKEF1dGhlbnRpY2F0b3JTdXBw
b3J0ZWRPcHRpb25zOjpVc2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5OjprTm90U3VwcG9ydGVk
LCBnZXRJbmZvUmVzcG9uc2UtPm9wdGlvbnMoKS51c2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5
KCkpOworICAgIEVYUEVDVF9FUShBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9uczo6Q2xpZW50
UGluQXZhaWxhYmlsaXR5OjprU3VwcG9ydGVkQW5kUGluU2V0LCBnZXRJbmZvUmVzcG9uc2UtPm9w
dGlvbnMoKS5jbGllbnRQaW5BdmFpbGFiaWxpdHkoKSk7CisgICAgRVhQRUNUX1RSVUUoZ2V0SW5m
b1Jlc3BvbnNlLT50cmFuc3BvcnRzKCkpOworICAgIEVYUEVDVF9FUShnZXRJbmZvUmVzcG9uc2Ut
PnRyYW5zcG9ydHMoKS0+c2l6ZSgpLCAxdSk7CisgICAgRVhQRUNUX0VRKEF1dGhlbnRpY2F0b3JU
cmFuc3BvcnQ6OlVzYiwgZ2V0SW5mb1Jlc3BvbnNlLT50cmFuc3BvcnRzKCktPmZpcnN0KCkpOwor
fQorCiBURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RSZWFkR2V0SW5mb1Jlc3BvbnNlV2l0aElu
Y29ycmVjdEZvcm1hdCkKIHsKICAgICBFWFBFQ1RfRkFMU0UocmVhZENUQVBHZXRJbmZvUmVzcG9u
c2UoY29udmVydEJ5dGVzVG9WZWN0b3Ioa1Rlc3RBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNl
V2l0aE5vVmVyc2lvbiwgc2l6ZW9mKGtUZXN0QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZVdp
dGhOb1ZlcnNpb24pKSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0ZpZG9UZXN0RGF0YS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0ZpZG9UZXN0RGF0YS5oCmluZGV4IDdjNzUwMGZkMmUxOTMwMTk4MWZjNDQ0NzBmOGFjNzM0Zjcw
MDFjYjYuLjUxMzc1MmMzNjc3ZGRmZTExYTNiOWIwODAxMjQwMGI4ZTM0NWIwN2MgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvVGVzdERhdGEuaAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb1Rlc3REYXRhLmgKQEAgLTE0
NDYsNiArMTQ0Niw0MSBAQCBjb25zdGV4cHIgdWludDhfdCBrQ3RhcENsaWVudFBpblJldHJpZXNS
ZXNwb25zZVtdID0gewogICAgIDB4MDgsCiB9OwogCitjb25zdGV4cHIgdWludDhfdCBrVGVzdEdl
dEluZm9SZXNwb25zZURldmljZVl1YmlrZXk1Y1tdID0geworICAgIC8vIFN1Y2Nlc3MKKyAgICAw
eDAwLAorICAgIDB4QUEsIDB4MDEsIDB4ODMsIDB4NjYsIDB4NTUsIDB4MzIsIDB4NDYsIDB4NUYs
IDB4NTYsIDB4MzIsIDB4NjgsIDB4NDYsCisgICAgMHg0OSwgMHg0NCwgMHg0RiwgMHg1RiwgMHgz
MiwgMHg1RiwgMHgzMCwgMHg2QywgMHg0NiwgMHg0OSwgMHg0NCwgMHg0RiwKKyAgICAweDVGLCAw
eDMyLCAweDVGLCAweDMxLCAweDVGLCAweDUwLCAweDUyLCAweDQ1LCAweDAyLCAweDgyLCAweDZC
LCAweDYzLAorICAgIDB4NzIsIDB4NjUsIDB4NjQsIDB4NTAsIDB4NzIsIDB4NkYsIDB4NzQsIDB4
NjUsIDB4NjMsIDB4NzQsIDB4NkIsIDB4NjgsCisgICAgMHg2RCwgMHg2MSwgMHg2MywgMHgyRCwg
MHg3MywgMHg2NSwgMHg2MywgMHg3MiwgMHg2NSwgMHg3NCwgMHgwMywgMHg1MCwKKyAgICAweEVF
LCAweDg4LCAweDI4LCAweDc5LCAweDcyLCAweDFDLCAweDQ5LCAweDEzLCAweDk3LCAweDc1LCAw
eDNELCAweEZDLAorICAgIDB4Q0UsIDB4OTcsIDB4MDcsIDB4MkEsIDB4MDQsIDB4QTUsIDB4NjIs
IDB4NzIsIDB4NkIsIDB4RjUsIDB4NjIsIDB4NzUsCisgICAgMHg3MCwgMHhGNSwgMHg2NCwgMHg3
MCwgMHg2QywgMHg2MSwgMHg3NCwgMHhGNCwgMHg2OSwgMHg2MywgMHg2QywgMHg2OSwKKyAgICAw
eDY1LCAweDZFLCAweDc0LCAweDUwLCAweDY5LCAweDZFLCAweEY1LCAweDc1LCAweDYzLCAweDcy
LCAweDY1LCAweDY0LAorICAgIDB4NjUsIDB4NkUsIDB4NzQsIDB4NjksIDB4NjEsIDB4NkMsIDB4
NEQsIDB4NjcsIDB4NkQsIDB4NzQsIDB4NTAsIDB4NzIsCisgICAgMHg2NSwgMHg3NiwgMHg2OSwg
MHg2NSwgMHg3NywgMHhGNSwgMHgwNSwgMHgxOSwgMHgwNCwgMHhCMCwgMHgwNiwgMHg4MSwKKyAg
ICAweDAxLAorICAgIC8vIGtleSgwNykgLSBtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QKKyAgICAw
eDA3LAorICAgIC8vIHZhbHVlIC0gdW5zaWduZWQoOCkKKyAgICAweDA4LAorICAgIC8vIGtleSgw
OCkgLSBtYXhDcmVkZW50aWFsSWRMZW5ndGgKKyAgICAweDA4LAorICAgIC8vIHZhbHVlIC0gdW5z
aWduZWQoMTI4KQorICAgIDB4MTgsIDB4ODAsCisgICAgLy8ga2V5KDA5KSAtIHRyYW5zcG9ydHMK
KyAgICAweDA5LAorICAgIC8vIGFycmF5KDEpCisgICAgMHg4MSwKKyAgICAvLyB0ZXh0KDMpIC0g
InVzYiIKKyAgICAweDYzLCAweDc1LCAweDczLCAweDYyLAorICAgIDB4MEEsIDB4ODIsIDB4QTIs
IDB4NjMsIDB4NjEsIDB4NkMsIDB4NjcsIDB4MjYsIDB4NjQsIDB4NzQsIDB4NzksIDB4NzAsCisg
ICAgMHg2NSwgMHg2QSwgMHg3MCwgMHg3NSwgMHg2MiwgMHg2QywgMHg2OSwgMHg2MywgMHgyRCwg
MHg2QiwgMHg2NSwgMHg3OSwKKyAgICAweEEyLCAweDYzLCAweDYxLCAweDZDLCAweDY3LCAweDI3
LCAweDY0LCAweDc0LCAweDc5LCAweDcwLCAweDY1LCAweDZBLAorICAgIDB4NzAsIDB4NzUsIDB4
NjIsIDB4NkMsIDB4NjksIDB4NjMsIDB4MkQsIDB4NkIsIDB4NjUsIDB4NzksCit9OworCiB9IC8v
IG5hbWVzcGFjZSBUZXN0RGF0YQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggNjc0YjQ2NzZkY2RiNWQ3NDQyOTFlYzkyYTI2MzQ3Y2I3YjRlMDRmYy4uNzE4ZmI4MWE4MTlj
ODE3Nzc5NjE3ZTEyNmFmMWUwZjdkOWY3NzIxZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIy
LTA0LTA3ICBKIFBhc2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0
aG5dIEltcGxlbWVudCBnZXRUcmFuc3BvcnRzKCkgYW5kIGdldEF1dGhlbnRpY2F0b3JEYXRhKCkg
b24gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODk2NgorICAgICAgICByZGFyOi8vcHJvYmxl
bS85MTQ0OTkwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNj
ZXNzLWhpZC5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNl
cy91dGlsLmpzOgorCiAyMDIyLTA0LTA2ICBPcmlvbCBCcnVmYXUgIDxvYnJ1ZmF1QGlnYWxpYS5j
b20+CiAKICAgICAgICAgW2Nzc10gVHVybiAtd2Via2l0LWJvcmRlci1pbWFnZSBpbnRvIGEgc2hv
cnRoYW5kCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3Mt
aGlkLmh0dHBzLmh0bWwKaW5kZXggNTJmY2IxNjQxZTEzZDg3ZDc1ZGI4N2QyMGI5ZDEzYjgwZmI3
NTVhMS4uMzFjMzY0MzdiOGI2OGZmYjdlMmI2MTllYWZhMmQ5OWEyMzVmNmQ0ZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNy
ZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRt
bApAQCAtMSw0ICsxLDQgQEAKLTwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVy
IFsgV2ViQXV0aGVudGljYXRpb25Nb2Rlcm5FbmFibGVkPXRydWUgXSAtLT4KKzwhRE9DVFlQRSBo
dG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyICBbIFdlYkF1dGhlbnRpY2F0aW9uTW9kZXJuRW5h
YmxlZD1mYWxzZSBdIC0tPgogPHRpdGxlPldlYiBBdXRoZW50aWNhdGlvbiBBUEk6IFB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHN1Y2Nlc3MgY2FzZXMgd2l0aCBhIG1vY2sgaGlkIGF1
dGhlbnRpY2F0b3IuPC90aXRsZT4KIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KQEAgLTI3LDcgKzI3LDcgQEAKICAgICAgICAgfTsKIAogICAgICAgICBy
ZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRp
YWwgPT4gewotICAgICAgICAgICAgY2hlY2tDdGFwTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVu
dGlhbCk7CisgICAgICAgICAgICBjaGVja0N0YXBNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50
aWFsLCB0cnVlLCBbInVzYiJdKTsKICAgICAgICAgfSk7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWluaW11bSBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0
aGVudGljYXRvci4iKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcmVzb3VyY2VzL3V0aWwuanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNv
dXJjZXMvdXRpbC5qcwppbmRleCBlNWFhODRiOTUyMTFlNjk0ZTE4NWE3YTA1M2U4NDNkYzU5ZWY5
MmIxLi43ZmJhZTllMzNkMzIyNjkzNGU4MDk4YjdlN2UyYWU1NDUzNzQxMDQ4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qcworKysgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qcwpAQCAtMzU1LDcg
KzM1NSw3IEBAIGZ1bmN0aW9uIGNoZWNrUHVibGljS2V5KHB1YmxpY0tleSkKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotZnVuY3Rpb24gY2hlY2tDdGFwTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVu
dGlhbCwgaXNOb25lQXR0ZXN0YXRpb24gPSB0cnVlKQorZnVuY3Rpb24gY2hlY2tDdGFwTWFrZUNy
ZWRlbnRpYWxSZXN1bHQoY3JlZGVudGlhbCwgaXNOb25lQXR0ZXN0YXRpb24gPSB0cnVlLCB0cmFu
c3BvcnRzID0gbnVsbCkKIHsKICAgICAvLyBDaGVjayByZXNwb25zZQogICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMoQmFzZTY0VVJMLnBhcnNlKGNyZWRlbnRpYWwuaWQpLCBCYXNlNjRVUkwucGFyc2Uo
dGVzdEhpZENyZWRlbnRpYWxJZEJhc2U2NCkpOwpAQCAtMzg4LDYgKzM4OCw4IEBAIGZ1bmN0aW9u
IGNoZWNrQ3RhcE1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwsIGlzTm9uZUF0dGVzdGF0
aW9uID0gdHJ1ZSkKICAgICAgICAgYXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5hdHRT
dG10LmFsZywgLTcpOwogICAgICAgICBhc3NlcnRfZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmF0
dFN0bXQueDVjLmxlbmd0aCwgMSk7CiAgICAgfQorICAgIGlmICh0cmFuc3BvcnRzKQorICAgICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKHRyYW5zcG9ydHMsIGNyZWRlbnRpYWwucmVzcG9uc2UuZ2V0
VHJhbnNwb3J0cygpKTsKIH0KIAogZnVuY3Rpb24gY2hlY2tVMmZNYWtlQ3JlZGVudGlhbFJlc3Vs
dChjcmVkZW50aWFsLCBpc05vbmVBdHRlc3RhdGlvbiA9IHRydWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457257</attachid>
            <date>2022-04-11 09:25:07 -0700</date>
            <delta_ts>2022-04-11 10:53:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238966-20220411092506.patch</filename>
            <type>text/plain</type>
            <size>61464</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQ5ZjQ1OTkyN2ZkMDgx
NWU1ZmJiMGY1OTU4ZWNmNWM3YmFjYjEwNi4uYTVlMGU3OTBjYzY0MDA4YWNmZGUwNDViOTRiNjIy
YWMwOTViZmEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIyLTA0LTA4ICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVu
dCBnZXRUcmFuc3BvcnRzKCkgYW5kIGdldEF1dGhlbnRpY2F0b3JEYXRhKCkgb24gQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzODk2NgorICAgICAgICByZGFyOi8vcHJvYmxlbS85MTQ0OTkwNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpBdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Z2V0VHJhbnNwb3J0cyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Z2V0QXV0
aGVudGljYXRvckRhdGEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdG9yUmVzcG9uc2U6OnRyeUNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JSZXNwb25zZURhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yUmVzcG9uc2VEYXRhOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0
aG4vQXV0aGVudGljYXRvclRyYW5zcG9ydC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvclRyYW5zcG9ydC5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9X
ZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4v
V2ViQXV0aGVudGljYXRpb25VdGlscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0QXJy
YXlCdWZmZXJUb1ZlY3Rvcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50
aWNhdGlvblV0aWxzLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0F1dGhlbnRp
Y2F0b3JHZXRJbmZvUmVzcG9uc2UuY3BwOgorICAgICAgICAoZmlkbzo6QXV0aGVudGljYXRvckdl
dEluZm9SZXNwb25zZTo6c2V0VHJhbnNwb3J0cyk6CisgICAgICAgIChmaWRvOjp0b1N0cmluZ1Zl
Y3Rvcik6CisgICAgICAgIChmaWRvOjplbmNvZGVBc0NCT1IpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXV0aG4vZmlkby9BdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlLmg6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcDoKKyAgICAg
ICAgKGZpZG86OmNvbnZlcnRTdHJpbmdUb0F1dGhlbnRpY2F0b3JUcmFuc3BvcnQpOgorICAgICAg
ICAoZmlkbzo6cmVhZENUQVBNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKToKKyAgICAgICAgKGZpZG86
OnJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoZmlkbzo6cmVhZFUyZlJl
Z2lzdGVyUmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNw
b25zZUNvbnZlcnRlci5oOgorICAgICAgICAoZmlkbzo6cmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2Up
OgorCiAyMDIyLTA0LTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgRHJvcCB1bnVzZWQgcGx1Z2luUmVwbGFjZW1lbnRTY3JpcHRPYmplY3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
MjdkNjc5YjY5ZjAwNWJjNWVjZWU1NTAyMGNlNGVjZTVjYjlkNmI4Zi4uY2ZmNGJjZTQ2MThhNTI4
YWEyMTJmMzk4ZDAyODQzYWEwMjRjZGQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAy
Mi0wNC0wOCAgSiBQYXNjb2UgIDxqX3Bhc2NvZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1
dGhuXSBJbXBsZW1lbnQgZ2V0VHJhbnNwb3J0cygpIGFuZCBnZXRBdXRoZW50aWNhdG9yRGF0YSgp
IG9uIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg5NjYKKyAgICAgICAgcmRhcjovL3Byb2Js
ZW0vOTE0NDk5MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFBsYXRmb3JtL3NwaS9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLm1tOgorICAgICAgICAoLVtfV0tBdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb25SZXNwb25zZSBpbml0V2l0aENsaWVudERhdGFKU09OOnJhd0lkOmV4dGVuc2lv
bnM6YXR0ZXN0YXRpb25PYmplY3Q6YXR0YWNobWVudDp0cmFuc3BvcnRzOl0pOgorICAgICAgICAo
LVtfV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSBpbml0V2l0aENsaWVudERhdGFK
U09OOnJhd0lkOmV4dGVuc2lvbnM6YXR0ZXN0YXRpb25PYmplY3Q6YXR0YWNobWVudDpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlSW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW06CisgICAgICAgICh3a0V4dGVuc2lvbnNDbGll
bnRPdXRwdXRzKToKKyAgICAgICAgKHdrQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2Up
OgorICAgICAgICAod2tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW06
CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvckludGVybmFsOjp0cmFuc3BvcnRz
KToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVk
ZW50aWFsQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRo
ZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0Ojp0b0FTQ0Rlc2NyaXB0b3IpOgorICAg
ICAgICAoV2ViS2l0Ojp0b0F1dGhlbnRpY2F0b3JUcmFuc3BvcnRzKToKKyAgICAgICAgKFdlYktp
dDo6Y29udGludWVBZnRlclJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q3Rh
cEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclJlc3BvbnNlUmVjZWl2
ZWQpOgorICAgICAgICAoV2ViS2l0OjpDdGFwQXV0aGVudGljYXRvcjo6dHJhbnNwb3J0cyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0
b3IuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwRHJp
dmVyLmg6CisgICAgICAgIChXZWJLaXQ6OkN0YXBEcml2ZXI6OnRyYW5zcG9ydCBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OkN0YXBEcml2ZXI6OnByb3RvY29sIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6Q3RhcERyaXZlcjo6Q3RhcERyaXZlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkN0
YXBIaWREcml2ZXI6OkN0YXBIaWREcml2ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9maWRvL0N0YXBOZmNEcml2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpDdGFw
TmZjRHJpdmVyOjpDdGFwTmZjRHJpdmVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VTJm
QXV0aGVudGljYXRvcjo6Y29udGludWVSZWdpc3RlckNvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2
ZWQpOgorCiAyMDIyLTA0LTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgRHJvcCB1bnVzZWQgcGx1Z2luUmVwbGFjZW1lbnRTY3JpcHRPYmplY3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5jcHAKaW5kZXggNGU4Yjc0OWU0YzAwNzA5ZmRhMzAx
YTdhZmU1ZmQ5OTVlNDA3ODQ1MC4uYjQzZDMyYjEyZDM1ODkyYzQyMWY4MTkzYTNjNjJkY2Q2Mzc5
MDg2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5jcHAKQEAgLTI5LDIy
ICsyOSwyNSBAQAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJBdXRoZW50aWNh
dG9yUmVzcG9uc2VEYXRhLmgiCisjaW5jbHVkZSAiQ0JPUlJlYWRlci5oIgorI2luY2x1ZGUgIldl
YkF1dGhlbnRpY2F0aW9uVXRpbHMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8QXV0
aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlOjpjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+
JiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQp
CitSZWY8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJy
YXlCdWZmZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0
dGFjaG1lbnQsIFZlY3RvcjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiYmIHRyYW5zcG9ydHMpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2UoV1RGTW92ZShyYXdJZCksIFdURk1vdmUoYXR0ZXN0YXRpb25PYmplY3QpLCBhdHRhY2htZW50
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2UoV1RGTW92ZShyYXdJZCksIFdURk1vdmUoYXR0ZXN0YXRpb25PYmplY3QpLCBhdHRhY2ht
ZW50LCBXVEZNb3ZlKHRyYW5zcG9ydHMpKSk7CiB9CiAKLVJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShj
b25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF0dGVz
dGF0aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50KQorUmVmPEF1
dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25S
ZXNwb25zZTo6Y3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0
dGFjaG1lbnQsIFZlY3RvcjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiYmIHRyYW5zcG9ydHMpCiB7
Ci0gICAgcmV0dXJuIGNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3JlYXRlKHJhd0lkLmRhdGEoKSwgcmF3
SWQuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdHRlc3RhdGlvbk9iamVjdC5kYXRhKCks
IGF0dGVzdGF0aW9uT2JqZWN0LnNpemUoKSksIGF0dGFjaG1lbnQpOworICAgIHJldHVybiBjcmVh
dGUoQXJyYXlCdWZmZXI6OmNyZWF0ZShyYXdJZC5kYXRhKCksIHJhd0lkLnNpemUoKSksIEFycmF5
QnVmZmVyOjpjcmVhdGUoYXR0ZXN0YXRpb25PYmplY3QuZGF0YSgpLCBhdHRlc3RhdGlvbk9iamVj
dC5zaXplKCkpLCBhdHRhY2htZW50LCBXVEZNb3ZlKHRyYW5zcG9ydHMpKTsKIH0KIAotQXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3Bv
bnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF0dGVzdGF0
aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50KQorQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
KFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF0dGVzdGF0aW9u
T2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50LCBWZWN0b3I8QXV0aGVu
dGljYXRvclRyYW5zcG9ydD4mJiB0cmFuc3BvcnRzKQogICAgIDogQXV0aGVudGljYXRvclJlc3Bv
bnNlKFdURk1vdmUocmF3SWQpLCBhdHRhY2htZW50KQogICAgICwgbV9hdHRlc3RhdGlvbk9iamVj
dChXVEZNb3ZlKGF0dGVzdGF0aW9uT2JqZWN0KSkKKyAgICAsIG1fdHJhbnNwb3J0cyhXVEZNb3Zl
KHRyYW5zcG9ydHMpKQogewogfQogCkBAIC01Myw5ICs1NiwzMiBAQCBBdXRoZW50aWNhdG9yUmVz
cG9uc2VEYXRhIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpkYXRhKCkgY29uc3QK
ICAgICBhdXRvIGRhdGEgPSBBdXRoZW50aWNhdG9yUmVzcG9uc2U6OmRhdGEoKTsKICAgICBkYXRh
LmlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgPSB0cnVlOwogICAgIGRhdGEuYXR0
ZXN0YXRpb25PYmplY3QgPSBtX2F0dGVzdGF0aW9uT2JqZWN0LmNvcHlSZWYoKTsKKyAgICBkYXRh
LnRyYW5zcG9ydHMgPSBtX3RyYW5zcG9ydHM7CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKK1ZlY3Rv
cjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZTo6Z2V0VHJhbnNwb3J0cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHJhbnNwb3J0czsKK30K
KworQXJyYXlCdWZmZXIqIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpnZXRBdXRo
ZW50aWNhdG9yRGF0YSgpIGNvbnN0Cit7CisgICAgYXV0byBkZWNvZGVkUmVzcG9uc2UgPSBjYm9y
OjpDQk9SUmVhZGVyOjpyZWFkKGNvbnZlcnRBcnJheUJ1ZmZlclRvVmVjdG9yKG1fYXR0ZXN0YXRp
b25PYmplY3QucHRyKCkpKTsKKyAgICBpZiAoIWRlY29kZWRSZXNwb25zZSB8fCAhZGVjb2RlZFJl
c3BvbnNlLT5pc01hcCgpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgY29uc3QgYXV0byYgYXR0T2JqTWFwID0gZGVj
b2RlZFJlc3BvbnNlLT5nZXRNYXAoKTsKKyAgICBhdXRvIGl0ID0gYXR0T2JqTWFwLmZpbmQoY2Jv
cjo6Q0JPUlZhbHVlKCJhdXRoRGF0YSIpKTsKKyAgICBpZiAoaXQgPT0gYXR0T2JqTWFwLmVuZCgp
IHx8ICFpdC0+c2Vjb25kLmlzQnl0ZVN0cmluZygpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgYXV0byBhdXRoRGF0
YSA9IGl0LT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpOworICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKGF1dGhEYXRhLmRhdGEoKSwgYXV0aERhdGEuc2l6ZSgpKS5wdHIoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaAppbmRleCAyNjIzZWE4NTk5YzQ3MTU0N2FhYTUw
OWM3YTI2OGI0YWU0OGY2YjFlLi5kZjIzNThhZGYzMGU5YzdmYWMxYjIwYWMxYzdkOGU5ZDg2YjI3
YjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oCkBAIC0yOCwyNSArMjgs
MjkgQEAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvclJl
c3BvbnNlLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRvclRyYW5zcG9ydC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIDog
cHVibGljIEF1dGhlbnRpY2F0b3JSZXNwb25zZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4m
JiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF0dGVzdGF0aW9uT2JqZWN0LCBBdXRoZW50aWNh
dG9yQXR0YWNobWVudCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxBdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gY3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3
SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0
b3JBdHRhY2htZW50KTsKKyAgICBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlPiBjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+
JiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50LCBWZWN0b3I8QXV0
aGVudGljYXRvclRyYW5zcG9ydD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gY3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1
dGhlbnRpY2F0b3JBdHRhY2htZW50LCBWZWN0b3I8QXV0aGVudGljYXRvclRyYW5zcG9ydD4mJik7
CiAKICAgICB2aXJ0dWFsIH5BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSgpID0gZGVm
YXVsdDsKIAogICAgIEFycmF5QnVmZmVyKiBhdHRlc3RhdGlvbk9iamVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fYXR0ZXN0YXRpb25PYmplY3QucHRyKCk7IH0KKyAgICBWZWN0b3I8QXV0aGVudGljYXRv
clRyYW5zcG9ydD4gZ2V0VHJhbnNwb3J0cygpIGNvbnN0OworICAgIEFycmF5QnVmZmVyKiBnZXRB
dXRoZW50aWNhdG9yRGF0YSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIEF1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmPEFycmF5QnVmZmVyPiYm
LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCk7CisgICAgQXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYsIEF1dGhlbnRp
Y2F0b3JBdHRhY2htZW50LCBWZWN0b3I8QXV0aGVudGljYXRvclRyYW5zcG9ydD4mJik7CiAKICAg
ICBUeXBlIHR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBUeXBlOjpBdHRlc3RhdGlvbjsgfQog
ICAgIEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSgpIGNvbnN0IGZpbmFsOwogCiAgICAg
UmVmPEFycmF5QnVmZmVyPiBtX2F0dGVzdGF0aW9uT2JqZWN0OworICAgIFZlY3RvcjxBdXRoZW50
aWNhdG9yVHJhbnNwb3J0PiBtX3RyYW5zcG9ydHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaWRsCmluZGV4IDFjMDBjMTVm
YjUwNDg4NjA4YTU5ZGQxYWUyNGE5YmUzNzE2YzIzZDMuLmJjZGMxMjlkZWM1NjljZTc3MTBkMzQ4
NzI3MjdjYWI1MTc5Y2Y4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2Uu
aWRsCkBAIC0zMCw0ICszMCw2IEBACiAgICAgU2VjdXJlQ29udGV4dAogXSBpbnRlcmZhY2UgQXV0
aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2Ugewog
ICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgQXJyYXlCdWZmZXIgYXR0ZXN0YXRp
b25PYmplY3Q7CisgICAgc2VxdWVuY2U8QXV0aGVudGljYXRvclRyYW5zcG9ydD4gICAgICAgICAg
ICBnZXRUcmFuc3BvcnRzKCk7CisgICAgQXJyYXlCdWZmZXIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnZXRBdXRoZW50aWNhdG9yRGF0YSgpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmNwcApp
bmRleCA3YTQxNjY5ZGQ2ZTdhZjQwM2QxZGUyMjY5N2M4NDQ1MDkyOGM1YjdkLi5jNmQzMmI4ZGNm
ODNiMTAzZmMxMzYwYzI4YjQ5NWMwMmNmNDg0MzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuY3BwCkBAIC00
Myw3ICs0Myw3IEBAIFJlZlB0cjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JS
ZXNwb25zZTo6dHJ5Q3JlYXRlKEF1dGhlbnRpY2F0b3JSZXNwCiAgICAgICAgIGlmICghZGF0YS5h
dHRlc3RhdGlvbk9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAg
IHJldHVybiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKGRhdGEucmF3
SWQucmVsZWFzZU5vbk51bGwoKSwgZGF0YS5hdHRlc3RhdGlvbk9iamVjdC5yZWxlYXNlTm9uTnVs
bCgpLCBhdHRhY2htZW50KTsKKyAgICAgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlv
blJlc3BvbnNlOjpjcmVhdGUoZGF0YS5yYXdJZC5yZWxlYXNlTm9uTnVsbCgpLCBkYXRhLmF0dGVz
dGF0aW9uT2JqZWN0LnJlbGVhc2VOb25OdWxsKCksIGF0dGFjaG1lbnQsIFdURk1vdmUoZGF0YS50
cmFuc3BvcnRzKSk7CiAgICAgfQogCiAgICAgaWYgKCFkYXRhLmF1dGhlbnRpY2F0b3JEYXRhIHx8
ICFkYXRhLnNpZ25hdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oCmluZGV4IGIwNjcxZWViMTExZmU1ZGFiMGI0
MzA0OTJkMDljMWZiNDU1ZDUyZmYuLmZkMWY1MGRiYTAzNWI5OTZmYmRhMmQ5Mjk3NWFjZmI4MjI3
YzJjYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvclJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdG9yUmVzcG9uc2UuaApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBlbnVtIGNsYXNzIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OworZW51bSBjbGFzcyBB
dXRoZW50aWNhdG9yVHJhbnNwb3J0OwogCiBzdHJ1Y3QgQXV0aGVudGljYXRvclJlc3BvbnNlRGF0
YTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdG9yUmVzcG9uc2VEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaAppbmRleCA4MTkwZjM4ZjI3NGZiYWYyZDgyZGU0OTAz
ZDRiMmFkYzQ1ZDc4YTljLi5jNTRmMWQ0NzQ2ZTQ1NGEzNmZkYjliYWI2MDYzNTJmMDllM2RiMDkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0
b3JSZXNwb25zZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxF
KFdFQl9BVVRITikKIAorI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAKQEAgLTUxLDYgKzUyLDggQEAgc3RydWN0IEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEg
ewogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2lnbmF0dXJlOwogICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gdXNlckhhbmRsZTsKIAorICAgIFZlY3RvcjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJh
bnNwb3J0PiB0cmFuc3BvcnRzOworCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE+IGRlY29kZShEZWNvZGVy
Jik7CiB9OwpAQCAtOTQsNiArOTcsNyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogCiAgICAgaWYgKGlzQXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2UgJiYgYXR0ZXN0YXRpb25PYmplY3QpIHsKICAgICAgICAgZW5j
b2RlQXJyYXlCdWZmZXIoZW5jb2RlciwgKmF0dGVzdGF0aW9uT2JqZWN0KTsKKyAgICAgICAgZW5j
b2RlciA8PCB0cmFuc3BvcnRzOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzksNiAr
MTQzLDEyIEBAIHN0ZDo6b3B0aW9uYWw8QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YT4gQXV0aGVu
dGljYXRvclJlc3BvbnNlRGF0YTo6ZGVjb2RlKERlY29kCiAgICAgICAgIHJlc3VsdC5hdHRlc3Rh
dGlvbk9iamVjdCA9IGRlY29kZUFycmF5QnVmZmVyKGRlY29kZXIpOwogICAgICAgICBpZiAoIXJl
c3VsdC5hdHRlc3RhdGlvbk9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8QXV0aGVudGljYXRvclRyYW5zcG9ydD4+
IHRyYW5zcG9ydHM7CisgICAgICAgIGRlY29kZXIgPj4gdHJhbnNwb3J0czsKKyAgICAgICAgaWYg
KCF0cmFuc3BvcnRzKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
cmVzdWx0LnRyYW5zcG9ydHMgPSAqdHJhbnNwb3J0czsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvclRyYW5zcG9ydC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdG9yVHJhbnNwb3J0LmgKaW5kZXggYTNiMzdiNmI2YTI4NTljY2QxYjk0MmQwYThh
N2ExYzFmODgxNDA1YS4uZTQwOWQzYmM5MjRlNWY5ZTdjNzc5MzI1NGE3YjFkN2IxMjk5YTQ1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9y
VHJhbnNwb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdG9yVHJhbnNwb3J0LmgKQEAgLTM1LDcgKzM1LDggQEAgZW51bSBjbGFzcyBBdXRoZW50aWNh
dG9yVHJhbnNwb3J0IHsKICAgICBVc2IsCiAgICAgTmZjLAogICAgIEJsZSwKLSAgICBJbnRlcm5h
bAorICAgIEludGVybmFsLAorICAgIENhYmxlCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkBAIC00OCw3ICs0OSw4IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6
QXV0aGVudGljYXRvclRyYW5zcG9ydD4gewogICAgICAgICBXZWJDb3JlOjpBdXRoZW50aWNhdG9y
VHJhbnNwb3J0OjpVc2IsCiAgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6
Ok5mYywKICAgICAgICAgV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6QmxlLAotICAg
ICAgICBXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbAorICAgICAgICBX
ZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCwKKyAgICAgICAgV2ViQ29y
ZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6Q2FibGUKICAgICA+OwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclRyYW5z
cG9ydC5pZGwKaW5kZXggOGJjOGY1NDdlMjg0ZWMyYzg4MWVkMmFlMDBmMGRmNTY5NTlkMDMzMi4u
Y2Y3YTQzOTllMTRhZTRiM2Y0ZTBmYWIwZmRlMWU0ODkzNzYyMGI2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JUcmFuc3Bv
cnQuaWRsCkBAIC0yOSw1ICsyOSw2IEBACiAgICAgInVzYiIsCiAgICAgIm5mYyIsCiAgICAgImJs
ZSIsCi0gICAgImludGVybmFsIgorICAgICJpbnRlcm5hbCIsCisgICAgImNhYmxlIgogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRp
b25Db25zdGFudHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVu
dGljYXRpb25Db25zdGFudHMuaAppbmRleCBmODVmMWZhYmNmY2MyMjdkMDYzYjhkMTRkMTVkNTY3
Nzk3NDM1NTRjLi5hNDk0YTlkYmMwZjQ1MGY5ZGQ1OTY5MzkxM2MxMzUxNmJkZGQxMTM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9u
Q29uc3RhbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRo
ZW50aWNhdGlvbkNvbnN0YW50cy5oCkBAIC05Myw2ICs5MywxMiBAQCBjb25zdGV4cHIgY29uc3Qg
Y2hhciBrZXlTaXplS2V5W10gPSAia2V5X3NpemUiOwogY29uc3RleHByIGNvbnN0IGNoYXIgcmVs
eWluZ1BhcnR5S2V5W10gPSAicnAiOwogY29uc3RleHByIGNvbnN0IGNoYXIgYXBwbGljYXRpb25U
YWdLZXlbXSA9ICJ0YWciOwogCitjb25zdGV4cHIgY29uc3QgY2hhciBhdXRoZW50aWNhdG9yVHJh
bnNwb3J0VXNiW10gPSAidXNiIjsKK2NvbnN0ZXhwciBjb25zdCBjaGFyIGF1dGhlbnRpY2F0b3JU
cmFuc3BvcnROZmNbXSA9ICJuZmMiOworY29uc3RleHByIGNvbnN0IGNoYXIgYXV0aGVudGljYXRv
clRyYW5zcG9ydEJsZVtdID0gImJsZSI7Citjb25zdGV4cHIgY29uc3QgY2hhciBhdXRoZW50aWNh
dG9yVHJhbnNwb3J0SW50ZXJuYWxbXSA9ICJpbnRlcm5hbCI7Citjb25zdGV4cHIgY29uc3QgY2hh
ciBhdXRoZW50aWNhdG9yVHJhbnNwb3J0Q2FibGVbXSA9ICJjYWJsZSI7CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFdlYkF1dGhuIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwCmlu
ZGV4IDQ3Yjc3MTE1ZTk4MGRlZjRkMzBiMWI2N2M5Mzc4MjA5ZGJhMDA2MDguLmZlMWZmZGY1Mjc2
MzkxNDVhNWVjMzU3YmVhNDY5MTk1YTBjMjFlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcApAQCAt
MjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAorI2luY2x1ZGUgIkNCT1JS
ZWFkZXIuaCIKICNpbmNsdWRlICJDQk9SV3JpdGVyLmgiCiAjaW5jbHVkZSAiRmlkb0NvbnN0YW50
cy5oIgogI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmgiCkBAIC00Myw2ICs0
NCwxMSBAQCBWZWN0b3I8dWludDhfdD4gY29udmVydEJ5dGVzVG9WZWN0b3IoY29uc3QgdWludDhf
dCBieXRlQXJyYXlbXSwgY29uc3Qgc2l6ZV90IGxlbgogICAgIHJldHVybiB7IGJ5dGVBcnJheSwg
bGVuZ3RoIH07CiB9CiAKK1ZlY3Rvcjx1aW50OF90PiBjb252ZXJ0QXJyYXlCdWZmZXJUb1ZlY3Rv
cihBcnJheUJ1ZmZlciogYnVmZmVyKQoreworICAgIHJldHVybiBjb252ZXJ0Qnl0ZXNUb1ZlY3Rv
cihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSksIGJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpKTsKK30KKwogVmVjdG9yPHVpbnQ4X3Q+IHByb2R1Y2VScElkSGFzaChjb25zdCBT
dHJpbmcmIHJwSWQpCiB7CiAgICAgYXV0byBjcnlwdG8gPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3Jl
YXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMu
aAppbmRleCA0ZmVhMTFjMDdhOGEzOTJiYjg0NjI4MmVjYTg5ZDlkOTgyMGQ3NjI3Li40NWYzM2Y0
ZGQ4YzE0Zjg3N2I1MmIzYjY5N2I4NjZkMGE1YTIyNjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaApAQCAt
MzgsNiArMzgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdFQkNPUkVfRVhQT1JUIFZlY3Rv
cjx1aW50OF90PiBjb252ZXJ0Qnl0ZXNUb1ZlY3Rvcihjb25zdCB1aW50OF90IGJ5dGVBcnJheVtd
LCBjb25zdCBzaXplX3QgbGVuZ3RoKTsKIAorV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+
IGNvbnZlcnRBcnJheUJ1ZmZlclRvVmVjdG9yKEFycmF5QnVmZmVyKik7CisKIC8vIFByb2R1Y2Ug
YSBTSEEtMjU2IGhhc2ggb2YgdGhlIGdpdmVuIFJQIElELgogV0VCQ09SRV9FWFBPUlQgVmVjdG9y
PHVpbnQ4X3Q+IHByb2R1Y2VScElkSGFzaChjb25zdCBTdHJpbmcmIHJwSWQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vQXV0aGVudGljYXRvckdl
dEluZm9SZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8v
QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZS5jcHAKaW5kZXggNTZmZGRlMmZjZDMzMDkxZjk5
NTUyZjkyNDQxNTViNjlkMjY0NzI0Zi4uZGI1ZDg1M2MzMWNiNTA2NGMyMjcwYzc0ODI4ZGQwMjUx
ZWMwMDMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRv
L0F1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vZmlkby9BdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlLmNwcApAQCAt
MzQsNiArMzQsNyBAQAogCiAjaW5jbHVkZSAiQ0JPUlZhbHVlLmgiCiAjaW5jbHVkZSAiQ0JPUldy
aXRlci5oIgorI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmgiCiAKIG5hbWVz
cGFjZSBmaWRvIHsKIApAQCAtNzYsNiArNzcsMzkgQEAgQXV0aGVudGljYXRvckdldEluZm9SZXNw
b25zZSYgQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZTo6c2V0T3B0aW9ucyhBdXRoZW50aWMK
ICAgICByZXR1cm4gKnRoaXM7CiB9CiAKK0F1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UmIEF1
dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2U6OnNldFRyYW5zcG9ydHMoVmVjdG9yPFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+JiYgdHJhbnNwb3J0cykKK3sKKyAgICBtX3RyYW5zcG9y
dHMgPSBXVEZNb3ZlKHRyYW5zcG9ydHMpOworICAgIHJldHVybiAqdGhpczsKK30KKworc3RhdGlj
IFZlY3RvcjxTdHJpbmc+IHRvU3RyaW5nVmVjdG9yKFZlY3RvcjxXZWJDb3JlOjpBdXRoZW50aWNh
dG9yVHJhbnNwb3J0PiB0cmFuc3BvcnRzKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHN0cmluZ1Ry
YW5zcG9ydHM7CisgICAgZm9yIChhdXRvJiB0cmFuc3BvcnQgOiB0cmFuc3BvcnRzKSB7CisgICAg
ICAgIHN3aXRjaCAodHJhbnNwb3J0KSB7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6QXV0aGVudGlj
YXRvclRyYW5zcG9ydDo6VXNiOgorICAgICAgICAgICAgc3RyaW5nVHJhbnNwb3J0cy5hcHBlbmQo
V2ViQ29yZTo6YXV0aGVudGljYXRvclRyYW5zcG9ydFVzYik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpOZmM6CisgICAg
ICAgICAgICBzdHJpbmdUcmFuc3BvcnRzLmFwcGVuZChXZWJDb3JlOjphdXRoZW50aWNhdG9yVHJh
bnNwb3J0TmZjKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkJsZToKKyAgICAgICAgICAgIHN0cmluZ1RyYW5zcG9ydHMu
YXBwZW5kKFdlYkNvcmU6OmF1dGhlbnRpY2F0b3JUcmFuc3BvcnRCbGUpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6SW50
ZXJuYWw6CisgICAgICAgICAgICBzdHJpbmdUcmFuc3BvcnRzLmFwcGVuZChXZWJDb3JlOjphdXRo
ZW50aWNhdG9yVHJhbnNwb3J0SW50ZXJuYWwpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6Q2FibGU6CisgICAgICAgICAg
ICBzdHJpbmdUcmFuc3BvcnRzLmFwcGVuZChXZWJDb3JlOjphdXRoZW50aWNhdG9yVHJhbnNwb3J0
Q2FibGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gc3RyaW5nVHJhbnNwb3J0czsK
K30KKwogVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUFzQ0JPUihjb25zdCBBdXRoZW50aWNhdG9yR2V0
SW5mb1Jlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgY2JvcjsKQEAg
LTk4LDYgKzEzMiw5IEBAIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVBc0NCT1IoY29uc3QgQXV0aGVu
dGljYXRvckdldEluZm9SZXNwb25zZSYgcmVzcG9uc2UpCiAKICAgICBpZiAocmVzcG9uc2UucGlu
UHJvdG9jb2woKSkKICAgICAgICAgZGV2aWNlSW5mb01hcC5lbXBsYWNlKENCT1JWYWx1ZSg2KSwg
dG9BcnJheVZhbHVlKCpyZXNwb25zZS5waW5Qcm90b2NvbCgpKSk7CisgICAgCisgICAgaWYgKHJl
c3BvbnNlLnRyYW5zcG9ydHMoKSkKKyAgICAgICAgZGV2aWNlSW5mb01hcC5lbXBsYWNlKENCT1JW
YWx1ZSg3KSwgdG9BcnJheVZhbHVlKHRvU3RyaW5nVmVjdG9yKCpyZXNwb25zZS50cmFuc3BvcnRz
KCkpKSk7CiAKICAgICBhdXRvIGVuY29kZWRCeXRlcyA9IENCT1JXcml0ZXI6OndyaXRlKENCT1JW
YWx1ZShXVEZNb3ZlKGRldmljZUluZm9NYXApKSk7CiAgICAgQVNTRVJUKGVuY29kZWRCeXRlcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vQXV0aGVu
dGljYXRvckdldEluZm9SZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9maWRvL0F1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UuaAppbmRleCBjMDYzYzRmNWM5MzVm
OTczZGMxMTU0MDIwMzU5N2M1ODU2YzM0YWZlLi40MmJiMWJhMTMzOGZlY2RlZTA0NDQ2MzM4M2Fi
ZGQyZmRiZjAxZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L2ZpZG8vQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vZmlkby9BdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlLmgKQEAg
LTMyLDYgKzMyLDcgQEAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCiAjaW5jbHVkZSAiQXV0aGVu
dGljYXRvclN1cHBvcnRlZE9wdGlvbnMuaCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9yVHJhbnNw
b3J0LmgiCiAjaW5jbHVkZSAiRmlkb0NvbnN0YW50cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRTZXQu
aD4KIApAQCAtNTIsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAgQXV0aGVudGljYXRvckdldEluZm9S
ZXNwb25zZSYgc2V0UGluUHJvdG9jb2xzKFZlY3Rvcjx1aW50OF90PiYmKTsKICAgICBBdXRoZW50
aWNhdG9yR2V0SW5mb1Jlc3BvbnNlJiBzZXRFeHRlbnNpb25zKFZlY3RvcjxTdHJpbmc+JiYpOwog
ICAgIEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UmIHNldE9wdGlvbnMoQXV0aGVudGljYXRv
clN1cHBvcnRlZE9wdGlvbnMmJik7CisgICAgQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSYg
c2V0VHJhbnNwb3J0cyhWZWN0b3I8V2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydD4mJik7
CiAKICAgICBjb25zdCBTdGRTZXQ8UHJvdG9jb2xWZXJzaW9uPiYgdmVyc2lvbnMoKSBjb25zdCB7
IHJldHVybiBtX3ZlcnNpb25zOyB9CiAgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhYWd1aWQo
KSBjb25zdCB7IHJldHVybiBtX2FhZ3VpZDsgfQpAQCAtNTksNiArNjEsNyBAQCBwdWJsaWM6CiAg
ICAgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiBwaW5Qcm90b2NvbCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGluUHJvdG9jb2xzOyB9CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8U3RyaW5nPj4mIGV4dGVuc2lvbnMoKSBjb25zdCB7IHJldHVybiBtX2V4dGVuc2lvbnM7
IH0KICAgICBjb25zdCBBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9ucyYgb3B0aW9ucygpIGNv
bnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+PiB0cmFuc3BvcnRzKCkgY29uc3QgeyBy
ZXR1cm4gbV90cmFuc3BvcnRzOyB9CiAKIHByaXZhdGU6CiAgICAgU3RkU2V0PFByb3RvY29sVmVy
c2lvbj4gbV92ZXJzaW9uczsKQEAgLTY3LDYgKzcwLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbV9waW5Qcm90b2NvbHM7CiAgICAgc3RkOjpvcHRpb25h
bDxWZWN0b3I8U3RyaW5nPj4gbV9leHRlbnNpb25zOwogICAgIEF1dGhlbnRpY2F0b3JTdXBwb3J0
ZWRPcHRpb25zIG1fb3B0aW9uczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpB
dXRoZW50aWNhdG9yVHJhbnNwb3J0Pj4gbV90cmFuc3BvcnRzOwogfTsKIAogV0VCQ09SRV9FWFBP
UlQgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUFzQ0JPUihjb25zdCBBdXRoZW50aWNhdG9yR2V0SW5m
b1Jlc3BvbnNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcAppbmRleCA3MzVhOWJm
OGUwM2E4NDJhOTdkNDY5NGFjY2M2YjIyZTEzZWZlMDQ4Li43MjAyMDljYzQxZDM3MzIzOGI3MjM4
YTQzZWM1NWQ2NTU5YjRhM2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5jcHAKQEAg
LTU0LDYgKzU0LDIxIEBAIHN0YXRpYyBQcm90b2NvbFZlcnNpb24gY29udmVydFN0cmluZ1RvUHJv
dG9jb2xWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbikKICAgICByZXR1cm4gUHJvdG9jb2xW
ZXJzaW9uOjprVW5rbm93bjsKIH0KIAorc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXV0aGVudGljYXRv
clRyYW5zcG9ydD4gY29udmVydFN0cmluZ1RvQXV0aGVudGljYXRvclRyYW5zcG9ydChjb25zdCBT
dHJpbmcmIHRyYW5zcG9ydCkKK3sKKyAgICBpZiAodHJhbnNwb3J0ID09IGF1dGhlbnRpY2F0b3JU
cmFuc3BvcnRVc2IpCisgICAgICAgIHJldHVybiBBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2I7
CisgICAgaWYgKHRyYW5zcG9ydCA9PSBhdXRoZW50aWNhdG9yVHJhbnNwb3J0TmZjKQorICAgICAg
ICByZXR1cm4gQXV0aGVudGljYXRvclRyYW5zcG9ydDo6TmZjOworICAgIGlmICh0cmFuc3BvcnQg
PT0gYXV0aGVudGljYXRvclRyYW5zcG9ydEJsZSkKKyAgICAgICAgcmV0dXJuIEF1dGhlbnRpY2F0
b3JUcmFuc3BvcnQ6OkJsZTsKKyAgICBpZiAodHJhbnNwb3J0ID09IGF1dGhlbnRpY2F0b3JUcmFu
c3BvcnRJbnRlcm5hbCkKKyAgICAgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6Oklu
dGVybmFsOworICAgIGlmICh0cmFuc3BvcnQgPT0gYXV0aGVudGljYXRvclRyYW5zcG9ydENhYmxl
KQorICAgICAgICByZXR1cm4gQXV0aGVudGljYXRvclRyYW5zcG9ydDo6Q2FibGU7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKK30KKwogc3RkOjpvcHRpb25hbDxjYm9yOjpDQk9SVmFsdWU+IGRl
Y29kZVJlc3BvbnNlTWFwKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIpCiB7CiAgICAg
aWYgKGluQnVmZmVyLnNpemUoKSA8PSBrUmVzcG9uc2VDb2RlTGVuZ3RoIHx8IGdldFJlc3BvbnNl
Q29kZShpbkJ1ZmZlcikgIT0gQ3RhcERldmljZVJlc3BvbnNlQ29kZTo6a1N1Y2Nlc3MpCkBAIC05
NSw3ICsxMTAsNyBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGdldENyZWRlbnRpYWxJZChjb25z
dCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0b3JEYXRhKQogCiAvLyBEZWNvZGVzIGJ5dGUg
YXJyYXkgcmVzcG9uc2UgZnJvbSBhdXRoZW50aWNhdG9yIHRvIENCT1IgdmFsdWUgb2JqZWN0IGFu
ZAogLy8gY2hlY2tzIGZvciBjb3JyZWN0IGVuY29kaW5nIGZvcm1hdC4KLVJlZlB0cjxBdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZENUQVBNYWtlQ3JlZGVudGlhbFJlc3BvbnNl
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIsIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JB
dHRhY2htZW50IGF0dGFjaG1lbnQsIGNvbnN0IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVu
Y2UmIGF0dGVzdGF0aW9uKQorUmVmUHRyPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
PiByZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBp
bkJ1ZmZlciwgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgVmVj
dG9yPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+JiYgdHJhbnNwb3J0cywgY29uc3QgQXR0ZXN0YXRp
b25Db252ZXlhbmNlUHJlZmVyZW5jZSYgYXR0ZXN0YXRpb24pCiB7CiAgICAgYXV0byBkZWNvZGVk
TWFwID0gZGVjb2RlUmVzcG9uc2VNYXAoaW5CdWZmZXIpOwogICAgIGlmICghZGVjb2RlZE1hcCkK
QEAgLTEzNSw3ICsxNTAsNyBAQCBSZWZQdHI8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2U+IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZShjb25zdCBWZQogICAgICAgICBhdHRl
c3RhdGlvbk9iamVjdCA9IGNib3I6OkNCT1JXcml0ZXI6OndyaXRlKENCT1IoV1RGTW92ZShhdHRl
c3RhdGlvbk9iamVjdE1hcCkpKTsKICAgICB9CiAKLSAgICByZXR1cm4gQXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsICphdHRlc3RhdGlvbk9iamVj
dCwgYXR0YWNobWVudCk7CisgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3Bv
bnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCAqYXR0ZXN0YXRpb25PYmplY3QsIGF0dGFjaG1lbnQs
IFdURk1vdmUodHJhbnNwb3J0cykpOwogfQogCiBSZWZQdHI8QXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlPiByZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgaW5CdWZmZXIsIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1l
bnQpCkBAIC0zMjUsNiArMzQwLDIyIEBAIHN0ZDo6b3B0aW9uYWw8QXV0aGVudGljYXRvckdldElu
Zm9SZXNwb25zZT4gcmVhZENUQVBHZXRJbmZvUmVzcG9uc2UoY29uc3QgVmVjdG9yCiAgICAgICAg
IHJlc3BvbnNlLnNldFBpblByb3RvY29scyhXVEZNb3ZlKHN1cHBvcnRlZFBpblByb3RvY29scykp
OwogICAgIH0KIAorICAgIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SKDkpKTsKKyAgICBpZiAo
aXQgIT0gcmVzcG9uc2VNYXAuZW5kKCkpIHsKKyAgICAgICAgaWYgKCFpdC0+c2Vjb25kLmlzQXJy
YXkoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgVmVjdG9y
PEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+IHRyYW5zcG9ydHM7CisgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgdHJhbnNwb3J0U3RyaW5nIDogaXQtPnNlY29uZC5nZXRBcnJheSgpKSB7CisgICAgICAg
ICAgICBpZiAoIXRyYW5zcG9ydFN0cmluZy5pc1N0cmluZygpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICBhdXRvIHRyYW5zcG9ydCA9IGNvbnZlcnRT
dHJpbmdUb0F1dGhlbnRpY2F0b3JUcmFuc3BvcnQodHJhbnNwb3J0U3RyaW5nLmdldFN0cmluZygp
KTsKKyAgICAgICAgICAgIGlmICh0cmFuc3BvcnQpCisgICAgICAgICAgICAgICAgdHJhbnNwb3J0
cy5hcHBlbmQoKnRyYW5zcG9ydCk7CisgICAgICAgIH0KKyAgICAgICAgcmVzcG9uc2Uuc2V0VHJh
bnNwb3J0cyhXVEZNb3ZlKHRyYW5zcG9ydHMpKTsKKyAgICB9CisKICAgICByZXR1cm4gV1RGTW92
ZShyZXNwb25zZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmgKaW5kZXggYTJlMjhh
ODE4ZmZjOGE5ZjAzYWI4MjllODlhYjFkNDQzMWRkYmFiOS4uZmRjNjFkMmIzYmJkN2JmZDk1Njgz
NTIwZDVjNDUzNGM0NTMzYTUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmgKQEAgLTUy
LDcgKzUyLDcgQEAgV0VCQ09SRV9FWFBPUlQgQ3RhcERldmljZVJlc3BvbnNlQ29kZSBnZXRSZXNw
b25zZUNvZGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CiAvLyBhbmQgY29udmVydHMgcmVzcG9u
c2UgdG8gQXV0aGVudGljYXRvck1ha2VDcmVkZW50aWFsUmVzcG9uc2Ugb2JqZWN0IHdpdGgKIC8v
IENCT1IgbWFwIGtleXMgdGhhdCBjb25mb3JtIHRvIGZvcm1hdCBvZiBhdHRlc3RhdGlvbiBvYmpl
Y3QgZGVmaW5lZCBieSB0aGUKIC8vIFdlYkF1dGhOIHNwZWMgOiBodHRwczovL3czYy5naXRodWIu
aW8vd2ViYXV0aG4vI2ZpZy1hdHRTdHJ1Y3RzCi1XRUJDT1JFX0VYUE9SVCBSZWZQdHI8V2ViQ29y
ZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRDVEFQTWFrZUNyZWRlbnRp
YWxSZXNwb25zZShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9y
QXR0YWNobWVudCwgY29uc3QgV2ViQ29yZTo6QXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5j
ZSYgPSBXZWJDb3JlOjpBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpEaXJlY3QpOwor
V0VCQ09SRV9FWFBPUlQgUmVmUHRyPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlPiByZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiwgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQsIFZlY3RvcjxXZWJDb3JlOjpB
dXRoZW50aWNhdG9yVHJhbnNwb3J0PiYmLCBjb25zdCBXZWJDb3JlOjpBdHRlc3RhdGlvbkNvbnZl
eWFuY2VQcmVmZXJlbmNlJiA9IFdlYkNvcmU6OkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVu
Y2U6OkRpcmVjdCk7CiAKIC8vIERlLXNlcmlhbGl6ZXMgQ0JPUiBlbmNvZGVkIHJlc3BvbnNlIHRv
IEF1dGhlbnRpY2F0b3JHZXRBc3NlcnRpb24gLwogLy8gQXV0aGVudGljYXRvckdldE5leHRBc3Nl
cnRpb24gcmVxdWVzdCB0byBBdXRoZW50aWNhdG9yR2V0QXNzZXJ0aW9uUmVzcG9uc2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNv
bnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVz
cG9uc2VDb252ZXJ0ZXIuY3BwCmluZGV4IGE0ZmRlMTVmZmJmZDU1NTc3YjIyOWQ4NjQ5YzY3NjQ4
Y2U3ZWI5NmQuLjE3NWQwZTVhNTk3MmI2OTNlZTc0MGQ2YTVlZjdkNzIxYjQwZjBmODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNv
bnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Uy
ZlJlc3BvbnNlQ29udmVydGVyLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyBjYm9yOjpD
Qk9SVmFsdWU6Ok1hcFZhbHVlIGNyZWF0ZUZpZG9BdHRlc3RhdGlvblN0YXRlbWVudEZyb21VMmZS
ZWdpc3RlclJlCiAKIH0gLy8gbmFtZXNwYWNlCiAKLVJlZlB0cjxBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZT4gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElk
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50
IGF0dGFjaG1lbnQsIGNvbnN0IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmIGF0dGVz
dGF0aW9uKQorUmVmUHRyPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiByZWFkVTJm
UmVnaXN0ZXJSZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgdTJmRGF0YSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgVmVjdG9yPEF1
dGhlbnRpY2F0b3JUcmFuc3BvcnQ+JiYgdHJhbnNwb3J0cywgY29uc3QgQXR0ZXN0YXRpb25Db252
ZXlhbmNlUHJlZmVyZW5jZSYgYXR0ZXN0YXRpb24pCiB7CiAgICAgYXV0byBwdWJsaWNLZXkgPSBl
eHRyYWN0RUNQdWJsaWNLZXlGcm9tVTJmUmVnaXN0cmF0aW9uUmVzcG9uc2UodTJmRGF0YSk7CiAg
ICAgaWYgKHB1YmxpY0tleS5pc0VtcHR5KCkpCkBAIC0xNjAsNyArMTYwLDcgQEAgUmVmUHRyPEF1
dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShj
b25zdCBTdHJpbmcmIHIKIAogICAgIGF1dG8gYXR0ZXN0YXRpb25PYmplY3QgPSBidWlsZEF0dGVz
dGF0aW9uT2JqZWN0KFdURk1vdmUoYXV0aERhdGEpLCAiZmlkby11MmYiX3MsIFdURk1vdmUoZmlk
b0F0dGVzdGF0aW9uU3RhdGVtZW50KSwgYXR0ZXN0YXRpb24pOwogCi0gICAgcmV0dXJuIEF1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3Rh
dGlvbk9iamVjdCwgYXR0YWNobWVudCk7CisgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9iamVjdCwgYXR0
YWNobWVudCwgV1RGTW92ZSh0cmFuc3BvcnRzKSk7CiB9CiAKIFJlZlB0cjxBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2U+IHJlYWRVMmZTaWduUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElk
LCBjb25zdCBXZWJDb3JlOjpCdWZmZXJTb3VyY2UmIGtleUhhbmRsZSwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiB1MmZEYXRhLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNl
Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVz
cG9uc2VDb252ZXJ0ZXIuaAppbmRleCA1N2Q1M2M3MWMyMTk4ODM0ZmQ5OGRmYjIwM2RiNzc3ZjFj
NDM3YjYwLi40MWQ5NjlkY2I3ZTY3MTNkOThlNTNlOTBkZjliNTk1MjU1YTkyYmZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252
ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVz
cG9uc2VDb252ZXJ0ZXIuaApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgZmlkbyB7CiAKIC8v
IENvbnZlcnRzIGEgVTJGIHJlZ2lzdGVyIHJlc3BvbnNlIHRvIFdlYkF1dGhOIG1ha2VDcmVkZW50
aWFsIHJlc3BvbnNlLgogLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIu
MC1pZC0yMDE4MDIyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAt
aWQtMjAxODAyMjcuaHRtbCN1MmYtYXV0aGVudGljYXRvck1ha2VDcmVkZW50aWFsLWludGVyb3Bl
cmFiaWxpdHkKLVdFQkNPUkVfRVhQT1JUIFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZT4gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBy
cElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEsIFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JBdHRhY2htZW50LCBjb25zdCBXZWJDb3JlOjpBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJl
bmNlJiA9IFdlYkNvcmU6OkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6OkRpcmVjdCk7
CitXRUJDT1JFX0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2U+IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcnBJZCwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNo
bWVudCwgVmVjdG9yPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+JiYgdHJhbnNwb3J0
cyA9IHsgfSwgY29uc3QgV2ViQ29yZTo6QXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSYg
PSBXZWJDb3JlOjpBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpEaXJlY3QpOwogCiAv
LyBDb252ZXJ0cyBhIFUyRiBhdXRoZW50aWNhdGlvbiByZXNwb25zZSB0byBXZWJBdXRoTiBnZXRB
c3NlcnRpb24gcmVzcG9uc2UuCiAvLyBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlk
by12Mi4wLWlkLTIwMTgwMjI3L2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0b3ItcHJvdG9jb2wt
djIuMC1pZC0yMDE4MDIyNy5odG1sI3UyZi1hdXRoZW50aWNhdG9yR2V0QXNzZXJ0aW9uLWludGVy
b3BlcmFiaWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29h
L0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L3NwaS9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oCmluZGV4IDM5Mzk1NzY3
ODRmNjA0NGE4YTdiMWJkYjIyZjQ0MjZlM2FiY2FlNzYuLjA2OGI2NGZlYWY3MjFhZjljMWM4NWY0
NDVlZmQ2Yzg3NWQ2ZTdiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3Bp
L0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaApAQCAt
MjkwLDYgKzI5MCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIEFTQ3JlZGVudGlhbFJl
cXVlc3RTdHlsZSkgewogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHJlYWRvbmx5KSBOU1N0
cmluZyAqcmVseWluZ1BhcnR5SWRlbnRpZmllcjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
LCByZWFkb25seSkgTlNEYXRhICphdHRlc3RhdGlvbk9iamVjdDsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5LCByZWFkb25seSkgTlNEYXRhICpyYXdDbGllbnREYXRhSlNPTjsKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCBjb3B5KSBOU0FycmF5PE5TTnVtYmVyICo+ICp0cmFuc3BvcnRzOwogCiAr
IChpbnN0YW5jZXR5cGUpbmV3IE5TX1VOQVZBSUxBQkxFOwogLSAoaW5zdGFuY2V0eXBlKWluaXQg
TlNfVU5BVkFJTEFCTEU7CkBAIC0zMDQsNiArMzA1LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50
ZWdlciwgQVNDcmVkZW50aWFsUmVxdWVzdFN0eWxlKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSwgcmVhZG9ubHkpIE5TRGF0YSAqcmF3Q2xpZW50RGF0YUpTT047CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgY29weSwgcmVhZG9ubHkpIE5TU3RyaW5nICpyZWx5aW5nUGFydHlJZGVudGlmaWVy
OwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHJlYWRvbmx5KSBOU0RhdGEgKmF0dGVzdGF0
aW9uT2JqZWN0OworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TQXJyYXk8TlNOdW1iZXIg
Kj4gKnRyYW5zcG9ydHM7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2UuaAppbmRleCA3MmQ5NGMxMmEyMWZkNGYzODBiMTg0YTA1N2YyMDA1MWI1ZDNj
MTFjLi5lNWY5Y2UxYWQ3YzllNDEyOGEwMTIzYTZjOTI2NjFlYWVmYzQ2N2MyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaApAQCAtMzMsNiArMzMsNyBAQCBX
S19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSkKIEBpbnRlcmZhY2UgX1dL
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgOiBfV0tBdXRoZW50aWNhdG9yUmVzcG9u
c2UKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0RhdGEgKmF0dGVzdGF0aW9u
T2JqZWN0OworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TQXJyYXk8TlNOdW1iZXIgKj4g
KnRyYW5zcG9ydHM7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlv
blJlc3BvbnNlLm1tCmluZGV4IGJkYzBlMzViOTI0Nzg5NzhkYmIwNGY4NjE3NTY5MjY4MjUzZGE2
OGQuLjA3MWQ1MjJmYTgzODdmMTg2OWVlMWRlNjc2NDkwYTdlNDYxMjkyNGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UubW0KQEAgLTMyLDEyICszMiwxMyBA
QAogCiBAaW1wbGVtZW50YXRpb24gX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UK
IAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ2xpZW50RGF0YUpTT046KE5TRGF0YSAqKWNsaWVu
dERhdGFKU09OIHJhd0lkOihOU0RhdGEgKilyYXdJZCBleHRlbnNpb25zOihSZXRhaW5QdHI8X1dL
QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cz4mJilleHRlbnNpb25zIGF0dGVz
dGF0aW9uT2JqZWN0OihOU0RhdGEgKilhdHRlc3RhdGlvbk9iamVjdCBhdHRhY2htZW50OihfV0tB
dXRoZW50aWNhdG9yQXR0YWNobWVudClhdHRhY2htZW50CistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhDbGllbnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAq
KXJhd0lkIGV4dGVuc2lvbnM6KFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnND
bGllbnRPdXRwdXRzPiYmKWV4dGVuc2lvbnMgYXR0ZXN0YXRpb25PYmplY3Q6KE5TRGF0YSAqKWF0
dGVzdGF0aW9uT2JqZWN0IGF0dGFjaG1lbnQ6KF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50KWF0
dGFjaG1lbnQgdHJhbnNwb3J0czooTlNBcnJheTxOU051bWJlciAqPiAqKXRyYW5zcG9ydHMKIHsK
ICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoQ2xpZW50RGF0YUpTT046Y2xpZW50RGF0
YUpTT04gcmF3SWQ6cmF3SWQgZXh0ZW5zaW9uczpXVEZNb3ZlKGV4dGVuc2lvbnMpIGF0dGFjaG1l
bnQ6YXR0YWNobWVudF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgX2F0dGVzdGF0aW9u
T2JqZWN0ID0gYXR0ZXN0YXRpb25PYmplY3Q7CisgICAgX3RyYW5zcG9ydHMgPSB0cmFuc3BvcnRz
OwogICAgIHJldHVybiBzZWxmOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2VJbnRlcm5h
bC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlSW50ZXJuYWwuaAppbmRleCBhYWZiZjBiZDQzZmM4MGU5NDEwZGUw
ODIzYmY0MTU4YmU3ZGE2Y2I5Li41YWUwZDkwNjA2ZjIwYjBlYjUwY2E3YjA1MDJkMjgyYWE0NjNi
YzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0
aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2VJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZUludGVybmFsLmgKQEAgLTM0LDcgKzM0LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAog
QGludGVyZmFjZSBfV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSAoKQogCi0tIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpT
T04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4dGVuc2lvbnM6KFJldGFpblB0cjxfV0tBdXRoZW50
aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKWV4dGVuc2lvbnMgYXR0ZXN0YXRpb25P
YmplY3Q6KE5TRGF0YSAqKWF0dGVzdGF0aW9uT2JqZWN0IGF0dGFjaG1lbnQ6KF9XS0F1dGhlbnRp
Y2F0b3JBdHRhY2htZW50KWF0dGFjaG1lbnQ7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDbGll
bnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lk
IGV4dGVuc2lvbnM6KFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRP
dXRwdXRzPiYmKWV4dGVuc2lvbnMgYXR0ZXN0YXRpb25PYmplY3Q6KE5TRGF0YSAqKWF0dGVzdGF0
aW9uT2JqZWN0IGF0dGFjaG1lbnQ6KF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50KWF0dGFjaG1l
bnQgdHJhbnNwb3J0czooTlNBcnJheTxOU051bWJlciAqPiAqKXRyYW5zcG9ydHM7CiAKIEBlbmQK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCBhYzY0ZWYzNGQ2ZmVlODAzZjhmNmE4
NmYzMmY5ODg2MDY3ZWMwNDRhLi5hMTlmOWNhM2Q0NWNmZmFiYjQ0Mjg5Mzg4ZmQ3Zjc3YzMyZmYw
Njk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtODQ4LDkgKzg0OCwyOCBAQCBz
dGF0aWMgX1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXV0aGVudGljYXRvckF0dGFjaG1lbnRU
b1dLQXV0aGVudGljYXRvckF0dGFjaAogICAgIH0KIH0KIAorc3RhdGljIFJldGFpblB0cjxfV0tB
dXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiB3a0V4dGVuc2lvbnNDbGllbnRP
dXRwdXRzKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmIGRhdGEpCit7
CisgICAgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+
IGV4dGVuc2lvbnM7CisgICAgaWYgKGRhdGEuYXBwaWQpCisgICAgICAgIGV4dGVuc2lvbnMgPSBh
ZG9wdE5TKFtbX1dLQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cyBhbGxvY10g
aW5pdFdpdGhBcHBpZDpkYXRhLmFwcGlkLnZhbHVlKCldKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9u
czsKK30KKworc3RhdGljIFJldGFpblB0cjxOU0FycmF5PE5TTnVtYmVyICo+PiB3a1RyYW5zcG9y
dHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+JiB0cmFuc3Bv
cnRzKQoreworICAgIGF1dG8gd2tUcmFuc3BvcnRzID0gYWRvcHROUyhbTlNNdXRhYmxlQXJyYXk8
TlNOdW1iZXIgKj4gbmV3XSk7CisgICAgZm9yIChhdXRvIHRyYW5zcG9ydCA6IHRyYW5zcG9ydHMp
CisgICAgICAgIFt3a1RyYW5zcG9ydHMgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50
OihpbnQpdHJhbnNwb3J0XV07CisgICAgcmV0dXJuIHdrVHJhbnNwb3J0czsKK30KKworCiBzdGF0
aWMgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiB3a0F1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JS
ZXNwb25zZURhdGEmIGRhdGEsIE5TRGF0YSAqY2xpZW50RGF0YUpTT04sIFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0TlMoW1tf
V0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSBhbGxvY10gaW5pdFdpdGhDbGllbnRE
YXRhSlNPTjpjbGllbnREYXRhSlNPTiByYXdJZDpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5y
YXdJZC0+ZGF0YSgpIGxlbmd0aDpkYXRhLnJhd0lkLT5ieXRlTGVuZ3RoKCldIGV4dGVuc2lvbnM6
bmlsIGF0dGVzdGF0aW9uT2JqZWN0OltOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLmF0dGVzdGF0
aW9uT2JqZWN0LT5kYXRhKCkgbGVuZ3RoOmRhdGEuYXR0ZXN0YXRpb25PYmplY3QtPmJ5dGVMZW5n
dGgoKV0gYXR0YWNobWVudDogYXV0aGVudGljYXRvckF0dGFjaG1lbnRUb1dLQXV0aGVudGljYXRv
ckF0dGFjaG1lbnQoYXR0YWNobWVudCldKTsKKyAgICBhdXRvIHZhbHVlID0gYWRvcHROUyhbW19X
S0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aENsaWVudERh
dGFKU09OOmNsaWVudERhdGFKU09OIHJhd0lkOltOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLnJh
d0lkLT5kYXRhKCkgbGVuZ3RoOmRhdGEucmF3SWQtPmJ5dGVMZW5ndGgoKV0gZXh0ZW5zaW9uczp3
a0V4dGVuc2lvbnNDbGllbnRPdXRwdXRzKGRhdGEpIGF0dGVzdGF0aW9uT2JqZWN0OltOU0RhdGEg
ZGF0YVdpdGhCeXRlczpkYXRhLmF0dGVzdGF0aW9uT2JqZWN0LT5kYXRhKCkgbGVuZ3RoOmRhdGEu
YXR0ZXN0YXRpb25PYmplY3QtPmJ5dGVMZW5ndGgoKV0gYXR0YWNobWVudDogYXV0aGVudGljYXRv
ckF0dGFjaG1lbnRUb1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQoYXR0YWNobWVudCkgdHJhbnNw
b3J0czp3a1RyYW5zcG9ydHMoZGF0YS50cmFuc3BvcnRzKS5hdXRvcmVsZWFzZSgpXSk7CisgICAg
CisgICAgcmV0dXJuIHZhbHVlOwogfQogI2VuZGlmCiAKQEAgLTkxMSwxNSArOTMwLDExIEBAIHN0
YXRpYyBSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHdrQXV0
aGVudGljYXRvckF0dGVzdGF0aW9uCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIHN0YXRpYyBSZXRh
aW5QdHI8X1dLQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiB3a0F1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRh
JiBkYXRhLCBOU0RhdGEgKmNsaWVudERhdGFKU09OLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0
YWNobWVudCBhdHRhY2htZW50KQogewotICAgIFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4
dGVuc2lvbnNDbGllbnRPdXRwdXRzPiBleHRlbnNpb25zOwotICAgIGlmIChkYXRhLmFwcGlkKQot
ICAgICAgICBleHRlbnNpb25zID0gYWRvcHROUyhbW19XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9u
c0NsaWVudE91dHB1dHMgYWxsb2NdIGluaXRXaXRoQXBwaWQ6ZGF0YS5hcHBpZC52YWx1ZSgpXSk7
Ci0KICAgICBOU0RhdGEgKnVzZXJIYW5kbGUgPSBuaWw7CiAgICAgaWYgKGRhdGEudXNlckhhbmRs
ZSkKICAgICAgICAgdXNlckhhbmRsZSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLnVzZXJI
YW5kbGUtPmRhdGEoKSBsZW5ndGg6ZGF0YS51c2VySGFuZGxlLT5ieXRlTGVuZ3RoKCldOwogCi0g
ICAgcmV0dXJuIGFkb3B0TlMoW1tfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UgYWxs
b2NdIGluaXRXaXRoQ2xpZW50RGF0YUpTT046Y2xpZW50RGF0YUpTT04gcmF3SWQ6W05TRGF0YSBk
YXRhV2l0aEJ5dGVzOmRhdGEucmF3SWQtPmRhdGEoKSBsZW5ndGg6ZGF0YS5yYXdJZC0+Ynl0ZUxl
bmd0aCgpXSBleHRlbnNpb25zOldURk1vdmUoZXh0ZW5zaW9ucykgYXV0aGVudGljYXRvckRhdGE6
W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuYXV0aGVudGljYXRvckRhdGEtPmRhdGEoKSBsZW5n
dGg6ZGF0YS5hdXRoZW50aWNhdG9yRGF0YS0+Ynl0ZUxlbmd0aCgpXSBzaWduYXR1cmU6W05TRGF0
YSBkYXRhV2l0aEJ5dGVzOmRhdGEuc2lnbmF0dXJlLT5kYXRhKCkgbGVuZ3RoOmRhdGEuc2lnbmF0
dXJlLT5ieXRlTGVuZ3RoKCldIHVzZXJIYW5kbGU6dXNlckhhbmRsZSBhdHRhY2htZW50OmF1dGhl
bnRpY2F0b3JBdHRhY2htZW50VG9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50KGF0dGFjaG1lbnQp
XSk7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2UgYWxsb2NdIGluaXRXaXRoQ2xpZW50RGF0YUpTT046Y2xpZW50RGF0YUpTT04gcmF3SWQ6W05T
RGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEucmF3SWQtPmRhdGEoKSBsZW5ndGg6ZGF0YS5yYXdJZC0+
Ynl0ZUxlbmd0aCgpXSBleHRlbnNpb25zOndrRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMoZGF0YSkg
YXV0aGVudGljYXRvckRhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuYXV0aGVudGljYXRv
ckRhdGEtPmRhdGEoKSBsZW5ndGg6ZGF0YS5hdXRoZW50aWNhdG9yRGF0YS0+Ynl0ZUxlbmd0aCgp
XSBzaWduYXR1cmU6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuc2lnbmF0dXJlLT5kYXRhKCkg
bGVuZ3RoOmRhdGEuc2lnbmF0dXJlLT5ieXRlTGVuZ3RoKCldIHVzZXJIYW5kbGU6dXNlckhhbmRs
ZSBhdHRhY2htZW50OmF1dGhlbnRpY2F0b3JBdHRhY2htZW50VG9XS0F1dGhlbnRpY2F0b3JBdHRh
Y2htZW50KGF0dGFjaG1lbnQpXSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9y
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9j
YWxBdXRoZW50aWNhdG9yLm1tCmluZGV4IGQyMTE2Nzk5NjFjMWU1Mzg0MTMxZTBlMmRiZmMwZmFk
NjMzMzAyY2IuLmRkMWFlZjc5YjZhNzBjMGJjZjE0YjgyZjE0M2ZlZDcyMTlmNTU3NzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xv
Y2FsQXV0aGVudGljYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KQEAgLTQ5LDcgKzQ5LDYgQEAK
ICNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L0Jhc2U2NC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCiAjaWYgVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKICNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9Mb2NhbEF1dGhlbnRp
Y2F0b3JBZGRpdGlvbnMuaD4KICNlbHNlCkBAIC02MCw3ICs1OSwxMiBAQCBzdGF0aWMgaW5saW5l
IFN0cmluZyBncm91cEZvckF0dHJpYnV0ZXMoTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzKQogewog
ICAgIHJldHVybiBudWxsU3RyaW5nKCk7CiB9CitzdGF0aWMgYm9vbCBzaG91bGRVcGRhdGVRdWVy
eSgpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQogI2VuZGlmCisjaW1wb3J0ICJBdXRoZW50aWNh
dGlvblNlcnZpY2VzQ29yZVNvZnRMaW5rLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcg
bmFtZXNwYWNlIGZpZG87CkBAIC0xODEsNiArMTg1LDE0IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4+IGdldEV4aXN0aW5n
Q3JlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFZlY3RvcjxBdXRoZW50aWNhdG9y
VHJhbnNwb3J0PiB0cmFuc3BvcnRzKCkKK3sKKyAgICBWZWN0b3I8V2ViQ29yZTo6QXV0aGVudGlj
YXRvclRyYW5zcG9ydD4gdHJhbnNwb3J0cyA9IHsgV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5z
cG9ydDo6SW50ZXJuYWwgfTsKKyAgICBpZiAoc2hvdWxkVXBkYXRlUXVlcnkoKSkKKyAgICAgICAg
dHJhbnNwb3J0cy5hcHBlbmQoV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6Q2FibGUp
OworICAgIHJldHVybiB0cmFuc3BvcnRzOworfQorCiB9IC8vIExvY2FsQXV0aGVudGljYXRvcklu
dGVybmFsCiAKIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjbGVhckFsbENyZWRlbnRpYWxzKCkK
QEAgLTQ0Niw3ICs0NTgsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtl
Q3JlZGVudGlhbEFmdGVyVXNlclZlcmlmaWNhdGlvbihTZWNBY2Nlc3NDbwogCiAgICAgICAgIGF1
dG8gYXV0aERhdGEgPSBidWlsZEF1dGhEYXRhKGNyZWF0aW9uT3B0aW9ucy5ycC5pZCwgZmxhZ3Ms
IGNvdW50ZXIsIGJ1aWxkQXR0ZXN0ZWRDcmVkZW50aWFsRGF0YShWZWN0b3I8dWludDhfdD4oYWFn
dWlkTGVuZ3RoLCAwKSwgY3JlZGVudGlhbElkLCBjb3NlUHVibGljS2V5KSk7CiAgICAgICAgIGF1
dG8gYXR0ZXN0YXRpb25PYmplY3QgPSBidWlsZEF0dGVzdGF0aW9uT2JqZWN0KFdURk1vdmUoYXV0
aERhdGEpLCBTdHJpbmcgeyBlbXB0eVN0cmluZygpIH0sIHsgfSwgQXR0ZXN0YXRpb25Db252ZXlh
bmNlUHJlZmVyZW5jZTo6Tm9uZSk7Ci0gICAgICAgIHJlY2VpdmVSZXNwb25kKEF1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9i
amVjdCwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtKSk7CisgICAgICAgIHJlY2Vp
dmVSZXNwb25kKEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVu
dGlhbElkLCBhdHRlc3RhdGlvbk9iamVjdCwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRm
b3JtLCB0cmFuc3BvcnRzKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDczLDcg
KzQ4NSw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFs
QWZ0ZXJBdHRlc3RlZChWZWN0b3I8dWludDhfdD4mJiBjCiAgICAgaWYgKGVycm9yKSB7CiAgICAg
ICAgIExPR19FUlJPUigiQ291bGRuJ3QgYXR0ZXN0OiAlcyIsIFN0cmluZyhlcnJvci5sb2NhbGl6
ZWREZXNjcmlwdGlvbikudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGF1dG8gYXR0ZXN0YXRpb25P
YmplY3QgPSBidWlsZEF0dGVzdGF0aW9uT2JqZWN0KFdURk1vdmUoYXV0aERhdGEpLCBTdHJpbmcg
eyBlbXB0eVN0cmluZygpIH0sIHsgfSwgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6
Tm9uZSk7Ci0gICAgICAgIHJlY2VpdmVSZXNwb25kKEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9iamVjdCwgQXV0aGVudGlj
YXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtKSk7CisgICAgICAgIHJlY2VpdmVSZXNwb25kKEF1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3Rh
dGlvbk9iamVjdCwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtLCB0cmFuc3BvcnRz
KCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAvLyBBdHRlc3RhdGlvbiBDZXJ0aWZp
Y2F0ZSBhbmQgQXR0ZXN0YXRpb24gSXNzdWluZyBDQQpAQCAtNDkyLDcgKzUwNCw3IEBAIHZvaWQg
TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChW
ZWN0b3I8dWludDhfdD4mJiBjCiAgICAgYXV0byBhdHRlc3RhdGlvbk9iamVjdCA9IGJ1aWxkQXR0
ZXN0YXRpb25PYmplY3QoV1RGTW92ZShhdXRoRGF0YSksICJhcHBsZSJfcywgV1RGTW92ZShhdHRl
c3RhdGlvblN0YXRlbWVudE1hcCksIGNyZWF0aW9uT3B0aW9ucy5hdHRlc3RhdGlvbik7CiAKICAg
ICBkZWxldGVEdXBsaWNhdGVDcmVkZW50aWFsKCk7Ci0gICAgcmVjZWl2ZVJlc3BvbmQoQXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF0dGVzdGF0
aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6UGxhdGZvcm0pKTsKKyAgICByZWNl
aXZlUmVzcG9uZChBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKGNyZWRl
bnRpYWxJZCwgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpQbGF0
Zm9ybSwgdHJhbnNwb3J0cygpKSk7CiB9CiAKIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRB
c3NlcnRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eS5tbQppbmRleCBmNjdjZTQwNDMxNWVkNjI4ZWYxZjgyZTQxMzUy
YjFhNWE4NmMxMDcyLi43MTBhZDM5MjBjZTdlNWMwNWZhNzFjYzAwNDc3ZDQ0NjNhZjBlMmM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eS5tbQpAQCAtMTU0LDYgKzE1NCw5IEBAIHN0YXRpYyBpbmxpbmUgUmV0YWluUHRy
PEFTQ1B1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yPiB0b0FTQ0Rlc2NyaXB0b3IoUHVibGlj
CiAgICAgICAgICAgICBjYXNlIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkludGVybmFsOgogICAg
ICAgICAgICAgICAgIHRyYW5zcG9ydFN0cmluZyA9IEAiaW50ZXJuYWwiOwogICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpDYWJs
ZToKKyAgICAgICAgICAgICAgICB0cmFuc3BvcnRTdHJpbmcgPSBAImNhYmxlIjsKKyAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKHRyYW5zcG9y
dFN0cmluZykKQEAgLTMzNyw2ICszNDAsMTQgQEAgc3RhdGljIFJldGFpblB0cjxBU0NDcmVkZW50
aWFsUmVxdWVzdENvbnRleHQ+IGNvbmZpZ3VyYXRpb25Bc3NlcnRpb25SZXF1ZXN0Q29udGUKICAg
ICByZXR1cm4gcmVxdWVzdENvbnRleHQ7CiB9CiAKK3N0YXRpYyBWZWN0b3I8V2ViQ29yZTo6QXV0
aGVudGljYXRvclRyYW5zcG9ydD4gdG9BdXRoZW50aWNhdG9yVHJhbnNwb3J0cyhOU0FycmF5PE5T
TnVtYmVyICo+ICphc2NUcmFuc3BvcnRzKQoreworICAgIFZlY3RvcjxXZWJDb3JlOjpBdXRoZW50
aWNhdG9yVHJhbnNwb3J0PiB0cmFuc3BvcnRzOworICAgIGZvciAoTlNOdW1iZXIgKmFzY1RyYW5z
cG9ydCA6IGFzY1RyYW5zcG9ydHMpCisgICAgICAgIHRyYW5zcG9ydHMuYXBwZW5kKHN0YXRpY19j
YXN0PFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+KGFzY1RyYW5zcG9ydC5pbnRWYWx1
ZSkpOworICAgIHJldHVybiB0cmFuc3BvcnRzOworfQorCiBSZXRhaW5QdHI8QVNDQ3JlZGVudGlh
bFJlcXVlc3RDb250ZXh0PiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6Y29udGV4
dEZvclJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSYmIHJlcXVlc3REYXRhKQog
ewogICAgIFJldGFpblB0cjxBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHQ+IHJlc3VsdDsKQEAg
LTM2MSw2ICszNzIsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY29udGludWVBZnRlclJlcXVlc3Qo
UmV0YWluUHRyPGlkIDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+PiBjcgogICAgICAgICBBU0NQbGF0
Zm9ybVB1YmxpY0tleUNyZWRlbnRpYWxSZWdpc3RyYXRpb24gKnJlZ2lzdHJhdGlvbkNyZWRlbnRp
YWwgPSBjcmVkZW50aWFsLmdldCgpOwogICAgICAgICByZXNwb25zZS5yYXdJZCA9IHRvQXJyYXlC
dWZmZXIocmVnaXN0cmF0aW9uQ3JlZGVudGlhbC5jcmVkZW50aWFsSUQpOwogICAgICAgICByZXNw
b25zZS5hdHRlc3RhdGlvbk9iamVjdCA9IHRvQXJyYXlCdWZmZXIocmVnaXN0cmF0aW9uQ3JlZGVu
dGlhbC5hdHRlc3RhdGlvbk9iamVjdCk7CisgICAgICAgIGlmIChbcmVnaXN0cmF0aW9uQ3JlZGVu
dGlhbCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHRyYW5zcG9ydHMpXSkKKyAgICAgICAg
ICAgIHJlc3BvbnNlLnRyYW5zcG9ydHMgPSB0b0F1dGhlbnRpY2F0b3JUcmFuc3BvcnRzKHJlZ2lz
dHJhdGlvbkNyZWRlbnRpYWwudHJhbnNwb3J0cyk7CiAgICAgfSBlbHNlIGlmIChbY3JlZGVudGlh
bCBpc0tpbmRPZkNsYXNzOmdldEFTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbFJlZ2lz
dHJhdGlvbkNsYXNzKCldKSB7CiAgICAgICAgIGF0dGFjaG1lbnQgPSBBdXRoZW50aWNhdG9yQXR0
YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybTsKICAgICAgICAgcmVzcG9uc2UuaXNBdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb25SZXNwb25zZSA9IHRydWU7CkBAIC0zNjgsNiArMzgxLDggQEAgc3RhdGljIGlu
bGluZSB2b2lkIGNvbnRpbnVlQWZ0ZXJSZXF1ZXN0KFJldGFpblB0cjxpZCA8QVNDQ3JlZGVudGlh
bFByb3RvY29sPj4gY3IKICAgICAgICAgQVNDU2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50aWFs
UmVnaXN0cmF0aW9uICpyZWdpc3RyYXRpb25DcmVkZW50aWFsID0gY3JlZGVudGlhbC5nZXQoKTsK
ICAgICAgICAgcmVzcG9uc2UucmF3SWQgPSB0b0FycmF5QnVmZmVyKHJlZ2lzdHJhdGlvbkNyZWRl
bnRpYWwuY3JlZGVudGlhbElEKTsKICAgICAgICAgcmVzcG9uc2UuYXR0ZXN0YXRpb25PYmplY3Qg
PSB0b0FycmF5QnVmZmVyKHJlZ2lzdHJhdGlvbkNyZWRlbnRpYWwuYXR0ZXN0YXRpb25PYmplY3Qp
OworICAgICAgICBpZiAoW3JlZ2lzdHJhdGlvbkNyZWRlbnRpYWwgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcih0cmFuc3BvcnRzKV0pCisgICAgICAgICAgICByZXNwb25zZS50cmFuc3BvcnRz
ID0gdG9BdXRoZW50aWNhdG9yVHJhbnNwb3J0cyhyZWdpc3RyYXRpb25DcmVkZW50aWFsLnRyYW5z
cG9ydHMpOwogICAgIH0gZWxzZSBpZiAoW2NyZWRlbnRpYWwgaXNLaW5kT2ZDbGFzczpnZXRBU0NQ
bGF0Zm9ybVB1YmxpY0tleUNyZWRlbnRpYWxBc3NlcnRpb25DbGFzcygpXSkgewogICAgICAgICBh
dHRhY2htZW50ID0gQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtOwogICAgICAgICBy
ZXNwb25zZS5pc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlID0gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0
YXBBdXRoZW50aWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwCmluZGV4IDE3OGZhZjg2OGVkYjY5ZWQ5
ZjA2NWRlMTI1MDc2NzJjYTg3Zjc4MGMuLmFmMTIyMDIwZTBmY2Q4YzE0NTMyNTNkYjRhNTU2ZGZi
MWQwOTVlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwCkBAIC0x
MTQsNyArMTE0LDcgQEAgdm9pZCBDdGFwQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoKQog
CiB2b2lkIEN0YXBBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJSZXNw
b25zZVJlY2VpdmVkKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgYXV0byByZXNwb25z
ZSA9IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZShkYXRhLCBBdXRoZW50aWNhdG9yQXR0
YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSwgc3RkOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKS5hdHRlc3RhdGlvbik7CisgICAgYXV0
byByZXNwb25zZSA9IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZShkYXRhLCBBdXRoZW50
aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSwgdHJhbnNwb3J0cygpLCBzdGQ6OmdldDxQ
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMp
LmF0dGVzdGF0aW9uKTsKICAgICBpZiAoIXJlc3BvbnNlKSB7CiAgICAgICAgIGF1dG8gZXJyb3Ig
PSBnZXRSZXNwb25zZUNvZGUoZGF0YSk7CiAKQEAgLTM4NCw2ICszODQsMTQgQEAgYm9vbCBDdGFw
QXV0aGVudGljYXRvcjo6cHJvY2Vzc0dvb2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4dGVuc2lvbigp
CiAgICAgcmV0dXJuIGV4dGVuc2lvbnMtPmdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydDsKIH0KIAor
VmVjdG9yPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+IEN0YXBBdXRoZW50aWNhdG9yOjp0cmFuc3Bv
cnRzKCkKK3sKKyAgICBhdXRvIGluZm9UcmFuc3BvcnRzID0gbV9pbmZvLnRyYW5zcG9ydHMoKTsK
KyAgICBpZiAoaW5mb1RyYW5zcG9ydHMpCisgICAgICAgIHJldHVybiAqaW5mb1RyYW5zcG9ydHM7
CisgICAgcmV0dXJuIFZlY3RvciB7IGRyaXZlcigpLnRyYW5zcG9ydCgpIH07Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1
dGhlbnRpY2F0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaAppbmRleCA5MTUwNWMwN2RlNjUzYTA4MDdiY2FiNzBk
NjcwMjJmNDRjMmNiNDk3Li4yZmFiMDM3ZjFkNzBjMmExZjhkNDNmOWFmMzQ5ZDMwZmQyN2UyMmQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9m
aWRvL0N0YXBBdXRoZW50aWNhdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5oCkBAIC03MCw2ICs3MCw4IEBA
IHByaXZhdGU6CiAgICAgYm9vbCB0cnlEb3duZ3JhZGUoKTsKICAgICBib29sIHByb2Nlc3NHb29n
bGVMZWdhY3lBcHBJZFN1cHBvcnRFeHRlbnNpb24oKTsKIAorICAgIFZlY3RvcjxXZWJDb3JlOjpB
dXRoZW50aWNhdG9yVHJhbnNwb3J0PiB0cmFuc3BvcnRzKCk7CisKICAgICBmaWRvOjpBdXRoZW50
aWNhdG9yR2V0SW5mb1Jlc3BvbnNlIG1faW5mbzsKICAgICBib29sIG1faXNEb3duZ3JhZGVkIHsg
ZmFsc2UgfTsKICAgICBzaXplX3QgbV9yZW1haW5pbmdBc3NlcnRpb25SZXNwb25zZXMgeyAwIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9m
aWRvL0N0YXBEcml2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL2ZpZG8vQ3RhcERyaXZlci5oCmluZGV4IDdhNDIwZmUxY2VjMjE4YjkwNjZlNjMwMzZlZmJi
YzYzYTQxN2IxMDUuLmFmNGFjODM4ZWRjM2RjZDc2MjFhYzM4ODVkMmVmMWEzODdjMTc4ZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8v
Q3RhcERyaXZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL2ZpZG8vQ3RhcERyaXZlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VC
X0FVVEhOKQogCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdG9yVHJhbnNwb3J0Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9GaWRvQ29uc3RhbnRzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KQEAgLTQ1LDE1ICs0NiwxOCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHNldFByb3RvY29sKGZpZG86OlByb3RvY29sVmVyc2lvbiBwcm90b2NvbCkg
eyBtX3Byb3RvY29sID0gcHJvdG9jb2w7IH0KIAorICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JU
cmFuc3BvcnQgdHJhbnNwb3J0KCkgY29uc3QgeyByZXR1cm4gbV90cmFuc3BvcnQ7IH0KKyAgICBm
aWRvOjpQcm90b2NvbFZlcnNpb24gcHJvdG9jb2woKSBjb25zdCB7IHJldHVybiBtX3Byb3RvY29s
OyB9CisKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNhY3QoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwg
UmVzcG9uc2VDYWxsYmFjayYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpIHsgfTsK
IAogcHJvdGVjdGVkOgotICAgIEN0YXBEcml2ZXIoKSA9IGRlZmF1bHQ7Ci0gICAgZmlkbzo6UHJv
dG9jb2xWZXJzaW9uIHByb3RvY29sKCkgY29uc3QgeyByZXR1cm4gbV9wcm90b2NvbDsgfQorICAg
IEN0YXBEcml2ZXIoV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydCB0cmFuc3BvcnQpIHsg
bV90cmFuc3BvcnQgPSB0cmFuc3BvcnQ7IH0KIAogcHJpdmF0ZToKICAgICBmaWRvOjpQcm90b2Nv
bFZlcnNpb24gbV9wcm90b2NvbCB7IGZpZG86OlByb3RvY29sVmVyc2lvbjo6a0N0YXAgfTsKKyAg
ICBXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0IG1fdHJhbnNwb3J0OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmNwcAppbmRleCAz
ZDZlYTQ0Y2I5ZDU2M2U5Zjc4N2I5ZjZiMDc5NzViMWMxYzZlMmY0Li4xYmUzM2QwZTdiNzg4MDNh
YTJlYjFlMjM5NjIwMjAwN2Q2OTgyZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5j
cHAKQEAgLTE1Nyw3ICsxNTcsOCBAQCB2b2lkIEN0YXBIaWREcml2ZXI6Oldvcmtlcjo6Y2FuY2Vs
KGZpZG86OkZpZG9IaWRNZXNzYWdlJiYgcmVxdWVzdE1lc3NhZ2UpCiB9CiAKIEN0YXBIaWREcml2
ZXI6OkN0YXBIaWREcml2ZXIoVW5pcXVlUmVmPEhpZENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikK
LSAgICA6IG1fd29ya2VyKG1ha2VVbmlxdWVSZWY8V29ya2VyPihXVEZNb3ZlKGNvbm5lY3Rpb24p
KSkKKyAgICA6IEN0YXBEcml2ZXIoV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6VXNi
KQorICAgICwgbV93b3JrZXIobWFrZVVuaXF1ZVJlZjxXb3JrZXI+KFdURk1vdmUoY29ubmVjdGlv
bikpKQogICAgICwgbV9ub25jZShrSGlkSW5pdE5vbmNlTGVuZ3RoKQogewogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwTmZj
RHJpdmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2Zp
ZG8vQ3RhcE5mY0RyaXZlci5jcHAKaW5kZXggNGE5Y2FmMjAzMGY3NjY3MzI4YzgwYzVjYTliMzIw
NWQyNGFlNTRiNC4uNjgwYzE4MzllZDZmMDBjNDYzMTJhZWQ0ZmRiM2RmOGRhMGQ3ZGQ4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9D
dGFwTmZjRHJpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9maWRvL0N0YXBOZmNEcml2ZXIuY3BwCkBAIC0zNyw3ICszNyw4IEBAIHVzaW5nIG5h
bWVzcGFjZSBhcGR1OwogdXNpbmcgbmFtZXNwYWNlIGZpZG87CiAKIEN0YXBOZmNEcml2ZXI6OkN0
YXBOZmNEcml2ZXIoUmVmPE5mY0Nvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKLSAgICA6IG1fY29u
bmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQorICAgIDogQ3RhcERyaXZlcihBdXRoZW50aWNh
dG9yVHJhbnNwb3J0OjpOZmMpCisgICAgLCBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9u
KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHAKaW5kZXggMDQ5
OGJkMDFkMGUxNTQyMDU2OWJhMDNhOTZhNDkyZDZhMGM5MjI2Yy4uZTI2ZWM2ZjQ2MjkwMGI4ZmJh
ZmRmNGY5ZjNkNzY0OGIwZjVjNGZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0
b3IuY3BwCkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBVMmZBdXRoZW50aWNhdG9yOjpjb250aW51
ZVJlZ2lzdGVyQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChBcGR1UmVzcG9uc2UKICAgICBj
YXNlIEFwZHVSZXNwb25zZTo6U3RhdHVzOjpTV19OT19FUlJPUjogewogICAgICAgICBhdXRvJiBv
cHRpb25zID0gc3RkOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ocmVx
dWVzdERhdGEoKS5vcHRpb25zKTsKICAgICAgICAgYXV0byBhcHBJZCA9IHByb2Nlc3NHb29nbGVM
ZWdhY3lBcHBJZFN1cHBvcnRFeHRlbnNpb24ob3B0aW9ucy5leHRlbnNpb25zKTsKLSAgICAgICAg
YXV0byByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKCFhcHBJZCA/IG9wdGlvbnMu
cnAuaWQgOiBhcHBJZCwgYXBkdVJlc3BvbnNlLmRhdGEoKSwgQXV0aGVudGljYXRvckF0dGFjaG1l
bnQ6OkNyb3NzUGxhdGZvcm0sIG9wdGlvbnMuYXR0ZXN0YXRpb24pOworICAgICAgICBhdXRvIHJl
c3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoIWFwcElkID8gb3B0aW9ucy5ycC5pZCA6
IGFwcElkLCBhcGR1UmVzcG9uc2UuZGF0YSgpLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jv
c3NQbGF0Zm9ybSwgeyBkcml2ZXIoKS50cmFuc3BvcnQoKSB9LCBvcHRpb25zLmF0dGVzdGF0aW9u
KTsKICAgICAgICAgaWYgKCFyZXNwb25zZSkgewogICAgICAgICAgICAgcmVjZWl2ZVJlc3BvbmQo
RXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgIkNvdWxkbid0IHBhcnNlIHRoZSBVMkYgcmVn
aXN0ZXIgcmVzcG9uc2UuIl9zIH0pOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE4MzZlNjY2MTBlNGJiMjky
ZjBlNzZlNmQ2NzVkNTY2ZTU5NWVlNDcuLmI1MzEwMGM0N2YwYTkwYzc3NGM4Mzg4YzI2NDgxNmYz
NDgxOGYyZTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0wNC0wOCAgSiBQYXNjb2UgIDxqX3Bhc2NvZUBhcHBs
ZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBsZW1lbnQgZ2V0VHJhbnNwb3J0cygpIGFu
ZCBnZXRBdXRoZW50aWNhdG9yRGF0YSgpIG9uIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3Bv
bnNlIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4
OTY2CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzkxNDQ5OTA2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvQ3RhcFJlc3BvbnNlVGVzdC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb1Rlc3REYXRhLmg6CisK
IDIwMjItMDQtMDggIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUuY29tPgogCiAgICAgICAg
IFtYY29kZV0gQXZvaWQgdGFyZ2V0aW5nIDMyLWJpdCBpT1MgYW5kIE1hYyBhcmNoaXRlY3R1cmVz
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlc3Bv
bnNlVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlc3Bv
bnNlVGVzdC5jcHAKaW5kZXggOWUxYjFiMTM0OTE0NWEwMDc0M2JkYjM4OTJjMzBmMjIwYmQ0NGE5
ZS4uNDUxMTFiMDZhNGNiYTI3M2E4OWFhZjVkODYxYjY2NDlhNDAxYmYzOSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBSZXNwb25zZVRlc3QuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9uc2VUZXN0LmNw
cApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkZpZG9UZXN0RGF0YS5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50
aWNhdG9yQXR0YWNobWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvclRyYW5z
cG9ydC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQnVmZmVyU291cmNlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9DQk9SUmVhZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DQk9SVmFsdWUuaD4KQEAgLTM1
Myw5ICszNTQsOSBAQCBWZWN0b3I8dWludDhfdD4gZ2V0VGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2Uo
c2l6ZV90IHByZWZpeFNpemUsIGNvbnN0IHVpbnQ4X3QgYXBwZQogLy8gaHR0cHM6Ly9maWRvYWxs
aWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1wcy0yMDE3MDkyNy9maWRvLWNsaWVudC10by1hdXRo
ZW50aWNhdG9yLXByb3RvY29sLXYyLjAtcHMtMjAxNzA5MjcuaHRtbCNjb21tYW5kcwogVEVTVChD
VEFQUmVzcG9uc2VUZXN0LCBUZXN0UmVhZE1ha2VDcmVkZW50aWFsUmVzcG9uc2UpCiB7Ci0gICAg
YXV0byBtYWtlQ3JlZGVudGlhbFJlc3BvbnNlID0gcmVhZENUQVBNYWtlQ3JlZGVudGlhbFJlc3Bv
bnNlKGNvbnZlcnRCeXRlc1RvVmVjdG9yKFRlc3REYXRhOjprVGVzdE1ha2VDcmVkZW50aWFsUmVz
cG9uc2UsIHNpemVvZihUZXN0RGF0YTo6a1Rlc3RNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKSksIEF1
dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtKTsKKyAgICBhdXRvIG1ha2VDcmVk
ZW50aWFsUmVzcG9uc2UgPSByZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVzcG9uc2UoY29udmVydEJ5
dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtUZXN0TWFrZUNyZWRlbnRpYWxSZXNwb25zZSwgc2l6ZW9m
KFRlc3REYXRhOjprVGVzdE1ha2VDcmVkZW50aWFsUmVzcG9uc2UpKSwgQXV0aGVudGljYXRvckF0
dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0sIHsgfSk7CiAgICAgQVNTRVJUX1RSVUUobWFrZUNyZWRl
bnRpYWxSZXNwb25zZSk7Ci0gICAgYXV0byBjYm9yQXR0ZXN0YXRpb25PYmplY3QgPSBjYm9yOjpD
Qk9SUmVhZGVyOjpyZWFkKGNvbnZlcnRCeXRlc1RvVmVjdG9yKHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDhfdCo+KG1ha2VDcmVkZW50aWFsUmVzcG9uc2UtPmF0dGVzdGF0aW9uT2JqZWN0KCktPmRhdGEo
KSksIG1ha2VDcmVkZW50aWFsUmVzcG9uc2UtPmF0dGVzdGF0aW9uT2JqZWN0KCktPmJ5dGVMZW5n
dGgoKSkpOworICAgIGF1dG8gY2JvckF0dGVzdGF0aW9uT2JqZWN0ID0gY2Jvcjo6Q0JPUlJlYWRl
cjo6cmVhZChjb252ZXJ0QXJyYXlCdWZmZXJUb1ZlY3RvcihtYWtlQ3JlZGVudGlhbFJlc3BvbnNl
LT5hdHRlc3RhdGlvbk9iamVjdCgpKSk7CiAgICAgQVNTRVJUX1RSVUUoY2JvckF0dGVzdGF0aW9u
T2JqZWN0KTsKICAgICBBU1NFUlRfVFJVRShjYm9yQXR0ZXN0YXRpb25PYmplY3QtPmlzTWFwKCkp
OwogCkBAIC02MTAsNiArNjExLDI0IEBAIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFJlYWRH
ZXRJbmZvUmVzcG9uc2UyKQogICAgIEVYUEVDVF9FUShBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0
aW9uczo6Q2xpZW50UGluQXZhaWxhYmlsaXR5OjprU3VwcG9ydGVkQnV0UGluTm90U2V0LCBnZXRJ
bmZvUmVzcG9uc2UtPm9wdGlvbnMoKS5jbGllbnRQaW5BdmFpbGFiaWxpdHkoKSk7CiB9CiAKK1RF
U1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFJlYWRHZXRJbmZvUmVzcG9uc2VEZXZpY2VZdWJpa2V5
NWMpCit7CisgICAgYXV0byBnZXRJbmZvUmVzcG9uc2UgPSByZWFkQ1RBUEdldEluZm9SZXNwb25z
ZShjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1Rlc3RHZXRJbmZvUmVzcG9uc2VEZXZp
Y2VZdWJpa2V5NWMsIHNpemVvZihUZXN0RGF0YTo6a1Rlc3RHZXRJbmZvUmVzcG9uc2VEZXZpY2VZ
dWJpa2V5NWMpKSk7CisgICAgQVNTRVJUX1RSVUUoZ2V0SW5mb1Jlc3BvbnNlKTsKKyAgICBBU1NF
UlRfVFJVRShnZXRJbmZvUmVzcG9uc2UtPm1heE1zZ1NpemUoKSk7CisgICAgRVhQRUNUX0VRKCpn
ZXRJbmZvUmVzcG9uc2UtPm1heE1zZ1NpemUoKSwgMTIwMHUpOworICAgIEVYUEVDVF9ORShnZXRJ
bmZvUmVzcG9uc2UtPnZlcnNpb25zKCkuZmluZChQcm90b2NvbFZlcnNpb246OmtDdGFwKSwgZ2V0
SW5mb1Jlc3BvbnNlLT52ZXJzaW9ucygpLmVuZCgpKTsKKyAgICBFWFBFQ1RfTkUoZ2V0SW5mb1Jl
c3BvbnNlLT52ZXJzaW9ucygpLmZpbmQoUHJvdG9jb2xWZXJzaW9uOjprVTJmKSwgZ2V0SW5mb1Jl
c3BvbnNlLT52ZXJzaW9ucygpLmVuZCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoZ2V0SW5mb1Jlc3Bv
bnNlLT5vcHRpb25zKCkuaXNQbGF0Zm9ybURldmljZSgpKTsKKyAgICBFWFBFQ1RfRVEoQXV0aGVu
dGljYXRvclN1cHBvcnRlZE9wdGlvbnM6OlJlc2lkZW50S2V5QXZhaWxhYmlsaXR5OjprU3VwcG9y
dGVkLCBnZXRJbmZvUmVzcG9uc2UtPm9wdGlvbnMoKS5yZXNpZGVudEtleUF2YWlsYWJpbGl0eSgp
KTsKKyAgICBFWFBFQ1RfVFJVRShnZXRJbmZvUmVzcG9uc2UtPm9wdGlvbnMoKS51c2VyUHJlc2Vu
Y2VSZXF1aXJlZCgpKTsKKyAgICBFWFBFQ1RfRVEoQXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlv
bnM6OlVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHk6OmtOb3RTdXBwb3J0ZWQsIGdldEluZm9S
ZXNwb25zZS0+b3B0aW9ucygpLnVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkoKSk7CisgICAg
RVhQRUNUX0VRKEF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zOjpDbGllbnRQaW5BdmFpbGFi
aWxpdHk6OmtTdXBwb3J0ZWRBbmRQaW5TZXQsIGdldEluZm9SZXNwb25zZS0+b3B0aW9ucygpLmNs
aWVudFBpbkF2YWlsYWJpbGl0eSgpKTsKKyAgICBFWFBFQ1RfVFJVRShnZXRJbmZvUmVzcG9uc2Ut
PnRyYW5zcG9ydHMoKSk7CisgICAgRVhQRUNUX0VRKGdldEluZm9SZXNwb25zZS0+dHJhbnNwb3J0
cygpLT5zaXplKCksIDF1KTsKKyAgICBFWFBFQ1RfRVEoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6
VXNiLCBnZXRJbmZvUmVzcG9uc2UtPnRyYW5zcG9ydHMoKS0+Zmlyc3QoKSk7Cit9CisKIFRFU1Qo
Q1RBUFJlc3BvbnNlVGVzdCwgVGVzdFJlYWRHZXRJbmZvUmVzcG9uc2VXaXRoSW5jb3JyZWN0Rm9y
bWF0KQogewogICAgIEVYUEVDVF9GQUxTRShyZWFkQ1RBUEdldEluZm9SZXNwb25zZShjb252ZXJ0
Qnl0ZXNUb1ZlY3RvcihrVGVzdEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2VXaXRoTm9WZXJz
aW9uLCBzaXplb2Yoa1Rlc3RBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlV2l0aE5vVmVyc2lv
bikpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlk
b1Rlc3REYXRhLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb1Rlc3RE
YXRhLmgKaW5kZXggN2M3NTAwZmQyZTE5MzAxOTgxZmM0NDQ3MGY4YWM3MzRmNzAwMWNiNi4uNTEz
NzUyYzM2NzdkZGZlMTFhM2I5YjA4MDEyNDAwYjhlMzQ1YjA3YyAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9UZXN0RGF0YS5oCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvVGVzdERhdGEuaApAQCAtMTQ0Niw2ICsxNDQ2
LDQxIEBAIGNvbnN0ZXhwciB1aW50OF90IGtDdGFwQ2xpZW50UGluUmV0cmllc1Jlc3BvbnNlW10g
PSB7CiAgICAgMHgwOCwKIH07CiAKK2NvbnN0ZXhwciB1aW50OF90IGtUZXN0R2V0SW5mb1Jlc3Bv
bnNlRGV2aWNlWXViaWtleTVjW10gPSB7CisgICAgLy8gU3VjY2VzcworICAgIDB4MDAsCisgICAg
MHhBQSwgMHgwMSwgMHg4MywgMHg2NiwgMHg1NSwgMHgzMiwgMHg0NiwgMHg1RiwgMHg1NiwgMHgz
MiwgMHg2OCwgMHg0NiwKKyAgICAweDQ5LCAweDQ0LCAweDRGLCAweDVGLCAweDMyLCAweDVGLCAw
eDMwLCAweDZDLCAweDQ2LCAweDQ5LCAweDQ0LCAweDRGLAorICAgIDB4NUYsIDB4MzIsIDB4NUYs
IDB4MzEsIDB4NUYsIDB4NTAsIDB4NTIsIDB4NDUsIDB4MDIsIDB4ODIsIDB4NkIsIDB4NjMsCisg
ICAgMHg3MiwgMHg2NSwgMHg2NCwgMHg1MCwgMHg3MiwgMHg2RiwgMHg3NCwgMHg2NSwgMHg2Mywg
MHg3NCwgMHg2QiwgMHg2OCwKKyAgICAweDZELCAweDYxLCAweDYzLCAweDJELCAweDczLCAweDY1
LCAweDYzLCAweDcyLCAweDY1LCAweDc0LCAweDAzLCAweDUwLAorICAgIDB4RUUsIDB4ODgsIDB4
MjgsIDB4NzksIDB4NzIsIDB4MUMsIDB4NDksIDB4MTMsIDB4OTcsIDB4NzUsIDB4M0QsIDB4RkMs
CisgICAgMHhDRSwgMHg5NywgMHgwNywgMHgyQSwgMHgwNCwgMHhBNSwgMHg2MiwgMHg3MiwgMHg2
QiwgMHhGNSwgMHg2MiwgMHg3NSwKKyAgICAweDcwLCAweEY1LCAweDY0LCAweDcwLCAweDZDLCAw
eDYxLCAweDc0LCAweEY0LCAweDY5LCAweDYzLCAweDZDLCAweDY5LAorICAgIDB4NjUsIDB4NkUs
IDB4NzQsIDB4NTAsIDB4NjksIDB4NkUsIDB4RjUsIDB4NzUsIDB4NjMsIDB4NzIsIDB4NjUsIDB4
NjQsCisgICAgMHg2NSwgMHg2RSwgMHg3NCwgMHg2OSwgMHg2MSwgMHg2QywgMHg0RCwgMHg2Nywg
MHg2RCwgMHg3NCwgMHg1MCwgMHg3MiwKKyAgICAweDY1LCAweDc2LCAweDY5LCAweDY1LCAweDc3
LCAweEY1LCAweDA1LCAweDE5LCAweDA0LCAweEIwLCAweDA2LCAweDgxLAorICAgIDB4MDEsCisg
ICAgLy8ga2V5KDA3KSAtIG1heENyZWRlbnRpYWxDb3VudEluTGlzdAorICAgIDB4MDcsCisgICAg
Ly8gdmFsdWUgLSB1bnNpZ25lZCg4KQorICAgIDB4MDgsCisgICAgLy8ga2V5KDA4KSAtIG1heENy
ZWRlbnRpYWxJZExlbmd0aAorICAgIDB4MDgsCisgICAgLy8gdmFsdWUgLSB1bnNpZ25lZCgxMjgp
CisgICAgMHgxOCwgMHg4MCwKKyAgICAvLyBrZXkoMDkpIC0gdHJhbnNwb3J0cworICAgIDB4MDks
CisgICAgLy8gYXJyYXkoMSkKKyAgICAweDgxLAorICAgIC8vIHRleHQoMykgLSAidXNiIgorICAg
IDB4NjMsIDB4NzUsIDB4NzMsIDB4NjIsCisgICAgMHgwQSwgMHg4MiwgMHhBMiwgMHg2MywgMHg2
MSwgMHg2QywgMHg2NywgMHgyNiwgMHg2NCwgMHg3NCwgMHg3OSwgMHg3MCwKKyAgICAweDY1LCAw
eDZBLCAweDcwLCAweDc1LCAweDYyLCAweDZDLCAweDY5LCAweDYzLCAweDJELCAweDZCLCAweDY1
LCAweDc5LAorICAgIDB4QTIsIDB4NjMsIDB4NjEsIDB4NkMsIDB4NjcsIDB4MjcsIDB4NjQsIDB4
NzQsIDB4NzksIDB4NzAsIDB4NjUsIDB4NkEsCisgICAgMHg3MCwgMHg3NSwgMHg2MiwgMHg2Qywg
MHg2OSwgMHg2MywgMHgyRCwgMHg2QiwgMHg2NSwgMHg3OSwKK307CisKIH0gLy8gbmFtZXNwYWNl
IFRlc3REYXRhCiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0ZGYwMGIz
NGY2NjgzNDJhY2VjOTIyZDIwZDA2NmY4OTJjZTIyOTNhLi4xMThiNjhiYTE4ZTZkODM4OTBkZTc2
MzBhYTQ4MzIwZjgyZDg3ZDVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDQtMDggIEog
UGFzY29lICA8al9wYXNjb2VAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gSW1wbGVt
ZW50IGdldFRyYW5zcG9ydHMoKSBhbmQgZ2V0QXV0aGVudGljYXRvckRhdGEoKSBvbiBBdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM4OTY2CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzkxNDQ5OTA2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0
dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanM6
CisKIDIwMjItMDQtMDggIE1hdHRlbyBGbG9yZXMgIDxtYXR0ZW9fZmxvcmVzQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI5MjUyMS4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUt
c3VjY2Vzcy1oaWQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbAppbmRleCA1
MmZjYjE2NDFlMTNkODdkNzVkYjg3ZDIwYjlkMTNiODBmYjc1NWExLi4zMWMzNjQzN2I4YjY4ZmZi
N2UyYjYxOWVhZmEyZDk5YTIzNWY2ZDRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sCkBAIC0xLDQgKzEsNCBAQAotPCFE
T0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBXZWJBdXRoZW50aWNhdGlvbk1v
ZGVybkVuYWJsZWQ9dHJ1ZSBdIC0tPgorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1y
dW5uZXIgIFsgV2ViQXV0aGVudGljYXRpb25Nb2Rlcm5FbmFibGVkPWZhbHNlIF0gLS0+CiA8dGl0
bGU+V2ViIEF1dGhlbnRpY2F0aW9uIEFQSTogUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRl
XV0gc3VjY2VzcyBjYXNlcyB3aXRoIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci48L3RpdGxlPgog
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgpAQCAtMjcs
NyArMjcsNyBAQAogICAgICAgICB9OwogCiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAgICAgICAgICBj
aGVja0N0YXBNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgICAgIGNo
ZWNrQ3RhcE1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwsIHRydWUsIFsidXNiIl0pOwog
ICAgICAgICB9KTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0
aCBtaW5pbXVtIG9wdGlvbnMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qcyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91dGlsLmpzCmluZGV4IGU1
YWE4NGI5NTIxMWU2OTRlMTg1YTdhMDUzZTg0M2RjNTllZjkyYjEuLjdmYmFlOWUzM2QzMjI2OTM0
ZTgwOThiN2U3ZTJhZTU0NTM3NDEwNDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3Jlc291cmNlcy91dGlsLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3Jlc291cmNlcy91dGlsLmpzCkBAIC0zNTUsNyArMzU1LDcgQEAgZnVuY3Rpb24gY2hl
Y2tQdWJsaWNLZXkocHVibGljS2V5KQogICAgIHJldHVybiB0cnVlOwogfQogCi1mdW5jdGlvbiBj
aGVja0N0YXBNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsLCBpc05vbmVBdHRlc3RhdGlv
biA9IHRydWUpCitmdW5jdGlvbiBjaGVja0N0YXBNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50
aWFsLCBpc05vbmVBdHRlc3RhdGlvbiA9IHRydWUsIHRyYW5zcG9ydHMgPSBudWxsKQogewogICAg
IC8vIENoZWNrIHJlc3BvbnNlCiAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhCYXNlNjRVUkwucGFy
c2UoY3JlZGVudGlhbC5pZCksIEJhc2U2NFVSTC5wYXJzZSh0ZXN0SGlkQ3JlZGVudGlhbElkQmFz
ZTY0KSk7CkBAIC0zODgsNiArMzg4LDggQEAgZnVuY3Rpb24gY2hlY2tDdGFwTWFrZUNyZWRlbnRp
YWxSZXN1bHQoY3JlZGVudGlhbCwgaXNOb25lQXR0ZXN0YXRpb24gPSB0cnVlKQogICAgICAgICBh
c3NlcnRfZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmF0dFN0bXQuYWxnLCAtNyk7CiAgICAgICAg
IGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuYXR0U3RtdC54NWMubGVuZ3RoLCAxKTsK
ICAgICB9CisgICAgaWYgKHRyYW5zcG9ydHMpCisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
dHJhbnNwb3J0cywgY3JlZGVudGlhbC5yZXNwb25zZS5nZXRUcmFuc3BvcnRzKCkpOwogfQogCiBm
dW5jdGlvbiBjaGVja1UyZk1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwsIGlzTm9uZUF0
dGVzdGF0aW9uID0gdHJ1ZSkK
</data>
<flag name="commit-queue"
          id="485823"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457271</attachid>
            <date>2022-04-11 10:44:36 -0700</date>
            <delta_ts>2022-04-11 13:32:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238966-20220411104435.patch</filename>
            <type>text/plain</type>
            <size>61775</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTlmNzQxY2Q1YjRhM2E0
MGU1Y2RmNjgyZWJhMzFlYWJkNGJjYzIyMi4uNDYwMTQzMjgxODE4NDQ5MmJiYjk3YTE5YzlmZDZj
ZGM5MWVkMWU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIyLTA0LTExICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVu
dCBnZXRUcmFuc3BvcnRzKCkgYW5kIGdldEF1dGhlbnRpY2F0b3JEYXRhKCkgb24gQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzODk2NgorICAgICAgICByZGFyOi8vcHJvYmxlbS85MTQ0OTkwNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpBdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Z2V0VHJhbnNwb3J0cyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Z2V0QXV0
aGVudGljYXRvckRhdGEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdG9yUmVzcG9uc2U6OnRyeUNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JSZXNwb25zZURhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yUmVzcG9uc2VEYXRhOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0
aG4vQXV0aGVudGljYXRvclRyYW5zcG9ydC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvclRyYW5zcG9ydC5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9X
ZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4v
V2ViQXV0aGVudGljYXRpb25VdGlscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0QXJy
YXlCdWZmZXJUb1ZlY3Rvcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50
aWNhdGlvblV0aWxzLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0F1dGhlbnRp
Y2F0b3JHZXRJbmZvUmVzcG9uc2UuY3BwOgorICAgICAgICAoZmlkbzo6QXV0aGVudGljYXRvckdl
dEluZm9SZXNwb25zZTo6c2V0VHJhbnNwb3J0cyk6CisgICAgICAgIChmaWRvOjp0b1N0cmluZ1Zl
Y3Rvcik6CisgICAgICAgIChmaWRvOjplbmNvZGVBc0NCT1IpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXV0aG4vZmlkby9BdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlLmg6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcDoKKyAgICAg
ICAgKGZpZG86OmNvbnZlcnRTdHJpbmdUb0F1dGhlbnRpY2F0b3JUcmFuc3BvcnQpOgorICAgICAg
ICAoZmlkbzo6cmVhZENUQVBNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKToKKyAgICAgICAgKGZpZG86
OnJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoZmlkbzo6cmVhZFUyZlJl
Z2lzdGVyUmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNw
b25zZUNvbnZlcnRlci5oOgorICAgICAgICAoZmlkbzo6cmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2Up
OgorCiAyMDIyLTA0LTExICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtMQlNFXSBBY3RpdmF0ZSBTVkcgdHJhbnNmb3JtIHN1cHBvcnQgdGhy
b3VnaCBsYXllcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggN2U3ZTcxM2FjZjU2NWRiYTE0YTcwMjA0YzczZjZkYjMw
NmJkNTAxNy4uMTlmMmFlMmZjZWNhZDJiNmRiN2Q3OTU3MmUwYWM0NTY2Njk0ZTFkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0NCBAQAorMjAyMi0wNC0xMSAgSiBQYXNjb2UgIDxqX3Bhc2NvZUBhcHBs
ZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBsZW1lbnQgZ2V0VHJhbnNwb3J0cygpIGFu
ZCBnZXRBdXRoZW50aWNhdG9yRGF0YSgpIG9uIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3Bv
bnNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg5
NjYKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vOTE0NDk5MDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtL3NwaS9Db2NvYS9BdXRoZW50
aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLm1tOgorICAg
ICAgICAoLVtfV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSBpbml0V2l0aENsaWVu
dERhdGFKU09OOnJhd0lkOmV4dGVuc2lvbnM6YXR0ZXN0YXRpb25PYmplY3Q6YXR0YWNobWVudDp0
cmFuc3BvcnRzOl0pOgorICAgICAgICAoLVtfV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNw
b25zZSBpbml0V2l0aENsaWVudERhdGFKU09OOnJhd0lkOmV4dGVuc2lvbnM6YXR0ZXN0YXRpb25P
YmplY3Q6YXR0YWNobWVudDpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlSW50ZXJuYWwuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW06Cisg
ICAgICAgICh3a0V4dGVuc2lvbnNDbGllbnRPdXRwdXRzKToKKyAgICAgICAgKHdrQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2UpOgorICAgICAgICAod2tBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9Mb2NhbEF1dGhlbnRpY2F0b3IubW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGlj
YXRvckludGVybmFsOjp0cmFuc3BvcnRzKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50
aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFs
QWZ0ZXJBdHRlc3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0
Ojp0b0FTQ0Rlc2NyaXB0b3IpOgorICAgICAgICAoV2ViS2l0Ojp0b0F1dGhlbnRpY2F0b3JUcmFu
c3BvcnRzKToKKyAgICAgICAgKFdlYktpdDo6Y29udGludWVBZnRlclJlcXVlc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6Q3RhcEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRl
bnRpYWxBZnRlclJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViS2l0OjpDdGFwQXV0aGVu
dGljYXRvcjo6dHJhbnNwb3J0cyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vZmlkby9DdGFwRHJpdmVyLmg6CisgICAgICAgIChXZWJLaXQ6OkN0YXBEcml2
ZXI6OnRyYW5zcG9ydCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkN0YXBEcml2ZXI6OnByb3Rv
Y29sIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Q3RhcERyaXZlcjo6Q3RhcERyaXZlcik6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkN0YXBIaWREcml2ZXI6OkN0YXBIaWREcml2ZXIpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBOZmNEcml2ZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpDdGFwTmZjRHJpdmVyOjpDdGFwTmZjRHJpdmVyKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6VTJmQXV0aGVudGljYXRvcjo6Y29udGludWVSZWdpc3RlckNv
bW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQpOgorCiAyMDIyLTA0LTExICBKIFBhc2NvZSAgPGpf
cGFzY29lQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5dIEVuc3VyZSByZXF1ZXN0UGlu
IGNhbGxiYWNrIG9uIG1haW4gdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2UuY3BwCmluZGV4IDRlOGI3NDllNGMwMDcwOWZkYTMwMWE3YWZlNWZkOTk1ZTQwNzg0NTAuLmI0
M2QzMmIxMmQzNTg5MmM0MjFmODE5M2EzYzYyZGNkNjM3OTA4NjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2UuY3BwCkBAIC0yOSwyMiArMjksMjUgQEAKICNpZiBFTkFCTEUo
V0VCX0FVVEhOKQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YS5oIgorI2lu
Y2x1ZGUgIkNCT1JSZWFkZXIuaCIKKyNpbmNsdWRlICJXZWJBdXRoZW50aWNhdGlvblV0aWxzLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlPiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKFJlZjxBcnJh
eUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF0dGVzdGF0aW9uT2JqZWN0LCBB
dXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50KQorUmVmPEF1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRl
KFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF0dGVzdGF0aW9u
T2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50LCBWZWN0b3I8QXV0aGVu
dGljYXRvclRyYW5zcG9ydD4mJiB0cmFuc3BvcnRzKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKFdURk1vdmUocmF3SWQpLCBXVEZN
b3ZlKGF0dGVzdGF0aW9uT2JqZWN0KSwgYXR0YWNobWVudCkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKFdURk1vdmUocmF3SWQpLCBX
VEZNb3ZlKGF0dGVzdGF0aW9uT2JqZWN0KSwgYXR0YWNobWVudCwgV1RGTW92ZSh0cmFuc3BvcnRz
KSkpOwogfQogCi1SZWY8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IEF1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBy
YXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdHRlc3RhdGlvbk9iamVjdCwgQXV0aGVudGlj
YXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCkKK1JlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25S
ZXNwb25zZT4gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF0dGVzdGF0aW9u
T2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50LCBWZWN0b3I8QXV0aGVu
dGljYXRvclRyYW5zcG9ydD4mJiB0cmFuc3BvcnRzKQogewotICAgIHJldHVybiBjcmVhdGUoQXJy
YXlCdWZmZXI6OmNyZWF0ZShyYXdJZC5kYXRhKCksIHJhd0lkLnNpemUoKSksIEFycmF5QnVmZmVy
OjpjcmVhdGUoYXR0ZXN0YXRpb25PYmplY3QuZGF0YSgpLCBhdHRlc3RhdGlvbk9iamVjdC5zaXpl
KCkpLCBhdHRhY2htZW50KTsKKyAgICByZXR1cm4gY3JlYXRlKEFycmF5QnVmZmVyOjpjcmVhdGUo
cmF3SWQuZGF0YSgpLCByYXdJZC5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF0dGVzdGF0
aW9uT2JqZWN0LmRhdGEoKSwgYXR0ZXN0YXRpb25PYmplY3Quc2l6ZSgpKSwgYXR0YWNobWVudCwg
V1RGTW92ZSh0cmFuc3BvcnRzKSk7CiB9CiAKLUF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3Bv
bnNlOjpBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYg
cmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdHRlc3RhdGlvbk9iamVjdCwgQXV0aGVudGljYXRv
ckF0dGFjaG1lbnQgYXR0YWNobWVudCkKK0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
OjpBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3
SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdHRlc3RhdGlvbk9iamVjdCwgQXV0aGVudGljYXRvckF0
dGFjaG1lbnQgYXR0YWNobWVudCwgVmVjdG9yPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+JiYgdHJh
bnNwb3J0cykKICAgICA6IEF1dGhlbnRpY2F0b3JSZXNwb25zZShXVEZNb3ZlKHJhd0lkKSwgYXR0
YWNobWVudCkKICAgICAsIG1fYXR0ZXN0YXRpb25PYmplY3QoV1RGTW92ZShhdHRlc3RhdGlvbk9i
amVjdCkpCisgICAgLCBtX3RyYW5zcG9ydHMoV1RGTW92ZSh0cmFuc3BvcnRzKSkKIHsKIH0KIApA
QCAtNTMsOSArNTYsMzIgQEAgQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBBdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb25SZXNwb25zZTo6ZGF0YSgpIGNvbnN0CiAgICAgYXV0byBkYXRhID0gQXV0aGVu
dGljYXRvclJlc3BvbnNlOjpkYXRhKCk7CiAgICAgZGF0YS5pc0F1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlID0gdHJ1ZTsKICAgICBkYXRhLmF0dGVzdGF0aW9uT2JqZWN0ID0gbV9hdHRl
c3RhdGlvbk9iamVjdC5jb3B5UmVmKCk7CisgICAgZGF0YS50cmFuc3BvcnRzID0gbV90cmFuc3Bv
cnRzOwogICAgIHJldHVybiBkYXRhOwogfQogCitWZWN0b3I8QXV0aGVudGljYXRvclRyYW5zcG9y
dD4gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmdldFRyYW5zcG9ydHMoKSBjb25z
dAoreworICAgIHJldHVybiBtX3RyYW5zcG9ydHM7Cit9CisKK0FycmF5QnVmZmVyKiBBdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Z2V0QXV0aGVudGljYXRvckRhdGEoKSBjb25zdAor
eworICAgIGF1dG8gZGVjb2RlZFJlc3BvbnNlID0gY2Jvcjo6Q0JPUlJlYWRlcjo6cmVhZChjb252
ZXJ0QXJyYXlCdWZmZXJUb1ZlY3RvcihtX2F0dGVzdGF0aW9uT2JqZWN0LnB0cigpKSk7CisgICAg
aWYgKCFkZWNvZGVkUmVzcG9uc2UgfHwgIWRlY29kZWRSZXNwb25zZS0+aXNNYXAoKSkgeworICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorICAgIGNvbnN0IGF1dG8mIGF0dE9iak1hcCA9IGRlY29kZWRSZXNwb25zZS0+Z2V0TWFwKCk7
CisgICAgYXV0byBpdCA9IGF0dE9iak1hcC5maW5kKGNib3I6OkNCT1JWYWx1ZSgiYXV0aERhdGEi
KSk7CisgICAgaWYgKGl0ID09IGF0dE9iak1hcC5lbmQoKSB8fCAhaXQtPnNlY29uZC5pc0J5dGVT
dHJpbmcoKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorICAgIGF1dG8gYXV0aERhdGEgPSBpdC0+c2Vjb25kLmdldEJ5dGVT
dHJpbmcoKTsKKyAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoRGF0YS5kYXRhKCks
IGF1dGhEYXRhLnNpemUoKSkucHRyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3Bv
bnNlLmgKaW5kZXggMjYyM2VhODU5OWM0NzE1NDdhYWE1MDljN2EyNjhiNGFlNDhmNmIxZS4uZGYy
MzU4YWRmMzBlOWM3ZmFjMWIyMGFjMWM3ZDhlOWQ4NmIyN2I2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2UuaApAQCAtMjgsMjUgKzI4LDI5IEBACiAjaWYgRU5BQkxFKFdFQl9B
VVRITikKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JSZXNwb25zZS5oIgorI2luY2x1ZGUgIkF1
dGhlbnRpY2F0b3JUcmFuc3BvcnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSA6IHB1YmxpYyBBdXRoZW50aWNhdG9yUmVz
cG9uc2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2U+IGNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZl
cj4mJiBhdHRlc3RhdGlvbk9iamVjdCwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+
IGNyZWF0ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIGF0dGVzdGF0aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCk7CisgICAgc3Rh
dGljIFJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJh
eUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF0dGVzdGF0aW9uT2JqZWN0LCBB
dXRoZW50aWNhdG9yQXR0YWNobWVudCwgVmVjdG9yPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+JiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2U+IGNyZWF0ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0lkLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGF0dGVzdGF0aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCwg
VmVjdG9yPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+JiYpOwogCiAgICAgdmlydHVhbCB+QXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UoKSA9IGRlZmF1bHQ7CiAKICAgICBBcnJheUJ1ZmZl
ciogYXR0ZXN0YXRpb25PYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2F0dGVzdGF0aW9uT2JqZWN0
LnB0cigpOyB9CisgICAgVmVjdG9yPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+IGdldFRyYW5zcG9y
dHMoKSBjb25zdDsKKyAgICBBcnJheUJ1ZmZlciogZ2V0QXV0aGVudGljYXRvckRhdGEoKSBjb25z
dDsKIAogcHJpdmF0ZToKLSAgICBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZShSZWY8
QXJyYXlCdWZmZXI+JiYsIFJlZjxBcnJheUJ1ZmZlcj4mJiwgQXV0aGVudGljYXRvckF0dGFjaG1l
bnQpOworICAgIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZl
cj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCwgVmVjdG9y
PEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+JiYpOwogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gVHlwZTo6QXR0ZXN0YXRpb247IH0KICAgICBBdXRoZW50aWNhdG9yUmVzcG9u
c2VEYXRhIGRhdGEoKSBjb25zdCBmaW5hbDsKIAogICAgIFJlZjxBcnJheUJ1ZmZlcj4gbV9hdHRl
c3RhdGlvbk9iamVjdDsKKyAgICBWZWN0b3I8QXV0aGVudGljYXRvclRyYW5zcG9ydD4gbV90cmFu
c3BvcnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlLmlkbAppbmRleCAxYzAwYzE1ZmI1MDQ4ODYwOGE1OWRkMWFlMjRhOWJl
MzcxNmMyM2QzLi5iY2RjMTI5ZGVjNTY5Y2U3NzEwZDM0ODcyNzI3Y2FiNTE3OWNmODI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmlkbApAQCAtMzAsNCArMzAsNiBAQAog
ICAgIFNlY3VyZUNvbnRleHQKIF0gaW50ZXJmYWNlIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlIDogQXV0aGVudGljYXRvclJlc3BvbnNlIHsKICAgICBbU2FtZU9iamVjdF0gcmVhZG9u
bHkgYXR0cmlidXRlIEFycmF5QnVmZmVyIGF0dGVzdGF0aW9uT2JqZWN0OworICAgIHNlcXVlbmNl
PEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+ICAgICAgICAgICAgZ2V0VHJhbnNwb3J0cygpOworICAg
IEFycmF5QnVmZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0QXV0aGVudGlj
YXRvckRhdGEoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5jcHAKaW5kZXggN2E0MTY2OWRkNmU3YWY0MDNk
MWRlMjI2OTdjODQ0NTA5MjhjNWI3ZC4uYzZkMzJiOGRjZjgzYjEwM2ZjMTM2MGMyOGI0OTVjMDJj
ZjQ4NDM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBSZWZQdHI8QXV0
aGVudGljYXRvclJlc3BvbnNlPiBBdXRoZW50aWNhdG9yUmVzcG9uc2U6OnRyeUNyZWF0ZShBdXRo
ZW50aWNhdG9yUmVzcAogICAgICAgICBpZiAoIWRhdGEuYXR0ZXN0YXRpb25PYmplY3QpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICByZXR1cm4gQXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShkYXRhLnJhd0lkLnJlbGVhc2VOb25OdWxsKCksIGRh
dGEuYXR0ZXN0YXRpb25PYmplY3QucmVsZWFzZU5vbk51bGwoKSwgYXR0YWNobWVudCk7CisgICAg
ICAgIHJldHVybiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKGRhdGEu
cmF3SWQucmVsZWFzZU5vbk51bGwoKSwgZGF0YS5hdHRlc3RhdGlvbk9iamVjdC5yZWxlYXNlTm9u
TnVsbCgpLCBhdHRhY2htZW50LCBXVEZNb3ZlKGRhdGEudHJhbnNwb3J0cykpOwogICAgIH0KIAog
ICAgIGlmICghZGF0YS5hdXRoZW50aWNhdG9yRGF0YSB8fCAhZGF0YS5zaWduYXR1cmUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNw
b25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVz
cG9uc2UuaAppbmRleCBiMDY3MWVlYjExMWZlNWRhYjBiNDMwNDkyZDA5YzFmYjQ1NWQ1MmZmLi5m
ZDFmNTBkYmEwMzViOTk2ZmJkYTJkOTI5NzVhY2ZiODIyN2MyY2E5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmgK
QEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBBdXRo
ZW50aWNhdG9yQXR0YWNobWVudDsKK2VudW0gY2xhc3MgQXV0aGVudGljYXRvclRyYW5zcG9ydDsK
IAogc3RydWN0IEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRh
LmgKaW5kZXggODE5MGYzOGYyNzRmYmFmMmQ4MmRlNDkwM2Q0YjJhZGM0NWQ3OGE5Yy4uYzU0ZjFk
NDc0NmU0NTRhMzZmZGI5YmFiNjA2MzUyZjA5ZTNkYjA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRh
LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKKyNpbmNsdWRl
ICJBdXRoZW50aWNhdG9yVHJhbnNwb3J0LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJy
YXlCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkBAIC01MSw2ICs1Miw4IEBA
IHN0cnVjdCBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIHsKICAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IHNpZ25hdHVyZTsKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHVzZXJIYW5kbGU7CiAKKyAg
ICBWZWN0b3I8V2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydD4gdHJhbnNwb3J0czsKKwog
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxBdXRoZW50
aWNhdG9yUmVzcG9uc2VEYXRhPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKQEAgLTk0LDYgKzk3LDcg
QEAgdm9pZCBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKIAogICAgIGlmIChpc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlICYm
IGF0dGVzdGF0aW9uT2JqZWN0KSB7CiAgICAgICAgIGVuY29kZUFycmF5QnVmZmVyKGVuY29kZXIs
ICphdHRlc3RhdGlvbk9iamVjdCk7CisgICAgICAgIGVuY29kZXIgPDwgdHJhbnNwb3J0czsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM5LDYgKzE0MywxMiBAQCBzdGQ6Om9wdGlvbmFs
PEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE+IEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE6OmRl
Y29kZShEZWNvZAogICAgICAgICByZXN1bHQuYXR0ZXN0YXRpb25PYmplY3QgPSBkZWNvZGVBcnJh
eUJ1ZmZlcihkZWNvZGVyKTsKICAgICAgICAgaWYgKCFyZXN1bHQuYXR0ZXN0YXRpb25PYmplY3Qp
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+PiB0cmFuc3BvcnRzOworICAgICAgICBk
ZWNvZGVyID4+IHRyYW5zcG9ydHM7CisgICAgICAgIGlmICghdHJhbnNwb3J0cykKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJlc3VsdC50cmFuc3BvcnRzID0gKnRy
YW5zcG9ydHM7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnQuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclRyYW5zcG9ydC5o
CmluZGV4IGEzYjM3YjZiNmEyODU5Y2NkMWI5NDJkMGE4YTdhMWMxZjg4MTQwNWEuLmU0MDlkM2Jj
OTI0ZTVmOWU3Yzc3OTMyNTRhN2IxZDdiMTI5OWE0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclRyYW5zcG9ydC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclRyYW5zcG9ydC5oCkBAIC0z
NSw3ICszNSw4IEBAIGVudW0gY2xhc3MgQXV0aGVudGljYXRvclRyYW5zcG9ydCB7CiAgICAgVXNi
LAogICAgIE5mYywKICAgICBCbGUsCi0gICAgSW50ZXJuYWwKKyAgICBJbnRlcm5hbCwKKyAgICBD
YWJsZQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpAQCAtNDgsNyArNDksOCBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+
IHsKICAgICAgICAgV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6VXNiLAogICAgICAg
ICBXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpOZmMsCiAgICAgICAgIFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkJsZSwKLSAgICAgICAgV2ViQ29yZTo6QXV0aGVudGlj
YXRvclRyYW5zcG9ydDo6SW50ZXJuYWwKKyAgICAgICAgV2ViQ29yZTo6QXV0aGVudGljYXRvclRy
YW5zcG9ydDo6SW50ZXJuYWwsCisgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnQ6OkNhYmxlCiAgICAgPjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclRyYW5zcG9ydC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnQuaWRsCmluZGV4IDhiYzhmNTQ3
ZTI4NGVjMmM4ODFlZDJhZTAwZjBkZjU2OTU5ZDAzMzIuLmNmN2E0Mzk5ZTE0YWU0YjNmNGUwZmFi
MGZkZTFlNDg5Mzc2MjBiNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvclRyYW5zcG9ydC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0LmlkbApAQCAtMjksNSArMjksNiBA
QAogICAgICJ1c2IiLAogICAgICJuZmMiLAogICAgICJibGUiLAotICAgICJpbnRlcm5hbCIKKyAg
ICAiaW50ZXJuYWwiLAorICAgICJjYWJsZSIKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmgKaW5k
ZXggZjg1ZjFmYWJjZmNjMjI3ZDA2M2I4ZDE0ZDE1ZDU2Nzc5NzQzNTU0Yy4uYTQ5NGE5ZGJjMGY0
NTBmOWRkNTk2OTM5MTNjMTM1MTZiZGRkMTEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaApA
QCAtOTMsNiArOTMsMTIgQEAgY29uc3RleHByIGNvbnN0IGNoYXIga2V5U2l6ZUtleVtdID0gImtl
eV9zaXplIjsKIGNvbnN0ZXhwciBjb25zdCBjaGFyIHJlbHlpbmdQYXJ0eUtleVtdID0gInJwIjsK
IGNvbnN0ZXhwciBjb25zdCBjaGFyIGFwcGxpY2F0aW9uVGFnS2V5W10gPSAidGFnIjsKIAorY29u
c3RleHByIGNvbnN0IGNoYXIgYXV0aGVudGljYXRvclRyYW5zcG9ydFVzYltdID0gInVzYiI7Citj
b25zdGV4cHIgY29uc3QgY2hhciBhdXRoZW50aWNhdG9yVHJhbnNwb3J0TmZjW10gPSAibmZjIjsK
K2NvbnN0ZXhwciBjb25zdCBjaGFyIGF1dGhlbnRpY2F0b3JUcmFuc3BvcnRCbGVbXSA9ICJibGUi
OworY29uc3RleHByIGNvbnN0IGNoYXIgYXV0aGVudGljYXRvclRyYW5zcG9ydEludGVybmFsW10g
PSAiaW50ZXJuYWwiOworY29uc3RleHByIGNvbnN0IGNoYXIgYXV0aGVudGljYXRvclRyYW5zcG9y
dENhYmxlW10gPSAiY2FibGUiOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIG5hbWVzcGFj
ZSBXZWJBdXRobiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcAppbmRleCA0N2I3NzExNWU5ODBkZWY0ZDMw
YjFiNjdjOTM3ODIwOWRiYTAwNjA4Li5mZTFmZmRmNTI3NjM5MTQ1YTVlYzM1N2JlYTQ2OTE5NWEw
YzIxZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1
dGhlbnRpY2F0aW9uVXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVO
QUJMRShXRUJfQVVUSE4pCiAKKyNpbmNsdWRlICJDQk9SUmVhZGVyLmgiCiAjaW5jbHVkZSAiQ0JP
UldyaXRlci5oIgogI2luY2x1ZGUgIkZpZG9Db25zdGFudHMuaCIKICNpbmNsdWRlICJXZWJBdXRo
ZW50aWNhdGlvbkNvbnN0YW50cy5oIgpAQCAtNDMsNiArNDQsMTEgQEAgVmVjdG9yPHVpbnQ4X3Q+
IGNvbnZlcnRCeXRlc1RvVmVjdG9yKGNvbnN0IHVpbnQ4X3QgYnl0ZUFycmF5W10sIGNvbnN0IHNp
emVfdCBsZW4KICAgICByZXR1cm4geyBieXRlQXJyYXksIGxlbmd0aCB9OwogfQogCitWZWN0b3I8
dWludDhfdD4gY29udmVydEFycmF5QnVmZmVyVG9WZWN0b3IoQXJyYXlCdWZmZXIqIGJ1ZmZlcikK
K3sKKyAgICByZXR1cm4gY29udmVydEJ5dGVzVG9WZWN0b3IocmVpbnRlcnByZXRfY2FzdDx1aW50
OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPmJ5dGVMZW5ndGgoKSk7Cit9CisKIFZlY3Rv
cjx1aW50OF90PiBwcm9kdWNlUnBJZEhhc2goY29uc3QgU3RyaW5nJiBycElkKQogewogICAgIGF1
dG8gY3J5cHRvID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMjU2KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmgKaW5kZXggNGZlYTExYzA3YThhMzky
YmI4NDYyODJlY2E4OWQ5ZDk4MjBkNzYyNy4uNDVmMzNmNGRkOGMxNGY4NzdiNTJiM2I2OTdiODY2
ZDBhNWEyMjY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9X
ZWJBdXRoZW50aWNhdGlvblV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmgKQEAgLTM4LDYgKzM4LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29udmVydEJ5dGVz
VG9WZWN0b3IoY29uc3QgdWludDhfdCBieXRlQXJyYXlbXSwgY29uc3Qgc2l6ZV90IGxlbmd0aCk7
CiAKK1dFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0QXJyYXlCdWZmZXJUb1Zl
Y3RvcihBcnJheUJ1ZmZlciopOworCiAvLyBQcm9kdWNlIGEgU0hBLTI1NiBoYXNoIG9mIHRoZSBn
aXZlbiBSUCBJRC4KIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBwcm9kdWNlUnBJZEhh
c2goY29uc3QgU3RyaW5nJiBycElkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9maWRvL0F1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0F1dGhlbnRpY2F0b3JHZXRJbmZvUmVz
cG9uc2UuY3BwCmluZGV4IDU2ZmRkZTJmY2QzMzA5MWY5OTU1MmY5MjQ0MTU1YjY5ZDI2NDcyNGYu
LjIyZWUyNThjOTc4NzE5MjMzMTlmYmM4Zjk2ZGFhZjE2NzYwYjhhZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9BdXRoZW50aWNhdG9yR2V0SW5mb1Jl
c3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vQXV0
aGVudGljYXRvckdldEluZm9SZXNwb25zZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKIAogI2luY2x1
ZGUgIkNCT1JWYWx1ZS5oIgogI2luY2x1ZGUgIkNCT1JXcml0ZXIuaCIKKyNpbmNsdWRlICJXZWJB
dXRoZW50aWNhdGlvbkNvbnN0YW50cy5oIgogCiBuYW1lc3BhY2UgZmlkbyB7CiAKQEAgLTc2LDYg
Kzc3LDM5IEBAIEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UmIEF1dGhlbnRpY2F0b3JHZXRJ
bmZvUmVzcG9uc2U6OnNldE9wdGlvbnMoQXV0aGVudGljCiAgICAgcmV0dXJuICp0aGlzOwogfQog
CitBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlJiBBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3Bv
bnNlOjpzZXRUcmFuc3BvcnRzKFZlY3RvcjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0
PiYmIHRyYW5zcG9ydHMpCit7CisgICAgbV90cmFuc3BvcnRzID0gV1RGTW92ZSh0cmFuc3BvcnRz
KTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3N0YXRpYyBWZWN0b3I8U3RyaW5nPiB0b1N0cmlu
Z1ZlY3RvcihWZWN0b3I8V2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydD4gdHJhbnNwb3J0
cykKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBzdHJpbmdUcmFuc3BvcnRzOworICAgIGZvciAoYXV0
byYgdHJhbnNwb3J0IDogdHJhbnNwb3J0cykgeworICAgICAgICBzd2l0Y2ggKHRyYW5zcG9ydCkg
eworICAgICAgICBjYXNlIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OlVzYjoKKyAg
ICAgICAgICAgIHN0cmluZ1RyYW5zcG9ydHMuYXBwZW5kKFN0cmluZzo6ZnJvbUxhdGluMShXZWJD
b3JlOjphdXRoZW50aWNhdG9yVHJhbnNwb3J0VXNiKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpOZmM6CisgICAgICAg
ICAgICBzdHJpbmdUcmFuc3BvcnRzLmFwcGVuZChTdHJpbmc6OmZyb21MYXRpbjEoV2ViQ29yZTo6
YXV0aGVudGljYXRvclRyYW5zcG9ydE5mYykpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6QmxlOgorICAgICAgICAgICAg
c3RyaW5nVHJhbnNwb3J0cy5hcHBlbmQoU3RyaW5nOjpmcm9tTGF0aW4xKFdlYkNvcmU6OmF1dGhl
bnRpY2F0b3JUcmFuc3BvcnRCbGUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkludGVybmFsOgorICAgICAgICAgICAg
c3RyaW5nVHJhbnNwb3J0cy5hcHBlbmQoU3RyaW5nOjpmcm9tTGF0aW4xKFdlYkNvcmU6OmF1dGhl
bnRpY2F0b3JUcmFuc3BvcnRJbnRlcm5hbCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6Q2FibGU6CisgICAgICAgICAg
ICBzdHJpbmdUcmFuc3BvcnRzLmFwcGVuZChTdHJpbmc6OmZyb21MYXRpbjEoV2ViQ29yZTo6YXV0
aGVudGljYXRvclRyYW5zcG9ydENhYmxlKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVy
biBzdHJpbmdUcmFuc3BvcnRzOworfQorCiBWZWN0b3I8dWludDhfdD4gZW5jb2RlQXNDQk9SKGNv
bnN0IEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIHVzaW5n
IG5hbWVzcGFjZSBjYm9yOwpAQCAtOTgsNiArMTMyLDkgQEAgVmVjdG9yPHVpbnQ4X3Q+IGVuY29k
ZUFzQ0JPUihjb25zdCBBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlJiByZXNwb25zZSkKIAog
ICAgIGlmIChyZXNwb25zZS5waW5Qcm90b2NvbCgpKQogICAgICAgICBkZXZpY2VJbmZvTWFwLmVt
cGxhY2UoQ0JPUlZhbHVlKDYpLCB0b0FycmF5VmFsdWUoKnJlc3BvbnNlLnBpblByb3RvY29sKCkp
KTsKKyAgICAKKyAgICBpZiAocmVzcG9uc2UudHJhbnNwb3J0cygpKQorICAgICAgICBkZXZpY2VJ
bmZvTWFwLmVtcGxhY2UoQ0JPUlZhbHVlKDcpLCB0b0FycmF5VmFsdWUodG9TdHJpbmdWZWN0b3Io
KnJlc3BvbnNlLnRyYW5zcG9ydHMoKSkpKTsKIAogICAgIGF1dG8gZW5jb2RlZEJ5dGVzID0gQ0JP
UldyaXRlcjo6d3JpdGUoQ0JPUlZhbHVlKFdURk1vdmUoZGV2aWNlSW5mb01hcCkpKTsKICAgICBB
U1NFUlQoZW5jb2RlZEJ5dGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vZmlkby9BdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZS5o
CmluZGV4IGMwNjNjNGY1YzkzNWY5NzNkYzExNTQwMjAzNTk3YzU4NTZjMzRhZmUuLjQyYmIxYmEx
MzM4ZmVjZGVlMDQ0NDYzMzgzYWJkZDJmZGJmMDFmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9BdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0F1dGhlbnRpY2F0b3JH
ZXRJbmZvUmVzcG9uc2UuaApAQCAtMzIsNiArMzIsNyBAQAogI2lmIEVOQUJMRShXRUJfQVVUSE4p
CiAKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9ucy5oIgorI2luY2x1ZGUg
IkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQuaCIKICNpbmNsdWRlICJGaWRvQ29uc3RhbnRzLmgiCiAj
aW5jbHVkZSA8d3RmL1N0ZFNldC5oPgogCkBAIC01Miw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICBB
dXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlJiBzZXRQaW5Qcm90b2NvbHMoVmVjdG9yPHVpbnQ4
X3Q+JiYpOwogICAgIEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UmIHNldEV4dGVuc2lvbnMo
VmVjdG9yPFN0cmluZz4mJik7CiAgICAgQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSYgc2V0
T3B0aW9ucyhBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9ucyYmKTsKKyAgICBBdXRoZW50aWNh
dG9yR2V0SW5mb1Jlc3BvbnNlJiBzZXRUcmFuc3BvcnRzKFZlY3RvcjxXZWJDb3JlOjpBdXRoZW50
aWNhdG9yVHJhbnNwb3J0PiYmKTsKIAogICAgIGNvbnN0IFN0ZFNldDxQcm90b2NvbFZlcnNpb24+
JiB2ZXJzaW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbnM7IH0KICAgICBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGFhZ3VpZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWFndWlkOyB9CkBAIC01OSw2
ICs2MSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4mIHBpblByb3RvY29sKCkgY29uc3QgeyByZXR1cm4gbV9waW5Qcm90b2NvbHM7IH0KICAgICBj
b25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiYgZXh0ZW5zaW9ucygpIGNvbnN0IHsg
cmV0dXJuIG1fZXh0ZW5zaW9uczsgfQogICAgIGNvbnN0IEF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRP
cHRpb25zJiBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CisgICAgY29uc3Qg
c3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydD4+IHRy
YW5zcG9ydHMoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zcG9ydHM7IH0KIAogcHJpdmF0ZToKICAg
ICBTdGRTZXQ8UHJvdG9jb2xWZXJzaW9uPiBtX3ZlcnNpb25zOwpAQCAtNjcsNiArNzAsNyBAQCBw
cml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtX3BpblByb3RvY29s
czsKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBtX2V4dGVuc2lvbnM7CiAgICAg
QXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnMgbV9vcHRpb25zOworICAgIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+PiBtX3RyYW5zcG9ydHM7
CiB9OwogCiBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gZW5jb2RlQXNDQk9SKGNvbnN0
IEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0
ZXIuY3BwCmluZGV4IDczNWE5YmY4ZTAzYTg0MmE5N2Q0Njk0YWNjYzZiMjJlMTNlZmUwNDguLjcy
MDIwOWNjNDFkMzczMjM4YjcyMzhhNDNlYzU1ZDY1NTliNGEzZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3Bv
bnNlQ29udmVydGVyLmNwcApAQCAtNTQsNiArNTQsMjEgQEAgc3RhdGljIFByb3RvY29sVmVyc2lv
biBjb252ZXJ0U3RyaW5nVG9Qcm90b2NvbFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQog
ICAgIHJldHVybiBQcm90b2NvbFZlcnNpb246OmtVbmtub3duOwogfQogCitzdGF0aWMgc3RkOjpv
cHRpb25hbDxBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiBjb252ZXJ0U3RyaW5nVG9BdXRoZW50aWNh
dG9yVHJhbnNwb3J0KGNvbnN0IFN0cmluZyYgdHJhbnNwb3J0KQoreworICAgIGlmICh0cmFuc3Bv
cnQgPT0gYXV0aGVudGljYXRvclRyYW5zcG9ydFVzYikKKyAgICAgICAgcmV0dXJuIEF1dGhlbnRp
Y2F0b3JUcmFuc3BvcnQ6OlVzYjsKKyAgICBpZiAodHJhbnNwb3J0ID09IGF1dGhlbnRpY2F0b3JU
cmFuc3BvcnROZmMpCisgICAgICAgIHJldHVybiBBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpOZmM7
CisgICAgaWYgKHRyYW5zcG9ydCA9PSBhdXRoZW50aWNhdG9yVHJhbnNwb3J0QmxlKQorICAgICAg
ICByZXR1cm4gQXV0aGVudGljYXRvclRyYW5zcG9ydDo6QmxlOworICAgIGlmICh0cmFuc3BvcnQg
PT0gYXV0aGVudGljYXRvclRyYW5zcG9ydEludGVybmFsKQorICAgICAgICByZXR1cm4gQXV0aGVu
dGljYXRvclRyYW5zcG9ydDo6SW50ZXJuYWw7CisgICAgaWYgKHRyYW5zcG9ydCA9PSBhdXRoZW50
aWNhdG9yVHJhbnNwb3J0Q2FibGUpCisgICAgICAgIHJldHVybiBBdXRoZW50aWNhdG9yVHJhbnNw
b3J0OjpDYWJsZTsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCiBzdGQ6Om9wdGlvbmFs
PGNib3I6OkNCT1JWYWx1ZT4gZGVjb2RlUmVzcG9uc2VNYXAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBpbkJ1ZmZlcikKIHsKICAgICBpZiAoaW5CdWZmZXIuc2l6ZSgpIDw9IGtSZXNwb25zZUNvZGVM
ZW5ndGggfHwgZ2V0UmVzcG9uc2VDb2RlKGluQnVmZmVyKSAhPSBDdGFwRGV2aWNlUmVzcG9uc2VD
b2RlOjprU3VjY2VzcykKQEAgLTk1LDcgKzExMCw3IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4g
Z2V0Q3JlZGVudGlhbElkKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXV0aGVudGljYXRvckRhdGEp
CiAKIC8vIERlY29kZXMgYnl0ZSBhcnJheSByZXNwb25zZSBmcm9tIGF1dGhlbnRpY2F0b3IgdG8g
Q0JPUiB2YWx1ZSBvYmplY3QgYW5kCiAvLyBjaGVja3MgZm9yIGNvcnJlY3QgZW5jb2RpbmcgZm9y
bWF0LgotUmVmUHRyPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiByZWFkQ1RBUE1h
a2VDcmVkZW50aWFsUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbkJ1ZmZlciwgV2Vi
Q29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgY29uc3QgQXR0ZXN0YXRp
b25Db252ZXlhbmNlUHJlZmVyZW5jZSYgYXR0ZXN0YXRpb24pCitSZWZQdHI8QXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZShjb25z
dCBWZWN0b3I8dWludDhfdD4mIGluQnVmZmVyLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNo
bWVudCBhdHRhY2htZW50LCBWZWN0b3I8QXV0aGVudGljYXRvclRyYW5zcG9ydD4mJiB0cmFuc3Bv
cnRzLCBjb25zdCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlJiBhdHRlc3RhdGlvbikK
IHsKICAgICBhdXRvIGRlY29kZWRNYXAgPSBkZWNvZGVSZXNwb25zZU1hcChpbkJ1ZmZlcik7CiAg
ICAgaWYgKCFkZWNvZGVkTWFwKQpAQCAtMTM1LDcgKzE1MCw3IEBAIFJlZlB0cjxBdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZENUQVBNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKGNv
bnN0IFZlCiAgICAgICAgIGF0dGVzdGF0aW9uT2JqZWN0ID0gY2Jvcjo6Q0JPUldyaXRlcjo6d3Jp
dGUoQ0JPUihXVEZNb3ZlKGF0dGVzdGF0aW9uT2JqZWN0TWFwKSkpOwogICAgIH0KIAotICAgIHJl
dHVybiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKGNyZWRlbnRpYWxJ
ZCwgKmF0dGVzdGF0aW9uT2JqZWN0LCBhdHRhY2htZW50KTsKKyAgICByZXR1cm4gQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsICphdHRlc3RhdGlv
bk9iamVjdCwgYXR0YWNobWVudCwgV1RGTW92ZSh0cmFuc3BvcnRzKSk7CiB9CiAKIFJlZlB0cjxB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9u
c2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbkJ1ZmZlciwgV2ViQ29yZTo6QXV0aGVudGljYXRv
ckF0dGFjaG1lbnQgYXR0YWNobWVudCkKQEAgLTMyNSw2ICszNDAsMjIgQEAgc3RkOjpvcHRpb25h
bDxBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlPiByZWFkQ1RBUEdldEluZm9SZXNwb25zZShj
b25zdCBWZWN0b3IKICAgICAgICAgcmVzcG9uc2Uuc2V0UGluUHJvdG9jb2xzKFdURk1vdmUoc3Vw
cG9ydGVkUGluUHJvdG9jb2xzKSk7CiAgICAgfQogCisgICAgaXQgPSByZXNwb25zZU1hcC5maW5k
KENCT1IoOSkpOworICAgIGlmIChpdCAhPSByZXNwb25zZU1hcC5lbmQoKSkgeworICAgICAgICBp
ZiAoIWl0LT5zZWNvbmQuaXNBcnJheSgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgICAgICBWZWN0b3I8QXV0aGVudGljYXRvclRyYW5zcG9ydD4gdHJhbnNwb3J0czsK
KyAgICAgICAgZm9yIChjb25zdCBhdXRvJiB0cmFuc3BvcnRTdHJpbmcgOiBpdC0+c2Vjb25kLmdl
dEFycmF5KCkpIHsKKyAgICAgICAgICAgIGlmICghdHJhbnNwb3J0U3RyaW5nLmlzU3RyaW5nKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIGF1dG8g
dHJhbnNwb3J0ID0gY29udmVydFN0cmluZ1RvQXV0aGVudGljYXRvclRyYW5zcG9ydCh0cmFuc3Bv
cnRTdHJpbmcuZ2V0U3RyaW5nKCkpOworICAgICAgICAgICAgaWYgKHRyYW5zcG9ydCkKKyAgICAg
ICAgICAgICAgICB0cmFuc3BvcnRzLmFwcGVuZCgqdHJhbnNwb3J0KTsKKyAgICAgICAgfQorICAg
ICAgICByZXNwb25zZS5zZXRUcmFuc3BvcnRzKFdURk1vdmUodHJhbnNwb3J0cykpOworICAgIH0K
KwogICAgIHJldHVybiBXVEZNb3ZlKHJlc3BvbnNlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252
ZXJ0ZXIuaAppbmRleCBhMmUyOGE4MThmZmM4YTlmMDNhYjgyOWU4OWFiMWQ0NDMxZGRiYWI5Li5m
ZGM2MWQyYjNiYmQ3YmZkOTU2ODM1MjBkNWM0NTM0YzQ1MzNhNTI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9u
c2VDb252ZXJ0ZXIuaApAQCAtNTIsNyArNTIsNyBAQCBXRUJDT1JFX0VYUE9SVCBDdGFwRGV2aWNl
UmVzcG9uc2VDb2RlIGdldFJlc3BvbnNlQ29kZShjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKIC8v
IGFuZCBjb252ZXJ0cyByZXNwb25zZSB0byBBdXRoZW50aWNhdG9yTWFrZUNyZWRlbnRpYWxSZXNw
b25zZSBvYmplY3Qgd2l0aAogLy8gQ0JPUiBtYXAga2V5cyB0aGF0IGNvbmZvcm0gdG8gZm9ybWF0
IG9mIGF0dGVzdGF0aW9uIG9iamVjdCBkZWZpbmVkIGJ5IHRoZQogLy8gV2ViQXV0aE4gc3BlYyA6
IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJhdXRobi8jZmlnLWF0dFN0cnVjdHMKLVdFQkNPUkVf
RVhQT1JUIFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4g
cmVhZENUQVBNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50LCBjb25zdCBXZWJDb3JlOjpBdHRlc3RhdGlv
bkNvbnZleWFuY2VQcmVmZXJlbmNlJiA9IFdlYkNvcmU6OkF0dGVzdGF0aW9uQ29udmV5YW5jZVBy
ZWZlcmVuY2U6OkRpcmVjdCk7CitXRUJDT1JFX0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6QXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25z
ZShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVu
dCwgVmVjdG9yPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+JiYsIGNvbnN0IFdlYkNv
cmU6OkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmID0gV2ViQ29yZTo6QXR0ZXN0YXRp
b25Db252ZXlhbmNlUHJlZmVyZW5jZTo6RGlyZWN0KTsKIAogLy8gRGUtc2VyaWFsaXplcyBDQk9S
IGVuY29kZWQgcmVzcG9uc2UgdG8gQXV0aGVudGljYXRvckdldEFzc2VydGlvbiAvCiAvLyBBdXRo
ZW50aWNhdG9yR2V0TmV4dEFzc2VydGlvbiByZXF1ZXN0IHRvIEF1dGhlbnRpY2F0b3JHZXRBc3Nl
cnRpb25SZXNwb25zZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHAKaW5kZXggYTRmZGUxNWZmYmZk
NTU1NzdiMjI5ZDg2NDljNjc2NDhjZTdlYjk2ZC4uMTc1ZDBlNWE1OTcyYjY5M2VlNzQwZDZhNWVm
N2Q3MjFiNDBmMGY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCkBAIC0xMzcsNyArMTM3
LDcgQEAgc3RhdGljIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUgY3JlYXRlRmlkb0F0dGVzdGF0
aW9uU3RhdGVtZW50RnJvbVUyZlJlZ2lzdGVyUmUKIAogfSAvLyBuYW1lc3BhY2UKIAotUmVmUHRy
PEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiByZWFkVTJmUmVnaXN0ZXJSZXNwb25z
ZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdTJmRGF0YSwgQXV0
aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgY29uc3QgQXR0ZXN0YXRpb25Db252ZXlh
bmNlUHJlZmVyZW5jZSYgYXR0ZXN0YXRpb24pCitSZWZQdHI8QXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2U+IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcnBJZCwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBh
dHRhY2htZW50LCBWZWN0b3I8QXV0aGVudGljYXRvclRyYW5zcG9ydD4mJiB0cmFuc3BvcnRzLCBj
b25zdCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlJiBhdHRlc3RhdGlvbikKIHsKICAg
ICBhdXRvIHB1YmxpY0tleSA9IGV4dHJhY3RFQ1B1YmxpY0tleUZyb21VMmZSZWdpc3RyYXRpb25S
ZXNwb25zZSh1MmZEYXRhKTsKICAgICBpZiAocHVibGljS2V5LmlzRW1wdHkoKSkKQEAgLTE2MCw3
ICsxNjAsNyBAQCBSZWZQdHI8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRV
MmZSZWdpc3RlclJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcgogCiAgICAgYXV0byBhdHRlc3RhdGlv
bk9iamVjdCA9IGJ1aWxkQXR0ZXN0YXRpb25PYmplY3QoV1RGTW92ZShhdXRoRGF0YSksICJmaWRv
LXUyZiJfcywgV1RGTW92ZShmaWRvQXR0ZXN0YXRpb25TdGF0ZW1lbnQpLCBhdHRlc3RhdGlvbik7
CiAKLSAgICByZXR1cm4gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShj
cmVkZW50aWFsSWQsIGF0dGVzdGF0aW9uT2JqZWN0LCBhdHRhY2htZW50KTsKKyAgICByZXR1cm4g
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF0
dGVzdGF0aW9uT2JqZWN0LCBhdHRhY2htZW50LCBXVEZNb3ZlKHRyYW5zcG9ydHMpKTsKIH0KIAog
UmVmUHRyPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gcmVhZFUyZlNpZ25SZXNwb25z
ZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFdlYkNvcmU6OkJ1ZmZlclNvdXJjZSYga2V5SGFu
ZGxlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEsIEF1dGhlbnRpY2F0b3JBdHRhY2ht
ZW50IGF0dGFjaG1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5oCmluZGV4IDU3ZDUzYzcxYzIxOTg4
MzRmZDk4ZGZiMjAzZGI3NzdmMWM0MzdiNjAuLjQxZDk2OWRjYjdlNjcxM2Q5OGU1M2U5MGRmOWI1
OTUyNTVhOTJiZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
Zmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5oCkBAIC00NCw3ICs0NCw3IEBAIG5h
bWVzcGFjZSBmaWRvIHsKIAogLy8gQ29udmVydHMgYSBVMkYgcmVnaXN0ZXIgcmVzcG9uc2UgdG8g
V2ViQXV0aE4gbWFrZUNyZWRlbnRpYWwgcmVzcG9uc2UuCiAvLyBodHRwczovL2ZpZG9hbGxpYW5j
ZS5vcmcvc3BlY3MvZmlkby12Mi4wLWlkLTIwMTgwMjI3L2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRp
Y2F0b3ItcHJvdG9jb2wtdjIuMC1pZC0yMDE4MDIyNy5odG1sI3UyZi1hdXRoZW50aWNhdG9yTWFr
ZUNyZWRlbnRpYWwtaW50ZXJvcGVyYWJpbGl0eQotV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiByZWFkVTJmUmVnaXN0ZXJSZXNw
b25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdTJmRGF0YSwg
V2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQsIGNvbnN0IFdlYkNvcmU6OkF0dGVzdGF0
aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmID0gV2ViQ29yZTo6QXR0ZXN0YXRpb25Db252ZXlhbmNl
UHJlZmVyZW5jZTo6RGlyZWN0KTsKK1dFQkNPUkVfRVhQT1JUIFJlZlB0cjxXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoY29u
c3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEsIFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50LCBWZWN0b3I8V2ViQ29yZTo6QXV0aGVudGljYXRvclRy
YW5zcG9ydD4mJiB0cmFuc3BvcnRzID0geyB9LCBjb25zdCBXZWJDb3JlOjpBdHRlc3RhdGlvbkNv
bnZleWFuY2VQcmVmZXJlbmNlJiA9IFdlYkNvcmU6OkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZl
cmVuY2U6OkRpcmVjdCk7CiAKIC8vIENvbnZlcnRzIGEgVTJGIGF1dGhlbnRpY2F0aW9uIHJlc3Bv
bnNlIHRvIFdlYkF1dGhOIGdldEFzc2VydGlvbiByZXNwb25zZS4KIC8vIGh0dHBzOi8vZmlkb2Fs
bGlhbmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtaWQtMjAxODAyMjcvZmlkby1jbGllbnQtdG8tYXV0
aGVudGljYXRvci1wcm90b2NvbC12Mi4wLWlkLTIwMTgwMjI3Lmh0bWwjdTJmLWF1dGhlbnRpY2F0
b3JHZXRBc3NlcnRpb24taW50ZXJvcGVyYWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3Jl
U1BJLmgKaW5kZXggMzkzOTU3Njc4NGY2MDQ0YThhN2IxYmRiMjJmNDQyNmUzYWJjYWU3Ni4uMDY4
YjY0ZmVhZjcyMWFmOWMxYzg1ZjQ0NWVmZDZjODc1ZDZlN2I4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9BdXRoZW50aWNhdGlvblNl
cnZpY2VzQ29yZVNQSS5oCkBAIC0yOTAsNiArMjkwLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50
ZWdlciwgQVNDcmVkZW50aWFsUmVxdWVzdFN0eWxlKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSwgcmVhZG9ubHkpIE5TU3RyaW5nICpyZWx5aW5nUGFydHlJZGVudGlmaWVyOwogQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHksIHJlYWRvbmx5KSBOU0RhdGEgKmF0dGVzdGF0aW9uT2JqZWN0
OwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHJlYWRvbmx5KSBOU0RhdGEgKnJhd0NsaWVu
dERhdGFKU09OOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TQXJyYXk8TlNOdW1iZXIg
Kj4gKnRyYW5zcG9ydHM7CiAKICsgKGluc3RhbmNldHlwZSluZXcgTlNfVU5BVkFJTEFCTEU7CiAt
IChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsKQEAgLTMwNCw2ICszMDUsNyBAQCB0
eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBBU0NyZWRlbnRpYWxSZXF1ZXN0U3R5bGUpIHsKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCByZWFkb25seSkgTlNEYXRhICpyYXdDbGllbnREYXRh
SlNPTjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCByZWFkb25seSkgTlNTdHJpbmcgKnJl
bHlpbmdQYXJ0eUlkZW50aWZpZXI7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgcmVhZG9u
bHkpIE5TRGF0YSAqYXR0ZXN0YXRpb25PYmplY3Q7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29w
eSkgTlNBcnJheTxOU051bWJlciAqPiAqdHJhbnNwb3J0czsKIAogQGVuZAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oCmluZGV4IDcyZDk0YzEyYTIxZmQ0ZjM4
MGIxODRhMDU3ZjIwMDUxYjVkM2MxMWMuLmU1ZjljZTFhZDdjOWU0MTI4YTAxMjNhNmM5MjY2MWVh
ZWZjNDY3YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5o
CkBAIC0zMyw2ICszMyw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1
LjApKQogQGludGVyZmFjZSBfV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSA6IF9X
S0F1dGhlbnRpY2F0b3JSZXNwb25zZQogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkp
IE5TRGF0YSAqYXR0ZXN0YXRpb25PYmplY3Q7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkg
TlNBcnJheTxOU051bWJlciAqPiAqdHJhbnNwb3J0czsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0
aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UubW0KaW5kZXggYmRjMGUzNWI5MjQ3ODk3OGRi
YjA0Zjg2MTc1NjkyNjgyNTNkYTY4ZC4uMDcxZDUyMmZhODM4N2YxODY5ZWUxZGU2NzY0OTBhN2U0
NjEyOTI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5t
bQpAQCAtMzIsMTIgKzMyLDEzIEBACiAKIEBpbXBsZW1lbnRhdGlvbiBfV0tBdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb25SZXNwb25zZQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnREYXRh
SlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4dGVu
c2lvbnM6KFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRz
PiYmKWV4dGVuc2lvbnMgYXR0ZXN0YXRpb25PYmplY3Q6KE5TRGF0YSAqKWF0dGVzdGF0aW9uT2Jq
ZWN0IGF0dGFjaG1lbnQ6KF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50KWF0dGFjaG1lbnQKKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aENsaWVudERhdGFKU09OOihOU0RhdGEgKiljbGllbnREYXRh
SlNPTiByYXdJZDooTlNEYXRhICopcmF3SWQgZXh0ZW5zaW9uczooUmV0YWluUHRyPF9XS0F1dGhl
bnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYpZXh0ZW5zaW9ucyBhdHRlc3RhdGlv
bk9iamVjdDooTlNEYXRhICopYXR0ZXN0YXRpb25PYmplY3QgYXR0YWNobWVudDooX1dLQXV0aGVu
dGljYXRvckF0dGFjaG1lbnQpYXR0YWNobWVudCB0cmFuc3BvcnRzOihOU0FycmF5PE5TTnVtYmVy
ICo+ICopdHJhbnNwb3J0cwogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhDbGll
bnREYXRhSlNPTjpjbGllbnREYXRhSlNPTiByYXdJZDpyYXdJZCBleHRlbnNpb25zOldURk1vdmUo
ZXh0ZW5zaW9ucykgYXR0YWNobWVudDphdHRhY2htZW50XSkpCiAgICAgICAgIHJldHVybiBuaWw7
CiAKICAgICBfYXR0ZXN0YXRpb25PYmplY3QgPSBhdHRlc3RhdGlvbk9iamVjdDsKKyAgICBfdHJh
bnNwb3J0cyA9IHRyYW5zcG9ydHM7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZUludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2VJbnRlcm5hbC5oCmluZGV4IGFh
ZmJmMGJkNDNmYzgwZTk0MTBkZTA4MjNiZjQxNThiZTdkYTZjYjkuLjVhZTBkOTA2MDZmMjBiMGVi
NTBjYTdiMDUwMmQyODJhYTQ2M2JjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZUludGVybmFs
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlSW50ZXJuYWwuaApAQCAtMzQsNyArMzQsNyBAQCBOU19BU1NV
TUVfTk9OTlVMTF9CRUdJTgogCiBAaW50ZXJmYWNlIF9XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlv
blJlc3BvbnNlICgpCiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aENsaWVudERhdGFKU09OOihO
U0RhdGEgKiljbGllbnREYXRhSlNPTiByYXdJZDooTlNEYXRhICopcmF3SWQgZXh0ZW5zaW9uczoo
UmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYpZXh0
ZW5zaW9ucyBhdHRlc3RhdGlvbk9iamVjdDooTlNEYXRhICopYXR0ZXN0YXRpb25PYmplY3QgYXR0
YWNobWVudDooX1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQpYXR0YWNobWVudDsKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aENsaWVudERhdGFKU09OOihOU0RhdGEgKiljbGllbnREYXRhSlNPTiBy
YXdJZDooTlNEYXRhICopcmF3SWQgZXh0ZW5zaW9uczooUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0
aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYpZXh0ZW5zaW9ucyBhdHRlc3RhdGlvbk9iamVj
dDooTlNEYXRhICopYXR0ZXN0YXRpb25PYmplY3QgYXR0YWNobWVudDooX1dLQXV0aGVudGljYXRv
ckF0dGFjaG1lbnQpYXR0YWNobWVudCB0cmFuc3BvcnRzOihOU0FycmF5PE5TTnVtYmVyICo+ICop
dHJhbnNwb3J0czsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IGFj
NjRlZjM0ZDZmZWU4MDNmOGY2YTg2ZjMyZjk4ODYwNjdlYzA0NGEuLmExOWY5Y2EzZDQ1Y2ZmYWJi
NDQyODkzODhmZDdmNzdjMzJmZjA2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBA
IC04NDgsOSArODQ4LDI4IEBAIHN0YXRpYyBfV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdXRo
ZW50aWNhdG9yQXR0YWNobWVudFRvV0tBdXRoZW50aWNhdG9yQXR0YWNoCiAgICAgfQogfQogCitz
dGF0aWMgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+
IHdrRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJl
c3BvbnNlRGF0YSYgZGF0YSkKK3sKKyAgICBSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRpb25FeHRl
bnNpb25zQ2xpZW50T3V0cHV0cz4gZXh0ZW5zaW9uczsKKyAgICBpZiAoZGF0YS5hcHBpZCkKKyAg
ICAgICAgZXh0ZW5zaW9ucyA9IGFkb3B0TlMoW1tfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnND
bGllbnRPdXRwdXRzIGFsbG9jXSBpbml0V2l0aEFwcGlkOmRhdGEuYXBwaWQudmFsdWUoKV0pOwor
ICAgIHJldHVybiBleHRlbnNpb25zOworfQorCitzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk8TlNO
dW1iZXIgKj4+IHdrVHJhbnNwb3J0cyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6QXV0aGVudGljYXRv
clRyYW5zcG9ydD4mIHRyYW5zcG9ydHMpCit7CisgICAgYXV0byB3a1RyYW5zcG9ydHMgPSBhZG9w
dE5TKFtOU011dGFibGVBcnJheTxOU051bWJlciAqPiBuZXddKTsKKyAgICBmb3IgKGF1dG8gdHJh
bnNwb3J0IDogdHJhbnNwb3J0cykKKyAgICAgICAgW3drVHJhbnNwb3J0cyBhZGRPYmplY3Q6W05T
TnVtYmVyIG51bWJlcldpdGhJbnQ6KGludCl0cmFuc3BvcnRdXTsKKyAgICByZXR1cm4gd2tUcmFu
c3BvcnRzOworfQorCisKIHN0YXRpYyBSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UoY29uc3QgV2Vi
Q29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSYgZGF0YSwgTlNEYXRhICpjbGllbnREYXRh
SlNPTiwgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCkKIHsKLSAg
ICByZXR1cm4gYWRvcHROUyhbW19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIGFs
bG9jXSBpbml0V2l0aENsaWVudERhdGFKU09OOmNsaWVudERhdGFKU09OIHJhd0lkOltOU0RhdGEg
ZGF0YVdpdGhCeXRlczpkYXRhLnJhd0lkLT5kYXRhKCkgbGVuZ3RoOmRhdGEucmF3SWQtPmJ5dGVM
ZW5ndGgoKV0gZXh0ZW5zaW9uczpuaWwgYXR0ZXN0YXRpb25PYmplY3Q6W05TRGF0YSBkYXRhV2l0
aEJ5dGVzOmRhdGEuYXR0ZXN0YXRpb25PYmplY3QtPmRhdGEoKSBsZW5ndGg6ZGF0YS5hdHRlc3Rh
dGlvbk9iamVjdC0+Ynl0ZUxlbmd0aCgpXSBhdHRhY2htZW50OiBhdXRoZW50aWNhdG9yQXR0YWNo
bWVudFRvV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudChhdHRhY2htZW50KV0pOworICAgIGF1dG8g
dmFsdWUgPSBhZG9wdE5TKFtbX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgYWxs
b2NdIGluaXRXaXRoQ2xpZW50RGF0YUpTT046Y2xpZW50RGF0YUpTT04gcmF3SWQ6W05TRGF0YSBk
YXRhV2l0aEJ5dGVzOmRhdGEucmF3SWQtPmRhdGEoKSBsZW5ndGg6ZGF0YS5yYXdJZC0+Ynl0ZUxl
bmd0aCgpXSBleHRlbnNpb25zOndrRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMoZGF0YSkgYXR0ZXN0
YXRpb25PYmplY3Q6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuYXR0ZXN0YXRpb25PYmplY3Qt
PmRhdGEoKSBsZW5ndGg6ZGF0YS5hdHRlc3RhdGlvbk9iamVjdC0+Ynl0ZUxlbmd0aCgpXSBhdHRh
Y2htZW50OiBhdXRoZW50aWNhdG9yQXR0YWNobWVudFRvV0tBdXRoZW50aWNhdG9yQXR0YWNobWVu
dChhdHRhY2htZW50KSB0cmFuc3BvcnRzOndrVHJhbnNwb3J0cyhkYXRhLnRyYW5zcG9ydHMpLmF1
dG9yZWxlYXNlKCldKTsKKyAgICAKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAjZW5kaWYKIApAQCAt
OTExLDE1ICs5MzAsMTEgQEAgc3RhdGljIFJldGFpblB0cjxfV0tBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZT4gd2tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb24KICNpZiBFTkFCTEUoV0VC
X0FVVEhOKQogc3RhdGljIFJldGFpblB0cjxfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2U+IHdrQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JSZXNwb25zZURhdGEmIGRhdGEsIE5TRGF0YSAqY2xpZW50RGF0YUpTT04sIFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpCiB7Ci0gICAgUmV0YWluUHRy
PF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+IGV4dGVuc2lvbnM7Ci0g
ICAgaWYgKGRhdGEuYXBwaWQpCi0gICAgICAgIGV4dGVuc2lvbnMgPSBhZG9wdE5TKFtbX1dLQXV0
aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cyBhbGxvY10gaW5pdFdpdGhBcHBpZDpk
YXRhLmFwcGlkLnZhbHVlKCldKTsKLQogICAgIE5TRGF0YSAqdXNlckhhbmRsZSA9IG5pbDsKICAg
ICBpZiAoZGF0YS51c2VySGFuZGxlKQogICAgICAgICB1c2VySGFuZGxlID0gW05TRGF0YSBkYXRh
V2l0aEJ5dGVzOmRhdGEudXNlckhhbmRsZS0+ZGF0YSgpIGxlbmd0aDpkYXRhLnVzZXJIYW5kbGUt
PmJ5dGVMZW5ndGgoKV07CiAKLSAgICByZXR1cm4gYWRvcHROUyhbW19XS0F1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZSBhbGxvY10gaW5pdFdpdGhDbGllbnREYXRhSlNPTjpjbGllbnREYXRh
SlNPTiByYXdJZDpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5yYXdJZC0+ZGF0YSgpIGxlbmd0
aDpkYXRhLnJhd0lkLT5ieXRlTGVuZ3RoKCldIGV4dGVuc2lvbnM6V1RGTW92ZShleHRlbnNpb25z
KSBhdXRoZW50aWNhdG9yRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5hdXRoZW50aWNh
dG9yRGF0YS0+ZGF0YSgpIGxlbmd0aDpkYXRhLmF1dGhlbnRpY2F0b3JEYXRhLT5ieXRlTGVuZ3Ro
KCldIHNpZ25hdHVyZTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5zaWduYXR1cmUtPmRhdGEo
KSBsZW5ndGg6ZGF0YS5zaWduYXR1cmUtPmJ5dGVMZW5ndGgoKV0gdXNlckhhbmRsZTp1c2VySGFu
ZGxlIGF0dGFjaG1lbnQ6YXV0aGVudGljYXRvckF0dGFjaG1lbnRUb1dLQXV0aGVudGljYXRvckF0
dGFjaG1lbnQoYXR0YWNobWVudCldKTsKKyAgICByZXR1cm4gYWRvcHROUyhbW19XS0F1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZSBhbGxvY10gaW5pdFdpdGhDbGllbnREYXRhSlNPTjpjbGll
bnREYXRhSlNPTiByYXdJZDpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5yYXdJZC0+ZGF0YSgp
IGxlbmd0aDpkYXRhLnJhd0lkLT5ieXRlTGVuZ3RoKCldIGV4dGVuc2lvbnM6d2tFeHRlbnNpb25z
Q2xpZW50T3V0cHV0cyhkYXRhKSBhdXRoZW50aWNhdG9yRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6ZGF0YS5hdXRoZW50aWNhdG9yRGF0YS0+ZGF0YSgpIGxlbmd0aDpkYXRhLmF1dGhlbnRpY2F0
b3JEYXRhLT5ieXRlTGVuZ3RoKCldIHNpZ25hdHVyZTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0
YS5zaWduYXR1cmUtPmRhdGEoKSBsZW5ndGg6ZGF0YS5zaWduYXR1cmUtPmJ5dGVMZW5ndGgoKV0g
dXNlckhhbmRsZTp1c2VySGFuZGxlIGF0dGFjaG1lbnQ6YXV0aGVudGljYXRvckF0dGFjaG1lbnRU
b1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQoYXR0YWNobWVudCldKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KaW5kZXggZTY5ZGJkYWU1MDE4
ZjA4NGI0YjFjZmQ1OWY5ZjZiZDFmZGRmZTc0My4uMjZiNGIyMGY2NmZhZTJmOTA3ZGUxMmE4NTBh
ODEyZmZlYjY5MjJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5t
bQpAQCAtNDksNyArNDksNiBAQAogI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5o
PgogI2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+Ci0KICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogI2ltcG9ydCA8V2ViS2l0QWRk
aXRpb25zL0xvY2FsQXV0aGVudGljYXRvckFkZGl0aW9ucy5oPgogI2Vsc2UKQEAgLTYwLDcgKzU5
LDEyIEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGdyb3VwRm9yQXR0cmlidXRlcyhOU0RpY3Rpb25h
cnkgKmF0dHJpYnV0ZXMpCiB7CiAgICAgcmV0dXJuIG51bGxTdHJpbmcoKTsKIH0KK3N0YXRpYyBi
b29sIHNob3VsZFVwZGF0ZVF1ZXJ5KCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CiAjZW5kaWYK
KyNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU29mdExpbmsuaCIKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgZmlkbzsKQEAgLTE4MSw2ICsxODUsMTQgQEAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2U+Pj4gZ2V0RXhpc3RpbmdDcmUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMg
VmVjdG9yPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+IHRyYW5zcG9ydHMoKQoreworICAgIFZlY3Rv
cjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiB0cmFuc3BvcnRzID0geyBXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCB9OworICAgIGlmIChzaG91bGRVcGRh
dGVRdWVyeSgpKQorICAgICAgICB0cmFuc3BvcnRzLmFwcGVuZChXZWJDb3JlOjpBdXRoZW50aWNh
dG9yVHJhbnNwb3J0OjpDYWJsZSk7CisgICAgcmV0dXJuIHRyYW5zcG9ydHM7Cit9CisKIH0gLy8g
TG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWwKIAogdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNs
ZWFyQWxsQ3JlZGVudGlhbHMoKQpAQCAtNDQ2LDcgKzQ1OCw3IEBAIHZvaWQgTG9jYWxBdXRoZW50
aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKFNlY0Fj
Y2Vzc0NvCiAKICAgICAgICAgYXV0byBhdXRoRGF0YSA9IGJ1aWxkQXV0aERhdGEoY3JlYXRpb25P
cHRpb25zLnJwLmlkLCBmbGFncywgY291bnRlciwgYnVpbGRBdHRlc3RlZENyZWRlbnRpYWxEYXRh
KFZlY3Rvcjx1aW50OF90PihhYWd1aWRMZW5ndGgsIDApLCBjcmVkZW50aWFsSWQsIGNvc2VQdWJs
aWNLZXkpKTsKICAgICAgICAgYXV0byBhdHRlc3RhdGlvbk9iamVjdCA9IGJ1aWxkQXR0ZXN0YXRp
b25PYmplY3QoV1RGTW92ZShhdXRoRGF0YSksIFN0cmluZyB7IGVtcHR5U3RyaW5nKCkgfSwgeyB9
LCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpOb25lKTsKLSAgICAgICAgcmVjZWl2
ZVJlc3BvbmQoQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50
aWFsSWQsIGF0dGVzdGF0aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6UGxhdGZv
cm0pKTsKKyAgICAgICAgcmVjZWl2ZVJlc3BvbmQoQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF0dGVzdGF0aW9uT2JqZWN0LCBBdXRoZW50aWNh
dG9yQXR0YWNobWVudDo6UGxhdGZvcm0sIHRyYW5zcG9ydHMoKSkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC00NzMsNyArNDg1LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNv
bnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKFZlY3Rvcjx1aW50OF90PiYmIGMKICAg
ICBpZiAoZXJyb3IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBhdHRlc3Q6ICVzIiwg
U3RyaW5nKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKS51dGY4KCkuZGF0YSgpKTsKICAgICAg
ICAgYXV0byBhdHRlc3RhdGlvbk9iamVjdCA9IGJ1aWxkQXR0ZXN0YXRpb25PYmplY3QoV1RGTW92
ZShhdXRoRGF0YSksIFN0cmluZyB7IGVtcHR5U3RyaW5nKCkgfSwgeyB9LCBBdHRlc3RhdGlvbkNv
bnZleWFuY2VQcmVmZXJlbmNlOjpOb25lKTsKLSAgICAgICAgcmVjZWl2ZVJlc3BvbmQoQXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF0dGVzdGF0
aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6UGxhdGZvcm0pKTsKKyAgICAgICAg
cmVjZWl2ZVJlc3BvbmQoQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShj
cmVkZW50aWFsSWQsIGF0dGVzdGF0aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6
UGxhdGZvcm0sIHRyYW5zcG9ydHMoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8v
IEF0dGVzdGF0aW9uIENlcnRpZmljYXRlIGFuZCBBdHRlc3RhdGlvbiBJc3N1aW5nIENBCkBAIC00
OTIsNyArNTA0LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRl
bnRpYWxBZnRlckF0dGVzdGVkKFZlY3Rvcjx1aW50OF90PiYmIGMKICAgICBhdXRvIGF0dGVzdGF0
aW9uT2JqZWN0ID0gYnVpbGRBdHRlc3RhdGlvbk9iamVjdChXVEZNb3ZlKGF1dGhEYXRhKSwgImFw
cGxlIl9zLCBXVEZNb3ZlKGF0dGVzdGF0aW9uU3RhdGVtZW50TWFwKSwgY3JlYXRpb25PcHRpb25z
LmF0dGVzdGF0aW9uKTsKIAogICAgIGRlbGV0ZUR1cGxpY2F0ZUNyZWRlbnRpYWwoKTsKLSAgICBy
ZWNlaXZlUmVzcG9uZChBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKGNy
ZWRlbnRpYWxJZCwgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpQ
bGF0Zm9ybSkpOworICAgIHJlY2VpdmVSZXNwb25kKEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9iamVjdCwgQXV0aGVudGlj
YXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtLCB0cmFuc3BvcnRzKCkpKTsKIH0KIAogdm9pZCBMb2Nh
bEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1tCmluZGV4IGY2N2NlNDA0
MzE1ZWQ2MjhlZjFmODJlNDEzNTJiMWE1YTg2YzEwNzIuLjcxMGFkMzkyMGNlN2U1YzA1ZmE3MWNj
MDA0NzdkNDQ2M2FmMGUyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1tCkBAIC0xNTQsNiArMTU0LDkgQEAgc3Rh
dGljIGlubGluZSBSZXRhaW5QdHI8QVNDUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3I+IHRv
QVNDRGVzY3JpcHRvcihQdWJsaWMKICAgICAgICAgICAgIGNhc2UgQXV0aGVudGljYXRvclRyYW5z
cG9ydDo6SW50ZXJuYWw6CiAgICAgICAgICAgICAgICAgdHJhbnNwb3J0U3RyaW5nID0gQCJpbnRl
cm5hbCI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF1dGhlbnRp
Y2F0b3JUcmFuc3BvcnQ6OkNhYmxlOgorICAgICAgICAgICAgICAgIHRyYW5zcG9ydFN0cmluZyA9
IEAiY2FibGUiOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBpZiAodHJhbnNwb3J0U3RyaW5nKQpAQCAtMzM3LDYgKzM0MCwxNCBAQCBzdGF0aWMg
UmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dD4gY29uZmlndXJhdGlvbkFzc2Vy
dGlvblJlcXVlc3RDb250ZQogICAgIHJldHVybiByZXF1ZXN0Q29udGV4dDsKIH0KIAorc3RhdGlj
IFZlY3RvcjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiB0b0F1dGhlbnRpY2F0b3JU
cmFuc3BvcnRzKE5TQXJyYXk8TlNOdW1iZXIgKj4gKmFzY1RyYW5zcG9ydHMpCit7CisgICAgVmVj
dG9yPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+IHRyYW5zcG9ydHM7CisgICAgZm9y
IChOU051bWJlciAqYXNjVHJhbnNwb3J0IDogYXNjVHJhbnNwb3J0cykKKyAgICAgICAgdHJhbnNw
b3J0cy5hcHBlbmQoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydD4o
YXNjVHJhbnNwb3J0LmludFZhbHVlKSk7CisgICAgcmV0dXJuIHRyYW5zcG9ydHM7Cit9CisKIFJl
dGFpblB0cjxBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHQ+IFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5Ojpjb250ZXh0Rm9yUmVxdWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3RE
YXRhJiYgcmVxdWVzdERhdGEpCiB7CiAgICAgUmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXF1ZXN0
Q29udGV4dD4gcmVzdWx0OwpAQCAtMzYxLDYgKzM3Miw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBj
b250aW51ZUFmdGVyUmVxdWVzdChSZXRhaW5QdHI8aWQgPEFTQ0NyZWRlbnRpYWxQcm90b2NvbD4+
IGNyCiAgICAgICAgIEFTQ1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbFJlZ2lzdHJhdGlvbiAq
cmVnaXN0cmF0aW9uQ3JlZGVudGlhbCA9IGNyZWRlbnRpYWwuZ2V0KCk7CiAgICAgICAgIHJlc3Bv
bnNlLnJhd0lkID0gdG9BcnJheUJ1ZmZlcihyZWdpc3RyYXRpb25DcmVkZW50aWFsLmNyZWRlbnRp
YWxJRCk7CiAgICAgICAgIHJlc3BvbnNlLmF0dGVzdGF0aW9uT2JqZWN0ID0gdG9BcnJheUJ1ZmZl
cihyZWdpc3RyYXRpb25DcmVkZW50aWFsLmF0dGVzdGF0aW9uT2JqZWN0KTsKKyAgICAgICAgaWYg
KFtyZWdpc3RyYXRpb25DcmVkZW50aWFsIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IodHJh
bnNwb3J0cyldKQorICAgICAgICAgICAgcmVzcG9uc2UudHJhbnNwb3J0cyA9IHRvQXV0aGVudGlj
YXRvclRyYW5zcG9ydHMocmVnaXN0cmF0aW9uQ3JlZGVudGlhbC50cmFuc3BvcnRzKTsKICAgICB9
IGVsc2UgaWYgKFtjcmVkZW50aWFsIGlzS2luZE9mQ2xhc3M6Z2V0QVNDU2VjdXJpdHlLZXlQdWJs
aWNLZXlDcmVkZW50aWFsUmVnaXN0cmF0aW9uQ2xhc3MoKV0pIHsKICAgICAgICAgYXR0YWNobWVu
dCA9IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtOwogICAgICAgICByZXNw
b25zZS5pc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlID0gdHJ1ZTsKQEAgLTM2OCw2
ICszODEsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY29udGludWVBZnRlclJlcXVlc3QoUmV0YWlu
UHRyPGlkIDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+PiBjcgogICAgICAgICBBU0NTZWN1cml0eUtl
eVB1YmxpY0tleUNyZWRlbnRpYWxSZWdpc3RyYXRpb24gKnJlZ2lzdHJhdGlvbkNyZWRlbnRpYWwg
PSBjcmVkZW50aWFsLmdldCgpOwogICAgICAgICByZXNwb25zZS5yYXdJZCA9IHRvQXJyYXlCdWZm
ZXIocmVnaXN0cmF0aW9uQ3JlZGVudGlhbC5jcmVkZW50aWFsSUQpOwogICAgICAgICByZXNwb25z
ZS5hdHRlc3RhdGlvbk9iamVjdCA9IHRvQXJyYXlCdWZmZXIocmVnaXN0cmF0aW9uQ3JlZGVudGlh
bC5hdHRlc3RhdGlvbk9iamVjdCk7CisgICAgICAgIGlmIChbcmVnaXN0cmF0aW9uQ3JlZGVudGlh
bCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHRyYW5zcG9ydHMpXSkKKyAgICAgICAgICAg
IHJlc3BvbnNlLnRyYW5zcG9ydHMgPSB0b0F1dGhlbnRpY2F0b3JUcmFuc3BvcnRzKHJlZ2lzdHJh
dGlvbkNyZWRlbnRpYWwudHJhbnNwb3J0cyk7CiAgICAgfSBlbHNlIGlmIChbY3JlZGVudGlhbCBp
c0tpbmRPZkNsYXNzOmdldEFTQ1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbEFzc2VydGlvbkNs
YXNzKCldKSB7CiAgICAgICAgIGF0dGFjaG1lbnQgPSBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6
UGxhdGZvcm07CiAgICAgICAgIHJlc3BvbnNlLmlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2UgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKaW5k
ZXggNDY5ZTAzM2I3MWY0NGVjYmMyMDMwYWQ2ZmU4ZjdiZmIzYTE0NzgwNS4uZjQ4Y2RkZjM4Mjc4
NmI4M2E2MmVkYTJjYjQyNTgwNTBmZTE3ODNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0
aGVudGljYXRvci5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIEN0YXBBdXRoZW50aWNhdG9y
OjptYWtlQ3JlZGVudGlhbCgpCiAKIHZvaWQgQ3RhcEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFr
ZUNyZWRlbnRpYWxBZnRlclJlc3BvbnNlUmVjZWl2ZWQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkK
IHsKLSAgICBhdXRvIHJlc3BvbnNlID0gcmVhZENUQVBNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKGRh
dGEsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtLCBzdGQ6OmdldDxQdWJs
aWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpLmF0
dGVzdGF0aW9uKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZENUQVBNYWtlQ3JlZGVudGlhbFJl
c3BvbnNlKGRhdGEsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtLCB0cmFu
c3BvcnRzKCksIHN0ZDo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJl
cXVlc3REYXRhKCkub3B0aW9ucykuYXR0ZXN0YXRpb24pOwogICAgIGlmICghcmVzcG9uc2UpIHsK
ICAgICAgICAgYXV0byBlcnJvciA9IGdldFJlc3BvbnNlQ29kZShkYXRhKTsKIApAQCAtMzg0LDYg
KzM4NCwxNCBAQCBib29sIEN0YXBBdXRoZW50aWNhdG9yOjpwcm9jZXNzR29vZ2xlTGVnYWN5QXBw
SWRTdXBwb3J0RXh0ZW5zaW9uKCkKICAgICByZXR1cm4gZXh0ZW5zaW9ucy0+Z29vZ2xlTGVnYWN5
QXBwaWRTdXBwb3J0OwogfQogCitWZWN0b3I8QXV0aGVudGljYXRvclRyYW5zcG9ydD4gQ3RhcEF1
dGhlbnRpY2F0b3I6OnRyYW5zcG9ydHMoKQoreworICAgIGF1dG8gaW5mb1RyYW5zcG9ydHMgPSBt
X2luZm8udHJhbnNwb3J0cygpOworICAgIGlmIChpbmZvVHJhbnNwb3J0cykKKyAgICAgICAgcmV0
dXJuICppbmZvVHJhbnNwb3J0czsKKyAgICByZXR1cm4gVmVjdG9yIHsgZHJpdmVyKCkudHJhbnNw
b3J0KCkgfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUo
V0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5oCmluZGV4IDkxNTA1
YzA3ZGU2NTNhMDgwN2JjYWI3MGQ2NzAyMmY0NGMyY2I0OTcuLjJmYWIwMzdmMWQ3MGMyYTFmOGQ0
M2Y5YWYzNDlkMzBmZDI3ZTIyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9y
LmgKQEAgLTcwLDYgKzcwLDggQEAgcHJpdmF0ZToKICAgICBib29sIHRyeURvd25ncmFkZSgpOwog
ICAgIGJvb2wgcHJvY2Vzc0dvb2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4dGVuc2lvbigpOwogCisg
ICAgVmVjdG9yPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+IHRyYW5zcG9ydHMoKTsK
KwogICAgIGZpZG86OkF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UgbV9pbmZvOwogICAgIGJv
b2wgbV9pc0Rvd25ncmFkZWQgeyBmYWxzZSB9OwogICAgIHNpemVfdCBtX3JlbWFpbmluZ0Fzc2Vy
dGlvblJlc3BvbnNlcyB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcERyaXZlci5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwRHJpdmVyLmgKaW5kZXggN2E0MjBmZTFj
ZWMyMThiOTA2NmU2MzAzNmVmYmJjNjNhNDE3YjEwNS4uYWY0YWM4MzhlZGMzZGNkNzYyMWFjMzg4
NWQyZWYxYTM4N2MxNzhlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vZmlkby9DdGFwRHJpdmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwRHJpdmVyLmgKQEAgLTI3LDYgKzI3LDcg
QEAKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRp
Y2F0b3JUcmFuc3BvcnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpZG9Db25zdGFudHMuaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgpAQCAtNDUs
MTUgKzQ2LDE4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0UHJvdG9jb2woZmlkbzo6UHJvdG9j
b2xWZXJzaW9uIHByb3RvY29sKSB7IG1fcHJvdG9jb2wgPSBwcm90b2NvbDsgfQogCisgICAgV2Vi
Q29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydCB0cmFuc3BvcnQoKSBjb25zdCB7IHJldHVybiBt
X3RyYW5zcG9ydDsgfQorICAgIGZpZG86OlByb3RvY29sVmVyc2lvbiBwcm90b2NvbCgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJvdG9jb2w7IH0KKwogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2FjdChWZWN0
b3I8dWludDhfdD4mJiBkYXRhLCBSZXNwb25zZUNhbGxiYWNrJiYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgY2FuY2VsKCkgeyB9OwogCiBwcm90ZWN0ZWQ6Ci0gICAgQ3RhcERyaXZlcigpID0gZGVm
YXVsdDsKLSAgICBmaWRvOjpQcm90b2NvbFZlcnNpb24gcHJvdG9jb2woKSBjb25zdCB7IHJldHVy
biBtX3Byb3RvY29sOyB9CisgICAgQ3RhcERyaXZlcihXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJh
bnNwb3J0IHRyYW5zcG9ydCkgeyBtX3RyYW5zcG9ydCA9IHRyYW5zcG9ydDsgfQogCiBwcml2YXRl
OgogICAgIGZpZG86OlByb3RvY29sVmVyc2lvbiBtX3Byb3RvY29sIHsgZmlkbzo6UHJvdG9jb2xW
ZXJzaW9uOjprQ3RhcCB9OworICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQgbV90
cmFuc3BvcnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBI
aWREcml2ZXIuY3BwCmluZGV4IDNkNmVhNDRjYjlkNTYzZTlmNzg3YjlmNmIwNzk3NWIxYzFjNmUy
ZjQuLjFiZTMzZDBlN2I3ODgwM2FhMmViMWUyMzk2MjAyMDA3ZDY5ODJmMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERy
aXZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Zmlkby9DdGFwSGlkRHJpdmVyLmNwcApAQCAtMTU3LDcgKzE1Nyw4IEBAIHZvaWQgQ3RhcEhpZERy
aXZlcjo6V29ya2VyOjpjYW5jZWwoZmlkbzo6Rmlkb0hpZE1lc3NhZ2UmJiByZXF1ZXN0TWVzc2Fn
ZSkKIH0KIAogQ3RhcEhpZERyaXZlcjo6Q3RhcEhpZERyaXZlcihVbmlxdWVSZWY8SGlkQ29ubmVj
dGlvbj4mJiBjb25uZWN0aW9uKQotICAgIDogbV93b3JrZXIobWFrZVVuaXF1ZVJlZjxXb3JrZXI+
KFdURk1vdmUoY29ubmVjdGlvbikpKQorICAgIDogQ3RhcERyaXZlcihXZWJDb3JlOjpBdXRoZW50
aWNhdG9yVHJhbnNwb3J0OjpVc2IpCisgICAgLCBtX3dvcmtlcihtYWtlVW5pcXVlUmVmPFdvcmtl
cj4oV1RGTW92ZShjb25uZWN0aW9uKSkpCiAgICAgLCBtX25vbmNlKGtIaWRJbml0Tm9uY2VMZW5n
dGgpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9maWRvL0N0YXBOZmNEcml2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwTmZjRHJpdmVyLmNwcAppbmRleCA0YTljYWYyMDMw
Zjc2NjczMjhjODBjNWNhOWIzMjA1ZDI0YWU1NGI0Li42ODBjMTgzOWVkNmYwMGM0NjMxMmFlZDRm
ZGIzZGY4ZGEwZDdkZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9maWRvL0N0YXBOZmNEcml2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcE5mY0RyaXZlci5jcHAKQEAgLTM3
LDcgKzM3LDggQEAgdXNpbmcgbmFtZXNwYWNlIGFwZHU7CiB1c2luZyBuYW1lc3BhY2UgZmlkbzsK
IAogQ3RhcE5mY0RyaXZlcjo6Q3RhcE5mY0RyaXZlcihSZWY8TmZjQ29ubmVjdGlvbj4mJiBjb25u
ZWN0aW9uKQotICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCisgICAgOiBD
dGFwRHJpdmVyKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6Ok5mYykKKyAgICAsIG1fY29ubmVjdGlv
bihXVEZNb3ZlKGNvbm5lY3Rpb24pKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50
aWNhdG9yLmNwcAppbmRleCAwNDk4YmQwMWQwZTE1NDIwNTY5YmEwM2E5NmE0OTJkNmEwYzkyMjZj
Li5lMjZlYzZmNDYyOTAwYjhmYmFmZGY0ZjlmM2Q3NjQ4YjBmNWM0ZmZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRp
Y2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIFUyZkF1
dGhlbnRpY2F0b3I6OmNvbnRpbnVlUmVnaXN0ZXJDb21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVk
KEFwZHVSZXNwb25zZQogICAgIGNhc2UgQXBkdVJlc3BvbnNlOjpTdGF0dXM6OlNXX05PX0VSUk9S
OiB7CiAgICAgICAgIGF1dG8mIG9wdGlvbnMgPSBzdGQ6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpOwogICAgICAgICBhdXRvIGFw
cElkID0gcHJvY2Vzc0dvb2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4dGVuc2lvbihvcHRpb25zLmV4
dGVuc2lvbnMpOwotICAgICAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9u
c2UoIWFwcElkID8gb3B0aW9ucy5ycC5pZCA6IGFwcElkLCBhcGR1UmVzcG9uc2UuZGF0YSgpLCBB
dXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSwgb3B0aW9ucy5hdHRlc3RhdGlv
bik7CisgICAgICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZSghYXBw
SWQgPyBvcHRpb25zLnJwLmlkIDogYXBwSWQsIGFwZHVSZXNwb25zZS5kYXRhKCksIEF1dGhlbnRp
Y2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtLCB7IGRyaXZlcigpLnRyYW5zcG9ydCgpIH0s
IG9wdGlvbnMuYXR0ZXN0YXRpb24pOwogICAgICAgICBpZiAoIXJlc3BvbnNlKSB7CiAgICAgICAg
ICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAiQ291bGRu
J3QgcGFyc2UgdGhlIFUyRiByZWdpc3RlciByZXNwb25zZS4iX3MgfSk7CiAgICAgICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggNzViZGM5MmUyNzI4YzQ1NGFhZTM3NmU2MzE1ZTYwNWYyZWRhMWMwOS4uOWU1YzZkYTA4ODYy
OGY3MjJkYWEyMGFmMTMzMzkwODk3MDI0NDRiOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIyLTA0LTExICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVu
dCBnZXRUcmFuc3BvcnRzKCkgYW5kIGdldEF1dGhlbnRpY2F0b3JEYXRhKCkgb24gQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzg5NjYKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vOTE0NDk5MDYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9uc2VUZXN0LmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9GaWRvVGVzdERhdGEuaDoKKwogMjAyMi0wNC0xMSAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVz
Z18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgVGVzdFJ1bm5lcuKAmXMgY2FsbHMgdG8gW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50
Ol0gbmVlZCB0byBiZSBkaXNwYXRjaCB0byB0aGUgQVggc2Vjb25kYXJ5IHRocmVhZC4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9uc2VUZXN0
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9uc2VUZXN0
LmNwcAppbmRleCA5ZTFiMWIxMzQ5MTQ1YTAwNzQzYmRiMzg5MmMzMGYyMjBiZDQ0YTllLi40NTEx
MWIwNmE0Y2JhMjczYTg5YWFmNWQ4NjFiNjY0OWE0MDFiZjM5IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlc3BvbnNlVGVzdC5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBSZXNwb25zZVRlc3QuY3BwCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRmlkb1Rlc3REYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JB
dHRhY2htZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdG9yVHJhbnNwb3J0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9CdWZmZXJTb3VyY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NC
T1JSZWFkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NCT1JWYWx1ZS5oPgpAQCAtMzUzLDkgKzM1
NCw5IEBAIFZlY3Rvcjx1aW50OF90PiBnZXRUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZShzaXplX3Qg
cHJlZml4U2l6ZSwgY29uc3QgdWludDhfdCBhcHBlCiAvLyBodHRwczovL2ZpZG9hbGxpYW5jZS5v
cmcvc3BlY3MvZmlkby12Mi4wLXBzLTIwMTcwOTI3L2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0
b3ItcHJvdG9jb2wtdjIuMC1wcy0yMDE3MDkyNy5odG1sI2NvbW1hbmRzCiBURVNUKENUQVBSZXNw
b25zZVRlc3QsIFRlc3RSZWFkTWFrZUNyZWRlbnRpYWxSZXNwb25zZSkKIHsKLSAgICBhdXRvIG1h
a2VDcmVkZW50aWFsUmVzcG9uc2UgPSByZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVzcG9uc2UoY29u
dmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtUZXN0TWFrZUNyZWRlbnRpYWxSZXNwb25zZSwg
c2l6ZW9mKFRlc3REYXRhOjprVGVzdE1ha2VDcmVkZW50aWFsUmVzcG9uc2UpKSwgQXV0aGVudGlj
YXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0pOworICAgIGF1dG8gbWFrZUNyZWRlbnRpYWxS
ZXNwb25zZSA9IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZShjb252ZXJ0Qnl0ZXNUb1Zl
Y3RvcihUZXN0RGF0YTo6a1Rlc3RNYWtlQ3JlZGVudGlhbFJlc3BvbnNlLCBzaXplb2YoVGVzdERh
dGE6OmtUZXN0TWFrZUNyZWRlbnRpYWxSZXNwb25zZSkpLCBBdXRoZW50aWNhdG9yQXR0YWNobWVu
dDo6Q3Jvc3NQbGF0Zm9ybSwgeyB9KTsKICAgICBBU1NFUlRfVFJVRShtYWtlQ3JlZGVudGlhbFJl
c3BvbnNlKTsKLSAgICBhdXRvIGNib3JBdHRlc3RhdGlvbk9iamVjdCA9IGNib3I6OkNCT1JSZWFk
ZXI6OnJlYWQoY29udmVydEJ5dGVzVG9WZWN0b3IocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o
bWFrZUNyZWRlbnRpYWxSZXNwb25zZS0+YXR0ZXN0YXRpb25PYmplY3QoKS0+ZGF0YSgpKSwgbWFr
ZUNyZWRlbnRpYWxSZXNwb25zZS0+YXR0ZXN0YXRpb25PYmplY3QoKS0+Ynl0ZUxlbmd0aCgpKSk7
CisgICAgYXV0byBjYm9yQXR0ZXN0YXRpb25PYmplY3QgPSBjYm9yOjpDQk9SUmVhZGVyOjpyZWFk
KGNvbnZlcnRBcnJheUJ1ZmZlclRvVmVjdG9yKG1ha2VDcmVkZW50aWFsUmVzcG9uc2UtPmF0dGVz
dGF0aW9uT2JqZWN0KCkpKTsKICAgICBBU1NFUlRfVFJVRShjYm9yQXR0ZXN0YXRpb25PYmplY3Qp
OwogICAgIEFTU0VSVF9UUlVFKGNib3JBdHRlc3RhdGlvbk9iamVjdC0+aXNNYXAoKSk7CiAKQEAg
LTYxMCw2ICs2MTEsMjQgQEAgVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UmVhZEdldEluZm9S
ZXNwb25zZTIpCiAgICAgRVhQRUNUX0VRKEF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zOjpD
bGllbnRQaW5BdmFpbGFiaWxpdHk6OmtTdXBwb3J0ZWRCdXRQaW5Ob3RTZXQsIGdldEluZm9SZXNw
b25zZS0+b3B0aW9ucygpLmNsaWVudFBpbkF2YWlsYWJpbGl0eSgpKTsKIH0KIAorVEVTVChDVEFQ
UmVzcG9uc2VUZXN0LCBUZXN0UmVhZEdldEluZm9SZXNwb25zZURldmljZVl1YmlrZXk1YykKK3sK
KyAgICBhdXRvIGdldEluZm9SZXNwb25zZSA9IHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKGNvbnZl
cnRCeXRlc1RvVmVjdG9yKFRlc3REYXRhOjprVGVzdEdldEluZm9SZXNwb25zZURldmljZVl1Ymlr
ZXk1Yywgc2l6ZW9mKFRlc3REYXRhOjprVGVzdEdldEluZm9SZXNwb25zZURldmljZVl1YmlrZXk1
YykpKTsKKyAgICBBU1NFUlRfVFJVRShnZXRJbmZvUmVzcG9uc2UpOworICAgIEFTU0VSVF9UUlVF
KGdldEluZm9SZXNwb25zZS0+bWF4TXNnU2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoKmdldEluZm9S
ZXNwb25zZS0+bWF4TXNnU2l6ZSgpLCAxMjAwdSk7CisgICAgRVhQRUNUX05FKGdldEluZm9SZXNw
b25zZS0+dmVyc2lvbnMoKS5maW5kKFByb3RvY29sVmVyc2lvbjo6a0N0YXApLCBnZXRJbmZvUmVz
cG9uc2UtPnZlcnNpb25zKCkuZW5kKCkpOworICAgIEVYUEVDVF9ORShnZXRJbmZvUmVzcG9uc2Ut
PnZlcnNpb25zKCkuZmluZChQcm90b2NvbFZlcnNpb246OmtVMmYpLCBnZXRJbmZvUmVzcG9uc2Ut
PnZlcnNpb25zKCkuZW5kKCkpOworICAgIEVYUEVDVF9GQUxTRShnZXRJbmZvUmVzcG9uc2UtPm9w
dGlvbnMoKS5pc1BsYXRmb3JtRGV2aWNlKCkpOworICAgIEVYUEVDVF9FUShBdXRoZW50aWNhdG9y
U3VwcG9ydGVkT3B0aW9uczo6UmVzaWRlbnRLZXlBdmFpbGFiaWxpdHk6OmtTdXBwb3J0ZWQsIGdl
dEluZm9SZXNwb25zZS0+b3B0aW9ucygpLnJlc2lkZW50S2V5QXZhaWxhYmlsaXR5KCkpOworICAg
IEVYUEVDVF9UUlVFKGdldEluZm9SZXNwb25zZS0+b3B0aW9ucygpLnVzZXJQcmVzZW5jZVJlcXVp
cmVkKCkpOworICAgIEVYUEVDVF9FUShBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9uczo6VXNl
clZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eTo6a05vdFN1cHBvcnRlZCwgZ2V0SW5mb1Jlc3BvbnNl
LT5vcHRpb25zKCkudXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eSgpKTsKKyAgICBFWFBFQ1Rf
RVEoQXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnM6OkNsaWVudFBpbkF2YWlsYWJpbGl0eTo6
a1N1cHBvcnRlZEFuZFBpblNldCwgZ2V0SW5mb1Jlc3BvbnNlLT5vcHRpb25zKCkuY2xpZW50UGlu
QXZhaWxhYmlsaXR5KCkpOworICAgIEVYUEVDVF9UUlVFKGdldEluZm9SZXNwb25zZS0+dHJhbnNw
b3J0cygpKTsKKyAgICBFWFBFQ1RfRVEoZ2V0SW5mb1Jlc3BvbnNlLT50cmFuc3BvcnRzKCktPnNp
emUoKSwgMXUpOworICAgIEVYUEVDVF9FUShBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2IsIGdl
dEluZm9SZXNwb25zZS0+dHJhbnNwb3J0cygpLT5maXJzdCgpKTsKK30KKwogVEVTVChDVEFQUmVz
cG9uc2VUZXN0LCBUZXN0UmVhZEdldEluZm9SZXNwb25zZVdpdGhJbmNvcnJlY3RGb3JtYXQpCiB7
CiAgICAgRVhQRUNUX0ZBTFNFKHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKGNvbnZlcnRCeXRlc1Rv
VmVjdG9yKGtUZXN0QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZVdpdGhOb1ZlcnNpb24sIHNp
emVvZihrVGVzdEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2VXaXRoTm9WZXJzaW9uKSkpKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvVGVzdERh
dGEuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvVGVzdERhdGEuaApp
bmRleCA3Yzc1MDBmZDJlMTkzMDE5ODFmYzQ0NDcwZjhhYzczNGY3MDAxY2I2Li41MTM3NTJjMzY3
N2RkZmUxMWEzYjliMDgwMTI0MDBiOGUzNDViMDdjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb1Rlc3REYXRhLmgKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9UZXN0RGF0YS5oCkBAIC0xNDQ2LDYgKzE0NDYsNDEgQEAg
Y29uc3RleHByIHVpbnQ4X3Qga0N0YXBDbGllbnRQaW5SZXRyaWVzUmVzcG9uc2VbXSA9IHsKICAg
ICAweDA4LAogfTsKIAorY29uc3RleHByIHVpbnQ4X3Qga1Rlc3RHZXRJbmZvUmVzcG9uc2VEZXZp
Y2VZdWJpa2V5NWNbXSA9IHsKKyAgICAvLyBTdWNjZXNzCisgICAgMHgwMCwKKyAgICAweEFBLCAw
eDAxLCAweDgzLCAweDY2LCAweDU1LCAweDMyLCAweDQ2LCAweDVGLCAweDU2LCAweDMyLCAweDY4
LCAweDQ2LAorICAgIDB4NDksIDB4NDQsIDB4NEYsIDB4NUYsIDB4MzIsIDB4NUYsIDB4MzAsIDB4
NkMsIDB4NDYsIDB4NDksIDB4NDQsIDB4NEYsCisgICAgMHg1RiwgMHgzMiwgMHg1RiwgMHgzMSwg
MHg1RiwgMHg1MCwgMHg1MiwgMHg0NSwgMHgwMiwgMHg4MiwgMHg2QiwgMHg2MywKKyAgICAweDcy
LCAweDY1LCAweDY0LCAweDUwLCAweDcyLCAweDZGLCAweDc0LCAweDY1LCAweDYzLCAweDc0LCAw
eDZCLCAweDY4LAorICAgIDB4NkQsIDB4NjEsIDB4NjMsIDB4MkQsIDB4NzMsIDB4NjUsIDB4NjMs
IDB4NzIsIDB4NjUsIDB4NzQsIDB4MDMsIDB4NTAsCisgICAgMHhFRSwgMHg4OCwgMHgyOCwgMHg3
OSwgMHg3MiwgMHgxQywgMHg0OSwgMHgxMywgMHg5NywgMHg3NSwgMHgzRCwgMHhGQywKKyAgICAw
eENFLCAweDk3LCAweDA3LCAweDJBLCAweDA0LCAweEE1LCAweDYyLCAweDcyLCAweDZCLCAweEY1
LCAweDYyLCAweDc1LAorICAgIDB4NzAsIDB4RjUsIDB4NjQsIDB4NzAsIDB4NkMsIDB4NjEsIDB4
NzQsIDB4RjQsIDB4NjksIDB4NjMsIDB4NkMsIDB4NjksCisgICAgMHg2NSwgMHg2RSwgMHg3NCwg
MHg1MCwgMHg2OSwgMHg2RSwgMHhGNSwgMHg3NSwgMHg2MywgMHg3MiwgMHg2NSwgMHg2NCwKKyAg
ICAweDY1LCAweDZFLCAweDc0LCAweDY5LCAweDYxLCAweDZDLCAweDRELCAweDY3LCAweDZELCAw
eDc0LCAweDUwLCAweDcyLAorICAgIDB4NjUsIDB4NzYsIDB4NjksIDB4NjUsIDB4NzcsIDB4RjUs
IDB4MDUsIDB4MTksIDB4MDQsIDB4QjAsIDB4MDYsIDB4ODEsCisgICAgMHgwMSwKKyAgICAvLyBr
ZXkoMDcpIC0gbWF4Q3JlZGVudGlhbENvdW50SW5MaXN0CisgICAgMHgwNywKKyAgICAvLyB2YWx1
ZSAtIHVuc2lnbmVkKDgpCisgICAgMHgwOCwKKyAgICAvLyBrZXkoMDgpIC0gbWF4Q3JlZGVudGlh
bElkTGVuZ3RoCisgICAgMHgwOCwKKyAgICAvLyB2YWx1ZSAtIHVuc2lnbmVkKDEyOCkKKyAgICAw
eDE4LCAweDgwLAorICAgIC8vIGtleSgwOSkgLSB0cmFuc3BvcnRzCisgICAgMHgwOSwKKyAgICAv
LyBhcnJheSgxKQorICAgIDB4ODEsCisgICAgLy8gdGV4dCgzKSAtICJ1c2IiCisgICAgMHg2Mywg
MHg3NSwgMHg3MywgMHg2MiwKKyAgICAweDBBLCAweDgyLCAweEEyLCAweDYzLCAweDYxLCAweDZD
LCAweDY3LCAweDI2LCAweDY0LCAweDc0LCAweDc5LCAweDcwLAorICAgIDB4NjUsIDB4NkEsIDB4
NzAsIDB4NzUsIDB4NjIsIDB4NkMsIDB4NjksIDB4NjMsIDB4MkQsIDB4NkIsIDB4NjUsIDB4Nzks
CisgICAgMHhBMiwgMHg2MywgMHg2MSwgMHg2QywgMHg2NywgMHgyNywgMHg2NCwgMHg3NCwgMHg3
OSwgMHg3MCwgMHg2NSwgMHg2QSwKKyAgICAweDcwLCAweDc1LCAweDYyLCAweDZDLCAweDY5LCAw
eDYzLCAweDJELCAweDZCLCAweDY1LCAweDc5LAorfTsKKwogfSAvLyBuYW1lc3BhY2UgVGVzdERh
dGEKIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDllOTIzMzEyZjk3MTg2
YWU4MzlhNzJmNzAwNzk2MmQ1Y2QzOGNkMGQuLjI2MWM5MzZlYjc4ZDEwYjAyODdiMjY4NjEzYmRi
NzFjOTlkZTkzMTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wNC0xMSAgSiBQYXNjb2Ug
IDxqX3Bhc2NvZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBsZW1lbnQgZ2V0
VHJhbnNwb3J0cygpIGFuZCBnZXRBdXRoZW50aWNhdG9yRGF0YSgpIG9uIEF1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzg5NjYKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vOTE0NDk5MDYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRt
bDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qczoKKwogMjAy
Mi0wNC0xMSAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV3cml0ZSBhY2Nlc3NpYmlsaXR5L3RhYmxlLW1vZGlmaWNhdGlvbi1jcmFzaC5odG1sIHRv
IHRlc3QgdGhhdCB0aGUgQVggdHJlZSByZWZsZWN0cyB0aGUgY2hhbmdlcyBtYWRlIHRvIHRoZSB0
YWJsZSByb3dzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNj
ZXNzLWhpZC5odHRwcy5odG1sCmluZGV4IDUyZmNiMTY0MWUxM2Q4N2Q3NWRiODdkMjBiOWQxM2I4
MGZiNzU1YTEuLjMxYzM2NDM3YjhiNjhmZmI3ZTJiNjE5ZWFmYTJkOTlhMjM1ZjZkNGQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBz
Lmh0bWwKQEAgLTEsNCArMSw0IEBACi08IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1
bm5lciBbIFdlYkF1dGhlbnRpY2F0aW9uTW9kZXJuRW5hYmxlZD10cnVlIF0gLS0+Cis8IURPQ1RZ
UEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciAgWyBXZWJBdXRoZW50aWNhdGlvbk1vZGVy
bkVuYWJsZWQ9ZmFsc2UgXSAtLT4KIDx0aXRsZT5XZWIgQXV0aGVudGljYXRpb24gQVBJOiBQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSBzdWNjZXNzIGNhc2VzIHdpdGggYSBtb2NrIGhp
ZCBhdXRoZW50aWNhdG9yLjwvdGl0bGU+CiA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+CkBAIC0yNyw3ICsyNyw3IEBACiAgICAgICAgIH07CiAKICAgICAg
ICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVk
ZW50aWFsID0+IHsKLSAgICAgICAgICAgIGNoZWNrQ3RhcE1ha2VDcmVkZW50aWFsUmVzdWx0KGNy
ZWRlbnRpYWwpOworICAgICAgICAgICAgY2hlY2tDdGFwTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3Jl
ZGVudGlhbCwgdHJ1ZSwgWyJ1c2IiXSk7CiAgICAgICAgIH0pOwogICAgIH0sICJQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1pbmltdW0gb3B0aW9ucyBpbiBhIG1vY2sgaGlk
IGF1dGhlbnRpY2F0b3IuIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3Jlc291cmNlcy91dGlsLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
cmVzb3VyY2VzL3V0aWwuanMKaW5kZXggZTVhYTg0Yjk1MjExZTY5NGUxODVhN2EwNTNlODQzZGM1
OWVmOTJiMS4uN2ZiYWU5ZTMzZDMyMjY5MzRlODA5OGI3ZTdlMmFlNTQ1Mzc0MTA0OCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMKQEAgLTM1
NSw3ICszNTUsNyBAQCBmdW5jdGlvbiBjaGVja1B1YmxpY0tleShwdWJsaWNLZXkpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWZ1bmN0aW9uIGNoZWNrQ3RhcE1ha2VDcmVkZW50aWFsUmVzdWx0KGNy
ZWRlbnRpYWwsIGlzTm9uZUF0dGVzdGF0aW9uID0gdHJ1ZSkKK2Z1bmN0aW9uIGNoZWNrQ3RhcE1h
a2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwsIGlzTm9uZUF0dGVzdGF0aW9uID0gdHJ1ZSwg
dHJhbnNwb3J0cyA9IG51bGwpCiB7CiAgICAgLy8gQ2hlY2sgcmVzcG9uc2UKICAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKEJhc2U2NFVSTC5wYXJzZShjcmVkZW50aWFsLmlkKSwgQmFzZTY0VVJMLnBh
cnNlKHRlc3RIaWRDcmVkZW50aWFsSWRCYXNlNjQpKTsKQEAgLTM4OCw2ICszODgsOCBAQCBmdW5j
dGlvbiBjaGVja0N0YXBNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsLCBpc05vbmVBdHRl
c3RhdGlvbiA9IHRydWUpCiAgICAgICAgIGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3Qu
YXR0U3RtdC5hbGcsIC03KTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVj
dC5hdHRTdG10Lng1Yy5sZW5ndGgsIDEpOwogICAgIH0KKyAgICBpZiAodHJhbnNwb3J0cykKKyAg
ICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh0cmFuc3BvcnRzLCBjcmVkZW50aWFsLnJlc3BvbnNl
LmdldFRyYW5zcG9ydHMoKSk7CiB9CiAKIGZ1bmN0aW9uIGNoZWNrVTJmTWFrZUNyZWRlbnRpYWxS
ZXN1bHQoY3JlZGVudGlhbCwgaXNOb25lQXR0ZXN0YXRpb24gPSB0cnVlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457282</attachid>
            <date>2022-04-11 13:32:37 -0700</date>
            <delta_ts>2022-04-14 11:43:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238966-20220411133237.patch</filename>
            <type>text/plain</type>
            <size>62445</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTlmNzQxY2Q1YjRhM2E0
MGU1Y2RmNjgyZWJhMzFlYWJkNGJjYzIyMi4uOWI4NTljMDdiOWI2ZjRjNDc3Mjg5MTZjMjU4Y2Nm
ZDMyNjlkZDE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIyLTA0LTExICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVu
dCBnZXRUcmFuc3BvcnRzKCkgYW5kIGdldEF1dGhlbnRpY2F0b3JEYXRhKCkgb24gQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzODk2NgorICAgICAgICByZGFyOi8vcHJvYmxlbS85MTQ0OTkwNgor
CisgICAgICAgIFRoaXMgY2hhbmdlIGltcGxlbWVudHMgdGhlIGdldFRyYW5zcG9ydHMoKSBhbmQg
Z2V0QXV0aGVudGljYXRvckRhdGEoKSBmdW5jdGlvbnMKKyAgICAgICAgb24gQXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2UuIEZvciBzZWN1cml0eSBrZXlzLCB0aGUgc3VwcG9ydGVkIHRy
YW5zcG9ydHMgb2YKKyAgICAgICAgdGhlIGtleSBhcmUgcGFyc2VkIGZyb20gYXV0aGVudGljYXRv
ckdldEluZm8uIEZvciB0aGUgbG9jYWwgYXV0aGVudGljYXRvciwgdGhlIHN1cHBvcnRlZAorICAg
ICAgICB0cmFuc3BvcnRzIGFyZSBzcGVjaWZpZWQgYWNjb3JkaW5nIHRvIHdoaWNoIGZlYXR1cmVz
IGFyZSBhdmFpbGFibGUuIGdldEF1dGhlbnRpY2F0b3JEYXRhKCkKKyAgICAgICAgaXMgYSBjb252
ZW5pZW5jZSBtZXRob2QgZm9yIFJQcyB3aG8gd2FudCB0byBhdm9pZCBwYXJzaW5nIENCT1IuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OkF1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpnZXRUcmFuc3BvcnRzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpnZXRBdXRo
ZW50aWNhdG9yRGF0YSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JSZXNwb25zZTo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGlj
YXRvclJlc3BvbnNlRGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JSZXNwb25zZURhdGE6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdG9yVHJhbnNwb3J0LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL1dl
YkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9X
ZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRBcnJh
eUJ1ZmZlclRvVmVjdG9yKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRp
Y2F0aW9uVXRpbHMuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vQXV0aGVudGlj
YXRvckdldEluZm9SZXNwb25zZS5jcHA6CisgICAgICAgIChmaWRvOjpBdXRoZW50aWNhdG9yR2V0
SW5mb1Jlc3BvbnNlOjpzZXRUcmFuc3BvcnRzKToKKyAgICAgICAgKGZpZG86OnRvU3RyaW5nVmVj
dG9yKToKKyAgICAgICAgKGZpZG86OmVuY29kZUFzQ0JPUik6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdXRobi9maWRvL0F1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UuaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3BwOgorICAgICAg
ICAoZmlkbzo6Y29udmVydFN0cmluZ1RvQXV0aGVudGljYXRvclRyYW5zcG9ydCk6CisgICAgICAg
IChmaWRvOjpyZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVzcG9uc2UpOgorICAgICAgICAoZmlkbzo6
cmVhZENUQVBHZXRJbmZvUmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlk
by9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4v
Zmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHA6CisgICAgICAgIChmaWRvOjpyZWFkVTJmUmVn
aXN0ZXJSZXNwb25zZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3Bv
bnNlQ29udmVydGVyLmg6CisgICAgICAgIChmaWRvOjpyZWFkVTJmUmVnaXN0ZXJSZXNwb25zZSk6
CisKIDIwMjItMDQtMTEgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW0xCU0VdIEFjdGl2YXRlIFNWRyB0cmFuc2Zvcm0gc3VwcG9ydCB0aHJv
dWdoIGxheWVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA3ZTdlNzEzYWNmNTY1ZGJhMTRhNzAyMDRjNzNmNmRiMzA2
YmQ1MDE3Li5mNDcwNzQ1NjhkNmM1NzFiMDA5MjBlNThkNzZkZTZmNGM3ZWUxODc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDUwIEBACisyMDIyLTA0LTExICBKIFBhc2NvZSAgPGpfcGFzY29lQGFwcGxl
LmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVudCBnZXRUcmFuc3BvcnRzKCkgYW5k
IGdldEF1dGhlbnRpY2F0b3JEYXRhKCkgb24gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODk2
NgorICAgICAgICByZGFyOi8vcHJvYmxlbS85MTQ0OTkwNgorCisgICAgICAgIFRoaXMgY2hhbmdl
IGltcGxlbWVudHMgdGhlIGdldFRyYW5zcG9ydHMoKSBhbmQgZ2V0QXV0aGVudGljYXRvckRhdGEo
KSBmdW5jdGlvbnMKKyAgICAgICAgb24gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2Uu
IEZvciBzZWN1cml0eSBrZXlzLCB0aGUgc3VwcG9ydGVkIHRyYW5zcG9ydHMgb2YKKyAgICAgICAg
dGhlIGtleSBhcmUgcGFyc2VkIGZyb20gYXV0aGVudGljYXRvckdldEluZm8uIEZvciB0aGUgbG9j
YWwgYXV0aGVudGljYXRvciwgdGhlIHN1cHBvcnRlZAorICAgICAgICB0cmFuc3BvcnRzIGFyZSBz
cGVjaWZpZWQgYWNjb3JkaW5nIHRvIHdoaWNoIGZlYXR1cmVzIGFyZSBhdmFpbGFibGUuIGdldEF1
dGhlbnRpY2F0b3JEYXRhKCkKKyAgICAgICAgaXMgYSBjb252ZW5pZW5jZSBtZXRob2QgZm9yIFJQ
cyB3aG8gd2FudCB0byBhdm9pZCBwYXJzaW5nIENCT1IuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGlj
YXRpb25TZXJ2aWNlc0NvcmVTUEkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5tbToKKyAgICAg
ICAgKC1bX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgaW5pdFdpdGhDbGllbnRE
YXRhSlNPTjpyYXdJZDpleHRlbnNpb25zOmF0dGVzdGF0aW9uT2JqZWN0OmF0dGFjaG1lbnQ6dHJh
bnNwb3J0czpdKToKKyAgICAgICAgKC1bX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2UgaW5pdFdpdGhDbGllbnREYXRhSlNPTjpyYXdJZDpleHRlbnNpb25zOmF0dGVzdGF0aW9uT2Jq
ZWN0OmF0dGFjaG1lbnQ6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZUludGVybmFsLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tOgorICAg
ICAgICAod2tFeHRlbnNpb25zQ2xpZW50T3V0cHV0cyk6CisgICAgICAgICh3a0F1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlKToKKyAgICAgICAgKHdrQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
TG9jYWxBdXRoZW50aWNhdG9yLm1tOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0
b3JJbnRlcm5hbDo6dHJhbnNwb3J0cyk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGlj
YXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlclZlcmlmaWNhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFm
dGVyQXR0ZXN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6
dG9BU0NEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYktpdDo6dG9BdXRoZW50aWNhdG9yVHJhbnNw
b3J0cyk6CisgICAgICAgIChXZWJLaXQ6OmNvbnRpbnVlQWZ0ZXJSZXF1ZXN0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkN0YXBBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50
aWFsQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEF1dGhlbnRp
Y2F0b3I6OnRyYW5zcG9ydHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL2ZpZG8vQ3RhcERyaXZlci5oOgorICAgICAgICAoV2ViS2l0OjpDdGFwRHJpdmVy
Ojp0cmFuc3BvcnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpDdGFwRHJpdmVyOjpwcm90b2Nv
bCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkN0YXBEcml2ZXI6OkN0YXBEcml2ZXIpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpDdGFwSGlkRHJpdmVyOjpDdGFwSGlkRHJpdmVyKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwTmZjRHJpdmVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Q3RhcE5mY0RyaXZlcjo6Q3RhcE5mY0RyaXZlcik6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlUyZkF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlUmVnaXN0ZXJDb21t
YW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKToKKwogMjAyMi0wNC0xMSAgSiBQYXNjb2UgIDxqX3Bh
c2NvZUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhuXSBFbnN1cmUgcmVxdWVzdFBpbiBj
YWxsYmFjayBvbiBtYWluIHRocmVhZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
LmNwcAppbmRleCA0ZThiNzQ5ZTRjMDA3MDlmZGEzMDFhN2FmZTVmZDk5NWU0MDc4NDUwLi5hNWU5
ZmMxZTFmZjljZTdiMWQwYTc0OTMyY2E3MGI5ZTZjMzE3YmE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlLmNwcApAQCAtMjksMjIgKzI5LDI1IEBACiAjaWYgRU5BQkxFKFdF
Ql9BVVRITikKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaCIKKyNpbmNs
dWRlICJDQk9SUmVhZGVyLmgiCisjaW5jbHVkZSAiV2ViQXV0aGVudGljYXRpb25VdGlscy5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNw
b25zZT4gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShSZWY8QXJyYXlC
dWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdHRlc3RhdGlvbk9iamVjdCwgQXV0
aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCkKK1JlZjxBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShS
ZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdHRlc3RhdGlvbk9i
amVjdCwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgVmVjdG9yPEF1dGhlbnRp
Y2F0b3JUcmFuc3BvcnQ+JiYgdHJhbnNwb3J0cykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZShXVEZNb3ZlKHJhd0lkKSwgV1RGTW92
ZShhdHRlc3RhdGlvbk9iamVjdCksIGF0dGFjaG1lbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZShXVEZNb3ZlKHJhd0lkKSwgV1RG
TW92ZShhdHRlc3RhdGlvbk9iamVjdCksIGF0dGFjaG1lbnQsIFdURk1vdmUodHJhbnNwb3J0cykp
KTsKIH0KIAotUmVmPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBBdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3
SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0
b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpCitSZWY8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2U+IEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdHRlc3RhdGlvbk9i
amVjdCwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgVmVjdG9yPEF1dGhlbnRp
Y2F0b3JUcmFuc3BvcnQ+JiYgdHJhbnNwb3J0cykKIHsKLSAgICByZXR1cm4gY3JlYXRlKEFycmF5
QnVmZmVyOjpjcmVhdGUocmF3SWQuZGF0YSgpLCByYXdJZC5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKGF0dGVzdGF0aW9uT2JqZWN0LmRhdGEoKSwgYXR0ZXN0YXRpb25PYmplY3Quc2l6ZSgp
KSwgYXR0YWNobWVudCk7CisgICAgcmV0dXJuIGNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3JlYXRlKHJh
d0lkLmRhdGEoKSwgcmF3SWQuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdHRlc3RhdGlv
bk9iamVjdC5kYXRhKCksIGF0dGVzdGF0aW9uT2JqZWN0LnNpemUoKSksIGF0dGFjaG1lbnQsIFdU
Rk1vdmUodHJhbnNwb3J0cykpOwogfQogCi1BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmIHJh
d0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JB
dHRhY2htZW50IGF0dGFjaG1lbnQpCitBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lk
LCBSZWY8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRh
Y2htZW50IGF0dGFjaG1lbnQsIFZlY3RvcjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiYmIHRyYW5z
cG9ydHMpCiAgICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShyYXdJZCksIGF0dGFj
aG1lbnQpCiAgICAgLCBtX2F0dGVzdGF0aW9uT2JqZWN0KFdURk1vdmUoYXR0ZXN0YXRpb25PYmpl
Y3QpKQorICAgICwgbV90cmFuc3BvcnRzKFdURk1vdmUodHJhbnNwb3J0cykpCiB7CiB9CiAKQEAg
LTUzLDkgKzU2LDI3IEBAIEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgQXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2U6OmRhdGEoKSBjb25zdAogICAgIGF1dG8gZGF0YSA9IEF1dGhlbnRp
Y2F0b3JSZXNwb25zZTo6ZGF0YSgpOwogICAgIGRhdGEuaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRp
b25SZXNwb25zZSA9IHRydWU7CiAgICAgZGF0YS5hdHRlc3RhdGlvbk9iamVjdCA9IG1fYXR0ZXN0
YXRpb25PYmplY3QuY29weVJlZigpOworICAgIGRhdGEudHJhbnNwb3J0cyA9IG1fdHJhbnNwb3J0
czsKICAgICByZXR1cm4gZGF0YTsKIH0KIAorQXJyYXlCdWZmZXIqIEF1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlOjpnZXRBdXRoZW50aWNhdG9yRGF0YSgpIGNvbnN0Cit7CisgICAgYXV0
byBkZWNvZGVkUmVzcG9uc2UgPSBjYm9yOjpDQk9SUmVhZGVyOjpyZWFkKGNvbnZlcnRBcnJheUJ1
ZmZlclRvVmVjdG9yKG1fYXR0ZXN0YXRpb25PYmplY3QucHRyKCkpKTsKKyAgICBpZiAoIWRlY29k
ZWRSZXNwb25zZSB8fCAhZGVjb2RlZFJlc3BvbnNlLT5pc01hcCgpKSB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgY29u
c3QgYXV0byYgYXR0T2JqTWFwID0gZGVjb2RlZFJlc3BvbnNlLT5nZXRNYXAoKTsKKyAgICBhdXRv
IGl0ID0gYXR0T2JqTWFwLmZpbmQoY2Jvcjo6Q0JPUlZhbHVlKCJhdXRoRGF0YSIpKTsKKyAgICBp
ZiAoaXQgPT0gYXR0T2JqTWFwLmVuZCgpIHx8ICFpdC0+c2Vjb25kLmlzQnl0ZVN0cmluZygpKSB7
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisgICAgYXV0byBhdXRoRGF0YSA9IGl0LT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpOwor
ICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhEYXRhLmRhdGEoKSwgYXV0aERhdGEu
c2l6ZSgpKS5wdHIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaAppbmRl
eCAyNjIzZWE4NTk5YzQ3MTU0N2FhYTUwOWM3YTI2OGI0YWU0OGY2YjFlLi4xN2Y1NzhiZmFiMDAx
ZGM3N2M2N2VmZjdlYmRlYmY5NWMxYzY5NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25S
ZXNwb25zZS5oCkBAIC0yOCwyNSArMjgsMjkgQEAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCiAj
aW5jbHVkZSAiQXV0aGVudGljYXRvclJlc3BvbnNlLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRv
clRyYW5zcG9ydC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlIDogcHVibGljIEF1dGhlbnRpY2F0b3JSZXNwb25zZSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4g
Y3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF0dGVz
dGF0aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gY3JlYXRlKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXR0ZXN0
YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTsKKyAgICBzdGF0aWMgUmVmPEF1
dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYm
IHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0
b3JBdHRhY2htZW50LCBWZWN0b3I8QXV0aGVudGljYXRvclRyYW5zcG9ydD4mJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4g
Y3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50LCBWZWN0b3I8QXV0
aGVudGljYXRvclRyYW5zcG9ydD4mJik7CiAKICAgICB2aXJ0dWFsIH5BdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZSgpID0gZGVmYXVsdDsKIAogICAgIEFycmF5QnVmZmVyKiBhdHRlc3Rh
dGlvbk9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fYXR0ZXN0YXRpb25PYmplY3QucHRyKCk7IH0K
KyAgICBjb25zdCBWZWN0b3I8QXV0aGVudGljYXRvclRyYW5zcG9ydD4mIGdldFRyYW5zcG9ydHMo
KSBjb25zdCB7IHJldHVybiBtX3RyYW5zcG9ydHM7IH0KKyAgICBBcnJheUJ1ZmZlciogZ2V0QXV0
aGVudGljYXRvckRhdGEoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBBdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZjxBcnJheUJ1ZmZlcj4mJiwg
QXV0aGVudGljYXRvckF0dGFjaG1lbnQpOworICAgIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmLCBBdXRoZW50aWNh
dG9yQXR0YWNobWVudCwgVmVjdG9yPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+JiYpOwogCiAgICAg
VHlwZSB0eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gVHlwZTo6QXR0ZXN0YXRpb247IH0KICAg
ICBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIGRhdGEoKSBjb25zdCBmaW5hbDsKIAogICAgIFJl
ZjxBcnJheUJ1ZmZlcj4gbV9hdHRlc3RhdGlvbk9iamVjdDsKKyAgICBWZWN0b3I8QXV0aGVudGlj
YXRvclRyYW5zcG9ydD4gbV90cmFuc3BvcnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmlkbAppbmRleCAxYzAwYzE1ZmI1
MDQ4ODYwOGE1OWRkMWFlMjRhOWJlMzcxNmMyM2QzLi40M2Q2NDRkMmI3YWVhYzY1ZjAwMWM5ZTM3
NmQxNjJmMDUwZDU4NzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmlk
bApAQCAtMzAsNCArMzAsNiBAQAogICAgIFNlY3VyZUNvbnRleHQKIF0gaW50ZXJmYWNlIEF1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIDogQXV0aGVudGljYXRvclJlc3BvbnNlIHsKICAg
ICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIEFycmF5QnVmZmVyIGF0dGVzdGF0aW9u
T2JqZWN0OworICAgIHNlcXVlbmNlPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+IGdldFRyYW5zcG9y
dHMoKTsKKyAgICBBcnJheUJ1ZmZlciBnZXRBdXRoZW50aWNhdG9yRGF0YSgpOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3Bv
bnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJl
c3BvbnNlLmNwcAppbmRleCA3YTQxNjY5ZGQ2ZTdhZjQwM2QxZGUyMjY5N2M4NDQ1MDkyOGM1Yjdk
Li5jNmQzMmI4ZGNmODNiMTAzZmMxMzYwYzI4YjQ5NWMwMmNmNDg0MzY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9u
c2UuY3BwCkBAIC00Myw3ICs0Myw3IEBAIFJlZlB0cjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+IEF1
dGhlbnRpY2F0b3JSZXNwb25zZTo6dHJ5Q3JlYXRlKEF1dGhlbnRpY2F0b3JSZXNwCiAgICAgICAg
IGlmICghZGF0YS5hdHRlc3RhdGlvbk9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgICAgIHJldHVybiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3Jl
YXRlKGRhdGEucmF3SWQucmVsZWFzZU5vbk51bGwoKSwgZGF0YS5hdHRlc3RhdGlvbk9iamVjdC5y
ZWxlYXNlTm9uTnVsbCgpLCBhdHRhY2htZW50KTsKKyAgICAgICAgcmV0dXJuIEF1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoZGF0YS5yYXdJZC5yZWxlYXNlTm9uTnVsbCgp
LCBkYXRhLmF0dGVzdGF0aW9uT2JqZWN0LnJlbGVhc2VOb25OdWxsKCksIGF0dGFjaG1lbnQsIFdU
Rk1vdmUoZGF0YS50cmFuc3BvcnRzKSk7CiAgICAgfQogCiAgICAgaWYgKCFkYXRhLmF1dGhlbnRp
Y2F0b3JEYXRhIHx8ICFkYXRhLnNpZ25hdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oCmluZGV4IGIwNjcxZWVi
MTExZmU1ZGFiMGI0MzA0OTJkMDljMWZiNDU1ZDUyZmYuLmZkMWY1MGRiYTAzNWI5OTZmYmRhMmQ5
Mjk3NWFjZmI4MjI3YzJjYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuaApAQCAtMzUsNiArMzUsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50Owor
ZW51bSBjbGFzcyBBdXRoZW50aWNhdG9yVHJhbnNwb3J0OwogCiBzdHJ1Y3QgQXV0aGVudGljYXRv
clJlc3BvbnNlRGF0YTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaAppbmRleCA4MTkwZjM4ZjI3NGZi
YWYyZDgyZGU0OTAzZDRiMmFkYzQ1ZDc4YTljLi5iZDYxYjNiZGY2OWQ2NDI5ZjI1YzQxZGE3NDkz
MWVmYWEzZDkwOTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaApAQCAtMjcsNiArMjcsNyBAQAog
CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAorI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTUxLDYgKzUyLDggQEAgc3RydWN0IEF1dGhlbnRpY2F0b3JS
ZXNwb25zZURhdGEgewogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2lnbmF0dXJlOwogICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gdXNlckhhbmRsZTsKIAorICAgIFZlY3RvcjxXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yVHJhbnNwb3J0PiB0cmFuc3BvcnRzOworCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE+IGRl
Y29kZShEZWNvZGVyJik7CiB9OwpAQCAtOTQsNiArOTcsNyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JS
ZXNwb25zZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogCiAgICAgaWYgKGlz
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgJiYgYXR0ZXN0YXRpb25PYmplY3QpIHsK
ICAgICAgICAgZW5jb2RlQXJyYXlCdWZmZXIoZW5jb2RlciwgKmF0dGVzdGF0aW9uT2JqZWN0KTsK
KyAgICAgICAgZW5jb2RlciA8PCB0cmFuc3BvcnRzOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0xMzksNiArMTQzLDEyIEBAIHN0ZDo6b3B0aW9uYWw8QXV0aGVudGljYXRvclJlc3BvbnNl
RGF0YT4gQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YTo6ZGVjb2RlKERlY29kCiAgICAgICAgIHJl
c3VsdC5hdHRlc3RhdGlvbk9iamVjdCA9IGRlY29kZUFycmF5QnVmZmVyKGRlY29kZXIpOwogICAg
ICAgICBpZiAoIXJlc3VsdC5hdHRlc3RhdGlvbk9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8QXV0aGVudGljYXRv
clRyYW5zcG9ydD4+IHRyYW5zcG9ydHM7CisgICAgICAgIGRlY29kZXIgPj4gdHJhbnNwb3J0czsK
KyAgICAgICAgaWYgKCF0cmFuc3BvcnRzKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICAgICAgcmVzdWx0LnRyYW5zcG9ydHMgPSBXVEZNb3ZlKCp0cmFuc3BvcnRzKTsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclRyYW5zcG9ydC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0LmgKaW5kZXggYTNiMzdi
NmI2YTI4NTljY2QxYjk0MmQwYThhN2ExYzFmODgxNDA1YS4uZTQwOWQzYmM5MjRlNWY5ZTdjNzc5
MzI1NGE3YjFkN2IxMjk5YTQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0LmgKQEAgLTM1LDcgKzM1LDggQEAg
ZW51bSBjbGFzcyBBdXRoZW50aWNhdG9yVHJhbnNwb3J0IHsKICAgICBVc2IsCiAgICAgTmZjLAog
ICAgIEJsZSwKLSAgICBJbnRlcm5hbAorICAgIEludGVybmFsLAorICAgIENhYmxlCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkBAIC00OCw3ICs0OSw4IEBAIHRlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydD4gewogICAgICAgICBX
ZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2IsCiAgICAgICAgIFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JUcmFuc3BvcnQ6Ok5mYywKICAgICAgICAgV2ViQ29yZTo6QXV0aGVudGljYXRv
clRyYW5zcG9ydDo6QmxlLAotICAgICAgICBXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0
OjpJbnRlcm5hbAorICAgICAgICBXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRl
cm5hbCwKKyAgICAgICAgV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6Q2FibGUKICAg
ICA+OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdG9yVHJhbnNwb3J0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vQXV0aGVudGljYXRvclRyYW5zcG9ydC5pZGwKaW5kZXggOGJjOGY1NDdlMjg0ZWMyYzg4MWVk
MmFlMDBmMGRmNTY5NTlkMDMzMi4uY2Y3YTQzOTllMTRhZTRiM2Y0ZTBmYWIwZmRlMWU0ODkzNzYy
MGI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdG9yVHJhbnNwb3J0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JUcmFuc3BvcnQuaWRsCkBAIC0yOSw1ICsyOSw2IEBACiAgICAgInVzYiIs
CiAgICAgIm5mYyIsCiAgICAgImJsZSIsCi0gICAgImludGVybmFsIgorICAgICJpbnRlcm5hbCIs
CisgICAgImNhYmxlIgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaAppbmRleCBmODVmMWZhYmNm
Y2MyMjdkMDYzYjhkMTRkMTVkNTY3Nzk3NDM1NTRjLi45YTI5MzljN2UwYjQ1ZTQyZTA3YmZmMmY0
NjlmYWI3NTY4NmJjMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL1dlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oCkBAIC05Myw2ICs5Mywx
MiBAQCBjb25zdGV4cHIgY29uc3QgY2hhciBrZXlTaXplS2V5W10gPSAia2V5X3NpemUiOwogY29u
c3RleHByIGNvbnN0IGNoYXIgcmVseWluZ1BhcnR5S2V5W10gPSAicnAiOwogY29uc3RleHByIGNv
bnN0IGNoYXIgYXBwbGljYXRpb25UYWdLZXlbXSA9ICJ0YWciOwogCitjb25zdGV4cHIgQVNDSUlM
aXRlcmFsIGF1dGhlbnRpY2F0b3JUcmFuc3BvcnRVc2IgPSB7ICJ1c2IiX3MgfTsKK2NvbnN0ZXhw
ciBBU0NJSUxpdGVyYWwgYXV0aGVudGljYXRvclRyYW5zcG9ydE5mYyA9IHsgIm5mYyJfcyB9Owor
Y29uc3RleHByIEFTQ0lJTGl0ZXJhbCBhdXRoZW50aWNhdG9yVHJhbnNwb3J0QmxlID0geyAiYmxl
Il9zIH07Citjb25zdGV4cHIgQVNDSUlMaXRlcmFsIGF1dGhlbnRpY2F0b3JUcmFuc3BvcnRJbnRl
cm5hbCA9IHsgImludGVybmFsIl9zIH07Citjb25zdGV4cHIgQVNDSUlMaXRlcmFsIGF1dGhlbnRp
Y2F0b3JUcmFuc3BvcnRDYWJsZSA9IHsgImNhYmxlIl9zIH07CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogbmFtZXNwYWNlIFdlYkF1dGhuIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwCmluZGV4IDQ3
Yjc3MTE1ZTk4MGRlZjRkMzBiMWI2N2M5Mzc4MjA5ZGJhMDA2MDguLmZlMWZmZGY1Mjc2MzkxNDVh
NWVjMzU3YmVhNDY5MTk1YTBjMjFlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAorI2luY2x1ZGUgIkNCT1JSZWFkZXIu
aCIKICNpbmNsdWRlICJDQk9SV3JpdGVyLmgiCiAjaW5jbHVkZSAiRmlkb0NvbnN0YW50cy5oIgog
I2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmgiCkBAIC00Myw2ICs0NCwxMSBA
QCBWZWN0b3I8dWludDhfdD4gY29udmVydEJ5dGVzVG9WZWN0b3IoY29uc3QgdWludDhfdCBieXRl
QXJyYXlbXSwgY29uc3Qgc2l6ZV90IGxlbgogICAgIHJldHVybiB7IGJ5dGVBcnJheSwgbGVuZ3Ro
IH07CiB9CiAKK1ZlY3Rvcjx1aW50OF90PiBjb252ZXJ0QXJyYXlCdWZmZXJUb1ZlY3RvcihBcnJh
eUJ1ZmZlciogYnVmZmVyKQoreworICAgIHJldHVybiBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihyZWlu
dGVycHJldF9jYXN0PHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSksIGJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpKTsKK30KKwogVmVjdG9yPHVpbnQ4X3Q+IHByb2R1Y2VScElkSGFzaChjb25zdCBTdHJpbmcm
IHJwSWQpCiB7CiAgICAgYXV0byBjcnlwdG8gPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBB
TDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaAppbmRl
eCA0ZmVhMTFjMDdhOGEzOTJiYjg0NjI4MmVjYTg5ZDlkOTgyMGQ3NjI3Li40NWYzM2Y0ZGQ4YzE0
Zjg3N2I1MmIzYjY5N2I4NjZkMGE1YTIyNjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaApAQCAtMzgsNiAr
MzgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50
OF90PiBjb252ZXJ0Qnl0ZXNUb1ZlY3Rvcihjb25zdCB1aW50OF90IGJ5dGVBcnJheVtdLCBjb25z
dCBzaXplX3QgbGVuZ3RoKTsKIAorV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNvbnZl
cnRBcnJheUJ1ZmZlclRvVmVjdG9yKEFycmF5QnVmZmVyKik7CisKIC8vIFByb2R1Y2UgYSBTSEEt
MjU2IGhhc2ggb2YgdGhlIGdpdmVuIFJQIElELgogV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4
X3Q+IHByb2R1Y2VScElkSGFzaChjb25zdCBTdHJpbmcmIHJwSWQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vQXV0aGVudGljYXRvckdldEluZm9S
ZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vQXV0aGVu
dGljYXRvckdldEluZm9SZXNwb25zZS5jcHAKaW5kZXggNTZmZGRlMmZjZDMzMDkxZjk5NTUyZjky
NDQxNTViNjlkMjY0NzI0Zi4uZmY5ZThiNjYwNjUwZTk0ZjA1ODEyZThiN2M5NTY2MTA4MDgzYTU5
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0F1dGhl
bnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vZmlkby9BdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlLmNwcApAQCAtMzQsNiAr
MzQsNyBAQAogCiAjaW5jbHVkZSAiQ0JPUlZhbHVlLmgiCiAjaW5jbHVkZSAiQ0JPUldyaXRlci5o
IgorI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmgiCiAKIG5hbWVzcGFjZSBm
aWRvIHsKIApAQCAtNzYsNiArNzcsMzYgQEAgQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSYg
QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZTo6c2V0T3B0aW9ucyhBdXRoZW50aWMKICAgICBy
ZXR1cm4gKnRoaXM7CiB9CiAKK0F1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UmIEF1dGhlbnRp
Y2F0b3JHZXRJbmZvUmVzcG9uc2U6OnNldFRyYW5zcG9ydHMoVmVjdG9yPFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JUcmFuc3BvcnQ+JiYgdHJhbnNwb3J0cykKK3sKKyAgICBtX3RyYW5zcG9ydHMgPSBX
VEZNb3ZlKHRyYW5zcG9ydHMpOworICAgIHJldHVybiAqdGhpczsKK30KKworc3RhdGljIFN0cmlu
ZyB0b1N0cmluZyhXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0IHRyYW5zcG9ydCkKK3sK
KyAgICBzd2l0Y2ggKHRyYW5zcG9ydCkgeworICAgIGNhc2UgV2ViQ29yZTo6QXV0aGVudGljYXRv
clRyYW5zcG9ydDo6VXNiOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6YXV0aGVudGljYXRvclRy
YW5zcG9ydFVzYjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpBdXRoZW50aWNh
dG9yVHJhbnNwb3J0OjpOZmM6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjphdXRoZW50aWNhdG9y
VHJhbnNwb3J0TmZjOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JUcmFuc3BvcnQ6OkJsZToKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OmF1dGhlbnRpY2F0
b3JUcmFuc3BvcnRCbGU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6QXV0aGVu
dGljYXRvclRyYW5zcG9ydDo6SW50ZXJuYWw6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjphdXRo
ZW50aWNhdG9yVHJhbnNwb3J0SW50ZXJuYWw7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2Vi
Q29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6Q2FibGU6CisgICAgICAgIHJldHVybiBXZWJD
b3JlOjphdXRoZW50aWNhdG9yVHJhbnNwb3J0Q2FibGU7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxs
U3RyaW5nKCk7Cit9CisKIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVBc0NCT1IoY29uc3QgQXV0aGVu
dGljYXRvckdldEluZm9SZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNl
IGNib3I7CkBAIC05OCw2ICsxMjksMTEgQEAgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUFzQ0JPUihj
b25zdCBBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlJiByZXNwb25zZSkKIAogICAgIGlmIChy
ZXNwb25zZS5waW5Qcm90b2NvbCgpKQogICAgICAgICBkZXZpY2VJbmZvTWFwLmVtcGxhY2UoQ0JP
UlZhbHVlKDYpLCB0b0FycmF5VmFsdWUoKnJlc3BvbnNlLnBpblByb3RvY29sKCkpKTsKKyAgICAK
KyAgICBpZiAocmVzcG9uc2UudHJhbnNwb3J0cygpKSB7CisgICAgICAgIGF1dG8gdHJhbnNwb3J0
cyA9ICpyZXNwb25zZS50cmFuc3BvcnRzKCk7CisgICAgICAgIGRldmljZUluZm9NYXAuZW1wbGFj
ZShDQk9SVmFsdWUoNyksIHRvQXJyYXlWYWx1ZSh0cmFuc3BvcnRzLm1hcCh0b1N0cmluZykpKTsK
KyAgICB9CiAKICAgICBhdXRvIGVuY29kZWRCeXRlcyA9IENCT1JXcml0ZXI6OndyaXRlKENCT1JW
YWx1ZShXVEZNb3ZlKGRldmljZUluZm9NYXApKSk7CiAgICAgQVNTRVJUKGVuY29kZWRCeXRlcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vQXV0aGVu
dGljYXRvckdldEluZm9SZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9maWRvL0F1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UuaAppbmRleCBjMDYzYzRmNWM5MzVm
OTczZGMxMTU0MDIwMzU5N2M1ODU2YzM0YWZlLi40MmJiMWJhMTMzOGZlY2RlZTA0NDQ2MzM4M2Fi
ZGQyZmRiZjAxZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L2ZpZG8vQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vZmlkby9BdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlLmgKQEAg
LTMyLDYgKzMyLDcgQEAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCiAjaW5jbHVkZSAiQXV0aGVu
dGljYXRvclN1cHBvcnRlZE9wdGlvbnMuaCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9yVHJhbnNw
b3J0LmgiCiAjaW5jbHVkZSAiRmlkb0NvbnN0YW50cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRTZXQu
aD4KIApAQCAtNTIsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAgQXV0aGVudGljYXRvckdldEluZm9S
ZXNwb25zZSYgc2V0UGluUHJvdG9jb2xzKFZlY3Rvcjx1aW50OF90PiYmKTsKICAgICBBdXRoZW50
aWNhdG9yR2V0SW5mb1Jlc3BvbnNlJiBzZXRFeHRlbnNpb25zKFZlY3RvcjxTdHJpbmc+JiYpOwog
ICAgIEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UmIHNldE9wdGlvbnMoQXV0aGVudGljYXRv
clN1cHBvcnRlZE9wdGlvbnMmJik7CisgICAgQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSYg
c2V0VHJhbnNwb3J0cyhWZWN0b3I8V2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydD4mJik7
CiAKICAgICBjb25zdCBTdGRTZXQ8UHJvdG9jb2xWZXJzaW9uPiYgdmVyc2lvbnMoKSBjb25zdCB7
IHJldHVybiBtX3ZlcnNpb25zOyB9CiAgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhYWd1aWQo
KSBjb25zdCB7IHJldHVybiBtX2FhZ3VpZDsgfQpAQCAtNTksNiArNjEsNyBAQCBwdWJsaWM6CiAg
ICAgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiBwaW5Qcm90b2NvbCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGluUHJvdG9jb2xzOyB9CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8U3RyaW5nPj4mIGV4dGVuc2lvbnMoKSBjb25zdCB7IHJldHVybiBtX2V4dGVuc2lvbnM7
IH0KICAgICBjb25zdCBBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9ucyYgb3B0aW9ucygpIGNv
bnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+PiB0cmFuc3BvcnRzKCkgY29uc3QgeyBy
ZXR1cm4gbV90cmFuc3BvcnRzOyB9CiAKIHByaXZhdGU6CiAgICAgU3RkU2V0PFByb3RvY29sVmVy
c2lvbj4gbV92ZXJzaW9uczsKQEAgLTY3LDYgKzcwLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbV9waW5Qcm90b2NvbHM7CiAgICAgc3RkOjpvcHRpb25h
bDxWZWN0b3I8U3RyaW5nPj4gbV9leHRlbnNpb25zOwogICAgIEF1dGhlbnRpY2F0b3JTdXBwb3J0
ZWRPcHRpb25zIG1fb3B0aW9uczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpB
dXRoZW50aWNhdG9yVHJhbnNwb3J0Pj4gbV90cmFuc3BvcnRzOwogfTsKIAogV0VCQ09SRV9FWFBP
UlQgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUFzQ0JPUihjb25zdCBBdXRoZW50aWNhdG9yR2V0SW5m
b1Jlc3BvbnNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcAppbmRleCA3MzVhOWJm
OGUwM2E4NDJhOTdkNDY5NGFjY2M2YjIyZTEzZWZlMDQ4Li43MjAyMDljYzQxZDM3MzIzOGI3MjM4
YTQzZWM1NWQ2NTU5YjRhM2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5jcHAKQEAg
LTU0LDYgKzU0LDIxIEBAIHN0YXRpYyBQcm90b2NvbFZlcnNpb24gY29udmVydFN0cmluZ1RvUHJv
dG9jb2xWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbikKICAgICByZXR1cm4gUHJvdG9jb2xW
ZXJzaW9uOjprVW5rbm93bjsKIH0KIAorc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXV0aGVudGljYXRv
clRyYW5zcG9ydD4gY29udmVydFN0cmluZ1RvQXV0aGVudGljYXRvclRyYW5zcG9ydChjb25zdCBT
dHJpbmcmIHRyYW5zcG9ydCkKK3sKKyAgICBpZiAodHJhbnNwb3J0ID09IGF1dGhlbnRpY2F0b3JU
cmFuc3BvcnRVc2IpCisgICAgICAgIHJldHVybiBBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2I7
CisgICAgaWYgKHRyYW5zcG9ydCA9PSBhdXRoZW50aWNhdG9yVHJhbnNwb3J0TmZjKQorICAgICAg
ICByZXR1cm4gQXV0aGVudGljYXRvclRyYW5zcG9ydDo6TmZjOworICAgIGlmICh0cmFuc3BvcnQg
PT0gYXV0aGVudGljYXRvclRyYW5zcG9ydEJsZSkKKyAgICAgICAgcmV0dXJuIEF1dGhlbnRpY2F0
b3JUcmFuc3BvcnQ6OkJsZTsKKyAgICBpZiAodHJhbnNwb3J0ID09IGF1dGhlbnRpY2F0b3JUcmFu
c3BvcnRJbnRlcm5hbCkKKyAgICAgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6Oklu
dGVybmFsOworICAgIGlmICh0cmFuc3BvcnQgPT0gYXV0aGVudGljYXRvclRyYW5zcG9ydENhYmxl
KQorICAgICAgICByZXR1cm4gQXV0aGVudGljYXRvclRyYW5zcG9ydDo6Q2FibGU7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKK30KKwogc3RkOjpvcHRpb25hbDxjYm9yOjpDQk9SVmFsdWU+IGRl
Y29kZVJlc3BvbnNlTWFwKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIpCiB7CiAgICAg
aWYgKGluQnVmZmVyLnNpemUoKSA8PSBrUmVzcG9uc2VDb2RlTGVuZ3RoIHx8IGdldFJlc3BvbnNl
Q29kZShpbkJ1ZmZlcikgIT0gQ3RhcERldmljZVJlc3BvbnNlQ29kZTo6a1N1Y2Nlc3MpCkBAIC05
NSw3ICsxMTAsNyBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGdldENyZWRlbnRpYWxJZChjb25z
dCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0b3JEYXRhKQogCiAvLyBEZWNvZGVzIGJ5dGUg
YXJyYXkgcmVzcG9uc2UgZnJvbSBhdXRoZW50aWNhdG9yIHRvIENCT1IgdmFsdWUgb2JqZWN0IGFu
ZAogLy8gY2hlY2tzIGZvciBjb3JyZWN0IGVuY29kaW5nIGZvcm1hdC4KLVJlZlB0cjxBdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZENUQVBNYWtlQ3JlZGVudGlhbFJlc3BvbnNl
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIsIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JB
dHRhY2htZW50IGF0dGFjaG1lbnQsIGNvbnN0IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVu
Y2UmIGF0dGVzdGF0aW9uKQorUmVmUHRyPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
PiByZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBp
bkJ1ZmZlciwgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgVmVj
dG9yPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+JiYgdHJhbnNwb3J0cywgY29uc3QgQXR0ZXN0YXRp
b25Db252ZXlhbmNlUHJlZmVyZW5jZSYgYXR0ZXN0YXRpb24pCiB7CiAgICAgYXV0byBkZWNvZGVk
TWFwID0gZGVjb2RlUmVzcG9uc2VNYXAoaW5CdWZmZXIpOwogICAgIGlmICghZGVjb2RlZE1hcCkK
QEAgLTEzNSw3ICsxNTAsNyBAQCBSZWZQdHI8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2U+IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZShjb25zdCBWZQogICAgICAgICBhdHRl
c3RhdGlvbk9iamVjdCA9IGNib3I6OkNCT1JXcml0ZXI6OndyaXRlKENCT1IoV1RGTW92ZShhdHRl
c3RhdGlvbk9iamVjdE1hcCkpKTsKICAgICB9CiAKLSAgICByZXR1cm4gQXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsICphdHRlc3RhdGlvbk9iamVj
dCwgYXR0YWNobWVudCk7CisgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3Bv
bnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCAqYXR0ZXN0YXRpb25PYmplY3QsIGF0dGFjaG1lbnQs
IFdURk1vdmUodHJhbnNwb3J0cykpOwogfQogCiBSZWZQdHI8QXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlPiByZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgaW5CdWZmZXIsIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1l
bnQpCkBAIC0zMjUsNiArMzQwLDIyIEBAIHN0ZDo6b3B0aW9uYWw8QXV0aGVudGljYXRvckdldElu
Zm9SZXNwb25zZT4gcmVhZENUQVBHZXRJbmZvUmVzcG9uc2UoY29uc3QgVmVjdG9yCiAgICAgICAg
IHJlc3BvbnNlLnNldFBpblByb3RvY29scyhXVEZNb3ZlKHN1cHBvcnRlZFBpblByb3RvY29scykp
OwogICAgIH0KIAorICAgIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SKDkpKTsKKyAgICBpZiAo
aXQgIT0gcmVzcG9uc2VNYXAuZW5kKCkpIHsKKyAgICAgICAgaWYgKCFpdC0+c2Vjb25kLmlzQXJy
YXkoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgVmVjdG9y
PEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+IHRyYW5zcG9ydHM7CisgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgdHJhbnNwb3J0U3RyaW5nIDogaXQtPnNlY29uZC5nZXRBcnJheSgpKSB7CisgICAgICAg
ICAgICBpZiAoIXRyYW5zcG9ydFN0cmluZy5pc1N0cmluZygpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICBhdXRvIHRyYW5zcG9ydCA9IGNvbnZlcnRT
dHJpbmdUb0F1dGhlbnRpY2F0b3JUcmFuc3BvcnQodHJhbnNwb3J0U3RyaW5nLmdldFN0cmluZygp
KTsKKyAgICAgICAgICAgIGlmICh0cmFuc3BvcnQpCisgICAgICAgICAgICAgICAgdHJhbnNwb3J0
cy5hcHBlbmQoKnRyYW5zcG9ydCk7CisgICAgICAgIH0KKyAgICAgICAgcmVzcG9uc2Uuc2V0VHJh
bnNwb3J0cyhXVEZNb3ZlKHRyYW5zcG9ydHMpKTsKKyAgICB9CisKICAgICByZXR1cm4gV1RGTW92
ZShyZXNwb25zZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmgKaW5kZXggYTJlMjhh
ODE4ZmZjOGE5ZjAzYWI4MjllODlhYjFkNDQzMWRkYmFiOS4uZmRjNjFkMmIzYmJkN2JmZDk1Njgz
NTIwZDVjNDUzNGM0NTMzYTUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmgKQEAgLTUy
LDcgKzUyLDcgQEAgV0VCQ09SRV9FWFBPUlQgQ3RhcERldmljZVJlc3BvbnNlQ29kZSBnZXRSZXNw
b25zZUNvZGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CiAvLyBhbmQgY29udmVydHMgcmVzcG9u
c2UgdG8gQXV0aGVudGljYXRvck1ha2VDcmVkZW50aWFsUmVzcG9uc2Ugb2JqZWN0IHdpdGgKIC8v
IENCT1IgbWFwIGtleXMgdGhhdCBjb25mb3JtIHRvIGZvcm1hdCBvZiBhdHRlc3RhdGlvbiBvYmpl
Y3QgZGVmaW5lZCBieSB0aGUKIC8vIFdlYkF1dGhOIHNwZWMgOiBodHRwczovL3czYy5naXRodWIu
aW8vd2ViYXV0aG4vI2ZpZy1hdHRTdHJ1Y3RzCi1XRUJDT1JFX0VYUE9SVCBSZWZQdHI8V2ViQ29y
ZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRDVEFQTWFrZUNyZWRlbnRp
YWxSZXNwb25zZShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9y
QXR0YWNobWVudCwgY29uc3QgV2ViQ29yZTo6QXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5j
ZSYgPSBXZWJDb3JlOjpBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpEaXJlY3QpOwor
V0VCQ09SRV9FWFBPUlQgUmVmUHRyPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlPiByZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiwgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQsIFZlY3RvcjxXZWJDb3JlOjpB
dXRoZW50aWNhdG9yVHJhbnNwb3J0PiYmLCBjb25zdCBXZWJDb3JlOjpBdHRlc3RhdGlvbkNvbnZl
eWFuY2VQcmVmZXJlbmNlJiA9IFdlYkNvcmU6OkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVu
Y2U6OkRpcmVjdCk7CiAKIC8vIERlLXNlcmlhbGl6ZXMgQ0JPUiBlbmNvZGVkIHJlc3BvbnNlIHRv
IEF1dGhlbnRpY2F0b3JHZXRBc3NlcnRpb24gLwogLy8gQXV0aGVudGljYXRvckdldE5leHRBc3Nl
cnRpb24gcmVxdWVzdCB0byBBdXRoZW50aWNhdG9yR2V0QXNzZXJ0aW9uUmVzcG9uc2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNv
bnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVz
cG9uc2VDb252ZXJ0ZXIuY3BwCmluZGV4IGE0ZmRlMTVmZmJmZDU1NTc3YjIyOWQ4NjQ5YzY3NjQ4
Y2U3ZWI5NmQuLjE3NWQwZTVhNTk3MmI2OTNlZTc0MGQ2YTVlZjdkNzIxYjQwZjBmODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNv
bnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Uy
ZlJlc3BvbnNlQ29udmVydGVyLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyBjYm9yOjpD
Qk9SVmFsdWU6Ok1hcFZhbHVlIGNyZWF0ZUZpZG9BdHRlc3RhdGlvblN0YXRlbWVudEZyb21VMmZS
ZWdpc3RlclJlCiAKIH0gLy8gbmFtZXNwYWNlCiAKLVJlZlB0cjxBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZT4gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElk
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50
IGF0dGFjaG1lbnQsIGNvbnN0IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmIGF0dGVz
dGF0aW9uKQorUmVmUHRyPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiByZWFkVTJm
UmVnaXN0ZXJSZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgdTJmRGF0YSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgVmVjdG9yPEF1
dGhlbnRpY2F0b3JUcmFuc3BvcnQ+JiYgdHJhbnNwb3J0cywgY29uc3QgQXR0ZXN0YXRpb25Db252
ZXlhbmNlUHJlZmVyZW5jZSYgYXR0ZXN0YXRpb24pCiB7CiAgICAgYXV0byBwdWJsaWNLZXkgPSBl
eHRyYWN0RUNQdWJsaWNLZXlGcm9tVTJmUmVnaXN0cmF0aW9uUmVzcG9uc2UodTJmRGF0YSk7CiAg
ICAgaWYgKHB1YmxpY0tleS5pc0VtcHR5KCkpCkBAIC0xNjAsNyArMTYwLDcgQEAgUmVmUHRyPEF1
dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShj
b25zdCBTdHJpbmcmIHIKIAogICAgIGF1dG8gYXR0ZXN0YXRpb25PYmplY3QgPSBidWlsZEF0dGVz
dGF0aW9uT2JqZWN0KFdURk1vdmUoYXV0aERhdGEpLCAiZmlkby11MmYiX3MsIFdURk1vdmUoZmlk
b0F0dGVzdGF0aW9uU3RhdGVtZW50KSwgYXR0ZXN0YXRpb24pOwogCi0gICAgcmV0dXJuIEF1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3Rh
dGlvbk9iamVjdCwgYXR0YWNobWVudCk7CisgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9iamVjdCwgYXR0
YWNobWVudCwgV1RGTW92ZSh0cmFuc3BvcnRzKSk7CiB9CiAKIFJlZlB0cjxBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2U+IHJlYWRVMmZTaWduUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElk
LCBjb25zdCBXZWJDb3JlOjpCdWZmZXJTb3VyY2UmIGtleUhhbmRsZSwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiB1MmZEYXRhLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNl
Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVz
cG9uc2VDb252ZXJ0ZXIuaAppbmRleCA1N2Q1M2M3MWMyMTk4ODM0ZmQ5OGRmYjIwM2RiNzc3ZjFj
NDM3YjYwLi40MWQ5NjlkY2I3ZTY3MTNkOThlNTNlOTBkZjliNTk1MjU1YTkyYmZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252
ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVz
cG9uc2VDb252ZXJ0ZXIuaApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgZmlkbyB7CiAKIC8v
IENvbnZlcnRzIGEgVTJGIHJlZ2lzdGVyIHJlc3BvbnNlIHRvIFdlYkF1dGhOIG1ha2VDcmVkZW50
aWFsIHJlc3BvbnNlLgogLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIu
MC1pZC0yMDE4MDIyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAt
aWQtMjAxODAyMjcuaHRtbCN1MmYtYXV0aGVudGljYXRvck1ha2VDcmVkZW50aWFsLWludGVyb3Bl
cmFiaWxpdHkKLVdFQkNPUkVfRVhQT1JUIFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZT4gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBy
cElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEsIFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JBdHRhY2htZW50LCBjb25zdCBXZWJDb3JlOjpBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJl
bmNlJiA9IFdlYkNvcmU6OkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6OkRpcmVjdCk7
CitXRUJDT1JFX0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2U+IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcnBJZCwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNo
bWVudCwgVmVjdG9yPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+JiYgdHJhbnNwb3J0
cyA9IHsgfSwgY29uc3QgV2ViQ29yZTo6QXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSYg
PSBXZWJDb3JlOjpBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpEaXJlY3QpOwogCiAv
LyBDb252ZXJ0cyBhIFUyRiBhdXRoZW50aWNhdGlvbiByZXNwb25zZSB0byBXZWJBdXRoTiBnZXRB
c3NlcnRpb24gcmVzcG9uc2UuCiAvLyBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlk
by12Mi4wLWlkLTIwMTgwMjI3L2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0b3ItcHJvdG9jb2wt
djIuMC1pZC0yMDE4MDIyNy5odG1sI3UyZi1hdXRoZW50aWNhdG9yR2V0QXNzZXJ0aW9uLWludGVy
b3BlcmFiaWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29h
L0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L3NwaS9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oCmluZGV4IDM5Mzk1NzY3
ODRmNjA0NGE4YTdiMWJkYjIyZjQ0MjZlM2FiY2FlNzYuLjA2OGI2NGZlYWY3MjFhZjljMWM4NWY0
NDVlZmQ2Yzg3NWQ2ZTdiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3Bp
L0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaApAQCAt
MjkwLDYgKzI5MCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIEFTQ3JlZGVudGlhbFJl
cXVlc3RTdHlsZSkgewogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHJlYWRvbmx5KSBOU1N0
cmluZyAqcmVseWluZ1BhcnR5SWRlbnRpZmllcjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
LCByZWFkb25seSkgTlNEYXRhICphdHRlc3RhdGlvbk9iamVjdDsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5LCByZWFkb25seSkgTlNEYXRhICpyYXdDbGllbnREYXRhSlNPTjsKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCBjb3B5KSBOU0FycmF5PE5TTnVtYmVyICo+ICp0cmFuc3BvcnRzOwogCiAr
IChpbnN0YW5jZXR5cGUpbmV3IE5TX1VOQVZBSUxBQkxFOwogLSAoaW5zdGFuY2V0eXBlKWluaXQg
TlNfVU5BVkFJTEFCTEU7CkBAIC0zMDQsNiArMzA1LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50
ZWdlciwgQVNDcmVkZW50aWFsUmVxdWVzdFN0eWxlKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSwgcmVhZG9ubHkpIE5TRGF0YSAqcmF3Q2xpZW50RGF0YUpTT047CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgY29weSwgcmVhZG9ubHkpIE5TU3RyaW5nICpyZWx5aW5nUGFydHlJZGVudGlmaWVy
OwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHJlYWRvbmx5KSBOU0RhdGEgKmF0dGVzdGF0
aW9uT2JqZWN0OworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TQXJyYXk8TlNOdW1iZXIg
Kj4gKnRyYW5zcG9ydHM7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2UuaAppbmRleCA3MmQ5NGMxMmEyMWZkNGYzODBiMTg0YTA1N2YyMDA1MWI1ZDNj
MTFjLi5lNWY5Y2UxYWQ3YzllNDEyOGEwMTIzYTZjOTI2NjFlYWVmYzQ2N2MyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaApAQCAtMzMsNiArMzMsNyBAQCBX
S19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSkKIEBpbnRlcmZhY2UgX1dL
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgOiBfV0tBdXRoZW50aWNhdG9yUmVzcG9u
c2UKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0RhdGEgKmF0dGVzdGF0aW9u
T2JqZWN0OworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TQXJyYXk8TlNOdW1iZXIgKj4g
KnRyYW5zcG9ydHM7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlv
blJlc3BvbnNlLm1tCmluZGV4IGJkYzBlMzViOTI0Nzg5NzhkYmIwNGY4NjE3NTY5MjY4MjUzZGE2
OGQuLjA3MWQ1MjJmYTgzODdmMTg2OWVlMWRlNjc2NDkwYTdlNDYxMjkyNGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UubW0KQEAgLTMyLDEyICszMiwxMyBA
QAogCiBAaW1wbGVtZW50YXRpb24gX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UK
IAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ2xpZW50RGF0YUpTT046KE5TRGF0YSAqKWNsaWVu
dERhdGFKU09OIHJhd0lkOihOU0RhdGEgKilyYXdJZCBleHRlbnNpb25zOihSZXRhaW5QdHI8X1dL
QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cz4mJilleHRlbnNpb25zIGF0dGVz
dGF0aW9uT2JqZWN0OihOU0RhdGEgKilhdHRlc3RhdGlvbk9iamVjdCBhdHRhY2htZW50OihfV0tB
dXRoZW50aWNhdG9yQXR0YWNobWVudClhdHRhY2htZW50CistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhDbGllbnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAq
KXJhd0lkIGV4dGVuc2lvbnM6KFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnND
bGllbnRPdXRwdXRzPiYmKWV4dGVuc2lvbnMgYXR0ZXN0YXRpb25PYmplY3Q6KE5TRGF0YSAqKWF0
dGVzdGF0aW9uT2JqZWN0IGF0dGFjaG1lbnQ6KF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50KWF0
dGFjaG1lbnQgdHJhbnNwb3J0czooTlNBcnJheTxOU051bWJlciAqPiAqKXRyYW5zcG9ydHMKIHsK
ICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoQ2xpZW50RGF0YUpTT046Y2xpZW50RGF0
YUpTT04gcmF3SWQ6cmF3SWQgZXh0ZW5zaW9uczpXVEZNb3ZlKGV4dGVuc2lvbnMpIGF0dGFjaG1l
bnQ6YXR0YWNobWVudF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgX2F0dGVzdGF0aW9u
T2JqZWN0ID0gYXR0ZXN0YXRpb25PYmplY3Q7CisgICAgX3RyYW5zcG9ydHMgPSB0cmFuc3BvcnRz
OwogICAgIHJldHVybiBzZWxmOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2VJbnRlcm5h
bC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlSW50ZXJuYWwuaAppbmRleCBhYWZiZjBiZDQzZmM4MGU5NDEwZGUw
ODIzYmY0MTU4YmU3ZGE2Y2I5Li41YWUwZDkwNjA2ZjIwYjBlYjUwY2E3YjA1MDJkMjgyYWE0NjNi
YzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0
aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2VJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZUludGVybmFsLmgKQEAgLTM0LDcgKzM0LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAog
QGludGVyZmFjZSBfV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSAoKQogCi0tIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpT
T04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4dGVuc2lvbnM6KFJldGFpblB0cjxfV0tBdXRoZW50
aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKWV4dGVuc2lvbnMgYXR0ZXN0YXRpb25P
YmplY3Q6KE5TRGF0YSAqKWF0dGVzdGF0aW9uT2JqZWN0IGF0dGFjaG1lbnQ6KF9XS0F1dGhlbnRp
Y2F0b3JBdHRhY2htZW50KWF0dGFjaG1lbnQ7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDbGll
bnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lk
IGV4dGVuc2lvbnM6KFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRP
dXRwdXRzPiYmKWV4dGVuc2lvbnMgYXR0ZXN0YXRpb25PYmplY3Q6KE5TRGF0YSAqKWF0dGVzdGF0
aW9uT2JqZWN0IGF0dGFjaG1lbnQ6KF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50KWF0dGFjaG1l
bnQgdHJhbnNwb3J0czooTlNBcnJheTxOU051bWJlciAqPiAqKXRyYW5zcG9ydHM7CiAKIEBlbmQK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCBhYzY0ZWYzNGQ2ZmVlODAzZjhmNmE4
NmYzMmY5ODg2MDY3ZWMwNDRhLi5hMTlmOWNhM2Q0NWNmZmFiYjQ0Mjg5Mzg4ZmQ3Zjc3YzMyZmYw
Njk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtODQ4LDkgKzg0OCwyOCBAQCBz
dGF0aWMgX1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXV0aGVudGljYXRvckF0dGFjaG1lbnRU
b1dLQXV0aGVudGljYXRvckF0dGFjaAogICAgIH0KIH0KIAorc3RhdGljIFJldGFpblB0cjxfV0tB
dXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiB3a0V4dGVuc2lvbnNDbGllbnRP
dXRwdXRzKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmIGRhdGEpCit7
CisgICAgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+
IGV4dGVuc2lvbnM7CisgICAgaWYgKGRhdGEuYXBwaWQpCisgICAgICAgIGV4dGVuc2lvbnMgPSBh
ZG9wdE5TKFtbX1dLQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cyBhbGxvY10g
aW5pdFdpdGhBcHBpZDpkYXRhLmFwcGlkLnZhbHVlKCldKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9u
czsKK30KKworc3RhdGljIFJldGFpblB0cjxOU0FycmF5PE5TTnVtYmVyICo+PiB3a1RyYW5zcG9y
dHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+JiB0cmFuc3Bv
cnRzKQoreworICAgIGF1dG8gd2tUcmFuc3BvcnRzID0gYWRvcHROUyhbTlNNdXRhYmxlQXJyYXk8
TlNOdW1iZXIgKj4gbmV3XSk7CisgICAgZm9yIChhdXRvIHRyYW5zcG9ydCA6IHRyYW5zcG9ydHMp
CisgICAgICAgIFt3a1RyYW5zcG9ydHMgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50
OihpbnQpdHJhbnNwb3J0XV07CisgICAgcmV0dXJuIHdrVHJhbnNwb3J0czsKK30KKworCiBzdGF0
aWMgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiB3a0F1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JS
ZXNwb25zZURhdGEmIGRhdGEsIE5TRGF0YSAqY2xpZW50RGF0YUpTT04sIFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0TlMoW1tf
V0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSBhbGxvY10gaW5pdFdpdGhDbGllbnRE
YXRhSlNPTjpjbGllbnREYXRhSlNPTiByYXdJZDpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5y
YXdJZC0+ZGF0YSgpIGxlbmd0aDpkYXRhLnJhd0lkLT5ieXRlTGVuZ3RoKCldIGV4dGVuc2lvbnM6
bmlsIGF0dGVzdGF0aW9uT2JqZWN0OltOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLmF0dGVzdGF0
aW9uT2JqZWN0LT5kYXRhKCkgbGVuZ3RoOmRhdGEuYXR0ZXN0YXRpb25PYmplY3QtPmJ5dGVMZW5n
dGgoKV0gYXR0YWNobWVudDogYXV0aGVudGljYXRvckF0dGFjaG1lbnRUb1dLQXV0aGVudGljYXRv
ckF0dGFjaG1lbnQoYXR0YWNobWVudCldKTsKKyAgICBhdXRvIHZhbHVlID0gYWRvcHROUyhbW19X
S0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aENsaWVudERh
dGFKU09OOmNsaWVudERhdGFKU09OIHJhd0lkOltOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLnJh
d0lkLT5kYXRhKCkgbGVuZ3RoOmRhdGEucmF3SWQtPmJ5dGVMZW5ndGgoKV0gZXh0ZW5zaW9uczp3
a0V4dGVuc2lvbnNDbGllbnRPdXRwdXRzKGRhdGEpIGF0dGVzdGF0aW9uT2JqZWN0OltOU0RhdGEg
ZGF0YVdpdGhCeXRlczpkYXRhLmF0dGVzdGF0aW9uT2JqZWN0LT5kYXRhKCkgbGVuZ3RoOmRhdGEu
YXR0ZXN0YXRpb25PYmplY3QtPmJ5dGVMZW5ndGgoKV0gYXR0YWNobWVudDogYXV0aGVudGljYXRv
ckF0dGFjaG1lbnRUb1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQoYXR0YWNobWVudCkgdHJhbnNw
b3J0czp3a1RyYW5zcG9ydHMoZGF0YS50cmFuc3BvcnRzKS5hdXRvcmVsZWFzZSgpXSk7CisgICAg
CisgICAgcmV0dXJuIHZhbHVlOwogfQogI2VuZGlmCiAKQEAgLTkxMSwxNSArOTMwLDExIEBAIHN0
YXRpYyBSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHdrQXV0
aGVudGljYXRvckF0dGVzdGF0aW9uCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIHN0YXRpYyBSZXRh
aW5QdHI8X1dLQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiB3a0F1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRh
JiBkYXRhLCBOU0RhdGEgKmNsaWVudERhdGFKU09OLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0
YWNobWVudCBhdHRhY2htZW50KQogewotICAgIFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4
dGVuc2lvbnNDbGllbnRPdXRwdXRzPiBleHRlbnNpb25zOwotICAgIGlmIChkYXRhLmFwcGlkKQot
ICAgICAgICBleHRlbnNpb25zID0gYWRvcHROUyhbW19XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9u
c0NsaWVudE91dHB1dHMgYWxsb2NdIGluaXRXaXRoQXBwaWQ6ZGF0YS5hcHBpZC52YWx1ZSgpXSk7
Ci0KICAgICBOU0RhdGEgKnVzZXJIYW5kbGUgPSBuaWw7CiAgICAgaWYgKGRhdGEudXNlckhhbmRs
ZSkKICAgICAgICAgdXNlckhhbmRsZSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLnVzZXJI
YW5kbGUtPmRhdGEoKSBsZW5ndGg6ZGF0YS51c2VySGFuZGxlLT5ieXRlTGVuZ3RoKCldOwogCi0g
ICAgcmV0dXJuIGFkb3B0TlMoW1tfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UgYWxs
b2NdIGluaXRXaXRoQ2xpZW50RGF0YUpTT046Y2xpZW50RGF0YUpTT04gcmF3SWQ6W05TRGF0YSBk
YXRhV2l0aEJ5dGVzOmRhdGEucmF3SWQtPmRhdGEoKSBsZW5ndGg6ZGF0YS5yYXdJZC0+Ynl0ZUxl
bmd0aCgpXSBleHRlbnNpb25zOldURk1vdmUoZXh0ZW5zaW9ucykgYXV0aGVudGljYXRvckRhdGE6
W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuYXV0aGVudGljYXRvckRhdGEtPmRhdGEoKSBsZW5n
dGg6ZGF0YS5hdXRoZW50aWNhdG9yRGF0YS0+Ynl0ZUxlbmd0aCgpXSBzaWduYXR1cmU6W05TRGF0
YSBkYXRhV2l0aEJ5dGVzOmRhdGEuc2lnbmF0dXJlLT5kYXRhKCkgbGVuZ3RoOmRhdGEuc2lnbmF0
dXJlLT5ieXRlTGVuZ3RoKCldIHVzZXJIYW5kbGU6dXNlckhhbmRsZSBhdHRhY2htZW50OmF1dGhl
bnRpY2F0b3JBdHRhY2htZW50VG9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50KGF0dGFjaG1lbnQp
XSk7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2UgYWxsb2NdIGluaXRXaXRoQ2xpZW50RGF0YUpTT046Y2xpZW50RGF0YUpTT04gcmF3SWQ6W05T
RGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEucmF3SWQtPmRhdGEoKSBsZW5ndGg6ZGF0YS5yYXdJZC0+
Ynl0ZUxlbmd0aCgpXSBleHRlbnNpb25zOndrRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMoZGF0YSkg
YXV0aGVudGljYXRvckRhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuYXV0aGVudGljYXRv
ckRhdGEtPmRhdGEoKSBsZW5ndGg6ZGF0YS5hdXRoZW50aWNhdG9yRGF0YS0+Ynl0ZUxlbmd0aCgp
XSBzaWduYXR1cmU6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuc2lnbmF0dXJlLT5kYXRhKCkg
bGVuZ3RoOmRhdGEuc2lnbmF0dXJlLT5ieXRlTGVuZ3RoKCldIHVzZXJIYW5kbGU6dXNlckhhbmRs
ZSBhdHRhY2htZW50OmF1dGhlbnRpY2F0b3JBdHRhY2htZW50VG9XS0F1dGhlbnRpY2F0b3JBdHRh
Y2htZW50KGF0dGFjaG1lbnQpXSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9y
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9j
YWxBdXRoZW50aWNhdG9yLm1tCmluZGV4IGU2OWRiZGFlNTAxOGYwODRiNGIxY2ZkNTlmOWY2YmQx
ZmRkZmU3NDMuLjI2YjRiMjBmNjZmYWUyZjkwN2RlMTJhODUwYTgxMmZmZWI2OTIyY2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xv
Y2FsQXV0aGVudGljYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KQEAgLTQ5LDcgKzQ5LDYgQEAK
ICNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L0Jhc2U2NC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCiAjaWYgVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKICNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9Mb2NhbEF1dGhlbnRp
Y2F0b3JBZGRpdGlvbnMuaD4KICNlbHNlCkBAIC02MCw3ICs1OSwxMiBAQCBzdGF0aWMgaW5saW5l
IFN0cmluZyBncm91cEZvckF0dHJpYnV0ZXMoTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzKQogewog
ICAgIHJldHVybiBudWxsU3RyaW5nKCk7CiB9CitzdGF0aWMgYm9vbCBzaG91bGRVcGRhdGVRdWVy
eSgpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQogI2VuZGlmCisjaW1wb3J0ICJBdXRoZW50aWNh
dGlvblNlcnZpY2VzQ29yZVNvZnRMaW5rLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcg
bmFtZXNwYWNlIGZpZG87CkBAIC0xODEsNiArMTg1LDE0IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4+IGdldEV4aXN0aW5n
Q3JlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFZlY3RvcjxBdXRoZW50aWNhdG9y
VHJhbnNwb3J0PiB0cmFuc3BvcnRzKCkKK3sKKyAgICBWZWN0b3I8V2ViQ29yZTo6QXV0aGVudGlj
YXRvclRyYW5zcG9ydD4gdHJhbnNwb3J0cyA9IHsgV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5z
cG9ydDo6SW50ZXJuYWwgfTsKKyAgICBpZiAoc2hvdWxkVXBkYXRlUXVlcnkoKSkKKyAgICAgICAg
dHJhbnNwb3J0cy5hcHBlbmQoV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6Q2FibGUp
OworICAgIHJldHVybiB0cmFuc3BvcnRzOworfQorCiB9IC8vIExvY2FsQXV0aGVudGljYXRvcklu
dGVybmFsCiAKIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjbGVhckFsbENyZWRlbnRpYWxzKCkK
QEAgLTQ0Niw3ICs0NTgsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtl
Q3JlZGVudGlhbEFmdGVyVXNlclZlcmlmaWNhdGlvbihTZWNBY2Nlc3NDbwogCiAgICAgICAgIGF1
dG8gYXV0aERhdGEgPSBidWlsZEF1dGhEYXRhKGNyZWF0aW9uT3B0aW9ucy5ycC5pZCwgZmxhZ3Ms
IGNvdW50ZXIsIGJ1aWxkQXR0ZXN0ZWRDcmVkZW50aWFsRGF0YShWZWN0b3I8dWludDhfdD4oYWFn
dWlkTGVuZ3RoLCAwKSwgY3JlZGVudGlhbElkLCBjb3NlUHVibGljS2V5KSk7CiAgICAgICAgIGF1
dG8gYXR0ZXN0YXRpb25PYmplY3QgPSBidWlsZEF0dGVzdGF0aW9uT2JqZWN0KFdURk1vdmUoYXV0
aERhdGEpLCBTdHJpbmcgeyBlbXB0eVN0cmluZygpIH0sIHsgfSwgQXR0ZXN0YXRpb25Db252ZXlh
bmNlUHJlZmVyZW5jZTo6Tm9uZSk7Ci0gICAgICAgIHJlY2VpdmVSZXNwb25kKEF1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9i
amVjdCwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtKSk7CisgICAgICAgIHJlY2Vp
dmVSZXNwb25kKEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVu
dGlhbElkLCBhdHRlc3RhdGlvbk9iamVjdCwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRm
b3JtLCB0cmFuc3BvcnRzKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDczLDcg
KzQ4NSw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFs
QWZ0ZXJBdHRlc3RlZChWZWN0b3I8dWludDhfdD4mJiBjCiAgICAgaWYgKGVycm9yKSB7CiAgICAg
ICAgIExPR19FUlJPUigiQ291bGRuJ3QgYXR0ZXN0OiAlcyIsIFN0cmluZyhlcnJvci5sb2NhbGl6
ZWREZXNjcmlwdGlvbikudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGF1dG8gYXR0ZXN0YXRpb25P
YmplY3QgPSBidWlsZEF0dGVzdGF0aW9uT2JqZWN0KFdURk1vdmUoYXV0aERhdGEpLCBTdHJpbmcg
eyBlbXB0eVN0cmluZygpIH0sIHsgfSwgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6
Tm9uZSk7Ci0gICAgICAgIHJlY2VpdmVSZXNwb25kKEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9iamVjdCwgQXV0aGVudGlj
YXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtKSk7CisgICAgICAgIHJlY2VpdmVSZXNwb25kKEF1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3Rh
dGlvbk9iamVjdCwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtLCB0cmFuc3BvcnRz
KCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAvLyBBdHRlc3RhdGlvbiBDZXJ0aWZp
Y2F0ZSBhbmQgQXR0ZXN0YXRpb24gSXNzdWluZyBDQQpAQCAtNDkyLDcgKzUwNCw3IEBAIHZvaWQg
TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChW
ZWN0b3I8dWludDhfdD4mJiBjCiAgICAgYXV0byBhdHRlc3RhdGlvbk9iamVjdCA9IGJ1aWxkQXR0
ZXN0YXRpb25PYmplY3QoV1RGTW92ZShhdXRoRGF0YSksICJhcHBsZSJfcywgV1RGTW92ZShhdHRl
c3RhdGlvblN0YXRlbWVudE1hcCksIGNyZWF0aW9uT3B0aW9ucy5hdHRlc3RhdGlvbik7CiAKICAg
ICBkZWxldGVEdXBsaWNhdGVDcmVkZW50aWFsKCk7Ci0gICAgcmVjZWl2ZVJlc3BvbmQoQXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF0dGVzdGF0
aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6UGxhdGZvcm0pKTsKKyAgICByZWNl
aXZlUmVzcG9uZChBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKGNyZWRl
bnRpYWxJZCwgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpQbGF0
Zm9ybSwgdHJhbnNwb3J0cygpKSk7CiB9CiAKIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRB
c3NlcnRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eS5tbQppbmRleCBmNjdjZTQwNDMxNWVkNjI4ZWYxZjgyZTQxMzUy
YjFhNWE4NmMxMDcyLi5lOWU0ZDA5MjBkMDU0YjA2M2NiNDNkYTU4MzQ0NTBkOWIwNWU5NDdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eS5tbQpAQCAtMTU0LDYgKzE1NCw5IEBAIHN0YXRpYyBpbmxpbmUgUmV0YWluUHRy
PEFTQ1B1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yPiB0b0FTQ0Rlc2NyaXB0b3IoUHVibGlj
CiAgICAgICAgICAgICBjYXNlIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkludGVybmFsOgogICAg
ICAgICAgICAgICAgIHRyYW5zcG9ydFN0cmluZyA9IEAiaW50ZXJuYWwiOwogICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpDYWJs
ZToKKyAgICAgICAgICAgICAgICB0cmFuc3BvcnRTdHJpbmcgPSBAImNhYmxlIjsKKyAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKHRyYW5zcG9y
dFN0cmluZykKQEAgLTMzNyw2ICszNDAsMTUgQEAgc3RhdGljIFJldGFpblB0cjxBU0NDcmVkZW50
aWFsUmVxdWVzdENvbnRleHQ+IGNvbmZpZ3VyYXRpb25Bc3NlcnRpb25SZXF1ZXN0Q29udGUKICAg
ICByZXR1cm4gcmVxdWVzdENvbnRleHQ7CiB9CiAKK3N0YXRpYyBWZWN0b3I8V2ViQ29yZTo6QXV0
aGVudGljYXRvclRyYW5zcG9ydD4gdG9BdXRoZW50aWNhdG9yVHJhbnNwb3J0cyhOU0FycmF5PE5T
TnVtYmVyICo+ICphc2NUcmFuc3BvcnRzKQoreworICAgIFZlY3RvcjxXZWJDb3JlOjpBdXRoZW50
aWNhdG9yVHJhbnNwb3J0PiB0cmFuc3BvcnRzOworICAgIHRyYW5zcG9ydHMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShhc2NUcmFuc3BvcnRzLmNvdW50KTsKKyAgICBmb3IgKE5TTnVtYmVyICphc2NU
cmFuc3BvcnQgOiBhc2NUcmFuc3BvcnRzKQorICAgICAgICB0cmFuc3BvcnRzLnVuY2hlY2tlZEFw
cGVuZChzdGF0aWNfY2FzdDxXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0Pihhc2NUcmFu
c3BvcnQuaW50VmFsdWUpKTsKKyAgICByZXR1cm4gdHJhbnNwb3J0czsKK30KKwogUmV0YWluUHRy
PEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dD4gV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHk6OmNvbnRleHRGb3JSZXF1ZXN0KFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEmJiBy
ZXF1ZXN0RGF0YSkKIHsKICAgICBSZXRhaW5QdHI8QVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0
PiByZXN1bHQ7CkBAIC0zNjEsNiArMzczLDggQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbnRpbnVl
QWZ0ZXJSZXF1ZXN0KFJldGFpblB0cjxpZCA8QVNDQ3JlZGVudGlhbFByb3RvY29sPj4gY3IKICAg
ICAgICAgQVNDUGxhdGZvcm1QdWJsaWNLZXlDcmVkZW50aWFsUmVnaXN0cmF0aW9uICpyZWdpc3Ry
YXRpb25DcmVkZW50aWFsID0gY3JlZGVudGlhbC5nZXQoKTsKICAgICAgICAgcmVzcG9uc2UucmF3
SWQgPSB0b0FycmF5QnVmZmVyKHJlZ2lzdHJhdGlvbkNyZWRlbnRpYWwuY3JlZGVudGlhbElEKTsK
ICAgICAgICAgcmVzcG9uc2UuYXR0ZXN0YXRpb25PYmplY3QgPSB0b0FycmF5QnVmZmVyKHJlZ2lz
dHJhdGlvbkNyZWRlbnRpYWwuYXR0ZXN0YXRpb25PYmplY3QpOworICAgICAgICBpZiAoW3JlZ2lz
dHJhdGlvbkNyZWRlbnRpYWwgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih0cmFuc3BvcnRz
KV0pCisgICAgICAgICAgICByZXNwb25zZS50cmFuc3BvcnRzID0gdG9BdXRoZW50aWNhdG9yVHJh
bnNwb3J0cyhyZWdpc3RyYXRpb25DcmVkZW50aWFsLnRyYW5zcG9ydHMpOwogICAgIH0gZWxzZSBp
ZiAoW2NyZWRlbnRpYWwgaXNLaW5kT2ZDbGFzczpnZXRBU0NTZWN1cml0eUtleVB1YmxpY0tleUNy
ZWRlbnRpYWxSZWdpc3RyYXRpb25DbGFzcygpXSkgewogICAgICAgICBhdHRhY2htZW50ID0gQXV0
aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm07CiAgICAgICAgIHJlc3BvbnNlLmlz
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgPSB0cnVlOwpAQCAtMzY4LDYgKzM4Miw4
IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb250aW51ZUFmdGVyUmVxdWVzdChSZXRhaW5QdHI8aWQg
PEFTQ0NyZWRlbnRpYWxQcm90b2NvbD4+IGNyCiAgICAgICAgIEFTQ1NlY3VyaXR5S2V5UHVibGlj
S2V5Q3JlZGVudGlhbFJlZ2lzdHJhdGlvbiAqcmVnaXN0cmF0aW9uQ3JlZGVudGlhbCA9IGNyZWRl
bnRpYWwuZ2V0KCk7CiAgICAgICAgIHJlc3BvbnNlLnJhd0lkID0gdG9BcnJheUJ1ZmZlcihyZWdp
c3RyYXRpb25DcmVkZW50aWFsLmNyZWRlbnRpYWxJRCk7CiAgICAgICAgIHJlc3BvbnNlLmF0dGVz
dGF0aW9uT2JqZWN0ID0gdG9BcnJheUJ1ZmZlcihyZWdpc3RyYXRpb25DcmVkZW50aWFsLmF0dGVz
dGF0aW9uT2JqZWN0KTsKKyAgICAgICAgaWYgKFtyZWdpc3RyYXRpb25DcmVkZW50aWFsIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IodHJhbnNwb3J0cyldKQorICAgICAgICAgICAgcmVzcG9u
c2UudHJhbnNwb3J0cyA9IHRvQXV0aGVudGljYXRvclRyYW5zcG9ydHMocmVnaXN0cmF0aW9uQ3Jl
ZGVudGlhbC50cmFuc3BvcnRzKTsKICAgICB9IGVsc2UgaWYgKFtjcmVkZW50aWFsIGlzS2luZE9m
Q2xhc3M6Z2V0QVNDUGxhdGZvcm1QdWJsaWNLZXlDcmVkZW50aWFsQXNzZXJ0aW9uQ2xhc3MoKV0p
IHsKICAgICAgICAgYXR0YWNobWVudCA9IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpQbGF0Zm9y
bTsKICAgICAgICAgcmVzcG9uc2UuaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcAppbmRleCA0Njll
MDMzYjcxZjQ0ZWNiYzIwMzBhZDZmZThmN2JmYjNhMTQ3ODA1Li5mNDhjZGRmMzgyNzg2YjgzYTYy
ZWRhMmNiNDI1ODA1MGZlMTc4M2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNh
dG9yLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgQ3RhcEF1dGhlbnRpY2F0b3I6Om1ha2VD
cmVkZW50aWFsKCkKIAogdm9pZCBDdGFwQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVu
dGlhbEFmdGVyUmVzcG9uc2VSZWNlaXZlZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAg
IGF1dG8gcmVzcG9uc2UgPSByZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVzcG9uc2UoZGF0YSwgQXV0
aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0sIHN0ZDo6Z2V0PFB1YmxpY0tleUNy
ZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucykuYXR0ZXN0YXRp
b24pOworICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVzcG9uc2Uo
ZGF0YSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0sIHRyYW5zcG9ydHMo
KSwgc3RkOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERh
dGEoKS5vcHRpb25zKS5hdHRlc3RhdGlvbik7CiAgICAgaWYgKCFyZXNwb25zZSkgewogICAgICAg
ICBhdXRvIGVycm9yID0gZ2V0UmVzcG9uc2VDb2RlKGRhdGEpOwogCkBAIC0zODQsNiArMzg0LDE0
IEBAIGJvb2wgQ3RhcEF1dGhlbnRpY2F0b3I6OnByb2Nlc3NHb29nbGVMZWdhY3lBcHBJZFN1cHBv
cnRFeHRlbnNpb24oKQogICAgIHJldHVybiBleHRlbnNpb25zLT5nb29nbGVMZWdhY3lBcHBpZFN1
cHBvcnQ7CiB9CiAKK1ZlY3RvcjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiBDdGFwQXV0aGVudGlj
YXRvcjo6dHJhbnNwb3J0cygpCit7CisgICAgYXV0byBpbmZvVHJhbnNwb3J0cyA9IG1faW5mby50
cmFuc3BvcnRzKCk7CisgICAgaWYgKGluZm9UcmFuc3BvcnRzKQorICAgICAgICByZXR1cm4gKmlu
Zm9UcmFuc3BvcnRzOworICAgIHJldHVybiBWZWN0b3IgeyBkcml2ZXIoKS50cmFuc3BvcnQoKSB9
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVU
SE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmgKaW5kZXggOTE1MDVjMDdkZTY1
M2EwODA3YmNhYjcwZDY3MDIyZjQ0YzJjYjQ5Ny4uMmZhYjAzN2YxZDcwYzJhMWY4ZDQzZjlhZjM0
OWQzMGZkMjdlMjJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaApAQCAt
NzAsNiArNzAsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgdHJ5RG93bmdyYWRlKCk7CiAgICAgYm9v
bCBwcm9jZXNzR29vZ2xlTGVnYWN5QXBwSWRTdXBwb3J0RXh0ZW5zaW9uKCk7CiAKKyAgICBWZWN0
b3I8V2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydD4gdHJhbnNwb3J0cygpOworCiAgICAg
Zmlkbzo6QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSBtX2luZm87CiAgICAgYm9vbCBtX2lz
RG93bmdyYWRlZCB7IGZhbHNlIH07CiAgICAgc2l6ZV90IG1fcmVtYWluaW5nQXNzZXJ0aW9uUmVz
cG9uc2VzIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vZmlkby9DdGFwRHJpdmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBEcml2ZXIuaAppbmRleCA3YTQyMGZlMWNlYzIxOGI5
MDY2ZTYzMDM2ZWZiYmM2M2E0MTdiMTA1Li42MjE5MGZhZmYyMTRiYmZiN2E5OWQ5ZTYzMjQyMjhk
ZWZlNzdlZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9maWRvL0N0YXBEcml2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBEcml2ZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAj
aWYgRU5BQkxFKFdFQl9BVVRITikKIAorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvclRy
YW5zcG9ydC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlkb0NvbnN0YW50cy5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CkBAIC00NSwxNSArNDYs
MTkgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRQcm90b2NvbChmaWRvOjpQcm90b2NvbFZlcnNp
b24gcHJvdG9jb2wpIHsgbV9wcm90b2NvbCA9IHByb3RvY29sOyB9CiAKKyAgICBXZWJDb3JlOjpB
dXRoZW50aWNhdG9yVHJhbnNwb3J0IHRyYW5zcG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNw
b3J0OyB9CisgICAgZmlkbzo6UHJvdG9jb2xWZXJzaW9uIHByb3RvY29sKCkgY29uc3QgeyByZXR1
cm4gbV9wcm90b2NvbDsgfQorCiAgICAgdmlydHVhbCB2b2lkIHRyYW5zYWN0KFZlY3Rvcjx1aW50
OF90PiYmIGRhdGEsIFJlc3BvbnNlQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBj
YW5jZWwoKSB7IH07CiAKIHByb3RlY3RlZDoKLSAgICBDdGFwRHJpdmVyKCkgPSBkZWZhdWx0Owot
ICAgIGZpZG86OlByb3RvY29sVmVyc2lvbiBwcm90b2NvbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
dG9jb2w7IH0KKyAgICBDdGFwRHJpdmVyKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQg
dHJhbnNwb3J0KQorICAgICAgICA6IG1fdHJhbnNwb3J0KHRyYW5zcG9ydCkgeyB9CiAKIHByaXZh
dGU6CiAgICAgZmlkbzo6UHJvdG9jb2xWZXJzaW9uIG1fcHJvdG9jb2wgeyBmaWRvOjpQcm90b2Nv
bFZlcnNpb246OmtDdGFwIH07CisgICAgV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydCBt
X3RyYW5zcG9ydDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3Rh
cEhpZERyaXZlci5jcHAKaW5kZXggM2Q2ZWE0NGNiOWQ1NjNlOWY3ODdiOWY2YjA3OTc1YjFjMWM2
ZTJmNC4uMWJlMzNkMGU3Yjc4ODAzYWEyZWIxZTIzOTYyMDIwMDdkNjk4MmYyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlk
RHJpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9maWRvL0N0YXBIaWREcml2ZXIuY3BwCkBAIC0xNTcsNyArMTU3LDggQEAgdm9pZCBDdGFwSGlk
RHJpdmVyOjpXb3JrZXI6OmNhbmNlbChmaWRvOjpGaWRvSGlkTWVzc2FnZSYmIHJlcXVlc3RNZXNz
YWdlKQogfQogCiBDdGFwSGlkRHJpdmVyOjpDdGFwSGlkRHJpdmVyKFVuaXF1ZVJlZjxIaWRDb25u
ZWN0aW9uPiYmIGNvbm5lY3Rpb24pCi0gICAgOiBtX3dvcmtlcihtYWtlVW5pcXVlUmVmPFdvcmtl
cj4oV1RGTW92ZShjb25uZWN0aW9uKSkpCisgICAgOiBDdGFwRHJpdmVyKFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JUcmFuc3BvcnQ6OlVzYikKKyAgICAsIG1fd29ya2VyKG1ha2VVbmlxdWVSZWY8V29y
a2VyPihXVEZNb3ZlKGNvbm5lY3Rpb24pKSkKICAgICAsIG1fbm9uY2Uoa0hpZEluaXROb25jZUxl
bmd0aCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL2ZpZG8vQ3RhcE5mY0RyaXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBOZmNEcml2ZXIuY3BwCmluZGV4IDRhOWNhZjIw
MzBmNzY2NzMyOGM4MGM1Y2E5YjMyMDVkMjRhZTU0YjQuLjY4MGMxODM5ZWQ2ZjAwYzQ2MzEyYWVk
NGZkYjNkZjhkYTBkN2RkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcE5mY0RyaXZlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwTmZjRHJpdmVyLmNwcApAQCAt
MzcsNyArMzcsOCBAQCB1c2luZyBuYW1lc3BhY2UgYXBkdTsKIHVzaW5nIG5hbWVzcGFjZSBmaWRv
OwogCiBDdGFwTmZjRHJpdmVyOjpDdGFwTmZjRHJpdmVyKFJlZjxOZmNDb25uZWN0aW9uPiYmIGNv
bm5lY3Rpb24pCi0gICAgOiBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKKyAgICA6
IEN0YXBEcml2ZXIoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6TmZjKQorICAgICwgbV9jb25uZWN0
aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhl
bnRpY2F0b3IuY3BwCmluZGV4IDA0OThiZDAxZDBlMTU0MjA1NjliYTAzYTk2YTQ5MmQ2YTBjOTIy
NmMuLmUyNmVjNmY0NjI5MDBiOGZiYWZkZjRmOWYzZDc2NDhiMGY1YzRmZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVu
dGljYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgVTJm
QXV0aGVudGljYXRvcjo6Y29udGludWVSZWdpc3RlckNvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2
ZWQoQXBkdVJlc3BvbnNlCiAgICAgY2FzZSBBcGR1UmVzcG9uc2U6OlN0YXR1czo6U1dfTk9fRVJS
T1I6IHsKICAgICAgICAgYXV0byYgb3B0aW9ucyA9IHN0ZDo6Z2V0PFB1YmxpY0tleUNyZWRlbnRp
YWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyk7CiAgICAgICAgIGF1dG8g
YXBwSWQgPSBwcm9jZXNzR29vZ2xlTGVnYWN5QXBwSWRTdXBwb3J0RXh0ZW5zaW9uKG9wdGlvbnMu
ZXh0ZW5zaW9ucyk7Ci0gICAgICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNw
b25zZSghYXBwSWQgPyBvcHRpb25zLnJwLmlkIDogYXBwSWQsIGFwZHVSZXNwb25zZS5kYXRhKCks
IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtLCBvcHRpb25zLmF0dGVzdGF0
aW9uKTsKKyAgICAgICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKCFh
cHBJZCA/IG9wdGlvbnMucnAuaWQgOiBhcHBJZCwgYXBkdVJlc3BvbnNlLmRhdGEoKSwgQXV0aGVu
dGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0sIHsgZHJpdmVyKCkudHJhbnNwb3J0KCkg
fSwgb3B0aW9ucy5hdHRlc3RhdGlvbik7CiAgICAgICAgIGlmICghcmVzcG9uc2UpIHsKICAgICAg
ICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsICJDb3Vs
ZG4ndCBwYXJzZSB0aGUgVTJGIHJlZ2lzdGVyIHJlc3BvbnNlLiJfcyB9KTsKICAgICAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA3NWJkYzkyZTI3MjhjNDU0YWFlMzc2ZTYzMTVlNjA1ZjJlZGExYzA5Li4zZDNiYWU1ZDJk
YzAzYThlNjU0MjZjOTBmZmJmOWFkMjhkZGFjM2I3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDQtMTEgIEog
UGFzY29lICA8al9wYXNjb2VAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gSW1wbGVt
ZW50IGdldFRyYW5zcG9ydHMoKSBhbmQgZ2V0QXV0aGVudGljYXRvckRhdGEoKSBvbiBBdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzODk2NgorICAgICAgICByZGFyOi8vcHJvYmxlbS85MTQ0OTkw
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0
ZXN0cyBmb3IgcGFyc2luZyB0cmFuc3BvcnRzIGZyb20gZ2V0SW5mby4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9uc2VUZXN0LmNwcDoKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9GaWRvVGVzdERhdGEuaDoKKwogMjAyMi0wNC0xMSAgQW5kcmVzIEdvbnphbGV6ICA8YW5k
cmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgVGVzdFJ1bm5lcuKAmXMgY2FsbHMgdG8gW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNv
dW50Ol0gbmVlZCB0byBiZSBkaXNwYXRjaCB0byB0aGUgQVggc2Vjb25kYXJ5IHRocmVhZC4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9uc2VU
ZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9uc2VU
ZXN0LmNwcAppbmRleCA5ZTFiMWIxMzQ5MTQ1YTAwNzQzYmRiMzg5MmMzMGYyMjBiZDQ0YTllLi40
NTExMWIwNmE0Y2JhMjczYTg5YWFmNWQ4NjFiNjY0OWE0MDFiZjM5IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlc3BvbnNlVGVzdC5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBSZXNwb25zZVRlc3QuY3BwCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRmlkb1Rlc3REYXRhLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0
b3JBdHRhY2htZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdG9yVHJhbnNwb3J0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CdWZmZXJTb3VyY2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0NCT1JSZWFkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NCT1JWYWx1ZS5oPgpAQCAtMzUzLDkg
KzM1NCw5IEBAIFZlY3Rvcjx1aW50OF90PiBnZXRUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZShzaXpl
X3QgcHJlZml4U2l6ZSwgY29uc3QgdWludDhfdCBhcHBlCiAvLyBodHRwczovL2ZpZG9hbGxpYW5j
ZS5vcmcvc3BlY3MvZmlkby12Mi4wLXBzLTIwMTcwOTI3L2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRp
Y2F0b3ItcHJvdG9jb2wtdjIuMC1wcy0yMDE3MDkyNy5odG1sI2NvbW1hbmRzCiBURVNUKENUQVBS
ZXNwb25zZVRlc3QsIFRlc3RSZWFkTWFrZUNyZWRlbnRpYWxSZXNwb25zZSkKIHsKLSAgICBhdXRv
IG1ha2VDcmVkZW50aWFsUmVzcG9uc2UgPSByZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVzcG9uc2Uo
Y29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtUZXN0TWFrZUNyZWRlbnRpYWxSZXNwb25z
ZSwgc2l6ZW9mKFRlc3REYXRhOjprVGVzdE1ha2VDcmVkZW50aWFsUmVzcG9uc2UpKSwgQXV0aGVu
dGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0pOworICAgIGF1dG8gbWFrZUNyZWRlbnRp
YWxSZXNwb25zZSA9IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZShjb252ZXJ0Qnl0ZXNU
b1ZlY3RvcihUZXN0RGF0YTo6a1Rlc3RNYWtlQ3JlZGVudGlhbFJlc3BvbnNlLCBzaXplb2YoVGVz
dERhdGE6OmtUZXN0TWFrZUNyZWRlbnRpYWxSZXNwb25zZSkpLCBBdXRoZW50aWNhdG9yQXR0YWNo
bWVudDo6Q3Jvc3NQbGF0Zm9ybSwgeyB9KTsKICAgICBBU1NFUlRfVFJVRShtYWtlQ3JlZGVudGlh
bFJlc3BvbnNlKTsKLSAgICBhdXRvIGNib3JBdHRlc3RhdGlvbk9iamVjdCA9IGNib3I6OkNCT1JS
ZWFkZXI6OnJlYWQoY29udmVydEJ5dGVzVG9WZWN0b3IocmVpbnRlcnByZXRfY2FzdDx1aW50OF90
Kj4obWFrZUNyZWRlbnRpYWxSZXNwb25zZS0+YXR0ZXN0YXRpb25PYmplY3QoKS0+ZGF0YSgpKSwg
bWFrZUNyZWRlbnRpYWxSZXNwb25zZS0+YXR0ZXN0YXRpb25PYmplY3QoKS0+Ynl0ZUxlbmd0aCgp
KSk7CisgICAgYXV0byBjYm9yQXR0ZXN0YXRpb25PYmplY3QgPSBjYm9yOjpDQk9SUmVhZGVyOjpy
ZWFkKGNvbnZlcnRBcnJheUJ1ZmZlclRvVmVjdG9yKG1ha2VDcmVkZW50aWFsUmVzcG9uc2UtPmF0
dGVzdGF0aW9uT2JqZWN0KCkpKTsKICAgICBBU1NFUlRfVFJVRShjYm9yQXR0ZXN0YXRpb25PYmpl
Y3QpOwogICAgIEFTU0VSVF9UUlVFKGNib3JBdHRlc3RhdGlvbk9iamVjdC0+aXNNYXAoKSk7CiAK
QEAgLTYxMCw2ICs2MTEsMjQgQEAgVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UmVhZEdldElu
Zm9SZXNwb25zZTIpCiAgICAgRVhQRUNUX0VRKEF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25z
OjpDbGllbnRQaW5BdmFpbGFiaWxpdHk6OmtTdXBwb3J0ZWRCdXRQaW5Ob3RTZXQsIGdldEluZm9S
ZXNwb25zZS0+b3B0aW9ucygpLmNsaWVudFBpbkF2YWlsYWJpbGl0eSgpKTsKIH0KIAorVEVTVChD
VEFQUmVzcG9uc2VUZXN0LCBUZXN0UmVhZEdldEluZm9SZXNwb25zZURldmljZVl1YmlrZXk1YykK
K3sKKyAgICBhdXRvIGdldEluZm9SZXNwb25zZSA9IHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKGNv
bnZlcnRCeXRlc1RvVmVjdG9yKFRlc3REYXRhOjprVGVzdEdldEluZm9SZXNwb25zZURldmljZVl1
YmlrZXk1Yywgc2l6ZW9mKFRlc3REYXRhOjprVGVzdEdldEluZm9SZXNwb25zZURldmljZVl1Ymlr
ZXk1YykpKTsKKyAgICBBU1NFUlRfVFJVRShnZXRJbmZvUmVzcG9uc2UpOworICAgIEFTU0VSVF9U
UlVFKGdldEluZm9SZXNwb25zZS0+bWF4TXNnU2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoKmdldElu
Zm9SZXNwb25zZS0+bWF4TXNnU2l6ZSgpLCAxMjAwdSk7CisgICAgRVhQRUNUX05FKGdldEluZm9S
ZXNwb25zZS0+dmVyc2lvbnMoKS5maW5kKFByb3RvY29sVmVyc2lvbjo6a0N0YXApLCBnZXRJbmZv
UmVzcG9uc2UtPnZlcnNpb25zKCkuZW5kKCkpOworICAgIEVYUEVDVF9ORShnZXRJbmZvUmVzcG9u
c2UtPnZlcnNpb25zKCkuZmluZChQcm90b2NvbFZlcnNpb246OmtVMmYpLCBnZXRJbmZvUmVzcG9u
c2UtPnZlcnNpb25zKCkuZW5kKCkpOworICAgIEVYUEVDVF9GQUxTRShnZXRJbmZvUmVzcG9uc2Ut
Pm9wdGlvbnMoKS5pc1BsYXRmb3JtRGV2aWNlKCkpOworICAgIEVYUEVDVF9FUShBdXRoZW50aWNh
dG9yU3VwcG9ydGVkT3B0aW9uczo6UmVzaWRlbnRLZXlBdmFpbGFiaWxpdHk6OmtTdXBwb3J0ZWQs
IGdldEluZm9SZXNwb25zZS0+b3B0aW9ucygpLnJlc2lkZW50S2V5QXZhaWxhYmlsaXR5KCkpOwor
ICAgIEVYUEVDVF9UUlVFKGdldEluZm9SZXNwb25zZS0+b3B0aW9ucygpLnVzZXJQcmVzZW5jZVJl
cXVpcmVkKCkpOworICAgIEVYUEVDVF9FUShBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9uczo6
VXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eTo6a05vdFN1cHBvcnRlZCwgZ2V0SW5mb1Jlc3Bv
bnNlLT5vcHRpb25zKCkudXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eSgpKTsKKyAgICBFWFBF
Q1RfRVEoQXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnM6OkNsaWVudFBpbkF2YWlsYWJpbGl0
eTo6a1N1cHBvcnRlZEFuZFBpblNldCwgZ2V0SW5mb1Jlc3BvbnNlLT5vcHRpb25zKCkuY2xpZW50
UGluQXZhaWxhYmlsaXR5KCkpOworICAgIEVYUEVDVF9UUlVFKGdldEluZm9SZXNwb25zZS0+dHJh
bnNwb3J0cygpKTsKKyAgICBFWFBFQ1RfRVEoZ2V0SW5mb1Jlc3BvbnNlLT50cmFuc3BvcnRzKCkt
PnNpemUoKSwgMXUpOworICAgIEVYUEVDVF9FUShBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2Is
IGdldEluZm9SZXNwb25zZS0+dHJhbnNwb3J0cygpLT5maXJzdCgpKTsKK30KKwogVEVTVChDVEFQ
UmVzcG9uc2VUZXN0LCBUZXN0UmVhZEdldEluZm9SZXNwb25zZVdpdGhJbmNvcnJlY3RGb3JtYXQp
CiB7CiAgICAgRVhQRUNUX0ZBTFNFKHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKGNvbnZlcnRCeXRl
c1RvVmVjdG9yKGtUZXN0QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZVdpdGhOb1ZlcnNpb24s
IHNpemVvZihrVGVzdEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2VXaXRoTm9WZXJzaW9uKSkp
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvVGVz
dERhdGEuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvVGVzdERhdGEu
aAppbmRleCA3Yzc1MDBmZDJlMTkzMDE5ODFmYzQ0NDcwZjhhYzczNGY3MDAxY2I2Li41MTM3NTJj
MzY3N2RkZmUxMWEzYjliMDgwMTI0MDBiOGUzNDViMDdjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb1Rlc3REYXRhLmgKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9UZXN0RGF0YS5oCkBAIC0xNDQ2LDYgKzE0NDYsNDEg
QEAgY29uc3RleHByIHVpbnQ4X3Qga0N0YXBDbGllbnRQaW5SZXRyaWVzUmVzcG9uc2VbXSA9IHsK
ICAgICAweDA4LAogfTsKIAorY29uc3RleHByIHVpbnQ4X3Qga1Rlc3RHZXRJbmZvUmVzcG9uc2VE
ZXZpY2VZdWJpa2V5NWNbXSA9IHsKKyAgICAvLyBTdWNjZXNzCisgICAgMHgwMCwKKyAgICAweEFB
LCAweDAxLCAweDgzLCAweDY2LCAweDU1LCAweDMyLCAweDQ2LCAweDVGLCAweDU2LCAweDMyLCAw
eDY4LCAweDQ2LAorICAgIDB4NDksIDB4NDQsIDB4NEYsIDB4NUYsIDB4MzIsIDB4NUYsIDB4MzAs
IDB4NkMsIDB4NDYsIDB4NDksIDB4NDQsIDB4NEYsCisgICAgMHg1RiwgMHgzMiwgMHg1RiwgMHgz
MSwgMHg1RiwgMHg1MCwgMHg1MiwgMHg0NSwgMHgwMiwgMHg4MiwgMHg2QiwgMHg2MywKKyAgICAw
eDcyLCAweDY1LCAweDY0LCAweDUwLCAweDcyLCAweDZGLCAweDc0LCAweDY1LCAweDYzLCAweDc0
LCAweDZCLCAweDY4LAorICAgIDB4NkQsIDB4NjEsIDB4NjMsIDB4MkQsIDB4NzMsIDB4NjUsIDB4
NjMsIDB4NzIsIDB4NjUsIDB4NzQsIDB4MDMsIDB4NTAsCisgICAgMHhFRSwgMHg4OCwgMHgyOCwg
MHg3OSwgMHg3MiwgMHgxQywgMHg0OSwgMHgxMywgMHg5NywgMHg3NSwgMHgzRCwgMHhGQywKKyAg
ICAweENFLCAweDk3LCAweDA3LCAweDJBLCAweDA0LCAweEE1LCAweDYyLCAweDcyLCAweDZCLCAw
eEY1LCAweDYyLCAweDc1LAorICAgIDB4NzAsIDB4RjUsIDB4NjQsIDB4NzAsIDB4NkMsIDB4NjEs
IDB4NzQsIDB4RjQsIDB4NjksIDB4NjMsIDB4NkMsIDB4NjksCisgICAgMHg2NSwgMHg2RSwgMHg3
NCwgMHg1MCwgMHg2OSwgMHg2RSwgMHhGNSwgMHg3NSwgMHg2MywgMHg3MiwgMHg2NSwgMHg2NCwK
KyAgICAweDY1LCAweDZFLCAweDc0LCAweDY5LCAweDYxLCAweDZDLCAweDRELCAweDY3LCAweDZE
LCAweDc0LCAweDUwLCAweDcyLAorICAgIDB4NjUsIDB4NzYsIDB4NjksIDB4NjUsIDB4NzcsIDB4
RjUsIDB4MDUsIDB4MTksIDB4MDQsIDB4QjAsIDB4MDYsIDB4ODEsCisgICAgMHgwMSwKKyAgICAv
LyBrZXkoMDcpIC0gbWF4Q3JlZGVudGlhbENvdW50SW5MaXN0CisgICAgMHgwNywKKyAgICAvLyB2
YWx1ZSAtIHVuc2lnbmVkKDgpCisgICAgMHgwOCwKKyAgICAvLyBrZXkoMDgpIC0gbWF4Q3JlZGVu
dGlhbElkTGVuZ3RoCisgICAgMHgwOCwKKyAgICAvLyB2YWx1ZSAtIHVuc2lnbmVkKDEyOCkKKyAg
ICAweDE4LCAweDgwLAorICAgIC8vIGtleSgwOSkgLSB0cmFuc3BvcnRzCisgICAgMHgwOSwKKyAg
ICAvLyBhcnJheSgxKQorICAgIDB4ODEsCisgICAgLy8gdGV4dCgzKSAtICJ1c2IiCisgICAgMHg2
MywgMHg3NSwgMHg3MywgMHg2MiwKKyAgICAweDBBLCAweDgyLCAweEEyLCAweDYzLCAweDYxLCAw
eDZDLCAweDY3LCAweDI2LCAweDY0LCAweDc0LCAweDc5LCAweDcwLAorICAgIDB4NjUsIDB4NkEs
IDB4NzAsIDB4NzUsIDB4NjIsIDB4NkMsIDB4NjksIDB4NjMsIDB4MkQsIDB4NkIsIDB4NjUsIDB4
NzksCisgICAgMHhBMiwgMHg2MywgMHg2MSwgMHg2QywgMHg2NywgMHgyNywgMHg2NCwgMHg3NCwg
MHg3OSwgMHg3MCwgMHg2NSwgMHg2QSwKKyAgICAweDcwLCAweDc1LCAweDYyLCAweDZDLCAweDY5
LCAweDYzLCAweDJELCAweDZCLCAweDY1LCAweDc5LAorfTsKKwogfSAvLyBuYW1lc3BhY2UgVGVz
dERhdGEKIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDllOTIzMzEyZjk3
MTg2YWU4MzlhNzJmNzAwNzk2MmQ1Y2QzOGNkMGQuLmRiYWYyMmZiOGM3ZDQwZjU0MzUwOGY5M2Nm
ODdlYzIxMTZkOWU5MTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0wNC0xMSAgSiBQYXNj
b2UgIDxqX3Bhc2NvZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBsZW1lbnQg
Z2V0VHJhbnNwb3J0cygpIGFuZCBnZXRBdXRoZW50aWNhdG9yRGF0YSgpIG9uIEF1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzg5NjYKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vOTE0NDk5MDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZ2V0VHJh
bnNwb3J0cygpIHRvIHRlc3QuCisKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWw6CisgICAgICAgICog
aHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanM6CisKIDIwMjItMDQtMTEgIEFuZHJl
cyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAgICAgICAgIFJld3JpdGUgYWNj
ZXNzaWJpbGl0eS90YWJsZS1tb2RpZmljYXRpb24tY3Jhc2guaHRtbCB0byB0ZXN0IHRoYXQgdGhl
IEFYIHRyZWUgcmVmbGVjdHMgdGhlIGNoYW5nZXMgbWFkZSB0byB0aGUgdGFibGUgcm93cy4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMu
aHRtbAppbmRleCA1MmZjYjE2NDFlMTNkODdkNzVkYjg3ZDIwYjlkMTNiODBmYjc1NWExLi4zMWMz
NjQzN2I4YjY4ZmZiN2UyYjYxOWVhZmEyZDk5YTIzNWY2ZDRkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nl
c3MtaGlkLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sCkBAIC0xLDQg
KzEsNCBAQAotPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBXZWJBdXRo
ZW50aWNhdGlvbk1vZGVybkVuYWJsZWQ9dHJ1ZSBdIC0tPgorPCFET0NUWVBFIGh0bWw+PCEtLSB3
ZWJraXQtdGVzdC1ydW5uZXIgIFsgV2ViQXV0aGVudGljYXRpb25Nb2Rlcm5FbmFibGVkPWZhbHNl
IF0gLS0+CiA8dGl0bGU+V2ViIEF1dGhlbnRpY2F0aW9uIEFQSTogUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbY3JlYXRlXV0gc3VjY2VzcyBjYXNlcyB3aXRoIGEgbW9jayBoaWQgYXV0aGVudGljYXRv
ci48L3RpdGxlPgogPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgpAQCAtMjcsNyArMjcsNyBAQAogICAgICAgICB9OwogCiAgICAgICAgIHJldHVybiBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0g
ICAgICAgICAgICBjaGVja0N0YXBNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsKTsKKyAg
ICAgICAgICAgIGNoZWNrQ3RhcE1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwsIHRydWUs
IFsidXNiIl0pOwogICAgICAgICB9KTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Y3JlYXRlXV0gd2l0aCBtaW5pbXVtIG9wdGlvbnMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9y
LiIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJj
ZXMvdXRpbC5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91dGls
LmpzCmluZGV4IGU1YWE4NGI5NTIxMWU2OTRlMTg1YTdhMDUzZTg0M2RjNTllZjkyYjEuLjdmYmFl
OWUzM2QzMjI2OTM0ZTgwOThiN2U3ZTJhZTU0NTM3NDEwNDggMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91dGlsLmpzCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91dGlsLmpzCkBAIC0zNTUsNyArMzU1LDcgQEAg
ZnVuY3Rpb24gY2hlY2tQdWJsaWNLZXkocHVibGljS2V5KQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1mdW5jdGlvbiBjaGVja0N0YXBNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsLCBpc05v
bmVBdHRlc3RhdGlvbiA9IHRydWUpCitmdW5jdGlvbiBjaGVja0N0YXBNYWtlQ3JlZGVudGlhbFJl
c3VsdChjcmVkZW50aWFsLCBpc05vbmVBdHRlc3RhdGlvbiA9IHRydWUsIHRyYW5zcG9ydHMgPSBu
dWxsKQogewogICAgIC8vIENoZWNrIHJlc3BvbnNlCiAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhC
YXNlNjRVUkwucGFyc2UoY3JlZGVudGlhbC5pZCksIEJhc2U2NFVSTC5wYXJzZSh0ZXN0SGlkQ3Jl
ZGVudGlhbElkQmFzZTY0KSk7CkBAIC0zODgsNiArMzg4LDggQEAgZnVuY3Rpb24gY2hlY2tDdGFw
TWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVudGlhbCwgaXNOb25lQXR0ZXN0YXRpb24gPSB0cnVl
KQogICAgICAgICBhc3NlcnRfZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmF0dFN0bXQuYWxnLCAt
Nyk7CiAgICAgICAgIGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuYXR0U3RtdC54NWMu
bGVuZ3RoLCAxKTsKICAgICB9CisgICAgaWYgKHRyYW5zcG9ydHMpCisgICAgICAgIGFzc2VydF9h
cnJheV9lcXVhbHModHJhbnNwb3J0cywgY3JlZGVudGlhbC5yZXNwb25zZS5nZXRUcmFuc3BvcnRz
KCkpOwogfQogCiBmdW5jdGlvbiBjaGVja1UyZk1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRp
YWwsIGlzTm9uZUF0dGVzdGF0aW9uID0gdHJ1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457643</attachid>
            <date>2022-04-14 11:43:50 -0700</date>
            <delta_ts>2022-04-15 10:39:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238966-20220414114349.patch</filename>
            <type>text/plain</type>
            <size>61887</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzk2Y2E4ODFkZGExNTIy
MDAzY2M2OWE3YWIxODYwYzIxZDNiOGNjZS4uMzY5ZDUzZGYwYWY0YmViODUxMGY4MWM2MGQzZWEz
NGY1ZWU3YTkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIyLTA0LTE0ICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVu
dCBnZXRUcmFuc3BvcnRzKCkgYW5kIGdldEF1dGhlbnRpY2F0b3JEYXRhKCkgb24gQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzODk2NgorICAgICAgICByZGFyOi8vcHJvYmxlbS85MTQ0OTkwNgor
CisgICAgICAgIFRoaXMgY2hhbmdlIGltcGxlbWVudHMgdGhlIGdldFRyYW5zcG9ydHMoKSBhbmQg
Z2V0QXV0aGVudGljYXRvckRhdGEoKSBmdW5jdGlvbnMKKyAgICAgICAgb24gQXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2UuIEZvciBzZWN1cml0eSBrZXlzLCB0aGUgc3VwcG9ydGVkIHRy
YW5zcG9ydHMgb2YKKyAgICAgICAgdGhlIGtleSBhcmUgcGFyc2VkIGZyb20gYXV0aGVudGljYXRv
ckdldEluZm8uIEZvciB0aGUgbG9jYWwgYXV0aGVudGljYXRvciwgdGhlIHN1cHBvcnRlZAorICAg
ICAgICB0cmFuc3BvcnRzIGFyZSBzcGVjaWZpZWQgYWNjb3JkaW5nIHRvIHdoaWNoIGZlYXR1cmVz
IGFyZSBhdmFpbGFibGUuIGdldEF1dGhlbnRpY2F0b3JEYXRhKCkKKyAgICAgICAgaXMgYSBjb252
ZW5pZW5jZSBtZXRob2QgZm9yIFJQcyB3aG8gd2FudCB0byBhdm9pZCBwYXJzaW5nIENCT1IuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OkF1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpnZXRUcmFuc3BvcnRzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpnZXRBdXRo
ZW50aWNhdG9yRGF0YSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JSZXNwb25zZTo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGlj
YXRvclJlc3BvbnNlRGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JSZXNwb25zZURhdGE6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdG9yVHJhbnNwb3J0LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL1dl
YkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9X
ZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRBcnJh
eUJ1ZmZlclRvVmVjdG9yKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRp
Y2F0aW9uVXRpbHMuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vQXV0aGVudGlj
YXRvckdldEluZm9SZXNwb25zZS5jcHA6CisgICAgICAgIChmaWRvOjpBdXRoZW50aWNhdG9yR2V0
SW5mb1Jlc3BvbnNlOjpzZXRUcmFuc3BvcnRzKToKKyAgICAgICAgKGZpZG86OnRvU3RyaW5nVmVj
dG9yKToKKyAgICAgICAgKGZpZG86OmVuY29kZUFzQ0JPUik6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdXRobi9maWRvL0F1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UuaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3BwOgorICAgICAg
ICAoZmlkbzo6Y29udmVydFN0cmluZ1RvQXV0aGVudGljYXRvclRyYW5zcG9ydCk6CisgICAgICAg
IChmaWRvOjpyZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVzcG9uc2UpOgorICAgICAgICAoZmlkbzo6
cmVhZENUQVBHZXRJbmZvUmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlk
by9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4v
Zmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHA6CisgICAgICAgIChmaWRvOjpyZWFkVTJmUmVn
aXN0ZXJSZXNwb25zZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3Bv
bnNlQ29udmVydGVyLmg6CisgICAgICAgIChmaWRvOjpyZWFkVTJmUmVnaXN0ZXJSZXNwb25zZSk6
CisKIDIwMjItMDQtMTQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBVcGRhdGUgQ29udGFpbmVyTm9kZTo6Z2V0RWxlbWVudHNCeU5hbWUoKSB0byB0YWtlIGluIGFu
IEF0b21TdHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOTE0OWE2ODkzZTQ5NzgwNDZmNGMxNGQxNDkyZjMxZDM2
YThmYTZhOS4uOWQyNjBhMWM4MzMyNTFjODI3MGQwNjc0MDVkYjVjZDFhY2I5MmJkZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1MCBAQAorMjAyMi0wNC0xNCAgSiBQYXNjb2UgIDxqX3Bhc2NvZUBhcHBs
ZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBsZW1lbnQgZ2V0VHJhbnNwb3J0cygpIGFu
ZCBnZXRBdXRoZW50aWNhdG9yRGF0YSgpIG9uIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3Bv
bnNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg5
NjYKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vOTE0NDk5MDYKKworICAgICAgICBUaGlzIGNoYW5n
ZSBpbXBsZW1lbnRzIHRoZSBnZXRUcmFuc3BvcnRzKCkgYW5kIGdldEF1dGhlbnRpY2F0b3JEYXRh
KCkgZnVuY3Rpb25zCisgICAgICAgIG9uIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
LiBGb3Igc2VjdXJpdHkga2V5cywgdGhlIHN1cHBvcnRlZCB0cmFuc3BvcnRzIG9mCisgICAgICAg
IHRoZSBrZXkgYXJlIHBhcnNlZCBmcm9tIGF1dGhlbnRpY2F0b3JHZXRJbmZvLiBGb3IgdGhlIGxv
Y2FsIGF1dGhlbnRpY2F0b3IsIHRoZSBzdXBwb3J0ZWQKKyAgICAgICAgdHJhbnNwb3J0cyBhcmUg
c3BlY2lmaWVkIGFjY29yZGluZyB0byB3aGljaCBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlLiBnZXRB
dXRoZW50aWNhdG9yRGF0YSgpCisgICAgICAgIGlzIGEgY29udmVuaWVuY2UgbWV0aG9kIGZvciBS
UHMgd2hvIHdhbnQgdG8gYXZvaWQgcGFyc2luZyBDQk9SLgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm0vc3BpL0NvY29hL0F1dGhlbnRp
Y2F0aW9uU2VydmljZXNDb3JlU1BJLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UubW06CisgICAg
ICAgICgtW19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIGluaXRXaXRoQ2xpZW50
RGF0YUpTT046cmF3SWQ6ZXh0ZW5zaW9uczphdHRlc3RhdGlvbk9iamVjdDphdHRhY2htZW50OnRy
YW5zcG9ydHM6XSk6CisgICAgICAgICgtW19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3Bv
bnNlIGluaXRXaXRoQ2xpZW50RGF0YUpTT046cmF3SWQ6ZXh0ZW5zaW9uczphdHRlc3RhdGlvbk9i
amVjdDphdHRhY2htZW50Ol0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2VJbnRlcm5hbC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAg
ICAgICAgKHdrRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMpOgorICAgICAgICAod2tBdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZSk6CisgICAgICAgICh3a0F1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L0xvY2FsQXV0aGVudGljYXRvci5tbToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNh
dG9ySW50ZXJuYWw6OnRyYW5zcG9ydHMpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRp
Y2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJWZXJpZmljYXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxB
ZnRlckF0dGVzdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6
OnRvQVNDRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJLaXQ6OnRvQXV0aGVudGljYXRvclRyYW5z
cG9ydHMpOgorICAgICAgICAoV2ViS2l0Ojpjb250aW51ZUFmdGVyUmVxdWVzdCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpDdGFwQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVu
dGlhbEFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJLaXQ6OkN0YXBBdXRoZW50
aWNhdG9yOjp0cmFuc3BvcnRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vZmlkby9DdGFwQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9maWRvL0N0YXBEcml2ZXIuaDoKKyAgICAgICAgKFdlYktpdDo6Q3RhcERyaXZl
cjo6dHJhbnNwb3J0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Q3RhcERyaXZlcjo6cHJvdG9j
b2wgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpDdGFwRHJpdmVyOjpDdGFwRHJpdmVyKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZERyaXZlcjo6Q3RhcEhpZERyaXZlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcE5mY0RyaXZlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkN0YXBOZmNEcml2ZXI6OkN0YXBOZmNEcml2ZXIpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpVMmZBdXRoZW50aWNhdG9yOjpjb250aW51ZVJlZ2lzdGVyQ29t
bWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6CisKIDIwMjItMDQtMTQgIEp1c3RpbiBNaWNoYXVk
ICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtQR09dIFdlIHNob3VsZCBi
ZSBhYmxlIHRvIGJ1aWxkIFdlYktpdCB0byBjb2xsZWN0IFBHTyBwcm9maWxlcyBlYXNpbHkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5jcHAKaW5kZXggNGU4Yjc0OWU0YzAwNzA5
ZmRhMzAxYTdhZmU1ZmQ5OTVlNDA3ODQ1MC4uZmFkMGFhN2FhYmQwMDIxN2ZiOTdkYzY3NGFjYjM0
MzIwMzBmNmNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5jcHAKQEAg
LTI5LDIyICsyOSwyNSBAQAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJBdXRo
ZW50aWNhdG9yUmVzcG9uc2VEYXRhLmgiCisjaW5jbHVkZSAiQ0JPUlJlYWRlci5oIgorI2luY2x1
ZGUgIldlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZWY8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlOjpjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlC
dWZmZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFj
aG1lbnQpCitSZWY8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBS
ZWY8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2ht
ZW50IGF0dGFjaG1lbnQsIFZlY3RvcjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiYmIHRyYW5zcG9y
dHMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2UoV1RGTW92ZShyYXdJZCksIFdURk1vdmUoYXR0ZXN0YXRpb25PYmplY3QpLCBhdHRh
Y2htZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2UoV1RGTW92ZShyYXdJZCksIFdURk1vdmUoYXR0ZXN0YXRpb25PYmplY3QpLCBh
dHRhY2htZW50LCBXVEZNb3ZlKHRyYW5zcG9ydHMpKSk7CiB9CiAKLVJlZjxBdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNy
ZWF0ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGF0dGVzdGF0aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50KQor
UmVmPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZTo6Y3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2ht
ZW50IGF0dGFjaG1lbnQsIFZlY3RvcjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiYmIHRyYW5zcG9y
dHMpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3JlYXRlKHJhd0lkLmRhdGEo
KSwgcmF3SWQuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdHRlc3RhdGlvbk9iamVjdC5k
YXRhKCksIGF0dGVzdGF0aW9uT2JqZWN0LnNpemUoKSksIGF0dGFjaG1lbnQpOworICAgIHJldHVy
biBjcmVhdGUoQXJyYXlCdWZmZXI6OmNyZWF0ZShyYXdJZC5kYXRhKCksIHJhd0lkLnNpemUoKSks
IEFycmF5QnVmZmVyOjpjcmVhdGUoYXR0ZXN0YXRpb25PYmplY3QuZGF0YSgpLCBhdHRlc3RhdGlv
bk9iamVjdC5zaXplKCkpLCBhdHRhY2htZW50LCBXVEZNb3ZlKHRyYW5zcG9ydHMpKTsKIH0KIAot
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlv
blJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF0
dGVzdGF0aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50KQorQXV0
aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF0dGVz
dGF0aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50LCBWZWN0b3I8
QXV0aGVudGljYXRvclRyYW5zcG9ydD4mJiB0cmFuc3BvcnRzKQogICAgIDogQXV0aGVudGljYXRv
clJlc3BvbnNlKFdURk1vdmUocmF3SWQpLCBhdHRhY2htZW50KQogICAgICwgbV9hdHRlc3RhdGlv
bk9iamVjdChXVEZNb3ZlKGF0dGVzdGF0aW9uT2JqZWN0KSkKKyAgICAsIG1fdHJhbnNwb3J0cyhX
VEZNb3ZlKHRyYW5zcG9ydHMpKQogewogfQogCkBAIC01Myw5ICs1NiwyNyBAQCBBdXRoZW50aWNh
dG9yUmVzcG9uc2VEYXRhIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpkYXRhKCkg
Y29uc3QKICAgICBhdXRvIGRhdGEgPSBBdXRoZW50aWNhdG9yUmVzcG9uc2U6OmRhdGEoKTsKICAg
ICBkYXRhLmlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgPSB0cnVlOwogICAgIGRh
dGEuYXR0ZXN0YXRpb25PYmplY3QgPSBtX2F0dGVzdGF0aW9uT2JqZWN0LmNvcHlSZWYoKTsKKyAg
ICBkYXRhLnRyYW5zcG9ydHMgPSBtX3RyYW5zcG9ydHM7CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAK
K1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6Omdl
dEF1dGhlbnRpY2F0b3JEYXRhKCkgY29uc3QKK3sKKyAgICBhdXRvIGRlY29kZWRSZXNwb25zZSA9
IGNib3I6OkNCT1JSZWFkZXI6OnJlYWQoY29udmVydEFycmF5QnVmZmVyVG9WZWN0b3IobV9hdHRl
c3RhdGlvbk9iamVjdC5wdHIoKSkpOworICAgIGlmICghZGVjb2RlZFJlc3BvbnNlIHx8ICFkZWNv
ZGVkUmVzcG9uc2UtPmlzTWFwKCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBjb25zdCBhdXRvJiBhdHRPYmpNYXAg
PSBkZWNvZGVkUmVzcG9uc2UtPmdldE1hcCgpOworICAgIGF1dG8gaXQgPSBhdHRPYmpNYXAuZmlu
ZChjYm9yOjpDQk9SVmFsdWUoImF1dGhEYXRhIikpOworICAgIGlmIChpdCA9PSBhdHRPYmpNYXAu
ZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNCeXRlU3RyaW5nKCkpIHsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBhdXRvIGF1
dGhEYXRhID0gaXQtPnNlY29uZC5nZXRCeXRlU3RyaW5nKCk7CisgICAgcmV0dXJuIEFycmF5QnVm
ZmVyOjp0cnlDcmVhdGUoYXV0aERhdGEuZGF0YSgpLCBhdXRoRGF0YS5zaXplKCkpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oCmluZGV4IDI2MjNlYTg1OTljNDcxNTQ3YWFh
NTA5YzdhMjY4YjRhZTQ4ZjZiMWUuLjA1Y2NhNmU2ZjFjNjM1YWMyM2ZiMWE2MDZhYWExYWJlNmYy
MDdmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmgKQEAgLTI4LDI1ICsy
OCwyOSBAQAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdG9y
UmVzcG9uc2UuaCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9yVHJhbnNwb3J0LmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2Ug
OiBwdWJsaWMgQXV0aGVudGljYXRvclJlc3BvbnNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBjcmVhdGUoUmVmPEFycmF5QnVmZmVy
PiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRp
Y2F0b3JBdHRhY2htZW50KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEF1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBjcmVhdGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBy
YXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdHRlc3RhdGlvbk9iamVjdCwgQXV0aGVudGlj
YXRvckF0dGFjaG1lbnQpOworICAgIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2U+IGNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZl
cj4mJiBhdHRlc3RhdGlvbk9iamVjdCwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQsIFZlY3RvcjxB
dXRoZW50aWNhdG9yVHJhbnNwb3J0PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBjcmVhdGUoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdHRlc3RhdGlvbk9iamVjdCwg
QXV0aGVudGljYXRvckF0dGFjaG1lbnQsIFZlY3RvcjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiYm
KTsKIAogICAgIHZpcnR1YWwgfkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKCkgPSBk
ZWZhdWx0OwogCiAgICAgQXJyYXlCdWZmZXIqIGF0dGVzdGF0aW9uT2JqZWN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9hdHRlc3RhdGlvbk9iamVjdC5wdHIoKTsgfQorICAgIGNvbnN0IFZlY3RvcjxBdXRo
ZW50aWNhdG9yVHJhbnNwb3J0PiYgZ2V0VHJhbnNwb3J0cygpIGNvbnN0IHsgcmV0dXJuIG1fdHJh
bnNwb3J0czsgfQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gZ2V0QXV0aGVudGljYXRvckRhdGEo
KSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZShSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZjxBcnJheUJ1ZmZlcj4mJiwgQXV0aGVudGljYXRvckF0
dGFjaG1lbnQpOworICAgIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKFJlZjxBcnJh
eUJ1ZmZlcj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCwg
VmVjdG9yPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+JiYpOwogCiAgICAgVHlwZSB0eXBlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gVHlwZTo6QXR0ZXN0YXRpb247IH0KICAgICBBdXRoZW50aWNhdG9y
UmVzcG9uc2VEYXRhIGRhdGEoKSBjb25zdCBmaW5hbDsKIAogICAgIFJlZjxBcnJheUJ1ZmZlcj4g
bV9hdHRlc3RhdGlvbk9iamVjdDsKKyAgICBWZWN0b3I8QXV0aGVudGljYXRvclRyYW5zcG9ydD4g
bV90cmFuc3BvcnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25S
ZXNwb25zZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlLmlkbAppbmRleCAxYzAwYzE1ZmI1MDQ4ODYwOGE1OWRkMWFl
MjRhOWJlMzcxNmMyM2QzLi40M2Q2NDRkMmI3YWVhYzY1ZjAwMWM5ZTM3NmQxNjJmMDUwZDU4NzQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmlkbApAQCAtMzAsNCArMzAs
NiBAQAogICAgIFNlY3VyZUNvbnRleHQKIF0gaW50ZXJmYWNlIEF1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlIDogQXV0aGVudGljYXRvclJlc3BvbnNlIHsKICAgICBbU2FtZU9iamVjdF0g
cmVhZG9ubHkgYXR0cmlidXRlIEFycmF5QnVmZmVyIGF0dGVzdGF0aW9uT2JqZWN0OworICAgIHNl
cXVlbmNlPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+IGdldFRyYW5zcG9ydHMoKTsKKyAgICBBcnJh
eUJ1ZmZlciBnZXRBdXRoZW50aWNhdG9yRGF0YSgpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmNwcAppbmRl
eCA3YTQxNjY5ZGQ2ZTdhZjQwM2QxZGUyMjY5N2M4NDQ1MDkyOGM1YjdkLi5jNmQzMmI4ZGNmODNi
MTAzZmMxMzYwYzI4YjQ5NWMwMmNmNDg0MzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuY3BwCkBAIC00Myw3
ICs0Myw3IEBAIFJlZlB0cjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JSZXNw
b25zZTo6dHJ5Q3JlYXRlKEF1dGhlbnRpY2F0b3JSZXNwCiAgICAgICAgIGlmICghZGF0YS5hdHRl
c3RhdGlvbk9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIHJl
dHVybiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKGRhdGEucmF3SWQu
cmVsZWFzZU5vbk51bGwoKSwgZGF0YS5hdHRlc3RhdGlvbk9iamVjdC5yZWxlYXNlTm9uTnVsbCgp
LCBhdHRhY2htZW50KTsKKyAgICAgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlOjpjcmVhdGUoZGF0YS5yYXdJZC5yZWxlYXNlTm9uTnVsbCgpLCBkYXRhLmF0dGVzdGF0
aW9uT2JqZWN0LnJlbGVhc2VOb25OdWxsKCksIGF0dGFjaG1lbnQsIFdURk1vdmUoZGF0YS50cmFu
c3BvcnRzKSk7CiAgICAgfQogCiAgICAgaWYgKCFkYXRhLmF1dGhlbnRpY2F0b3JEYXRhIHx8ICFk
YXRhLnNpZ25hdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oCmluZGV4IGIwNjcxZWViMTExZmU1ZGFiMGI0MzA0
OTJkMDljMWZiNDU1ZDUyZmYuLmZkMWY1MGRiYTAzNWI5OTZmYmRhMmQ5Mjk3NWFjZmI4MjI3YzJj
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRvclJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yUmVzcG9uc2UuaApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBlbnVtIGNsYXNzIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OworZW51bSBjbGFzcyBBdXRo
ZW50aWNhdG9yVHJhbnNwb3J0OwogCiBzdHJ1Y3QgQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dG9yUmVzcG9uc2VEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JSZXNwb25zZURhdGEuaAppbmRleCA4MTkwZjM4ZjI3NGZiYWYyZDgyZGU0OTAzZDRi
MmFkYzQ1ZDc4YTljLi5iZDYxYjNiZGY2OWQ2NDI5ZjI1YzQxZGE3NDkzMWVmYWEzZDkwOTFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JS
ZXNwb25zZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JSZXNwb25zZURhdGEuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdF
Ql9BVVRITikKIAorI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAKQEAgLTUxLDYgKzUyLDggQEAgc3RydWN0IEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgewog
ICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2lnbmF0dXJlOwogICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gdXNlckhhbmRsZTsKIAorICAgIFZlY3RvcjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNw
b3J0PiB0cmFuc3BvcnRzOworCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE+IGRlY29kZShEZWNvZGVyJik7
CiB9OwpAQCAtOTQsNiArOTcsNyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogCiAgICAgaWYgKGlzQXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2UgJiYgYXR0ZXN0YXRpb25PYmplY3QpIHsKICAgICAgICAgZW5jb2Rl
QXJyYXlCdWZmZXIoZW5jb2RlciwgKmF0dGVzdGF0aW9uT2JqZWN0KTsKKyAgICAgICAgZW5jb2Rl
ciA8PCB0cmFuc3BvcnRzOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzksNiArMTQz
LDEyIEBAIHN0ZDo6b3B0aW9uYWw8QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YT4gQXV0aGVudGlj
YXRvclJlc3BvbnNlRGF0YTo6ZGVjb2RlKERlY29kCiAgICAgICAgIHJlc3VsdC5hdHRlc3RhdGlv
bk9iamVjdCA9IGRlY29kZUFycmF5QnVmZmVyKGRlY29kZXIpOwogICAgICAgICBpZiAoIXJlc3Vs
dC5hdHRlc3RhdGlvbk9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8QXV0aGVudGljYXRvclRyYW5zcG9ydD4+IHRy
YW5zcG9ydHM7CisgICAgICAgIGRlY29kZXIgPj4gdHJhbnNwb3J0czsKKyAgICAgICAgaWYgKCF0
cmFuc3BvcnRzKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmVz
dWx0LnRyYW5zcG9ydHMgPSBXVEZNb3ZlKCp0cmFuc3BvcnRzKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vQXV0aGVudGljYXRvclRyYW5zcG9ydC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0LmgKaW5kZXggYTNiMzdiNmI2YTI4NTljY2QxYjk0
MmQwYThhN2ExYzFmODgxNDA1YS4uZTQwOWQzYmM5MjRlNWY5ZTdjNzc5MzI1NGE3YjFkN2IxMjk5
YTQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdG9yVHJhbnNwb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdG9yVHJhbnNwb3J0LmgKQEAgLTM1LDcgKzM1LDggQEAgZW51bSBjbGFzcyBBdXRo
ZW50aWNhdG9yVHJhbnNwb3J0IHsKICAgICBVc2IsCiAgICAgTmZjLAogICAgIEJsZSwKLSAgICBJ
bnRlcm5hbAorICAgIEludGVybmFsLAorICAgIENhYmxlCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkBAIC00OCw3ICs0OSw4IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2Vi
Q29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydD4gewogICAgICAgICBXZWJDb3JlOjpBdXRoZW50
aWNhdG9yVHJhbnNwb3J0OjpVc2IsCiAgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFu
c3BvcnQ6Ok5mYywKICAgICAgICAgV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6Qmxl
LAotICAgICAgICBXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbAorICAg
ICAgICBXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCwKKyAgICAgICAg
V2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6Q2FibGUKICAgICA+OwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yVHJh
bnNwb3J0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
clRyYW5zcG9ydC5pZGwKaW5kZXggOGJjOGY1NDdlMjg0ZWMyYzg4MWVkMmFlMDBmMGRmNTY5NTlk
MDMzMi4uY2Y3YTQzOTllMTRhZTRiM2Y0ZTBmYWIwZmRlMWU0ODkzNzYyMGI2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JU
cmFuc3BvcnQuaWRsCkBAIC0yOSw1ICsyOSw2IEBACiAgICAgInVzYiIsCiAgICAgIm5mYyIsCiAg
ICAgImJsZSIsCi0gICAgImludGVybmFsIgorICAgICJpbnRlcm5hbCIsCisgICAgImNhYmxlIgog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVu
dGljYXRpb25Db25zdGFudHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2Vi
QXV0aGVudGljYXRpb25Db25zdGFudHMuaAppbmRleCBmODVmMWZhYmNmY2MyMjdkMDYzYjhkMTRk
MTVkNTY3Nzk3NDM1NTRjLi4xODAwNjkxMjQ4OTgzMGNlYmJhOWRmMTVmY2I3M2FjMzA0Zjc3NmUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRp
Y2F0aW9uQ29uc3RhbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9X
ZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oCkBAIC05Myw2ICs5MywxMiBAQCBjb25zdGV4cHIg
Y29uc3QgY2hhciBrZXlTaXplS2V5W10gPSAia2V5X3NpemUiOwogY29uc3RleHByIGNvbnN0IGNo
YXIgcmVseWluZ1BhcnR5S2V5W10gPSAicnAiOwogY29uc3RleHByIGNvbnN0IGNoYXIgYXBwbGlj
YXRpb25UYWdLZXlbXSA9ICJ0YWciOwogCitjb25zdGV4cHIgYXV0byBhdXRoZW50aWNhdG9yVHJh
bnNwb3J0VXNiID0gInVzYiJfczsKK2NvbnN0ZXhwciBhdXRvIGF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnROZmMgPSAibmZjIl9zOworY29uc3RleHByIGF1dG8gYXV0aGVudGljYXRvclRyYW5zcG9ydEJs
ZSA9ICJibGUiX3M7Citjb25zdGV4cHIgYXV0byBhdXRoZW50aWNhdG9yVHJhbnNwb3J0SW50ZXJu
YWwgPSAiaW50ZXJuYWwiX3M7Citjb25zdGV4cHIgYXV0byBhdXRoZW50aWNhdG9yVHJhbnNwb3J0
Q2FibGUgPSAiY2FibGUiX3M7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNwYWNl
IFdlYkF1dGhuIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
V2ViQXV0aGVudGljYXRpb25VdGlscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwCmluZGV4IDQ3Yjc3MTE1ZTk4MGRlZjRkMzBi
MWI2N2M5Mzc4MjA5ZGJhMDA2MDguLmMwZjI3ZmExMmFjYjQ5NmUyYzhkNWVkZGM4YTU4YTRhNDU4
YWI3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0
aGVudGljYXRpb25VdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5B
QkxFKFdFQl9BVVRITikKIAorI2luY2x1ZGUgIkNCT1JSZWFkZXIuaCIKICNpbmNsdWRlICJDQk9S
V3JpdGVyLmgiCiAjaW5jbHVkZSAiRmlkb0NvbnN0YW50cy5oIgogI2luY2x1ZGUgIldlYkF1dGhl
bnRpY2F0aW9uQ29uc3RhbnRzLmgiCkBAIC00Myw2ICs0NCwxMSBAQCBWZWN0b3I8dWludDhfdD4g
Y29udmVydEJ5dGVzVG9WZWN0b3IoY29uc3QgdWludDhfdCBieXRlQXJyYXlbXSwgY29uc3Qgc2l6
ZV90IGxlbgogICAgIHJldHVybiB7IGJ5dGVBcnJheSwgbGVuZ3RoIH07CiB9CiAKK1ZlY3Rvcjx1
aW50OF90PiBjb252ZXJ0QXJyYXlCdWZmZXJUb1ZlY3RvcihBcnJheUJ1ZmZlciogYnVmZmVyKQor
eworICAgIHJldHVybiBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihzdGF0aWNfY2FzdDx1aW50OF90Kj4o
YnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPmJ5dGVMZW5ndGgoKSk7Cit9CisKIFZlY3Rvcjx1aW50
OF90PiBwcm9kdWNlUnBJZEhhc2goY29uc3QgU3RyaW5nJiBycElkKQogewogICAgIGF1dG8gY3J5
cHRvID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMjU2KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmgKaW5kZXggNGZlYTExYzA3YThhMzkyYmI4NDYy
ODJlY2E4OWQ5ZDk4MjBkNzYyNy4uNDVmMzNmNGRkOGMxNGY4NzdiNTJiM2I2OTdiODY2ZDBhNWEy
MjY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRo
ZW50aWNhdGlvblV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9X
ZWJBdXRoZW50aWNhdGlvblV0aWxzLmgKQEAgLTM4LDYgKzM4LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29udmVydEJ5dGVzVG9WZWN0
b3IoY29uc3QgdWludDhfdCBieXRlQXJyYXlbXSwgY29uc3Qgc2l6ZV90IGxlbmd0aCk7CiAKK1dF
QkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0QXJyYXlCdWZmZXJUb1ZlY3RvcihB
cnJheUJ1ZmZlciopOworCiAvLyBQcm9kdWNlIGEgU0hBLTI1NiBoYXNoIG9mIHRoZSBnaXZlbiBS
UCBJRC4KIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBwcm9kdWNlUnBJZEhhc2goY29u
c3QgU3RyaW5nJiBycElkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9maWRvL0F1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0F1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2Uu
Y3BwCmluZGV4IDU2ZmRkZTJmY2QzMzA5MWY5OTU1MmY5MjQ0MTU1YjY5ZDI2NDcyNGYuLmZmOWU4
YjY2MDY1MGU5NGYwNTgxMmU4YjdjOTU2NjEwODA4M2E1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9BdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vQXV0aGVudGlj
YXRvckdldEluZm9SZXNwb25zZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKIAogI2luY2x1ZGUgIkNC
T1JWYWx1ZS5oIgogI2luY2x1ZGUgIkNCT1JXcml0ZXIuaCIKKyNpbmNsdWRlICJXZWJBdXRoZW50
aWNhdGlvbkNvbnN0YW50cy5oIgogCiBuYW1lc3BhY2UgZmlkbyB7CiAKQEAgLTc2LDYgKzc3LDM2
IEBAIEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UmIEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVz
cG9uc2U6OnNldE9wdGlvbnMoQXV0aGVudGljCiAgICAgcmV0dXJuICp0aGlzOwogfQogCitBdXRo
ZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlJiBBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlOjpz
ZXRUcmFuc3BvcnRzKFZlY3RvcjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiYmIHRy
YW5zcG9ydHMpCit7CisgICAgbV90cmFuc3BvcnRzID0gV1RGTW92ZSh0cmFuc3BvcnRzKTsKKyAg
ICByZXR1cm4gKnRoaXM7Cit9CisKK3N0YXRpYyBTdHJpbmcgdG9TdHJpbmcoV2ViQ29yZTo6QXV0
aGVudGljYXRvclRyYW5zcG9ydCB0cmFuc3BvcnQpCit7CisgICAgc3dpdGNoICh0cmFuc3BvcnQp
IHsKKyAgICBjYXNlIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OlVzYjoKKyAgICAg
ICAgcmV0dXJuIFdlYkNvcmU6OmF1dGhlbnRpY2F0b3JUcmFuc3BvcnRVc2I7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6TmZjOgorICAg
ICAgICByZXR1cm4gV2ViQ29yZTo6YXV0aGVudGljYXRvclRyYW5zcG9ydE5mYzsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpCbGU6Cisg
ICAgICAgIHJldHVybiBXZWJDb3JlOjphdXRoZW50aWNhdG9yVHJhbnNwb3J0QmxlOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkludGVy
bmFsOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6YXV0aGVudGljYXRvclRyYW5zcG9ydEludGVy
bmFsOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFu
c3BvcnQ6OkNhYmxlOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6YXV0aGVudGljYXRvclRyYW5z
cG9ydENhYmxlOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbFN0cmluZygpOworfQorCiBWZWN0b3I8
dWludDhfdD4gZW5jb2RlQXNDQk9SKGNvbnN0IEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2Um
IHJlc3BvbnNlKQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBjYm9yOwpAQCAtOTgsNiArMTI5LDEx
IEBAIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVBc0NCT1IoY29uc3QgQXV0aGVudGljYXRvckdldElu
Zm9SZXNwb25zZSYgcmVzcG9uc2UpCiAKICAgICBpZiAocmVzcG9uc2UucGluUHJvdG9jb2woKSkK
ICAgICAgICAgZGV2aWNlSW5mb01hcC5lbXBsYWNlKENCT1JWYWx1ZSg2KSwgdG9BcnJheVZhbHVl
KCpyZXNwb25zZS5waW5Qcm90b2NvbCgpKSk7CisgICAgCisgICAgaWYgKHJlc3BvbnNlLnRyYW5z
cG9ydHMoKSkgeworICAgICAgICBhdXRvIHRyYW5zcG9ydHMgPSAqcmVzcG9uc2UudHJhbnNwb3J0
cygpOworICAgICAgICBkZXZpY2VJbmZvTWFwLmVtcGxhY2UoQ0JPUlZhbHVlKDcpLCB0b0FycmF5
VmFsdWUodHJhbnNwb3J0cy5tYXAodG9TdHJpbmcpKSk7CisgICAgfQogCiAgICAgYXV0byBlbmNv
ZGVkQnl0ZXMgPSBDQk9SV3JpdGVyOjp3cml0ZShDQk9SVmFsdWUoV1RGTW92ZShkZXZpY2VJbmZv
TWFwKSkpOwogICAgIEFTU0VSVChlbmNvZGVkQnl0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0F1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9BdXRoZW50aWNhdG9yR2V0
SW5mb1Jlc3BvbnNlLmgKaW5kZXggYzA2M2M0ZjVjOTM1Zjk3M2RjMTE1NDAyMDM1OTdjNTg1NmMz
NGFmZS4uNzI0NWM2OTY0MDQyMWI4MTVhZjcwOTcyNTU4ZTk4ZjFlZGM3MzBjZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0F1dGhlbnRpY2F0b3JHZXRJ
bmZvUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8v
QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaWYgRU5B
QkxFKFdFQl9BVVRITikKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25z
LmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRvclRyYW5zcG9ydC5oIgogI2luY2x1ZGUgIkZpZG9D
b25zdGFudHMuaCIKICNpbmNsdWRlIDx3dGYvU3RkU2V0Lmg+CiAKQEAgLTUyLDYgKzUzLDcgQEAg
cHVibGljOgogICAgIEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UmIHNldFBpblByb3RvY29s
cyhWZWN0b3I8dWludDhfdD4mJik7CiAgICAgQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSYg
c2V0RXh0ZW5zaW9ucyhWZWN0b3I8U3RyaW5nPiYmKTsKICAgICBBdXRoZW50aWNhdG9yR2V0SW5m
b1Jlc3BvbnNlJiBzZXRPcHRpb25zKEF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zJiYpOwor
ICAgIEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UmIHNldFRyYW5zcG9ydHMoVmVjdG9yPFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+JiYpOwogCiAgICAgY29uc3QgU3RkU2V0PFBy
b3RvY29sVmVyc2lvbj4mIHZlcnNpb25zKCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9uczsgfQog
ICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYWFndWlkKCkgY29uc3QgeyByZXR1cm4gbV9hYWd1
aWQ7IH0KQEAgLTU5LDYgKzYxLDcgQEAgcHVibGljOgogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiYgcGluUHJvdG9jb2woKSBjb25zdCB7IHJldHVybiBtX3BpblByb3Rv
Y29sczsgfQogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+JiBleHRlbnNp
b25zKCkgY29uc3QgeyByZXR1cm4gbV9leHRlbnNpb25zOyB9CiAgICAgY29uc3QgQXV0aGVudGlj
YXRvclN1cHBvcnRlZE9wdGlvbnMmIG9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnM7
IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpBdXRoZW50aWNhdG9y
VHJhbnNwb3J0Pj4mIHRyYW5zcG9ydHMoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zcG9ydHM7IH0K
IAogcHJpdmF0ZToKICAgICBTdGRTZXQ8UHJvdG9jb2xWZXJzaW9uPiBtX3ZlcnNpb25zOwpAQCAt
NjcsNiArNzAsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBtX3BpblByb3RvY29sczsKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBtX2V4
dGVuc2lvbnM7CiAgICAgQXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnMgbV9vcHRpb25zOwor
ICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+
PiBtX3RyYW5zcG9ydHM7CiB9OwogCiBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gZW5j
b2RlQXNDQk9SKGNvbnN0IEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNv
bnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNl
UmVzcG9uc2VDb252ZXJ0ZXIuY3BwCmluZGV4IDczNWE5YmY4ZTAzYTg0MmE5N2Q0Njk0YWNjYzZi
MjJlMTNlZmUwNDguLjcyMDIwOWNjNDFkMzczMjM4YjcyMzhhNDNlYzU1ZDY1NTliNGEzZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNw
b25zZUNvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9m
aWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcApAQCAtNTQsNiArNTQsMjEgQEAgc3RhdGlj
IFByb3RvY29sVmVyc2lvbiBjb252ZXJ0U3RyaW5nVG9Qcm90b2NvbFZlcnNpb24oY29uc3QgU3Ry
aW5nJiB2ZXJzaW9uKQogICAgIHJldHVybiBQcm90b2NvbFZlcnNpb246OmtVbmtub3duOwogfQog
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiBjb252ZXJ0U3Ry
aW5nVG9BdXRoZW50aWNhdG9yVHJhbnNwb3J0KGNvbnN0IFN0cmluZyYgdHJhbnNwb3J0KQorewor
ICAgIGlmICh0cmFuc3BvcnQgPT0gYXV0aGVudGljYXRvclRyYW5zcG9ydFVzYikKKyAgICAgICAg
cmV0dXJuIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OlVzYjsKKyAgICBpZiAodHJhbnNwb3J0ID09
IGF1dGhlbnRpY2F0b3JUcmFuc3BvcnROZmMpCisgICAgICAgIHJldHVybiBBdXRoZW50aWNhdG9y
VHJhbnNwb3J0OjpOZmM7CisgICAgaWYgKHRyYW5zcG9ydCA9PSBhdXRoZW50aWNhdG9yVHJhbnNw
b3J0QmxlKQorICAgICAgICByZXR1cm4gQXV0aGVudGljYXRvclRyYW5zcG9ydDo6QmxlOworICAg
IGlmICh0cmFuc3BvcnQgPT0gYXV0aGVudGljYXRvclRyYW5zcG9ydEludGVybmFsKQorICAgICAg
ICByZXR1cm4gQXV0aGVudGljYXRvclRyYW5zcG9ydDo6SW50ZXJuYWw7CisgICAgaWYgKHRyYW5z
cG9ydCA9PSBhdXRoZW50aWNhdG9yVHJhbnNwb3J0Q2FibGUpCisgICAgICAgIHJldHVybiBBdXRo
ZW50aWNhdG9yVHJhbnNwb3J0OjpDYWJsZTsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQor
CiBzdGQ6Om9wdGlvbmFsPGNib3I6OkNCT1JWYWx1ZT4gZGVjb2RlUmVzcG9uc2VNYXAoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBpbkJ1ZmZlcikKIHsKICAgICBpZiAoaW5CdWZmZXIuc2l6ZSgpIDw9
IGtSZXNwb25zZUNvZGVMZW5ndGggfHwgZ2V0UmVzcG9uc2VDb2RlKGluQnVmZmVyKSAhPSBDdGFw
RGV2aWNlUmVzcG9uc2VDb2RlOjprU3VjY2VzcykKQEAgLTk1LDcgKzExMCw3IEBAIHN0YXRpYyBW
ZWN0b3I8dWludDhfdD4gZ2V0Q3JlZGVudGlhbElkKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXV0
aGVudGljYXRvckRhdGEpCiAKIC8vIERlY29kZXMgYnl0ZSBhcnJheSByZXNwb25zZSBmcm9tIGF1
dGhlbnRpY2F0b3IgdG8gQ0JPUiB2YWx1ZSBvYmplY3QgYW5kCiAvLyBjaGVja3MgZm9yIGNvcnJl
Y3QgZW5jb2RpbmcgZm9ybWF0LgotUmVmUHRyPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3Bv
bnNlPiByZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBpbkJ1ZmZlciwgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwg
Y29uc3QgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSYgYXR0ZXN0YXRpb24pCitSZWZQ
dHI8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRDVEFQTWFrZUNyZWRlbnRp
YWxSZXNwb25zZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGluQnVmZmVyLCBXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50LCBWZWN0b3I8QXV0aGVudGljYXRvclRyYW5z
cG9ydD4mJiB0cmFuc3BvcnRzLCBjb25zdCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNl
JiBhdHRlc3RhdGlvbikKIHsKICAgICBhdXRvIGRlY29kZWRNYXAgPSBkZWNvZGVSZXNwb25zZU1h
cChpbkJ1ZmZlcik7CiAgICAgaWYgKCFkZWNvZGVkTWFwKQpAQCAtMTM1LDcgKzE1MCw3IEBAIFJl
ZlB0cjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZENUQVBNYWtlQ3JlZGVu
dGlhbFJlc3BvbnNlKGNvbnN0IFZlCiAgICAgICAgIGF0dGVzdGF0aW9uT2JqZWN0ID0gY2Jvcjo6
Q0JPUldyaXRlcjo6d3JpdGUoQ0JPUihXVEZNb3ZlKGF0dGVzdGF0aW9uT2JqZWN0TWFwKSkpOwog
ICAgIH0KIAotICAgIHJldHVybiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3Jl
YXRlKGNyZWRlbnRpYWxJZCwgKmF0dGVzdGF0aW9uT2JqZWN0LCBhdHRhY2htZW50KTsKKyAgICBy
ZXR1cm4gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFs
SWQsICphdHRlc3RhdGlvbk9iamVjdCwgYXR0YWNobWVudCwgV1RGTW92ZSh0cmFuc3BvcnRzKSk7
CiB9CiAKIFJlZlB0cjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHJlYWRDVEFQR2V0
QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbkJ1ZmZlciwgV2ViQ29y
ZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCkKQEAgLTMyNSw2ICszNDAsMjIg
QEAgc3RkOjpvcHRpb25hbDxBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlPiByZWFkQ1RBUEdl
dEluZm9SZXNwb25zZShjb25zdCBWZWN0b3IKICAgICAgICAgcmVzcG9uc2Uuc2V0UGluUHJvdG9j
b2xzKFdURk1vdmUoc3VwcG9ydGVkUGluUHJvdG9jb2xzKSk7CiAgICAgfQogCisgICAgaXQgPSBy
ZXNwb25zZU1hcC5maW5kKENCT1IoOSkpOworICAgIGlmIChpdCAhPSByZXNwb25zZU1hcC5lbmQo
KSkgeworICAgICAgICBpZiAoIWl0LT5zZWNvbmQuaXNBcnJheSgpKQorICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBWZWN0b3I8QXV0aGVudGljYXRvclRyYW5zcG9y
dD4gdHJhbnNwb3J0czsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiB0cmFuc3BvcnRTdHJpbmcg
OiBpdC0+c2Vjb25kLmdldEFycmF5KCkpIHsKKyAgICAgICAgICAgIGlmICghdHJhbnNwb3J0U3Ry
aW5nLmlzU3RyaW5nKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIGF1dG8gdHJhbnNwb3J0ID0gY29udmVydFN0cmluZ1RvQXV0aGVudGljYXRvclRy
YW5zcG9ydCh0cmFuc3BvcnRTdHJpbmcuZ2V0U3RyaW5nKCkpOworICAgICAgICAgICAgaWYgKHRy
YW5zcG9ydCkKKyAgICAgICAgICAgICAgICB0cmFuc3BvcnRzLmFwcGVuZCgqdHJhbnNwb3J0KTsK
KyAgICAgICAgfQorICAgICAgICByZXNwb25zZS5zZXRUcmFuc3BvcnRzKFdURk1vdmUodHJhbnNw
b3J0cykpOworICAgIH0KKwogICAgIHJldHVybiBXVEZNb3ZlKHJlc3BvbnNlKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3Bv
bnNlQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2
aWNlUmVzcG9uc2VDb252ZXJ0ZXIuaAppbmRleCBhMmUyOGE4MThmZmM4YTlmMDNhYjgyOWU4OWFi
MWQ0NDMxZGRiYWI5Li5mZGM2MWQyYjNiYmQ3YmZkOTU2ODM1MjBkNWM0NTM0YzQ1MzNhNTI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVz
cG9uc2VDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuaApAQCAtNTIsNyArNTIsNyBAQCBXRUJDT1JFX0VY
UE9SVCBDdGFwRGV2aWNlUmVzcG9uc2VDb2RlIGdldFJlc3BvbnNlQ29kZShjb25zdCBWZWN0b3I8
dWludDhfdD4mKTsKIC8vIGFuZCBjb252ZXJ0cyByZXNwb25zZSB0byBBdXRoZW50aWNhdG9yTWFr
ZUNyZWRlbnRpYWxSZXNwb25zZSBvYmplY3Qgd2l0aAogLy8gQ0JPUiBtYXAga2V5cyB0aGF0IGNv
bmZvcm0gdG8gZm9ybWF0IG9mIGF0dGVzdGF0aW9uIG9iamVjdCBkZWZpbmVkIGJ5IHRoZQogLy8g
V2ViQXV0aE4gc3BlYyA6IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJhdXRobi8jZmlnLWF0dFN0
cnVjdHMKLVdFQkNPUkVfRVhQT1JUIFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZT4gcmVhZENUQVBNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYsIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50LCBjb25zdCBXZWJD
b3JlOjpBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlJiA9IFdlYkNvcmU6OkF0dGVzdGF0
aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6OkRpcmVjdCk7CitXRUJDT1JFX0VYUE9SVCBSZWZQdHI8
V2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRDVEFQTWFrZUNy
ZWRlbnRpYWxSZXNwb25zZShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQXR0YWNobWVudCwgVmVjdG9yPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+
JiYsIGNvbnN0IFdlYkNvcmU6OkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmID0gV2Vi
Q29yZTo6QXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6RGlyZWN0KTsKIAogLy8gRGUt
c2VyaWFsaXplcyBDQk9SIGVuY29kZWQgcmVzcG9uc2UgdG8gQXV0aGVudGljYXRvckdldEFzc2Vy
dGlvbiAvCiAvLyBBdXRoZW50aWNhdG9yR2V0TmV4dEFzc2VydGlvbiByZXF1ZXN0IHRvIEF1dGhl
bnRpY2F0b3JHZXRBc3NlcnRpb25SZXNwb25zZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHAKaW5k
ZXggYTRmZGUxNWZmYmZkNTU1NzdiMjI5ZDg2NDljNjc2NDhjZTdlYjk2ZC4uMTc1ZDBlNWE1OTcy
YjY5M2VlNzQwZDZhNWVmN2Q3MjFiNDBmMGY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3Bw
CkBAIC0xMzcsNyArMTM3LDcgQEAgc3RhdGljIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUgY3Jl
YXRlRmlkb0F0dGVzdGF0aW9uU3RhdGVtZW50RnJvbVUyZlJlZ2lzdGVyUmUKIAogfSAvLyBuYW1l
c3BhY2UKIAotUmVmUHRyPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiByZWFkVTJm
UmVnaXN0ZXJSZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgdTJmRGF0YSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgY29uc3QgQXR0
ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSYgYXR0ZXN0YXRpb24pCitSZWZQdHI8QXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKGNvbnN0
IFN0cmluZyYgcnBJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhLCBBdXRoZW50aWNh
dG9yQXR0YWNobWVudCBhdHRhY2htZW50LCBWZWN0b3I8QXV0aGVudGljYXRvclRyYW5zcG9ydD4m
JiB0cmFuc3BvcnRzLCBjb25zdCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlJiBhdHRl
c3RhdGlvbikKIHsKICAgICBhdXRvIHB1YmxpY0tleSA9IGV4dHJhY3RFQ1B1YmxpY0tleUZyb21V
MmZSZWdpc3RyYXRpb25SZXNwb25zZSh1MmZEYXRhKTsKICAgICBpZiAocHVibGljS2V5LmlzRW1w
dHkoKSkKQEAgLTE2MCw3ICsxNjAsNyBAQCBSZWZQdHI8QXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2U+IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcgogCiAgICAg
YXV0byBhdHRlc3RhdGlvbk9iamVjdCA9IGJ1aWxkQXR0ZXN0YXRpb25PYmplY3QoV1RGTW92ZShh
dXRoRGF0YSksICJmaWRvLXUyZiJfcywgV1RGTW92ZShmaWRvQXR0ZXN0YXRpb25TdGF0ZW1lbnQp
LCBhdHRlc3RhdGlvbik7CiAKLSAgICByZXR1cm4gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF0dGVzdGF0aW9uT2JqZWN0LCBhdHRhY2htZW50
KTsKKyAgICByZXR1cm4gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShj
cmVkZW50aWFsSWQsIGF0dGVzdGF0aW9uT2JqZWN0LCBhdHRhY2htZW50LCBXVEZNb3ZlKHRyYW5z
cG9ydHMpKTsKIH0KIAogUmVmUHRyPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gcmVh
ZFUyZlNpZ25SZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFdlYkNvcmU6OkJ1ZmZl
clNvdXJjZSYga2V5SGFuZGxlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEsIEF1dGhl
bnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5oCmluZGV4
IDU3ZDUzYzcxYzIxOTg4MzRmZDk4ZGZiMjAzZGI3NzdmMWM0MzdiNjAuLjQxZDk2OWRjYjdlNjcx
M2Q5OGU1M2U5MGRmOWI1OTUyNTVhOTJiZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5oCkBAIC00
NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBmaWRvIHsKIAogLy8gQ29udmVydHMgYSBVMkYgcmVnaXN0
ZXIgcmVzcG9uc2UgdG8gV2ViQXV0aE4gbWFrZUNyZWRlbnRpYWwgcmVzcG9uc2UuCiAvLyBodHRw
czovL2ZpZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlkby12Mi4wLWlkLTIwMTgwMjI3L2ZpZG8tY2xp
ZW50LXRvLWF1dGhlbnRpY2F0b3ItcHJvdG9jb2wtdjIuMC1pZC0yMDE4MDIyNy5odG1sI3UyZi1h
dXRoZW50aWNhdG9yTWFrZUNyZWRlbnRpYWwtaW50ZXJvcGVyYWJpbGl0eQotV0VCQ09SRV9FWFBP
UlQgUmVmUHRyPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiByZWFk
VTJmUmVnaXN0ZXJSZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgdTJmRGF0YSwgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQsIGNvbnN0IFdl
YkNvcmU6OkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmID0gV2ViQ29yZTo6QXR0ZXN0
YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6RGlyZWN0KTsKK1dFQkNPUkVfRVhQT1JUIFJlZlB0
cjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZFUyZlJlZ2lz
dGVyUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUy
ZkRhdGEsIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50LCBWZWN0b3I8V2ViQ29yZTo6
QXV0aGVudGljYXRvclRyYW5zcG9ydD4mJiB0cmFuc3BvcnRzID0geyB9LCBjb25zdCBXZWJDb3Jl
OjpBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlJiA9IFdlYkNvcmU6OkF0dGVzdGF0aW9u
Q29udmV5YW5jZVByZWZlcmVuY2U6OkRpcmVjdCk7CiAKIC8vIENvbnZlcnRzIGEgVTJGIGF1dGhl
bnRpY2F0aW9uIHJlc3BvbnNlIHRvIFdlYkF1dGhOIGdldEFzc2VydGlvbiByZXNwb25zZS4KIC8v
IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtaWQtMjAxODAyMjcvZmlk
by1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90b2NvbC12Mi4wLWlkLTIwMTgwMjI3Lmh0bWwj
dTJmLWF1dGhlbnRpY2F0b3JHZXRBc3NlcnRpb24taW50ZXJvcGVyYWJpbGl0eQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNl
c0NvcmVTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0F1dGhlbnRpY2F0
aW9uU2VydmljZXNDb3JlU1BJLmgKaW5kZXggMzkzOTU3Njc4NGY2MDQ0YThhN2IxYmRiMjJmNDQy
NmUzYWJjYWU3Ni4uMDY4YjY0ZmVhZjcyMWFmOWMxYzg1ZjQ0NWVmZDZjODc1ZDZlN2I4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGljYXRpb25T
ZXJ2aWNlc0NvcmVTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9B
dXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oCkBAIC0yOTAsNiArMjkwLDcgQEAgdHlwZWRl
ZiBOU19FTlVNKE5TSW50ZWdlciwgQVNDcmVkZW50aWFsUmVxdWVzdFN0eWxlKSB7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgY29weSwgcmVhZG9ubHkpIE5TU3RyaW5nICpyZWx5aW5nUGFydHlJZGVu
dGlmaWVyOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHJlYWRvbmx5KSBOU0RhdGEgKmF0
dGVzdGF0aW9uT2JqZWN0OwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHJlYWRvbmx5KSBO
U0RhdGEgKnJhd0NsaWVudERhdGFKU09OOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5T
QXJyYXk8TlNOdW1iZXIgKj4gKnRyYW5zcG9ydHM7CiAKICsgKGluc3RhbmNldHlwZSluZXcgTlNf
VU5BVkFJTEFCTEU7CiAtIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsKQEAgLTMw
NCw2ICszMDUsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBBU0NyZWRlbnRpYWxSZXF1
ZXN0U3R5bGUpIHsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCByZWFkb25seSkgTlNEYXRh
ICpyYXdDbGllbnREYXRhSlNPTjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCByZWFkb25s
eSkgTlNTdHJpbmcgKnJlbHlpbmdQYXJ0eUlkZW50aWZpZXI7CiBAcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSwgcmVhZG9ubHkpIE5TRGF0YSAqYXR0ZXN0YXRpb25PYmplY3Q7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgY29weSkgTlNBcnJheTxOU051bWJlciAqPiAqdHJhbnNwb3J0czsKIAogQGVu
ZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0
aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oCmluZGV4IDcy
ZDk0YzEyYTIxZmQ0ZjM4MGIxODRhMDU3ZjIwMDUxYjVkM2MxMWMuLmU1ZjljZTFhZDdjOWU0MTI4
YTAxMjNhNmM5MjY2MWVhZWZjNDY3YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZS5oCkBAIC0zMyw2ICszMyw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNv
cygxMi4wKSwgaW9zKDE1LjApKQogQGludGVyZmFjZSBfV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRp
b25SZXNwb25zZSA6IF9XS0F1dGhlbnRpY2F0b3JSZXNwb25zZQogCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIE5TRGF0YSAqYXR0ZXN0YXRpb25PYmplY3Q7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgY29weSkgTlNBcnJheTxOU051bWJlciAqPiAqdHJhbnNwb3J0czsKIAogQGVuZAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UubW0KaW5kZXggYmRj
MGUzNWI5MjQ3ODk3OGRiYjA0Zjg2MTc1NjkyNjgyNTNkYTY4ZC4uMDcxZDUyMmZhODM4N2YxODY5
ZWUxZGU2NzY0OTBhN2U0NjEyOTI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZS5tbQpAQCAtMzIsMTIgKzMyLDEzIEBACiAKIEBpbXBsZW1lbnRhdGlvbiBf
V0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZQogCi0tIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhDbGllbnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0
YSAqKXJhd0lkIGV4dGVuc2lvbnM6KFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lv
bnNDbGllbnRPdXRwdXRzPiYmKWV4dGVuc2lvbnMgYXR0ZXN0YXRpb25PYmplY3Q6KE5TRGF0YSAq
KWF0dGVzdGF0aW9uT2JqZWN0IGF0dGFjaG1lbnQ6KF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50
KWF0dGFjaG1lbnQKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENsaWVudERhdGFKU09OOihOU0Rh
dGEgKiljbGllbnREYXRhSlNPTiByYXdJZDooTlNEYXRhICopcmF3SWQgZXh0ZW5zaW9uczooUmV0
YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYpZXh0ZW5z
aW9ucyBhdHRlc3RhdGlvbk9iamVjdDooTlNEYXRhICopYXR0ZXN0YXRpb25PYmplY3QgYXR0YWNo
bWVudDooX1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQpYXR0YWNobWVudCB0cmFuc3BvcnRzOihO
U0FycmF5PE5TTnVtYmVyICo+ICopdHJhbnNwb3J0cwogewogICAgIGlmICghKHNlbGYgPSBbc3Vw
ZXIgaW5pdFdpdGhDbGllbnREYXRhSlNPTjpjbGllbnREYXRhSlNPTiByYXdJZDpyYXdJZCBleHRl
bnNpb25zOldURk1vdmUoZXh0ZW5zaW9ucykgYXR0YWNobWVudDphdHRhY2htZW50XSkpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKICAgICBfYXR0ZXN0YXRpb25PYmplY3QgPSBhdHRlc3RhdGlvbk9i
amVjdDsKKyAgICBfdHJhbnNwb3J0cyA9IHRyYW5zcG9ydHM7CiAgICAgcmV0dXJuIHNlbGY7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZUludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2VJbnRl
cm5hbC5oCmluZGV4IGFhZmJmMGJkNDNmYzgwZTk0MTBkZTA4MjNiZjQxNThiZTdkYTZjYjkuLjVh
ZTBkOTA2MDZmMjBiMGViNTBjYTdiMDUwMmQyODJhYTQ2M2JjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25S
ZXNwb25zZUludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlSW50ZXJuYWwuaApAQCAtMzQsNyAr
MzQsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiBAaW50ZXJmYWNlIF9XS0F1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlICgpCiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aENs
aWVudERhdGFKU09OOihOU0RhdGEgKiljbGllbnREYXRhSlNPTiByYXdJZDooTlNEYXRhICopcmF3
SWQgZXh0ZW5zaW9uczooUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVu
dE91dHB1dHM+JiYpZXh0ZW5zaW9ucyBhdHRlc3RhdGlvbk9iamVjdDooTlNEYXRhICopYXR0ZXN0
YXRpb25PYmplY3QgYXR0YWNobWVudDooX1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQpYXR0YWNo
bWVudDsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENsaWVudERhdGFKU09OOihOU0RhdGEgKilj
bGllbnREYXRhSlNPTiByYXdJZDooTlNEYXRhICopcmF3SWQgZXh0ZW5zaW9uczooUmV0YWluUHRy
PF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYpZXh0ZW5zaW9ucyBh
dHRlc3RhdGlvbk9iamVjdDooTlNEYXRhICopYXR0ZXN0YXRpb25PYmplY3QgYXR0YWNobWVudDoo
X1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQpYXR0YWNobWVudCB0cmFuc3BvcnRzOihOU0FycmF5
PE5TTnVtYmVyICo+ICopdHJhbnNwb3J0czsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsLm1tCmluZGV4IGFjNjRlZjM0ZDZmZWU4MDNmOGY2YTg2ZjMyZjk4ODYwNjdlYzA0NGEuLmEx
OWY5Y2EzZDQ1Y2ZmYWJiNDQyODkzODhmZDdmNzdjMzJmZjA2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsLm1tCkBAIC04NDgsOSArODQ4LDI4IEBAIHN0YXRpYyBfV0tBdXRoZW50aWNhdG9y
QXR0YWNobWVudCBhdXRoZW50aWNhdG9yQXR0YWNobWVudFRvV0tBdXRoZW50aWNhdG9yQXR0YWNo
CiAgICAgfQogfQogCitzdGF0aWMgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9u
c0NsaWVudE91dHB1dHM+IHdrRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMoY29uc3QgV2ViQ29yZTo6
QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSYgZGF0YSkKK3sKKyAgICBSZXRhaW5QdHI8X1dLQXV0
aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cz4gZXh0ZW5zaW9uczsKKyAgICBpZiAo
ZGF0YS5hcHBpZCkKKyAgICAgICAgZXh0ZW5zaW9ucyA9IGFkb3B0TlMoW1tfV0tBdXRoZW50aWNh
dGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzIGFsbG9jXSBpbml0V2l0aEFwcGlkOmRhdGEuYXBw
aWQudmFsdWUoKV0pOworICAgIHJldHVybiBleHRlbnNpb25zOworfQorCitzdGF0aWMgUmV0YWlu
UHRyPE5TQXJyYXk8TlNOdW1iZXIgKj4+IHdrVHJhbnNwb3J0cyhjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydD4mIHRyYW5zcG9ydHMpCit7CisgICAgYXV0byB3a1Ry
YW5zcG9ydHMgPSBhZG9wdE5TKFtOU011dGFibGVBcnJheTxOU051bWJlciAqPiBuZXddKTsKKyAg
ICBmb3IgKGF1dG8gdHJhbnNwb3J0IDogdHJhbnNwb3J0cykKKyAgICAgICAgW3drVHJhbnNwb3J0
cyBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6KGludCl0cmFuc3BvcnRdXTsKKyAg
ICByZXR1cm4gd2tUcmFuc3BvcnRzOworfQorCisKIHN0YXRpYyBSZXRhaW5QdHI8X1dLQXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSYgZGF0YSwgTlNE
YXRhICpjbGllbnREYXRhSlNPTiwgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0
YWNobWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHROUyhbW19XS0F1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aENsaWVudERhdGFKU09OOmNsaWVudERhdGFKU09O
IHJhd0lkOltOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLnJhd0lkLT5kYXRhKCkgbGVuZ3RoOmRh
dGEucmF3SWQtPmJ5dGVMZW5ndGgoKV0gZXh0ZW5zaW9uczpuaWwgYXR0ZXN0YXRpb25PYmplY3Q6
W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuYXR0ZXN0YXRpb25PYmplY3QtPmRhdGEoKSBsZW5n
dGg6ZGF0YS5hdHRlc3RhdGlvbk9iamVjdC0+Ynl0ZUxlbmd0aCgpXSBhdHRhY2htZW50OiBhdXRo
ZW50aWNhdG9yQXR0YWNobWVudFRvV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudChhdHRhY2htZW50
KV0pOworICAgIGF1dG8gdmFsdWUgPSBhZG9wdE5TKFtbX1dLQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoQ2xpZW50RGF0YUpTT046Y2xpZW50RGF0YUpTT04g
cmF3SWQ6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEucmF3SWQtPmRhdGEoKSBsZW5ndGg6ZGF0
YS5yYXdJZC0+Ynl0ZUxlbmd0aCgpXSBleHRlbnNpb25zOndrRXh0ZW5zaW9uc0NsaWVudE91dHB1
dHMoZGF0YSkgYXR0ZXN0YXRpb25PYmplY3Q6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuYXR0
ZXN0YXRpb25PYmplY3QtPmRhdGEoKSBsZW5ndGg6ZGF0YS5hdHRlc3RhdGlvbk9iamVjdC0+Ynl0
ZUxlbmd0aCgpXSBhdHRhY2htZW50OiBhdXRoZW50aWNhdG9yQXR0YWNobWVudFRvV0tBdXRoZW50
aWNhdG9yQXR0YWNobWVudChhdHRhY2htZW50KSB0cmFuc3BvcnRzOndrVHJhbnNwb3J0cyhkYXRh
LnRyYW5zcG9ydHMpLmF1dG9yZWxlYXNlKCldKTsKKyAgICAKKyAgICByZXR1cm4gdmFsdWU7CiB9
CiAjZW5kaWYKIApAQCAtOTExLDE1ICs5MzAsMTEgQEAgc3RhdGljIFJldGFpblB0cjxfV0tBdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gd2tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb24K
ICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogc3RhdGljIFJldGFpblB0cjxfV0tBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKGNvbnN0
IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmIGRhdGEsIE5TRGF0YSAqY2xpZW50
RGF0YUpTT04sIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpCiB7
Ci0gICAgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+
IGV4dGVuc2lvbnM7Ci0gICAgaWYgKGRhdGEuYXBwaWQpCi0gICAgICAgIGV4dGVuc2lvbnMgPSBh
ZG9wdE5TKFtbX1dLQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cyBhbGxvY10g
aW5pdFdpdGhBcHBpZDpkYXRhLmFwcGlkLnZhbHVlKCldKTsKLQogICAgIE5TRGF0YSAqdXNlckhh
bmRsZSA9IG5pbDsKICAgICBpZiAoZGF0YS51c2VySGFuZGxlKQogICAgICAgICB1c2VySGFuZGxl
ID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEudXNlckhhbmRsZS0+ZGF0YSgpIGxlbmd0aDpk
YXRhLnVzZXJIYW5kbGUtPmJ5dGVMZW5ndGgoKV07CiAKLSAgICByZXR1cm4gYWRvcHROUyhbW19X
S0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSBhbGxvY10gaW5pdFdpdGhDbGllbnREYXRh
SlNPTjpjbGllbnREYXRhSlNPTiByYXdJZDpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5yYXdJ
ZC0+ZGF0YSgpIGxlbmd0aDpkYXRhLnJhd0lkLT5ieXRlTGVuZ3RoKCldIGV4dGVuc2lvbnM6V1RG
TW92ZShleHRlbnNpb25zKSBhdXRoZW50aWNhdG9yRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6
ZGF0YS5hdXRoZW50aWNhdG9yRGF0YS0+ZGF0YSgpIGxlbmd0aDpkYXRhLmF1dGhlbnRpY2F0b3JE
YXRhLT5ieXRlTGVuZ3RoKCldIHNpZ25hdHVyZTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5z
aWduYXR1cmUtPmRhdGEoKSBsZW5ndGg6ZGF0YS5zaWduYXR1cmUtPmJ5dGVMZW5ndGgoKV0gdXNl
ckhhbmRsZTp1c2VySGFuZGxlIGF0dGFjaG1lbnQ6YXV0aGVudGljYXRvckF0dGFjaG1lbnRUb1dL
QXV0aGVudGljYXRvckF0dGFjaG1lbnQoYXR0YWNobWVudCldKTsKKyAgICByZXR1cm4gYWRvcHRO
UyhbW19XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSBhbGxvY10gaW5pdFdpdGhDbGll
bnREYXRhSlNPTjpjbGllbnREYXRhSlNPTiByYXdJZDpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0
YS5yYXdJZC0+ZGF0YSgpIGxlbmd0aDpkYXRhLnJhd0lkLT5ieXRlTGVuZ3RoKCldIGV4dGVuc2lv
bnM6d2tFeHRlbnNpb25zQ2xpZW50T3V0cHV0cyhkYXRhKSBhdXRoZW50aWNhdG9yRGF0YTpbTlNE
YXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5hdXRoZW50aWNhdG9yRGF0YS0+ZGF0YSgpIGxlbmd0aDpk
YXRhLmF1dGhlbnRpY2F0b3JEYXRhLT5ieXRlTGVuZ3RoKCldIHNpZ25hdHVyZTpbTlNEYXRhIGRh
dGFXaXRoQnl0ZXM6ZGF0YS5zaWduYXR1cmUtPmRhdGEoKSBsZW5ndGg6ZGF0YS5zaWduYXR1cmUt
PmJ5dGVMZW5ndGgoKV0gdXNlckhhbmRsZTp1c2VySGFuZGxlIGF0dGFjaG1lbnQ6YXV0aGVudGlj
YXRvckF0dGFjaG1lbnRUb1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQoYXR0YWNobWVudCldKTsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KaW5k
ZXggZTY5ZGJkYWU1MDE4ZjA4NGI0YjFjZmQ1OWY5ZjZiZDFmZGRmZTc0My4uZWVlNmI4NzkxMjE4
NTUxODUwZWRlYmJmNWEyNTkyZmI0MzYwYjAzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2Fs
QXV0aGVudGljYXRvci5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRI
TikKIAorI2ltcG9ydCAiQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTb2Z0TGluay5oIgogI2lt
cG9ydCA8U2VjdXJpdHkvU2VjSXRlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRvckF0dGFj
aG1lbnQuaD4KQEAgLTYwLDYgKzYxLDEwIEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGdyb3VwRm9y
QXR0cmlidXRlcyhOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMpCiB7CiAgICAgcmV0dXJuIG51bGxT
dHJpbmcoKTsKIH0KK3N0YXRpYyBib29sIHNob3VsZFVwZGF0ZVF1ZXJ5KCkKK3sKKyAgICByZXR1
cm4gZmFsc2U7Cit9CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xODEsNiArMTg2
LDE0IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8QXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlPj4+IGdldEV4aXN0aW5nQ3JlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAor
c3RhdGljIFZlY3RvcjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiB0cmFuc3BvcnRzKCkKK3sKKyAg
ICBWZWN0b3I8V2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydD4gdHJhbnNwb3J0cyA9IHsg
V2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6SW50ZXJuYWwgfTsKKyAgICBpZiAoc2hv
dWxkVXBkYXRlUXVlcnkoKSkKKyAgICAgICAgdHJhbnNwb3J0cy5hcHBlbmQoV2ViQ29yZTo6QXV0
aGVudGljYXRvclRyYW5zcG9ydDo6Q2FibGUpOworICAgIHJldHVybiB0cmFuc3BvcnRzOworfQor
CiB9IC8vIExvY2FsQXV0aGVudGljYXRvckludGVybmFsCiAKIHZvaWQgTG9jYWxBdXRoZW50aWNh
dG9yOjpjbGVhckFsbENyZWRlbnRpYWxzKCkKQEAgLTQ0Niw3ICs0NTksNyBAQCB2b2lkIExvY2Fs
QXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlclZlcmlmaWNhdGlv
bihTZWNBY2Nlc3NDbwogCiAgICAgICAgIGF1dG8gYXV0aERhdGEgPSBidWlsZEF1dGhEYXRhKGNy
ZWF0aW9uT3B0aW9ucy5ycC5pZCwgZmxhZ3MsIGNvdW50ZXIsIGJ1aWxkQXR0ZXN0ZWRDcmVkZW50
aWFsRGF0YShWZWN0b3I8dWludDhfdD4oYWFndWlkTGVuZ3RoLCAwKSwgY3JlZGVudGlhbElkLCBj
b3NlUHVibGljS2V5KSk7CiAgICAgICAgIGF1dG8gYXR0ZXN0YXRpb25PYmplY3QgPSBidWlsZEF0
dGVzdGF0aW9uT2JqZWN0KFdURk1vdmUoYXV0aERhdGEpLCBTdHJpbmcgeyBlbXB0eVN0cmluZygp
IH0sIHsgfSwgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9uZSk7Ci0gICAgICAg
IHJlY2VpdmVSZXNwb25kKEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUo
Y3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9iamVjdCwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6
OlBsYXRmb3JtKSk7CisgICAgICAgIHJlY2VpdmVSZXNwb25kKEF1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9iamVjdCwgQXV0
aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtLCB0cmFuc3BvcnRzKCkpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtNDczLDcgKzQ4Niw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNh
dG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChWZWN0b3I8dWludDhfdD4m
JiBjCiAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgYXR0ZXN0
OiAlcyIsIFN0cmluZyhlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbikudXRmOCgpLmRhdGEoKSk7
CiAgICAgICAgIGF1dG8gYXR0ZXN0YXRpb25PYmplY3QgPSBidWlsZEF0dGVzdGF0aW9uT2JqZWN0
KFdURk1vdmUoYXV0aERhdGEpLCBTdHJpbmcgeyBlbXB0eVN0cmluZygpIH0sIHsgfSwgQXR0ZXN0
YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9uZSk7Ci0gICAgICAgIHJlY2VpdmVSZXNwb25k
KEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBh
dHRlc3RhdGlvbk9iamVjdCwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtKSk7Cisg
ICAgICAgIHJlY2VpdmVSZXNwb25kKEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpj
cmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9iamVjdCwgQXV0aGVudGljYXRvckF0dGFj
aG1lbnQ6OlBsYXRmb3JtLCB0cmFuc3BvcnRzKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAvLyBBdHRlc3RhdGlvbiBDZXJ0aWZpY2F0ZSBhbmQgQXR0ZXN0YXRpb24gSXNzdWluZyBD
QQpAQCAtNDkyLDcgKzUwNSw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1h
a2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChWZWN0b3I8dWludDhfdD4mJiBjCiAgICAgYXV0byBh
dHRlc3RhdGlvbk9iamVjdCA9IGJ1aWxkQXR0ZXN0YXRpb25PYmplY3QoV1RGTW92ZShhdXRoRGF0
YSksICJhcHBsZSJfcywgV1RGTW92ZShhdHRlc3RhdGlvblN0YXRlbWVudE1hcCksIGNyZWF0aW9u
T3B0aW9ucy5hdHRlc3RhdGlvbik7CiAKICAgICBkZWxldGVEdXBsaWNhdGVDcmVkZW50aWFsKCk7
Ci0gICAgcmVjZWl2ZVJlc3BvbmQoQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNy
ZWF0ZShjcmVkZW50aWFsSWQsIGF0dGVzdGF0aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNo
bWVudDo6UGxhdGZvcm0pKTsKKyAgICByZWNlaXZlUmVzcG9uZChBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZTo6Y3JlYXRlKGNyZWRlbnRpYWxJZCwgYXR0ZXN0YXRpb25PYmplY3QsIEF1
dGhlbnRpY2F0b3JBdHRhY2htZW50OjpQbGF0Zm9ybSwgdHJhbnNwb3J0cygpKSk7CiB9CiAKIHZv
aWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbQppbmRleCBm
NjdjZTQwNDMxNWVkNjI4ZWYxZjgyZTQxMzUyYjFhNWE4NmMxMDcyLi4yYmI0ZDBlYjNmYmVmZjYx
ZjczNTg0NTI4OWQ1YTA1ZTEwNzJjOTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQ
cm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbQpAQCAtMTU0LDYgKzE1NCw5
IEBAIHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPEFTQ1B1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlw
dG9yPiB0b0FTQ0Rlc2NyaXB0b3IoUHVibGljCiAgICAgICAgICAgICBjYXNlIEF1dGhlbnRpY2F0
b3JUcmFuc3BvcnQ6OkludGVybmFsOgogICAgICAgICAgICAgICAgIHRyYW5zcG9ydFN0cmluZyA9
IEAiaW50ZXJuYWwiOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBB
dXRoZW50aWNhdG9yVHJhbnNwb3J0OjpDYWJsZToKKyAgICAgICAgICAgICAgICB0cmFuc3BvcnRT
dHJpbmcgPSBAImNhYmxlIjsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKHRyYW5zcG9ydFN0cmluZykKQEAgLTMzNyw2ICszNDAsMTcgQEAg
c3RhdGljIFJldGFpblB0cjxBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHQ+IGNvbmZpZ3VyYXRp
b25Bc3NlcnRpb25SZXF1ZXN0Q29udGUKICAgICByZXR1cm4gcmVxdWVzdENvbnRleHQ7CiB9CiAK
K3N0YXRpYyBWZWN0b3I8V2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydD4gdG9BdXRoZW50
aWNhdG9yVHJhbnNwb3J0cyhOU0FycmF5PE5TTnVtYmVyICo+ICphc2NUcmFuc3BvcnRzKQorewor
ICAgIFZlY3RvcjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiB0cmFuc3BvcnRzOwor
ICAgIHRyYW5zcG9ydHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhc2NUcmFuc3BvcnRzLmNvdW50
KTsKKyAgICBmb3IgKE5TTnVtYmVyICphc2NUcmFuc3BvcnQgOiBhc2NUcmFuc3BvcnRzKSB7Cisg
ICAgICAgIGlmIChXVEY6OmlzVmFsaWRFbnVtPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnQ+KGFzY1RyYW5zcG9ydC5pbnRWYWx1ZSkpCisgICAgICAgICAgICB0cmFuc3BvcnRzLnVuY2hl
Y2tlZEFwcGVuZChzdGF0aWNfY2FzdDxXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0Pihh
c2NUcmFuc3BvcnQuaW50VmFsdWUpKTsKKyAgICB9CisgICAgcmV0dXJuIHRyYW5zcG9ydHM7Cit9
CisKIFJldGFpblB0cjxBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHQ+IFdlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5Ojpjb250ZXh0Rm9yUmVxdWVzdChXZWJBdXRoZW50aWNhdGlvblJl
cXVlc3REYXRhJiYgcmVxdWVzdERhdGEpCiB7CiAgICAgUmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxS
ZXF1ZXN0Q29udGV4dD4gcmVzdWx0OwpAQCAtMzYxLDYgKzM3NSw4IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBjb250aW51ZUFmdGVyUmVxdWVzdChSZXRhaW5QdHI8aWQgPEFTQ0NyZWRlbnRpYWxQcm90
b2NvbD4+IGNyCiAgICAgICAgIEFTQ1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbFJlZ2lzdHJh
dGlvbiAqcmVnaXN0cmF0aW9uQ3JlZGVudGlhbCA9IGNyZWRlbnRpYWwuZ2V0KCk7CiAgICAgICAg
IHJlc3BvbnNlLnJhd0lkID0gdG9BcnJheUJ1ZmZlcihyZWdpc3RyYXRpb25DcmVkZW50aWFsLmNy
ZWRlbnRpYWxJRCk7CiAgICAgICAgIHJlc3BvbnNlLmF0dGVzdGF0aW9uT2JqZWN0ID0gdG9BcnJh
eUJ1ZmZlcihyZWdpc3RyYXRpb25DcmVkZW50aWFsLmF0dGVzdGF0aW9uT2JqZWN0KTsKKyAgICAg
ICAgaWYgKFtyZWdpc3RyYXRpb25DcmVkZW50aWFsIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IodHJhbnNwb3J0cyldKQorICAgICAgICAgICAgcmVzcG9uc2UudHJhbnNwb3J0cyA9IHRvQXV0
aGVudGljYXRvclRyYW5zcG9ydHMocmVnaXN0cmF0aW9uQ3JlZGVudGlhbC50cmFuc3BvcnRzKTsK
ICAgICB9IGVsc2UgaWYgKFtjcmVkZW50aWFsIGlzS2luZE9mQ2xhc3M6Z2V0QVNDU2VjdXJpdHlL
ZXlQdWJsaWNLZXlDcmVkZW50aWFsUmVnaXN0cmF0aW9uQ2xhc3MoKV0pIHsKICAgICAgICAgYXR0
YWNobWVudCA9IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtOwogICAgICAg
ICByZXNwb25zZS5pc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlID0gdHJ1ZTsKQEAg
LTM2OCw2ICszODQsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY29udGludWVBZnRlclJlcXVlc3Qo
UmV0YWluUHRyPGlkIDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+PiBjcgogICAgICAgICBBU0NTZWN1
cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxSZWdpc3RyYXRpb24gKnJlZ2lzdHJhdGlvbkNyZWRl
bnRpYWwgPSBjcmVkZW50aWFsLmdldCgpOwogICAgICAgICByZXNwb25zZS5yYXdJZCA9IHRvQXJy
YXlCdWZmZXIocmVnaXN0cmF0aW9uQ3JlZGVudGlhbC5jcmVkZW50aWFsSUQpOwogICAgICAgICBy
ZXNwb25zZS5hdHRlc3RhdGlvbk9iamVjdCA9IHRvQXJyYXlCdWZmZXIocmVnaXN0cmF0aW9uQ3Jl
ZGVudGlhbC5hdHRlc3RhdGlvbk9iamVjdCk7CisgICAgICAgIGlmIChbcmVnaXN0cmF0aW9uQ3Jl
ZGVudGlhbCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHRyYW5zcG9ydHMpXSkKKyAgICAg
ICAgICAgIHJlc3BvbnNlLnRyYW5zcG9ydHMgPSB0b0F1dGhlbnRpY2F0b3JUcmFuc3BvcnRzKHJl
Z2lzdHJhdGlvbkNyZWRlbnRpYWwudHJhbnNwb3J0cyk7CiAgICAgfSBlbHNlIGlmIChbY3JlZGVu
dGlhbCBpc0tpbmRPZkNsYXNzOmdldEFTQ1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbEFzc2Vy
dGlvbkNsYXNzKCldKSB7CiAgICAgICAgIGF0dGFjaG1lbnQgPSBBdXRoZW50aWNhdG9yQXR0YWNo
bWVudDo6UGxhdGZvcm07CiAgICAgICAgIHJlc3BvbnNlLmlzQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2UgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5j
cHAKaW5kZXggNDY5ZTAzM2I3MWY0NGVjYmMyMDMwYWQ2ZmU4ZjdiZmIzYTE0NzgwNS4uODU1NzZj
ZDYxNWNjNmEwZmIzZjYwM2FjY2QxMGJlNzc3OTlkMDM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9D
dGFwQXV0aGVudGljYXRvci5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIEN0YXBBdXRoZW50
aWNhdG9yOjptYWtlQ3JlZGVudGlhbCgpCiAKIHZvaWQgQ3RhcEF1dGhlbnRpY2F0b3I6OmNvbnRp
bnVlTWFrZUNyZWRlbnRpYWxBZnRlclJlc3BvbnNlUmVjZWl2ZWQoVmVjdG9yPHVpbnQ4X3Q+JiYg
ZGF0YSkKIHsKLSAgICBhdXRvIHJlc3BvbnNlID0gcmVhZENUQVBNYWtlQ3JlZGVudGlhbFJlc3Bv
bnNlKGRhdGEsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtLCBzdGQ6Omdl
dDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlv
bnMpLmF0dGVzdGF0aW9uKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZENUQVBNYWtlQ3JlZGVu
dGlhbFJlc3BvbnNlKGRhdGEsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3Jt
LCB0cmFuc3BvcnRzKCksIHN0ZDo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucykuYXR0ZXN0YXRpb24pOwogICAgIGlmICghcmVzcG9u
c2UpIHsKICAgICAgICAgYXV0byBlcnJvciA9IGdldFJlc3BvbnNlQ29kZShkYXRhKTsKIApAQCAt
Mzg0LDYgKzM4NCwxNCBAQCBib29sIEN0YXBBdXRoZW50aWNhdG9yOjpwcm9jZXNzR29vZ2xlTGVn
YWN5QXBwSWRTdXBwb3J0RXh0ZW5zaW9uKCkKICAgICByZXR1cm4gZXh0ZW5zaW9ucy0+Z29vZ2xl
TGVnYWN5QXBwaWRTdXBwb3J0OwogfQogCitWZWN0b3I8QXV0aGVudGljYXRvclRyYW5zcG9ydD4g
Q3RhcEF1dGhlbnRpY2F0b3I6OnRyYW5zcG9ydHMoKSBjb25zdAoreworICAgIAorICAgIGlmIChh
dXRvJiBpbmZvVHJhbnNwb3J0cyA9IG1faW5mby50cmFuc3BvcnRzKCkpCisgICAgICAgIHJldHVy
biAqaW5mb1RyYW5zcG9ydHM7CisgICAgcmV0dXJuIFZlY3RvciB7IGRyaXZlcigpLnRyYW5zcG9y
dCgpIH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFdF
Ql9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaAppbmRleCA5MTUwNWMw
N2RlNjUzYTA4MDdiY2FiNzBkNjcwMjJmNDRjMmNiNDk3Li4wOWYyN2Q0MmE4ZjBmMmQ2ZDRjNjNl
MDNlNTI5MTBmZjk5MzJmZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5o
CkBAIC03MCw2ICs3MCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCB0cnlEb3duZ3JhZGUoKTsKICAg
ICBib29sIHByb2Nlc3NHb29nbGVMZWdhY3lBcHBJZFN1cHBvcnRFeHRlbnNpb24oKTsKIAorICAg
IFZlY3RvcjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiB0cmFuc3BvcnRzKCkgY29u
c3Q7CisKICAgICBmaWRvOjpBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlIG1faW5mbzsKICAg
ICBib29sIG1faXNEb3duZ3JhZGVkIHsgZmFsc2UgfTsKICAgICBzaXplX3QgbV9yZW1haW5pbmdB
c3NlcnRpb25SZXNwb25zZXMgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBEcml2ZXIuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcERyaXZlci5oCmluZGV4IDdhNDIw
ZmUxY2VjMjE4YjkwNjZlNjMwMzZlZmJiYzYzYTQxN2IxMDUuLjYyMTkwZmFmZjIxNGJiZmI3YTk5
ZDllNjMyNDIyOGRlZmU3N2VkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcERyaXZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcERyaXZlci5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRo
ZW50aWNhdG9yVHJhbnNwb3J0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWRvQ29uc3RhbnRzLmg+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KQEAg
LTQ1LDE1ICs0NiwxOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFByb3RvY29sKGZpZG86OlBy
b3RvY29sVmVyc2lvbiBwcm90b2NvbCkgeyBtX3Byb3RvY29sID0gcHJvdG9jb2w7IH0KIAorICAg
IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQgdHJhbnNwb3J0KCkgY29uc3QgeyByZXR1
cm4gbV90cmFuc3BvcnQ7IH0KKyAgICBmaWRvOjpQcm90b2NvbFZlcnNpb24gcHJvdG9jb2woKSBj
b25zdCB7IHJldHVybiBtX3Byb3RvY29sOyB9CisKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNhY3Qo
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgUmVzcG9uc2VDYWxsYmFjayYmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNhbmNlbCgpIHsgfTsKIAogcHJvdGVjdGVkOgotICAgIEN0YXBEcml2ZXIoKSA9
IGRlZmF1bHQ7Ci0gICAgZmlkbzo6UHJvdG9jb2xWZXJzaW9uIHByb3RvY29sKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcm90b2NvbDsgfQorICAgIEN0YXBEcml2ZXIoV2ViQ29yZTo6QXV0aGVudGljYXRv
clRyYW5zcG9ydCB0cmFuc3BvcnQpCisgICAgICAgIDogbV90cmFuc3BvcnQodHJhbnNwb3J0KSB7
IH0KIAogcHJpdmF0ZToKICAgICBmaWRvOjpQcm90b2NvbFZlcnNpb24gbV9wcm90b2NvbCB7IGZp
ZG86OlByb3RvY29sVmVyc2lvbjo6a0N0YXAgfTsKKyAgICBXZWJDb3JlOjpBdXRoZW50aWNhdG9y
VHJhbnNwb3J0IG1fdHJhbnNwb3J0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0
YXBIaWREcml2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vZmlkby9DdGFwSGlkRHJpdmVyLmNwcAppbmRleCAzZDZlYTQ0Y2I5ZDU2M2U5Zjc4N2I5ZjZi
MDc5NzViMWMxYzZlMmY0Li4xYmUzM2QwZTdiNzg4MDNhYTJlYjFlMjM5NjIwMjAwN2Q2OTgyZjI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9m
aWRvL0N0YXBIaWREcml2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5jcHAKQEAgLTE1Nyw3ICsxNTcsOCBAQCB2
b2lkIEN0YXBIaWREcml2ZXI6Oldvcmtlcjo6Y2FuY2VsKGZpZG86OkZpZG9IaWRNZXNzYWdlJiYg
cmVxdWVzdE1lc3NhZ2UpCiB9CiAKIEN0YXBIaWREcml2ZXI6OkN0YXBIaWREcml2ZXIoVW5pcXVl
UmVmPEhpZENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKLSAgICA6IG1fd29ya2VyKG1ha2VVbmlx
dWVSZWY8V29ya2VyPihXVEZNb3ZlKGNvbm5lY3Rpb24pKSkKKyAgICA6IEN0YXBEcml2ZXIoV2Vi
Q29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6VXNiKQorICAgICwgbV93b3JrZXIobWFrZVVu
aXF1ZVJlZjxXb3JrZXI+KFdURk1vdmUoY29ubmVjdGlvbikpKQogICAgICwgbV9ub25jZShrSGlk
SW5pdE5vbmNlTGVuZ3RoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwTmZjRHJpdmVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcE5mY0RyaXZlci5jcHAKaW5k
ZXggNGE5Y2FmMjAzMGY3NjY3MzI4YzgwYzVjYTliMzIwNWQyNGFlNTRiNC4uNjgwYzE4MzllZDZm
MDBjNDYzMTJhZWQ0ZmRiM2RmOGRhMGQ3ZGQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwTmZjRHJpdmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBOZmNEcml2
ZXIuY3BwCkBAIC0zNyw3ICszNyw4IEBAIHVzaW5nIG5hbWVzcGFjZSBhcGR1OwogdXNpbmcgbmFt
ZXNwYWNlIGZpZG87CiAKIEN0YXBOZmNEcml2ZXI6OkN0YXBOZmNEcml2ZXIoUmVmPE5mY0Nvbm5l
Y3Rpb24+JiYgY29ubmVjdGlvbikKLSAgICA6IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rp
b24pKQorICAgIDogQ3RhcERyaXZlcihBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpOZmMpCisgICAg
LCBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50
aWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2Zp
ZG8vVTJmQXV0aGVudGljYXRvci5jcHAKaW5kZXggMDQ5OGJkMDFkMGUxNTQyMDU2OWJhMDNhOTZh
NDkyZDZhMGM5MjI2Yy4uZTI2ZWM2ZjQ2MjkwMGI4ZmJhZmRmNGY5ZjNkNzY0OGIwZjVjNGZmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlk
by9VMmZBdXRoZW50aWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwCkBAIC0xNTcsNyArMTU3LDcg
QEAgdm9pZCBVMmZBdXRoZW50aWNhdG9yOjpjb250aW51ZVJlZ2lzdGVyQ29tbWFuZEFmdGVyUmVz
cG9uc2VSZWNlaXZlZChBcGR1UmVzcG9uc2UKICAgICBjYXNlIEFwZHVSZXNwb25zZTo6U3RhdHVz
OjpTV19OT19FUlJPUjogewogICAgICAgICBhdXRvJiBvcHRpb25zID0gc3RkOjpnZXQ8UHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKICAg
ICAgICAgYXV0byBhcHBJZCA9IHByb2Nlc3NHb29nbGVMZWdhY3lBcHBJZFN1cHBvcnRFeHRlbnNp
b24ob3B0aW9ucy5leHRlbnNpb25zKTsKLSAgICAgICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZS
ZWdpc3RlclJlc3BvbnNlKCFhcHBJZCA/IG9wdGlvbnMucnAuaWQgOiBhcHBJZCwgYXBkdVJlc3Bv
bnNlLmRhdGEoKSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0sIG9wdGlv
bnMuYXR0ZXN0YXRpb24pOworICAgICAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVy
UmVzcG9uc2UoIWFwcElkID8gb3B0aW9ucy5ycC5pZCA6IGFwcElkLCBhcGR1UmVzcG9uc2UuZGF0
YSgpLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSwgeyBkcml2ZXIoKS50
cmFuc3BvcnQoKSB9LCBvcHRpb25zLmF0dGVzdGF0aW9uKTsKICAgICAgICAgaWYgKCFyZXNwb25z
ZSkgewogICAgICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25F
cnJvciwgIkNvdWxkbid0IHBhcnNlIHRoZSBVMkYgcmVnaXN0ZXIgcmVzcG9uc2UuIl9zIH0pOwog
ICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDE0YTkxM2E3YzdhM2U1YTdhYjVhNTFlNjI1MWZmNWNkYjg5NDE2NTYu
LmNlZjZhMDZjODhiMWI0Mzg3ZjE5ZjA4MzcwN2QxYmRhOTNkNjkzNTkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAy
Mi0wNC0xNCAgSiBQYXNjb2UgIDxqX3Bhc2NvZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1
dGhuXSBJbXBsZW1lbnQgZ2V0VHJhbnNwb3J0cygpIGFuZCBnZXRBdXRoZW50aWNhdG9yRGF0YSgp
IG9uIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4OTY2CisgICAgICAgIHJkYXI6Ly9wcm9i
bGVtLzkxNDQ5OTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIHRlc3RzIGZvciBwYXJzaW5nIHRyYW5zcG9ydHMgZnJvbSBnZXRJbmZvLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBSZXNwb25zZVRlc3QuY3Bw
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0ZpZG9UZXN0RGF0YS5oOgorCiAyMDIyLTA0LTE0ICBSb2JlcnQgSmVu
bmVyICA8SmVubmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgYm90MjQxIHRvIGJlIHJl
LXB1cnBvc2VkCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Q3RhcFJlc3BvbnNlVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Q3RhcFJlc3BvbnNlVGVzdC5jcHAKaW5kZXggOWUxYjFiMTM0OTE0NWEwMDc0M2JkYjM4OTJjMzBm
MjIwYmQ0NGE5ZS4uNDUxMTFiMDZhNGNiYTI3M2E4OWFhZjVkODYxYjY2NDlhNDAxYmYzOSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBSZXNwb25zZVRl
c3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9u
c2VUZXN0LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkZpZG9UZXN0RGF0YS5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9BdXRoZW50aWNhdG9yQXR0YWNobWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGlj
YXRvclRyYW5zcG9ydC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQnVmZmVyU291cmNlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9DQk9SUmVhZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DQk9SVmFsdWUu
aD4KQEAgLTM1Myw5ICszNTQsOSBAQCBWZWN0b3I8dWludDhfdD4gZ2V0VGVzdFUyZlJlZ2lzdGVy
UmVzcG9uc2Uoc2l6ZV90IHByZWZpeFNpemUsIGNvbnN0IHVpbnQ4X3QgYXBwZQogLy8gaHR0cHM6
Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1wcy0yMDE3MDkyNy9maWRvLWNsaWVu
dC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtcHMtMjAxNzA5MjcuaHRtbCNjb21tYW5k
cwogVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UmVhZE1ha2VDcmVkZW50aWFsUmVzcG9uc2Up
CiB7Ci0gICAgYXV0byBtYWtlQ3JlZGVudGlhbFJlc3BvbnNlID0gcmVhZENUQVBNYWtlQ3JlZGVu
dGlhbFJlc3BvbnNlKGNvbnZlcnRCeXRlc1RvVmVjdG9yKFRlc3REYXRhOjprVGVzdE1ha2VDcmVk
ZW50aWFsUmVzcG9uc2UsIHNpemVvZihUZXN0RGF0YTo6a1Rlc3RNYWtlQ3JlZGVudGlhbFJlc3Bv
bnNlKSksIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtKTsKKyAgICBhdXRv
IG1ha2VDcmVkZW50aWFsUmVzcG9uc2UgPSByZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVzcG9uc2Uo
Y29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtUZXN0TWFrZUNyZWRlbnRpYWxSZXNwb25z
ZSwgc2l6ZW9mKFRlc3REYXRhOjprVGVzdE1ha2VDcmVkZW50aWFsUmVzcG9uc2UpKSwgQXV0aGVu
dGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0sIHsgfSk7CiAgICAgQVNTRVJUX1RSVUUo
bWFrZUNyZWRlbnRpYWxSZXNwb25zZSk7Ci0gICAgYXV0byBjYm9yQXR0ZXN0YXRpb25PYmplY3Qg
PSBjYm9yOjpDQk9SUmVhZGVyOjpyZWFkKGNvbnZlcnRCeXRlc1RvVmVjdG9yKHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KG1ha2VDcmVkZW50aWFsUmVzcG9uc2UtPmF0dGVzdGF0aW9uT2JqZWN0
KCktPmRhdGEoKSksIG1ha2VDcmVkZW50aWFsUmVzcG9uc2UtPmF0dGVzdGF0aW9uT2JqZWN0KCkt
PmJ5dGVMZW5ndGgoKSkpOworICAgIGF1dG8gY2JvckF0dGVzdGF0aW9uT2JqZWN0ID0gY2Jvcjo6
Q0JPUlJlYWRlcjo6cmVhZChjb252ZXJ0QXJyYXlCdWZmZXJUb1ZlY3RvcihtYWtlQ3JlZGVudGlh
bFJlc3BvbnNlLT5hdHRlc3RhdGlvbk9iamVjdCgpKSk7CiAgICAgQVNTRVJUX1RSVUUoY2JvckF0
dGVzdGF0aW9uT2JqZWN0KTsKICAgICBBU1NFUlRfVFJVRShjYm9yQXR0ZXN0YXRpb25PYmplY3Qt
PmlzTWFwKCkpOwogCkBAIC02MTAsNiArNjExLDI0IEBAIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwg
VGVzdFJlYWRHZXRJbmZvUmVzcG9uc2UyKQogICAgIEVYUEVDVF9FUShBdXRoZW50aWNhdG9yU3Vw
cG9ydGVkT3B0aW9uczo6Q2xpZW50UGluQXZhaWxhYmlsaXR5OjprU3VwcG9ydGVkQnV0UGluTm90
U2V0LCBnZXRJbmZvUmVzcG9uc2UtPm9wdGlvbnMoKS5jbGllbnRQaW5BdmFpbGFiaWxpdHkoKSk7
CiB9CiAKK1RFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFJlYWRHZXRJbmZvUmVzcG9uc2VEZXZp
Y2VZdWJpa2V5NWMpCit7CisgICAgYXV0byBnZXRJbmZvUmVzcG9uc2UgPSByZWFkQ1RBUEdldElu
Zm9SZXNwb25zZShjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1Rlc3RHZXRJbmZvUmVz
cG9uc2VEZXZpY2VZdWJpa2V5NWMsIHNpemVvZihUZXN0RGF0YTo6a1Rlc3RHZXRJbmZvUmVzcG9u
c2VEZXZpY2VZdWJpa2V5NWMpKSk7CisgICAgQVNTRVJUX1RSVUUoZ2V0SW5mb1Jlc3BvbnNlKTsK
KyAgICBBU1NFUlRfVFJVRShnZXRJbmZvUmVzcG9uc2UtPm1heE1zZ1NpemUoKSk7CisgICAgRVhQ
RUNUX0VRKCpnZXRJbmZvUmVzcG9uc2UtPm1heE1zZ1NpemUoKSwgMTIwMHUpOworICAgIEVYUEVD
VF9ORShnZXRJbmZvUmVzcG9uc2UtPnZlcnNpb25zKCkuZmluZChQcm90b2NvbFZlcnNpb246OmtD
dGFwKSwgZ2V0SW5mb1Jlc3BvbnNlLT52ZXJzaW9ucygpLmVuZCgpKTsKKyAgICBFWFBFQ1RfTkUo
Z2V0SW5mb1Jlc3BvbnNlLT52ZXJzaW9ucygpLmZpbmQoUHJvdG9jb2xWZXJzaW9uOjprVTJmKSwg
Z2V0SW5mb1Jlc3BvbnNlLT52ZXJzaW9ucygpLmVuZCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoZ2V0
SW5mb1Jlc3BvbnNlLT5vcHRpb25zKCkuaXNQbGF0Zm9ybURldmljZSgpKTsKKyAgICBFWFBFQ1Rf
RVEoQXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnM6OlJlc2lkZW50S2V5QXZhaWxhYmlsaXR5
OjprU3VwcG9ydGVkLCBnZXRJbmZvUmVzcG9uc2UtPm9wdGlvbnMoKS5yZXNpZGVudEtleUF2YWls
YWJpbGl0eSgpKTsKKyAgICBFWFBFQ1RfVFJVRShnZXRJbmZvUmVzcG9uc2UtPm9wdGlvbnMoKS51
c2VyUHJlc2VuY2VSZXF1aXJlZCgpKTsKKyAgICBFWFBFQ1RfRVEoQXV0aGVudGljYXRvclN1cHBv
cnRlZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHk6OmtOb3RTdXBwb3J0ZWQs
IGdldEluZm9SZXNwb25zZS0+b3B0aW9ucygpLnVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHko
KSk7CisgICAgRVhQRUNUX0VRKEF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zOjpDbGllbnRQ
aW5BdmFpbGFiaWxpdHk6OmtTdXBwb3J0ZWRBbmRQaW5TZXQsIGdldEluZm9SZXNwb25zZS0+b3B0
aW9ucygpLmNsaWVudFBpbkF2YWlsYWJpbGl0eSgpKTsKKyAgICBFWFBFQ1RfVFJVRShnZXRJbmZv
UmVzcG9uc2UtPnRyYW5zcG9ydHMoKSk7CisgICAgRVhQRUNUX0VRKGdldEluZm9SZXNwb25zZS0+
dHJhbnNwb3J0cygpLT5zaXplKCksIDF1KTsKKyAgICBFWFBFQ1RfRVEoQXV0aGVudGljYXRvclRy
YW5zcG9ydDo6VXNiLCBnZXRJbmZvUmVzcG9uc2UtPnRyYW5zcG9ydHMoKS0+Zmlyc3QoKSk7Cit9
CisKIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFJlYWRHZXRJbmZvUmVzcG9uc2VXaXRoSW5j
b3JyZWN0Rm9ybWF0KQogewogICAgIEVYUEVDVF9GQUxTRShyZWFkQ1RBUEdldEluZm9SZXNwb25z
ZShjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihrVGVzdEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2VX
aXRoTm9WZXJzaW9uLCBzaXplb2Yoa1Rlc3RBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlV2l0
aE5vVmVyc2lvbikpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvRmlkb1Rlc3REYXRhLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Rmlkb1Rlc3REYXRhLmgKaW5kZXggN2M3NTAwZmQyZTE5MzAxOTgxZmM0NDQ3MGY4YWM3MzRmNzAw
MWNiNi4uNTEzNzUyYzM2NzdkZGZlMTFhM2I5YjA4MDEyNDAwYjhlMzQ1YjA3YyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9UZXN0RGF0YS5oCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvVGVzdERhdGEuaApAQCAtMTQ0
Niw2ICsxNDQ2LDQxIEBAIGNvbnN0ZXhwciB1aW50OF90IGtDdGFwQ2xpZW50UGluUmV0cmllc1Jl
c3BvbnNlW10gPSB7CiAgICAgMHgwOCwKIH07CiAKK2NvbnN0ZXhwciB1aW50OF90IGtUZXN0R2V0
SW5mb1Jlc3BvbnNlRGV2aWNlWXViaWtleTVjW10gPSB7CisgICAgLy8gU3VjY2VzcworICAgIDB4
MDAsCisgICAgMHhBQSwgMHgwMSwgMHg4MywgMHg2NiwgMHg1NSwgMHgzMiwgMHg0NiwgMHg1Riwg
MHg1NiwgMHgzMiwgMHg2OCwgMHg0NiwKKyAgICAweDQ5LCAweDQ0LCAweDRGLCAweDVGLCAweDMy
LCAweDVGLCAweDMwLCAweDZDLCAweDQ2LCAweDQ5LCAweDQ0LCAweDRGLAorICAgIDB4NUYsIDB4
MzIsIDB4NUYsIDB4MzEsIDB4NUYsIDB4NTAsIDB4NTIsIDB4NDUsIDB4MDIsIDB4ODIsIDB4NkIs
IDB4NjMsCisgICAgMHg3MiwgMHg2NSwgMHg2NCwgMHg1MCwgMHg3MiwgMHg2RiwgMHg3NCwgMHg2
NSwgMHg2MywgMHg3NCwgMHg2QiwgMHg2OCwKKyAgICAweDZELCAweDYxLCAweDYzLCAweDJELCAw
eDczLCAweDY1LCAweDYzLCAweDcyLCAweDY1LCAweDc0LCAweDAzLCAweDUwLAorICAgIDB4RUUs
IDB4ODgsIDB4MjgsIDB4NzksIDB4NzIsIDB4MUMsIDB4NDksIDB4MTMsIDB4OTcsIDB4NzUsIDB4
M0QsIDB4RkMsCisgICAgMHhDRSwgMHg5NywgMHgwNywgMHgyQSwgMHgwNCwgMHhBNSwgMHg2Miwg
MHg3MiwgMHg2QiwgMHhGNSwgMHg2MiwgMHg3NSwKKyAgICAweDcwLCAweEY1LCAweDY0LCAweDcw
LCAweDZDLCAweDYxLCAweDc0LCAweEY0LCAweDY5LCAweDYzLCAweDZDLCAweDY5LAorICAgIDB4
NjUsIDB4NkUsIDB4NzQsIDB4NTAsIDB4NjksIDB4NkUsIDB4RjUsIDB4NzUsIDB4NjMsIDB4NzIs
IDB4NjUsIDB4NjQsCisgICAgMHg2NSwgMHg2RSwgMHg3NCwgMHg2OSwgMHg2MSwgMHg2QywgMHg0
RCwgMHg2NywgMHg2RCwgMHg3NCwgMHg1MCwgMHg3MiwKKyAgICAweDY1LCAweDc2LCAweDY5LCAw
eDY1LCAweDc3LCAweEY1LCAweDA1LCAweDE5LCAweDA0LCAweEIwLCAweDA2LCAweDgxLAorICAg
IDB4MDEsCisgICAgLy8ga2V5KDA3KSAtIG1heENyZWRlbnRpYWxDb3VudEluTGlzdAorICAgIDB4
MDcsCisgICAgLy8gdmFsdWUgLSB1bnNpZ25lZCg4KQorICAgIDB4MDgsCisgICAgLy8ga2V5KDA4
KSAtIG1heENyZWRlbnRpYWxJZExlbmd0aAorICAgIDB4MDgsCisgICAgLy8gdmFsdWUgLSB1bnNp
Z25lZCgxMjgpCisgICAgMHgxOCwgMHg4MCwKKyAgICAvLyBrZXkoMDkpIC0gdHJhbnNwb3J0cwor
ICAgIDB4MDksCisgICAgLy8gYXJyYXkoMSkKKyAgICAweDgxLAorICAgIC8vIHRleHQoMykgLSAi
dXNiIgorICAgIDB4NjMsIDB4NzUsIDB4NzMsIDB4NjIsCisgICAgMHgwQSwgMHg4MiwgMHhBMiwg
MHg2MywgMHg2MSwgMHg2QywgMHg2NywgMHgyNiwgMHg2NCwgMHg3NCwgMHg3OSwgMHg3MCwKKyAg
ICAweDY1LCAweDZBLCAweDcwLCAweDc1LCAweDYyLCAweDZDLCAweDY5LCAweDYzLCAweDJELCAw
eDZCLCAweDY1LCAweDc5LAorICAgIDB4QTIsIDB4NjMsIDB4NjEsIDB4NkMsIDB4NjcsIDB4Mjcs
IDB4NjQsIDB4NzQsIDB4NzksIDB4NzAsIDB4NjUsIDB4NkEsCisgICAgMHg3MCwgMHg3NSwgMHg2
MiwgMHg2QywgMHg2OSwgMHg2MywgMHgyRCwgMHg2QiwgMHg2NSwgMHg3OSwKK307CisKIH0gLy8g
bmFtZXNwYWNlIFRlc3REYXRhCiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBjZmQ4MTZkYzY0Y2UyZmJjOWI0YzgzNjg0MjBjYmY2OWJlY2I1OWEwLi5mY2VjNTE0MTg4YWQ2
ZDJmZDY4NTlkZjM2NTI5ODcyNDMzMzM2NTkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjIt
MDQtMTQgIEogUGFzY29lICA8al9wYXNjb2VAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRo
bl0gSW1wbGVtZW50IGdldFRyYW5zcG9ydHMoKSBhbmQgZ2V0QXV0aGVudGljYXRvckRhdGEoKSBv
biBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4OTY2CisgICAgICAgIHJkYXI6Ly9wcm9ibGVt
LzkxNDQ5OTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGdldFRyYW5zcG9ydHMoKSB0byB0ZXN0LgorCisgICAgICAgICogaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1s
OgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91dGlsLmpzOgorCiAyMDIy
LTA0LTE0ICBLYXJsIFJhY2tsZXIgIDxyYWNrbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBbIE1h
YyBdIGVkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LW9yZGVyZWQtbGlzdC1hbmQtZGVsZXRlLmh0
bWwgaXMgYSBmbGFreSBmYWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwKaW5kZXggNTJmY2IxNjQxZTEzZDg3ZDc1ZGI4
N2QyMGI5ZDEzYjgwZmI3NTVhMS4uNTg0NjBlMTgwNzU4NjdlNGYyZjk2MjIwNzYyNmFkOWIyMzI5
MWY1MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vz
cy1oaWQuaHR0cHMuaHRtbApAQCAtMjcsNyArMjcsNyBAQAogICAgICAgICB9OwogCiAgICAgICAg
IHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVu
dGlhbCA9PiB7Ci0gICAgICAgICAgICBjaGVja0N0YXBNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVk
ZW50aWFsKTsKKyAgICAgICAgICAgIGNoZWNrQ3RhcE1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRl
bnRpYWwsIHRydWUsIFsidXNiIl0pOwogICAgICAgICB9KTsKICAgICB9LCAiUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtaW5pbXVtIG9wdGlvbnMgaW4gYSBtb2NrIGhpZCBh
dXRoZW50aWNhdG9yLiIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9yZXNvdXJjZXMvdXRpbC5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jl
c291cmNlcy91dGlsLmpzCmluZGV4IGU1YWE4NGI5NTIxMWU2OTRlMTg1YTdhMDUzZTg0M2RjNTll
ZjkyYjEuLjdmYmFlOWUzM2QzMjI2OTM0ZTgwOThiN2U3ZTJhZTU0NTM3NDEwNDggMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91dGlsLmpzCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91dGlsLmpzCkBAIC0zNTUs
NyArMzU1LDcgQEAgZnVuY3Rpb24gY2hlY2tQdWJsaWNLZXkocHVibGljS2V5KQogICAgIHJldHVy
biB0cnVlOwogfQogCi1mdW5jdGlvbiBjaGVja0N0YXBNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVk
ZW50aWFsLCBpc05vbmVBdHRlc3RhdGlvbiA9IHRydWUpCitmdW5jdGlvbiBjaGVja0N0YXBNYWtl
Q3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsLCBpc05vbmVBdHRlc3RhdGlvbiA9IHRydWUsIHRy
YW5zcG9ydHMgPSBudWxsKQogewogICAgIC8vIENoZWNrIHJlc3BvbnNlCiAgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhCYXNlNjRVUkwucGFyc2UoY3JlZGVudGlhbC5pZCksIEJhc2U2NFVSTC5wYXJz
ZSh0ZXN0SGlkQ3JlZGVudGlhbElkQmFzZTY0KSk7CkBAIC0zODgsNiArMzg4LDggQEAgZnVuY3Rp
b24gY2hlY2tDdGFwTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVudGlhbCwgaXNOb25lQXR0ZXN0
YXRpb24gPSB0cnVlKQogICAgICAgICBhc3NlcnRfZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmF0
dFN0bXQuYWxnLCAtNyk7CiAgICAgICAgIGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3Qu
YXR0U3RtdC54NWMubGVuZ3RoLCAxKTsKICAgICB9CisgICAgaWYgKHRyYW5zcG9ydHMpCisgICAg
ICAgIGFzc2VydF9hcnJheV9lcXVhbHModHJhbnNwb3J0cywgY3JlZGVudGlhbC5yZXNwb25zZS5n
ZXRUcmFuc3BvcnRzKCkpOwogfQogCiBmdW5jdGlvbiBjaGVja1UyZk1ha2VDcmVkZW50aWFsUmVz
dWx0KGNyZWRlbnRpYWwsIGlzTm9uZUF0dGVzdGF0aW9uID0gdHJ1ZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>