<?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>123669</bug_id>
          
          <creation_ts>2013-11-02 10:38:22 -0700</creation_ts>
          <short_desc>Implement generateKey for HMAC and AES-CBC</short_desc>
          <delta_ts>2013-11-04 10:43:36 -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>
          <dependson>123744</dependson>
          <blocked>122679</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>andersca</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
    
    <cc>syoichi</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>946235</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-02 10:38:22 -0700</bug_when>
    <thetext>Implement generateKey for HMAC and AES-CBC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946243</commentid>
    <comment_count>1</comment_count>
      <attachid>215815</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-02 10:49:50 -0700</bug_when>
    <thetext>Created attachment 215815
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946244</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-02 10:50:36 -0700</bug_when>
    <thetext>Attachment 215815 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-generate-key-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/aes-cbc-generate-key.html&apos;, u&apos;LayoutTests/crypto/subtle/hmac-generate-key-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/hmac-generate-key.html&apos;, u&apos;LayoutTests/crypto/subtle/sha-1-expected.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDOMBinding.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDOMBinding.h&apos;, u&apos;Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp&apos;, u&apos;Source/WebCore/crypto/CryptoAlgorithmAesKeyGenParams.h&apos;, u&apos;Source/WebCore/crypto/CryptoKey.cpp&apos;, u&apos;Source/WebCore/crypto/CryptoKey.h&apos;, u&apos;Source/WebCore/crypto/CryptoKeyAES.cpp&apos;, u&apos;Source/WebCore/crypto/CryptoKeyAES.h&apos;, u&apos;Source/WebCore/crypto/CryptoKeyMac.cpp&apos;, u&apos;Source/WebCore/crypto/SubtleCrypto.idl&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.cpp&apos;, u&apos;Source/WebCore/crypto/keys/CryptoKeyHMAC.cpp&apos;, u&apos;Source/WebCore/crypto/keys/CryptoKeyHMAC.h&apos;, u&apos;Source/WebCore/crypto/mac/CryptoAlgorithmAES_CBCMac.cpp&apos;, u&apos;Source/WebCore/crypto/mac/CryptoAlgorithmHMACMac.cpp&apos;]&quot; exit_code: 1
Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:58:  CryptoAlgorithmAES_CBC::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/crypto/CryptoKeyMac.cpp:32:  Missing spaces around /  [whitespace/operators] [3]
Total errors found: 2 in 23 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>946387</commentid>
    <comment_count>3</comment_count>
      <attachid>215815</attachid>
    <who name="">mitz</who>
    <bug_when>2013-11-02 23:13:01 -0700</bug_when>
    <thetext>Comment on attachment 215815
proposed patch

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

&gt; Source/WebCore/crypto/keys/CryptoKeyHMAC.h:44
&gt; +    // If lengthBytes is 0, recommended length is used, which is the size of the associated hash function&apos;s block size.

Needs an article before “recommended”.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946388</commentid>
    <comment_count>4</comment_count>
      <attachid>215846</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-02 23:25:58 -0700</bug_when>
    <thetext>Created attachment 215846
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946390</commentid>
    <comment_count>5</comment_count>
      <attachid>215846</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-02 23:57:02 -0700</bug_when>
    <thetext>Comment on attachment 215846
patch for landing

Clearing flags on attachment: 215846

Committed r158526: &lt;http://trac.webkit.org/changeset/158526&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946391</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-02 23:57:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946697</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-04 09:30:23 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 123744</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946713</commentid>
    <comment_count>8</comment_count>
      <attachid>215928</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-04 10:11:23 -0800</bug_when>
    <thetext>Created attachment 215928
patch for re-landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946714</commentid>
    <comment_count>9</comment_count>
      <attachid>215928</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-04 10:12:14 -0800</bug_when>
    <thetext>Comment on attachment 215928
patch for re-landing

Rejecting attachment 215928 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 215928, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
pply&apos;, &apos;--force&apos;]&quot; exit_code: 29 cwd: /Volumes/Data/EWS/WebKit

Parsed 24 diffs from patch file(s).
cp: Source/WebCore/crypto/CryptoAlgorithmAesKeyGenParams.h: No such file or directory
Failed to copy Source/WebCore/crypto/CryptoAlgorithmAesKeyGenParams.h Source/WebCore/crypto/CryptoAlgorithmAesKeyGenParams.h. at /Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply line 436.

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 29 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.appspot.com/results/19648792</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946722</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-04 10:23:05 -0800</bug_when>
    <thetext>Sigh. Filed bug 123747 for commit queue failure, will re-land manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946730</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-04 10:43:36 -0800</bug_when>
    <thetext>Re-landed in &lt;http://trac.webkit.org/r158582&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215815</attachid>
            <date>2013-11-02 10:49:50 -0700</date>
            <delta_ts>2013-11-02 23:25:58 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>AddGenerateKey.txt</filename>
            <type>text/plain</type>
            <size>39307</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1ODQ5MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU5IEBACisyMDEzLTExLTAyICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBnZW5lcmF0
