<?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>111376</bug_id>
          
          <creation_ts>2013-03-04 16:11:57 -0800</creation_ts>
          <short_desc>Make AsyncFileReader work without ScriptExecutionContext</short_desc>
          <delta_ts>2013-03-05 09:45:04 -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>Platform</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>buildbot</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>japhet</cc>
    
    <cc>levin+threading</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>846974</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-04 16:11:57 -0800</bug_when>
    <thetext>It&apos;s way lower level than that, and relying on ScriptExecutionContext prevents using AsyncFileReader in NetworkProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847005</commentid>
    <comment_count>1</comment_count>
      <attachid>191346</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-04 16:38:13 -0800</bug_when>
    <thetext>Created attachment 191346
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847008</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-04 16:40:16 -0800</bug_when>
    <thetext>Attachment 191346 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/dom/ScriptExecutionContext.cpp&apos;, u&apos;Source/WebCore/dom/ScriptExecutionContext.h&apos;, u&apos;Source/WebCore/fileapi/AsyncFileStream.cpp&apos;, u&apos;Source/WebCore/fileapi/AsyncFileStream.h&apos;, u&apos;Source/WebCore/loader/ResourceLoader.cpp&apos;, u&apos;Source/WebCore/loader/ResourceLoader.h&apos;, u&apos;Source/WebCore/platform/MainThreadTask.h&apos;, u&apos;Source/WebCore/platform/network/BlobResourceHandle.cpp&apos;, u&apos;Source/WebCore/platform/network/ResourceHandleClient.h&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkResourceLoader.h&apos;]&quot; exit_code: 1
Source/WebCore/platform/MainThreadTask.h:484:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/MainThreadTask.h:485:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/MainThreadTask.h:486:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/MainThreadTask.h:487:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/MainThreadTask.h:488:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
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>847021</commentid>
    <comment_count>3</comment_count>
      <attachid>191346</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-03-04 16:47:42 -0800</bug_when>
    <thetext>Comment on attachment 191346
proposed patch

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

Instead of adding MainThreadTask, I think you should use something more like WTF::Function from Functional.h - I don’t think that blocks landing this though.

&gt; Source/WebCore/fileapi/AsyncFileStream.cpp:54
&gt; +    return thread;

return thread.release(); (Not that it matters :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847133</commentid>
    <comment_count>4</comment_count>
      <attachid>191346</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-04 18:00:04 -0800</bug_when>
    <thetext>Comment on attachment 191346
proposed patch

Attachment 191346 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/16937010</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847182</commentid>
    <comment_count>5</comment_count>
      <attachid>191346</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-04 19:13:28 -0800</bug_when>
    <thetext>Comment on attachment 191346
proposed patch

Attachment 191346 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/16969103</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847221</commentid>
    <comment_count>6</comment_count>
      <attachid>191346</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-04 20:20:46 -0800</bug_when>
    <thetext>Comment on attachment 191346
proposed patch

Attachment 191346 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/16996009</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847301</commentid>
    <comment_count>7</comment_count>
      <attachid>191406</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-04 22:58:45 -0800</bug_when>
    <thetext>Created attachment 191406
run it by EWS again

With a build fix.

&gt; Instead of adding MainThreadTask, I think you should use something more like WTF::Function from Functional.h - I don’t think that blocks landing this though.

We&apos;ll need to come up with a way to use something like CrossThreadCopier with Functional to replace this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847305</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-04 23:02:17 -0800</bug_when>
    <thetext>Attachment 191406 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/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Target.pri&apos;, u&apos;Source/WebCore/WebCore.vcproj/WebCore.vcproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/dom/ScriptExecutionContext.cpp&apos;, u&apos;Source/WebCore/dom/ScriptExecutionContext.h&apos;, u&apos;Source/WebCore/fileapi/AsyncFileStream.cpp&apos;, u&apos;Source/WebCore/fileapi/AsyncFileStream.h&apos;, u&apos;Source/WebCore/loader/ResourceLoader.cpp&apos;, u&apos;Source/WebCore/loader/ResourceLoader.h&apos;, u&apos;Source/WebCore/platform/MainThreadTask.h&apos;, u&apos;Source/WebCore/platform/network/BlobResourceHandle.cpp&apos;, u&apos;Source/WebCore/platform/network/ResourceHandleClient.h&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkResourceLoader.h&apos;]&quot; exit_code: 1
Source/WebCore/platform/MainThreadTask.h:484:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/MainThreadTask.h:485:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/MainThreadTask.h:486:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/MainThreadTask.h:487:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/MainThreadTask.h:488:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 5 in 12 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>847757</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-05 09:45:04 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/144770&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191346</attachid>
            <date>2013-03-04 16:38:13 -0800</date>
            <delta_ts>2013-03-04 22:58:45 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>BlobAsyncStream.txt</filename>
            <type>text/plain</type>
            <size>47804</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NDY5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDEzLTAzLTA0ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgQXN5bmNGaWxlUmVh
