<?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>125084</bug_id>
          
          <creation_ts>2013-12-02 11:14:01 -0800</creation_ts>
          <short_desc>Add support for WebCrypto RSA-OAEP</short_desc>
          <delta_ts>2013-12-02 12:26:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>122679</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>955467</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-12-02 11:14:01 -0800</bug_when>
    <thetext>This is for encrypting small chunks of data (primarily other keys) with RSA.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955475</commentid>
    <comment_count>1</comment_count>
      <attachid>218197</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-12-02 11:21:18 -0800</bug_when>
    <thetext>Created attachment 218197
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955476</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-02 11:21:59 -0800</bug_when>
    <thetext>Attachment 218197 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/rsa-oaep-key-manipulation-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/rsa-oaep-key-manipulation.html&apos;, u&apos;LayoutTests/crypto/subtle/rsa-oaep-plaintext-length-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/rsa-oaep-plaintext-length.html&apos;, u&apos;LayoutTests/crypto/subtle/rsa-oaep-wrap-unwrap-aes-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/rsa-oaep-wrap-unwrap-aes.html&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/JSCryptoKeySerializationJWK.cpp&apos;, u&apos;Source/WebCore/crypto/CommonCryptoUtilities.cpp&apos;, u&apos;Source/WebCore/crypto/CommonCryptoUtilities.h&apos;, u&apos;Source/WebCore/crypto/CryptoAlgorithmParameters.h&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.h&apos;, u&apos;Source/WebCore/crypto/mac/CryptoAlgorithmHMACMac.cpp&apos;, u&apos;Source/WebCore/crypto/mac/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp&apos;, u&apos;Source/WebCore/crypto/mac/CryptoAlgorithmRSA_OAEPMac.cpp&apos;, u&apos;Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp&apos;, u&apos;Source/WebCore/crypto/mac/CryptoKeyMac.cpp&apos;, u&apos;Source/WebCore/crypto/mac/CryptoKeyRSAMac.cpp&apos;, u&apos;Source/WebCore/crypto/parameters/CryptoAlgorithmRsaOaepParams.h&apos;]&quot; exit_code: 1
Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:40:  CryptoAlgorithmRSA_OAEP::s_name is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:50:  CryptoAlgorithmRSA_OAEP::create is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:55:  CryptoAlgorithmRSA_OAEP::identifier is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:60:  CryptoAlgorithmRSA_OAEP::keyAlgorithmMatches is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:73:  CryptoAlgorithmRSA_OAEP::encrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:85:  CryptoAlgorithmRSA_OAEP::decrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:97:  CryptoAlgorithmRSA_OAEP::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:101:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:108:  CryptoAlgorithmRSA_OAEP::importKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/crypto/mac/CryptoAlgorithmRSA_OAEPMac.cpp:38:  CryptoAlgorithmRSA_OAEP::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/crypto/mac/CryptoAlgorithmRSA_OAEPMac.cpp:59:  CryptoAlgorithmRSA_OAEP::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/crypto/CommonCryptoUtilities.h:34:  Missing spaces around /  [whitespace/operators] [3]
Source/WebCore/crypto/CommonCryptoUtilities.h:40:  Missing spaces around /  [whitespace/operators] [3]
Source/WebCore/crypto/CommonCryptoUtilities.h:47:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/crypto/CommonCryptoUtilities.h:48:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/crypto/CommonCryptoUtilities.h:49:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/crypto/CommonCryptoUtilities.h:50:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/crypto/CommonCryptoUtilities.h:51:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/crypto/CommonCryptoUtilities.h:56:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/crypto/CommonCryptoUtilities.h:57:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/crypto/CommonCryptoUtilities.h:62:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/crypto/CommonCryptoUtilities.h:63:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/crypto/CommonCryptoUtilities.h:68:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 23 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>955497</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-12-02 11:48:16 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r159944&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955513</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-12-02 12:02:52 -0800</bug_when>
    <thetext>Build fix in &lt;http://trac.webkit.org/r159949&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955517</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-12-02 12:26:25 -0800</bug_when>
    <thetext>More build fix in &lt;http://trac.webkit.org/r159951&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218197</attachid>
            <date>2013-12-02 11:21:18 -0800</date>
            <delta_ts>2013-12-02 11:44:04 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>RSA-OAEP.txt</filename>
            <type>text/plain</type>
            <size>70985</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1OTk0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDEzLTEyLTAyICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBX
ZWJDcnlwdG8gUlNBLU9BRVAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNTA4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRlc3RzOiBjcnlwdG8vc3VidGxlL3JzYS1vYWVwLWtleS1tYW5pcHVsYXRpb24u
aHRtbAorICAgICAgICAgICAgICAgY3J5cHRvL3N1YnRsZS9yc2Etb2FlcC1wbGFpbnRleHQtbGVu
Z3RoLmh0bWwKKyAgICAgICAgICAgICAgIGNyeXB0by9zdWJ0bGUvcnNhLW9hZXAtd3JhcC11bndy
YXAtYWVzLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajogQWRkZWQgbmV3IGZpbGVzLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9BbGdv
cml0aG1EaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJzYU9hZXBQYXJh
bXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5OjpjcmVh
dGVQYXJhbWV0ZXJzRm9yRW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpKU0NyeXB0b0FsZ29y
aXRobURpY3Rpb25hcnk6OmNyZWF0ZVBhcmFtZXRlcnNGb3JEZWNyeXB0KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeTo6Y3JlYXRlUGFyYW1ldGVyc0Zvcklt
cG9ydEtleSk6CisgICAgICAgIEFkZGVkIFJTQS1PQUVQIHBhcmFtZXRlcnMuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpyZWNvbmNpbGVBbGdvcml0aG0p
OgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjprZXlTaXpl
SXNWYWxpZCk6CisgICAgICAgIChXZWJDb3JlOjpKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6
OmFkZEpXS0FsZ29yaXRobVRvSlNPTik6CisgICAgICAgIFN1cHBvcnQgUlNBLU9BRVAgaW4gSldL
LiBJdCBpcyBtb3JlIGxpbWl0ZWQgdGhhbiBnZW5lcmFsIFdlYkNyeXB0bywgYXMgSldLIG9ubHkK
KyAgICAgICAgYWxsb3dzIFNIQS0xIGFzIGhhc2guCisKKyAgICAgICAgKiBjcnlwdG8vQ29tbW9u
Q3J5cHRvVXRpbGl0aWVzLmNwcDogQWRkZWQuIChXZWJDb3JlOjpnZXRDb21tb25DcnlwdG9EaWdl
c3RBbGdvcml0aG0pOgorICAgICAgICAqIGNyeXB0by9Db21tb25DcnlwdG9VdGlsaXRpZXMuaDog
QWRkZWQuCisgICAgICAgIEV4dHJhY3RlZCBzb21lIHNoYXJlZCBjb2RlIGFuZCBmb3J3YXJkIGRl
Y2xhcmF0aW9ucyBmb3IgQ29tbW9uQ3J5cHRvLgorCisgICAgICAgICogY3J5cHRvL0NyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnMuaDogKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM6
OkNsYXNzKToKKyAgICAgICAgKiBjcnlwdG8vcGFyYW1ldGVycy9DcnlwdG9BbGdvcml0aG1Sc2FP
YWVwUGFyYW1zLmg6IEFkZGVkLgorICAgICAgICBBZGRlZCBSc2FPYWVwUGFyYW1zLgorCisgICAg
ICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5o
OiBBZGRlZC4KKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQTWFj
LmNwcDogQWRkZWQuCisKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhNQUNN
YWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobSk6
CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVNpZ24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1WZXJpZnkpOgor
ICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMu
Y3BwOgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvS2V5TWFjLmNwcDoKKyAgICAgICAgKiBj
cnlwdG8vbWFjL0NyeXB0b0tleVJTQU1hYy5jcHA6CisgICAgICAgIFVzZSBDb21tb25DcnlwdG9V
dGlsaXRpZXMuCisKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5
TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpwbGF0
Zm9ybVJlZ2lzdGVyQWxnb3JpdGhtcyk6IFJlZ2lzdGVyIFJTQS1PQUVQLgorCiAyMDEzLTEyLTAy
ICBBbmRyZXMgR29tZXogIDxhZ29tZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBGYWls
cyB0byBidWlsZCB3aXRoIGZyZWV0eXBlIDIuNS4xCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTk3MTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTU3MjMsNiArNTcyMywxMiBAQAogCQlFMUY4MEI4RTE4MzE3MkI1MDA3ODg1
QzMgLyogSlNDcnlwdG9LZXlQYWlyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMUY4MEI4QzE4MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWly
LmggKi87IH07CiAJCUUxRkUxMzY0MTgzNDM1MTEwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3RNYWMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRTEz
NjIxODM0MzUxMTAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdE1hYy5jcHAgKi87IH07CiAJCUUxRkUx
MzY3MTgzNDNBMTAwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkUxMzY2MTgzNDNBMTAwMDg5MkYxMyAvKiBD
cnlwdG9EaWdlc3QuaCAqLzsgfTsKKwkJRTFGRTEzNkExODNGRTFBQjAwODkyRjEzIC8qIENyeXB0
b0FsZ29yaXRobVJTQV9PQUVQLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxRkUxMzY4MTgzRkUxQUIwMDg5MkYxMyAvKiBDcnlwdG9BbGdvcml0aG1S
U0FfT0FFUC5jcHAgKi87IH07CisJCUUxRkUxMzZCMTgzRkUxQUIwMDg5MkYxMyAvKiBDcnlwdG9B
bGdvcml0aG1SU0FfT0FFUC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTFGRTEzNjkxODNGRTFBQjAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9P
QUVQLmggKi87IH07CisJCUUxRkUxMzZEMTgzRkUyMUQwMDg5MkYxMyAvKiBDcnlwdG9BbGdvcml0
aG1Sc2FPYWVwUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMUZFMTM2QzE4M0ZFMjFEMDA4OTJGMTMgLyogQ3J5cHRvQWxnb3JpdGhtUnNhT2Fl
cFBhcmFtcy5oICovOyB9OworCQlFMUZFMTM3MDE4M0ZFQ0YwMDA4OTJGMTMgLyogQ3J5cHRvQWxn
b3JpdGhtUlNBX09BRVBNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTFGRTEzNkUxODNGRUNGMDAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobVJT
QV9PQUVQTWFjLmNwcCAqLzsgfTsKKwkJRTFGRTEzNzQxODQwMkE2NzAwODkyRjEzIC8qIENvbW1v
bkNyeXB0b1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMUZFMTM3MjE4NDAyQTY3MDA4OTJGMTMgLyogQ29tbW9uQ3J5cHRvVXRpbGl0
aWVzLmNwcCAqLzsgfTsKKwkJRTFGRTEzNzUxODQwMkE2NzAwODkyRjEzIC8qIENvbW1vbkNyeXB0
b1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTFGRTEzNzMxODQwMkE2NzAwODkyRjEzIC8qIENvbW1vbkNyeXB0b1V0aWxpdGllcy5oICov
OyB9OwogCQlFMUZGNTdBMzBGMDEyNTVCMDA4OTFFQkIgLyogVGhyZWFkR2xvYmFsRGF0YS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRjU3QTIwRjAx
MjU1QjAwODkxRUJCIC8qIFRocmVhZEdsb2JhbERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMUZGNTdBNjBGMDEyNTZCMDA4OTFFQkIgLyog
VGhyZWFkR2xvYmFsRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMUZGNTdBNTBGMDEyNTZCMDA4OTFFQkIgLyogVGhyZWFkR2xvYmFsRGF0YS5j
cHAgKi87IH07CiAJCUUxRkY4RjVGMTgwNzQ0MjEwMDEzMjY3NCAvKiBTdWJ0bGVDcnlwdG8uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRjhGNUQx
ODA3NDQyMTAwMTMyNjc0IC8qIFN1YnRsZUNyeXB0by5jcHAgKi87IH07CkBAIC0xMjgzNCw2ICsx
Mjg0MCwxMiBAQAogCQlFMUY4MEI4QzE4MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWly
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3J5cHRvS2V5UGFpci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUZFMTM2MjE4MzQzNTExMDA4OTJGMTMgLyog
Q3J5cHRvRGlnZXN0TWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IENyeXB0b0RpZ2VzdE1hYy5jcHA7IHBhdGggPSBtYWMvQ3J5cHRvRGlnZXN0TWFjLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFGRTEzNjYxODM0M0ExMDAwODkyRjEzIC8qIENy
eXB0b0RpZ2VzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9EaWdl
c3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFGRTEzNjgxODNGRTFBQjAwODky
RjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTFGRTEzNjkxODNGRTFBQjAwODkyRjEzIC8qIENyeXB0b0FsZ29y
aXRobVJTQV9PQUVQLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0Fs
Z29yaXRobVJTQV9PQUVQLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxRkUxMzZD
MTgzRkUyMUQwMDg5MkYxMyAvKiBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXMu
aDsgcGF0aCA9IHBhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMUZFMTM2RTE4M0ZFQ0YwMDA4OTJGMTMgLyogQ3J5
cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3BwOyBwYXRoID0gbWFjL0NyeXB0
b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTFGRTEzNzIxODQwMkE2NzAwODkyRjEzIC8qIENvbW1vbkNyeXB0b1V0aWxpdGllcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21tb25DcnlwdG9VdGlsaXRpZXMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMUZFMTM3MzE4NDAyQTY3MDA4OTJG
MTMgLyogQ29tbW9uQ3J5cHRvVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENvbW1vbkNyeXB0b1V0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMUZGNTdBMjBGMDEyNTVCMDA4OTFFQkIgLyogVGhyZWFkR2xvYmFsRGF0YS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRHbG9iYWxEYXRhLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRkY1N0E1MEYwMTI1NkIwMDg5MUVCQiAvKiBUaHJlYWRH
bG9iYWxEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocmVh
ZEdsb2JhbERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUZGOEY1QzE4
MDczNjRCMDAxMzI2NzQgLyogU3VidGxlQ3J5cHRvLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTdWJ0bGVDcnlwdG8uaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAzNzQsMTAgKzIwMzg2LDEzIEBACiAJ
CUUxNzJBRjcxMTgwRjM0MzQwMEZCQURCOSAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUUxRkUxMzcyMTg0MDJBNjcwMDg5MkYxMyAvKiBDb21t
b25DcnlwdG9VdGlsaXRpZXMuY3BwICovLAorCQkJCUUxRkUxMzczMTg0MDJBNjcwMDg5MkYxMyAv
KiBDb21tb25DcnlwdG9VdGlsaXRpZXMuaCAqLywKIAkJCQlFMTI1Rjg0MzE4MjQyNUM5MDBEODRD
RDkgLyogQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ01hYy5jcHAgKi8sCiAJCQkJRTEyNUY4MzcxODIy
RjFFQjAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobUhNQUNNYWMuY3BwICovLAogCQkJCUUxQkI4
NEFDMTgyMkNBNzQwMDUyNTA0MyAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeU1hYy5jcHAgKi8s
CiAJCQkJRTFDMjY2RDYxODMxN0FCNDAwM0Y4QjMzIC8qIENyeXB0b0FsZ29yaXRobVJTQVNTQV9Q
S0NTMV92MV81TWFjLmNwcCAqLywKKwkJCQlFMUZFMTM2RTE4M0ZFQ0YwMDA4OTJGMTMgLyogQ3J5
cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3BwICovLAogCQkJCUUxOUFDM0Y4MTgyNTY2RjcwMDM0
OTQyNiAvKiBDcnlwdG9LZXlNYWMuY3BwICovLAogCQkJCUUxNjRGQUE0MTgzMTVFMUEwMERCNEU2
MSAvKiBDcnlwdG9LZXlSU0FNYWMuY3BwICovLAogCQkJCUUxRkUxMzYyMTgzNDM1MTEwMDg5MkYx
MyAvKiBDcnlwdG9EaWdlc3RNYWMuY3BwICovLApAQCAtMjAzOTIsNiArMjA0MDcsOCBAQAogCQkJ
CUUxMjVGODQwMTgyNDI1M0EwMEQ4NENEOSAvKiBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmggKi8s
CiAJCQkJRTEyNUY4MkYxODIyRjExQjAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobUhNQUMuY3Bw
ICovLAogCQkJCUUxMjVGODMwMTgyMkYxMUIwMEQ4NENEOSAvKiBDcnlwdG9BbGdvcml0aG1ITUFD
LmggKi8sCisJCQkJRTFGRTEzNjgxODNGRTFBQjAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobVJT
QV9PQUVQLmNwcCAqLywKKwkJCQlFMUZFMTM2OTE4M0ZFMUFCMDA4OTJGMTMgLyogQ3J5cHRvQWxn
b3JpdGhtUlNBX09BRVAuaCAqLywKIAkJCQlFMUJEMzMxNzE4MkQ4REREMDBDMDVEOUYgLyogQ3J5
cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3BwICovLAogCQkJCUUxQkQzMzE4MTgyRDhE
REQwMEMwNUQ5RiAvKiBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5oICovLAogCQkJ
CUUxMjVGODI5MTgyMkNGRUMwMEQ4NENEOSAvKiBDcnlwdG9BbGdvcml0aG1TSEExLmNwcCAqLywK
QEAgLTIyNDA2LDYgKzIyNDIzLDcgQEAKIAkJCQkxQzRDOEYwMjBBRDg1RDg3MDA5NDc1Q0UgLyog
RGVsZXRlQnV0dG9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlEREYwOTlF
NjQ5MjAwNTZFNTgxIC8qIERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTA3QzU5QjY0MTdGNEQxQzQwMDBGQkNCQiAvKiBNb2NrTWVkaWFTdHJlYW1DZW50ZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCUUxRkUxMzZCMTgzRkUxQUIwMDg5MkYxMyAvKiBDcnlwdG9B
bGdvcml0aG1SU0FfT0FFUC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlERTEwOTlFNjQ5MjAw
NTZFNTgxIC8qIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZE
MTY2MEE1MTM3ODdDNkQwMDFGRkE3QiAvKiBEZW5vcm1hbERpc2FibGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMTAwRUU3NjE1NDZFQUMxMDBCQTExRDEgLyogRGVwcmVjYXRlZFN0eWxlQnVpbGRl
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjU1NSw2ICsyMjU3Myw3IEBACiAJCQkJQkMwMEYwMDkw
RTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGVMaXN0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJFRDYwOUJEMTE0NUIwNzEwMEM4Njg0RSAvKiBET01Gb3JtRGF0YS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxQTM3QjYwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTUhUTUwuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUUxRkUxMzc1MTg0MDJBNjcwMDg5MkYxMyAvKiBDb21tb25DcnlwdG9VdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1REY4MTI3MEFBNzc4NzIwMDQ4NkFENyAvKiBET01I
VE1MQW5jaG9yRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjU5NUZGNDcxODI0Q0VFMzAw
RkY1MUNEIC8qIFJlbmRlckl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUU3MTE5QjBB
QzVENTM1MDA1MzI3MEYgLyogRE9NSFRNTEFuY2hvckVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yMzY3NCw2ICsyMzY5Myw3IEBACiAJCQkJRTE5QUMzRUYxODI0REM3OTAwMzQ5
NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTIyNC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5
MkIxN0QxNEQxQzAwNDIwQUExIC8qIFJUQ1N0YXRzUmVxdWVzdEltcGwuaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyNjZDRDRFMEMzQUVDNjUwMEVCMDhEMiAvKiBKU1NWR0V4Y2VwdGlvbi5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRTFGRTEzNkQxODNGRTIxRDAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRo
bVJzYU9hZXBQYXJhbXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDZCMEFCNzVBNkYwMDBF
NUFDNCAvKiBKU1NWR0ZFQmxlbmRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2
RDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjJGQTNENkYwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVDb21wb25lbnRU
cmFuc2ZlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjY2NzksNiArMjY2OTksNyBAQAog
CQkJCTE0MDNCQTBDMDlFQjE4QzcwMDc5N0M3RiAvKiBKU0RPTVdpbmRvdy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQzY5MzI3MzBEN0UyOTM5MDBBRTQ0RDEgLyogSlNET01XaW5kb3dCYXNlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDRDlDMjYyMEMxN0FBNjcwMDVDOTBBMiAvKiBKU0RPTVdp
bmRvd0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMUZFMTM2QTE4M0ZFMUFCMDA4OTJG
MTMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNC
RkI1M0MwRENEMjlDRjAwMTlCM0U1IC8qIEpTRE9NV2luZG93U2hlbGwuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRkQ3ODY4QjkxMzZCOTk5MjAwRDQwM0RGIC8qIEpTRHluYW1pY3NDb21wcmVzc29y
Tm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NURGMzFGOTA5RDFDQzYwMDAwQkUzMjUgLyog
SlNFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjgxMjQsNiArMjgxNDUsNyBAQAogCQkJ
CTFGQUZCRjE4MTVBNUZBNkUwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMubW0gaW4gU291cmNlcyAq
LywKIAkJCQkyRTNCQkYwNzExNjJEQTExMDBCOTQwOUEgLyogVVVJRC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MEQzMjg1NzE2M0IzMTNGMDAxNjExMUUgLyogVmFsaWRhdGVkQ3VzdG9tRmlsdGVy
T3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUxRkUxMzc0MTg0MDJBNjcwMDg5MkYx
MyAvKiBDb21tb25DcnlwdG9VdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjVBMTU0
MjcxMjc5NTM0RDAwRDBCMEMwIC8qIFZhbGlkYXRpb25NZXNzYWdlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUZEMzE2MEFFMTJCMDI2RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRoLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJFODhFMERFMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMjgxNjcsNiArMjgxODksNyBAQAogCQkJCTAxRDNDRjg0MTRCRDBB
MzAwMEZFOTk3MCAvKiBXZWJHTENvbnRleHRPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTBFRTBERjUxNDRGODI1NTAwRjgwQjBEIC8qIFdlYkdMRGVidWdSZW5kZXJlckluZm8uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTBFRTBERjcxNDRGODI1NTAwRjgwQjBEIC8qIFdlYkdMRGVidWdT
aGFkZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUxRkUxMzcwMTgzRkVDRjAwMDg5MkYxMyAv
KiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2RTNG
QUU4RTE0NzMzRkRCMDBFNDIzMDcgLyogV2ViR0xEZXB0aFRleHR1cmUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNkVCRjBFNTQxMkE4OTI5ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQ5QzdCOUNFMTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTEZyYW1l
YnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwCShyZXZp
c2lvbiAxNTk3MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29y
aXRobURpY3Rpb25hcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5j
bHVkZSAiQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0
aG1Sc2FLZXlHZW5QYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Sc2FLZXlQYXJh
bXNXaXRoSGFzaC5oIgorI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXMuaCIK
ICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJhbXMuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSlNDcnlwdG9PcGVyYXRpb25EYXRhLmgiCkBAIC0yNDQs
NiArMjQ1LDQwIEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGEKICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FLZXlQYXJhbXNXaXRo
SGFzaD4oKTsKIH0KIAorc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzPiBjcmVhdGVSc2FPYWVwUGFyYW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1
ZSkKK3sKKyAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYyk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIEpTRGljdGlv
bmFyeSBqc0RpY3Rpb25hcnkoZXhlYywgdmFsdWUuZ2V0T2JqZWN0KCkpOworICAgIGF1dG8gcmVz
dWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPigpOwor
CisgICAgaWYgKCFnZXRIYXNoQWxnb3JpdGhtKGpzRGljdGlvbmFyeSwgcmVzdWx0LT5oYXNoKSkg
eworICAgICAgICBBU1NFUlQoZXhlYy0+aGFkRXhjZXB0aW9uKCkpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisKKyAgICBKU1ZhbHVlIGxhYmVsVmFsdWUgPSBnZXRQcm9wZXJ0eShl
eGVjLCB2YWx1ZS5nZXRPYmplY3QoKSwgImxhYmVsIik7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJlc3VsdC0+aGFzTGFiZWwg
PSAhbGFiZWxWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOworICAgIGlmICghcmVzdWx0LT5oYXNM
YWJlbCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bW92ZShyZXN1bHQpOworCisgICAgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSBsYWJlbERhdGE7CisgICAgaWYgKCFjcnlwdG9PcGVyYXRpb25EYXRhRnJvbUpT
VmFsdWUoZXhlYywgbGFiZWxWYWx1ZSwgbGFiZWxEYXRhKSkgeworICAgICAgICBBU1NFUlQoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAg
ICByZXN1bHQtPmxhYmVsLmFwcGVuZChsYWJlbERhdGEuZmlyc3QsIGxhYmVsRGF0YS5zZWNvbmQp
OworCisgICAgcmV0dXJuIHN0ZDo6bW92ZShyZXN1bHQpOworfQorCiBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IGNyZWF0ZVJzYVNzYVBhcmFtcyhFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgp
KSB7CkBAIC0yNjgsNyArMzAzLDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXIKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQUVTX1BLQ1Mx
X3YxXzU6CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FTU0FfUEtDUzFf
djFfNToKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQV9QU1M6CisgICAg
ICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBOT1RfU1VQUE9SVEVEX0VSUik7CisgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX09B
RVA6CisgICAgICAgIHJldHVybiBjcmVhdGVSc2FPYWVwUGFyYW1zKGV4ZWMsIHZhbHVlKTsKICAg
ICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDRFNBOgogICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6RUNESDoKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OkFFU19DVFI6CkBAIC0zMDAsNyArMzM4LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXIKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlJTQUVTX1BLQ1MxX3YxXzU6CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpS
U0FTU0FfUEtDUzFfdjFfNToKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJT
QV9QU1M6CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBOT1RfU1VQUE9SVEVEX0VSUik7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6UlNBX09BRVA6CisgICAgICAgIHJldHVybiBjcmVhdGVSc2FPYWVwUGFyYW1zKGV4ZWMs
IHZhbHVlKTsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDRFNBOgogICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNESDoKICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OkFFU19DVFI6CkBAIC01MjgsNyArNTY5LDkgQEAgc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcgogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6UlNBU1NBX1BLQ1MxX3YxXzU6CiAgICAgICAgIHJldHVybiBjcmVhdGVSc2FL
ZXlQYXJhbXNXaXRoSGFzaChleGVjLCB2YWx1ZSk7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpSU0FfUFNTOgorICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPigpOwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6UlNBX09BRVA6CisgICAgICAgIHJldHVybiBjcmVhdGVSc2FLZXlQYXJhbXNXaXRoSGFz
aChleGVjLCB2YWx1ZSk7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RT
QToKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDREg6CiAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ1RSOgpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0su
Y3BwCShyZXZpc2lvbiAxNTk3MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Ny
eXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsNiArMTkw
LDkgQEAgYm9vbCBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnJlY29uYwogICAgIH0gZWxz
ZSBpZiAobV9qd2tBbGdvcml0aG1OYW1lID09ICJSUzUxMiIpIHsKICAgICAgICAgYWxnb3JpdGht
ID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnNoYXJlZCgpLmNyZWF0ZShDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpSU0FTU0FfUEtDUzFfdjFfNSk7CiAgICAgICAgIHBhcmFtZXRlcnMgPSBj
cmVhdGVSU0FLZXlQYXJhbWV0ZXJzV2l0aEhhc2goQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
U0hBXzUxMik7CisgICAgfSBlbHNlIGlmIChtX2p3a0FsZ29yaXRobU5hbWUgPT0gIlJTQS1PQUVQ
IikgeworICAgICAgICBhbGdvcml0aG0gPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2hhcmVk
KCkuY3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQV9PQUVQKTsKKyAgICAgICAg
cGFyYW1ldGVycyA9IGNyZWF0ZVJTQUtleVBhcmFtZXRlcnNXaXRoSGFzaChDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpTSEFfMSk7CiAgICAgfSBlbHNlIGlmIChtX2p3a0FsZ29yaXRobU5hbWUg
PT0gIkExMjhDQkMiKSB7CiAgICAgICAgIGFsZ29yaXRobSA9IENyeXB0b0FsZ29yaXRobVJlZ2lz
dHJ5OjpzaGFyZWQoKS5jcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NCQyk7
CiAgICAgICAgIHBhcmFtZXRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+KCk7CkBAIC0yMTgsNyArMjIxLDggQEAgYm9vbCBKU0NyeXB0b0tleVNlcmlhbGl6
YXRpb25KV0s6OnJlY29uYwogCiAgICAgaWYgKGFsZ29yaXRobS0+aWRlbnRpZmllcigpID09IENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUMpCiAgICAgICAgIHJldHVybiB0b0NyeXB0b0Fs
Z29yaXRobUhtYWNQYXJhbXMoKnBhcmFtZXRlcnMpLmhhc2ggPT0gdG9DcnlwdG9BbGdvcml0aG1I
bWFjUGFyYW1zKCpzdWdnZXN0ZWRQYXJhbWV0ZXJzKS5oYXNoOwotICAgIGlmIChhbGdvcml0aG0t
PmlkZW50aWZpZXIoKSA9PSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FTU0FfUEtDUzFf
djFfNSkgeworICAgIGlmIChhbGdvcml0aG0tPmlkZW50aWZpZXIoKSA9PSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpSU0FTU0FfUEtDUzFfdjFfNQorICAgICAgICB8fCBhbGdvcml0aG0tPmlk
ZW50aWZpZXIoKSA9PSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FfT0FFUCkgewogICAg
ICAgICBDcnlwdG9BbGdvcml0aG1Sc2FLZXlQYXJhbXNXaXRoSGFzaCYgcnNhS2V5UGFyYW1ldGVy
cyA9IHRvQ3J5cHRvQWxnb3JpdGhtUnNhS2V5UGFyYW1zV2l0aEhhc2goKnBhcmFtZXRlcnMpOwog
ICAgICAgICBDcnlwdG9BbGdvcml0aG1Sc2FLZXlQYXJhbXNXaXRoSGFzaCYgc3VnZ2VzdGVkUlNB
S2V5UGFyYW1ldGVycyA9IHRvQ3J5cHRvQWxnb3JpdGhtUnNhS2V5UGFyYW1zV2l0aEhhc2goKnN1
Z2dlc3RlZFBhcmFtZXRlcnMpOwogICAgICAgICBBU1NFUlQocnNhS2V5UGFyYW1ldGVycy5oYXNI
YXNoKTsKQEAgLTI4Myw2ICsyODcsOCBAQCBib29sIEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpX
Szo6a2V5U2l6CiAgICAgICAgIHJldHVybiBzaXplSW5CaXRzID49IDIwNDg7CiAgICAgaWYgKG1f
andrQWxnb3JpdGhtTmFtZSA9PSAiUlM1MTIiKQogICAgICAgICByZXR1cm4gc2l6ZUluQml0cyA+
PSAyMDQ4OworICAgIGlmIChtX2p3a0FsZ29yaXRobU5hbWUgPT0gIlJTQV9PQUVQIikKKyAgICAg
ICAgcmV0dXJuIHNpemVJbkJpdHMgPj0gMjA0ODsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
NTM4LDYgKzU0NCwxNyBAQCB2b2lkIEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6YWRkSldL
CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6UlNBX09BRVA6IHsKKyAgICAgICAgY29uc3QgQ3J5cHRvS2V5UlNBJiBy
c2FLZXkgPSB0b0NyeXB0b0tleVJTQShrZXkpOworICAgICAgICBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyIGhhc2g7CisgICAgICAgIC8vIFdlYkNyeXB0byBSU0EtT0FFUCBrZXlzIGFyZSBub3Qg
dGllZCB0byBhbnkgcGFydGljdWxhciBoYXNoLCB1bmxlc3MgcHJldmlvdXNseSBpbXBvcnRlZCBm
cm9tIEpXSywgd2hpY2ggb25seSBzdXBwb3J0cyBTSEEtMS4KKyAgICAgICAgaWYgKHJzYUtleS5p
c1Jlc3RyaWN0ZWRUb0hhc2goaGFzaCkgJiYgaGFzaCAhPSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpTSEFfMSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAocnNhS2V5LmtleVNp
emVJbkJpdHMoKSA8IDIwNDgpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgandrQWxnb3Jp
dGhtID0gIlJTQS1PQUVQIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9Db21tb25D
cnlwdG9VdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9D
b21tb25DcnlwdG9VdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUv
Y3J5cHRvL0NvbW1vbkNyeXB0b1V0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb21t
b25DcnlwdG9VdGlsaXRpZXMuaCIKKworI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgZ2V0Q29tbW9uQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0aW9uLCBDQ0RpZ2VzdEFsZ29yaXRobSYg
YWxnb3JpdGhtKQoreworICAgIHN3aXRjaCAoaGFzaEZ1bmN0aW9uKSB7CisgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToKKyAgICAgICAgYWxnb3JpdGhtID0ga0NDRGln
ZXN0U0hBMTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpTSEFfMjI0OgorICAgICAgICBhbGdvcml0aG0gPSBrQ0NEaWdlc3RTSEEyMjQ7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6U0hBXzI1NjoKKyAgICAgICAgYWxnb3JpdGhtID0ga0NDRGlnZXN0U0hBMjU2OworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8z
ODQ6CisgICAgICAgIGFsZ29yaXRobSA9IGtDQ0RpZ2VzdFNIQTM4NDsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgorICAg
ICAgICBhbGdvcml0aG0gPSBrQ0NEaWdlc3RTSEE1MTI7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvY3J5cHRvL0NvbW1vbkNyeXB0b1V0aWxpdGll
cy5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMCwwICsxICMjCituYXRp
dmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3J5cHRvL0NvbW1vbkNyeXB0b1V0aWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2NyeXB0by9Db21tb25DcnlwdG9VdGlsaXRpZXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2NyeXB0by9Db21tb25DcnlwdG9VdGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDb21tb25DcnlwdG9VdGlsaXRp
ZXNfaAorI2RlZmluZSBDb21tb25DcnlwdG9VdGlsaXRpZXNfaAorCisjaWYgRU5BQkxFKFNVQlRM
RV9DUllQVE8pCisKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLmgiCisKKyNp
ZiBkZWZpbmVkKF9faGFzX2luY2x1ZGUpCisjaWYgX19oYXNfaW5jbHVkZSg8Q29tbW9uQ3J5cHRv
L0NvbW1vblJTQUNyeXB0b3IuaD4pCisjaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vblJTQUNy
eXB0b3IuaD4KKyNlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9faGFzX2luY2x1ZGUpICYm
IChQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5
MCkKKyNpZiBfX2hhc19pbmNsdWRlKDxDb21tb25DcnlwdG8vQ29tbW9uUmFuZG9tU1BJLmg+KQor
I2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25SYW5kb21TUEkuaD4KKyNlbmRpZgorI2VuZGlm
CisKKyNpZm5kZWYgX0NDX1JTQUNSWVBUT1JfSF8KK2VudW0geworICAgIGtDQ0RpZ2VzdFNIQTEg
PSA4LAorICAgIGtDQ0RpZ2VzdFNIQTIyNCA9IDksCisgICAga0NDRGlnZXN0U0hBMjU2ID0gMTAs
CisgICAga0NDRGlnZXN0U0hBMzg0ID0gMTEsCisgICAga0NDRGlnZXN0U0hBNTEyID0gMTIsCit9
OwordHlwZWRlZiB1aW50MzJfdCBDQ0RpZ2VzdEFsZ29yaXRobTsKKworZW51bSB7CisgICAgY2NS
U0FLZXlQdWJsaWMgPSAwLAorICAgIGNjUlNBS2V5UHJpdmF0ZSA9IDEKK307Cit0eXBlZGVmIHVp
bnQzMl90IENDUlNBS2V5VHlwZTsKKworZW51bSB7CisgICAgY2NQS0NTMVBhZGRpbmcgPSAxMDAx
LAorICAgIGNjT0FFUFBhZGRpbmcgPSAxMDAyCit9OwordHlwZWRlZiB1aW50MzJfdCBDQ0FzeW1t
ZXRyaWNQYWRkaW5nOworCitlbnVtIHsKKyAgICBrQ0NOb3RWZXJpZmllZCA9IC00MzA2Cit9Owor
I2VuZGlmCisKK3R5cGVkZWYgc3RydWN0IF9fQ0NSYW5kb20gKkNDUmFuZG9tUmVmOworZXh0ZXJu
IGNvbnN0IENDUmFuZG9tUmVmIGtDQ1JhbmRvbURlZmF1bHQ7CitleHRlcm4gIkMiIGludCBDQ1Jh
bmRvbUNvcHlCeXRlcyhDQ1JhbmRvbVJlZiBybmQsIHZvaWQgKmJ5dGVzLCBzaXplX3QgY291bnQp
OworCitleHRlcm4gIkMiIENDQ3J5cHRvclN0YXR1cyBDQ1JTQUNyeXB0b3JFbmNyeXB0KENDUlNB
Q3J5cHRvclJlZiBwdWJsaWNLZXksIENDQXN5bW1ldHJpY1BhZGRpbmcgcGFkZGluZywgY29uc3Qg
dm9pZCAqcGxhaW5UZXh0LCBzaXplX3QgcGxhaW5UZXh0TGVuLCB2b2lkICpjaXBoZXJUZXh0LCBz
aXplX3QgKmNpcGhlclRleHRMZW4sIGNvbnN0IHZvaWQgKnRhZ0RhdGEsIHNpemVfdCB0YWdEYXRh
TGVuLCBDQ0RpZ2VzdEFsZ29yaXRobSBkaWdlc3RUeXBlKTsKK2V4dGVybiAiQyIgQ0NDcnlwdG9y
U3RhdHVzIENDUlNBQ3J5cHRvckRlY3J5cHQoQ0NSU0FDcnlwdG9yUmVmIHByaXZhdGVLZXksIEND
QXN5bW1ldHJpY1BhZGRpbmcgcGFkZGluZywgY29uc3Qgdm9pZCAqY2lwaGVyVGV4dCwgc2l6ZV90
IGNpcGhlclRleHRMZW4sIHZvaWQgKnBsYWluVGV4dCwgc2l6ZV90ICpwbGFpblRleHRMZW4sIGNv
bnN0IHZvaWQgKnRhZ0RhdGEsIHNpemVfdCB0YWdEYXRhTGVuLCBDQ0RpZ2VzdEFsZ29yaXRobSBk
aWdlc3RUeXBlKTsKK2V4dGVybiAiQyIgQ0NDcnlwdG9yU3RhdHVzIENDUlNBQ3J5cHRvclNpZ24o
Q0NSU0FDcnlwdG9yUmVmIHByaXZhdGVLZXksIENDQXN5bW1ldHJpY1BhZGRpbmcgcGFkZGluZywg
Y29uc3Qgdm9pZCAqaGFzaFRvU2lnbiwgc2l6ZV90IGhhc2hTaWduTGVuLCBDQ0RpZ2VzdEFsZ29y
aXRobSBkaWdlc3RUeXBlLCBzaXplX3Qgc2FsdExlbiwgdm9pZCAqc2lnbmVkRGF0YSwgc2l6ZV90
ICpzaWduZWREYXRhTGVuKTsKK2V4dGVybiAiQyIgQ0NDcnlwdG9yU3RhdHVzIENDUlNBQ3J5cHRv
clZlcmlmeShDQ1JTQUNyeXB0b3JSZWYgcHVibGljS2V5LCBDQ0FzeW1tZXRyaWNQYWRkaW5nIHBh
ZGRpbmcsIGNvbnN0IHZvaWQgKmhhc2gsIHNpemVfdCBoYXNoTGVuLCBDQ0RpZ2VzdEFsZ29yaXRo
bSBkaWdlc3RUeXBlLCBzaXplX3Qgc2FsdExlbiwgY29uc3Qgdm9pZCAqc2lnbmVkRGF0YSwgc2l6
ZV90IHNpZ25lZERhdGFMZW4pOworZXh0ZXJuICJDIiBDQ0NyeXB0b3JTdGF0dXMgQ0NSU0FDcnlw
dG9yQ3JlYXRlRnJvbURhdGEoQ0NSU0FLZXlUeXBlIGtleVR5cGUsIHVpbnQ4X3QgKm1vZHVsdXMs
IHNpemVfdCBtb2R1bHVzTGVuZ3RoLCB1aW50OF90ICpleHBvbmVudCwgc2l6ZV90IGV4cG9uZW50
TGVuZ3RoLCB1aW50OF90ICpwLCBzaXplX3QgcExlbmd0aCwgdWludDhfdCAqcSwgc2l6ZV90IHFM
ZW5ndGgsIENDUlNBQ3J5cHRvclJlZiAqcmVmKTsKK2V4dGVybiAiQyIgQ0NDcnlwdG9yU3RhdHVz
IENDUlNBQ3J5cHRvckdlbmVyYXRlUGFpcihzaXplX3Qga2V5c2l6ZSwgdWludDMyX3QgZSwgQ0NS
U0FDcnlwdG9yUmVmICpwdWJsaWNLZXksIENDUlNBQ3J5cHRvclJlZiAqcHJpdmF0ZUtleSk7Citl
eHRlcm4gIkMiIENDUlNBQ3J5cHRvclJlZiBDQ1JTQUNyeXB0b3JHZXRQdWJsaWNLZXlGcm9tUHJp
dmF0ZUtleShDQ1JTQUNyeXB0b3JSZWYgcHJpdmtleSk7CitleHRlcm4gIkMiIHZvaWQgQ0NSU0FD
cnlwdG9yUmVsZWFzZShDQ1JTQUNyeXB0b3JSZWYga2V5KTsKK2V4dGVybiAiQyIgQ0NDcnlwdG9y
U3RhdHVzIENDUlNBR2V0S2V5Q29tcG9uZW50cyhDQ1JTQUNyeXB0b3JSZWYgcnNhS2V5LCB1aW50
OF90ICptb2R1bHVzLCBzaXplX3QgKm1vZHVsdXNMZW5ndGgsIHVpbnQ4X3QgKmV4cG9uZW50LCBz
aXplX3QgKmV4cG9uZW50TGVuZ3RoLCB1aW50OF90ICpwLCBzaXplX3QgKnBMZW5ndGgsIHVpbnQ4
X3QgKnEsIHNpemVfdCAqcUxlbmd0aCk7CitleHRlcm4gIkMiIENDUlNBS2V5VHlwZSBDQ1JTQUdl
dEtleVR5cGUoQ0NSU0FDcnlwdG9yUmVmIGtleSk7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Ym9vbCBnZXRDb21tb25DcnlwdG9EaWdlc3RBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
ZmllciwgQ0NEaWdlc3RBbGdvcml0aG0mKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8pCisjZW5kaWYgLy8gQ29tbW9uQ3J5cHRvVXRp
bGl0aWVzX2gKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9Db21t
b25DcnlwdG9VdGlsaXRpZXMuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0w
LDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmgJ
KHJldmlzaW9uIDE1OTcxNykKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgcHVibGljOgog
ICAgICAgICBIbWFjUGFyYW1zLAogICAgICAgICBSc2FLZXlHZW5QYXJhbXMsCiAgICAgICAgIFJz
YUtleVBhcmFtc1dpdGhIYXNoLAorICAgICAgICBSc2FPYWVwUGFyYW1zLAogICAgICAgICBSc2FT
c2FQYXJhbXMKICAgICB9OwogICAgIHZpcnR1YWwgQ2xhc3MgcGFyYW1ldGVyc0NsYXNzKCkgY29u
c3QgeyByZXR1cm4gQ2xhc3M6Ok5vbmU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1SU0FfT0FFUC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGht
UlNBX09BRVAuaCIKKworI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorCisjaW5jbHVkZSAiQ3J5
cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zLmgiCisjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGht
UnNhS2V5UGFyYW1zV2l0aEhhc2guaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Sc2FPYWVw
UGFyYW1zLmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMuaCIKKyNpbmNs
dWRlICJDcnlwdG9LZXlSU0EuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY29uc3QgY2hhciogY29uc3QgQ3J5cHRvQWxnb3JpdGhtUlNBX09B
RVA6OnNfbmFtZSA9ICJyc2Etb2FlcCI7CisKK0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpDcnlw
dG9BbGdvcml0aG1SU0FfT0FFUCgpCit7Cit9CisKK0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjp+
Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVAoKQoreworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
QWxnb3JpdGhtPiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6Y3JlYXRlKCkKK3sKKyAgICByZXR1
cm4gc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobT4obmV3IENyeXB0b0FsZ29yaXRobVJT
QV9PQUVQKTsKK30KKworQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aG1S
U0FfT0FFUDo6aWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsK
K30KKworYm9vbCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6a2V5QWxnb3JpdGhtTWF0Y2hlcyhj
b25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zJiBhbGdvcml0aG1QYXJhbWV0ZXJzLCBj
b25zdCBDcnlwdG9LZXkmIGtleSkgY29uc3QKK3sKKyAgICBpZiAoa2V5LmFsZ29yaXRobUlkZW50
aWZpZXIoKSAhPSBzX2lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NF
UlQoaXNDcnlwdG9LZXlSU0Eoa2V5KSk7CisKKyAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
IGtleUhhc2g7CisgICAgaWYgKHRvQ3J5cHRvS2V5UlNBKGtleSkuaXNSZXN0cmljdGVkVG9IYXNo
KGtleUhhc2gpICYmIGtleUhhc2ggIT0gYWxnb3JpdGhtUGFyYW1ldGVycy5oYXNoKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDcnlwdG9BbGdv
cml0aG1SU0FfT0FFUDo6ZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0
YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2sgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayBmYWlsdXJlQ2Fs
bGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGNvbnN0IENyeXB0b0FsZ29yaXRobVJz
YU9hZXBQYXJhbXMmIHJzYU9BRVBQYXJhbWV0ZXJzID0gdG9DcnlwdG9BbGdvcml0aG1Sc2FPYWVw
UGFyYW1zKHBhcmFtZXRlcnMpOworCisgICAgaWYgKCFrZXlBbGdvcml0aG1NYXRjaGVzKHJzYU9B
RVBQYXJhbWV0ZXJzLCBrZXkpKSB7CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBwbGF0Zm9ybUVuY3J5cHQocnNhT0FFUFBhcmFt
ZXRlcnMsIHRvQ3J5cHRvS2V5UlNBKGtleSksIGRhdGEsIHN0ZDo6bW92ZShjYWxsYmFjayksIHN0
ZDo6bW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7Cit9CisKK3ZvaWQgQ3J5cHRvQWxnb3JpdGht
UlNBX09BRVA6OmRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1l
dGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRh
dGEsIFZlY3RvckNhbGxiYWNrIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNr
LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVw
UGFyYW1zJiByc2FPQUVQUGFyYW1ldGVycyA9IHRvQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFt
cyhwYXJhbWV0ZXJzKTsKKworICAgIGlmICgha2V5QWxnb3JpdGhtTWF0Y2hlcyhyc2FPQUVQUGFy
YW1ldGVycywga2V5KSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgcGxhdGZvcm1EZWNyeXB0KHJzYU9BRVBQYXJhbWV0ZXJz
LCB0b0NyeXB0b0tleVJTQShrZXkpLCBkYXRhLCBzdGQ6Om1vdmUoY2FsbGJhY2spLCBzdGQ6Om1v
dmUoZmFpbHVyZUNhbGxiYWNrKSwgZWMpOworfQorCit2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9P
QUVQOjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSB1c2FnZXMsIEtleU9yS2V5UGFp
ckNhbGxiYWNrIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRp
b25Db2RlJikKK3sKKyAgICBjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXMmIHJz
YVBhcmFtZXRlcnMgPSB0b0NyeXB0b0FsZ29yaXRobVJzYUtleUdlblBhcmFtcyhwYXJhbWV0ZXJz
KTsKKworICAgIGF1dG8ga2V5UGFpckNhbGxiYWNrID0gW2NhbGxiYWNrXShDcnlwdG9LZXlQYWly
JiBwYWlyKSB7CisgICAgICAgIGNhbGxiYWNrKG51bGxwdHIsICZwYWlyKTsKKyAgICB9OworCisg
ICAgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
UlNBX09BRVAsIHJzYVBhcmFtZXRlcnMubW9kdWx1c0xlbmd0aCwgcnNhUGFyYW1ldGVycy5wdWJs
aWNFeHBvbmVudCwgZXh0cmFjdGFibGUsIHVzYWdlcywgc3RkOjptb3ZlKGtleVBhaXJDYWxsYmFj
ayksIHN0ZDo6bW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKK30KKwordm9pZCBDcnlwdG9BbGdvcml0
aG1SU0FfT0FFUDo6aW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleURhdGEmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUs
IENyeXB0b0tleVVzYWdlIHVzYWdlLCBLZXlDYWxsYmFjayBjYWxsYmFjaywgVm9pZENhbGxiYWNr
IGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCit7CisgICAgY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUnNhS2V5UGFyYW1zV2l0aEhhc2gmIHJzYUtleVBhcmFtZXRlcnMgPSB0b0NyeXB0b0Fs
Z29yaXRobVJzYUtleVBhcmFtc1dpdGhIYXNoKHBhcmFtZXRlcnMpOworICAgIGNvbnN0IENyeXB0
b0tleURhdGFSU0FDb21wb25lbnRzJiByc2FDb21wb25lbnRzID0gdG9DcnlwdG9LZXlEYXRhUlNB
Q29tcG9uZW50cyhrZXlEYXRhKTsKKworICAgIFJlZlB0cjxDcnlwdG9LZXlSU0E+IHJlc3VsdCA9
IENyeXB0b0tleVJTQTo6Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQV9PQUVQ
LCByc2FDb21wb25lbnRzLCBleHRyYWN0YWJsZSwgdXNhZ2UpOworICAgIGlmICghcmVzdWx0KSB7
CisgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKHJzYUtleVBhcmFtZXRlcnMuaGFzSGFzaCkKKyAgICAgICAgcmVzdWx0LT5yZXN0cmlj
dFRvSGFzaChyc2FLZXlQYXJhbWV0ZXJzLmhhc2gpOworCisgICAgY2FsbGJhY2soKnJlc3VsdCk7
Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQoKUHJvcGVydHkgY2hh
bmdlcyBvbjogU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
UlNBX09BRVAuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAj
IworbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
UlNBX09BRVAuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBfaAorI2Rl
ZmluZSBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUF9oCisKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0
aG0uaCIKKworI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXM7CitjbGFzcyBDcnlwdG9LZXlS
U0E7CisKK2NsYXNzIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQIEZJTkFMIDogcHVibGljIENyeXB0
b0FsZ29yaXRobSB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfbmFt
ZTsKKyAgICBzdGF0aWMgY29uc3QgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBzX2lkZW50aWZp
ZXIgPSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FfT0FFUDsKKworICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtPiBjcmVhdGUoKTsKKworICAgIHZpcnR1YWwg
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgT1ZFUlJJREU7CisK
KyAgICB2aXJ0dWFsIHZvaWQgZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
JiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNh
bGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBW
ZWN0b3JDYWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29k
ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UsIEtl
eU9yS2V5UGFpckNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRp
b25Db2RlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGltcG9ydEtleShjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYsIGJvb2wgZXh0cmFj
dGFibGUsIENyeXB0b0tleVVzYWdlLCBLZXlDYWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1cmVD
YWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIENyeXB0
b0FsZ29yaXRobVJTQV9PQUVQKCk7CisgICAgdmlydHVhbCB+Q3J5cHRvQWxnb3JpdGhtUlNBX09B
RVAoKTsKKworICAgIGJvb2wga2V5QWxnb3JpdGhtTWF0Y2hlcyhjb25zdCBDcnlwdG9BbGdvcml0
aG1Sc2FPYWVwUGFyYW1zJiBhbGdvcml0aG1QYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmKSBj
b25zdDsKKyAgICB2b2lkIHBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FP
YWVwUGFyYW1zJiwgY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0
YSYsIFZlY3RvckNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRp
b25Db2RlJik7CisgICAgdm9pZCBwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UnNhT2FlcFBhcmFtcyYsIGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmLCBWZWN0b3JDYWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaywgRXhj
ZXB0aW9uQ29kZSYpOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8p
CisjZW5kaWYgLy8gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBfaAoKUHJvcGVydHkgY2hhbmdlcyBv
bjogU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09B
RVAuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2
ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
cnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhNQUNNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHAJKHJldmlzaW9u
IDE1OTcxNykKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1B
Q01hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1zdGF0aWMgYm9vbCBnZXRDb21tb25DcnlwdG9BbGdvcml0aG0oQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllciBoYXNoRnVuY3Rpb24sIENDSG1hY0FsZ29yaXRobSYgYWxnb3JpdGht
KQorc3RhdGljIGJvb2wgZ2V0Q29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbiwgQ0NIbWFjQWxnb3JpdGhtJiBhbGdvcml0aG0pCiB7
CiAgICAgc3dpdGNoIChoYXNoRnVuY3Rpb24pIHsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OlNIQV8xOgpAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+
IGNhbGN1bGF0ZVNpZ25hdHVyCiB2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtU2ln
bihjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlw
dG9LZXlITUFDJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNh
bGxiYWNrIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IENDSG1hY0FsZ29yaXRobSBhbGdvcml0aG07Ci0gICAgaWYgKCFnZXRDb21tb25DcnlwdG9BbGdv
cml0aG0ocGFyYW1ldGVycy5oYXNoLCBhbGdvcml0aG0pKSB7CisgICAgaWYgKCFnZXRDb21tb25D
cnlwdG9ITUFDQWxnb3JpdGhtKHBhcmFtZXRlcnMuaGFzaCwgYWxnb3JpdGhtKSkgewogICAgICAg
ICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTA0
LDcgKzEwNCw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKGMKIHZv
aWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtSG1hY1BhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5SE1BQyYga2V5LCBjb25z
dCBDcnlwdG9PcGVyYXRpb25EYXRhJiBleHBlY3RlZFNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSYgZGF0YSwgQm9vbENhbGxiYWNrIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2ssIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIENDSG1hY0FsZ29yaXRobSBhbGdvcml0aG07Ci0gICAg
aWYgKCFnZXRDb21tb25DcnlwdG9BbGdvcml0aG0ocGFyYW1ldGVycy5oYXNoLCBhbGdvcml0aG0p
KSB7CisgICAgaWYgKCFnZXRDb21tb25DcnlwdG9ITUFDQWxnb3JpdGhtKHBhcmFtZXRlcnMuaGFz
aCwgYWxnb3JpdGhtKSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAJ
KHJldmlzaW9uIDE1OTcxNykKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxn
b3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2NiAr
MjgsMTUgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCisjaW5jbHVkZSAiQ29tbW9u
Q3J5cHRvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1z
LmgiCiAjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21t
b25DcnlwdG9yLmg+CiAKLSNpZiBkZWZpbmVkKF9faGFzX2luY2x1ZGUpCi0jaWYgX19oYXNfaW5j
bHVkZSg8Q29tbW9uQ3J5cHRvL0NvbW1vblJTQUNyeXB0b3IuaD4pCi0jaW5jbHVkZSA8Q29tbW9u
Q3J5cHRvL0NvbW1vblJTQUNyeXB0b3IuaD4KLSNlbmRpZgotI2VuZGlmCi0KLSNpZm5kZWYgX0ND
X1JTQUNSWVBUT1JfSF8KLWVudW0gewotICAgIGNjUEtDUzFQYWRkaW5nID0gMTAwMQotfTsKLXR5
cGVkZWYgdWludDMyX3QgQ0NBc3ltbWV0cmljUGFkZGluZzsKLQotZW51bSB7Ci0gICAga0NDRGln
ZXN0U0hBMSA9IDgsCi0gICAga0NDRGlnZXN0U0hBMjI0ID0gOSwKLSAgICBrQ0NEaWdlc3RTSEEy
NTYgPSAxMCwKLSAgICBrQ0NEaWdlc3RTSEEzODQgPSAxMSwKLSAgICBrQ0NEaWdlc3RTSEE1MTIg
PSAxMiwKLX07Ci10eXBlZGVmIHVpbnQzMl90IENDRGlnZXN0QWxnb3JpdGhtOwotCi1lbnVtIHsK
LSAgICBrQ0NOb3RWZXJpZmllZCAgICA9IC00MzA2Ci19OwotI2VuZGlmCi0KLWV4dGVybiAiQyIg
Q0NDcnlwdG9yU3RhdHVzIENDUlNBQ3J5cHRvclNpZ24oQ0NSU0FDcnlwdG9yUmVmIHByaXZhdGVL
ZXksIENDQXN5bW1ldHJpY1BhZGRpbmcgcGFkZGluZywgY29uc3Qgdm9pZCAqaGFzaFRvU2lnbiwg
c2l6ZV90IGhhc2hTaWduTGVuLCBDQ0RpZ2VzdEFsZ29yaXRobSBkaWdlc3RUeXBlLCBzaXplX3Qg
c2FsdExlbiwgdm9pZCAqc2lnbmVkRGF0YSwgc2l6ZV90ICpzaWduZWREYXRhTGVuKTsKLWV4dGVy
biAiQyIgQ0NDcnlwdG9yU3RhdHVzIENDUlNBQ3J5cHRvclZlcmlmeShDQ1JTQUNyeXB0b3JSZWYg
cHVibGljS2V5LCBDQ0FzeW1tZXRyaWNQYWRkaW5nIHBhZGRpbmcsIGNvbnN0IHZvaWQgKmhhc2gs
IHNpemVfdCBoYXNoTGVuLCBDQ0RpZ2VzdEFsZ29yaXRobSBkaWdlc3RUeXBlLCBzaXplX3Qgc2Fs
dExlbiwgY29uc3Qgdm9pZCAqc2lnbmVkRGF0YSwgc2l6ZV90IHNpZ25lZERhdGFMZW4pOwotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIGdldENvbW1vbkNyeXB0b0RpZ2VzdEFs
Z29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbiwgQ0NEaWdlc3RB
bGdvcml0aG0mIGFsZ29yaXRobSkKLXsKLSAgICBzd2l0Y2ggKGhhc2hGdW5jdGlvbikgewotICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6Ci0gICAgICAgIGFsZ29yaXRo
bSA9IGtDQ0RpZ2VzdFNIQTE7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzIyNDoKLSAgICAgICAgYWxnb3JpdGhtID0ga0NDRGln
ZXN0U0hBMjI0OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OlNIQV8yNTY6Ci0gICAgICAgIGFsZ29yaXRobSA9IGtDQ0RpZ2VzdFNIQTI1
NjsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpTSEFfMzg0OgotICAgICAgICBhbGdvcml0aG0gPSBrQ0NEaWdlc3RTSEEzODQ7Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hB
XzUxMjoKLSAgICAgICAgYWxnb3JpdGhtID0ga0NDRGlnZXN0U0hBNTEyOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQot
CiB2b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVNpZ24oY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9L
ZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJh
Y2sgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIENDRGlnZXN0QWxnb3JpdGhtIGRpZ2VzdEFsZ29yaXRobTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNB
X09BRVBNYWMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9D
cnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9B
bGdvcml0aG1SU0FfT0FFUC5oIgorCisjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCisKKyNpbmNs
dWRlICJDb21tb25DcnlwdG9VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1S
c2FPYWVwUGFyYW1zLmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCisjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgQ3J5cHRvQWxnb3Jp
dGhtUlNBX09BRVA6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVw
UGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRv
T3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2sgY2FsbGJhY2ssIFZvaWRDYWxsYmFj
ayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIENDRGlnZXN0QWxn
b3JpdGhtIGRpZ2VzdEFsZ29yaXRobTsKKyAgICBpZiAoIWdldENvbW1vbkNyeXB0b0RpZ2VzdEFs
Z29yaXRobShwYXJhbWV0ZXJzLmhhc2gsIGRpZ2VzdEFsZ29yaXRobSkpIHsKKyAgICAgICAgZWMg
PSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFZlY3Rv
cjx1aW50OF90PiBjaXBoZXJUZXh0KDEwMjQpOworICAgIHNpemVfdCBjaXBoZXJUZXh0TGVuZ3Ro
ID0gY2lwaGVyVGV4dC5zaXplKCk7CisgICAgQVNTRVJUKHBhcmFtZXRlcnMuaGFzTGFiZWwgfHwg
cGFyYW1ldGVycy5sYWJlbC5pc0VtcHR5KCkpOworICAgIENDQ3J5cHRvclN0YXR1cyBzdGF0dXMg
PSBDQ1JTQUNyeXB0b3JFbmNyeXB0KGtleS5wbGF0Zm9ybUtleSgpLCBjY09BRVBQYWRkaW5nLCBk
YXRhLmZpcnN0LCBkYXRhLnNlY29uZCwgY2lwaGVyVGV4dC5kYXRhKCksICZjaXBoZXJUZXh0TGVu
Z3RoLCBwYXJhbWV0ZXJzLmxhYmVsLmRhdGEoKSwgcGFyYW1ldGVycy5sYWJlbC5zaXplKCksIGRp
Z2VzdEFsZ29yaXRobSk7CisgICAgaWYgKHN0YXR1cykgeworICAgICAgICBmYWlsdXJlQ2FsbGJh
Y2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNpcGhlclRleHQucmVzaXplKGNp
cGhlclRleHRMZW5ndGgpOworICAgIGNhbGxiYWNrKGNpcGhlclRleHQpOworfQorCit2b2lkIENy
eXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUnNhT2FlcFBhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNv
bnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrIGNhbGxiYWNrLCBW
b2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBD
Q0RpZ2VzdEFsZ29yaXRobSBkaWdlc3RBbGdvcml0aG07CisgICAgaWYgKCFnZXRDb21tb25Dcnlw
dG9EaWdlc3RBbGdvcml0aG0ocGFyYW1ldGVycy5oYXNoLCBkaWdlc3RBbGdvcml0aG0pKSB7Cisg
ICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBWZWN0b3I8dWludDhfdD4gcGxhaW5UZXh0KDEwMjQpOworICAgIHNpemVfdCBwbGFpblRl
eHRMZW5ndGggPSBwbGFpblRleHQuc2l6ZSgpOworICAgIENDQ3J5cHRvclN0YXR1cyBzdGF0dXMg
PSBDQ1JTQUNyeXB0b3JEZWNyeXB0KGtleS5wbGF0Zm9ybUtleSgpLCBjY09BRVBQYWRkaW5nLCBk
YXRhLmZpcnN0LCBkYXRhLnNlY29uZCwgcGxhaW5UZXh0LmRhdGEoKSwgJnBsYWluVGV4dExlbmd0
aCwgcGFyYW1ldGVycy5sYWJlbC5kYXRhKCksIHBhcmFtZXRlcnMubGFiZWwuc2l6ZSgpLCBkaWdl
c3RBbGdvcml0aG0pOworICAgIGlmIChzdGF0dXMpIHsKKyAgICAgICAgZmFpbHVyZUNhbGxiYWNr
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBwbGFpblRleHQucmVzaXplKHBsYWlu
VGV4dExlbmd0aCk7CisgICAgY2FsbGJhY2socGxhaW5UZXh0KTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8pCgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQV9P
QUVQTWFjLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMK
K25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5TWFjLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5TWFj
LmNwcAkocmV2aXNpb24gMTU5NzE3KQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9Dcnlw
dG9BbGdvcml0aG1SZWdpc3RyeU1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmgiCiAjaW5jbHVkZSAiQ3J5cHRv
QWxnb3JpdGhtSE1BQy5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92
MV81LmgiCisjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaCIKICNpbmNsdWRlICJD
cnlwdG9BbGdvcml0aG1TSEExLmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtU0hBMjI0Lmgi
CiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmgiCkBAIC00NCw2ICs0NSw3IEBAIHZv
aWQgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnBsYXRmb3JtUmUKICAgICByZWdpc3RlckFsZ29y
aXRobTxDcnlwdG9BbGdvcml0aG1BRVNfQ0JDPigpOwogICAgIHJlZ2lzdGVyQWxnb3JpdGhtPENy
eXB0b0FsZ29yaXRobUhNQUM+KCk7CiAgICAgcmVnaXN0ZXJBbGdvcml0aG08Q3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzU+KCk7CisgICAgcmVnaXN0ZXJBbGdvcml0aG08Q3J5cHRvQWxn
b3JpdGhtUlNBX09BRVA+KCk7CiAgICAgcmVnaXN0ZXJBbGdvcml0aG08Q3J5cHRvQWxnb3JpdGht
U0hBMT4oKTsKICAgICByZWdpc3RlckFsZ29yaXRobTxDcnlwdG9BbGdvcml0aG1TSEEyMjQ+KCk7
CiAgICAgcmVnaXN0ZXJBbGdvcml0aG08Q3J5cHRvQWxnb3JpdGhtU0hBMjU2PigpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlNYWMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5TWFjLmNwcAkocmV2aXNpb24gMTU5
NjM2KQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlNYWMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCwxNSArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8p
CiAKLSNpZiBkZWZpbmVkKF9faGFzX2luY2x1ZGUpICYmIChQTEFURk9STShJT1MpIHx8IF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MCkKLSNpZiBfX2hhc19pbmNsdWRlKDxD
b21tb25DcnlwdG8vQ29tbW9uUmFuZG9tU1BJLmg+KQotI2luY2x1ZGUgPENvbW1vbkNyeXB0by9D
b21tb25SYW5kb21TUEkuaD4KLSNlbmRpZgotI2VuZGlmCi0KLXR5cGVkZWYgc3RydWN0IF9fQ0NS
YW5kb20gKkNDUmFuZG9tUmVmOwotZXh0ZXJuIGNvbnN0IENDUmFuZG9tUmVmIGtDQ1JhbmRvbURl
ZmF1bHQ7Ci1leHRlcm4gIkMiIGludCBDQ1JhbmRvbUNvcHlCeXRlcyhDQ1JhbmRvbVJlZiBybmQs
IHZvaWQgKmJ5dGVzLCBzaXplX3QgY291bnQpOworI2luY2x1ZGUgIkNvbW1vbkNyeXB0b1V0aWxp
dGllcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Ny
eXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vbWFjL0NyeXB0b0tleVJTQU1hYy5jcHAJKHJldmlzaW9uIDE1OTYzNikKKysrIFNv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgsMzMgKzI4LDEzIEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAorI2lu
Y2x1ZGUgIkNvbW1vbkNyeXB0b1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRo
bURlc2NyaXB0aW9uQnVpbGRlci5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMuaCIKICNpbmNsdWRlICJD
cnlwdG9LZXlQYWlyLmgiCiAjaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkNyeXB0b3IuaD4K
IAotI2lmIGRlZmluZWQoX19oYXNfaW5jbHVkZSkKLSNpZiBfX2hhc19pbmNsdWRlKDxDb21tb25D
cnlwdG8vQ29tbW9uUlNBQ3J5cHRvci5oPikKLSNpbmNsdWRlIDxDb21tb25DcnlwdG8vQ29tbW9u
UlNBQ3J5cHRvci5oPgotI2VuZGlmCi0jZW5kaWYKLQotI2lmbmRlZiBfQ0NfUlNBQ1JZUFRPUl9I
XwotZW51bSB7Ci0gICAgY2NSU0FLZXlQdWJsaWMgICAgICAgICAgPSAwLAotICAgIGNjUlNBS2V5
UHJpdmF0ZSAgICAgICAgID0gMQotfTsKLXR5cGVkZWYgdWludDMyX3QgQ0NSU0FLZXlUeXBlOwot
I2VuZGlmCi0KLWV4dGVybiAiQyIgQ0NDcnlwdG9yU3RhdHVzIENDUlNBQ3J5cHRvckNyZWF0ZUZy
b21EYXRhKENDUlNBS2V5VHlwZSBrZXlUeXBlLCB1aW50OF90ICptb2R1bHVzLCBzaXplX3QgbW9k
dWx1c0xlbmd0aCwgdWludDhfdCAqZXhwb25lbnQsIHNpemVfdCBleHBvbmVudExlbmd0aCwgdWlu
dDhfdCAqcCwgc2l6ZV90IHBMZW5ndGgsIHVpbnQ4X3QgKnEsIHNpemVfdCBxTGVuZ3RoLCBDQ1JT
QUNyeXB0b3JSZWYgKnJlZik7Ci1leHRlcm4gIkMiIENDQ3J5cHRvclN0YXR1cyBDQ1JTQUNyeXB0
b3JHZW5lcmF0ZVBhaXIoc2l6ZV90IGtleXNpemUsIHVpbnQzMl90IGUsIENDUlNBQ3J5cHRvclJl
ZiAqcHVibGljS2V5LCBDQ1JTQUNyeXB0b3JSZWYgKnByaXZhdGVLZXkpOwotZXh0ZXJuICJDIiBD
Q1JTQUNyeXB0b3JSZWYgQ0NSU0FDcnlwdG9yR2V0UHVibGljS2V5RnJvbVByaXZhdGVLZXkoQ0NS
U0FDcnlwdG9yUmVmIHByaXZrZXkpOwotZXh0ZXJuICJDIiB2b2lkIENDUlNBQ3J5cHRvclJlbGVh
c2UoQ0NSU0FDcnlwdG9yUmVmIGtleSk7Ci1leHRlcm4gIkMiIENDQ3J5cHRvclN0YXR1cyBDQ1JT
QUdldEtleUNvbXBvbmVudHMoQ0NSU0FDcnlwdG9yUmVmIHJzYUtleSwgdWludDhfdCAqbW9kdWx1
cywgc2l6ZV90ICptb2R1bHVzTGVuZ3RoLCB1aW50OF90ICpleHBvbmVudCwgc2l6ZV90ICpleHBv
bmVudExlbmd0aCwgdWludDhfdCAqcCwgc2l6ZV90ICpwTGVuZ3RoLCB1aW50OF90ICpxLCBzaXpl
X3QgKnFMZW5ndGgpOwotZXh0ZXJuICJDIiBDQ1JTQUtleVR5cGUgQ0NSU0FHZXRLZXlUeXBlKEND
UlNBQ3J5cHRvclJlZiBrZXkpOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBDQ0Ny
eXB0b3JTdGF0dXMgZ2V0UHVibGljS2V5Q29tcG9uZW50cyhDQ1JTQUNyeXB0b3JSZWYgcnNhS2V5
LCBWZWN0b3I8dWludDhfdD4mIG1vZHVsdXMsIFZlY3Rvcjx1aW50OF90PiYgcHVibGljRXhwb25l
bnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVycy9DcnlwdG9BbGdvcml0
aG1Sc2FPYWVwUGFyYW1zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL3Bh
cmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcy5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBh
cmFtcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNfaAorI2RlZmluZSBDcnlwdG9BbGdvcml0
aG1Sc2FPYWVwUGFyYW1zX2gKKworI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIu
aCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmgiCisKKyNpZiBFTkFCTEUo
U1VCVExFX0NSWVBUTykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDcnlwdG9BbGdv
cml0aG1Sc2FPYWVwUGFyYW1zIEZJTkFMIDogcHVibGljIENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnMgeworcHVibGljOgorICAgIENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXMoKQorICAgICAg
ICA6IGhhc0xhYmVsKGZhbHNlKQorICAgIHsKKyAgICB9CisKKyAgICAvLyBUaGUgaGFzaCBmdW5j
dGlvbiB0byBhcHBseSB0byB0aGUgbWVzc2FnZS4KKyAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyIGhhc2g7CisKKyAgICAvLyBUaGUgb3B0aW9uYWwgbGFiZWwvYXBwbGljYXRpb24gZGF0YSB0
byBhc3NvY2lhdGUgd2l0aCB0aGUgbWVzc2FnZS4KKyAgICAvLyBGSVhNRTogSXMgdGhlcmUgYSBk
aWZmZXJlbmNlIGJldHdlZW4gYSBtaXNzaW5nIGxhYmVsIGFuZCBhbiBlbXB0eSBvbmU/IFBlcmhh
cHMgd2UgZG9uJ3QgbmVlZCB0aGUgaGFzTGFiZWwgbWVtYmVyLgorICAgIGJvb2wgaGFzTGFiZWw7
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGxhYmVsOworCisgICAgdmlydHVhbCBDbGFzcyBwYXJhbWV0
ZXJzQ2xhc3MoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBDbGFzczo6UnNhT2FlcFBhcmFtczsg
fQorfTsKKworQ1JZUFRPX0FMR09SSVRITV9QQVJBTUVURVJTX0NBU1RTKFJzYU9hZXBQYXJhbXMp
CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorI2VuZGlmIC8vIENyeXB0
b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dl
YkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcy5oCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAjIworbmF0aXZlClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1OTk0MikKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisy
MDEzLTEyLTAyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBzdXBwb3J0IGZvciBXZWJDcnlwdG8gUlNBLU9BRVAKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTA4NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY3J5cHRvL3N1YnRsZS9yc2Etb2FlcC1rZXkt
bWFuaXB1bGF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3J5cHRvL3N1YnRs
ZS9yc2Etb2FlcC1rZXktbWFuaXB1bGF0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNyeXB0
by9zdWJ0bGUvcnNhLW9hZXAtcGxhaW50ZXh0LWxlbmd0aC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGNyeXB0by9zdWJ0bGUvcnNhLW9hZXAtcGxhaW50ZXh0LWxlbmd0aC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBjcnlwdG8vc3VidGxlL3JzYS1vYWVwLXdyYXAtdW53cmFwLWFlcy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNyeXB0by9zdWJ0bGUvcnNhLW9hZXAtd3Jh
cC11bndyYXAtYWVzLmh0bWw6IEFkZGVkLgorCiAyMDEzLTEyLTAyICBMYXVybyBOZXRvICA8bGF1
cm8ubmV0b0BvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gVXBkYXRlIGxh
eW91dCB0ZXN0cyB0byBuZXdlciBzcGVjLgpJbmRleDogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRs
ZS9yc2Etb2FlcC1rZXktbWFuaXB1bGF0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3JzYS1vYWVwLWtleS1tYW5pcHVsYXRpb24tZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9yc2Etb2Fl
cC1rZXktbWFuaXB1bGF0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQ1IEBACitUZXN0IGdlbmVyYXRpbmcsIGltcG9ydGluZyBhbmQgZXhwb3J0aW5nIFJTQSBrZXlz
IGZvciBSU0EtT0FFUC4gVGVzdCB0aGF0IHRoZXkgY2FuJ3QgYmUgdXNlZCB3aXRoIGFub3RoZXIg
YWxnb3JpdGhtLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworR2VuZXJhdGluZyBh
IGtleSBwYWlyLi4uCitQQVNTIGtleVBhaXIudG9TdHJpbmcoKSBpcyAnW29iamVjdCBLZXlQYWly
XScKK1BBU1Mga2V5UGFpci5wdWJsaWNLZXkudHlwZSBpcyAncHVibGljJworUEFTUyBrZXlQYWly
LnB1YmxpY0tleS5hbGdvcml0aG0ubmFtZSBpcyAncnNhLW9hZXAnCitQQVNTIGtleVBhaXIucHVi
bGljS2V5LmFsZ29yaXRobS5tb2R1bHVzTGVuZ3RoIGlzIDIwNDgKK1BBU1MgYnl0ZXNUb0hleFN0
cmluZyhrZXlQYWlyLnB1YmxpY0tleS5hbGdvcml0aG0ucHVibGljRXhwb25lbnQpIGlzICcwMTAw
MDEnCitQQVNTIGtleVBhaXIucHVibGljS2V5LmFsZ29yaXRobS5oYXNoIGlzIHVuZGVmaW5lZC4K
K1BBU1Mga2V5UGFpci5wcml2YXRlS2V5LnR5cGUgaXMgJ3ByaXZhdGUnCitQQVNTIGtleVBhaXIu
cHJpdmF0ZUtleS5hbGdvcml0aG0ubmFtZSBpcyAncnNhLW9hZXAnCitQQVNTIGtleVBhaXIucHJp
dmF0ZUtleS5hbGdvcml0aG0ubW9kdWx1c0xlbmd0aCBpcyAyMDQ4CitQQVNTIGJ5dGVzVG9IZXhT
dHJpbmcoa2V5UGFpci5wcml2YXRlS2V5LmFsZ29yaXRobS5wdWJsaWNFeHBvbmVudCkgaXMgJzAx
MDAwMScKK1BBU1Mga2V5UGFpci5wcml2YXRlS2V5LmFsZ29yaXRobS5oYXNoIGlzIHVuZGVmaW5l
ZC4KKworVGVzdGluZyB0aGF0IHRoZSBrZXlzIGNhbid0IGJlIHVzZWQgd2l0aCBkaWZmZXJlbnQg
YWxnb3JpdGhtcy4uLgorUEFTUyBjcnlwdG8uc3VidGxlLmVuY3J5cHQoe25hbWU6ICJhZXMtY2Jj
IiwgaXY6IGl2fSwga2V5UGFpci5wcml2YXRlS2V5LCBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoIjAw
IikpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRp
b24gOS4KK1BBU1MgY3J5cHRvLnN1YnRsZS5lbmNyeXB0KHtuYW1lOiAiYWVzLWNiYyIsIGl2OiBp
dn0sIGtleVBhaXIucHVibGljS2V5LCBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoIjAwIikpIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24gOS4KKwor
VHJ5aW5nIHRvIGV4cG9ydCBrZXlzIHRvIHJhdy4uLgorUEFTUyBQcm9taXNlIHJlamVjdGVkIGZv
ciBleHBvcnRpbmcgcHVibGljIGtleQorUEFTUyBQcm9taXNlIHJlamVjdGVkIGZvciBleHBvcnRp
bmcgcHJpdmF0ZSBrZXkKKworRXhwb3J0aW5nIHB1YmxpYyBrZXkgdG8gSldLLi4uCitQQVNTIGp3
a1B1YmxpY0tleS5hbGcgaXMgJ1JTQS1PQUVQJworUEFTUyBqd2tQdWJsaWNLZXkuZXh0cmFjdGFi
bGUgaXMgdHJ1ZQorUEFTUyBqd2tQdWJsaWNLZXkudXNlIGlzICdlbmMnCitQQVNTIGp3a1B1Ymxp
Y0tleS5rdHkgaXMgJ1JTQScKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhCYXNlNjRVUkwucGFyc2Uo
andrUHVibGljS2V5LmUpKSBpcyAnMDEwMDAxJworCitJbXBvcnRpbmcgaXQgYmFjay4uLgorUEFT
UyBleHBvcnRlZFB1YmxpY0tleS50eXBlIGlzICdwdWJsaWMnCitQQVNTIGV4cG9ydGVkUHVibGlj
S2V5LmFsZ29yaXRobS5uYW1lIGlzICdyc2Etb2FlcCcKK1BBU1MgZXhwb3J0ZWRQdWJsaWNLZXku
YWxnb3JpdGhtLm1vZHVsdXNMZW5ndGggaXMgMjA0OAorUEFTUyBieXRlc1RvSGV4U3RyaW5nKGV4
cG9ydGVkUHVibGljS2V5LmFsZ29yaXRobS5wdWJsaWNFeHBvbmVudCkgaXMgJzAxMDAwMScKK1BB
U1MgZXhwb3J0ZWRQdWJsaWNLZXkuYWxnb3JpdGhtLmhhc2gubmFtZSBpcyAnc2hhLTEnCitQQVNT
IGV4cG9ydGVkUHVibGljS2V5LmV4dHJhY3RhYmxlIGlzIHRydWUKK1BBU1MgZXhwb3J0ZWRQdWJs
aWNLZXkudXNhZ2VzIGlzIFsnZW5jcnlwdCcsJ2RlY3J5cHQnLCd3cmFwS2V5JywndW53cmFwS2V5
J10KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3JzYS1vYWVwLWtl
eS1tYW5pcHVsYXRpb24tZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5
cGUKIyMgLTAsMCArMSAjIwordGV4dC9wbGFpbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3Bl
cnR5CkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3Jz
YS1vYWVwLWtleS1tYW5pcHVsYXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9j
cnlwdG8vc3VidGxlL3JzYS1vYWVwLWtleS1tYW5pcHVsYXRpb24uaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvcnNhLW9hZXAta2V5LW1hbmlwdWxhdGlvbi5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jb21tb24uanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgZ2VuZXJhdGluZywgaW1w
b3J0aW5nIGFuZCBleHBvcnRpbmcgUlNBIGtleXMgZm9yIFJTQS1PQUVQLiBUZXN0IHRoYXQgdGhl
eSBjYW4ndCBiZSB1c2VkIHdpdGggYW5vdGhlciBhbGdvcml0aG0uIik7CisKK2pzVGVzdElzQXN5
bmMgPSB0cnVlOworCit2YXIgYWxnb3JpdGhtS2V5R2VuID0geworICAgIG5hbWU6ICJSU0EtT0FF
UCIsCisgICAgLy8gUnNhS2V5R2VuUGFyYW1zCisgICAgbW9kdWx1c0xlbmd0aDogMjA0OCwKKyAg
ICBwdWJsaWNFeHBvbmVudDogbmV3IFVpbnQ4QXJyYXkoWzB4MDEsIDB4MDAsIDB4MDFdKSwgIC8v
IEVxdWl2YWxlbnQgdG8gNjU1MzcKK307Cit2YXIgZXh0cmFjdGFibGUgPSB0cnVlOworCitkZWJ1
ZygiR2VuZXJhdGluZyBhIGtleSBwYWlyLi4uIik7CitjcnlwdG8uc3VidGxlLmdlbmVyYXRlS2V5
KGFsZ29yaXRobUtleUdlbiwgZXh0cmFjdGFibGUsIFsiZW5jcnlwdCIsICJkZWNyeXB0IiwgIndy
YXBLZXkiLCAidW53cmFwS2V5Il0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAga2V5UGFp
ciA9IHJlc3VsdDsKKyAgICBzaG91bGRCZSgia2V5UGFpci50b1N0cmluZygpIiwgIidbb2JqZWN0
IEtleVBhaXJdJyIpOworICAgIHNob3VsZEJlKCJrZXlQYWlyLnB1YmxpY0tleS50eXBlIiwgIidw
dWJsaWMnIik7CisgICAgc2hvdWxkQmUoImtleVBhaXIucHVibGljS2V5LmFsZ29yaXRobS5uYW1l
IiwgIidyc2Etb2FlcCciKTsKKyAgICBzaG91bGRCZSgia2V5UGFpci5wdWJsaWNLZXkuYWxnb3Jp
dGhtLm1vZHVsdXNMZW5ndGgiLCAiMjA0OCIpOworICAgIHNob3VsZEJlKCJieXRlc1RvSGV4U3Ry
aW5nKGtleVBhaXIucHVibGljS2V5LmFsZ29yaXRobS5wdWJsaWNFeHBvbmVudCkiLCAiJzAxMDAw
MSciKTsKKyAgICBzaG91bGRCZVVuZGVmaW5lZCgia2V5UGFpci5wdWJsaWNLZXkuYWxnb3JpdGht
Lmhhc2giKTsKKyAgICBzaG91bGRCZSgia2V5UGFpci5wcml2YXRlS2V5LnR5cGUiLCAiJ3ByaXZh
dGUnIik7CisgICAgc2hvdWxkQmUoImtleVBhaXIucHJpdmF0ZUtleS5hbGdvcml0aG0ubmFtZSIs
ICIncnNhLW9hZXAnIik7CisgICAgc2hvdWxkQmUoImtleVBhaXIucHJpdmF0ZUtleS5hbGdvcml0
aG0ubW9kdWx1c0xlbmd0aCIsICIyMDQ4Iik7CisgICAgc2hvdWxkQmUoImJ5dGVzVG9IZXhTdHJp
bmcoa2V5UGFpci5wcml2YXRlS2V5LmFsZ29yaXRobS5wdWJsaWNFeHBvbmVudCkiLCAiJzAxMDAw
MSciKTsKKyAgICBzaG91bGRCZVVuZGVmaW5lZCgia2V5UGFpci5wcml2YXRlS2V5LmFsZ29yaXRo
bS5oYXNoIik7CisKKyAgICBkZWJ1ZygiXG5UZXN0aW5nIHRoYXQgdGhlIGtleXMgY2FuJ3QgYmUg
dXNlZCB3aXRoIGRpZmZlcmVudCBhbGdvcml0aG1zLi4uIik7CisgICAgaXYgPSBoZXhTdHJpbmdU
b1VpbnQ4QXJyYXkoIjAwMDEwMjAzMDQwNTA2MDcwODA5MGEwYjBjMGQwZTBmIik7CisgICAgc2hv
dWxkVGhyb3coJ2NyeXB0by5zdWJ0bGUuZW5jcnlwdCh7bmFtZTogImFlcy1jYmMiLCBpdjogaXZ9
LCBrZXlQYWlyLnByaXZhdGVLZXksIGhleFN0cmluZ1RvVWludDhBcnJheSgiMDAiKSknKTsKKyAg
ICBzaG91bGRUaHJvdygnY3J5cHRvLnN1YnRsZS5lbmNyeXB0KHtuYW1lOiAiYWVzLWNiYyIsIGl2
OiBpdn0sIGtleVBhaXIucHVibGljS2V5LCBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoIjAwIikpJyk7
CisKKyAgICBkZWJ1ZygiXG5UcnlpbmcgdG8gZXhwb3J0IGtleXMgdG8gcmF3Li4uIik7CisgICAg
cmV0dXJuIGNyeXB0by5zdWJ0bGUuZXhwb3J0S2V5KCdyYXcnLCBrZXlQYWlyLnB1YmxpY0tleSk7
Cit9KS50aGVuKHVuZGVmaW5lZCwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgdGVzdFBhc3NlZCgi
UHJvbWlzZSByZWplY3RlZCBmb3IgZXhwb3J0aW5nIHB1YmxpYyBrZXkiKTsKKyAgICByZXR1cm4g
Y3J5cHRvLnN1YnRsZS5leHBvcnRLZXkoJ3JhdycsIGtleVBhaXIucHJpdmF0ZUtleSk7Cit9KS50
aGVuKHVuZGVmaW5lZCwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgdGVzdFBhc3NlZCgiUHJvbWlz
ZSByZWplY3RlZCBmb3IgZXhwb3J0aW5nIHByaXZhdGUga2V5Iik7CisKKyAgICBkZWJ1ZygiXG5F
eHBvcnRpbmcgcHVibGljIGtleSB0byBKV0suLi4iKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1YnRs
ZS5leHBvcnRLZXkoImp3ayIsIGtleVBhaXIucHVibGljS2V5KTsKK30pLnRoZW4oZnVuY3Rpb24o
cmVzdWx0KSB7CisgICAgandrUHVibGljS2V5QXJyYXkgPSByZXN1bHQ7CisgICAgandrUHVibGlj
S2V5ID0gSlNPTi5wYXJzZShieXRlc1RvQVNDSUlTdHJpbmcoandrUHVibGljS2V5QXJyYXkpKTsK
KyAgICBzaG91bGRCZSgiandrUHVibGljS2V5LmFsZyIsICInUlNBLU9BRVAnIik7CisgICAgc2hv
dWxkQmUoImp3a1B1YmxpY0tleS5leHRyYWN0YWJsZSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUo
Imp3a1B1YmxpY0tleS51c2UiLCAiJ2VuYyciKTsKKyAgICBzaG91bGRCZSgiandrUHVibGljS2V5
Lmt0eSIsICInUlNBJyIpOworICAgIHNob3VsZEJlKCJieXRlc1RvSGV4U3RyaW5nKEJhc2U2NFVS
TC5wYXJzZShqd2tQdWJsaWNLZXkuZSkpIiwgIicwMTAwMDEnIik7CisKKyAgICBkZWJ1ZygiXG5J
bXBvcnRpbmcgaXQgYmFjay4uLiIpOworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmltcG9ydEtl
eSgiandrIiwgandrUHVibGljS2V5QXJyYXksIG51bGwsIGV4dHJhY3RhYmxlLCBbImVuY3J5cHQi
LCAiZGVjcnlwdCIsICJ3cmFwS2V5IiwgInVud3JhcEtleSJdKTsKK30pLnRoZW4oZnVuY3Rpb24o
cmVzdWx0KSB7CisgICAgZXhwb3J0ZWRQdWJsaWNLZXkgPSByZXN1bHQ7CisgICAgc2hvdWxkQmUo
ImV4cG9ydGVkUHVibGljS2V5LnR5cGUiLCAiJ3B1YmxpYyciKTsKKyAgICBzaG91bGRCZSgiZXhw
b3J0ZWRQdWJsaWNLZXkuYWxnb3JpdGhtLm5hbWUiLCAiJ3JzYS1vYWVwJyIpOworICAgIHNob3Vs
ZEJlKCJleHBvcnRlZFB1YmxpY0tleS5hbGdvcml0aG0ubW9kdWx1c0xlbmd0aCIsICIyMDQ4Iik7
CisgICAgc2hvdWxkQmUoImJ5dGVzVG9IZXhTdHJpbmcoZXhwb3J0ZWRQdWJsaWNLZXkuYWxnb3Jp
dGhtLnB1YmxpY0V4cG9uZW50KSIsICInMDEwMDAxJyIpOworICAgIHNob3VsZEJlKCJleHBvcnRl
ZFB1YmxpY0tleS5hbGdvcml0aG0uaGFzaC5uYW1lIiwgIidzaGEtMSciKTsKKyAgICBzaG91bGRC
ZSgiZXhwb3J0ZWRQdWJsaWNLZXkuZXh0cmFjdGFibGUiLCAidHJ1ZSIpOworICAgIHNob3VsZEJl
KCJleHBvcnRlZFB1YmxpY0tleS51c2FnZXMiLCAiWydlbmNyeXB0JywnZGVjcnlwdCcsJ3dyYXBL
ZXknLCd1bndyYXBLZXknXSIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKzwvc2NyaXB0
PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9j
cnlwdG8vc3VidGxlL3JzYS1vYWVwLWtleS1tYW5pcHVsYXRpb24uaHRtbApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFk
ZGVkOiBzdm46bWltZS10eXBlCiMjIC0wLDAgKzEgIyMKK3RleHQvaHRtbApcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3JzYS1v
YWVwLXBsYWludGV4dC1sZW5ndGgtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2NyeXB0by9zdWJ0bGUvcnNhLW9hZXAtcGxhaW50ZXh0LWxlbmd0aC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3JzYS1vYWVwLXBsYWlu
dGV4dC1sZW5ndGgtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAK
K1Rlc3Qgd2hhdCBoYXBwZW5zIHdoZW4gdHJ5aW5nIHRvIGVuY3J5cHQgYSB0b28gbGFyZ2UgcGxh
aW4gdGV4dCB3aXRoIFJTQS1PQUVQLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
SW1wb3J0aW5nIFJTQSBrZXlzLi4uCitFbmNyeXB0aW5nIGEgMjE0IGJ5dGUgYnVmZmVyIHdpdGgg
UlNBLU9BRVAgU0hBLTEsIDIwNDggYml0IGtleS4uLgorUEFTUyBTdWNjZWVkZWQKK0VuY3J5cHRp
bmcgYSAyMTUgYnl0ZSBidWZmZXIuLi4KK1BBU1MgUmVqZWN0ZWQKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBM
YXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3JzYS1vYWVwLXBsYWludGV4dC1sZW5ndGgtZXhwZWN0
ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCArMSAjIwordGV4
dC9wbGFpbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkFkZGVkOiBzdm46ZW9sLXN0
eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5
CkluZGV4OiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3JzYS1vYWVwLXBsYWludGV4dC1sZW5n
dGguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3JzYS1vYWVw
LXBsYWludGV4dC1sZW5ndGguaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2NyeXB0
by9zdWJ0bGUvcnNhLW9hZXAtcGxhaW50ZXh0LWxlbmd0aC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9jb21tb24uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0
PgorZGVzY3JpcHRpb24oIlRlc3Qgd2hhdCBoYXBwZW5zIHdoZW4gdHJ5aW5nIHRvIGVuY3J5cHQg
YSB0b28gbGFyZ2UgcGxhaW4gdGV4dCB3aXRoIFJTQS1PQUVQLiIpOworCitqc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKwordmFyIHB1YmxpY0tleUpTT04gPSB7CisgICAga3R5OiAiUlNBIiwKKyAgICBh
bGc6ICJSU0EtT0FFUCIsCisgICAgbjogInJjQ1VDdjdPYzFIVmFtMURJaEN6cWtuVGhXYXdPcDhR
TGs4Wml5MnAxMEJ5alFGQ2Fqb0ZpeXVBV2wtUjFXWFphZjR4aXRMUnJhY1Q5YWdwekl6Yy1NYkxT
SElHZ1dRR08yMWxHaUlteTVmdFotRDhiSEFxUnoyeTE1cHpENGM0Q0VvdTdYU1NMRG9SblIwUUc1
TXNEaEQ2czJnVjltd0hrcnRrQ3h0TVdkQmktNzdhczh3R21sTlJsZGNPU2daRExLOFVuQ1NnQTFP
Z3VaOTg5YkZ5Yzh0T09FSWIweFVTZlBTejNMUFNDbnlZejY4YURqbUtWZU5ILWlnODU3T1NjeVdi
R3lFeTNCaXc2NHF1bjNqdVVsTldzSjN6bmdrT2R0ZVlXeXR4NVFyNFhLTnM2Ui1NeXlxNzJLVXAw
Mm1KRFppaXlpZ2x4TUxfaTMtX0NlZWNDdyIsCisgICAgZTogIkFRQUIiCit9OworCit2YXIgcHJp
dmF0ZUtleUpTT04gPSB7CisgICAga3R5OiAiUlNBIiwKKyAgICBhbGc6ICJSU0EtT0FFUCIsCisg
ICAgbjogInJjQ1VDdjdPYzFIVmFtMURJaEN6cWtuVGhXYXdPcDhRTGs4Wml5MnAxMEJ5alFGQ2Fq
b0ZpeXVBV2wtUjFXWFphZjR4aXRMUnJhY1Q5YWdwekl6Yy1NYkxTSElHZ1dRR08yMWxHaUlteTVm
dFotRDhiSEFxUnoyeTE1cHpENGM0Q0VvdTdYU1NMRG9SblIwUUc1TXNEaEQ2czJnVjltd0hrcnRr
Q3h0TVdkQmktNzdhczh3R21sTlJsZGNPU2daRExLOFVuQ1NnQTFPZ3VaOTg5YkZ5Yzh0T09FSWIw
eFVTZlBTejNMUFNDbnlZejY4YURqbUtWZU5ILWlnODU3T1NjeVdiR3lFeTNCaXc2NHF1bjNqdVVs
TldzSjN6bmdrT2R0ZVlXeXR4NVFyNFhLTnM2Ui1NeXlxNzJLVXAwMm1KRFppaXlpZ2x4TUxfaTMt
X0NlZWNDdyIsCisgICAgZTogIkFRQUIiLAorICAgIGQ6ICJlTkxTMzdhQ3o3UlhTTlBEX0R0TEJK
Nmo1VDhjU3hkelJCQ2pQYUk2V2NHcUpwMTZscTNVVHd1b0RMQXFsQTlvR1ltMjM4ZHNJV3B1dWNQ
X2xRdGJXZS03U3B4b0k2X3ZtWUdmN1lWVUh2MS1ERjlxaU9tU3JNbWR4TW5WT3pZWFk4UmFUNnRo
UGpuX0o1Y2ZMVjJ4SV9Md3NyTXRtcGRTeU5sZ1gwelRVaHd0dWFoZ0FLTUVDaFlqSDJFbmpIZEh3
NnNZMi13QXBkY1FJN1VMRTBvbzVSemJRWnBtdWhjTjloaUJjMEwzaGhGMHFvNTBtYmwwMl82NV9H
UTdEcFZrWEJ4TmdSQkx6bFBhYm16ekcyb0FoZmVmTGdZbVNDMW9wYUNrWEU2dlJXUU5XTkw0NVJa
TlpGWU0zdW9KZ2hPTXFHZW9jTTBCcGpkQ2hIclBPbEZ2U1EiLAorICAgIHA6ICI0bWlUdUFqS01l
SDV1SjVLQjM5N1FVd2hia1lFZ1NiY0EybWlmbVNrdkUyMDE4Z2I1NXFrQkhLMWVWcnlmMV9tNDNM
TmxjNk9fYWs2Z2Z6ZFpJWnZTNU5DR2pQbDBxMDlwbFVwdThxRk9Tc3BCd0E2N3FHSDc2bEZsWkxu
X2Q0eWdsUzd3ZkxydTRfNVlzOHFMTHMtRHFWTHZpd3Bvc09ueXlXcXdNNUFYcDAiLAorICAgIHE6
ICJ4SFlyemtpdnRtbnpfc0djaG5XR2MwcS1wRE9rS2ljcHRScHYycE1GSUlYeG5GWDVhTWVFWEla
alZ1alh0d1V5MVVsRklOMkdaSlN2eTVLSjc5bXVfWHlObkZITXplZEgtQTNlZTN1OGgxVVVyWkYt
dlV1MV9lNFVfeDY3Tk4xZGVkelVTS3luTjdwRmwzT2t1U2hNQldHVi1jd3pPUGRjVkFmVnVabHhV
TWMiLAorICAgIGRwOiAiZkJ6RHpZRFVCbUJRR29wN0huMGR2Zl9UMjdWNlJxcGN0V28wNzRDUVpj
RmJQMmF0RlZ0S1NqM3ZpV1QzeGlkMlZIemNnaURIZGZwTTNuRVZsRU8xd3dJb25HQ1N2ZGpHRU9a
aWlGVk9qclpBT1Z4QThndU9qeXlGdnFiWGtlMDZWd1BJSVZ2ZktlU1UyenVoYlBfXzF0dDZGX2Z4
b3c0S2IyeG9uR1QwR0drIiwKKyAgICBkcTogImptRTJEaUlQZGh3RGdMWEFRcElhQnFRODFiTzNY
ZlZUX0xSVUxBd3d3d2xQdVFWMTQ4SDA0emxoOVRKNlkyR1pIWW9rVjFVMGVPQnBKeGZrYjdkTFl0
cEpwdWlCalJmNHlJVUVvR2xra0lfUWxKbkZTRnItWWpHUmRmTkhxV0JreGxTTVpMNzcwUjltSUFU
bmRHa0g3ejV4LXI5S3dCWkZDNEZDRzJoZ196RSIsCisgICAgcWk6ICJZQ1hfcEx3Yk1CQTFUaFZI
MFdjd21ueXRxTmNyTUNFd1RtN0J5QTJlVTZuV2JRclVMdmY3bTlfa3pmTFVjanNucEFWbEJRRzVK
TVhNeTBTcTRwdHdieXdzYTUtRzhLQU9PT1IyTDN2NGhDLUV5czlmdGdGTV8zaTBvNDBlZVFINGIz
aGFQYm50ckllTWc4SXpsT3VWWUtmOS0yUXVLRG9XZVJkZDdOc2R4VGsiCit9OwordmFyIGVuY3J5
cHRBbGdvcml0aG0gPSB7bmFtZTogIlJTQS1PQUVQIiwgaGFzaDogInNoYS0xIn07Cit2YXIgZXh0
cmFjdGFibGUgPSB0cnVlOwordmFyIG5vbkV4dHJhY3RhYmxlID0gZmFsc2U7CisKK2RlYnVnKCJJ
bXBvcnRpbmcgUlNBIGtleXMuLi4iKTsKK2NyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCBh
c2NpaVRvVWludDhBcnJheShKU09OLnN0cmluZ2lmeShwdWJsaWNLZXlKU09OKSksIG51bGwsIGV4
dHJhY3RhYmxlLCBbImVuY3J5cHQiLCAiZGVjcnlwdCJdKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkg
eworICAgIHB1YmxpY0tleSA9IHJlc3VsdDsKKyAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5pbXBv
cnRLZXkoImp3ayIsIGFzY2lpVG9VaW50OEFycmF5KEpTT04uc3RyaW5naWZ5KHByaXZhdGVLZXlK
U09OKSksIG51bGwsIGV4dHJhY3RhYmxlLCBbImVuY3J5cHQiLCAiZGVjcnlwdCJdKTsKK30pLnRo
ZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgcHJpdmF0ZUtleSA9IHJlc3VsdDsKKworICAgIGRl
YnVnKCJFbmNyeXB0aW5nIGEgMjE0IGJ5dGUgYnVmZmVyIHdpdGggUlNBLU9BRVAgU0hBLTEsIDIw
NDggYml0IGtleS4uLiIpOworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmVuY3J5cHQoe25hbWU6
ICJSU0EtT0FFUCIsIGhhc2g6ICJTSEEtMSJ9LCBwdWJsaWNLZXksIG5ldyBVaW50OEFycmF5KDIx
NCkpOworfSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgICB0ZXN0UGFzc2VkKCJTdWNjZWVk
ZWQiKTsKKyAgICBkZWJ1ZygiRW5jcnlwdGluZyBhIDIxNSBieXRlIGJ1ZmZlci4uLiIpOworICAg
IHJldHVybiBjcnlwdG8uc3VidGxlLmVuY3J5cHQoe25hbWU6ICJSU0EtT0FFUCIsIGhhc2g6ICJT
SEEtMSJ9LCBwdWJsaWNLZXksIG5ldyBVaW50OEFycmF5KDIxNSkpOworfSkudGhlbihmdW5jdGlv
bihyZXN1bHQpIHsKKyAgICB0ZXN0RmFpbGVkKCJTdWNjZWVkZWQiKTsKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK30sIGZ1bmN0aW9uKHJlc3VsdCkgeworICAgIHRlc3RQYXNzZWQoIlJlamVjdGVkIik7
CisgICAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3JzYS1vYWVw
LXBsYWludGV4dC1sZW5ndGguaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiMj
IC0wLDAgKzEgIyMKK3RleHQvaHRtbApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cklu
ZGV4OiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3JzYS1vYWVwLXdyYXAtdW53cmFwLWFlcy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9yc2Et
b2FlcC13cmFwLXVud3JhcC1hZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvY3J5cHRvL3N1YnRsZS9yc2Etb2FlcC13cmFwLXVud3JhcC1hZXMtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKK1Rlc3Qgd3JhcHBpbmcgYW5kIHVud3Jh
cHBpbmcgQUVTIGtleXMgd2l0aCBSU0EtT0FFUC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK0ltcG9ydGluZyBSU0Ega2V5cy4uLgorSW1wb3J0aW5nIGFuIEFFUyBrZXkuLi4KK1dy
YXBwaW5nIGl0Li4uCitQQVNTIHdyYXBwZWRLZXkudG9TdHJpbmcoKSBpcyAnW29iamVjdCBBcnJh
eUJ1ZmZlcl0nCitVbndyYXBwaW5nIGl0Li4uCitQQVNTIHVud3JhcHBlZEtleS50b1N0cmluZygp
IGlzICdbb2JqZWN0IEtleV0nCitQQVNTIHVud3JhcHBlZEtleS50eXBlIGlzICdzZWNyZXQnCitQ
QVNTIHVud3JhcHBlZEtleS5leHRyYWN0YWJsZSBpcyB0cnVlCitQQVNTIHVud3JhcHBlZEtleS5h
bGdvcml0aG0ubmFtZSBpcyAnYWVzLWNiYycKK1BBU1MgdW53cmFwcGVkS2V5LmFsZ29yaXRobS5s
ZW5ndGggaXMgMjU2CitQQVNTIHVud3JhcHBlZEtleS51c2FnZXMgaXMgWydlbmNyeXB0JywgJ2Rl
Y3J5cHQnXQorRXhwb3J0aW5nIGl0Li4uCitQQVNTIGJ5dGVzVG9IZXhTdHJpbmcodW53cmFwcGVk
S2V5RGF0YSkgaXMgYnl0ZXNUb0hleFN0cmluZyhhZXNLZXlEYXRhKQorCitXcmFwcGluZyB0aGUg
c2FtZSBrZXkgYXMgSldLLi4uCitQQVNTIHdyYXBwZWRLZXkudG9TdHJpbmcoKSBpcyAnW29iamVj
dCBBcnJheUJ1ZmZlcl0nCitVbndyYXBwaW5nIGl0Li4uCitQQVNTIHVud3JhcHBlZEtleS50b1N0
cmluZygpIGlzICdbb2JqZWN0IEtleV0nCitQQVNTIHVud3JhcHBlZEtleS50eXBlIGlzICdzZWNy
ZXQnCitQQVNTIHVud3JhcHBlZEtleS5leHRyYWN0YWJsZSBpcyB0cnVlCitQQVNTIHVud3JhcHBl
ZEtleS5hbGdvcml0aG0ubmFtZSBpcyAnYWVzLWNiYycKK1BBU1MgdW53cmFwcGVkS2V5LmFsZ29y
aXRobS5sZW5ndGggaXMgMjU2CitQQVNTIHVud3JhcHBlZEtleS51c2FnZXMgaXMgWydlbmNyeXB0
JywgJ2RlY3J5cHQnXQorRXhwb3J0aW5nIGl0Li4uCitQQVNTIGJ5dGVzVG9IZXhTdHJpbmcodW53
cmFwcGVkS2V5RGF0YSkgaXMgYnl0ZXNUb0hleFN0cmluZyhhZXNLZXlEYXRhKQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5n
ZXMgb246IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvcnNhLW9hZXAtd3JhcC11bndyYXAtYWVz
LWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiMjIC0wLDAgKzEg
IyMKK3RleHQvcGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpBZGRlZDogc3Zu
OmVvbC1zdHlsZQojIyAtMCwwICsxICMjCituYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBw
cm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9yc2Etb2FlcC13cmFwLXVu
d3JhcC1hZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3Jz
YS1vYWVwLXdyYXAtdW53cmFwLWFlcy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
Y3J5cHRvL3N1YnRsZS9yc2Etb2FlcC13cmFwLXVud3JhcC1hZXMuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDEwMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2NvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxz
Y3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCB3cmFwcGluZyBhbmQgdW53cmFwcGluZyBBRVMga2V5
cyB3aXRoIFJTQS1PQUVQLiIpOworCitqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIHB1Ymxp
Y0tleUpTT04gPSB7CisgICAga3R5OiAiUlNBIiwKKyAgICBhbGc6ICJSU0EtT0FFUCIsCisgICAg
bjogInJjQ1VDdjdPYzFIVmFtMURJaEN6cWtuVGhXYXdPcDhRTGs4Wml5MnAxMEJ5alFGQ2Fqb0Zp
eXVBV2wtUjFXWFphZjR4aXRMUnJhY1Q5YWdwekl6Yy1NYkxTSElHZ1dRR08yMWxHaUlteTVmdFot
RDhiSEFxUnoyeTE1cHpENGM0Q0VvdTdYU1NMRG9SblIwUUc1TXNEaEQ2czJnVjltd0hrcnRrQ3h0
TVdkQmktNzdhczh3R21sTlJsZGNPU2daRExLOFVuQ1NnQTFPZ3VaOTg5YkZ5Yzh0T09FSWIweFVT
ZlBTejNMUFNDbnlZejY4YURqbUtWZU5ILWlnODU3T1NjeVdiR3lFeTNCaXc2NHF1bjNqdVVsTldz
SjN6bmdrT2R0ZVlXeXR4NVFyNFhLTnM2Ui1NeXlxNzJLVXAwMm1KRFppaXlpZ2x4TUxfaTMtX0Nl
ZWNDdyIsCisgICAgZTogIkFRQUIiCit9OworCit2YXIgcHJpdmF0ZUtleUpTT04gPSB7CisgICAg
a3R5OiAiUlNBIiwKKyAgICBhbGc6ICJSU0EtT0FFUCIsCisgICAgbjogInJjQ1VDdjdPYzFIVmFt
MURJaEN6cWtuVGhXYXdPcDhRTGs4Wml5MnAxMEJ5alFGQ2Fqb0ZpeXVBV2wtUjFXWFphZjR4aXRM
UnJhY1Q5YWdwekl6Yy1NYkxTSElHZ1dRR08yMWxHaUlteTVmdFotRDhiSEFxUnoyeTE1cHpENGM0
Q0VvdTdYU1NMRG9SblIwUUc1TXNEaEQ2czJnVjltd0hrcnRrQ3h0TVdkQmktNzdhczh3R21sTlJs
ZGNPU2daRExLOFVuQ1NnQTFPZ3VaOTg5YkZ5Yzh0T09FSWIweFVTZlBTejNMUFNDbnlZejY4YURq
bUtWZU5ILWlnODU3T1NjeVdiR3lFeTNCaXc2NHF1bjNqdVVsTldzSjN6bmdrT2R0ZVlXeXR4NVFy
NFhLTnM2Ui1NeXlxNzJLVXAwMm1KRFppaXlpZ2x4TUxfaTMtX0NlZWNDdyIsCisgICAgZTogIkFR
QUIiLAorICAgIGQ6ICJlTkxTMzdhQ3o3UlhTTlBEX0R0TEJKNmo1VDhjU3hkelJCQ2pQYUk2V2NH
cUpwMTZscTNVVHd1b0RMQXFsQTlvR1ltMjM4ZHNJV3B1dWNQX2xRdGJXZS03U3B4b0k2X3ZtWUdm
N1lWVUh2MS1ERjlxaU9tU3JNbWR4TW5WT3pZWFk4UmFUNnRoUGpuX0o1Y2ZMVjJ4SV9Md3NyTXRt
cGRTeU5sZ1gwelRVaHd0dWFoZ0FLTUVDaFlqSDJFbmpIZEh3NnNZMi13QXBkY1FJN1VMRTBvbzVS
emJRWnBtdWhjTjloaUJjMEwzaGhGMHFvNTBtYmwwMl82NV9HUTdEcFZrWEJ4TmdSQkx6bFBhYm16
ekcyb0FoZmVmTGdZbVNDMW9wYUNrWEU2dlJXUU5XTkw0NVJaTlpGWU0zdW9KZ2hPTXFHZW9jTTBC
cGpkQ2hIclBPbEZ2U1EiLAorICAgIHA6ICI0bWlUdUFqS01lSDV1SjVLQjM5N1FVd2hia1lFZ1Ni
Y0EybWlmbVNrdkUyMDE4Z2I1NXFrQkhLMWVWcnlmMV9tNDNMTmxjNk9fYWs2Z2Z6ZFpJWnZTNU5D
R2pQbDBxMDlwbFVwdThxRk9Tc3BCd0E2N3FHSDc2bEZsWkxuX2Q0eWdsUzd3ZkxydTRfNVlzOHFM
THMtRHFWTHZpd3Bvc09ueXlXcXdNNUFYcDAiLAorICAgIHE6ICJ4SFlyemtpdnRtbnpfc0djaG5X
R2MwcS1wRE9rS2ljcHRScHYycE1GSUlYeG5GWDVhTWVFWElaalZ1alh0d1V5MVVsRklOMkdaSlN2
eTVLSjc5bXVfWHlObkZITXplZEgtQTNlZTN1OGgxVVVyWkYtdlV1MV9lNFVfeDY3Tk4xZGVkelVT
S3luTjdwRmwzT2t1U2hNQldHVi1jd3pPUGRjVkFmVnVabHhVTWMiLAorICAgIGRwOiAiZkJ6RHpZ
RFVCbUJRR29wN0huMGR2Zl9UMjdWNlJxcGN0V28wNzRDUVpjRmJQMmF0RlZ0S1NqM3ZpV1QzeGlk
MlZIemNnaURIZGZwTTNuRVZsRU8xd3dJb25HQ1N2ZGpHRU9aaWlGVk9qclpBT1Z4QThndU9qeXlG
dnFiWGtlMDZWd1BJSVZ2ZktlU1UyenVoYlBfXzF0dDZGX2Z4b3c0S2IyeG9uR1QwR0drIiwKKyAg
ICBkcTogImptRTJEaUlQZGh3RGdMWEFRcElhQnFRODFiTzNYZlZUX0xSVUxBd3d3d2xQdVFWMTQ4
SDA0emxoOVRKNlkyR1pIWW9rVjFVMGVPQnBKeGZrYjdkTFl0cEpwdWlCalJmNHlJVUVvR2xra0lf
UWxKbkZTRnItWWpHUmRmTkhxV0JreGxTTVpMNzcwUjltSUFUbmRHa0g3ejV4LXI5S3dCWkZDNEZD
RzJoZ196RSIsCisgICAgcWk6ICJZQ1hfcEx3Yk1CQTFUaFZIMFdjd21ueXRxTmNyTUNFd1RtN0J5
QTJlVTZuV2JRclVMdmY3bTlfa3pmTFVjanNucEFWbEJRRzVKTVhNeTBTcTRwdHdieXdzYTUtRzhL
QU9PT1IyTDN2NGhDLUV5czlmdGdGTV8zaTBvNDBlZVFINGIzaGFQYm50ckllTWc4SXpsT3VWWUtm
OS0yUXVLRG9XZVJkZDdOc2R4VGsiCit9OwordmFyIHdyYXBBbGdvcml0aG0gPSB7bmFtZTogIlJT
QS1PQUVQIiwgaGFzaDogInNoYS0xIn07Cit2YXIgZXh0cmFjdGFibGUgPSB0cnVlOwordmFyIG5v
bkV4dHJhY3RhYmxlID0gZmFsc2U7CisKK2RlYnVnKCJJbXBvcnRpbmcgUlNBIGtleXMuLi4iKTsK
K2NyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCBhc2NpaVRvVWludDhBcnJheShKU09OLnN0
cmluZ2lmeShwdWJsaWNLZXlKU09OKSksIG51bGwsIGV4dHJhY3RhYmxlLCBbIndyYXBLZXkiLCAi
dW53cmFwS2V5Il0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgcHVibGljS2V5ID0gcmVz
dWx0OworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgYXNjaWlUb1Vp
bnQ4QXJyYXkoSlNPTi5zdHJpbmdpZnkocHJpdmF0ZUtleUpTT04pKSwgbnVsbCwgZXh0cmFjdGFi
bGUsIFsid3JhcEtleSIsICJ1bndyYXBLZXkiXSk7Cit9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkg
eworICAgIHByaXZhdGVLZXkgPSByZXN1bHQ7CisKKyAgICBkZWJ1ZygiSW1wb3J0aW5nIGFuIEFF
UyBrZXkuLi4iKTsKKyAgICBhZXNLZXlEYXRhID0gaGV4U3RyaW5nVG9VaW50OEFycmF5KCI2MDNk
ZWIxMDE1Y2E3MWJlMmI3M2FlZjA4NTdkNzc4MTFmMzUyYzA3M2I2MTA4ZDcyZDk4MTBhMzA5MTRk
ZmY0Iik7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLCBhZXNLZXlE
YXRhLCAiYWVzLWNiYyIsIGV4dHJhY3RhYmxlLCBbImVuY3J5cHQiLCAiZGVjcnlwdCIsICJ3cmFw
S2V5IiwgInVud3JhcEtleSJdKQorfSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgICBhZXNL
ZXkgPSByZXN1bHQ7CisgICAgZGVidWcoIldyYXBwaW5nIGl0Li4uIik7CisKKyAgICByZXR1cm4g
Y3J5cHRvLnN1YnRsZS53cmFwS2V5KCJyYXciLCBhZXNLZXksIHB1YmxpY0tleSwgd3JhcEFsZ29y
aXRobSk7Cit9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgIHdyYXBwZWRLZXkgPSByZXN1
bHQ7CisgICAgc2hvdWxkQmUoIndyYXBwZWRLZXkudG9TdHJpbmcoKSIsICInW29iamVjdCBBcnJh
eUJ1ZmZlcl0nIik7CisKKyAgICBkZWJ1ZygiVW53cmFwcGluZyBpdC4uLiIpOworICAgIHJldHVy
biBjcnlwdG8uc3VidGxlLnVud3JhcEtleSgicmF3Iiwgd3JhcHBlZEtleSwgcHJpdmF0ZUtleSwg
d3JhcEFsZ29yaXRobSwgImFlcy1jYmMiLCBleHRyYWN0YWJsZSwgWyJlbmNyeXB0IiwgImRlY3J5
cHQiXSk7Cit9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgIHVud3JhcHBlZEtleSA9IHJl
c3VsdDsKKyAgICBzaG91bGRCZSgidW53cmFwcGVkS2V5LnRvU3RyaW5nKCkiLCAiJ1tvYmplY3Qg
S2V5XSciKTsKKyAgICBzaG91bGRCZSgidW53cmFwcGVkS2V5LnR5cGUiLCAiJ3NlY3JldCciKTsK
KyAgICBzaG91bGRCZSgidW53cmFwcGVkS2V5LmV4dHJhY3RhYmxlIiwgInRydWUiKTsKKyAgICBz
aG91bGRCZSgidW53cmFwcGVkS2V5LmFsZ29yaXRobS5uYW1lIiwgIidhZXMtY2JjJyIpOworICAg
IHNob3VsZEJlKCJ1bndyYXBwZWRLZXkuYWxnb3JpdGhtLmxlbmd0aCIsICIyNTYiKTsKKyAgICBz
aG91bGRCZSgidW53cmFwcGVkS2V5LnVzYWdlcyIsICJbJ2VuY3J5cHQnLCAnZGVjcnlwdCddIik7
CisKKyAgICBkZWJ1ZygiRXhwb3J0aW5nIGl0Li4uIik7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0
bGUuZXhwb3J0S2V5KCJyYXciLCB1bndyYXBwZWRLZXkpOworfSkudGhlbihmdW5jdGlvbihyZXN1
bHQpIHsKKyAgICB1bndyYXBwZWRLZXlEYXRhID0gcmVzdWx0OworICAgIHNob3VsZEJlKCJieXRl
c1RvSGV4U3RyaW5nKHVud3JhcHBlZEtleURhdGEpIiwgImJ5dGVzVG9IZXhTdHJpbmcoYWVzS2V5
RGF0YSkiKTsKKworICAgIGRlYnVnKCJcbldyYXBwaW5nIHRoZSBzYW1lIGtleSBhcyBKV0suLi4i
KTsKKyAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS53cmFwS2V5KCJqd2siLCBhZXNLZXksIHB1Ymxp
Y0tleSwgd3JhcEFsZ29yaXRobSk7Cit9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgIHdy
YXBwZWRLZXkgPSByZXN1bHQ7CisgICAgc2hvdWxkQmUoIndyYXBwZWRLZXkudG9TdHJpbmcoKSIs
ICInW29iamVjdCBBcnJheUJ1ZmZlcl0nIik7CisKKyAgICBkZWJ1ZygiVW53cmFwcGluZyBpdC4u
LiIpOworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLnVud3JhcEtleSgiandrIiwgd3JhcHBlZEtl
eSwgcHJpdmF0ZUtleSwgd3JhcEFsZ29yaXRobSwgImFlcy1jYmMiLCBleHRyYWN0YWJsZSwgWyJl
bmNyeXB0IiwgImRlY3J5cHQiXSk7Cit9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgIHVu
d3JhcHBlZEtleSA9IHJlc3VsdDsKKyAgICBzaG91bGRCZSgidW53cmFwcGVkS2V5LnRvU3RyaW5n
KCkiLCAiJ1tvYmplY3QgS2V5XSciKTsKKyAgICBzaG91bGRCZSgidW53cmFwcGVkS2V5LnR5cGUi
LCAiJ3NlY3JldCciKTsKKyAgICBzaG91bGRCZSgidW53cmFwcGVkS2V5LmV4dHJhY3RhYmxlIiwg
InRydWUiKTsKKyAgICBzaG91bGRCZSgidW53cmFwcGVkS2V5LmFsZ29yaXRobS5uYW1lIiwgIidh
ZXMtY2JjJyIpOworICAgIHNob3VsZEJlKCJ1bndyYXBwZWRLZXkuYWxnb3JpdGhtLmxlbmd0aCIs
ICIyNTYiKTsKKyAgICBzaG91bGRCZSgidW53cmFwcGVkS2V5LnVzYWdlcyIsICJbJ2VuY3J5cHQn
LCAnZGVjcnlwdCddIik7CisKKyAgICBkZWJ1ZygiRXhwb3J0aW5nIGl0Li4uIik7CisgICAgcmV0
dXJuIGNyeXB0by5zdWJ0bGUuZXhwb3J0S2V5KCJyYXciLCB1bndyYXBwZWRLZXkpOworfSkudGhl
bihmdW5jdGlvbihyZXN1bHQpIHsKKyAgICB1bndyYXBwZWRLZXlEYXRhID0gcmVzdWx0OworICAg
IHNob3VsZEJlKCJieXRlc1RvSGV4U3RyaW5nKHVud3JhcHBlZEtleURhdGEpIiwgImJ5dGVzVG9I
ZXhTdHJpbmcoYWVzS2V5RGF0YSkiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30pOworPC9zY3Jp
cHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3Rz
L2NyeXB0by9zdWJ0bGUvcnNhLW9hZXAtd3JhcC11bndyYXAtYWVzLmh0bWwKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpB
ZGRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMCwwICsxICMjCit0ZXh0L2h0bWwKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBwcm9wZXJ0eQo=
</data>
<flag name="review"
          id="241551"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>