ZUtleSBmb3IgSE1BQyBhbmQgQUVTLUNCQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdHM6IGNyeXB0by9zdWJ0bGUvYWVzLWNiYy1nZW5lcmF0ZS1r
ZXkuaHRtbAorICAgICAgICAgICAgICAgY3J5cHRvL3N1YnRsZS9obWFjLWdlbmVyYXRlLWtleS5o
dG1sCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVk
IG5ldyBmaWxlcy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGlj
dGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBZXNLZXlHZW5QYXJhbXMpOiBB
ZGRlZCBiaW5kaW5ncyBmb3IgQWVzS2V5R2VuUGFyYW1zLgorICAgICAgICAoV2ViQ29yZTo6SlND
cnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5OjpjcmVhdGVQYXJhbWV0ZXJzRm9yR2VuZXJhdGVLZXkp
OiBIYW5kbGUKKyAgICAgICAgYWxnb3JpdGhtcyB0aGF0IGdlbmVyYXRlIEFFUyBhbmQgSE1BQyBr
ZXlzLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnRvSW50MTZFbmZvcmNlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6dG9VSW50
MTZFbmZvcmNlUmFuZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgor
ICAgICAgICBBZGRlZCBhIHZlcnNpb24gb2YgdG9JbnQgdGhhdCBlbmZvcmNlcyBhIHNob3J0IHJh
bmdlLCBiZWNhdXNlIEFlc0tleUdlblBhcmFtcyBoYXMKKyAgICAgICAgYW4gdW5zaWduZWQgc2hv
cnQgd2l0aCBbRW5mb3JjZVJhbmdlXS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU3VidGxl
Q3J5cHRvQ3VzdG9tLmNwcDogKFdlYkNvcmU6OkpTU3VidGxlQ3J5cHRvOjpnZW5lcmF0ZUtleSk6
IEFkZGVkLgorCisgICAgICAgICogY3J5cHRvL0NyeXB0b0FsZ29yaXRobUFlc0tleUdlblBhcmFt
cy5oOiBBZGRlZC4KKworICAgICAgICAqIGNyeXB0by9DcnlwdG9LZXkuY3BwOiAoV2ViQ29yZTo6
Q3J5cHRvS2V5OjpyYW5kb21EYXRhKToKKyAgICAgICAgKiBjcnlwdG8vQ3J5cHRvS2V5Lmg6Cisg
ICAgICAgICogY3J5cHRvL0NyeXB0b0tleU1hYy5jcHA6IEFkZGVkCisgICAgICAgIEV4cG9zZSBh
IGZ1bmN0aW9uIHRoYXQgcHJvZHVjZXMgcmFuZG9tIGRhdGEgZm9yIHN5bW1ldHJpYyBjcnlwdG8g
a2V5cy4gQ3Jvc3MtcGxhdGZvcm0KKyAgICAgICAgaW1wbGVtZW50YXRpb24gdXNlcyBBUkM0IGNv
ZGUgZnJvbSBXVEYsIHdoaWxlIG9uIE1hYywgdXNpbmcgYSBzeXN0ZW0gZnVuY3Rpb24gdGhhdAor
ICAgICAgICBJIHdhcyByZWNvbW1lbmRlZCB0byB1c2UuCisKKyAgICAgICAgKiBjcnlwdG8vQ3J5
cHRvS2V5QUVTLmNwcDogKFdlYkNvcmU6OkNyeXB0b0tleUFFUzo6Z2VuZXJhdGUpOgorICAgICAg
ICAqIGNyeXB0by9DcnlwdG9LZXlBRVMuaDoKKyAgICAgICAgQWRkZWQgYSBmdW5jdGlvbiB0aGF0
IGNyZWF0ZXMgQUVTIGtleXMuCisKKyAgICAgICAgKiBjcnlwdG8vU3VidGxlQ3J5cHRvLmlkbDog
QWRkZWQgZ2VuZXJhdGVLZXkuCisKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1BRVNfQ0JDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFF
U19DQkM6OmdlbmVyYXRlS2V5KTogQWRkZWQuCisKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29y
aXRobUhNQUM6OmdlbmVyYXRlS2V5KTogQWRkZWQuCisKKyAgICAgICAgKiBjcnlwdG8va2V5cy9D
cnlwdG9LZXlITUFDLmNwcDogKFdlYkNvcmU6OkNyeXB0b0tleUhNQUM6OmdlbmVyYXRlKToKKyAg
ICAgICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlITUFDLmg6CisgICAgICAgIEFkZGVkIGEgZnVu
Y3Rpb24gdGhhdCBjcmVhdGVzIEhNQUMga2V5cy4KKworICAgICAgICAqIGNyeXB0by9tYWMvQ3J5
cHRvQWxnb3JpdGhtQUVTX0NCQ01hYy5jcHA6IFJlbW92ZWQgZ2VuZXJhdGVLZXkgc3R1YiwgdGhl
IGltcGxlbWVudGF0aW9uCisgICAgICAgIGVuZGVkIHVwIGluIGNyb3NzLXBsYXRmb3JtIGZpbGUu
CisKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhNQUNNYWMuY3BwOiBEaXR0
by4KKwogMjAxMy0xMS0wMiAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBWYXJpb3VzIHNtYWxsIFdpbkNFIGJ1aWxkIGZpeGVzCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAxNTg0OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU1NzksNiArNTU3OSw4IEBACiAJCUUxODcwNTYzMTZF
NTRBMEQwMDU4NUU5NyAvKiBNYWluVGhyZWFkVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4NzA1NjIxNkU1NEEwRDAwNTg1RTk3IC8qIE1haW5U
aHJlYWRUYXNrLmggKi87IH07CiAJCUUxODc3MkYxMTI2RTI2MjkwMDNERDU4NiAvKiBMYW5ndWFn
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTg3
NzJGMDEyNkUyNjI5MDAzREQ1ODYgLyogTGFuZ3VhZ2UuY3BwICovOyB9OwogCQlFMTk3MjcxNjE4
MjA1NDlFMDA1OTJENTEgLyogQ3J5cHRvS2V5VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5NzI3MTUxODIwNTQ5RTAwNTkyRDUxIC8qIENyeXB0
b0tleVR5cGUuaCAqLzsgfTsKKwkJRTE5QUMzRjcxODI0RTVEMTAwMzQ5NDI2IC8qIENyeXB0b0Fs
Z29yaXRobUFlc0tleUdlblBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTE5QUMzRjYxODI0RTVEMTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRo
bUFlc0tleUdlblBhcmFtcy5oICovOyB9OworCQlFMTlBQzNGOTE4MjU2NkY3MDAzNDk0MjYgLyog
Q3J5cHRvS2V5TWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxOUFDM0Y4MTgyNTY2RjcwMDM0OTQyNiAvKiBDcnlwdG9LZXlNYWMuY3BwICovOyB9
OwogCQlFMTlEQTI5QzE4MTg5QUREMDAwODhCQzggLyogQ3J5cHRvQWxnb3JpdGhtSG1hY0tleVBh
cmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5
REEyOUIxODE4OUFERDAwMDg4QkM4IC8qIENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXMuaCAq
LzsgfTsKIAkJRTFBMTQ3MDgxMTEwMkIxNTAwRUVDMEYzIC8qIENvbnRhaW5lck5vZGVBbGdvcml0
aG1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUEx
NDcwNzExMTAyQjE1MDBFRUMwRjMgLyogQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCAqLzsgfTsK
IAkJRTFBMzE2MkQxMzRCQzMyRDAwN0M5QTRGIC8qIFdlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJh
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBMzE2
MkIxMzRCQzMyRDAwN0M5QTRGIC8qIFdlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjU5NCw2ICsx
MjU5Niw4IEBACiAJCUUxODcwNTYyMTZFNTRBMEQwMDU4NUU5NyAvKiBNYWluVGhyZWFkVGFzay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWluVGhyZWFkVGFzay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTg3NzJGMDEyNkUyNjI5MDAzREQ1ODYgLyogTGFu
Z3VhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGFuZ3VhZ2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTk3MjcxNTE4MjA1NDlFMDA1OTJE
NTEgLyogQ3J5cHRvS2V5VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
cnlwdG9LZXlUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxOUFDM0Y2MTgy
NEU1RDEwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1BZXNLZXlHZW5QYXJhbXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtQWVzS2V5R2VuUGFyYW1z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxOUFDM0Y4MTgyNTY2RjcwMDM0OTQy
NiAvKiBDcnlwdG9LZXlNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ3J5cHRvS2V5TWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE5REEy
OUIxODE4OUFERDAwMDg4QkM4IC8qIENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFt
cy5oOyBwYXRoID0gcGFyYW1ldGVycy9DcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQTE0NzA3MTExMDJCMTUwMEVFQzBGMyAvKiBD
b250YWluZXJOb2RlQWxnb3JpdGhtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMUEzMTYyQjEzNEJDMzJEMDA3QzlBNEYgLyogV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk5TQXR0cmlidXRlZFN0cmlu
Z0V4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAxMzgsNiArMjAxNDIs
NyBAQAogCQkJCUUxMjVGODM3MTgyMkYxRUIwMEQ4NENEOSAvKiBDcnlwdG9BbGdvcml0aG1ITUFD
TWFjLmNwcCAqLywKIAkJCQlFMUJCODRBQzE4MjJDQTc0MDA1MjUwNDMgLyogQ3J5cHRvQWxnb3Jp
dGhtUmVnaXN0cnlNYWMuY3BwICovLAogCQkJCUUxMjVGODJEMTgyMkNGRkYwMEQ4NENEOSAvKiBD
cnlwdG9BbGdvcml0aG1TSEExTWFjLmNwcCAqLywKKwkJCQlFMTlBQzNGODE4MjU2NkY3MDAzNDk0
MjYgLyogQ3J5cHRvS2V5TWFjLmNwcCAqLywKIAkJCSk7CiAJCQluYW1lID0gbWFjOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIwMTcwLDYgKzIwMTc1LDcgQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJRTEyNUY4MzkxODI0MTA0ODAwRDg0Q0Q5IC8q
IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtcy5oICovLAorCQkJCUUxOUFDM0Y2MTgyNEU1RDEw
MDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1BZXNLZXlHZW5QYXJhbXMuaCAqLywKIAkJCQlFMTlE
QTI5QjE4MTg5QUREMDAwODhCQzggLyogQ3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcy5oICov
LAogCQkJCUUxQzY1NzFFMTgxNkU1MDMwMDI1NkNERCAvKiBDcnlwdG9BbGdvcml0aG1IbWFjUGFy
YW1zLmggKi8sCiAJCQkpOwpAQCAtMjMxMzcsNiArMjMxNDMsNyBAQAogCQkJCUQzNTlEOEJGMTI5
Q0E1NUMwMDA2RTVEMiAvKiBKU0hUTUxEZXRhaWxzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzY4MDhCNTAxNTlEQURGQTAwMkI1MjMzIC8qIEpTSFRNTERpYWxvZ0VsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBODVCMUU3MEExQjI0MDUwMEQ4Qzg3QyAvKiBKU0hUTUxEaXJlY3Rv
cnlFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMTlBQzNGNzE4MjRFNUQxMDAzNDk0MjYg
LyogQ3J5cHRvQWxnb3JpdGhtQWVzS2V5R2VuUGFyYW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTg1QjJCNzBBMUIyQUM3MDBEOEM4N0MgLyogSlNIVE1MRGl2RWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE4NUIxRTkwQTFCMjQwNTAwRDhDODdDIC8qIEpTSFRNTERMaXN0RWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0OTRFMzUwQTEyMzU4QjAwRkRBRkMxIC8qIEpTSFRNTERv
Y3VtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI2OTQ4LDYgKzI2OTU1LDcgQEAKIAkJCQk4NTAz
MUI0OTBBNDRFRkM3MDBGOTkyRTAgLyogTXV0YXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDNkYwOTAwRTE0MzI3QjYxMDA2ODU4NDkgLyogTXV0YXRpb25PYnNlcnZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlENkU1MjhBMzE0OUE5MjZEMDBFRkUxRjMgLyogTXV0YXRpb25PYnNl
cnZlckludGVyZXN0R3JvdXAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTE5QUMzRjkxODI1NjZG
NzAwMzQ5NDI2IC8qIENyeXB0b0tleU1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlENkUyNzZB
RjE0NjM3NDU1MDAxRDI4MEEgLyogTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDNkYwOEZCQzE0MzBGRThGMDA2ODU4NDkgLyogTXV0YXRpb25SZWNv
cmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTJCNkM5QzUxNUUzRjRERjAwNjkwQjA1IC8qIE5h
bWVkRmxvd0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFy
eS5jcHAJKHJldmlzaW9uIDE1ODQ5MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5
LDcgQEAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAogI2luY2x1ZGUgIkNyeXB0b0FsZ29y
aXRobUFlc0NiY1BhcmFtcy5oIgorI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUFlc0tleUdlblBh
cmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXMuaCIKICNpbmNs
dWRlICJDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3Jp
dGhtUmVnaXN0cnkuaCIKQEAgLTEyNiw3ICsxMjcsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1B
ZXNDYmNQYXJhbXM+IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVz
Q2JjUGFyYW1zPigpOworICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9B
bGdvcml0aG1BZXNDYmNQYXJhbXM+KCk7CiAKICAgICBDcnlwdG9PcGVyYXRpb25EYXRhIGl2RGF0
YTsKICAgICBpZiAoIWNyeXB0b09wZXJhdGlvbkRhdGFGcm9tSlNWYWx1ZShleGVjLCBpdiwgaXZE
YXRhKSkgewpAQCAtMTQ0LDYgKzE0NSwyNCBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0FsZ29yaXRobVBhCiAgICAgcmV0dXJuIHN0ZDo6bW92ZShyZXN1bHQpOwogfQogCitzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IGNyZWF0ZUFlc0tleUdl
blBhcmFtcyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlKQoreworICAg
IGlmICghdmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjKTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byByZXN1bHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0tleUdlblBhcmFtcz4oKTsKKworICAgIEpT
VmFsdWUgbGVuZ3RoVmFsdWUgPSBnZXRQcm9wZXJ0eShleGVjLCB2YWx1ZS5nZXRPYmplY3QoKSwg
Imxlbmd0aCIpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICByZXN1bHQtPmxlbmd0aCA9IHRvVUludDE2RW5mb3JjZVJhbmdlKGV4
ZWMsIGxlbmd0aFZhbHVlKTsKKworICAgIHJldHVybiBzdGQ6Om1vdmUocmVzdWx0KTsKK30KKwog
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcmVhdGVI
bWFjUGFyYW1zKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAg
ICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7CkBAIC0xNTIsNyArMTcxLDcgQEAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYQogICAgIH0KIAogICAgIEpTRGljdGlvbmFy
eSBqc0RpY3Rpb25hcnkoZXhlYywgdmFsdWUuZ2V0T2JqZWN0KCkpOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zPiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXM+KCk7CisgICAgYXV0byByZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXM+KCk7CiAKICAgICBpZiAoIWdldEhh
c2hBbGdvcml0aG0oanNEaWN0aW9uYXJ5LCByZXN1bHQtPmhhc2gpKSB7CiAgICAgICAgIEFTU0VS
VChleGVjLT5oYWRFeGNlcHRpb24oKSk7CkBAIC0xNzAsNyArMTg5LDcgQEAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYQogICAgIH0KIAogICAgIEpTRGljdGlvbmFyeSBq
c0RpY3Rpb25hcnkoZXhlYywgdmFsdWUuZ2V0T2JqZWN0KCkpOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KCk7CisgICAgYXV0byByZXN1bHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KCk7CiAKICAgICBpZiAo
IWdldEhhc2hBbGdvcml0aG0oanNEaWN0aW9uYXJ5LCByZXN1bHQtPmhhc2gpKSB7CiAgICAgICAg
IEFTU0VSVChleGVjLT5oYWRFeGNlcHRpb24oKSk7CkBAIC0zNDQsNyArMzYzLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcgogICAgIH0KIH0KIAotc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IEpTQ3J5cHRvQWxnb3JpdGhtRGljdGlv
bmFyeTo6Y3JlYXRlUGFyYW1ldGVyc0ZvckdlbmVyYXRlS2V5KEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgSlNDOjpKU1ZhbHVlKQorc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IEpTQ3J5cHRvQWxnb3JpdGht
RGljdGlvbmFyeTo6Y3JlYXRlUGFyYW1ldGVyc0ZvckdlbmVyYXRlS2V5KEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgSlNDOjpKU1ZhbHVl
IHZhbHVlKQogewogICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7CiAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpSU0FFU19QS0NTMV92MV81OgpAQCAtMzUzLDEyICszNzIsMTYgQEAg
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcgogICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX09BRVA6CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpFQ0RTQToKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVD
REg6CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBOT1RfU1VQUE9SVEVEX0VSUik7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6QUVTX0NUUjoKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DQkM6
CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ01BQzoKICAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19HQ006CiAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpBRVNfQ0ZCOgorICAgICAgICByZXR1cm4gY3JlYXRlQWVzS2V5R2Vu
UGFyYW1zKGV4ZWMsIHZhbHVlKTsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OkhNQUM6CisgICAgICAgIHJldHVybiBjcmVhdGVIbWFjS2V5UGFyYW1zKGV4ZWMsIHZhbHVlKTsK
ICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkRIOgogICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpTSEFfMjI0OgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuY3BwCShyZXZpc2lvbiAxNTg0OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTEsNiArMjkxLDkgQEAg
U3RydWN0dXJlKiBjYWNoZURPTVN0cnVjdHVyZShKU0RPTUdsb2JhbAogc3RhdGljIGNvbnN0IGlu
dDhfdCBrTWF4SW50OCA9IDEyNzsKIHN0YXRpYyBjb25zdCBpbnQ4X3Qga01pbkludDggPSAtMTI4
Owogc3RhdGljIGNvbnN0IHVpbnQ4X3Qga01heFVJbnQ4ID0gMjU1Oworc3RhdGljIGNvbnN0IGlu
dDE2X3Qga01heEludDE2ID0gMzI3Njc7CitzdGF0aWMgY29uc3QgaW50MTZfdCBrTWluSW50MTYg
PSAtMzI3Njg7CitzdGF0aWMgY29uc3QgdWludDE2X3Qga01heFVJbnQxNiA9IDY1NTM1Owogc3Rh
dGljIGNvbnN0IGludDMyX3Qga01heEludDMyID0gMHg3ZmZmZmZmZjsKIHN0YXRpYyBjb25zdCBp
bnQzMl90IGtNaW5JbnQzMiA9IC1rTWF4SW50MzIgLSAxOwogc3RhdGljIGNvbnN0IHVpbnQzMl90
IGtNYXhVSW50MzIgPSAweGZmZmZmZmZmVTsKQEAgLTM3MSw2ICszNzQsNDIgQEAgdWludDhfdCB0
b1VJbnQ4KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZQogICAgIHJldHVybiBzdGF0aWNfY2FzdDx1
aW50OF90PihmbW9kKHgsIDI1NikpOyAvLyAyXjguCiB9CiAKKy8vIGh0dHA6Ly93d3cudzMub3Jn
L1RSL1dlYklETC8jZXMtc2hvcnQKK2ludDE2X3QgdG9JbnQxNkVuZm9yY2VSYW5nZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkgewor
ICAgICAgICBpbnQzMl90IGludDMyVmFsdWUgPSB2YWx1ZS5hc0ludDMyKCk7CisgICAgICAgIGlm
IChpbnQzMlZhbHVlIDwga01pbkludDE2IHx8IGludDMyVmFsdWUgPiBrTWF4SW50MTYpIHsKKyAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDE2X3Q+KGludDMyVmFsdWUp
OworICAgIH0KKworICAgIGRvdWJsZSB4ID0gdmFsdWUudG9OdW1iZXIoZXhlYyk7CisgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gZW5m
b3JjZVJhbmdlKGV4ZWMsIHgsIGtNaW5JbnQxNiwga01heEludDE2KTsKK30KKworLy8gaHR0cDov
L3d3dy53My5vcmcvVFIvV2ViSURMLyNlcy11bnNpZ25lZC1zaG9ydAordWludDE2X3QgdG9VSW50
MTZFbmZvcmNlUmFuZ2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGlm
ICh2YWx1ZS5pc0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCBpbnQzMlZhbHVlID0gdmFsdWUu
YXNJbnQzMigpOworICAgICAgICBpZiAoaW50MzJWYWx1ZSA8IDAgfHwgaW50MzJWYWx1ZSA+IGtN
YXhVSW50MTYpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMpOworICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQx
Nl90PihpbnQzMlZhbHVlKTsKKyAgICB9CisKKyAgICBkb3VibGUgeCA9IHZhbHVlLnRvTnVtYmVy
KGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIGVuZm9yY2VSYW5nZShleGVjLCB4LCAwLCBrTWF4VUludDE2KTsKK30KKwog
Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvV2ViSURMLyNlcy1sb25nCiBpbnQzMl90IHRvSW50MzJF
bmZvcmNlUmFuZ2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHJldmlzaW9uIDE1ODQ5MikK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yODMsNiArMjgzLDkgQEAgY2xhc3MgRE9NU3RyaW5nTGlzdDsKICAgICAgICAgLy8g
RklYTUU6IEltcGxlbWVudCBDbGFtcAogICAgIH07CiAKKyAgICBpbnQxNl90IHRvSW50MTZFbmZv
cmNlUmFuZ2UoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOworICAgIHVpbnQxNl90IHRv
VUludDE2RW5mb3JjZVJhbmdlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlKTsKKwogICAg
IGludDMyX3QgdG9JbnQzMkVuZm9yY2VSYW5nZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSk7CiAgICAgdWludDMyX3QgdG9VSW50MzJFbmZvcmNlUmFuZ2UoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTVmFsdWUpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRs
ZUNyeXB0b0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCShyZXZpc2lvbiAxNTg0OTIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzNyw2ICszMzcsNTEgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6ZGlnZXN0KEV4
ZWNTdGF0ZQogICAgIHJldHVybiBwcm9taXNlOwogfQogCitKU1ZhbHVlIEpTU3VidGxlQ3J5cHRv
OjpnZW5lcmF0ZUtleShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBpZiAoZXhlYy0+YXJn
dW1lbnRDb3VudCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOworCisgICAgYXV0
byBhbGdvcml0aG0gPSBjcmVhdGVBbGdvcml0aG1Gcm9tSlNWYWx1ZShleGVjLCBleGVjLT51bmNo
ZWNrZWRBcmd1bWVudCgwKSk7CisgICAgaWYgKCFhbGdvcml0aG0pIHsKKyAgICAgICAgQVNTRVJU
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cisg
ICAgfQorCisgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5
OjpjcmVhdGVQYXJhbWV0ZXJzRm9yR2VuZXJhdGVLZXkoZXhlYywgYWxnb3JpdGhtLT5pZGVudGlm
aWVyKCksIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBpZiAoIXBhcmFtZXRlcnMp
IHsKKyAgICAgICAgQVNTRVJUKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CisgICAgfQorCisgICAgYm9vbCBleHRyYWN0YWJsZSA9IGZhbHNlOwor
ICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMikgeworICAgICAgICBleHRyYWN0YWJs
ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvQm9vbGVhbihleGVjKTsKKyAgICAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CisgICAgfQorCisgICAgQ3J5cHRvS2V5VXNhZ2Uga2V5VXNhZ2VzID0gMDsKKyAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDMpIHsKKyAgICAgICAgaWYgKCFjcnlwdG9LZXlVc2Fn
ZXNGcm9tSlNWYWx1ZShleGVjLCBleGVjLT5hcmd1bWVudCgyKSwga2V5VXNhZ2VzKSkgeworICAg
ICAgICAgICAgQVNTRVJUKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOworICAgICAgICB9CisgICAgfQorCisgICAgSlNQcm9taXNlKiBwcm9t
aXNlID0gSlNQcm9taXNlOjpjcmVhdGVXaXRoUmVzb2x2ZXIoZXhlYy0+dm0oKSwgZ2xvYmFsT2Jq
ZWN0KCkpOworICAgIGF1dG8gcHJvbWlzZVdyYXBwZXIgPSBQcm9taXNlV3JhcHBlcjo6Y3JlYXRl
KGdsb2JhbE9iamVjdCgpLCBwcm9taXNlKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwor
ICAgIGFsZ29yaXRobS0+Z2VuZXJhdGVLZXkoKnBhcmFtZXRlcnMsIGV4dHJhY3RhYmxlLCBrZXlV
c2FnZXMsIHN0ZDo6bW92ZShwcm9taXNlV3JhcHBlciksIGVjKTsKKyAgICBpZiAoZWMpIHsKKyAg
ICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CisgICAgfQorCisgICAgcmV0dXJuIHByb21pc2U7Cit9CisKIEpTVmFsdWUgSlNTdWJ0
bGVDcnlwdG86OmltcG9ydEtleShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpIDwgMykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9Dcnlw
dG9BbGdvcml0aG1BZXNLZXlHZW5QYXJhbXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtQWVzS2V5R2VuUGFyYW1zLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtQWVzS2V5R2VuUGFyYW1zLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ3J5
cHRvQWxnb3JpdGhtQWVzS2V5R2VuUGFyYW1zX2gKKyNkZWZpbmUgQ3J5cHRvQWxnb3JpdGhtQWVz
S2V5R2VuUGFyYW1zX2gKKworI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMuaCIK
KworI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIENyeXB0b0FsZ29yaXRobUFlc0tleUdlblBhcmFtcyBGSU5BTCA6IHB1YmxpYyBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzIHsKK3B1YmxpYzoKKyAgICAvLyBUaGUgbGVuZ3RoLCBpbiBiaXRz
LCBvZiB0aGUga2V5LgorICAgIHVuc2lnbmVkIGxlbmd0aDsKK307CisKK30KKworI2VuZGlmIC8v
IEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorI2VuZGlmIC8vIENyeXB0b0FsZ29yaXRobUFlc0tleUdl
blBhcmFtc19oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5
cHRvQWxnb3JpdGhtQWVzS2V5R2VuUGFyYW1zLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1z
dHlsZQojIyAtMCwwICsxICMjCituYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0
eQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5jcHAJKHJldmlzaW9uIDE1ODQ5MikK
KysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1EZXNjcmlwdGlvbkJ1
aWxkZXIuaCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oIgorI2luY2x1ZGUg
PHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04Nyw2ICs4OCwxNCBAQCBW
ZWN0b3I8U3RyaW5nPiBDcnlwdG9LZXk6OnVzYWdlcygpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAorI2lmICFQTEFURk9STShNQUMpCitWZWN0b3I8Y2hhcj4gQ3J5cHRvS2V5OjpyYW5k
b21EYXRhKHNpemVfdCBzaXplKQoreworICAgIFZlY3RvcjxjaGFyPiByZXN1bHQoc2l6ZSk7Cisg
ICAgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXMocmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNp
emUoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8pCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vQ3J5cHRvS2V5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5
cHRvL0NyeXB0b0tleS5oCShyZXZpc2lvbiAxNTg0OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlw
dG8vQ3J5cHRvS2V5LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDggQEAgcHVibGljOgog
CiAgICAgYm9vbCBhbGxvd3MoQ3J5cHRvS2V5VXNhZ2UgdXNhZ2UpIGNvbnN0IHsgcmV0dXJuIHVz
YWdlID09IChtX3VzYWdlcyAmIHVzYWdlKTsgfQogCisgICAgc3RhdGljIFZlY3RvcjxjaGFyPiBy
YW5kb21EYXRhKHNpemVfdCk7CisKIHByaXZhdGU6CiAgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
ZmllciBtX2FsZ29yaXRobTsKICAgICBDcnlwdG9LZXlUeXBlIG1fdHlwZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXlBRVMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2NyeXB0by9DcnlwdG9LZXlBRVMuY3BwCShyZXZpc2lvbiAxNTg0OTIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5QUVTLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDks
NiArNDksMTMgQEAgQ3J5cHRvS2V5QUVTOjp+Q3J5cHRvS2V5QUVTKCkKIHsKIH0KIAorUGFzc1Jl
ZlB0cjxDcnlwdG9LZXlBRVM+IENyeXB0b0tleUFFUzo6Z2VuZXJhdGUoQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllciBhbGdvcml0aG0sIHNpemVfdCBsZW5ndGhCaXRzLCBib29sIGV4dHJhY3RhYmxl
LCBDcnlwdG9LZXlVc2FnZSB1c2FnZXMpCit7CisgICAgaWYgKGxlbmd0aEJpdHMgJSA4KQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0b0tleUFF
UyhhbGdvcml0aG0sIHJhbmRvbURhdGEobGVuZ3RoQml0cyAvIDgpLCBleHRyYWN0YWJsZSwgdXNh
Z2VzKSk7Cit9CisKIHZvaWQgQ3J5cHRvS2V5QUVTOjpidWlsZEFsZ29yaXRobURlc2NyaXB0aW9u
KENyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlciYgYnVpbGRlcikgY29uc3QKIHsKICAg
ICBDcnlwdG9LZXk6OmJ1aWxkQWxnb3JpdGhtRGVzY3JpcHRpb24oYnVpbGRlcik7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5QUVTLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleUFFUy5oCShyZXZpc2lvbiAxNTg0OTIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5QUVTLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYg
KzQyLDggQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5DcnlwdG9LZXlBRVMoKTsKIAor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPENyeXB0b0tleUFFUz4gZ2VuZXJhdGUoQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciwgc2l6ZV90IGxlbmd0aEJpdHMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0
b0tleVVzYWdlKTsKKwogICAgIHZpcnR1YWwgQ3J5cHRvS2V5Q2xhc3Mga2V5Q2xhc3MoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiBDcnlwdG9LZXlDbGFzczo6QUVTOyB9CiAKICAgICBjb25zdCBW
ZWN0b3I8Y2hhcj4mIGtleSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5OyB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5TWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vQ3J5cHRvS2V5TWFjLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2NyeXB0by9DcnlwdG9LZXlNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5
LmgiCisKKyNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKKworI2lmZGVmIF9faGFzX2luY2x1ZGUK
KyNpZiBfX2hhc19pbmNsdWRlKDxDb21tb25DcnlwdG8vQ29tbW9uUmFuZG9tU1BJLmg+KQorI2lu
Y2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25SYW5kb21TUEkuaD4KKyNlbmRpZgorI2VuZGlmCisK
K3R5cGVkZWYgc3RydWN0IF9fQ0NSYW5kb20gKkNDUmFuZG9tUmVmOworZXh0ZXJuIGNvbnN0IEND
UmFuZG9tUmVmIGtDQ1JhbmRvbURlZmF1bHQ7CitleHRlcm4gIkMiIGludCBDQ1JhbmRvbUNvcHlC
eXRlcyhDQ1JhbmRvbVJlZiBybmQsIHZvaWQgKmJ5dGVzLCBzaXplX3QgY291bnQpOworCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1ZlY3RvcjxjaGFyPiBDcnlwdG9LZXk6OnJhbmRvbURhdGEoc2l6
ZV90IHNpemUpCit7CisgICAgVmVjdG9yPGNoYXI+IHJlc3VsdChzaXplKTsKKyAgICBDQ1JhbmRv
bUNvcHlCeXRlcyhrQ0NSYW5kb21EZWZhdWx0LCByZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgp
KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoU1VCVExFX0NSWVBUTykKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJj
ZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXlNYWMuY3BwCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpl
b2wtc3R5bGUKIyMgLTAsMCArMSAjIworbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uaWRsCShyZXZpc2lv
biAxNTg0OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMzUsNSArMzUsNiBAQAogICAgIFtDdXN0b21dIFByb21pc2Ugc2lnbihB
bGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgS2V5IGtleSwgc2VxdWVuY2U8Q3J5cHRvT3Bl
cmF0aW9uRGF0YT4gZGF0YSk7CiAgICAgW0N1c3RvbV0gUHJvbWlzZSB2ZXJpZnkoQWxnb3JpdGht
SWRlbnRpZmllciBhbGdvcml0aG0sIEtleSBrZXksIENyeXB0b09wZXJhdGlvbkRhdGEgc2lnbmF0
dXJlLCBzZXF1ZW5jZTxDcnlwdG9PcGVyYXRpb25EYXRhPiBkYXRhKTsKICAgICBbQ3VzdG9tXSBQ
cm9taXNlIGRpZ2VzdChBbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgc2VxdWVuY2U8Q3J5
cHRvT3BlcmF0aW9uRGF0YT4gZGF0YSk7CisgICAgW0N1c3RvbV0gUHJvbWlzZSBnZW5lcmF0ZUtl
eShBbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgb3B0aW9uYWwgYm9vbGVhbiBleHRyYWN0
YWJsZSwgb3B0aW9uYWwgS2V5VXNhZ2VbXSBrZXlVc2FnZXMpOwogICAgIFtDdXN0b21dIFByb21p
c2UgaW1wb3J0S2V5KEtleUZvcm1hdCBmb3JtYXQsIENyeXB0b09wZXJhdGlvbkRhdGEga2V5RGF0
YSwgQWxnb3JpdGhtSWRlbnRpZmllcj8gYWxnb3JpdGhtLCBvcHRpb25hbCBib29sZWFuIGV4dHJh
Y3RhYmxlLCBvcHRpb25hbCBLZXlVc2FnZVtdIGtleVVzYWdlcyk7CiB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtQUVTX0NCQy5jcHAJKHJldmlzaW9uIDE1ODQ5MikKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw3ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAotI2luY2x1ZGUg
IkNyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtcy5oIgorI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRo
bUFlc0tleUdlblBhcmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleUFFUy5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKQEAgLTU1LDYgKzU1
LDE5IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGgKICAgICByZXR1
cm4gc19pZGVudGlmaWVyOwogfQogCit2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmdlbmVy
YXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGJvb2wg
ZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlIHVzYWdlcywgc3RkOjp1bmlxdWVfcHRyPFByb21p
c2VXcmFwcGVyPiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJikKK3sKKyAgICBjb25zdCBDcnlwdG9B
bGdvcml0aG1BZXNLZXlHZW5QYXJhbXMmIGFlc1BhcmFtZXRlcnMgPSBzdGF0aWNfY2FzdDxjb25z
dCBDcnlwdG9BbGdvcml0aG1BZXNLZXlHZW5QYXJhbXMmPihwYXJhbWV0ZXJzKTsKKworICAgIFJl
ZlB0cjxDcnlwdG9LZXlBRVM+IHJlc3VsdCA9IENyeXB0b0tleUFFUzo6Z2VuZXJhdGUoQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NCQywgYWVzUGFyYW1ldGVycy5sZW5ndGgsIGV4dHJh
Y3RhYmxlLCB1c2FnZXMpOworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIHByb21pc2UtPnJl
amVjdChudWxscHRyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHByb21pc2UtPmZ1
bGZpbGwocmVzdWx0LnJlbGVhc2UoKSk7Cit9CisKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NC
Qzo6aW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBDcnlwdG9LZXlG
b3JtYXQgZm9ybWF0LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBib29sIGV4dHJh
Y3RhYmxlLCBDcnlwdG9LZXlVc2FnZSB1c2FnZSwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFw
cGVyPiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoZm9ybWF0ICE9IENy
eXB0b0tleUZvcm1hdDo6UmF3KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcAkocmV2aXNpb24gMTU4
NDkyKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
SE1BQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShT
VUJUTEVfQ1JZUFRPKQogCisjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcy5o
IgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlw
dG9LZXlITUFDLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgpAQCAtNTUsNiArNTYsMTkg
QEAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aAogICAgIHJldHVybiBz
X2lkZW50aWZpZXI7CiB9CiAKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6Z2VuZXJhdGVLZXko
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0
YWJsZSwgQ3J5cHRvS2V5VXNhZ2UgdXNhZ2VzLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBw
ZXI+IHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmKQoreworICAgIGNvbnN0IENyeXB0b0FsZ29yaXRo
bUhtYWNLZXlQYXJhbXMmIGhtYWNQYXJhbWV0ZXJzID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3J5cHRv
QWxnb3JpdGhtSG1hY0tleVBhcmFtcyY+KHBhcmFtZXRlcnMpOworCisgICAgUmVmUHRyPENyeXB0
b0tleUhNQUM+IHJlc3VsdCA9IENyeXB0b0tleUhNQUM6OmdlbmVyYXRlKGhtYWNQYXJhbWV0ZXJz
Lmhhc0xlbmd0aCA/IGhtYWNQYXJhbWV0ZXJzLmxlbmd0aCA6IDAsIGhtYWNQYXJhbWV0ZXJzLmhh
c2gsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIHBy
b21pc2UtPnJlamVjdChudWxscHRyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHBy
b21pc2UtPmZ1bGZpbGwocmVzdWx0LnJlbGVhc2UoKSk7Cit9CisKIHZvaWQgQ3J5cHRvQWxnb3Jp
dGhtSE1BQzo6aW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMsIENyeXB0b0tleUZvcm1hdCBmb3JtYXQsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
IGRhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlIHVzYWdlLCBzdGQ6OnVuaXF1
ZV9wdHI8UHJvbWlzZVdyYXBwZXI+IHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IGlmIChmb3JtYXQgIT0gQ3J5cHRvS2V5Rm9ybWF0OjpSYXcpIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUhNQUMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUhNQUMuY3BwCShyZXZpc2lvbiAxNTg0OTIpCisr
KyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlITUFDLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDUsNiArNDUsMjcgQEAgQ3J5cHRvS2V5SE1BQzo6fkNyeXB0b0tleUhNQUMoKQog
ewogfQogCitQYXNzUmVmUHRyPENyeXB0b0tleUhNQUM+IENyeXB0b0tleUhNQUM6OmdlbmVyYXRl
KHNpemVfdCBsZW5ndGhCeXRlcywgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLCBib29s
IGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSB1c2FnZXMpCit7CisgICAgaWYgKCFsZW5ndGhC
eXRlcykgeworICAgICAgICBzd2l0Y2ggKGhhc2gpIHsKKyAgICAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpTSEFfMToKKyAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpTSEFfMjI0OgorICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlNIQV8yNTY6CisgICAgICAgICAgICBsZW5ndGhCeXRlcyA9IDY0OworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzM4NDoKKyAg
ICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgorICAgICAgICAg
ICAgbGVuZ3RoQnl0ZXMgPSAxMjg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgfQorCisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDcnlwdG9LZXlITUFDKHJhbmRvbURhdGEobGVuZ3RoQnl0ZXMp
LCBoYXNoLCBleHRyYWN0YWJsZSwgdXNhZ2VzKSk7Cit9CisKIHZvaWQgQ3J5cHRvS2V5SE1BQzo6
YnVpbGRBbGdvcml0aG1EZXNjcmlwdGlvbihDcnlwdG9BbGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxk
ZXImIGJ1aWxkZXIpIGNvbnN0CiB7CiAgICAgQ3J5cHRvS2V5OjpidWlsZEFsZ29yaXRobURlc2Ny
aXB0aW9uKGJ1aWxkZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRv
S2V5SE1BQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0
b0tleUhNQUMuaAkocmV2aXNpb24gMTU4NDkyKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2tl
eXMvQ3J5cHRvS2V5SE1BQy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw5IEBAIHB1Ymxp
YzoKICAgICB9CiAgICAgdmlydHVhbCB+Q3J5cHRvS2V5SE1BQygpOwogCisgICAgLy8gSWYgbGVu
Z3RoQnl0ZXMgaXMgMCwgcmVjb21tZW5kZWQgbGVuZ3RoIGlzIHVzZWQsIHdoaWNoIGlzIHRoZSBz
aXplIG9mIHRoZSBhc3NvY2lhdGVkIGhhc2ggZnVuY3Rpb24ncyBibG9jayBzaXplLgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPENyeXB0b0tleUhNQUM+IGdlbmVyYXRlKHNpemVfdCBsZW5ndGhCeXRl
cywgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLCBib29sIGV4dHJhY3RhYmxlLCBDcnlw
dG9LZXlVc2FnZSk7CisKICAgICB2aXJ0dWFsIENyeXB0b0tleUNsYXNzIGtleUNsYXNzKCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gQ3J5cHRvS2V5Q2xhc3M6OkhNQUM7IH0KIAogICAgIGNvbnN0
IFZlY3RvcjxjaGFyPiYga2V5KCkgY29uc3QgeyByZXR1cm4gbV9rZXk7IH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ01hYy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JD
TWFjLmNwcAkocmV2aXNpb24gMTU4NDkyKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9D
cnlwdG9BbGdvcml0aG1BRVNfQ0JDTWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDEyICsx
MTUsNiBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmRlY3J5cHQoY29uCiAgICAgdHJh
bnNmb3JtQUVTX0NCQyhrQ0NEZWNyeXB0LCBhZXNDQkNQYXJhbWV0ZXJzLCAqYWVzS2V5LCBkYXRh
LCBzdGQ6Om1vdmUocHJvbWlzZSkpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6
OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBib29sIC8qZXh0
cmFjdGFibGUqLywgQ3J5cHRvS2V5VXNhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBl
cj4sIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQuCi0g
ICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
cnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhNQUNNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHAJKHJldmlzaW9u
IDE1ODQ5MikKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1B
Q01hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNiwxMyArMTM2LDYgQEAgdm9pZCBDcnlwdG9B
bGdvcml0aG1ITUFDOjp2ZXJpZnkoY29uc3QgQwogICAgIHByb21pc2UtPmZ1bGZpbGwocmVzdWx0
KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpnZW5lcmF0ZUtleShjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgYm9vbCAvKmV4dHJhY3RhYmxlKi8sIENyeXB0b0tleVVz
YWdlLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJiBlYykK
LXsKLSAgICAvLyBOb3QgeWV0IGltcGxlbWVudGVkLgotICAgIGVjID0gTk9UX1NVUFBPUlRFRF9F
UlI7Ci19Ci0KLQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8pCkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNTg0OTIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMy0xMS0wMiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFw
QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgZ2VuZXJhdGVLZXkgZm9yIEhNQUMgYW5k
IEFFUy1DQkMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMzY2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWdlbmVyYXRlLWtleS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGNyeXB0by9zdWJ0bGUvYWVzLWNiYy1nZW5lcmF0ZS1rZXkuaHRtbDogQWRk
ZWQuCisgICAgICAgICogY3J5cHRvL3N1YnRsZS9obWFjLWdlbmVyYXRlLWtleS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGNyeXB0by9zdWJ0bGUvaG1hYy1nZW5lcmF0ZS1rZXkuaHRt
bDogQWRkZWQuCisKKyAgICAgICAgKiBjcnlwdG8vc3VidGxlL3NoYS0xLWV4cGVjdGVkLnR4dDog
Tm93IHRoYXQgY3J5cHRvLndlYmtpdFN1YnRsZS5nZW5lcmF0ZUtleSBleGlzdHMsCisgICAgICAg
IGEgZGlmZmVyZW50IGVwZWN0aW9uIGlzIHJhaXNlZC4KKwogMjAxMy0xMS0wMSAgQWxleGV5IFBy
b3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgV2ViQ3J5cHRvIEFFUy1D
QkMKSW5kZXg6IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWNiYy1nZW5lcmF0ZS1rZXkt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVz
LWNiYy1nZW5lcmF0ZS1rZXktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWdlbmVyYXRlLWtleS1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxOSBAQAorVGVzdCBnZW5lcmF0aW5nIGFuIEFFUyBrZXkgdXNp
bmcgQUVTLUNCQyBhbGdvcml0aG0uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIGNyeXB0by5zdWJ0bGUuZ2VuZXJhdGVLZXkoImFlcy1jYmMiLCBleHRyYWN0YWJsZSwgWyJl
bmNyeXB0IiwgImRlY3J5cHQiXSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJv
ci4KK1BBU1MgY3J5cHRvLnN1YnRsZS5nZW5lcmF0ZUtleSh7bmFtZTogImFlcy1jYmMifSwgZXh0
cmFjdGFibGUsIFsiZW5jcnlwdCIsICJkZWNyeXB0Il0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IFR5cGUgZXJyb3IuCitQQVNTIGNyeXB0by5zdWJ0bGUuZ2VuZXJhdGVLZXkoe25hbWU6ICJh
ZXMtY2JjIiwgbGVuZ3RoOiB1bmRlZmluZWR9LCBleHRyYWN0YWJsZSwgWyJlbmNyeXB0IiwgImRl
Y3J5cHQiXSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgY3J5
cHRvLnN1YnRsZS5nZW5lcmF0ZUtleSh7bmFtZTogImFlcy1jYmMiLCBsZW5ndGg6IHt9fSwgZXh0
cmFjdGFibGUsIFsiZW5jcnlwdCIsICJkZWNyeXB0Il0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IFR5cGUgZXJyb3IuCitHZW5lcmF0aW5nIGEga2V5Li4uCitQQVNTIGtleS50eXBlIGlzICdz
ZWNyZXQnCitQQVNTIGtleS5leHRyYWN0YWJsZSBpcyB0cnVlCitQQVNTIGtleS5hbGdvcml0aG0u
bmFtZSBpcyAnYWVzLWNiYycKK1BBU1Mga2V5LmFsZ29yaXRobS5sZW5ndGggaXMgMTI4CitQQVNT
IGtleS51c2FnZXMgaXMgWydlbmNyeXB0JywgJ2RlY3J5cHQnXQorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246IExh
eW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWNiYy1nZW5lcmF0ZS1rZXktZXhwZWN0ZWQudHh0
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCArMSAjIwordGV4dC9wbGFp
bgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMj
IC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4
OiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1jYmMtZ2VuZXJhdGUta2V5Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWdlbmVyYXRlLWtl
eS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY2Jj
LWdlbmVyYXRlLWtleS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jb21tb24u
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Qg
Z2VuZXJhdGluZyBhbiBBRVMga2V5IHVzaW5nIEFFUy1DQkMgYWxnb3JpdGhtLiIpOworCitqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworaWYgKCF3aW5kb3cuc3VidGxlKQorICAgIHdpbmRvdy5jcnlw
dG8uc3VidGxlID0gd2luZG93LmNyeXB0by53ZWJraXRTdWJ0bGU7CisKK3ZhciBleHRyYWN0YWJs
ZSA9IHRydWU7CisKK3Nob3VsZFRocm93KCdjcnlwdG8uc3VidGxlLmdlbmVyYXRlS2V5KCJhZXMt
Y2JjIiwgZXh0cmFjdGFibGUsIFsiZW5jcnlwdCIsICJkZWNyeXB0Il0pJyk7CitzaG91bGRUaHJv
dygnY3J5cHRvLnN1YnRsZS5nZW5lcmF0ZUtleSh7bmFtZTogImFlcy1jYmMifSwgZXh0cmFjdGFi
bGUsIFsiZW5jcnlwdCIsICJkZWNyeXB0Il0pJyk7CitzaG91bGRUaHJvdygnY3J5cHRvLnN1YnRs
ZS5nZW5lcmF0ZUtleSh7bmFtZTogImFlcy1jYmMiLCBsZW5ndGg6IHVuZGVmaW5lZH0sIGV4dHJh
Y3RhYmxlLCBbImVuY3J5cHQiLCAiZGVjcnlwdCJdKScpOworc2hvdWxkVGhyb3coJ2NyeXB0by5z
dWJ0bGUuZ2VuZXJhdGVLZXkoe25hbWU6ICJhZXMtY2JjIiwgbGVuZ3RoOiB7fX0sIGV4dHJhY3Rh
YmxlLCBbImVuY3J5cHQiLCAiZGVjcnlwdCJdKScpOworCitkZWJ1ZygiR2VuZXJhdGluZyBhIGtl
eS4uLiIpOworY3J5cHRvLnN1YnRsZS5nZW5lcmF0ZUtleSh7bmFtZTogImFlcy1jYmMiLCBsZW5n
dGg6IDEyOH0sIGV4dHJhY3RhYmxlLCBbImVuY3J5cHQiLCAiZGVjcnlwdCJdKS50aGVuKGZ1bmN0
aW9uKHJlc3VsdCkgeworICAgIGtleSA9IHJlc3VsdDsKKworICAgIHNob3VsZEJlKCJrZXkudHlw
ZSIsICInc2VjcmV0JyIpOworICAgIHNob3VsZEJlKCJrZXkuZXh0cmFjdGFibGUiLCAidHJ1ZSIp
OworICAgIHNob3VsZEJlKCJrZXkuYWxnb3JpdGhtLm5hbWUiLCAiJ2Flcy1jYmMnIik7CisgICAg
c2hvdWxkQmUoImtleS5hbGdvcml0aG0ubGVuZ3RoIiwgIjEyOCIpOworICAgIHNob3VsZEJlKCJr
ZXkudXNhZ2VzIiwgIlsnZW5jcnlwdCcsICdkZWNyeXB0J10iKTsKKworICAgIGZpbmlzaEpTVGVz
dCgpOworfSk7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdl
cyBvbjogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWdlbmVyYXRlLWtleS5odG1s
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCArMSAjIwordGV4dC9odG1s
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IExheW91dFRlc3RzL2NyeXB0
by9zdWJ0bGUvaG1hYy1nZW5lcmF0ZS1rZXktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvaG1hYy1nZW5lcmF0ZS1rZXktZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9obWFjLWdlbmVyYXRlLWtl
eS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNyBAQAorVGVzdCBnZW5l
cmF0aW5nIGEgSE1BQyBrZXkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IGNyeXB0by5zdWJ0bGUuZ2VuZXJhdGVLZXkoImhtYWMiLCBleHRyYWN0YWJsZSwgWyJzaWduIiwg
InZlcmlmeSJdKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBj
cnlwdG8uc3VidGxlLmdlbmVyYXRlS2V5KHtuYW1lOiAiaG1hYyJ9LCBleHRyYWN0YWJsZSwgWyJz
aWduIiwgInZlcmlmeSJdKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5vdFN1cHBvcnRlZEVycm9y
OiBET00gRXhjZXB0aW9uIDkuCitQQVNTIGNyeXB0by5zdWJ0bGUuZ2VuZXJhdGVLZXkoe25hbWU6
ICJobWFjIiwgbGVuZ3RoOiB1bmRlZmluZWR9LCBleHRyYWN0YWJsZSwgWyJzaWduIiwgInZlcmlm
eSJdKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5vdFN1cHBvcnRlZEVycm9yOiBET00gRXhjZXB0
aW9uIDkuCitQQVNTIGNyeXB0by5zdWJ0bGUuZ2VuZXJhdGVLZXkoe25hbWU6ICJobWFjIiwgbGVu
Z3RoOiB7fX0sIGV4dHJhY3RhYmxlLCBbInNpZ24iLCAidmVyaWZ5Il0pIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24gOS4KKworR2VuZXJhdGlu
ZyBhIGtleSB3aXRoIGRlZmF1bHQgbGVuZ3RoLi4uCitQQVNTIGtleS50eXBlIGlzICdzZWNyZXQn
CitQQVNTIGtleS5leHRyYWN0YWJsZSBpcyB0cnVlCitQQVNTIGtleS5hbGdvcml0aG0ubmFtZSBp
cyAnaG1hYycKK1BBU1Mga2V5LmFsZ29yaXRobS5sZW5ndGggaXMgNjQKK1BBU1Mga2V5LnVzYWdl
cyBpcyBbInNpZ24iLCAidmVyaWZ5Il0KKworR2VuZXJhdGluZyBhIGtleSB3aXRoIGN1c3RvbSBs
ZW5ndGguLi4KK1BBU1Mga2V5LnR5cGUgaXMgJ3NlY3JldCcKK1BBU1Mga2V5LmV4dHJhY3RhYmxl
IGlzIHRydWUKK1BBU1Mga2V5LmFsZ29yaXRobS5uYW1lIGlzICdobWFjJworUEFTUyBrZXkuYWxn
b3JpdGhtLmxlbmd0aCBpcyA1CitQQVNTIGtleS51c2FnZXMgaXMgWyJzaWduIl0KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2htYWMtZ2VuZXJhdGUta2V5LWV4cGVj
dGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiMjIC0wLDAgKzEgIyMKK3Rl
eHQvcGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpBZGRlZDogc3ZuOmVvbC1z
dHlsZQojIyAtMCwwICsxICMjCituYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0
eQpJbmRleDogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9obWFjLWdlbmVyYXRlLWtleS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvaG1hYy1nZW5lcmF0ZS1r
ZXkuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvaG1hYy1n
ZW5lcmF0ZS1rZXkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY29tbW9uLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0IGdl
bmVyYXRpbmcgYSBITUFDIGtleS4iKTsKKworanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2lmICgh
d2luZG93LnN1YnRsZSkKKyAgICB3aW5kb3cuY3J5cHRvLnN1YnRsZSA9IHdpbmRvdy5jcnlwdG8u
d2Via2l0U3VidGxlOworCit2YXIgZXh0cmFjdGFibGUgPSB0cnVlOworCitzaG91bGRUaHJvdygn
Y3J5cHRvLnN1YnRsZS5nZW5lcmF0ZUtleSgiaG1hYyIsIGV4dHJhY3RhYmxlLCBbInNpZ24iLCAi
dmVyaWZ5Il0pJyk7CitzaG91bGRUaHJvdygnY3J5cHRvLnN1YnRsZS5nZW5lcmF0ZUtleSh7bmFt
ZTogImhtYWMifSwgZXh0cmFjdGFibGUsIFsic2lnbiIsICJ2ZXJpZnkiXSknKTsKK3Nob3VsZFRo
cm93KCdjcnlwdG8uc3VidGxlLmdlbmVyYXRlS2V5KHtuYW1lOiAiaG1hYyIsIGxlbmd0aDogdW5k
ZWZpbmVkfSwgZXh0cmFjdGFibGUsIFsic2lnbiIsICJ2ZXJpZnkiXSknKTsKK3Nob3VsZFRocm93
KCdjcnlwdG8uc3VidGxlLmdlbmVyYXRlS2V5KHtuYW1lOiAiaG1hYyIsIGxlbmd0aDoge319LCBl
eHRyYWN0YWJsZSwgWyJzaWduIiwgInZlcmlmeSJdKScpOworCitkZWJ1ZygiXG5HZW5lcmF0aW5n
IGEga2V5IHdpdGggZGVmYXVsdCBsZW5ndGguLi4iKTsKK2NyeXB0by5zdWJ0bGUuZ2VuZXJhdGVL
ZXkoe25hbWU6ICJobWFjIiwgaGFzaDogInNoYS0xIn0sIGV4dHJhY3RhYmxlLCBbInNpZ24iLCAi
dmVyaWZ5Il0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAga2V5ID0gcmVzdWx0OworCisg
ICAgc2hvdWxkQmUoImtleS50eXBlIiwgIidzZWNyZXQnIik7CisgICAgc2hvdWxkQmUoImtleS5l
eHRyYWN0YWJsZSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoImtleS5hbGdvcml0aG0ubmFtZSIs
ICInaG1hYyciKTsKKyAgICBzaG91bGRCZSgia2V5LmFsZ29yaXRobS5sZW5ndGgiLCAiNjQiKTsK
KyAgICBzaG91bGRCZSgia2V5LnVzYWdlcyIsICdbInNpZ24iLCAidmVyaWZ5Il0nKTsKKworICAg
IGRlYnVnKCJcbkdlbmVyYXRpbmcgYSBrZXkgd2l0aCBjdXN0b20gbGVuZ3RoLi4uIik7CisgICAg
cmV0dXJuIGNyeXB0by5zdWJ0bGUuZ2VuZXJhdGVLZXkoe25hbWU6ICJobWFjIiwgaGFzaDogInNo
YS0xIiwgbGVuZ3RoOiA1fSwgZXh0cmFjdGFibGUsIFsic2lnbiJdKTsKK30pLnRoZW4oZnVuY3Rp
b24ocmVzdWx0KSB7CisgICAga2V5ID0gcmVzdWx0OworCisgICAgc2hvdWxkQmUoImtleS50eXBl
IiwgIidzZWNyZXQnIik7CisgICAgc2hvdWxkQmUoImtleS5leHRyYWN0YWJsZSIsICJ0cnVlIik7
CisgICAgc2hvdWxkQmUoImtleS5hbGdvcml0aG0ubmFtZSIsICInaG1hYyciKTsKKyAgICBzaG91
bGRCZSgia2V5LmFsZ29yaXRobS5sZW5ndGgiLCAiNSIpOworICAgIHNob3VsZEJlKCJrZXkudXNh
Z2VzIiwgJ1sic2lnbiJdJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKzwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9jcnlw
dG8vc3VidGxlL2htYWMtZ2VuZXJhdGUta2V5Lmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1p
bWUtdHlwZQojIyAtMCwwICsxICMjCit0ZXh0L2h0bWwKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBw
cm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9zaGEtMS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9zaGEtMS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDE1ODQ5MikKKysrIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvc2hh
LTEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMSw3ICsxMSw3IEBAIFNIQTEgb2Yg
WzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEKICAgICA9IFsyYyA3ZSA3YyAzOCA0ZiA3
OCAyOSA2OSA0MiA4MiBiMSBlMyBhNiAyMSA2ZCBlZiA4MCA4MiBkMCA1NV0KIFNIQTEgb2YgW25l
dyBVaW50OEFycmF5KFswLCAxLCAyLCAzLCA0XSksIG5ldyBVaW50OEFycmF5KDUsIDYsIDcsIDgs
IDksIDEwXSldCiAgICAgPSBbMmMgN2UgN2MgMzggNGYgNzggMjkgNjkgNDIgODIgYjEgZTMgYTYg
MjEgNmQgZWYgODAgODIgZDAgNTVdCi1QQVNTIGNyeXB0by5zdWJ0bGUuZ2VuZXJhdGVLZXkoJ3No
YS0xJykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhIGZ1bmN0
aW9uIChldmFsdWF0aW5nICdjcnlwdG8uc3VidGxlLmdlbmVyYXRlS2V5KCdzaGEtMScpJykuCitQ
QVNTIGNyeXB0by5zdWJ0bGUuZ2VuZXJhdGVLZXkoJ3NoYS0xJykgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBOb3RTdXBwb3J0ZWRFcnJvcjogRE9NIEV4Y2VwdGlvbiA5LgogUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCg==
</data>
<flag name="review"
          id="238646"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215846</attachid>
            <date>2013-11-02 23:25:58 -0700</date>
            <delta_ts>2013-11-04 10:11:23 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>GenerateKey.txt</filename>
            <type>text/plain</type>
            <size>36564</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1ODUyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDEzLTExLTAyICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBnZW5lcmF0
