<?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>123474</bug_id>
          
          <creation_ts>2013-10-29 14:43:58 -0700</creation_ts>
          <short_desc>Add a crypto algorithm abstraction</short_desc>
          <delta_ts>2013-10-31 10:12:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>944620</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-29 14:43:58 -0700</bug_when>
    <thetext>Add a base interface that individual algorithms could implement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944630</commentid>
    <comment_count>1</comment_count>
      <attachid>215432</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-29 15:00:38 -0700</bug_when>
    <thetext>Created attachment 215432
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944635</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-29 15:02:25 -0700</bug_when>
    <thetext>Attachment 215432 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/crypto/CryptoAlgorithm.cpp&apos;, u&apos;Source/WebCore/crypto/CryptoAlgorithm.h&apos;, u&apos;Source/WebCore/crypto/CryptoAlgorithmParameters.h&apos;, u&apos;Source/WebCore/crypto/CryptoAlgorithmRegistry.cpp&apos;, u&apos;Source/WebCore/crypto/CryptoAlgorithmRegistry.h&apos;, u&apos;Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp&apos;]&quot; exit_code: 1
Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp:31:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp:32:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebCore/crypto/CryptoAlgorithmRegistry.h:32:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/crypto/CryptoAlgorithm.h:29:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/crypto/CryptoAlgorithm.h:57:  The parameter name &quot;data&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 5 in 8 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>944636</commentid>
    <comment_count>3</comment_count>
      <attachid>215432</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-29 15:08:11 -0700</bug_when>
    <thetext>Comment on attachment 215432
proposed patch

Attachment 215432 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/17508002</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944650</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-29 15:31:39 -0700</bug_when>
    <thetext>The build failure is OK, this just depends on one of the previous patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944654</commentid>
    <comment_count>5</comment_count>
      <attachid>215432</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-29 15:44:22 -0700</bug_when>
    <thetext>Comment on attachment 215432
proposed patch

Attachment 215432 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/17158150</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945558</commentid>
    <comment_count>6</comment_count>
      <attachid>215432</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-10-31 09:52:57 -0700</bug_when>
    <thetext>Comment on attachment 215432
proposed patch

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

&gt; Source/WebCore/crypto/CryptoAlgorithm.h:32
&gt; +#include &lt;wtf/Vector.h&gt;
&gt; +#include &quot;CryptoAlgorithmIdentifier.h&quot;
&gt; +#include &quot;CryptoKeyFormat.h&quot;
&gt; +#include &quot;CryptoKeyUsage.h&quot;

Sort please.

&gt; Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp:39
&gt; +//    registerAlgorithm(CryptoAlgorithmHMAC::m_name, CryptoAlgorithmHMAC::m_identifier, CryptoAlgorithmHMAC::create);
&gt; +//    registerAlgorithm(CryptoAlgorithmSHA1::m_name, CryptoAlgorithmSHA1::m_identifier, CryptoAlgorithmSHA1::create);

We don&apos;t usually check in commented out code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945561</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-31 10:12:22 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r158363&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215432</attachid>
            <date>2013-10-29 15:00:38 -0700</date>
            <delta_ts>2013-10-31 09:52:56 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>CryptoAlgorithm.txt</filename>
            <type>text/plain</type>
            <size>34383</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1ODIyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEzLTEwLTI5ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIGNyeXB0byBhbGdv