ZGVyIHdvcmsgd2l0aG91dCBTY3JpcHRFeGVjdXRpb25Db250ZXh0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTEzNzYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajogQWRkZWQgTWFpblRocmVhZFRhc2suaC4KKworICAgICAgICAqIGRvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oOgorICAgICAgICBSZW1vdmVkIGZpbGVUaHJlYWQoKS4gQ3JlYXRpbmcgYSB0aHJlYWQg
Zm9yIGV2ZXJ5IGNvbnRleHQgdGhhdCBhY2Vzc2VzIGZpbGVzIGFwcGVhcnMKKyAgICAgICAgd2Fz
dGVmdWwgYW5kIHVubmVjZXNzYXJ5LgorCisgICAgICAgICogZmlsZWFwaS9Bc3luY0ZpbGVTdHJl
YW0uaDoKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVGaWxlVGhyZWFkKTogRmlsZVRocmVhZCBpcyBub3cgYSBzaW5nbGV0b24u
CisgICAgICAgIChXZWJDb3JlOjpmaWxlVGhyZWFkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpBc3luY0ZpbGVTdHJlYW06OkFzeW5jRmlsZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpB
c3luY0ZpbGVTdHJlYW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpkaWRTdGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTdHJlYW06OnN0YXJ0T25GaWxlVGhyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN0cmVhbTo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpkZXJlZlByb3h5T25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN0
cmVhbTo6c3RvcE9uRmlsZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpkaWRHZXRTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN0cmVhbTo6Z2V0U2l6ZU9uRmlsZVRocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpkaWRPcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmls
ZVN0cmVhbTo6b3BlbkZvclJlYWRPbkZpbGVUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6QXN5
bmNGaWxlU3RyZWFtOjpvcGVuRm9yV3JpdGVPbkZpbGVUaHJlYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6ZGlkUmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTdHJlYW06OnJlYWRPbkZp
bGVUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6ZGlkV3JpdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXN5bmNGaWxlU3RyZWFtOjp3cml0ZU9uRmlsZVRocmVhZCk6CisgICAgICAgIChXZWJDb3Jl
OjpkaWRUcnVuY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTdHJlYW06OnRydW5j
YXRlT25GaWxlVGhyZWFkKToKKyAgICAgICAgVXNlIGNhbGxPbk1haW5UaHJlYWQoKSBpbnN0ZWFk
IG9mIHBvc3RpbmcgbWVzc2FnZXMgdGhyb3VnaCBhIGNvbnRleHQuIFdlIG5ldmVyIHVzZWQKKyAg
ICAgICAgb3RoZXIgdGhyZWFkcywgYW5kIGRvbid0IHBsYW4gdG8uCisKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5o
OgorICAgICAgICBXZSBubyBsb25nZXIgbmVlZCB0aGlzIHBzZXVkby1jbGllbnQgY2FsbCB0byBj
cmVhdGUgYW4gQXN5bmNGaWxlU3RyZWFtLCBub3cgdGhhdAorICAgICAgICB3ZSBkb24ndCBuZWVk
IHRvIGdldCBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgc29tZXdoZXJlLgorCisgICAgICAgICog
cGxhdGZvcm0vTWFpblRocmVhZFRhc2suaDogQWRkZWQuIFRoaXMgaW1wbGVtZW50cyBjYWxsT25N
YWluVGhyZWFkIHdpdGggbXVsdGlwbGUKKyAgICAgICAgc3Ryb25nbHkgdHlwZWQgYXJndW1lbnRz
LiBDbG9zZWx5IGJhc2VkIG9uIENyb3NzVGhyZWFkVGFzay5oLgorCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qmxv
YlJlc291cmNlSGFuZGxlOjpCbG9iUmVzb3VyY2VIYW5kbGUpOiBDcmVhdGUgQXN5bmNGaWxlU3Ry
ZWFtIGRpcmVjdGx5LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5oOiBSZW1vdmVkIGNyZWF0ZUFzeW5jRmlsZVN0cmVhbSgpLgorCiAyMDEzLTAzLTA0
ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IHVz
ZXIgYWdlbnQgc2hhZG93IHJvb3RzIGZvciBwbHVnaW5zIHNob3VsZCBiZSAnYWNjZXNzaWJsZScK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDE0NDY1NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjIyMSw2ICs2MjIxLDcgQEAK
IAkJRTE4MjU2OEYwRUYyQjAyRDAwOTMzMjQyIC8qIEpTV29ya2VyQ29udGV4dC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTgyNTY4RDBFRjJCMDJE
MDA5MzMyNDIgLyogSlNXb3JrZXJDb250ZXh0LmNwcCAqLzsgfTsKIAkJRTE4MjU2OTAwRUYyQjAy
RDAwOTMzMjQyIC8qIEpTV29ya2VyQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4MjU2OEUwRUYyQjAyRDAwOTMzMjQyIC8qIEpTV29ya2Vy
Q29udGV4dC5oICovOyB9OwogCQlFMTgyNThBQzBFRjNDRDcwMDA5MzMyNDIgLyogSlNXb3JrZXJD
b250ZXh0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxODI1OEFCMEVGM0NENzAwMDkzMzI0MiAvKiBKU1dvcmtlckNvbnRleHRDdXN0b20u
Y3BwICovOyB9OworCQlFMTg3MDU2MzE2RTU0QTBEMDA1ODVFOTcgLyogTWFpblRocmVhZFRhc2su
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxODcwNTYy
MTZFNTRBMEQwMDU4NUU5NyAvKiBNYWluVGhyZWFkVGFzay5oICovOyB9OwogCQlFMTg3NzJGMTEy
NkUyNjI5MDAzREQ1ODYgLyogTGFuZ3VhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4NzcyRjAxMjZFMjYyOTAwM0RENTg2IC8qIExhbmd1YWdl
LmNwcCAqLzsgfTsKIAkJRTFBMTQ3MDgxMTEwMkIxNTAwRUVDMEYzIC8qIENvbnRhaW5lck5vZGVB
bGdvcml0aG1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMUExNDcwNzExMTAyQjE1MDBFRUMwRjMgLyogQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCAq
LzsgfTsKIAkJRTFBMzE2MkQxMzRCQzMyRDAwN0M5QTRGIC8qIFdlYk5TQXR0cmlidXRlZFN0cmlu
Z0V4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTFBMzE2MkIxMzRCQzMyRDAwN0M5QTRGIC8qIFdlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC02Mjc2
LDcgKzYyNzcsNyBAQAogCQlFMUNBNUNCQzBFOENEQ0FGMDBFOEVGOTAgLyogSlNXb3JrZXJDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFD
QTVDQkIwRThDRENBRjAwRThFRjkwIC8qIEpTV29ya2VyQ3VzdG9tLmNwcCAqLzsgfTsKIAkJRTFD
QUE1QzYwRThCRDIzNjAwQTczRUNBIC8qIEpTV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUNBQTVDNTBFOEJEMjM2MDBBNzNFQ0EgLyogSlNX
b3JrZXIuaCAqLzsgfTsKIAkJRTFDREU5MjAxNTAxOEVEMDAwODYyQ0M1IC8qIEFzeW5jRmlsZVN0
cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MUNERTkxRjE1MDE4RUQwMDA4NjJDQzUgLyogQXN5bmNGaWxlU3RyZWFtLmNwcCAqLzsgfTsKLQkJ
RTFDREU5MjIxNTAxOTE2OTAwODYyQ0M1IC8qIEFzeW5jRmlsZVN0cmVhbS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDREU5MjExNTAxOTE2OTAwODYy
Q0M1IC8qIEFzeW5jRmlsZVN0cmVhbS5oICovOyB9OworCQlFMUNERTkyMjE1MDE5MTY5MDA4NjJD
QzUgLyogQXN5bmNGaWxlU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMUNERTkyMTE1MDE5MTY5MDA4NjJDQzUgLyogQXN5bmNGaWxlU3RyZWFt
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJRTFFMUJGMDAxMTVG
RjZGQjAwNkY1MkNBIC8qIFdpbmRvd3NLZXlib2FyZENvZGVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUUxQkVGRjExNUZGNkZCMDA2RjUyQ0EgLyog
V2luZG93c0tleWJvYXJkQ29kZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMUU2RUVBNDBCNjI4REE4MDA1RjJGNzAgLyogSlNIVE1MU2VsZWN0
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMUU2RUVBMzBCNjI4REE4MDA1RjJGNzAgLyogSlNIVE1MU2VsZWN0RWxlbWVudC5jcHAgKi87
IH07CiAJCUUxRTZFRUE4MEI2MjhEQjMwMDVGMkY3MCAvKiBKU0hUTUxTZWxlY3RFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUU2RUVBNzBC
NjI4REIzMDA1RjJGNzAgLyogSlNIVE1MU2VsZWN0RWxlbWVudC5oICovOyB9OwpAQCAtMTEzOTgs
OCArMTEzOTksOCBAQAogCQlBMzFDNEU0QzE2RTAyQUE2MDAyRjc5NTcgLyogT0VTVGV4dHVyZUhh
bGZGbG9hdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBPRVNUZXh0
dXJlSGFsZkZsb2F0LmNwcDsgcGF0aCA9IGNhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMxQzRFNEUxNkUwMkFCNDAwMkY3OTU3IC8q
IE9FU1RleHR1cmVIYWxmRmxvYXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
T0VTVGV4dHVyZUhhbGZGbG9hdC5oOyBwYXRoID0gY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMxQzRFNTAxNkUwMkFDNTAwMkY3OTU3
IC8qIE9FU1RleHR1cmVIYWxmRmxvYXQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE9FU1RleHR1cmVIYWxmRmxvYXQuaWRs
OyBwYXRoID0gY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlBMzFDNEU1MTE2RTAyQjA4MDAyRjc5NTcgLyogSlNPRVNUZXh0dXJlSGFs
ZkZsb2F0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTT0VTVGV4
dHVyZUhhbGZGbG9hdC5jcHA7IHBhdGggPSBKU09FU1RleHR1cmVIYWxmRmxvYXQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBMzFDNEU1MzE2RTAyQjQwMDAyRjc5NTcgLyogSlNP
RVNUZXh0dXJlSGFsZkZsb2F0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpT
T0VTVGV4dHVyZUhhbGZGbG9hdC5oOyBwYXRoID0gSlNPRVNUZXh0dXJlSGFsZkZsb2F0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzMUM0RTUxMTZFMDJCMDgwMDJGNzk1NyAvKiBK
U09FU1RleHR1cmVIYWxmRmxvYXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNPRVNUZXh0dXJlSGFsZkZsb2F0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTMxQzRFNTMxNkUwMkI0MDAwMkY3OTU3IC8qIEpTT0VTVGV4dHVyZUhhbGZGbG9hdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU09FU1RleHR1cmVIYWxmRmxvYXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNCQjU5RjExNDU3QTQwRDAwQUM1NkZF
IC8qIERvY3VtZW50RXZlbnRRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBEb2N1bWVudEV2ZW50UXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBM0JCNTlGMjE0NTdBNDBEMDBBQzU2RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50RXZlbnRRdWV1ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0UyNjQyRTE0NzQ4OTkxMDA1QTg1ODggLyogV29y
a2VyRXZlbnRRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBX
b3JrZXJFdmVudFF1ZXVlLmNwcDsgcGF0aCA9IHdvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzg4OCw2ICsxMzg4OSw3IEBACiAJCUUx
ODI1NjhEMEVGMkIwMkQwMDkzMzI0MiAvKiBKU1dvcmtlckNvbnRleHQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXb3JrZXJDb250ZXh0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE4MjU2OEUwRUYyQjAyRDAwOTMzMjQyIC8qIEpTV29ya2Vy
Q29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dvcmtlckNvbnRl
eHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE4MjU4QUIwRUYzQ0Q3MDAwOTMz
MjQyIC8qIEpTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1dvcmtlckNvbnRleHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFMTg3MDU2MjE2RTU0QTBEMDA1ODVFOTcgLyogTWFpblRocmVhZFRhc2su
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFpblRocmVhZFRhc2suaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE4NzcyRjAxMjZFMjYyOTAwM0RENTg2IC8qIExh
bmd1YWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExhbmd1YWdl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBMTQ3MDcxMTEwMkIxNTAwRUVD
MEYzIC8qIENvbnRhaW5lck5vZGVBbGdvcml0aG1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvbnRhaW5lck5vZGVBbGdvcml0aG1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUxQTMxNjJCMTM0QkMzMkQwMDdDOUE0RiAvKiBXZWJOU0F0dHJpYnV0ZWRTdHJp
bmdFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTlNBdHRyaWJ1
dGVkU3RyaW5nRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTYzNiw2
ICsyMTYzOCw3IEBACiAJCQkJOTM1MjA3QkQwOUJENDEwQTAwRjIwMzhEIC8qIExvY2FsaXplZFN0
cmluZ3MuaCAqLywKIAkJCQlBODIzOURGRTA5QjNDRjhBMDBCNjA2NDEgLyogTG9nZ2luZy5jcHAg
Ki8sCiAJCQkJQTgyMzlERkYwOUIzQ0Y4QTAwQjYwNjQxIC8qIExvZ2dpbmcuaCAqLywKKwkJCQlF
MTg3MDU2MjE2RTU0QTBEMDA1ODVFOTcgLyogTWFpblRocmVhZFRhc2suaCAqLywKIAkJCQk2NTdF
REEwNjEzODVDQjk3MDA0RTA2NDUgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCAqLywKIAkJ
CQk2NTdFREEwNzEzODVDQjk3MDA0RTA2NDUgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmggKi8s
CiAJCQkJRDZGREFFRjIxNDlDMDYxOTAwMzdCMUUzIC8qIE1lbW9yeVVzYWdlU3VwcG9ydC5jcHAg
Ki8sCkBAIC0yNjY1MSw2ICsyNjY1NCw3IEBACiAJCQkJQTAyNDU3NTIxNkNFQUEyNzAwMEU1Njcx
IC8qIEVYVERyYXdCdWZmZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMzFDNEU0RjE2RTAyQUI0
MDAyRjc5NTcgLyogT0VTVGV4dHVyZUhhbGZGbG9hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTMx
QzRFNTQxNkUwMkI0MDAwMkY3OTU3IC8qIEpTT0VTVGV4dHVyZUhhbGZGbG9hdC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTE4NzA1NjMxNkU1NEEwRDAwNTg1RTk3IC8qIE1haW5UaHJlYWRUYXNrLmgg
aW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5jcHAJKHJldmlzaW9uIDE0NDY1NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNiBA
QAogI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAj
aW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJGaWxlVGhyZWFkLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJQdWJsaWNVUkxNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKQEAgLTEyNywxMCArMTI2LDYgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6flNjcmlwdEV4ZWN1dGlvbgogICAgICAgICAoKml0ZXIpLT5jb250ZXh0RGVzdHJveWVkKCk7
CiAgICAgfQogI2lmIEVOQUJMRShCTE9CKQotICAgIGlmIChtX2ZpbGVUaHJlYWQpIHsKLSAgICAg
ICAgbV9maWxlVGhyZWFkLT5zdG9wKCk7Ci0gICAgICAgIG1fZmlsZVRocmVhZCA9IDA7Ci0gICAg
fQogICAgIGlmIChtX3B1YmxpY1VSTE1hbmFnZXIpCiAgICAgICAgIG1fcHVibGljVVJMTWFuYWdl
ci0+Y29udGV4dERlc3Ryb3llZCgpOwogI2VuZGlmCkBAIC0zNTgsMTYgKzM1Myw2IEBAIGludCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpjaXJjdWxhclNlcXUKIH0KIAogI2lmIEVOQUJMRShCTE9C
KQotRmlsZVRocmVhZCogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZmlsZVRocmVhZCgpCi17Ci0g
ICAgaWYgKCFtX2ZpbGVUaHJlYWQpIHsKLSAgICAgICAgbV9maWxlVGhyZWFkID0gRmlsZVRocmVh
ZDo6Y3JlYXRlKCk7Ci0gICAgICAgIGlmICghbV9maWxlVGhyZWFkLT5zdGFydCgpKQotICAgICAg
ICAgICAgbV9maWxlVGhyZWFkID0gMDsKLSAgICB9Ci0gICAgcmV0dXJuIG1fZmlsZVRocmVhZC5n
ZXQoKTsKLX0KLQogUHVibGljVVJMTWFuYWdlciYgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cHVi
bGljVVJMTWFuYWdlcigpCiB7CiAgICAgaWYgKCFtX3B1YmxpY1VSTE1hbmFnZXIpCkBAIC00MjAs
NyArNDA1LDYgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXBvcnRNZW1vcgogICAg
IGluZm8uYWRkTWVtYmVyKG1fcGVuZGluZ0V4Y2VwdGlvbnMsICJwZW5kaW5nRXhjZXB0aW9ucyIp
OwogI2lmIEVOQUJMRShCTE9CKQogICAgIGluZm8uYWRkTWVtYmVyKG1fcHVibGljVVJMTWFuYWdl
ciwgInB1YmxpY1VSTE1hbmFnZXIiKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX2ZpbGVUaHJlYWQs
ICJmaWxlVGhyZWFkIik7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCShyZXZpc2lvbiAxNDQ2NTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miwx
MCArNjIsNiBAQCBjbGFzcyBNZXNzYWdlUG9ydDsKIGNsYXNzIFB1YmxpY1VSTE1hbmFnZXI7CiAj
ZW5kaWYKIAotI2lmIEVOQUJMRShCTE9CKQotY2xhc3MgRmlsZVRocmVhZDsKLSNlbmRpZgotCiBj
bGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IDogcHVibGljIFNlY3VyaXR5Q29udGV4dCwgcHVi
bGljIFN1cHBsZW1lbnRhYmxlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IHsKIHB1YmxpYzoKICAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkBAIC0xNTYsMTEgKzE1Miw2IEBAIHB1YmxpYzoK
ICAgICBKU0M6OkpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSgpOwogI2VuZGlmCiAKLSNpZiBFTkFC
TEUoQkxPQikKLSAgICBGaWxlVGhyZWFkKiBmaWxlVGhyZWFkKCk7Ci0gICAgdm9pZCBzdG9wRmls
ZVRocmVhZCgpOwotI2VuZGlmCi0KICAgICAvLyBJbnRlcnZhbCBpcyBpbiBzZWNvbmRzLgogICAg
IHZvaWQgYWRqdXN0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIG9sZE1pbmltdW1UaW1lcklu
dGVydmFsKTsKICAgICB2aXJ0dWFsIGRvdWJsZSBtaW5pbXVtVGltZXJJbnRlcnZhbCgpIGNvbnN0
OwpAQCAtMjMwLDcgKzIyMSw2IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoQkxPQikKICAgICBP
d25QdHI8UHVibGljVVJMTWFuYWdlcj4gbV9wdWJsaWNVUkxNYW5hZ2VyOwotICAgIFJlZlB0cjxG
aWxlVGhyZWFkPiBtX2ZpbGVUaHJlYWQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCShy
ZXZpc2lvbiAxNDQ2NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVh
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDMyICszNiw0NyBAQAogI2luY2x1ZGUgIkFzeW5j
RmlsZVN0cmVhbS5oIgogCiAjaW5jbHVkZSAiQmxvYi5oIgotI2luY2x1ZGUgIkNyb3NzVGhyZWFk
VGFzay5oIgogI2luY2x1ZGUgIkZpbGVTdHJlYW0uaCIKICNpbmNsdWRlICJGaWxlU3RyZWFtQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiRmlsZVRocmVhZC5oIgogI2luY2x1ZGUgIkZpbGVUaHJlYWRUYXNr
LmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIk1haW5U
aHJlYWRUYXNrLmgiCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgQXN5bmNG
aWxlU3RyZWFtOjpBc3luY0ZpbGVTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgRmlsZVN0cmVhbUNsaWVudCogY2xpZW50KQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0g
ICAgLCBtX3N0cmVhbShGaWxlU3RyZWFtOjpjcmVhdGUoKSkKK3N0YXRpYyBQYXNzUmVmUHRyPEZp
bGVUaHJlYWQ+IGNyZWF0ZUZpbGVUaHJlYWQoKQoreworICAgIFJlZlB0cjxGaWxlVGhyZWFkPiB0
aHJlYWQgPSBGaWxlVGhyZWFkOjpjcmVhdGUoKTsKKyAgICBpZiAoIXRocmVhZC0+c3RhcnQoKSkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHRocmVhZDsKK30KKworc3RhdGljIEZpbGVU
aHJlYWQqIGZpbGVUaHJlYWQoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
c3RhdGljIEZpbGVUaHJlYWQqIHRocmVhZCA9IGNyZWF0ZUZpbGVUaHJlYWQoKS5sZWFrUmVmKCk7
CisgICAgcmV0dXJuIHRocmVhZDsKK30KKworaW5saW5lIEFzeW5jRmlsZVN0cmVhbTo6QXN5bmNG
aWxlU3RyZWFtKEZpbGVTdHJlYW1DbGllbnQqIGNsaWVudCkKKyAgICA6IG1fc3RyZWFtKEZpbGVT
dHJlYW06OmNyZWF0ZSgpKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogeworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiB9CiAKLVBhc3NSZWZQdHI8QXN5bmNGaWxlU3RyZWFtPiBBc3luY0Zp
bGVTdHJlYW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBGaWxlU3Ry
ZWFtQ2xpZW50KiBjbGllbnQpCitQYXNzUmVmUHRyPEFzeW5jRmlsZVN0cmVhbT4gQXN5bmNGaWxl
U3RyZWFtOjpjcmVhdGUoRmlsZVN0cmVhbUNsaWVudCogY2xpZW50KQogewotICAgIFJlZlB0cjxB
c3luY0ZpbGVTdHJlYW0+IHByb3h5ID0gYWRvcHRSZWYobmV3IEFzeW5jRmlsZVN0cmVhbShjb250
ZXh0LCBjbGllbnQpKTsKKyAgICBSZWZQdHI8QXN5bmNGaWxlU3RyZWFtPiBwcm94eSA9IGFkb3B0
UmVmKG5ldyBBc3luY0ZpbGVTdHJlYW0oY2xpZW50KSk7CiAKICAgICAvLyBIb2xkIGEgcmVmZXJl
bmNlIHNvIHRoYXQgdGhlIGluc3RhbmNlIHdpbGwgbm90IGdldCBkZWxldGVkIHdoaWxlIHRoZXJl
IGFyZSB0YXNrcyBvbiB0aGUgZmlsZSB0aHJlYWQuCiAgICAgLy8gVGhpcyBpcyBiYWxhbmNlZCBi
eSB0aGUgZGVyZWYgaW4gZGVyZWZQcm94eU9uQ29udGV4dCBiZWxvdy4KICAgICBwcm94eS0+cmVm
KCk7CiAKLSAgICBwcm94eS0+ZmlsZVRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVGaWxlVGhyZWFk
VGFzayhwcm94eS5nZXQoKSwgJkFzeW5jRmlsZVN0cmVhbTo6c3RhcnRPbkZpbGVUaHJlYWQpKTsK
KyAgICBmaWxlVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUZpbGVUaHJlYWRUYXNrKHByb3h5Lmdl
dCgpLCAmQXN5bmNGaWxlU3RyZWFtOjpzdGFydE9uRmlsZVRocmVhZCkpOwogCiAgICAgcmV0dXJu
IHByb3h5LnJlbGVhc2UoKTsKIH0KQEAgLTcwLDE0ICs4NSw3IEBAIEFzeW5jRmlsZVN0cmVhbTo6
fkFzeW5jRmlsZVN0cmVhbSgpCiB7CiB9CiAKLUZpbGVUaHJlYWQqIEFzeW5jRmlsZVN0cmVhbTo6
ZmlsZVRocmVhZCgpCi17Ci0gICAgQVNTRVJUKG1fY29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkp
OwotICAgIEFTU0VSVChtX2NvbnRleHQtPmZpbGVUaHJlYWQoKSk7Ci0gICAgcmV0dXJuIG1fY29u
dGV4dC0+ZmlsZVRocmVhZCgpOwotfQotCi1zdGF0aWMgdm9pZCBkaWRTdGFydChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgQXN5bmNGaWxlU3RyZWFtKiBwcm94eSkKK3N0YXRpYyB2b2lkIGRpZFN0
YXJ0KEFzeW5jRmlsZVN0cmVhbSogcHJveHkpCiB7CiAgICAgaWYgKHByb3h5LT5jbGllbnQoKSkK
ICAgICAgICAgcHJveHktPmNsaWVudCgpLT5kaWRTdGFydCgpOwpAQCAtODUsMjIgKzkzLDIzIEBA
IHN0YXRpYyB2b2lkIGRpZFN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnQKIAogdm9pZCBBc3luY0Zp
bGVTdHJlYW06OnN0YXJ0T25GaWxlVGhyZWFkKCkKIHsKLSAgICBpZiAoIWNsaWVudCgpKQorICAg
IC8vIEZJWE1FOiBJdCBpcyBub3QgY29ycmVjdCB0byBjaGVjayBtX2NsaWVudCBmcm9tIGEgc2Vj
b25kYXJ5IHRocmVhZCAtIHN0b3AoKSBjb3VsZCBiZSByYWNpbmcgd2l0aCB0aGlzIGNoZWNrLgor
ICAgIGlmICghbV9jbGllbnQpCiAgICAgICAgIHJldHVybjsKICAgICBtX3N0cmVhbS0+c3RhcnQo
KTsKLSAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkU3RhcnQs
IEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykpKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKGRp
ZFN0YXJ0LCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpKTsKIH0KIAogdm9pZCBBc3luY0Zp
bGVTdHJlYW06OnN0b3AoKQogewotICAgIC8vIENsZWFyIHRoZSBjbGllbnQgc28gdGhhdCB3ZSB3
b24ndCBiZSBjYWxsaW5nIGNhbGxiYWNrcyBvbiB0aGUgY2xpZW50LgorICAgIC8vIENsZWFyIHRo
ZSBjbGllbnQgc28gdGhhdCB3ZSB3b24ndCBiZSBpbnZva2luZyBjYWxsYmFja3Mgb24gdGhlIGNs
aWVudC4KICAgICBzZXRDbGllbnQoMCk7CiAKICAgICBmaWxlVGhyZWFkKCktPnVuc2NoZWR1bGVU
YXNrcyhtX3N0cmVhbS5nZXQoKSk7CiAgICAgZmlsZVRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVG
aWxlVGhyZWFkVGFzayh0aGlzLCAmQXN5bmNGaWxlU3RyZWFtOjpzdG9wT25GaWxlVGhyZWFkKSk7
CiB9CiAKLXN0YXRpYyB2b2lkIGRlcmVmUHJveHlPbkNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIEFzeW5jRmlsZVN0cmVhbSogcHJveHkpCitzdGF0aWMgdm9pZCBkZXJlZlByb3h5T25N
YWluVGhyZWFkKEFzeW5jRmlsZVN0cmVhbSogcHJveHkpCiB7CiAgICAgQVNTRVJUKHByb3h5LT5o
YXNPbmVSZWYoKSk7CiAgICAgcHJveHktPmRlcmVmKCk7CkBAIC0xMDksMTAgKzExOCwxMCBAQCBz
dGF0aWMgdm9pZCBkZXJlZlByb3h5T25Db250ZXh0KFNjcmlwdEV4CiB2b2lkIEFzeW5jRmlsZVN0
cmVhbTo6c3RvcE9uRmlsZVRocmVhZCgpCiB7CiAgICAgbV9zdHJlYW0tPnN0b3AoKTsKLSAgICBt
X2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGVyZWZQcm94eU9uQ29udGV4
dCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSkpOworICAgIGNhbGxPbk1haW5UaHJlYWQo
ZGVyZWZQcm94eU9uTWFpblRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSk7CiB9
CiAKLXN0YXRpYyB2b2lkIGRpZEdldFNpemUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEFzeW5j
RmlsZVN0cmVhbSogcHJveHksIGxvbmcgbG9uZyBzaXplKQorc3RhdGljIHZvaWQgZGlkR2V0U2l6
ZShBc3luY0ZpbGVTdHJlYW0qIHByb3h5LCBsb25nIGxvbmcgc2l6ZSkKIHsKICAgICBpZiAocHJv
eHktPmNsaWVudCgpKQogICAgICAgICBwcm94eS0+Y2xpZW50KCktPmRpZEdldFNpemUoc2l6ZSk7
CkBAIC0xMjYsMTAgKzEzNSwxMCBAQCB2b2lkIEFzeW5jRmlsZVN0cmVhbTo6Z2V0U2l6ZShjb25z
dCBTdHJpCiB2b2lkIEFzeW5jRmlsZVN0cmVhbTo6Z2V0U2l6ZU9uRmlsZVRocmVhZChjb25zdCBT
dHJpbmcmIHBhdGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpCiB7CiAgICAgbG9u
ZyBsb25nIHNpemUgPSBtX3N0cmVhbS0+Z2V0U2l6ZShwYXRoLCBleHBlY3RlZE1vZGlmaWNhdGlv
blRpbWUpOwotICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRH
ZXRTaXplLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBzaXplKSk7CisgICAgY2FsbE9u
TWFpblRocmVhZChkaWRHZXRTaXplLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBzaXpl
KTsKIH0KIAotc3RhdGljIHZvaWQgZGlkT3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQXN5
bmNGaWxlU3RyZWFtKiBwcm94eSwgYm9vbCBzdWNjZXNzKQorc3RhdGljIHZvaWQgZGlkT3BlbihB
c3luY0ZpbGVTdHJlYW0qIHByb3h5LCBib29sIHN1Y2Nlc3MpCiB7CiAgICAgaWYgKHByb3h5LT5j
bGllbnQoKSkKICAgICAgICAgcHJveHktPmNsaWVudCgpLT5kaWRPcGVuKHN1Y2Nlc3MpOwpAQCAt
MTQzLDcgKzE1Miw3IEBAIHZvaWQgQXN5bmNGaWxlU3RyZWFtOjpvcGVuRm9yUmVhZChjb25zdCAK
IHZvaWQgQXN5bmNGaWxlU3RyZWFtOjpvcGVuRm9yUmVhZE9uRmlsZVRocmVhZChjb25zdCBTdHJp
bmcmIHBhdGgsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpCiB7CiAgICAgYm9v
bCBzdWNjZXNzID0gbV9zdHJlYW0tPm9wZW5Gb3JSZWFkKHBhdGgsIG9mZnNldCwgbGVuZ3RoKTsK
LSAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkT3BlbiwgQWxs
b3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgc3VjY2VzcykpOworICAgIGNhbGxPbk1haW5UaHJl
YWQoZGlkT3BlbiwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgc3VjY2Vzcyk7CiB9CiAK
IHZvaWQgQXN5bmNGaWxlU3RyZWFtOjpvcGVuRm9yV3JpdGUoY29uc3QgU3RyaW5nJiBwYXRoKQpA
QCAtMTU2LDcgKzE2NSw3IEBAIHZvaWQgQXN5bmNGaWxlU3RyZWFtOjpvcGVuRm9yV3JpdGUoY29u
c3QKIHZvaWQgQXN5bmNGaWxlU3RyZWFtOjpvcGVuRm9yV3JpdGVPbkZpbGVUaHJlYWQoY29uc3Qg
U3RyaW5nJiBwYXRoKQogewogICAgIGJvb2wgc3VjY2VzcyA9IG1fc3RyZWFtLT5vcGVuRm9yV3Jp
dGUocGF0aCk7Ci0gICAgbV9jb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJmRp
ZE9wZW4sIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIHN1Y2Nlc3MpKTsKKyAgICBjYWxs
T25NYWluVGhyZWFkKGRpZE9wZW4sIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIHN1Y2Nl
c3MpOwogfQogCiB2b2lkIEFzeW5jRmlsZVN0cmVhbTo6Y2xvc2UoKQpAQCAtMTY5LDcgKzE3OCw3
IEBAIHZvaWQgQXN5bmNGaWxlU3RyZWFtOjpjbG9zZU9uRmlsZVRocmVhZCgKICAgICBtX3N0cmVh
bS0+Y2xvc2UoKTsKIH0KIAotc3RhdGljIHZvaWQgZGlkUmVhZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgQXN5bmNGaWxlU3RyZWFtKiBwcm94eSwgaW50IGJ5dGVzUmVhZCkKK3N0YXRpYyB2b2lk
IGRpZFJlYWQoQXN5bmNGaWxlU3RyZWFtKiBwcm94eSwgaW50IGJ5dGVzUmVhZCkKIHsKICAgICBp
ZiAocHJveHktPmNsaWVudCgpKQogICAgICAgICBwcm94eS0+Y2xpZW50KCktPmRpZFJlYWQoYnl0
ZXNSZWFkKTsKQEAgLTE4NSwxMCArMTk0LDEwIEBAIHZvaWQgQXN5bmNGaWxlU3RyZWFtOjpyZWFk
KGNoYXIqIGJ1ZmZlciwKIHZvaWQgQXN5bmNGaWxlU3RyZWFtOjpyZWFkT25GaWxlVGhyZWFkKGNo
YXIqIGJ1ZmZlciwgaW50IGxlbmd0aCkKIHsKICAgICBpbnQgYnl0ZXNSZWFkID0gbV9zdHJlYW0t
PnJlYWQoYnVmZmVyLCBsZW5ndGgpOwotICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZkaWRSZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBieXRlc1Jl
YWQpKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKGRpZFJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nl
c3ModGhpcyksIGJ5dGVzUmVhZCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRpZFdyaXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBBc3luY0ZpbGVTdHJlYW0qIHByb3h5LCBpbnQgYnl0ZXNXcml0dGVu
KQorc3RhdGljIHZvaWQgZGlkV3JpdGUoQXN5bmNGaWxlU3RyZWFtKiBwcm94eSwgaW50IGJ5dGVz
V3JpdHRlbikKIHsKICAgICBpZiAocHJveHktPmNsaWVudCgpKQogICAgICAgICBwcm94eS0+Y2xp
ZW50KCktPmRpZFdyaXRlKGJ5dGVzV3JpdHRlbik7CkBAIC0yMDIsMTAgKzIxMSwxMCBAQCB2b2lk
IEFzeW5jRmlsZVN0cmVhbTo6d3JpdGUoY29uc3QgS1VSTCYgCiB2b2lkIEFzeW5jRmlsZVN0cmVh
bTo6d3JpdGVPbkZpbGVUaHJlYWQoY29uc3QgS1VSTCYgYmxvYlVSTCwgbG9uZyBsb25nIHBvc2l0
aW9uLCBpbnQgbGVuZ3RoKQogewogICAgIGludCBieXRlc1dyaXR0ZW4gPSBtX3N0cmVhbS0+d3Jp
dGUoYmxvYlVSTCwgcG9zaXRpb24sIGxlbmd0aCk7Ci0gICAgbV9jb250ZXh0LT5wb3N0VGFzayhj
cmVhdGVDYWxsYmFja1Rhc2soJmRpZFdyaXRlLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMp
LCBieXRlc1dyaXR0ZW4pKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKGRpZFdyaXRlLCBBbGxvd0Ny
b3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBieXRlc1dyaXR0ZW4pOwogfQogCi1zdGF0aWMgdm9pZCBk
aWRUcnVuY2F0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQXN5bmNGaWxlU3RyZWFtKiBwcm94
eSwgYm9vbCBzdWNjZXNzKQorc3RhdGljIHZvaWQgZGlkVHJ1bmNhdGUoQXN5bmNGaWxlU3RyZWFt
KiBwcm94eSwgYm9vbCBzdWNjZXNzKQogewogICAgIGlmIChwcm94eS0+Y2xpZW50KCkpCiAgICAg
ICAgIHByb3h5LT5jbGllbnQoKS0+ZGlkVHJ1bmNhdGUoc3VjY2Vzcyk7CkBAIC0yMTksNyArMjI4
LDcgQEAgdm9pZCBBc3luY0ZpbGVTdHJlYW06OnRydW5jYXRlKGxvbmcgbG9uZwogdm9pZCBBc3lu
Y0ZpbGVTdHJlYW06OnRydW5jYXRlT25GaWxlVGhyZWFkKGxvbmcgbG9uZyBwb3NpdGlvbikKIHsK
ICAgICBib29sIHN1Y2Nlc3MgPSBtX3N0cmVhbS0+dHJ1bmNhdGUocG9zaXRpb24pOwotICAgIG1f
Y29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRUcnVuY2F0ZSwgQWxsb3dD
cm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgc3VjY2VzcykpOworICAgIGNhbGxPbk1haW5UaHJlYWQo
ZGlkVHJ1bmNhdGUsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIHN1Y2Nlc3MpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Fz
eW5jRmlsZVN0cmVhbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5
bmNGaWxlU3RyZWFtLmgJKHJldmlzaW9uIDE0NDY1NykKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQXN5bmNGaWxlU3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEzICs0MiwxMSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbGVTdHJlYW1DbGllbnQ7CiBjbGFzcyBGaWxl
U3RyZWFtOwotY2xhc3MgRmlsZVRocmVhZDsKIGNsYXNzIEtVUkw7Ci1jbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwogCiBjbGFzcyBBc3luY0ZpbGVTdHJlYW0gOiBwdWJsaWMgUmVmQ291bnRl
ZDxBc3luY0ZpbGVTdHJlYW0+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBc3lu
Y0ZpbGVTdHJlYW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmlsZVN0cmVhbUNs
aWVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFzeW5jRmlsZVN0cmVhbT4gY3JlYXRlKEZp
bGVTdHJlYW1DbGllbnQqKTsKICAgICB+QXN5bmNGaWxlU3RyZWFtKCk7CiAKICAgICB2b2lkIGdl
dFNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBkb3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1l
KTsKQEAgLTY3LDkgKzY1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2xpZW50KEZpbGVTdHJl
YW1DbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQogCiBwcml2YXRlOgotICAg
IEFzeW5jRmlsZVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmlsZVN0cmVhbUNsaWVu
dCopOwotCi0gICAgRmlsZVRocmVhZCogZmlsZVRocmVhZCgpOworICAgIEFzeW5jRmlsZVN0cmVh
bShGaWxlU3RyZWFtQ2xpZW50Kik7CiAKICAgICAvLyBDYWxsZWQgb24gRmlsZSB0aHJlYWQuCiAg
ICAgdm9pZCBzdGFydE9uRmlsZVRocmVhZCgpOwpAQCAtODIsNyArNzgsNiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgd3JpdGVPbkZpbGVUaHJlYWQoY29uc3QgS1VSTCYgYmxvYlVSTCwgbG9uZyBsb25n
IHBvc2l0aW9uLCBpbnQgbGVuZ3RoKTsKICAgICB2b2lkIHRydW5jYXRlT25GaWxlVGhyZWFkKGxv
bmcgbG9uZyBwb3NpdGlvbik7CiAKLSAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4g
bV9jb250ZXh0OwogICAgIFJlZlB0cjxGaWxlU3RyZWFtPiBtX3N0cmVhbTsKIAogICAgIEZpbGVT
dHJlYW1DbGllbnQqIG1fY2xpZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxNDQ2NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDUsMTQgKzU0NSw2IEBAIHZv
aWQgUmVzb3VyY2VMb2FkZXI6OnJlY2VpdmVkQ2FuY2VsbGF0aW8KICAgICBjYW5jZWwoKTsKIH0K
IAotI2lmIEVOQUJMRShCTE9CKQotQXN5bmNGaWxlU3RyZWFtKiBSZXNvdXJjZUxvYWRlcjo6Y3Jl
YXRlQXN5bmNGaWxlU3RyZWFtKEZpbGVTdHJlYW1DbGllbnQqIGNsaWVudCkKLXsKLSAgICAvLyBJ
dCBpcyBPSyB0byBzaW1wbHkgcmV0dXJuIGEgcG9pbnRlciBzaW5jZSBBc3luY0ZpbGVTdHJlYW06
OmNyZWF0ZSBhZGRzIGFuIGV4dHJhIHJlZi4KLSAgICByZXR1cm4gQXN5bmNGaWxlU3RyZWFtOjpj
cmVhdGUobV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBjbGll
bnQpLmdldCgpOwotfQotI2VuZGlmCi0KIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAg
TWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9y
eVR5cGVzOjpMb2FkZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmgJKHJldmlzaW9uIDE0NDY1NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsOSArMTM0LDYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBkaWREb3dubG9hZERhdGEoUmVzb3VyY2VIYW5kbGUqLCBpbnQpOwogICAgIHZp
cnR1YWwgdm9pZCBkaWREb3dubG9hZERhdGEoaW50KTsKICNlbmRpZgotI2lmIEVOQUJMRShCTE9C
KQotICAgIHZpcnR1YWwgQXN5bmNGaWxlU3RyZWFtKiBjcmVhdGVBc3luY0ZpbGVTdHJlYW0oRmls
ZVN0cmVhbUNsaWVudCopOwotI2VuZGlmCiAKICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCB7
IHJldHVybiBtX3JlcXVlc3QudXJsKCk7IH0gCiAgICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSgp
IGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlLmdldCgpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NYWluVGhyZWFkVGFzay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01haW5UaHJlYWRUYXNrLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NYWluVGhyZWFkVGFzay5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ5NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgTWFpblRocmVhZFRhc2tfaAorI2RlZmluZSBNYWluVGhyZWFkVGFza19oCisKKyNp
bmNsdWRlICJDcm9zc1RocmVhZENvcGllci5oIgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVHlwZVRyYWl0cy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKy8vIFRyYWl0cyBmb3IgdGhlIE1haW5UaHJlYWRUYXNrLgordGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IE1haW5UaHJlYWRUYXNrVHJhaXRzIHsKKyAgICB0eXBl
ZGVmIGNvbnN0IFQmIFBhcmFtVHlwZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBNYWluVGhyZWFkVGFza1RyYWl0czxUKj4geworICAgIHR5cGVkZWYgVCogUGFyYW1UeXBlOwor
fTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IE1haW5UaHJlYWRUYXNrVHJhaXRzPFBh
c3NSZWZQdHI8VD4gPiB7CisgICAgdHlwZWRlZiBQYXNzUmVmUHRyPFQ+IFBhcmFtVHlwZTsKK307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBNYWluVGhyZWFkVGFza1RyYWl0czxQYXNz
T3duUHRyPFQ+ID4geworICAgIHR5cGVkZWYgUGFzc093blB0cjxUPiBQYXJhbVR5cGU7Cit9Owor
CitjbGFzcyBNYWluVGhyZWFkVGFza0Jhc2UgeworV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFpblRo
cmVhZFRhc2tCYXNlKTsKK1dURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIE1h
aW5UaHJlYWRUYXNrQmFzZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzaygpID0g
MDsKKyAgICB2aXJ0dWFsIH5NYWluVGhyZWFkVGFza0Jhc2UoKSB7IH0KK307CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDE+CitjbGFzcyBNYWluVGhyZWFkVGFzazEgOiBwdWJs
aWMgTWFpblRocmVhZFRhc2tCYXNlIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHZvaWQgKCpNZXRo
b2QpKE1QMSk7CisgICAgdHlwZWRlZiBNYWluVGhyZWFkVGFzazE8UDEsIE1QMT4gTWFpblRocmVh
ZFRhc2s7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBNYWluVGhyZWFkVGFza1RyYWl0czxQMT46OlBh
cmFtVHlwZSBQYXJhbTE7CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxNYWluVGhyZWFkVGFzaz4g
Y3JlYXRlKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBNYWluVGhyZWFkVGFzayhtZXRob2QsIHBhcmFtZXRlcjEpKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgTWFpblRocmVhZFRhc2sxKE1ldGhvZCBtZXRob2QsIFBh
cmFtMSBwYXJhbWV0ZXIxKQorICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKKyAgICAgICAgLCBt
X3BhcmFtZXRlcjEocGFyYW1ldGVyMSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lk
IHBlcmZvcm1UYXNrKCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgICgqbV9tZXRob2QpKG1fcGFy
YW1ldGVyMSk7CisgICAgfQorCitwcml2YXRlOgorICAgIE1ldGhvZCBtX21ldGhvZDsKKyAgICBQ
MSBtX3BhcmFtZXRlcjE7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAx
LCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyPgorY2xhc3MgTWFpblRocmVhZFRhc2syIDogcHVi
bGljIE1haW5UaHJlYWRUYXNrQmFzZSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiB2b2lkICgqTWV0
aG9kKShNUDEsIE1QMik7CisgICAgdHlwZWRlZiBNYWluVGhyZWFkVGFzazI8UDEsIE1QMSwgUDIs
IE1QMj4gTWFpblRocmVhZFRhc2s7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBNYWluVGhyZWFkVGFz
a1RyYWl0czxQMT46OlBhcmFtVHlwZSBQYXJhbTE7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBNYWlu
VGhyZWFkVGFza1RyYWl0czxQMj46OlBhcmFtVHlwZSBQYXJhbTI7CisKKyAgICBzdGF0aWMgUGFz
c093blB0cjxNYWluVGhyZWFkVGFzaz4gY3JlYXRlKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJh
bWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgTWFpblRocmVhZFRhc2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKSk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIE1haW5UaHJlYWRUYXNrMihNZXRob2QgbWV0aG9kLCBQYXJh
bTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIpCisgICAgICAgIDogbV9tZXRob2QobWV0
aG9kKQorICAgICAgICAsIG1fcGFyYW1ldGVyMShwYXJhbWV0ZXIxKQorICAgICAgICAsIG1fcGFy
YW1ldGVyMihwYXJhbWV0ZXIyKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGVy
Zm9ybVRhc2soKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgKCptX21ldGhvZCkobV9wYXJhbWV0
ZXIxLCBtX3BhcmFtZXRlcjIpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNZXRob2QgbV9tZXRo
b2Q7CisgICAgUDEgbV9wYXJhbWV0ZXIxOworICAgIFAyIG1fcGFyYW1ldGVyMjsKK307CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBN
UDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDM+CitjbGFzcyBNYWluVGhyZWFkVGFzazMgOiBw
dWJsaWMgTWFpblRocmVhZFRhc2tCYXNlIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHZvaWQgKCpN
ZXRob2QpKE1QMSwgTVAyLCBNUDMpOworICAgIHR5cGVkZWYgTWFpblRocmVhZFRhc2szPFAxLCBN
UDEsIFAyLCBNUDIsIFAzLCBNUDM+IE1haW5UaHJlYWRUYXNrOworICAgIHR5cGVkZWYgdHlwZW5h
bWUgTWFpblRocmVhZFRhc2tUcmFpdHM8UDE+OjpQYXJhbVR5cGUgUGFyYW0xOworICAgIHR5cGVk
ZWYgdHlwZW5hbWUgTWFpblRocmVhZFRhc2tUcmFpdHM8UDI+OjpQYXJhbVR5cGUgUGFyYW0yOwor
ICAgIHR5cGVkZWYgdHlwZW5hbWUgTWFpblRocmVhZFRhc2tUcmFpdHM8UDM+OjpQYXJhbVR5cGUg
UGFyYW0zOworCisgICAgc3RhdGljIFBhc3NPd25QdHI8TWFpblRocmVhZFRhc2s+IGNyZWF0ZShN
ZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFt
MyBwYXJhbWV0ZXIzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNYWluVGhy
ZWFkVGFzayhtZXRob2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRlcjMpKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgTWFpblRocmVhZFRhc2szKE1ldGhvZCBtZXRob2QsIFBhcmFt
MSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMpCisgICAg
ICAgIDogbV9tZXRob2QobWV0aG9kKQorICAgICAgICAsIG1fcGFyYW1ldGVyMShwYXJhbWV0ZXIx
KQorICAgICAgICAsIG1fcGFyYW1ldGVyMihwYXJhbWV0ZXIyKQorICAgICAgICAsIG1fcGFyYW1l
dGVyMyhwYXJhbWV0ZXIzKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9y
bVRhc2soKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgKCptX21ldGhvZCkobV9wYXJhbWV0ZXIx
LCBtX3BhcmFtZXRlcjIsIG1fcGFyYW1ldGVyMyk7CisgICAgfQorCitwcml2YXRlOgorICAgIE1l
dGhvZCBtX21ldGhvZDsKKyAgICBQMSBtX3BhcmFtZXRlcjE7CisgICAgUDIgbV9wYXJhbWV0ZXIy
OworICAgIFAzIG1fcGFyYW1ldGVyMzsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBl
bmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFt
ZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQ+CitjbGFzcyBNYWluVGhyZWFkVGFzazQg
OiBwdWJsaWMgTWFpblRocmVhZFRhc2tCYXNlIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHZvaWQg
KCpNZXRob2QpKE1QMSwgTVAyLCBNUDMsIE1QNCk7CisgICAgdHlwZWRlZiBNYWluVGhyZWFkVGFz
azQ8UDEsIE1QMSwgUDIsIE1QMiwgUDMsIE1QMywgUDQsIE1QND4gTWFpblRocmVhZFRhc2s7Cisg
ICAgdHlwZWRlZiB0eXBlbmFtZSBNYWluVGhyZWFkVGFza1RyYWl0czxQMT46OlBhcmFtVHlwZSBQ
YXJhbTE7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBNYWluVGhyZWFkVGFza1RyYWl0czxQMj46OlBh
cmFtVHlwZSBQYXJhbTI7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBNYWluVGhyZWFkVGFza1RyYWl0
czxQMz46OlBhcmFtVHlwZSBQYXJhbTM7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBNYWluVGhyZWFk
VGFza1RyYWl0czxQND46OlBhcmFtVHlwZSBQYXJhbTQ7CisKKyAgICBzdGF0aWMgUGFzc093blB0
cjxNYWluVGhyZWFkVGFzaz4gY3JlYXRlKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIx
LCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNYWluVGhyZWFkVGFzayhtZXRo
b2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRlcjMsIHBhcmFtZXRlcjQpKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgTWFpblRocmVhZFRhc2s0KE1ldGhvZCBtZXRob2QsIFBhcmFt
MSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFt
NCBwYXJhbWV0ZXI0KQorICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKKyAgICAgICAgLCBtX3Bh
cmFtZXRlcjEocGFyYW1ldGVyMSkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjIocGFyYW1ldGVyMikK
KyAgICAgICAgLCBtX3BhcmFtZXRlcjMocGFyYW1ldGVyMykKKyAgICAgICAgLCBtX3BhcmFtZXRl
cjQocGFyYW1ldGVyNCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1U
YXNrKCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgICgqbV9tZXRob2QpKG1fcGFyYW1ldGVyMSwg
bV9wYXJhbWV0ZXIyLCBtX3BhcmFtZXRlcjMsIG1fcGFyYW1ldGVyNCk7CisgICAgfQorCitwcml2
YXRlOgorICAgIE1ldGhvZCBtX21ldGhvZDsKKyAgICBQMSBtX3BhcmFtZXRlcjE7CisgICAgUDIg
bV9wYXJhbWV0ZXIyOworICAgIFAzIG1fcGFyYW1ldGVyMzsKKyAgICBQNCBtX3BhcmFtZXRlcjQ7
Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwg
dHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlw
ZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1PgorY2xhc3MgTWFpblRocmVhZFRh
c2s1IDogcHVibGljIE1haW5UaHJlYWRUYXNrQmFzZSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiB2
b2lkICgqTWV0aG9kKShNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSk7CisgICAgdHlwZWRlZiBNYWlu
VGhyZWFkVGFzazU8UDEsIE1QMSwgUDIsIE1QMiwgUDMsIE1QMywgUDQsIE1QNCwgUDUsIE1QNT4g
TWFpblRocmVhZFRhc2s7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBNYWluVGhyZWFkVGFza1RyYWl0
czxQMT46OlBhcmFtVHlwZSBQYXJhbTE7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBNYWluVGhyZWFk
VGFza1RyYWl0czxQMj46OlBhcmFtVHlwZSBQYXJhbTI7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBN
YWluVGhyZWFkVGFza1RyYWl0czxQMz46OlBhcmFtVHlwZSBQYXJhbTM7CisgICAgdHlwZWRlZiB0
eXBlbmFtZSBNYWluVGhyZWFkVGFza1RyYWl0czxQND46OlBhcmFtVHlwZSBQYXJhbTQ7CisgICAg
dHlwZWRlZiB0eXBlbmFtZSBNYWluVGhyZWFkVGFza1RyYWl0czxQNT46OlBhcmFtVHlwZSBQYXJh
bTU7CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxNYWluVGhyZWFkVGFzaz4gY3JlYXRlKE1ldGhv
ZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBh
cmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWFpblRocmVhZFRhc2sobWV0aG9kLCBwYXJhbWV0
ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzLCBwYXJhbWV0ZXI0LCBwYXJhbWV0ZXI1KSk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIE1haW5UaHJlYWRUYXNrNShNZXRob2QgbWV0aG9kLCBQYXJh
bTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJh
bTQgcGFyYW1ldGVyNCwgUGFyYW01IHBhcmFtZXRlcjUpCisgICAgICAgIDogbV9tZXRob2QobWV0
aG9kKQorICAgICAgICAsIG1fcGFyYW1ldGVyMShwYXJhbWV0ZXIxKQorICAgICAgICAsIG1fcGFy
YW1ldGVyMihwYXJhbWV0ZXIyKQorICAgICAgICAsIG1fcGFyYW1ldGVyMyhwYXJhbWV0ZXIzKQor
ICAgICAgICAsIG1fcGFyYW1ldGVyNChwYXJhbWV0ZXI0KQorICAgICAgICAsIG1fcGFyYW1ldGVy
NShwYXJhbWV0ZXI1KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRh
c2soKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgKCptX21ldGhvZCkobV9wYXJhbWV0ZXIxLCBt
X3BhcmFtZXRlcjIsIG1fcGFyYW1ldGVyMywgbV9wYXJhbWV0ZXI0LCBtX3BhcmFtZXRlcjUpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBNZXRob2QgbV9tZXRob2Q7CisgICAgUDEgbV9wYXJhbWV0
ZXIxOworICAgIFAyIG1fcGFyYW1ldGVyMjsKKyAgICBQMyBtX3BhcmFtZXRlcjM7CisgICAgUDQg
bV9wYXJhbWV0ZXI0OworICAgIFA1IG1fcGFyYW1ldGVyNTsKK307CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1l
IFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1
LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBNUDY+CitjbGFzcyBNYWluVGhy
ZWFkVGFzazYgOiBwdWJsaWMgTWFpblRocmVhZFRhc2tCYXNlIHsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIHZvaWQgKCpNZXRob2QpKE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYpOworICAgIHR5
cGVkZWYgTWFpblRocmVhZFRhc2s2PFAxLCBNUDEsIFAyLCBNUDIsIFAzLCBNUDMsIFA0LCBNUDQs
IFA1LCBNUDUsIFA2LCBNUDY+IE1haW5UaHJlYWRUYXNrOworICAgIHR5cGVkZWYgdHlwZW5hbWUg
TWFpblRocmVhZFRhc2tUcmFpdHM8UDE+OjpQYXJhbVR5cGUgUGFyYW0xOworICAgIHR5cGVkZWYg
dHlwZW5hbWUgTWFpblRocmVhZFRhc2tUcmFpdHM8UDI+OjpQYXJhbVR5cGUgUGFyYW0yOworICAg
IHR5cGVkZWYgdHlwZW5hbWUgTWFpblRocmVhZFRhc2tUcmFpdHM8UDM+OjpQYXJhbVR5cGUgUGFy
YW0zOworICAgIHR5cGVkZWYgdHlwZW5hbWUgTWFpblRocmVhZFRhc2tUcmFpdHM8UDQ+OjpQYXJh
bVR5cGUgUGFyYW00OworICAgIHR5cGVkZWYgdHlwZW5hbWUgTWFpblRocmVhZFRhc2tUcmFpdHM8
UDU+OjpQYXJhbVR5cGUgUGFyYW01OworICAgIHR5cGVkZWYgdHlwZW5hbWUgTWFpblRocmVhZFRh
c2tUcmFpdHM8UDY+OjpQYXJhbVR5cGUgUGFyYW02OworCisgICAgc3RhdGljIFBhc3NPd25QdHI8
TWFpblRocmVhZFRhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwg
UGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCwg
UGFyYW01IHBhcmFtZXRlcjUsIFBhcmFtNiBwYXJhbWV0ZXI2KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBNYWluVGhyZWFkVGFzayhtZXRob2QsIHBhcmFtZXRlcjEsIHBhcmFt
ZXRlcjIsIHBhcmFtZXRlcjMsIHBhcmFtZXRlcjQsIHBhcmFtZXRlcjUsIHBhcmFtZXRlcjYpKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgTWFpblRocmVhZFRhc2s2KE1ldGhvZCBtZXRob2QsIFBh
cmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBh
cmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSwgUGFyYW02IHBhcmFtZXRlcjYpCisg
ICAgICAgIDogbV9tZXRob2QobWV0aG9kKQorICAgICAgICAsIG1fcGFyYW1ldGVyMShwYXJhbWV0
ZXIxKQorICAgICAgICAsIG1fcGFyYW1ldGVyMihwYXJhbWV0ZXIyKQorICAgICAgICAsIG1fcGFy
YW1ldGVyMyhwYXJhbWV0ZXIzKQorICAgICAgICAsIG1fcGFyYW1ldGVyNChwYXJhbWV0ZXI0KQor
ICAgICAgICAsIG1fcGFyYW1ldGVyNShwYXJhbWV0ZXI1KQorICAgICAgICAsIG1fcGFyYW1ldGVy
NihwYXJhbWV0ZXI2KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRh
c2soKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgKCptX21ldGhvZCkobV9wYXJhbWV0ZXIxLCBt
X3BhcmFtZXRlcjIsIG1fcGFyYW1ldGVyMywgbV9wYXJhbWV0ZXI0LCBtX3BhcmFtZXRlcjUsIG1f
cGFyYW1ldGVyNik7CisgICAgfQorCitwcml2YXRlOgorICAgIE1ldGhvZCBtX21ldGhvZDsKKyAg
ICBQMSBtX3BhcmFtZXRlcjE7CisgICAgUDIgbV9wYXJhbWV0ZXIyOworICAgIFAzIG1fcGFyYW1l
dGVyMzsKKyAgICBQNCBtX3BhcmFtZXRlcjQ7CisgICAgUDUgbV9wYXJhbWV0ZXI1OworICAgIFA2
IG1fcGFyYW1ldGVyNjsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEs
IHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5
cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVu
YW1lIFA2LCB0eXBlbmFtZSBNUDYsIHR5cGVuYW1lIFA3LCB0eXBlbmFtZSBNUDc+CitjbGFzcyBN
YWluVGhyZWFkVGFzazcgOiBwdWJsaWMgTWFpblRocmVhZFRhc2tCYXNlIHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIHZvaWQgKCpNZXRob2QpKE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1Q
Nyk7CisgICAgdHlwZWRlZiBNYWluVGhyZWFkVGFzazc8UDEsIE1QMSwgUDIsIE1QMiwgUDMsIE1Q
MywgUDQsIE1QNCwgUDUsIE1QNSwgUDYsIE1QNiwgUDcsIE1QNz4gTWFpblRocmVhZFRhc2s7Cisg
ICAgdHlwZWRlZiB0eXBlbmFtZSBNYWluVGhyZWFkVGFza1RyYWl0czxQMT46OlBhcmFtVHlwZSBQ
YXJhbTE7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBNYWluVGhyZWFkVGFza1RyYWl0czxQMj46OlBh
cmFtVHlwZSBQYXJhbTI7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBNYWluVGhyZWFkVGFza1RyYWl0
czxQMz46OlBhcmFtVHlwZSBQYXJhbTM7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBNYWluVGhyZWFk
VGFza1RyYWl0czxQND46OlBhcmFtVHlwZSBQYXJhbTQ7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBN
YWluVGhyZWFkVGFza1RyYWl0czxQNT46OlBhcmFtVHlwZSBQYXJhbTU7CisgICAgdHlwZWRlZiB0
eXBlbmFtZSBNYWluVGhyZWFkVGFza1RyYWl0czxQNj46OlBhcmFtVHlwZSBQYXJhbTY7CisgICAg
dHlwZWRlZiB0eXBlbmFtZSBNYWluVGhyZWFkVGFza1RyYWl0czxQNz46OlBhcmFtVHlwZSBQYXJh
bTc7CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxNYWluVGhyZWFkVGFzaz4gY3JlYXRlKE1ldGhv
ZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBh
cmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSwgUGFyYW02IHBh
cmFtZXRlcjYsIFBhcmFtNyBwYXJhbWV0ZXI3KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBNYWluVGhyZWFkVGFzayhtZXRob2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBh
cmFtZXRlcjMsIHBhcmFtZXRlcjQsIHBhcmFtZXRlcjUsIHBhcmFtZXRlcjYsIHBhcmFtZXRlcjcp
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTWFpblRocmVhZFRhc2s3KE1ldGhvZCBtZXRob2Qs
IFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMs
IFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSwgUGFyYW02IHBhcmFtZXRlcjYs
IFBhcmFtNyBwYXJhbWV0ZXI3KQorICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKKyAgICAgICAg
LCBtX3BhcmFtZXRlcjEocGFyYW1ldGVyMSkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjIocGFyYW1l
dGVyMikKKyAgICAgICAgLCBtX3BhcmFtZXRlcjMocGFyYW1ldGVyMykKKyAgICAgICAgLCBtX3Bh
cmFtZXRlcjQocGFyYW1ldGVyNCkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjUocGFyYW1ldGVyNSkK
KyAgICAgICAgLCBtX3BhcmFtZXRlcjYocGFyYW1ldGVyNikKKyAgICAgICAgLCBtX3BhcmFtZXRl
cjcocGFyYW1ldGVyNykKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1U
YXNrKCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgICgqbV9tZXRob2QpKG1fcGFyYW1ldGVyMSwg
bV9wYXJhbWV0ZXIyLCBtX3BhcmFtZXRlcjMsIG1fcGFyYW1ldGVyNCwgbV9wYXJhbWV0ZXI1LCBt
X3BhcmFtZXRlcjYsIG1fcGFyYW1ldGVyNyk7CisgICAgfQorCitwcml2YXRlOgorICAgIE1ldGhv
ZCBtX21ldGhvZDsKKyAgICBQMSBtX3BhcmFtZXRlcjE7CisgICAgUDIgbV9wYXJhbWV0ZXIyOwor
ICAgIFAzIG1fcGFyYW1ldGVyMzsKKyAgICBQNCBtX3BhcmFtZXRlcjQ7CisgICAgUDUgbV9wYXJh
bWV0ZXI1OworICAgIFA2IG1fcGFyYW1ldGVyNjsKKyAgICBQNyBtX3BhcmFtZXRlcjc7Cit9Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5h
bWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUg
TVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2
LCB0eXBlbmFtZSBQNywgdHlwZW5hbWUgTVA3LCB0eXBlbmFtZSBQOCwgdHlwZW5hbWUgTVA4Pgor
Y2xhc3MgTWFpblRocmVhZFRhc2s4IDogcHVibGljIE1haW5UaHJlYWRUYXNrQmFzZSB7CitwdWJs
aWM6CisgICAgdHlwZWRlZiB2b2lkICgqTWV0aG9kKShNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwg
TVA2LCBNUDcsIE1QOCk7CisgICAgdHlwZWRlZiBNYWluVGhyZWFkVGFzazg8UDEsIE1QMSwgUDIs
IE1QMiwgUDMsIE1QMywgUDQsIE1QNCwgUDUsIE1QNSwgUDYsIE1QNiwgUDcsIE1QNywgUDgsIE1Q
OD4gTWFpblRocmVhZFRhc2s7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBNYWluVGhyZWFkVGFza1Ry
YWl0czxQMT46OlBhcmFtVHlwZSBQYXJhbTE7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBNYWluVGhy
ZWFkVGFza1RyYWl0czxQMj46OlBhcmFtVHlwZSBQYXJhbTI7CisgICAgdHlwZWRlZiB0eXBlbmFt
ZSBNYWluVGhyZWFkVGFza1RyYWl0czxQMz46OlBhcmFtVHlwZSBQYXJhbTM7CisgICAgdHlwZWRl
ZiB0eXBlbmFtZSBNYWluVGhyZWFkVGFza1RyYWl0czxQND46OlBhcmFtVHlwZSBQYXJhbTQ7Cisg
ICAgdHlwZWRlZiB0eXBlbmFtZSBNYWluVGhyZWFkVGFza1RyYWl0czxQNT46OlBhcmFtVHlwZSBQ
YXJhbTU7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBNYWluVGhyZWFkVGFza1RyYWl0czxQNj46OlBh
cmFtVHlwZSBQYXJhbTY7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBNYWluVGhyZWFkVGFza1RyYWl0
czxQNz46OlBhcmFtVHlwZSBQYXJhbTc7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBNYWluVGhyZWFk
VGFza1RyYWl0czxQOD46OlBhcmFtVHlwZSBQYXJhbTg7CisgICAgCisgICAgc3RhdGljIFBhc3NP
d25QdHI8TWFpblRocmVhZFRhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1l
dGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1l
dGVyNCwgUGFyYW01IHBhcmFtZXRlcjUsIFBhcmFtNiBwYXJhbWV0ZXI2LCBQYXJhbTcgcGFyYW1l
dGVyNywgUGFyYW04IHBhcmFtZXRlcjgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IE1haW5UaHJlYWRUYXNrKG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1l
dGVyMywgcGFyYW1ldGVyNCwgcGFyYW1ldGVyNSwgcGFyYW1ldGVyNiwgcGFyYW1ldGVyNywgcGFy
YW1ldGVyOCkpOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgTWFpblRocmVhZFRhc2s4KE1l
dGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0z
IHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSwgUGFyYW02
IHBhcmFtZXRlcjYsIFBhcmFtNyBwYXJhbWV0ZXI3LCBQYXJhbTggcGFyYW1ldGVyOCkKKyAgICAg
ICAgOiBtX21ldGhvZChtZXRob2QpCisgICAgICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEp
CisgICAgICAgICwgbV9wYXJhbWV0ZXIyKHBhcmFtZXRlcjIpCisgICAgICAgICwgbV9wYXJhbWV0
ZXIzKHBhcmFtZXRlcjMpCisgICAgICAgICwgbV9wYXJhbWV0ZXI0KHBhcmFtZXRlcjQpCisgICAg
ICAgICwgbV9wYXJhbWV0ZXI1KHBhcmFtZXRlcjUpCisgICAgICAgICwgbV9wYXJhbWV0ZXI2KHBh
cmFtZXRlcjYpCisgICAgICAgICwgbV9wYXJhbWV0ZXI3KHBhcmFtZXRlcjcpCisgICAgICAgICwg
bV9wYXJhbWV0ZXI4KHBhcmFtZXRlcjgpCisgICAgeworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFs
IHZvaWQgcGVyZm9ybVRhc2soKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgKCptX21ldGhvZCko
bV9wYXJhbWV0ZXIxLCBtX3BhcmFtZXRlcjIsIG1fcGFyYW1ldGVyMywgbV9wYXJhbWV0ZXI0LCBt
X3BhcmFtZXRlcjUsIG1fcGFyYW1ldGVyNiwgbV9wYXJhbWV0ZXI3LCBtX3BhcmFtZXRlcjgpOwor
ICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgTWV0aG9kIG1fbWV0aG9kOworICAgIFAxIG1fcGFy
YW1ldGVyMTsKKyAgICBQMiBtX3BhcmFtZXRlcjI7CisgICAgUDMgbV9wYXJhbWV0ZXIzOworICAg
IFA0IG1fcGFyYW1ldGVyNDsKKyAgICBQNSBtX3BhcmFtZXRlcjU7CisgICAgUDYgbV9wYXJhbWV0
ZXI2OworICAgIFA3IG1fcGFyYW1ldGVyNzsKKyAgICBQOCBtX3BhcmFtZXRlcjg7Cit9OworCitz
dGF0aWMgdm9pZCBleGVjdXRlTWFpblRocmVhZFRhc2sodm9pZCogY29udGV4dCkKK3sKKyAgICBP
d25QdHI8TWFpblRocmVhZFRhc2tCYXNlPiB0YXNrID0gYWRvcHRQdHIoc3RhdGljX2Nhc3Q8TWFp
blRocmVhZFRhc2tCYXNlKj4oY29udGV4dCkpOworICAgIHRhc2stPnBlcmZvcm1UYXNrKCk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDE+Cit2b2lkIGNhbGxPbk1haW5U
aHJlYWQoCisgICAgdm9pZCAoKm1ldGhvZCkoTVAxKSwKKyAgICBjb25zdCBQMSYgcGFyYW1ldGVy
MSkKK3sKKyAgICBXVEY6OmNhbGxPbk1haW5UaHJlYWQoZXhlY3V0ZU1haW5UaHJlYWRUYXNrLCBN
YWluVGhyZWFkVGFzazE8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDE+
OjpjcmVhdGUoCisgICAgICAgIG1ldGhvZCwKKyAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+
Ojpjb3B5KHBhcmFtZXRlcjEpKS5sZWFrUHRyKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBQ
MSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyPgordm9pZCBjYWxsT25N
YWluVGhyZWFkKAorICAgIHZvaWQgKCptZXRob2QpKE1QMSwgTVAyKSwKKyAgICBjb25zdCBQMSYg
cGFyYW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIpCit7CisgICAgV1RGOjpjYWxsT25NYWlu
VGhyZWFkKGV4ZWN1dGVNYWluVGhyZWFkVGFzaywgTWFpblRocmVhZFRhc2syPHR5cGVuYW1lIENy
b3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGll
cjxQMj46OlR5cGUsIE1QMj46OmNyZWF0ZSgKKyAgICAgICAgbWV0aG9kLAorICAgICAgICBDcm9z
c1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksIENyb3NzVGhyZWFkQ29waWVyPFAy
Pjo6Y29weShwYXJhbWV0ZXIyKSkubGVha1B0cigpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
UDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMs
IHR5cGVuYW1lIE1QMz4KK3ZvaWQgY2FsbE9uTWFpblRocmVhZCgKKyAgICB2b2lkICgqbWV0aG9k
KShNUDEsIE1QMiwgTVAzKSwKKyAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwgY29uc3QgUDImIHBh
cmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0ZXIzKQoreworICAgIFdURjo6Y2FsbE9uTWFpblRo
cmVhZChleGVjdXRlTWFpblRocmVhZFRhc2ssIE1haW5UaHJlYWRUYXNrMzx0eXBlbmFtZSBDcm9z
c1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAz
Pjo6Y3JlYXRlKAorICAgICAgICBtZXRob2QsCisgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAx
Pjo6Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRl
cjIpLAorICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1ldGVyMykpLmxl
YWtQdHIoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVu
YW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1l
IFA0LCB0eXBlbmFtZSBNUDQ+Cit2b2lkIGNhbGxPbk1haW5UaHJlYWQoCisgICAgdm9pZCAoKm1l
dGhvZCkoTVAxLCBNUDIsIE1QMywgTVA0KSwKKyAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwgY29u
c3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLCBjb25zdCBQNCYgcGFyYW1l
dGVyNCkKK3sKKyAgICBXVEY6OmNhbGxPbk1haW5UaHJlYWQoZXhlY3V0ZU1haW5UaHJlYWRUYXNr
LCBNYWluVGhyZWFkVGFzazQ8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBN
UDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyLCB0eXBlbmFtZSBD
cm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUsIE1QMywKKyAgICAgICAgdHlwZW5hbWUgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDQ+OjpUeXBlLCBNUDQ+OjpjcmVhdGUoCisgICAgICAgICAgICBtZXRob2Qs
CisgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksIENy
b3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKKyAgICAgICAgICAgIENyb3Nz
VGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIzKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+
Ojpjb3B5KHBhcmFtZXRlcjQpKS5sZWFrUHRyKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBQ
MSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywg
dHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlw
ZW5hbWUgTVA1Pgordm9pZCBjYWxsT25NYWluVGhyZWFkKAorICAgIHZvaWQgKCptZXRob2QpKE1Q
MSwgTVAyLCBNUDMsIE1QNCwgTVA1KSwKKyAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwgY29uc3Qg
UDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLCBjb25zdCBQNCYgcGFyYW1ldGVy
NCwgY29uc3QgUDUmIHBhcmFtZXRlcjUpCit7CisgICAgV1RGOjpjYWxsT25NYWluVGhyZWFkKGV4
ZWN1dGVNYWluVGhyZWFkVGFzaywgTWFpblRocmVhZFRhc2s1PHR5cGVuYW1lIENyb3NzVGhyZWFk
Q29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMj46OlR5
cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpUeXBlLCBNUDMsCisgICAg
ICAgIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6VHlwZSwgTVA0LCB0eXBlbmFtZSBD
cm9zc1RocmVhZENvcGllcjxQNT46OlR5cGUsIE1QNT46OmNyZWF0ZSgKKyAgICAgICAgICAgIG1l
dGhvZCwKKyAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIx
KSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLAorICAgICAgICAgICAg
Q3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpLCBDcm9zc1RocmVhZENvcGll
cjxQND46OmNvcHkocGFyYW1ldGVyNCksCisgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQ
NT46OmNvcHkocGFyYW1ldGVyNSkpLmxlYWtQdHIoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAz
LCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0
eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBNUDY+Cit2b2lkIGNhbGxPbk1haW5U
aHJlYWQoCisgICAgdm9pZCAoKm1ldGhvZCkoTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNiks
CisgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLCBjb25zdCBQ
MyYgcGFyYW1ldGVyMywgY29uc3QgUDQmIHBhcmFtZXRlcjQsIGNvbnN0IFA1JiBwYXJhbWV0ZXI1
LCBjb25zdCBQNiYgcGFyYW1ldGVyNikKK3sKKyAgICBXVEY6OmNhbGxPbk1haW5UaHJlYWQoZXhl
Y3V0ZU1haW5UaHJlYWRUYXNrLCBNYWluVGhyZWFkVGFzazY8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlw
ZSwgTVAyLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUsIE1QMywKKyAgICAg
ICAgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+OjpUeXBlLCBNUDQsIHR5cGVuYW1lIENy
b3NzVGhyZWFkQ29waWVyPFA1Pjo6VHlwZSwgTVA1LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGll
cjxQNj46OlR5cGUsIE1QNj46OmNyZWF0ZSgKKyAgICAgICAgICAgIG1ldGhvZCwKKyAgICAgICAg
ICAgIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLAorICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3Bp
ZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpLCBDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFy
YW1ldGVyNCksCisgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQNT46OmNvcHkocGFyYW1l
dGVyNSksIENyb3NzVGhyZWFkQ29waWVyPFA2Pjo6Y29weShwYXJhbWV0ZXI2KSkubGVha1B0cigp
KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIs
IHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5
cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVu
YW1lIE1QNiwgdHlwZW5hbWUgUDcsIHR5cGVuYW1lIE1QNz4KK3ZvaWQgY2FsbE9uTWFpblRocmVh
ZCgKKyAgICB2b2lkICgqbWV0aG9kKShNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2LCBNUDcp
LAorICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVyMiwgY29uc3Qg
UDMmIHBhcmFtZXRlcjMsIGNvbnN0IFA0JiBwYXJhbWV0ZXI0LCBjb25zdCBQNSYgcGFyYW1ldGVy
NSwgY29uc3QgUDYmIHBhcmFtZXRlcjYsIGNvbnN0IFA3JiBwYXJhbWV0ZXI3KQoreworICAgIFdU
Rjo6Y2FsbE9uTWFpblRocmVhZChleGVjdXRlTWFpblRocmVhZFRhc2ssIE1haW5UaHJlYWRUYXNr
Nzx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jv
c3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVy
PFAzPjo6VHlwZSwgTVAzLAorICAgICAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQND46
OlR5cGUsIE1QNCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDU+OjpUeXBlLCBNUDUsIHR5
cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA2Pjo6VHlwZSwgTVA2LAorICAgICAgICB0eXBlbmFt
ZSBDcm9zc1RocmVhZENvcGllcjxQNz46OlR5cGUsIE1QNz46OmNyZWF0ZSgKKyAgICAgICAgICAg
IG1ldGhvZCwKKyAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0
ZXIxKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLAorICAgICAgICAg
ICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpLCBDcm9zc1RocmVhZENv
cGllcjxQND46OmNvcHkocGFyYW1ldGVyNCksCisgICAgICAgICAgICBDcm9zc1RocmVhZENvcGll
cjxQNT46OmNvcHkocGFyYW1ldGVyNSksIENyb3NzVGhyZWFkQ29waWVyPFA2Pjo6Y29weShwYXJh
bWV0ZXI2KSwKKyAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFA3Pjo6Y29weShwYXJhbWV0
ZXI3KSkubGVha1B0cigpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1Q
MSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywg
dHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlw
ZW5hbWUgUDYsIHR5cGVuYW1lIE1QNiwgdHlwZW5hbWUgUDcsIHR5cGVuYW1lIE1QNywgdHlwZW5h
bWUgUDgsIHR5cGVuYW1lIE1QOD4KK3ZvaWQgY2FsbE9uTWFpblRocmVhZCgKKyAgICB2b2lkICgq
bWV0aG9kKShNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2LCBNUDcsIE1QOCksCisgICAgY29u
c3QgUDEmIHBhcmFtZXRlcjEsIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLCBjb25zdCBQMyYgcGFyYW1l
dGVyMywgY29uc3QgUDQmIHBhcmFtZXRlcjQsIGNvbnN0IFA1JiBwYXJhbWV0ZXI1LCBjb25zdCBQ
NiYgcGFyYW1ldGVyNiwgY29uc3QgUDcmIHBhcmFtZXRlcjcsIGNvbnN0IFA4JiBwYXJhbWV0ZXI4
KQoreworICAgIFdURjo6Y2FsbE9uTWFpblRocmVhZChleGVjdXRlTWFpblRocmVhZFRhc2ssIE1h
aW5UaHJlYWRUYXNrODx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwg
dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3Nz
VGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAzLAorICAgIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29w
aWVyPFA0Pjo6VHlwZSwgTVA0LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNT46OlR5cGUs
IE1QNSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDY+OjpUeXBlLCBNUDYsCisgICAgdHlw
ZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDc+OjpUeXBlLCBNUDcsIHR5cGVuYW1lIENyb3NzVGhy
ZWFkQ29waWVyPFA4Pjo6VHlwZSwgTVA4Pjo6Y3JlYXRlKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcm9zc1RocmVhZENvcGll
cjxQMT46OmNvcHkocGFyYW1ldGVyMSksIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJh
bWV0ZXIyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1ldGVyMyksIENyb3NzVGhy
ZWFkQ29waWVyPFA0Pjo6Y29weShwYXJhbWV0ZXI0KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQNT46OmNv
cHkocGFyYW1ldGVyNSksIENyb3NzVGhyZWFkQ29waWVyPFA2Pjo6Y29weShwYXJhbWV0ZXI2KSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
cm9zc1RocmVhZENvcGllcjxQNz46OmNvcHkocGFyYW1ldGVyNyksIENyb3NzVGhyZWFkQ29waWVy
PFA4Pjo6Y29weShwYXJhbWV0ZXI4KSkubGVha1B0cigpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisKKyNlbmRpZiAvLyBNYWluVGhyZWFkVGFza19oCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3Bw
CShyZXZpc2lvbiAxNDQ2NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JSZXNvdXJjZUhhbmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw5ICsxNjgsOSBAQCBC
bG9iUmVzb3VyY2VIYW5kbGU6OkJsb2JSZXNvdXJjZUhhbmRsZShQCiAgICAgLCBtX3NpemVJdGVt
Q291bnQoMCkKICAgICAsIG1fcmVhZEl0ZW1Db3VudCgwKQogICAgICwgbV9maWxlT3BlbmVkKGZh
bHNlKQoteyAgICAKK3sKICAgICBpZiAobV9hc3luYykKLSAgICAgICAgbV9hc3luY1N0cmVhbSA9
IGNsaWVudC0+Y3JlYXRlQXN5bmNGaWxlU3RyZWFtKHRoaXMpOworICAgICAgICBtX2FzeW5jU3Ry
ZWFtID0gQXN5bmNGaWxlU3RyZWFtOjpjcmVhdGUodGhpcyk7CiAgICAgZWxzZQogICAgICAgICBt
X3N0cmVhbSA9IEZpbGVTdHJlYW06OmNyZWF0ZSgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAkocmV2
aXNpb24gMTQ0NjU3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsOSArMTMyLDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkRG93bmxvYWREYXRhKFJlc291cmNlSGFuZGxlKiwgaW50IC8qZGF0YUxlbmd0aCovKSB7
IH0KICNlbmRpZgotI2lmIEVOQUJMRShCTE9CKQotICAgICAgICB2aXJ0dWFsIEFzeW5jRmlsZVN0
cmVhbSogY3JlYXRlQXN5bmNGaWxlU3RyZWFtKEZpbGVTdHJlYW1DbGllbnQqKSB7IHJldHVybiAw
OyB9Ci0jZW5kaWYKIAogI2lmIFVTRShTT1VQKQogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE0NDY5MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE0IEBACisyMDEzLTAzLTA0ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBA
YXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgQXN5bmNGaWxlUmVhZGVyIHdvcmsgd2l0aG91dCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTEzNzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAg
ICAgIFJlbW92ZWQgYSBkdW1teSBpbXBsZW1lbnRhdGlvbiBvZiBjcmVhdGVBc3luY0ZpbGVTdHJl
YW0sIHdoaWNoIGlzIG5vIGxvbmdlciBuZWVkZWQuCisKIDIwMTMtMDMtMDQgIFJhcGhhZWwgS3Vi
byBkYSBDb3N0YSAgPHJhcGhhZWwua3Viby5kYS5jb3N0YUBpbnRlbC5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjE0NDY3NS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAko
cmV2aXNpb24gMTQ0NjU3KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogI2lu
Y2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0FzeW5jRmlsZVN0cmVhbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUhhbmRsZS5oPgpAQCAtMjkxLDE0ICsyOTIsNiBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6d2lsbFN0b3BCdWZmCiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi0j
aWYgRU5BQkxFKEJMT0IpCi1XZWJDb3JlOjpBc3luY0ZpbGVTdHJlYW0qIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6Y3JlYXRlQXN5bmNGaWxlU3RyZWFtKFdlYkNvcmU6OkZpbGVTdHJlYW1DbGllbnQq
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYKLQog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDE0NDY1NykKKysrIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05
MSwxMCArOTEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTdG9wQnVmZmVyaW5n
RGF0YShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQpIE9WRVJSSURF
OwogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAotI2lmIEVOQUJMRShCTE9CKQotICAgIHZpcnR1
YWwgV2ViQ29yZTo6QXN5bmNGaWxlU3RyZWFtKiBjcmVhdGVBc3luY0ZpbGVTdHJlYW0oV2ViQ29y
ZTo6RmlsZVN0cmVhbUNsaWVudCopIE9WRVJSSURFOwotI2VuZGlmCi0KIHByaXZhdGU6CiAgICAg
TmV0d29ya1Jlc291cmNlTG9hZGVyKGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
JiwgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqKTsKIAo=
</data>
<flag name="review"
          id="212286"
          type_id="1"
          status="+"
          setter="andersca"
    />
    <flag name="commit-queue"
          id="212314"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191406</attachid>
            <date>2013-03-04 22:58:45 -0800</date>
            <delta_ts>2013-03-04 22:58:45 -0800</delta_ts>
            <desc>run it by EWS again</desc>
            <filename>BlobAsyncStream.txt</filename>
            <type>text/plain</type>
            <size>50491</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NDcyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDEzLTAzLTA0ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgQXN5bmNGaWxlUmVh