ZUtleSBmb3IgSE1BQyBhbmQgQUVTLUNCQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5z
dGVpbi4KKworICAgICAgICBUZXN0czogY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWdlbmVyYXRlLWtl
eS5odG1sCisgICAgICAgICAgICAgICBjcnlwdG8vc3VidGxlL2htYWMtZ2VuZXJhdGUta2V5Lmh0
bWwKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQg
bmV3IGZpbGVzLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0
aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFlc0tleUdlblBhcmFtcyk6IEFk
ZGVkIGJpbmRpbmdzIGZvciBBZXNLZXlHZW5QYXJhbXMuCisgICAgICAgIChXZWJDb3JlOjpKU0Ny
eXB0b0FsZ29yaXRobURpY3Rpb25hcnk6OmNyZWF0ZVBhcmFtZXRlcnNGb3JHZW5lcmF0ZUtleSk6
IEhhbmRsZQorICAgICAgICBhbGdvcml0aG1zIHRoYXQgZ2VuZXJhdGUgQUVTIGFuZCBITUFDIGtl
eXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHA6IChX
ZWJDb3JlOjpKU1N1YnRsZUNyeXB0bzo6Z2VuZXJhdGVLZXkpOiBBZGRlZC4KKworICAgICAgICAq
IGNyeXB0by9DcnlwdG9BbGdvcml0aG1BZXNLZXlHZW5QYXJhbXMuaDogQWRkZWQuCisKKyAgICAg
ICAgKiBjcnlwdG8vQ3J5cHRvS2V5LmNwcDogKFdlYkNvcmU6OkNyeXB0b0tleTo6cmFuZG9tRGF0
YSk6CisgICAgICAgICogY3J5cHRvL0NyeXB0b0tleS5oOgorICAgICAgICAqIGNyeXB0by9Dcnlw
dG9LZXlNYWMuY3BwOiBBZGRlZAorICAgICAgICBFeHBvc2UgYSBmdW5jdGlvbiB0aGF0IHByb2R1
Y2VzIHJhbmRvbSBkYXRhIGZvciBzeW1tZXRyaWMgY3J5cHRvIGtleXMuIENyb3NzLXBsYXRmb3Jt
CisgICAgICAgIGltcGxlbWVudGF0aW9uIHVzZXMgQVJDNCBjb2RlIGZyb20gV1RGLCB3aGlsZSBN
YWMgdXNlcyBhIHN5c3RlbSBmdW5jdGlvbiB0aGF0CisgICAgICAgIHByb3ZpZGVzIGEgRklQUyB2
YWxpZGF0ZWQgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuCisKKyAgICAgICAgKiBjcnlwdG8vQ3J5
cHRvS2V5QUVTLmNwcDogKFdlYkNvcmU6OkNyeXB0b0tleUFFUzo6Z2VuZXJhdGUpOgorICAgICAg
ICAqIGNyeXB0by9DcnlwdG9LZXlBRVMuaDoKKyAgICAgICAgQWRkZWQgYSBmdW5jdGlvbiB0aGF0
IGNyZWF0ZXMgQUVTIGtleXMuCisKKyAgICAgICAgKiBjcnlwdG8vU3VidGxlQ3J5cHRvLmlkbDog
QWRkZWQgZ2VuZXJhdGVLZXkuCisKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1BRVNfQ0JDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFF
U19DQkM6OmdlbmVyYXRlS2V5KTogQWRkZWQuCisKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29y
aXRobUhNQUM6OmdlbmVyYXRlS2V5KTogQWRkZWQuCisKKyAgICAgICAgKiBjcnlwdG8va2V5cy9D
cnlwdG9LZXlITUFDLmNwcDogKFdlYkNvcmU6OkNyeXB0b0tleUhNQUM6OmdlbmVyYXRlKToKKyAg
ICAgICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlITUFDLmg6CisgICAgICAgIEFkZGVkIGEgZnVu
Y3Rpb24gdGhhdCBjcmVhdGVzIEhNQUMga2V5cy4KKworICAgICAgICAqIGNyeXB0by9tYWMvQ3J5
cHRvQWxnb3JpdGhtQUVTX0NCQ01hYy5jcHA6IFJlbW92ZWQgZ2VuZXJhdGVLZXkgc3R1YiwgdGhl
IGltcGxlbWVudGF0aW9uCisgICAgICAgIGVuZGVkIHVwIGluIGNyb3NzLXBsYXRmb3JtIGZpbGUu
CisKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhNQUNNYWMuY3BwOiBEaXR0
by4KKwogMjAxMy0xMS0wMiAgQ2hyaXN0b3BoZSBEdW1leiAgPGNoLmR1bWV6QHNhbXN1bmcuY29t
PgogCiAgICAgICAgIEVuZm9yY2VSYW5nZSBkb2Vzbid0IGVuZm9yY2UgcmFuZ2Ugb2YgYSBzaG9y
dApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTU4NTIxKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NTgxLDYgKzU1ODEsOCBA
QAogCQlFMTg3MDU2MzE2RTU0QTBEMDA1ODVFOTcgLyogTWFpblRocmVhZFRhc2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxODcwNTYyMTZFNTRBMEQw
MDU4NUU5NyAvKiBNYWluVGhyZWFkVGFzay5oICovOyB9OwogCQlFMTg3NzJGMTEyNkUyNjI5MDAz
REQ1ODYgLyogTGFuZ3VhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTE4NzcyRjAxMjZFMjYyOTAwM0RENTg2IC8qIExhbmd1YWdlLmNwcCAqLzsg
fTsKIAkJRTE5NzI3MTYxODIwNTQ5RTAwNTkyRDUxIC8qIENyeXB0b0tleVR5cGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOTcyNzE1MTgyMDU0OUUw
MDU5MkQ1MSAvKiBDcnlwdG9LZXlUeXBlLmggKi87IH07CisJCUUxOUFDM0Y3MTgyNEU1RDEwMDM0
OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1BZXNLZXlHZW5QYXJhbXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOUFDM0Y2MTgyNEU1RDEwMDM0OTQyNiAv
KiBDcnlwdG9BbGdvcml0aG1BZXNLZXlHZW5QYXJhbXMuaCAqLzsgfTsKKwkJRTE5QUMzRjkxODI1
NjZGNzAwMzQ5NDI2IC8qIENyeXB0b0tleU1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTlBQzNGODE4MjU2NkY3MDAzNDk0MjYgLyogQ3J5cHRv
S2V5TWFjLmNwcCAqLzsgfTsKIAkJRTE5QUMzRTIxODI0REM2OTAwMzQ5NDI2IC8qIENyeXB0b0Fs
Z29yaXRobVNIQTIyNE1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMTlBQzNERTE4MjREQzY5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hB
MjI0TWFjLmNwcCAqLzsgfTsKIAkJRTE5QUMzRTMxODI0REM2OTAwMzQ5NDI2IC8qIENyeXB0b0Fs
Z29yaXRobVNIQTI1Nk1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMTlBQzNERjE4MjREQzY5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hB
MjU2TWFjLmNwcCAqLzsgfTsKIAkJRTE5QUMzRTQxODI0REM2OTAwMzQ5NDI2IC8qIENyeXB0b0Fs
Z29yaXRobVNIQTM4NE1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMTlBQzNFMDE4MjREQzY5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hB
Mzg0TWFjLmNwcCAqLzsgfTsKQEAgLTEyNjEwLDYgKzEyNjEyLDggQEAKIAkJRTE4NzA1NjIxNkU1
NEEwRDAwNTg1RTk3IC8qIE1haW5UaHJlYWRUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1haW5UaHJlYWRUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUxODc3MkYwMTI2RTI2MjkwMDNERDU4NiAvKiBMYW5ndWFnZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYW5ndWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUxOTcyNzE1MTgyMDU0OUUwMDU5MkQ1MSAvKiBDcnlwdG9LZXlUeXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0tleVR5cGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE5QUMzRjYxODI0RTVEMTAwMzQ5NDI2IC8qIENyeXB0b0Fs
Z29yaXRobUFlc0tleUdlblBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDcnlwdG9BbGdvcml0aG1BZXNLZXlHZW5QYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTE5QUMzRjgxODI1NjZGNzAwMzQ5NDI2IC8qIENyeXB0b0tleU1hYy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9LZXlNYWMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTlBQzNERTE4MjREQzY5MDAzNDk0MjYgLyogQ3J5
cHRvQWxnb3JpdGhtU0hBMjI0TWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IENyeXB0b0FsZ29yaXRobVNIQTIyNE1hYy5jcHA7IHBhdGggPSBtYWMvQ3J5cHRvQWxn
b3JpdGhtU0hBMjI0TWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE5QUMz
REYxODI0REM2OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTI1Nk1hYy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDcnlwdG9BbGdvcml0aG1TSEEyNTZNYWMu
Y3BwOyBwYXRoID0gbWFjL0NyeXB0b0FsZ29yaXRobVNIQTI1Nk1hYy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxOUFDM0UwMTgyNERDNjkwMDM0OTQyNiAvKiBDcnlwdG9BbGdv
cml0aG1TSEEzODRNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
Q3J5cHRvQWxnb3JpdGhtU0hBMzg0TWFjLmNwcDsgcGF0aCA9IG1hYy9DcnlwdG9BbGdvcml0aG1T
SEEzODRNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAxNzAsNiArMjAx
NzQsNyBAQAogCQkJCUUxOUFDM0RGMTgyNERDNjkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1T
SEEyNTZNYWMuY3BwICovLAogCQkJCUUxOUFDM0UwMTgyNERDNjkwMDM0OTQyNiAvKiBDcnlwdG9B
bGdvcml0aG1TSEEzODRNYWMuY3BwICovLAogCQkJCUUxOUFDM0UxMTgyNERDNjkwMDM0OTQyNiAv
KiBDcnlwdG9BbGdvcml0aG1TSEE1MTJNYWMuY3BwICovLAorCQkJCUUxOUFDM0Y4MTgyNTY2Rjcw
MDM0OTQyNiAvKiBDcnlwdG9LZXlNYWMuY3BwICovLAogCQkJKTsKIAkJCW5hbWUgPSBtYWM7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjAyMTAsNiArMjAyMTUsNyBAQAogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlFMTI1RjgzOTE4MjQxMDQ4MDBEODRD
RDkgLyogQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zLmggKi8sCisJCQkJRTE5QUMzRjYxODI0
RTVEMTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobUFlc0tleUdlblBhcmFtcy5oICovLAogCQkJ
CUUxOURBMjlCMTgxODlBREQwMDA4OEJDOCAvKiBDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1z
LmggKi8sCiAJCQkJRTFDNjU3MUUxODE2RTUwMzAwMjU2Q0REIC8qIENyeXB0b0FsZ29yaXRobUht
YWNQYXJhbXMuaCAqLywKIAkJCSk7CkBAIC0yMzE4Myw2ICsyMzE4OSw3IEBACiAJCQkJRDM1OUQ4
QkYxMjlDQTU1QzAwMDZFNUQyIC8qIEpTSFRNTERldGFpbHNFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk3NjgwOEI1MDE1OURBREZBMDAyQjUyMzMgLyogSlNIVE1MRGlhbG9nRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4NUIxRTcwQTFCMjQwNTAwRDhDODdDIC8qIEpTSFRNTERp
cmVjdG9yeUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUxOUFDM0Y3MTgyNEU1RDEwMDM0
OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1BZXNLZXlHZW5QYXJhbXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBODVCMkI3MEExQjJBQzcwMEQ4Qzg3QyAvKiBKU0hUTUxEaXZFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTg1QjFFOTBBMUIyNDA1MDBEOEM4N0MgLyogSlNIVE1MRExpc3RFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQ5NEUzNTBBMTIzNThCMDBGREFGQzEgLyogSlNI
VE1MRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjcwMDEsNiArMjcwMDgsNyBAQAogCQkJ
CUM2RjA5MDBFMTQzMjdCNjEwMDY4NTg0OSAvKiBNdXRhdGlvbk9ic2VydmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUUxOUFDM0U1MTgyNERDNjkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1T
SEE1MTJNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDZFNTI4QTMxNDlBOTI2RDAwRUZFMUYz
IC8qIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUUxOUFDM0Y5MTgyNTY2RjcwMDM0OTQyNiAvKiBDcnlwdG9LZXlNYWMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRDZFMjc2QUYxNDYzNzQ1NTAwMUQyODBBIC8qIE11dGF0aW9uT2JzZXJ2ZXJSZWdp
c3RyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzZGMDhGQkMxNDMwRkU4RjAwNjg1ODQ5
IC8qIE11dGF0aW9uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUyQjZDOUM1MTVFM0Y0
REYwMDY5MEIwNSAvKiBOYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLApJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0Fs
Z29yaXRobURpY3Rpb25hcnkuY3BwCShyZXZpc2lvbiAxNTg1MjEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKICNpbmNs
dWRlICJDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXMuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdv
cml0aG1BZXNLZXlHZW5QYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1IbWFjS2V5
UGFyYW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtcy5oIgogI2luY2x1
ZGUgIkNyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmgiCkBAIC0xMjYsNyArMTI3LDcgQEAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYQogICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zPiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENy
eXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtcz4oKTsKKyAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zPigpOwogCiAgICAgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSBpdkRhdGE7CiAgICAgaWYgKCFjcnlwdG9PcGVyYXRpb25EYXRhRnJvbUpTVmFs
dWUoZXhlYywgaXYsIGl2RGF0YSkpIHsKQEAgLTE0NCw2ICsxNDUsMjQgQEAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYQogICAgIHJldHVybiBzdGQ6Om1vdmUocmVzdWx0
KTsKIH0KIAorc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PiBjcmVhdGVBZXNLZXlHZW5QYXJhbXMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1
ZSB2YWx1ZSkKK3sKKyAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGF1
dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNLZXlHZW5QYXJh
bXM+KCk7CisKKyAgICBKU1ZhbHVlIGxlbmd0aFZhbHVlID0gZ2V0UHJvcGVydHkoZXhlYywgdmFs
dWUuZ2V0T2JqZWN0KCksICJsZW5ndGgiKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmVzdWx0LT5sZW5ndGggPSB0b1VJbnQx
NihleGVjLCBsZW5ndGhWYWx1ZSwgRW5mb3JjZVJhbmdlKTsKKworICAgIHJldHVybiBzdGQ6Om1v
dmUocmVzdWx0KTsKK30KKwogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPiBjcmVhdGVIbWFjUGFyYW1zKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpT
VmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7CkBAIC0xNTIsNyAr
MTcxLDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYQogICAgIH0K
IAogICAgIEpTRGljdGlvbmFyeSBqc0RpY3Rpb25hcnkoZXhlYywgdmFsdWUuZ2V0T2JqZWN0KCkp
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zPiByZXN1bHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXM+KCk7CisgICAgYXV0
byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXM+KCk7
CiAKICAgICBpZiAoIWdldEhhc2hBbGdvcml0aG0oanNEaWN0aW9uYXJ5LCByZXN1bHQtPmhhc2gp
KSB7CiAgICAgICAgIEFTU0VSVChleGVjLT5oYWRFeGNlcHRpb24oKSk7CkBAIC0xNzAsNyArMTg5
LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYQogICAgIH0KIAog
ICAgIEpTRGljdGlvbmFyeSBqc0RpY3Rpb25hcnkoZXhlYywgdmFsdWUuZ2V0T2JqZWN0KCkpOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPiByZXN1bHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KCk7CisgICAg
YXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJh
bXM+KCk7CiAKICAgICBpZiAoIWdldEhhc2hBbGdvcml0aG0oanNEaWN0aW9uYXJ5LCByZXN1bHQt
Pmhhc2gpKSB7CiAgICAgICAgIEFTU0VSVChleGVjLT5oYWRFeGNlcHRpb24oKSk7CkBAIC0zNDQs
NyArMzYzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcgogICAg
IH0KIH0KIAotc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IEpTQ3J5
cHRvQWxnb3JpdGhtRGljdGlvbmFyeTo6Y3JlYXRlUGFyYW1ldGVyc0ZvckdlbmVyYXRlS2V5KEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwg
SlNDOjpKU1ZhbHVlKQorc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+
IEpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeTo6Y3JlYXRlUGFyYW1ldGVyc0ZvckdlbmVyYXRl
S2V5KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29y
aXRobSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7CiAg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FFU19QS0NTMV92MV81OgpAQCAt
MzUzLDEyICszNzIsMTYgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cgogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX09BRVA6CiAgICAgY2Fz
ZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RTQToKICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OkVDREg6CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBOT1Rf
U1VQUE9SVEVEX0VSUik7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NUUjoKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OkFFU19DQkM6CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpB
RVNfQ01BQzoKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19HQ006CiAg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0ZCOgorICAgICAgICByZXR1
cm4gY3JlYXRlQWVzS2V5R2VuUGFyYW1zKGV4ZWMsIHZhbHVlKTsKICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OkhNQUM6CisgICAgICAgIHJldHVybiBjcmVhdGVIbWFjS2V5UGFy
YW1zKGV4ZWMsIHZhbHVlKTsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkRI
OgogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6CiAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjI0OgpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAkocmV2aXNpb24g
MTU4NTIxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzcsNiArMzM3LDUxIEBAIEpTVmFsdWUgSlNTdWJ0
bGVDcnlwdG86OmRpZ2VzdChFeGVjU3RhdGUKICAgICByZXR1cm4gcHJvbWlzZTsKIH0KIAorSlNW
YWx1ZSBKU1N1YnRsZUNyeXB0bzo6Z2VuZXJhdGVLZXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVybiBleGVj
LT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KGV4ZWMpKTsKKworICAgIGF1dG8gYWxnb3JpdGhtID0gY3JlYXRlQWxnb3JpdGhtRnJvbUpTVmFs
dWUoZXhlYywgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIGlmICghYWxnb3JpdGht
KSB7CisgICAgICAgIEFTU0VSVChleGVjLT5oYWRFeGNlcHRpb24oKSk7CisgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIGF1dG8gcGFyYW1ldGVycyA9IEpTQ3J5cHRv
QWxnb3JpdGhtRGljdGlvbmFyeTo6Y3JlYXRlUGFyYW1ldGVyc0ZvckdlbmVyYXRlS2V5KGV4ZWMs
IGFsZ29yaXRobS0+aWRlbnRpZmllcigpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7Cisg
ICAgaWYgKCFwYXJhbWV0ZXJzKSB7CisgICAgICAgIEFTU0VSVChleGVjLT5oYWRFeGNlcHRpb24o
KSk7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIGJvb2wgZXh0
cmFjdGFibGUgPSBmYWxzZTsKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDIpIHsK
KyAgICAgICAgZXh0cmFjdGFibGUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0Jvb2xl
YW4oZXhlYyk7CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIENyeXB0b0tleVVzYWdlIGtleVVz
YWdlcyA9IDA7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAzKSB7CisgICAgICAg
IGlmICghY3J5cHRvS2V5VXNhZ2VzRnJvbUpTVmFsdWUoZXhlYywgZXhlYy0+YXJndW1lbnQoMiks
IGtleVVzYWdlcykpIHsKKyAgICAgICAgICAgIEFTU0VSVChleGVjLT5oYWRFeGNlcHRpb24oKSk7
CisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IEpTUHJvbWlzZTo6Y3JlYXRlV2l0aFJlc29sdmVyKGV4
ZWMtPnZtKCksIGdsb2JhbE9iamVjdCgpKTsKKyAgICBhdXRvIHByb21pc2VXcmFwcGVyID0gUHJv
bWlzZVdyYXBwZXI6OmNyZWF0ZShnbG9iYWxPYmplY3QoKSwgcHJvbWlzZSk7CisKKyAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICBhbGdvcml0aG0tPmdlbmVyYXRlS2V5KCpwYXJhbWV0ZXJz
LCBleHRyYWN0YWJsZSwga2V5VXNhZ2VzLCBzdGQ6Om1vdmUocHJvbWlzZVdyYXBwZXIpLCBlYyk7
CisgICAgaWYgKGVjKSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIHJldHVybiBwcm9taXNlOwor
fQorCiBKU1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjppbXBvcnRLZXkoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMpCiB7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDMpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtQWVzS2V5R2VuUGFyYW1zLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobUFlc0tleUdlblBhcmFt
cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRo
bUFlc0tleUdlblBhcmFtcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIENyeXB0b0FsZ29yaXRobUFlc0tleUdlblBhcmFtc19oCisjZGVmaW5l
IENyeXB0b0FsZ29yaXRobUFlc0tleUdlblBhcmFtc19oCisKKyNpbmNsdWRlICJDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzLmgiCisKKyNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBDcnlwdG9BbGdvcml0aG1BZXNLZXlHZW5QYXJhbXMgRklO
QUwgOiBwdWJsaWMgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyB7CitwdWJsaWM6CisgICAgLy8g
VGhlIGxlbmd0aCwgaW4gYml0cywgb2YgdGhlIGtleS4KKyAgICB1bnNpZ25lZCBsZW5ndGg7Cit9
OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoU1VCVExFX0NSWVBUTykKKyNlbmRpZiAvLyBDcnlw
dG9BbGdvcml0aG1BZXNLZXlHZW5QYXJhbXNfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNl
L1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobUFlc0tleUdlblBhcmFtcy5oCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAjIworbmF0aXZlClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9L
ZXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuY3Bw
CShyZXZpc2lvbiAxNTg1MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ3J5cHRvQWxn
b3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyLmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUmVn
aXN0cnkuaCIKKyNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtODcsNiArODgsMTQgQEAgVmVjdG9yPFN0cmluZz4gQ3J5cHRvS2V5Ojp1c2FnZXMoKSBjb25z
dAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKyNpZiAhUExBVEZPUk0oTUFDKQorVmVjdG9yPGNo
YXI+IENyeXB0b0tleTo6cmFuZG9tRGF0YShzaXplX3Qgc2l6ZSkKK3sKKyAgICBWZWN0b3I8Y2hh
cj4gcmVzdWx0KHNpemUpOworICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKHJlc3Vs
dC5kYXRhKCksIHJlc3VsdC5zaXplKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRP
KQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuaAkocmV2aXNpb24gMTU4NTIxKQorKysg
U291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2
ICs1OCw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYWxsb3dzKENyeXB0b0tleVVzYWdlIHVzYWdl
KSBjb25zdCB7IHJldHVybiB1c2FnZSA9PSAobV91c2FnZXMgJiB1c2FnZSk7IH0KIAorICAgIHN0
YXRpYyBWZWN0b3I8Y2hhcj4gcmFuZG9tRGF0YShzaXplX3QpOworCiBwcml2YXRlOgogICAgIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgbV9hbGdvcml0aG07CiAgICAgQ3J5cHRvS2V5VHlwZSBt
X3R5cGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5QUVTLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5QUVTLmNwcAkocmV2aXNp
b24gMTU4NTIxKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleUFFUy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDEzIEBAIENyeXB0b0tleUFFUzo6fkNyeXB0b0tleUFF
UygpCiB7CiB9CiAKK1Bhc3NSZWZQdHI8Q3J5cHRvS2V5QUVTPiBDcnlwdG9LZXlBRVM6OmdlbmVy
YXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtLCBzaXplX3QgbGVuZ3RoQml0
cywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UgdXNhZ2VzKQoreworICAgIGlmIChs
ZW5ndGhCaXRzICUgOCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBDcnlwdG9LZXlBRVMoYWxnb3JpdGhtLCByYW5kb21EYXRhKGxlbmd0aEJpdHMgLyA4
KSwgZXh0cmFjdGFibGUsIHVzYWdlcykpOworfQorCiB2b2lkIENyeXB0b0tleUFFUzo6YnVpbGRB
bGdvcml0aG1EZXNjcmlwdGlvbihDcnlwdG9BbGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxkZXImIGJ1
aWxkZXIpIGNvbnN0CiB7CiAgICAgQ3J5cHRvS2V5OjpidWlsZEFsZ29yaXRobURlc2NyaXB0aW9u
KGJ1aWxkZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleUFFUy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXlBRVMuaAkocmV2aXNp
b24gMTU4NTIxKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleUFFUy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Miw2ICs0Miw4IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+
Q3J5cHRvS2V5QUVTKCk7CiAKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDcnlwdG9LZXlBRVM+IGdl
bmVyYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIHNpemVfdCBsZW5ndGhCaXRzLCBib29s
IGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSk7CisKICAgICB2aXJ0dWFsIENyeXB0b0tleUNs
YXNzIGtleUNsYXNzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gQ3J5cHRvS2V5Q2xhc3M6OkFF
UzsgfQogCiAgICAgY29uc3QgVmVjdG9yPGNoYXI+JiBrZXkoKSBjb25zdCB7IHJldHVybiBtX2tl
eTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleU1hYy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleU1hYy5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5TWFjLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkNyeXB0b0tleS5oIgorCisjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCisKKyNp
ZmRlZiBfX2hhc19pbmNsdWRlCisjaWYgX19oYXNfaW5jbHVkZSg8Q29tbW9uQ3J5cHRvL0NvbW1v
blJhbmRvbVNQSS5oPikKKyNpbmNsdWRlIDxDb21tb25DcnlwdG8vQ29tbW9uUmFuZG9tU1BJLmg+
CisjZW5kaWYKKyNlbmRpZgorCit0eXBlZGVmIHN0cnVjdCBfX0NDUmFuZG9tICpDQ1JhbmRvbVJl
ZjsKK2V4dGVybiBjb25zdCBDQ1JhbmRvbVJlZiBrQ0NSYW5kb21EZWZhdWx0OworZXh0ZXJuICJD
IiBpbnQgQ0NSYW5kb21Db3B5Qnl0ZXMoQ0NSYW5kb21SZWYgcm5kLCB2b2lkICpieXRlcywgc2l6
ZV90IGNvdW50KTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitWZWN0b3I8Y2hhcj4gQ3J5cHRv
S2V5OjpyYW5kb21EYXRhKHNpemVfdCBzaXplKQoreworICAgIFZlY3RvcjxjaGFyPiByZXN1bHQo
c2l6ZSk7CisgICAgQ0NSYW5kb21Db3B5Qnl0ZXMoa0NDUmFuZG9tRGVmYXVsdCwgcmVzdWx0LmRh
dGEoKSwgcmVzdWx0LnNpemUoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8pCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5TWFjLmNwcApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3Vi
dGxlQ3J5cHRvLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxl
Q3J5cHRvLmlkbAkocmV2aXNpb24gMTU4NTIxKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1
YnRsZUNyeXB0by5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1LDUgKzM1LDYgQEAKICAgICBbQ3Vz
dG9tXSBQcm9taXNlIHNpZ24oQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sIEtleSBrZXks
IHNlcXVlbmNlPENyeXB0b09wZXJhdGlvbkRhdGE+IGRhdGEpOwogICAgIFtDdXN0b21dIFByb21p
c2UgdmVyaWZ5KEFsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtLCBLZXkga2V5LCBDcnlwdG9P
cGVyYXRpb25EYXRhIHNpZ25hdHVyZSwgc2VxdWVuY2U8Q3J5cHRvT3BlcmF0aW9uRGF0YT4gZGF0
YSk7CiAgICAgW0N1c3RvbV0gUHJvbWlzZSBkaWdlc3QoQWxnb3JpdGhtSWRlbnRpZmllciBhbGdv
cml0aG0sIHNlcXVlbmNlPENyeXB0b09wZXJhdGlvbkRhdGE+IGRhdGEpOworICAgIFtDdXN0b21d
IFByb21pc2UgZ2VuZXJhdGVLZXkoQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sIG9wdGlv
bmFsIGJvb2xlYW4gZXh0cmFjdGFibGUsIG9wdGlvbmFsIEtleVVzYWdlW10ga2V5VXNhZ2VzKTsK
ICAgICBbQ3VzdG9tXSBQcm9taXNlIGltcG9ydEtleShLZXlGb3JtYXQgZm9ybWF0LCBDcnlwdG9P
cGVyYXRpb25EYXRhIGtleURhdGEsIEFsZ29yaXRobUlkZW50aWZpZXI/IGFsZ29yaXRobSwgb3B0
aW9uYWwgYm9vbGVhbiBleHRyYWN0YWJsZSwgb3B0aW9uYWwgS2V5VXNhZ2VbXSBrZXlVc2FnZXMp
OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUFFU19DQkMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwCShyZXZpc2lvbiAxNTg1MjEpCisrKyBT
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9D
UllQVE8pCiAKLSNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXMuaCIKKyNpbmNs
dWRlICJDcnlwdG9BbGdvcml0aG1BZXNLZXlHZW5QYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9L
ZXlBRVMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9t
aXNlLmgiCkBAIC01NSw2ICs1NSwxOSBAQCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0
b0FsZ29yaXRoCiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAordm9pZCBDcnlwdG9BbGdv
cml0aG1BRVNfQ0JDOjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSB1c2FnZXMsIHN0
ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4gcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYpCit7
CisgICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzS2V5R2VuUGFyYW1zJiBhZXNQYXJhbWV0ZXJz
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzS2V5R2VuUGFyYW1zJj4ocGFy
YW1ldGVycyk7CisKKyAgICBSZWZQdHI8Q3J5cHRvS2V5QUVTPiByZXN1bHQgPSBDcnlwdG9LZXlB
RVM6OmdlbmVyYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DQkMsIGFlc1BhcmFt
ZXRlcnMubGVuZ3RoLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKKyAgICBpZiAoIXJlc3VsdCkgewor
ICAgICAgICBwcm9taXNlLT5yZWplY3QobnVsbHB0cik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBwcm9taXNlLT5mdWxmaWxsKHJlc3VsdC5yZWxlYXNlKCkpOworfQorCiB2b2lkIENy
eXB0b0FsZ29yaXRobUFFU19DQkM6OmltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzJiwgQ3J5cHRvS2V5Rm9ybWF0IGZvcm1hdCwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0
YSYgZGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UgdXNhZ2UsIHN0ZDo6dW5p
cXVlX3B0cjxQcm9taXNlV3JhcHBlcj4gcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAg
ICAgaWYgKGZvcm1hdCAhPSBDcnlwdG9LZXlGb3JtYXQ6OlJhdykgewpJbmRleDogU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1B
Qy5jcHAJKHJldmlzaW9uIDE1ODUyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAorI2luY2x1ZGUgIkNyeXB0b0FsZ29y
aXRobUhtYWNLZXlQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1z
LmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5SE1BQy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKQEAgLTU1LDYgKzU2LDE5IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxn
b3JpdGgKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCit2b2lkIENyeXB0b0FsZ29yaXRo
bUhNQUM6OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlIHVzYWdlcywgc3RkOjp1bmlx
dWVfcHRyPFByb21pc2VXcmFwcGVyPiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJikKK3sKKyAgICBj
b25zdCBDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zJiBobWFjUGFyYW1ldGVycyA9IHN0YXRp
Y19jYXN0PGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXMmPihwYXJhbWV0ZXJzKTsK
KworICAgIFJlZlB0cjxDcnlwdG9LZXlITUFDPiByZXN1bHQgPSBDcnlwdG9LZXlITUFDOjpnZW5l
cmF0ZShobWFjUGFyYW1ldGVycy5oYXNMZW5ndGggPyBobWFjUGFyYW1ldGVycy5sZW5ndGggOiAw
LCBobWFjUGFyYW1ldGVycy5oYXNoLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKKyAgICBpZiAoIXJl
c3VsdCkgeworICAgICAgICBwcm9taXNlLT5yZWplY3QobnVsbHB0cik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBwcm9taXNlLT5mdWxmaWxsKHJlc3VsdC5yZWxlYXNlKCkpOworfQor
CiB2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OmltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBDcnlwdG9LZXlGb3JtYXQgZm9ybWF0LCBjb25zdCBD
cnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2Fn
ZSB1c2FnZSwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiBwcm9taXNlLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBpZiAoZm9ybWF0ICE9IENyeXB0b0tleUZvcm1hdDo6UmF3KSB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlITUFDLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlITUFDLmNwcAko
cmV2aXNpb24gMTU4NTIxKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5
SE1BQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDI3IEBAIENyeXB0b0tleUhNQUM6
On5DcnlwdG9LZXlITUFDKCkKIHsKIH0KIAorUGFzc1JlZlB0cjxDcnlwdG9LZXlITUFDPiBDcnlw
dG9LZXlITUFDOjpnZW5lcmF0ZShzaXplX3QgbGVuZ3RoQnl0ZXMsIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgaGFzaCwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UgdXNhZ2VzKQor
eworICAgIGlmICghbGVuZ3RoQnl0ZXMpIHsKKyAgICAgICAgc3dpdGNoIChoYXNoKSB7CisgICAg
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6CisgICAgICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzIyNDoKKyAgICAgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjU2OgorICAgICAgICAgICAgbGVuZ3RoQnl0ZXMgPSA2
NDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OlNIQV8zODQ6CisgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
U0hBXzUxMjoKKyAgICAgICAgICAgIGxlbmd0aEJ5dGVzID0gMTI4OworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5SE1BQyhyYW5k
b21EYXRhKGxlbmd0aEJ5dGVzKSwgaGFzaCwgZXh0cmFjdGFibGUsIHVzYWdlcykpOworfQorCiB2
b2lkIENyeXB0b0tleUhNQUM6OmJ1aWxkQWxnb3JpdGhtRGVzY3JpcHRpb24oQ3J5cHRvQWxnb3Jp
dGhtRGVzY3JpcHRpb25CdWlsZGVyJiBidWlsZGVyKSBjb25zdAogewogICAgIENyeXB0b0tleTo6
YnVpbGRBbGdvcml0aG1EZXNjcmlwdGlvbihidWlsZGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2NyeXB0by9rZXlzL0NyeXB0b0tleUhNQUMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlITUFDLmgJKHJldmlzaW9uIDE1ODUyMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUhNQUMuaAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNiArNDEsOSBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkNyeXB0b0tleUhNQUMo
KTsKIAorICAgIC8vIElmIGxlbmd0aEJ5dGVzIGlzIDAsIGEgcmVjb21tZW5kZWQgbGVuZ3RoIGlz
IHVzZWQsIHdoaWNoIGlzIHRoZSBzaXplIG9mIHRoZSBhc3NvY2lhdGVkIGhhc2ggZnVuY3Rpb24n
cyBibG9jayBzaXplLgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENyeXB0b0tleUhNQUM+IGdlbmVy
YXRlKHNpemVfdCBsZW5ndGhCeXRlcywgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLCBi
b29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSk7CisKICAgICB2aXJ0dWFsIENyeXB0b0tl
eUNsYXNzIGtleUNsYXNzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gQ3J5cHRvS2V5Q2xhc3M6
OkhNQUM7IH0KIAogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5KCkgY29uc3QgeyByZXR1cm4g
bV9rZXk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGht
QUVTX0NCQ01hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9D
cnlwdG9BbGdvcml0aG1BRVNfQ0JDTWFjLmNwcAkocmV2aXNpb24gMTU4NTIxKQorKysgU291cmNl
L1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDTWFjLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE1LDEyICsxMTUsNiBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6
OmRlY3J5cHQoY29uCiAgICAgdHJhbnNmb3JtQUVTX0NCQyhrQ0NEZWNyeXB0LCBhZXNDQkNQYXJh
bWV0ZXJzLCAqYWVzS2V5LCBkYXRhLCBzdGQ6Om1vdmUocHJvbWlzZSkpOwogfQogCi12b2lkIENy
eXB0b0FsZ29yaXRobUFFU19DQkM6OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnMmLCBib29sIC8qZXh0cmFjdGFibGUqLywgQ3J5cHRvS2V5VXNhZ2UsIHN0ZDo6dW5p
cXVlX3B0cjxQcm9taXNlV3JhcHBlcj4sIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIC8vIE5v
dCB5ZXQgaW1wbGVtZW50ZWQuCi0gICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLX0KLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8pCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhNQUNNYWMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGht
SE1BQ01hYy5jcHAJKHJldmlzaW9uIDE1ODUyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9t
YWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNiwxMyAr
MTM2LDYgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjp2ZXJpZnkoY29uc3QgQwogICAgIHBy
b21pc2UtPmZ1bGZpbGwocmVzdWx0KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpn
ZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgYm9vbCAvKmV4dHJh
Y3RhYmxlKi8sIENyeXB0b0tleVVzYWdlLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+
LCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICAvLyBOb3QgeWV0IGltcGxlbWVudGVkLgotICAg
IGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci19Ci0KLQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNV
QlRMRV9DUllQVE8pCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTg1MjEpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMy0xMS0wMiAgQWxl
eGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgZ2Vu
ZXJhdGVLZXkgZm9yIEhNQUMgYW5kIEFFUy1DQkMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzY2OQorCisgICAgICAgIFJldmlld2VkIGJ5IERhbiBC
ZXJuc3RlaW4uCisKKyAgICAgICAgKiBjcnlwdG8vc3VidGxlL2Flcy1jYmMtZ2VuZXJhdGUta2V5
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWdl
bmVyYXRlLWtleS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjcnlwdG8vc3VidGxlL2htYWMtZ2Vu
ZXJhdGUta2V5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3J5cHRvL3N1YnRsZS9o
bWFjLWdlbmVyYXRlLWtleS5odG1sOiBBZGRlZC4KKworICAgICAgICAqIGNyeXB0by9zdWJ0bGUv
c2hhLTEtZXhwZWN0ZWQudHh0OiBOb3cgdGhhdCBjcnlwdG8ud2Via2l0U3VidGxlLmdlbmVyYXRl
S2V5IGV4aXN0cywKKyAgICAgICAgYSBkaWZmZXJlbnQgZXhjZXB0aW9uIGlzIHJhaXNlZC4KKwog
MjAxMy0xMS0wMiAgQ2hyaXN0b3BoZSBEdW1leiAgPGNoLmR1bWV6QHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIEVuZm9yY2VSYW5nZSBkb2Vzbid0IGVuZm9yY2UgcmFuZ2Ugb2YgYSBzaG9ydApJbmRl
eDogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWdlbmVyYXRlLWtleS1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWdl
bmVyYXRlLWtleS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9jcnlw
dG8vc3VidGxlL2Flcy1jYmMtZ2VuZXJhdGUta2V5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE5IEBACitUZXN0IGdlbmVyYXRpbmcgYW4gQUVTIGtleSB1c2luZyBBRVMt
Q0JDIGFsZ29yaXRobS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgY3J5
cHRvLnN1YnRsZS5nZW5lcmF0ZUtleSgiYWVzLWNiYyIsIGV4dHJhY3RhYmxlLCBbImVuY3J5cHQi
LCAiZGVjcnlwdCJdKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFT
UyBjcnlwdG8uc3VidGxlLmdlbmVyYXRlS2V5KHtuYW1lOiAiYWVzLWNiYyJ9LCBleHRyYWN0YWJs
ZSwgWyJlbmNyeXB0IiwgImRlY3J5cHQiXSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlw
ZSBlcnJvci4KK1BBU1MgY3J5cHRvLnN1YnRsZS5nZW5lcmF0ZUtleSh7bmFtZTogImFlcy1jYmMi
LCBsZW5ndGg6IHVuZGVmaW5lZH0sIGV4dHJhY3RhYmxlLCBbImVuY3J5cHQiLCAiZGVjcnlwdCJd
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBjcnlwdG8uc3Vi
dGxlLmdlbmVyYXRlS2V5KHtuYW1lOiAiYWVzLWNiYyIsIGxlbmd0aDoge319LCBleHRyYWN0YWJs
ZSwgWyJlbmNyeXB0IiwgImRlY3J5cHQiXSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlw
ZSBlcnJvci4KK0dlbmVyYXRpbmcgYSBrZXkuLi4KK1BBU1Mga2V5LnR5cGUgaXMgJ3NlY3JldCcK
K1BBU1Mga2V5LmV4dHJhY3RhYmxlIGlzIHRydWUKK1BBU1Mga2V5LmFsZ29yaXRobS5uYW1lIGlz
ICdhZXMtY2JjJworUEFTUyBrZXkuYWxnb3JpdGhtLmxlbmd0aCBpcyAxMjgKK1BBU1Mga2V5LnVz
YWdlcyBpcyBbJ2VuY3J5cHQnLCAnZGVjcnlwdCddCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVz
dHMvY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWdlbmVyYXRlLWtleS1leHBlY3RlZC50eHQKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMCwwICsxICMjCit0ZXh0L3BsYWluClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCAr
MSAjIworbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IExheW91
dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWNiYy1nZW5lcmF0ZS1rZXkuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1jYmMtZ2VuZXJhdGUta2V5Lmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1jYmMtZ2VuZXJh
dGUta2V5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MiBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NvbW1vbi5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCBnZW5lcmF0
aW5nIGFuIEFFUyBrZXkgdXNpbmcgQUVTLUNCQyBhbGdvcml0aG0uIik7CisKK2pzVGVzdElzQXN5
bmMgPSB0cnVlOworCitpZiAoIXdpbmRvdy5zdWJ0bGUpCisgICAgd2luZG93LmNyeXB0by5zdWJ0
bGUgPSB3aW5kb3cuY3J5cHRvLndlYmtpdFN1YnRsZTsKKwordmFyIGV4dHJhY3RhYmxlID0gdHJ1
ZTsKKworc2hvdWxkVGhyb3coJ2NyeXB0by5zdWJ0bGUuZ2VuZXJhdGVLZXkoImFlcy1jYmMiLCBl
eHRyYWN0YWJsZSwgWyJlbmNyeXB0IiwgImRlY3J5cHQiXSknKTsKK3Nob3VsZFRocm93KCdjcnlw
dG8uc3VidGxlLmdlbmVyYXRlS2V5KHtuYW1lOiAiYWVzLWNiYyJ9LCBleHRyYWN0YWJsZSwgWyJl
bmNyeXB0IiwgImRlY3J5cHQiXSknKTsKK3Nob3VsZFRocm93KCdjcnlwdG8uc3VidGxlLmdlbmVy
YXRlS2V5KHtuYW1lOiAiYWVzLWNiYyIsIGxlbmd0aDogdW5kZWZpbmVkfSwgZXh0cmFjdGFibGUs
IFsiZW5jcnlwdCIsICJkZWNyeXB0Il0pJyk7CitzaG91bGRUaHJvdygnY3J5cHRvLnN1YnRsZS5n
ZW5lcmF0ZUtleSh7bmFtZTogImFlcy1jYmMiLCBsZW5ndGg6IHt9fSwgZXh0cmFjdGFibGUsIFsi
ZW5jcnlwdCIsICJkZWNyeXB0Il0pJyk7CisKK2RlYnVnKCJHZW5lcmF0aW5nIGEga2V5Li4uIik7
CitjcnlwdG8uc3VidGxlLmdlbmVyYXRlS2V5KHtuYW1lOiAiYWVzLWNiYyIsIGxlbmd0aDogMTI4
fSwgZXh0cmFjdGFibGUsIFsiZW5jcnlwdCIsICJkZWNyeXB0Il0pLnRoZW4oZnVuY3Rpb24ocmVz
dWx0KSB7CisgICAga2V5ID0gcmVzdWx0OworCisgICAgc2hvdWxkQmUoImtleS50eXBlIiwgIidz
ZWNyZXQnIik7CisgICAgc2hvdWxkQmUoImtleS5leHRyYWN0YWJsZSIsICJ0cnVlIik7CisgICAg
c2hvdWxkQmUoImtleS5hbGdvcml0aG0ubmFtZSIsICInYWVzLWNiYyciKTsKKyAgICBzaG91bGRC
ZSgia2V5LmFsZ29yaXRobS5sZW5ndGgiLCAiMTI4Iik7CisgICAgc2hvdWxkQmUoImtleS51c2Fn
ZXMiLCAiWydlbmNyeXB0JywgJ2RlY3J5cHQnXSIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9
KTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBM
YXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1jYmMtZ2VuZXJhdGUta2V5Lmh0bWwKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMCwwICsxICMjCit0ZXh0L2h0bWwKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRs
ZS9obWFjLWdlbmVyYXRlLWtleS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvY3J5cHRvL3N1YnRsZS9obWFjLWdlbmVyYXRlLWtleS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2htYWMtZ2VuZXJhdGUta2V5LWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI3IEBACitUZXN0IGdlbmVyYXRpbmcg
YSBITUFDIGtleS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgY3J5cHRv
LnN1YnRsZS5nZW5lcmF0ZUtleSgiaG1hYyIsIGV4dHJhY3RhYmxlLCBbInNpZ24iLCAidmVyaWZ5
Il0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIGNyeXB0by5z
dWJ0bGUuZ2VuZXJhdGVLZXkoe25hbWU6ICJobWFjIn0sIGV4dHJhY3RhYmxlLCBbInNpZ24iLCAi
dmVyaWZ5Il0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBF
eGNlcHRpb24gOS4KK1BBU1MgY3J5cHRvLnN1YnRsZS5nZW5lcmF0ZUtleSh7bmFtZTogImhtYWMi
LCBsZW5ndGg6IHVuZGVmaW5lZH0sIGV4dHJhY3RhYmxlLCBbInNpZ24iLCAidmVyaWZ5Il0pIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24gOS4K
K1BBU1MgY3J5cHRvLnN1YnRsZS5nZW5lcmF0ZUtleSh7bmFtZTogImhtYWMiLCBsZW5ndGg6IHt9
fSwgZXh0cmFjdGFibGUsIFsic2lnbiIsICJ2ZXJpZnkiXSkgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBOb3RTdXBwb3J0ZWRFcnJvcjogRE9NIEV4Y2VwdGlvbiA5LgorCitHZW5lcmF0aW5nIGEga2V5
IHdpdGggZGVmYXVsdCBsZW5ndGguLi4KK1BBU1Mga2V5LnR5cGUgaXMgJ3NlY3JldCcKK1BBU1Mg
a2V5LmV4dHJhY3RhYmxlIGlzIHRydWUKK1BBU1Mga2V5LmFsZ29yaXRobS5uYW1lIGlzICdobWFj
JworUEFTUyBrZXkuYWxnb3JpdGhtLmxlbmd0aCBpcyA2NAorUEFTUyBrZXkudXNhZ2VzIGlzIFsi
c2lnbiIsICJ2ZXJpZnkiXQorCitHZW5lcmF0aW5nIGEga2V5IHdpdGggY3VzdG9tIGxlbmd0aC4u
LgorUEFTUyBrZXkudHlwZSBpcyAnc2VjcmV0JworUEFTUyBrZXkuZXh0cmFjdGFibGUgaXMgdHJ1
ZQorUEFTUyBrZXkuYWxnb3JpdGhtLm5hbWUgaXMgJ2htYWMnCitQQVNTIGtleS5hbGdvcml0aG0u
bGVuZ3RoIGlzIDUKK1BBU1Mga2V5LnVzYWdlcyBpcyBbInNpZ24iXQorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246
IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvaG1hYy1nZW5lcmF0ZS1rZXktZXhwZWN0ZWQudHh0
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCArMSAjIwordGV4dC9wbGFp
bgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMj
IC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4
OiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2htYWMtZ2VuZXJhdGUta2V5Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9obWFjLWdlbmVyYXRlLWtleS5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9obWFjLWdlbmVyYXRl
LWtleS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jb21tb24uanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgZ2VuZXJhdGlu
ZyBhIEhNQUMga2V5LiIpOworCitqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworaWYgKCF3aW5kb3cu
c3VidGxlKQorICAgIHdpbmRvdy5jcnlwdG8uc3VidGxlID0gd2luZG93LmNyeXB0by53ZWJraXRT
dWJ0bGU7CisKK3ZhciBleHRyYWN0YWJsZSA9IHRydWU7CisKK3Nob3VsZFRocm93KCdjcnlwdG8u
c3VidGxlLmdlbmVyYXRlS2V5KCJobWFjIiwgZXh0cmFjdGFibGUsIFsic2lnbiIsICJ2ZXJpZnki
XSknKTsKK3Nob3VsZFRocm93KCdjcnlwdG8uc3VidGxlLmdlbmVyYXRlS2V5KHtuYW1lOiAiaG1h
YyJ9LCBleHRyYWN0YWJsZSwgWyJzaWduIiwgInZlcmlmeSJdKScpOworc2hvdWxkVGhyb3coJ2Ny
eXB0by5zdWJ0bGUuZ2VuZXJhdGVLZXkoe25hbWU6ICJobWFjIiwgbGVuZ3RoOiB1bmRlZmluZWR9
LCBleHRyYWN0YWJsZSwgWyJzaWduIiwgInZlcmlmeSJdKScpOworc2hvdWxkVGhyb3coJ2NyeXB0
by5zdWJ0bGUuZ2VuZXJhdGVLZXkoe25hbWU6ICJobWFjIiwgbGVuZ3RoOiB7fX0sIGV4dHJhY3Rh
YmxlLCBbInNpZ24iLCAidmVyaWZ5Il0pJyk7CisKK2RlYnVnKCJcbkdlbmVyYXRpbmcgYSBrZXkg
d2l0aCBkZWZhdWx0IGxlbmd0aC4uLiIpOworY3J5cHRvLnN1YnRsZS5nZW5lcmF0ZUtleSh7bmFt
ZTogImhtYWMiLCBoYXNoOiAic2hhLTEifSwgZXh0cmFjdGFibGUsIFsic2lnbiIsICJ2ZXJpZnki
XSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgICBrZXkgPSByZXN1bHQ7CisKKyAgICBzaG91
bGRCZSgia2V5LnR5cGUiLCAiJ3NlY3JldCciKTsKKyAgICBzaG91bGRCZSgia2V5LmV4dHJhY3Rh
YmxlIiwgInRydWUiKTsKKyAgICBzaG91bGRCZSgia2V5LmFsZ29yaXRobS5uYW1lIiwgIidobWFj
JyIpOworICAgIHNob3VsZEJlKCJrZXkuYWxnb3JpdGhtLmxlbmd0aCIsICI2NCIpOworICAgIHNo
b3VsZEJlKCJrZXkudXNhZ2VzIiwgJ1sic2lnbiIsICJ2ZXJpZnkiXScpOworCisgICAgZGVidWco
IlxuR2VuZXJhdGluZyBhIGtleSB3aXRoIGN1c3RvbSBsZW5ndGguLi4iKTsKKyAgICByZXR1cm4g
Y3J5cHRvLnN1YnRsZS5nZW5lcmF0ZUtleSh7bmFtZTogImhtYWMiLCBoYXNoOiAic2hhLTEiLCBs
ZW5ndGg6IDV9LCBleHRyYWN0YWJsZSwgWyJzaWduIl0pOworfSkudGhlbihmdW5jdGlvbihyZXN1
bHQpIHsKKyAgICBrZXkgPSByZXN1bHQ7CisKKyAgICBzaG91bGRCZSgia2V5LnR5cGUiLCAiJ3Nl
Y3JldCciKTsKKyAgICBzaG91bGRCZSgia2V5LmV4dHJhY3RhYmxlIiwgInRydWUiKTsKKyAgICBz
aG91bGRCZSgia2V5LmFsZ29yaXRobS5uYW1lIiwgIidobWFjJyIpOworICAgIHNob3VsZEJlKCJr
ZXkuYWxnb3JpdGhtLmxlbmd0aCIsICI1Iik7CisgICAgc2hvdWxkQmUoImtleS51c2FnZXMiLCAn
WyJzaWduIl0nKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30pOworPC9zY3JpcHQ+CisKKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2NyeXB0by9zdWJ0
bGUvaG1hYy1nZW5lcmF0ZS1rZXkuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBl
CiMjIC0wLDAgKzEgIyMKK3RleHQvaHRtbApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5
CkluZGV4OiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3NoYS0xLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3NoYS0xLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMTU4NTIxKQorKysgTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9zaGEtMS1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExLDcgKzExLDcgQEAgU0hBMSBvZiBbMCwgMSwg
MiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMQogICAgID0gWzJjIDdlIDdjIDM4IDRmIDc4IDI5IDY5
IDQyIDgyIGIxIGUzIGE2IDIxIDZkIGVmIDgwIDgyIGQwIDU1XQogU0hBMSBvZiBbbmV3IFVpbnQ4
QXJyYXkoWzAsIDEsIDIsIDMsIDRdKSwgbmV3IFVpbnQ4QXJyYXkoNSwgNiwgNywgOCwgOSwgMTBd
KV0KICAgICA9IFsyYyA3ZSA3YyAzOCA0ZiA3OCAyOSA2OSA0MiA4MiBiMSBlMyBhNiAyMSA2ZCBl
ZiA4MCA4MiBkMCA1NV0KLVBBU1MgY3J5cHRvLnN1YnRsZS5nZW5lcmF0ZUtleSgnc2hhLTEnKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGEgZnVuY3Rpb24gKGV2
YWx1YXRpbmcgJ2NyeXB0by5zdWJ0bGUuZ2VuZXJhdGVLZXkoJ3NoYS0xJyknKS4KK1BBU1MgY3J5
cHRvLnN1YnRsZS5nZW5lcmF0ZUtleSgnc2hhLTEnKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5v
dFN1cHBvcnRlZEVycm9yOiBET00gRXhjZXB0aW9uIDkuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215928</attachid>
            <date>2013-11-04 10:11:23 -0800</date>
            <delta_ts>2013-11-04 10:12:14 -0800</delta_ts>
            <desc>patch for re-landing</desc>
            <filename>AddGenerateKey.txt</filename>
            <type>text/plain</type>
            <size>35991</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1ODU3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDEzLTExLTA0ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBnZW5lcmF0