cml0aG0gYWJzdHJhY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMzQ3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgd29ya3Mgc2xpZ2h0bHkgZGlmZmVyZW50bHkgdGhhbiBXZWJDcnlwdG8g
aW1wbGllcy4gV2UgaGF2ZSBzZXBhcmF0ZSBjbGFzc2VzCisgICAgICAgIGZvciBhbGdvcml0aG0g
YW5kIGl0cyBwYXJhbWV0ZXJzLCB3aGlsZSBXZWJDcnlwdG8gcHV0cyB0aGVtIGluIHRoZSBzYW1l
IGRpY3Rpb25hcnkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6IEFkZGVkIG5ldyBmaWxlcy4KKworICAgICAgICAqIGNyeXB0by9DcnlwdG9BbGdvcml0aG0u
Y3BwOiBBZGRlZC4gQXMgbW9zdCBhbGdvcml0aG1zIGRvbid0IGltcGxlbWVudCBtb3N0CisgICAg
ICAgIG9wZXJhdGlvbnMsIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIGp1c3QgcmFpc2UgYW4gZXhj
ZXB0aW9uLgorICAgICAgICAqIGNyeXB0by9DcnlwdG9BbGdvcml0aG0uaDogQWRkZWQuCisKKyAg
ICAgICAgKiBjcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oOiBBZGRlZC4gQmFzZSBj
bGFzcyBmb3IgbnVtZXJvdXMgZnV0dXJlIHBhcmFtZXRlcgorICAgICAgICBkaWN0aW9uYXJpZXMs
IHN1Y2ggYXMgSG1hY1BhcmFtcyBvciBIbWFjS2V5UGFyYW1zLgorCisgICAgICAgICogY3J5cHRv
L0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcDogQWRkZWQuCisgICAgICAgICogY3J5cHRvL0Ny
eXB0b0FsZ29yaXRobVJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAgICAgICBUaGUgcmVnaXN0cnkgZGVj
b3VwbGVzIHVuaXZlcnNhbCBiaW5kaW5ncyBjb2RlIGZyb20gYWxnb3JpdGhtcyB0aGF0IG1heSBv
ciBtYXkgbm90CisgICAgICAgIGJlIGltcGxlbWVudGVkIG9uIGVhY2ggcGxhdGZvcm0uCisKKyAg
ICAgICAgKiBjcnlwdG8vbWFjOiBBZGRlZC4KKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0Fs
Z29yaXRobVJlZ2lzdHJ5TWFjLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9B
bGdvcml0aG1SZWdpc3RyeTo6cGxhdGZvcm1SZWdpc3RlckFsZ29yaXRobXMpOiBBbGdvcml0aG1z
IGltcGxlbWVudGVkCisgICAgICAgIG9uIE1hYyB3aWxsIGJlIHJlZ2lzdGVyZWQgYnkgdGhpcyBm
dW5jdGlvbi4KKwogMjAxMy0xMC0yOSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CiAKICAgICAgICAgVHJ5IHRvIGtlZXAgTVNWQyBoYXBweS4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1ODIw
OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtNTU0Miw2ICs1NTQyLDkgQEAKIAkJRTE2OTgyNjAxMTM0NjM2QTAw
ODk0MTE1IC8qIE9iakNSdW50aW1lT2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTE2OTgyNUYxMTM0NjM2QTAwODk0MTE1IC8qIE9iakNSdW50
aW1lT2JqZWN0Lm1tICovOyB9OwogCQlFMTZBODRGOTE0Qzg1Q0NDMDAyOTc3REYgLyogQ1NTQm9y
ZGVySW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTE2QTg0RjcxNEM4NUNDQzAwMjk3N0RGIC8qIENTU0JvcmRlckltYWdlLmNwcCAqLzsgfTsK
IAkJRTE2QTg0RkExNEM4NUNDQzAwMjk3N0RGIC8qIENTU0JvcmRlckltYWdlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTZBODRGODE0Qzg1Q0NDMDAy
OTc3REYgLyogQ1NTQm9yZGVySW1hZ2UuaCAqLzsgfTsKKwkJRTE3MkFGNkQxODBGMjRDNjAwRkJB
REI5IC8qIENyeXB0b0FsZ29yaXRobS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMTcyQUY2QjE4MEYyNEM2MDBGQkFEQjkgLyogQ3J5cHRvQWxnb3Jp
dGhtLmNwcCAqLzsgfTsKKwkJRTE3MkFGNkUxODBGMjRDNjAwRkJBREI5IC8qIENyeXB0b0FsZ29y
aXRobS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3
MkFGNkMxODBGMjRDNjAwRkJBREI5IC8qIENyeXB0b0FsZ29yaXRobS5oICovOyB9OworCQlFMTcy
QUY3NDE4MEYzNTI1MDBGQkFEQjkgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnlNYWMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3MkFGNzIxODBG
MzUyNTAwRkJBREI5IC8qIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5TWFjLmNwcCAqLzsgfTsKIAkJ
RTE3QjQ5MTUxNkE5QjA5NDAwMUM4ODM5IC8qIFRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTdCNDkxMzE2QTlCMDkzMDAx
Qzg4MzkgLyogVHJhbnNpdGlvbkV2ZW50LmNwcCAqLzsgfTsKIAkJRTE3QjQ5MTYxNkE5QjA5NDAw
MUM4ODM5IC8qIFRyYW5zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTE3QjQ5MTQxNkE5QjA5MzAwMUM4ODM5IC8qIFRyYW5zaXRpb25F
dmVudC5oICovOyB9OwogCQlFMTdCNDkyMTE2QTlCOEZGMDAxQzg4MzkgLyogSlNUcmFuc2l0aW9u
RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUx
N0I0OTFGMTZBOUI4RkYwMDFDODgzOSAvKiBKU1RyYW5zaXRpb25FdmVudC5oICovOyB9OwpAQCAt
NTYwMyw2ICs1NjA2LDcgQEAKIAkJRTFDNDE2MTcwRjY1NjMxODAwOTJEMkZCIC8qIENyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMUM0MTYxNjBGNjU2MzE4MDA5MkQyRkIgLyogQ3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sLmNwcCAqLzsgfTsKIAkJRTFDNERFNjkwRUE3NUMxRTAwMjNDQ0Q2IC8qIEFjdGl2ZURP
TU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTFDNERFNjgwRUE3NUMxRTAwMjNDQ0Q2IC8qIEFjdGl2ZURPTU9iamVjdC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxQzRERTZFMEVBNzVDNjUw
MDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDNERFNkQwRUE3NUM2NTAwMjNDQ0Q2IC8qIEFjdGl2ZURP
TU9iamVjdC5jcHAgKi87IH07CisJCUUxQzY1NzI3MTgxNkY5RkUwMDI1NkNERCAvKiBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMUM2NTcyNjE4MTZGOUZFMDAyNTZDREQgLyogQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycy5oICovOyB9OwogCQlFMUM4QkU1RDBFOEJEMTVBMDA2NENCN0QgLyogSlNXb3JrZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDOEJF
NUMwRThCRDE1QTAwNjRDQjdEIC8qIEpTV29ya2VyLmNwcCAqLzsgfTsKIAkJRTFDQTVDQkMwRThD
RENBRjAwRThFRjkwIC8qIEpTV29ya2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQ0E1Q0JCMEU4Q0RDQUYwMEU4RUY5MCAvKiBKU1dv
cmtlckN1c3RvbS5jcHAgKi87IH07CiAJCUUxQ0FBNUM2MEU4QkQyMzYwMEE3M0VDQSAvKiBKU1dv
cmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFD
QUE1QzUwRThCRDIzNjAwQTczRUNBIC8qIEpTV29ya2VyLmggKi87IH07CkBAIC01NjI0LDYgKzU2
MjgsOCBAQAogCQlFMUZGOEY2NDE4MDc0NUQ4MDAxMzI2NzQgLyogSlNTdWJ0bGVDcnlwdG8uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRjhGNjIx
ODA3NDVEODAwMTMyNjc0IC8qIEpTU3VidGxlQ3J5cHRvLmNwcCAqLzsgfTsKIAkJRTFGRjhGNjUx
ODA3NDVEODAwMTMyNjc0IC8qIEpTU3VidGxlQ3J5cHRvLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZGOEY2MzE4MDc0NUQ4MDAxMzI2NzQgLyogSlNT
dWJ0bGVDcnlwdG8uaCAqLzsgfTsKIAkJRTFGRjhGNjgxODA3NDYwODAwMTMyNjc0IC8qIEpTU3Vi
dGxlQ3J5cHRvQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUxRkY4RjY2MTgwNzQ2MDgwMDEzMjY3NCAvKiBKU1N1YnRsZUNyeXB0b0N1c3Rv
bS5jcHAgKi87IH07CisJCUUxRkY4RjZDMTgwREI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0
aG1SZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMUZGOEY2QTE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnku
Y3BwICovOyB9OworCQlFMUZGOEY2RDE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3JpdGht
UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUxRkY4RjZCMTgwREI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oICov
OyB9OwogCQlFNDAxQzI3NTE3Q0U1M0VDMDBDNDFBMzUgLyogRWxlbWVudEl0ZXJhdG9yQXNzZXJ0
aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQw
MUMyNzQxN0NFNTNFQzAwQzQxQTM1IC8qIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaCAqLzsg
fTsKIAkJRTQyOTVGQTQxMkIwNjE0RTAwRDFBQ0UwIC8qIFJlc291cmNlTG9hZFByaW9yaXR5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDI5NUZBMzEy
QjA2MTRFMDBEMUFDRTAgLyogUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDMxMDVCODE2NzUwRjBDMDBEQjJG
QjggLyogTm9kZVRyYXZlcnNhbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNDMxMDVCNzE2NzUwRjBDMDBEQjJGQjggLyogTm9kZVRyYXZlcnNhbC5j
cHAgKi87IH07CkBAIC0xMjUyNyw2ICsxMjUzMyw5IEBACiAJCUUxNjk4MjVGMTEzNDYzNkEwMDg5
NDExNSAvKiBPYmpDUnVudGltZU9iamVjdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IE9iakNSdW50aW1lT2JqZWN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMTZBODRGNzE0Qzg1Q0NDMDAyOTc3REYgLyogQ1NTQm9yZGVySW1hZ2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTQm9yZGVySW1hZ2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTZBODRGODE0Qzg1Q0NDMDAyOTc3REYgLyog
Q1NTQm9yZGVySW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTQm9y
ZGVySW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE3MkFGNkIxODBGMjRD
NjAwRkJBREI5IC8qIENyeXB0b0FsZ29yaXRobS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDcnlwdG9BbGdvcml0aG0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMTcyQUY2QzE4MEYyNEM2MDBGQkFEQjkgLyogQ3J5cHRvQWxnb3JpdGhtLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMTcyQUY3MjE4MEYzNTI1MDBGQkFEQjkgLyogQ3J5cHRv
QWxnb3JpdGhtUmVnaXN0cnlNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnlNYWMuY3BwOyBwYXRoID0gbWFjL0NyeXB0b0Fs
Z29yaXRobVJlZ2lzdHJ5TWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3
NjU4MEMxODBERjNBMDAwNUE5NkQxIC8qIE9FU0VsZW1lbnRJbmRleFVpbnQuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE9F
U0VsZW1lbnRJbmRleFVpbnQuaWRsOyBwYXRoID0gY2FudmFzL09FU0VsZW1lbnRJbmRleFVpbnQu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTdCNDkwQjE2QTk3MjY5MDAxQzg4
MzkgLyogVHJhbnNpdGlvbkV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBUcmFuc2l0
aW9uRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTdCNDkxMzE2QTlC
MDkzMDAxQzg4MzkgLyogVHJhbnNpdGlvbkV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFRyYW5zaXRpb25FdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMjU5Nyw2ICsxMjYwNiw3IEBACiAJCUUxQzQxNjE2MEY2NTYzMTgwMDkyRDJG
QiAvKiBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTFDNERFNjgwRUE3NUMxRTAwMjNDQ0Q2IC8qIEFjdGl2ZURPTU9i
amVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY3RpdmVET01PYmplY3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFDNERFNkQwRUE3NUM2NTAwMjNDQ0Q2
IC8qIEFjdGl2ZURPTU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBY3RpdmVET01PYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
MUM2NTcyNjE4MTZGOUZFMDAyNTZDREQgLyogQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQzZDRkMyMTc0NkQyOTMwMDdCODdB
MSAvKiBET01XaW5kb3dDb25zdHJ1Y3RvcnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVdpbmRvd0NvbnN0cnVjdG9y
cy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQzhCRTVDMEU4QkQxNUEwMDY0
Q0I3RCAvKiBKU1dvcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1dvcmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQ0E1Q0JCMEU4
Q0RDQUYwMEU4RUY5MCAvKiBKU1dvcmtlckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1dvcmtlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMjYyMCw2ICsxMjYzMCw4IEBACiAJCUUxRkY4RjYyMTgwNzQ1RDgwMDEzMjY3
NCAvKiBKU1N1YnRsZUNyeXB0by5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1N1YnRsZUNyeXB0by5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUx
RkY4RjYzMTgwNzQ1RDgwMDEzMjY3NCAvKiBKU1N1YnRsZUNyeXB0by5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1N1YnRsZUNyeXB0by5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMUZGOEY2NjE4MDc0NjA4MDAxMzI2NzQgLyogSlNTdWJ0bGVDcnlwdG9DdXN0
b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTdWJ0bGVDcnlw
dG9DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMUZGOEY2QTE4MERC
NUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMUZGOEY2QjE4MERCNUJFMDAxMzI2NzQgLyogQ3J5
cHRvQWxnb3JpdGhtUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTQwMUMyNzQxN0NFNTNFQzAwQzQxQTM1IC8qIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9u
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDA2RjNGQjExOTgzMDdEMDA5RDU5
RDYgLyogQ29sb3JEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENvbG9yRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MUVBMDM4MTE5
ODM2REIwMDcxMEJDNSAvKiBDU1NQcm9wZXJ0eU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENTU1Byb3BlcnR5TmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjAwNzAsNiArMjAwODIsMTQgQEAKIAkJCW5hbWUgPSBvYmpjOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJRTE3MkFGNzExODBGMzQzNDAwRkJBREI5
IC8qIG1hYyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
RTE3MkFGNzIxODBGMzUyNTAwRkJBREI5IC8qIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5TWFjLmNw
cCAqLywKKwkJCSk7CisJCQluYW1lID0gbWFjOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKIAkJRTFDOEJFNEIwRThCRDBEMTAwNjRDQjdEIC8qIFRocmVhZHMgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjAxODIsOCArMjAyMDIsMTQgQEAK
IAkJRTFGRjhGNUIxODA3MzYyQjAwMTMyNjc0IC8qIGNyeXB0byAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTE3MkFGNzExODBGMzQzNDAwRkJBREI5IC8q
IG1hYyAqLywKKwkJCQlFMTcyQUY2QjE4MEYyNEM2MDBGQkFEQjkgLyogQ3J5cHRvQWxnb3JpdGht
LmNwcCAqLywKKwkJCQlFMTcyQUY2QzE4MEYyNEM2MDBGQkFEQjkgLyogQ3J5cHRvQWxnb3JpdGht
LmggKi8sCiAJCQkJRTE1N0E4RUExODE4NTFBQzAwOUY4MjFEIC8qIENyeXB0b0FsZ29yaXRobURl
c2NyaXB0aW9uQnVpbGRlci5jcHAgKi8sCiAJCQkJRTE1N0E4RUIxODE4NTFBQzAwOUY4MjFEIC8q
IENyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlci5oICovLAorCQkJCUUxQzY1NzI2MTgx
NkY5RkUwMDI1NkNERCAvKiBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmggKi8sCisJCQkJRTFG
RjhGNkExODBEQjVCRTAwMTMyNjc0IC8qIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcCAqLywK
KwkJCQlFMUZGOEY2QjE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnku
aCAqLywKIAkJCQlFMTU3QThEQzE4MTcyQzJDMDA5RjgyMUQgLyogQ3J5cHRvS2V5LmlkbCAqLywK
IAkJCQlFMTU3QThFMjE4MTczQTNBMDA5RjgyMUQgLyogQ3J5cHRvS2V5LmNwcCAqLywKIAkJCQlF
MTU3QThFMzE4MTczQTNBMDA5RjgyMUQgLyogQ3J5cHRvS2V5LmggKi8sCkBAIC0yMTYyMyw2ICsy
MTY0OSw3IEBACiAJCQkJRkQ1Njg2Q0MxM0FDMTgxNDAwQjY5QzY4IC8qIEF1ZGlvQnVmZmVyQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE1RkZDMTJCMDI2NzYwMEMxQTM1OSAvKiBB
dWRpb0J1ZmZlclNvdXJjZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDdDMTJCMDI2
RjcwMEMxQTM1OSAvKiBBdWRpb0J1cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTFGRjhGNkQxODBE
QjVCRTAwMTMyNjc0IC8qIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwN0M1OUI1RTE3RjRCMjA4MDAwRkJDQkIgLyogSlNBdWRpb1N0cmVhbVRyYWNrLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDMxNjA3RTEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9DaGFubmVs
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAwNTEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9D
b250ZXh0LmggaW4gSGVhZGVycyAqLywKQEAgLTIyNjM2LDYgKzIyNjYzLDcgQEAKIAkJCQkwNzI3
N0U1MzE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbVRyYWNrLmggaW4gSGVhZGVycyAq
LywKIAkJCQlEMzU5RDc4QTEyOUNBMjcxMDAwNkU1RDIgLyogSFRNTERldGFpbHNFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBOEVBNzlGQTBBMTkxNkRGMDBBOEVGNUYgLyogSFRNTERpcmVj
dG9yeUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUxQzY1NzI3MTgxNkY5RkUwMDI1NkNE
RCAvKiBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVB
N0NCNzBBMTkyQjlDMDBBOEVGNUYgLyogSFRNTERpdkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4RUE3OUY3MEExOTE2REYwMEE4RUY1RiAvKiBIVE1MRExpc3RFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5M0YxOThFNTA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTERvY3VtZW50Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTIzMDE4LDYgKzIzMDQ2LDcgQEAKIAkJCQkxQUUyQUEyNzBBMUNE
QUI0MDBCNDJCMjUgLyogSlNIVE1MRmllbGRTZXRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQUUyQUEyOTBBMUNEQUI0MDBCNDJCMjUgLyogSlNIVE1MRm9udEVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTlCRjlBODgxMTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMTcyQUY2RTE4MEYyNEM2MDBGQkFE
QjkgLyogQ3J5cHRvQWxnb3JpdGhtLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEQwNjRGQzBBMjND
MENDMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
NDkxOEM3MEJGRUEwNTAwMDlENjMxNiAvKiBKU0hUTUxGcmFtZUVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDOTI2RjgxMEMwNTUyNDcwMDgyNzc2QiAvKiBKU0hUTUxGcmFtZVNldEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjYwNTMsNiArMjYwODIsNyBAQAogCQkJCTFDODFCQTA5
MEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQxOEY4ODA0MEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTA3M0JFMzRGMTdEMTgxODMwMDJCRDQzMSAvKiBSVENJY2VDYW5k
aWRhdGVEZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUxNzJBRjZEMTgwRjI0QzYw
MEZCQURCOSAvKiBDcnlwdG9BbGdvcml0aG0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRBMTVF
QzkxMkIwM0Y1MDAwM0E1ODNBIC8qIEpTQW5hbHlzZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTY1REYzMURBMDlEMUMxMjMwMDBCRTMyNSAvKiBKU0F0dHIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkMyRUQ2QkMwQzZCRDJGMDAwOTIwQkZGIC8qIEpTQXR0ckN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTI3MTYwLDYgKzI3MTkwLDcgQEAKIAkJCQk5MzkxQTk5QzE2MjlENzAwMDAy
OTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTNDNEE0MTYxNjI5REY1QTAwQzNFQjZFIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCODg5MEIxNjdEMkZBMTAwMTBDREE1IC8qIFNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRTE3MkFGNzQxODBG
MzUyNTAwRkJBREI5IC8qIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5TWFjLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDMjQ0MUM0MEU4QjY1RDAwMDU1MzIwRiAvKiBTY3JvbGxWaWV3LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTkzNTM2NzZCMDlBRUQ4OEIwMEQzNUNENiAvKiBTY3JvbGxWaWV3TWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjU1QjNERDExMjUxRjEyRDAwM0VGMjY5IC8qIFNlYXJj
aElucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3NTI1LDYgKzI3NTU2LDcgQEAKIAkJ
CQlCMkFGRkM5OTBEMDBBNURGMDAzMDA3NEQgLyogVGV4dENvZGVjTWFjLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUIyQzNEQTNGMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29kZWNVc2VyRGVmaW5l
ZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkMzREE0MTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4
dENvZGVjVVRGMTYuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTFGRjhGNkMxODBEQjVCRTAwMTMy
Njc0IC8qIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkz
NDNDQjgxMTJGMjVFNTEwMDMzQzVFRSAvKiBUZXh0Q29kZWNVVEY4LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0MkI5N0M5MTMxMzg5NDMwMDhCRUY0QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCQzg0QjMxMjM3MTE4MDAwMEM2MTYxIC8qIFRl
eHREb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0
by9DcnlwdG9BbGdvcml0aG0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0
by9DcnlwdG9BbGdvcml0aG0uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvY3J5
cHRvL0NyeXB0b0FsZ29yaXRobS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvQWxnb3Jp
dGhtLmgiCisKKyNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKKworI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDcnlwdG9BbGdvcml0aG06OkNyeXB0
b0FsZ29yaXRobSgpCit7Cit9CisKK0NyeXB0b0FsZ29yaXRobTo6fkNyeXB0b0FsZ29yaXRobSgp
Cit7Cit9CisKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtOjplbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8Q3J5cHRvT3Bl
cmF0aW9uRGF0YT4mLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25D
b2RlJiBlYykKK3sKKyAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworfQorCit2b2lkIENyeXB0
b0FsZ29yaXRobTo6ZGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29u
c3QgQ3J5cHRvS2V5JiwgY29uc3QgVmVjdG9yPENyeXB0b09wZXJhdGlvbkRhdGE+Jiwgc3RkOjp1
bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgZWMg
PSBOT1RfU1VQUE9SVEVEX0VSUjsKK30KKwordm9pZCBDcnlwdG9BbGdvcml0aG06OnNpZ24oY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IFZl
Y3RvcjxDcnlwdG9PcGVyYXRpb25EYXRhPiYsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBl
cj4sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Cit9
CisKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtOjp2ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBj
b25zdCBWZWN0b3I8Q3J5cHRvT3BlcmF0aW9uRGF0YT4mLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlz
ZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBlYyA9IE5PVF9TVVBQT1JURURf
RVJSOworfQorCit2b2lkIENyeXB0b0FsZ29yaXRobTo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnMmLCBjb25zdCBWZWN0b3I8Q3J5cHRvT3BlcmF0aW9uRGF0YT4mLCBzdGQ6
OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBl
YyA9IE5PVF9TVVBQT1JURURfRVJSOworfQorCit2b2lkIENyeXB0b0FsZ29yaXRobTo6Z2VuZXJh
dGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGJvb2wsIENyeXB0b0tleVVz
YWdlLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJiBlYykK
K3sKKyAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworfQorCit2b2lkIENyeXB0b0FsZ29yaXRo
bTo6ZGVyaXZlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlw
dG9LZXkmLCBDcnlwdG9BbGdvcml0aG0qLCBib29sLCBDcnlwdG9LZXlVc2FnZSwgc3RkOjp1bmlx
dWVfcHRyPFByb21pc2VXcmFwcGVyPiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgZWMgPSBO
T1RfU1VQUE9SVEVEX0VSUjsKK30KKwordm9pZCBDcnlwdG9BbGdvcml0aG06OmRlcml2ZUJpdHMo
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIHVuc2ln
bmVkIGxvbmcsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4sIEV4Y2VwdGlvbkNvZGUm
IGVjKQoreworICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Cit9CisKK3ZvaWQgQ3J5cHRvQWxn
b3JpdGhtOjppbXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIENyeXB0
b0tleUZvcm1hdCwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIGJvb2wsIENyeXB0b0tleVVz
YWdlLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJiBlYykK
K3sKKyAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworfQorCit2b2lkIENyeXB0b0FsZ29yaXRo
bTo6ZXhwb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBDcnlwdG9LZXlG
b3JtYXQsIGNvbnN0IENyeXB0b0tleSYsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4s
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Cit9CisK
K3ZvaWQgQ3J5cHRvQWxnb3JpdGhtOjp3cmFwS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnMmLCBDcnlwdG9LZXlGb3JtYXQsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b0tl
eSYsIENyeXB0b0FsZ29yaXRobSosIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4sIEV4
Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Cit9CisKK3Zv
aWQgQ3J5cHRvQWxnb3JpdGhtOjp1bndyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycyYsIENyeXB0b0tleUZvcm1hdCwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIGNvbnN0
IENyeXB0b0tleSYsIENyeXB0b0FsZ29yaXRobSosIENyeXB0b0FsZ29yaXRobSosIGJvb2wsIENy
eXB0b0tleVVzYWdlLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25D
b2RlJiBlYykKK3sKKyAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworfQorCit9CisKKyNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDcnlwdG9BbGdvcml0
aG1faAorI2RlZmluZSBDcnlwdG9BbGdvcml0aG1faAorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJDcnlw
dG9LZXlGb3JtYXQuaCIKKyNpbmNsdWRlICJDcnlwdG9LZXlVc2FnZS5oIgorCisjaWYgRU5BQkxF
KFNVQlRMRV9DUllQVE8pCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordHlwZWRlZiBpbnQgRXhj
ZXB0aW9uQ29kZTsKKworY2xhc3MgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyczsKK2NsYXNzIENy
eXB0b0tleTsKK2NsYXNzIFByb21pc2VXcmFwcGVyOworCisvLyBEYXRhIGlzIG11dGFibGUsIHNv
IGFzeW5jIG9wZXJhdGlvbnMgc2hvdWxkIGNvcHkgaXQgZmlyc3QuCit0eXBlZGVmIHN0ZDo6cGFp
cjxjb25zdCBjaGFyKiwgc2l6ZV90PiBDcnlwdG9PcGVyYXRpb25EYXRhOworCitjbGFzcyBDcnlw
dG9BbGdvcml0aG0geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENyeXB0b0FsZ29yaXRobSkK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5DcnlwdG9BbGdvcml0aG0oKTsKKworICAgIHZpcnR1YWwg
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgPSAwOworCisgICAg
dmlydHVhbCB2b2lkIGVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNv
bnN0IENyeXB0b0tleSYsIGNvbnN0IFZlY3RvcjxDcnlwdG9PcGVyYXRpb25EYXRhPiYsIHN0ZDo6
dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5
cHRvS2V5JiwgY29uc3QgVmVjdG9yPENyeXB0b09wZXJhdGlvbkRhdGE+Jiwgc3RkOjp1bmlxdWVf
cHRyPFByb21pc2VXcmFwcGVyPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBz
aWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBj
b25zdCBWZWN0b3I8Q3J5cHRvT3BlcmF0aW9uRGF0YT4mLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlz
ZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIHZlcmlmeShjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8Q3J5cHRvT3BlcmF0aW9u
RGF0YT4mIGRhdGEsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4sIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnMmLCBjb25zdCBWZWN0b3I8Q3J5cHRvT3BlcmF0aW9uRGF0YT4mLCBzdGQ6OnVuaXF1ZV9w
dHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIGdl
bmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBib29sIGV4dHJhY3Rh
YmxlLCBDcnlwdG9LZXlVc2FnZSwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBkZXJpdmVLZXkoY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYgYmFzZUtleSwgQ3J5cHRvQWxnb3Jp
dGhtKiBkZXJpdmVkS2V5VHlwZSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UsIHN0
ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGVyaXZlQml0cyhjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29u
c3QgQ3J5cHRvS2V5JiBiYXNlS2V5LCB1bnNpZ25lZCBsb25nIGxlbmd0aCwgc3RkOjp1bmlxdWVf
cHRyPFByb21pc2VXcmFwcGVyPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBp
bXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIENyeXB0b0tleUZvcm1h
dCwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tl
eVVzYWdlLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJik7
CisgICAgdmlydHVhbCB2b2lkIGV4cG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzJiwgQ3J5cHRvS2V5Rm9ybWF0LCBjb25zdCBDcnlwdG9LZXkmLCBzdGQ6OnVuaXF1ZV9wdHI8
UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIHdyYXBL
ZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIENyeXB0b0tleUZvcm1hdCwgY29u
c3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvS2V5JiB3cmFwcGluZ0tleSwgQ3J5cHRvQWxnb3Jp
dGhtKiB3cmFwQWxnb3JpdGhtLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNl
cHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIHVud3JhcEtleShjb25zdCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzJiwgQ3J5cHRvS2V5Rm9ybWF0LCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiwgY29uc3QgQ3J5cHRvS2V5JiB1bndyYXBwaW5nS2V5LCBDcnlwdG9BbGdvcml0aG0qIHVu
d3JhcEFsZ29yaXRobSwgQ3J5cHRvQWxnb3JpdGhtKiB1bndyYXBwZWRLZXlBbGdvcml0aG0sIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdy
YXBwZXI+LCBFeGNlcHRpb25Db2RlJik7CisKK3Byb3RlY3RlZDoKKyAgICBDcnlwdG9BbGdvcml0
aG0oKTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorI2VuZGlm
IC8vIENyeXB0b0FsZ29yaXRobV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0
by9DcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnNfaAorI2RlZmluZSBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzX2gKKworI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgorCisjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyk7CitwdWJsaWM6
CisgICAgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycygpIHsgfQorICAgIHZpcnR1YWwgfkNyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnMoKSB7IH0KK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShT
VUJUTEVfQ1JZUFRPKQorI2VuZGlmIC8vIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNfaApJbmRl
eDogU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnku
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRo
bVJlZ2lzdHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5
LmgiCisKKyNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKKworI2luY2x1ZGUgIkNyeXB0b0FsZ29y
aXRobS5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkmIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5Ojpz
aGFyZWQoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChDcnlwdG9BbGdvcml0aG1SZWdpc3RyeSwgcmVnaXN0cnksICgpKTsKKyAgICByZXR1
cm4gcmVnaXN0cnk7Cit9CisKK0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpDcnlwdG9BbGdvcml0
aG1SZWdpc3RyeSgpCit7CisgICAgcGxhdGZvcm1SZWdpc3RlckFsZ29yaXRobXMoKTsKK30KKwor
Ym9vbCBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6Z2V0SWRlbnRpZmllckZvck5hbWUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyJiByZXN1bHQpCit7CisgICAg
YXV0byBpdGVyID0gbV9uYW1lVG9JZGVudGlmaWVyTWFwLmZpbmQobmFtZS5sb3dlcigpKTsKKyAg
ICBpZiAoaXRlciA9PSBtX25hbWVUb0lkZW50aWZpZXJNYXAuZW5kKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHJlc3VsdCA9IGl0ZXItPnZhbHVlOworICAgIHJldHVybiB0cnVlOwor
fQorCitTdHJpbmcgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6Om5hbWVGb3JJZGVudGlmaWVyKENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gbV9pZGVu
dGlmaWVyVG9OYW1lTWFwLmdldChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaWRlbnRpZmllcikpOwor
fQorCitzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtPiBDcnlwdG9BbGdvcml0aG1SZWdp
c3RyeTo6Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAg
ICBhdXRvIGl0ZXIgPSBtX2lkZW50aWZpZXJUb0NvbnN0cnVjdG9yTWFwLmZpbmQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGlkZW50aWZpZXIpKTsKKyAgICBpZiAoaXRlciA9PSBtX2lkZW50aWZpZXJU
b0NvbnN0cnVjdG9yTWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJl
dHVybiBpdGVyLT52YWx1ZSgpOworfQorCit2b2lkIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5Ojpy
ZWdpc3RlckFsZ29yaXRobShjb25zdCBTdHJpbmcmIG5hbWUsIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIgaWRlbnRpZmllciwgQ3J5cHRvQWxnb3JpdGhtQ29uc3RydWN0b3IgY29uc3RydWN0b3Ip
Cit7CisgICAgQVNTRVJUKG5hbWUgPT0gbmFtZS5sb3dlcigpKTsKKworICAgIGJvb2wgYWRkZWQg
PSBtX25hbWVUb0lkZW50aWZpZXJNYXAuYWRkKG5hbWUsIGlkZW50aWZpZXIpLmlzTmV3RW50cnk7
CisgICAgQVNTRVJUX1VOVVNFRChhZGRlZCwgYWRkZWQpOworCisgICAgYWRkZWQgPSBtX2lkZW50
aWZpZXJUb05hbWVNYXAuYWRkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpZGVudGlmaWVyKSwgbmFt
ZSkuaXNOZXdFbnRyeTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZGVkLCBhZGRlZCk7CisKKyAgICBh
ZGRlZCA9IG1faWRlbnRpZmllclRvQ29uc3RydWN0b3JNYXAuYWRkKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihpZGVudGlmaWVyKSwgY29uc3RydWN0b3IpLmlzTmV3RW50cnk7CisgICAgQVNTRVJUX1VO
VVNFRChhZGRlZCwgYWRkZWQpOworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRv
L0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3J5cHRvL0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDcnlwdG9BbGdvcml0aG1SZWdp
c3RyeV9oCisjZGVmaW5lIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5X2gKKworI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSAi
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllci5oIgorCisjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8p
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKKwor
Y2xhc3MgQ3J5cHRvQWxnb3JpdGhtOworCitjbGFzcyBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeSB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkpOworCitw
dWJsaWM6CisgICAgc3RhdGljIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5JiBzaGFyZWQoKTsKKwor
ICAgIGJvb2wgZ2V0SWRlbnRpZmllckZvck5hbWUoY29uc3QgU3RyaW5nJiwgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciYpOworICAgIFN0cmluZyBuYW1lRm9ySWRlbnRpZmllcihDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG0+
IGNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyKTsKKworcHJpdmF0ZToKKyAgICBDcnlw
dG9BbGdvcml0aG1SZWdpc3RyeSgpOworICAgIHZvaWQgcGxhdGZvcm1SZWdpc3RlckFsZ29yaXRo
bXMoKTsKKworICAgIHR5cGVkZWYgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobT4gKCpD
cnlwdG9BbGdvcml0aG1Db25zdHJ1Y3RvcikoKTsKKworICAgIHZvaWQgcmVnaXN0ZXJBbGdvcml0
aG0oY29uc3QgU3RyaW5nJiBuYW1lLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBDcnlwdG9B
bGdvcml0aG1Db25zdHJ1Y3Rvcik7CisgICAgSGFzaE1hcDxTdHJpbmcsIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI+IG1fbmFtZVRvSWRlbnRpZmllck1hcDsKKyAgICBIYXNoTWFwPHVuc2lnbmVk
LCBTdHJpbmc+IG1faWRlbnRpZmllclRvTmFtZU1hcDsKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBD
cnlwdG9BbGdvcml0aG1Db25zdHJ1Y3Rvcj4gbV9pZGVudGlmaWVyVG9Db25zdHJ1Y3Rvck1hcDsK
K307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorI2VuZGlmIC8vIENy
eXB0b0FsZ29yaXRobVJlZ2lzdHJ5X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMv
Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnlNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnlNYWMuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeU1h
Yy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oIgorCisj
aWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCisKKy8vI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUhN
QUMuaCIKKy8vI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVNIQTEuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCit2b2lkIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpwbGF0Zm9ybVJlZ2lzdGVy
QWxnb3JpdGhtcygpCit7CisvLyAgICByZWdpc3RlckFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1I
TUFDOjptX25hbWUsIENyeXB0b0FsZ29yaXRobUhNQUM6Om1faWRlbnRpZmllciwgQ3J5cHRvQWxn
b3JpdGhtSE1BQzo6Y3JlYXRlKTsKKy8vICAgIHJlZ2lzdGVyQWxnb3JpdGhtKENyeXB0b0FsZ29y
aXRobVNIQTE6Om1fbmFtZSwgQ3J5cHRvQWxnb3JpdGhtU0hBMTo6bV9pZGVudGlmaWVyLCBDcnlw
dG9BbGdvcml0aG1TSEExOjpjcmVhdGUpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoU1VC
VExFX0NSWVBUTykK
</data>
<flag name="review"
          id="238158"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="238163"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>