ZGVyIHdvcmsgd2l0aG91dCBTY3JpcHRFeGVjdXRpb25Db250ZXh0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTEzNzYKKworICAgICAgICBSZXZpZXdl
ZCBieSBBbmRlcnMgQ2FybHNzb24uCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IEFkZGVkIE1haW5UaHJlYWRUYXNrLmguCisKKyAgICAgICAgKiBkb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaDoKKyAgICAgICAgUmVtb3ZlZCBmaWxlVGhyZWFkKCkuIENyZWF0aW5nIGEgdGhyZWFk
IGZvciBldmVyeSBjb250ZXh0IHRoYXQgYWNlc3NlcyBmaWxlcyBhcHBlYXJzCisgICAgICAgIHdh
c3RlZnVsIGFuZCB1bm5lY2Vzc2FyeS4KKworICAgICAgICAqIGZpbGVhcGkvQXN5bmNGaWxlU3Ry
ZWFtLmg6CisgICAgICAgICogZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlRmlsZVRocmVhZCk6IEZpbGVUaHJlYWQgaXMgbm93IGEgc2luZ2xldG9u
LgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVRocmVhZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6QXN5bmNGaWxlU3RyZWFtOjpBc3luY0ZpbGVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6
QXN5bmNGaWxlU3RyZWFtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6ZGlkU3RhcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxlU3RyZWFtOjpzdGFydE9uRmlsZVRocmVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTdHJlYW06OnN0b3ApOgorICAgICAgICAoV2ViQ29y
ZTo6ZGVyZWZQcm94eU9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVT
dHJlYW06OnN0b3BPbkZpbGVUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6ZGlkR2V0U2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTdHJlYW06OmdldFNpemVPbkZpbGVUaHJlYWQp
OgorICAgICAgICAoV2ViQ29yZTo6ZGlkT3Blbik6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0Zp
bGVTdHJlYW06Om9wZW5Gb3JSZWFkT25GaWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkFz
eW5jRmlsZVN0cmVhbTo6b3BlbkZvcldyaXRlT25GaWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNv
cmU6OmRpZFJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxlU3RyZWFtOjpyZWFkT25G
aWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OmRpZFdyaXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFzeW5jRmlsZVN0cmVhbTo6d3JpdGVPbkZpbGVUaHJlYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6ZGlkVHJ1bmNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxlU3RyZWFtOjp0cnVu
Y2F0ZU9uRmlsZVRocmVhZCk6CisgICAgICAgIFVzZSBjYWxsT25NYWluVGhyZWFkKCkgaW5zdGVh
ZCBvZiBwb3N0aW5nIG1lc3NhZ2VzIHRocm91Z2ggYSBjb250ZXh0LiBXZSBuZXZlciB1c2VkCisg
ICAgICAgIG90aGVyIHRocmVhZHMsIGFuZCBkb24ndCBwbGFuIHRvLgorCisgICAgICAgICogbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIu
aDoKKyAgICAgICAgV2Ugbm8gbG9uZ2VyIG5lZWQgdGhpcyBwc2V1ZG8tY2xpZW50IGNhbGwgdG8g
Y3JlYXRlIGFuIEFzeW5jRmlsZVN0cmVhbSwgbm93IHRoYXQKKyAgICAgICAgd2UgZG9uJ3QgbmVl
ZCB0byBnZXQgYSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHNvbWV3aGVyZS4KKworICAgICAgICAq
IHBsYXRmb3JtL01haW5UaHJlYWRUYXNrLmg6IEFkZGVkLiBUaGlzIGltcGxlbWVudHMgY2FsbE9u
TWFpblRocmVhZCB3aXRoIG11bHRpcGxlCisgICAgICAgIHN0cm9uZ2x5IHR5cGVkIGFyZ3VtZW50
cy4gQ2xvc2VseSBiYXNlZCBvbiBDcm9zc1RocmVhZFRhc2suaC4KKworICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJs
b2JSZXNvdXJjZUhhbmRsZTo6QmxvYlJlc291cmNlSGFuZGxlKTogQ3JlYXRlIEFzeW5jRmlsZVN0
cmVhbSBkaXJlY3RseS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVDbGllbnQuaDogUmVtb3ZlZCBjcmVhdGVBc3luY0ZpbGVTdHJlYW0oKS4KKwogMjAxMy0wMy0w
NCAgS3VuaWhpa28gU2FrYW1vdG8gIDxrc2FrYW1vdG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtDaHJvbWl1bV0gQWRkIHJ1bnRpbWUgZmxhZyBmb3IgZm9udCBsb2FkIGV2ZW50cwpJbmRleDog
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNDQ3MjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC01NzgyLDYgKzU3
ODIsNyBAQCB3ZWJjb3JlX3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9n
Z2luZy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBcCisJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFRhc2suaCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDE0NDcyNSkKKysrIFNv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTIzMjksNiArMjMyOSw3
IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL0xhbmd1YWdlLmggXAogICAgIHBsYXRmb3Jt
L01lbW9yeVByZXNzdXJlSGFuZGxlci5oIFwKICAgICBwbGF0Zm9ybS9NZW1vcnlVc2FnZVN1cHBv
cnQuaCBcCisgICAgcGxhdGZvcm0vTWFpblRocmVhZFRhc2suaCBcCiAgICAgcGxhdGZvcm0vTUlN
RVR5cGVSZWdpc3RyeS5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQmFzZS5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2xpZW50
LmggXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oJKHJldmlzaW9uIDE0NDcyNSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yODkxOSw2ICsyODkxOSwxMCBAQAogCQkJ
CT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxN
YWluVGhyZWFkVGFzay5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRp
dmVQYXRoPSIuLlxwbGF0Zm9ybVxNSU1FVHlwZVJlZ2lzdHJ5LmNwcCIKIAkJCQk+CiAJCQk8L0Zp
bGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2oJKHJldmlzaW9uIDE0NDcyNSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTkxMTQsNiArOTExNCw3IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMb2dnaW5nLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxNZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXE1lbW9yeVVzYWdlU3VwcG9ydC5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTWFpblRocmVhZFRhc2su
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXE1JTUVUeXBlUmVnaXN0
cnkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXE5vdEltcGxlbWVu
dGVkLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxQYXN0ZWJvYXJk
LmgiIC8+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxNDQ3MjUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29w
eSkKQEAgLTkzMzAsNiArOTMzMCw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxNZW1vcnlVc2FnZVN1cHBvcnQuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxNYWluVGhyZWFkVGFzay5oIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm08L0ZpbHRlcj4KKyAg
ICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXE1JTUVU
eXBlUmVnaXN0cnkuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtPC9GaWx0ZXI+CiAgICAgPC9D
bEluY2x1ZGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDQ3MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTYyMjUsNiAr
NjIyNSw3IEBACiAJCUUxODI1NjhGMEVGMkIwMkQwMDkzMzI0MiAvKiBKU1dvcmtlckNvbnRleHQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4MjU2
OEQwRUYyQjAyRDAwOTMzMjQyIC8qIEpTV29ya2VyQ29udGV4dC5jcHAgKi87IH07CiAJCUUxODI1
NjkwMEVGMkIwMkQwMDkzMzI0MiAvKiBKU1dvcmtlckNvbnRleHQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxODI1NjhFMEVGMkIwMkQwMDkzMzI0MiAv
KiBKU1dvcmtlckNvbnRleHQuaCAqLzsgfTsKIAkJRTE4MjU4QUMwRUYzQ0Q3MDAwOTMzMjQyIC8q
IEpTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMTgyNThBQjBFRjNDRDcwMDA5MzMyNDIgLyogSlNXb3JrZXJDb250
ZXh0Q3VzdG9tLmNwcCAqLzsgfTsKKwkJRTE4NzA1NjMxNkU1NEEwRDAwNTg1RTk3IC8qIE1haW5U
aHJlYWRUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMTg3MDU2MjE2RTU0QTBEMDA1ODVFOTcgLyogTWFpblRocmVhZFRhc2suaCAqLzsgfTsKIAkJ
RTE4NzcyRjExMjZFMjYyOTAwM0RENTg2IC8qIExhbmd1YWdlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxODc3MkYwMTI2RTI2MjkwMDNERDU4NiAv
KiBMYW5ndWFnZS5jcHAgKi87IH07CiAJCUUxQTE0NzA4MTExMDJCMTUwMEVFQzBGMyAvKiBDb250
YWluZXJOb2RlQWxnb3JpdGhtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTFBMTQ3MDcxMTEwMkIxNTAwRUVDMEYzIC8qIENvbnRhaW5lck5vZGVBbGdv
cml0aG1zLmggKi87IH07CiAJCUUxQTMxNjJEMTM0QkMzMkQwMDdDOUE0RiAvKiBXZWJOU0F0dHJp
YnV0ZWRTdHJpbmdFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUxQTMxNjJCMTM0QkMzMkQwMDdDOUE0RiAvKiBXZWJOU0F0dHJpYnV0ZWRTdHJp
bmdFeHRyYXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNjI4MCw3ICs2MjgxLDcgQEAKIAkJRTFDQTVDQkMwRThDRENBRjAwRThFRjkwIC8qIEpT
V29ya2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxQ0E1Q0JCMEU4Q0RDQUYwMEU4RUY5MCAvKiBKU1dvcmtlckN1c3RvbS5jcHAgKi87
IH07CiAJCUUxQ0FBNUM2MEU4QkQyMzYwMEE3M0VDQSAvKiBKU1dvcmtlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDQUE1QzUwRThCRDIzNjAwQTcz
RUNBIC8qIEpTV29ya2VyLmggKi87IH07CiAJCUUxQ0RFOTIwMTUwMThFRDAwMDg2MkNDNSAvKiBB
c3luY0ZpbGVTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTFDREU5MUYxNTAxOEVEMDAwODYyQ0M1IC8qIEFzeW5jRmlsZVN0cmVhbS5jcHAg
Ki87IH07Ci0JCUUxQ0RFOTIyMTUwMTkxNjkwMDg2MkNDNSAvKiBBc3luY0ZpbGVTdHJlYW0uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQ0RFOTIxMTUw
MTkxNjkwMDg2MkNDNSAvKiBBc3luY0ZpbGVTdHJlYW0uaCAqLzsgfTsKKwkJRTFDREU5MjIxNTAx
OTE2OTAwODYyQ0M1IC8qIEFzeW5jRmlsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDREU5MjExNTAxOTE2OTAwODYyQ0M1IC8qIEFzeW5j
RmlsZVN0cmVhbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCUUx
RTFCRjAwMTE1RkY2RkIwMDZGNTJDQSAvKiBXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFMUJFRkYxMTVGRjZGQjAw
NkY1MkNBIC8qIFdpbmRvd3NLZXlib2FyZENvZGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTFFNkVFQTQwQjYyOERBODAwNUYyRjcwIC8qIEpT
SFRNTFNlbGVjdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTFFNkVFQTMwQjYyOERBODAwNUYyRjcwIC8qIEpTSFRNTFNlbGVjdEVsZW1l
bnQuY3BwICovOyB9OwogCQlFMUU2RUVBODBCNjI4REIzMDA1RjJGNzAgLyogSlNIVE1MU2VsZWN0
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTFFNkVFQTcwQjYyOERCMzAwNUYyRjcwIC8qIEpTSFRNTFNlbGVjdEVsZW1lbnQuaCAqLzsgfTsK
QEAgLTExNDA3LDggKzExNDA4LDggQEAKIAkJQTMxQzRFNEMxNkUwMkFBNjAwMkY3OTU3IC8qIE9F
U1RleHR1cmVIYWxmRmxvYXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHA7IHBhdGggPSBjYW52YXMvT0VTVGV4dHVyZUhhbGZG
bG9hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMUM0RTRFMTZFMDJBQjQw
MDJGNzk1NyAvKiBPRVNUZXh0dXJlSGFsZkZsb2F0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IE9FU1RleHR1cmVIYWxmRmxvYXQuaDsgcGF0aCA9IGNhbnZhcy9PRVNUZXh0dXJl
SGFsZkZsb2F0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMUM0RTUwMTZFMDJB
QzUwMDJGNzk1NyAvKiBPRVNUZXh0dXJlSGFsZkZsb2F0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBPRVNUZXh0dXJlSGFs
ZkZsb2F0LmlkbDsgcGF0aCA9IGNhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTMxQzRFNTExNkUwMkIwODAwMkY3OTU3IC8qIEpTT0VT
VGV4dHVyZUhhbGZGbG9hdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBKU09FU1RleHR1cmVIYWxmRmxvYXQuY3BwOyBwYXRoID0gSlNPRVNUZXh0dXJlSGFsZkZsb2F0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTMxQzRFNTMxNkUwMkI0MDAwMkY3
OTU3IC8qIEpTT0VTVGV4dHVyZUhhbGZGbG9hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBKU09FU1RleHR1cmVIYWxmRmxvYXQuaDsgcGF0aCA9IEpTT0VTVGV4dHVyZUhhbGZG
bG9hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMzFDNEU1MTE2RTAyQjA4MDAy
Rjc5NTcgLyogSlNPRVNUZXh0dXJlSGFsZkZsb2F0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUEzMUM0RTUzMTZFMDJCNDAwMDJGNzk1NyAvKiBKU09FU1RleHR1cmVI
YWxmRmxvYXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPRVNUZXh0dXJl
SGFsZkZsb2F0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzQkI1OUYxMTQ1N0E0
MEQwMEFDNTZGRSAvKiBEb2N1bWVudEV2ZW50UXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRFdmVudFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTNCQjU5RjIxNDU3QTQwRDAwQUM1NkZFIC8qIERvY3VtZW50RXZlbnRR
dWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudEV2ZW50UXVl
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNFMjY0MkUxNDc0ODk5MTAwNUE4
NTg4IC8qIFdvcmtlckV2ZW50UXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gV29ya2VyRXZlbnRRdWV1ZS5jcHA7IHBhdGggPSB3b3JrZXJzL1dvcmtlckV2ZW50
UXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM4OTcsNiArMTM4OTgs
NyBAQAogCQlFMTgyNTY4RDBFRjJCMDJEMDA5MzMyNDIgLyogSlNXb3JrZXJDb250ZXh0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV29ya2VyQ29udGV4dC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxODI1NjhFMEVGMkIwMkQwMDkzMzI0MiAv
KiBKU1dvcmtlckNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNX
b3JrZXJDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxODI1OEFCMEVG
M0NENzAwMDkzMzI0MiAvKiBKU1dvcmtlckNvbnRleHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE4NzA1NjIxNkU1NEEwRDAwNTg1RTk3IC8qIE1haW5U
aHJlYWRUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1haW5UaHJlYWRU
YXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxODc3MkYwMTI2RTI2MjkwMDNE
RDU4NiAvKiBMYW5ndWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBMYW5ndWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQTE0NzA3MTEx
MDJCMTUwMEVFQzBGMyAvKiBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMUEzMTYyQjEzNEJDMzJEMDA3QzlBNEYgLyogV2ViTlNBdHRy
aWJ1dGVkU3RyaW5nRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
Yk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjE2NTAsNiArMjE2NTIsNyBAQAogCQkJCTkzNTIwN0JEMDlCRDQxMEEwMEYyMDM4RCAvKiBM
b2NhbGl6ZWRTdHJpbmdzLmggKi8sCiAJCQkJQTgyMzlERkUwOUIzQ0Y4QTAwQjYwNjQxIC8qIExv
Z2dpbmcuY3BwICovLAogCQkJCUE4MjM5REZGMDlCM0NGOEEwMEI2MDY0MSAvKiBMb2dnaW5nLmgg
Ki8sCisJCQkJRTE4NzA1NjIxNkU1NEEwRDAwNTg1RTk3IC8qIE1haW5UaHJlYWRUYXNrLmggKi8s
CiAJCQkJNjU3RURBMDYxMzg1Q0I5NzAwNEUwNjQ1IC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlci5j
cHAgKi8sCiAJCQkJNjU3RURBMDcxMzg1Q0I5NzAwNEUwNjQ1IC8qIE1lbW9yeVByZXNzdXJlSGFu
ZGxlci5oICovLAogCQkJCUQ2RkRBRUYyMTQ5QzA2MTkwMDM3QjFFMyAvKiBNZW1vcnlVc2FnZVN1
cHBvcnQuY3BwICovLApAQCAtMjY2NjUsNiArMjY2NjgsNyBAQAogCQkJCUEwMjQ1NzUyMTZDRUFB
MjcwMDBFNTY3MSAvKiBFWFREcmF3QnVmZmVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTMxQzRF
NEYxNkUwMkFCNDAwMkY3OTU3IC8qIE9FU1RleHR1cmVIYWxmRmxvYXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUEzMUM0RTU0MTZFMDJCNDAwMDJGNzk1NyAvKiBKU09FU1RleHR1cmVIYWxmRmxvYXQu
aCBpbiBIZWFkZXJzICovLAorCQkJCUUxODcwNTYzMTZFNTRBMEQwMDU4NUU5NyAvKiBNYWluVGhy
ZWFkVGFzay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0U2NkUyMzQxNkQ2RUI2QzAwRjdFN0ZGIC8q
IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFQTMwRjZB
MTZERkZFNzUwMDI1N0QwQiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5jcHAJKHJldmlzaW9uIDE0NDcyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNiBA
QAogI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAj
aW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJGaWxlVGhyZWFkLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJQdWJsaWNVUkxNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKQEAgLTEyNywxMCArMTI2LDYgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6flNjcmlwdEV4ZWN1dGlvbgogICAgICAgICAoKml0ZXIpLT5jb250ZXh0RGVzdHJveWVkKCk7
CiAgICAgfQogI2lmIEVOQUJMRShCTE9CKQotICAgIGlmIChtX2ZpbGVUaHJlYWQpIHsKLSAgICAg
ICAgbV9maWxlVGhyZWFkLT5zdG9wKCk7Ci0gICAgICAgIG1fZmlsZVRocmVhZCA9IDA7Ci0gICAg
fQogICAgIGlmIChtX3B1YmxpY1VSTE1hbmFnZXIpCiAgICAgICAgIG1fcHVibGljVVJMTWFuYWdl
ci0+Y29udGV4dERlc3Ryb3llZCgpOwogI2VuZGlmCkBAIC0zNTgsMTYgKzM1Myw2IEBAIGludCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpjaXJjdWxhclNlcXUKIH0KIAogI2lmIEVOQUJMRShCTE9C
KQotRmlsZVRocmVhZCogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZmlsZVRocmVhZCgpCi17Ci0g
ICAgaWYgKCFtX2ZpbGVUaHJlYWQpIHsKLSAgICAgICAgbV9maWxlVGhyZWFkID0gRmlsZVRocmVh
ZDo6Y3JlYXRlKCk7Ci0gICAgICAgIGlmICghbV9maWxlVGhyZWFkLT5zdGFydCgpKQotICAgICAg
ICAgICAgbV9maWxlVGhyZWFkID0gMDsKLSAgICB9Ci0gICAgcmV0dXJuIG1fZmlsZVRocmVhZC5n
ZXQoKTsKLX0KLQogUHVibGljVVJMTWFuYWdlciYgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cHVi
bGljVVJMTWFuYWdlcigpCiB7CiAgICAgaWYgKCFtX3B1YmxpY1VSTE1hbmFnZXIpCkBAIC00MjAs
NyArNDA1LDYgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXBvcnRNZW1vcgogICAg
IGluZm8uYWRkTWVtYmVyKG1fcGVuZGluZ0V4Y2VwdGlvbnMsICJwZW5kaW5nRXhjZXB0aW9ucyIp
OwogI2lmIEVOQUJMRShCTE9CKQogICAgIGluZm8uYWRkTWVtYmVyKG1fcHVibGljVVJMTWFuYWdl
ciwgInB1YmxpY1VSTE1hbmFnZXIiKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX2ZpbGVUaHJlYWQs
ICJmaWxlVGhyZWFkIik7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCShyZXZpc2lvbiAxNDQ3MjUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miwx
MCArNjIsNiBAQCBjbGFzcyBNZXNzYWdlUG9ydDsKIGNsYXNzIFB1YmxpY1VSTE1hbmFnZXI7CiAj
ZW5kaWYKIAotI2lmIEVOQUJMRShCTE9CKQotY2xhc3MgRmlsZVRocmVhZDsKLSNlbmRpZgotCiBj
bGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IDogcHVibGljIFNlY3VyaXR5Q29udGV4dCwgcHVi
bGljIFN1cHBsZW1lbnRhYmxlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IHsKIHB1YmxpYzoKICAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkBAIC0xNTYsMTEgKzE1Miw2IEBAIHB1YmxpYzoK
ICAgICBKU0M6OkpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSgpOwogI2VuZGlmCiAKLSNpZiBFTkFC
TEUoQkxPQikKLSAgICBGaWxlVGhyZWFkKiBmaWxlVGhyZWFkKCk7Ci0gICAgdm9pZCBzdG9wRmls
ZVRocmVhZCgpOwotI2VuZGlmCi0KICAgICAvLyBJbnRlcnZhbCBpcyBpbiBzZWNvbmRzLgogICAg
IHZvaWQgYWRqdXN0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIG9sZE1pbmltdW1UaW1lcklu
dGVydmFsKTsKICAgICB2aXJ0dWFsIGRvdWJsZSBtaW5pbXVtVGltZXJJbnRlcnZhbCgpIGNvbnN0
OwpAQCAtMjMwLDcgKzIyMSw2IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoQkxPQikKICAgICBP
d25QdHI8UHVibGljVVJMTWFuYWdlcj4gbV9wdWJsaWNVUkxNYW5hZ2VyOwotICAgIFJlZlB0cjxG
aWxlVGhyZWFkPiBtX2ZpbGVUaHJlYWQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCShy
ZXZpc2lvbiAxNDQ3MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVh
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDMyICszNiw0NyBAQAogI2luY2x1ZGUgIkFzeW5j
RmlsZVN0cmVhbS5oIgogCiAjaW5jbHVkZSAiQmxvYi5oIgotI2luY2x1ZGUgIkNyb3NzVGhyZWFk
VGFzay5oIgogI2luY2x1ZGUgIkZpbGVTdHJlYW0uaCIKICNpbmNsdWRlICJGaWxlU3RyZWFtQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiRmlsZVRocmVhZC5oIgogI2luY2x1ZGUgIkZpbGVUaHJlYWRUYXNr
LmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIk1haW5U
aHJlYWRUYXNrLmgiCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgQXN5bmNG
aWxlU3RyZWFtOjpBc3luY0ZpbGVTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgRmlsZVN0cmVhbUNsaWVudCogY2xpZW50KQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0g
ICAgLCBtX3N0cmVhbShGaWxlU3RyZWFtOjpjcmVhdGUoKSkKK3N0YXRpYyBQYXNzUmVmUHRyPEZp
bGVUaHJlYWQ+IGNyZWF0ZUZpbGVUaHJlYWQoKQoreworICAgIFJlZlB0cjxGaWxlVGhyZWFkPiB0
aHJlYWQgPSBGaWxlVGhyZWFkOjpjcmVhdGUoKTsKKyAgICBpZiAoIXRocmVhZC0+c3RhcnQoKSkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHRocmVhZC5yZWxlYXNlKCk7Cit9CisKK3N0
YXRpYyBGaWxlVGhyZWFkKiBmaWxlVGhyZWFkKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIHN0YXRpYyBGaWxlVGhyZWFkKiB0aHJlYWQgPSBjcmVhdGVGaWxlVGhyZWFkKCku
bGVha1JlZigpOworICAgIHJldHVybiB0aHJlYWQ7Cit9CisKK2lubGluZSBBc3luY0ZpbGVTdHJl
YW06OkFzeW5jRmlsZVN0cmVhbShGaWxlU3RyZWFtQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX3N0
cmVhbShGaWxlU3RyZWFtOjpjcmVhdGUoKSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKIHsKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogfQogCi1QYXNzUmVmUHRyPEFzeW5jRmlsZVN0cmVh
bT4gQXN5bmNGaWxlU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgRmlsZVN0cmVhbUNsaWVudCogY2xpZW50KQorUGFzc1JlZlB0cjxBc3luY0ZpbGVTdHJlYW0+
IEFzeW5jRmlsZVN0cmVhbTo6Y3JlYXRlKEZpbGVTdHJlYW1DbGllbnQqIGNsaWVudCkKIHsKLSAg
ICBSZWZQdHI8QXN5bmNGaWxlU3RyZWFtPiBwcm94eSA9IGFkb3B0UmVmKG5ldyBBc3luY0ZpbGVT
dHJlYW0oY29udGV4dCwgY2xpZW50KSk7CisgICAgUmVmUHRyPEFzeW5jRmlsZVN0cmVhbT4gcHJv
eHkgPSBhZG9wdFJlZihuZXcgQXN5bmNGaWxlU3RyZWFtKGNsaWVudCkpOwogCiAgICAgLy8gSG9s
ZCBhIHJlZmVyZW5jZSBzbyB0aGF0IHRoZSBpbnN0YW5jZSB3aWxsIG5vdCBnZXQgZGVsZXRlZCB3
aGlsZSB0aGVyZSBhcmUgdGFza3Mgb24gdGhlIGZpbGUgdGhyZWFkLgogICAgIC8vIFRoaXMgaXMg
YmFsYW5jZWQgYnkgdGhlIGRlcmVmIGluIGRlcmVmUHJveHlPbkNvbnRleHQgYmVsb3cuCiAgICAg
cHJveHktPnJlZigpOwogCi0gICAgcHJveHktPmZpbGVUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRl
RmlsZVRocmVhZFRhc2socHJveHkuZ2V0KCksICZBc3luY0ZpbGVTdHJlYW06OnN0YXJ0T25GaWxl
VGhyZWFkKSk7CisgICAgZmlsZVRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVGaWxlVGhyZWFkVGFz
ayhwcm94eS5nZXQoKSwgJkFzeW5jRmlsZVN0cmVhbTo6c3RhcnRPbkZpbGVUaHJlYWQpKTsKIAog
ICAgIHJldHVybiBwcm94eS5yZWxlYXNlKCk7CiB9CkBAIC03MCwxNCArODUsNyBAQCBBc3luY0Zp
bGVTdHJlYW06On5Bc3luY0ZpbGVTdHJlYW0oKQogewogfQogCi1GaWxlVGhyZWFkKiBBc3luY0Zp
bGVTdHJlYW06OmZpbGVUaHJlYWQoKQotewotICAgIEFTU0VSVChtX2NvbnRleHQtPmlzQ29udGV4
dFRocmVhZCgpKTsKLSAgICBBU1NFUlQobV9jb250ZXh0LT5maWxlVGhyZWFkKCkpOwotICAgIHJl
dHVybiBtX2NvbnRleHQtPmZpbGVUaHJlYWQoKTsKLX0KLQotc3RhdGljIHZvaWQgZGlkU3RhcnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEFzeW5jRmlsZVN0cmVhbSogcHJveHkpCitzdGF0aWMg
dm9pZCBkaWRTdGFydChBc3luY0ZpbGVTdHJlYW0qIHByb3h5KQogewogICAgIGlmIChwcm94eS0+
Y2xpZW50KCkpCiAgICAgICAgIHByb3h5LT5jbGllbnQoKS0+ZGlkU3RhcnQoKTsKQEAgLTg1LDIy
ICs5MywyMyBAQCBzdGF0aWMgdm9pZCBkaWRTdGFydChTY3JpcHRFeGVjdXRpb25Db250CiAKIHZv
aWQgQXN5bmNGaWxlU3RyZWFtOjpzdGFydE9uRmlsZVRocmVhZCgpCiB7Ci0gICAgaWYgKCFjbGll
bnQoKSkKKyAgICAvLyBGSVhNRTogSXQgaXMgbm90IGNvcnJlY3QgdG8gY2hlY2sgbV9jbGllbnQg
ZnJvbSBhIHNlY29uZGFyeSB0aHJlYWQgLSBzdG9wKCkgY291bGQgYmUgcmFjaW5nIHdpdGggdGhp
cyBjaGVjay4KKyAgICBpZiAoIW1fY2xpZW50KQogICAgICAgICByZXR1cm47CiAgICAgbV9zdHJl
YW0tPnN0YXJ0KCk7Ci0gICAgbV9jb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2so
JmRpZFN0YXJ0LCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpKSk7CisgICAgY2FsbE9uTWFp
blRocmVhZChkaWRTdGFydCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSk7CiB9CiAKIHZv
aWQgQXN5bmNGaWxlU3RyZWFtOjpzdG9wKCkKIHsKLSAgICAvLyBDbGVhciB0aGUgY2xpZW50IHNv
IHRoYXQgd2Ugd29uJ3QgYmUgY2FsbGluZyBjYWxsYmFja3Mgb24gdGhlIGNsaWVudC4KKyAgICAv
LyBDbGVhciB0aGUgY2xpZW50IHNvIHRoYXQgd2Ugd29uJ3QgYmUgaW52b2tpbmcgY2FsbGJhY2tz
IG9uIHRoZSBjbGllbnQuCiAgICAgc2V0Q2xpZW50KDApOwogCiAgICAgZmlsZVRocmVhZCgpLT51
bnNjaGVkdWxlVGFza3MobV9zdHJlYW0uZ2V0KCkpOwogICAgIGZpbGVUaHJlYWQoKS0+cG9zdFRh
c2soY3JlYXRlRmlsZVRocmVhZFRhc2sodGhpcywgJkFzeW5jRmlsZVN0cmVhbTo6c3RvcE9uRmls
ZVRocmVhZCkpOwogfQogCi1zdGF0aWMgdm9pZCBkZXJlZlByb3h5T25Db250ZXh0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBBc3luY0ZpbGVTdHJlYW0qIHByb3h5KQorc3RhdGljIHZvaWQgZGVy
ZWZQcm94eU9uTWFpblRocmVhZChBc3luY0ZpbGVTdHJlYW0qIHByb3h5KQogewogICAgIEFTU0VS
VChwcm94eS0+aGFzT25lUmVmKCkpOwogICAgIHByb3h5LT5kZXJlZigpOwpAQCAtMTA5LDEwICsx
MTgsMTAgQEAgc3RhdGljIHZvaWQgZGVyZWZQcm94eU9uQ29udGV4dChTY3JpcHRFeAogdm9pZCBB
c3luY0ZpbGVTdHJlYW06OnN0b3BPbkZpbGVUaHJlYWQoKQogewogICAgIG1fc3RyZWFtLT5zdG9w
KCk7Ci0gICAgbV9jb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJmRlcmVmUHJv
eHlPbkNvbnRleHQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykpKTsKKyAgICBjYWxsT25N
YWluVGhyZWFkKGRlcmVmUHJveHlPbk1haW5UaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3Mo
dGhpcykpOwogfQogCi1zdGF0aWMgdm9pZCBkaWRHZXRTaXplKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBBc3luY0ZpbGVTdHJlYW0qIHByb3h5LCBsb25nIGxvbmcgc2l6ZSkKK3N0YXRpYyB2b2lk
IGRpZEdldFNpemUoQXN5bmNGaWxlU3RyZWFtKiBwcm94eSwgbG9uZyBsb25nIHNpemUpCiB7CiAg
ICAgaWYgKHByb3h5LT5jbGllbnQoKSkKICAgICAgICAgcHJveHktPmNsaWVudCgpLT5kaWRHZXRT
aXplKHNpemUpOwpAQCAtMTI2LDEwICsxMzUsMTAgQEAgdm9pZCBBc3luY0ZpbGVTdHJlYW06Omdl
dFNpemUoY29uc3QgU3RyaQogdm9pZCBBc3luY0ZpbGVTdHJlYW06OmdldFNpemVPbkZpbGVUaHJl
YWQoY29uc3QgU3RyaW5nJiBwYXRoLCBkb3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKQog
ewogICAgIGxvbmcgbG9uZyBzaXplID0gbV9zdHJlYW0tPmdldFNpemUocGF0aCwgZXhwZWN0ZWRN
b2RpZmljYXRpb25UaW1lKTsKLSAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNr
VGFzaygmZGlkR2V0U2l6ZSwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgc2l6ZSkpOwor
ICAgIGNhbGxPbk1haW5UaHJlYWQoZGlkR2V0U2l6ZSwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0
aGlzKSwgc2l6ZSk7CiB9CiAKLXN0YXRpYyB2b2lkIGRpZE9wZW4oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIEFzeW5jRmlsZVN0cmVhbSogcHJveHksIGJvb2wgc3VjY2VzcykKK3N0YXRpYyB2b2lk
IGRpZE9wZW4oQXN5bmNGaWxlU3RyZWFtKiBwcm94eSwgYm9vbCBzdWNjZXNzKQogewogICAgIGlm
IChwcm94eS0+Y2xpZW50KCkpCiAgICAgICAgIHByb3h5LT5jbGllbnQoKS0+ZGlkT3BlbihzdWNj
ZXNzKTsKQEAgLTE0Myw3ICsxNTIsNyBAQCB2b2lkIEFzeW5jRmlsZVN0cmVhbTo6b3BlbkZvclJl
YWQoY29uc3QgCiB2b2lkIEFzeW5jRmlsZVN0cmVhbTo6b3BlbkZvclJlYWRPbkZpbGVUaHJlYWQo
Y29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoKQog
ewogICAgIGJvb2wgc3VjY2VzcyA9IG1fc3RyZWFtLT5vcGVuRm9yUmVhZChwYXRoLCBvZmZzZXQs
IGxlbmd0aCk7Ci0gICAgbV9jb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJmRp
ZE9wZW4sIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIHN1Y2Nlc3MpKTsKKyAgICBjYWxs
T25NYWluVGhyZWFkKGRpZE9wZW4sIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIHN1Y2Nl
c3MpOwogfQogCiB2b2lkIEFzeW5jRmlsZVN0cmVhbTo6b3BlbkZvcldyaXRlKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKQEAgLTE1Niw3ICsxNjUsNyBAQCB2b2lkIEFzeW5jRmlsZVN0cmVhbTo6b3BlbkZv
cldyaXRlKGNvbnN0CiB2b2lkIEFzeW5jRmlsZVN0cmVhbTo6b3BlbkZvcldyaXRlT25GaWxlVGhy
ZWFkKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBtX3N0cmVhbS0+
b3BlbkZvcldyaXRlKHBhdGgpOwotICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZkaWRPcGVuLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBzdWNjZXNzKSk7
CisgICAgY2FsbE9uTWFpblRocmVhZChkaWRPcGVuLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRo
aXMpLCBzdWNjZXNzKTsKIH0KIAogdm9pZCBBc3luY0ZpbGVTdHJlYW06OmNsb3NlKCkKQEAgLTE2
OSw3ICsxNzgsNyBAQCB2b2lkIEFzeW5jRmlsZVN0cmVhbTo6Y2xvc2VPbkZpbGVUaHJlYWQoCiAg
ICAgbV9zdHJlYW0tPmNsb3NlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRpZFJlYWQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIEFzeW5jRmlsZVN0cmVhbSogcHJveHksIGludCBieXRlc1JlYWQpCitz
dGF0aWMgdm9pZCBkaWRSZWFkKEFzeW5jRmlsZVN0cmVhbSogcHJveHksIGludCBieXRlc1JlYWQp
CiB7CiAgICAgaWYgKHByb3h5LT5jbGllbnQoKSkKICAgICAgICAgcHJveHktPmNsaWVudCgpLT5k
aWRSZWFkKGJ5dGVzUmVhZCk7CkBAIC0xODUsMTAgKzE5NCwxMCBAQCB2b2lkIEFzeW5jRmlsZVN0
cmVhbTo6cmVhZChjaGFyKiBidWZmZXIsCiB2b2lkIEFzeW5jRmlsZVN0cmVhbTo6cmVhZE9uRmls
ZVRocmVhZChjaGFyKiBidWZmZXIsIGludCBsZW5ndGgpCiB7CiAgICAgaW50IGJ5dGVzUmVhZCA9
IG1fc3RyZWFtLT5yZWFkKGJ1ZmZlciwgbGVuZ3RoKTsKLSAgICBtX2NvbnRleHQtPnBvc3RUYXNr
KGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkUmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlz
KSwgYnl0ZXNSZWFkKSk7CisgICAgY2FsbE9uTWFpblRocmVhZChkaWRSZWFkLCBBbGxvd0Nyb3Nz
VGhyZWFkQWNjZXNzKHRoaXMpLCBieXRlc1JlYWQpOwogfQogCi1zdGF0aWMgdm9pZCBkaWRXcml0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQXN5bmNGaWxlU3RyZWFtKiBwcm94eSwgaW50IGJ5
dGVzV3JpdHRlbikKK3N0YXRpYyB2b2lkIGRpZFdyaXRlKEFzeW5jRmlsZVN0cmVhbSogcHJveHks
IGludCBieXRlc1dyaXR0ZW4pCiB7CiAgICAgaWYgKHByb3h5LT5jbGllbnQoKSkKICAgICAgICAg
cHJveHktPmNsaWVudCgpLT5kaWRXcml0ZShieXRlc1dyaXR0ZW4pOwpAQCAtMjAyLDEwICsyMTEs
MTAgQEAgdm9pZCBBc3luY0ZpbGVTdHJlYW06OndyaXRlKGNvbnN0IEtVUkwmIAogdm9pZCBBc3lu
Y0ZpbGVTdHJlYW06OndyaXRlT25GaWxlVGhyZWFkKGNvbnN0IEtVUkwmIGJsb2JVUkwsIGxvbmcg
bG9uZyBwb3NpdGlvbiwgaW50IGxlbmd0aCkKIHsKICAgICBpbnQgYnl0ZXNXcml0dGVuID0gbV9z
dHJlYW0tPndyaXRlKGJsb2JVUkwsIHBvc2l0aW9uLCBsZW5ndGgpOwotICAgIG1fY29udGV4dC0+
cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRXcml0ZSwgQWxsb3dDcm9zc1RocmVhZEFj
Y2Vzcyh0aGlzKSwgYnl0ZXNXcml0dGVuKSk7CisgICAgY2FsbE9uTWFpblRocmVhZChkaWRXcml0
ZSwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgYnl0ZXNXcml0dGVuKTsKIH0KIAotc3Rh
dGljIHZvaWQgZGlkVHJ1bmNhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEFzeW5jRmlsZVN0
cmVhbSogcHJveHksIGJvb2wgc3VjY2VzcykKK3N0YXRpYyB2b2lkIGRpZFRydW5jYXRlKEFzeW5j
RmlsZVN0cmVhbSogcHJveHksIGJvb2wgc3VjY2VzcykKIHsKICAgICBpZiAocHJveHktPmNsaWVu
dCgpKQogICAgICAgICBwcm94eS0+Y2xpZW50KCktPmRpZFRydW5jYXRlKHN1Y2Nlc3MpOwpAQCAt
MjE5LDcgKzIyOCw3IEBAIHZvaWQgQXN5bmNGaWxlU3RyZWFtOjp0cnVuY2F0ZShsb25nIGxvbmcK
IHZvaWQgQXN5bmNGaWxlU3RyZWFtOjp0cnVuY2F0ZU9uRmlsZVRocmVhZChsb25nIGxvbmcgcG9z
aXRpb24pCiB7CiAgICAgYm9vbCBzdWNjZXNzID0gbV9zdHJlYW0tPnRydW5jYXRlKHBvc2l0aW9u
KTsKLSAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkVHJ1bmNh
dGUsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIHN1Y2Nlc3MpKTsKKyAgICBjYWxsT25N
YWluVGhyZWFkKGRpZFRydW5jYXRlLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBzdWNj
ZXNzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oCShyZXZpc2lvbiAxNDQ3MjUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMyAr
NDIsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGaWxlU3RyZWFtQ2xpZW50Owog
Y2xhc3MgRmlsZVN0cmVhbTsKLWNsYXNzIEZpbGVUaHJlYWQ7CiBjbGFzcyBLVVJMOwotY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3MgQXN5bmNGaWxlU3RyZWFtIDogcHVibGlj
IFJlZkNvdW50ZWQ8QXN5bmNGaWxlU3RyZWFtPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8QXN5bmNGaWxlU3RyZWFtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEZp
bGVTdHJlYW1DbGllbnQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBc3luY0ZpbGVTdHJlYW0+
IGNyZWF0ZShGaWxlU3RyZWFtQ2xpZW50Kik7CiAgICAgfkFzeW5jRmlsZVN0cmVhbSgpOwogCiAg
ICAgdm9pZCBnZXRTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZp
Y2F0aW9uVGltZSk7CkBAIC02Nyw5ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENsaWVu
dChGaWxlU3RyZWFtQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KIAogcHJp
dmF0ZToKLSAgICBBc3luY0ZpbGVTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEZpbGVT
dHJlYW1DbGllbnQqKTsKLQotICAgIEZpbGVUaHJlYWQqIGZpbGVUaHJlYWQoKTsKKyAgICBBc3lu
Y0ZpbGVTdHJlYW0oRmlsZVN0cmVhbUNsaWVudCopOwogCiAgICAgLy8gQ2FsbGVkIG9uIEZpbGUg
dGhyZWFkLgogICAgIHZvaWQgc3RhcnRPbkZpbGVUaHJlYWQoKTsKQEAgLTgyLDcgKzc4LDYgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHdyaXRlT25GaWxlVGhyZWFkKGNvbnN0IEtVUkwmIGJsb2JVUkws
IGxvbmcgbG9uZyBwb3NpdGlvbiwgaW50IGxlbmd0aCk7CiAgICAgdm9pZCB0cnVuY2F0ZU9uRmls
ZVRocmVhZChsb25nIGxvbmcgcG9zaXRpb24pOwogCi0gICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ+IG1fY29udGV4dDsKICAgICBSZWZQdHI8RmlsZVN0cmVhbT4gbV9zdHJlYW07CiAK
ICAgICBGaWxlU3RyZWFtQ2xpZW50KiBtX2NsaWVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTQ0NzI1KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ1LDE0ICs1
NDUsNiBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWNlaXZlZENhbmNlbGxhdGlvCiAgICAgY2Fu
Y2VsKCk7CiB9CiAKLSNpZiBFTkFCTEUoQkxPQikKLUFzeW5jRmlsZVN0cmVhbSogUmVzb3VyY2VM
b2FkZXI6OmNyZWF0ZUFzeW5jRmlsZVN0cmVhbShGaWxlU3RyZWFtQ2xpZW50KiBjbGllbnQpCi17
Ci0gICAgLy8gSXQgaXMgT0sgdG8gc2ltcGx5IHJldHVybiBhIHBvaW50ZXIgc2luY2UgQXN5bmNG
aWxlU3RyZWFtOjpjcmVhdGUgYWRkcyBhbiBleHRyYSByZWYuCi0gICAgcmV0dXJuIEFzeW5jRmls
ZVN0cmVhbTo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgY2xpZW50KS5nZXQoKTsKLX0KLSNlbmRpZgotCiB2b2lkIFJlc291cmNlTG9hZGVyOjpy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25z
dAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdl
YkNvcmVNZW1vcnlUeXBlczo6TG9hZGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5oCShyZXZpc2lvbiAxNDQ3MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDkgKzEzNCw2IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRG93bmxvYWREYXRhKFJlc291cmNlSGFuZGxlKiwgaW50
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRG93bmxvYWREYXRhKGludCk7CiAjZW5kaWYKLSNpZiBF
TkFCTEUoQkxPQikKLSAgICB2aXJ0dWFsIEFzeW5jRmlsZVN0cmVhbSogY3JlYXRlQXN5bmNGaWxl
U3RyZWFtKEZpbGVTdHJlYW1DbGllbnQqKTsKLSNlbmRpZgogCiAgICAgY29uc3QgS1VSTCYgdXJs
KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0LnVybCgpOyB9IAogICAgIFJlc291cmNlSGFuZGxl
KiBoYW5kbGUoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZS5nZXQoKTsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFRhc2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkVGFzay5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFRhc2suaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw0OTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIE1haW5UaHJlYWRUYXNrX2gKKyNkZWZpbmUgTWFpblRocmVhZFRh
c2tfaAorCisjaW5jbHVkZSAiQ3Jvc3NUaHJlYWRDb3BpZXIuaCIKKyNpbmNsdWRlIDxtZW1vcnk+
CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1R5cGVUcmFpdHMu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBUcmFpdHMgZm9yIHRoZSBNYWluVGhyZWFk
VGFzay4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBNYWluVGhyZWFkVGFza1RyYWl0cyB7
CisgICAgdHlwZWRlZiBjb25zdCBUJiBQYXJhbVR5cGU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgTWFpblRocmVhZFRhc2tUcmFpdHM8VCo+IHsKKyAgICB0eXBlZGVmIFQqIFBh
cmFtVHlwZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBNYWluVGhyZWFkVGFz
a1RyYWl0czxQYXNzUmVmUHRyPFQ+ID4geworICAgIHR5cGVkZWYgUGFzc1JlZlB0cjxUPiBQYXJh
bVR5cGU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTWFpblRocmVhZFRhc2tU
cmFpdHM8UGFzc093blB0cjxUPiA+IHsKKyAgICB0eXBlZGVmIFBhc3NPd25QdHI8VD4gUGFyYW1U
eXBlOworfTsKKworY2xhc3MgTWFpblRocmVhZFRhc2tCYXNlIHsKK1dURl9NQUtFX05PTkNPUFlB
QkxFKE1haW5UaHJlYWRUYXNrQmFzZSk7CitXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICBNYWluVGhyZWFkVGFza0Jhc2UoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9y
bVRhc2soKSA9IDA7CisgICAgdmlydHVhbCB+TWFpblRocmVhZFRhc2tCYXNlKCkgeyB9Cit9Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxPgorY2xhc3MgTWFpblRocmVhZFRh
c2sxIDogcHVibGljIE1haW5UaHJlYWRUYXNrQmFzZSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiB2
b2lkICgqTWV0aG9kKShNUDEpOworICAgIHR5cGVkZWYgTWFpblRocmVhZFRhc2sxPFAxLCBNUDE+
IE1haW5UaHJlYWRUYXNrOworICAgIHR5cGVkZWYgdHlwZW5hbWUgTWFpblRocmVhZFRhc2tUcmFp
dHM8UDE+OjpQYXJhbVR5cGUgUGFyYW0xOworCisgICAgc3RhdGljIFBhc3NPd25QdHI8TWFpblRo
cmVhZFRhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWFpblRocmVhZFRhc2sobWV0aG9kLCBwYXJh
bWV0ZXIxKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIE1haW5UaHJlYWRUYXNrMShNZXRob2Qg
bWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSkKKyAgICAgICAgOiBtX21ldGhvZChtZXRob2QpCisg
ICAgICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCisgICAgeworICAgIH0KKworICAgIHZp
cnR1YWwgdm9pZCBwZXJmb3JtVGFzaygpIE9WRVJSSURFCisgICAgeworICAgICAgICAoKm1fbWV0
aG9kKShtX3BhcmFtZXRlcjEpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNZXRob2QgbV9tZXRo
b2Q7CisgICAgUDEgbV9wYXJhbWV0ZXIxOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5
cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMj4KK2NsYXNzIE1haW5UaHJlYWRU
YXNrMiA6IHB1YmxpYyBNYWluVGhyZWFkVGFza0Jhc2UgeworcHVibGljOgorICAgIHR5cGVkZWYg
dm9pZCAoKk1ldGhvZCkoTVAxLCBNUDIpOworICAgIHR5cGVkZWYgTWFpblRocmVhZFRhc2syPFAx
LCBNUDEsIFAyLCBNUDI+IE1haW5UaHJlYWRUYXNrOworICAgIHR5cGVkZWYgdHlwZW5hbWUgTWFp
blRocmVhZFRhc2tUcmFpdHM8UDE+OjpQYXJhbVR5cGUgUGFyYW0xOworICAgIHR5cGVkZWYgdHlw
ZW5hbWUgTWFpblRocmVhZFRhc2tUcmFpdHM8UDI+OjpQYXJhbVR5cGUgUGFyYW0yOworCisgICAg
c3RhdGljIFBhc3NPd25QdHI8TWFpblRocmVhZFRhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQ
YXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IE1haW5UaHJlYWRUYXNrKG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1l
dGVyMikpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNYWluVGhyZWFkVGFzazIoTWV0aG9kIG1l
dGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyKQorICAgICAgICA6IG1f
bWV0aG9kKG1ldGhvZCkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1ldGVyMSkKKyAgICAg
ICAgLCBtX3BhcmFtZXRlcjIocGFyYW1ldGVyMikKKyAgICB7CisgICAgfQorCisgICAgdmlydHVh
bCB2b2lkIHBlcmZvcm1UYXNrKCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgICgqbV9tZXRob2Qp
KG1fcGFyYW1ldGVyMSwgbV9wYXJhbWV0ZXIyKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTWV0
aG9kIG1fbWV0aG9kOworICAgIFAxIG1fcGFyYW1ldGVyMTsKKyAgICBQMiBtX3BhcmFtZXRlcjI7
Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwg
dHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzPgorY2xhc3MgTWFpblRocmVh
ZFRhc2szIDogcHVibGljIE1haW5UaHJlYWRUYXNrQmFzZSB7CitwdWJsaWM6CisgICAgdHlwZWRl
ZiB2b2lkICgqTWV0aG9kKShNUDEsIE1QMiwgTVAzKTsKKyAgICB0eXBlZGVmIE1haW5UaHJlYWRU
YXNrMzxQMSwgTVAxLCBQMiwgTVAyLCBQMywgTVAzPiBNYWluVGhyZWFkVGFzazsKKyAgICB0eXBl
ZGVmIHR5cGVuYW1lIE1haW5UaHJlYWRUYXNrVHJhaXRzPFAxPjo6UGFyYW1UeXBlIFBhcmFtMTsK
KyAgICB0eXBlZGVmIHR5cGVuYW1lIE1haW5UaHJlYWRUYXNrVHJhaXRzPFAyPjo6UGFyYW1UeXBl
IFBhcmFtMjsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIE1haW5UaHJlYWRUYXNrVHJhaXRzPFAzPjo6
UGFyYW1UeXBlIFBhcmFtMzsKKworICAgIHN0YXRpYyBQYXNzT3duUHRyPE1haW5UaHJlYWRUYXNr
PiBjcmVhdGUoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0
ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgTWFpblRocmVhZFRhc2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0
ZXIzKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIE1haW5UaHJlYWRUYXNrMyhNZXRob2QgbWV0
aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0
ZXIzKQorICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjEo
cGFyYW1ldGVyMSkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjIocGFyYW1ldGVyMikKKyAgICAgICAg
LCBtX3BhcmFtZXRlcjMocGFyYW1ldGVyMykKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2
b2lkIHBlcmZvcm1UYXNrKCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgICgqbV9tZXRob2QpKG1f
cGFyYW1ldGVyMSwgbV9wYXJhbWV0ZXIyLCBtX3BhcmFtZXRlcjMpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBNZXRob2QgbV9tZXRob2Q7CisgICAgUDEgbV9wYXJhbWV0ZXIxOworICAgIFAyIG1f
cGFyYW1ldGVyMjsKKyAgICBQMyBtX3BhcmFtZXRlcjM7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQ
MywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0PgorY2xhc3MgTWFpblRo
cmVhZFRhc2s0IDogcHVibGljIE1haW5UaHJlYWRUYXNrQmFzZSB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiB2b2lkICgqTWV0aG9kKShNUDEsIE1QMiwgTVAzLCBNUDQpOworICAgIHR5cGVkZWYgTWFp
blRocmVhZFRhc2s0PFAxLCBNUDEsIFAyLCBNUDIsIFAzLCBNUDMsIFA0LCBNUDQ+IE1haW5UaHJl
YWRUYXNrOworICAgIHR5cGVkZWYgdHlwZW5hbWUgTWFpblRocmVhZFRhc2tUcmFpdHM8UDE+OjpQ
YXJhbVR5cGUgUGFyYW0xOworICAgIHR5cGVkZWYgdHlwZW5hbWUgTWFpblRocmVhZFRhc2tUcmFp
dHM8UDI+OjpQYXJhbVR5cGUgUGFyYW0yOworICAgIHR5cGVkZWYgdHlwZW5hbWUgTWFpblRocmVh
ZFRhc2tUcmFpdHM8UDM+OjpQYXJhbVR5cGUgUGFyYW0zOworICAgIHR5cGVkZWYgdHlwZW5hbWUg
TWFpblRocmVhZFRhc2tUcmFpdHM8UDQ+OjpQYXJhbVR5cGUgUGFyYW00OworCisgICAgc3RhdGlj
IFBhc3NPd25QdHI8TWFpblRocmVhZFRhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEg
cGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQg
cGFyYW1ldGVyNCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWFpblRocmVh
ZFRhc2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzLCBwYXJhbWV0
ZXI0KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIE1haW5UaHJlYWRUYXNrNChNZXRob2QgbWV0
aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0
ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCkKKyAgICAgICAgOiBtX21ldGhvZChtZXRob2QpCisgICAg
ICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCisgICAgICAgICwgbV9wYXJhbWV0ZXIyKHBh
cmFtZXRlcjIpCisgICAgICAgICwgbV9wYXJhbWV0ZXIzKHBhcmFtZXRlcjMpCisgICAgICAgICwg
bV9wYXJhbWV0ZXI0KHBhcmFtZXRlcjQpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9p
ZCBwZXJmb3JtVGFzaygpIE9WRVJSSURFCisgICAgeworICAgICAgICAoKm1fbWV0aG9kKShtX3Bh
cmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwgbV9wYXJhbWV0ZXIzLCBtX3BhcmFtZXRlcjQpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBNZXRob2QgbV9tZXRob2Q7CisgICAgUDEgbV9wYXJhbWV0ZXIx
OworICAgIFAyIG1fcGFyYW1ldGVyMjsKKyAgICBQMyBtX3BhcmFtZXRlcjM7CisgICAgUDQgbV9w
YXJhbWV0ZXI0OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlw
ZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5h
bWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNT4KK2NsYXNzIE1h
aW5UaHJlYWRUYXNrNSA6IHB1YmxpYyBNYWluVGhyZWFkVGFza0Jhc2UgeworcHVibGljOgorICAg
IHR5cGVkZWYgdm9pZCAoKk1ldGhvZCkoTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUpOworICAgIHR5
cGVkZWYgTWFpblRocmVhZFRhc2s1PFAxLCBNUDEsIFAyLCBNUDIsIFAzLCBNUDMsIFA0LCBNUDQs
IFA1LCBNUDU+IE1haW5UaHJlYWRUYXNrOworICAgIHR5cGVkZWYgdHlwZW5hbWUgTWFpblRocmVh
ZFRhc2tUcmFpdHM8UDE+OjpQYXJhbVR5cGUgUGFyYW0xOworICAgIHR5cGVkZWYgdHlwZW5hbWUg
TWFpblRocmVhZFRhc2tUcmFpdHM8UDI+OjpQYXJhbVR5cGUgUGFyYW0yOworICAgIHR5cGVkZWYg
dHlwZW5hbWUgTWFpblRocmVhZFRhc2tUcmFpdHM8UDM+OjpQYXJhbVR5cGUgUGFyYW0zOworICAg
IHR5cGVkZWYgdHlwZW5hbWUgTWFpblRocmVhZFRhc2tUcmFpdHM8UDQ+OjpQYXJhbVR5cGUgUGFy
YW00OworICAgIHR5cGVkZWYgdHlwZW5hbWUgTWFpblRocmVhZFRhc2tUcmFpdHM8UDU+OjpQYXJh
bVR5cGUgUGFyYW01OworCisgICAgc3RhdGljIFBhc3NPd25QdHI8TWFpblRocmVhZFRhc2s+IGNy
ZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIs
IFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCwgUGFyYW01IHBhcmFtZXRlcjUp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1haW5UaHJlYWRUYXNrKG1ldGhv
ZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMywgcGFyYW1ldGVyNCwgcGFyYW1l
dGVyNSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNYWluVGhyZWFkVGFzazUoTWV0aG9kIG1l
dGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1l
dGVyMywgUGFyYW00IHBhcmFtZXRlcjQsIFBhcmFtNSBwYXJhbWV0ZXI1KQorICAgICAgICA6IG1f
bWV0aG9kKG1ldGhvZCkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1ldGVyMSkKKyAgICAg
ICAgLCBtX3BhcmFtZXRlcjIocGFyYW1ldGVyMikKKyAgICAgICAgLCBtX3BhcmFtZXRlcjMocGFy
YW1ldGVyMykKKyAgICAgICAgLCBtX3BhcmFtZXRlcjQocGFyYW1ldGVyNCkKKyAgICAgICAgLCBt
X3BhcmFtZXRlcjUocGFyYW1ldGVyNSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lk
IHBlcmZvcm1UYXNrKCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgICgqbV9tZXRob2QpKG1fcGFy
YW1ldGVyMSwgbV9wYXJhbWV0ZXIyLCBtX3BhcmFtZXRlcjMsIG1fcGFyYW1ldGVyNCwgbV9wYXJh
bWV0ZXI1KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTWV0aG9kIG1fbWV0aG9kOworICAgIFAx
IG1fcGFyYW1ldGVyMTsKKyAgICBQMiBtX3BhcmFtZXRlcjI7CisgICAgUDMgbV9wYXJhbWV0ZXIz
OworICAgIFA0IG1fcGFyYW1ldGVyNDsKKyAgICBQNSBtX3BhcmFtZXRlcjU7Cit9OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAy
LCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0
eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2PgorY2xh
c3MgTWFpblRocmVhZFRhc2s2IDogcHVibGljIE1haW5UaHJlYWRUYXNrQmFzZSB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiB2b2lkICgqTWV0aG9kKShNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2
KTsKKyAgICB0eXBlZGVmIE1haW5UaHJlYWRUYXNrNjxQMSwgTVAxLCBQMiwgTVAyLCBQMywgTVAz
LCBQNCwgTVA0LCBQNSwgTVA1LCBQNiwgTVA2PiBNYWluVGhyZWFkVGFzazsKKyAgICB0eXBlZGVm
IHR5cGVuYW1lIE1haW5UaHJlYWRUYXNrVHJhaXRzPFAxPjo6UGFyYW1UeXBlIFBhcmFtMTsKKyAg
ICB0eXBlZGVmIHR5cGVuYW1lIE1haW5UaHJlYWRUYXNrVHJhaXRzPFAyPjo6UGFyYW1UeXBlIFBh
cmFtMjsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIE1haW5UaHJlYWRUYXNrVHJhaXRzPFAzPjo6UGFy
YW1UeXBlIFBhcmFtMzsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIE1haW5UaHJlYWRUYXNrVHJhaXRz
PFA0Pjo6UGFyYW1UeXBlIFBhcmFtNDsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIE1haW5UaHJlYWRU
YXNrVHJhaXRzPFA1Pjo6UGFyYW1UeXBlIFBhcmFtNTsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIE1h
aW5UaHJlYWRUYXNrVHJhaXRzPFA2Pjo6UGFyYW1UeXBlIFBhcmFtNjsKKworICAgIHN0YXRpYyBQ
YXNzT3duUHRyPE1haW5UaHJlYWRUYXNrPiBjcmVhdGUoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBh
cmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBh
cmFtZXRlcjQsIFBhcmFtNSBwYXJhbWV0ZXI1LCBQYXJhbTYgcGFyYW1ldGVyNikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWFpblRocmVhZFRhc2sobWV0aG9kLCBwYXJhbWV0
ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzLCBwYXJhbWV0ZXI0LCBwYXJhbWV0ZXI1LCBwYXJh
bWV0ZXI2KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIE1haW5UaHJlYWRUYXNrNihNZXRob2Qg
bWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJh
bWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCwgUGFyYW01IHBhcmFtZXRlcjUsIFBhcmFtNiBwYXJh
bWV0ZXI2KQorICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKKyAgICAgICAgLCBtX3BhcmFtZXRl
cjEocGFyYW1ldGVyMSkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjIocGFyYW1ldGVyMikKKyAgICAg
ICAgLCBtX3BhcmFtZXRlcjMocGFyYW1ldGVyMykKKyAgICAgICAgLCBtX3BhcmFtZXRlcjQocGFy
YW1ldGVyNCkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjUocGFyYW1ldGVyNSkKKyAgICAgICAgLCBt
X3BhcmFtZXRlcjYocGFyYW1ldGVyNikKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lk
IHBlcmZvcm1UYXNrKCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgICgqbV9tZXRob2QpKG1fcGFy
YW1ldGVyMSwgbV9wYXJhbWV0ZXIyLCBtX3BhcmFtZXRlcjMsIG1fcGFyYW1ldGVyNCwgbV9wYXJh
bWV0ZXI1LCBtX3BhcmFtZXRlcjYpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNZXRob2QgbV9t
ZXRob2Q7CisgICAgUDEgbV9wYXJhbWV0ZXIxOworICAgIFAyIG1fcGFyYW1ldGVyMjsKKyAgICBQ
MyBtX3BhcmFtZXRlcjM7CisgICAgUDQgbV9wYXJhbWV0ZXI0OworICAgIFA1IG1fcGFyYW1ldGVy
NTsKKyAgICBQNiBtX3BhcmFtZXRlcjY7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlw
ZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5h
bWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUg
TVA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2LCB0eXBlbmFtZSBQNywgdHlwZW5hbWUgTVA3
PgorY2xhc3MgTWFpblRocmVhZFRhc2s3IDogcHVibGljIE1haW5UaHJlYWRUYXNrQmFzZSB7Citw
dWJsaWM6CisgICAgdHlwZWRlZiB2b2lkICgqTWV0aG9kKShNUDEsIE1QMiwgTVAzLCBNUDQsIE1Q
NSwgTVA2LCBNUDcpOworICAgIHR5cGVkZWYgTWFpblRocmVhZFRhc2s3PFAxLCBNUDEsIFAyLCBN
UDIsIFAzLCBNUDMsIFA0LCBNUDQsIFA1LCBNUDUsIFA2LCBNUDYsIFA3LCBNUDc+IE1haW5UaHJl
YWRUYXNrOworICAgIHR5cGVkZWYgdHlwZW5hbWUgTWFpblRocmVhZFRhc2tUcmFpdHM8UDE+OjpQ
YXJhbVR5cGUgUGFyYW0xOworICAgIHR5cGVkZWYgdHlwZW5hbWUgTWFpblRocmVhZFRhc2tUcmFp
dHM8UDI+OjpQYXJhbVR5cGUgUGFyYW0yOworICAgIHR5cGVkZWYgdHlwZW5hbWUgTWFpblRocmVh
ZFRhc2tUcmFpdHM8UDM+OjpQYXJhbVR5cGUgUGFyYW0zOworICAgIHR5cGVkZWYgdHlwZW5hbWUg
TWFpblRocmVhZFRhc2tUcmFpdHM8UDQ+OjpQYXJhbVR5cGUgUGFyYW00OworICAgIHR5cGVkZWYg
dHlwZW5hbWUgTWFpblRocmVhZFRhc2tUcmFpdHM8UDU+OjpQYXJhbVR5cGUgUGFyYW01OworICAg
IHR5cGVkZWYgdHlwZW5hbWUgTWFpblRocmVhZFRhc2tUcmFpdHM8UDY+OjpQYXJhbVR5cGUgUGFy
YW02OworICAgIHR5cGVkZWYgdHlwZW5hbWUgTWFpblRocmVhZFRhc2tUcmFpdHM8UDc+OjpQYXJh
bVR5cGUgUGFyYW03OworCisgICAgc3RhdGljIFBhc3NPd25QdHI8TWFpblRocmVhZFRhc2s+IGNy
ZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIs
IFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCwgUGFyYW01IHBhcmFtZXRlcjUs
IFBhcmFtNiBwYXJhbWV0ZXI2LCBQYXJhbTcgcGFyYW1ldGVyNykKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgTWFpblRocmVhZFRhc2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJh
bWV0ZXIyLCBwYXJhbWV0ZXIzLCBwYXJhbWV0ZXI0LCBwYXJhbWV0ZXI1LCBwYXJhbWV0ZXI2LCBw
YXJhbWV0ZXI3KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIE1haW5UaHJlYWRUYXNrNyhNZXRo
b2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBw
YXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCwgUGFyYW01IHBhcmFtZXRlcjUsIFBhcmFtNiBw
YXJhbWV0ZXI2LCBQYXJhbTcgcGFyYW1ldGVyNykKKyAgICAgICAgOiBtX21ldGhvZChtZXRob2Qp
CisgICAgICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCisgICAgICAgICwgbV9wYXJhbWV0
ZXIyKHBhcmFtZXRlcjIpCisgICAgICAgICwgbV9wYXJhbWV0ZXIzKHBhcmFtZXRlcjMpCisgICAg
ICAgICwgbV9wYXJhbWV0ZXI0KHBhcmFtZXRlcjQpCisgICAgICAgICwgbV9wYXJhbWV0ZXI1KHBh
cmFtZXRlcjUpCisgICAgICAgICwgbV9wYXJhbWV0ZXI2KHBhcmFtZXRlcjYpCisgICAgICAgICwg
bV9wYXJhbWV0ZXI3KHBhcmFtZXRlcjcpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9p
ZCBwZXJmb3JtVGFzaygpIE9WRVJSSURFCisgICAgeworICAgICAgICAoKm1fbWV0aG9kKShtX3Bh
cmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwgbV9wYXJhbWV0ZXIzLCBtX3BhcmFtZXRlcjQsIG1fcGFy
YW1ldGVyNSwgbV9wYXJhbWV0ZXI2LCBtX3BhcmFtZXRlcjcpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBNZXRob2QgbV9tZXRob2Q7CisgICAgUDEgbV9wYXJhbWV0ZXIxOworICAgIFAyIG1fcGFy
YW1ldGVyMjsKKyAgICBQMyBtX3BhcmFtZXRlcjM7CisgICAgUDQgbV9wYXJhbWV0ZXI0OworICAg
IFA1IG1fcGFyYW1ldGVyNTsKKyAgICBQNiBtX3BhcmFtZXRlcjY7CisgICAgUDcgbV9wYXJhbWV0
ZXI3OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUg
UDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQs
IHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5
cGVuYW1lIE1QNiwgdHlwZW5hbWUgUDcsIHR5cGVuYW1lIE1QNywgdHlwZW5hbWUgUDgsIHR5cGVu
YW1lIE1QOD4KK2NsYXNzIE1haW5UaHJlYWRUYXNrOCA6IHB1YmxpYyBNYWluVGhyZWFkVGFza0Jh
c2UgeworcHVibGljOgorICAgIHR5cGVkZWYgdm9pZCAoKk1ldGhvZCkoTVAxLCBNUDIsIE1QMywg
TVA0LCBNUDUsIE1QNiwgTVA3LCBNUDgpOworICAgIHR5cGVkZWYgTWFpblRocmVhZFRhc2s4PFAx
LCBNUDEsIFAyLCBNUDIsIFAzLCBNUDMsIFA0LCBNUDQsIFA1LCBNUDUsIFA2LCBNUDYsIFA3LCBN
UDcsIFA4LCBNUDg+IE1haW5UaHJlYWRUYXNrOworICAgIHR5cGVkZWYgdHlwZW5hbWUgTWFpblRo
cmVhZFRhc2tUcmFpdHM8UDE+OjpQYXJhbVR5cGUgUGFyYW0xOworICAgIHR5cGVkZWYgdHlwZW5h
bWUgTWFpblRocmVhZFRhc2tUcmFpdHM8UDI+OjpQYXJhbVR5cGUgUGFyYW0yOworICAgIHR5cGVk
ZWYgdHlwZW5hbWUgTWFpblRocmVhZFRhc2tUcmFpdHM8UDM+OjpQYXJhbVR5cGUgUGFyYW0zOwor
ICAgIHR5cGVkZWYgdHlwZW5hbWUgTWFpblRocmVhZFRhc2tUcmFpdHM8UDQ+OjpQYXJhbVR5cGUg
UGFyYW00OworICAgIHR5cGVkZWYgdHlwZW5hbWUgTWFpblRocmVhZFRhc2tUcmFpdHM8UDU+OjpQ
YXJhbVR5cGUgUGFyYW01OworICAgIHR5cGVkZWYgdHlwZW5hbWUgTWFpblRocmVhZFRhc2tUcmFp
dHM8UDY+OjpQYXJhbVR5cGUgUGFyYW02OworICAgIHR5cGVkZWYgdHlwZW5hbWUgTWFpblRocmVh
ZFRhc2tUcmFpdHM8UDc+OjpQYXJhbVR5cGUgUGFyYW03OworICAgIHR5cGVkZWYgdHlwZW5hbWUg
TWFpblRocmVhZFRhc2tUcmFpdHM8UDg+OjpQYXJhbVR5cGUgUGFyYW04OworICAgIAorICAgIHN0
YXRpYyBQYXNzT3duUHRyPE1haW5UaHJlYWRUYXNrPiBjcmVhdGUoTWV0aG9kIG1ldGhvZCwgUGFy
YW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFy
YW00IHBhcmFtZXRlcjQsIFBhcmFtNSBwYXJhbWV0ZXI1LCBQYXJhbTYgcGFyYW1ldGVyNiwgUGFy
YW03IHBhcmFtZXRlcjcsIFBhcmFtOCBwYXJhbWV0ZXI4KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBNYWluVGhyZWFkVGFzayhtZXRob2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRl
cjIsIHBhcmFtZXRlcjMsIHBhcmFtZXRlcjQsIHBhcmFtZXRlcjUsIHBhcmFtZXRlcjYsIHBhcmFt
ZXRlcjcsIHBhcmFtZXRlcjgpKTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIE1haW5UaHJl
YWRUYXNrOChNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRl
cjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCwgUGFyYW01IHBhcmFtZXRl
cjUsIFBhcmFtNiBwYXJhbWV0ZXI2LCBQYXJhbTcgcGFyYW1ldGVyNywgUGFyYW04IHBhcmFtZXRl
cjgpCisgICAgICAgIDogbV9tZXRob2QobWV0aG9kKQorICAgICAgICAsIG1fcGFyYW1ldGVyMShw
YXJhbWV0ZXIxKQorICAgICAgICAsIG1fcGFyYW1ldGVyMihwYXJhbWV0ZXIyKQorICAgICAgICAs
IG1fcGFyYW1ldGVyMyhwYXJhbWV0ZXIzKQorICAgICAgICAsIG1fcGFyYW1ldGVyNChwYXJhbWV0
ZXI0KQorICAgICAgICAsIG1fcGFyYW1ldGVyNShwYXJhbWV0ZXI1KQorICAgICAgICAsIG1fcGFy
YW1ldGVyNihwYXJhbWV0ZXI2KQorICAgICAgICAsIG1fcGFyYW1ldGVyNyhwYXJhbWV0ZXI3KQor
ICAgICAgICAsIG1fcGFyYW1ldGVyOChwYXJhbWV0ZXI4KQorICAgIHsKKyAgICB9CisgICAgCisg
ICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgICgq
bV9tZXRob2QpKG1fcGFyYW1ldGVyMSwgbV9wYXJhbWV0ZXIyLCBtX3BhcmFtZXRlcjMsIG1fcGFy
YW1ldGVyNCwgbV9wYXJhbWV0ZXI1LCBtX3BhcmFtZXRlcjYsIG1fcGFyYW1ldGVyNywgbV9wYXJh
bWV0ZXI4KTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIE1ldGhvZCBtX21ldGhvZDsKKyAg
ICBQMSBtX3BhcmFtZXRlcjE7CisgICAgUDIgbV9wYXJhbWV0ZXIyOworICAgIFAzIG1fcGFyYW1l
dGVyMzsKKyAgICBQNCBtX3BhcmFtZXRlcjQ7CisgICAgUDUgbV9wYXJhbWV0ZXI1OworICAgIFA2
IG1fcGFyYW1ldGVyNjsKKyAgICBQNyBtX3BhcmFtZXRlcjc7CisgICAgUDggbV9wYXJhbWV0ZXI4
OworfTsKKworc3RhdGljIHZvaWQgZXhlY3V0ZU1haW5UaHJlYWRUYXNrKHZvaWQqIGNvbnRleHQp
Cit7CisgICAgT3duUHRyPE1haW5UaHJlYWRUYXNrQmFzZT4gdGFzayA9IGFkb3B0UHRyKHN0YXRp
Y19jYXN0PE1haW5UaHJlYWRUYXNrQmFzZSo+KGNvbnRleHQpKTsKKyAgICB0YXNrLT5wZXJmb3Jt
VGFzaygpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxPgordm9pZCBj
YWxsT25NYWluVGhyZWFkKAorICAgIHZvaWQgKCptZXRob2QpKE1QMSksCisgICAgY29uc3QgUDEm
IHBhcmFtZXRlcjEpCit7CisgICAgV1RGOjpjYWxsT25NYWluVGhyZWFkKGV4ZWN1dGVNYWluVGhy
ZWFkVGFzaywgTWFpblRocmVhZFRhc2sxPHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6
VHlwZSwgTVAxPjo6Y3JlYXRlKAorICAgICAgICBtZXRob2QsCisgICAgICAgIENyb3NzVGhyZWFk
Q29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSkubGVha1B0cigpKTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMj4KK3Zv
aWQgY2FsbE9uTWFpblRocmVhZCgKKyAgICB2b2lkICgqbWV0aG9kKShNUDEsIE1QMiksCisgICAg
Y29uc3QgUDEmIHBhcmFtZXRlcjEsIGNvbnN0IFAyJiBwYXJhbWV0ZXIyKQoreworICAgIFdURjo6
Y2FsbE9uTWFpblRocmVhZChleGVjdXRlTWFpblRocmVhZFRhc2ssIE1haW5UaHJlYWRUYXNrMjx0
eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDI+OjpjcmVhdGUoCisgICAgICAgIG1ldGhvZCwKKyAg
ICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLCBDcm9zc1RocmVh
ZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMikpLmxlYWtQdHIoKSk7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5
cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDM+Cit2b2lkIGNhbGxPbk1haW5UaHJlYWQoCisgICAgdm9p
ZCAoKm1ldGhvZCkoTVAxLCBNUDIsIE1QMyksCisgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsIGNv
bnN0IFAyJiBwYXJhbWV0ZXIyLCBjb25zdCBQMyYgcGFyYW1ldGVyMykKK3sKKyAgICBXVEY6OmNh
bGxPbk1haW5UaHJlYWQoZXhlY3V0ZU1haW5UaHJlYWRUYXNrLCBNYWluVGhyZWFkVGFzazM8dHlw
ZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhy
ZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMz46
OlR5cGUsIE1QMz46OmNyZWF0ZSgKKyAgICAgICAgbWV0aG9kLAorICAgICAgICBDcm9zc1RocmVh
ZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29w
eShwYXJhbWV0ZXIyKSwKKyAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFt
ZXRlcjMpKS5sZWFrUHRyKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUg
TVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAz
LCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0Pgordm9pZCBjYWxsT25NYWluVGhyZWFkKAorICAg
IHZvaWQgKCptZXRob2QpKE1QMSwgTVAyLCBNUDMsIE1QNCksCisgICAgY29uc3QgUDEmIHBhcmFt
ZXRlcjEsIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLCBjb25zdCBQMyYgcGFyYW1ldGVyMywgY29uc3Qg
UDQmIHBhcmFtZXRlcjQpCit7CisgICAgV1RGOjpjYWxsT25NYWluVGhyZWFkKGV4ZWN1dGVNYWlu
VGhyZWFkVGFzaywgTWFpblRocmVhZFRhc2s0PHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAx
Pjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMj46OlR5cGUsIE1QMiwg
dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpUeXBlLCBNUDMsCisgICAgICAgIHR5cGVu
YW1lIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6VHlwZSwgTVA0Pjo6Y3JlYXRlKAorICAgICAgICAg
ICAgbWV0aG9kLAorICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFt
ZXRlcjEpLCBDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiksCisgICAgICAg
ICAgICBDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1ldGVyMyksIENyb3NzVGhyZWFk
Q29waWVyPFA0Pjo6Y29weShwYXJhbWV0ZXI0KSkubGVha1B0cigpKTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlw
ZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5h
bWUgUDUsIHR5cGVuYW1lIE1QNT4KK3ZvaWQgY2FsbE9uTWFpblRocmVhZCgKKyAgICB2b2lkICgq
bWV0aG9kKShNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSksCisgICAgY29uc3QgUDEmIHBhcmFtZXRl
cjEsIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLCBjb25zdCBQMyYgcGFyYW1ldGVyMywgY29uc3QgUDQm
IHBhcmFtZXRlcjQsIGNvbnN0IFA1JiBwYXJhbWV0ZXI1KQoreworICAgIFdURjo6Y2FsbE9uTWFp
blRocmVhZChleGVjdXRlTWFpblRocmVhZFRhc2ssIE1haW5UaHJlYWRUYXNrNTx0eXBlbmFtZSBD
cm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3Bp
ZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlwZSwg
TVAzLAorICAgICAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQND46OlR5cGUsIE1QNCwg
dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDU+OjpUeXBlLCBNUDU+OjpjcmVhdGUoCisgICAg
ICAgICAgICBtZXRob2QsCisgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHko
cGFyYW1ldGVyMSksIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKKyAg
ICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIzKSwgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpLAorICAgICAgICAgICAgQ3Jvc3NUaHJl
YWRDb3BpZXI8UDU+Ojpjb3B5KHBhcmFtZXRlcjUpKS5sZWFrUHRyKCkpOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0
eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBl
bmFtZSBQNSwgdHlwZW5hbWUgTVA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2Pgordm9pZCBj
YWxsT25NYWluVGhyZWFkKAorICAgIHZvaWQgKCptZXRob2QpKE1QMSwgTVAyLCBNUDMsIE1QNCwg
TVA1LCBNUDYpLAorICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVy
MiwgY29uc3QgUDMmIHBhcmFtZXRlcjMsIGNvbnN0IFA0JiBwYXJhbWV0ZXI0LCBjb25zdCBQNSYg
cGFyYW1ldGVyNSwgY29uc3QgUDYmIHBhcmFtZXRlcjYpCit7CisgICAgV1RGOjpjYWxsT25NYWlu
VGhyZWFkKGV4ZWN1dGVNYWluVGhyZWFkVGFzaywgTWFpblRocmVhZFRhc2s2PHR5cGVuYW1lIENy
b3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGll
cjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpUeXBlLCBN
UDMsCisgICAgICAgIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6VHlwZSwgTVA0LCB0
eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNT46OlR5cGUsIE1QNSwgdHlwZW5hbWUgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDY+OjpUeXBlLCBNUDY+OjpjcmVhdGUoCisgICAgICAgICAgICBtZXRob2Qs
CisgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksIENy
b3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKKyAgICAgICAgICAgIENyb3Nz
VGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIzKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+
Ojpjb3B5KHBhcmFtZXRlcjQpLAorICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDU+Ojpj
b3B5KHBhcmFtZXRlcjUpLCBDcm9zc1RocmVhZENvcGllcjxQNj46OmNvcHkocGFyYW1ldGVyNikp
LmxlYWtQdHIoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5
cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVu
YW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1l
IFA2LCB0eXBlbmFtZSBNUDYsIHR5cGVuYW1lIFA3LCB0eXBlbmFtZSBNUDc+Cit2b2lkIGNhbGxP
bk1haW5UaHJlYWQoCisgICAgdm9pZCAoKm1ldGhvZCkoTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUs
IE1QNiwgTVA3KSwKKyAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRl
cjIsIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLCBjb25zdCBQNCYgcGFyYW1ldGVyNCwgY29uc3QgUDUm
IHBhcmFtZXRlcjUsIGNvbnN0IFA2JiBwYXJhbWV0ZXI2LCBjb25zdCBQNyYgcGFyYW1ldGVyNykK
K3sKKyAgICBXVEY6OmNhbGxPbk1haW5UaHJlYWQoZXhlY3V0ZU1haW5UaHJlYWRUYXNrLCBNYWlu
VGhyZWFkVGFzazc8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5
cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyLCB0eXBlbmFtZSBDcm9zc1Ro
cmVhZENvcGllcjxQMz46OlR5cGUsIE1QMywKKyAgICAgICAgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDQ+OjpUeXBlLCBNUDQsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA1Pjo6VHlw
ZSwgTVA1LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNj46OlR5cGUsIE1QNiwKKyAgICAg
ICAgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDc+OjpUeXBlLCBNUDc+OjpjcmVhdGUoCisg
ICAgICAgICAgICBtZXRob2QsCisgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNv
cHkocGFyYW1ldGVyMSksIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwK
KyAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIzKSwgQ3Jv
c3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpLAorICAgICAgICAgICAgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDU+Ojpjb3B5KHBhcmFtZXRlcjUpLCBDcm9zc1RocmVhZENvcGllcjxQNj46
OmNvcHkocGFyYW1ldGVyNiksCisgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQNz46OmNv
cHkocGFyYW1ldGVyNykpLmxlYWtQdHIoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFAxLCB0
eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBl
bmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFt
ZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBNUDYsIHR5cGVuYW1lIFA3LCB0eXBlbmFtZSBN
UDcsIHR5cGVuYW1lIFA4LCB0eXBlbmFtZSBNUDg+Cit2b2lkIGNhbGxPbk1haW5UaHJlYWQoCisg
ICAgdm9pZCAoKm1ldGhvZCkoTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNiwgTVA3LCBNUDgp
LAorICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVyMiwgY29uc3Qg
UDMmIHBhcmFtZXRlcjMsIGNvbnN0IFA0JiBwYXJhbWV0ZXI0LCBjb25zdCBQNSYgcGFyYW1ldGVy
NSwgY29uc3QgUDYmIHBhcmFtZXRlcjYsIGNvbnN0IFA3JiBwYXJhbWV0ZXI3LCBjb25zdCBQOCYg
cGFyYW1ldGVyOCkKK3sKKyAgICBXVEY6OmNhbGxPbk1haW5UaHJlYWQoZXhlY3V0ZU1haW5UaHJl
YWRUYXNrLCBNYWluVGhyZWFkVGFzazg8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpU
eXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyLCB0eXBl
bmFtZSBDcm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUsIE1QMywKKyAgICB0eXBlbmFtZSBDcm9z
c1RocmVhZENvcGllcjxQND46OlR5cGUsIE1QNCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDU+OjpUeXBlLCBNUDUsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA2Pjo6VHlwZSwgTVA2
LAorICAgIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA3Pjo6VHlwZSwgTVA3LCB0eXBlbmFt
ZSBDcm9zc1RocmVhZENvcGllcjxQOD46OlR5cGUsIE1QOD46OmNyZWF0ZSgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLCBDcm9zc1RocmVhZENvcGllcjxQMj46
OmNvcHkocGFyYW1ldGVyMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMp
LCBDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3Bp
ZXI8UDU+Ojpjb3B5KHBhcmFtZXRlcjUpLCBDcm9zc1RocmVhZENvcGllcjxQNj46OmNvcHkocGFy
YW1ldGVyNiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDc+Ojpjb3B5KHBhcmFtZXRlcjcpLCBDcm9zc1Ro
cmVhZENvcGllcjxQOD46OmNvcHkocGFyYW1ldGVyOCkpLmxlYWtQdHIoKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworCisjZW5kaWYgLy8gTWFpblRocmVhZFRhc2tfaApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNl
SGFuZGxlLmNwcAkocmV2aXNpb24gMTQ0NzI1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsOSAr
MTY4LDkgQEAgQmxvYlJlc291cmNlSGFuZGxlOjpCbG9iUmVzb3VyY2VIYW5kbGUoUAogICAgICwg
bV9zaXplSXRlbUNvdW50KDApCiAgICAgLCBtX3JlYWRJdGVtQ291bnQoMCkKICAgICAsIG1fZmls
ZU9wZW5lZChmYWxzZSkKLXsgICAgCit7CiAgICAgaWYgKG1fYXN5bmMpCi0gICAgICAgIG1fYXN5
bmNTdHJlYW0gPSBjbGllbnQtPmNyZWF0ZUFzeW5jRmlsZVN0cmVhbSh0aGlzKTsKKyAgICAgICAg
bV9hc3luY1N0cmVhbSA9IEFzeW5jRmlsZVN0cmVhbTo6Y3JlYXRlKHRoaXMpOwogICAgIGVsc2UK
ICAgICAgICAgbV9zdHJlYW0gPSBGaWxlU3RyZWFtOjpjcmVhdGUoKTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmgJKHJldmlzaW9uIDE0NDcyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDkgKzEzMiw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBQTEFURk9STShDSFJPTUlVTSkKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpZERvd25sb2FkRGF0YShSZXNvdXJjZUhhbmRsZSosIGludCAvKmRhdGFM
ZW5ndGgqLykgeyB9CiAjZW5kaWYKLSNpZiBFTkFCTEUoQkxPQikKLSAgICAgICAgdmlydHVhbCBB
c3luY0ZpbGVTdHJlYW0qIGNyZWF0ZUFzeW5jRmlsZVN0cmVhbShGaWxlU3RyZWFtQ2xpZW50Kikg
eyByZXR1cm4gMDsgfQotI2VuZGlmCiAKICNpZiBVU0UoU09VUCkKIHByaXZhdGU6CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNDQ3MjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0wMy0wNCAgQWxleGV5IFByb3NrdXJ5
YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIEFzeW5jRmlsZVJlYWRlciB3b3Jr
IHdpdGhvdXQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExMzc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5k
ZXJzIENhcmxzc29uLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaDoKKyAgICAgICAgUmVtb3ZlZCBhIGR1bW15IGltcGxlbWVudGF0aW9uIG9mIGNyZWF0ZUFz
eW5jRmlsZVN0cmVhbSwgd2hpY2ggaXMgbm8gbG9uZ2VyIG5lZWRlZC4KKwogMjAxMy0wMy0wNCAg
Q2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQg
V2ViU3BlZWNoIC0gU3BlZWNoIFN5bnRoZXNpcwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lv
biAxNDQ3MjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTEsMTQgKzI5MSw2IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU3RvcEJ1ZmYKIH0KICNlbmRpZiAvLyBQTEFURk9STShN
QUMpCiAKLSNpZiBFTkFCTEUoQkxPQikKLVdlYkNvcmU6OkFzeW5jRmlsZVN0cmVhbSogTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpjcmVhdGVBc3luY0ZpbGVTdHJlYW0oV2ViQ29yZTo6RmlsZVN0cmVh
bUNsaWVudCopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLSNl
bmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMTQ0NzI1KQorKysgU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTkxLDEwICs5MSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFN0b3BC
dWZmZXJpbmdEYXRhKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIGludCkg
T1ZFUlJJREU7CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi0jaWYgRU5BQkxFKEJMT0IpCi0g
ICAgdmlydHVhbCBXZWJDb3JlOjpBc3luY0ZpbGVTdHJlYW0qIGNyZWF0ZUFzeW5jRmlsZVN0cmVh
bShXZWJDb3JlOjpGaWxlU3RyZWFtQ2xpZW50KikgT1ZFUlJJREU7Ci0jZW5kaWYKLQogcHJpdmF0
ZToKICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXIoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMmLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyopOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>