ZUtleSBmb3IgSE1BQyBhbmQgQUVTLUNCQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5z
dGVpbi4KKworICAgICAgICBUZXN0czogY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWdlbmVyYXRlLWtl
eS5odG1sCisgICAgICAgICAgICAgICBjcnlwdG8vc3VidGxlL2htYWMtZ2VuZXJhdGUta2V5Lmh0
bWwKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQg
bmV3IGZpbGVzLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0
aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFlc0tleUdlblBhcmFtcyk6IEFk
ZGVkIGJpbmRpbmdzIGZvciBBZXNLZXlHZW5QYXJhbXMuCisgICAgICAgIChXZWJDb3JlOjpKU0Ny
eXB0b0FsZ29yaXRobURpY3Rpb25hcnk6OmNyZWF0ZVBhcmFtZXRlcnNGb3JHZW5lcmF0ZUtleSk6
IEhhbmRsZQorICAgICAgICBhbGdvcml0aG1zIHRoYXQgZ2VuZXJhdGUgQUVTIGFuZCBITUFDIGtl
eXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHA6IChX
ZWJDb3JlOjpKU1N1YnRsZUNyeXB0bzo6Z2VuZXJhdGVLZXkpOiBBZGRlZC4KKworICAgICAgICAq
IGNyeXB0by9DcnlwdG9BbGdvcml0aG1BZXNLZXlHZW5QYXJhbXMuaDogQWRkZWQuCisKKyAgICAg
ICAgKiBjcnlwdG8vQ3J5cHRvS2V5LmNwcDogKFdlYkNvcmU6OkNyeXB0b0tleTo6cmFuZG9tRGF0
YSk6CisgICAgICAgICogY3J5cHRvL0NyeXB0b0tleS5oOgorICAgICAgICAqIGNyeXB0by9Dcnlw
dG9LZXlNYWMuY3BwOiBBZGRlZAorICAgICAgICBFeHBvc2UgYSBmdW5jdGlvbiB0aGF0IHByb2R1
Y2VzIHJhbmRvbSBkYXRhIGZvciBzeW1tZXRyaWMgY3J5cHRvIGtleXMuIENyb3NzLXBsYXRmb3Jt
CisgICAgICAgIGltcGxlbWVudGF0aW9uIHVzZXMgQVJDNCBjb2RlIGZyb20gV1RGLCB3aGlsZSBN
YWMgdXNlcyBhIHN5c3RlbSBmdW5jdGlvbiB0aGF0CisgICAgICAgIHByb3ZpZGVzIGEgRklQUyB2
YWxpZGF0ZWQgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuCisKKyAgICAgICAgKiBjcnlwdG8vQ3J5
cHRvS2V5QUVTLmNwcDogKFdlYkNvcmU6OkNyeXB0b0tleUFFUzo6Z2VuZXJhdGUpOgorICAgICAg
ICAqIGNyeXB0by9DcnlwdG9LZXlBRVMuaDoKKyAgICAgICAgQWRkZWQgYSBmdW5jdGlvbiB0aGF0
IGNyZWF0ZXMgQUVTIGtleXMuCisKKyAgICAgICAgKiBjcnlwdG8vU3VidGxlQ3J5cHRvLmlkbDog
QWRkZWQgZ2VuZXJhdGVLZXkuCisKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1BRVNfQ0JDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFF
U19DQkM6OmdlbmVyYXRlS2V5KTogQWRkZWQuCisKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29y
aXRobUhNQUM6OmdlbmVyYXRlS2V5KTogQWRkZWQuCisKKyAgICAgICAgKiBjcnlwdG8va2V5cy9D
cnlwdG9LZXlITUFDLmNwcDogKFdlYkNvcmU6OkNyeXB0b0tleUhNQUM6OmdlbmVyYXRlKToKKyAg
ICAgICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlITUFDLmg6CisgICAgICAgIEFkZGVkIGEgZnVu
Y3Rpb24gdGhhdCBjcmVhdGVzIEhNQUMga2V5cy4KKworICAgICAgICAqIGNyeXB0by9tYWMvQ3J5
cHRvQWxnb3JpdGhtQUVTX0NCQ01hYy5jcHA6IFJlbW92ZWQgZ2VuZXJhdGVLZXkgc3R1YiwgdGhl
IGltcGxlbWVudGF0aW9uCisgICAgICAgIGVuZGVkIHVwIGluIGNyb3NzLXBsYXRmb3JtIGZpbGUu
CisKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhNQUNNYWMuY3BwOiBEaXR0
by4KKwogMjAxMy0xMS0wNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE1ODUyNi4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDE1ODU3OSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTU4Miw2ICs1NTgyLDggQEAKIAkJRTE4NzA1NjMx
NkU1NEEwRDAwNTg1RTk3IC8qIE1haW5UaHJlYWRUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTg3MDU2MjE2RTU0QTBEMDA1ODVFOTcgLyogTWFp
blRocmVhZFRhc2suaCAqLzsgfTsKIAkJRTE4NzcyRjExMjZFMjYyOTAwM0RENTg2IC8qIExhbmd1
YWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUx
ODc3MkYwMTI2RTI2MjkwMDNERDU4NiAvKiBMYW5ndWFnZS5jcHAgKi87IH07CiAJCUUxOTcyNzE2
MTgyMDU0OUUwMDU5MkQ1MSAvKiBDcnlwdG9LZXlUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTk3MjcxNTE4MjA1NDlFMDA1OTJENTEgLyogQ3J5
cHRvS2V5VHlwZS5oICovOyB9OworCQlFMTlBQzNGNzE4MjRFNUQxMDAzNDk0MjYgLyogQ3J5cHRv
QWxnb3JpdGhtQWVzS2V5R2VuUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMTlBQzNGNjE4MjRFNUQxMDAzNDk0MjYgLyogQ3J5cHRvQWxnb3Jp
dGhtQWVzS2V5R2VuUGFyYW1zLmggKi87IH07CisJCUUxOUFDM0Y5MTgyNTY2RjcwMDM0OTQyNiAv
KiBDcnlwdG9LZXlNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTE5QUMzRjgxODI1NjZGNzAwMzQ5NDI2IC8qIENyeXB0b0tleU1hYy5jcHAgKi87
IH07CiAJCUUxOUFDM0UyMTgyNERDNjkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyMjRN
YWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5
QUMzREUxODI0REM2OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTIyNE1hYy5jcHAgKi87
IH07CiAJCUUxOUFDM0UzMTgyNERDNjkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyNTZN
YWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5
QUMzREYxODI0REM2OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTI1Nk1hYy5jcHAgKi87
IH07CiAJCUUxOUFDM0U0MTgyNERDNjkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEzODRN
YWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5
QUMzRTAxODI0REM2OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTM4NE1hYy5jcHAgKi87
IH07CkBAIC0xMjYxNCw2ICsxMjYxNiw4IEBACiAJCUUxODcwNTYyMTZFNTRBMEQwMDU4NUU5NyAv
KiBNYWluVGhyZWFkVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWlu
VGhyZWFkVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTg3NzJGMDEyNkUy
NjI5MDAzREQ1ODYgLyogTGFuZ3VhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTGFuZ3VhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTk3
MjcxNTE4MjA1NDlFMDA1OTJENTEgLyogQ3J5cHRvS2V5VHlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDcnlwdG9LZXlUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUxOUFDM0Y2MTgyNEU1RDEwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1BZXNLZXlH
ZW5QYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxnb3Jp
dGhtQWVzS2V5R2VuUGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxOUFD
M0Y4MTgyNTY2RjcwMDM0OTQyNiAvKiBDcnlwdG9LZXlNYWMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvS2V5TWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTE5QUMzREUxODI0REM2OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNI
QTIyNE1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDcnlwdG9B
bGdvcml0aG1TSEEyMjRNYWMuY3BwOyBwYXRoID0gbWFjL0NyeXB0b0FsZ29yaXRobVNIQTIyNE1h
Yy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxOUFDM0RGMTgyNERDNjkwMDM0
OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyNTZNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gQ3J5cHRvQWxnb3JpdGhtU0hBMjU2TWFjLmNwcDsgcGF0aCA9IG1h
Yy9DcnlwdG9BbGdvcml0aG1TSEEyNTZNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMTlBQzNFMDE4MjREQzY5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMzg0TWFj
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENyeXB0b0FsZ29yaXRo
bVNIQTM4NE1hYy5jcHA7IHBhdGggPSBtYWMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0TWFjLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMTc2LDYgKzIwMTgwLDcgQEAKIAkJCQlF
MTlBQzNERjE4MjREQzY5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMjU2TWFjLmNwcCAq
LywKIAkJCQlFMTlBQzNFMDE4MjREQzY5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMzg0
TWFjLmNwcCAqLywKIAkJCQlFMTlBQzNFMTE4MjREQzY5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3Jp
dGhtU0hBNTEyTWFjLmNwcCAqLywKKwkJCQlFMTlBQzNGODE4MjU2NkY3MDAzNDk0MjYgLyogQ3J5
cHRvS2V5TWFjLmNwcCAqLywKIAkJCSk7CiAJCQluYW1lID0gbWFjOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKQEAgLTIwMjE2LDYgKzIwMjIxLDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCiAJCQkJRTEyNUY4MzkxODI0MTA0ODAwRDg0Q0Q5IC8qIENyeXB0b0Fs
Z29yaXRobUFlc0NiY1BhcmFtcy5oICovLAorCQkJCUUxOUFDM0Y2MTgyNEU1RDEwMDM0OTQyNiAv
KiBDcnlwdG9BbGdvcml0aG1BZXNLZXlHZW5QYXJhbXMuaCAqLywKIAkJCQlFMTlEQTI5QjE4MTg5
QUREMDAwODhCQzggLyogQ3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcy5oICovLAogCQkJCUUx
QzY1NzFFMTgxNkU1MDMwMDI1NkNERCAvKiBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zLmggKi8s
CiAJCQkpOwpAQCAtMjMxOTEsNiArMjMxOTcsNyBAQAogCQkJCUQzNTlEOEJGMTI5Q0E1NUMwMDA2
RTVEMiAvKiBKU0hUTUxEZXRhaWxzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzY4MDhC
NTAxNTlEQURGQTAwMkI1MjMzIC8qIEpTSFRNTERpYWxvZ0VsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBODVCMUU3MEExQjI0MDUwMEQ4Qzg3QyAvKiBKU0hUTUxEaXJlY3RvcnlFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMTlBQzNGNzE4MjRFNUQxMDAzNDk0MjYgLyogQ3J5cHRv
QWxnb3JpdGhtQWVzS2V5R2VuUGFyYW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTg1QjJCNzBB
MUIyQUM3MDBEOEM4N0MgLyogSlNIVE1MRGl2RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUE4NUIxRTkwQTFCMjQwNTAwRDhDODdDIC8qIEpTSFRNTERMaXN0RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE0OTRFMzUwQTEyMzU4QjAwRkRBRkMxIC8qIEpTSFRNTERvY3VtZW50Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTI3MDA5LDYgKzI3MDE2LDcgQEAKIAkJCQlDNkYwOTAwRTE0MzI3
QjYxMDA2ODU4NDkgLyogTXV0YXRpb25PYnNlcnZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
MTlBQzNFNTE4MjREQzY5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBNTEyTWFjLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUQ2RTUyOEEzMTQ5QTkyNkQwMEVGRTFGMyAvKiBNdXRhdGlvbk9i
c2VydmVySW50ZXJlc3RHcm91cC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMTlBQzNGOTE4MjU2
NkY3MDAzNDk0MjYgLyogQ3J5cHRvS2V5TWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQ2RTI3
NkFGMTQ2Mzc0NTUwMDFEMjgwQSAvKiBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUM2RjA4RkJDMTQzMEZFOEYwMDY4NTg0OSAvKiBNdXRhdGlvblJl
Y29yZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MkI2QzlDNTE1RTNGNERGMDA2OTBCMDUgLyog
TmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9u
YXJ5LmNwcAkocmV2aXNpb24gMTU4NTc5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiAr
MjksNyBAQAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCiAjaW5jbHVkZSAiQ3J5cHRvQWxn
b3JpdGhtQWVzQ2JjUGFyYW1zLmgiCisjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtQWVzS2V5R2Vu
UGFyYW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcy5oIgogI2lu
Y2x1ZGUgIkNyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9BbGdv
cml0aG1SZWdpc3RyeS5oIgpAQCAtMTI2LDcgKzEyNyw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUGEKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRo
bUFlc0NiY1BhcmFtcz4gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1B
ZXNDYmNQYXJhbXM+KCk7CisgICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0
b0FsZ29yaXRobUFlc0NiY1BhcmFtcz4oKTsKIAogICAgIENyeXB0b09wZXJhdGlvbkRhdGEgaXZE
YXRhOwogICAgIGlmICghY3J5cHRvT3BlcmF0aW9uRGF0YUZyb21KU1ZhbHVlKGV4ZWMsIGl2LCBp
dkRhdGEpKSB7CkBAIC0xNDQsNiArMTQ1LDI0IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5
cHRvQWxnb3JpdGhtUGEKICAgICByZXR1cm4gc3RkOjptb3ZlKHJlc3VsdCk7CiB9CiAKK3N0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gY3JlYXRlQWVzS2V5
R2VuUGFyYW1zKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUpCit7Cisg
ICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBhdXRvIHJlc3VsdCA9IHN0
ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5R2VuUGFyYW1zPigpOworCisgICAg
SlNWYWx1ZSBsZW5ndGhWYWx1ZSA9IGdldFByb3BlcnR5KGV4ZWMsIHZhbHVlLmdldE9iamVjdCgp
LCAibGVuZ3RoIik7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIHJlc3VsdC0+bGVuZ3RoID0gdG9VSW50MTYoZXhlYywgbGVuZ3Ro
VmFsdWUsIEVuZm9yY2VSYW5nZSk7CisKKyAgICByZXR1cm4gc3RkOjptb3ZlKHJlc3VsdCk7Cit9
CisKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gY3Jl
YXRlSG1hY1BhcmFtcyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlKQog
ewogICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkgewpAQCAtMTUyLDcgKzE3MSw3IEBAIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGEKICAgICB9CiAKICAgICBKU0RpY3Rp
b25hcnkganNEaWN0aW9uYXJ5KGV4ZWMsIHZhbHVlLmdldE9iamVjdCgpKTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtcz4gcmVzdWx0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zPigpOworICAgIGF1dG8gcmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zPigpOwogCiAgICAgaWYgKCFn
ZXRIYXNoQWxnb3JpdGhtKGpzRGljdGlvbmFyeSwgcmVzdWx0LT5oYXNoKSkgewogICAgICAgICBB
U1NFUlQoZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwpAQCAtMTcwLDcgKzE4OSw3IEBAIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGEKICAgICB9CiAKICAgICBKU0RpY3Rpb25h
cnkganNEaWN0aW9uYXJ5KGV4ZWMsIHZhbHVlLmdldE9iamVjdCgpKTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4gcmVzdWx0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPigpOworICAgIGF1dG8gcmVzdWx0ID0g
c3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPigpOwogCiAgICAg
aWYgKCFnZXRIYXNoQWxnb3JpdGhtKGpzRGljdGlvbmFyeSwgcmVzdWx0LT5oYXNoKSkgewogICAg
ICAgICBBU1NFUlQoZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwpAQCAtMzQ0LDcgKzM2Myw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXIKICAgICB9CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBKU0NyeXB0b0FsZ29yaXRobURp
Y3Rpb25hcnk6OmNyZWF0ZVBhcmFtZXRlcnNGb3JHZW5lcmF0ZUtleShKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sIEpTQzo6SlNWYWx1ZSkK
K3N0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBKU0NyeXB0b0FsZ29y
aXRobURpY3Rpb25hcnk6OmNyZWF0ZVBhcmFtZXRlcnNGb3JHZW5lcmF0ZUtleShKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sIEpTQzo6SlNW
YWx1ZSB2YWx1ZSkKIHsKICAgICBzd2l0Y2ggKGFsZ29yaXRobSkgewogICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBRVNfUEtDUzFfdjFfNToKQEAgLTM1MywxMiArMzcyLDE2
IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXIKICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQV9PQUVQOgogICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6RUNEU0E6CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpFQ0RIOgorICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgTk9UX1NVUFBPUlRFRF9FUlIp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OkFFU19DVFI6CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNf
Q0JDOgogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NNQUM6CiAgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfR0NNOgogICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NGQjoKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUFlc0tl
eUdlblBhcmFtcyhleGVjLCB2YWx1ZSk7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpITUFDOgorICAgICAgICByZXR1cm4gY3JlYXRlSG1hY0tleVBhcmFtcyhleGVjLCB2YWx1
ZSk7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpESDoKICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6U0hBXzIyNDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAJKHJldmlzaW9uIDE1ODU3OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzM3LDYgKzMzNyw1MSBAQCBKU1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjpkaWdl
c3QoRXhlY1N0YXRlCiAgICAgcmV0dXJuIHByb21pc2U7CiB9CiAKK0pTVmFsdWUgSlNTdWJ0bGVD
cnlwdG86OmdlbmVyYXRlS2V5KEpTQzo6RXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4
Y2VwdGlvbihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CisKKyAg
ICBhdXRvIGFsZ29yaXRobSA9IGNyZWF0ZUFsZ29yaXRobUZyb21KU1ZhbHVlKGV4ZWMsIGV4ZWMt
PnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBpZiAoIWFsZ29yaXRobSkgeworICAgICAgICBB
U1NFUlQoZXhlYy0+aGFkRXhjZXB0aW9uKCkpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICB9CisKKyAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU0NyeXB0b0FsZ29yaXRobURpY3Rp
b25hcnk6OmNyZWF0ZVBhcmFtZXRlcnNGb3JHZW5lcmF0ZUtleShleGVjLCBhbGdvcml0aG0tPmlk
ZW50aWZpZXIoKSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIGlmICghcGFyYW1l
dGVycykgeworICAgICAgICBBU1NFUlQoZXhlYy0+aGFkRXhjZXB0aW9uKCkpOworICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAgICBib29sIGV4dHJhY3RhYmxlID0gZmFs
c2U7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAyKSB7CisgICAgICAgIGV4dHJh
Y3RhYmxlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9Cb29sZWFuKGV4ZWMpOworICAg
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKKyAgICB9CisKKyAgICBDcnlwdG9LZXlVc2FnZSBrZXlVc2FnZXMgPSAwOworICAg
IGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMykgeworICAgICAgICBpZiAoIWNyeXB0b0tl
eVVzYWdlc0Zyb21KU1ZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDIpLCBrZXlVc2FnZXMpKSB7
CisgICAgICAgICAgICBBU1NFUlQoZXhlYy0+aGFkRXhjZXB0aW9uKCkpOworICAgICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBKU1Byb21pc2Uq
IHByb21pc2UgPSBKU1Byb21pc2U6OmNyZWF0ZVdpdGhSZXNvbHZlcihleGVjLT52bSgpLCBnbG9i
YWxPYmplY3QoKSk7CisgICAgYXV0byBwcm9taXNlV3JhcHBlciA9IFByb21pc2VXcmFwcGVyOjpj
cmVhdGUoZ2xvYmFsT2JqZWN0KCksIHByb21pc2UpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisgICAgYWxnb3JpdGhtLT5nZW5lcmF0ZUtleSgqcGFyYW1ldGVycywgZXh0cmFjdGFibGUs
IGtleVVzYWdlcywgc3RkOjptb3ZlKHByb21pc2VXcmFwcGVyKSwgZWMpOworICAgIGlmIChlYykg
eworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gcHJvbWlzZTsKK30KKwogSlNWYWx1ZSBK
U1N1YnRsZUNyeXB0bzo6aW1wb3J0S2V5KEpTQzo6RXhlY1N0YXRlKiBleGVjKQogewogICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPCAzKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRv
L0NyeXB0b0FsZ29yaXRobUFlc0tleUdlblBhcmFtcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1BZXNLZXlHZW5QYXJhbXMuaAkocmV2aXNpb24g
MTU4NTI2KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtQWVzS2V5
R2VuUGFyYW1zLmg6MTU4NTI2KQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29y
aXRobUFlc0tleUdlblBhcmFtcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIENyeXB0b0FsZ29yaXRobUFlc0tleUdlblBhcmFtc19oCisjZGVm
aW5lIENyeXB0b0FsZ29yaXRobUFlc0tleUdlblBhcmFtc19oCisKKyNpbmNsdWRlICJDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzLmgiCisKKyNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDcnlwdG9BbGdvcml0aG1BZXNLZXlHZW5QYXJhbXMg
RklOQUwgOiBwdWJsaWMgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyB7CitwdWJsaWM6CisgICAg
Ly8gVGhlIGxlbmd0aCwgaW4gYml0cywgb2YgdGhlIGtleS4KKyAgICB1bnNpZ25lZCBsZW5ndGg7
Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoU1VCVExFX0NSWVBUTykKKyNlbmRpZiAvLyBD
cnlwdG9BbGdvcml0aG1BZXNLZXlHZW5QYXJhbXNfaApJbmRleDogU291cmNlL1dlYkNvcmUvY3J5
cHRvL0NyeXB0b0tleS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL0Ny
eXB0b0tleS5jcHAJKHJldmlzaW9uIDE1ODU3OSkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9D
cnlwdG9LZXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRl
ICJDcnlwdG9BbGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxkZXIuaCIKICNpbmNsdWRlICJDcnlwdG9B
bGdvcml0aG1SZWdpc3RyeS5oIgorI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRv
bU51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC04Nyw2ICs4OCwxNCBAQCBWZWN0b3I8U3RyaW5nPiBDcnlwdG9LZXk6OnVz
YWdlcygpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorI2lmICFQTEFURk9STShNQUMp
CitWZWN0b3I8Y2hhcj4gQ3J5cHRvS2V5OjpyYW5kb21EYXRhKHNpemVfdCBzaXplKQoreworICAg
IFZlY3RvcjxjaGFyPiByZXN1bHQoc2l6ZSk7CisgICAgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21W
YWx1ZXMocmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKyNlbmRpZgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNV
QlRMRV9DUllQVE8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5oCShyZXZpc2lvbiAx
NTg1NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU4LDYgKzU4LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBhbGxvd3MoQ3J5cHRvS2V5
VXNhZ2UgdXNhZ2UpIGNvbnN0IHsgcmV0dXJuIHVzYWdlID09IChtX3VzYWdlcyAmIHVzYWdlKTsg
fQogCisgICAgc3RhdGljIFZlY3RvcjxjaGFyPiByYW5kb21EYXRhKHNpemVfdCk7CisKIHByaXZh
dGU6CiAgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBtX2FsZ29yaXRobTsKICAgICBDcnlw
dG9LZXlUeXBlIG1fdHlwZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXlB
RVMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXlBRVMu
Y3BwCShyZXZpc2lvbiAxNTg1NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5
QUVTLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksMTMgQEAgQ3J5cHRvS2V5QUVTOjp+
Q3J5cHRvS2V5QUVTKCkKIHsKIH0KIAorUGFzc1JlZlB0cjxDcnlwdG9LZXlBRVM+IENyeXB0b0tl
eUFFUzo6Z2VuZXJhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sIHNpemVf
dCBsZW5ndGhCaXRzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSB1c2FnZXMpCit7
CisgICAgaWYgKGxlbmd0aEJpdHMgJSA4KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0b0tleUFFUyhhbGdvcml0aG0sIHJhbmRvbURhdGEobGVu
Z3RoQml0cyAvIDgpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKSk7Cit9CisKIHZvaWQgQ3J5cHRvS2V5
QUVTOjpidWlsZEFsZ29yaXRobURlc2NyaXB0aW9uKENyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9u
QnVpbGRlciYgYnVpbGRlcikgY29uc3QKIHsKICAgICBDcnlwdG9LZXk6OmJ1aWxkQWxnb3JpdGht
RGVzY3JpcHRpb24oYnVpbGRlcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRv
S2V5QUVTLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleUFF
Uy5oCShyZXZpc2lvbiAxNTg1NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5
QUVTLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDggQEAgcHVibGljOgogICAgIH0KICAg
ICB2aXJ0dWFsIH5DcnlwdG9LZXlBRVMoKTsKIAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENyeXB0
b0tleUFFUz4gZ2VuZXJhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgc2l6ZV90IGxlbmd0
aEJpdHMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlKTsKKwogICAgIHZpcnR1YWwg
Q3J5cHRvS2V5Q2xhc3Mga2V5Q2xhc3MoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBDcnlwdG9L
ZXlDbGFzczo6QUVTOyB9CiAKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4mIGtleSgpIGNvbnN0IHsg
cmV0dXJuIG1fa2V5OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5TWFj
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5TWFjLmNw
cAkocmV2aXNpb24gMTU4NTI2KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5
TWFjLmNwcDoxNTg1MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5TWFjLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0tleS5oIgorCisjaWYgRU5BQkxFKFNVQlRMRV9D
UllQVE8pCisKKyNpZmRlZiBfX2hhc19pbmNsdWRlCisjaWYgX19oYXNfaW5jbHVkZSg8Q29tbW9u
Q3J5cHRvL0NvbW1vblJhbmRvbVNQSS5oPikKKyNpbmNsdWRlIDxDb21tb25DcnlwdG8vQ29tbW9u
UmFuZG9tU1BJLmg+CisjZW5kaWYKKyNlbmRpZgorCit0eXBlZGVmIHN0cnVjdCBfX0NDUmFuZG9t
ICpDQ1JhbmRvbVJlZjsKK2V4dGVybiBjb25zdCBDQ1JhbmRvbVJlZiBrQ0NSYW5kb21EZWZhdWx0
OworZXh0ZXJuICJDIiBpbnQgQ0NSYW5kb21Db3B5Qnl0ZXMoQ0NSYW5kb21SZWYgcm5kLCB2b2lk
ICpieXRlcywgc2l6ZV90IGNvdW50KTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitWZWN0b3I8
Y2hhcj4gQ3J5cHRvS2V5OjpyYW5kb21EYXRhKHNpemVfdCBzaXplKQoreworICAgIFZlY3Rvcjxj
aGFyPiByZXN1bHQoc2l6ZSk7CisgICAgQ0NSYW5kb21Db3B5Qnl0ZXMoa0NDUmFuZG9tRGVmYXVs
dCwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQ
VE8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5TWFjLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5TWFjLmNwcAkod29ya2luZyBj
b3B5KQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleU1hYy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCi0j
aWZkZWYgX19oYXNfaW5jbHVkZQorI2lmIGRlZmluZWQoX19oYXNfaW5jbHVkZSkgJiYgKFBMQVRG
T1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwKQogI2lm
IF9faGFzX2luY2x1ZGUoPENvbW1vbkNyeXB0by9Db21tb25SYW5kb21TUEkuaD4pCiAjaW5jbHVk
ZSA8Q29tbW9uQ3J5cHRvL0NvbW1vblJhbmRvbVNQSS5oPgogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmlkbAkocmV2aXNpb24gMTU4NTc5KQorKysgU291cmNl
L1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1LDUg
KzM1LDYgQEAKICAgICBbQ3VzdG9tXSBQcm9taXNlIHNpZ24oQWxnb3JpdGhtSWRlbnRpZmllciBh
bGdvcml0aG0sIEtleSBrZXksIHNlcXVlbmNlPENyeXB0b09wZXJhdGlvbkRhdGE+IGRhdGEpOwog
ICAgIFtDdXN0b21dIFByb21pc2UgdmVyaWZ5KEFsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGht
LCBLZXkga2V5LCBDcnlwdG9PcGVyYXRpb25EYXRhIHNpZ25hdHVyZSwgc2VxdWVuY2U8Q3J5cHRv
T3BlcmF0aW9uRGF0YT4gZGF0YSk7CiAgICAgW0N1c3RvbV0gUHJvbWlzZSBkaWdlc3QoQWxnb3Jp
dGhtSWRlbnRpZmllciBhbGdvcml0aG0sIHNlcXVlbmNlPENyeXB0b09wZXJhdGlvbkRhdGE+IGRh
dGEpOworICAgIFtDdXN0b21dIFByb21pc2UgZ2VuZXJhdGVLZXkoQWxnb3JpdGhtSWRlbnRpZmll
ciBhbGdvcml0aG0sIG9wdGlvbmFsIGJvb2xlYW4gZXh0cmFjdGFibGUsIG9wdGlvbmFsIEtleVVz
YWdlW10ga2V5VXNhZ2VzKTsKICAgICBbQ3VzdG9tXSBQcm9taXNlIGltcG9ydEtleShLZXlGb3Jt
YXQgZm9ybWF0LCBDcnlwdG9PcGVyYXRpb25EYXRhIGtleURhdGEsIEFsZ29yaXRobUlkZW50aWZp
ZXI/IGFsZ29yaXRobSwgb3B0aW9uYWwgYm9vbGVhbiBleHRyYWN0YWJsZSwgb3B0aW9uYWwgS2V5
VXNhZ2VbXSBrZXlVc2FnZXMpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwCShyZXZp
c2lvbiAxNTg1NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1BRVNfQ0JDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAj
aWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1BZXND
YmNQYXJhbXMuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1BZXNLZXlHZW5QYXJhbXMuaCIK
ICNpbmNsdWRlICJDcnlwdG9LZXlBRVMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAj
aW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCkBAIC01NSw2ICs1NSwxOSBAQCBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRoCiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0K
IAordm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9L
ZXlVc2FnZSB1c2FnZXMsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4gcHJvbWlzZSwg
RXhjZXB0aW9uQ29kZSYpCit7CisgICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzS2V5R2VuUGFy
YW1zJiBhZXNQYXJhbWV0ZXJzID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVz
S2V5R2VuUGFyYW1zJj4ocGFyYW1ldGVycyk7CisKKyAgICBSZWZQdHI8Q3J5cHRvS2V5QUVTPiBy
ZXN1bHQgPSBDcnlwdG9LZXlBRVM6OmdlbmVyYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OkFFU19DQkMsIGFlc1BhcmFtZXRlcnMubGVuZ3RoLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKKyAg
ICBpZiAoIXJlc3VsdCkgeworICAgICAgICBwcm9taXNlLT5yZWplY3QobnVsbHB0cik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBwcm9taXNlLT5mdWxmaWxsKHJlc3VsdC5yZWxlYXNl
KCkpOworfQorCiB2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmltcG9ydEtleShjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgQ3J5cHRvS2V5Rm9ybWF0IGZvcm1hdCwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNh
Z2UgdXNhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4gcHJvbWlzZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKGZvcm1hdCAhPSBDcnlwdG9LZXlGb3JtYXQ6OlJhdykg
ewpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
SE1BQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAJKHJldmlzaW9uIDE1ODU3OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAorI2lu
Y2x1ZGUgIkNyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9B
bGdvcml0aG1IbWFjUGFyYW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5SE1BQy5oIgogI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKQEAgLTU1LDYgKzU2LDE5IEBAIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGgKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCit2
b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdl
IHVzYWdlcywgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiBwcm9taXNlLCBFeGNlcHRp
b25Db2RlJikKK3sKKyAgICBjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zJiBobWFj
UGFyYW1ldGVycyA9IHN0YXRpY19jYXN0PGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJh
bXMmPihwYXJhbWV0ZXJzKTsKKworICAgIFJlZlB0cjxDcnlwdG9LZXlITUFDPiByZXN1bHQgPSBD
cnlwdG9LZXlITUFDOjpnZW5lcmF0ZShobWFjUGFyYW1ldGVycy5oYXNMZW5ndGggPyBobWFjUGFy
YW1ldGVycy5sZW5ndGggOiAwLCBobWFjUGFyYW1ldGVycy5oYXNoLCBleHRyYWN0YWJsZSwgdXNh
Z2VzKTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBwcm9taXNlLT5yZWplY3QobnVsbHB0
cik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBwcm9taXNlLT5mdWxmaWxsKHJlc3Vs
dC5yZWxlYXNlKCkpOworfQorCiB2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OmltcG9ydEtleShj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBDcnlwdG9LZXlGb3Jt
YXQgZm9ybWF0LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBib29sIGV4dHJhY3Rh
YmxlLCBDcnlwdG9LZXlVc2FnZSB1c2FnZSwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVy
PiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoZm9ybWF0ICE9IENyeXB0
b0tleUZvcm1hdDo6UmF3KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9Dcnlw
dG9LZXlITUFDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9D
cnlwdG9LZXlITUFDLmNwcAkocmV2aXNpb24gMTU4NTc5KQorKysgU291cmNlL1dlYkNvcmUvY3J5
cHRvL2tleXMvQ3J5cHRvS2V5SE1BQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDI3
IEBAIENyeXB0b0tleUhNQUM6On5DcnlwdG9LZXlITUFDKCkKIHsKIH0KIAorUGFzc1JlZlB0cjxD
cnlwdG9LZXlITUFDPiBDcnlwdG9LZXlITUFDOjpnZW5lcmF0ZShzaXplX3QgbGVuZ3RoQnl0ZXMs
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRv
S2V5VXNhZ2UgdXNhZ2VzKQoreworICAgIGlmICghbGVuZ3RoQnl0ZXMpIHsKKyAgICAgICAgc3dp
dGNoIChoYXNoKSB7CisgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hB
XzE6CisgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzIyNDoKKyAg
ICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjU2OgorICAgICAgICAg
ICAgbGVuZ3RoQnl0ZXMgPSA2NDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8zODQ6CisgICAgICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKKyAgICAgICAgICAgIGxlbmd0aEJ5dGVzID0gMTI4
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
Q3J5cHRvS2V5SE1BQyhyYW5kb21EYXRhKGxlbmd0aEJ5dGVzKSwgaGFzaCwgZXh0cmFjdGFibGUs
IHVzYWdlcykpOworfQorCiB2b2lkIENyeXB0b0tleUhNQUM6OmJ1aWxkQWxnb3JpdGhtRGVzY3Jp
cHRpb24oQ3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyJiBidWlsZGVyKSBjb25zdAog
ewogICAgIENyeXB0b0tleTo6YnVpbGRBbGdvcml0aG1EZXNjcmlwdGlvbihidWlsZGVyKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUhNQUMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlITUFDLmgJKHJldmlzaW9u
IDE1ODU3OSkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUhNQUMuaAko
d29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsOSBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1
YWwgfkNyeXB0b0tleUhNQUMoKTsKIAorICAgIC8vIElmIGxlbmd0aEJ5dGVzIGlzIDAsIGEgcmVj
b21tZW5kZWQgbGVuZ3RoIGlzIHVzZWQsIHdoaWNoIGlzIHRoZSBzaXplIG9mIHRoZSBhc3NvY2lh
dGVkIGhhc2ggZnVuY3Rpb24ncyBibG9jayBzaXplLgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENy
eXB0b0tleUhNQUM+IGdlbmVyYXRlKHNpemVfdCBsZW5ndGhCeXRlcywgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllciBoYXNoLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSk7CisKICAg
ICB2aXJ0dWFsIENyeXB0b0tleUNsYXNzIGtleUNsYXNzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gQ3J5cHRvS2V5Q2xhc3M6OkhNQUM7IH0KIAogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5
KCkgY29uc3QgeyByZXR1cm4gbV9rZXk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9t
YWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ01hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDTWFjLmNwcAkocmV2aXNpb24g
MTU4NTc5KQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNf
Q0JDTWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDEyICsxMTUsNiBAQCB2b2lkIENyeXB0
b0FsZ29yaXRobUFFU19DQkM6OmRlY3J5cHQoY29uCiAgICAgdHJhbnNmb3JtQUVTX0NCQyhrQ0NE
ZWNyeXB0LCBhZXNDQkNQYXJhbWV0ZXJzLCAqYWVzS2V5LCBkYXRhLCBzdGQ6Om1vdmUocHJvbWlz
ZSkpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmdlbmVyYXRlS2V5KGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBib29sIC8qZXh0cmFjdGFibGUqLywgQ3J5cHRv
S2V5VXNhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4sIEV4Y2VwdGlvbkNvZGUm
IGVjKQotewotICAgIC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQuCi0gICAgZWMgPSBOT1RfU1VQUE9S
VEVEX0VSUjsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KFNVQlRMRV9DUllQVE8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0Fs
Z29yaXRobUhNQUNNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9t
YWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHAJKHJldmlzaW9uIDE1ODU3OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNiwxMyArMTM2LDYgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjp2ZXJp
ZnkoY29uc3QgQwogICAgIHByb21pc2UtPmZ1bGZpbGwocmVzdWx0KTsKIH0KIAotdm9pZCBDcnlw
dG9BbGdvcml0aG1ITUFDOjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzJiwgYm9vbCAvKmV4dHJhY3RhYmxlKi8sIENyeXB0b0tleVVzYWdlLCBzdGQ6OnVuaXF1ZV9w
dHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICAvLyBOb3QgeWV0
IGltcGxlbWVudGVkLgotICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci19Ci0KLQogfQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8pCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTg1Nzkp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBA
QAorMjAxMy0xMS0wNCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAg
ICAgICBJbXBsZW1lbnQgZ2VuZXJhdGVLZXkgZm9yIEhNQUMgYW5kIEFFUy1DQkMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzY2OQorCisgICAgICAg
IFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCisKKyAgICAgICAgKiBjcnlwdG8vc3VidGxlL2Fl
cy1jYmMtZ2VuZXJhdGUta2V5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3J5cHRv
L3N1YnRsZS9hZXMtY2JjLWdlbmVyYXRlLWtleS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjcnlw
dG8vc3VidGxlL2htYWMtZ2VuZXJhdGUta2V5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogY3J5cHRvL3N1YnRsZS9obWFjLWdlbmVyYXRlLWtleS5odG1sOiBBZGRlZC4KKworICAgICAg
ICAqIGNyeXB0by9zdWJ0bGUvc2hhLTEtZXhwZWN0ZWQudHh0OiBOb3cgdGhhdCBjcnlwdG8ud2Vi
a2l0U3VidGxlLmdlbmVyYXRlS2V5IGV4aXN0cywKKyAgICAgICAgYSBkaWZmZXJlbnQgZXhjZXB0
aW9uIGlzIHJhaXNlZC4KKwogMjAxMy0xMS0wNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVl
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE1ODUyNi4K
SW5kZXg6IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWNiYy1nZW5lcmF0ZS1rZXktZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWNi
Yy1nZW5lcmF0ZS1rZXktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTg1MjYpCShmcm9tIExheW91
dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWNiYy1nZW5lcmF0ZS1rZXktZXhwZWN0ZWQudHh0OjE1
ODUyNikKKysrIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWNiYy1nZW5lcmF0ZS1rZXkt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK1Rlc3QgZ2VuZXJh
dGluZyBhbiBBRVMga2V5IHVzaW5nIEFFUy1DQkMgYWxnb3JpdGhtLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBjcnlwdG8uc3VidGxlLmdlbmVyYXRlS2V5KCJhZXMtY2Jj
IiwgZXh0cmFjdGFibGUsIFsiZW5jcnlwdCIsICJkZWNyeXB0Il0pIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIGNyeXB0by5zdWJ0bGUuZ2VuZXJhdGVLZXkoe25h
bWU6ICJhZXMtY2JjIn0sIGV4dHJhY3RhYmxlLCBbImVuY3J5cHQiLCAiZGVjcnlwdCJdKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBjcnlwdG8uc3VidGxlLmdl
bmVyYXRlS2V5KHtuYW1lOiAiYWVzLWNiYyIsIGxlbmd0aDogdW5kZWZpbmVkfSwgZXh0cmFjdGFi
bGUsIFsiZW5jcnlwdCIsICJkZWNyeXB0Il0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCitQQVNTIGNyeXB0by5zdWJ0bGUuZ2VuZXJhdGVLZXkoe25hbWU6ICJhZXMtY2Jj
IiwgbGVuZ3RoOiB7fX0sIGV4dHJhY3RhYmxlLCBbImVuY3J5cHQiLCAiZGVjcnlwdCJdKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorR2VuZXJhdGluZyBhIGtleS4uLgor
UEFTUyBrZXkudHlwZSBpcyAnc2VjcmV0JworUEFTUyBrZXkuZXh0cmFjdGFibGUgaXMgdHJ1ZQor
UEFTUyBrZXkuYWxnb3JpdGhtLm5hbWUgaXMgJ2Flcy1jYmMnCitQQVNTIGtleS5hbGdvcml0aG0u
bGVuZ3RoIGlzIDEyOAorUEFTUyBrZXkudXNhZ2VzIGlzIFsnZW5jcnlwdCcsICdkZWNyeXB0J10K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4
OiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1jYmMtZ2VuZXJhdGUta2V5Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWdlbmVyYXRlLWtl
eS5odG1sCShyZXZpc2lvbiAxNTg1MjYpCShmcm9tIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUv
YWVzLWNiYy1nZW5lcmF0ZS1rZXkuaHRtbDoxNTg1MjYpCisrKyBMYXlvdXRUZXN0cy9jcnlwdG8v
c3VidGxlL2Flcy1jYmMtZ2VuZXJhdGUta2V5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw0MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2NvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNj
cmlwdGlvbigiVGVzdCBnZW5lcmF0aW5nIGFuIEFFUyBrZXkgdXNpbmcgQUVTLUNCQyBhbGdvcml0
aG0uIik7CisKK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCitpZiAoIXdpbmRvdy5zdWJ0bGUpCisg
ICAgd2luZG93LmNyeXB0by5zdWJ0bGUgPSB3aW5kb3cuY3J5cHRvLndlYmtpdFN1YnRsZTsKKwor
dmFyIGV4dHJhY3RhYmxlID0gdHJ1ZTsKKworc2hvdWxkVGhyb3coJ2NyeXB0by5zdWJ0bGUuZ2Vu
ZXJhdGVLZXkoImFlcy1jYmMiLCBleHRyYWN0YWJsZSwgWyJlbmNyeXB0IiwgImRlY3J5cHQiXSkn
KTsKK3Nob3VsZFRocm93KCdjcnlwdG8uc3VidGxlLmdlbmVyYXRlS2V5KHtuYW1lOiAiYWVzLWNi
YyJ9LCBleHRyYWN0YWJsZSwgWyJlbmNyeXB0IiwgImRlY3J5cHQiXSknKTsKK3Nob3VsZFRocm93
KCdjcnlwdG8uc3VidGxlLmdlbmVyYXRlS2V5KHtuYW1lOiAiYWVzLWNiYyIsIGxlbmd0aDogdW5k
ZWZpbmVkfSwgZXh0cmFjdGFibGUsIFsiZW5jcnlwdCIsICJkZWNyeXB0Il0pJyk7CitzaG91bGRU
aHJvdygnY3J5cHRvLnN1YnRsZS5nZW5lcmF0ZUtleSh7bmFtZTogImFlcy1jYmMiLCBsZW5ndGg6
IHt9fSwgZXh0cmFjdGFibGUsIFsiZW5jcnlwdCIsICJkZWNyeXB0Il0pJyk7CisKK2RlYnVnKCJH
ZW5lcmF0aW5nIGEga2V5Li4uIik7CitjcnlwdG8uc3VidGxlLmdlbmVyYXRlS2V5KHtuYW1lOiAi
YWVzLWNiYyIsIGxlbmd0aDogMTI4fSwgZXh0cmFjdGFibGUsIFsiZW5jcnlwdCIsICJkZWNyeXB0
Il0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAga2V5ID0gcmVzdWx0OworCisgICAgc2hv
dWxkQmUoImtleS50eXBlIiwgIidzZWNyZXQnIik7CisgICAgc2hvdWxkQmUoImtleS5leHRyYWN0
YWJsZSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoImtleS5hbGdvcml0aG0ubmFtZSIsICInYWVz
LWNiYyciKTsKKyAgICBzaG91bGRCZSgia2V5LmFsZ29yaXRobS5sZW5ndGgiLCAiMTI4Iik7Cisg
ICAgc2hvdWxkQmUoImtleS51c2FnZXMiLCAiWydlbmNyeXB0JywgJ2RlY3J5cHQnXSIpOworCisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2htYWMtZ2VuZXJhdGUta2V5LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2htYWMtZ2VuZXJh
dGUta2V5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU4NTI2KQkoZnJvbSBMYXlvdXRUZXN0cy9j
cnlwdG8vc3VidGxlL2htYWMtZ2VuZXJhdGUta2V5LWV4cGVjdGVkLnR4dDoxNTg1MjYpCisrKyBM
YXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2htYWMtZ2VuZXJhdGUta2V5LWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI3IEBACitUZXN0IGdlbmVyYXRpbmcgYSBITUFDIGtl
eS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgY3J5cHRvLnN1YnRsZS5n
ZW5lcmF0ZUtleSgiaG1hYyIsIGV4dHJhY3RhYmxlLCBbInNpZ24iLCAidmVyaWZ5Il0pIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIGNyeXB0by5zdWJ0bGUuZ2Vu
ZXJhdGVLZXkoe25hbWU6ICJobWFjIn0sIGV4dHJhY3RhYmxlLCBbInNpZ24iLCAidmVyaWZ5Il0p
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24g
OS4KK1BBU1MgY3J5cHRvLnN1YnRsZS5nZW5lcmF0ZUtleSh7bmFtZTogImhtYWMiLCBsZW5ndGg6
IHVuZGVmaW5lZH0sIGV4dHJhY3RhYmxlLCBbInNpZ24iLCAidmVyaWZ5Il0pIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgY3J5
cHRvLnN1YnRsZS5nZW5lcmF0ZUtleSh7bmFtZTogImhtYWMiLCBsZW5ndGg6IHt9fSwgZXh0cmFj
dGFibGUsIFsic2lnbiIsICJ2ZXJpZnkiXSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOb3RTdXBw
b3J0ZWRFcnJvcjogRE9NIEV4Y2VwdGlvbiA5LgorCitHZW5lcmF0aW5nIGEga2V5IHdpdGggZGVm
YXVsdCBsZW5ndGguLi4KK1BBU1Mga2V5LnR5cGUgaXMgJ3NlY3JldCcKK1BBU1Mga2V5LmV4dHJh
Y3RhYmxlIGlzIHRydWUKK1BBU1Mga2V5LmFsZ29yaXRobS5uYW1lIGlzICdobWFjJworUEFTUyBr
ZXkuYWxnb3JpdGhtLmxlbmd0aCBpcyA2NAorUEFTUyBrZXkudXNhZ2VzIGlzIFsic2lnbiIsICJ2
ZXJpZnkiXQorCitHZW5lcmF0aW5nIGEga2V5IHdpdGggY3VzdG9tIGxlbmd0aC4uLgorUEFTUyBr
ZXkudHlwZSBpcyAnc2VjcmV0JworUEFTUyBrZXkuZXh0cmFjdGFibGUgaXMgdHJ1ZQorUEFTUyBr
ZXkuYWxnb3JpdGhtLm5hbWUgaXMgJ2htYWMnCitQQVNTIGtleS5hbGdvcml0aG0ubGVuZ3RoIGlz
IDUKK1BBU1Mga2V5LnVzYWdlcyBpcyBbInNpZ24iXQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2NyeXB0by9zdWJ0
bGUvaG1hYy1nZW5lcmF0ZS1rZXkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jcnlw
dG8vc3VidGxlL2htYWMtZ2VuZXJhdGUta2V5Lmh0bWwJKHJldmlzaW9uIDE1ODUyNikJKGZyb20g
TGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9obWFjLWdlbmVyYXRlLWtleS5odG1sOjE1ODUyNikK
KysrIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvaG1hYy1nZW5lcmF0ZS1rZXkuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY29tbW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0IGdlbmVyYXRpbmcgYSBITUFDIGtleS4i
KTsKKworanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2lmICghd2luZG93LnN1YnRsZSkKKyAgICB3
aW5kb3cuY3J5cHRvLnN1YnRsZSA9IHdpbmRvdy5jcnlwdG8ud2Via2l0U3VidGxlOworCit2YXIg
ZXh0cmFjdGFibGUgPSB0cnVlOworCitzaG91bGRUaHJvdygnY3J5cHRvLnN1YnRsZS5nZW5lcmF0
ZUtleSgiaG1hYyIsIGV4dHJhY3RhYmxlLCBbInNpZ24iLCAidmVyaWZ5Il0pJyk7CitzaG91bGRU
aHJvdygnY3J5cHRvLnN1YnRsZS5nZW5lcmF0ZUtleSh7bmFtZTogImhtYWMifSwgZXh0cmFjdGFi
bGUsIFsic2lnbiIsICJ2ZXJpZnkiXSknKTsKK3Nob3VsZFRocm93KCdjcnlwdG8uc3VidGxlLmdl
bmVyYXRlS2V5KHtuYW1lOiAiaG1hYyIsIGxlbmd0aDogdW5kZWZpbmVkfSwgZXh0cmFjdGFibGUs
IFsic2lnbiIsICJ2ZXJpZnkiXSknKTsKK3Nob3VsZFRocm93KCdjcnlwdG8uc3VidGxlLmdlbmVy
YXRlS2V5KHtuYW1lOiAiaG1hYyIsIGxlbmd0aDoge319LCBleHRyYWN0YWJsZSwgWyJzaWduIiwg
InZlcmlmeSJdKScpOworCitkZWJ1ZygiXG5HZW5lcmF0aW5nIGEga2V5IHdpdGggZGVmYXVsdCBs
ZW5ndGguLi4iKTsKK2NyeXB0by5zdWJ0bGUuZ2VuZXJhdGVLZXkoe25hbWU6ICJobWFjIiwgaGFz
aDogInNoYS0xIn0sIGV4dHJhY3RhYmxlLCBbInNpZ24iLCAidmVyaWZ5Il0pLnRoZW4oZnVuY3Rp
b24ocmVzdWx0KSB7CisgICAga2V5ID0gcmVzdWx0OworCisgICAgc2hvdWxkQmUoImtleS50eXBl
IiwgIidzZWNyZXQnIik7CisgICAgc2hvdWxkQmUoImtleS5leHRyYWN0YWJsZSIsICJ0cnVlIik7
CisgICAgc2hvdWxkQmUoImtleS5hbGdvcml0aG0ubmFtZSIsICInaG1hYyciKTsKKyAgICBzaG91
bGRCZSgia2V5LmFsZ29yaXRobS5sZW5ndGgiLCAiNjQiKTsKKyAgICBzaG91bGRCZSgia2V5LnVz
YWdlcyIsICdbInNpZ24iLCAidmVyaWZ5Il0nKTsKKworICAgIGRlYnVnKCJcbkdlbmVyYXRpbmcg
YSBrZXkgd2l0aCBjdXN0b20gbGVuZ3RoLi4uIik7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUu
Z2VuZXJhdGVLZXkoe25hbWU6ICJobWFjIiwgaGFzaDogInNoYS0xIiwgbGVuZ3RoOiA1fSwgZXh0
cmFjdGFibGUsIFsic2lnbiJdKTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAga2V5
ID0gcmVzdWx0OworCisgICAgc2hvdWxkQmUoImtleS50eXBlIiwgIidzZWNyZXQnIik7CisgICAg
c2hvdWxkQmUoImtleS5leHRyYWN0YWJsZSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoImtleS5h
bGdvcml0aG0ubmFtZSIsICInaG1hYyciKTsKKyAgICBzaG91bGRCZSgia2V5LmFsZ29yaXRobS5s
ZW5ndGgiLCAiNSIpOworICAgIHNob3VsZEJlKCJrZXkudXNhZ2VzIiwgJ1sic2lnbiJdJyk7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3NoYS0xLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3NoYS0xLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMTU4NTc5KQorKysgTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9zaGEtMS1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExLDcgKzExLDcgQEAgU0hBMSBvZiBbMCwgMSwgMiwg
MywgNCwgNSwgNiwgNywgOCwgOSwgMQogICAgID0gWzJjIDdlIDdjIDM4IDRmIDc4IDI5IDY5IDQy
IDgyIGIxIGUzIGE2IDIxIDZkIGVmIDgwIDgyIGQwIDU1XQogU0hBMSBvZiBbbmV3IFVpbnQ4QXJy
YXkoWzAsIDEsIDIsIDMsIDRdKSwgbmV3IFVpbnQ4QXJyYXkoNSwgNiwgNywgOCwgOSwgMTBdKV0K
ICAgICA9IFsyYyA3ZSA3YyAzOCA0ZiA3OCAyOSA2OSA0MiA4MiBiMSBlMyBhNiAyMSA2ZCBlZiA4
MCA4MiBkMCA1NV0KLVBBU1MgY3J5cHRvLnN1YnRsZS5nZW5lcmF0ZUtleSgnc2hhLTEnKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGEgZnVuY3Rpb24gKGV2YWx1
YXRpbmcgJ2NyeXB0by5zdWJ0bGUuZ2VuZXJhdGVLZXkoJ3NoYS0xJyknKS4KK1BBU1MgY3J5cHRv
LnN1YnRsZS5nZW5lcmF0ZUtleSgnc2hhLTEnKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5vdFN1
cHBvcnRlZEVycm9yOiBET00gRXhjZXB0aW9uIDkuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCiAKIFRFU1QgQ09NUExFVEUK
</data>
<flag name="commit-queue"
          id="238798"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>