<?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>190783</bug_id>
          
          <creation_ts>2018-10-21 18:13:57 -0700</creation_ts>
          <short_desc>[WebAuthn] Combine AuthenticatorResponse and PublicKeyCredentialData</short_desc>
          <delta_ts>2019-12-11 15:44:01 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore 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>
          
          <blocked>181943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>alex.gaynor</cc>
    
    <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1471162</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-10-21 18:13:57 -0700</bug_when>
    <thetext>We probably should combine AuthenticatorResponse with PublicKeyCredentialData, and customize AuthenticatorResponse more to include fields like numberOfCredentials from FIDO CTAP authenticators. Thus, AuthenticatorResponse will not serve merely for IDL interfaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1535902</commentid>
    <comment_count>1</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-05-13 17:56:02 -0700</bug_when>
    <thetext>The difficulty is that IPC can&apos;t serialize ref counted objects. Therefore, we might still need a separate AuthenticatorResponseData struct that can be passed around different processes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597105</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-09 20:56:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/57781183&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597111</commentid>
    <comment_count>3</comment_count>
      <attachid>385239</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-12-09 21:44:46 -0800</bug_when>
    <thetext>Created attachment 385239
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597255</commentid>
    <comment_count>4</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-12-10 11:01:43 -0800</bug_when>
    <thetext>The layout test failure doesn&apos;t seem to be related:
http/tests/cache-storage/page-cache-domcache-pending-promise.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597741</commentid>
    <comment_count>5</comment_count>
      <attachid>385239</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-12-11 13:00:03 -0800</bug_when>
    <thetext>Comment on attachment 385239
Patch

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

Looks good! r=me

&gt; Source/WebCore/ChangeLog:12
&gt; +        all different type of responses from authenticators anymore. For example, authenticatorGetNextAssertion

all THE different

&gt; Source/WebCore/ChangeLog:13
&gt; +        depends on numberOfCredentials member from authenticatorGetAssertion response to function, but

depends on THE numberOfCredentials ...

&gt; Source/WebCore/ChangeLog:14
&gt; +        numberOfCredentials is not used anywhere else. Therefore, a polymorphism type is needed to

Therefore, a POLYMORPHIC type is needed to ...

&gt; Source/WebCore/ChangeLog:19
&gt; +        IPC. To solve this, AuthenticatorResponseData (PublicKeyCredentialData) is kept to be an intermediate type

is kept AS an intermediate type ...

&gt; Source/WebCore/Modules/webauthn/AuthenticationExtensionsClientOutputs.h:30
&gt; +#include &lt;wtf/text/WTFString.h&gt;

Is WTFString actually needed here? No string appears in the header.

Seems more likely we would need &lt;wtf/Optional.h&gt;

&gt; Source/WebCore/Modules/webauthn/AuthenticatorAssertionResponse.cpp:45
&gt; +    RefPtr&lt;ArrayBuffer&gt; userhandle;

I don&apos;t think it&apos;s wise to rely on case difference to distinguish between &apos;userhandle&apos; and &apos;userHandle&apos;.

I suggest &apos;userHandleData&apos; and &apos;userHandle&apos;.

&gt; Source/WebCore/Modules/webauthn/AuthenticatorResponse.cpp:55
&gt; +// FIXME: Find a way to reduce the unnecessary copies.

You should file a bugzilla or we will never remember to do this!

&gt; Source/WebCore/Modules/webauthn/AuthenticatorResponse.h:55
&gt; +    void setClientDataJSON(Ref&lt;ArrayBuffer&gt;&amp;&amp;);

Why isn&apos;t this inlined like &apos;setExtensions&apos;? Seems like we should be consistent (all in the implementation file, or all in the header).

&gt; Source/WebCore/Modules/webauthn/AuthenticatorResponseData.h:2
&gt; + * Copyright (C) 2018 Apple Inc. All rights reserved.

2019 maybe?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597769</commentid>
    <comment_count>6</comment_count>
      <attachid>385239</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-12-11 13:47:02 -0800</bug_when>
    <thetext>Comment on attachment 385239
Patch

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

Thanks Brent for r+ this patch.

&gt;&gt; Source/WebCore/ChangeLog:12
&gt;&gt; +        all different type of responses from authenticators anymore. For example, authenticatorGetNextAssertion
&gt; 
&gt; all THE different

Fixed.

&gt;&gt; Source/WebCore/ChangeLog:13
&gt;&gt; +        depends on numberOfCredentials member from authenticatorGetAssertion response to function, but
&gt; 
&gt; depends on THE numberOfCredentials ...

Fixed.

&gt;&gt; Source/WebCore/ChangeLog:14
&gt;&gt; +        numberOfCredentials is not used anywhere else. Therefore, a polymorphism type is needed to
&gt; 
&gt; Therefore, a POLYMORPHIC type is needed to ...

Fixed.

&gt;&gt; Source/WebCore/ChangeLog:19
&gt;&gt; +        IPC. To solve this, AuthenticatorResponseData (PublicKeyCredentialData) is kept to be an intermediate type
&gt; 
&gt; is kept AS an intermediate type ...

Fixed.

&gt;&gt; Source/WebCore/Modules/webauthn/AuthenticationExtensionsClientOutputs.h:30
&gt;&gt; +#include &lt;wtf/text/WTFString.h&gt;
&gt; 
&gt; Is WTFString actually needed here? No string appears in the header.
&gt; 
&gt; Seems more likely we would need &lt;wtf/Optional.h&gt;

Removed.

&gt;&gt; Source/WebCore/Modules/webauthn/AuthenticatorAssertionResponse.cpp:45
&gt;&gt; +    RefPtr&lt;ArrayBuffer&gt; userhandle;
&gt; 
&gt; I don&apos;t think it&apos;s wise to rely on case difference to distinguish between &apos;userhandle&apos; and &apos;userHandle&apos;.
&gt; 
&gt; I suggest &apos;userHandleData&apos; and &apos;userHandle&apos;.

Right, I was somehow lazy.

&gt; Source/WebCore/Modules/webauthn/AuthenticatorCoordinatorClient.h:42
&gt; +struct AuthenticatorResponseData;

Moved to the top.

&gt;&gt; Source/WebCore/Modules/webauthn/AuthenticatorResponse.cpp:55
&gt;&gt; +// FIXME: Find a way to reduce the unnecessary copies.
&gt; 
&gt; You should file a bugzilla or we will never remember to do this!

I just removed the FIXME actually as I don&apos;t think it worths optimizing.

&gt;&gt; Source/WebCore/Modules/webauthn/AuthenticatorResponse.h:55
&gt;&gt; +    void setClientDataJSON(Ref&lt;ArrayBuffer&gt;&amp;&amp;);
&gt; 
&gt; Why isn&apos;t this inlined like &apos;setExtensions&apos;? Seems like we should be consistent (all in the implementation file, or all in the header).

The considerations here is to limit the access to certain methods given this is a private header. I moved all to the implementations and use WEBCORE_EXPORT for rawId and setExtensions.

&gt;&gt; Source/WebCore/Modules/webauthn/AuthenticatorResponseData.h:2
&gt;&gt; + * Copyright (C) 2018 Apple Inc. All rights reserved.
&gt; 
&gt; 2019 maybe?

Yes!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597801</commentid>
    <comment_count>7</comment_count>
      <attachid>385441</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-12-11 14:33:14 -0800</bug_when>
    <thetext>Created attachment 385441
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597813</commentid>
    <comment_count>8</comment_count>
      <attachid>385441</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-11 15:19:17 -0800</bug_when>
    <thetext>Comment on attachment 385441
Patch for landing

Clearing flags on attachment: 385441

Committed r253398: &lt;https://trac.webkit.org/changeset/253398&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385239</attachid>
            <date>2019-12-09 21:44:46 -0800</date>
            <delta_ts>2019-12-11 13:00:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190783-20191209214445.patch</filename>
            <type>text/plain</type>
            <size>110970</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMjk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWRhYjI0MjdkODRjNzZj
ZDViZWZhM2MxNWIwZjkzYjZlOWY3NTc1NS4uOTE0NGZlNGU2ZGM4NmNmMzI2ODZlNWYwNDZkZjcx
YTZiMDc2MjQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDE5LTEyLTA5ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBDb21i
aW5lIEF1dGhlbnRpY2F0b3JSZXNwb25zZSBhbmQgUHVibGljS2V5Q3JlZGVudGlhbERhdGEKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDc4MworICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNTc3ODExODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjb21iaW5lcyBBdXRoZW50aWNhdG9y
UmVzcG9uc2UgYW5kIFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLCBhbmQgdGhlcmVmb3JlIHJlbmFt
ZXMKKyAgICAgICAgUHVibGljS2V5Q3JlZGVudGlhbERhdGEgdG8gQXV0aGVudGljYXRvclJlc3Bv
bnNlRGF0YSBhcyB3ZWxsLiBUaGUgY29tcGxleGl0eSBvZiBXZWJLaXQncyBDVEFQCisgICAgICAg
IGltcGxlbWVudGF0aW9uIGhhcyByZWFjaGVkIHRoZSBwb2ludCB0aGF0IFB1YmxpY0tleUNyZWRl
bnRpYWxEYXRhIGlzIG5vdCBhcHByb3ByaWF0ZSB0byByZXByZXNlbnQKKyAgICAgICAgYWxsIGRp
ZmZlcmVudCB0eXBlIG9mIHJlc3BvbnNlcyBmcm9tIGF1dGhlbnRpY2F0b3JzIGFueW1vcmUuIEZv
ciBleGFtcGxlLCBhdXRoZW50aWNhdG9yR2V0TmV4dEFzc2VydGlvbgorICAgICAgICBkZXBlbmRz
IG9uIG51bWJlck9mQ3JlZGVudGlhbHMgbWVtYmVyIGZyb20gYXV0aGVudGljYXRvckdldEFzc2Vy
dGlvbiByZXNwb25zZSB0byBmdW5jdGlvbiwgYnV0CisgICAgICAgIG51bWJlck9mQ3JlZGVudGlh
bHMgaXMgbm90IHVzZWQgYW55d2hlcmUgZWxzZS4gVGhlcmVmb3JlLCBhIHBvbHltb3JwaGlzbSB0
eXBlIGlzIG5lZWRlZCB0bworICAgICAgICByZXByZXNlbnQgZGlmZmVyZW50IHJlc3BvbnNlcyBm
cm9tIGF1dGhlbnRpY2F0b3JzIGluc3RlYWQgb2YgYW4gdW5pZm9ybSBvbmUsIGkuZS4sIFB1Ymxp
Y0tleUNyZWRlbnRpYWxEYXRhLgorCisgICAgICAgIEF1dGhlbnRpY2F0b3JSZXNwb25zZSBzZWVt
cyB0byBiZSB0aGUgYmVzdCBmaXQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBzb21lIGxpbWl0YXRpb25z
OgorICAgICAgICAxKSBpdCBpcyBhIFdlYklETCBpbnRlcmZhY2UsIGFuZCB0aGVyZWZvcmUgaXMg
UmVmQ291bnRlZC4gUmVmQ291bnRlZCBvYmplY3RzIGNhbm5vdCBiZSBzZXJpYWxpemVkIHRocm91
Z2gKKyAgICAgICAgSVBDLiBUbyBzb2x2ZSB0aGlzLCBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRh
IChQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSkgaXMga2VwdCB0byBiZSBhbiBpbnRlcm1lZGlhdGUg
dHlwZQorICAgICAgICB0aGF0IGlzIG9ubHkgdXNlZCBkdXJpbmcgSVBDLgorICAgICAgICAyKSBp
dCBkb2Vzbid0IGNvbnRhaW4gYWxsIHRoZSBpbmZvcm1hdGlvbiBmcm9tIGFuIGFjdHVhbCBhdXRo
ZW50aWNhdG9yIHJlc3BvbnNlLiBUbyBzb2x2ZSB0aGlzLCBpdAorICAgICAgICBoYXMgYmVlbiBl
bmxhcmdlZCB0byBpbmNsdWRlIGFsbCBtZW1iZXJzIGZyb20gUHVibGljS2V5Q3JlZGVudGlhbC4g
QWZ0ZXIgdGhpcyBwYXRjaCwgUHVibGljS2V5Q3JlZGVudGlhbAorICAgICAgICB3aWxsIGJlIGEg
dGhpbiB3cmFwcGVyIG9uIHRvcCBvZiBBdXRoZW50aWNhdG9yUmVzcG9uc2UuCisKKyAgICAgICAg
Q292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMu
bWFrZToKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0
aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaWRsLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50
T3V0cHV0cy5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
UHVibGljS2V5Q3JlZGVudGlhbC5pZGwuCisgICAgICAgIFRoaXMgaXMgc2VwYXJhdGVkIGZyb20g
UHVibGljS2V5Q3JlZGVudGlhbCBzdWNoIHRoYXQgQXV0aGVudGljYXRvclJlc3BvbnNlIGNhbiBp
bmNsdWRlIGl0LgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmRhdGEgY29u
c3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlLmg6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2U6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSk6IERlbGV0ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNw
b25zZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaC4KKyAgICAgICAgKFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlv
blJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmg6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yOjpjcmVhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZSBjb25zdCk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVu
dGlhbC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2U6OnRyeUNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2U6OmRhdGEgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlOjpleHRlbnNpb25z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZTo6c2V0Q2xp
ZW50RGF0YUpTT04pOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlOjpj
bGllbnREYXRhSlNPTiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVz
cG9uc2U6OkF1dGhlbnRpY2F0b3JSZXNwb25zZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JSZXNwb25zZTo6cmF3SWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRv
clJlc3BvbnNlOjpzZXRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JSZXNwb25zZTo6QXV0aGVudGljYXRvclJlc3BvbnNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZTo6Y2xpZW50RGF0YUpTT04gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlRGF0
YS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNL
ZXlDcmVkZW50aWFsRGF0YS5oLgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3Bv
bnNlRGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JS
ZXNwb25zZURhdGE6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNL
ZXlDcmVkZW50aWFsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWw6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsOjpyYXdJZCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsOjpnZXRDbGllbnRF
eHRlbnNpb25SZXN1bHRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY0tleUNyZWRl
bnRpYWw6OlB1YmxpY0tleUNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViQ29yZTo6UHVibGljS2V5
Q3JlZGVudGlhbDo6dHJ5Q3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL1B1
YmxpY0tleUNyZWRlbnRpYWwuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9E
ZXZpY2VSZXNwb25zZUNvbnZlcnRlci5jcHA6CisgICAgICAgIChmaWRvOjpyZWFkQ1RBUE1ha2VD
cmVkZW50aWFsUmVzcG9uc2UpOgorICAgICAgICAoZmlkbzo6cmVhZENUQVBHZXRBc3NlcnRpb25S
ZXNwb25zZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNl
Q29udmVydGVyLmg6CisgICAgICAgIEEgbW9yZSBhcHByb3ByaWF0ZSBkZXJpdmVkIHR5cGUgb2Yg
QXV0aGVudGljYXRvclJlc3BvbnNlIGlzIHVzZWQgdG8gcmVwbGFjZSBQdWJsaWNLZXlDcmVkZW50
aWFsRGF0YS4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252
ZXJ0ZXIuY3BwOgorICAgICAgICAoZmlkbzo6cmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UpOgorICAg
ICAgICAoZmlkbzo6cmVhZFUyZlNpZ25SZXNwb25zZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmg6CisgICAgICAgIEEgbW9yZSBhcHByb3By
aWF0ZSBkZXJpdmVkIHR5cGUgb2YgQXV0aGVudGljYXRvclJlc3BvbnNlIGlzIHVzZWQgdG8gcmVw
bGFjZSBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YS4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMTItMDkg
IFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHNwZWN1bGF0aXZlIHR2T1MgYnVpbGQgZml4IGFmdGVyIHIyNTMyMzEuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGQ0OWRiNjk3MTg5NTM2ODFhYzczMTkxZDA2MDgzYzE4NzY5MmE5ZGEuLjNmMzkzNzI5YTBlMzAx
ZWJhNDM2NmFkMjE4ODA1M2ZlOGNhYmQ3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIw
MTktMTItMDkgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBb
V2ViQXV0aG5dIENvbWJpbmUgQXV0aGVudGljYXRvclJlc3BvbnNlIGFuZCBQdWJsaWNLZXlDcmVk
ZW50aWFsRGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkwNzgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81Nzc4MTE4Mz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb2RlIGluIFdlYktpdCBhcmUg
Y2hhbmdlZCB0byB1c2UgQXV0aGVudGljYXRvclJlc3BvbnNlIGFuZCBpdHMgc3VidHlwZXMuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpyZXNwb25kUmVj
ZWl2ZWQpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6aW52b2tlUGVu
ZGluZ0NvbXBsZXRpb25IYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tOgorICAgICAgICAoV2ViS2l0
OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVk
KToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2Vy
dGlvbkFmdGVyVXNlckNvbnNlbnRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmhhbmRsZVJlcXVlc3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9X
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkN0YXBBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFs
QWZ0ZXJSZXNwb25zZVJlY2VpdmVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEF1dGhl
bnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9y
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VTJmQXV0aGVudGljYXRvcjo6Y29udGludWVSZWdpc3Rl
ckNvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViS2l0OjpVMmZBdXRo
ZW50aWNhdG9yOjpjb250aW51ZVNpZ25Db21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvci5jcHA6CisKIDIwMTktMTItMDkgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBzaG91bGQgY29uc3VtZSBpdHMg
c2FuZGJveCBleHRlbnNpb25zIHdoZW4gc3RhcnRpbmcgYSBmZXRjaCB0aHJvdWdoIHNlcnZpY2Ug
d29ya2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDUyMjA2ODczMWNlZTE2NWZjZTAyZTBlNmE4
ZGY4Yzk1ZGMxZDE1MzQuLmM3NDNlNGQzMDk2MTQyMzRiZmUwZWMwOWI0YWIxMTUzZGUzOWEwOWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00NjEsNiArNDYxLDcgQEAgc2V0KFdlYkNvcmVfTk9O
X1NWR19JRExfRklMRVMKIAogICAgIE1vZHVsZXMvd2ViYXV0aG4vQXR0ZXN0YXRpb25Db252ZXlh
bmNlUHJlZmVyZW5jZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0
ZW5zaW9uc0NsaWVudElucHV0cy5pZGwKKyAgICBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0
aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaWRsCiAgICAgTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaWRsCiAgICAgTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JSZXNwb25zZS5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDAwYmRiOTViZDU1YjA1M2QwYzFhMDcxNDM5NWU5ODZk
ZTZkMWYyNmUuLmYzZmNkYTM0NTU1M2I0OGVmMzM1NGZmNGQ2YzI4OGQ5ZTRjYjZkNzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysr
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMzE0
LDYgKzMxNCw3IEBAICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vz
c29yTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5v
ZGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1dGhuL0F0dGVzdGF0aW9uQ29udmV5
YW5jZVByZWZlcmVuY2UuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5pZGwKICQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvclJlc3BvbnNlLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCA2ZjUxOTA0YjI5M2VkZDI1MWIxMDMwNWNmZTk4OWVi
NzE0ZTM5MmVmLi40OWY2ZmZiN2Q5NmY2NTFiMjJiN2JmZmZlZmVhNGNmNDEyNWNiMjY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAt
MTYwLDYgKzE2MCw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTQXVkaW9UcmFja01lZGlhU291cmNlLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1RyYWNrTWVkaWFTb3VyY2UuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdXRoZW50aWNhdGlvbkV4dGVu
c2lvbnNDbGllbnRJbnB1dHMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1dGhlbnRpY2F0aW9u
RXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXgg
MGJmYWJlY2E0MzFlZTEwNmNkOGQ3YTI3ZjRiZGY2MDYyZGIwMTg1ZC4uOGM5YzYyZTljNGE5Y2Fh
M2FmZjkxYTlmMWMxNjRiZDcyZTQ4YzM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CkBAIC0zNzMsNiArMzczLDcgQEAgSlNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy93ZWJhdXRobi9BdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlLmlkbCBcCiAgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVu
dElucHV0cy5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5pZGwgXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5p
ZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9u
c2UuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGVlODllZTNmMGNjYmNkY2YzODk2Zjk0MjU4
ZjFhMzYxNGQxNTYzZjYuLjQ3Njg4Yzc5MDA0MjkxMGY2YWFlMGZjM2MxMWVhMDUxMWIwNzRkYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTEyLDExICsxMTIsMTIgQEAgc2V0KFdlYkNvcmVfUFJJ
VkFURV9GUkFNRVdPUktfSEVBREVSUwogCiAgICAgTW9kdWxlcy93ZWJhdXRobi9BdHRlc3RhdGlv
bkNvbnZleWFuY2VQcmVmZXJlbmNlLmgKICAgICBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0
aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5oCisgICAgTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmgKICAgICBNb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCiAgICAgTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JDbGllbnQuaAorICAgIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
clJlc3BvbnNlRGF0YS5oCiAgICAgTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yVHJhbnNw
b3J0LmgKICAgICBNb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnMuaAotICAgIE1vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbERhdGEuaAog
ICAgIE1vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IuaAogICAg
IE1vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmgKICAg
ICBNb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxUeXBlLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25z
Q2xpZW50T3V0cHV0cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRjYzcyZDgwZmI2
MzVjNDYwODQ4YTU1YjkwYjNiM2EzYjcyY2RkOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0
cHV0cy5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xp
ZW50T3V0cHV0cyB7CisgICAgT3B0aW9uYWw8Ym9vbD4gYXBwaWQ7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnND
bGllbnRPdXRwdXRzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTEyYzA3NTdl
YzFjYTRhNThiODU1ODcxY2E0NTBjYTdjZWVhMTUyMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50
T3V0cHV0cy5pZGwKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRp
b25hbD1XRUJfQVVUSE4sCisgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCitdIGRpY3Rpb25hcnkg
QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cyB7CisgICAgYm9vbGVhbiBhcHBp
ZDsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGY0
ZWI3YTNkY2VmMmNkNDUwM2M0MGU5ZjY1MTI3ZjU3MzE0YjUwNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlLmNwcApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oIgorCisjaWYg
RU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShSZWY8QXJyYXlC
dWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdXRoZW50aWNhdG9yRGF0YSwgUmVm
PEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5k
bGUsIE9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYgZXh0
ZW5zaW9ucykKK3sKKyAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHRSZWYoKm5ldyBBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2UoV1RGTW92ZShyYXdJZCksIFdURk1vdmUoYXV0aGVudGljYXRv
ckRhdGEpLCBXVEZNb3ZlKHNpZ25hdHVyZSksIFdURk1vdmUodXNlckhhbmRsZSkpKTsKKyAgICBp
ZiAoZXh0ZW5zaW9ucykKKyAgICAgICAgcmVzcG9uc2UtPnNldEV4dGVuc2lvbnMoV1RGTW92ZSgq
ZXh0ZW5zaW9ucykpOworICAgIHJldHVybiByZXNwb25zZTsKK30KKworUmVmPEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVh
dGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBh
dXRoZW50aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsICBjb25z
dCBWZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpCit7CisgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiB1c2VyaGFuZGxlOworICAgIGlmICghdXNlckhhbmRsZS5pc0VtcHR5KCkpCisgICAgICAgIHVz
ZXJoYW5kbGUgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVzZXJIYW5kbGUuZGF0YSgpLCB1c2VySGFu
ZGxlLnNpemUoKSk7CisgICAgcmV0dXJuIGNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3JlYXRlKHJhd0lk
LmRhdGEoKSwgcmF3SWQuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoZW50aWNhdG9y
RGF0YS5kYXRhKCksIGF1dGhlbnRpY2F0b3JEYXRhLnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVh
dGUoc2lnbmF0dXJlLmRhdGEoKSwgc2lnbmF0dXJlLnNpemUoKSksIFdURk1vdmUodXNlcmhhbmRs
ZSksIFdURjo6bnVsbG9wdCk7Cit9CisKK0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwg
UmVmPEFycmF5QnVmZmVyPiYmIGF1dGhlbnRpY2F0b3JEYXRhLCBSZWY8QXJyYXlCdWZmZXI+JiYg
c2lnbmF0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSkKKyAgICA6IEF1dGhl
bnRpY2F0b3JSZXNwb25zZShXVEZNb3ZlKHJhd0lkKSkKKyAgICAsIG1fYXV0aGVudGljYXRvckRh
dGEoV1RGTW92ZShhdXRoZW50aWNhdG9yRGF0YSkpCisgICAgLCBtX3NpZ25hdHVyZShXVEZNb3Zl
KHNpZ25hdHVyZSkpCisgICAgLCBtX3VzZXJIYW5kbGUoV1RGTW92ZSh1c2VySGFuZGxlKSkKK3sK
K30KKworQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2U6OmRhdGEoKSBjb25zdAoreworICAgIGF1dG8gZGF0YSA9IEF1dGhlbnRpY2F0b3JSZXNw
b25zZTo6ZGF0YSgpOworICAgIGRhdGEuaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZSA9IGZhbHNlOworICAgIGRhdGEuYXV0aGVudGljYXRvckRhdGEgPSBtX2F1dGhlbnRpY2F0b3JE
YXRhLmNvcHlSZWYoKTsKKyAgICBkYXRhLnNpZ25hdHVyZSA9IG1fc2lnbmF0dXJlLmNvcHlSZWYo
KTsKKyAgICBkYXRhLnVzZXJIYW5kbGUgPSBtX3VzZXJIYW5kbGU7CisgICAgcmV0dXJuIGRhdGE7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVU
SE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaAppbmRleCA5YzU2NTIwNmQ3MTUwM2Vi
NzMwMTk3YjNkZjE0OWYxYmM5ZjA2NWNmLi5hYmEyMjllY2JmNDI2ODM5YzAzMzhjMmNkNTRiYmIy
ZmMxMDVjNzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmgKQEAgLTMzLDExICsz
Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlIDogcHVibGljIEF1dGhlbnRpY2F0b3JSZXNwb25zZSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IGNyZWF0ZShSZWY8QXJy
YXlCdWZmZXI+JiYgY2xpZW50RGF0YUpTT04sIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdXRoZW50aWNh
dG9yRGF0YSwgUmVmPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVy
PiYmIHVzZXJIYW5kbGUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoV1RGTW92ZShjbGllbnREYXRhSlNPTiksIFdURk1v
dmUoYXV0aGVudGljYXRvckRhdGEpLCBXVEZNb3ZlKHNpZ25hdHVyZSksIFdURk1vdmUodXNlckhh
bmRsZSkpKTsKLSAgICB9Ci0KKyAgICBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVy
PiYmIGF1dGhlbnRpY2F0b3JEYXRhLCBSZWY8QXJyYXlCdWZmZXI+JiYgc2lnbmF0dXJlLCBSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwgT3B0aW9uYWw8QXV0aGVudGljYXRpb25FeHRl
bnNpb25zQ2xpZW50T3V0cHV0cz4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IGNyZWF0ZShjb25zdCBWZWN0b3I8dWludDhf
dD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0b3JEYXRhLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdXNl
ckhhbmRsZSk7CiAgICAgdmlydHVhbCB+QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKCkg
PSBkZWZhdWx0OwogCiAgICAgQXJyYXlCdWZmZXIqIGF1dGhlbnRpY2F0b3JEYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9hdXRoZW50aWNhdG9yRGF0YS5wdHIoKTsgfQpAQCAtNDUsMTUgKzQyLDEwIEBA
IHB1YmxpYzoKICAgICBBcnJheUJ1ZmZlciogdXNlckhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dXNlckhhbmRsZS5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIEF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYgY2xpZW50RGF0YUpTT04sIFJlZjxBcnJheUJ1
ZmZlcj4mJiBhdXRoZW50aWNhdG9yRGF0YSwgUmVmPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSwg
UmVmUHRyPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUpCi0gICAgICAgIDogQXV0aGVudGljYXRv
clJlc3BvbnNlKFdURk1vdmUoY2xpZW50RGF0YUpTT04pKQotICAgICAgICAsIG1fYXV0aGVudGlj
YXRvckRhdGEoV1RGTW92ZShhdXRoZW50aWNhdG9yRGF0YSkpCi0gICAgICAgICwgbV9zaWduYXR1
cmUoV1RGTW92ZShzaWduYXR1cmUpKQotICAgICAgICAsIG1fdXNlckhhbmRsZShXVEZNb3ZlKHVz
ZXJIYW5kbGUpKQotICAgIHsKLSAgICB9CisgICAgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZm
ZXI+JiYsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJik7CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBUeXBlOjpBc3NlcnRpb247IH0KKyAgICBBdXRoZW50aWNhdG9yUmVzcG9u
c2VEYXRhIGRhdGEoKSBjb25zdCBmaW5hbDsKIAogICAgIFJlZjxBcnJheUJ1ZmZlcj4gbV9hdXRo
ZW50aWNhdG9yRGF0YTsKICAgICBSZWY8QXJyYXlCdWZmZXI+IG1fc2lnbmF0dXJlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDJiODczNDA0ZDY0
Y2Q3NmJmZTgxZWJjYzI5Yzg1NTMwOWMwMjk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5j
cHAKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oIgorCisjaWYgRU5BQkxF
KFdFQl9BVVRITikKKworI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2U+IEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoUmVmPEFycmF5QnVm
ZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2Uo
V1RGTW92ZShyYXdJZCksIFdURk1vdmUoYXR0ZXN0YXRpb25PYmplY3QpKSk7Cit9CisKK1JlZjxB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2U6OmNyZWF0ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0lkLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGF0dGVzdGF0aW9uT2JqZWN0KQoreworICAgIHJldHVybiBjcmVhdGUoQXJy
YXlCdWZmZXI6OmNyZWF0ZShyYXdJZC5kYXRhKCksIHJhd0lkLnNpemUoKSksIEFycmF5QnVmZmVy
OjpjcmVhdGUoYXR0ZXN0YXRpb25PYmplY3QuZGF0YSgpLCBhdHRlc3RhdGlvbk9iamVjdC5zaXpl
KCkpKTsKK30KKworQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5
QnVmZmVyPiYmIGF0dGVzdGF0aW9uT2JqZWN0KQorICAgIDogQXV0aGVudGljYXRvclJlc3BvbnNl
KFdURk1vdmUocmF3SWQpKQorICAgICwgbV9hdHRlc3RhdGlvbk9iamVjdChXVEZNb3ZlKGF0dGVz
dGF0aW9uT2JqZWN0KSkKK3sKK30KKworQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBBdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6ZGF0YSgpIGNvbnN0Cit7CisgICAgYXV0byBkYXRh
ID0gQXV0aGVudGljYXRvclJlc3BvbnNlOjpkYXRhKCk7CisgICAgZGF0YS5pc0F1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlID0gdHJ1ZTsKKyAgICBkYXRhLmF0dGVzdGF0aW9uT2JqZWN0
ID0gbV9hdHRlc3RhdGlvbk9iamVjdC5jb3B5UmVmKCk7CisgICAgcmV0dXJuIGRhdGE7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmgKaW5kZXggMDUzN2Q5N2MzYmQyMDZmOWZi
ZDI3MTZlZDM1NDA5YjY3ZTNlZTY5YS4uNjBjZDZlN2ExYjA0NTRkNGI3ZDhlMTFlNWRlM2VjMmZh
YmZmZGY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaApAQCAtMzMsMjMg
KzMzLDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2UgOiBwdWJsaWMgQXV0aGVudGljYXRvclJlc3BvbnNlIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBjcmVhdGUo
UmVmPEFycmF5QnVmZmVyPiYmIGNsaWVudERhdGFKU09OLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXR0
ZXN0YXRpb25PYmplY3QpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZShXVEZNb3ZlKGNsaWVudERhdGFKU09OKSwgV1RG
TW92ZShhdHRlc3RhdGlvbk9iamVjdCkpKTsKLSAgICB9CisgICAgc3RhdGljIFJlZjxBdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJ
ZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF0dGVzdGF0aW9uT2JqZWN0KTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBjcmVhdGUo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdHRl
c3RhdGlvbk9iamVjdCk7CiAKICAgICB2aXJ0dWFsIH5BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25S
ZXNwb25zZSgpID0gZGVmYXVsdDsKIAogICAgIEFycmF5QnVmZmVyKiBhdHRlc3RhdGlvbk9iamVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fYXR0ZXN0YXRpb25PYmplY3QucHRyKCk7IH0KIAogcHJpdmF0
ZToKLSAgICBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+
JiYgY2xpZW50RGF0YUpTT04sIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdHRlc3RhdGlvbk9iamVjdCkK
LSAgICAgICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShjbGllbnREYXRhSlNPTikp
Ci0gICAgICAgICwgbV9hdHRlc3RhdGlvbk9iamVjdChXVEZNb3ZlKGF0dGVzdGF0aW9uT2JqZWN0
KSkKLSAgICB7Ci0gICAgfQorICAgIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKFJl
ZjxBcnJheUJ1ZmZlcj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmKTsKIAogICAgIFR5cGUgdHlwZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6OkF0dGVzdGF0aW9uOyB9CisgICAgQXV0aGVudGlj
YXRvclJlc3BvbnNlRGF0YSBkYXRhKCkgY29uc3QgZmluYWw7CiAKICAgICBSZWY8QXJyYXlCdWZm
ZXI+IG1fYXR0ZXN0YXRpb25PYmplY3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCmluZGV4
IGY4MGY2NGJmY2JjOWNiM2I0Yzg1MTgzZjFmYzYxZWJkMjZlZGQ5M2QuLjY4OGQ0N2MwNWZjODdi
YzQ3MjZiODFiMzJjNTg0YmZiOGQ0Mzk3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKQEAg
LTMyLDEyICszMiwxMiBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZS5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmgiCiAjaW5j
bHVkZSAiQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiQXV0aGVu
dGljYXRvclJlc3BvbnNlRGF0YS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
SlNCYXNpY0NyZWRlbnRpYWwuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgog
I2luY2x1ZGUgIlB1YmxpY0tleUNyZWRlbnRpYWwuaCIKICNpbmNsdWRlICJQdWJsaWNLZXlDcmVk
ZW50aWFsQ3JlYXRpb25PcHRpb25zLmgiCi0jaW5jbHVkZSAiUHVibGljS2V5Q3JlZGVudGlhbERh
dGEuaCIKICNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCIKICNp
bmNsdWRlICJSZWdpc3RyYWJsZURvbWFpbi5oIgogI2luY2x1ZGUgIkxlZ2FjeVNjaGVtZVJlZ2lz
dHJ5LmgiCkBAIC0xODUsMTUgKzE4NSwxNSBAQCB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRv
cjo6Y3JlYXRlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUHVibGljS2V5QwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYWxsYmFjayA9IFtjbGllbnREYXRhSnNv
biA9IFdURk1vdmUoY2xpZW50RGF0YUpzb24pLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwg
YWJvcnRTaWduYWwgPSBXVEZNb3ZlKGFib3J0U2lnbmFsKV0gKFB1YmxpY0tleUNyZWRlbnRpYWxE
YXRhJiYgZGF0YSwgRXhjZXB0aW9uRGF0YSYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CisgICAgYXV0
byBjYWxsYmFjayA9IFtjbGllbnREYXRhSnNvbiA9IFdURk1vdmUoY2xpZW50RGF0YUpzb24pLCBw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgYWJvcnRTaWduYWwgPSBXVEZNb3ZlKGFib3J0U2ln
bmFsKV0gKEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmJiBkYXRhLCBFeGNlcHRpb25EYXRhJiYg
ZXhjZXB0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGFib3J0U2lnbmFsICYmIGFib3J0U2ln
bmFsLT5hYm9ydGVkKCkpIHsKICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7
IEFib3J0RXJyb3IsICJBYm9ydGVkIGJ5IEFib3J0U2lnbmFsLiJfcyB9KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGRhdGEuY2xpZW50RGF0YUpTT04gPSBXVEZN
b3ZlKGNsaWVudERhdGFKc29uKTsKLSAgICAgICAgaWYgKGF1dG8gcHVibGljS2V5Q3JlZGVudGlh
bCA9IFB1YmxpY0tleUNyZWRlbnRpYWw6OnRyeUNyZWF0ZShXVEZNb3ZlKGRhdGEpKSkgewotICAg
ICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHB1YmxpY0tleUNyZWRlbnRpYWwuZ2V0KCkpOworICAg
ICAgICBpZiAoYXV0byByZXNwb25zZSA9IEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6dHJ5Q3JlYXRl
KFdURk1vdmUoZGF0YSkpKSB7CisgICAgICAgICAgICByZXNwb25zZS0+c2V0Q2xpZW50RGF0YUpT
T04oV1RGTW92ZShjbGllbnREYXRhSnNvbikpOworICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZl
KFB1YmxpY0tleUNyZWRlbnRpYWw6OmNyZWF0ZShyZXNwb25zZS5yZWxlYXNlTm9uTnVsbCgpKS5w
dHIoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUKCFl
eGNlcHRpb24ubWVzc2FnZS5pc051bGwoKSk7CkBAIC0yNTYsMTUgKzI1NiwxNSBAQCB2b2lkIEF1
dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6ZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoY29uc3Qg
RG9jdW1lbnQmIGRvY3VtZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYWxs
YmFjayA9IFtjbGllbnREYXRhSnNvbiA9IFdURk1vdmUoY2xpZW50RGF0YUpzb24pLCBwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgYWJvcnRTaWduYWwgPSBXVEZNb3ZlKGFib3J0U2lnbmFsKV0g
KFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhJiYgZGF0YSwgRXhjZXB0aW9uRGF0YSYmIGV4Y2VwdGlv
bikgbXV0YWJsZSB7CisgICAgYXV0byBjYWxsYmFjayA9IFtjbGllbnREYXRhSnNvbiA9IFdURk1v
dmUoY2xpZW50RGF0YUpzb24pLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgYWJvcnRTaWdu
YWwgPSBXVEZNb3ZlKGFib3J0U2lnbmFsKV0gKEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmJiBk
YXRhLCBFeGNlcHRpb25EYXRhJiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGFi
b3J0U2lnbmFsICYmIGFib3J0U2lnbmFsLT5hYm9ydGVkKCkpIHsKICAgICAgICAgICAgIHByb21p
c2UucmVqZWN0KEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IsICJBYm9ydGVkIGJ5IEFib3J0U2lnbmFs
LiJfcyB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGRhdGEu
Y2xpZW50RGF0YUpTT04gPSBXVEZNb3ZlKGNsaWVudERhdGFKc29uKTsKLSAgICAgICAgaWYgKGF1
dG8gcHVibGljS2V5Q3JlZGVudGlhbCA9IFB1YmxpY0tleUNyZWRlbnRpYWw6OnRyeUNyZWF0ZShX
VEZNb3ZlKGRhdGEpKSkgewotICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHB1YmxpY0tleUNy
ZWRlbnRpYWwuZ2V0KCkpOworICAgICAgICBpZiAoYXV0byByZXNwb25zZSA9IEF1dGhlbnRpY2F0
b3JSZXNwb25zZTo6dHJ5Q3JlYXRlKFdURk1vdmUoZGF0YSkpKSB7CisgICAgICAgICAgICByZXNw
b25zZS0+c2V0Q2xpZW50RGF0YUpTT04oV1RGTW92ZShjbGllbnREYXRhSnNvbikpOworICAgICAg
ICAgICAgcHJvbWlzZS5yZXNvbHZlKFB1YmxpY0tleUNyZWRlbnRpYWw6OmNyZWF0ZShyZXNwb25z
ZS5yZWxlYXNlTm9uTnVsbCgpKS5wdHIoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgQVNTRVJUKCFleGNlcHRpb24ubWVzc2FnZS5pc051bGwoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGlu
YXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JDbGllbnQuaAppbmRleCBkNmJlMzNiZWVkN2IwNTc3NmU0ZjQ5YTk4ZDk5
OWU2NjcyYWQ5ZDZiLi4yYTYyYzM3Y2MwOWU0NDZlOWU1OTg3ODdmYWU2YWJiNjNkOGZjZTZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JD
b29yZGluYXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgKQEAgLTM5LDEwICszOSwxMCBAQCBjbGFz
cyBGcmFtZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9uczsKLXN0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YTsKK3N0
cnVjdCBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhOwogc3RydWN0IFB1YmxpY0tleUNyZWRlbnRp
YWxSZXF1ZXN0T3B0aW9uczsKIAotdXNpbmcgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyID0gQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYmLCBX
ZWJDb3JlOjpFeGNlcHRpb25EYXRhJiYpPjsKK3VzaW5nIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxl
ciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNl
RGF0YSYmLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiYpPjsKIHVzaW5nIFF1ZXJ5Q29tcGxldGlv
bkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPjsKIAogY2xhc3MgV0VCQ09S
RV9FWFBPUlQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50IDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudD4gewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ2NTExODYwZTdhNWJhM2VkYzQ3MmNiZTgyYWU5MTNiMmZkYjI5YTUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JSZXNwb25zZS5jcHAKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9yUmVzcG9uc2UuaCIKKworI2lmIEVO
QUJMRShXRUJfQVVUSE4pCisKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2UuaCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oIgorI2lu
Y2x1ZGUgIkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitSZWZQdHI8QXV0aGVudGljYXRvclJlc3BvbnNlPiBBdXRoZW50aWNhdG9yUmVzcG9uc2U6
OnRyeUNyZWF0ZShBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYgZGF0YSkKK3sKKyAgICBpZiAo
IWRhdGEucmF3SWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKGRhdGEuaXNB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSkgeworICAgICAgICBpZiAoIWRhdGEuYXR0
ZXN0YXRpb25PYmplY3QpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBy
ZXR1cm4gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShkYXRhLnJhd0lk
LnJlbGVhc2VOb25OdWxsKCksIGRhdGEuYXR0ZXN0YXRpb25PYmplY3QucmVsZWFzZU5vbk51bGwo
KSk7CisgICAgfQorCisgICAgaWYgKCFkYXRhLmF1dGhlbnRpY2F0b3JEYXRhIHx8ICFkYXRhLnNp
Z25hdHVyZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gQXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoZGF0YS5yYXdJZC5yZWxlYXNlTm9uTnVsbCgp
LCBkYXRhLmF1dGhlbnRpY2F0b3JEYXRhLnJlbGVhc2VOb25OdWxsKCksIGRhdGEuc2lnbmF0dXJl
LnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoZGF0YS51c2VySGFuZGxlKSwgQXV0aGVudGljYXRp
b25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cyB7IGRhdGEuYXBwaWQgfSk7Cit9CisKKy8vIEZJWE1F
OiBGaW5kIGEgd2F5IHRvIHJlZHVjZSB0aGUgdW5uZWNlc3NhcnkgY29waWVzLgorQXV0aGVudGlj
YXRvclJlc3BvbnNlRGF0YSBBdXRoZW50aWNhdG9yUmVzcG9uc2U6OmRhdGEoKSBjb25zdAorewor
ICAgIEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YTsKKyAgICBkYXRhLnJhd0lkID0gbV9y
YXdJZC5jb3B5UmVmKCk7CisgICAgZGF0YS5hcHBpZCA9IG1fZXh0ZW5zaW9ucy5hcHBpZDsKKyAg
ICByZXR1cm4gZGF0YTsKK30KKworQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0
cyBBdXRoZW50aWNhdG9yUmVzcG9uc2U6OmV4dGVuc2lvbnMoKSBjb25zdAoreworICAgIHJldHVy
biBtX2V4dGVuc2lvbnM7Cit9CisKK3ZvaWQgQXV0aGVudGljYXRvclJlc3BvbnNlOjpzZXRDbGll
bnREYXRhSlNPTihSZWY8QXJyYXlCdWZmZXI+JiYgY2xpZW50RGF0YUpTT04pCit7CisgICAgbV9j
bGllbnREYXRhSlNPTiA9IFdURk1vdmUoY2xpZW50RGF0YUpTT04pOworfQorCitBcnJheUJ1ZmZl
ciogQXV0aGVudGljYXRvclJlc3BvbnNlOjpjbGllbnREYXRhSlNPTigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fY2xpZW50RGF0YUpTT04uZ2V0KCk7Cit9CisKK0F1dGhlbnRpY2F0b3JSZXNwb25z
ZTo6QXV0aGVudGljYXRvclJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCkKKyAgICA6
IG1fcmF3SWQoV1RGTW92ZShyYXdJZCkpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuaAppbmRleCBjYjdlMDdl
NTJlYzk0ZDRlMTQyMDRlMTY2MzM1OTZiOTViMTAwZTlmLi41MzczNjM5ODBhMWUxNTM3MzExMjBj
NmIwZjNmNTE2N2Q1Y2M2ZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmgKQEAgLTI3LDEyICsyNywxNSBAQAog
CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5
QnVmZmVyLmg+CisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0
cy5oIgorI2luY2x1ZGUgIklETFR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3Ry
dWN0IEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE7CisKIGNsYXNzIEF1dGhlbnRpY2F0b3JSZXNw
b25zZSA6IHB1YmxpYyBSZWZDb3VudGVkPEF1dGhlbnRpY2F0b3JSZXNwb25zZT4gewogcHVibGlj
OgogICAgIGVudW0gY2xhc3MgVHlwZSB7CkBAIC00MCwxOCArNDMsMjUgQEAgcHVibGljOgogICAg
ICAgICBBdHRlc3RhdGlvbgogICAgIH07CiAKLSAgICBleHBsaWNpdCBBdXRoZW50aWNhdG9yUmVz
cG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmIGNsaWVudERhdGFKU09OKQotICAgICAgICA6IG1fY2xp
ZW50RGF0YUpTT04oV1RGTW92ZShjbGllbnREYXRhSlNPTikpCi0gICAgewotICAgIH0KKyAgICBz
dGF0aWMgUmVmUHRyPEF1dGhlbnRpY2F0b3JSZXNwb25zZT4gdHJ5Q3JlYXRlKEF1dGhlbnRpY2F0
b3JSZXNwb25zZURhdGEmJik7CiAgICAgdmlydHVhbCB+QXV0aGVudGljYXRvclJlc3BvbnNlKCkg
PSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIGRhdGEoKSBjb25zdDsKKworICAgIEFycmF5
QnVmZmVyKiByYXdJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmF3SWQucHRyKCk7IH0KKyAgICB2b2lk
IHNldEV4dGVuc2lvbnMoQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cyYmIGV4
dGVuc2lvbnMpIHsgbV9leHRlbnNpb25zID0gV1RGTW92ZShleHRlbnNpb25zKTsgfQorICAgIEF1
dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMgZXh0ZW5zaW9ucygpIGNvbnN0Owor
ICAgIHZvaWQgc2V0Q2xpZW50RGF0YUpTT04oUmVmPEFycmF5QnVmZmVyPiYmKTsKKyAgICBBcnJh
eUJ1ZmZlciogY2xpZW50RGF0YUpTT04oKSBjb25zdDsKIAotICAgIEFycmF5QnVmZmVyKiBjbGll
bnREYXRhSlNPTigpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50RGF0YUpTT04ucHRyKCk7IH0KK3By
b3RlY3RlZDoKKyAgICBBdXRoZW50aWNhdG9yUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmKTsK
IAogcHJpdmF0ZToKLSAgICBSZWY8QXJyYXlCdWZmZXI+IG1fY2xpZW50RGF0YUpTT047CisgICAg
UmVmPEFycmF5QnVmZmVyPiBtX3Jhd0lkOworICAgIEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0Ns
aWVudE91dHB1dHMgbV9leHRlbnNpb25zOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9jbGll
bnREYXRhSlNPTjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2VE
YXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzIwNTVhMzFkMDUyNDk4MWNiYjBjYzI0N2I3NGY3NGE0MjRkYjYx
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvclJlc3BvbnNlRGF0YS5oCkBAIC0wLDAgKzEsMTgyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1dGhlbnRpY2F0b3JSZXNwb25zZTsKKworc3RydWN0
IEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgeworICAgIGJvb2wgaXNBdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZTsKKworICAgIC8vIEF1dGhlbnRpY2F0b3JSZXNwb25zZQorICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gcmF3SWQ7CisKKyAgICAvLyBFeHRlbnNpb25zCisgICAgT3B0aW9u
YWw8Ym9vbD4gYXBwaWQ7CisKKyAgICAvLyBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXR0ZXN0YXRpb25PYmplY3Q7CisKKyAgICAvLyBB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGF1
dGhlbnRpY2F0b3JEYXRhOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2lnbmF0dXJlOworICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gdXNlckhhbmRsZTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YT4gZGVjb2Rl
KERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEF1dGhlbnRp
Y2F0b3JSZXNwb25zZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAg
IGlmICghcmF3SWQpIHsKKyAgICAgICAgZW5jb2RlciA8PCB0cnVlOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGVuY29kZXIgPDwgZmFsc2U7CisKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19j
YXN0PHVpbnQ2NF90PihyYXdJZC0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBlbmNvZGVyLmVuY29kZUZp
eGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihyYXdJZC0+ZGF0
YSgpKSwgcmF3SWQtPmJ5dGVMZW5ndGgoKSwgMSk7CisKKyAgICBlbmNvZGVyIDw8IGlzQXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U7CisKKyAgICBpZiAoaXNBdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZSAmJiBhdHRlc3RhdGlvbk9iamVjdCkgeworICAgICAgICBlbmNvZGVy
IDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihhdHRlc3RhdGlvbk9iamVjdC0+Ynl0ZUxlbmd0aCgp
KTsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oYXR0ZXN0YXRpb25PYmplY3QtPmRhdGEoKSksIGF0dGVzdGF0aW9u
T2JqZWN0LT5ieXRlTGVuZ3RoKCksIDEpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKCFhdXRoZW50aWNhdG9yRGF0YSB8fCAhc2lnbmF0dXJlKQorICAgICAgICByZXR1cm47Cisg
ICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXV0aGVudGljYXRvckRhdGEtPmJ5
dGVMZW5ndGgoKSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYXV0aGVudGljYXRvckRhdGEtPmRhdGEoKSksIGF1dGhl
bnRpY2F0b3JEYXRhLT5ieXRlTGVuZ3RoKCksIDEpOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHNpZ25hdHVyZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBlbmNvZGVyLmVuY29k
ZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzaWduYXR1
cmUtPmRhdGEoKSksIHNpZ25hdHVyZS0+Ynl0ZUxlbmd0aCgpLCAxKTsKKworICAgIC8vIEVuY29k
ZSBBcHBJRCBiZWZvcmUgdXNlciBoYW5kbGUgdG8gYXZvaWQgdGhlIHVzZXJIYW5kbGUgZmxhZy4K
KyAgICBlbmNvZGVyIDw8IGFwcGlkOworCisgICAgaWYgKCF1c2VySGFuZGxlKSB7CisgICAgICAg
IGVuY29kZXIgPDwgZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZW5jb2RlciA8
PCB0cnVlOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVzZXJIYW5kbGUt
PmJ5dGVMZW5ndGgoKSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXNlckhhbmRsZS0+ZGF0YSgpKSwgdXNlckhhbmRs
ZS0+Ynl0ZUxlbmd0aCgpLCAxKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlv
bmFsPEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE+IEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIEF1dGhlbnRpY2F0b3JSZXNwb25zZURh
dGEgcmVzdWx0OworCisgICAgT3B0aW9uYWw8Ym9vbD4gaXNFbXB0eTsKKyAgICBkZWNvZGVyID4+
IGlzRW1wdHk7CisgICAgaWYgKCFpc0VtcHR5KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIGlmIChpc0VtcHR5LnZhbHVlKCkpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAg
ICBPcHRpb25hbDx1aW50NjRfdD4gcmF3SWRMZW5ndGg7CisgICAgZGVjb2RlciA+PiByYXdJZExl
bmd0aDsKKyAgICBpZiAoIXJhd0lkTGVuZ3RoKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgcmVzdWx0LnJhd0lkID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShyYXdJZExlbmd0aC52
YWx1ZSgpLCBzaXplb2YodWludDhfdCkpOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExl
bmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ocmVzdWx0LnJhd0lkLT5kYXRhKCkp
LCByYXdJZExlbmd0aC52YWx1ZSgpLCAxKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIE9wdGlvbmFsPGJvb2w+IGlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U7
CisgICAgZGVjb2RlciA+PiBpc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOworICAg
IGlmICghaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXN1bHQuaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNw
b25zZSA9IGlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UudmFsdWUoKTsKKworICAg
IGlmIChyZXN1bHQuaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSkgeworICAgICAg
ICBPcHRpb25hbDx1aW50NjRfdD4gYXR0ZXN0YXRpb25PYmplY3RMZW5ndGg7CisgICAgICAgIGRl
Y29kZXIgPj4gYXR0ZXN0YXRpb25PYmplY3RMZW5ndGg7CisgICAgICAgIGlmICghYXR0ZXN0YXRp
b25PYmplY3RMZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
ICAgIHJlc3VsdC5hdHRlc3RhdGlvbk9iamVjdCA9IEFycmF5QnVmZmVyOjpjcmVhdGUoYXR0ZXN0
YXRpb25PYmplY3RMZW5ndGgudmFsdWUoKSwgc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
PihyZXN1bHQuYXR0ZXN0YXRpb25PYmplY3QtPmRhdGEoKSksIGF0dGVzdGF0aW9uT2JqZWN0TGVu
Z3RoLnZhbHVlKCksIDEpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBhdXRo
ZW50aWNhdG9yRGF0YUxlbmd0aDsKKyAgICBkZWNvZGVyID4+IGF1dGhlbnRpY2F0b3JEYXRhTGVu
Z3RoOworICAgIGlmICghYXV0aGVudGljYXRvckRhdGFMZW5ndGgpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICByZXN1bHQuYXV0aGVudGljYXRvckRhdGEgPSBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKGF1dGhlbnRpY2F0b3JEYXRhTGVuZ3RoLnZhbHVlKCksIHNpemVvZih1aW50OF90
KSk7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9j
YXN0PHVpbnQ4X3QqPihyZXN1bHQuYXV0aGVudGljYXRvckRhdGEtPmRhdGEoKSksIGF1dGhlbnRp
Y2F0b3JEYXRhTGVuZ3RoLnZhbHVlKCksIDEpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgT3B0aW9uYWw8dWludDY0X3Q+IHNpZ25hdHVyZUxlbmd0aDsKKyAgICBkZWNvZGVy
ID4+IHNpZ25hdHVyZUxlbmd0aDsKKyAgICBpZiAoIXNpZ25hdHVyZUxlbmd0aCkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJlc3VsdC5zaWduYXR1cmUgPSBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKHNpZ25hdHVyZUxlbmd0aC52YWx1ZSgpLCBzaXplb2YodWludDhfdCkpOworICAg
IGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50
OF90Kj4ocmVzdWx0LnNpZ25hdHVyZS0+ZGF0YSgpKSwgc2lnbmF0dXJlTGVuZ3RoLnZhbHVlKCks
IDEpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8T3B0aW9u
YWw8Ym9vbD4+IGFwcGlkOworICAgIGRlY29kZXIgPj4gYXBwaWQ7CisgICAgaWYgKCFhcHBpZCkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXN1bHQuYXBwaWQgPSBXVEZNb3Zl
KCphcHBpZCk7CisKKyAgICBPcHRpb25hbDxib29sPiBoYXNVc2VySGFuZGxlOworICAgIGRlY29k
ZXIgPj4gaGFzVXNlckhhbmRsZTsKKyAgICBpZiAoIWhhc1VzZXJIYW5kbGUpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCEqaGFzVXNlckhhbmRsZSkKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKworICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB1c2VySGFuZGxlTGVuZ3RoOwor
ICAgIGRlY29kZXIgPj4gdXNlckhhbmRsZUxlbmd0aDsKKyAgICBpZiAoIXVzZXJIYW5kbGVMZW5n
dGgpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXN1bHQudXNlckhhbmRs
ZSA9IEFycmF5QnVmZmVyOjpjcmVhdGUodXNlckhhbmRsZUxlbmd0aC52YWx1ZSgpLCBzaXplb2Yo
dWludDhfdCkpOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4ocmVzdWx0LnVzZXJIYW5kbGUtPmRhdGEoKSksIHVzZXJIYW5k
bGVMZW5ndGgudmFsdWUoKSwgMSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuY3BwCmluZGV4IDhkZTYwMGM3OTQ4NzEz
MDZhYjc3NGQyZGJmYzgyMjMwYzZkMTZjOWYuLmZkYjkzOGE4OTY0ZTg5YzRmZjE0MjRiZmEzYmVi
YTYzNjBiYzVhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
UHVibGljS2V5Q3JlZGVudGlhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9QdWJsaWNLZXlDcmVkZW50aWFsLmNwcApAQCAtMjgsNDggKzI4LDM1IEBACiAKICNpZiBF
TkFCTEUoV0VCX0FVVEhOKQogCi0jaW5jbHVkZSAiQXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlLmgiCi0jaW5jbHVkZSAiQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaCIKICNp
bmNsdWRlICJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJBdXRoZW50aWNh
dG9yUmVzcG9uc2UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkpTRE9NUHJv
bWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlB1YmxpY0tleUNy
ZWRlbnRpYWxEYXRhLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0
cjxQdWJsaWNLZXlDcmVkZW50aWFsPiBQdWJsaWNLZXlDcmVkZW50aWFsOjp0cnlDcmVhdGUoUHVi
bGljS2V5Q3JlZGVudGlhbERhdGEmJiBkYXRhKQorUmVmPFB1YmxpY0tleUNyZWRlbnRpYWw+IFB1
YmxpY0tleUNyZWRlbnRpYWw6OmNyZWF0ZShSZWY8QXV0aGVudGljYXRvclJlc3BvbnNlPiYmIHJl
c3BvbnNlKQogewotICAgIGlmICghZGF0YS5yYXdJZCB8fCAhZGF0YS5jbGllbnREYXRhSlNPTikK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoZGF0YS5pc0F1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlKSB7Ci0gICAgICAgIGlmICghZGF0YS5hdHRlc3RhdGlvbk9iamVj
dCkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFB1YmxpY0tleUNyZWRlbnRpYWwoZGF0YS5yYXdJZC5yZWxlYXNlTm9uTnVsbCgpLCBB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKGRhdGEuY2xpZW50RGF0YUpT
T04ucmVsZWFzZU5vbk51bGwoKSwgZGF0YS5hdHRlc3RhdGlvbk9iamVjdC5yZWxlYXNlTm9uTnVs
bCgpKSwgeyBkYXRhLmFwcGlkIH0pKTsKLSAgICB9Ci0KLSAgICBpZiAoIWRhdGEuYXV0aGVudGlj
YXRvckRhdGEgfHwgIWRhdGEuc2lnbmF0dXJlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQdWJsaWNLZXlDcmVkZW50aWFsKFdURk1vdmUocmVzcG9u
c2UpKSk7Cit9CiAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQdWJsaWNLZXlDcmVkZW50aWFs
KGRhdGEucmF3SWQucmVsZWFzZU5vbk51bGwoKSwgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlOjpjcmVhdGUoZGF0YS5jbGllbnREYXRhSlNPTi5yZWxlYXNlTm9uTnVsbCgpLCBkYXRhLmF1
dGhlbnRpY2F0b3JEYXRhLnJlbGVhc2VOb25OdWxsKCksIGRhdGEuc2lnbmF0dXJlLnJlbGVhc2VO
b25OdWxsKCksIFdURk1vdmUoZGF0YS51c2VySGFuZGxlKSksIHsgZGF0YS5hcHBpZCB9KSk7CitB
cnJheUJ1ZmZlciogUHVibGljS2V5Q3JlZGVudGlhbDo6cmF3SWQoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3Jlc3BvbnNlLT5yYXdJZCgpOwogfQogCi1QdWJsaWNLZXlDcmVkZW50aWFsOjpQdWJs
aWNLZXlDcmVkZW50aWFsKFJlZjxBcnJheUJ1ZmZlcj4mJiBpZCwgUmVmPEF1dGhlbnRpY2F0b3JS
ZXNwb25zZT4mJiByZXNwb25zZSwgQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0
cyYmIGV4dGVuc2lvbnMpCi0gICAgOiBCYXNpY0NyZWRlbnRpYWwoV1RGOjpiYXNlNjRVUkxFbmNv
ZGUoaWQtPmRhdGEoKSwgaWQtPmJ5dGVMZW5ndGgoKSksIFR5cGU6OlB1YmxpY0tleSwgRGlzY292
ZXJ5OjpSZW1vdGUpCi0gICAgLCBtX3Jhd0lkKFdURk1vdmUoaWQpKQotICAgICwgbV9yZXNwb25z
ZShXVEZNb3ZlKHJlc3BvbnNlKSkKLSAgICAsIG1fZXh0ZW5zaW9ucyhXVEZNb3ZlKGV4dGVuc2lv
bnMpKQorQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cyBQdWJsaWNLZXlDcmVk
ZW50aWFsOjpnZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCkgY29uc3QKIHsKKyAgICByZXR1cm4g
bV9yZXNwb25zZS0+ZXh0ZW5zaW9ucygpOwogfQogCi1QdWJsaWNLZXlDcmVkZW50aWFsOjpBdXRo
ZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzIFB1YmxpY0tleUNyZWRlbnRpYWw6Omdl
dENsaWVudEV4dGVuc2lvblJlc3VsdHMoKSBjb25zdAorUHVibGljS2V5Q3JlZGVudGlhbDo6UHVi
bGljS2V5Q3JlZGVudGlhbChSZWY8QXV0aGVudGljYXRvclJlc3BvbnNlPiYmIHJlc3BvbnNlKQor
ICAgIDogQmFzaWNDcmVkZW50aWFsKFdURjo6YmFzZTY0VVJMRW5jb2RlKHJlc3BvbnNlLT5yYXdJ
ZCgpLT5kYXRhKCksIHJlc3BvbnNlLT5yYXdJZCgpLT5ieXRlTGVuZ3RoKCkpLCBUeXBlOjpQdWJs
aWNLZXksIERpc2NvdmVyeTo6UmVtb3RlKQorICAgICwgbV9yZXNwb25zZShXVEZNb3ZlKHJlc3Bv
bnNlKSkKIHsKLSAgICByZXR1cm4gbV9leHRlbnNpb25zOwogfQogCiB2b2lkIFB1YmxpY0tleUNy
ZWRlbnRpYWw6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShE
b2N1bWVudCYgZG9jdW1lbnQsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21p
c2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tl
eUNyZWRlbnRpYWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5
Q3JlZGVudGlhbC5oCmluZGV4IGQyYTU1M2E5YzAzZDQ2NjVlMDhkMGEwZWI5M2MwYTMxY2QwZjIw
MjguLmJmYzkyNzM4NGRmOTc1MTIxMzQzZTY3NmQ2M2RlYWFiZDJhZTQ1NzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbC5o
CkBAIC0yOCw5ICsyOCw3IEBACiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAogI2luY2x1ZGUgIkJh
c2ljQ3JlZGVudGlhbC5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiSURM
VHlwZXMuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDMyICszNiwy
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdG9yUmVzcG9uc2U7CiBj
bGFzcyBEb2N1bWVudDsKIAotc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhOworc3RydWN0
IEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM7CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VEZWZlcnJlZDsKIAogY2xhc3MgUHVibGljS2V5
Q3JlZGVudGlhbCBmaW5hbCA6IHB1YmxpYyBCYXNpY0NyZWRlbnRpYWwgewogcHVibGljOgotICAg
IHN0cnVjdCBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzIHsKLSAgICAgICAg
T3B0aW9uYWw8Ym9vbD4gYXBwaWQ7Ci0gICAgfTsKKyAgICBzdGF0aWMgUmVmPFB1YmxpY0tleUNy
ZWRlbnRpYWw+IGNyZWF0ZShSZWY8QXV0aGVudGljYXRvclJlc3BvbnNlPiYmKTsKIAotICAgIHN0
YXRpYyBSZWZQdHI8UHVibGljS2V5Q3JlZGVudGlhbD4gdHJ5Q3JlYXRlKFB1YmxpY0tleUNyZWRl
bnRpYWxEYXRhJiYpOwotCi0gICAgQXJyYXlCdWZmZXIqIHJhd0lkKCkgY29uc3QgeyByZXR1cm4g
bV9yYXdJZC5wdHIoKTsgfQorICAgIEFycmF5QnVmZmVyKiByYXdJZCgpIGNvbnN0OwogICAgIEF1
dGhlbnRpY2F0b3JSZXNwb25zZSogcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNl
LnB0cigpOyB9CiAgICAgQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cyBnZXRD
bGllbnRFeHRlbnNpb25SZXN1bHRzKCkgY29uc3Q7CiAKICAgICBzdGF0aWMgdm9pZCBpc1VzZXJW
ZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoRG9jdW1lbnQmLCBET01Qcm9t
aXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJik7CiAKIHByaXZhdGU6Ci0gICAgUHVibGljS2V5Q3Jl
ZGVudGlhbChSZWY8QXJyYXlCdWZmZXI+JiYgaWQsIFJlZjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+
JiYsIEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMmJik7CisgICAgUHVibGlj
S2V5Q3JlZGVudGlhbChSZWY8QXV0aGVudGljYXRvclJlc3BvbnNlPiYmKTsKIAogICAgIFR5cGUg
Y3JlZGVudGlhbFR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBUeXBlOjpQdWJsaWNLZXk7IH0K
IAotICAgIFJlZjxBcnJheUJ1ZmZlcj4gbV9yYXdJZDsKICAgICBSZWY8QXV0aGVudGljYXRvclJl
c3BvbnNlPiBtX3Jlc3BvbnNlOwotICAgIEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91
dHB1dHMgbV9leHRlbnNpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFs
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlh
bC5pZGwKaW5kZXggMzA3MmMxY2U0NzcwN2Y0YjRjZThlOGU1NTkyMmQ2NjkwYjQ3N2Q2Zi4uYWUw
MGY2OTdjODdlZDYzMjU1NjhhYmMyYWMxMzY0NjdkNzdlNjZiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaWRsCkBA
IC0zNSwxMCArMzUsMyBAQAogCiAgICAgW0NhbGxXaXRoPURvY3VtZW50XSBzdGF0aWMgUHJvbWlz
ZTxib29sZWFuPiBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUo
KTsKIH07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJfQVVUSE4sCi0gICAgSlNHZW5lcmF0ZVRv
SlNPYmplY3QsCi1dIGRpY3Rpb25hcnkgQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0
cHV0cyB7Ci0gICAgYm9vbGVhbiBhcHBpZDsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxEYXRhLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhMDU0ZWZiM2I4ZDc0YWFlYzc4YmM4ODJlZDBmZDY1YzNj
NzFkOTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oCisr
KyAvZGV2L251bGwKQEAgLTEsMTg0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJh
eUJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgQXV0aGVudGljYXRvclJlc3BvbnNlOwotCi1zdHJ1Y3QgUHVibGljS2V5Q3Jl
ZGVudGlhbERhdGEgewotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gcmF3SWQ7Ci0KLSAgICAvLyBB
dXRoZW50aWNhdG9yUmVzcG9uc2UKLSAgICBib29sIGlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2U7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBjbGllbnREYXRhSlNPTjsKLQotICAg
IC8vIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlCi0gICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBhdHRlc3RhdGlvbk9iamVjdDsKLQotICAgIC8vIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZQotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXV0aGVudGljYXRvckRhdGE7Ci0gICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBzaWduYXR1cmU7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiB1
c2VySGFuZGxlOwotCi0gICAgLy8gRXh0ZW5zaW9ucwotICAgIE9wdGlvbmFsPGJvb2w+IGFwcGlk
OwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxQdWJsaWNL
ZXlDcmVkZW50aWFsRGF0YT4gZGVjb2RlKERlY29kZXImKTsKLX07Ci0KLS8vIE5vdGVkOiBjbGll
bnREYXRhSlNPTiBpcyBuZXZlciBlbmNvZGVkIG9yIGRlY29kZWQgYXMgaXQgaXMgbmV2ZXIgc2Vu
dCBhY3Jvc3MgZGlmZmVyZW50IHByb2Nlc3Nlcy4KLXRlbXBsYXRlPGNsYXNzIEVuY29kZXI+Ci12
b2lkIFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKLXsKLSAgICBpZiAoIXJhd0lkKSB7Ci0gICAgICAgIGVuY29kZXIgPDwgdHJ1ZTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBlbmNvZGVyIDw8IGZhbHNlOwotCi0gICAgZW5jb2RlciA8
PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmF3SWQtPmJ5dGVMZW5ndGgoKSk7Ci0gICAgZW5jb2Rl
ci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
cmF3SWQtPmRhdGEoKSksIHJhd0lkLT5ieXRlTGVuZ3RoKCksIDEpOwotCi0gICAgZW5jb2RlciA8
PCBpc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOwotCi0gICAgaWYgKGlzQXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgJiYgYXR0ZXN0YXRpb25PYmplY3QpIHsKLSAgICAg
ICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXR0ZXN0YXRpb25PYmplY3QtPmJ5
dGVMZW5ndGgoKSk7Ci0gICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGF0dGVzdGF0aW9uT2JqZWN0LT5kYXRhKCkpLCBh
dHRlc3RhdGlvbk9iamVjdC0+Ynl0ZUxlbmd0aCgpLCAxKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmICghYXV0aGVudGljYXRvckRhdGEgfHwgIXNpZ25hdHVyZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGF1dGhlbnRpY2F0
b3JEYXRhLT5ieXRlTGVuZ3RoKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGF1dGhlbnRpY2F0b3JEYXRhLT5kYXRh
KCkpLCBhdXRoZW50aWNhdG9yRGF0YS0+Ynl0ZUxlbmd0aCgpLCAxKTsKLSAgICBlbmNvZGVyIDw8
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzaWduYXR1cmUtPmJ5dGVMZW5ndGgoKSk7Ci0gICAgZW5j
b2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oc2lnbmF0dXJlLT5kYXRhKCkpLCBzaWduYXR1cmUtPmJ5dGVMZW5ndGgoKSwgMSk7Ci0KLSAg
ICAvLyBFbmNvZGUgQXBwSUQgYmVmb3JlIHVzZXIgaGFuZGxlIHRvIGF2b2lkIHRoZSB1c2VySGFu
ZGxlIGZsYWcuCi0gICAgZW5jb2RlciA8PCBhcHBpZDsKLQotICAgIGlmICghdXNlckhhbmRsZSkg
ewotICAgICAgICBlbmNvZGVyIDw8IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGVuY29kZXIgPDwgdHJ1ZTsKLSAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih1
c2VySGFuZGxlLT5ieXRlTGVuZ3RoKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhE
YXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHVzZXJIYW5kbGUtPmRhdGEoKSks
IHVzZXJIYW5kbGUtPmJ5dGVMZW5ndGgoKSwgMSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+Ci1PcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsRGF0YT4gUHVibGljS2V5Q3JlZGVudGlh
bERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIFB1YmxpY0tleUNyZWRlbnRp
YWxEYXRhIHJlc3VsdDsKLQotICAgIE9wdGlvbmFsPGJvb2w+IGlzRW1wdHk7Ci0gICAgZGVjb2Rl
ciA+PiBpc0VtcHR5OwotICAgIGlmICghaXNFbXB0eSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLSAgICBpZiAoaXNFbXB0eS52YWx1ZSgpKQotICAgICAgICByZXR1cm4gcmVzdWx0Owot
Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHJhd0lkTGVuZ3RoOwotICAgIGRlY29kZXIgPj4gcmF3
SWRMZW5ndGg7Ci0gICAgaWYgKCFyYXdJZExlbmd0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLQotICAgIHJlc3VsdC5yYXdJZCA9IEFycmF5QnVmZmVyOjpjcmVhdGUocmF3SWRMZW5n
dGgudmFsdWUoKSwgc2l6ZW9mKHVpbnQ4X3QpKTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHJlc3VsdC5yYXdJZC0+ZGF0
YSgpKSwgcmF3SWRMZW5ndGgudmFsdWUoKSwgMSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0KLSAgICBPcHRpb25hbDxib29sPiBpc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3Bv
bnNlOwotICAgIGRlY29kZXIgPj4gaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTsK
LSAgICBpZiAoIWlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgcmVzdWx0LmlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2UgPSBpc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLnZhbHVlKCk7Ci0K
LSAgICBpZiAocmVzdWx0LmlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UpIHsKLSAg
ICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGF0dGVzdGF0aW9uT2JqZWN0TGVuZ3RoOwotICAgICAg
ICBkZWNvZGVyID4+IGF0dGVzdGF0aW9uT2JqZWN0TGVuZ3RoOwotICAgICAgICBpZiAoIWF0dGVz
dGF0aW9uT2JqZWN0TGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQot
ICAgICAgICByZXN1bHQuYXR0ZXN0YXRpb25PYmplY3QgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF0
dGVzdGF0aW9uT2JqZWN0TGVuZ3RoLnZhbHVlKCksIHNpemVvZih1aW50OF90KSk7Ci0gICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50
OF90Kj4ocmVzdWx0LmF0dGVzdGF0aW9uT2JqZWN0LT5kYXRhKCkpLCBhdHRlc3RhdGlvbk9iamVj
dExlbmd0aC52YWx1ZSgpLCAxKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4g
YXV0aGVudGljYXRvckRhdGFMZW5ndGg7Ci0gICAgZGVjb2RlciA+PiBhdXRoZW50aWNhdG9yRGF0
YUxlbmd0aDsKLSAgICBpZiAoIWF1dGhlbnRpY2F0b3JEYXRhTGVuZ3RoKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmVzdWx0LmF1dGhlbnRpY2F0b3JEYXRhID0gQXJyYXlC
dWZmZXI6OmNyZWF0ZShhdXRoZW50aWNhdG9yRGF0YUxlbmd0aC52YWx1ZSgpLCBzaXplb2YodWlu
dDhfdCkpOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnBy
ZXRfY2FzdDx1aW50OF90Kj4ocmVzdWx0LmF1dGhlbnRpY2F0b3JEYXRhLT5kYXRhKCkpLCBhdXRo
ZW50aWNhdG9yRGF0YUxlbmd0aC52YWx1ZSgpLCAxKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLQotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBzaWduYXR1cmVMZW5ndGg7Ci0gICAgZGVj
b2RlciA+PiBzaWduYXR1cmVMZW5ndGg7Ci0gICAgaWYgKCFzaWduYXR1cmVMZW5ndGgpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXN1bHQuc2lnbmF0dXJlID0gQXJyYXlC
dWZmZXI6OmNyZWF0ZShzaWduYXR1cmVMZW5ndGgudmFsdWUoKSwgc2l6ZW9mKHVpbnQ4X3QpKTsK
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KHJlc3VsdC5zaWduYXR1cmUtPmRhdGEoKSksIHNpZ25hdHVyZUxlbmd0aC52YWx1
ZSgpLCAxKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPE9w
dGlvbmFsPGJvb2w+PiBhcHBpZDsKLSAgICBkZWNvZGVyID4+IGFwcGlkOwotICAgIGlmICghYXBw
aWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgcmVzdWx0LmFwcGlkID0gV1RG
TW92ZSgqYXBwaWQpOwotCi0gICAgT3B0aW9uYWw8Ym9vbD4gaGFzVXNlckhhbmRsZTsKLSAgICBk
ZWNvZGVyID4+IGhhc1VzZXJIYW5kbGU7Ci0gICAgaWYgKCFoYXNVc2VySGFuZGxlKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIGlmICghKmhhc1VzZXJIYW5kbGUpCi0gICAgICAg
IHJldHVybiByZXN1bHQ7Ci0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gdXNlckhhbmRsZUxlbmd0
aDsKLSAgICBkZWNvZGVyID4+IHVzZXJIYW5kbGVMZW5ndGg7Ci0gICAgaWYgKCF1c2VySGFuZGxl
TGVuZ3RoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmVzdWx0LnVzZXJI
YW5kbGUgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVzZXJIYW5kbGVMZW5ndGgudmFsdWUoKSwgc2l6
ZW9mKHVpbnQ4X3QpKTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHJlc3VsdC51c2VySGFuZGxlLT5kYXRhKCkpLCB1c2Vy
SGFuZGxlTGVuZ3RoLnZhbHVlKCksIDEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNw
cAppbmRleCBkYTQ2MWZjMTAyMmZjYWQ3ZTlmMjk0M2M0ZWQzM2Q3ZjM0ZjFmM2M5Li4yNTU2M2Ew
NTdkMGNjMDU2OGQzYWIwMTA3YTJkYjUxYTJhOTRhNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNv
bnZlcnRlci5jcHAKQEAgLTg1LDM1ICs4NSwzNSBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGdl
dENyZWRlbnRpYWxJZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0b3JEYXRhKQog
CiAvLyBEZWNvZGVzIGJ5dGUgYXJyYXkgcmVzcG9uc2UgZnJvbSBhdXRoZW50aWNhdG9yIHRvIENC
T1IgdmFsdWUgb2JqZWN0IGFuZAogLy8gY2hlY2tzIGZvciBjb3JyZWN0IGVuY29kaW5nIGZvcm1h
dC4KLU9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhPiByZWFkQ1RBUE1ha2VDcmVkZW50
aWFsUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbkJ1ZmZlciwgY29uc3QgV2ViQ29y
ZTo6QXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSYgYXR0ZXN0YXRpb24pCitSZWZQdHI8
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxS
ZXNwb25zZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGluQnVmZmVyLCBjb25zdCBBdHRlc3RhdGlv
bkNvbnZleWFuY2VQcmVmZXJlbmNlJiBhdHRlc3RhdGlvbikKIHsKICAgICBpZiAoaW5CdWZmZXIu
c2l6ZSgpIDw9IGtSZXNwb25zZUNvZGVMZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZl
cjsKICAgICBidWZmZXIuYXBwZW5kKGluQnVmZmVyLmRhdGEoKSArIDEsIGluQnVmZmVyLnNpemUo
KSAtIDEpOwogICAgIE9wdGlvbmFsPENCT1I+IGRlY29kZWRSZXNwb25zZSA9IGNib3I6OkNCT1JS
ZWFkZXI6OnJlYWQoYnVmZmVyKTsKICAgICBpZiAoIWRlY29kZWRSZXNwb25zZSB8fCAhZGVjb2Rl
ZFJlc3BvbnNlLT5pc01hcCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICBjb25zdCBhdXRvJiBkZWNvZGVkTWFwID0gZGVjb2RlZFJl
c3BvbnNlLT5nZXRNYXAoKTsKIAogICAgIGF1dG8gaXQgPSBkZWNvZGVkTWFwLmZpbmQoQ0JPUigx
KSk7CiAgICAgaWYgKGl0ID09IGRlY29kZWRNYXAuZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNTdHJp
bmcoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgYXV0byBmb3JtYXQgPSBpdC0+c2Vjb25kLmNsb25lKCk7CiAKICAgICBpdCA9IGRl
Y29kZWRNYXAuZmluZChDQk9SKDIpKTsKICAgICBpZiAoaXQgPT0gZGVjb2RlZE1hcC5lbmQoKSB8
fCAhaXQtPnNlY29uZC5pc0J5dGVTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byBhdXRoZW50aWNhdG9yRGF0YSA9
IGl0LT5zZWNvbmQuY2xvbmUoKTsKIAogICAgIGF1dG8gY3JlZGVudGlhbElkID0gZ2V0Q3JlZGVu
dGlhbElkKGF1dGhlbnRpY2F0b3JEYXRhLmdldEJ5dGVTdHJpbmcoKSk7CiAgICAgaWYgKGNyZWRl
bnRpYWxJZC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgaXQgPSBkZWNvZGVkTWFwLmZpbmQoQ0JPUigzKSk7CiAg
ICAgaWYgKGl0ID09IGRlY29kZWRNYXAuZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNNYXAoKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
YXV0byBhdHRTdG10ID0gaXQtPnNlY29uZC5jbG9uZSgpOwogCiAgICAgT3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBhdHRlc3RhdGlvbk9iamVjdDsKQEAgLTEzMCw1NiArMTMwLDUzIEBAIE9wdGlv
bmFsPFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhPiByZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVzcG9u
c2UoY29uc3QgVmVjdG9yPHVpCiAgICAgICAgIGF0dGVzdGF0aW9uT2JqZWN0ID0gY2Jvcjo6Q0JP
UldyaXRlcjo6d3JpdGUoQ0JPUihXVEZNb3ZlKGF0dGVzdGF0aW9uT2JqZWN0TWFwKSkpOwogICAg
IH0KIAotICAgIHJldHVybiBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSB7IEFycmF5QnVmZmVyOjpj
cmVhdGUoY3JlZGVudGlhbElkLmRhdGEoKSwgY3JlZGVudGlhbElkLnNpemUoKSksIHRydWUsIG51
bGxwdHIsIEFycmF5QnVmZmVyOjpjcmVhdGUoYXR0ZXN0YXRpb25PYmplY3QudmFsdWUoKS5kYXRh
KCksIGF0dGVzdGF0aW9uT2JqZWN0LnZhbHVlKCkuc2l6ZSgpKSwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgV1RGOjpudWxsb3B0IH07CisgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCAqYXR0ZXN0YXRpb25PYmplY3QpOwog
fQogCi1PcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsRGF0YT4gcmVhZENUQVBHZXRBc3NlcnRp
b25SZXNwb25zZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGluQnVmZmVyKQorUmVmUHRyPEF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gcmVhZENUQVBHZXRBc3NlcnRpb25SZXNwb25zZShj
b25zdCBWZWN0b3I8dWludDhfdD4mIGluQnVmZmVyKQogewogICAgIGlmIChpbkJ1ZmZlci5zaXpl
KCkgPD0ga1Jlc3BvbnNlQ29kZUxlbmd0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwog
ICAgIGJ1ZmZlci5hcHBlbmQoaW5CdWZmZXIuZGF0YSgpICsgMSwgaW5CdWZmZXIuc2l6ZSgpIC0g
MSk7CiAgICAgT3B0aW9uYWw8Q0JPUj4gZGVjb2RlZFJlc3BvbnNlID0gY2Jvcjo6Q0JPUlJlYWRl
cjo6cmVhZChidWZmZXIpOwogCiAgICAgaWYgKCFkZWNvZGVkUmVzcG9uc2UgfHwgIWRlY29kZWRS
ZXNwb25zZS0+aXNNYXAoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvJiByZXNwb25zZU1hcCA9IGRlY29kZWRSZXNwb25z
ZS0+Z2V0TWFwKCk7CiAKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWRlbnRpYWxJZDsKICAg
ICBhdXRvIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SKDEpKTsKLSAgICBpZiAoaXQgIT0gcmVz
cG9uc2VNYXAuZW5kKCkgJiYgaXQtPnNlY29uZC5pc01hcCgpKSB7Ci0gICAgICAgIGF1dG8mIGNy
ZWRlbnRpYWwgPSBpdC0+c2Vjb25kLmdldE1hcCgpOwotICAgICAgICBhdXRvIGl0ciA9IGNyZWRl
bnRpYWwuZmluZChDQk9SKGtDcmVkZW50aWFsSWRLZXkpKTsKLSAgICAgICAgaWYgKGl0ciA9PSBj
cmVkZW50aWFsLmVuZCgpIHx8ICFpdHItPnNlY29uZC5pc0J5dGVTdHJpbmcoKSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIGF1dG8mIGlkID0gaXRyLT5zZWNvbmQu
Z2V0Qnl0ZVN0cmluZygpOwotICAgICAgICBjcmVkZW50aWFsSWQgPSBBcnJheUJ1ZmZlcjo6Y3Jl
YXRlKGlkLmRhdGEoKSwgaWQuc2l6ZSgpKTsKLSAgICB9CisgICAgaWYgKGl0ID09IHJlc3BvbnNl
TWFwLmVuZCgpIHx8ICFpdC0+c2Vjb25kLmlzTWFwKCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIGF1dG8mIGNyZWRlbnRpYWwgPSBpdC0+c2Vjb25kLmdldE1hcCgpOworICAgIGF1dG8g
aXRyID0gY3JlZGVudGlhbC5maW5kKENCT1Ioa0NyZWRlbnRpYWxJZEtleSkpOworICAgIGlmIChp
dHIgPT0gY3JlZGVudGlhbC5lbmQoKSB8fCAhaXRyLT5zZWNvbmQuaXNCeXRlU3RyaW5nKCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8mIGNyZWRlbnRpYWxJZCA9IGl0ci0+c2Vj
b25kLmdldEJ5dGVTdHJpbmcoKTsKIAogICAgIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SKDIp
KTsKICAgICBpZiAoaXQgPT0gcmVzcG9uc2VNYXAuZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNCeXRl
U3RyaW5nKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIGF1dG8mIGF1dGhEYXRhID0gaXQtPnNlY29uZC5nZXRCeXRlU3RyaW5nKCk7
CiAKICAgICBpdCA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUigzKSk7CiAgICAgaWYgKGl0ID09IHJl
c3BvbnNlTWFwLmVuZCgpIHx8ICFpdC0+c2Vjb25kLmlzQnl0ZVN0cmluZygpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvJiBz
aWduYXR1cmUgPSBpdC0+c2Vjb25kLmdldEJ5dGVTdHJpbmcoKTsKIAotICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gdXNlckhhbmRsZTsKICAgICBpdCA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUig0KSk7
CiAgICAgaWYgKGl0ICE9IHJlc3BvbnNlTWFwLmVuZCgpICYmIGl0LT5zZWNvbmQuaXNNYXAoKSkg
ewogICAgICAgICBhdXRvJiB1c2VyID0gaXQtPnNlY29uZC5nZXRNYXAoKTsKICAgICAgICAgYXV0
byBpdHIgPSB1c2VyLmZpbmQoQ0JPUihrRW50aXR5SWRNYXBLZXkpKTsKICAgICAgICAgaWYgKGl0
ciA9PSB1c2VyLmVuZCgpIHx8ICFpdHItPnNlY29uZC5pc0J5dGVTdHJpbmcoKSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIGF1dG8mIGlkID0gaXRyLT5zZWNvbmQu
Z2V0Qnl0ZVN0cmluZygpOwotICAgICAgICB1c2VySGFuZGxlID0gQXJyYXlCdWZmZXI6OmNyZWF0
ZShpZC5kYXRhKCksIGlkLnNpemUoKSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgYXV0byYgdXNlckhhbmRsZSA9IGl0ci0+c2Vjb25kLmdldEJ5dGVTdHJpbmcoKTsKKyAg
ICAgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKGNyZWRl
bnRpYWxJZCwgYXV0aERhdGEsIHNpZ25hdHVyZSwgdXNlckhhbmRsZSk7CiAgICAgfQogCi0gICAg
cmV0dXJuIFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIHsgV1RGTW92ZShjcmVkZW50aWFsSWQpLCBm
YWxzZSwgbnVsbHB0ciwgbnVsbHB0ciwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoRGF0YS5kYXRh
KCksIGF1dGhEYXRhLnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUoc2lnbmF0dXJlLmRhdGEo
KSwgc2lnbmF0dXJlLnNpemUoKSksIFdURk1vdmUodXNlckhhbmRsZSksIFdURjo6bnVsbG9wdCB9
OworICAgIHJldHVybiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVk
ZW50aWFsSWQsIGF1dGhEYXRhLCBzaWduYXR1cmUsIHsgfSk7CiB9CiAKIE9wdGlvbmFsPEF1dGhl
bnRpY2F0b3JHZXRJbmZvUmVzcG9uc2U+IHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgaW5CdWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5oCmluZGV4
IDA0YmU4Yjk5YTQyZDkxYjQwM2MwNTJiNjc3ZWU2MGJjMjU1NzU5MjkuLjRiOGQ1ZmU1NjRjMzRl
ZmI4OGY0MzFmMDQxY2Y4ZjJkODBiMTc1MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5o
CkBAIC0zMiw5ICszMiwxMCBAQAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJB
dHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2UuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlLmgiCiAj
aW5jbHVkZSAiRmlkb0NvbnN0YW50cy5oIgotI2luY2x1ZGUgIlB1YmxpY0tleUNyZWRlbnRpYWxE
YXRhLmgiCiAKIC8vIENvbnZlcnRzIHJlc3BvbnNlIGZyb20gYXV0aGVudGljYXRvcnMgdG8gQ1RB
UFJlc3BvbnNlIG9iamVjdHMuIElmIHRoZQogLy8gcmVzcG9uc2Ugb2YgdGhlIGF1dGhlbnRpY2F0
b3IgZG9lcyBub3QgY29uZm9ybSB0byBmb3JtYXQgc3BlY2lmaWVkIGJ5IHRoZQpAQCAtNDksMTQg
KzUwLDEyIEBAIFdFQkNPUkVfRVhQT1JUIEN0YXBEZXZpY2VSZXNwb25zZUNvZGUgZ2V0UmVzcG9u
c2VDb2RlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOwogLy8gYW5kIGNvbnZlcnRzIHJlc3BvbnNl
IHRvIEF1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlhbFJlc3BvbnNlIG9iamVjdCB3aXRoCiAvLyBD
Qk9SIG1hcCBrZXlzIHRoYXQgY29uZm9ybSB0byBmb3JtYXQgb2YgYXR0ZXN0YXRpb24gb2JqZWN0
IGRlZmluZWQgYnkgdGhlCiAvLyBXZWJBdXRoTiBzcGVjIDogaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L3dlYmF1dGhuLyNmaWctYXR0U3RydWN0cwotV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8V2ViQ29y
ZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGE+IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25z
ZShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBXZWJDb3JlOjpBdHRlc3RhdGlvbkNvbnZl
eWFuY2VQcmVmZXJlbmNlJiBhdHRlc3RhdGlvbiA9IFdlYkNvcmU6OkF0dGVzdGF0aW9uQ29udmV5
YW5jZVByZWZlcmVuY2U6OkRpcmVjdCk7CitXRUJDT1JFX0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxS
ZXNwb25zZShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBXZWJDb3JlOjpBdHRlc3RhdGlv
bkNvbnZleWFuY2VQcmVmZXJlbmNlJiBhdHRlc3RhdGlvbiA9IFdlYkNvcmU6OkF0dGVzdGF0aW9u
Q29udmV5YW5jZVByZWZlcmVuY2U6OkRpcmVjdCk7CiAKIC8vIERlLXNlcmlhbGl6ZXMgQ0JPUiBl
bmNvZGVkIHJlc3BvbnNlIHRvIEF1dGhlbnRpY2F0b3JHZXRBc3NlcnRpb24gLwogLy8gQXV0aGVu
dGljYXRvckdldE5leHRBc3NlcnRpb24gcmVxdWVzdCB0byBBdXRoZW50aWNhdG9yR2V0QXNzZXJ0
aW9uUmVzcG9uc2UKIC8vIG9iamVjdC4KLS8vIEZJWE1FKDE5MDc4Myk6IFByb2JhYmx5IG5lZWQg
dG8gcmVtYWtlIEF1dGhlbnRpY2F0b3JSZXNwb25zZSB0byBpbmNsdWRlIG1vcmUgZmllbGRzIGxp
a2UgbnVtYmVyT2ZDcmVkZW50aWFscywKLS8vIGFuZCB1c2UgaXQgaGVyZSBpbnN0ZWFkIG9mIFB1
YmxpY0tleUNyZWRlbnRpYWxEYXRhLgotV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8V2ViQ29yZTo6
UHVibGljS2V5Q3JlZGVudGlhbERhdGE+IHJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CitXRUJDT1JFX0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6QXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiByZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNl
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOwogCiAvLyBEZS1zZXJpYWxpemVzIENCT1IgZW5jb2Rl
ZCByZXNwb25zZSB0byBBdXRoZW50aWNhdG9yR2V0SW5mbyByZXF1ZXN0IHRvCiAvLyBBdXRoZW50
aWNhdG9yR2V0SW5mb1Jlc3BvbnNlIG9iamVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCmlu
ZGV4IDkzMjRmMThmOTFhZGYxODBiMDdjODNmY2U0MjY3MDYwMDgzYjZiZjAuLjMxM2VhZjAyNzQ0
MDcyZTY3ZjRjNDZmZWNiMDM4YmFlYzgxNTkwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNw
cApAQCAtMTQ3LDE1ICsxNDcsMTUgQEAgc3RhdGljIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUg
Y3JlYXRlRmlkb0F0dGVzdGF0aW9uU3RhdGVtZW50RnJvbVUyZlJlZ2lzdGVyUmUKIAogfSAvLyBu
YW1lc3BhY2UKIAotT3B0aW9uYWw8UHVibGljS2V5Q3JlZGVudGlhbERhdGE+IHJlYWRVMmZSZWdp
c3RlclJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1
MmZEYXRhLCBjb25zdCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlJiBhdHRlc3RhdGlv
bikKK1JlZlB0cjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZFUyZlJlZ2lz
dGVyUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUy
ZkRhdGEsIGNvbnN0IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmIGF0dGVzdGF0aW9u
KQogewogICAgIGF1dG8gcHVibGljS2V5ID0gZXh0cmFjdEVDUHVibGljS2V5RnJvbVUyZlJlZ2lz
dHJhdGlvblJlc3BvbnNlKHUyZkRhdGEpOwogICAgIGlmIChwdWJsaWNLZXkuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIGF1dG8gYXR0ZXN0ZWRDcmVkZW50aWFsRGF0YSA9IGNyZWF0ZUF0dGVzdGVkQ3JlZGVudGlh
bERhdGFGcm9tVTJmUmVnaXN0ZXJSZXNwb25zZSh1MmZEYXRhLCBwdWJsaWNLZXkpOwogICAgIGlm
IChhdHRlc3RlZENyZWRlbnRpYWxEYXRhLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBFeHRyYWN0IHRoZSBj
cmVkZW50aWFsSWQgZm9yIHBhY2tpbmcgaW50byB0aGUgcmVzcG9uc2UgZGF0YS4KICAgICBhdXRv
IGNyZWRlbnRpYWxJZCA9IGV4dHJhY3RDcmVkZW50aWFsSWRGcm9tVTJmUmVnaXN0cmF0aW9uUmVz
cG9uc2UodTJmRGF0YSk7CkBAIC0xNjYsMTcgKzE2NiwxNyBAQCBPcHRpb25hbDxQdWJsaWNLZXlD
cmVkZW50aWFsRGF0YT4gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElk
LCBjbwogCiAgICAgYXV0byBmaWRvQXR0ZXN0YXRpb25TdGF0ZW1lbnQgPSBjcmVhdGVGaWRvQXR0
ZXN0YXRpb25TdGF0ZW1lbnRGcm9tVTJmUmVnaXN0ZXJSZXNwb25zZSh1MmZEYXRhLCBrVTJmS2V5
SGFuZGxlT2Zmc2V0ICsgY3JlZGVudGlhbElkLnNpemUoKSk7CiAgICAgaWYgKGZpZG9BdHRlc3Rh
dGlvblN0YXRlbWVudC5lbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8gYXR0ZXN0YXRpb25PYmplY3QgPSBidWls
ZEF0dGVzdGF0aW9uT2JqZWN0KFdURk1vdmUoYXV0aERhdGEpLCAiZmlkby11MmYiLCBXVEZNb3Zl
KGZpZG9BdHRlc3RhdGlvblN0YXRlbWVudCksIGF0dGVzdGF0aW9uKTsKIAotICAgIHJldHVybiBQ
dWJsaWNLZXlDcmVkZW50aWFsRGF0YSB7IEFycmF5QnVmZmVyOjpjcmVhdGUoY3JlZGVudGlhbElk
LmRhdGEoKSwgY3JlZGVudGlhbElkLnNpemUoKSksIHRydWUsIG51bGxwdHIsIEFycmF5QnVmZmVy
OjpjcmVhdGUoYXR0ZXN0YXRpb25PYmplY3QuZGF0YSgpLCBhdHRlc3RhdGlvbk9iamVjdC5zaXpl
KCkpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBXVEY6Om51bGxvcHQgfTsKKyAgICByZXR1
cm4gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQs
IGF0dGVzdGF0aW9uT2JqZWN0KTsKIH0KIAotT3B0aW9uYWw8UHVibGljS2V5Q3JlZGVudGlhbERh
dGE+IHJlYWRVMmZTaWduUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGtleUhhbmRsZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhKQorUmVm
UHRyPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gcmVhZFUyZlNpZ25SZXNwb25zZShj
b25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5SGFuZGxlLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEpCiB7CiAgICAgaWYgKGtleUhhbmRsZS5pc0VtcHR5
KCkgfHwgdTJmRGF0YS5zaXplKCkgPD0gc2lnbmF0dXJlSW5kZXgpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gMSBieXRlIGZs
YWdzLCA0IGJ5dGVzIGNvdW50ZXIKICAgICBhdXRvIGZsYWdzID0gdTJmRGF0YVtmbGFnSW5kZXhd
OwpAQCAtMTg2LDcgKzE4NiwxMSBAQCBPcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsRGF0YT4g
cmVhZFUyZlNpZ25SZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0CiAgICAgY291bnRl
ciArPSB1MmZEYXRhW2NvdW50ZXJJbmRleCArIDNdOwogICAgIGF1dG8gYXV0aERhdGEgPSBidWls
ZEF1dGhEYXRhKHJwSWQsIGZsYWdzLCBjb3VudGVyLCB7IH0pOwogCi0gICAgcmV0dXJuIFB1Ymxp
Y0tleUNyZWRlbnRpYWxEYXRhIHsgQXJyYXlCdWZmZXI6OmNyZWF0ZShrZXlIYW5kbGUuZGF0YSgp
LCBrZXlIYW5kbGUuc2l6ZSgpKSwgZmFsc2UsIG51bGxwdHIsIG51bGxwdHIsIEFycmF5QnVmZmVy
OjpjcmVhdGUoYXV0aERhdGEuZGF0YSgpLCBhdXRoRGF0YS5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKHUyZkRhdGEuZGF0YSgpICsgc2lnbmF0dXJlSW5kZXgsIHUyZkRhdGEuc2l6ZSgpIC0g
c2lnbmF0dXJlSW5kZXgpLCBudWxscHRyLCBXVEY6Om51bGxvcHQgfTsKKyAgICAvLyBGSVhNRTog
RmluZCBhIHdheSB0byByZW1vdmUgdGhlIG5lZWQgb2YgY29uc3RydWN0aW5nIGEgdmVjdG9yIGhl
cmUuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHNpZ25hdHVyZTsKKyAgICBzaWduYXR1cmUuYXBwZW5k
KHUyZkRhdGEuZGF0YSgpICsgc2lnbmF0dXJlSW5kZXgsIHUyZkRhdGEuc2l6ZSgpIC0gc2lnbmF0
dXJlSW5kZXgpOworCisgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6
Y3JlYXRlKGtleUhhbmRsZSwgYXV0aERhdGEsIHNpZ25hdHVyZSwgeyB9KTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgZmlkbwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaAppbmRleCA5YWYyODJkMzRlOGU3ZDkz
NDE0MmJkNTQxNjQzMmFkODcwMzcwNmFkLi5jNGYyMDFmYzA1M2U3ODVlMWQ5NzFhZTU2NWVjZjNm
NTVlMWUxNjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaApAQCAtMzIsMTggKzMyLDE5IEBACiAj
aWYgRU5BQkxFKFdFQl9BVVRITikKIAogI2luY2x1ZGUgIkF0dGVzdGF0aW9uQ29udmV5YW5jZVBy
ZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oIgorI2luY2x1
ZGUgIkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oIgorI2luY2x1ZGUgIkF1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAog
bmFtZXNwYWNlIGZpZG8gewogCiAvLyBDb252ZXJ0cyBhIFUyRiByZWdpc3RlciByZXNwb25zZSB0
byBXZWJBdXRoTiBtYWtlQ3JlZGVudGlhbCByZXNwb25zZS4KIC8vIGh0dHBzOi8vZmlkb2FsbGlh
bmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtaWQtMjAxODAyMjcvZmlkby1jbGllbnQtdG8tYXV0aGVu
dGljYXRvci1wcm90b2NvbC12Mi4wLWlkLTIwMTgwMjI3Lmh0bWwjdTJmLWF1dGhlbnRpY2F0b3JN
YWtlQ3JlZGVudGlhbC1pbnRlcm9wZXJhYmlsaXR5Ci1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxX
ZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YT4gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2Uo
Y29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEsIGNvbnN0
IFdlYkNvcmU6OkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmIGF0dGVzdGF0aW9uID0g
V2ViQ29yZTo6QXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6RGlyZWN0KTsKK1dFQkNP
UkVfRVhQT1JUIFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZT4gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIHUyZkRhdGEsIGNvbnN0IFdlYkNvcmU6OkF0dGVzdGF0aW9uQ29udmV5YW5j
ZVByZWZlcmVuY2UmIGF0dGVzdGF0aW9uID0gV2ViQ29yZTo6QXR0ZXN0YXRpb25Db252ZXlhbmNl
UHJlZmVyZW5jZTo6RGlyZWN0KTsKIAogLy8gQ29udmVydHMgYSBVMkYgYXV0aGVudGljYXRpb24g
cmVzcG9uc2UgdG8gV2ViQXV0aE4gZ2V0QXNzZXJ0aW9uIHJlc3BvbnNlLgogLy8gaHR0cHM6Ly9m
aWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1pZC0yMDE4MDIyNy9maWRvLWNsaWVudC10
by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtaWQtMjAxODAyMjcuaHRtbCN1MmYtYXV0aGVu
dGljYXRvckdldEFzc2VydGlvbi1pbnRlcm9wZXJhYmlsaXR5Ci1XRUJDT1JFX0VYUE9SVCBPcHRp
b25hbDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YT4gcmVhZFUyZlNpZ25SZXNwb25z
ZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5SGFuZGxlLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEpOworV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gcmVhZFUyZlNpZ25SZXNwb25z
ZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5SGFuZGxlLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEpOwogCiB9IC8vIG5hbWVzcGFjZSBmaWRvCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKaW5kZXggYmNhNzNjZjllN2Y2ODUwZWZmZmQ5YmQ0YWRlMDA1YTExNjVjM2Jh
MC4uZTdhMThiMzA4N2MwNTI4YmU1OWViNjg2MGU4OTNjYWYwYjc4NzA3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKQEAgLTI2OCw2ICsyNjgsOSBAQCBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNw
cAogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcAogCiBNb2R1bGVzL3dl
YmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKK01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcAorTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5jcHAKK01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRvclJlc3BvbnNlLmNwcAogTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsLmNw
cAogTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcAogTW9kdWxlcy93
ZWJhdXRobi9hcGR1L0FwZHVDb21tYW5kLmNwcApAQCAtMjY1Myw2ICsyNjU2LDcgQEAgSlNBdWRp
b1BhcmFtLmNwcAogSlNBdWRpb1Byb2Nlc3NpbmdFdmVudC5jcHAKIEpTQXR0ZXN0YXRpb25Db252
ZXlhbmNlUHJlZmVyZW5jZS5jcHAKIEpTQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5w
dXRzLmNwcAorSlNBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmNwcAogSlNB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwCiBKU0F1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlLmNwcAogSlNBdXRoZW50aWNhdG9yUmVzcG9uc2UuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTA4MmZi
MDVhMWUyMmFmY2QwNDhjN2RlMzFhNmRkNmQxM2JiMTA5Ni4uMzZhNDM4ZWE3ODhiNWU5NWZkMTI5
YzFmYWU1Mzc3YWRmZjA3MjhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTc3Myw3ICsxNzczLDcgQEAKIAkJNTczMDNCQkEy
MDA2QzZFRTAwMzU1OTY1IC8qIENCT1JXcml0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MzAzQkI1MjAwNkM2RUQwMDM1NTk2NSAvKiBDQk9SV3Jp
dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTczMDNCQkIyMDA2QzZFRTAwMzU1OTY1IC8qIENCT1JCaW5hcnkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MzAzQkI2MjAwNkM2RUQwMDM1NTk2NSAv
KiBDQk9SQmluYXJ5LmggKi87IH07CiAJCTU3MzAzQkMxMjAwNkUwMEMwMDM1NTk2NSAvKiBDQk9S
UmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NzMwM0JCRjIwMDZFMDBDMDAzNTU5NjUgLyogQ0JPUlJlYWRlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTU3MzAzQkQyMjAwODdBODMwMDM1NTk2
NSAvKiBBdXRoZW50aWNhdG9yUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3MzAzQkNGMjAwODdBODMwMDM1NTk2NSAvKiBBdXRoZW50aWNh
dG9yUmVzcG9uc2UuaCAqLzsgfTsKKwkJNTczMDNCRDIyMDA4N0E4MzAwMzU1OTY1IC8qIEF1dGhl
bnRpY2F0b3JSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTczMDNCQ0YyMDA4N0E4MzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JSZXNwb25z
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3
MzAzQkUxMjAwOTVENjEwMDM1NTk2NSAvKiBKU0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczMDNCREQyMDA5NUIy
NjAwMzU1OTY1IC8qIEpTQXV0aGVudGljYXRvclJlc3BvbnNlLmggKi87IH07CiAJCTU3MzAzQkU5
MjAwOTc0OEQwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzMwM0JFNjIw
MDk3NDdBMDAzNTU5NjUgLyogUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3MzAzQkVC
MjAwOTdGNDAwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczMDNCRUEyMDA5N0Y0MDAwMzU1
OTY1IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3ODMsOSArMTc4Myw5IEBACiAJCTU3MzAzQzBB
MjAwOTlCQUQwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MzAzQzA2MjAw
OTk4RjgwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NzMwM0MxMTIw
MDk5Q0IxMDAzNTU5NjUgLyogSlNQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MzAzQzBDMjAw
OTlDNzUwMDM1NTk2NSAvKiBKU1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oICov
OyB9OwogCQk1NzMwM0MxOTIwMDlBMkYzMDAzNTU5NjUgLyogSlNQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NzMwM0MxMzIwMDlBMjU3MDAzNTU5NjUgLyogSlNQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zLmggKi87IH07Ci0JCTU3MzAzQzFGMjAwOUFCNDIwMDM1NTk2NSAvKiBB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczMDNDMUIyMDA5QTk4NjAwMzU1OTY1IC8qIEF1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmggKi87IH07CisJCTU3MzAzQzFGMjAwOUFCNDIw
MDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczMDNDMUIyMDA5QTk4NjAwMzU1
OTY1IC8qIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTczMDNDMjIyMDA5QUYwMzAwMzU1
OTY1IC8qIEpTQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MzAzQzIxMjAwOUFFRjYwMDM1NTk2
NSAvKiBKU0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmggKi87IH07Ci0JCTU3MzAz
QzJDMjAwOUI0QTgwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MzAzQzI3MjAw
OUIyRkMwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaCAqLzsgfTsK
KwkJNTczMDNDMkMyMDA5QjRBODAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcz
MDNDMjcyMDA5QjJGQzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3MzAz
QzJGMjAwOUI3RTEwMDM1NTk2NSAvKiBKU0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczMDNDMkQy
MDA5QjdEOTAwMzU1OTY1IC8qIEpTQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmggKi87
IH07CiAJCTU3MzAzQzQ2MjAxMDVEMkYwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MzAz
QzQzMjAxMDVCM0QwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NzM0ODkzOTFEQUM2
QjZFMDBEQzA2NjcgLyogQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczNDg5MzgxREFDNkI2RDAwREMwNjY3
IC8qIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMuaCAqLzsgfTsKQEAgLTE3OTgsNiArMTc5OCw4
IEBACiAJCTU3NTBBOTgyMUU2QTE1MDgwMDcwNUM0QSAvKiBKU0VjS2V5UGFyYW1zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzUwQTk4MDFFNkExNTA4
MDA3MDVDNEEgLyogSlNFY0tleVBhcmFtcy5oICovOyB9OwogCQk1NzUwQTk4NzFFNkEyMTY4MDA3
MDVDNEEgLyogQ3J5cHRvQWxnb3JpdGhtRUNESC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1MEE5ODUxRTZBMjE2ODAwNzA1QzRBIC8qIENyeXB0b0Fs
Z29yaXRobUVDREguaCAqLzsgfTsKIAkJNTc1NDcxOUYxRUNFNjI4MzAwREQ2M0IyIC8qIEpTUnNh
UHNzUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzU0NzE5OTFFQ0U1RDJBMDBERDYzQjIgLyogSlNSc2FQc3NQYXJhbXMuaCAqLzsgfTsKKwkJ
NTc1ODU5NjEyMzlGMTI0RDAwQzc0NTcyIC8qIEpTQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xp
ZW50T3V0cHV0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTc1ODU5NUUyMzlGMTE3MzAwQzc0NTcyIC8qIEpTQXV0aGVudGljYXRpb25FeHRlbnNpb25z
Q2xpZW50T3V0cHV0cy5oICovOyB9OworCQk1NzU4NTk2QzIzOUYzMjFDMDBDNzQ1NzIgLyogQXV0
aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1ODU5NjUyMzlGMTRDQzAwQzc0NTcyIC8qIEF1
dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NzYwODI3MjIwMjE1QTU1MDAxMTY2Nzgg
LyogQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzYwODI3MDIwMjE1MTNGMDAxMTY2NzggLyogQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTc2ODE0MkExRTZGOTlDMTAwRTc3NzU0IC8qIENyeXB0
b0FsZ29yaXRobUVjZGhLZXlEZXJpdmVQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NjgxNDI5MUU2Rjk5QzEwMEU3Nzc1NCAvKiBDcnlwdG9B
bGdvcml0aG1FY2RoS2V5RGVyaXZlUGFyYW1zLmggKi87IH07CiAJCTU3NjgxNDQxMUU3MDlGQTQw
MEU3Nzc1NCAvKiBKU0VjZGhLZXlEZXJpdmVQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NjgxNDNFMUU3MDlDMzYwMEU3Nzc1NCAvKiBKU0Vj
ZGhLZXlEZXJpdmVQYXJhbXMuaCAqLzsgfTsKQEAgLTE4MjUsNyArMTgyNyw3IEBACiAJCTU3RDg0
NjJFMUZFQUY2OTkwMENBMzY4MiAvKiBQdWJsaWNLZXlDcmVkZW50aWFsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0Q4NDYyQjFGRUFGNjhGMDBDQTM2
ODIgLyogUHVibGljS2V5Q3JlZGVudGlhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTU3RDg0NjM1MUZFQUZDRDMwMENBMzY4MiAvKiBKU1B1Ymxp
Y0tleUNyZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3RDg0NjMwMUZFQUZDMkYwMENBMzY4MiAvKiBKU1B1YmxpY0tleUNyZWRlbnRpYWwu
aCAqLzsgfTsKIAkJNTdEQTQ3QjAyMjQwMzRFNDAwMkE0NjEyIC8qIEF1dGhlbnRpY2F0aW9uRXh0
ZW5zaW9uc0NsaWVudElucHV0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTdEQTQ3QTUyMjQwMUUwRjAwMkE0NjEyIC8qIEF1dGhlbnRpY2F0aW9uRXh0
ZW5zaW9uc0NsaWVudElucHV0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTU3RENFRDc0MjE0MzA1RjAwMDE2Qjg0NyAvKiBQdWJsaWNLZXlDcmVk
ZW50aWFsRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTdEQ0VENzIyMTQzMDVGMDAwMTZCODQ3IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTdEQ0VE
NzQyMTQzMDVGMDAwMTZCODQ3IC8qIEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFRDcyMjE0MzA1RjAw
MDE2Qjg0NyAvKiBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTdEQ0VEOTAyMTQ4N0ZGNzAwMTZCODQ3
IC8qIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFRDhDMjE0ODdFREIwMDE2Qjg0NyAvKiBBdXRoZW50aWNh
dG9yVHJhbnNwb3J0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNTdEQ0VEOTgyMTQ4ODIxNjAwMTZCODQ3IC8qIEpTQXV0aGVudGljYXRvclRyYW5z
cG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdE
Q0VEOTIyMTQ4ODBDNjAwMTZCODQ3IC8qIEpTQXV0aGVudGljYXRvclRyYW5zcG9ydC5oICovOyB9
OwogCQk1N0UxRTVBMzFFOEM5MUI1MDBFRTM3QzkgLyogQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdFMUU1QTEx
RThDOTFCNTAwRUUzN0M5IC8qIENyeXB0b0FsZ29yaXRobUFFU19DVFIuaCAqLzsgfTsKQEAgLTg3
ODIsNiArODc4NCwxMyBAQAogCQk1NzUwQTk4NTFFNkEyMTY4MDA3MDVDNEEgLyogQ3J5cHRvQWxn
b3JpdGhtRUNESC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9BbGdv
cml0aG1FQ0RILmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NTQ3MTk5MUVDRTVE
MkEwMERENjNCMiAvKiBKU1JzYVBzc1BhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1JzYVBzc1BhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
NzU0NzE5QTFFQ0U1RDJBMDBERDYzQjIgLyogSlNSc2FQc3NQYXJhbXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSc2FQc3NQYXJhbXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1NzU4NTk1QzIzOUYxMTMwMDBDNzQ1NzIgLyogSlNBdXRoZW50
aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTU3NTg1OTVFMjM5RjExNzMwMEM3NDU3MiAvKiBKU0F1dGhlbnRpY2F0
aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBdXRoZW50aWNh
dGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTU3NTg1OTY1MjM5RjE0Q0MwMEM3NDU3MiAvKiBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnND
bGllbnRPdXRwdXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0Ns
aWVudE91dHB1dHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc1ODU5NjcyMzlG
MTRDRDAwQzc0NTcyIC8qIEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1NzU4NTk2OTIzOUYxRUM3MDBDNzQ1NzIgLyogQXV0aGVu
dGljYXRvclJlc3BvbnNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0b3JSZXNw
b25zZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3NTg1OTZCMjM5RjI4NEIw
MEM3NDU3MiAvKiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3NTg1OTZFMjM5RjM5NzkwMEM3NDU3MiAvKiBBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTc2MDgyNEYyMDExOEQ4RDAwMTE2Njc4IC8qIEpTQmFzaWNDcmVkZW50aWFsQ3VzdG9tLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmFzaWNDcmVkZW50aWFsQ3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc2MDgyNTYyMDExQkUwMjAwMTE2Njc4IC8qIEpTQXV0aGVu
dGljYXRvclJlc3BvbnNlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXV0aGVudGlj
YXRvclJlc3BvbnNlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc2
MDgyNzAyMDIxNTEzRjAwMTE2Njc4IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg4NTIsNyArODg2MSw3IEBACiAJCTU3REE0N0E3MjI0
MDFFMEYwMDJBNDYxMiAvKiBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3REE0N0FDMjI0MDMyREMwMDJBNDYxMiAvKiBKU0F1dGhl
bnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU3REE0N0FEMjI0MDMyREQwMDJBNDYxMiAvKiBKU0F1dGhlbnRpY2F0
aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0F1dGhlbnRpY2F0
aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk1N0RDRUQ3MjIxNDMwNUYwMDAxNkI4NDcgLyogUHVibGljS2V5Q3JlZGVudGlhbERhdGEuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUHVibGljS2V5Q3JlZGVudGlhbERhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTdEQ0VENzIyMTQzMDVGMDAwMTZCODQ3IC8qIEF1dGhlbnRpY2F0b3JS
ZXNwb25zZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0RDRUQ4QzIxNDg3RURCMDAxNkI4NDcg
LyogQXV0aGVudGljYXRvclRyYW5zcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRoZW50aWNhdG9y
VHJhbnNwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3RENFRDhFMjE0ODdF
REIwMDE2Qjg0NyAvKiBBdXRoZW50aWNhdG9yVHJhbnNwb3J0LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBdXRoZW50aWNh
dG9yVHJhbnNwb3J0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdEQ0VEOTEy
MTQ4ODBDNjAwMTZCODQ3IC8qIEpTQXV0aGVudGljYXRvclRyYW5zcG9ydC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1dGhlbnRpY2F0b3JUcmFuc3BvcnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY3NDcsMTEgKzE2NzU2LDExIEBACiAJ
CQkJMTE5OUZBNTkyMDhFM0M3RjAwMjM1OENDIC8qIERpc3BsYXlCb3guaCAqLywKIAkJCQlFNEZC
NEIzNTIzOUJFQjEwMDAzQzMzNkEgLyogRGlzcGxheUlubGluZUNvbnRlbnQuY3BwICovLAogCQkJ
CUU0NTFDNjMzMjM5NDA1OEUwMDk5MzE5MCAvKiBEaXNwbGF5SW5saW5lQ29udGVudC5oICovLAor
CQkJCTExMkZCMzUwMjM5QzIzQzQwMDg3MDU0QSAvKiBEaXNwbGF5SW5saW5lUmVjdC5oICovLAog
CQkJCTZGQjQ3RTYxMjI3NzQyNUEwMEM3QkNCMCAvKiBEaXNwbGF5TGluZUJveC5oICovLAogCQkJ
CTZGNzc4Njg1MjM0OTFBQzYwMDREOTYzNiAvKiBEaXNwbGF5UGFpbnRlci5jcHAgKi8sCiAJCQkJ
NkY3Nzg2ODcyMzQ5MUFENzAwNEQ5NjM2IC8qIERpc3BsYXlQYWludGVyLmggKi8sCiAJCQkJNkZE
OUNENTIyMjdFMjFDODAwRTUzOTU3IC8qIERpc3BsYXlSZWN0LmggKi8sCi0JCQkJMTEyRkIzNTAy
MzlDMjNDNDAwODcwNTRBIC8qIERpc3BsYXlJbmxpbmVSZWN0LmggKi8sCiAJCQkJNkZDRTFBMTgy
MjYxOEFCMzAwNEYwMzQzIC8qIERpc3BsYXlSdW4uaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gZGlz
cGxheXRyZWU7CkBAIC0yMDAyOCwxNSArMjAwMzcsMjEgQEAKIAkJCQk1N0QxMzUyMzIyOTQ5NzM0
MDA4Mjc0MDEgLyogQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZS5pZGwgKi8sCiAJCQkJ
NTdEQTQ3QTUyMjQwMUUwRjAwMkE0NjEyIC8qIEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVu
dElucHV0cy5oICovLAogCQkJCTU3REE0N0E3MjI0MDFFMEYwMDJBNDYxMiAvKiBBdXRoZW50aWNh
dGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaWRsICovLAorCQkJCTU3NTg1OTY1MjM5RjE0Q0Mw
MEM3NDU3MiAvKiBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmggKi8sCisJ
CQkJNTc1ODU5NjcyMzlGMTRDRDAwQzc0NTcyIC8qIEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0Ns
aWVudE91dHB1dHMuaWRsICovLAorCQkJCTU3NTg1OTZFMjM5RjM5NzkwMEM3NDU3MiAvKiBBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwICovLAogCQkJCTU3MzAzQzI3MjAwOUIyRkMw
MDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaCAqLywKIAkJCQk1NzMw
M0MyOTIwMDlCMkZDMDAzNTU5NjUgLyogQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmlk
bCAqLywKKwkJCQk1NzU4NTk2QjIzOUYyODRCMDBDNzQ1NzIgLyogQXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2UuY3BwICovLAogCQkJCTU3MzAzQzFCMjAwOUE5ODYwMDM1NTk2NSAvKiBB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oICovLAogCQkJCTU3MzAzQzFEMjAwOUE5
ODYwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5pZGwgKi8sCiAJ
CQkJNTczMDNDNDQyMDEwNUIzRDAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5j
cHAgKi8sCiAJCQkJNTczMDNDNDMyMDEwNUIzRDAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvci5oICovLAogCQkJCTU3NjA4MjcwMjAyMTUxM0YwMDExNjY3OCAvKiBBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JDbGllbnQuaCAqLywKKwkJCQk1NzU4NTk2OTIzOUYxRUM3MDBDNzQ1NzIg
LyogQXV0aGVudGljYXRvclJlc3BvbnNlLmNwcCAqLywKIAkJCQk1NzMwM0JDRjIwMDg3QTgzMDAz
NTU5NjUgLyogQXV0aGVudGljYXRvclJlc3BvbnNlLmggKi8sCiAJCQkJNTczMDNCRDEyMDA4N0E4
MzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JSZXNwb25zZS5pZGwgKi8sCisJCQkJNTdEQ0VENzIy
MTQzMDVGMDAwMTZCODQ3IC8qIEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaCAqLywKIAkJCQk1
N0RDRUQ4QzIxNDg3RURCMDAxNkI4NDcgLyogQXV0aGVudGljYXRvclRyYW5zcG9ydC5oICovLAog
CQkJCTU3RENFRDhFMjE0ODdFREIwMDE2Qjg0NyAvKiBBdXRoZW50aWNhdG9yVHJhbnNwb3J0Lmlk
bCAqLywKIAkJCQk1N0Q4NDYyQzFGRUFGNjhGMDBDQTM2ODIgLyogUHVibGljS2V5Q3JlZGVudGlh
bC5jcHAgKi8sCkBAIC0yMDA0NCw3ICsyMDA1OSw2IEBACiAJCQkJNTdEODQ2MkQxRkVBRjY4RjAw
Q0EzNjgyIC8qIFB1YmxpY0tleUNyZWRlbnRpYWwuaWRsICovLAogCQkJCTU3MzAzQkU2MjAwOTc0
N0EwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmggKi8sCiAJ
CQkJNTczMDNCRTgyMDA5NzQ3QTAwMzU1OTY1IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnMuaWRsICovLAotCQkJCTU3RENFRDcyMjE0MzA1RjAwMDE2Qjg0NyAvKiBQdWJsaWNL
ZXlDcmVkZW50aWFsRGF0YS5oICovLAogCQkJCTU3MzAzQkVDMjAwOTgwQkYwMDM1NTk2NSAvKiBQ
dWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvci5oICovLAogCQkJCTU3MzAzQkVFMjAwOTgwQkYw
MDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvci5pZGwgKi8sCiAJCQkJNTcz
MDNDMDYyMDA5OThGODAwMzU1OTY1IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9u
cy5oICovLApAQCAtMjAwNjcsNiArMjAwODEsOCBAQAogCQkJCTU3RDEzNTI2MjI5NEE3QTcwMDgy
NzQwMSAvKiBKU0F0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UuaCAqLywKIAkJCQk1N0RB
NDdBQzIyNDAzMkRDMDAyQTQ2MTIgLyogSlNBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJ
bnB1dHMuY3BwICovLAogCQkJCTU3REE0N0FEMjI0MDMyREQwMDJBNDYxMiAvKiBKU0F1dGhlbnRp
Y2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5oICovLAorCQkJCTU3NTg1OTVDMjM5RjExMzAw
MEM3NDU3MiAvKiBKU0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuY3BwICov
LAorCQkJCTU3NTg1OTVFMjM5RjExNzMwMEM3NDU3MiAvKiBKU0F1dGhlbnRpY2F0aW9uRXh0ZW5z
aW9uc0NsaWVudE91dHB1dHMuaCAqLywKIAkJCQk1NzMwM0MyRTIwMDlCN0RBMDAzNTU5NjUgLyog
SlNBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwICovLAogCQkJCTU3MzAzQzJEMjAw
OUI3RDkwMDM1NTk2NSAvKiBKU0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oICovLAog
CQkJCTU3MzAzQzIwMjAwOUFFRjUwMDM1NTk2NSAvKiBKU0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlv
blJlc3BvbnNlLmNwcCAqLywKQEAgLTI5MDQyLDYgKzI5MDU4LDcgQEAKIAkJCQk5MzRGNzEzQTBE
NUE2RjEwMDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMTI0NzQ4NDEwQUExNjFEMDBCNzk0OTMgLyogQXV0aGVudGljYXRpb25DbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3REE0N0IwMjI0MDM0RTQwMDJBNDYxMiAvKiBBdXRo
ZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3
NTg1OTZDMjM5RjMyMUMwMEM3NDU3MiAvKiBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRP
dXRwdXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY0QzBDRTkyMzRFMDA3RUYzQ0QgLyog
QXV0aGVudGljYXRpb25NYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQzJDMjAwOUI0QTgw
MDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTU3MzAzQzFGMjAwOUFCNDIwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRp
b25SZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTA0OSw2ICsyOTA2Niw3IEBACiAJCQkJ
NTc2MDgyNzIyMDIxNUE1NTAwMTE2Njc4IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcyQjQwNDIyMTc4MTE0QTAwMEFENDNFIC8qIEF1dGhl
bnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQkQyMjAw
ODdBODMwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovLAor
CQkJCTU3RENFRDc0MjE0MzA1RjAwMDE2Qjg0NyAvKiBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzJCNDA0MDIxNzgwMTcxMDAwQUQ0M0UgLyogQXV0aGVu
dGljYXRvclN1cHBvcnRlZE9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RENFRDkwMjE0
ODdGRjcwMDE2Qjg0NyAvKiBBdXRoZW50aWNhdG9yVHJhbnNwb3J0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNTAxOTIwRTEzMkVCRjJFMDA4QkZFNTUgLyogQXV0b2NhcGl0YWxpemUuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjk2MDYsNiArMjk2MjQsOCBAQAogCQkJCTdFREFBRkM5MTlBMkNDREMwMDM0
REZEMSAvKiBEaXNrQ2FjaGVNb25pdG9yQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTExOTlG
QTVCMjA4RTNDN0YwMDIzNThDQyAvKiBEaXNwbGF5Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlF
NDUxQzYzNDIzOTQwNThGMDA5OTMxOTAgLyogRGlzcGxheUlubGluZUNvbnRlbnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTExMkZCMzUyMjM5QzIzQzQwMDg3MDU0QSAvKiBEaXNwbGF5SW5saW5lUmVj
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkZCNDdFNjMyMjc3NDI1QTAwQzdCQ0IwIC8qIERpc3Bs
YXlMaW5lQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJEMzFDM0RENTFFMDAwN0EyQ0Eg
LyogRGlzcGxheUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ1MUMzREQ1MUUwMDA3
QTJDQSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJENzFD
M0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zMDI2NSw3ICszMDI4NSw2IEBACiAJCQkJMTE1Q0ZBN0UyMDhCOEUxMDAwMUU2OTkxIC8qIElu
bGluZUZvcm1hdHRpbmdTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkZFN0NGQTIyMTc3RUVG
MjAwNUIxNTczIC8qIElubGluZUl0ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTc4OTE2MTEy
MEQ2MDgwMDYwRUNFNSAvKiBJbmxpbmVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNkZC
NDdFNjMyMjc3NDI1QTAwQzdCQ0IwIC8qIERpc3BsYXlMaW5lQm94LmggaW4gSGVhZGVycyAqLywK
IAkJCQk2RkUxOTgxNzIxNzgzOTdDMDA0NDZGMDggLyogSW5saW5lTGluZUJyZWFrZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTZGMENENjk1MjI5RUQzMjcwMEM1OTk0RSAvKiBJbmxpbmVMaW5lQnVp
bGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkYzNjBFNTAyMzk5OTQyMTAwMTUxMkE3IC8qIElu
bGluZVNvZnRMaW5lQnJlYWtJdGVtLmggaW4gSGVhZGVycyAqLywKQEAgLTMwMzk5LDYgKzMwNDE4
LDcgQEAKIAkJCQlCRThFRjA0MzE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCRThFRjA0NTE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNr
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEMTM1MkEyMjk0QUEzOTAwODI3NDAxIC8qIEpT
QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1NzU4NTk2MTIzOUYxMjREMDBDNzQ1NzIgLyogSlNBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnND
bGllbnRPdXRwdXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzMwM0MyRjIwMDlCN0UxMDAzNTU5
NjUgLyogSlNBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTU3MzAzQzIyMjAwOUFGMDMwMDM1NTk2NSAvKiBKU0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlv
blJlc3BvbnNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzMwM0JFMTIwMDk1RDYxMDAzNTU5NjUg
LyogSlNBdXRoZW50aWNhdG9yUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovLApAQCAtMzE3NzQsNyAr
MzE3OTQsNiBAQAogCQkJCUZGOTQ1RUNDMTYxRjdGMzYwMDk3MUJDOCAvKiBQc2V1ZG9FbGVtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0Q4NDYyRTFGRUFGNjk5MDBDQTM2ODIgLyogUHVibGlj
S2V5Q3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTczMDNCRTkyMDA5NzQ4RDAwMzU1
OTY1IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaCBpbiBIZWFkZXJzICov
LAotCQkJCTU3RENFRDc0MjE0MzA1RjAwMDE2Qjg0NyAvKiBQdWJsaWNLZXlDcmVkZW50aWFsRGF0
YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTczMDNCRUYyMDA5ODBDNjAwMzU1OTY1IC8qIFB1Ymxp
Y0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzMwM0MwQTIw
MDk5QkFEMDAzNTU5NjUgLyogUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1NzMwM0JFQjIwMDk3RjQwMDAzNTU5NjUgLyogUHVibGljS2V5Q3Jl
ZGVudGlhbFR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzE5MjcsNyArMzE5NDYsNiBAQAogCQkJ
CUJDNUVCNjY4MEU4MUNCNzEwMEIyNTk2NSAvKiBSZW5kZXJTdHlsZUNvbnN0YW50cy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDM2NzA4QzExMkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR0Jsb2Nr
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzY3MDhDMzEyRDlDQTRCMDAwNDQyMzQgLyogUmVuZGVy
U1ZHQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQkxMTJGQjM1MjIzOUMyM0M0MDA4NzA1
NEEgLyogRGlzcGxheUlubGluZVJlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTJCMzY1Qzg0MTUy
NTExOUUwMDkxRDI3QiAvKiBSZW5kZXJTVkdFbGxpcHNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
M0MwOTJCQzEyRDlFNEVFMDBBOTg5QzMgLyogUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDM2NzA4QzUxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR0dyYWRp
ZW50U3RvcC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yLmgKaW5kZXggZGNjODA5ZTZh
ZGRjYTQ3MWIyMzM5MGIxY2FmYzFlMmM1M2JjZGMxMC4uMGQyNDcxM2JmNzNiYzA5ZTE3MzBhMjky
MTY0OWNjYzg4ZWIxNzliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3IuaApAQCAtMjksOCArMjksOCBAQAog
CiAjaW5jbHVkZSAiV2ViQXV0aGVudGljYXRpb25GbGFncy5oIgogI2luY2x1ZGUgIldlYkF1dGhl
bnRpY2F0aW9uUmVxdWVzdERhdGEuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JS
ZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uRGF0YS5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbERhdGEuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEF1dGhlbnRp
Y2F0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxBdXRoZW50aWNhdG9yPiwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPEF1dGhlbnRpY2F0b3I+IHsKIHB1YmxpYzoKLSAgICB1c2luZyBSZXNwb25kID0gVmFy
aWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YT47CisgICAgdXNpbmcgUmVzcG9uZCA9IFZhcmlhbnQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JSZXNwb25zZT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+OwogCiAgICAgY2xhc3MgT2Jz
ZXJ2ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8T2JzZXJ2ZXI+IHsKICAgICBwdWJsaWM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggYmFhYmU4ZGVmMWQxMDI4YzUy
ZmFiNzAxNDI2Mjg0NzcyN2VlYmU2MC4uNmZhZWRlNTQ3NjQ0YWI3ZDhmOTZlODkwZDgzOGExYmIx
M2JjMDg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtMjQzLDcg
KzI0Myw3IEBAIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OnJlc3BvbmRSZWNlaXZlZChSZXNw
b25kJiYgcmVzcG9uZCkKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVChtX3BlbmRpbmdDb21w
bGV0aW9uSGFuZGxlcik7CiAKLSAgICBhdXRvIHNob3VsZENvbXBsZXRlID0gV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxQdWJsaWNLZXlDcmVkZW50aWFsRGF0YT4ocmVzcG9uZCk7CisgICAgYXV0byBz
aG91bGRDb21wbGV0ZSA9IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEF1dGhlbnRpY2F0b3JS
ZXNwb25zZT4+KHJlc3BvbmQpOwogICAgIGlmICghc2hvdWxkQ29tcGxldGUpCiAgICAgICAgIHNo
b3VsZENvbXBsZXRlID0gV1RGOjpnZXQ8RXhjZXB0aW9uRGF0YT4ocmVzcG9uZCkuY29kZSA9PSBJ
bnZhbGlkU3RhdGVFcnJvcjsKICAgICBpZiAoc2hvdWxkQ29tcGxldGUpIHsKQEAgLTM0OSw3ICsz
NDksNyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpydW5QYW5lbCgpCiB2b2lkIEF1dGhl
bnRpY2F0b3JNYW5hZ2VyOjppbnZva2VQZW5kaW5nQ29tcGxldGlvbkhhbmRsZXIoUmVzcG9uZCYm
IHJlc3BvbmQpCiB7CiAgICAgaWYgKGF1dG8gKnBhbmVsID0gbV9wZW5kaW5nUmVxdWVzdERhdGEu
cGFuZWwuZ2V0KCkpIHsKLSAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXNwb25kLCBbJl0oY29uc3Qg
UHVibGljS2V5Q3JlZGVudGlhbERhdGEmKSB7CisgICAgICAgIFdURjo6c3dpdGNoT24ocmVzcG9u
ZCwgWyZdKGNvbnN0IFJlZjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+JikgewogICAgICAgICAgICAg
cGFuZWwtPmNsaWVudCgpLmRpc21pc3NQYW5lbChXZWJBdXRoZW50aWNhdGlvblJlc3VsdDo6U3Vj
Y2VlZGVkKTsKICAgICAgICAgfSwgWyZdKGNvbnN0IEV4Y2VwdGlvbkRhdGEmKSB7CiAgICAgICAg
ICAgICBwYW5lbC0+Y2xpZW50KCkuZGlzbWlzc1BhbmVsKFdlYkF1dGhlbnRpY2F0aW9uUmVzdWx0
OjpGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKaW5kZXggZWVlMjRlYTFh
ZDRlMzE1MmY5ZDc3NTg0ZjdlYjdkZDA2MzI0MjI3ZS4uZGM2YzQ0NDM5MTAwMTAwMjNiYjE1NTI5
ODA5ZTllZWE2NzBlZmIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCkBAIC0z
MCw4ICszMCw4IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRvci5oIgogI2luY2x1ZGUgIkF1dGhl
bnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlLmgiCiAjaW5jbHVkZSAiV2ViQXV0aGVudGljYXRpb25S
ZXF1ZXN0RGF0YS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvclJlc3BvbnNlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Q
dWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0b3JNYW5hZ2VyIDogcHVibGlj
IEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlOjpPYnNlcnZlciwgcHViCiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXV0aGVudGljYXRv
ck1hbmFnZXIpOwogcHVibGljOgotICAgIHVzaW5nIFJlc3BvbmQgPSBWYXJpYW50PFdlYkNvcmU6
OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPjsKKyAgICB1
c2luZyBSZXNwb25kID0gVmFyaWFudDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNl
PiwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT47CiAgICAgdXNpbmcgQ2FsbGJhY2sgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlc3BvbmQmJik+OwogICAgIHVzaW5nIFRyYW5zcG9ydFNldCA9IEhh
c2hTZXQ8V2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydCwgV1RGOjpJbnRIYXNoPFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+PjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9y
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9j
YWxBdXRoZW50aWNhdG9yLm1tCmluZGV4IDY4N2Q1ZGFkZjI1ZDk1YTRjMTQ1ZGFkY2JmYWIwNTQ2
M2M4ZTYyNzcuLjNjMjQwY2E2YTg5NGJkMTNmODk0MGRhNTQ0YzNkYTdhMzYxOTcwZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xv
Y2FsQXV0aGVudGljYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KQEAgLTI5LDEwICsyOSwxMSBA
QAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbXBvcnQgPFNlY3VyaXR5L1NlY0l0ZW0uaD4K
KyNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmg+CisjaW1w
b3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0NCT1JXcml0ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRXhjZXB0aW9uRGF0YS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxEYXRhLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJB
dXRoZW50aWNhdGlvblV0aWxzLmg+CkBAIC0zNDAsNyArMzQxLDcgQEAgdm9pZCBMb2NhbEF1dGhl
bnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKFNlY0tleVJlZiBw
cml2YXRlS2UKICAgICB9CiAgICAgYXV0byBhdHRlc3RhdGlvbk9iamVjdCA9IGJ1aWxkQXR0ZXN0
YXRpb25PYmplY3QoV1RGTW92ZShhdXRoRGF0YSksICJBcHBsZSIsIFdURk1vdmUoYXR0ZXN0YXRp
b25TdGF0ZW1lbnRNYXApLCBjcmVhdGlvbk9wdGlvbnMuYXR0ZXN0YXRpb24pOwogCi0gICAgcmVj
ZWl2ZVJlc3BvbmQoUHVibGljS2V5Q3JlZGVudGlhbERhdGEgeyBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KGNyZWRlbnRpYWxJZC5kYXRhKCksIGNyZWRlbnRpYWxJZC5zaXplKCkpLCB0cnVlLCBudWxscHRy
LCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF0dGVzdGF0aW9uT2JqZWN0LmRhdGEoKSwgYXR0ZXN0YXRp
b25PYmplY3Quc2l6ZSgpKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgV1RGOjpudWxsb3B0
IH0pOworICAgIHJlY2VpdmVSZXNwb25kKEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
OjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9iamVjdCkpOwogfQogCiB2b2lkIExv
Y2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKCkKQEAgLTQ4MSw3ICs0ODIsNyBAQCB2b2lk
IExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJDb25zZW50
ZWQoTG9jYWxDb25uZWN0aW9uOgogICAgIH0KIAogICAgIC8vIFN0ZXAgMTMuCi0gICAgcmVjZWl2
ZVJlc3BvbmQoUHVibGljS2V5Q3JlZGVudGlhbERhdGEgeyBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNy
ZWRlbnRpYWxJZC5kYXRhKCksIGNyZWRlbnRpYWxJZC5zaXplKCkpLCBmYWxzZSwgbnVsbHB0ciwg
bnVsbHB0ciwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoRGF0YS5kYXRhKCksIGF1dGhEYXRhLnNp
emUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUoc2lnbmF0dXJlLmRhdGEoKSwgc2lnbmF0dXJlLnNp
emUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUodXNlcmhhbmRsZS5kYXRhKCksIHVzZXJoYW5kbGUu
c2l6ZSgpKSwgV1RGOjpudWxsb3B0IH0pOworICAgIHJlY2VpdmVSZXNwb25kKEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKGNyZWRlbnRpYWxJZCwgYXV0aERhdGEsIHNpZ25h
dHVyZSwgdXNlcmhhbmRsZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcAppbmRleCAw
NTY2MDIxNDMxNDg1YTNjNDU4YjhkOTJhYzBjOGJmOTNjODJjNjk4Li5lNzI4MzFmODExNTc1MGI5
YmEwZmY2ZTQ2NmQ1NDhiNjk1ZWRiM2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC0zNSw4ICszNSw4IEBACiAjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVk
ZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvclJl
c3BvbnNlRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uRGF0YS5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbERhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTY3LDEwICs2NywxMCBAQCB2b2lkIFdlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvclByb3h5OjpnZXRBc3NlcnRpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1l
SWQsIFNlYwogCiB2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpoYW5kbGVS
ZXF1ZXN0KFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEmJiBkYXRhLCBSZXF1ZXN0Q29tcGxl
dGlvbkhhbmRsZXImJiBoYW5kbGVyKQogewotICAgIGF1dG8gY2FsbGJhY2sgPSBbaGFuZGxlciA9
IFdURk1vdmUoaGFuZGxlcildIChWYXJpYW50PFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLCBFeGNl
cHRpb25EYXRhPiYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgYXV0byBjYWxsYmFjayA9IFtoYW5k
bGVyID0gV1RGTW92ZShoYW5kbGVyKV0gKFZhcmlhbnQ8UmVmPEF1dGhlbnRpY2F0b3JSZXNwb25z
ZT4sIEV4Y2VwdGlvbkRhdGE+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25z
dCBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYgZGF0YSkgewotICAgICAgICAgICAgaGFuZGxlcihk
YXRhLCB7IH0pOworICAgICAgICBXVEY6OnN3aXRjaE9uKHJlc3VsdCwgWyZdKGNvbnN0IFJlZjxB
dXRoZW50aWNhdG9yUmVzcG9uc2U+JiByZXNwb25zZSkgeworICAgICAgICAgICAgaGFuZGxlcihy
ZXNwb25zZS0+ZGF0YSgpLCB7IH0pOwogICAgICAgICB9LCBbJl0oY29uc3QgRXhjZXB0aW9uRGF0
YSYgZXhjZXB0aW9uKSB7CiAgICAgICAgICAgICBoYW5kbGVyKHsgfSwgZXhjZXB0aW9uKTsKICAg
ICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHkuaAppbmRleCBlYWQ4NjRjMjEzYWMyYTdjZWZmNzRmZGM3ZDYxYTk3ZTdmNTgzNzhiLi43
OTY5OTc5ZGM4NTU2M2YyOTEyN2ZlZDM4N2Y4MDc0Y2I5NDYzNGVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmgKQEAgLTM1LDcgKzM1LDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBFeGNlcHRpb25EYXRhOwogc3RydWN0IFB1
YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM7Ci1zdHJ1Y3QgUHVibGljS2V5Q3JlZGVu
dGlhbERhdGE7CitzdHJ1Y3QgQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YTsKIHN0cnVjdCBQdWJs
aWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM7CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRh
OwogfQpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgfldlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5KCk7CiAKIHByaXZhdGU6Ci0gICAgdXNpbmcgUmVxdWVzdENvbXBsZXRpb25I
YW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlD
cmVkZW50aWFsRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKT47CisgICAgdXNp
bmcgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiwgY29uc3QgV2ViQ29yZTo6RXhj
ZXB0aW9uRGF0YSYpPjsKICAgICB1c2luZyBRdWVyeUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT47CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHkubWVzc2FnZXMuaW4KaW5kZXggZTc4YjAxNmU5Y2QxZTFmZmI1YzkyNzgxMDIyODlhN2Jh
NmM2MzM3NC4uMjcwOGIxZmM4ZTY2ZmNlNGI5MWRiN2E3M2U5ODYzMmIzMWYxZjYyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHkubWVzc2FnZXMuaW4KQEAgLTI2LDggKzI2LDggQEAKIAogbWVzc2FnZXMgLT4gV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHkgTm90UmVmQ291bnRlZCB7CiAKLSAgICBNYWtlQ3JlZGVu
dGlhbChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSBvcmlnaW4sIFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3QgV2Vi
Q29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBvcHRpb25zKSAtPiAoc3Ry
dWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIGRhdGEsIHN0cnVjdCBXZWJDb3Jl
OjpFeGNlcHRpb25EYXRhIGV4Y2VwdGlvbikgQXN5bmMKLSAgICBHZXRBc3NlcnRpb24oV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEgb3JpZ2luLCBWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1Ymxp
Y0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyBvcHRpb25zKSAtPiAoc3RydWN0IFdlYkNvcmU6
OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIGRhdGEsIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25E
YXRhIGV4Y2VwdGlvbikgQXN5bmMKKyAgICBNYWtlQ3JlZGVudGlhbChXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBvcmln
aW4sIFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9ucyBvcHRpb25zKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JSZXNwb25zZURhdGEgZGF0YSwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhj
ZXB0aW9uKSBBc3luYworICAgIEdldEFzc2VydGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW4sIFZlY3Rv
cjx1aW50OF90PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVl
c3RPcHRpb25zIG9wdGlvbnMpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3Bv
bnNlRGF0YSBkYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pIEFz
eW5jCiAgICAgSXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKCkg
LT4gKGJvb2wgcmVzdWx0KSBBc3luYwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRp
Y2F0b3IuY3BwCmluZGV4IGZkMjM0NmZkMmQ3NzllNjI3NWNlODNhMzkxZDYwNjFlZmY2ZTljYjIu
LjllNDFlYjcxYWRjNTg0NGVmZWRlNDBjNjdkZmUyMzNmZDg2YWM1YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRp
Y2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgQ3RhcEF1
dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclJlc3BvbnNlUmVjZWl2ZWQo
VmVjdG9yPHVpbnQ4CiAgICAgICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsg
VW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJVbmtub3duIGludGVybmFsIGVycm9yLiBFcnJvciBj
b2RlOiAiLCBzdGF0aWNfY2FzdDx1aW50OF90PihlcnJvcikpIH0pOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIHJlY2VpdmVSZXNwb25kKFdURk1vdmUoKnJlc3BvbnNlKSk7CisgICAgcmVj
ZWl2ZVJlc3BvbmQocmVzcG9uc2UucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKIHZvaWQgQ3RhcEF1
dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbigpCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBDdGFw
QXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRpb25BZnRlclJlc3BvbnNlUmVjZWl2ZWQo
VmVjdG9yPHVpbnQ4X3QKICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVu
a25vd25FcnJvciwgbWFrZVN0cmluZygiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29k
ZTogIiwgc3RhdGljX2Nhc3Q8dWludDhfdD4oZXJyb3IpKSB9KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICByZWNlaXZlUmVzcG9uZChXVEZNb3ZlKCpyZXNwb25zZSkpOworICAgIHJlY2Vp
dmVSZXNwb25kKHJlc3BvbnNlLnJlbGVhc2VOb25OdWxsKCkpOwogfQogCiBib29sIEN0YXBBdXRo
ZW50aWNhdG9yOjp0cnlEb3duZ3JhZGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRv
ci5jcHAKaW5kZXggOWQzYmRhNTJhNWViMTRiOTVlYWMxZjU1NDU3Mzk2NmUzYTI4ZTM1Zi4uYzc1
NzU5ZmEzMmQ5ODllOTU0ZDcyMjRiNjQ2M2VjMGU2MmEyYTgxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRv
L1UyZkF1dGhlbnRpY2F0b3IuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBVMmZBdXRoZW50
aWNhdG9yOjpjb250aW51ZVJlZ2lzdGVyQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChBcGR1
UmVzcG9uc2UKICAgICAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtu
b3duRXJyb3IsICJDb3VsZG4ndCBwYXJzZSB0aGUgVTJGIHJlZ2lzdGVyIHJlc3BvbnNlLiJfcyB9
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICByZWNlaXZlUmVzcG9u
ZChXVEZNb3ZlKCpyZXNwb25zZSkpOworICAgICAgICByZWNlaXZlUmVzcG9uZChyZXNwb25zZS5y
ZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEFwZHVS
ZXNwb25zZTo6U3RhdHVzOjpTV19DT05ESVRJT05TX05PVF9TQVRJU0ZJRUQ6CkBAIC0yMDUsNyAr
MjA1LDcgQEAgdm9pZCBVMmZBdXRoZW50aWNhdG9yOjpjb250aW51ZVNpZ25Db21tYW5kQWZ0ZXJS
ZXNwb25zZVJlY2VpdmVkKEFwZHVSZXNwb25zZSYmIGEKICAgICBhdXRvJiByZXF1ZXN0T3B0aW9u
cyA9IFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4ocmVxdWVzdERh
dGEoKS5vcHRpb25zKTsKICAgICBzd2l0Y2ggKGFwZHVSZXNwb25zZS5zdGF0dXMoKSkgewogICAg
IGNhc2UgQXBkdVJlc3BvbnNlOjpTdGF0dXM6OlNXX05PX0VSUk9SOiB7Ci0gICAgICAgIE9wdGlv
bmFsPFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhPiByZXNwb25zZTsKKyAgICAgICAgUmVmUHRyPEF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gcmVzcG9uc2U7CiAgICAgICAgIGlmIChtX2lz
QXBwSWQpIHsKICAgICAgICAgICAgIEFTU0VSVChyZXF1ZXN0T3B0aW9ucy5leHRlbnNpb25zICYm
ICFyZXF1ZXN0T3B0aW9ucy5leHRlbnNpb25zLT5hcHBpZC5pc051bGwoKSk7CiAgICAgICAgICAg
ICByZXNwb25zZSA9IHJlYWRVMmZTaWduUmVzcG9uc2UocmVxdWVzdE9wdGlvbnMuZXh0ZW5zaW9u
cy0+YXBwaWQsIHJlcXVlc3RPcHRpb25zLmFsbG93Q3JlZGVudGlhbHNbbV9uZXh0TGlzdEluZGV4
IC0gMV0uaWRWZWN0b3IsIGFwZHVSZXNwb25zZS5kYXRhKCkpOwpAQCAtMjE2LDkgKzIxNiw5IEBA
IHZvaWQgVTJmQXV0aGVudGljYXRvcjo6Y29udGludWVTaWduQ29tbWFuZEFmdGVyUmVzcG9uc2VS
ZWNlaXZlZChBcGR1UmVzcG9uc2UmJiBhCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKG1faXNBcHBJZCkKLSAgICAgICAgICAgIHJlc3BvbnNlLT5hcHBpZCA9IG1f
aXNBcHBJZDsKKyAgICAgICAgICAgIHJlc3BvbnNlLT5zZXRFeHRlbnNpb25zKHsgbV9pc0FwcElk
IH0pOwogCi0gICAgICAgIHJlY2VpdmVSZXNwb25kKFdURk1vdmUoKnJlc3BvbnNlKSk7CisgICAg
ICAgIHJlY2VpdmVSZXNwb25kKHJlc3BvbnNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIGNhc2UgQXBkdVJlc3BvbnNlOjpTdGF0dXM6OlNXX0NPTkRJVElP
TlNfTk9UX1NBVElTRklFRDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvci5jcHAKaW5kZXggZTYxMzgzYzRlMGE0OGY4MmMxMzFiODJkNmQwY2I1ODVjYTlmZDgw
YS4uNDE1Njk2NWJjYTUzNjhhNjk3MmFiZDY1YmE0NGYyNmFlOTE3MWQ0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKQEAgLTMxLDggKzMxLDgg
QEAKICNpbmNsdWRlICJXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9BdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Q
dWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHVibGljS2V5Q3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdp
bi5oPgogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggNDg1ZDFkYjVkMmU2NmM5NWE3MmZkY2FiZDEzZWU2YjUwZjBiM2I5ZC4uYjM1MWU3ZTgzOWUy
NGFjODFhNTc2NGRiNzZhZmUwY2NmZDVlMzVjNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTEyLTA5ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBDb21i
aW5lIEF1dGhlbnRpY2F0b3JSZXNwb25zZSBhbmQgUHVibGljS2V5Q3JlZGVudGlhbERhdGEKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDc4MworICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNTc3ODExODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3Rh
cFJlc3BvbnNlVGVzdC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAg
ICAgVXBkYXRlcyB0ZXN0cyBhY2NvcmRpbmdseS4KKwogMjAxOS0xMi0wOSAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlLWRpc2FibGUgVExT
MS4wIGFuZCBUTFMxLjEgYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0N0YXBSZXNwb25zZVRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0N0YXBSZXNwb25zZVRlc3QuY3BwCmluZGV4IGNhY2E1OThkY2U2YWNj
MmVmY2RkOTZlZDg2YWQ2Zjk1NWMzMTEzZDIuLjQwOGM5NGVkZjc0NDYyM2VlMmExMDM2NWYxNzFj
OTcwMjM2MzVhMzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9DdGFwUmVzcG9uc2VUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvQ3RhcFJlc3BvbnNlVGVzdC5jcHAKQEAgLTM1NSw3ICszNTUsNyBAQCBURVNUKENUQVBS
ZXNwb25zZVRlc3QsIFRlc3RSZWFkTWFrZUNyZWRlbnRpYWxSZXNwb25zZSkKIHsKICAgICBhdXRv
IG1ha2VDcmVkZW50aWFsUmVzcG9uc2UgPSByZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVzcG9uc2Uo
Y29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtUZXN0TWFrZUNyZWRlbnRpYWxSZXNwb25z
ZSwgc2l6ZW9mKFRlc3REYXRhOjprVGVzdE1ha2VDcmVkZW50aWFsUmVzcG9uc2UpKSk7CiAgICAg
QVNTRVJUX1RSVUUobWFrZUNyZWRlbnRpYWxSZXNwb25zZSk7Ci0gICAgYXV0byBjYm9yQXR0ZXN0
YXRpb25PYmplY3QgPSBjYm9yOjpDQk9SUmVhZGVyOjpyZWFkKGNvbnZlcnRCeXRlc1RvVmVjdG9y
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG1ha2VDcmVkZW50aWFsUmVzcG9uc2UtPmF0dGVz
dGF0aW9uT2JqZWN0LT5kYXRhKCkpLCBtYWtlQ3JlZGVudGlhbFJlc3BvbnNlLT5hdHRlc3RhdGlv
bk9iamVjdC0+Ynl0ZUxlbmd0aCgpKSk7CisgICAgYXV0byBjYm9yQXR0ZXN0YXRpb25PYmplY3Qg
PSBjYm9yOjpDQk9SUmVhZGVyOjpyZWFkKGNvbnZlcnRCeXRlc1RvVmVjdG9yKHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KG1ha2VDcmVkZW50aWFsUmVzcG9uc2UtPmF0dGVzdGF0aW9uT2JqZWN0
KCktPmRhdGEoKSksIG1ha2VDcmVkZW50aWFsUmVzcG9uc2UtPmF0dGVzdGF0aW9uT2JqZWN0KCkt
PmJ5dGVMZW5ndGgoKSkpOwogICAgIEFTU0VSVF9UUlVFKGNib3JBdHRlc3RhdGlvbk9iamVjdCk7
CiAgICAgQVNTRVJUX1RSVUUoY2JvckF0dGVzdGF0aW9uT2JqZWN0LT5pc01hcCgpKTsKIApAQCAt
MzkzLDggKzM5Myw4IEBAIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFJlYWRNYWtlQ3JlZGVu
dGlhbFJlc3BvbnNlKQogICAgIEFTU0VSVF9FUShjZXJ0aWZpY2F0ZS5nZXRBcnJheSgpLnNpemUo
KSwgMXUpOwogICAgIEFTU0VSVF9UUlVFKGNlcnRpZmljYXRlLmdldEFycmF5KClbMF0uaXNCeXRl
U3RyaW5nKCkpOwogICAgIEVYUEVDVF9FUShjZXJ0aWZpY2F0ZS5nZXRBcnJheSgpWzBdLmdldEJ5
dGVTdHJpbmcoKSwgY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtDdGFwMk1ha2VDcmVk
ZW50aWFsQ2VydGlmaWNhdGUsIHNpemVvZihUZXN0RGF0YTo6a0N0YXAyTWFrZUNyZWRlbnRpYWxD
ZXJ0aWZpY2F0ZSkpKTsKLSAgICBFWFBFQ1RfRVEobWFrZUNyZWRlbnRpYWxSZXNwb25zZS0+cmF3
SWQtPmJ5dGVMZW5ndGgoKSwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcDJNYWtlQ3JlZGVudGlhbENy
ZWRlbnRpYWxJZCkpOwotICAgIEVYUEVDVF9FUShtZW1jbXAobWFrZUNyZWRlbnRpYWxSZXNwb25z
ZS0+cmF3SWQtPmRhdGEoKSwgVGVzdERhdGE6OmtDdGFwMk1ha2VDcmVkZW50aWFsQ3JlZGVudGlh
bElkLCBzaXplb2YoVGVzdERhdGE6OmtDdGFwMk1ha2VDcmVkZW50aWFsQ3JlZGVudGlhbElkKSks
IDApOworICAgIEVYUEVDVF9FUShtYWtlQ3JlZGVudGlhbFJlc3BvbnNlLT5yYXdJZCgpLT5ieXRl
TGVuZ3RoKCksIHNpemVvZihUZXN0RGF0YTo6a0N0YXAyTWFrZUNyZWRlbnRpYWxDcmVkZW50aWFs
SWQpKTsKKyAgICBFWFBFQ1RfRVEobWVtY21wKG1ha2VDcmVkZW50aWFsUmVzcG9uc2UtPnJhd0lk
KCktPmRhdGEoKSwgVGVzdERhdGE6OmtDdGFwMk1ha2VDcmVkZW50aWFsQ3JlZGVudGlhbElkLCBz
aXplb2YoVGVzdERhdGE6OmtDdGFwMk1ha2VDcmVkZW50aWFsQ3JlZGVudGlhbElkKSksIDApOwog
fQogCiAvLyBMZXZlcmFnaW5nIGV4YW1wbGUgNSBvZiBzZWN0aW9uIDYuMSBvZiB0aGUgQ1RBUCBz
cGVjLgpAQCAtNDA0LDEwICs0MDQsMTAgQEAgVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UmVh
ZEdldEFzc2VydGlvblJlc3BvbnNlKQogICAgIGF1dG8gZ2V0QXNzZXJ0aW9uUmVzcG9uc2UgPSBy
ZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGNvbnZlcnRCeXRlc1RvVmVjdG9yKFRlc3REYXRh
OjprRGV2aWNlR2V0QXNzZXJ0aW9uUmVzcG9uc2UsIHNpemVvZihUZXN0RGF0YTo6a0RldmljZUdl
dEFzc2VydGlvblJlc3BvbnNlKSkpOwogICAgIEFTU0VSVF9UUlVFKGdldEFzc2VydGlvblJlc3Bv
bnNlKTsKIAotICAgIEVYUEVDVF9FUShnZXRBc3NlcnRpb25SZXNwb25zZS0+YXV0aGVudGljYXRv
ckRhdGEtPmJ5dGVMZW5ndGgoKSwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcDJHZXRBc3NlcnRpb25B
dXRoRGF0YSkpOwotICAgIEVYUEVDVF9FUShtZW1jbXAoZ2V0QXNzZXJ0aW9uUmVzcG9uc2UtPmF1
dGhlbnRpY2F0b3JEYXRhLT5kYXRhKCksIFRlc3REYXRhOjprQ3RhcDJHZXRBc3NlcnRpb25BdXRo
RGF0YSwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcDJHZXRBc3NlcnRpb25BdXRoRGF0YSkpLCAwKTsK
LSAgICBFWFBFQ1RfRVEoZ2V0QXNzZXJ0aW9uUmVzcG9uc2UtPnNpZ25hdHVyZS0+Ynl0ZUxlbmd0
aCgpLCBzaXplb2YoVGVzdERhdGE6OmtDdGFwMkdldEFzc2VydGlvblNpZ25hdHVyZSkpOwotICAg
IEVYUEVDVF9FUShtZW1jbXAoZ2V0QXNzZXJ0aW9uUmVzcG9uc2UtPnNpZ25hdHVyZS0+ZGF0YSgp
LCBUZXN0RGF0YTo6a0N0YXAyR2V0QXNzZXJ0aW9uU2lnbmF0dXJlLCBzaXplb2YoVGVzdERhdGE6
OmtDdGFwMkdldEFzc2VydGlvblNpZ25hdHVyZSkpLCAwKTsKKyAgICBFWFBFQ1RfRVEoZ2V0QXNz
ZXJ0aW9uUmVzcG9uc2UtPmF1dGhlbnRpY2F0b3JEYXRhKCktPmJ5dGVMZW5ndGgoKSwgc2l6ZW9m
KFRlc3REYXRhOjprQ3RhcDJHZXRBc3NlcnRpb25BdXRoRGF0YSkpOworICAgIEVYUEVDVF9FUSht
ZW1jbXAoZ2V0QXNzZXJ0aW9uUmVzcG9uc2UtPmF1dGhlbnRpY2F0b3JEYXRhKCktPmRhdGEoKSwg
VGVzdERhdGE6OmtDdGFwMkdldEFzc2VydGlvbkF1dGhEYXRhLCBzaXplb2YoVGVzdERhdGE6OmtD
dGFwMkdldEFzc2VydGlvbkF1dGhEYXRhKSksIDApOworICAgIEVYUEVDVF9FUShnZXRBc3NlcnRp
b25SZXNwb25zZS0+c2lnbmF0dXJlKCktPmJ5dGVMZW5ndGgoKSwgc2l6ZW9mKFRlc3REYXRhOjpr
Q3RhcDJHZXRBc3NlcnRpb25TaWduYXR1cmUpKTsKKyAgICBFWFBFQ1RfRVEobWVtY21wKGdldEFz
c2VydGlvblJlc3BvbnNlLT5zaWduYXR1cmUoKS0+ZGF0YSgpLCBUZXN0RGF0YTo6a0N0YXAyR2V0
QXNzZXJ0aW9uU2lnbmF0dXJlLCBzaXplb2YoVGVzdERhdGE6OmtDdGFwMkdldEFzc2VydGlvblNp
Z25hdHVyZSkpLCAwKTsKIH0KIAogLy8gVGVzdCB0aGF0IFUyRiByZWdpc3RlciByZXNwb25zZSBp
cyBwcm9wZXJseSBwYXJzZWQuCkBAIC00MTUsMTIgKzQxNSwxMSBAQCBURVNUKENUQVBSZXNwb25z
ZVRlc3QsIFRlc3RQYXJzZVJlZ2lzdGVyUmVzcG9uc2VEYXRhKQogewogICAgIGF1dG8gcmVzcG9u
c2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBj
b252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlLCBz
aXplb2YoVGVzdERhdGE6OmtUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZSkpKTsKICAgICBBU1NFUlRf
VFJVRShyZXNwb25zZSk7Ci0gICAgRVhQRUNUX0VRKHJlc3BvbnNlLT5yYXdJZC0+Ynl0ZUxlbmd0
aCgpLCBzaXplb2YoVGVzdERhdGE6OmtVMmZTaWduS2V5SGFuZGxlKSk7Ci0gICAgRVhQRUNUX0VR
KG1lbWNtcChyZXNwb25zZS0+cmF3SWQtPmRhdGEoKSwgVGVzdERhdGE6OmtVMmZTaWduS2V5SGFu
ZGxlLCBzaXplb2YoVGVzdERhdGE6OmtVMmZTaWduS2V5SGFuZGxlKSksIDApOwotICAgIEVYUEVD
VF9UUlVFKHJlc3BvbnNlLT5pc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKTsKKyAg
ICBFWFBFQ1RfRVEocmVzcG9uc2UtPnJhd0lkKCktPmJ5dGVMZW5ndGgoKSwgc2l6ZW9mKFRlc3RE
YXRhOjprVTJmU2lnbktleUhhbmRsZSkpOworICAgIEVYUEVDVF9FUShtZW1jbXAocmVzcG9uc2Ut
PnJhd0lkKCktPmRhdGEoKSwgVGVzdERhdGE6OmtVMmZTaWduS2V5SGFuZGxlLCBzaXplb2YoVGVz
dERhdGE6OmtVMmZTaWduS2V5SGFuZGxlKSksIDApOwogICAgIGF1dG8gZXhwZWN0ZWRBdHRlc3Rh
dGlvbk9iamVjdCA9IGdldFRlc3RBdHRlc3RhdGlvbk9iamVjdEJ5dGVzKCk7Ci0gICAgRVhQRUNU
X0VRKHJlc3BvbnNlLT5hdHRlc3RhdGlvbk9iamVjdC0+Ynl0ZUxlbmd0aCgpLCBleHBlY3RlZEF0
dGVzdGF0aW9uT2JqZWN0LnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRKG1lbWNtcChyZXNwb25zZS0+
YXR0ZXN0YXRpb25PYmplY3QtPmRhdGEoKSwgZXhwZWN0ZWRBdHRlc3RhdGlvbk9iamVjdC5kYXRh
KCksIGV4cGVjdGVkQXR0ZXN0YXRpb25PYmplY3Quc2l6ZSgpKSwgMCk7CisgICAgRVhQRUNUX0VR
KHJlc3BvbnNlLT5hdHRlc3RhdGlvbk9iamVjdCgpLT5ieXRlTGVuZ3RoKCksIGV4cGVjdGVkQXR0
ZXN0YXRpb25PYmplY3Quc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEobWVtY21wKHJlc3BvbnNlLT5h
dHRlc3RhdGlvbk9iamVjdCgpLT5kYXRhKCksIGV4cGVjdGVkQXR0ZXN0YXRpb25PYmplY3QuZGF0
YSgpLCBleHBlY3RlZEF0dGVzdGF0aW9uT2JqZWN0LnNpemUoKSksIDApOwogfQogCiAvLyBUZXN0
IG1hbGZvcm1lZCB1c2VyIHB1YmxpYyBrZXkuCkBAIC01MjIsMTMgKzUyMSwxMiBAQCBURVNUKENU
QVBSZXNwb25zZVRlc3QsIFRlc3RQYXJzZVNpZ25SZXNwb25zZURhdGEpCiB7CiAgICAgYXV0byBy
ZXNwb25zZSA9IHJlYWRVMmZTaWduUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwg
Z2V0VGVzdENyZWRlbnRpYWxSYXdJZEJ5dGVzKCksIGdldFRlc3RTaWduUmVzcG9uc2UoKSk7CiAg
ICAgQVNTRVJUX1RSVUUocmVzcG9uc2UpOwotICAgIEVYUEVDVF9FUShyZXNwb25zZS0+cmF3SWQt
PmJ5dGVMZW5ndGgoKSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSkpOwotICAg
IEVYUEVDVF9FUShtZW1jbXAocmVzcG9uc2UtPnJhd0lkLT5kYXRhKCksIFRlc3REYXRhOjprVTJm
U2lnbktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSkpLCAwKTsK
LSAgICBFWFBFQ1RfRkFMU0UocmVzcG9uc2UtPmlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2UpOwotICAgIEVYUEVDVF9FUShyZXNwb25zZS0+YXV0aGVudGljYXRvckRhdGEtPmJ5dGVM
ZW5ndGgoKSwgc2l6ZW9mKFRlc3REYXRhOjprVGVzdFNpZ25BdXRoZW50aWNhdG9yRGF0YSkpOwot
ICAgIEVYUEVDVF9FUShtZW1jbXAocmVzcG9uc2UtPmF1dGhlbnRpY2F0b3JEYXRhLT5kYXRhKCks
IFRlc3REYXRhOjprVGVzdFNpZ25BdXRoZW50aWNhdG9yRGF0YSwgc2l6ZW9mKFRlc3REYXRhOjpr
VGVzdFNpZ25BdXRoZW50aWNhdG9yRGF0YSkpLCAwKTsKLSAgICBFWFBFQ1RfRVEocmVzcG9uc2Ut
PnNpZ25hdHVyZS0+Ynl0ZUxlbmd0aCgpLCBzaXplb2YoVGVzdERhdGE6OmtVMmZTaWduYXR1cmUp
KTsKLSAgICBFWFBFQ1RfRVEobWVtY21wKHJlc3BvbnNlLT5zaWduYXR1cmUtPmRhdGEoKSwgVGVz
dERhdGE6OmtVMmZTaWduYXR1cmUsIHNpemVvZihUZXN0RGF0YTo6a1UyZlNpZ25hdHVyZSkpLCAw
KTsKKyAgICBFWFBFQ1RfRVEocmVzcG9uc2UtPnJhd0lkKCktPmJ5dGVMZW5ndGgoKSwgc2l6ZW9m
KFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSkpOworICAgIEVYUEVDVF9FUShtZW1jbXAocmVz
cG9uc2UtPnJhd0lkKCktPmRhdGEoKSwgVGVzdERhdGE6OmtVMmZTaWduS2V5SGFuZGxlLCBzaXpl
b2YoVGVzdERhdGE6OmtVMmZTaWduS2V5SGFuZGxlKSksIDApOworICAgIEVYUEVDVF9FUShyZXNw
b25zZS0+YXV0aGVudGljYXRvckRhdGEoKS0+Ynl0ZUxlbmd0aCgpLCBzaXplb2YoVGVzdERhdGE6
OmtUZXN0U2lnbkF1dGhlbnRpY2F0b3JEYXRhKSk7CisgICAgRVhQRUNUX0VRKG1lbWNtcChyZXNw
b25zZS0+YXV0aGVudGljYXRvckRhdGEoKS0+ZGF0YSgpLCBUZXN0RGF0YTo6a1Rlc3RTaWduQXV0
aGVudGljYXRvckRhdGEsIHNpemVvZihUZXN0RGF0YTo6a1Rlc3RTaWduQXV0aGVudGljYXRvckRh
dGEpKSwgMCk7CisgICAgRVhQRUNUX0VRKHJlc3BvbnNlLT5zaWduYXR1cmUoKS0+Ynl0ZUxlbmd0
aCgpLCBzaXplb2YoVGVzdERhdGE6OmtVMmZTaWduYXR1cmUpKTsKKyAgICBFWFBFQ1RfRVEobWVt
Y21wKHJlc3BvbnNlLT5zaWduYXR1cmUoKS0+ZGF0YSgpLCBUZXN0RGF0YTo6a1UyZlNpZ25hdHVy
ZSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2lnbmF0dXJlKSksIDApOwogfQogCiBURVNUKENUQVBS
ZXNwb25zZVRlc3QsIFRlc3RQYXJzZVUyZlNpZ25XaXRoTnVsbEtleUhhbmRsZSkK
</data>
<flag name="review"
          id="401089"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385441</attachid>
            <date>2019-12-11 14:33:14 -0800</date>
            <delta_ts>2019-12-11 15:19:17 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-190783-20191211143314.patch</filename>
            <type>text/plain</type>
            <size>109226</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDFhZWU0ODUzYjAwNGJl
OTYyYzcwZjdjNjQ1OThkYzUwNDI1YTQ1NC4uZTY1YTIwMWM1ODUyMDJmODhiYWE4YmI1OTY1NzUz
ZGJiZTg0NDhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDE5LTEyLTA5ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBDb21i
aW5lIEF1dGhlbnRpY2F0b3JSZXNwb25zZSBhbmQgUHVibGljS2V5Q3JlZGVudGlhbERhdGEKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDc4MworICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNTc3ODExODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJl
bnQgRnVsZ2hhbS4KKworICAgICAgICBUaGlzIHBhdGNoIGNvbWJpbmVzIEF1dGhlbnRpY2F0b3JS
ZXNwb25zZSBhbmQgUHVibGljS2V5Q3JlZGVudGlhbERhdGEsIGFuZCB0aGVyZWZvcmUgcmVuYW1l
cworICAgICAgICBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSB0byBBdXRoZW50aWNhdG9yUmVzcG9u
c2VEYXRhIGFzIHdlbGwuIFRoZSBjb21wbGV4aXR5IG9mIFdlYktpdCdzIENUQVAKKyAgICAgICAg
aW1wbGVtZW50YXRpb24gaGFzIHJlYWNoZWQgdGhlIHBvaW50IHRoYXQgUHVibGljS2V5Q3JlZGVu
dGlhbERhdGEgaXMgbm90IGFwcHJvcHJpYXRlIHRvIHJlcHJlc2VudAorICAgICAgICBhbGwgdGhl
IGRpZmZlcmVudCB0eXBlIG9mIHJlc3BvbnNlcyBmcm9tIGF1dGhlbnRpY2F0b3JzIGFueW1vcmUu
IEZvciBleGFtcGxlLCBhdXRoZW50aWNhdG9yR2V0TmV4dEFzc2VydGlvbgorICAgICAgICBkZXBl
bmRzIG9uIHRoZSBudW1iZXJPZkNyZWRlbnRpYWxzIG1lbWJlciBmcm9tIGF1dGhlbnRpY2F0b3JH
ZXRBc3NlcnRpb24gcmVzcG9uc2UgdG8gZnVuY3Rpb24sIGJ1dAorICAgICAgICBudW1iZXJPZkNy
ZWRlbnRpYWxzIGlzIG5vdCB1c2VkIGFueXdoZXJlIGVsc2UuIFRoZXJlZm9yZSwgYSBwb2x5bW9y
cGhpYyB0eXBlIGlzIG5lZWRlZCB0bworICAgICAgICByZXByZXNlbnQgZGlmZmVyZW50IHJlc3Bv
bnNlcyBmcm9tIGF1dGhlbnRpY2F0b3JzIGluc3RlYWQgb2YgYW4gdW5pZm9ybSBvbmUsIGkuZS4s
IFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLgorCisgICAgICAgIEF1dGhlbnRpY2F0b3JSZXNwb25z
ZSBzZWVtcyB0byBiZSB0aGUgYmVzdCBmaXQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBzb21lIGxpbWl0
YXRpb25zOgorICAgICAgICAxKSBpdCBpcyBhIFdlYklETCBpbnRlcmZhY2UsIGFuZCB0aGVyZWZv
cmUgaXMgUmVmQ291bnRlZC4gUmVmQ291bnRlZCBvYmplY3RzIGNhbm5vdCBiZSBzZXJpYWxpemVk
IHRocm91Z2gKKyAgICAgICAgSVBDLiBUbyBzb2x2ZSB0aGlzLCBBdXRoZW50aWNhdG9yUmVzcG9u
c2VEYXRhIChQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSkgaXMga2VwdCBhcyBhbiBpbnRlcm1lZGlh
dGUgdHlwZQorICAgICAgICB0aGF0IGlzIG9ubHkgdXNlZCBkdXJpbmcgSVBDLgorICAgICAgICAy
KSBpdCBkb2Vzbid0IGNvbnRhaW4gYWxsIHRoZSBpbmZvcm1hdGlvbiBmcm9tIGFuIGFjdHVhbCBh
dXRoZW50aWNhdG9yIHJlc3BvbnNlLiBUbyBzb2x2ZSB0aGlzLCBpdAorICAgICAgICBoYXMgYmVl
biBlbmxhcmdlZCB0byBpbmNsdWRlIGFsbCBtZW1iZXJzIGZyb20gUHVibGljS2V5Q3JlZGVudGlh
bC4gQWZ0ZXIgdGhpcyBwYXRjaCwgUHVibGljS2V5Q3JlZGVudGlhbAorICAgICAgICB3aWxsIGJl
IGEgdGhpbiB3cmFwcGVyIG9uIHRvcCBvZiBBdXRoZW50aWNhdG9yUmVzcG9uc2UuCisKKyAgICAg
ICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaWRs
LgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xp
ZW50T3V0cHV0cy5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vUHVibGljS2V5Q3JlZGVudGlhbC5pZGwuCisgICAgICAgIFRoaXMgaXMgc2VwYXJhdGVkIGZy
b20gUHVibGljS2V5Q3JlZGVudGlhbCBzdWNoIHRoYXQgQXV0aGVudGljYXRvclJlc3BvbnNlIGNh
biBpbmNsdWRlIGl0LgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSk6
CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmRhdGEg
Y29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlLmg6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2U6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSk6IERlbGV0
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25S
ZXNwb25zZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaC4KKyAgICAgICAgKFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlv
blJlc3BvbnNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmg6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpBdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yOjpjcmVhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZSBjb25zdCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQu
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5jcHA6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3Jl
ZGVudGlhbC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2U6OnRy
eUNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2U6OmRhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlOjpleHRlbnNp
b25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZTo6c2V0
Q2xpZW50RGF0YUpTT04pOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNl
OjpjbGllbnREYXRhSlNPTiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9y
UmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JSZXNwb25zZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JSZXNwb25zZTo6cmF3SWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGlj
YXRvclJlc3BvbnNlOjpzZXRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JSZXNwb25zZTo6QXV0aGVudGljYXRvclJlc3BvbnNlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZTo6Y2xpZW50RGF0YUpTT04gY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNl
RGF0YS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJs
aWNLZXlDcmVkZW50aWFsRGF0YS5oLgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvclJl
c3BvbnNlRGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JSZXNwb25zZURhdGE6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9QdWJs
aWNLZXlDcmVkZW50aWFsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRp
YWw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsOjpyYXdJ
ZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsOjpnZXRDbGll
bnRFeHRlbnNpb25SZXN1bHRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY0tleUNy
ZWRlbnRpYWw6OlB1YmxpY0tleUNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViQ29yZTo6UHVibGlj
S2V5Q3JlZGVudGlhbDo6dHJ5Q3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L1B1YmxpY0tleUNyZWRlbnRpYWwuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlk
by9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5jcHA6CisgICAgICAgIChmaWRvOjpyZWFkQ1RBUE1h
a2VDcmVkZW50aWFsUmVzcG9uc2UpOgorICAgICAgICAoZmlkbzo6cmVhZENUQVBHZXRBc3NlcnRp
b25SZXNwb25zZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3Bv
bnNlQ29udmVydGVyLmg6CisgICAgICAgIEEgbW9yZSBhcHByb3ByaWF0ZSBkZXJpdmVkIHR5cGUg
b2YgQXV0aGVudGljYXRvclJlc3BvbnNlIGlzIHVzZWQgdG8gcmVwbGFjZSBQdWJsaWNLZXlDcmVk
ZW50aWFsRGF0YS4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VD
b252ZXJ0ZXIuY3BwOgorICAgICAgICAoZmlkbzo6cmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UpOgor
ICAgICAgICAoZmlkbzo6cmVhZFUyZlNpZ25SZXNwb25zZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmg6CisgICAgICAgIEEgbW9yZSBhcHBy
b3ByaWF0ZSBkZXJpdmVkIHR5cGUgb2YgQXV0aGVudGljYXRvclJlc3BvbnNlIGlzIHVzZWQgdG8g
cmVwbGFjZSBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YS4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMTIt
MTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbQmluZGluZ3Nd
IENyb3NzLW9yaWdpbiBjaGVja3MgaGFwcGVuIHRvbyBsYXRlIGZvciBvdmVybG9hZGVkIG1ldGhv
ZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggNDMyMTNhZGQ2ZGQ5OTM0ODc3ZDA2N2MwYTQxZGJjMzBlNzIzOGY2MC4u
ZjhmNDJhYzg0ZjFlN2I1NGM3ZWNmNTM5YTY2MmQ4MmJmYTc2MmIyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAxOS0xMi0wOSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29t
PgorCisgICAgICAgIFtXZWJBdXRobl0gQ29tYmluZSBBdXRoZW50aWNhdG9yUmVzcG9uc2UgYW5k
IFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTA3ODMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3NzgxMTgz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgQ29kZSBp
biBXZWJLaXQgYXJlIGNoYW5nZWQgdG8gdXNlIEF1dGhlbnRpY2F0b3JSZXNwb25zZSBhbmQgaXRz
IHN1YnR5cGVzLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0b3IuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRvck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdl
cjo6cmVzcG9uZFJlY2VpdmVkKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvck1hbmFn
ZXI6Omludm9rZVBlbmRpbmdDb21wbGV0aW9uSGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbToKKyAg
ICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFs
QWZ0ZXJBdHRlc3RlZCk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29u
dGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJDb25zZW50ZWQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpoYW5k
bGVSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW46
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRp
Y2F0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpDdGFwQXV0aGVudGljYXRvcjo6Y29udGludWVN
YWtlQ3JlZGVudGlhbEFmdGVyUmVzcG9uc2VSZWNlaXZlZCBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OkN0YXBBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9uc2VS
ZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJm
QXV0aGVudGljYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlUyZkF1dGhlbnRpY2F0b3I6OmNv
bnRpbnVlUmVnaXN0ZXJDb21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdl
YktpdDo6VTJmQXV0aGVudGljYXRvcjo6Y29udGludWVTaWduQ29tbWFuZEFmdGVyUmVzcG9uc2VS
ZWNlaXZlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOgorCiAyMDE5LTEyLTExICBKaWV3ZW4gVGFuICA8amll
d2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYSBuaXQgYWZ0ZXIgcjI1
MzM2NgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA1MjIwNjg3MzFjZWUxNjVmY2UwMmUwZTZhOGRm
OGM5NWRjMWQxNTM0Li5jNzQzZTRkMzA5NjE0MjM0YmZlMGVjMDliNGFiMTE1M2RlMzlhMDliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDYxLDYgKzQ2MSw3IEBAIHNldChXZWJDb3JlX05PTl9T
VkdfSURMX0ZJTEVTCiAKICAgICBNb2R1bGVzL3dlYmF1dGhuL0F0dGVzdGF0aW9uQ29udmV5YW5j
ZVByZWZlcmVuY2UuaWRsCiAgICAgTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVu
c2lvbnNDbGllbnRJbnB1dHMuaWRsCisgICAgTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlv
bkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmlkbAogICAgIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlLmlkbAogICAgIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaWRsCiAgICAgTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yUmVzcG9uc2UuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdAppbmRleCAwMGJkYjk1YmQ1NWIwNTNkMGMxYTA3MTQzOTVlOTg2ZGU2
ZDFmMjZlLi5mM2ZjZGEzNDU1NTNiNDhlZjMzNTRmZjRkNmMyODhkOWU0Y2I2ZDczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTMxNCw2
ICszMTQsNyBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nv
ck5vZGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2Rl
LmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdXRobi9BdHRlc3RhdGlvbkNvbnZleWFu
Y2VQcmVmZXJlbmNlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaWRsCiAkKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2UuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JSZXNwb25zZS5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggNmY1MTkwNGIyOTNlZGQyNTFiMTAzMDVjZmU5ODllYjcx
NGUzOTJlZi4uNDlmNmZmYjdkOTZmNjUxYjIyYjdiZmZmZWZlYTRjZjQxMjVjYjI2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysr
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTE2
MCw2ICsxNjAsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0F1ZGlvVHJhY2tNZWRpYVNvdXJjZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9UcmFja01lZGlhU291cmNlLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXV0aGVudGljYXRpb25FeHRlbnNp
b25zQ2xpZW50SW5wdXRzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdXRoZW50aWNhdGlvbkV4
dGVuc2lvbnNDbGllbnRPdXRwdXRzLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDBi
ZmFiZWNhNDMxZWUxMDZjZDhkN2EyN2Y0YmRmNjA2MmRiMDE4NWQuLjhjOWM2MmU5YzRhOWNhYTNh
ZmY5MWE5ZjFjMTY0YmQ3MmU0OGMzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpA
QCAtMzczLDYgKzM3Myw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvd2ViYXV0aG4vQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZS5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJ
bnB1dHMuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRp
b25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaWRsIFwKICAgICAkKFdlYkNv
cmUpL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaWRs
IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNl
LmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBlYjZhOGM1NTY2ZTEwYzc4N2I1MTQzYjdjMWM0
YTM0NTQ0NTkyZDdjLi44Yjg0N2UyYTE1ZWFmNmI5YWE2OWY1YTAyZTA4Zjk5ZTc2MjJkMGU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKQEAgLTExMiwxMSArMTEyLDEyIEBAIHNldChXZWJDb3JlX1BSSVZB
VEVfRlJBTUVXT1JLX0hFQURFUlMKIAogICAgIE1vZHVsZXMvd2ViYXV0aG4vQXR0ZXN0YXRpb25D
b252ZXlhbmNlUHJlZmVyZW5jZS5oCiAgICAgTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlv
bkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaAorICAgIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5oCiAgICAgTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuaAogICAgIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yQ2xpZW50LmgKKyAgICBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JS
ZXNwb25zZURhdGEuaAogICAgIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclRyYW5zcG9y
dC5oCiAgICAgTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zLmgKLSAgICBNb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxEYXRhLmgKICAg
ICBNb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yLmgKICAgICBN
b2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oCiAgICAg
TW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsVHlwZS5oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0Ns
aWVudE91dHB1dHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzNzJkMjRlNzU5N2E2
YzBhODE1YTU2NzI3YWI2NmM4MGVjZTZjOTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1
dHMuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoV0VCX0FVVEhOKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBBdXRoZW50
aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzIHsKKyAgICBPcHRpb25hbDxib29sPiBhcHBp
ZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmlkbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41MTJjMDc1N2VjMWNhNGE1OGI4NTU4NzFjYTQ1MGNhN2NlZWExNTIxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmlkbApAQCAtMCwwICsxLDMxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVVRITiwKKyAgICBKU0dlbmVyYXRlVG9KU09i
amVjdCwKK10gZGljdGlvbmFyeSBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRz
IHsKKyAgICBib29sZWFuIGFwcGlkOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41ZDMwMmY4YjhmYzM1ZGExZTZjOTQ2ZTExMjE5NjdkNjJlMDBhNDk5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSAiQXV0aGVu
dGljYXRvclJlc3BvbnNlRGF0YS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZTo6Y3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF1
dGhlbnRpY2F0b3JEYXRhLCBSZWY8QXJyYXlCdWZmZXI+JiYgc2lnbmF0dXJlLCBSZWZQdHI8QXJy
YXlCdWZmZXI+JiYgdXNlckhhbmRsZSwgT3B0aW9uYWw8QXV0aGVudGljYXRpb25FeHRlbnNpb25z
Q2xpZW50T3V0cHV0cz4mJiBleHRlbnNpb25zKQoreworICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9w
dFJlZigqbmV3IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShXVEZNb3ZlKHJhd0lkKSwg
V1RGTW92ZShhdXRoZW50aWNhdG9yRGF0YSksIFdURk1vdmUoc2lnbmF0dXJlKSwgV1RGTW92ZSh1
c2VySGFuZGxlKSkpOworICAgIGlmIChleHRlbnNpb25zKQorICAgICAgICByZXNwb25zZS0+c2V0
RXh0ZW5zaW9ucyhXVEZNb3ZlKCpleHRlbnNpb25zKSk7CisgICAgcmV0dXJuIHJlc3BvbnNlOwor
fQorCitSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0lkLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0b3JEYXRhLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIHNpZ25hdHVyZSwgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdXNlckhhbmRsZSkKK3sKKyAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+IHVzZXJoYW5kbGVCdWZmZXI7CisgICAgaWYgKCF1c2VySGFu
ZGxlLmlzRW1wdHkoKSkKKyAgICAgICAgdXNlcmhhbmRsZUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpj
cmVhdGUodXNlckhhbmRsZS5kYXRhKCksIHVzZXJIYW5kbGUuc2l6ZSgpKTsKKyAgICByZXR1cm4g
Y3JlYXRlKEFycmF5QnVmZmVyOjpjcmVhdGUocmF3SWQuZGF0YSgpLCByYXdJZC5zaXplKCkpLCBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhlbnRpY2F0b3JEYXRhLmRhdGEoKSwgYXV0aGVudGljYXRv
ckRhdGEuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShzaWduYXR1cmUuZGF0YSgpLCBzaWdu
YXR1cmUuc2l6ZSgpKSwgV1RGTW92ZSh1c2VyaGFuZGxlQnVmZmVyKSwgV1RGOjpudWxsb3B0KTsK
K30KKworQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYg
YXV0aGVudGljYXRvckRhdGEsIFJlZjxBcnJheUJ1ZmZlcj4mJiBzaWduYXR1cmUsIFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlKQorICAgIDogQXV0aGVudGljYXRvclJlc3BvbnNlKFdU
Rk1vdmUocmF3SWQpKQorICAgICwgbV9hdXRoZW50aWNhdG9yRGF0YShXVEZNb3ZlKGF1dGhlbnRp
Y2F0b3JEYXRhKSkKKyAgICAsIG1fc2lnbmF0dXJlKFdURk1vdmUoc2lnbmF0dXJlKSkKKyAgICAs
IG1fdXNlckhhbmRsZShXVEZNb3ZlKHVzZXJIYW5kbGUpKQoreworfQorCitBdXRoZW50aWNhdG9y
UmVzcG9uc2VEYXRhIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6ZGF0YSgpIGNvbnN0
Cit7CisgICAgYXV0byBkYXRhID0gQXV0aGVudGljYXRvclJlc3BvbnNlOjpkYXRhKCk7CisgICAg
ZGF0YS5pc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlID0gZmFsc2U7CisgICAgZGF0
YS5hdXRoZW50aWNhdG9yRGF0YSA9IG1fYXV0aGVudGljYXRvckRhdGEuY29weVJlZigpOworICAg
IGRhdGEuc2lnbmF0dXJlID0gbV9zaWduYXR1cmUuY29weVJlZigpOworICAgIGRhdGEudXNlckhh
bmRsZSA9IG1fdXNlckhhbmRsZTsKKyAgICByZXR1cm4gZGF0YTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZS5oCmluZGV4IDljNTY1MjA2ZDcxNTAzZWI3MzAxOTdiM2RmMTQ5ZjFiYzlm
MDY1Y2YuLmFiYTIyOWVjYmY0MjY4MzljMDMzOGMyY2Q1NGJiYjJmYzEwNWM3MDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaApAQCAtMzMsMTEgKzMzLDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UgOiBwdWJsaWMg
QXV0aGVudGljYXRvclJlc3BvbnNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEF1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiBjbGllbnRE
YXRhSlNPTiwgUmVmPEFycmF5QnVmZmVyPiYmIGF1dGhlbnRpY2F0b3JEYXRhLCBSZWY8QXJyYXlC
dWZmZXI+JiYgc2lnbmF0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZShXVEZNb3ZlKGNsaWVudERhdGFKU09OKSwgV1RGTW92ZShhdXRoZW50aWNhdG9yRGF0
YSksIFdURk1vdmUoc2lnbmF0dXJlKSwgV1RGTW92ZSh1c2VySGFuZGxlKSkpOwotICAgIH0KLQor
ICAgIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBjcmVhdGUoUmVm
PEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVudGljYXRvckRh
dGEsIFJlZjxBcnJheUJ1ZmZlcj4mJiBzaWduYXR1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiB1
c2VySGFuZGxlLCBPcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRz
PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZT4gY3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgYXV0aGVudGljYXRvckRhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
c2lnbmF0dXJlLCAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VySGFuZGxlKTsKICAgICB2aXJ0
dWFsIH5BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoKSA9IGRlZmF1bHQ7CiAKICAgICBB
cnJheUJ1ZmZlciogYXV0aGVudGljYXRvckRhdGEoKSBjb25zdCB7IHJldHVybiBtX2F1dGhlbnRp
Y2F0b3JEYXRhLnB0cigpOyB9CkBAIC00NSwxNSArNDIsMTAgQEAgcHVibGljOgogICAgIEFycmF5
QnVmZmVyKiB1c2VySGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV91c2VySGFuZGxlLmdldCgpOyB9
CiAKIHByaXZhdGU6Ci0gICAgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJh
eUJ1ZmZlcj4mJiBjbGllbnREYXRhSlNPTiwgUmVmPEFycmF5QnVmZmVyPiYmIGF1dGhlbnRpY2F0
b3JEYXRhLCBSZWY8QXJyYXlCdWZmZXI+JiYgc2lnbmF0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYgdXNlckhhbmRsZSkKLSAgICAgICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShj
bGllbnREYXRhSlNPTikpCi0gICAgICAgICwgbV9hdXRoZW50aWNhdG9yRGF0YShXVEZNb3ZlKGF1
dGhlbnRpY2F0b3JEYXRhKSkKLSAgICAgICAgLCBtX3NpZ25hdHVyZShXVEZNb3ZlKHNpZ25hdHVy
ZSkpCi0gICAgICAgICwgbV91c2VySGFuZGxlKFdURk1vdmUodXNlckhhbmRsZSkpCi0gICAgewot
ICAgIH0KKyAgICBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVy
PiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmUHRyPEFycmF5
QnVmZmVyPiYmKTsKIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6
OkFzc2VydGlvbjsgfQorICAgIEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSgpIGNvbnN0
IGZpbmFsOwogCiAgICAgUmVmPEFycmF5QnVmZmVyPiBtX2F1dGhlbnRpY2F0b3JEYXRhOwogICAg
IFJlZjxBcnJheUJ1ZmZlcj4gbV9zaWduYXR1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkMmI4NzM0MDRkNjRjZDc2YmZlODFlYmNjMjljODU1
MzA5YzAyOTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcApAQCAtMCwwICsxLDYxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5j
bHVkZSAiQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1JlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxB
cnJheUJ1ZmZlcj4mJiBhdHRlc3RhdGlvbk9iamVjdCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZShXVEZNb3ZlKHJhd0lkKSwgV1RG
TW92ZShhdHRlc3RhdGlvbk9iamVjdCkpKTsKK30KKworUmVmPEF1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXR0ZXN0
YXRpb25PYmplY3QpCit7CisgICAgcmV0dXJuIGNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3JlYXRlKHJh
d0lkLmRhdGEoKSwgcmF3SWQuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdHRlc3RhdGlv
bk9iamVjdC5kYXRhKCksIGF0dGVzdGF0aW9uT2JqZWN0LnNpemUoKSkpOworfQorCitBdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2UoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0YXRp
b25PYmplY3QpCisgICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShyYXdJZCkpCisg
ICAgLCBtX2F0dGVzdGF0aW9uT2JqZWN0KFdURk1vdmUoYXR0ZXN0YXRpb25PYmplY3QpKQorewor
fQorCitBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlOjpkYXRhKCkgY29uc3QKK3sKKyAgICBhdXRvIGRhdGEgPSBBdXRoZW50aWNhdG9yUmVz
cG9uc2U6OmRhdGEoKTsKKyAgICBkYXRhLmlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2UgPSB0cnVlOworICAgIGRhdGEuYXR0ZXN0YXRpb25PYmplY3QgPSBtX2F0dGVzdGF0aW9uT2Jq
ZWN0LmNvcHlSZWYoKTsKKyAgICByZXR1cm4gZGF0YTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2UuaAppbmRleCAwNTM3ZDk3YzNiZDIwNmY5ZmJkMjcxNmVkMzU0MDliNjdlM2Vl
NjlhLi42MGNkNmU3YTFiMDQ1NGQ0YjdkOGUxMWU1ZGUzZWMyZmFiZmZkZjViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlv
blJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oCkBAIC0zMywyMyArMzMsMTggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSA6IHB1
YmxpYyBBdXRoZW50aWNhdG9yUmVzcG9uc2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QXV0
aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IGNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYg
Y2xpZW50RGF0YUpTT04sIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdHRlc3RhdGlvbk9iamVjdCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlv
blJlc3BvbnNlKFdURk1vdmUoY2xpZW50RGF0YUpTT04pLCBXVEZNb3ZlKGF0dGVzdGF0aW9uT2Jq
ZWN0KSkpOwotICAgIH0KKyAgICBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlPiBjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+
JiYgYXR0ZXN0YXRpb25PYmplY3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QXV0
aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IGNyZWF0ZShjb25zdCBWZWN0b3I8dWludDhf
dD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF0dGVzdGF0aW9uT2JqZWN0KTsKIAog
ICAgIHZpcnR1YWwgfkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKCkgPSBkZWZhdWx0
OwogCiAgICAgQXJyYXlCdWZmZXIqIGF0dGVzdGF0aW9uT2JqZWN0KCkgY29uc3QgeyByZXR1cm4g
bV9hdHRlc3RhdGlvbk9iamVjdC5wdHIoKTsgfQogCiBwcml2YXRlOgotICAgIEF1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiBjbGllbnREYXRhSlNPTiwg
UmVmPEFycmF5QnVmZmVyPiYmIGF0dGVzdGF0aW9uT2JqZWN0KQotICAgICAgICA6IEF1dGhlbnRp
Y2F0b3JSZXNwb25zZShXVEZNb3ZlKGNsaWVudERhdGFKU09OKSkKLSAgICAgICAgLCBtX2F0dGVz
dGF0aW9uT2JqZWN0KFdURk1vdmUoYXR0ZXN0YXRpb25PYmplY3QpKQotICAgIHsKLSAgICB9Cisg
ICAgQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmLCBS
ZWY8QXJyYXlCdWZmZXI+JiYpOwogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gVHlwZTo6QXR0ZXN0YXRpb247IH0KKyAgICBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIGRh
dGEoKSBjb25zdCBmaW5hbDsKIAogICAgIFJlZjxBcnJheUJ1ZmZlcj4gbV9hdHRlc3RhdGlvbk9i
amVjdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKaW5kZXggZjgwZjY0YmZjYmM5Y2IzYjRj
ODUxODNmMWZjNjFlYmQyNmVkZDkzZC4uNjg4ZDQ3YzA1ZmM4N2JjNDcyNmI4MWIzMmM1ODRiZmI4
ZDQzOTc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcApAQCAtMzIsMTIgKzMyLDEyIEBACiAj
aW5jbHVkZSAiQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiQXV0
aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JDbGllbnQuaCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRh
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJKU0Jhc2ljQ3JlZGVudGlhbC5o
IgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiUHVibGljS2V5
Q3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnMuaCIKLSNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oIgogI2luY2x1ZGUgIlB1
YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oIgogI2luY2x1ZGUgIlJlZ2lzdHJhYmxl
RG9tYWluLmgiCiAjaW5jbHVkZSAiTGVnYWN5U2NoZW1lUmVnaXN0cnkuaCIKQEAgLTE4NSwxNSAr
MTg1LDE1IEBAIHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpjcmVhdGUoY29uc3QgRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBQdWJsaWNLZXlDCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBhdXRvIGNhbGxiYWNrID0gW2NsaWVudERhdGFKc29uID0gV1RGTW92ZShjbGllbnRE
YXRhSnNvbiksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBhYm9ydFNpZ25hbCA9IFdURk1v
dmUoYWJvcnRTaWduYWwpXSAoUHVibGljS2V5Q3JlZGVudGlhbERhdGEmJiBkYXRhLCBFeGNlcHRp
b25EYXRhJiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBhdXRvIGNhbGxiYWNrID0gW2NsaWVu
dERhdGFKc29uID0gV1RGTW92ZShjbGllbnREYXRhSnNvbiksIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpLCBhYm9ydFNpZ25hbCA9IFdURk1vdmUoYWJvcnRTaWduYWwpXSAoQXV0aGVudGljYXRv
clJlc3BvbnNlRGF0YSYmIGRhdGEsIEV4Y2VwdGlvbkRhdGEmJiBleGNlcHRpb24pIG11dGFibGUg
ewogICAgICAgICBpZiAoYWJvcnRTaWduYWwgJiYgYWJvcnRTaWduYWwtPmFib3J0ZWQoKSkgewog
ICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgQWJvcnRFcnJvciwgIkFib3J0
ZWQgYnkgQWJvcnRTaWduYWwuIl9zIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgZGF0YS5jbGllbnREYXRhSlNPTiA9IFdURk1vdmUoY2xpZW50RGF0YUpzb24p
OwotICAgICAgICBpZiAoYXV0byBwdWJsaWNLZXlDcmVkZW50aWFsID0gUHVibGljS2V5Q3JlZGVu
dGlhbDo6dHJ5Q3JlYXRlKFdURk1vdmUoZGF0YSkpKSB7Ci0gICAgICAgICAgICBwcm9taXNlLnJl
c29sdmUocHVibGljS2V5Q3JlZGVudGlhbC5nZXQoKSk7CisgICAgICAgIGlmIChhdXRvIHJlc3Bv
bnNlID0gQXV0aGVudGljYXRvclJlc3BvbnNlOjp0cnlDcmVhdGUoV1RGTW92ZShkYXRhKSkpIHsK
KyAgICAgICAgICAgIHJlc3BvbnNlLT5zZXRDbGllbnREYXRhSlNPTihXVEZNb3ZlKGNsaWVudERh
dGFKc29uKSk7CisgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoUHVibGljS2V5Q3JlZGVudGlh
bDo6Y3JlYXRlKHJlc3BvbnNlLnJlbGVhc2VOb25OdWxsKCkpLnB0cigpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBBU1NFUlQoIWV4Y2VwdGlvbi5tZXNzYWdlLmlz
TnVsbCgpKTsKQEAgLTI1NiwxNSArMjU2LDE1IEBAIHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1bWVudCYgZG9jdW1lCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrID0gW2NsaWVudERhdGFK
c29uID0gV1RGTW92ZShjbGllbnREYXRhSnNvbiksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
LCBhYm9ydFNpZ25hbCA9IFdURk1vdmUoYWJvcnRTaWduYWwpXSAoUHVibGljS2V5Q3JlZGVudGlh
bERhdGEmJiBkYXRhLCBFeGNlcHRpb25EYXRhJiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBh
dXRvIGNhbGxiYWNrID0gW2NsaWVudERhdGFKc29uID0gV1RGTW92ZShjbGllbnREYXRhSnNvbiks
IHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBhYm9ydFNpZ25hbCA9IFdURk1vdmUoYWJvcnRT
aWduYWwpXSAoQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSYmIGRhdGEsIEV4Y2VwdGlvbkRhdGEm
JiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAoYWJvcnRTaWduYWwgJiYgYWJvcnRT
aWduYWwtPmFib3J0ZWQoKSkgewogICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9u
IHsgQWJvcnRFcnJvciwgIkFib3J0ZWQgYnkgQWJvcnRTaWduYWwuIl9zIH0pOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgZGF0YS5jbGllbnREYXRhSlNPTiA9IFdU
Rk1vdmUoY2xpZW50RGF0YUpzb24pOwotICAgICAgICBpZiAoYXV0byBwdWJsaWNLZXlDcmVkZW50
aWFsID0gUHVibGljS2V5Q3JlZGVudGlhbDo6dHJ5Q3JlYXRlKFdURk1vdmUoZGF0YSkpKSB7Ci0g
ICAgICAgICAgICBwcm9taXNlLnJlc29sdmUocHVibGljS2V5Q3JlZGVudGlhbC5nZXQoKSk7Cisg
ICAgICAgIGlmIChhdXRvIHJlc3BvbnNlID0gQXV0aGVudGljYXRvclJlc3BvbnNlOjp0cnlDcmVh
dGUoV1RGTW92ZShkYXRhKSkpIHsKKyAgICAgICAgICAgIHJlc3BvbnNlLT5zZXRDbGllbnREYXRh
SlNPTihXVEZNb3ZlKGNsaWVudERhdGFKc29uKSk7CisgICAgICAgICAgICBwcm9taXNlLnJlc29s
dmUoUHVibGljS2V5Q3JlZGVudGlhbDo6Y3JlYXRlKHJlc3BvbnNlLnJlbGVhc2VOb25OdWxsKCkp
LnB0cigpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBBU1NFUlQo
IWV4Y2VwdGlvbi5tZXNzYWdlLmlzTnVsbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVu
dC5oCmluZGV4IGQ2YmUzM2JlZWQ3YjA1Nzc2ZTRmNDlhOThkOTk5ZTY2NzJhZDlkNmIuLjUyM2Q0
NTk1MjE2YTZmOTU2NGI2NWIzNjU0ODIyMTkzZmNjYzVkNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JDbGllbnQuaApAQCAtMzgsMTEgKzM4LDExIEBAIGNsYXNzIERlZmVycmVkUHJvbWlzZTsK
IGNsYXNzIEZyYW1lOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKK3N0cnVjdCBBdXRoZW50aWNh
dG9yUmVzcG9uc2VEYXRhOwogc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnM7Ci1zdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbERhdGE7CiBzdHJ1Y3QgUHVibGljS2V5Q3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zOwogCi11c2luZyBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRh
JiYsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmJik+OwordXNpbmcgUmVxdWVzdENvbXBsZXRpb25I
YW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVz
cG9uc2VEYXRhJiYsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmJik+OwogdXNpbmcgUXVlcnlDb21w
bGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+OwogCiBjbGFzcyBX
RUJDT1JFX0VYUE9SVCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50PiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25z
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDRiNzEyOTNjZjNlZGU5NTM0MTEzNmM5NTkzNjRkMTYwMjdmNmVm
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvclJlc3BvbnNlLmNwcApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JSZXNwb25zZS5oIgorCisj
aWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZS5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmgi
CisjaW5jbHVkZSAiQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1JlZlB0cjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JSZXNw
b25zZTo6dHJ5Q3JlYXRlKEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmJiBkYXRhKQoreworICAg
IGlmICghZGF0YS5yYXdJZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoZGF0
YS5pc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKSB7CisgICAgICAgIGlmICghZGF0
YS5hdHRlc3RhdGlvbk9iamVjdCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
ICAgIHJldHVybiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKGRhdGEu
cmF3SWQucmVsZWFzZU5vbk51bGwoKSwgZGF0YS5hdHRlc3RhdGlvbk9iamVjdC5yZWxlYXNlTm9u
TnVsbCgpKTsKKyAgICB9CisKKyAgICBpZiAoIWRhdGEuYXV0aGVudGljYXRvckRhdGEgfHwgIWRh
dGEuc2lnbmF0dXJlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShkYXRhLnJhd0lkLnJlbGVhc2VOb25O
dWxsKCksIGRhdGEuYXV0aGVudGljYXRvckRhdGEucmVsZWFzZU5vbk51bGwoKSwgZGF0YS5zaWdu
YXR1cmUucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShkYXRhLnVzZXJIYW5kbGUpLCBBdXRoZW50
aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzIHsgZGF0YS5hcHBpZCB9KTsKK30KKworQXV0
aGVudGljYXRvclJlc3BvbnNlRGF0YSBBdXRoZW50aWNhdG9yUmVzcG9uc2U6OmRhdGEoKSBjb25z
dAoreworICAgIEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YTsKKyAgICBkYXRhLnJhd0lk
ID0gbV9yYXdJZC5jb3B5UmVmKCk7CisgICAgZGF0YS5hcHBpZCA9IG1fZXh0ZW5zaW9ucy5hcHBp
ZDsKKyAgICByZXR1cm4gZGF0YTsKK30KKworQXJyYXlCdWZmZXIqIEF1dGhlbnRpY2F0b3JSZXNw
b25zZTo6cmF3SWQoKSBjb25zdAoreworICAgIHJldHVybiBtX3Jhd0lkLnB0cigpOworfQorCit2
b2lkIEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6c2V0RXh0ZW5zaW9ucyhBdXRoZW50aWNhdGlvbkV4
dGVuc2lvbnNDbGllbnRPdXRwdXRzJiYgZXh0ZW5zaW9ucykKK3sKKyAgICBtX2V4dGVuc2lvbnMg
PSBXVEZNb3ZlKGV4dGVuc2lvbnMpOworfQorCitBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGll
bnRPdXRwdXRzIEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6ZXh0ZW5zaW9ucygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fZXh0ZW5zaW9uczsKK30KKwordm9pZCBBdXRoZW50aWNhdG9yUmVzcG9uc2U6
OnNldENsaWVudERhdGFKU09OKFJlZjxBcnJheUJ1ZmZlcj4mJiBjbGllbnREYXRhSlNPTikKK3sK
KyAgICBtX2NsaWVudERhdGFKU09OID0gV1RGTW92ZShjbGllbnREYXRhSlNPTik7Cit9CisKK0Fy
cmF5QnVmZmVyKiBBdXRoZW50aWNhdG9yUmVzcG9uc2U6OmNsaWVudERhdGFKU09OKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9jbGllbnREYXRhSlNPTi5nZXQoKTsKK30KKworQXV0aGVudGljYXRv
clJlc3BvbnNlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lk
KQorICAgIDogbV9yYXdJZChXVEZNb3ZlKHJhd0lkKSkKK3sKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oCmluZGV4
IGNiN2UwN2U1MmVjOTRkNGUxNDIwNGUxNjYzMzU5NmI5NWIxMDBlOWYuLjVhMzNlNzI1MDk5YjFi
ZWVhM2NiOTE4OWYxZDEyZTQ1YmE5MTQ4YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMTIgKzI3LDE1IEBACiAK
ICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlC
dWZmZXIuaD4KKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRz
LmgiCisjaW5jbHVkZSAiSURMVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdHJ1
Y3QgQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YTsKKwogY2xhc3MgQXV0aGVudGljYXRvclJlc3Bv
bnNlIDogcHVibGljIFJlZkNvdW50ZWQ8QXV0aGVudGljYXRvclJlc3BvbnNlPiB7CiBwdWJsaWM6
CiAgICAgZW51bSBjbGFzcyBUeXBlIHsKQEAgLTQwLDE4ICs0MywyNSBAQCBwdWJsaWM6CiAgICAg
ICAgIEF0dGVzdGF0aW9uCiAgICAgfTsKIAotICAgIGV4cGxpY2l0IEF1dGhlbnRpY2F0b3JSZXNw
b25zZShSZWY8QXJyYXlCdWZmZXI+JiYgY2xpZW50RGF0YUpTT04pCi0gICAgICAgIDogbV9jbGll
bnREYXRhSlNPTihXVEZNb3ZlKGNsaWVudERhdGFKU09OKSkKLSAgICB7Ci0gICAgfQorICAgIHN0
YXRpYyBSZWZQdHI8QXV0aGVudGljYXRvclJlc3BvbnNlPiB0cnlDcmVhdGUoQXV0aGVudGljYXRv
clJlc3BvbnNlRGF0YSYmKTsKICAgICB2aXJ0dWFsIH5BdXRoZW50aWNhdG9yUmVzcG9uc2UoKSA9
IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSgpIGNvbnN0OworCisgICAgV0VCQ09S
RV9FWFBPUlQgQXJyYXlCdWZmZXIqIHJhd0lkKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRFeHRlbnNpb25zKEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMm
Jik7CisgICAgQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cyBleHRlbnNpb25z
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRDbGllbnREYXRhSlNPTihSZWY8QXJyYXlCdWZmZXI+JiYp
OworICAgIEFycmF5QnVmZmVyKiBjbGllbnREYXRhSlNPTigpIGNvbnN0OwogCi0gICAgQXJyYXlC
dWZmZXIqIGNsaWVudERhdGFKU09OKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnREYXRhSlNPTi5w
dHIoKTsgfQorcHJvdGVjdGVkOgorICAgIEF1dGhlbnRpY2F0b3JSZXNwb25zZShSZWY8QXJyYXlC
dWZmZXI+JiYpOwogCiBwcml2YXRlOgotICAgIFJlZjxBcnJheUJ1ZmZlcj4gbV9jbGllbnREYXRh
SlNPTjsKKyAgICBSZWY8QXJyYXlCdWZmZXI+IG1fcmF3SWQ7CisgICAgQXV0aGVudGljYXRpb25F
eHRlbnNpb25zQ2xpZW50T3V0cHV0cyBtX2V4dGVuc2lvbnM7CisgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBtX2NsaWVudERhdGFKU09OOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVz
cG9uc2VEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0
b3JSZXNwb25zZURhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjA1NWEzMWQwNTI0OTgxY2JiMGNjMjQ3Yjc0
Zjc0YTQyNGRiNjEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmgKQEAgLTAsMCArMSwxODIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXV0aGVudGljYXRvclJlc3BvbnNl
OworCitzdHJ1Y3QgQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSB7CisgICAgYm9vbCBpc0F1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOworCisgICAgLy8gQXV0aGVudGljYXRvclJlc3Bv
bnNlCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiByYXdJZDsKKworICAgIC8vIEV4dGVuc2lvbnMK
KyAgICBPcHRpb25hbDxib29sPiBhcHBpZDsKKworICAgIC8vIEF1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhdHRlc3RhdGlvbk9iamVjdDsK
KworICAgIC8vIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZQorICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gYXV0aGVudGljYXRvckRhdGE7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBzaWdu
YXR1cmU7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiB1c2VySGFuZGxlOworCisgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxBdXRoZW50aWNhdG9yUmVzcG9uc2VE
YXRhPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3Zv
aWQgQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0Cit7CisgICAgaWYgKCFyYXdJZCkgeworICAgICAgICBlbmNvZGVyIDw8IHRydWU7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgZW5jb2RlciA8PCBmYWxzZTsKKworICAgIGVuY29kZXIg
PDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJhd0lkLT5ieXRlTGVuZ3RoKCkpOworICAgIGVuY29k
ZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KHJhd0lkLT5kYXRhKCkpLCByYXdJZC0+Ynl0ZUxlbmd0aCgpLCAxKTsKKworICAgIGVuY29kZXIg
PDwgaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTsKKworICAgIGlmIChpc0F1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlICYmIGF0dGVzdGF0aW9uT2JqZWN0KSB7CisgICAg
ICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGF0dGVzdGF0aW9uT2JqZWN0LT5i
eXRlTGVuZ3RoKCkpOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihhdHRlc3RhdGlvbk9iamVjdC0+ZGF0YSgpKSwg
YXR0ZXN0YXRpb25PYmplY3QtPmJ5dGVMZW5ndGgoKSwgMSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAoIWF1dGhlbnRpY2F0b3JEYXRhIHx8ICFzaWduYXR1cmUpCisgICAgICAg
IHJldHVybjsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihhdXRoZW50aWNh
dG9yRGF0YS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0
YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihhdXRoZW50aWNhdG9yRGF0YS0+ZGF0
YSgpKSwgYXV0aGVudGljYXRvckRhdGEtPmJ5dGVMZW5ndGgoKSwgMSk7CisgICAgZW5jb2RlciA8
PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc2lnbmF0dXJlLT5ieXRlTGVuZ3RoKCkpOworICAgIGVu
Y29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHNpZ25hdHVyZS0+ZGF0YSgpKSwgc2lnbmF0dXJlLT5ieXRlTGVuZ3RoKCksIDEpOworCisg
ICAgLy8gRW5jb2RlIEFwcElEIGJlZm9yZSB1c2VyIGhhbmRsZSB0byBhdm9pZCB0aGUgdXNlckhh
bmRsZSBmbGFnLgorICAgIGVuY29kZXIgPDwgYXBwaWQ7CisKKyAgICBpZiAoIXVzZXJIYW5kbGUp
IHsKKyAgICAgICAgZW5jb2RlciA8PCBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBlbmNvZGVyIDw8IHRydWU7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
dXNlckhhbmRsZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3Ro
RGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih1c2VySGFuZGxlLT5kYXRhKCkp
LCB1c2VySGFuZGxlLT5ieXRlTGVuZ3RoKCksIDEpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgorT3B0aW9uYWw8QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YT4gQXV0aGVudGljYXRvclJl
c3BvbnNlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgQXV0aGVudGljYXRv
clJlc3BvbnNlRGF0YSByZXN1bHQ7CisKKyAgICBPcHRpb25hbDxib29sPiBpc0VtcHR5OworICAg
IGRlY29kZXIgPj4gaXNFbXB0eTsKKyAgICBpZiAoIWlzRW1wdHkpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgaWYgKGlzRW1wdHkudmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKworICAgIE9wdGlvbmFsPHVpbnQ2NF90PiByYXdJZExlbmd0aDsKKyAgICBkZWNvZGVy
ID4+IHJhd0lkTGVuZ3RoOworICAgIGlmICghcmF3SWRMZW5ndGgpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICByZXN1bHQucmF3SWQgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHJh
d0lkTGVuZ3RoLnZhbHVlKCksIHNpemVvZih1aW50OF90KSk7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihyZXN1bHQucmF3
SWQtPmRhdGEoKSksIHJhd0lkTGVuZ3RoLnZhbHVlKCksIDEpKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8Ym9vbD4gaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRp
b25SZXNwb25zZTsKKyAgICBkZWNvZGVyID4+IGlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2U7CisgICAgaWYgKCFpc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJlc3VsdC5pc0F1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlID0gaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS52YWx1
ZSgpOworCisgICAgaWYgKHJlc3VsdC5pc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
KSB7CisgICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBhdHRlc3RhdGlvbk9iamVjdExlbmd0aDsK
KyAgICAgICAgZGVjb2RlciA+PiBhdHRlc3RhdGlvbk9iamVjdExlbmd0aDsKKyAgICAgICAgaWYg
KCFhdHRlc3RhdGlvbk9iamVjdExlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICAgICAgcmVzdWx0LmF0dGVzdGF0aW9uT2JqZWN0ID0gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShhdHRlc3RhdGlvbk9iamVjdExlbmd0aC52YWx1ZSgpLCBzaXplb2YodWludDhfdCkpOwor
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KHJlc3VsdC5hdHRlc3RhdGlvbk9iamVjdC0+ZGF0YSgpKSwgYXR0ZXN0YXRp
b25PYmplY3RMZW5ndGgudmFsdWUoKSwgMSkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgT3B0aW9uYWw8dWlu
dDY0X3Q+IGF1dGhlbnRpY2F0b3JEYXRhTGVuZ3RoOworICAgIGRlY29kZXIgPj4gYXV0aGVudGlj
YXRvckRhdGFMZW5ndGg7CisgICAgaWYgKCFhdXRoZW50aWNhdG9yRGF0YUxlbmd0aCkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJlc3VsdC5hdXRoZW50aWNhdG9yRGF0YSA9
IEFycmF5QnVmZmVyOjpjcmVhdGUoYXV0aGVudGljYXRvckRhdGFMZW5ndGgudmFsdWUoKSwgc2l6
ZW9mKHVpbnQ4X3QpKTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHJlc3VsdC5hdXRoZW50aWNhdG9yRGF0YS0+ZGF0YSgp
KSwgYXV0aGVudGljYXRvckRhdGFMZW5ndGgudmFsdWUoKSwgMSkpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDx1aW50NjRfdD4gc2lnbmF0dXJlTGVuZ3RoOwor
ICAgIGRlY29kZXIgPj4gc2lnbmF0dXJlTGVuZ3RoOworICAgIGlmICghc2lnbmF0dXJlTGVuZ3Ro
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmVzdWx0LnNpZ25hdHVyZSA9
IEFycmF5QnVmZmVyOjpjcmVhdGUoc2lnbmF0dXJlTGVuZ3RoLnZhbHVlKCksIHNpemVvZih1aW50
OF90KSk7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJl
dF9jYXN0PHVpbnQ4X3QqPihyZXN1bHQuc2lnbmF0dXJlLT5kYXRhKCkpLCBzaWduYXR1cmVMZW5n
dGgudmFsdWUoKSwgMSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRp
b25hbDxPcHRpb25hbDxib29sPj4gYXBwaWQ7CisgICAgZGVjb2RlciA+PiBhcHBpZDsKKyAgICBp
ZiAoIWFwcGlkKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJlc3VsdC5hcHBp
ZCA9IFdURk1vdmUoKmFwcGlkKTsKKworICAgIE9wdGlvbmFsPGJvb2w+IGhhc1VzZXJIYW5kbGU7
CisgICAgZGVjb2RlciA+PiBoYXNVc2VySGFuZGxlOworICAgIGlmICghaGFzVXNlckhhbmRsZSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoISpoYXNVc2VySGFuZGxlKQor
ICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgT3B0aW9uYWw8dWludDY0X3Q+IHVzZXJIYW5k
bGVMZW5ndGg7CisgICAgZGVjb2RlciA+PiB1c2VySGFuZGxlTGVuZ3RoOworICAgIGlmICghdXNl
ckhhbmRsZUxlbmd0aCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJlc3Vs
dC51c2VySGFuZGxlID0gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1c2VySGFuZGxlTGVuZ3RoLnZhbHVl
KCksIHNpemVvZih1aW50OF90KSk7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3Ro
RGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihyZXN1bHQudXNlckhhbmRsZS0+ZGF0YSgp
KSwgdXNlckhhbmRsZUxlbmd0aC52YWx1ZSgpLCAxKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbC5jcHAKaW5kZXggOGRl
NjAwYzc5NDg3MTMwNmFiNzc0ZDJkYmZjODIyMzBjNmQxNmM5Zi4uZmRiOTM4YTg5NjRlODljNGZm
MTQyNGJmYTNiZWJhNjM2MGJjNWFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuY3BwCkBAIC0yOCw0OCArMjgsMzUg
QEAKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKLSNpbmNsdWRlICJBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNw
b25zZS5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oIgogI2luY2x1ZGUg
IkF1dGhlbnRpY2F0b3JSZXNwb25zZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAi
UHVibGljS2V5Q3JlZGVudGlhbERhdGEuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUmVmUHRyPFB1YmxpY0tleUNyZWRlbnRpYWw+IFB1YmxpY0tleUNyZWRlbnRpYWw6OnRy
eUNyZWF0ZShQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYmIGRhdGEpCitSZWY8UHVibGljS2V5Q3Jl
ZGVudGlhbD4gUHVibGljS2V5Q3JlZGVudGlhbDo6Y3JlYXRlKFJlZjxBdXRoZW50aWNhdG9yUmVz
cG9uc2U+JiYgcmVzcG9uc2UpCiB7Ci0gICAgaWYgKCFkYXRhLnJhd0lkIHx8ICFkYXRhLmNsaWVu
dERhdGFKU09OKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmIChkYXRhLmlzQXV0
aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UpIHsKLSAgICAgICAgaWYgKCFkYXRhLmF0dGVz
dGF0aW9uT2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUHVibGljS2V5Q3JlZGVudGlhbChkYXRhLnJhd0lkLnJlbGVhc2VO
b25OdWxsKCksIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoZGF0YS5j
bGllbnREYXRhSlNPTi5yZWxlYXNlTm9uTnVsbCgpLCBkYXRhLmF0dGVzdGF0aW9uT2JqZWN0LnJl
bGVhc2VOb25OdWxsKCkpLCB7IGRhdGEuYXBwaWQgfSkpOwotICAgIH0KLQotICAgIGlmICghZGF0
YS5hdXRoZW50aWNhdG9yRGF0YSB8fCAhZGF0YS5zaWduYXR1cmUpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFB1YmxpY0tleUNyZWRlbnRpYWwoV1RG
TW92ZShyZXNwb25zZSkpKTsKK30KIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFB1YmxpY0tl
eUNyZWRlbnRpYWwoZGF0YS5yYXdJZC5yZWxlYXNlTm9uTnVsbCgpLCBBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShkYXRhLmNsaWVudERhdGFKU09OLnJlbGVhc2VOb25OdWxs
KCksIGRhdGEuYXV0aGVudGljYXRvckRhdGEucmVsZWFzZU5vbk51bGwoKSwgZGF0YS5zaWduYXR1
cmUucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShkYXRhLnVzZXJIYW5kbGUpKSwgeyBkYXRhLmFw
cGlkIH0pKTsKK0FycmF5QnVmZmVyKiBQdWJsaWNLZXlDcmVkZW50aWFsOjpyYXdJZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcmVzcG9uc2UtPnJhd0lkKCk7CiB9CiAKLVB1YmxpY0tleUNyZWRl
bnRpYWw6OlB1YmxpY0tleUNyZWRlbnRpYWwoUmVmPEFycmF5QnVmZmVyPiYmIGlkLCBSZWY8QXV0
aGVudGljYXRvclJlc3BvbnNlPiYmIHJlc3BvbnNlLCBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnND
bGllbnRPdXRwdXRzJiYgZXh0ZW5zaW9ucykKLSAgICA6IEJhc2ljQ3JlZGVudGlhbChXVEY6OmJh
c2U2NFVSTEVuY29kZShpZC0+ZGF0YSgpLCBpZC0+Ynl0ZUxlbmd0aCgpKSwgVHlwZTo6UHVibGlj
S2V5LCBEaXNjb3Zlcnk6OlJlbW90ZSkKLSAgICAsIG1fcmF3SWQoV1RGTW92ZShpZCkpCi0gICAg
LCBtX3Jlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKQotICAgICwgbV9leHRlbnNpb25zKFdURk1v
dmUoZXh0ZW5zaW9ucykpCitBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzIFB1
YmxpY0tleUNyZWRlbnRpYWw6OmdldENsaWVudEV4dGVuc2lvblJlc3VsdHMoKSBjb25zdAogewor
ICAgIHJldHVybiBtX3Jlc3BvbnNlLT5leHRlbnNpb25zKCk7CiB9CiAKLVB1YmxpY0tleUNyZWRl
bnRpYWw6OkF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMgUHVibGljS2V5Q3Jl
ZGVudGlhbDo6Z2V0Q2xpZW50RXh0ZW5zaW9uUmVzdWx0cygpIGNvbnN0CitQdWJsaWNLZXlDcmVk
ZW50aWFsOjpQdWJsaWNLZXlDcmVkZW50aWFsKFJlZjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+JiYg
cmVzcG9uc2UpCisgICAgOiBCYXNpY0NyZWRlbnRpYWwoV1RGOjpiYXNlNjRVUkxFbmNvZGUocmVz
cG9uc2UtPnJhd0lkKCktPmRhdGEoKSwgcmVzcG9uc2UtPnJhd0lkKCktPmJ5dGVMZW5ndGgoKSks
IFR5cGU6OlB1YmxpY0tleSwgRGlzY292ZXJ5OjpSZW1vdGUpCisgICAgLCBtX3Jlc3BvbnNlKFdU
Rk1vdmUocmVzcG9uc2UpKQogewotICAgIHJldHVybiBtX2V4dGVuc2lvbnM7CiB9CiAKIHZvaWQg
UHVibGljS2V5Q3JlZGVudGlhbDo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9y
QXZhaWxhYmxlKERvY3VtZW50JiBkb2N1bWVudCwgRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xl
YW4+JiYgcHJvbWlzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vUHVibGljS2V5Q3JlZGVudGlhbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9QdWJsaWNLZXlDcmVkZW50aWFsLmgKaW5kZXggZDJhNTUzYTljMDNkNDY2NWUwOGQwYTBlYjkz
YzBhMzFjZDBmMjAyOC4uYmZjOTI3Mzg0ZGY5NzUxMjEzNDNlNjc2ZDYzZGVhYWJkMmFlNDU3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVk
ZW50aWFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlD
cmVkZW50aWFsLmgKQEAgLTI4LDkgKzI4LDcgQEAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCiAj
aW5jbHVkZSAiQmFzaWNDcmVkZW50aWFsLmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNp
bmNsdWRlICJJRExUeXBlcy5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVy
Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MzgsMzIgKzM2LDI2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0b3JS
ZXNwb25zZTsKIGNsYXNzIERvY3VtZW50OwogCi1zdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbERh
dGE7CitzdHJ1Y3QgQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0czsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVycmVkOwogCiBjbGFz
cyBQdWJsaWNLZXlDcmVkZW50aWFsIGZpbmFsIDogcHVibGljIEJhc2ljQ3JlZGVudGlhbCB7CiBw
dWJsaWM6Ci0gICAgc3RydWN0IEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMg
ewotICAgICAgICBPcHRpb25hbDxib29sPiBhcHBpZDsKLSAgICB9OworICAgIHN0YXRpYyBSZWY8
UHVibGljS2V5Q3JlZGVudGlhbD4gY3JlYXRlKFJlZjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+JiYp
OwogCi0gICAgc3RhdGljIFJlZlB0cjxQdWJsaWNLZXlDcmVkZW50aWFsPiB0cnlDcmVhdGUoUHVi
bGljS2V5Q3JlZGVudGlhbERhdGEmJik7Ci0KLSAgICBBcnJheUJ1ZmZlciogcmF3SWQoKSBjb25z
dCB7IHJldHVybiBtX3Jhd0lkLnB0cigpOyB9CisgICAgQXJyYXlCdWZmZXIqIHJhd0lkKCkgY29u
c3Q7CiAgICAgQXV0aGVudGljYXRvclJlc3BvbnNlKiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzcG9uc2UucHRyKCk7IH0KICAgICBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRP
dXRwdXRzIGdldENsaWVudEV4dGVuc2lvblJlc3VsdHMoKSBjb25zdDsKIAogICAgIHN0YXRpYyB2
b2lkIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShEb2N1bWVu
dCYsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmKTsKIAogcHJpdmF0ZToKLSAgICBQ
dWJsaWNLZXlDcmVkZW50aWFsKFJlZjxBcnJheUJ1ZmZlcj4mJiBpZCwgUmVmPEF1dGhlbnRpY2F0
b3JSZXNwb25zZT4mJiwgQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cyYmKTsK
KyAgICBQdWJsaWNLZXlDcmVkZW50aWFsKFJlZjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+JiYpOwog
CiAgICAgVHlwZSBjcmVkZW50aWFsVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6OlB1
YmxpY0tleTsgfQogCi0gICAgUmVmPEFycmF5QnVmZmVyPiBtX3Jhd0lkOwogICAgIFJlZjxBdXRo
ZW50aWNhdG9yUmVzcG9uc2U+IG1fcmVzcG9uc2U7Ci0gICAgQXV0aGVudGljYXRpb25FeHRlbnNp
b25zQ2xpZW50T3V0cHV0cyBtX2V4dGVuc2lvbnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tl
eUNyZWRlbnRpYWwuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNL
ZXlDcmVkZW50aWFsLmlkbAppbmRleCAzMDcyYzFjZTQ3NzA3ZjRiNGNlOGU4ZTU1OTIyZDY2OTBi
NDc3ZDZmLi5hZTAwZjY5N2M4N2VkNjMyNTU2OGFiYzJhYzEzNjQ2N2Q3N2U2NmJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVu
dGlhbC5pZGwKQEAgLTM1LDEwICszNSwzIEBACiAKICAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIHN0
YXRpYyBQcm9taXNlPGJvb2xlYW4+IGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRv
ckF2YWlsYWJsZSgpOwogfTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQl9BVVRITiwKLSAgICBK
U0dlbmVyYXRlVG9KU09iamVjdCwKLV0gZGljdGlvbmFyeSBBdXRoZW50aWNhdGlvbkV4dGVuc2lv
bnNDbGllbnRPdXRwdXRzIHsKLSAgICBib29sZWFuIGFwcGlkOwotfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbERhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbERhdGEu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmEwNTRlZmIzYjhkNzRhYWVjNzhiYzg4
MmVkMGZkNjVjM2M3MWQ5OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRp
YWxEYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxODQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQl9BVVRITikKLQotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBBdXRoZW50aWNhdG9yUmVzcG9uc2U7Ci0KLXN0cnVjdCBQ
dWJsaWNLZXlDcmVkZW50aWFsRGF0YSB7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiByYXdJZDsK
LQotICAgIC8vIEF1dGhlbnRpY2F0b3JSZXNwb25zZQotICAgIGJvb2wgaXNBdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb25SZXNwb25zZTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGNsaWVudERhdGFK
U09OOwotCi0gICAgLy8gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UKLSAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IGF0dGVzdGF0aW9uT2JqZWN0OwotCi0gICAgLy8gQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhdXRoZW50aWNhdG9y
RGF0YTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHNpZ25hdHVyZTsKLSAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IHVzZXJIYW5kbGU7Ci0KLSAgICAvLyBFeHRlbnNpb25zCi0gICAgT3B0aW9uYWw8
Ym9vbD4gYXBwaWQ7Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlv
bmFsPFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhPiBkZWNvZGUoRGVjb2RlciYpOwotfTsKLQotLy8g
Tm90ZWQ6IGNsaWVudERhdGFKU09OIGlzIG5ldmVyIGVuY29kZWQgb3IgZGVjb2RlZCBhcyBpdCBp
cyBuZXZlciBzZW50IGFjcm9zcyBkaWZmZXJlbnQgcHJvY2Vzc2VzLgotdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KLXZvaWQgUHVibGljS2V5Q3JlZGVudGlhbERhdGE6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAotewotICAgIGlmICghcmF3SWQpIHsKLSAgICAgICAgZW5jb2RlciA8PCB0
cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGVuY29kZXIgPDwgZmFsc2U7Ci0KLSAg
ICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihyYXdJZC0+Ynl0ZUxlbmd0aCgpKTsK
LSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihyYXdJZC0+ZGF0YSgpKSwgcmF3SWQtPmJ5dGVMZW5ndGgoKSwgMSk7Ci0KLSAg
ICBlbmNvZGVyIDw8IGlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U7Ci0KLSAgICBp
ZiAoaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSAmJiBhdHRlc3RhdGlvbk9iamVj
dCkgewotICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihhdHRlc3RhdGlv
bk9iamVjdC0+Ynl0ZUxlbmd0aCgpKTsKLSAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0
aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYXR0ZXN0YXRpb25PYmplY3Qt
PmRhdGEoKSksIGF0dGVzdGF0aW9uT2JqZWN0LT5ieXRlTGVuZ3RoKCksIDEpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFhdXRoZW50aWNhdG9yRGF0YSB8fCAhc2lnbmF0dXJl
KQotICAgICAgICByZXR1cm47Ci0gICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
YXV0aGVudGljYXRvckRhdGEtPmJ5dGVMZW5ndGgoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhl
ZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYXV0aGVudGljYXRv
ckRhdGEtPmRhdGEoKSksIGF1dGhlbnRpY2F0b3JEYXRhLT5ieXRlTGVuZ3RoKCksIDEpOwotICAg
IGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNpZ25hdHVyZS0+Ynl0ZUxlbmd0aCgp
KTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihzaWduYXR1cmUtPmRhdGEoKSksIHNpZ25hdHVyZS0+Ynl0ZUxlbmd0aCgp
LCAxKTsKLQotICAgIC8vIEVuY29kZSBBcHBJRCBiZWZvcmUgdXNlciBoYW5kbGUgdG8gYXZvaWQg
dGhlIHVzZXJIYW5kbGUgZmxhZy4KLSAgICBlbmNvZGVyIDw8IGFwcGlkOwotCi0gICAgaWYgKCF1
c2VySGFuZGxlKSB7Ci0gICAgICAgIGVuY29kZXIgPDwgZmFsc2U7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgZW5jb2RlciA8PCB0cnVlOwotICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KHVzZXJIYW5kbGUtPmJ5dGVMZW5ndGgoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVG
aXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXNlckhhbmRs
ZS0+ZGF0YSgpKSwgdXNlckhhbmRsZS0+Ynl0ZUxlbmd0aCgpLCAxKTsKLX0KLQotdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhPiBQdWJsaWNL
ZXlDcmVkZW50aWFsRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAgUHVibGlj
S2V5Q3JlZGVudGlhbERhdGEgcmVzdWx0OwotCi0gICAgT3B0aW9uYWw8Ym9vbD4gaXNFbXB0eTsK
LSAgICBkZWNvZGVyID4+IGlzRW1wdHk7Ci0gICAgaWYgKCFpc0VtcHR5KQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotICAgIGlmIChpc0VtcHR5LnZhbHVlKCkpCi0gICAgICAgIHJldHVy
biByZXN1bHQ7Ci0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcmF3SWRMZW5ndGg7Ci0gICAgZGVj
b2RlciA+PiByYXdJZExlbmd0aDsKLSAgICBpZiAoIXJhd0lkTGVuZ3RoKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmVzdWx0LnJhd0lkID0gQXJyYXlCdWZmZXI6OmNyZWF0
ZShyYXdJZExlbmd0aC52YWx1ZSgpLCBzaXplb2YodWludDhfdCkpOwotICAgIGlmICghZGVjb2Rl
ci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ocmVzdWx0
LnJhd0lkLT5kYXRhKCkpLCByYXdJZExlbmd0aC52YWx1ZSgpLCAxKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPGJvb2w+IGlzQXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2U7Ci0gICAgZGVjb2RlciA+PiBpc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlv
blJlc3BvbnNlOwotICAgIGlmICghaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICByZXN1bHQuaXNBdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb25SZXNwb25zZSA9IGlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2Uu
dmFsdWUoKTsKLQotICAgIGlmIChyZXN1bHQuaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNw
b25zZSkgewotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gYXR0ZXN0YXRpb25PYmplY3RMZW5n
dGg7Ci0gICAgICAgIGRlY29kZXIgPj4gYXR0ZXN0YXRpb25PYmplY3RMZW5ndGg7Ci0gICAgICAg
IGlmICghYXR0ZXN0YXRpb25PYmplY3RMZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotCi0gICAgICAgIHJlc3VsdC5hdHRlc3RhdGlvbk9iamVjdCA9IEFycmF5QnVmZmVy
OjpjcmVhdGUoYXR0ZXN0YXRpb25PYmplY3RMZW5ndGgudmFsdWUoKSwgc2l6ZW9mKHVpbnQ4X3Qp
KTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJl
dF9jYXN0PHVpbnQ4X3QqPihyZXN1bHQuYXR0ZXN0YXRpb25PYmplY3QtPmRhdGEoKSksIGF0dGVz
dGF0aW9uT2JqZWN0TGVuZ3RoLnZhbHVlKCksIDEpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBhdXRoZW50aWNhdG9yRGF0YUxlbmd0aDsKLSAgICBkZWNvZGVyID4+IGF1dGhl
bnRpY2F0b3JEYXRhTGVuZ3RoOwotICAgIGlmICghYXV0aGVudGljYXRvckRhdGFMZW5ndGgpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXN1bHQuYXV0aGVudGljYXRvckRh
dGEgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhlbnRpY2F0b3JEYXRhTGVuZ3RoLnZhbHVlKCks
IHNpemVvZih1aW50OF90KSk7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0
YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihyZXN1bHQuYXV0aGVudGljYXRvckRhdGEtPmRh
dGEoKSksIGF1dGhlbnRpY2F0b3JEYXRhTGVuZ3RoLnZhbHVlKCksIDEpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHNpZ25hdHVyZUxlbmd0
aDsKLSAgICBkZWNvZGVyID4+IHNpZ25hdHVyZUxlbmd0aDsKLSAgICBpZiAoIXNpZ25hdHVyZUxl
bmd0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJlc3VsdC5zaWduYXR1
cmUgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpZ25hdHVyZUxlbmd0aC52YWx1ZSgpLCBzaXplb2Yo
dWludDhfdCkpOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4ocmVzdWx0LnNpZ25hdHVyZS0+ZGF0YSgpKSwgc2lnbmF0dXJl
TGVuZ3RoLnZhbHVlKCksIDEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAg
T3B0aW9uYWw8T3B0aW9uYWw8Ym9vbD4+IGFwcGlkOwotICAgIGRlY29kZXIgPj4gYXBwaWQ7Ci0g
ICAgaWYgKCFhcHBpZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICByZXN1bHQu
YXBwaWQgPSBXVEZNb3ZlKCphcHBpZCk7Ci0KLSAgICBPcHRpb25hbDxib29sPiBoYXNVc2VySGFu
ZGxlOwotICAgIGRlY29kZXIgPj4gaGFzVXNlckhhbmRsZTsKLSAgICBpZiAoIWhhc1VzZXJIYW5k
bGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgaWYgKCEqaGFzVXNlckhhbmRs
ZSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB1c2Vy
SGFuZGxlTGVuZ3RoOwotICAgIGRlY29kZXIgPj4gdXNlckhhbmRsZUxlbmd0aDsKLSAgICBpZiAo
IXVzZXJIYW5kbGVMZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBy
ZXN1bHQudXNlckhhbmRsZSA9IEFycmF5QnVmZmVyOjpjcmVhdGUodXNlckhhbmRsZUxlbmd0aC52
YWx1ZSgpLCBzaXplb2YodWludDhfdCkpOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExl
bmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ocmVzdWx0LnVzZXJIYW5kbGUtPmRh
dGEoKSksIHVzZXJIYW5kbGVMZW5ndGgudmFsdWUoKSwgMSkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotICAgIAotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VD
b252ZXJ0ZXIuY3BwCmluZGV4IGRhNDYxZmMxMDIyZmNhZDdlOWYyOTQzYzRlZDMzZDdmMzRmMWYz
YzkuLjI1NTYzYTA1N2QwY2MwNTY4ZDNhYjAxMDdhMmRiNTFhMmE5NGE0ZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZl
cnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0Rldmlj
ZVJlc3BvbnNlQ29udmVydGVyLmNwcApAQCAtODUsMzUgKzg1LDM1IEBAIHN0YXRpYyBWZWN0b3I8
dWludDhfdD4gZ2V0Q3JlZGVudGlhbElkKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXV0aGVudGlj
YXRvckRhdGEpCiAKIC8vIERlY29kZXMgYnl0ZSBhcnJheSByZXNwb25zZSBmcm9tIGF1dGhlbnRp
Y2F0b3IgdG8gQ0JPUiB2YWx1ZSBvYmplY3QgYW5kCiAvLyBjaGVja3MgZm9yIGNvcnJlY3QgZW5j
b2RpbmcgZm9ybWF0LgotT3B0aW9uYWw8UHVibGljS2V5Q3JlZGVudGlhbERhdGE+IHJlYWRDVEFQ
TWFrZUNyZWRlbnRpYWxSZXNwb25zZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGluQnVmZmVyLCBj
b25zdCBXZWJDb3JlOjpBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlJiBhdHRlc3RhdGlv
bikKK1JlZlB0cjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZENUQVBNYWtl
Q3JlZGVudGlhbFJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIsIGNvbnN0
IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmIGF0dGVzdGF0aW9uKQogewogICAgIGlm
IChpbkJ1ZmZlci5zaXplKCkgPD0ga1Jlc3BvbnNlQ29kZUxlbmd0aCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBWZWN0b3I8dWlu
dDhfdD4gYnVmZmVyOwogICAgIGJ1ZmZlci5hcHBlbmQoaW5CdWZmZXIuZGF0YSgpICsgMSwgaW5C
dWZmZXIuc2l6ZSgpIC0gMSk7CiAgICAgT3B0aW9uYWw8Q0JPUj4gZGVjb2RlZFJlc3BvbnNlID0g
Y2Jvcjo6Q0JPUlJlYWRlcjo6cmVhZChidWZmZXIpOwogICAgIGlmICghZGVjb2RlZFJlc3BvbnNl
IHx8ICFkZWNvZGVkUmVzcG9uc2UtPmlzTWFwKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGNvbnN0IGF1dG8mIGRlY29kZWRNYXAg
PSBkZWNvZGVkUmVzcG9uc2UtPmdldE1hcCgpOwogCiAgICAgYXV0byBpdCA9IGRlY29kZWRNYXAu
ZmluZChDQk9SKDEpKTsKICAgICBpZiAoaXQgPT0gZGVjb2RlZE1hcC5lbmQoKSB8fCAhaXQtPnNl
Y29uZC5pc1N0cmluZygpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvIGZvcm1hdCA9IGl0LT5zZWNvbmQuY2xvbmUoKTsKIAog
ICAgIGl0ID0gZGVjb2RlZE1hcC5maW5kKENCT1IoMikpOwogICAgIGlmIChpdCA9PSBkZWNvZGVk
TWFwLmVuZCgpIHx8ICFpdC0+c2Vjb25kLmlzQnl0ZVN0cmluZygpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvIGF1dGhlbnRp
Y2F0b3JEYXRhID0gaXQtPnNlY29uZC5jbG9uZSgpOwogCiAgICAgYXV0byBjcmVkZW50aWFsSWQg
PSBnZXRDcmVkZW50aWFsSWQoYXV0aGVudGljYXRvckRhdGEuZ2V0Qnl0ZVN0cmluZygpKTsKICAg
ICBpZiAoY3JlZGVudGlhbElkLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpdCA9IGRlY29kZWRNYXAuZmluZChD
Qk9SKDMpKTsKICAgICBpZiAoaXQgPT0gZGVjb2RlZE1hcC5lbmQoKSB8fCAhaXQtPnNlY29uZC5p
c01hcCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICBhdXRvIGF0dFN0bXQgPSBpdC0+c2Vjb25kLmNsb25lKCk7CiAKICAgICBPcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGF0dGVzdGF0aW9uT2JqZWN0OwpAQCAtMTMwLDU2ICsxMzAs
NTMgQEAgT3B0aW9uYWw8UHVibGljS2V5Q3JlZGVudGlhbERhdGE+IHJlYWRDVEFQTWFrZUNyZWRl
bnRpYWxSZXNwb25zZShjb25zdCBWZWN0b3I8dWkKICAgICAgICAgYXR0ZXN0YXRpb25PYmplY3Qg
PSBjYm9yOjpDQk9SV3JpdGVyOjp3cml0ZShDQk9SKFdURk1vdmUoYXR0ZXN0YXRpb25PYmplY3RN
YXApKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIHsgQXJy
YXlCdWZmZXI6OmNyZWF0ZShjcmVkZW50aWFsSWQuZGF0YSgpLCBjcmVkZW50aWFsSWQuc2l6ZSgp
KSwgdHJ1ZSwgbnVsbHB0ciwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdHRlc3RhdGlvbk9iamVjdC52
YWx1ZSgpLmRhdGEoKSwgYXR0ZXN0YXRpb25PYmplY3QudmFsdWUoKS5zaXplKCkpLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyLCBXVEY6Om51bGxvcHQgfTsKKyAgICByZXR1cm4gQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsICphdHRlc3RhdGlv
bk9iamVjdCk7CiB9CiAKLU9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhPiByZWFkQ1RB
UEdldEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIpCitS
ZWZQdHI8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiByZWFkQ1RBUEdldEFzc2VydGlv
blJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIpCiB7CiAgICAgaWYgKGlu
QnVmZmVyLnNpemUoKSA8PSBrUmVzcG9uc2VDb2RlTGVuZ3RoKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFZlY3Rvcjx1aW50OF90
PiBidWZmZXI7CiAgICAgYnVmZmVyLmFwcGVuZChpbkJ1ZmZlci5kYXRhKCkgKyAxLCBpbkJ1ZmZl
ci5zaXplKCkgLSAxKTsKICAgICBPcHRpb25hbDxDQk9SPiBkZWNvZGVkUmVzcG9uc2UgPSBjYm9y
OjpDQk9SUmVhZGVyOjpyZWFkKGJ1ZmZlcik7CiAKICAgICBpZiAoIWRlY29kZWRSZXNwb25zZSB8
fCAhZGVjb2RlZFJlc3BvbnNlLT5pc01hcCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8mIHJlc3BvbnNlTWFwID0gZGVj
b2RlZFJlc3BvbnNlLT5nZXRNYXAoKTsKIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gY3JlZGVu
dGlhbElkOwogICAgIGF1dG8gaXQgPSByZXNwb25zZU1hcC5maW5kKENCT1IoMSkpOwotICAgIGlm
IChpdCAhPSByZXNwb25zZU1hcC5lbmQoKSAmJiBpdC0+c2Vjb25kLmlzTWFwKCkpIHsKLSAgICAg
ICAgYXV0byYgY3JlZGVudGlhbCA9IGl0LT5zZWNvbmQuZ2V0TWFwKCk7Ci0gICAgICAgIGF1dG8g
aXRyID0gY3JlZGVudGlhbC5maW5kKENCT1Ioa0NyZWRlbnRpYWxJZEtleSkpOwotICAgICAgICBp
ZiAoaXRyID09IGNyZWRlbnRpYWwuZW5kKCkgfHwgIWl0ci0+c2Vjb25kLmlzQnl0ZVN0cmluZygp
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAgYXV0byYgaWQgPSBp
dHItPnNlY29uZC5nZXRCeXRlU3RyaW5nKCk7Ci0gICAgICAgIGNyZWRlbnRpYWxJZCA9IEFycmF5
QnVmZmVyOjpjcmVhdGUoaWQuZGF0YSgpLCBpZC5zaXplKCkpOwotICAgIH0KKyAgICBpZiAoaXQg
PT0gcmVzcG9uc2VNYXAuZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNNYXAoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgYXV0byYgY3JlZGVudGlhbCA9IGl0LT5zZWNvbmQuZ2V0TWFwKCk7
CisgICAgYXV0byBpdHIgPSBjcmVkZW50aWFsLmZpbmQoQ0JPUihrQ3JlZGVudGlhbElkS2V5KSk7
CisgICAgaWYgKGl0ciA9PSBjcmVkZW50aWFsLmVuZCgpIHx8ICFpdHItPnNlY29uZC5pc0J5dGVT
dHJpbmcoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byYgY3JlZGVudGlhbElk
ID0gaXRyLT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpOwogCiAgICAgaXQgPSByZXNwb25zZU1hcC5m
aW5kKENCT1IoMikpOwogICAgIGlmIChpdCA9PSByZXNwb25zZU1hcC5lbmQoKSB8fCAhaXQtPnNl
Y29uZC5pc0J5dGVTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byYgYXV0aERhdGEgPSBpdC0+c2Vjb25kLmdldEJ5
dGVTdHJpbmcoKTsKIAogICAgIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SKDMpKTsKICAgICBp
ZiAoaXQgPT0gcmVzcG9uc2VNYXAuZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNCeXRlU3RyaW5nKCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIGF1dG8mIHNpZ25hdHVyZSA9IGl0LT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpOwogCi0gICAg
UmVmUHRyPEFycmF5QnVmZmVyPiB1c2VySGFuZGxlOwogICAgIGl0ID0gcmVzcG9uc2VNYXAuZmlu
ZChDQk9SKDQpKTsKICAgICBpZiAoaXQgIT0gcmVzcG9uc2VNYXAuZW5kKCkgJiYgaXQtPnNlY29u
ZC5pc01hcCgpKSB7CiAgICAgICAgIGF1dG8mIHVzZXIgPSBpdC0+c2Vjb25kLmdldE1hcCgpOwog
ICAgICAgICBhdXRvIGl0ciA9IHVzZXIuZmluZChDQk9SKGtFbnRpdHlJZE1hcEtleSkpOwogICAg
ICAgICBpZiAoaXRyID09IHVzZXIuZW5kKCkgfHwgIWl0ci0+c2Vjb25kLmlzQnl0ZVN0cmluZygp
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAgYXV0byYgaWQgPSBp
dHItPnNlY29uZC5nZXRCeXRlU3RyaW5nKCk7Ci0gICAgICAgIHVzZXJIYW5kbGUgPSBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKGlkLmRhdGEoKSwgaWQuc2l6ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICBhdXRvJiB1c2VySGFuZGxlID0gaXRyLT5zZWNvbmQuZ2V0Qnl0ZVN0
cmluZygpOworICAgICAgICByZXR1cm4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpj
cmVhdGUoY3JlZGVudGlhbElkLCBhdXRoRGF0YSwgc2lnbmF0dXJlLCB1c2VySGFuZGxlKTsKICAg
ICB9CiAKLSAgICByZXR1cm4gUHVibGljS2V5Q3JlZGVudGlhbERhdGEgeyBXVEZNb3ZlKGNyZWRl
bnRpYWxJZCksIGZhbHNlLCBudWxscHRyLCBudWxscHRyLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1
dGhEYXRhLmRhdGEoKSwgYXV0aERhdGEuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShzaWdu
YXR1cmUuZGF0YSgpLCBzaWduYXR1cmUuc2l6ZSgpKSwgV1RGTW92ZSh1c2VySGFuZGxlKSwgV1RG
OjpudWxsb3B0IH07CisgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6
Y3JlYXRlKGNyZWRlbnRpYWxJZCwgYXV0aERhdGEsIHNpZ25hdHVyZSwgeyB9KTsKIH0KIAogT3B0
aW9uYWw8QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZT4gcmVhZENUQVBHZXRJbmZvUmVzcG9u
c2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbkJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVy
dGVyLmgKaW5kZXggMDRiZThiOTlhNDJkOTFiNDAzYzA1MmI2NzdlZTYwYmMyNTU3NTkyOS4uNGI4
ZDVmZTU2NGMzNGVmYjg4ZjQzMWYwNDFjZjhmMmQ4MGIxNzUwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNl
Q29udmVydGVyLmgKQEAgLTMyLDkgKzMyLDEwIEBACiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAog
I2luY2x1ZGUgIkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb25SZXNwb25zZS5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JHZXRJbmZvUmVz
cG9uc2UuaCIKICNpbmNsdWRlICJGaWRvQ29uc3RhbnRzLmgiCi0jaW5jbHVkZSAiUHVibGljS2V5
Q3JlZGVudGlhbERhdGEuaCIKIAogLy8gQ29udmVydHMgcmVzcG9uc2UgZnJvbSBhdXRoZW50aWNh
dG9ycyB0byBDVEFQUmVzcG9uc2Ugb2JqZWN0cy4gSWYgdGhlCiAvLyByZXNwb25zZSBvZiB0aGUg
YXV0aGVudGljYXRvciBkb2VzIG5vdCBjb25mb3JtIHRvIGZvcm1hdCBzcGVjaWZpZWQgYnkgdGhl
CkBAIC00OSwxNCArNTAsMTIgQEAgV0VCQ09SRV9FWFBPUlQgQ3RhcERldmljZVJlc3BvbnNlQ29k
ZSBnZXRSZXNwb25zZUNvZGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CiAvLyBhbmQgY29udmVy
dHMgcmVzcG9uc2UgdG8gQXV0aGVudGljYXRvck1ha2VDcmVkZW50aWFsUmVzcG9uc2Ugb2JqZWN0
IHdpdGgKIC8vIENCT1IgbWFwIGtleXMgdGhhdCBjb25mb3JtIHRvIGZvcm1hdCBvZiBhdHRlc3Rh
dGlvbiBvYmplY3QgZGVmaW5lZCBieSB0aGUKIC8vIFdlYkF1dGhOIHNwZWMgOiBodHRwczovL3cz
Yy5naXRodWIuaW8vd2ViYXV0aG4vI2ZpZy1hdHRTdHJ1Y3RzCi1XRUJDT1JFX0VYUE9SVCBPcHRp
b25hbDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YT4gcmVhZENUQVBNYWtlQ3JlZGVu
dGlhbFJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFdlYkNvcmU6OkF0dGVz
dGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmIGF0dGVzdGF0aW9uID0gV2ViQ29yZTo6QXR0ZXN0
YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6RGlyZWN0KTsKK1dFQkNPUkVfRVhQT1JUIFJlZlB0
cjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZENUQVBNYWtl
Q3JlZGVudGlhbFJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFdlYkNvcmU6
OkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmIGF0dGVzdGF0aW9uID0gV2ViQ29yZTo6
QXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6RGlyZWN0KTsKIAogLy8gRGUtc2VyaWFs
aXplcyBDQk9SIGVuY29kZWQgcmVzcG9uc2UgdG8gQXV0aGVudGljYXRvckdldEFzc2VydGlvbiAv
CiAvLyBBdXRoZW50aWNhdG9yR2V0TmV4dEFzc2VydGlvbiByZXF1ZXN0IHRvIEF1dGhlbnRpY2F0
b3JHZXRBc3NlcnRpb25SZXNwb25zZQogLy8gb2JqZWN0LgotLy8gRklYTUUoMTkwNzgzKTogUHJv
YmFibHkgbmVlZCB0byByZW1ha2UgQXV0aGVudGljYXRvclJlc3BvbnNlIHRvIGluY2x1ZGUgbW9y
ZSBmaWVsZHMgbGlrZSBudW1iZXJPZkNyZWRlbnRpYWxzLAotLy8gYW5kIHVzZSBpdCBoZXJlIGlu
c3RlYWQgb2YgUHVibGljS2V5Q3JlZGVudGlhbERhdGEuCi1XRUJDT1JFX0VYUE9SVCBPcHRpb25h
bDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YT4gcmVhZENUQVBHZXRBc3NlcnRpb25S
ZXNwb25zZShjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKK1dFQkNPUkVfRVhQT1JUIFJlZlB0cjxX
ZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHJlYWRDVEFQR2V0QXNzZXJ0
aW9uUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CiAKIC8vIERlLXNlcmlhbGl6ZXMg
Q0JPUiBlbmNvZGVkIHJlc3BvbnNlIHRvIEF1dGhlbnRpY2F0b3JHZXRJbmZvIHJlcXVlc3QgdG8K
IC8vIEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2Ugb2JqZWN0LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZl
cnRlci5jcHAKaW5kZXggOTMyNGYxOGY5MWFkZjE4MGIwN2M4M2ZjZTQyNjcwNjAwODNiNmJmMC4u
MzEzZWFmMDI3NDQwNzJlNjdmNGM0NmZlY2IwMzhiYWVjODE1OTBmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VD
b252ZXJ0ZXIuY3BwCkBAIC0xNDcsMTUgKzE0NywxNSBAQCBzdGF0aWMgY2Jvcjo6Q0JPUlZhbHVl
OjpNYXBWYWx1ZSBjcmVhdGVGaWRvQXR0ZXN0YXRpb25TdGF0ZW1lbnRGcm9tVTJmUmVnaXN0ZXJS
ZQogCiB9IC8vIG5hbWVzcGFjZQogCi1PcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsRGF0YT4g
cmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIHUyZkRhdGEsIGNvbnN0IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2Um
IGF0dGVzdGF0aW9uKQorUmVmUHRyPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBy
ZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgdTJmRGF0YSwgY29uc3QgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSYg
YXR0ZXN0YXRpb24pCiB7CiAgICAgYXV0byBwdWJsaWNLZXkgPSBleHRyYWN0RUNQdWJsaWNLZXlG
cm9tVTJmUmVnaXN0cmF0aW9uUmVzcG9uc2UodTJmRGF0YSk7CiAgICAgaWYgKHB1YmxpY0tleS5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgYXV0byBhdHRlc3RlZENyZWRlbnRpYWxEYXRhID0gY3JlYXRlQXR0ZXN0
ZWRDcmVkZW50aWFsRGF0YUZyb21VMmZSZWdpc3RlclJlc3BvbnNlKHUyZkRhdGEsIHB1YmxpY0tl
eSk7CiAgICAgaWYgKGF0dGVzdGVkQ3JlZGVudGlhbERhdGEuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIEV4
dHJhY3QgdGhlIGNyZWRlbnRpYWxJZCBmb3IgcGFja2luZyBpbnRvIHRoZSByZXNwb25zZSBkYXRh
LgogICAgIGF1dG8gY3JlZGVudGlhbElkID0gZXh0cmFjdENyZWRlbnRpYWxJZEZyb21VMmZSZWdp
c3RyYXRpb25SZXNwb25zZSh1MmZEYXRhKTsKQEAgLTE2NiwxNyArMTY2LDE3IEBAIE9wdGlvbmFs
PFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhPiByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShjb25zdCBT
dHJpbmcmIHJwSWQsIGNvCiAKICAgICBhdXRvIGZpZG9BdHRlc3RhdGlvblN0YXRlbWVudCA9IGNy
ZWF0ZUZpZG9BdHRlc3RhdGlvblN0YXRlbWVudEZyb21VMmZSZWdpc3RlclJlc3BvbnNlKHUyZkRh
dGEsIGtVMmZLZXlIYW5kbGVPZmZzZXQgKyBjcmVkZW50aWFsSWQuc2l6ZSgpKTsKICAgICBpZiAo
Zmlkb0F0dGVzdGF0aW9uU3RhdGVtZW50LmVtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byBhdHRlc3RhdGlvbk9i
amVjdCA9IGJ1aWxkQXR0ZXN0YXRpb25PYmplY3QoV1RGTW92ZShhdXRoRGF0YSksICJmaWRvLXUy
ZiIsIFdURk1vdmUoZmlkb0F0dGVzdGF0aW9uU3RhdGVtZW50KSwgYXR0ZXN0YXRpb24pOwogCi0g
ICAgcmV0dXJuIFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIHsgQXJyYXlCdWZmZXI6OmNyZWF0ZShj
cmVkZW50aWFsSWQuZGF0YSgpLCBjcmVkZW50aWFsSWQuc2l6ZSgpKSwgdHJ1ZSwgbnVsbHB0ciwg
QXJyYXlCdWZmZXI6OmNyZWF0ZShhdHRlc3RhdGlvbk9iamVjdC5kYXRhKCksIGF0dGVzdGF0aW9u
T2JqZWN0LnNpemUoKSksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIFdURjo6bnVsbG9wdCB9
OworICAgIHJldHVybiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKGNy
ZWRlbnRpYWxJZCwgYXR0ZXN0YXRpb25PYmplY3QpOwogfQogCi1PcHRpb25hbDxQdWJsaWNLZXlD
cmVkZW50aWFsRGF0YT4gcmVhZFUyZlNpZ25SZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYga2V5SGFuZGxlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUy
ZkRhdGEpCitSZWZQdHI8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiByZWFkVTJmU2ln
blJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlI
YW5kbGUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdTJmRGF0YSkKIHsKICAgICBpZiAoa2V5SGFu
ZGxlLmlzRW1wdHkoKSB8fCB1MmZEYXRhLnNpemUoKSA8PSBzaWduYXR1cmVJbmRleCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAv
LyAxIGJ5dGUgZmxhZ3MsIDQgYnl0ZXMgY291bnRlcgogICAgIGF1dG8gZmxhZ3MgPSB1MmZEYXRh
W2ZsYWdJbmRleF07CkBAIC0xODYsNyArMTg2LDExIEBAIE9wdGlvbmFsPFB1YmxpY0tleUNyZWRl
bnRpYWxEYXRhPiByZWFkVTJmU2lnblJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QK
ICAgICBjb3VudGVyICs9IHUyZkRhdGFbY291bnRlckluZGV4ICsgM107CiAgICAgYXV0byBhdXRo
RGF0YSA9IGJ1aWxkQXV0aERhdGEocnBJZCwgZmxhZ3MsIGNvdW50ZXIsIHsgfSk7CiAKLSAgICBy
ZXR1cm4gUHVibGljS2V5Q3JlZGVudGlhbERhdGEgeyBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGtleUhh
bmRsZS5kYXRhKCksIGtleUhhbmRsZS5zaXplKCkpLCBmYWxzZSwgbnVsbHB0ciwgbnVsbHB0ciwg
QXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoRGF0YS5kYXRhKCksIGF1dGhEYXRhLnNpemUoKSksIEFy
cmF5QnVmZmVyOjpjcmVhdGUodTJmRGF0YS5kYXRhKCkgKyBzaWduYXR1cmVJbmRleCwgdTJmRGF0
YS5zaXplKCkgLSBzaWduYXR1cmVJbmRleCksIG51bGxwdHIsIFdURjo6bnVsbG9wdCB9OworICAg
IC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIHJlbW92ZSB0aGUgbmVlZCBvZiBjb25zdHJ1Y3Rpbmcg
YSB2ZWN0b3IgaGVyZS4KKyAgICBWZWN0b3I8dWludDhfdD4gc2lnbmF0dXJlOworICAgIHNpZ25h
dHVyZS5hcHBlbmQodTJmRGF0YS5kYXRhKCkgKyBzaWduYXR1cmVJbmRleCwgdTJmRGF0YS5zaXpl
KCkgLSBzaWduYXR1cmVJbmRleCk7CisKKyAgICByZXR1cm4gQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlOjpjcmVhdGUoa2V5SGFuZGxlLCBhdXRoRGF0YSwgc2lnbmF0dXJlLCB7IH0pOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBmaWRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5oCmluZGV4IDlhZjI4
MmQzNGU4ZTdkOTM0MTQyYmQ1NDE2NDMyYWQ4NzAzNzA2YWQuLmM0ZjIwMWZjMDUzZTc4NWUxZDk3
MWFlNTY1ZWNmM2Y1NWUxZTE2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5oCkBAIC0zMiwxOCAr
MzIsMTkgQEAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCiAjaW5jbHVkZSAiQXR0ZXN0YXRpb25D
b252ZXlhbmNlUHJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIlB1YmxpY0tleUNyZWRlbnRpYWxEYXRh
LmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmgiCisjaW5jbHVk
ZSAiQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogCiBuYW1lc3BhY2UgZmlkbyB7CiAKIC8vIENvbnZlcnRzIGEgVTJGIHJlZ2lzdGVy
IHJlc3BvbnNlIHRvIFdlYkF1dGhOIG1ha2VDcmVkZW50aWFsIHJlc3BvbnNlLgogLy8gaHR0cHM6
Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1pZC0yMDE4MDIyNy9maWRvLWNsaWVu
dC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtaWQtMjAxODAyMjcuaHRtbCN1MmYtYXV0
aGVudGljYXRvck1ha2VDcmVkZW50aWFsLWludGVyb3BlcmFiaWxpdHkKLVdFQkNPUkVfRVhQT1JU
IE9wdGlvbmFsPFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhPiByZWFkVTJmUmVnaXN0
ZXJSZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdTJm
RGF0YSwgY29uc3QgV2ViQ29yZTo6QXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSYgYXR0
ZXN0YXRpb24gPSBXZWJDb3JlOjpBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpEaXJl
Y3QpOworV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlPiByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdTJmRGF0YSwgY29uc3QgV2ViQ29yZTo6QXR0ZXN0YXRp
b25Db252ZXlhbmNlUHJlZmVyZW5jZSYgYXR0ZXN0YXRpb24gPSBXZWJDb3JlOjpBdHRlc3RhdGlv
bkNvbnZleWFuY2VQcmVmZXJlbmNlOjpEaXJlY3QpOwogCiAvLyBDb252ZXJ0cyBhIFUyRiBhdXRo
ZW50aWNhdGlvbiByZXNwb25zZSB0byBXZWJBdXRoTiBnZXRBc3NlcnRpb24gcmVzcG9uc2UuCiAv
LyBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlkby12Mi4wLWlkLTIwMTgwMjI3L2Zp
ZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0b3ItcHJvdG9jb2wtdjIuMC1pZC0yMDE4MDIyNy5odG1s
I3UyZi1hdXRoZW50aWNhdG9yR2V0QXNzZXJ0aW9uLWludGVyb3BlcmFiaWxpdHkKLVdFQkNPUkVf
RVhQT1JUIE9wdGlvbmFsPFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhPiByZWFkVTJm
U2lnblJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBr
ZXlIYW5kbGUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdTJmRGF0YSk7CitXRUJDT1JFX0VYUE9S
VCBSZWZQdHI8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiByZWFkVTJm
U2lnblJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBr
ZXlIYW5kbGUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdTJmRGF0YSk7CiAKIH0gLy8gbmFtZXNw
YWNlIGZpZG8KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBiY2E3M2NmOWU3ZjY4NTBlZmZmZDliZDRhZGUw
MDVhMTE2NWMzYmEwLi5lN2ExOGIzMDg3YzA1MjhiZTU5ZWI2ODYwZTg5M2NhZjBiNzg3MDdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dApAQCAtMjY4LDYgKzI2OCw5IEBAIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNo
YXBlck5vZGUuY3BwCiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCiAK
IE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAorTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwCitNb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcAorTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuY3BwCiBNb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNy
ZWRlbnRpYWwuY3BwCiBNb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuY3Bw
CiBNb2R1bGVzL3dlYmF1dGhuL2FwZHUvQXBkdUNvbW1hbmQuY3BwCkBAIC0yNjUzLDYgKzI2NTYs
NyBAQCBKU0F1ZGlvUGFyYW0uY3BwCiBKU0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmNwcAogSlNBdHRl
c3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlLmNwcAogSlNBdXRoZW50aWNhdGlvbkV4dGVuc2lv
bnNDbGllbnRJbnB1dHMuY3BwCitKU0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1
dHMuY3BwCiBKU0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAKIEpTQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuY3BwCiBKU0F1dGhlbnRpY2F0b3JSZXNwb25zZS5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAwM2U2ZjU0MzNiZjZmNjdlYmM1ZjQ5ZmVkMGE5NTAxMmQ0YmU0YmY5Li5mZmQ1ZTU3NjQ2
NTBhZWYzNjA1ZWEwZDRmOTE3MzBhMTIxN2RkZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzczLDcgKzE3NzMsNyBAQAog
CQk1NzMwM0JCQTIwMDZDNkVFMDAzNTU5NjUgLyogQ0JPUldyaXRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczMDNCQjUyMDA2QzZFRDAwMzU1OTY1
IC8qIENCT1JXcml0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1NzMwM0JCQjIwMDZDNkVFMDAzNTU5NjUgLyogQ0JPUkJpbmFyeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczMDNCQjYyMDA2QzZF
RDAwMzU1OTY1IC8qIENCT1JCaW5hcnkuaCAqLzsgfTsKIAkJNTczMDNCQzEyMDA2RTAwQzAwMzU1
OTY1IC8qIENCT1JSZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3MzAzQkJGMjAwNkUwMEMwMDM1NTk2NSAvKiBDQk9SUmVhZGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTczMDNCRDIyMDA4
N0E4MzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczMDNCQ0YyMDA4N0E4MzAwMzU1OTY1IC8q
IEF1dGhlbnRpY2F0b3JSZXNwb25zZS5oICovOyB9OworCQk1NzMwM0JEMjIwMDg3QTgzMDAzNTU5
NjUgLyogQXV0aGVudGljYXRvclJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NzMwM0JDRjIwMDg3QTgzMDAzNTU5NjUgLyogQXV0aGVudGlj
YXRvclJlc3BvbnNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNTczMDNCRTEyMDA5NUQ2MTAwMzU1OTY1IC8qIEpTQXV0aGVudGljYXRvclJlc3Bv
bnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzMw
M0JERDIwMDk1QjI2MDAzNTU5NjUgLyogSlNBdXRoZW50aWNhdG9yUmVzcG9uc2UuaCAqLzsgfTsK
IAkJNTczMDNCRTkyMDA5NzQ4RDAwMzU1OTY1IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU3MzAzQkU2MjAwOTc0N0EwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTczMDNCRUIyMDA5N0Y0MDAwMzU1OTY1IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzMwM0JFQTIw
MDk3RjQwMDAzNTU5NjUgLyogUHVibGljS2V5Q3JlZGVudGlhbFR5cGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTc4Myw5ICsxNzgzLDkgQEAK
IAkJNTczMDNDMEEyMDA5OUJBRDAwMzU1OTY1IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTczMDNDMDYyMDA5OThGODAwMzU1OTY1IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTU3MzAzQzExMjAwOTlDQjEwMDM1NTk2NSAvKiBKU1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTczMDNDMEMyMDA5OUM3NTAwMzU1OTY1IC8qIEpTUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RP
cHRpb25zLmggKi87IH07CiAJCTU3MzAzQzE5MjAwOUEyRjMwMDM1NTk2NSAvKiBKU1B1YmxpY0tl
eUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3MzAzQzEzMjAwOUEyNTcwMDM1NTk2NSAvKiBKU1B1YmxpY0tl
eUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaCAqLzsgfTsKLQkJNTczMDNDMUYyMDA5QUI0MjAw
MzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzMwM0MxQjIwMDlBOTg2MDAzNTU5
NjUgLyogQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaCAqLzsgfTsKKwkJNTczMDND
MUYyMDA5QUI0MjAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzMwM0MxQjIw
MDlBOTg2MDAzNTU5NjUgLyogQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NzMwM0MyMjIw
MDlBRjAzMDAzNTU5NjUgLyogSlNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczMDNDMjEyMDA5
QUVGNjAwMzU1OTY1IC8qIEpTQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaCAqLzsg
fTsKLQkJNTczMDNDMkMyMDA5QjRBODAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTczMDNDMjcyMDA5QjJGQzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZS5oICovOyB9OworCQk1NzMwM0MyQzIwMDlCNEE4MDAzNTU5NjUgLyogQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NzMwM0MyNzIwMDlCMkZDMDAzNTU5NjUgLyogQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTczMDNDMkYyMDA5QjdFMTAwMzU1OTY1IC8qIEpTQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzMwM0MyRDIwMDlCN0Q5MDAzNTU5NjUgLyogSlNBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2UuaCAqLzsgfTsKIAkJNTczMDNDNDYyMDEwNUQyRjAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0
b3JDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTczMDNDNDMyMDEwNUIzRDAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3
MzQ4OTM5MURBQzZCNkUwMERDMDY2NyAvKiBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzM0ODkzODFEQUM2
QjZEMDBEQzA2NjcgLyogQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oICovOyB9OwpAQCAtMTc5
OCw2ICsxNzk4LDggQEAKIAkJNTc1MEE5ODIxRTZBMTUwODAwNzA1QzRBIC8qIEpTRWNLZXlQYXJh
bXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTBB
OTgwMUU2QTE1MDgwMDcwNUM0QSAvKiBKU0VjS2V5UGFyYW1zLmggKi87IH07CiAJCTU3NTBBOTg3
MUU2QTIxNjgwMDcwNUM0QSAvKiBDcnlwdG9BbGdvcml0aG1FQ0RILmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzUwQTk4NTFFNkEyMTY4MDA3MDVDNEEg
LyogQ3J5cHRvQWxnb3JpdGhtRUNESC5oICovOyB9OwogCQk1NzU0NzE5RjFFQ0U2MjgzMDBERDYz
QjIgLyogSlNSc2FQc3NQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3NTQ3MTk5MUVDRTVEMkEwMERENjNCMiAvKiBKU1JzYVBzc1BhcmFtcy5o
ICovOyB9OworCQk1NzU4NTk2MTIzOUYxMjREMDBDNzQ1NzIgLyogSlNBdXRoZW50aWNhdGlvbkV4
dGVuc2lvbnNDbGllbnRPdXRwdXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NzU4NTk1RTIzOUYxMTczMDBDNzQ1NzIgLyogSlNBdXRoZW50aWNhdGlv
bkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmggKi87IH07CisJCTU3NTg1OTZDMjM5RjMyMUMwMEM3
NDU3MiAvKiBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzU4NTk2NTIzOUYxNENDMDBD
NzQ1NzIgLyogQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3NjA4MjcyMjAyMTVB
NTUwMDExNjY3OCAvKiBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NjA4MjcwMjAyMTUxM0YwMDEx
NjY3OCAvKiBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NzY4MTQyQTFFNkY5OUMxMDBFNzc3
NTQgLyogQ3J5cHRvQWxnb3JpdGhtRWNkaEtleURlcml2ZVBhcmFtcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc2ODE0MjkxRTZGOTlDMTAwRTc3NzU0
IC8qIENyeXB0b0FsZ29yaXRobUVjZGhLZXlEZXJpdmVQYXJhbXMuaCAqLzsgfTsKIAkJNTc2ODE0
NDExRTcwOUZBNDAwRTc3NzU0IC8qIEpTRWNkaEtleURlcml2ZVBhcmFtcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc2ODE0M0UxRTcwOUMzNjAwRTc3
NzU0IC8qIEpTRWNkaEtleURlcml2ZVBhcmFtcy5oICovOyB9OwpAQCAtMTgyNSw3ICsxODI3LDcg
QEAKIAkJNTdEODQ2MkUxRkVBRjY5OTAwQ0EzNjgyIC8qIFB1YmxpY0tleUNyZWRlbnRpYWwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RDg0NjJCMUZF
QUY2OEYwMENBMzY4MiAvKiBQdWJsaWNLZXlDcmVkZW50aWFsLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTdEODQ2MzUxRkVBRkNEMzAwQ0EzNjgy
IC8qIEpTUHVibGljS2V5Q3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTdEODQ2MzAxRkVBRkMyRjAwQ0EzNjgyIC8qIEpTUHVibGljS2V5
Q3JlZGVudGlhbC5oICovOyB9OwogCQk1N0RBNDdCMDIyNDAzNEU0MDAyQTQ2MTIgLyogQXV0aGVu
dGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RBNDdBNTIyNDAxRTBGMDAyQTQ2MTIgLyogQXV0aGVu
dGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTdEQ0VENzQyMTQzMDVGMDAwMTZCODQ3IC8qIFB1
YmxpY0tleUNyZWRlbnRpYWxEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1N0RDRUQ3MjIxNDMwNUYwMDAxNkI4NDcgLyogUHVibGljS2V5Q3JlZGVu
dGlhbERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk1N0RDRUQ3NDIxNDMwNUYwMDAxNkI4NDcgLyogQXV0aGVudGljYXRvclJlc3BvbnNlRGF0
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VE
NzIyMTQzMDVGMDAwMTZCODQ3IC8qIEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1N0RDRUQ5MDIxNDg3
RkY3MDAxNkI4NDcgLyogQXV0aGVudGljYXRvclRyYW5zcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VEOEMyMTQ4N0VEQjAwMTZCODQ3IC8q
IEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1N0RDRUQ5ODIxNDg4MjE2MDAxNkI4NDcgLyogSlNBdXRoZW50
aWNhdG9yVHJhbnNwb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1N0RDRUQ5MjIxNDg4MEM2MDAxNkI4NDcgLyogSlNBdXRoZW50aWNhdG9yVHJhbnNw
b3J0LmggKi87IH07CiAJCTU3RTFFNUEzMUU4QzkxQjUwMEVFMzdDOSAvKiBDcnlwdG9BbGdvcml0
aG1BRVNfQ1RSLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1N0UxRTVBMTFFOEM5MUI1MDBFRTM3QzkgLyogQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUi5oICov
OyB9OwpAQCAtODc4Miw2ICs4Nzg0LDEzIEBACiAJCTU3NTBBOTg1MUU2QTIxNjgwMDcwNUM0QSAv
KiBDcnlwdG9BbGdvcml0aG1FQ0RILmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENyeXB0b0FsZ29yaXRobUVDREguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc1
NDcxOTkxRUNFNUQyQTAwREQ2M0IyIC8qIEpTUnNhUHNzUGFyYW1zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTUnNhUHNzUGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3NTQ3MTlBMUVDRTVEMkEwMERENjNCMiAvKiBKU1JzYVBzc1BhcmFtcy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JzYVBzc1BhcmFtcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3NTg1OTVDMjM5RjExMzAwMEM3NDU3MiAv
KiBKU0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc1ODU5NUUyMzlGMTE3MzAwQzc0NTcyIC8qIEpT
QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTc1ODU5NjUyMzlGMTRDQzAwQzc0NTcyIC8qIEF1dGhlbnRpY2F0aW9u
RXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25F
eHRlbnNpb25zQ2xpZW50T3V0cHV0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
NzU4NTk2NzIzOUYxNENEMDBDNzQ1NzIgLyogQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50
T3V0cHV0cy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3NTg1OTY5MjM5RjFFQzcwMEM3NDU3
MiAvKiBBdXRoZW50aWNhdG9yUmVzcG9uc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0aGVu
dGljYXRvclJlc3BvbnNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc1ODU5
NkIyMzlGMjg0QjAwQzc0NTcyIC8qIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc1ODU5NkUyMzlGMzk3OTAwQzc0NTcy
IC8qIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1NzYwODI0RjIwMTE4RDhEMDAxMTY2NzggLyogSlNCYXNpY0NyZWRlbnRpYWxD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCYXNpY0NyZWRlbnRpYWxDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzYwODI1NjIwMTFCRTAyMDAxMTY2Nzgg
LyogSlNBdXRoZW50aWNhdG9yUmVzcG9uc2VDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNBdXRoZW50aWNhdG9yUmVzcG9uc2VDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1NzYwODI3MDIwMjE1MTNGMDAxMTY2NzggLyogQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODg1Miw3ICs4ODYxLDcgQEAKIAkJ
NTdEQTQ3QTcyMjQwMUUwRjAwMkE0NjEyIC8qIEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVu
dElucHV0cy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdEQTQ3QUMyMjQwMzJEQzAwMkE0NjEy
IC8qIEpTQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdEQTQ3QUQyMjQwMzJERDAwMkE0NjEyIC8qIEpT
QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTU3RENFRDcyMjE0MzA1RjAwMDE2Qjg0NyAvKiBQdWJsaWNLZXlDcmVkZW50
aWFsRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0RDRUQ3MjIxNDMwNUYwMDAxNkI4NDcgLyogQXV0
aGVudGljYXRvclJlc3BvbnNlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRoZW50aWNhdG9yUmVz
cG9uc2VEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3RENFRDhDMjE0ODdF
REIwMDE2Qjg0NyAvKiBBdXRoZW50aWNhdG9yVHJhbnNwb3J0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1
dGhlbnRpY2F0b3JUcmFuc3BvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdE
Q0VEOEUyMTQ4N0VEQjAwMTZCODQ3IC8qIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1N0RDRUQ5MTIxNDg4MEM2MDAxNkI4NDcgLyogSlNBdXRoZW50aWNhdG9yVHJhbnNwb3J0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXV0aGVudGljYXRvclRy
YW5zcG9ydC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDAyOCwxNSArMjAw
MzcsMjEgQEAKIAkJCQk1N0QxMzUyMzIyOTQ5NzM0MDA4Mjc0MDEgLyogQXR0ZXN0YXRpb25Db252
ZXlhbmNlUHJlZmVyZW5jZS5pZGwgKi8sCiAJCQkJNTdEQTQ3QTUyMjQwMUUwRjAwMkE0NjEyIC8q
IEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5oICovLAogCQkJCTU3REE0N0E3
MjI0MDFFMEYwMDJBNDYxMiAvKiBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMu
aWRsICovLAorCQkJCTU3NTg1OTY1MjM5RjE0Q0MwMEM3NDU3MiAvKiBBdXRoZW50aWNhdGlvbkV4
dGVuc2lvbnNDbGllbnRPdXRwdXRzLmggKi8sCisJCQkJNTc1ODU5NjcyMzlGMTRDRDAwQzc0NTcy
IC8qIEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaWRsICovLAorCQkJCTU3
NTg1OTZFMjM5RjM5NzkwMEM3NDU3MiAvKiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Uu
Y3BwICovLAogCQkJCTU3MzAzQzI3MjAwOUIyRkMwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2UuaCAqLywKIAkJCQk1NzMwM0MyOTIwMDlCMkZDMDAzNTU5NjUgLyogQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmlkbCAqLywKKwkJCQk1NzU4NTk2QjIzOUYyODRC
MDBDNzQ1NzIgLyogQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuY3BwICovLAogCQkJ
CTU3MzAzQzFCMjAwOUE5ODYwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNw
b25zZS5oICovLAogCQkJCTU3MzAzQzFEMjAwOUE5ODYwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb25SZXNwb25zZS5pZGwgKi8sCiAJCQkJNTczMDNDNDQyMDEwNUIzRDAwMzU1OTY1
IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAgKi8sCiAJCQkJNTczMDNDNDMyMDEwNUIz
RDAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oICovLAogCQkJCTU3NjA4Mjcw
MjAyMTUxM0YwMDExNjY3OCAvKiBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaCAqLywK
KwkJCQk1NzU4NTk2OTIzOUYxRUM3MDBDNzQ1NzIgLyogQXV0aGVudGljYXRvclJlc3BvbnNlLmNw
cCAqLywKIAkJCQk1NzMwM0JDRjIwMDg3QTgzMDAzNTU5NjUgLyogQXV0aGVudGljYXRvclJlc3Bv
bnNlLmggKi8sCiAJCQkJNTczMDNCRDEyMDA4N0E4MzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JS
ZXNwb25zZS5pZGwgKi8sCisJCQkJNTdEQ0VENzIyMTQzMDVGMDAwMTZCODQ3IC8qIEF1dGhlbnRp
Y2F0b3JSZXNwb25zZURhdGEuaCAqLywKIAkJCQk1N0RDRUQ4QzIxNDg3RURCMDAxNkI4NDcgLyog
QXV0aGVudGljYXRvclRyYW5zcG9ydC5oICovLAogCQkJCTU3RENFRDhFMjE0ODdFREIwMDE2Qjg0
NyAvKiBBdXRoZW50aWNhdG9yVHJhbnNwb3J0LmlkbCAqLywKIAkJCQk1N0Q4NDYyQzFGRUFGNjhG
MDBDQTM2ODIgLyogUHVibGljS2V5Q3JlZGVudGlhbC5jcHAgKi8sCkBAIC0yMDA0NCw3ICsyMDA1
OSw2IEBACiAJCQkJNTdEODQ2MkQxRkVBRjY4RjAwQ0EzNjgyIC8qIFB1YmxpY0tleUNyZWRlbnRp
YWwuaWRsICovLAogCQkJCTU3MzAzQkU2MjAwOTc0N0EwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVk
ZW50aWFsQ3JlYXRpb25PcHRpb25zLmggKi8sCiAJCQkJNTczMDNCRTgyMDA5NzQ3QTAwMzU1OTY1
IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaWRsICovLAotCQkJCTU3RENF
RDcyMjE0MzA1RjAwMDE2Qjg0NyAvKiBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oICovLAogCQkJ
CTU3MzAzQkVDMjAwOTgwQkYwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRv
ci5oICovLAogCQkJCTU3MzAzQkVFMjAwOTgwQkYwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVkZW50
aWFsRGVzY3JpcHRvci5pZGwgKi8sCiAJCQkJNTczMDNDMDYyMDA5OThGODAwMzU1OTY1IC8qIFB1
YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oICovLApAQCAtMjAwNjcsNiArMjAwODEs
OCBAQAogCQkJCTU3RDEzNTI2MjI5NEE3QTcwMDgyNzQwMSAvKiBKU0F0dGVzdGF0aW9uQ29udmV5
YW5jZVByZWZlcmVuY2UuaCAqLywKIAkJCQk1N0RBNDdBQzIyNDAzMkRDMDAyQTQ2MTIgLyogSlNB
dXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuY3BwICovLAogCQkJCTU3REE0N0FE
MjI0MDMyREQwMDJBNDYxMiAvKiBKU0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0
cy5oICovLAorCQkJCTU3NTg1OTVDMjM5RjExMzAwMEM3NDU3MiAvKiBKU0F1dGhlbnRpY2F0aW9u
RXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuY3BwICovLAorCQkJCTU3NTg1OTVFMjM5RjExNzMwMEM3
NDU3MiAvKiBKU0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaCAqLywKIAkJ
CQk1NzMwM0MyRTIwMDlCN0RBMDAzNTU5NjUgLyogSlNBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2UuY3BwICovLAogCQkJCTU3MzAzQzJEMjAwOUI3RDkwMDM1NTk2NSAvKiBKU0F1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZS5oICovLAogCQkJCTU3MzAzQzIwMjAwOUFFRjUwMDM1NTk2
NSAvKiBKU0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcCAqLywKQEAgLTI5MDQy
LDYgKzI5MDU4LDcgQEAKIAkJCQk5MzRGNzEzQTBENUE2RjEwMDAwMThENjkgLyogQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI0NzQ4NDEwQUExNjFE
MDBCNzk0OTMgLyogQXV0aGVudGljYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3
REE0N0IwMjI0MDM0RTQwMDJBNDYxMiAvKiBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJ
bnB1dHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3NTg1OTZDMjM5RjMyMUMwMEM3NDU3MiAvKiBB
dXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTRDNzY0QzBDRTkyMzRFMDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25NYWMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTU3MzAzQzJDMjAwOUI0QTgwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQzFGMjAwOUFCNDIwMDM1
NTk2NSAvKiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yOTA0OSw2ICsyOTA2Niw3IEBACiAJCQkJNTc2MDgyNzIyMDIxNUE1NTAwMTE2Njc4IC8q
IEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcy
QjQwNDIyMTc4MTE0QTAwMEFENDNFIC8qIEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTU3MzAzQkQyMjAwODdBODMwMDM1NTk2NSAvKiBBdXRoZW50aWNh
dG9yUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3RENFRDc0MjE0MzA1RjAwMDE2Qjg0
NyAvKiBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzJC
NDA0MDIxNzgwMTcxMDAwQUQ0M0UgLyogQXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnMuaCBp
biBIZWFkZXJzICovLAogCQkJCTU3RENFRDkwMjE0ODdGRjcwMDE2Qjg0NyAvKiBBdXRoZW50aWNh
dG9yVHJhbnNwb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTAxOTIwRTEzMkVCRjJFMDA4QkZF
NTUgLyogQXV0b2NhcGl0YWxpemUuaCBpbiBIZWFkZXJzICovLApAQCAtMzA0MDAsNiArMzA0MTgs
NyBAQAogCQkJCUJFOEVGMDQzMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2suaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJFOEVGMDQ1MTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2tM
aXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0QxMzUyQTIyOTRBQTM5MDA4Mjc0MDEgLyogSlNB
dXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTU3NTg1OTYxMjM5RjEyNEQwMEM3NDU3MiAvKiBKU0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0Ns
aWVudE91dHB1dHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQzJGMjAwOUI3RTEwMDM1NTk2
NSAvKiBKU0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTczMDNDMjIyMDA5QUYwMzAwMzU1OTY1IC8qIEpTQXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQkUxMjAwOTVENjEwMDM1NTk2NSAv
KiBKU0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTc3NSw3ICsz
MTc5NCw2IEBACiAJCQkJRkY5NDVFQ0MxNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTU3RDg0NjJFMUZFQUY2OTkwMENBMzY4MiAvKiBQdWJsaWNL
ZXlDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzMwM0JFOTIwMDk3NDhEMDAzNTU5
NjUgLyogUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJNTdEQ0VENzQyMTQzMDVGMDAwMTZCODQ3IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxEYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzMwM0JFRjIwMDk4MEM2MDAzNTU5NjUgLyogUHVibGlj
S2V5Q3JlZGVudGlhbERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQzBBMjAw
OTlCQUQwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTU3MzAzQkVCMjAwOTdGNDAwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVk
ZW50aWFsVHlwZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yLmgKaW5kZXggZGNjODA5
ZTZhZGRjYTQ3MWIyMzM5MGIxY2FmYzFlMmM1M2JjZGMxMC4uMGQyNDcxM2JmNzNiYzA5ZTE3MzBh
MjkyMTY0OWNjYzg4ZWIxNzliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3IuaApAQCAtMjksOCArMjksOCBA
QAogCiAjaW5jbHVkZSAiV2ViQXV0aGVudGljYXRpb25GbGFncy5oIgogI2luY2x1ZGUgIldlYkF1
dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0
b3JSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uRGF0YS5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbERhdGEuaD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEF1dGhl
bnRpY2F0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxBdXRoZW50aWNhdG9yPiwgcHVibGljIENhbk1h
a2VXZWFrUHRyPEF1dGhlbnRpY2F0b3I+IHsKIHB1YmxpYzoKLSAgICB1c2luZyBSZXNwb25kID0g
VmFyaWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0
aW9uRGF0YT47CisgICAgdXNpbmcgUmVzcG9uZCA9IFZhcmlhbnQ8UmVmPFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JSZXNwb25zZT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+OwogCiAgICAgY2xhc3Mg
T2JzZXJ2ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8T2JzZXJ2ZXI+IHsKICAgICBwdWJsaWM6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggYmFhYmU4ZGVmMWQxMDI4
YzUyZmFiNzAxNDI2Mjg0NzcyN2VlYmU2MC4uNmZhZWRlNTQ3NjQ0YWI3ZDhmOTZlODkwZDgzOGEx
YmIxM2JjMDg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtMjQz
LDcgKzI0Myw3IEBAIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OnJlc3BvbmRSZWNlaXZlZChS
ZXNwb25kJiYgcmVzcG9uZCkKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVChtX3BlbmRpbmdD
b21wbGV0aW9uSGFuZGxlcik7CiAKLSAgICBhdXRvIHNob3VsZENvbXBsZXRlID0gV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxQdWJsaWNLZXlDcmVkZW50aWFsRGF0YT4ocmVzcG9uZCk7CisgICAgYXV0
byBzaG91bGRDb21wbGV0ZSA9IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEF1dGhlbnRpY2F0
b3JSZXNwb25zZT4+KHJlc3BvbmQpOwogICAgIGlmICghc2hvdWxkQ29tcGxldGUpCiAgICAgICAg
IHNob3VsZENvbXBsZXRlID0gV1RGOjpnZXQ8RXhjZXB0aW9uRGF0YT4ocmVzcG9uZCkuY29kZSA9
PSBJbnZhbGlkU3RhdGVFcnJvcjsKICAgICBpZiAoc2hvdWxkQ29tcGxldGUpIHsKQEAgLTM0OSw3
ICszNDksNyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpydW5QYW5lbCgpCiB2b2lkIEF1
dGhlbnRpY2F0b3JNYW5hZ2VyOjppbnZva2VQZW5kaW5nQ29tcGxldGlvbkhhbmRsZXIoUmVzcG9u
ZCYmIHJlc3BvbmQpCiB7CiAgICAgaWYgKGF1dG8gKnBhbmVsID0gbV9wZW5kaW5nUmVxdWVzdERh
dGEucGFuZWwuZ2V0KCkpIHsKLSAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXNwb25kLCBbJl0oY29u
c3QgUHVibGljS2V5Q3JlZGVudGlhbERhdGEmKSB7CisgICAgICAgIFdURjo6c3dpdGNoT24ocmVz
cG9uZCwgWyZdKGNvbnN0IFJlZjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+JikgewogICAgICAgICAg
ICAgcGFuZWwtPmNsaWVudCgpLmRpc21pc3NQYW5lbChXZWJBdXRoZW50aWNhdGlvblJlc3VsdDo6
U3VjY2VlZGVkKTsKICAgICAgICAgfSwgWyZdKGNvbnN0IEV4Y2VwdGlvbkRhdGEmKSB7CiAgICAg
ICAgICAgICBwYW5lbC0+Y2xpZW50KCkuZGlzbWlzc1BhbmVsKFdlYkF1dGhlbnRpY2F0aW9uUmVz
dWx0OjpGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKaW5kZXggZWVlMjRl
YTFhZDRlMzE1MmY5ZDc3NTg0ZjdlYjdkZDA2MzI0MjI3ZS4uZGM2YzQ0NDM5MTAwMTAwMjNiYjE1
NTI5ODA5ZTllZWE2NzBlZmIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCkBA
IC0zMCw4ICszMCw4IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRvci5oIgogI2luY2x1ZGUgIkF1
dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlLmgiCiAjaW5jbHVkZSAiV2ViQXV0aGVudGljYXRp
b25SZXF1ZXN0RGF0YS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvclJlc3BvbnNl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9QdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0b3JNYW5hZ2VyIDogcHVi
bGljIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlOjpPYnNlcnZlciwgcHViCiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXV0aGVudGlj
YXRvck1hbmFnZXIpOwogcHVibGljOgotICAgIHVzaW5nIFJlc3BvbmQgPSBWYXJpYW50PFdlYkNv
cmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPjsKKyAg
ICB1c2luZyBSZXNwb25kID0gVmFyaWFudDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3Bv
bnNlPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT47CiAgICAgdXNpbmcgQ2FsbGJhY2sgPSBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlc3BvbmQmJik+OwogICAgIHVzaW5nIFRyYW5zcG9ydFNldCA9
IEhhc2hTZXQ8V2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydCwgV1RGOjpJbnRIYXNoPFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRz
PFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+PjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNh
dG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
TG9jYWxBdXRoZW50aWNhdG9yLm1tCmluZGV4IDY4N2Q1ZGFkZjI1ZDk1YTRjMTQ1ZGFkY2JmYWIw
NTQ2M2M4ZTYyNzcuLjNjMjQwY2E2YTg5NGJkMTNmODk0MGRhNTQ0YzNkYTdhMzYxOTcwZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L0xvY2FsQXV0aGVudGljYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KQEAgLTI5LDEwICsyOSwx
MSBAQAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbXBvcnQgPFNlY3VyaXR5L1NlY0l0ZW0u
aD4KKyNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0NCT1JXcml0ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRXhjZXB0aW9uRGF0
YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25z
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxEYXRhLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJBdXRoZW50aWNhdGlvblV0aWxzLmg+CkBAIC0zNDAsNyArMzQxLDcgQEAgdm9pZCBMb2NhbEF1
dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKFNlY0tleVJl
ZiBwcml2YXRlS2UKICAgICB9CiAgICAgYXV0byBhdHRlc3RhdGlvbk9iamVjdCA9IGJ1aWxkQXR0
ZXN0YXRpb25PYmplY3QoV1RGTW92ZShhdXRoRGF0YSksICJBcHBsZSIsIFdURk1vdmUoYXR0ZXN0
YXRpb25TdGF0ZW1lbnRNYXApLCBjcmVhdGlvbk9wdGlvbnMuYXR0ZXN0YXRpb24pOwogCi0gICAg
cmVjZWl2ZVJlc3BvbmQoUHVibGljS2V5Q3JlZGVudGlhbERhdGEgeyBBcnJheUJ1ZmZlcjo6Y3Jl
YXRlKGNyZWRlbnRpYWxJZC5kYXRhKCksIGNyZWRlbnRpYWxJZC5zaXplKCkpLCB0cnVlLCBudWxs
cHRyLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF0dGVzdGF0aW9uT2JqZWN0LmRhdGEoKSwgYXR0ZXN0
YXRpb25PYmplY3Quc2l6ZSgpKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgV1RGOjpudWxs
b3B0IH0pOworICAgIHJlY2VpdmVSZXNwb25kKEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3Bv
bnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9iamVjdCkpOwogfQogCiB2b2lk
IExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKCkKQEAgLTQ4MSw3ICs0ODIsNyBAQCB2
b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJDb25z
ZW50ZWQoTG9jYWxDb25uZWN0aW9uOgogICAgIH0KIAogICAgIC8vIFN0ZXAgMTMuCi0gICAgcmVj
ZWl2ZVJlc3BvbmQoUHVibGljS2V5Q3JlZGVudGlhbERhdGEgeyBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KGNyZWRlbnRpYWxJZC5kYXRhKCksIGNyZWRlbnRpYWxJZC5zaXplKCkpLCBmYWxzZSwgbnVsbHB0
ciwgbnVsbHB0ciwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoRGF0YS5kYXRhKCksIGF1dGhEYXRh
LnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUoc2lnbmF0dXJlLmRhdGEoKSwgc2lnbmF0dXJl
LnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUodXNlcmhhbmRsZS5kYXRhKCksIHVzZXJoYW5k
bGUuc2l6ZSgpKSwgV1RGOjpudWxsb3B0IH0pOworICAgIHJlY2VpdmVSZXNwb25kKEF1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKGNyZWRlbnRpYWxJZCwgYXV0aERhdGEsIHNp
Z25hdHVyZSwgdXNlcmhhbmRsZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcAppbmRl
eCAwNTY2MDIxNDMxNDg1YTNjNDU4YjhkOTJhYzBjOGJmOTNjODJjNjk4Li5lNzI4MzFmODExNTc1
MGI5YmEwZmY2ZTQ2NmQ1NDhiNjk1ZWRiM2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC0zNSw4ICszNSw4IEBACiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5j
bHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRv
clJlc3BvbnNlRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uRGF0YS5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbERhdGEuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTY3LDEwICs2NywxMCBAQCB2b2lkIFdlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpnZXRBc3NlcnRpb24oRnJhbWVJZGVudGlmaWVyIGZy
YW1lSWQsIFNlYwogCiB2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpoYW5k
bGVSZXF1ZXN0KFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEmJiBkYXRhLCBSZXF1ZXN0Q29t
cGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQogewotICAgIGF1dG8gY2FsbGJhY2sgPSBbaGFuZGxl
ciA9IFdURk1vdmUoaGFuZGxlcildIChWYXJpYW50PFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLCBF
eGNlcHRpb25EYXRhPiYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgYXV0byBjYWxsYmFjayA9IFto
YW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0gKFZhcmlhbnQ8UmVmPEF1dGhlbnRpY2F0b3JSZXNw
b25zZT4sIEV4Y2VwdGlvbkRhdGE+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShj
b25zdCBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYgZGF0YSkgewotICAgICAgICAgICAgaGFuZGxl
cihkYXRhLCB7IH0pOworICAgICAgICBXVEY6OnN3aXRjaE9uKHJlc3VsdCwgWyZdKGNvbnN0IFJl
ZjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+JiByZXNwb25zZSkgeworICAgICAgICAgICAgaGFuZGxl
cihyZXNwb25zZS0+ZGF0YSgpLCB7IH0pOwogICAgICAgICB9LCBbJl0oY29uc3QgRXhjZXB0aW9u
RGF0YSYgZXhjZXB0aW9uKSB7CiAgICAgICAgICAgICBoYW5kbGVyKHsgfSwgZXhjZXB0aW9uKTsK
ICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yUHJveHkuaAppbmRleCBlYWQ4NjRjMjEzYWMyYTdjZWZmNzRmZGM3ZDYxYTk3ZTdmNTgzNzhi
Li43OTY5OTc5ZGM4NTU2M2YyOTEyN2ZlZDM4N2Y4MDc0Y2I5NDYzNGVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmgKQEAgLTM1LDcgKzM1
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBFeGNlcHRpb25EYXRhOwogc3RydWN0
IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM7Ci1zdHJ1Y3QgUHVibGljS2V5Q3Jl
ZGVudGlhbERhdGE7CitzdHJ1Y3QgQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YTsKIHN0cnVjdCBQ
dWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM7CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5E
YXRhOwogfQpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgfldlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5KCk7CiAKIHByaXZhdGU6Ci0gICAgdXNpbmcgUmVxdWVzdENvbXBsZXRp
b25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpQdWJsaWNL
ZXlDcmVkZW50aWFsRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKT47CisgICAg
dXNpbmcgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiwgY29uc3QgV2ViQ29yZTo6
RXhjZXB0aW9uRGF0YSYpPjsKICAgICB1c2luZyBRdWVyeUNvbXBsZXRpb25IYW5kbGVyID0gQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT47CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZTc4YjAxNmU5Y2QxZTFmZmI1YzkyNzgxMDIyODlh
N2JhNmM2MzM3NC4uMjcwOGIxZmM4ZTY2ZmNlNGI5MWRiN2E3M2U5ODYzMmIzMWYxZjYyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHkubWVzc2FnZXMuaW4KQEAgLTI2LDggKzI2LDggQEAKIAogbWVzc2FnZXMgLT4gV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkgTm90UmVmQ291bnRlZCB7CiAKLSAgICBNYWtlQ3Jl
ZGVudGlhbChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW4sIFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3Qg
V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBvcHRpb25zKSAtPiAo
c3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIGRhdGEsIHN0cnVjdCBXZWJD
b3JlOjpFeGNlcHRpb25EYXRhIGV4Y2VwdGlvbikgQXN5bmMKLSAgICBHZXRBc3NlcnRpb24oV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEgb3JpZ2luLCBWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1
YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyBvcHRpb25zKSAtPiAoc3RydWN0IFdlYkNv
cmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIGRhdGEsIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRp
b25EYXRhIGV4Y2VwdGlvbikgQXN5bmMKKyAgICBNYWtlQ3JlZGVudGlhbChXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBv
cmlnaW4sIFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3Jl
ZGVudGlhbENyZWF0aW9uT3B0aW9ucyBvcHRpb25zKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEg
ZXhjZXB0aW9uKSBBc3luYworICAgIEdldEFzc2VydGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW4sIFZl
Y3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJl
cXVlc3RPcHRpb25zIG9wdGlvbnMpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJl
c3BvbnNlRGF0YSBkYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24p
IEFzeW5jCiAgICAgSXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxl
KCkgLT4gKGJvb2wgcmVzdWx0KSBBc3luYwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhl
bnRpY2F0b3IuY3BwCmluZGV4IGZkMjM0NmZkMmQ3NzllNjI3NWNlODNhMzkxZDYwNjFlZmY2ZTlj
YjIuLjllNDFlYjcxYWRjNTg0NGVmZWRlNDBjNjdkZmUyMzNmZDg2YWM1YTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhl
bnRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgQ3Rh
cEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclJlc3BvbnNlUmVjZWl2
ZWQoVmVjdG9yPHVpbnQ4CiAgICAgICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRh
IHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJVbmtub3duIGludGVybmFsIGVycm9yLiBFcnJv
ciBjb2RlOiAiLCBzdGF0aWNfY2FzdDx1aW50OF90PihlcnJvcikpIH0pOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIHJlY2VpdmVSZXNwb25kKFdURk1vdmUoKnJlc3BvbnNlKSk7CisgICAg
cmVjZWl2ZVJlc3BvbmQocmVzcG9uc2UucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKIHZvaWQgQ3Rh
cEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbigpCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBD
dGFwQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRpb25BZnRlclJlc3BvbnNlUmVjZWl2
ZWQoVmVjdG9yPHVpbnQ4X3QKICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7
IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3Ig
Y29kZTogIiwgc3RhdGljX2Nhc3Q8dWludDhfdD4oZXJyb3IpKSB9KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICByZWNlaXZlUmVzcG9uZChXVEZNb3ZlKCpyZXNwb25zZSkpOworICAgIHJl
Y2VpdmVSZXNwb25kKHJlc3BvbnNlLnJlbGVhc2VOb25OdWxsKCkpOwogfQogCiBib29sIEN0YXBB
dXRoZW50aWNhdG9yOjp0cnlEb3duZ3JhZGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGlj
YXRvci5jcHAKaW5kZXggOWQzYmRhNTJhNWViMTRiOTVlYWMxZjU1NDU3Mzk2NmUzYTI4ZTM1Zi4u
Yzc1NzU5ZmEzMmQ5ODllOTU0ZDcyMjRiNjQ2M2VjMGU2MmEyYTgxNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNh
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9m
aWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBVMmZBdXRo
ZW50aWNhdG9yOjpjb250aW51ZVJlZ2lzdGVyQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChB
cGR1UmVzcG9uc2UKICAgICAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBV
bmtub3duRXJyb3IsICJDb3VsZG4ndCBwYXJzZSB0aGUgVTJGIHJlZ2lzdGVyIHJlc3BvbnNlLiJf
cyB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICByZWNlaXZlUmVz
cG9uZChXVEZNb3ZlKCpyZXNwb25zZSkpOworICAgICAgICByZWNlaXZlUmVzcG9uZChyZXNwb25z
ZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEFw
ZHVSZXNwb25zZTo6U3RhdHVzOjpTV19DT05ESVRJT05TX05PVF9TQVRJU0ZJRUQ6CkBAIC0yMDUs
NyArMjA1LDcgQEAgdm9pZCBVMmZBdXRoZW50aWNhdG9yOjpjb250aW51ZVNpZ25Db21tYW5kQWZ0
ZXJSZXNwb25zZVJlY2VpdmVkKEFwZHVSZXNwb25zZSYmIGEKICAgICBhdXRvJiByZXF1ZXN0T3B0
aW9ucyA9IFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4ocmVxdWVz
dERhdGEoKS5vcHRpb25zKTsKICAgICBzd2l0Y2ggKGFwZHVSZXNwb25zZS5zdGF0dXMoKSkgewog
ICAgIGNhc2UgQXBkdVJlc3BvbnNlOjpTdGF0dXM6OlNXX05PX0VSUk9SOiB7Ci0gICAgICAgIE9w
dGlvbmFsPFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhPiByZXNwb25zZTsKKyAgICAgICAgUmVmUHRy
PEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gcmVzcG9uc2U7CiAgICAgICAgIGlmICht
X2lzQXBwSWQpIHsKICAgICAgICAgICAgIEFTU0VSVChyZXF1ZXN0T3B0aW9ucy5leHRlbnNpb25z
ICYmICFyZXF1ZXN0T3B0aW9ucy5leHRlbnNpb25zLT5hcHBpZC5pc051bGwoKSk7CiAgICAgICAg
ICAgICByZXNwb25zZSA9IHJlYWRVMmZTaWduUmVzcG9uc2UocmVxdWVzdE9wdGlvbnMuZXh0ZW5z
aW9ucy0+YXBwaWQsIHJlcXVlc3RPcHRpb25zLmFsbG93Q3JlZGVudGlhbHNbbV9uZXh0TGlzdElu
ZGV4IC0gMV0uaWRWZWN0b3IsIGFwZHVSZXNwb25zZS5kYXRhKCkpOwpAQCAtMjE2LDkgKzIxNiw5
IEBAIHZvaWQgVTJmQXV0aGVudGljYXRvcjo6Y29udGludWVTaWduQ29tbWFuZEFmdGVyUmVzcG9u
c2VSZWNlaXZlZChBcGR1UmVzcG9uc2UmJiBhCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgaWYgKG1faXNBcHBJZCkKLSAgICAgICAgICAgIHJlc3BvbnNlLT5hcHBpZCA9
IG1faXNBcHBJZDsKKyAgICAgICAgICAgIHJlc3BvbnNlLT5zZXRFeHRlbnNpb25zKHsgbV9pc0Fw
cElkIH0pOwogCi0gICAgICAgIHJlY2VpdmVSZXNwb25kKFdURk1vdmUoKnJlc3BvbnNlKSk7Cisg
ICAgICAgIHJlY2VpdmVSZXNwb25kKHJlc3BvbnNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgQXBkdVJlc3BvbnNlOjpTdGF0dXM6OlNXX0NPTkRJ
VElPTlNfTk9UX1NBVElTRklFRDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvci5jcHAKaW5kZXggZTYxMzgzYzRlMGE0OGY4MmMxMzFiODJkNmQwY2I1ODVjYTlm
ZDgwYS4uNDE1Njk2NWJjYTUzNjhhNjk3MmFiZDY1YmE0NGYyNmFlOTE3MWQ0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKQEAgLTMxLDggKzMx
LDggQEAKICNpbmNsdWRlICJXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9BdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9QdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHVibGljS2V5
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5oPgogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggN2ZhZDZmYzlkNGQ2Njc2YWJmMzk3MWQzMzBiNDUxY2RkMTBmYTJmZi4uNjAxZDU2MWVk
MGE4ZGFhMTJlMzM1M2ZiYmFhZTgxMzc5YTYzMzBjNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTEyLTA5ICBK
aWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBD
b21iaW5lIEF1dGhlbnRpY2F0b3JSZXNwb25zZSBhbmQgUHVibGljS2V5Q3JlZGVudGlhbERhdGEK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDc4Mwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTc3ODExODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QnJlbnQgRnVsZ2hhbS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9D
dGFwUmVzcG9uc2VUZXN0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAg
ICAgICBVcGRhdGVzIHRlc3RzIGFjY29yZGluZ2x5LgorCiAyMDE5LTEyLTEwICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgV0tXZWJWaWV3IGNv
ZGUgcmVsYXRlZCB0byB0ZXN0aW5nIHRvIG5ldyBmaWxlcywgd2l0aCB0aGVpciBvd24gaGVhZGVy
cywgYW5kIHN0b3AgZXhwb3NpbmcgdGVzdC1vbmx5IGZ1bmN0aW9ucyBhcyBTUEkuCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlc3BvbnNlVGVzdC5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlc3BvbnNlVGVzdC5j
cHAKaW5kZXggY2FjYTU5OGRjZTZhY2MyZWZjZGQ5NmVkODZhZDZmOTU1YzMxMTNkMi4uNDA4Yzk0
ZWRmNzQ0NjIzZWUyYTEwMzY1ZjE3MWM5NzAyMzYzNWEzOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBSZXNwb25zZVRlc3QuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9uc2VUZXN0LmNwcApAQCAtMzU1
LDcgKzM1NSw3IEBAIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFJlYWRNYWtlQ3JlZGVudGlh
bFJlc3BvbnNlKQogewogICAgIGF1dG8gbWFrZUNyZWRlbnRpYWxSZXNwb25zZSA9IHJlYWRDVEFQ
TWFrZUNyZWRlbnRpYWxSZXNwb25zZShjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1Rl
c3RNYWtlQ3JlZGVudGlhbFJlc3BvbnNlLCBzaXplb2YoVGVzdERhdGE6OmtUZXN0TWFrZUNyZWRl
bnRpYWxSZXNwb25zZSkpKTsKICAgICBBU1NFUlRfVFJVRShtYWtlQ3JlZGVudGlhbFJlc3BvbnNl
KTsKLSAgICBhdXRvIGNib3JBdHRlc3RhdGlvbk9iamVjdCA9IGNib3I6OkNCT1JSZWFkZXI6OnJl
YWQoY29udmVydEJ5dGVzVG9WZWN0b3IocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4obWFrZUNy
ZWRlbnRpYWxSZXNwb25zZS0+YXR0ZXN0YXRpb25PYmplY3QtPmRhdGEoKSksIG1ha2VDcmVkZW50
aWFsUmVzcG9uc2UtPmF0dGVzdGF0aW9uT2JqZWN0LT5ieXRlTGVuZ3RoKCkpKTsKKyAgICBhdXRv
IGNib3JBdHRlc3RhdGlvbk9iamVjdCA9IGNib3I6OkNCT1JSZWFkZXI6OnJlYWQoY29udmVydEJ5
dGVzVG9WZWN0b3IocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4obWFrZUNyZWRlbnRpYWxSZXNw
b25zZS0+YXR0ZXN0YXRpb25PYmplY3QoKS0+ZGF0YSgpKSwgbWFrZUNyZWRlbnRpYWxSZXNwb25z
ZS0+YXR0ZXN0YXRpb25PYmplY3QoKS0+Ynl0ZUxlbmd0aCgpKSk7CiAgICAgQVNTRVJUX1RSVUUo
Y2JvckF0dGVzdGF0aW9uT2JqZWN0KTsKICAgICBBU1NFUlRfVFJVRShjYm9yQXR0ZXN0YXRpb25P
YmplY3QtPmlzTWFwKCkpOwogCkBAIC0zOTMsOCArMzkzLDggQEAgVEVTVChDVEFQUmVzcG9uc2VU
ZXN0LCBUZXN0UmVhZE1ha2VDcmVkZW50aWFsUmVzcG9uc2UpCiAgICAgQVNTRVJUX0VRKGNlcnRp
ZmljYXRlLmdldEFycmF5KCkuc2l6ZSgpLCAxdSk7CiAgICAgQVNTRVJUX1RSVUUoY2VydGlmaWNh
dGUuZ2V0QXJyYXkoKVswXS5pc0J5dGVTdHJpbmcoKSk7CiAgICAgRVhQRUNUX0VRKGNlcnRpZmlj
YXRlLmdldEFycmF5KClbMF0uZ2V0Qnl0ZVN0cmluZygpLCBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihU
ZXN0RGF0YTo6a0N0YXAyTWFrZUNyZWRlbnRpYWxDZXJ0aWZpY2F0ZSwgc2l6ZW9mKFRlc3REYXRh
OjprQ3RhcDJNYWtlQ3JlZGVudGlhbENlcnRpZmljYXRlKSkpOwotICAgIEVYUEVDVF9FUShtYWtl
Q3JlZGVudGlhbFJlc3BvbnNlLT5yYXdJZC0+Ynl0ZUxlbmd0aCgpLCBzaXplb2YoVGVzdERhdGE6
OmtDdGFwMk1ha2VDcmVkZW50aWFsQ3JlZGVudGlhbElkKSk7Ci0gICAgRVhQRUNUX0VRKG1lbWNt
cChtYWtlQ3JlZGVudGlhbFJlc3BvbnNlLT5yYXdJZC0+ZGF0YSgpLCBUZXN0RGF0YTo6a0N0YXAy
TWFrZUNyZWRlbnRpYWxDcmVkZW50aWFsSWQsIHNpemVvZihUZXN0RGF0YTo6a0N0YXAyTWFrZUNy
ZWRlbnRpYWxDcmVkZW50aWFsSWQpKSwgMCk7CisgICAgRVhQRUNUX0VRKG1ha2VDcmVkZW50aWFs
UmVzcG9uc2UtPnJhd0lkKCktPmJ5dGVMZW5ndGgoKSwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcDJN
YWtlQ3JlZGVudGlhbENyZWRlbnRpYWxJZCkpOworICAgIEVYUEVDVF9FUShtZW1jbXAobWFrZUNy
ZWRlbnRpYWxSZXNwb25zZS0+cmF3SWQoKS0+ZGF0YSgpLCBUZXN0RGF0YTo6a0N0YXAyTWFrZUNy
ZWRlbnRpYWxDcmVkZW50aWFsSWQsIHNpemVvZihUZXN0RGF0YTo6a0N0YXAyTWFrZUNyZWRlbnRp
YWxDcmVkZW50aWFsSWQpKSwgMCk7CiB9CiAKIC8vIExldmVyYWdpbmcgZXhhbXBsZSA1IG9mIHNl
Y3Rpb24gNi4xIG9mIHRoZSBDVEFQIHNwZWMuCkBAIC00MDQsMTAgKzQwNCwxMCBAQCBURVNUKENU
QVBSZXNwb25zZVRlc3QsIFRlc3RSZWFkR2V0QXNzZXJ0aW9uUmVzcG9uc2UpCiAgICAgYXV0byBn
ZXRBc3NlcnRpb25SZXNwb25zZSA9IHJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoY29udmVy
dEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtEZXZpY2VHZXRBc3NlcnRpb25SZXNwb25zZSwgc2l6
ZW9mKFRlc3REYXRhOjprRGV2aWNlR2V0QXNzZXJ0aW9uUmVzcG9uc2UpKSk7CiAgICAgQVNTRVJU
X1RSVUUoZ2V0QXNzZXJ0aW9uUmVzcG9uc2UpOwogCi0gICAgRVhQRUNUX0VRKGdldEFzc2VydGlv
blJlc3BvbnNlLT5hdXRoZW50aWNhdG9yRGF0YS0+Ynl0ZUxlbmd0aCgpLCBzaXplb2YoVGVzdERh
dGE6OmtDdGFwMkdldEFzc2VydGlvbkF1dGhEYXRhKSk7Ci0gICAgRVhQRUNUX0VRKG1lbWNtcChn
ZXRBc3NlcnRpb25SZXNwb25zZS0+YXV0aGVudGljYXRvckRhdGEtPmRhdGEoKSwgVGVzdERhdGE6
OmtDdGFwMkdldEFzc2VydGlvbkF1dGhEYXRhLCBzaXplb2YoVGVzdERhdGE6OmtDdGFwMkdldEFz
c2VydGlvbkF1dGhEYXRhKSksIDApOwotICAgIEVYUEVDVF9FUShnZXRBc3NlcnRpb25SZXNwb25z
ZS0+c2lnbmF0dXJlLT5ieXRlTGVuZ3RoKCksIHNpemVvZihUZXN0RGF0YTo6a0N0YXAyR2V0QXNz
ZXJ0aW9uU2lnbmF0dXJlKSk7Ci0gICAgRVhQRUNUX0VRKG1lbWNtcChnZXRBc3NlcnRpb25SZXNw
b25zZS0+c2lnbmF0dXJlLT5kYXRhKCksIFRlc3REYXRhOjprQ3RhcDJHZXRBc3NlcnRpb25TaWdu
YXR1cmUsIHNpemVvZihUZXN0RGF0YTo6a0N0YXAyR2V0QXNzZXJ0aW9uU2lnbmF0dXJlKSksIDAp
OworICAgIEVYUEVDVF9FUShnZXRBc3NlcnRpb25SZXNwb25zZS0+YXV0aGVudGljYXRvckRhdGEo
KS0+Ynl0ZUxlbmd0aCgpLCBzaXplb2YoVGVzdERhdGE6OmtDdGFwMkdldEFzc2VydGlvbkF1dGhE
YXRhKSk7CisgICAgRVhQRUNUX0VRKG1lbWNtcChnZXRBc3NlcnRpb25SZXNwb25zZS0+YXV0aGVu
dGljYXRvckRhdGEoKS0+ZGF0YSgpLCBUZXN0RGF0YTo6a0N0YXAyR2V0QXNzZXJ0aW9uQXV0aERh
dGEsIHNpemVvZihUZXN0RGF0YTo6a0N0YXAyR2V0QXNzZXJ0aW9uQXV0aERhdGEpKSwgMCk7Cisg
ICAgRVhQRUNUX0VRKGdldEFzc2VydGlvblJlc3BvbnNlLT5zaWduYXR1cmUoKS0+Ynl0ZUxlbmd0
aCgpLCBzaXplb2YoVGVzdERhdGE6OmtDdGFwMkdldEFzc2VydGlvblNpZ25hdHVyZSkpOworICAg
IEVYUEVDVF9FUShtZW1jbXAoZ2V0QXNzZXJ0aW9uUmVzcG9uc2UtPnNpZ25hdHVyZSgpLT5kYXRh
KCksIFRlc3REYXRhOjprQ3RhcDJHZXRBc3NlcnRpb25TaWduYXR1cmUsIHNpemVvZihUZXN0RGF0
YTo6a0N0YXAyR2V0QXNzZXJ0aW9uU2lnbmF0dXJlKSksIDApOwogfQogCiAvLyBUZXN0IHRoYXQg
VTJGIHJlZ2lzdGVyIHJlc3BvbnNlIGlzIHByb3Blcmx5IHBhcnNlZC4KQEAgLTQxNSwxMiArNDE1
LDExIEBAIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFBhcnNlUmVnaXN0ZXJSZXNwb25zZURh
dGEpCiB7CiAgICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3RE
YXRhOjprUmVseWluZ1BhcnR5SWQsIGNvbnZlcnRCeXRlc1RvVmVjdG9yKFRlc3REYXRhOjprVGVz
dFUyZlJlZ2lzdGVyUmVzcG9uc2UsIHNpemVvZihUZXN0RGF0YTo6a1Rlc3RVMmZSZWdpc3RlclJl
c3BvbnNlKSkpOwogICAgIEFTU0VSVF9UUlVFKHJlc3BvbnNlKTsKLSAgICBFWFBFQ1RfRVEocmVz
cG9uc2UtPnJhd0lkLT5ieXRlTGVuZ3RoKCksIHNpemVvZihUZXN0RGF0YTo6a1UyZlNpZ25LZXlI
YW5kbGUpKTsKLSAgICBFWFBFQ1RfRVEobWVtY21wKHJlc3BvbnNlLT5yYXdJZC0+ZGF0YSgpLCBU
ZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUsIHNpemVvZihUZXN0RGF0YTo6a1UyZlNpZ25LZXlI
YW5kbGUpKSwgMCk7Ci0gICAgRVhQRUNUX1RSVUUocmVzcG9uc2UtPmlzQXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2UpOworICAgIEVYUEVDVF9FUShyZXNwb25zZS0+cmF3SWQoKS0+Ynl0
ZUxlbmd0aCgpLCBzaXplb2YoVGVzdERhdGE6OmtVMmZTaWduS2V5SGFuZGxlKSk7CisgICAgRVhQ
RUNUX0VRKG1lbWNtcChyZXNwb25zZS0+cmF3SWQoKS0+ZGF0YSgpLCBUZXN0RGF0YTo6a1UyZlNp
Z25LZXlIYW5kbGUsIHNpemVvZihUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUpKSwgMCk7CiAg
ICAgYXV0byBleHBlY3RlZEF0dGVzdGF0aW9uT2JqZWN0ID0gZ2V0VGVzdEF0dGVzdGF0aW9uT2Jq
ZWN0Qnl0ZXMoKTsKLSAgICBFWFBFQ1RfRVEocmVzcG9uc2UtPmF0dGVzdGF0aW9uT2JqZWN0LT5i
eXRlTGVuZ3RoKCksIGV4cGVjdGVkQXR0ZXN0YXRpb25PYmplY3Quc2l6ZSgpKTsKLSAgICBFWFBF
Q1RfRVEobWVtY21wKHJlc3BvbnNlLT5hdHRlc3RhdGlvbk9iamVjdC0+ZGF0YSgpLCBleHBlY3Rl
ZEF0dGVzdGF0aW9uT2JqZWN0LmRhdGEoKSwgZXhwZWN0ZWRBdHRlc3RhdGlvbk9iamVjdC5zaXpl
KCkpLCAwKTsKKyAgICBFWFBFQ1RfRVEocmVzcG9uc2UtPmF0dGVzdGF0aW9uT2JqZWN0KCktPmJ5
dGVMZW5ndGgoKSwgZXhwZWN0ZWRBdHRlc3RhdGlvbk9iamVjdC5zaXplKCkpOworICAgIEVYUEVD
VF9FUShtZW1jbXAocmVzcG9uc2UtPmF0dGVzdGF0aW9uT2JqZWN0KCktPmRhdGEoKSwgZXhwZWN0
ZWRBdHRlc3RhdGlvbk9iamVjdC5kYXRhKCksIGV4cGVjdGVkQXR0ZXN0YXRpb25PYmplY3Quc2l6
ZSgpKSwgMCk7CiB9CiAKIC8vIFRlc3QgbWFsZm9ybWVkIHVzZXIgcHVibGljIGtleS4KQEAgLTUy
MiwxMyArNTIxLDEyIEBAIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFBhcnNlU2lnblJlc3Bv
bnNlRGF0YSkKIHsKICAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlNpZ25SZXNwb25zZShUZXN0
RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0Q3JlZGVudGlhbFJhd0lkQnl0ZXMoKSwgZ2V0
VGVzdFNpZ25SZXNwb25zZSgpKTsKICAgICBBU1NFUlRfVFJVRShyZXNwb25zZSk7Ci0gICAgRVhQ
RUNUX0VRKHJlc3BvbnNlLT5yYXdJZC0+Ynl0ZUxlbmd0aCgpLCBzaXplb2YoVGVzdERhdGE6OmtV
MmZTaWduS2V5SGFuZGxlKSk7Ci0gICAgRVhQRUNUX0VRKG1lbWNtcChyZXNwb25zZS0+cmF3SWQt
PmRhdGEoKSwgVGVzdERhdGE6OmtVMmZTaWduS2V5SGFuZGxlLCBzaXplb2YoVGVzdERhdGE6OmtV
MmZTaWduS2V5SGFuZGxlKSksIDApOwotICAgIEVYUEVDVF9GQUxTRShyZXNwb25zZS0+aXNBdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSk7Ci0gICAgRVhQRUNUX0VRKHJlc3BvbnNlLT5h
dXRoZW50aWNhdG9yRGF0YS0+Ynl0ZUxlbmd0aCgpLCBzaXplb2YoVGVzdERhdGE6OmtUZXN0U2ln
bkF1dGhlbnRpY2F0b3JEYXRhKSk7Ci0gICAgRVhQRUNUX0VRKG1lbWNtcChyZXNwb25zZS0+YXV0
aGVudGljYXRvckRhdGEtPmRhdGEoKSwgVGVzdERhdGE6OmtUZXN0U2lnbkF1dGhlbnRpY2F0b3JE
YXRhLCBzaXplb2YoVGVzdERhdGE6OmtUZXN0U2lnbkF1dGhlbnRpY2F0b3JEYXRhKSksIDApOwot
ICAgIEVYUEVDVF9FUShyZXNwb25zZS0+c2lnbmF0dXJlLT5ieXRlTGVuZ3RoKCksIHNpemVvZihU
ZXN0RGF0YTo6a1UyZlNpZ25hdHVyZSkpOwotICAgIEVYUEVDVF9FUShtZW1jbXAocmVzcG9uc2Ut
PnNpZ25hdHVyZS0+ZGF0YSgpLCBUZXN0RGF0YTo6a1UyZlNpZ25hdHVyZSwgc2l6ZW9mKFRlc3RE
YXRhOjprVTJmU2lnbmF0dXJlKSksIDApOworICAgIEVYUEVDVF9FUShyZXNwb25zZS0+cmF3SWQo
KS0+Ynl0ZUxlbmd0aCgpLCBzaXplb2YoVGVzdERhdGE6OmtVMmZTaWduS2V5SGFuZGxlKSk7Cisg
ICAgRVhQRUNUX0VRKG1lbWNtcChyZXNwb25zZS0+cmF3SWQoKS0+ZGF0YSgpLCBUZXN0RGF0YTo6
a1UyZlNpZ25LZXlIYW5kbGUsIHNpemVvZihUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUpKSwg
MCk7CisgICAgRVhQRUNUX0VRKHJlc3BvbnNlLT5hdXRoZW50aWNhdG9yRGF0YSgpLT5ieXRlTGVu
Z3RoKCksIHNpemVvZihUZXN0RGF0YTo6a1Rlc3RTaWduQXV0aGVudGljYXRvckRhdGEpKTsKKyAg
ICBFWFBFQ1RfRVEobWVtY21wKHJlc3BvbnNlLT5hdXRoZW50aWNhdG9yRGF0YSgpLT5kYXRhKCks
IFRlc3REYXRhOjprVGVzdFNpZ25BdXRoZW50aWNhdG9yRGF0YSwgc2l6ZW9mKFRlc3REYXRhOjpr
VGVzdFNpZ25BdXRoZW50aWNhdG9yRGF0YSkpLCAwKTsKKyAgICBFWFBFQ1RfRVEocmVzcG9uc2Ut
PnNpZ25hdHVyZSgpLT5ieXRlTGVuZ3RoKCksIHNpemVvZihUZXN0RGF0YTo6a1UyZlNpZ25hdHVy
ZSkpOworICAgIEVYUEVDVF9FUShtZW1jbXAocmVzcG9uc2UtPnNpZ25hdHVyZSgpLT5kYXRhKCks
IFRlc3REYXRhOjprVTJmU2lnbmF0dXJlLCBzaXplb2YoVGVzdERhdGE6OmtVMmZTaWduYXR1cmUp
KSwgMCk7CiB9CiAKIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFBhcnNlVTJmU2lnbldpdGhO
dWxsS2V5SGFuZGxlKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>