<?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>124059</bug_id>
          
          <creation_ts>2013-11-08 11:42:04 -0800</creation_ts>
          <short_desc>Implement JWK key import for HMAC and AES-CBC</short_desc>
          <delta_ts>2013-11-08 14:03:45 -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>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>122679</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>948770</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-08 11:42:04 -0800</bug_when>
    <thetext>Starting with a simple case - JWK or another complex format will be needed to import RSA and EC keys.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948776</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-08 11:49:41 -0800</bug_when>
    <thetext>Note that this is governed by multiple unfinished specs, those being WebCrypto, JWK/JWA, and Netflix key wrap proposal. Those don&apos;t agree about things yet.

In particular,
- Netflix proposes a JWK &quot;use&quot;:&quot;wrap&quot; value, which is explicitly unnecessary per JWK,
- Netflix proposes an &quot;extractable&quot; JWK key, which is not in any formally published spec yet,
- we need algorithms that are not specified anywhere yet,
- WebCrypto and JWA appear to have vague but different requirements on key length for each algorithm (they are sometimes permissive).

It will get worse once we get to key unwrapping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948781</commentid>
    <comment_count>2</comment_count>
      <attachid>216421</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-08 12:07:24 -0800</bug_when>
    <thetext>Created attachment 216421
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948782</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-08 12:10:04 -0800</bug_when>
    <thetext>Attachment 216421 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/crypto/subtle/aes-cbc-import-jwk-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/aes-cbc-import-jwk.html&apos;, u&apos;LayoutTests/crypto/subtle/hmac-import-jwk-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/hmac-import-jwk.html&apos;, u&apos;LayoutTests/crypto/subtle/import-jwk-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/import-jwk.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.h&apos;, u&apos;Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp&apos;, u&apos;Source/WebCore/crypto/CryptoAlgorithm.cpp&apos;, u&apos;Source/WebCore/crypto/CryptoAlgorithm.h&apos;, u&apos;Source/WebCore/crypto/CryptoKeyData.h&apos;, u&apos;Source/WebCore/crypto/CryptoKeyFormat.h&apos;, u&apos;Source/WebCore/crypto/CryptoKeySerialization.h&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.h&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.cpp&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.h&apos;, u&apos;Source/WebCore/crypto/keys/CryptoKeyDataOctetSequence.cpp&apos;, u&apos;Source/WebCore/crypto/keys/CryptoKeyDataOctetSequence.h&apos;, u&apos;Source/WebCore/crypto/keys/CryptoKeySerializationRaw.cpp&apos;, u&apos;Source/WebCore/crypto/keys/CryptoKeySerializationRaw.h&apos;]&quot; exit_code: 1
Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:72:  CryptoAlgorithmAES_CBC::importKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.cpp:195:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp:53:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp:56:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp:59:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp:435:  Missing space before ( in switch(  [whitespace/parens] [5]
Total errors found: 6 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948801</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-08 12:59:23 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/158943&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948836</commentid>
    <comment_count>5</comment_count>
      <attachid>216421</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-11-08 14:03:45 -0800</bug_when>
    <thetext>Comment on attachment 216421
proposed patch

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

&gt; Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.h:46
&gt; +WTF_MAKE_NONCOPYABLE(JSCryptoKeySerializationJWK);

We normally indent these.

&gt; Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.h:60
&gt; +    virtual bool reconcileAlgorithm(std::unique_ptr&lt;CryptoAlgorithm&gt;&amp;, std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;) const OVERRIDE;
&gt; +
&gt; +    virtual void reconcileUsages(CryptoKeyUsage&amp;) const OVERRIDE;
&gt; +    virtual void reconcileExtractable(bool&amp;) const OVERRIDE;
&gt; +
&gt; +    virtual std::unique_ptr&lt;CryptoKeyData&gt; keyData() const OVERRIDE;

Can we make these private?

&gt;&gt; Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp:435
&gt;&gt; +    switch(keyFormat) {
&gt; 
&gt; Missing space before ( in switch(  [whitespace/parens] [5]

Yes, not our usual format.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.cpp:84
&gt; +    RefPtr&lt;CryptoKeyHMAC&gt; result = CryptoKeyHMAC::create(keyDataOctetSequence.octetSequence(), hmacParameters.hash, extractable, usage);
&gt; +    promise-&gt;fulfill(result.release());

Would read better without the local variable, I think.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216421</attachid>
            <date>2013-11-08 12:07:24 -0800</date>
            <delta_ts>2013-11-08 14:03:44 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>JWK.txt</filename>
            <type>text/plain</type>
            <size>84607</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1ODkzNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkzIEBACisyMDEzLTExLTA4ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBKV0sga2V5
IGltcG9ydCBmb3IgSE1BQyBhbmQgQUVTLUNCQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MDU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGNyeXB0by9zdWJ0bGUvYWVzLWNiYy1pbXBvcnQt
andrLmh0bWwKKyAgICAgICAgICAgICAgIGNyeXB0by9zdWJ0bGUvaG1hYy1pbXBvcnQtandrLmh0
bWwKKyAgICAgICAgICAgICAgIGNyeXB0by9zdWJ0bGUvaW1wb3J0LWp3ay5odG1sCisKKyAgICAg
ICAgV2ViQ3J5cHRvIHN1cHBvcnRzIG11bHRpcGxlIGtleSBmb3JtYXRzIC0gcmF3LCBwa2NzOCwg
c3BraSwgandrLiBUaGUgZGVzaWduIGlzIHRoYXQKKyAgICAgICAgd2UnbGwgdHJhbnNmb3JtIHRo
ZXNlIGludG8gcGFyc2VkIEtleURhdGEgc3ViY2xhc3NlcyBiZWZvcmUgcGFzc2luZyB0byBhbGdv
cml0aG1zLgorCisgICAgICAgIENyeXB0b0tleVNlcmlhbGl6YXRpb24gaXMgYSBiYXNlIGNsYXNz
IGZvciBoYW5kbGluZyBhbGwgdGhlc2UgZm9ybWF0cy4KKworICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQgbmV3IGZpbGVzLiBSZW1vdmVkIENyeXB0b0tl
eUZvcm1hdC5oLgorICAgICAgICAKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNl
cmlhbGl6YXRpb25KV0suaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9L
ZXlTZXJpYWxpemF0aW9uSldLLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRTdHJp
bmdGcm9tSlNPTik6IEEgaGVscGVyLiBOb3RlIHRoYXQgd2UgY2FuIHJlbHkgb24gdGhlIG9iamVj
dCBiZWluZworICAgICAgICBhIG5pY2UgZnJlc2hseSBwYXJzZWQgSlNPTiwgbm8gZ2V0dGVycyBv
ciBhbnl0aGluZy4KKyAgICAgICAgKFdlYkNvcmU6OmdldEJvb2xlYW5Gcm9tSlNPTik6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpKU0NyeXB0
b0tleVNlcmlhbGl6YXRpb25KV0spOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9LZXlTZXJp
YWxpemF0aW9uSldLOjp+SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLKToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUhNQUNQYXJhbWV0ZXJzKTogQSBzaW1wbGUgaGVscGVyLgorICAgICAgICAo
V2ViQ29yZTo6SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpyZWNvbmNpbGVBbGdvcml0aG0p
OiBXZWJDcnlwdG8gQVBJIGlzIHdlaXJkLAorICAgICAgICB5b3UgY2FuIGhhdmUgYWxnb3JpdGht
IHBhcmFtZXRlcnMgYm90aCBpbnNpZGUgYSBKV0sga2V5IGFuZCBwYXNzZWQgYXMgaW1wb3J0S2V5
KCkKKyAgICAgICAgYXJndW1lbnRzLiBUaGV5IG5lZWQgdG8gYWdyZWUsIHdoYXRldmVyIHRoYXQg
bWVhbnMgZm9yIHNwZWNpZmljIHNlcmlhbGl6YXRpb24ncworICAgICAgICBhbGdvcml0aG0gb3B0
aW9ucyAobm90IGFsbCBuZWNlc3NhcmlseSBoYXZlIGEgMS0xIG1hdGNoaW5nIHRvIFdlYkNyeXB0
bykuCisgICAgICAgIChXZWJDb3JlOjpKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnJlY29u
Y2lsZVVzYWdlcyk6IFRha2UgYW4gaW50ZXJzZWN0aW9uIG9mIHVzYWdlcy4KKyAgICAgICAgKFdl
YkNvcmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6cmVjb25jaWxlRXh0cmFjdGFibGUp
OiBPbmx5IGV4dHJhY3RhYmxlIGlmCisgICAgICAgIGJvdGggSldLIGFuZCB0aGUgY2FsbGVyIGFn
cmVlLgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjprZXlT
aXplSXNWYWxpZCk6IFZlcmlmeSB2YWxpZGl0eSBvZiBKV0sga2V5LgorICAgICAgICAoV2ViQ29y
ZTo6SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjprZXlEYXRhKTogUmV0dXJuIGFuIGFwcHJv
cHJpYXRlIEtleURhdGEKKyAgICAgICAgc3ViY2xhc3MuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFTlVNX0NMQVNT
KTogTW92ZWQgQ3J5cHRvS2V5Rm9ybWF0IGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpjcnlwdG9L
ZXlGb3JtYXRGcm9tSlNWYWx1ZSk6IEFkZGVkIGEgaHVtYW4gcmVhZGFibGUgc3RyaW5nIHRvIGFu
IGV4Y2V0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SlNTdWJ0bGVDcnlwdG86OmltcG9ydEtleSk6
IFN1cHBvcnQgbXVsdGlwbGUga2V5IGZvcm1hdHMsIG5vdCBqdXN0IHJhdy4KKworICAgICAgICAq
IGNyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwOiAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtOjpp
bXBvcnRLZXkpOgorICAgICAgICAqIGNyeXB0by9DcnlwdG9BbGdvcml0aG0uaDoKKyAgICAgICAg
VXBkYXRlZCBzaWduYXR1cmUgZm9yIGltcG9ydEtleSB0byBvbmUgdGhhdCBtYWtlcyBtb3JlIHNl
bnNlLiBEZWNvZGluZyBmb3JtYXRzIGFsbAorICAgICAgICB0aGUgd2F5IGZyb20gYSBiaW5hcnkg
YmxvYiBpcyBub3Qgc29tZXRoaW5nIHRoYXQgQ3J5cHRvQWxnb3JpdGhtIHN1YmNsYXNzZXMgc2hv
dWxkCisgICAgICAgIGRvLCB3ZSBub3cgcGFzcyBhIEtleURhdGEgc3ViY2xhc3MgaW5zdGVhZC4K
KyAgICAgICAgUmVtb3ZlZCBleHBvcnRLZXkvd3JhcEtleS91bndyYXBLZXkgYWx0b2dldGhlciwg
YmVjYXVzZSBJIGRvbid0IHlldCBrbm93IHdoYXQgdGhlCisgICAgICAgIHNpZ25hdHVyZXMgd2ls
bCBiZS4KKworICAgICAgICAqIGNyeXB0by9DcnlwdG9LZXlEYXRhLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvS2V5RGF0YTo6RU5VTV9DTEFTUyk6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9LZXlEYXRhOjpDcnlwdG9LZXlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0
b0tleURhdGE6On5DcnlwdG9LZXlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleURh
dGE6OmZvcm1hdCk6CisgICAgICAgIEEgYmFzZSBjbGFzcyBmb3IgcGFzc2luZyBrZXkgbWF0ZXJp
YWwgdG8gYWxnb3JpdGhtcy4gQ3VycmVudGx5LCBvbmx5IG9uZSB0eXBlIGlzCisgICAgICAgIHN1
cHBvcnRlZCwgdGhhdCBiZWluZyBPY3RldFNlcXVlbmNlIGZvciBzZWNyZXQga2V5cy4gS2V5cyBm
b3IgUlNBIGFuZCBFQyBhcmUgbW9yZQorICAgICAgICBjb21wbGljYXRlZCwgYW5kIHNlY3JldC9w
dWJsaWMgb25lcyBhcmUgZGlmZmVyZW50IHRvby4KKworICAgICAgICAqIGNyeXB0by9DcnlwdG9L
ZXlGb3JtYXQuaDogUmVtb3ZlZC4gVGhlcmUgYXJlIHRvbyBtYW55IGtleSBmb3JtYXQgY2xhc3Nl
cworICAgICAgICBjb25mdXNpbmdseSBmbG9hdGluZyBhcm91bmQsIGFuZCB0aGlzIHdhcyBvbmx5
IG5lZWRlZCBpbiBvbmUgZmlsZSBmb3IgcGFyc2luZy4KKworICAgICAgICAqIGNyeXB0by9Dcnlw
dG9LZXlTZXJpYWxpemF0aW9uLmg6IEFkZGVkLgorICAgICAgICBCYXNlIGNsYXNzIGZvciBoYW5k
bGluZyByYXcvcGtjczgvc3BraS9qd2sga2V5cy4KKworICAgICAgICAqIGNyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtQUVTX0NCQzo6aW1wb3J0S2V5KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmg6CisgICAgICAgIFVwZGF0ZWQgdG8gdXNlIENyeXB0
b0tleURhdGEuCisKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1I
TUFDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhNQUM6OmltcG9ydEtl
eSk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5oOgor
ICAgICAgICBVcGRhdGVkIHRvIHVzZSBDcnlwdG9LZXlEYXRhLgorCisgICAgICAgICogY3J5cHRv
L2tleXMvQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlOjpDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1
ZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZTo6fkNy
eXB0b0tleURhdGFPY3RldFNlcXVlbmNlKToKKyAgICAgICAgKiBjcnlwdG8va2V5cy9DcnlwdG9L
ZXlEYXRhT2N0ZXRTZXF1ZW5jZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFzQ3J5cHRv
S2V5RGF0YU9jdGV0U2VxdWVuY2UpOgorICAgICAgICAqIGNyeXB0by9rZXlzL0NyeXB0b0tleVNl
cmlhbGl6YXRpb25SYXcuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVNl
cmlhbGl6YXRpb25SYXc6OkNyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdzo6fkNyeXB0b0tleVNlcmlhbGl6YXRpb25S
YXcpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdzo6cmVjb25j
aWxlQWxnb3JpdGhtKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVNlcmlhbGl6YXRpb25S
YXc6OnJlY29uY2lsZVVzYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlTZXJpYWxp
emF0aW9uUmF3OjpyZWNvbmNpbGVFeHRyYWN0YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9LZXlTZXJpYWxpemF0aW9uUmF3OjprZXlEYXRhKToKKyAgICAgICAgKiBjcnlwdG8va2V5cy9D
cnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3Lmg6IEFkZGVkLgorICAgICAgICBNdWNoIGNvZGUgdG8g
cGFzcyBhcm91bmQgYSBWZWN0b3I8Y2hhcj4uCisKIDIwMTMtMTEtMDggIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgTGVmdCBzaWRlYmFyIG9uIGN1Ymlj
LWJlemllci5jb20gZmxpY2tlcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1ODkyNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtNTU0NSw2ICs1NTQ1LDE0IEBACiAJCUUxMjVGODQ1MTgyNDI1QzkwMEQ4NENEOSAvKiBDcnlw
dG9BbGdvcml0aG1BRVNfQ0JDTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxMjVGODQzMTgyNDI1QzkwMEQ4NENEOSAvKiBDcnlwdG9BbGdvcml0
aG1BRVNfQ0JDTWFjLmNwcCAqLzsgfTsKIAkJRTEyNUY4NEQxODI0Mjg5RDAwRDg0Q0Q5IC8qIENy
eXB0b0tleUFFUy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMTI1Rjg0QjE4MjQyODlEMDBEODRDRDkgLyogQ3J5cHRvS2V5QUVTLmNwcCAqLzsgfTsK
IAkJRTEyNUY4NEUxODI0Mjg5RDAwRDg0Q0Q5IC8qIENyeXB0b0tleUFFUy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNUY4NEMxODI0Mjg5RDAwRDg0
Q0Q5IC8qIENyeXB0b0tleUFFUy5oICovOyB9OworCQlFMTI1Rjg1MTE4MjgzQTU2MDBEODRDRDkg
LyogSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjVGODRGMTgyODNBNTYwMEQ4NENEOSAvKiBKU0Ny
eXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwICovOyB9OworCQlFMTI1Rjg1MjE4MjgzQTU2MDBE
ODRDRDkgLyogSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI1Rjg1MDE4MjgzQTU2MDBEODRDRDkgLyog
SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmggKi87IH07CisJCUUxMjVGODU2MTgyQzBGODMw
MEQ4NENEOSAvKiBDcnlwdG9LZXlTZXJpYWxpemF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI1Rjg1NTE4MkMwRjgzMDBEODRDRDkgLyogQ3J5
cHRvS2V5U2VyaWFsaXphdGlvbi5oICovOyB9OworCQlFMTI1Rjg1OTE4MkMxQUE2MDBEODRDRDkg
LyogQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI1Rjg1NzE4MkMxQUE2MDBEODRDRDkgLyogQ3J5cHRv
S2V5U2VyaWFsaXphdGlvblJhdy5jcHAgKi87IH07CisJCUUxMjVGODVBMTgyQzFBQTYwMEQ4NENE
OSAvKiBDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI1Rjg1ODE4MkMxQUE2MDBEODRDRDkgLyogQ3J5cHRv
S2V5U2VyaWFsaXphdGlvblJhdy5oICovOyB9OworCQlFMTI1Rjg1RTE4MkMyREY2MDBEODRDRDkg
LyogQ3J5cHRvS2V5RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTEyNUY4NUQxODJDMkRGNjAwRDg0Q0Q5IC8qIENyeXB0b0tleURhdGEuaCAqLzsg
fTsKKwkJRTEyNUY4NjMxODJDMzAzQTAwRDg0Q0Q5IC8qIENyeXB0b0tleURhdGFPY3RldFNlcXVl
bmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUx
MjVGODYxMTgyQzMwM0EwMEQ4NENEOSAvKiBDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZS5jcHAg
Ki87IH07CisJCUUxMjVGODY0MTgyQzMwM0EwMEQ4NENEOSAvKiBDcnlwdG9LZXlEYXRhT2N0ZXRT
ZXF1ZW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTEyNUY4NjIxODJDMzAzQTAwRDg0Q0Q5IC8qIENyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlLmgg
Ki87IH07CiAJCUUxMjcxOUM3MEVFRUMxNjgwMEY2MTIxMyAvKiBOYXZpZ2F0b3JCYXNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI3MTlDNjBFRUVD
MTY4MDBGNjEyMTMgLyogTmF2aWdhdG9yQmFzZS5oICovOyB9OwogCQlFMTI3MTlDQTBFRUVDMjEz
MDBGNjEyMTMgLyogTmF2aWdhdG9yQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI3MTlDOTBFRUVDMjEzMDBGNjEyMTMgLyogTmF2aWdhdG9y
QmFzZS5jcHAgKi87IH07CiAJCUUxMjcxQTBCMEVFRUM3N0EwMEY2MTIxMyAvKiBXb3JrZXJOYXZp
Z2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUx
MjcxQTBBMEVFRUM3N0EwMEY2MTIxMyAvKiBXb3JrZXJOYXZpZ2F0b3IuaCAqLzsgfTsKQEAgLTU1
OTgsNyArNTYwNiw2IEBACiAJCUUxNzJBRjZEMTgwRjI0QzYwMEZCQURCOSAvKiBDcnlwdG9BbGdv
cml0aG0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTE3MkFGNkIxODBGMjRDNjAwRkJBREI5IC8qIENyeXB0b0FsZ29yaXRobS5jcHAgKi87IH07CiAJ
CUUxNzJBRjZFMTgwRjI0QzYwMEZCQURCOSAvKiBDcnlwdG9BbGdvcml0aG0uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzJBRjZDMTgwRjI0QzYwMEZC
QURCOSAvKiBDcnlwdG9BbGdvcml0aG0uaCAqLzsgfTsKIAkJRTE3MkFGNzAxODBGMjg5NTAwRkJB
REI5IC8qIENyeXB0b0tleVVzYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTcyQUY2RjE4MEYyODk1MDBGQkFEQjkgLyogQ3J5cHRvS2V5VXNhZ2Uu
aCAqLzsgfTsKLQkJRTE3MkFGNzcxODBGMzY2QzAwRkJBREI5IC8qIENyeXB0b0tleUZvcm1hdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3MkFGNzYx
ODBGMzY2QzAwRkJBREI5IC8qIENyeXB0b0tleUZvcm1hdC5oICovOyB9OwogCQlFMTcyQUY4RjE4
MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzJBRjhEMTgxMUJDMzcwMEZCQURCOSAvKiBKU0RP
TVByb21pc2UuY3BwICovOyB9OwogCQlFMTcyQUY5MDE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Q
cm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MTcyQUY4RTE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlLmggKi87IH07CiAJCUUxN0I0
OTE1MTZBOUIwOTQwMDFDODgzOSAvKiBUcmFuc2l0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3QjQ5MTMxNkE5QjA5MzAwMUM4ODM5
IC8qIFRyYW5zaXRpb25FdmVudC5jcHAgKi87IH07CkBAIC0xMjYxMCw2ICsxMjYxNywxNCBAQAog
CQlFMTI1Rjg0MzE4MjQyNUM5MDBEODRDRDkgLyogQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ01hYy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDcnlwdG9BbGdvcml0aG1B
RVNfQ0JDTWFjLmNwcDsgcGF0aCA9IG1hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDTWFjLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyNUY4NEIxODI0Mjg5RDAwRDg0Q0Q5IC8q
IENyeXB0b0tleUFFUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
cnlwdG9LZXlBRVMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTI1Rjg0QzE4
MjQyODlEMDBEODRDRDkgLyogQ3J5cHRvS2V5QUVTLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENyeXB0b0tleUFFUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
MTI1Rjg0RjE4MjgzQTU2MDBEODRDRDkgLyogSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3J5cHRvS2V5U2VyaWFs
aXphdGlvbkpXSy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxMjVGODUwMTgy
ODNBNTYwMEQ4NENEOSAvKiBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxMjVGODU1MTgyQzBGODMwMEQ4NENEOSAvKiBD
cnlwdG9LZXlTZXJpYWxpemF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENyeXB0b0tleVNlcmlhbGl6YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTEyNUY4NTcxODJDMUFBNjAwRDg0Q0Q5IC8qIENyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ3J5cHRvS2V5U2VyaWFsaXph
dGlvblJhdy5jcHA7IHBhdGggPSBrZXlzL0NyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMTI1Rjg1ODE4MkMxQUE2MDBEODRDRDkgLyog
Q3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3Lmg7IHBhdGggPSBrZXlzL0NyeXB0b0tleVNl
cmlhbGl6YXRpb25SYXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTEyNUY4NUQx
ODJDMkRGNjAwRDg0Q0Q5IC8qIENyeXB0b0tleURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ3J5cHRvS2V5RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMTI1Rjg2MTE4MkMzMDNBMDBEODRDRDkgLyogQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ3J5cHRvS2V5RGF0YU9j
dGV0U2VxdWVuY2UuY3BwOyBwYXRoID0ga2V5cy9DcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxMjVGODYyMTgyQzMwM0EwMEQ4NENE
OSAvKiBDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZS5oOyBwYXRoID0ga2V5cy9Dcnlw
dG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MTI3MTlDNjBFRUVDMTY4MDBGNjEyMTMgLyogTmF2aWdhdG9yQmFzZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBOYXZpZ2F0b3JCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUxMjcxOUM5MEVFRUMyMTMwMEY2MTIxMyAvKiBOYXZpZ2F0b3JCYXNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdmlnYXRvckJhc2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTI3MUEwQTBFRUVDNzdBMDBGNjEyMTMgLyog
V29ya2VyTmF2aWdhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtl
ck5hdmlnYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI2NjcsNyArMTI2
ODIsNiBAQAogCQlFMTcyQUY2QjE4MEYyNEM2MDBGQkFEQjkgLyogQ3J5cHRvQWxnb3JpdGhtLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNzJBRjZDMTgwRjI0QzYwMEZCQURC
OSAvKiBDcnlwdG9BbGdvcml0aG0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q3J5cHRvQWxnb3JpdGhtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNzJBRjZG
MTgwRjI4OTUwMEZCQURCOSAvKiBDcnlwdG9LZXlVc2FnZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDcnlwdG9LZXlVc2FnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlFMTcyQUY3NjE4MEYzNjZDMDBGQkFEQjkgLyogQ3J5cHRvS2V5Rm9ybWF0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0tleUZvcm1hdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMTcyQUY4RDE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9t
aXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NUHJvbWlz
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNzJBRjhFMTgxMUJDMzcwMEZC
QURCOSAvKiBKU0RPTVByb21pc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNET01Qcm9taXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNzY1ODBDMTgw
REYzQTAwMDVBOTZEMSAvKiBPRVNFbGVtZW50SW5kZXhVaW50LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBPRVNFbGVtZW50
SW5kZXhVaW50LmlkbDsgcGF0aCA9IGNhbnZhcy9PRVNFbGVtZW50SW5kZXhVaW50LmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NDY0LDYgKzE5NDc4LDggQEAKIAkJCQlCQzYw
OTAxRTBFOTFCOEVDMDAwQzY4QjUgLyogSlNFdmVudFRhcmdldEN1c3RvbS5jcHAgKi8sCiAJCQkJ
MzMxNEFDRTkxMDg5MjA4NjAwMEYwRTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5jcHAgKi8sCiAJCQkJ
MzMxNEFDRUExMDg5MjA4NjAwMEYwRTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5oICovLAorCQkJCUUx
MjVGODRGMTgyODNBNTYwMEQ4NENEOSAvKiBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3Bw
ICovLAorCQkJCUUxMjVGODUwMTgyODNBNTYwMEQ4NENEOSAvKiBKU0NyeXB0b0tleVNlcmlhbGl6
YXRpb25KV0suaCAqLywKIAkJCQk4RjkzNEQ4NDExODlGMUVFMDA1MDhENUQgLyogSlNNYWluVGhy
ZWFkRXhlY1N0YXRlLmNwcCAqLywKIAkJCQk4RjkzNEQ4MzExODlGMUVFMDA1MDhENUQgLyogSlNN
YWluVGhyZWFkRXhlY1N0YXRlLmggKi8sCiAJCQkJQjU2NTc2RTQxN0RBNTk5RjAwQTU2QkRDIC8q
IEpTTWFpblRocmVhZEV4ZWNTdGF0ZUluc3RydW1lbnRhdGlvbi5oICovLApAQCAtMjAzMzMsOCAr
MjAzNDksMTIgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUUxMjVGODRCMTgyNDI4OUQwMEQ4NENE
OSAvKiBDcnlwdG9LZXlBRVMuY3BwICovLAogCQkJCUUxMjVGODRDMTgyNDI4OUQwMEQ4NENEOSAv
KiBDcnlwdG9LZXlBRVMuaCAqLywKKwkJCQlFMTI1Rjg2MTE4MkMzMDNBMDBEODRDRDkgLyogQ3J5
cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuY3BwICovLAorCQkJCUUxMjVGODYyMTgyQzMwM0EwMEQ4
NENEOSAvKiBDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZS5oICovLAogCQkJCUUxMjVGODMzMTgy
MkYxOEEwMEQ4NENEOSAvKiBDcnlwdG9LZXlITUFDLmNwcCAqLywKIAkJCQlFMTI1RjgzNDE4MjJG
MThBMDBEODRDRDkgLyogQ3J5cHRvS2V5SE1BQy5oICovLAorCQkJCUUxMjVGODU3MTgyQzFBQTYw
MEQ4NENEOSAvKiBDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3LmNwcCAqLywKKwkJCQlFMTI1Rjg1
ODE4MkMxQUE2MDBEODRDRDkgLyogQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5oICovLAogCQkJ
KTsKIAkJCW5hbWUgPSBrZXlzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIwNDc3
LDcgKzIwNDk3LDggQEAKIAkJCQlFMTU3QThEQzE4MTcyQzJDMDA5RjgyMUQgLyogQ3J5cHRvS2V5
LmlkbCAqLywKIAkJCQlFMTU3QThFMjE4MTczQTNBMDA5RjgyMUQgLyogQ3J5cHRvS2V5LmNwcCAq
LywKIAkJCQlFMTU3QThFMzE4MTczQTNBMDA5RjgyMUQgLyogQ3J5cHRvS2V5LmggKi8sCi0JCQkJ
RTE3MkFGNzYxODBGMzY2QzAwRkJBREI5IC8qIENyeXB0b0tleUZvcm1hdC5oICovLAorCQkJCUUx
MjVGODVEMTgyQzJERjYwMEQ4NENEOSAvKiBDcnlwdG9LZXlEYXRhLmggKi8sCisJCQkJRTEyNUY4
NTUxODJDMEY4MzAwRDg0Q0Q5IC8qIENyeXB0b0tleVNlcmlhbGl6YXRpb24uaCAqLywKIAkJCQlF
MTk3MjcxNTE4MjA1NDlFMDA1OTJENTEgLyogQ3J5cHRvS2V5VHlwZS5oICovLAogCQkJCUUxNzJB
RjZGMTgwRjI4OTUwMEZCQURCOSAvKiBDcnlwdG9LZXlVc2FnZS5oICovLAogCQkJCUUxRkY4RjVD
MTgwNzM2NEIwMDEzMjY3NCAvKiBTdWJ0bGVDcnlwdG8uaWRsICovLApAQCAtMjI1MjQsNiArMjI1
NDUsNyBAQAogCQkJCTg1RjMyQUVFMEFBNjNCODcwMEZGMzE4NCAvKiBET01IVE1MT3B0R3JvdXBF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDlERTE4MjE3QUFENkE0MDBFQTM4NkQgLyog
RE9NVVJMTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMUJGMEFDNUQ1MzUw
MDUzMjcwRiAvKiBET01IVE1MT3B0R3JvdXBFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
LAorCQkJCUUxMjVGODVFMTgyQzJERjYwMEQ4NENEOSAvKiBDcnlwdG9LZXlEYXRhLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NTQwNzU2QjBBRDZDQkY5MDA2MjBDNTcgLyogRE9NSFRNTE9wdGlvbkVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1NDA3NTZEMEFENkNCRjkwMDYyMEM1NyAvKiBE
T01IVE1MT3B0aW9uRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkx
RjE3RDE0RDFDMDA0MjBBQTEgLyogUlRDRGF0YUNoYW5uZWxFdmVudC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yMjgyNyw2ICsyMjg0OSw3IEBACiAJCQkJMTQ5OTNCRTYwQjJGMkIxQzAwNTA0OTdGIC8q
IEZvY3VzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDYyMjg3ODQwQjREQjMyMjAw
MEMzNERGIC8qIEZvY3VzRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNkQ5RDIzNTE0
RUFCRDI2MDA5MEQ3NUUgLyogRm9jdXNFdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTEyNUY4
NUExODJDMUFBNjAwRDg0Q0Q5IC8qIENyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIyQzNEQTYxMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0I5MkQ0RjEyOTM1NTBCMDBDODM4N0YgLyogRm9udEJhc2VsaW5lLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMkMzREE2MzBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udENhY2hlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTIzMDgwLDYgKzIzMTAzLDcgQEAKIAkJCQkxQTcxRDU3QzBGMzM4
MTkwMDBGOUNFNEUgLyogSWRlbnRpZmllclJlcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTkxM0Ey
NDIxM0Q0OUVCQTAwRjVCMDVDIC8qIElkZW50aWZpZXJzRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDlFOTExQzUwRUY4NkQ0NzAwOUQwQ0FGIC8qIElkZW50aXR5VHJhbnNmb3JtT3BlcmF0
aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMTI1Rjg1NjE4MkMwRjgzMDBEODRDRDkgLyogQ3J5
cHRvS2V5U2VyaWFsaXphdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q2NDFFQzAxODE5QjM2
MDAwRUU0QzQxIC8qIE1lZGlhVGltZU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzBDMDU0Q0Qx
MTE4QzhFNDAwQ0UyNjM2IC8qIElETFBhcnNlci5wbSBpbiBIZWFkZXJzICovLAogCQkJCUMzQ0Yx
N0E1MTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyLmggaW4gSGVhZGVycyAqLywK
QEAgLTIzNDkyLDcgKzIzNTE2LDYgQEAKIAkJCQkxQUU4MkZFRDBDQUIwN0VFMDAyMjM3QUUgLyog
SlNTUUxSZXN1bHRTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRkUxMTlBMENCRkZDQzQwMDMw
MTdGQSAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1OURE
NkE1MTE5MDJBNjIwMDdFOTY4NCAvKiBKU1NRTFN0YXRlbWVudENhbGxiYWNrLmggaW4gSGVhZGVy
cyAqLywKLQkJCQlFMTcyQUY3NzE4MEYzNjZDMDBGQkFEQjkgLyogQ3J5cHRvS2V5Rm9ybWF0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCNTlERDZBOTExOTAyQTcxMDA3RTk2ODQgLyogSlNTUUxTdGF0
ZW1lbnRFcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzgyNDMyQTBEMENFOEEy
MDA0NjBDOEYgLyogSlNTUUxUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjU5REQ2
OUQxMTkwMkE0MjAwN0U5Njg0IC8qIEpTU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yMzY1Nyw2ICsyMzY4MCw3IEBACiAJCQkJQjJGQTNFMTEwQUI3NUE2RjAwMEU1
QUM0IC8qIEpTU1ZHVFNwYW5FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0UxMzBB
Qjc1QTZGMDAwRTVBQzQgLyogSlNTVkdVbml0VHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
RkEzRTE1MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1VzZUVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCUUxMjVGODUyMTgyODNBNTYwMEQ4NENEOSAvKiBKU0NyeXB0b0tleVNlcmlhbGl6YXRp
b25KV0suaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRTE3MEFCNzVBNkYwMDBFNUFDNCAvKiBK
U1NWR1ZpZXdFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTE4RkVENTE1Njg1Q0M2MDAz
MEI3OUEgLyogSlNTVkdWaWV3U3BlYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ4NTIyN0UxMTkw
MTYyQzAwNkVEQzdGIC8qIEpTU1ZHVktlcm5FbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTIz
ODg4LDYgKzIzOTEyLDcgQEAKIAkJCQlBODE4NzIxQjA5NzdEM0MwMDA1ODI2RDkgLyogTm9kZUxp
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTYzMTg5QUUzMEU4M0EzMzMwMDAxMkU0MSAvKiBOb2Rl
UmFyZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NEYzRUY1MTY3OEIyNEYwMEIwNUE2RSAv
KiBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMTI1Rjg2NDE4
MkMzMDNBMDBEODRDRDkgLyogQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTYzRDdCMzJEMEU3OENEM0YwMEY3NjE3QyAvKiBOb2RlUmVuZGVyU3R5bGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUU0MzEwNUJCMTY3NTBGMTYwMERCMkZCOCAvKiBOb2RlVHJhdmVy
c2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzgyQUFCNDBEOEMzODYxMDBGMzU3QTYgLyogTm9k
ZVdpdGhJbmRleC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjk2MCw2ICsyNjk4NSw3IEBACiAJCQkJ
MDcwMzYzRDYxODFBMTQ2NTAwQzA3NEE1IC8qIE1lZGlhU3RyZWFtU291cmNlU3RhdGVzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUIyRkEzRTEwMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1RTcGFu
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkZBM0UxMjBBQjc1QTZGMDAwRTVBQzQg
LyogSlNTVkdVbml0VHlwZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTEyNUY4NTExODI4M0E1
NjAwRDg0Q0Q5IC8qIEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCMkZBM0UxNDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdVc2VFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUIyRkEzRTE2MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1ZpZXdF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcxMThGRUQ0MTU2ODVDQzYwMDMwQjc5QSAv
KiBKU1NWR1ZpZXdTcGVjLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjc2MjYsNiArMjc2NTIsNyBA
QAogCQkJCTA3OEUwOEZGMTdEMTRDRUUwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5N0JDNkE1QTE1MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb25T
eW5jLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkU2RTU5MENDNTUyMTMwMDRBMjA2MiAvKiBT
UUxWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMTI1Rjg2MzE4MkMzMDNBMDBEODRDRDkg
LyogQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNG
MTlBRTYwODI0NUU1OTAwMUU5QUJDIC8qIFNTTEtleUdlbmVyYXRvck1hYy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQzdGQTYyRTBEMUYwRUZGMDBEQjIyQTkgLyogU3RhdGljTm9kZUxpc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTVBRkIzNEYxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5n
ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3NjQzLDYgKzI3NjcwLDcgQEAKIAkJCQlDNTEwMkQ5
NTBGRDlBQTJEMDBGQUZGMDQgLyogU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUxMUYyMzE5MERDMTYwREEwMDRGMDAzMiAvKiBTdG9yYWdlVGhyZWFkLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTNBQjAyRDJCMTJENEY5MTYwMEZCQjY5NCAvKiBTdG9yYWdlVHJhY2tl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMTI1Rjg1OTE4MkMxQUE2MDBEODRDRDkgLyogQ3J5
cHRvS2V5U2VyaWFsaXphdGlvblJhdy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MTAyQzU4ODEz
MjVCQjExMDBEREU2N0EgLyogU3RyaW5nQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTREOTg4QjYxN0JGRUIyMTAwODRGQjg4IC8qIFRleHROb2RlVHJhdmVyc2FsLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyMzU0MEYyMEQwMDc4MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Ny
eXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25K
V0suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQ3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5o
IgorCisjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCisKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0
aG0uaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zLmgiCisjaW5jbHVkZSAi
Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJDcnlwdG9LZXlEYXRhT2N0ZXRT
ZXF1ZW5jZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU0RPTUJp
bmRpbmcuaCIKKyNpbmNsdWRlIDxoZWFwL1N0cm9uZ0lubGluZXMuaD4KKyNpbmNsdWRlIDxydW50
aW1lL0pTT05PYmplY3QuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KKwordXNpbmcg
bmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgYm9vbCBnZXRT
dHJpbmdGcm9tSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFy
KiBrZXksIFN0cmluZyYgcmVzdWx0KQoreworICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihleGVj
LCBrZXkpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGpzb24pOworCisgICAgaWYgKCFqc29uLT5n
ZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnRpZmllciwgc2xvdCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIEpTVmFsdWUganNWYWx1ZSA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnRp
Zmllcik7CisgICAgQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CisgICAgaWYgKCFqc1Zh
bHVlLmdldFN0cmluZyhleGVjLCByZXN1bHQpKSB7CisgICAgICAgIC8vIENhbiBnZXQgYW4gb3V0
IG9mIG1lbW9yeSBleGNlcHRpb24uCisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
U3RyaW5nOjpmb3JtYXQoIkV4cGVjdGVkIGEgc3RyaW5nIHZhbHVlIGZvciBcIiVzXCIgSlNPTiBr
ZXkiLCAga2V5KSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworc3RhdGljIGJvb2wgZ2V0Qm9vbGVhbkZyb21KU09OKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIGpzb24sIGNvbnN0IGNoYXIqIGtleSwgYm9vbCYgcmVzdWx0KQoreworICAg
IElkZW50aWZpZXIgaWRlbnRpZmllcihleGVjLCBrZXkpOworICAgIFByb3BlcnR5U2xvdCBzbG90
KGpzb24pOworCisgICAgaWYgKCFqc29uLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnRpZmll
ciwgc2xvdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEpTVmFsdWUganNWYWx1ZSA9
IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnRpZmllcik7CisgICAgQVNTRVJUKCFleGVjLT5oYWRF
eGNlcHRpb24oKSk7CisgICAgaWYgKCFqc1ZhbHVlLmlzQm9vbGVhbigpKSB7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIFN0cmluZzo6Zm9ybWF0KCJFeHBlY3RlZCBhIGJvb2xlYW4gdmFs
dWUgZm9yIFwiJXNcIiBKU09OIGtleSIsICBrZXkpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHJlc3VsdCA9IGpzVmFsdWUuYXNCb29sZWFuKCk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6SlNDcnlwdG9LZXlTZXJpYWxp
emF0aW9uSldLKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBqc29uU3RyaW5nKQorICAg
IDogbV9leGVjKGV4ZWMpCit7CisgICAgSlNWYWx1ZSBqc29uVmFsdWUgPSBKU09OUGFyc2UoZXhl
YywganNvblN0cmluZyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoIWpzb25WYWx1ZSB8fCAhanNvblZhbHVlLmlzT2JqZWN0KCkpIHsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgIkludmFsaWQgSldLIHNlcmlhbGl6YXRpb24i
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fanNvbi5zZXQobV9leGVjLT52bSgp
LCBhc09iamVjdChqc29uVmFsdWUpKTsKK30KKworSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldL
Ojp+SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLKCkKK3sKK30KKworc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcmVhdGVITUFDUGFyYW1ldGVycyhD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKK3sKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtcz4gaG1hY1BhcmFtZXRlcnMgPSBzdGQ6Om1h
a2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXM+KCk7CisgICAgaG1hY1BhcmFtZXRl
cnMtPmhhc2ggPSBoYXNoRnVuY3Rpb247CisgICAgcmV0dXJuIHN0ZDo6bW92ZShobWFjUGFyYW1l
dGVycyk7Cit9CisKK2Jvb2wgSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpyZWNvbmNpbGVB
bGdvcml0aG0oc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobT4mIHN1Z2dlc3RlZEFsZ29y
aXRobSwgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiBzdWdnZXN0
ZWRQYXJhbWV0ZXJzKSBjb25zdAoreworICAgIGlmICghZ2V0U3RyaW5nRnJvbUpTT04obV9leGVj
LCBtX2pzb24uZ2V0KCksICJhbGciLCBtX2p3a0FsZ29yaXRobU5hbWUpKSB7CisgICAgICAgIC8v
IEFsZ29yaXRobSBpcyBvcHRpb25hbCBpbiBKV0suCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG0+IGFsZ29yaXRobTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gcGFyYW1ldGVyczsK
KyAgICBpZiAobV9qd2tBbGdvcml0aG1OYW1lID09ICJIUzI1NiIpIHsKKyAgICAgICAgYWxnb3Jp
dGhtID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnNoYXJlZCgpLmNyZWF0ZShDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpITUFDKTsKKyAgICAgICAgcGFyYW1ldGVycyA9IGNyZWF0ZUhNQUNQ
YXJhbWV0ZXJzKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yNTYpOworICAgIH0gZWxz
ZSBpZiAobV9qd2tBbGdvcml0aG1OYW1lID09ICJIUzM4NCIpIHsKKyAgICAgICAgYWxnb3JpdGht
ID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnNoYXJlZCgpLmNyZWF0ZShDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpITUFDKTsKKyAgICAgICAgcGFyYW1ldGVycyA9IGNyZWF0ZUhNQUNQYXJh
bWV0ZXJzKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8zODQpOworICAgIH0gZWxzZSBp
ZiAobV9qd2tBbGdvcml0aG1OYW1lID09ICJIUzUxMiIpIHsKKyAgICAgICAgYWxnb3JpdGhtID0g
Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnNoYXJlZCgpLmNyZWF0ZShDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpITUFDKTsKKyAgICAgICAgcGFyYW1ldGVycyA9IGNyZWF0ZUhNQUNQYXJhbWV0
ZXJzKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTIpOworICAgIH0gZWxzZSBpZiAo
bV9qd2tBbGdvcml0aG1OYW1lID09ICJBMTI4Q0JDIikgeworICAgICAgICBhbGdvcml0aG0gPSBD
cnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2hhcmVkKCkuY3JlYXRlKENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OkFFU19DQkMpOworICAgICAgICBwYXJhbWV0ZXJzID0gc3RkOjptYWtlX3VuaXF1
ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPigpOworICAgIH0gZWxzZSBpZiAobV9qd2tBbGdv
cml0aG1OYW1lID09ICJBMTkyQ0JDIikgeworICAgICAgICBhbGdvcml0aG0gPSBDcnlwdG9BbGdv
cml0aG1SZWdpc3RyeTo6c2hhcmVkKCkuY3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OkFFU19DQkMpOworICAgICAgICBwYXJhbWV0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzPigpOworICAgIH0gZWxzZSBpZiAobV9qd2tBbGdvcml0aG1OYW1l
ID09ICJBMjU2Q0JDIikgeworICAgICAgICBhbGdvcml0aG0gPSBDcnlwdG9BbGdvcml0aG1SZWdp
c3RyeTo6c2hhcmVkKCkuY3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DQkMp
OworICAgICAgICBwYXJhbWV0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPigpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhl
YywgIlVuc3VwcG9ydGVkIEpXSyBhbGdvcml0aG0gIiArIG1fandrQWxnb3JpdGhtTmFtZSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIXN1Z2dlc3RlZEFsZ29yaXRo
bSkgeworICAgICAgICBzdWdnZXN0ZWRBbGdvcml0aG0gPSBzdGQ6Om1vdmUoYWxnb3JpdGhtKTsK
KyAgICAgICAgc3VnZ2VzdGVkUGFyYW1ldGVycyA9ICBzdGQ6Om1vdmUocGFyYW1ldGVycyk7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmICghYWxnb3JpdGhtKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChhbGdvcml0aG0tPmlkZW50aWZpZXIoKSAhPSBzdWdn
ZXN0ZWRBbGdvcml0aG0tPmlkZW50aWZpZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgLy8gSE1BQyBpcyB0aGUgb25seSBhbGdvcml0aG0gdGhhdCBoYXMgcGFyYW1ldGVycyBpbiBp
bXBvcnRLZXkuCisgICAgaWYgKGFsZ29yaXRobS0+aWRlbnRpZmllcigpICE9IENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OkhNQUMpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXMmPigqcGFyYW1ldGVycykuaGFz
aCA9PSBzdGF0aWNfY2FzdDxDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zJj4oKnN1Z2dlc3RlZFBh
cmFtZXRlcnMpLmhhc2g7Cit9CisKK3ZvaWQgSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpy
ZWNvbmNpbGVVc2FnZXMoQ3J5cHRvS2V5VXNhZ2UmIHN1Z2dlc3RlZFVzYWdlKSBjb25zdAorewor
ICAgIFN0cmluZyBqd2tVc2VTdHJpbmc7CisgICAgaWYgKCFnZXRTdHJpbmdGcm9tSlNPTihtX2V4
ZWMsIG1fanNvbi5nZXQoKSwgInVzZSIsIGp3a1VzZVN0cmluZykpIHsKKyAgICAgICAgLy8gInVz
ZSIgaXMgb3B0aW9uYWwgaW4gSldLLgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
RklYTUU6IENyeXB0b0tleVVzYWdlRGVyaXZlS2V5LCBDcnlwdG9LZXlVc2FnZURlcml2ZUJpdHMg
LSBzaG91bGQgdGhlc2UgYmUgaW1wbGljaXRseSBhbGxvd2VkIGJ5IGFueSBKV0sgdXNlIHZhbHVl
PworICAgIC8vIEZJWE1FOiBUaGVyZSBpcyBhIG1pc21hdGNoIGJldHdlZW4gc3BlY3MgZm9yIHdy
YXAvdW53cmFwIHVzYWdlcywgPGh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3B1
YmxpYy13ZWJjcnlwdG8vMjAxM05vdi8wMDE2Lmh0bWw+LgorICAgIGlmIChqd2tVc2VTdHJpbmcg
PT0gInNpZyIpCisgICAgICAgIHN1Z2dlc3RlZFVzYWdlID0gc3VnZ2VzdGVkVXNhZ2UgJiAoQ3J5
cHRvS2V5VXNhZ2VTaWduIHwgQ3J5cHRvS2V5VXNhZ2VWZXJpZnkpOworICAgIGVsc2UgaWYgKGp3
a1VzZVN0cmluZyA9PSAiZW5jIikKKyAgICAgICAgc3VnZ2VzdGVkVXNhZ2UgPSBzdWdnZXN0ZWRV
c2FnZSAmIChDcnlwdG9LZXlVc2FnZUVuY3J5cHQgfCBDcnlwdG9LZXlVc2FnZURlY3J5cHQgfCBD
cnlwdG9LZXlVc2FnZVdyYXBLZXkgfCBDcnlwdG9LZXlVc2FnZVVud3JhcEtleSk7CisgICAgZWxz
ZSBpZiAoandrVXNlU3RyaW5nID09ICJ3cmFwIikKKyAgICAgICAgc3VnZ2VzdGVkVXNhZ2UgPSBz
dWdnZXN0ZWRVc2FnZSAmIChDcnlwdG9LZXlVc2FnZVdyYXBLZXkgfCBDcnlwdG9LZXlVc2FnZVVu
d3JhcEtleSk7CisgICAgZWxzZQorICAgICAgICBzdWdnZXN0ZWRVc2FnZSA9IDA7IC8vIFVua25v
d24gdXNhZ2UsIGJldHRlciBiZSBzYWZlLgorfQorCit2b2lkIEpTQ3J5cHRvS2V5U2VyaWFsaXph
dGlvbkpXSzo6cmVjb25jaWxlRXh0cmFjdGFibGUoYm9vbCYgc3VnZ2VzdGVkRXh0cmFjdGFibGUp
IGNvbnN0Cit7CisgICAgYm9vbCBqd2tFeHRyYWN0YWJsZTsKKyAgICBpZiAoIWdldEJvb2xlYW5G
cm9tSlNPTihtX2V4ZWMsIG1fanNvbi5nZXQoKSwgImV4dHJhY3RhYmxlIiwgandrRXh0cmFjdGFi
bGUpKSB7CisgICAgICAgIC8vICJleHRyYWN0YWJsZSIgaXMgYSBOZXRmbGl4IHByb3Bvc2FsIHRo
YXQncyBub3QgaW4gYW55IHNwZWMgeWV0LiBJdCB3aWxsIGNlcnRhaW5seSBiZSBvcHRpb25hbCBv
bmNlIHNwZWNpZmllZC4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN1Z2dlc3RlZEV4
dHJhY3RhYmxlID0gc3VnZ2VzdGVkRXh0cmFjdGFibGUgJiYgandrRXh0cmFjdGFibGU7Cit9CisK
K2Jvb2wgSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjprZXlTaXplSXNWYWxpZChzaXplX3Qg
c2l6ZUluQml0cykgY29uc3QKK3sKKyAgICBpZiAobV9qd2tBbGdvcml0aG1OYW1lID09ICJIUzI1
NiIpCisgICAgICAgIHJldHVybiBzaXplSW5CaXRzID49IDI1NjsKKyAgICBlbHNlIGlmIChtX2p3
a0FsZ29yaXRobU5hbWUgPT0gIkhTMzg0IikKKyAgICAgICAgcmV0dXJuIHNpemVJbkJpdHMgPj0g
Mzg0OworICAgIGVsc2UgaWYgKG1fandrQWxnb3JpdGhtTmFtZSA9PSAiSFM1MTIiKQorICAgICAg
ICByZXR1cm4gc2l6ZUluQml0cyA+PSA1MTI7CisgICAgZWxzZSBpZiAobV9qd2tBbGdvcml0aG1O
YW1lID09ICJBMTI4Q0JDIikKKyAgICAgICAgcmV0dXJuIHNpemVJbkJpdHMgPT0gMTI4OworICAg
IGVsc2UgaWYgKG1fandrQWxnb3JpdGhtTmFtZSA9PSAiQTE5MkNCQyIpCisgICAgICAgIHJldHVy
biBzaXplSW5CaXRzID09IDE5MjsKKyAgICBlbHNlIGlmIChtX2p3a0FsZ29yaXRobU5hbWUgPT0g
IkEyNTZDQkMiKQorICAgICAgICByZXR1cm4gc2l6ZUluQml0cyA9PSAyNTY7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBKU0NyeXB0b0tleVNl
cmlhbGl6YXRpb25KV0s6OmtleURhdGEoKSBjb25zdAoreworICAgIFN0cmluZyBqd2tLZXlUeXBl
OworICAgIGlmICghZ2V0U3RyaW5nRnJvbUpTT04obV9leGVjLCBtX2pzb24uZ2V0KCksICJrdHki
LCBqd2tLZXlUeXBlKSkgeworICAgICAgICBpZiAoIW1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisg
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsICJSZXF1aXJlZCBKV0sgXCJrdHlcIiBt
ZW1iZXIgaXMgbWlzc2luZyIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAg
ICBpZiAoandrS2V5VHlwZSAhPSAib2N0IikgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4
ZWMsICJVbnN1cHBvcnRlZCBKV0sga2V5IHR5cGUgIiArIGp3a0tleVR5cGUpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBTdHJpbmcga2V5QmFzZTY0VVJMOworICAgIGlm
ICghZ2V0U3RyaW5nRnJvbUpTT04obV9leGVjLCBtX2pzb24uZ2V0KCksICJrIiwga2V5QmFzZTY0
VVJMKSkgeworICAgICAgICBpZiAoIW1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsICJTZWNyZXQga2V5IGRhdGEgaXMgbm90IHByZXNlbnQg
aXMgSldLIik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIFZlY3Rvcjxj
aGFyPiBvY3RldFNlcXVlbmNlOworICAgIGlmICghYmFzZTY0VVJMRGVjb2RlKGtleUJhc2U2NFVS
TCwgb2N0ZXRTZXF1ZW5jZSkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCAiQ2Fu
bm90IGRlY29kZSBiYXNlNjR1cmwga2V5IGRhdGEgaW4gSldLIik7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworICAgIGlmICgha2V5U2l6ZUlzVmFsaWQob2N0ZXRTZXF1ZW5jZS5z
aXplKCkgKiA4KSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsICJLZXkgc2l6ZSBp
cyBub3QgdmFsaWQgZm9yICIgKyBtX2p3a0FsZ29yaXRobU5hbWUpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2U6
OmNyZWF0ZShvY3RldFNlcXVlbmNlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8pCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAjIworbmF0aXZlClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0
aW9uSldLLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLX2gKKyNkZWZpbmUgSlNDcnlwdG9LZXlT
ZXJpYWxpemF0aW9uSldLX2gKKworI2luY2x1ZGUgIkNyeXB0b0tleVNlcmlhbGl6YXRpb24uaCIK
KyNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQor
CituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIEpTT2JqZWN0OworfQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM7
CisKK2NsYXNzIEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSyBGSU5BTCA6IHB1YmxpYyBDcnlw
dG9LZXlTZXJpYWxpemF0aW9uIHsKK1dURl9NQUtFX05PTkNPUFlBQkxFKEpTQ3J5cHRvS2V5U2Vy
aWFsaXphdGlvbkpXSyk7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxKU0Ny
eXB0b0tleVNlcmlhbGl6YXRpb25KV0s+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU3RyaW5nJiBqc29uU3RyaW5nKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s+KG5ldyBKU0NyeXB0b0tleVNlcmlhbGl6
YXRpb25KV0soZXhlYywganNvblN0cmluZykpOworICAgIH0KKworICAgIHZpcnR1YWwgfkpTQ3J5
cHRvS2V5U2VyaWFsaXphdGlvbkpXSygpOworCisgICAgdmlydHVhbCBib29sIHJlY29uY2lsZUFs
Z29yaXRobShzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtPiYsIHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYpIGNvbnN0IE9WRVJSSURFOworCisgICAgdmly
dHVhbCB2b2lkIHJlY29uY2lsZVVzYWdlcyhDcnlwdG9LZXlVc2FnZSYpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCByZWNvbmNpbGVFeHRyYWN0YWJsZShib29sJikgY29uc3QgT1ZF
UlJJREU7CisKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBrZXlE
YXRhKCkgY29uc3QgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgSlNDcnlwdG9LZXlTZXJpYWxp
emF0aW9uSldLKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CisKKyAgICBib29sIGtl
eVNpemVJc1ZhbGlkKHNpemVfdCBzaXplSW5CaXRzKSBjb25zdDsKKworICAgIEpTQzo6RXhlY1N0
YXRlKiBtX2V4ZWM7CisgICAgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4gbV9qc29uOworCisg
ICAgbXV0YWJsZSBTdHJpbmcgbV9qd2tBbGdvcml0aG1OYW1lOyAvLyBTdG9yZWQgd2hlbiByZWNv
bmNpbGVBbGdvcml0aG0gaXMgY2FsbGVkLCBhbmQgdXNlZCBsYXRlci4KK307CisKK30KKworI2Vu
ZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorI2VuZGlmIC8vIEpTQ3J5cHRvS2V5U2VyaWFs
aXphdGlvbkpXS19oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suaApfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46
ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHBy
b3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0
bGVDcnlwdG9DdXN0b20uY3BwCShyZXZpc2lvbiAxNTg5MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDkgKzMxLDEyIEBACiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtLmgiCiAjaW5jbHVkZSAiQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJlZ2lz
dHJ5LmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5RGF0YS5oIgorI2luY2x1ZGUgIkNyeXB0b0tleVNl
cmlhbGl6YXRpb25SYXcuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKICNpbmNsdWRlICJKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuaCIKKyNp
bmNsdWRlICJKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suaCIKICNpbmNsdWRlICJKU0NyeXB0
b09wZXJhdGlvbkRhdGEuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNsdWRlIDxy
dW50aW1lL0Vycm9yLmg+CkBAIC00Miw2ICs0NSwyMCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0VOVU1fQ0xBU1MoQ3J5cHRvS2V5Rm9ybWF0KSB7Cisg
ICAgLy8gQW4gdW5mb3JtYXR0ZWQgc2VxdWVuY2Ugb2YgYnl0ZXMuIEludGVuZGVkIGZvciBzZWNy
ZXQga2V5cy4KKyAgICBSYXcsCisKKyAgICAvLyBUaGUgREVSIGVuY29kaW5nIG9mIHRoZSBQcml2
YXRlS2V5SW5mbyBzdHJ1Y3R1cmUgZnJvbSBSRkMgNTIwOC4KKyAgICBQS0NTOCwKKworICAgIC8v
IFRoZSBERVIgZW5jb2Rpbmcgb2YgdGhlIFN1YmplY3RQdWJsaWNLZXlJbmZvIHN0cnVjdHVyZSBm
cm9tIFJGQyA1MjgwLgorICAgIFNQS0ksCisKKyAgICAvLyBUaGUga2V5IGlzIHJlcHJlc2VudGVk
IGFzIEpTT04gYWNjb3JkaW5nIHRvIHRoZSBKU09OIFdlYiBLZXkgZm9ybWF0LgorICAgIEpXSwor
fTsKKwogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG0+IGNyZWF0ZUFsZ29y
aXRobUZyb21KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobUlkZW50aWZpZXI7CkBAIC03MCw3ICs4
Nyw3IEBAIHN0YXRpYyBib29sIGNyeXB0b0tleUZvcm1hdEZyb21KU1ZhbHVlKEUKICAgICBlbHNl
IGlmIChrZXlGb3JtYXRTdHJpbmcgPT0gImp3ayIpCiAgICAgICAgIHJlc3VsdCA9IENyeXB0b0tl
eUZvcm1hdDo6SldLOwogICAgIGVsc2UgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgIlVua25vd24ga2V5IGZvcm1hdCIpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAtNDAwLDI1ICs0
MTcsNTYgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6aW1wb3J0S2V5KEpTQzo6RQogICAgIH0K
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG0+IGFsZ29yaXRobTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gcGFyYW1ldGVyczsKICAg
ICBpZiAoIWV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDIpLmlzTnVsbCgpKSB7CiAgICAgICAgIGFs
Z29yaXRobSA9IGNyZWF0ZUFsZ29yaXRobUZyb21KU1ZhbHVlKGV4ZWMsIGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KDIpKTsKICAgICAgICAgaWYgKCFhbGdvcml0aG0pIHsKICAgICAgICAgICAgIEFT
U0VSVChleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKICAgICAgICAgfQorICAgICAgICBwYXJhbWV0ZXJzID0gSlNDcnlwdG9BbGdvcml0aG1E
aWN0aW9uYXJ5OjpjcmVhdGVQYXJhbWV0ZXJzRm9ySW1wb3J0S2V5KGV4ZWMsIGFsZ29yaXRobS0+
aWRlbnRpZmllcigpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgyKSk7CisgICAgICAgIGlmICgh
cGFyYW1ldGVycykgeworICAgICAgICAgICAgQVNTRVJUKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsK
KyAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICB9CiAgICAgfQotICAg
IC8vIFRoZSBhbGdvcml0aG0gY2FuIHByZXN1bWFibHkgYmUgbnVsbCB3aGVuIHdlIGNhbiBkZWR1
Y2UgaXQgZnJvbSB0aGUga2V5IChKV0UgcGVyaGFwcz8pCi0gICAgLy8gQnV0IHdlIG9ubHkgc3Vw
cG9ydCByYXcga2V5IGZvcm1hdCByaWdodCBub3cuCi0gICAgaWYgKCFhbGdvcml0aG0pIHsKLSAg
ICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIE5PVF9TVVBQT1JURURfRVJSKTsKKworICAgIHN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlTZXJpYWxpemF0aW9uPiBrZXlTZXJpYWxpemF0aW9uOwor
ICAgIHN3aXRjaChrZXlGb3JtYXQpIHsKKyAgICBjYXNlIENyeXB0b0tleUZvcm1hdDo6UmF3Ogor
ICAgICAgICBrZXlTZXJpYWxpemF0aW9uID0gQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdzo6Y3Jl
YXRlKGRhdGEpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0tleUZvcm1hdDo6SldL
OiB7CisgICAgICAgIFN0cmluZyBqd2tTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGRhdGEuZmly
c3QsIGRhdGEuc2Vjb25kKTsKKyAgICAgICAgaWYgKGp3a1N0cmluZy5pc051bGwoKSkgeworICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgIkpXSyBKU09OIHNlcmlhbGl6YXRpb24gaXMg
bm90IHZhbGlkIFVURi04Iik7CisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAg
ICAgICAgfQorICAgICAgICBrZXlTZXJpYWxpemF0aW9uID0gSlNDcnlwdG9LZXlTZXJpYWxpemF0
aW9uSldLOjpjcmVhdGUoZXhlYywgandrU3RyaW5nKTsKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAi
VW5zdXBwb3J0ZWQga2V5IGZvcm1hdCIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
ICAgICB9CiAKLSAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25h
cnk6OmNyZWF0ZVBhcmFtZXRlcnNGb3JJbXBvcnRLZXkoZXhlYywgYWxnb3JpdGhtLT5pZGVudGlm
aWVyKCksIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDIpKTsKLSAgICBpZiAoIXBhcmFtZXRlcnMp
IHsKLSAgICAgICAgQVNTRVJUKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKKyAgICBBU1NFUlQoa2V5
U2VyaWFsaXphdGlvbik7CisKKyAgICBpZiAoIWtleVNlcmlhbGl6YXRpb24tPnJlY29uY2lsZUFs
Z29yaXRobShhbGdvcml0aG0sIHBhcmFtZXRlcnMpKSB7CisgICAgICAgIGlmICghZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiQWxnb3JpdGht
IHNwZWNpZmllZCBpbiBrZXkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBvbmUgcGFzc2VkIHRvIGlt
cG9ydEtleSBhcyBhcmd1bWVudCIpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAg
ICB9CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKKworICAgIGlmICghYWxnb3JpdGhtKSB7CisgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsICJOZWl0aGVyIGtleSBub3IgZnVuY3Rpb24gYXJndW1lbnQgaGFzIGNyeXB0byBhbGdv
cml0aG0gc3BlY2lmaWVkIik7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0K
KyAgICBBU1NFUlQocGFyYW1ldGVycyk7CiAKICAgICBib29sIGV4dHJhY3RhYmxlID0gZmFsc2U7
CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSA0KSB7CkBAIC00MjYsNiArNDc0LDkg
QEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6aW1wb3J0S2V5KEpTQzo6RQogICAgICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
ICAgICB9CisgICAga2V5U2VyaWFsaXphdGlvbi0+cmVjb25jaWxlRXh0cmFjdGFibGUoZXh0cmFj
dGFibGUpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAKICAgICBDcnlwdG9LZXlVc2FnZSBrZXlVc2FnZXMgPSAwOwogICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gNSkgewpAQCAtNDM0LDEyICs0ODUsMTkgQEAgSlNW
YWx1ZSBKU1N1YnRsZUNyeXB0bzo6aW1wb3J0S2V5KEpTQzo6RQogICAgICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiAgICAgICAgIH0KICAgICB9CisgICAga2V5U2VyaWFsaXphdGlvbi0+
cmVjb25jaWxlVXNhZ2VzKGtleVVzYWdlcyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgIGF1dG8ga2V5RGF0YSA9IGtl
eVNlcmlhbGl6YXRpb24tPmtleURhdGEoKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgSlNQcm9taXNlKiBwcm9taXNl
ID0gSlNQcm9taXNlOjpjcmVhdGVXaXRoUmVzb2x2ZXIoZXhlYy0+dm0oKSwgZ2xvYmFsT2JqZWN0
KCkpOwogICAgIGF1dG8gcHJvbWlzZVdyYXBwZXIgPSBQcm9taXNlV3JhcHBlcjo6Y3JlYXRlKGds
b2JhbE9iamVjdCgpLCBwcm9taXNlKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IGFsZ29yaXRobS0+aW1wb3J0S2V5KCpwYXJhbWV0ZXJzLCBrZXlGb3JtYXQsIGRhdGEsIGV4dHJh
Y3RhYmxlLCBrZXlVc2FnZXMsIHN0ZDo6bW92ZShwcm9taXNlV3JhcHBlciksIGVjKTsKKyAgICBh
bGdvcml0aG0tPmltcG9ydEtleSgqcGFyYW1ldGVycywgKmtleURhdGEsIGV4dHJhY3RhYmxlLCBr
ZXlVc2FnZXMsIHN0ZDo6bW92ZShwcm9taXNlV3JhcHBlciksIGVjKTsKICAgICBpZiAoZWMpIHsK
ICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNw
cAkocmV2aXNpb24gMTU4OTI0KQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29y
aXRobS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDIyICs4MCw3IEBAIHZvaWQgQ3J5cHRvQWxn
b3JpdGhtOjpkZXJpdmVCaXRzKGNvbnN0IEMKICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwog
fQogCi12b2lkIENyeXB0b0FsZ29yaXRobTo6aW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnMmLCBDcnlwdG9LZXlGb3JtYXQsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
LCBib29sLCBDcnlwdG9LZXlVc2FnZSwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiwg
RXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLX0KLQot
dm9pZCBDcnlwdG9BbGdvcml0aG06OmV4cG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzJiwgQ3J5cHRvS2V5Rm9ybWF0LCBjb25zdCBDcnlwdG9LZXkmLCBzdGQ6OnVuaXF1ZV9w
dHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBlYyA9IE5PVF9T
VVBQT1JURURfRVJSOwotfQotCi12b2lkIENyeXB0b0FsZ29yaXRobTo6d3JhcEtleShjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgQ3J5cHRvS2V5Rm9ybWF0LCBjb25zdCBDcnlwdG9L
ZXkmLCBjb25zdCBDcnlwdG9LZXkmLCBDcnlwdG9BbGdvcml0aG0qLCBzdGQ6OnVuaXF1ZV9wdHI8
UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBlYyA9IE5PVF9TVVBQ
T1JURURfRVJSOwotfQotCi12b2lkIENyeXB0b0FsZ29yaXRobTo6dW53cmFwS2V5KGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBDcnlwdG9LZXlGb3JtYXQsIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmLCBjb25zdCBDcnlwdG9LZXkmLCBDcnlwdG9BbGdvcml0aG0qLCBDcnlwdG9B
bGdvcml0aG0qLCBib29sLCBDcnlwdG9LZXlVc2FnZSwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VX
cmFwcGVyPiwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobTo6aW1wb3J0
S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXlEYXRh
JiwgYm9vbCwgQ3J5cHRvS2V5VXNhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4s
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oCShyZXZpc2lvbiAxNTg5
MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICNkZWZpbmUgQ3J5cHRvQWxnb3JpdGhtX2gKIAogI2lu
Y2x1ZGUgIkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJDcnlwdG9LZXlG
b3JtYXQuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlVc2FnZS5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIApAQCAtMzksNiArMzgsNyBAQCB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCiBj
bGFzcyBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzOwogY2xhc3MgQ3J5cHRvS2V5OworY2xhc3Mg
Q3J5cHRvS2V5RGF0YTsKIGNsYXNzIFByb21pc2VXcmFwcGVyOwogCiAvLyBEYXRhIGlzIG11dGFi
bGUsIHNvIGFzeW5jIG9wZXJhdGlvbnMgc2hvdWxkIGNvcHkgaXQgZmlyc3QuCkBAIC01OSwxMCAr
NTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlS2V5KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSwg
c3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZp
cnR1YWwgdm9pZCBkZXJpdmVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNv
bnN0IENyeXB0b0tleSYgYmFzZUtleSwgQ3J5cHRvQWxnb3JpdGhtKiBkZXJpdmVkS2V5VHlwZSwg
Ym9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNl
V3JhcHBlcj4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVyaXZlQml0cyhj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiBiYXNlS2V5
LCB1bnNpZ25lZCBsb25nIGxlbmd0aCwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiwg
RXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCBpbXBvcnRLZXkoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycyYsIENyeXB0b0tleUZvcm1hdCwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlLCBzdGQ6OnVuaXF1ZV9w
dHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIGV4
cG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgQ3J5cHRvS2V5Rm9ybWF0
LCBjb25zdCBDcnlwdG9LZXkmLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNl
cHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIHdyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycyYsIENyeXB0b0tleUZvcm1hdCwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3Qg
Q3J5cHRvS2V5JiB3cmFwcGluZ0tleSwgQ3J5cHRvQWxnb3JpdGhtKiB3cmFwQWxnb3JpdGhtLCBz
dGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmly
dHVhbCB2b2lkIHVud3JhcEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgQ3J5
cHRvS2V5Rm9ybWF0LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgY29uc3QgQ3J5cHRvS2V5
JiB1bndyYXBwaW5nS2V5LCBDcnlwdG9BbGdvcml0aG0qIHVud3JhcEFsZ29yaXRobSwgQ3J5cHRv
QWxnb3JpdGhtKiB1bndyYXBwZWRLZXlBbGdvcml0aG0sIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0
b0tleVVzYWdlLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgdmlydHVhbCB2b2lkIGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tl
eVVzYWdlLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJik7
CiAKIHByb3RlY3RlZDoKICAgICBDcnlwdG9BbGdvcml0aG0oKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2NyeXB0by9DcnlwdG9LZXlEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3J5cHRvL0NyeXB0b0tleURhdGEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2Ny
eXB0by9DcnlwdG9LZXlEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgQ3J5cHRvS2V5RGF0YV9oCisjZGVmaW5lIENyeXB0b0tleURhdGFf
aAorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKKyNpZiBFTkFCTEUoU1VCVExFX0NS
WVBUTykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDcnlwdG9LZXlEYXRhIHsKK1dU
Rl9NQUtFX05PTkNPUFlBQkxFKENyeXB0b0tleURhdGEpOworcHVibGljOgorICAgIEVOVU1fQ0xB
U1MoRm9ybWF0KSB7CisgICAgICAgIE9jdGV0U2VxdWVuY2UKKyAgICB9OworCisgICAgQ3J5cHRv
S2V5RGF0YShGb3JtYXQgZm9ybWF0KQorICAgICAgICA6IG1fZm9ybWF0KGZvcm1hdCkKKyAgICB7
CisgICAgfQorICAgIHZpcnR1YWwgfkNyeXB0b0tleURhdGEoKSB7IH0KKworICAgIEZvcm1hdCBm
b3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQorCitwcml2YXRlOgorICAgIEZvcm1h
dCBtX2Zvcm1hdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShTVUJUTEVfQ1JZUFRPKQorI2VuZGlmIC8vIENyeXB0b0tleURhdGFfaAoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleURhdGEuaApfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRv
S2V5Rm9ybWF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tl
eUZvcm1hdC5oCShyZXZpc2lvbiAxNTg5MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5
cHRvS2V5Rm9ybWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgQ3J5cHRvS2V5Rm9ybWF0X2gKLSNkZWZpbmUgQ3J5cHRvS2V5Rm9ybWF0X2gK
LQotI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUVO
VU1fQ0xBU1MoQ3J5cHRvS2V5Rm9ybWF0KSB7Ci0gICAgLy8gQW4gdW5mb3JtYXR0ZWQgc2VxdWVu
Y2Ugb2YgYnl0ZXMuIEludGVuZGVkIGZvciBzZWNyZXQga2V5cy4KLSAgICBSYXcsCi0KLSAgICAv
LyBUaGUgREVSIGVuY29kaW5nIG9mIHRoZSBQcml2YXRlS2V5SW5mbyBzdHJ1Y3R1cmUgZnJvbSBS
RkMgNTIwOC4KLSAgICBQS0NTOCwKLQotICAgIC8vIFRoZSBERVIgZW5jb2Rpbmcgb2YgdGhlIFN1
YmplY3RQdWJsaWNLZXlJbmZvIHN0cnVjdHVyZSBmcm9tIFJGQyA1MjgwLgotICAgIFNQS0ksCi0K
LSAgICAvLyBUaGUga2V5IGlzIHJlcHJlc2VudGVkIGFzIEpTT04gYWNjb3JkaW5nIHRvIHRoZSBK
U09OIFdlYiBLZXkgZm9ybWF0LgotICAgIEpXSwotfTsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxF
KFNVQlRMRV9DUllQVE8pCi0jZW5kaWYgLy8gQ3J5cHRvS2V5Rm9ybWF0X2gKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXlTZXJpYWxpemF0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleVNlcmlhbGl6YXRpb24uaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXlTZXJpYWxpemF0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ3J5cHRv
S2V5U2VyaWFsaXphdGlvbl9oCisjZGVmaW5lIENyeXB0b0tleVNlcmlhbGl6YXRpb25faAorCisj
aW5jbHVkZSAiQ3J5cHRvS2V5VXNhZ2UuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
KworI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIENyeXB0b0FsZ29yaXRobTsKK2NsYXNzIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM7Citj
bGFzcyBDcnlwdG9LZXlEYXRhOworCit0eXBlZGVmIHN0ZDo6cGFpcjxjb25zdCBjaGFyKiwgc2l6
ZV90PiBDcnlwdG9PcGVyYXRpb25EYXRhOworCitjbGFzcyBDcnlwdG9LZXlTZXJpYWxpemF0aW9u
IHsKK1dURl9NQUtFX05PTkNPUFlBQkxFKENyeXB0b0tleVNlcmlhbGl6YXRpb24pOworcHVibGlj
OgorICAgIENyeXB0b0tleVNlcmlhbGl6YXRpb24oKSB7IH0KKyAgICB2aXJ0dWFsIH5DcnlwdG9L
ZXlTZXJpYWxpemF0aW9uKCkgeyB9CisKKyAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHN1Z2dlc3Rl
ZCBhbGdvcml0aG0gd2FzIG5vdCBjb21wYXRpYmxlIHdpdGggb25lIHN0b3JlZCBpbiB0aGUgc2Vy
aWFsaXphdGlvbi4KKyAgICB2aXJ0dWFsIGJvb2wgcmVjb25jaWxlQWxnb3JpdGhtKHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9BbGdvcml0aG0+Jiwgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM+JikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHJlY29uY2lsZVVz
YWdlcyhDcnlwdG9LZXlVc2FnZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb25j
aWxlRXh0cmFjdGFibGUoYm9vbCYpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0tleURhdGE+IGtleURhdGEoKSBjb25zdCA9IDA7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1VCVExFX0NSWVBUTykKKyNlbmRp
ZiAvLyBDcnlwdG9LZXlTZXJpYWxpemF0aW9uX2gKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJj
ZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXlTZXJpYWxpemF0aW9uLmgKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRl
ZDogc3ZuOmVvbC1zdHlsZQojIyAtMCwwICsxICMjCituYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtQUVTX0NCQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5jcHAJKHJldmlzaW9uIDE1ODky
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFF
U19DQkMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJD
cnlwdG9BbGdvcml0aG1BZXNLZXlHZW5QYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlBRVMu
aCIKKyNpbmNsdWRlICJDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZS5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKIApAQCAtNjgsMjQgKzY5
LDE3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6Z2VuZXJhdGVLZXkKICAgICBwcm9t
aXNlLT5mdWxmaWxsKHJlc3VsdC5yZWxlYXNlKCkpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRo
bUFFU19DQkM6OmltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgQ3J5
cHRvS2V5Rm9ybWF0IGZvcm1hdCwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgYm9v
bCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UgdXNhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxQcm9t
aXNlV3JhcHBlcj4gcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29y
aXRobUFFU19DQkM6OmltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwg
Y29uc3QgQ3J5cHRvS2V5RGF0YSYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5
VXNhZ2UgdXNhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4gcHJvbWlzZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKGZvcm1hdCAhPSBDcnlwdG9LZXlGb3JtYXQ6OlJh
dykgeworICAgIGlmIChrZXlEYXRhLmZvcm1hdCgpICE9IENyeXB0b0tleURhdGE6OkZvcm1hdDo6
T2N0ZXRTZXF1ZW5jZSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIFZlY3RvcjxjaGFyPiBrZXlEYXRhOwotICAgIGtleURhdGEu
YXBwZW5kKGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kKTsKLSAgICBSZWZQdHI8Q3J5cHRvS2V5QUVT
PiByZXN1bHQgPSBDcnlwdG9LZXlBRVM6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpBRVNfQ0JDLCBrZXlEYXRhLCBleHRyYWN0YWJsZSwgdXNhZ2UpOworICAgIGNvbnN0IENyeXB0
b0tleURhdGFPY3RldFNlcXVlbmNlJiBrZXlEYXRhT2N0ZXRTZXF1ZW5jZSA9IGFzQ3J5cHRvS2V5
RGF0YU9jdGV0U2VxdWVuY2Uoa2V5RGF0YSk7CisgICAgUmVmUHRyPENyeXB0b0tleUFFUz4gcmVz
dWx0ID0gQ3J5cHRvS2V5QUVTOjpjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVT
X0NCQywga2V5RGF0YU9jdGV0U2VxdWVuY2Uub2N0ZXRTZXF1ZW5jZSgpLCBleHRyYWN0YWJsZSwg
dXNhZ2UpOwogICAgIHByb21pc2UtPmZ1bGZpbGwocmVzdWx0LnJlbGVhc2UoKSk7CiB9CiAKLXZv
aWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6ZXhwb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnMmLCBDcnlwdG9LZXlGb3JtYXQsIGNvbnN0IENyeXB0b0tleSYsIHN0ZDo6dW5p
cXVlX3B0cjxQcm9taXNlV3JhcHBlcj4sIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIC8vIE5v
dCBpbXBsZW1lbnRlZCB5ZXQuCi0gICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLX0KLQogfQog
CiAjZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5o
CShyZXZpc2lvbiAxNTg5MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1BRVNfQ0JDLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDggKzQ0LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8Q3J5cHRvT3BlcmF0aW9u
RGF0YT4mLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IFZlY3RvcjxDcnlwdG9PcGVyYXRp
b25EYXRhPiYsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4sIEV4Y2VwdGlvbkNvZGUm
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycyYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlLCBzdGQ6
OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJikgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
JiwgQ3J5cHRvS2V5Rm9ybWF0LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgYm9vbCBleHRy
YWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4s
IEV4Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZXhwb3J0S2V5KGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBDcnlwdG9LZXlGb3JtYXQsIGNvbnN0IENy
eXB0b0tleSYsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4sIEV4Y2VwdGlvbkNvZGUm
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgaW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJsZSwg
Q3J5cHRvS2V5VXNhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4sIEV4Y2VwdGlv
bkNvZGUmKSBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBDcnlwdG9BbGdvcml0aG1BRVNfQ0JD
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1ITUFDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcAkocmV2aXNpb24gMTU4OTI0KQorKysgU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUhtYWNL
ZXlQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zLmgiCisjaW5j
bHVkZSAiQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlI
TUFDLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlz
ZS5oIgpAQCAtNjksMjMgKzcwLDE4IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6Z2VuZXJh
dGVLZXkoY28KICAgICBwcm9taXNlLT5mdWxmaWxsKHJlc3VsdC5yZWxlYXNlKCkpOwogfQogCi12
b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OmltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBDcnlwdG9LZXlGb3JtYXQgZm9ybWF0LCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiBkYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSB1
c2FnZSwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiBwcm9taXNlLCBFeGNlcHRpb25D
b2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6aW1wb3J0S2V5KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleURhdGEmIGtl
eURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlIHVzYWdlLCBzdGQ6OnVuaXF1
ZV9wdHI8UHJvbWlzZVdyYXBwZXI+IHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAg
IGlmIChmb3JtYXQgIT0gQ3J5cHRvS2V5Rm9ybWF0OjpSYXcpIHsKKyAgICBpZiAoa2V5RGF0YS5m
b3JtYXQoKSAhPSBDcnlwdG9LZXlEYXRhOjpGb3JtYXQ6Ok9jdGV0U2VxdWVuY2UpIHsKICAgICAg
ICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBj
b25zdCBDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZSYga2V5RGF0YU9jdGV0U2VxdWVuY2UgPSBh
c0NyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlKGtleURhdGEpOworCiAgICAgY29uc3QgQ3J5cHRv
QWxnb3JpdGhtSG1hY1BhcmFtcyYgaG1hY1BhcmFtZXRlcnMgPSBzdGF0aWNfY2FzdDxjb25zdCBD
cnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zJj4ocGFyYW1ldGVycyk7Ci0gICAgVmVjdG9yPGNoYXI+
IGtleURhdGE7Ci0gICAga2V5RGF0YS5hcHBlbmQoZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQpOwot
ICAgIFJlZlB0cjxDcnlwdG9LZXlITUFDPiByZXN1bHQgPSBDcnlwdG9LZXlITUFDOjpjcmVhdGUo
a2V5RGF0YSwgaG1hY1BhcmFtZXRlcnMuaGFzaCwgZXh0cmFjdGFibGUsIHVzYWdlKTsKLSAgICBw
cm9taXNlLT5mdWxmaWxsKHJlc3VsdC5yZWxlYXNlKCkpOwotfQogCi12b2lkIENyeXB0b0FsZ29y
aXRobUhNQUM6OmV4cG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgQ3J5
cHRvS2V5Rm9ybWF0LCBjb25zdCBDcnlwdG9LZXkmLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdy
YXBwZXI+LCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICAvLyBOb3QgaW1wbGVtZW50ZWQgeWV0
LgotICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgUmVmUHRyPENyeXB0b0tleUhNQUM+
IHJlc3VsdCA9IENyeXB0b0tleUhNQUM6OmNyZWF0ZShrZXlEYXRhT2N0ZXRTZXF1ZW5jZS5vY3Rl
dFNlcXVlbmNlKCksIGhtYWNQYXJhbWV0ZXJzLmhhc2gsIGV4dHJhY3RhYmxlLCB1c2FnZSk7Cisg
ICAgcHJvbWlzZS0+ZnVsZmlsbChyZXN1bHQucmVsZWFzZSgpKTsKIH0KIAogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bUhNQUMuaAkocmV2aXNpb24gMTU4OTI0KQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw4ICs0NCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgVmVjdG9yPENyeXB0b09wZXJhdGlv
bkRhdGE+Jiwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiwgRXhjZXB0aW9uQ29kZSYp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
IHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPENyeXB0b09wZXJhdGlvbkRhdGE+JiBkYXRhLCBzdGQ6
OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnMmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSwgc3RkOjp1bmlxdWVfcHRyPFBy
b21pc2VXcmFwcGVyPiwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9p
ZCBpbXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIENyeXB0b0tleUZv
cm1hdCwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0
b0tleVVzYWdlLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2Rl
JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGV4cG9ydEtleShjb25zdCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzJiwgQ3J5cHRvS2V5Rm9ybWF0LCBjb25zdCBDcnlwdG9LZXkmLCBzdGQ6
OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
JiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdl
LCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJikgT1ZFUlJJ
REU7CiAKIHByaXZhdGU6CiAgICAgQ3J5cHRvQWxnb3JpdGhtSE1BQygpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleURhdGFPY3RldFNl
cXVlbmNlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0Ny
eXB0b0tleURhdGFPY3RldFNlcXVlbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0tl
eURhdGFPY3RldFNlcXVlbmNlLmgiCisKKyNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZTo6Q3J5cHRvS2V5
RGF0YU9jdGV0U2VxdWVuY2UoY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRhKQorICAgIDogQ3J5cHRv
S2V5RGF0YShDcnlwdG9LZXlEYXRhOjpGb3JtYXQ6Ok9jdGV0U2VxdWVuY2UpCisgICAgLCBtX2tl
eURhdGEoZGF0YSkKK3sKK30KKworQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2U6On5DcnlwdG9L
ZXlEYXRhT2N0ZXRTZXF1ZW5jZSgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291
cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuY3BwCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAjIworbmF0aXZlClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9r
ZXlzL0NyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleURhdGFPY3RldFNlcXVl
bmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2VfaAorI2RlZmluZSBDcnlwdG9LZXlEYXRhT2N0
ZXRTZXF1ZW5jZV9oCisKKyNpbmNsdWRlICJDcnlwdG9LZXlEYXRhLmgiCisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorCisjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UgRklOQUwgOiBwdWJsaWMg
Q3J5cHRvS2V5RGF0YSB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZT4gY3JlYXRlKGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5RGF0
YSkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YU9j
dGV0U2VxdWVuY2U+KG5ldyBDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZShrZXlEYXRhKSk7Cisg
ICAgfQorICAgIHZpcnR1YWwgfkNyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlKCk7CisKKyAgICBj
b25zdCBWZWN0b3I8Y2hhcj4mIG9jdGV0U2VxdWVuY2UoKSBjb25zdCB7IHJldHVybiBtX2tleURh
dGE7IH0KKworcHJpdmF0ZToKKyAgICBDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZShjb25zdCBW
ZWN0b3I8Y2hhcj4mKTsKKworICAgIFZlY3RvcjxjaGFyPiBtX2tleURhdGE7Cit9OworCitpbmxp
bmUgY29uc3QgQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UmIGFzQ3J5cHRvS2V5RGF0YU9jdGV0
U2VxdWVuY2UoY29uc3QgQ3J5cHRvS2V5RGF0YSYgZGF0YSkKK3sKKyAgICBBU1NFUlQoZGF0YS5m
b3JtYXQoKSA9PSBDcnlwdG9LZXlEYXRhOjpGb3JtYXQ6Ok9jdGV0U2VxdWVuY2UpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZSY+KGRhdGEp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1VCVExF
X0NSWVBUTykKKyNlbmRpZiAvLyBDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZV9oCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlEYXRhT2N0
ZXRTZXF1ZW5jZS5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAj
IworbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVNlcmlhbGl6YXRpb25S
YXcuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRv
S2V5U2VyaWFsaXphdGlvblJhdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9LZXlTZXJp
YWxpemF0aW9uUmF3LmgiCisKKyNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKKworI2luY2x1ZGUg
IkNyeXB0b0FsZ29yaXRobS5oIgorI2luY2x1ZGUgIkNyeXB0b0tleURhdGFPY3RldFNlcXVlbmNl
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdzo6
Q3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdyhjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRh
KQoreworICAgIG1fZGF0YS5hcHBlbmQoZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQpOworfQorCitD
cnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3Ojp+Q3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdygpCit7
Cit9CisKK2Jvb2wgQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdzo6cmVjb25jaWxlQWxnb3JpdGht
KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG0+Jiwgc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+JikgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
dm9pZCBDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3OjpyZWNvbmNpbGVVc2FnZXMoQ3J5cHRvS2V5
VXNhZ2UmKSBjb25zdAoreworfQorCit2b2lkIENyeXB0b0tleVNlcmlhbGl6YXRpb25SYXc6OnJl
Y29uY2lsZUV4dHJhY3RhYmxlKGJvb2wmKSBjb25zdAoreworfQorCitzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvS2V5RGF0YT4gQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdzo6a2V5RGF0YSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIENyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlOjpjcmVhdGUobV9kYXRh
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNVQlRM
RV9DUllQVE8pCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5
cy9DcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3LmNwcApfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9s
LXN0eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3Bl
cnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlTZXJpYWxpemF0
aW9uUmF3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRv
S2V5U2VyaWFsaXphdGlvblJhdy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvY3J5
cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENyeXB0b0tleVNlcmlhbGl6YXRpb25S
YXdfaAorI2RlZmluZSBDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3X2gKKworI2luY2x1ZGUgIkNy
eXB0b0tleVNlcmlhbGl6YXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3IEZJ
TkFMIDogcHVibGljIENyeXB0b0tleVNlcmlhbGl6YXRpb24geworV1RGX01BS0VfTk9OQ09QWUFC
TEUoQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdyk7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3PiBjcmVhdGUoY29uc3QgQ3J5cHRv
T3BlcmF0aW9uRGF0YSYgZGF0YSkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdz4obmV3IENyeXB0b0tleVNlcmlhbGl6YXRpb25S
YXcoZGF0YSkpOworICAgIH0KKworICAgIHZpcnR1YWwgfkNyeXB0b0tleVNlcmlhbGl6YXRpb25S
YXcoKTsKKworICAgIHZpcnR1YWwgYm9vbCByZWNvbmNpbGVBbGdvcml0aG0oc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0FsZ29yaXRobT4mLCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4mKSBjb25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCByZWNvbmNpbGVV
c2FnZXMoQ3J5cHRvS2V5VXNhZ2UmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVjb25jaWxlRXh0cmFjdGFibGUoYm9vbCYpIGNvbnN0IE9WRVJSSURFOworCisgICAgdmlydHVh
bCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4ga2V5RGF0YSgpIGNvbnN0IE9WRVJSSURF
OworCitwcml2YXRlOgorICAgIENyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcoY29uc3QgQ3J5cHRv
T3BlcmF0aW9uRGF0YSYpOworCisgICAgVmVjdG9yPGNoYXI+IG1fZGF0YTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorI2Vu
ZGlmIC8vIENyeXB0b0tleVNlcmlhbGl6YXRpb25SYXdfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjog
U291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5oCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAjIworbmF0aXZlClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1ODkzNCkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisy
MDEzLTExLTA4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAg
IEltcGxlbWVudCBKV0sga2V5IGltcG9ydCBmb3IgSE1BQyBhbmQgQUVTLUNCQworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MDU5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjcnlwdG8vc3VidGxlL2Fl
cy1jYmMtaW1wb3J0LWp3ay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNyeXB0by9z
dWJ0bGUvYWVzLWNiYy1pbXBvcnQtandrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNyeXB0by9z
dWJ0bGUvaG1hYy1pbXBvcnQtandrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3J5
cHRvL3N1YnRsZS9obWFjLWltcG9ydC1qd2suaHRtbDogQWRkZWQuCisgICAgICAgICogY3J5cHRv
L3N1YnRsZS9pbXBvcnQtandrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3J5cHRv
L3N1YnRsZS9pbXBvcnQtandrLmh0bWw6IEFkZGVkLgorCiAyMDEzLTExLTA4ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIExlZnQgc2lkZWJhciBvbiBj
dWJpYy1iZXppZXIuY29tIGZsaWNrZXJzCkluZGV4OiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxl
L2Flcy1jYmMtaW1wb3J0LWp3ay1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWltcG9ydC1qd2stZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWltcG9ydC1qd2stZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK1Rlc3QgaW1wb3J0aW5n
IGEgSldLIGtleSBmb3IgQUVTLUNCQy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K0ltcG9ydGluZyBhIGtleS4uLgorCitQQVNTIGtleS50eXBlIGlzICdzZWNyZXQnCitQQVNTIGtl
eS5leHRyYWN0YWJsZSBpcyBmYWxzZQorUEFTUyBrZXkuYWxnb3JpdGhtLm5hbWUgaXMgJ2Flcy1j
YmMnCitQQVNTIGtleS5hbGdvcml0aG0ubGVuZ3RoIGlzIDE5MgorUEFTUyBrZXkudXNhZ2VzIGlz
IFsiZW5jcnlwdCJdCisKK1VzaW5nIHRoZSBrZXkgdG8gZW5jcnlwdCBwbGFpbnRleHQuLi4KK1BB
U1MgYnl0ZUFycmF5VG9IZXhTdHJpbmcobmV3IFVpbnQ4QXJyYXkoZW5jcnlwdGlvblJlc3VsdCkp
IGlzICdbNGYgMDIgMWQgYjIgNDMgYmMgNjMgM2QgNzEgNzggMTggM2EgOWYgYTAgNzEgZTggYjQg
ZDkgYWQgYTkgYWQgN2QgZWQgZjQgZTUgZTcgMzggNzYgM2YgNjkgMTQgNWEgNTcgMWIgMjQgMjAg
MTIgZmIgN2EgZTAgN2YgYTkgYmEgYWMgM2QgZjEgMDIgZTAgMDggYjAgZTIgNzkgODggNTkgODgg
ODEgZDkgMjAgYTkgZTYgNGYgNTYgMTUgY2QgNjEgMmMgY2QgNzkgMjIgNGIgMzUgMDkgMzUgZDQg
NWQgZDYgYTkgOGYgODEgNzZdJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2NyeXB0by9z
dWJ0bGUvYWVzLWNiYy1pbXBvcnQtandrLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBz
dm46bWltZS10eXBlCiMjIC0wLDAgKzEgIyMKK3RleHQvcGxhaW4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBwcm9wZXJ0eQpBZGRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMCwwICsxICMjCituYXRpdmUK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvY3J5cHRv
L3N1YnRsZS9hZXMtY2JjLWltcG9ydC1qd2suaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9jcnlwdG8vc3VidGxlL2Flcy1jYmMtaW1wb3J0LWp3ay5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWltcG9ydC1qd2suaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY29tbW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0IGltcG9ydGluZyBhIEpXSyBrZXkgZm9yIEFF
Uy1DQkMuIik7CisKK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCitpZiAoIXdpbmRvdy5zdWJ0bGUp
CisgICAgd2luZG93LmNyeXB0by5zdWJ0bGUgPSB3aW5kb3cuY3J5cHRvLndlYmtpdFN1YnRsZTsK
KwordmFyIGV4dHJhY3RhYmxlID0gdHJ1ZTsKKwordmFyIGl2ID0gaGV4VG9BcnJheUJ1ZmZlcigi
MDAwMTAyMDMwNDA1MDYwNzA4MDkwYTBiMGMwZDBlMGYiKTsKK3ZhciBwbGFpbnRleHQgPSBoZXhU
b0FycmF5QnVmZmVyKCI2YmMxYmVlMjJlNDA5Zjk2ZTkzZDdlMTE3MzkzMTcyYWFlMmQ4YTU3MWUw
M2FjOWM5ZWI3NmZhYzQ1YWY4ZTUxMzBjODFjNDZhMzVjZTQxMWU1ZmJjMTE5MWEwYTUyZWZmNjlm
MjQ0NWRmNGY5YjE3YWQyYjQxN2JlNjZjMzcxMCIpOworCit2YXIgandrS2V5ID0geworICAgICJr
dHkiOiAib2N0IiwKKyAgICAiYWxnIjogIkExOTJDQkMiLAorICAgICJ1c2UiOiAiZW5jIiwKKyAg
ICAiZXh0cmFjdGFibGUiOiB0cnVlLAorICAgICJrIjogImpuT3c5OW9PWkZMSUVQTXJnSkI1NVdM
NDZ0SlNMR3Q3IgorfTsKKwordmFyIGp3a0tleUFzQXJyYXlCdWZmZXIgPSBhc2NpaVRvQXJyYXlC
dWZmZXIoSlNPTi5zdHJpbmdpZnkoandrS2V5KSk7CisKK2RlYnVnKCJJbXBvcnRpbmcgYSBrZXku
Li5cbiIpOworY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIGp3a0tleUFzQXJyYXlCdWZm
ZXIsIG51bGwsIGZhbHNlLCBbImVuY3J5cHQiXSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAg
ICBrZXkgPSByZXN1bHQ7CisKKyAgICBzaG91bGRCZSgia2V5LnR5cGUiLCAiJ3NlY3JldCciKTsK
KyAgICBzaG91bGRCZSgia2V5LmV4dHJhY3RhYmxlIiwgImZhbHNlIik7CisgICAgc2hvdWxkQmUo
ImtleS5hbGdvcml0aG0ubmFtZSIsICInYWVzLWNiYyciKTsKKyAgICBzaG91bGRCZSgia2V5LmFs
Z29yaXRobS5sZW5ndGgiLCAiMTkyIik7CisgICAgc2hvdWxkQmUoImtleS51c2FnZXMiLCAnWyJl
bmNyeXB0Il0nKTsKKworICAgIGRlYnVnKCJcblVzaW5nIHRoZSBrZXkgdG8gZW5jcnlwdCBwbGFp
bnRleHQuLi4iKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5lbmNyeXB0KHtuYW1lOiAiYWVz
LWNiYyIsIGl2OiBpdn0sIGtleSwgW3BsYWludGV4dF0pOworfSkudGhlbihmdW5jdGlvbihyZXN1
bHQpIHsKKyAgICBlbmNyeXB0aW9uUmVzdWx0ID0gcmVzdWx0OworICAgIHNob3VsZEJlKCJieXRl
QXJyYXlUb0hleFN0cmluZyhuZXcgVWludDhBcnJheShlbmNyeXB0aW9uUmVzdWx0KSkiLCAiJ1s0
ZiAwMiAxZCBiMiA0MyBiYyA2MyAzZCA3MSA3OCAxOCAzYSA5ZiBhMCA3MSBlOCBiNCBkOSBhZCBh
OSBhZCA3ZCBlZCBmNCBlNSBlNyAzOCA3NiAzZiA2OSAxNCA1YSA1NyAxYiAyNCAyMCAxMiBmYiA3
YSBlMCA3ZiBhOSBiYSBhYyAzZCBmMSAwMiBlMCAwOCBiMCBlMiA3OSA4OCA1OSA4OCA4MSBkOSAy
MCBhOSBlNiA0ZiA1NiAxNSBjZCA2MSAyYyBjZCA3OSAyMiA0YiAzNSAwOSAzNSBkNCA1ZCBkNiBh
OSA4ZiA4MSA3Nl0nIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKzwvc2NyaXB0PgorCis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9jcnlwdG8v
c3VidGxlL2Flcy1jYmMtaW1wb3J0LWp3ay5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1l
LXR5cGUKIyMgLTAsMCArMSAjIwordGV4dC9odG1sClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKSW5kZXg6IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvaG1hYy1pbXBvcnQtandrLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2htYWMt
aW1wb3J0LWp3ay1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9jcnlw
dG8vc3VidGxlL2htYWMtaW1wb3J0LWp3ay1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwyMiBAQAorVGVzdCBpbXBvcnRpbmcgYSBKV0sga2V5IGZvciBITUFDLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworSW1wb3J0aW5nIGEga2V5Li4uCisKK1BBU1Mga2V5
LnR5cGUgaXMgJ3NlY3JldCcKK1BBU1Mga2V5LmV4dHJhY3RhYmxlIGlzIGZhbHNlCitQQVNTIGtl
eS5hbGdvcml0aG0ubmFtZSBpcyAnaG1hYycKK1BBU1Mga2V5LmFsZ29yaXRobS5sZW5ndGggaXMg
MzIKK1BBU1Mga2V5LnVzYWdlcyBpcyBbInNpZ24iLCAidmVyaWZ5Il0KKworVXNpbmcgdGhlIGtl
eSB0byBzaWduIG1lc3NhZ2UgJ2ZvbycuLi4KK1BBU1MgYnl0ZUFycmF5VG9IZXhTdHJpbmcobmV3
IFVpbnQ4QXJyYXkoc2lnbmF0dXJlKSkgaXMgJ1tlMCAzNyAzNiBmZSAwOSA4OCA5MiBiMiBhMiBk
YSA3NyA4MSAyNCAzMSBmNyBjMCAxNCBkMyAyZSAyZiBkNiA5ZiAzYiBjZiBmOCA4MyBhYyA5MiAz
YSA4ZiBhMiBkYV0nCisKK1ZlcmlmeWluZyB0aGUgc2lnbmF0dXJlLi4uCitQQVNTIHZlcmlmaWNh
dGlvblJlc3VsdCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvY3J5cHRvL3N1
YnRsZS9obWFjLWltcG9ydC1qd2stZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpt
aW1lLXR5cGUKIyMgLTAsMCArMSAjIwordGV4dC9wbGFpbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IHByb3BlcnR5CkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBMYXlvdXRUZXN0cy9jcnlwdG8vc3Vi
dGxlL2htYWMtaW1wb3J0LWp3ay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NyeXB0
by9zdWJ0bGUvaG1hYy1pbXBvcnQtandrLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9jcnlwdG8vc3VidGxlL2htYWMtaW1wb3J0LWp3ay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9jb21tb24uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0Pgor
ZGVzY3JpcHRpb24oIlRlc3QgaW1wb3J0aW5nIGEgSldLIGtleSBmb3IgSE1BQy4iKTsKKworanNU
ZXN0SXNBc3luYyA9IHRydWU7CisKK2lmICghd2luZG93LnN1YnRsZSkKKyAgICB3aW5kb3cuY3J5
cHRvLnN1YnRsZSA9IHdpbmRvdy5jcnlwdG8ud2Via2l0U3VidGxlOworCit2YXIgZXh0cmFjdGFi
bGUgPSB0cnVlOworCit2YXIgaG1hY0tleSA9IHsKKyAgICAia3R5IjogIm9jdCIsCisgICAgImFs
ZyI6ICJIUzI1NiIsCisgICAgInVzZSI6ICJzaWciLAorICAgICJleHRyYWN0YWJsZSI6IGZhbHNl
LAorICAgICJrIjogImFoamtuLV8zODdmZ25zaWJmMjNxc3ZhaGprbi1fMzg3Zmduc2liZjIzcXMi
Cit9OworCit2YXIgaG1hY0tleUFzQXJyYXlCdWZmZXIgPSBhc2NpaVRvQXJyYXlCdWZmZXIoSlNP
Ti5zdHJpbmdpZnkoaG1hY0tleSkpOworCitkZWJ1ZygiSW1wb3J0aW5nIGEga2V5Li4uXG4iKTsK
K2NyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCBobWFjS2V5QXNBcnJheUJ1ZmZlciwgbnVs
bCwgZXh0cmFjdGFibGUsIFsic2lnbiIsICJ2ZXJpZnkiXSkudGhlbihmdW5jdGlvbihyZXN1bHQp
IHsKKyAgICBrZXkgPSByZXN1bHQ7CisKKyAgICBzaG91bGRCZSgia2V5LnR5cGUiLCAiJ3NlY3Jl
dCciKTsKKyAgICBzaG91bGRCZSgia2V5LmV4dHJhY3RhYmxlIiwgImZhbHNlIik7CisgICAgc2hv
dWxkQmUoImtleS5hbGdvcml0aG0ubmFtZSIsICInaG1hYyciKTsKKyAgICBzaG91bGRCZSgia2V5
LmFsZ29yaXRobS5sZW5ndGgiLCAiMzIiKTsKKyAgICBzaG91bGRCZSgia2V5LnVzYWdlcyIsICdb
InNpZ24iLCAidmVyaWZ5Il0nKTsKKworICAgIGRlYnVnKCJcblVzaW5nIHRoZSBrZXkgdG8gc2ln
biBtZXNzYWdlICdmb28nLi4uIik7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuc2lnbihrZXku
YWxnb3JpdGhtLCBrZXksIFthc2NpaVRvQXJyYXlCdWZmZXIoJ2ZvbycpXSk7Cit9KS50aGVuKGZ1
bmN0aW9uKHJlc3VsdCkgeworICAgIHNpZ25hdHVyZSA9IHJlc3VsdDsKKyAgICBzaG91bGRCZSgi
Ynl0ZUFycmF5VG9IZXhTdHJpbmcobmV3IFVpbnQ4QXJyYXkoc2lnbmF0dXJlKSkiLCAiJ1tlMCAz
NyAzNiBmZSAwOSA4OCA5MiBiMiBhMiBkYSA3NyA4MSAyNCAzMSBmNyBjMCAxNCBkMyAyZSAyZiBk
NiA5ZiAzYiBjZiBmOCA4MyBhYyA5MiAzYSA4ZiBhMiBkYV0nIik7CisKKyAgICBkZWJ1ZygiXG5W
ZXJpZnlpbmcgdGhlIHNpZ25hdHVyZS4uLiIpOworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLnZl
cmlmeShrZXkuYWxnb3JpdGhtLCBrZXksIHJlc3VsdCwgW2FzY2lpVG9BcnJheUJ1ZmZlcignZm9v
JyldKTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgdmVyaWZpY2F0aW9uUmVzdWx0
ID0gcmVzdWx0OworICAgIHNob3VsZEJlKCJ2ZXJpZmljYXRpb25SZXN1bHQiLCAidHJ1ZSIpOwor
ICAgIGZpbmlzaEpTVGVzdCgpOworfSk7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoK
UHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9obWFjLWltcG9y
dC1qd2suaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiMjIC0wLDAgKzEgIyMK
K3RleHQvaHRtbApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBMYXlvdXRU
ZXN0cy9jcnlwdG8vc3VidGxlL2ltcG9ydC1qd2stZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvaW1wb3J0LWp3ay1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2ltcG9ydC1qd2stZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzAgQEAKK1Rlc3QgZXJyb3IgaGFuZGxpbmcg
Zm9yIEpXSyBpbXBvcnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGNy
eXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCBhc2NpaVRvQXJyYXlCdWZmZXIoJycpLCBudWxs
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBJbnZhbGlkIEpXSyBzZXJpYWxpemF0aW9uLgor
UEFTUyBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgYXNjaWlUb0FycmF5QnVmZmVyKCd7
JyksIG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEludmFsaWQgSldLIHNlcmlhbGl6
YXRpb24uCitQQVNTIGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCBhc2NpaVRvQXJyYXlC
dWZmZXIoJ251bGwnKSwgbnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogSW52YWxpZCBK
V0sgc2VyaWFsaXphdGlvbi4KK1BBU1MgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIGFz
Y2lpVG9BcnJheUJ1ZmZlcigndW5kZWZpbmVkJyksIG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IEludmFsaWQgSldLIHNlcmlhbGl6YXRpb24uCitQQVNTIGNyeXB0by5zdWJ0bGUuaW1w
b3J0S2V5KCJqd2siLCBhc2NpaVRvQXJyYXlCdWZmZXIoJ3t9JyksIG51bGwpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IE5laXRoZXIga2V5IG5vciBmdW5jdGlvbiBhcmd1bWVudCBoYXMgY3J5
cHRvIGFsZ29yaXRobSBzcGVjaWZpZWQuCitQQVNTIGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJq
d2siLCBhc2NpaVRvQXJyYXlCdWZmZXIoJ3t9JyksICJhZXMtY2JjIikgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogUmVxdWlyZWQgSldLICJrdHkiIG1lbWJlciBpcyBtaXNzaW5nLgorUEFTUyBj
cnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgYXNjaWlUb0FycmF5QnVmZmVyKCd7ICJrdHki
OiAiZm9vYmFyIiwgImFsZyI6ICJIUzI1NiIsICJ1c2UiOiAic2lnIiwgImsiOiAiYWhqa24yMzM4
N2ZnbnNpYmYyM3FzdmFoamtuMzczODdmZ25zaWJmMjNxcyIgfScpLCBudWxsKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBVbnN1cHBvcnRlZCBKV0sga2V5IHR5cGUgZm9vYmFyLgorUEFTUyBj
cnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgYXNjaWlUb0FycmF5QnVmZmVyKCd7ICJrdHki
OiAib2N0IiwgImFsZyI6ICJmb29iYXIiLCAidXNlIjogInNpZyIsICJrIjogImFoamtuMjMzODdm
Z25zaWJmMjNxc3ZhaGprbjM3Mzg3Zmduc2liZjIzcXMiIH0nKSwgbnVsbCkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogVW5zdXBwb3J0ZWQgSldLIGFsZ29yaXRobSBmb29iYXIuCitQQVNTIGNy
eXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCBhc2NpaVRvQXJyYXlCdWZmZXIoJ3sgImt0eSI6
ICJvY3QiLCAiYWxnIjogIkhTMjU2IiwgInVzZSI6ICJzaWciLCAiZXh0cmFjdGFibGUiOiBmYWxz
ZSwgImsiOiAiYWhqa24yMzM4N2ZnbnNpYmYyM3FzdmFoamtuMzczODdmZ25zaWJmMjNxcyIgfScp
LCAiYWVzLWNiYyIpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFsZ29yaXRobSBzcGVjaWZp
ZWQgaW4ga2V5IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggb25lIHBhc3NlZCB0byBpbXBvcnRLZXkg
YXMgYXJndW1lbnQuCitQQVNTIGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCBhc2NpaVRv
QXJyYXlCdWZmZXIoJ3sgImt0eSI6ICJvY3QiLCAiYWxnIjogIkhTMjU2IiwgInVzZSI6ICJzaWci
LCAiZXh0cmFjdGFibGUiOiBmYWxzZSwgImsiOiAiYWhqa24yMzM4N2ZnbnNpYmYyM3FzdmFoamtu
MzczODdmZ25zaWJmMjNxcyIgfScpLCB7IG5hbWU6ICJobWFjIiwgaGFzaDogInNoYS0xIiB9KSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBbGdvcml0aG0gc3BlY2lmaWVkIGluIGtleSBpcyBu
b3QgY29tcGF0aWJsZSB3aXRoIG9uZSBwYXNzZWQgdG8gaW1wb3J0S2V5IGFzIGFyZ3VtZW50Lgor
UEFTUyBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgYXNjaWlUb0FycmF5QnVmZmVyKCd7
ICJrdHkiOiAib2N0IiwgImFsZyI6ICJIUzI1NiIgfScpLCBudWxsKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBTZWNyZXQga2V5IGRhdGEgaXMgbm90IHByZXNlbnQgaXMgSldLLgorUEFTUyBj
cnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgYXNjaWlUb0FycmF5QnVmZmVyKCd7ICJrdHki
OiAib2N0IiwgImFsZyI6ICJBMTI4Q0JDIiB9JyksIG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IFNlY3JldCBrZXkgZGF0YSBpcyBub3QgcHJlc2VudCBpcyBKV0suCitQQVNTIGNyeXB0
by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCBhc2NpaVRvQXJyYXlCdWZmZXIoJ3sgImt0eSI6ICJv
Y3QiLCAiYWxnIjogIkhTMjU2IiwgInVzZSI6ICJzaWciLCAiZXh0cmFjdGFibGUiOiBmYWxzZSwg
ImsiOiAiMTIzNCIgfScpLCBudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBLZXkgc2l6
ZSBpcyBub3QgdmFsaWQgZm9yIEhTMjU2LgorUEFTUyBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgi
andrIiwgYXNjaWlUb0FycmF5QnVmZmVyKCd7ICJrdHkiOiAib2N0IiwgImFsZyI6ICJBMTI4Q0JD
IiwgInVzZSI6ICJzaWciLCAiZXh0cmFjdGFibGUiOiBmYWxzZSwgImsiOiAiMTIzNCIgfScpLCBu
dWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBLZXkgc2l6ZSBpcyBub3QgdmFsaWQgZm9y
IEExMjhDQkMuCitQQVNTIGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCBhc2NpaVRvQXJy
YXlCdWZmZXIoJ3sgImt0eSI6ICJvY3QiLCAiYWxnIjogIkExMjhDQkMiLCAidXNlIjogInNpZyIs
ICJleHRyYWN0YWJsZSI6IGZhbHNlLCAiayI6ICJhaGprbjIzMzg3Zmduc2liZjIzcXN2YWhqa24z
NzM4N2ZnbnNpYmYyM3FzIiB9JyksIG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEtl
eSBzaXplIGlzIG5vdCB2YWxpZCBmb3IgQTEyOENCQy4KK1BBU1MgY3J5cHRvLnN1YnRsZS5pbXBv
cnRLZXkoImp3ayIsIGFzY2lpVG9BcnJheUJ1ZmZlcigneyAia3R5IjogIm9jdCIsICJhbGciOiAi
SFMyNTYiLCAidXNlIjogInNpZyIsICJleHRyYWN0YWJsZSI6IGZhbHNlLCAiayI6ICJhaGprbjIz
Mzg3Zituc2liZjIzcXN2YWhqa24zNzM4N2ZnbnNpYmYyM3FzIiB9JyksIG51bGwpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCBkZWNvZGUgYmFzZTY0dXJsIGtleSBkYXRhIGluIEpX
Sy4KK1BBU1MgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIGFzY2lpVG9BcnJheUJ1ZmZl
cigneyAia3R5IjogMSwgImFsZyI6ICJIUzI1NiIsICJ1c2UiOiAic2lnIiwgImV4dHJhY3RhYmxl
IjogZmFsc2UsICJrIjogImFoamtuMjMzODdmZ25zaWJmMjNxc3ZhaGprbjM3Mzg3Zmduc2liZjIz
cXMiIH0nKSwgbnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRXhwZWN0ZWQgYSBzdHJp
bmcgdmFsdWUgZm9yICJrdHkiIEpTT04ga2V5LgorUEFTUyBjcnlwdG8uc3VidGxlLmltcG9ydEtl
eSgiandrIiwgYXNjaWlUb0FycmF5QnVmZmVyKCd7ICJrdHkiOiAib2N0IiwgImFsZyI6IDEsICJ1
c2UiOiAic2lnIiwgImV4dHJhY3RhYmxlIjogZmFsc2UsICJrIjogImFoamtuMjMzODdmZ25zaWJm
MjNxc3ZhaGprbjM3Mzg3Zmduc2liZjIzcXMiIH0nKSwgbnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogRXhwZWN0ZWQgYSBzdHJpbmcgdmFsdWUgZm9yICJhbGciIEpTT04ga2V5LgorUEFT
UyBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgYXNjaWlUb0FycmF5QnVmZmVyKCd7ICJr
dHkiOiAib2N0IiwgImFsZyI6ICJIUzI1NiIsICJ1c2UiOiAxLCAiZXh0cmFjdGFibGUiOiBmYWxz
ZSwgImsiOiAiYWhqa24yMzM4N2ZnbnNpYmYyM3FzdmFoamtuMzczODdmZ25zaWJmMjNxcyIgfScp
LCBudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBFeHBlY3RlZCBhIHN0cmluZyB2YWx1
ZSBmb3IgInVzZSIgSlNPTiBrZXkuCitQQVNTIGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2si
LCBhc2NpaVRvQXJyYXlCdWZmZXIoJ3sgImt0eSI6ICJvY3QiLCAiYWxnIjogIkhTMjU2IiwgInVz
ZSI6ICJzaWciLCAiZXh0cmFjdGFibGUiOiAiZmFsc2UiLCAiayI6ICJhaGprbjIzMzg3Zmduc2li
ZjIzcXN2YWhqa24zNzM4N2ZnbnNpYmYyM3FzIiB9JyksIG51bGwpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IEV4cGVjdGVkIGEgYm9vbGVhbiB2YWx1ZSBmb3IgImV4dHJhY3RhYmxlIiBKU09O
IGtleS4KK1BBU1MgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIGFzY2lpVG9BcnJheUJ1
ZmZlcigneyAia3R5IjogIm9jdCIsICJhbGciOiAiSFMyNTYiLCAidXNlIjogInNpZyIsICJleHRy
YWN0YWJsZSI6IGZhbHNlLCAiayI6IDEgfScpLCBudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBFeHBlY3RlZCBhIHN0cmluZyB2YWx1ZSBmb3IgImsiIEpTT04ga2V5LgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5n
ZXMgb246IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvaW1wb3J0LWp3ay1leHBlY3RlZC50eHQK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMCwwICsxICMjCit0ZXh0L3BsYWlu
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMg
LTAsMCArMSAjIworbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6
IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvaW1wb3J0LWp3ay5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvaW1wb3J0LWp3ay5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9pbXBvcnQtandrLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2NvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxz
Y3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCBlcnJvciBoYW5kbGluZyBmb3IgSldLIGltcG9ydC4i
KTsKKworLy9qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworaWYgKCF3aW5kb3cuc3VidGxlKQorICAg
IHdpbmRvdy5jcnlwdG8uc3VidGxlID0gd2luZG93LmNyeXB0by53ZWJraXRTdWJ0bGU7CisKK3No
b3VsZFRocm93KCdjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgYXNjaWlUb0FycmF5QnVm
ZmVyKFwnXCcpLCBudWxsKScpCitzaG91bGRUaHJvdygnY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXko
Imp3ayIsIGFzY2lpVG9BcnJheUJ1ZmZlcihcJ3tcJyksIG51bGwpJykKK3Nob3VsZFRocm93KCdj
cnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgYXNjaWlUb0FycmF5QnVmZmVyKFwnbnVsbFwn
KSwgbnVsbCknKQorc2hvdWxkVGhyb3coJ2NyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCBh
c2NpaVRvQXJyYXlCdWZmZXIoXCd1bmRlZmluZWRcJyksIG51bGwpJykKK3Nob3VsZFRocm93KCdj
cnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgYXNjaWlUb0FycmF5QnVmZmVyKFwne31cJyks
IG51bGwpJykKK3Nob3VsZFRocm93KCdjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgYXNj
aWlUb0FycmF5QnVmZmVyKFwne31cJyksICJhZXMtY2JjIiknKQorCisvLyBVbmtub3duL2ludmFs
aWQgSldLIHZhbHVlcy4KK3Nob3VsZFRocm93KCdjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandr
IiwgYXNjaWlUb0FycmF5QnVmZmVyKFwneyAia3R5IjogImZvb2JhciIsICJhbGciOiAiSFMyNTYi
LCAidXNlIjogInNpZyIsICJrIjogImFoamtuMjMzODdmZ25zaWJmMjNxc3ZhaGprbjM3Mzg3Zmdu
c2liZjIzcXMiIH1cJyksIG51bGwpJykKK3Nob3VsZFRocm93KCdjcnlwdG8uc3VidGxlLmltcG9y
dEtleSgiandrIiwgYXNjaWlUb0FycmF5QnVmZmVyKFwneyAia3R5IjogIm9jdCIsICJhbGciOiAi
Zm9vYmFyIiwgInVzZSI6ICJzaWciLCAiayI6ICJhaGprbjIzMzg3Zmduc2liZjIzcXN2YWhqa24z
NzM4N2ZnbnNpYmYyM3FzIiB9XCcpLCBudWxsKScpCisKKy8vIEFsZ29yaXRobSBtaXNtYXRjaC4K
K3Nob3VsZFRocm93KCdjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgYXNjaWlUb0FycmF5
QnVmZmVyKFwneyAia3R5IjogIm9jdCIsICJhbGciOiAiSFMyNTYiLCAidXNlIjogInNpZyIsICJl
eHRyYWN0YWJsZSI6IGZhbHNlLCAiayI6ICJhaGprbjIzMzg3Zmduc2liZjIzcXN2YWhqa24zNzM4
N2ZnbnNpYmYyM3FzIiB9XCcpLCAiYWVzLWNiYyIpJykKK3Nob3VsZFRocm93KCdjcnlwdG8uc3Vi
dGxlLmltcG9ydEtleSgiandrIiwgYXNjaWlUb0FycmF5QnVmZmVyKFwneyAia3R5IjogIm9jdCIs
ICJhbGciOiAiSFMyNTYiLCAidXNlIjogInNpZyIsICJleHRyYWN0YWJsZSI6IGZhbHNlLCAiayI6
ICJhaGprbjIzMzg3Zmduc2liZjIzcXN2YWhqa24zNzM4N2ZnbnNpYmYyM3FzIiB9XCcpLCB7IG5h
bWU6ICJobWFjIiwgaGFzaDogInNoYS0xIiB9KScpCisKKy8vIE5vIGtleSBkYXRhLgorc2hvdWxk
VGhyb3coJ2NyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCBhc2NpaVRvQXJyYXlCdWZmZXIo
XCd7ICJrdHkiOiAib2N0IiwgImFsZyI6ICJIUzI1NiIgfVwnKSwgbnVsbCknKQorc2hvdWxkVGhy
b3coJ2NyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCBhc2NpaVRvQXJyYXlCdWZmZXIoXCd7
ICJrdHkiOiAib2N0IiwgImFsZyI6ICJBMTI4Q0JDIiB9XCcpLCBudWxsKScpCisKKy8vIEtleSBk
YXRhIGxlbmd0aCBpcyBpbmNvcnJlY3QsIG5vdCBhbGxvd2VkIGluIEpXSy4KK3Nob3VsZFRocm93
KCdjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgYXNjaWlUb0FycmF5QnVmZmVyKFwneyAi
a3R5IjogIm9jdCIsICJhbGciOiAiSFMyNTYiLCAidXNlIjogInNpZyIsICJleHRyYWN0YWJsZSI6
IGZhbHNlLCAiayI6ICIxMjM0IiB9XCcpLCBudWxsKScpCitzaG91bGRUaHJvdygnY3J5cHRvLnN1
YnRsZS5pbXBvcnRLZXkoImp3ayIsIGFzY2lpVG9BcnJheUJ1ZmZlcihcJ3sgImt0eSI6ICJvY3Qi
LCAiYWxnIjogIkExMjhDQkMiLCAidXNlIjogInNpZyIsICJleHRyYWN0YWJsZSI6IGZhbHNlLCAi
ayI6ICIxMjM0IiB9XCcpLCBudWxsKScpCitzaG91bGRUaHJvdygnY3J5cHRvLnN1YnRsZS5pbXBv
cnRLZXkoImp3ayIsIGFzY2lpVG9BcnJheUJ1ZmZlcihcJ3sgImt0eSI6ICJvY3QiLCAiYWxnIjog
IkExMjhDQkMiLCAidXNlIjogInNpZyIsICJleHRyYWN0YWJsZSI6IGZhbHNlLCAiayI6ICJhaGpr
bjIzMzg3Zmduc2liZjIzcXN2YWhqa24zNzM4N2ZnbnNpYmYyM3FzIiB9XCcpLCBudWxsKScpCisK
Ky8vIEtleSBkYXRhIGlzIG5vdCB2YWxpZCBiYXNlNjR1cmwuCitzaG91bGRUaHJvdygnY3J5cHRv
LnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIGFzY2lpVG9BcnJheUJ1ZmZlcihcJ3sgImt0eSI6ICJv
Y3QiLCAiYWxnIjogIkhTMjU2IiwgInVzZSI6ICJzaWciLCAiZXh0cmFjdGFibGUiOiBmYWxzZSwg
ImsiOiAiYWhqa24yMzM4N2YrbnNpYmYyM3FzdmFoamtuMzczODdmZ25zaWJmMjNxcyIgfVwnKSwg
bnVsbCknKQorCisvLyBJbmNvcnJlY3QgZGF0YSB0eXBlcy4KK3Nob3VsZFRocm93KCdjcnlwdG8u
c3VidGxlLmltcG9ydEtleSgiandrIiwgYXNjaWlUb0FycmF5QnVmZmVyKFwneyAia3R5IjogMSwg
ImFsZyI6ICJIUzI1NiIsICJ1c2UiOiAic2lnIiwgImV4dHJhY3RhYmxlIjogZmFsc2UsICJrIjog
ImFoamtuMjMzODdmZ25zaWJmMjNxc3ZhaGprbjM3Mzg3Zmduc2liZjIzcXMiIH1cJyksIG51bGwp
JykKK3Nob3VsZFRocm93KCdjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgYXNjaWlUb0Fy
cmF5QnVmZmVyKFwneyAia3R5IjogIm9jdCIsICJhbGciOiAxLCAidXNlIjogInNpZyIsICJleHRy
YWN0YWJsZSI6IGZhbHNlLCAiayI6ICJhaGprbjIzMzg3Zmduc2liZjIzcXN2YWhqa24zNzM4N2Zn
bnNpYmYyM3FzIiB9XCcpLCBudWxsKScpCitzaG91bGRUaHJvdygnY3J5cHRvLnN1YnRsZS5pbXBv
cnRLZXkoImp3ayIsIGFzY2lpVG9BcnJheUJ1ZmZlcihcJ3sgImt0eSI6ICJvY3QiLCAiYWxnIjog
IkhTMjU2IiwgInVzZSI6IDEsICJleHRyYWN0YWJsZSI6IGZhbHNlLCAiayI6ICJhaGprbjIzMzg3
Zmduc2liZjIzcXN2YWhqa24zNzM4N2ZnbnNpYmYyM3FzIiB9XCcpLCBudWxsKScpCitzaG91bGRU
aHJvdygnY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIGFzY2lpVG9BcnJheUJ1ZmZlcihc
J3sgImt0eSI6ICJvY3QiLCAiYWxnIjogIkhTMjU2IiwgInVzZSI6ICJzaWciLCAiZXh0cmFjdGFi
bGUiOiAiZmFsc2UiLCAiayI6ICJhaGprbjIzMzg3Zmduc2liZjIzcXN2YWhqa24zNzM4N2ZnbnNp
YmYyM3FzIiB9XCcpLCBudWxsKScpCitzaG91bGRUaHJvdygnY3J5cHRvLnN1YnRsZS5pbXBvcnRL
ZXkoImp3ayIsIGFzY2lpVG9BcnJheUJ1ZmZlcihcJ3sgImt0eSI6ICJvY3QiLCAiYWxnIjogIkhT
MjU2IiwgInVzZSI6ICJzaWciLCAiZXh0cmFjdGFibGUiOiBmYWxzZSwgImsiOiAxIH1cJyksIG51
bGwpJykKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2ltcG9ydC1qd2suaHRtbApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFk
ZGVkOiBzdm46bWltZS10eXBlCiMjIC0wLDAgKzEgIyMKK3RleHQvaHRtbApcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIHByb3BlcnR5Cg==
</data>
<flag name="review"
          id="239387"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>