<?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>123837</bug_id>
          
          <creation_ts>2013-11-05 16:30:46 -0800</creation_ts>
          <short_desc>[Cocoa] History delegate</short_desc>
          <delta_ts>2013-11-06 14:08:07 -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>WebKit2</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>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>sergio</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>947403</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2013-11-05 16:30:46 -0800</bug_when>
    <thetext>[Cocoa] History delegate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947407</commentid>
    <comment_count>1</comment_count>
      <attachid>216095</attachid>
    <who name="">mitz</who>
    <bug_when>2013-11-05 16:40:01 -0800</bug_when>
    <thetext>Created attachment 216095
Add WKProcessGroupHistoryDelegate and WKNavigationData</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947409</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-05 16:41:43 -0800</bug_when>
    <thetext>Attachment 216095 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/Shared/Cocoa/APIObject.mm&apos;, u&apos;Source/WebKit2/Shared/Cocoa/WKNSString.h&apos;, u&apos;Source/WebKit2/Shared/Cocoa/WKNSURL.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKNavigationData.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKNavigationData.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKNavigationDataRef.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKNavigationDataRef.h&apos;, u&apos;Source/WebKit2/UIProcess/API/mac/WKProcessGroup.h&apos;, u&apos;Source/WebKit2/UIProcess/API/mac/WKProcessGroup.mm&apos;, u&apos;Source/WebKit2/UIProcess/Cocoa/WKNavigationData.h&apos;, u&apos;Source/WebKit2/UIProcess/Cocoa/WKNavigationData.mm&apos;, u&apos;Source/WebKit2/UIProcess/Cocoa/WKNavigationDataInternal.h&apos;, u&apos;Source/WebKit2/WebKit2.xcodeproj/project.pbxproj&apos;]&quot; exit_code: 1
Source/WebKit2/UIProcess/Cocoa/WKNavigationDataInternal.h:34:  More than one command on the same line  [whitespace/newline] [4]
Source/WebKit2/Shared/Cocoa/WKNSString.h:34:  More than one command on the same line  [whitespace/newline] [4]
Source/WebKit2/Shared/Cocoa/WKNSURL.h:34:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 3 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>947426</commentid>
    <comment_count>3</comment_count>
      <attachid>216102</attachid>
    <who name="">mitz</who>
    <bug_when>2013-11-05 17:28:43 -0800</bug_when>
    <thetext>Created attachment 216102
Add WKBrowsingContextHistoryDelegate and WKNavigationData</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947427</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-05 17:30:11 -0800</bug_when>
    <thetext>Attachment 216102 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/Shared/Cocoa/APIObject.mm&apos;, u&apos;Source/WebKit2/Shared/Cocoa/WKNSString.h&apos;, u&apos;Source/WebKit2/Shared/Cocoa/WKNSURL.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKNavigationData.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKNavigationData.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKNavigationDataRef.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKNavigationDataRef.h&apos;, u&apos;Source/WebKit2/UIProcess/API/mac/WKBrowsingContextController.h&apos;, u&apos;Source/WebKit2/UIProcess/API/mac/WKProcessGroup.mm&apos;, u&apos;Source/WebKit2/UIProcess/Cocoa/WKBrowsingContextHistoryDelegate.h&apos;, u&apos;Source/WebKit2/UIProcess/Cocoa/WKNavigationData.h&apos;, u&apos;Source/WebKit2/UIProcess/Cocoa/WKNavigationData.mm&apos;, u&apos;Source/WebKit2/UIProcess/Cocoa/WKNavigationDataInternal.h&apos;, u&apos;Source/WebKit2/WebKit2.xcodeproj/project.pbxproj&apos;]&quot; exit_code: 1
Source/WebKit2/UIProcess/Cocoa/WKNavigationDataInternal.h:34:  More than one command on the same line  [whitespace/newline] [4]
Source/WebKit2/Shared/Cocoa/WKNSString.h:34:  More than one command on the same line  [whitespace/newline] [4]
Source/WebKit2/Shared/Cocoa/WKNSURL.h:34:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 3 in 13 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>947431</commentid>
    <comment_count>5</comment_count>
      <attachid>216102</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-05 17:33:07 -0800</bug_when>
    <thetext>Comment on attachment 216102
Add WKBrowsingContextHistoryDelegate and WKNavigationData

Attachment 216102 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/21318052</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947436</commentid>
    <comment_count>6</comment_count>
      <attachid>216102</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-11-05 17:43:44 -0800</bug_when>
    <thetext>Comment on attachment 216102
Add WKBrowsingContextHistoryDelegate and WKNavigationData

Attachment 216102 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/21368047</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947740</commentid>
    <comment_count>7</comment_count>
    <who name="">mitz</who>
    <bug_when>2013-11-06 09:34:37 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r158753&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947911</commentid>
    <comment_count>8</comment_count>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2013-11-06 14:08:07 -0800</bug_when>
    <thetext>EFL build fix after the WKNavigationData.h =&gt; WKNavigationDataRef.h rename:
https://bugs.webkit.org/show_bug.cgi?id=123923</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216095</attachid>
            <date>2013-11-05 16:40:01 -0800</date>
            <delta_ts>2013-11-05 17:05:51 -0800</delta_ts>
            <desc>Add WKProcessGroupHistoryDelegate and WKNavigationData</desc>
            <filename>bug-123837-20131105164001.patch</filename>
            <type>text/plain</type>
            <size>41102</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1ODY5OSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDEzLTExLTA1ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBIaXN0b3J5IGRlbGVn
YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjM4
MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNo
YXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChXZWJLaXQ6OkFQSU9iamVjdDo6bmV3
T2JqZWN0KTogQWxsb2NhdGUgYSBXS05hdmlnYXRpb25EYXRhIGlmIHRoZSBvYmplY3QgaXMgYQor
ICAgICAgICBXZWJOYXZpZ2F0aW9uRGF0YS4KKworICAgICAgICAqIFNoYXJlZC9Db2NvYS9XS05T
U3RyaW5nLmg6CisgICAgICAgIChXZWJLaXQ6OndyYXBwZXIpOiBBZGRlZC4gUmV0dXJucyBhIFdl
YlN0cmluZ+KAmXMgd3JhcHBlciBhcyBhbiBOU1N0cmluZy4KKworICAgICAgICAqIFNoYXJlZC9D
b2NvYS9XS05TVVJMLmg6CisgICAgICAgIChXZWJLaXQ6OndyYXBwZXIpOiBBZGRlZC4gUmV0dXJu
cyBhIFdlYlVSTOKAmXMgd3JhcHBlciBhcyBhbiBOU1VSTC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS05hdmlnYXRpb25EYXRhLmNwcDogUmVuYW1lZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YS5oOiBSZW5hbWVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS05hdmlnYXRpb25EYXRhUmVmLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkRhdGEuY3BwLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS05hdmlnYXRpb25EYXRhUmVmLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25EYXRhLmguCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL21hYy9XS1Byb2Nlc3NHcm91cC5oOiBEZWNsYXJlZCBXS1Byb2Nlc3NHcm91cEhp
c3RvcnlEZWxlZ2F0ZSBwcm90b2NvbCBhbmQKKyAgICAgICAgaGlzdG9yeURlbGVnYXRlIHByb3Bl
cnR5IG9uIFdLUHJvY2Vzc0dyb3VwLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLUHJv
Y2Vzc0dyb3VwLm1tOgorICAgICAgICAoZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEpOiBB
ZGRlZCBoaXN0b3J5IGNsaWVudCBjYWxsYmFjayB0aGF0IGNhbGxzIHRoZSBkZWxlZ2F0ZS4KKyAg
ICAgICAgKGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdCk6IERpdHRvLgorICAgICAgICAoZGlkUGVy
Zm9ybVNlcnZlclJlZGlyZWN0KTogRGl0dG8uCisgICAgICAgIChkaWRVcGRhdGVIaXN0b3J5VGl0
bGUpOiBEaXR0by4KKyAgICAgICAgKHBvcHVsYXRlVmlzaXRlZExpbmtzKTogRGl0dG8uCisgICAg
ICAgIChzZXRVcEhpc3RvcnlDbGllbnQpOiBBZGRlZC4KKyAgICAgICAgKC1bV0tQcm9jZXNzR3Jv
dXAgaW5pdFdpdGhJbmplY3RlZEJ1bmRsZVVSTDpdKTogQWRkZWQgY2FsbCB0byBzZXRVcEhpc3Rv
cnlDbGllbnQuCisgICAgICAgICgtW1dLUHJvY2Vzc0dyb3VwIGRlYWxsb2NdKTogQ2xlYXIgdGhl
IGhpc3RvcnkgY2xpZW50LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLTmF2aWdhdGlv
bkRhdGEuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLTmF2aWdhdGlvbkRh
dGEubW06IEFkZGVkLgorICAgICAgICAoLVtXS05hdmlnYXRpb25EYXRhIGRlYWxsb2NdKTogQ2Fs
bHMgdGhlIFdlYk5hdmlnYXRpb25EYXRhIGRlc3RydWN0b3IuCisgICAgICAgICgtW1dLTmF2aWdh
dGlvbkRhdGEgdGl0bGVdKTogQWRkZWQuCisgICAgICAgICgtW1dLTmF2aWdhdGlvbkRhdGEgb3Jp
Z2luYWxSZXF1ZXN0XSk6IEFkZGVkLgorICAgICAgICAoLVtXS05hdmlnYXRpb25EYXRhIGRlc3Rp
bmF0aW9uVVJMXSk6IEFkZGVkLgorICAgICAgICAoLVtXS05hdmlnYXRpb25EYXRhIF9hcGlPYmpl
Y3RdKTogUmV0dXJucyB0aGUgd3JhcHBlZCBXZWJOYXZpZ2F0aW9uRGF0YS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvV0tOYXZpZ2F0aW9uRGF0YUludGVybmFsLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0Ojp3cmFwcGVyKTogQWRkZWQuIFJldHVybnMgYSBXZWJOYXZpZ2F0aW9uRGF0YeKA
mXMgd3JhcHBlciBhcyBhIFdLTmF2aWdhdGlvbkRhdGEuCisgICAgICAgICogV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOiBVcGRhdGVkIGZvciByZW5hbWVzIGFuZCBhZGRpdGlvbnMu
CisKIDIwMTMtMTEtMDUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXS1JlbW90ZU9iamVjdERlY29kZXIgc2hvdWxkIGtub3cgd2hpY2ggaW50ZXJmYWNl
IGl0J3MgZGVjb2RpbmcgZm9yCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJ
T2JqZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElP
YmplY3QubW0JKHJldmlzaW9uIDE1ODY5MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2Nv
YS9BUElPYmplY3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQg
IldLTlNEaWN0aW9uYXJ5LmgiCiAjaW1wb3J0ICJXS05TU3RyaW5nLmgiCiAjaW1wb3J0ICJXS05T
VVJMLmgiCisjaW1wb3J0ICJXS05hdmlnYXRpb25EYXRhSW50ZXJuYWwuaCIKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKQEAgLTcyLDYgKzczLDEwIEBAIHZvaWQqIEFQSU9iamVjdDo6bmV3T2JqZWN0
KHNpemVfdCBzaXplLCAKICAgICAgICAgd3JhcHBlciA9IFtXS05TRGljdGlvbmFyeSBhbGxvY107
CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBUeXBlTmF2aWdhdGlvbkRhdGE6CisgICAgICAg
IHdyYXBwZXIgPSBbV0tOYXZpZ2F0aW9uRGF0YSBhbGxvY107CisgICAgICAgIGJyZWFrOworCiAg
ICAgY2FzZSBUeXBlU3RyaW5nOgogICAgICAgICB3cmFwcGVyID0gTlNBbGxvY2F0ZU9iamVjdChb
V0tOU1N0cmluZyBjbGFzc10sIHNpemUsIG51bGxwdHIpOwogICAgICAgICBicmVhazsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9XS05TU3RyaW5nLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL1dLTlNTdHJpbmcuaAkocmV2aXNpb24gMTU4Njkx
KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL1dLTlNTdHJpbmcuaAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNiArMjgsMTEgQEAKICNpZiBXS19BUElfRU5BQkxFRAogCiAjaW1wb3J0ICJX
S09iamVjdC5oIgorI2ltcG9ydCAiV2ViU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
aW5saW5lIE5TU3RyaW5nICp3cmFwcGVyKFdlYlN0cmluZyYgc3RyaW5nKSB7IEFTU0VSVChbc3Ry
aW5nLndyYXBwZXIoKSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsgcmV0dXJuIChO
U1N0cmluZyAqKXN0cmluZy53cmFwcGVyKCk7IH0KK30KIAogQGludGVyZmFjZSBXS05TU3RyaW5n
IDogV0tPYmplY3QgPE5TQ29weWluZz4KIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db2NvYS9XS05TVVJMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
Y29hL1dLTlNVUkwuaAkocmV2aXNpb24gMTU4NjkxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVk
L0NvY29hL1dLTlNVUkwuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsMTEgQEAKICNpZiBX
S19BUElfRU5BQkxFRAogCiAjaW1wb3J0ICJXS09iamVjdC5oIgorI2ltcG9ydCAiV2ViVVJMLmgi
CisKK25hbWVzcGFjZSBXZWJLaXQgeworaW5saW5lIE5TVVJMICp3cmFwcGVyKFdlYlVSTCYgdXJs
KSB7IEFTU0VSVChbdXJsLndyYXBwZXIoKSBpc0tpbmRPZkNsYXNzOltOU1VSTCBjbGFzc11dKTsg
cmV0dXJuIChOU1VSTCAqKXVybC53cmFwcGVyKCk7IH0KK30KIAogQGludGVyZmFjZSBXS05TVVJM
IDogV0tPYmplY3QgPE5TQ29weWluZz4KIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS05hdmlnYXRpb25EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YS5jcHAJKHJldmlzaW9uIDE1ODY5
MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25EYXRhLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIldLTmF2aWdhdGlvbkRhdGEuaCIKLQotI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYk5hdmlnYXRpb25EYXRhLmgiCi0jaW5jbHVkZSAiV2Vi
VVJMUmVxdWVzdC5oIgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1XS1R5cGVJRCBXS05h
dmlnYXRpb25EYXRhR2V0VHlwZUlEKCkKLXsKLSAgICByZXR1cm4gdG9BUEkoV2ViTmF2aWdhdGlv
bkRhdGE6OkFQSVR5cGUpOwotfQotCi1XS1N0cmluZ1JlZiBXS05hdmlnYXRpb25EYXRhQ29weVRp
dGxlKFdLTmF2aWdhdGlvbkRhdGFSZWYgbmF2aWdhdGlvbkRhdGFSZWYpCi17Ci0gICAgcmV0dXJu
IHRvQ29waWVkQVBJKHRvSW1wbChuYXZpZ2F0aW9uRGF0YVJlZiktPnRpdGxlKCkpOwotfQotCi1X
S1VSTFJlZiBXS05hdmlnYXRpb25EYXRhQ29weVVSTChXS05hdmlnYXRpb25EYXRhUmVmIG5hdmln
YXRpb25EYXRhUmVmKQotewotICAgIC8vIFRoaXMgcmV0dXJucyB0aGUgVVJMIG9mIHRoZSBvcmln
aW5hbCByZXF1ZXN0IGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBwdXJwb3Nlcy4KLSAgICBy
ZXR1cm4gdG9Db3BpZWRVUkxBUEkodG9JbXBsKG5hdmlnYXRpb25EYXRhUmVmKS0+b3JpZ2luYWxS
ZXF1ZXN0KCkudXJsKCkpOwotfQotCi1XS1VSTFJlZiBXS05hdmlnYXRpb25EYXRhQ29weU5hdmln
YXRpb25EZXN0aW5hdGlvblVSTChXS05hdmlnYXRpb25EYXRhUmVmIG5hdmlnYXRpb25EYXRhUmVm
KQotewotICAgIHJldHVybiB0b0NvcGllZFVSTEFQSSh0b0ltcGwobmF2aWdhdGlvbkRhdGFSZWYp
LT51cmwoKSk7Ci19Ci0KLVdLVVJMUmVxdWVzdFJlZiBXS05hdmlnYXRpb25EYXRhQ29weU9yaWdp
bmFsUmVxdWVzdChXS05hdmlnYXRpb25EYXRhUmVmIG5hdmlnYXRpb25EYXRhKQotewotICAgIHJl
dHVybiB0b0FQSShXZWJVUkxSZXF1ZXN0OjpjcmVhdGUodG9JbXBsKG5hdmlnYXRpb25EYXRhKS0+
b3JpZ2luYWxSZXF1ZXN0KCkpLmxlYWtSZWYoKSk7Ci19CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25EYXRhLmgJKHJldmlzaW9uIDE1ODY5
MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25EYXRhLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV0tO
YXZpZ2F0aW9uRGF0YV9oCi0jZGVmaW5lIFdLTmF2aWdhdGlvbkRhdGFfaAotCi0jaW5jbHVkZSA8
V2ViS2l0Mi9XS0Jhc2UuaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNl
bmRpZgotCi1XS19FWFBPUlQgV0tUeXBlSUQgV0tOYXZpZ2F0aW9uRGF0YUdldFR5cGVJRCgpOwot
Ci1XS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tOYXZpZ2F0aW9uRGF0YUNvcHlUaXRsZShXS05hdmln
YXRpb25EYXRhUmVmIG5hdmlnYXRpb25EYXRhKTsKLVdLX0VYUE9SVCBXS1VSTFJlcXVlc3RSZWYg
V0tOYXZpZ2F0aW9uRGF0YUNvcHlPcmlnaW5hbFJlcXVlc3QoV0tOYXZpZ2F0aW9uRGF0YVJlZiBu
YXZpZ2F0aW9uRGF0YSk7Ci1XS19FWFBPUlQgV0tVUkxSZWYgV0tOYXZpZ2F0aW9uRGF0YUNvcHlO
YXZpZ2F0aW9uRGVzdGluYXRpb25VUkwoV0tOYXZpZ2F0aW9uRGF0YVJlZiBuYXZpZ2F0aW9uRGF0
YVJlZik7Ci0KLS8vIFRoaXMgcmV0dXJucyB0aGUgVVJMIG9mIHRoZSBvcmlnaW5hbCByZXF1ZXN0
IGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBwdXJwb3Nlcy4KLVdLX0VYUE9SVCBXS1VSTFJl
ZiBXS05hdmlnYXRpb25EYXRhQ29weVVSTChXS05hdmlnYXRpb25EYXRhUmVmIG5hdmlnYXRpb25E
YXRhKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmIC8qIFdLTmF2
aWdhdGlvbkRhdGFfaCAqLwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
TmF2aWdhdGlvbkRhdGFSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS05hdmlnYXRpb25EYXRhUmVmLmNwcAkocmV2aXNpb24gMTU4NjkxKQkoZnJv
bSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YS5jcHA6MTU4
NjkxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkRhdGFS
ZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tOYXZpZ2F0aW9uRGF0YS5oIgorCisjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViTmF2aWdhdGlvbkRhdGEuaCIKKyNpbmNsdWRl
ICJXZWJVUkxSZXF1ZXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlE
IFdLTmF2aWdhdGlvbkRhdGFHZXRUeXBlSUQoKQoreworICAgIHJldHVybiB0b0FQSShXZWJOYXZp
Z2F0aW9uRGF0YTo6QVBJVHlwZSk7Cit9CisKK1dLU3RyaW5nUmVmIFdLTmF2aWdhdGlvbkRhdGFD
b3B5VGl0bGUoV0tOYXZpZ2F0aW9uRGF0YVJlZiBuYXZpZ2F0aW9uRGF0YVJlZikKK3sKKyAgICBy
ZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKG5hdmlnYXRpb25EYXRhUmVmKS0+dGl0bGUoKSk7Cit9
CisKK1dLVVJMUmVmIFdLTmF2aWdhdGlvbkRhdGFDb3B5VVJMKFdLTmF2aWdhdGlvbkRhdGFSZWYg
bmF2aWdhdGlvbkRhdGFSZWYpCit7CisgICAgLy8gVGhpcyByZXR1cm5zIHRoZSBVUkwgb2YgdGhl
IG9yaWdpbmFsIHJlcXVlc3QgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IHB1cnBvc2VzLgor
ICAgIHJldHVybiB0b0NvcGllZFVSTEFQSSh0b0ltcGwobmF2aWdhdGlvbkRhdGFSZWYpLT5vcmln
aW5hbFJlcXVlc3QoKS51cmwoKSk7Cit9CisKK1dLVVJMUmVmIFdLTmF2aWdhdGlvbkRhdGFDb3B5
TmF2aWdhdGlvbkRlc3RpbmF0aW9uVVJMKFdLTmF2aWdhdGlvbkRhdGFSZWYgbmF2aWdhdGlvbkRh
dGFSZWYpCit7CisgICAgcmV0dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChuYXZpZ2F0aW9uRGF0
YVJlZiktPnVybCgpKTsKK30KKworV0tVUkxSZXF1ZXN0UmVmIFdLTmF2aWdhdGlvbkRhdGFDb3B5
T3JpZ2luYWxSZXF1ZXN0KFdLTmF2aWdhdGlvbkRhdGFSZWYgbmF2aWdhdGlvbkRhdGEpCit7Cisg
ICAgcmV0dXJuIHRvQVBJKFdlYlVSTFJlcXVlc3Q6OmNyZWF0ZSh0b0ltcGwobmF2aWdhdGlvbkRh
dGEpLT5vcmlnaW5hbFJlcXVlc3QoKSkubGVha1JlZigpKTsKK30KSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25EYXRhUmVmLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YVJlZi5jcHAJ
KHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05hdmln
YXRpb25EYXRhUmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAK
ICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXS05hdmlnYXRpb25EYXRhLmgiCisjaW5j
bHVkZSAiV0tOYXZpZ2F0aW9uRGF0YVJlZi5oIgogCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAj
aW5jbHVkZSAiV2ViTmF2aWdhdGlvbkRhdGEuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS05hdmlnYXRpb25EYXRhUmVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkRhdGFSZWYuaAkocmV2aXNpb24gMTU4
NjkxKQkoZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0
YS5oOjE1ODY5MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRp
b25EYXRhUmVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV0tOYXZpZ2F0aW9uRGF0YV9oCisjZGVmaW5lIFdLTmF2aWdhdGlvbkRhdGFfaAor
CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRl
cm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tOYXZpZ2F0aW9uRGF0YUdl
dFR5cGVJRCgpOworCitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tOYXZpZ2F0aW9uRGF0YUNvcHlU
aXRsZShXS05hdmlnYXRpb25EYXRhUmVmIG5hdmlnYXRpb25EYXRhKTsKK1dLX0VYUE9SVCBXS1VS
TFJlcXVlc3RSZWYgV0tOYXZpZ2F0aW9uRGF0YUNvcHlPcmlnaW5hbFJlcXVlc3QoV0tOYXZpZ2F0
aW9uRGF0YVJlZiBuYXZpZ2F0aW9uRGF0YSk7CitXS19FWFBPUlQgV0tVUkxSZWYgV0tOYXZpZ2F0
aW9uRGF0YUNvcHlOYXZpZ2F0aW9uRGVzdGluYXRpb25VUkwoV0tOYXZpZ2F0aW9uRGF0YVJlZiBu
YXZpZ2F0aW9uRGF0YVJlZik7CisKKy8vIFRoaXMgcmV0dXJucyB0aGUgVVJMIG9mIHRoZSBvcmln
aW5hbCByZXF1ZXN0IGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBwdXJwb3Nlcy4KK1dLX0VY
UE9SVCBXS1VSTFJlZiBXS05hdmlnYXRpb25EYXRhQ29weVVSTChXS05hdmlnYXRpb25EYXRhUmVm
IG5hdmlnYXRpb25EYXRhKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2Vu
ZGlmIC8qIFdLTmF2aWdhdGlvbkRhdGFfaCAqLwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkRhdGFSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YVJlZi5oCSh3b3JraW5nIGNvcHkp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YVJlZi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXS05hdmlnYXRpb25EYXRhX2gKLSNkZWZpbmUg
V0tOYXZpZ2F0aW9uRGF0YV9oCisjaWZuZGVmIFdLTmF2aWdhdGlvbkRhdGFSZWZfaAorI2RlZmlu
ZSBXS05hdmlnYXRpb25EYXRhUmVmX2gKIAogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CiAK
QEAgLTQ1LDQgKzQ1LDQgQEAgV0tfRVhQT1JUIFdLVVJMUmVmIFdLTmF2aWdhdGlvbkRhdGFDb3B5
VQogfQogI2VuZGlmCiAKLSNlbmRpZiAvKiBXS05hdmlnYXRpb25EYXRhX2ggKi8KKyNlbmRpZiAv
KiBXS05hdmlnYXRpb25EYXRhUmVmX2ggKi8KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1dLUHJvY2Vzc0dyb3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tQcm9jZXNzR3JvdXAuaAkocmV2aXNpb24gMTU4NjkxKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tQcm9jZXNzR3JvdXAuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsOCArMjQsMTEgQEAKICAqLwogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaD4KKyNpbXBvcnQgPFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5oPgogI2lt
cG9ydCA8V2ViS2l0Mi9XS0RlY2xhcmF0aW9uU3BlY2lmaWVycy5oPgorI2ltcG9ydCA8V2ViS2l0
Mi9XS0ZvdW5kYXRpb24uaD4KIAorQGNsYXNzIFdLTmF2aWdhdGlvbkRhdGE7CiBAY2xhc3MgV0tQ
cm9jZXNzR3JvdXAsIFdLUHJvY2Vzc0dyb3VwRGF0YSwgV0tDb25uZWN0aW9uOwogCiBAcHJvdG9j
b2wgV0tQcm9jZXNzR3JvdXBEZWxlZ2F0ZSA8TlNPYmplY3Q+CkBAIC0zOSw2ICs0MiwxOSBAQAog
CiBAZW5kCiAKKyNpZiBXS19BUElfRU5BQkxFRAorQHByb3RvY29sIFdLUHJvY2Vzc0dyb3VwSGlz
dG9yeURlbGVnYXRlIDxOU09iamVjdD4KK0BvcHRpb25hbAorCistICh2b2lkKXByb2Nlc3NHcm91
cDooV0tQcm9jZXNzR3JvdXAgKilwcm9jZXNzR3JvdXAgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
cjooV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICopYnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ciBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YTooV0tOYXZpZ2F0aW9uRGF0YSAqKW5hdmln
YXRpb25EYXRhOworLSAodm9pZClwcm9jZXNzR3JvdXA6KFdLUHJvY2Vzc0dyb3VwICopcHJvY2Vz
c0dyb3VwIGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI6KFdLQnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlciAqKWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0
RnJvbVVSTDooTlNVUkwgKilzb3VyY2VVUkwgdG9VUkw6KE5TVVJMICopZGVzdGluYXRpb25VUkw7
CistICh2b2lkKXByb2Nlc3NHcm91cDooV0tQcm9jZXNzR3JvdXAgKilwcm9jZXNzR3JvdXAgYnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlcjooV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICopYnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlciBkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3RGcm9tVVJMOihO
U1VSTCAqKXNvdXJjZVVSTCB0b1VSTDooTlNVUkwgKilkZXN0aW5hdGlvblVSTDsKKy0gKHZvaWQp
cHJvY2Vzc0dyb3VwOihXS1Byb2Nlc3NHcm91cCAqKXByb2Nlc3NHcm91cCBicm93c2luZ0NvbnRl
eHRDb250cm9sbGVyOihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKilicm93c2luZ0NvbnRl
eHRDb250cm9sbGVyIGRpZFVwZGF0ZUhpc3RvcnlUaXRsZTooTlNTdHJpbmcgKil0aXRsZSBmb3JV
Ukw6KE5TVVJMICopVVJMOworLSAodm9pZClwb3B1bGF0ZVZpc2l0ZWRMaW5rc0ZvclByb2Nlc3NH
cm91cDooV0tQcm9jZXNzR3JvdXAgKilwcm9jZXNzR3JvdXA7CisKK0BlbmQKKyNlbmRpZiAvLyBX
S19BUElfRU5BQkxFRAorCiBXS19FWFBPUlQKIEBpbnRlcmZhY2UgV0tQcm9jZXNzR3JvdXAgOiBO
U09iamVjdCB7CiBAcHJpdmF0ZQpAQCAtNTIsNCArNjgsOCBAQCBAaW50ZXJmYWNlIFdLUHJvY2Vz
c0dyb3VwIDogTlNPYmplY3QgewogCiBAcHJvcGVydHkoYXNzaWduKSBpZDxXS1Byb2Nlc3NHcm91
cERlbGVnYXRlPiBkZWxlZ2F0ZTsKIAorI2lmIFdLX0FQSV9FTkFCTEVECitAcHJvcGVydHkgKGFz
c2lnbikgaWQgPFdLUHJvY2Vzc0dyb3VwSGlzdG9yeURlbGVnYXRlPiBoaXN0b3J5RGVsZWdhdGU7
CisjZW5kaWYKKwogQGVuZApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMv
V0tQcm9jZXNzR3JvdXAubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tQcm9jZXNzR3JvdXAubW0JKHJldmlzaW9uIDE1ODY5MSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLUHJvY2Vzc0dyb3VwLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCwxMiArMjgsMjEgQEAKICNpbXBvcnQgIldLUHJvY2Vzc0dyb3VwUHJpdmF0ZS5oIgog
CiAjaW1wb3J0ICJPYmpDT2JqZWN0R3JhcGguaCIKKyNpbXBvcnQgIldLQVBJQ2FzdC5oIgorI2lt
cG9ydCAiV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVySW50ZXJuYWwuaCIKICNpbXBvcnQgIldL
Q29ubmVjdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJXS0NvbnRleHQuaCIKKyNpbXBvcnQgIldL
TlNTdHJpbmcuaCIKKyNpbXBvcnQgIldLTlNVUkwuaCIKKyNpbXBvcnQgIldLTmF2aWdhdGlvbkRh
dGFJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tSZXRhaW5QdHIuaCIKICNpbXBvcnQgIldLU3RyaW5n
Q0YuaCIKKyNpbXBvcnQgIldlYkZyYW1lUHJveHkuaCIKKyNpbXBvcnQgIldlYk5hdmlnYXRpb25E
YXRhLmgiCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CisKIEBpbnRlcmZhY2UgV0tQcm9jZXNzR3JvdXBEYXRhIDogTlNPYmplY3QgewogQHB1Ymxp
YwogICAgIC8vIFVuZGVybHlpbmcgY29udGV4dCBvYmplY3QuCkBAIC05NCw2ICsxMDMsNzkgQEAg
c3RhdGljIHZvaWQgc2V0VXBJbmVjdGVkQnVuZGxlQ2xpZW50KFdLUAogICAgIFdLQ29udGV4dFNl
dEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHRSZWYsICZpbmplY3RlZEJ1bmRsZUNsaWVudCk7
CiB9CiAKKyNpZiBXS19BUElfRU5BQkxFRAorCitzdGF0aWMgdm9pZCBkaWROYXZpZ2F0ZVdpdGhO
YXZpZ2F0aW9uRGF0YShXS0NvbnRleHRSZWYsIFdLUGFnZVJlZiBwYWdlUmVmLCBXS05hdmlnYXRp
b25EYXRhUmVmIG5hdmlnYXRpb25EYXRhUmVmLCBXS0ZyYW1lUmVmIGZyYW1lUmVmLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQoreworICAgIGlmICghdG9JbXBsKGZyYW1lUmVmKS0+aXNNYWluRnJh
bWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcm9jZXNzR3JvdXAgKnByb2Nlc3NHcm91
cCA9IChXS1Byb2Nlc3NHcm91cCAqKWNsaWVudEluZm87CisgICAgaWYgKFtwcm9jZXNzR3JvdXAt
Pl9oaXN0b3J5RGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihwcm9jZXNzR3Jv
dXA6YnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0
YTopXSkKKyAgICAgICAgW3Byb2Nlc3NHcm91cC0+X2hpc3RvcnlEZWxlZ2F0ZSBwcm9jZXNzR3Jv
dXA6cHJvY2Vzc0dyb3VwIGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI6W1dLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlciBfYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckZvclBhZ2VSZWY6cGFnZVJl
Zl0gZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGE6d3JhcHBlcigqdG9JbXBsKG5hdmlnYXRp
b25EYXRhUmVmKSldOworfQorCitzdGF0aWMgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3Qo
V0tDb250ZXh0UmVmLCBXS1BhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYgc291cmNlVVJMUmVmLCBX
S1VSTFJlZiBkZXN0aW5hdGlvblVSTFJlZiwgV0tGcmFtZVJlZiBmcmFtZVJlZiwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKK3sKKyAgICBpZiAoIXRvSW1wbChmcmFtZVJlZiktPmlzTWFpbkZyYW1l
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJvY2Vzc0dyb3VwICpwcm9jZXNzR3JvdXAg
PSAoV0tQcm9jZXNzR3JvdXAgKiljbGllbnRJbmZvOworICAgIGlmIChbcHJvY2Vzc0dyb3VwLT5f
aGlzdG9yeURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocHJvY2Vzc0dyb3Vw
OmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0RnJvbVVS
TDp0b1VSTDopXSkgeworICAgICAgICBbcHJvY2Vzc0dyb3VwLT5faGlzdG9yeURlbGVnYXRlIHBy
b2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcjpbV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyIF9icm93c2luZ0NvbnRleHRDb250cm9sbGVyRm9yUGFnZVJl
ZjpwYWdlUmVmXQorICAgICAgICAgICAgZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0RnJvbVVSTDp3
cmFwcGVyKCp0b0ltcGwoc291cmNlVVJMUmVmKSkgdG9VUkw6d3JhcHBlcigqdG9JbXBsKGRlc3Rp
bmF0aW9uVVJMUmVmKSldOworICAgIH0KK30KKworc3RhdGljIHZvaWQgZGlkUGVyZm9ybVNlcnZl
clJlZGlyZWN0KFdLQ29udGV4dFJlZiwgV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVmIHNvdXJj
ZVVSTFJlZiwgV0tVUkxSZWYgZGVzdGluYXRpb25VUkxSZWYsIFdLRnJhbWVSZWYgZnJhbWVSZWYs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgaWYgKCF0b0ltcGwoZnJhbWVSZWYpLT5p
c01haW5GcmFtZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1Byb2Nlc3NHcm91cCAqcHJv
Y2Vzc0dyb3VwID0gKFdLUHJvY2Vzc0dyb3VwICopY2xpZW50SW5mbzsKKyAgICBpZiAoW3Byb2Nl
c3NHcm91cC0+X2hpc3RvcnlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBy
b2Nlc3NHcm91cDpicm93c2luZ0NvbnRleHRDb250cm9sbGVyOmRpZFBlcmZvcm1TZXJ2ZXJSZWRp
cmVjdEZyb21VUkw6dG9VUkw6KV0pIHsKKyAgICAgICAgW3Byb2Nlc3NHcm91cC0+X2hpc3RvcnlE
ZWxlZ2F0ZSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwIGJyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXI6W1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBfYnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ckZvclBhZ2VSZWY6cGFnZVJlZl0KKyAgICAgICAgICAgIGRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVj
dEZyb21VUkw6d3JhcHBlcigqdG9JbXBsKHNvdXJjZVVSTFJlZikpIHRvVVJMOndyYXBwZXIoKnRv
SW1wbChkZXN0aW5hdGlvblVSTFJlZikpXTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGRpZFVw
ZGF0ZUhpc3RvcnlUaXRsZShXS0NvbnRleHRSZWYsIFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmlu
Z1JlZiB0aXRsZVJlZiwgV0tVUkxSZWYgdXJsUmVmLCBXS0ZyYW1lUmVmIGZyYW1lUmVmLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIGlmICghdG9JbXBsKGZyYW1lUmVmKS0+aXNNYWlu
RnJhbWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcm9jZXNzR3JvdXAgKnByb2Nlc3NH
cm91cCA9IChXS1Byb2Nlc3NHcm91cCAqKWNsaWVudEluZm87CisgICAgaWYgKFtwcm9jZXNzR3Jv
dXAtPl9oaXN0b3J5RGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihwcm9jZXNz
R3JvdXA6YnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcjpkaWRVcGRhdGVIaXN0b3J5VGl0bGU6Zm9y
VVJMOildKSB7CisgICAgICAgIFtwcm9jZXNzR3JvdXAtPl9oaXN0b3J5RGVsZWdhdGUgcHJvY2Vz
c0dyb3VwOnByb2Nlc3NHcm91cCBicm93c2luZ0NvbnRleHRDb250cm9sbGVyOltXS0Jyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIgX2Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJGb3JQYWdlUmVmOnBh
Z2VSZWZdCisgICAgICAgICAgICBkaWRVcGRhdGVIaXN0b3J5VGl0bGU6d3JhcHBlcigqdG9JbXBs
KHRpdGxlUmVmKSkgZm9yVVJMOndyYXBwZXIoKnRvSW1wbCh1cmxSZWYpKV07CisgICAgfQorfQor
CitzdGF0aWMgdm9pZCBwb3B1bGF0ZVZpc2l0ZWRMaW5rcyhXS0NvbnRleHRSZWYsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCit7CisgICAgV0tQcm9jZXNzR3JvdXAgKnByb2Nlc3NHcm91cCA9IChX
S1Byb2Nlc3NHcm91cCAqKWNsaWVudEluZm87CisgICAgaWYgKFtwcm9jZXNzR3JvdXAtPl9oaXN0
b3J5RGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihwb3B1bGF0ZVZpc2l0ZWRM
aW5rc0ZvclByb2Nlc3NHcm91cDopXSkKKyAgICAgICAgW3Byb2Nlc3NHcm91cC0+X2hpc3RvcnlE
ZWxlZ2F0ZSBwb3B1bGF0ZVZpc2l0ZWRMaW5rc0ZvclByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXBd
OworfQorCitzdGF0aWMgdm9pZCBzZXRVcEhpc3RvcnlDbGllbnQoV0tQcm9jZXNzR3JvdXAgKnBy
b2Nlc3NHcm91cCwgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCit7CisgICAgV0tDb250ZXh0SGlz
dG9yeUNsaWVudCBoaXN0b3J5Q2xpZW50OworICAgIG1lbXNldCgmaGlzdG9yeUNsaWVudCwgMCwg
c2l6ZW9mKGhpc3RvcnlDbGllbnQpKTsKKworICAgIGhpc3RvcnlDbGllbnQudmVyc2lvbiA9IGtX
S0NvbnRleHRIaXN0b3J5Q2xpZW50Q3VycmVudFZlcnNpb247CisgICAgaGlzdG9yeUNsaWVudC5j
bGllbnRJbmZvID0gcHJvY2Vzc0dyb3VwOworICAgIGhpc3RvcnlDbGllbnQuZGlkTmF2aWdhdGVX
aXRoTmF2aWdhdGlvbkRhdGEgPSBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YTsKKyAgICBo
aXN0b3J5Q2xpZW50LmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdCA9IGRpZFBlcmZvcm1DbGllbnRS
ZWRpcmVjdDsKKyAgICBoaXN0b3J5Q2xpZW50LmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdCA9IGRp
ZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdDsKKyAgICBoaXN0b3J5Q2xpZW50LmRpZFVwZGF0ZUhpc3Rv
cnlUaXRsZSA9IGRpZFVwZGF0ZUhpc3RvcnlUaXRsZTsKKyAgICBoaXN0b3J5Q2xpZW50LnBvcHVs
YXRlVmlzaXRlZExpbmtzID0gcG9wdWxhdGVWaXNpdGVkTGlua3M7CisKKyAgICBXS0NvbnRleHRT
ZXRIaXN0b3J5Q2xpZW50KGNvbnRleHRSZWYsICZoaXN0b3J5Q2xpZW50KTsKK30KKworI2VuZGlm
IC8vIFdLX0FQSV9FTkFCTEVECisKIC0gKGlkKWluaXQKIHsKICAgICByZXR1cm4gW3NlbGYgaW5p
dFdpdGhJbmplY3RlZEJ1bmRsZVVSTDpuaWxdOwpAQCAtMTE0LDYgKzE5Niw5IEBAIC0gKGlkKWlu
aXRXaXRoSW5qZWN0ZWRCdW5kbGVVUkw6KE5TVVJMICoKIAogICAgIHNldFVwQ29ubmVjdGlvbkNs
aWVudChzZWxmLCBfZGF0YS0+X2NvbnRleHRSZWYuZ2V0KCkpOwogICAgIHNldFVwSW5lY3RlZEJ1
bmRsZUNsaWVudChzZWxmLCBfZGF0YS0+X2NvbnRleHRSZWYuZ2V0KCkpOworI2lmIFdLX0FQSV9F
TkFCTEVECisgICAgc2V0VXBIaXN0b3J5Q2xpZW50KHNlbGYsIF9kYXRhLT5fY29udGV4dFJlZi5n
ZXQoKSk7CisjZW5kaWYKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMTIyLDYgKzIwNyw3IEBA
IC0gKHZvaWQpZGVhbGxvYwogewogICAgIFdLQ29udGV4dFNldENvbm5lY3Rpb25DbGllbnQoX2Rh
dGEtPl9jb250ZXh0UmVmLmdldCgpLCAwKTsKICAgICBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRs
ZUNsaWVudChfZGF0YS0+X2NvbnRleHRSZWYuZ2V0KCksIDApOworICAgIFdLQ29udGV4dFNldEhp
c3RvcnlDbGllbnQoX2RhdGEtPl9jb250ZXh0UmVmLmdldCgpLCAwKTsKIAogICAgIFtfZGF0YSBy
ZWxlYXNlXTsKICAgICBbc3VwZXIgZGVhbGxvY107CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvV0tOYXZpZ2F0aW9uRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XS05hdmlnYXRpb25EYXRhLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tOYXZpZ2F0aW9uRGF0YS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8V2ViS2l0Mi9X
S05hdmlnYXRpb25EYXRhUmVmLmg+CisKKyNpZmRlZiBfX09CSkNfXworCisjaW1wb3J0IDxXZWJL
aXQyL1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworV0tfQVBJX0NMQVNT
CitAaW50ZXJmYWNlIFdLTmF2aWdhdGlvbkRhdGEgOiBOU09iamVjdAorCitAcHJvcGVydHkgKHJl
YWRvbmx5KSBOU1N0cmluZyAqdGl0bGU7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBOU1VSTFJlcXVl
c3QgKm9yaWdpbmFsUmVxdWVzdDsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIE5TVVJMICpkZXN0aW5h
dGlvblVSTDsKKworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKKworI2VuZGlmIC8v
IGRlZmluZWQoX19PQkpDX18pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V0tOYXZpZ2F0aW9uRGF0YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvV0tOYXZpZ2F0aW9uRGF0YS5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XS05hdmlnYXRpb25EYXRhLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQg
IldLTmF2aWdhdGlvbkRhdGFJbnRlcm5hbC5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2lt
cG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKKworQGltcGxlbWVudGF0aW9uIFdLTmF2aWdhdGlvbkRhdGEgeworICAgIHN0ZDo6YWxpZ25l
ZF9zdG9yYWdlPHNpemVvZihXZWJOYXZpZ2F0aW9uRGF0YSksIHN0ZDo6YWxpZ25tZW50X29mPFdl
Yk5hdmlnYXRpb25EYXRhPjo6dmFsdWU+Ojp0eXBlIF9kYXRhOworfQorCistICh2b2lkKWRlYWxs
b2MKK3sKKyAgICByZWludGVycHJldF9jYXN0PFdlYk5hdmlnYXRpb25EYXRhKj4oJl9kYXRhKS0+
fldlYk5hdmlnYXRpb25EYXRhKCk7CisKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKE5T
U3RyaW5nICopdGl0bGUKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXZWJOYXZpZ2F0
aW9uRGF0YSo+KCZfZGF0YSktPnRpdGxlKCk7Cit9CisKKy0gKE5TVVJMUmVxdWVzdCAqKW9yaWdp
bmFsUmVxdWVzdAoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdlYk5hdmlnYXRpb25E
YXRhKj4oJl9kYXRhKS0+b3JpZ2luYWxSZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkRv
Tm90VXBkYXRlSFRUUEJvZHkpOworfQorCistIChOU1VSTCAqKWRlc3RpbmF0aW9uVVJMCit7Cisg
ICAgcmV0dXJuIFtOU1VSTCBVUkxXaXRoU3RyaW5nOnJlaW50ZXJwcmV0X2Nhc3Q8V2ViTmF2aWdh
dGlvbkRhdGEqPigmX2RhdGEpLT51cmwoKV07Cit9CisKKyNwcmFnbWEgbWFyayBXS09iamVjdCBw
cm90b2NvbCBpbXBsZW1lbnRhdGlvbgorCistIChBUElPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAg
ICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QVBJT2JqZWN0Kj4oJl9kYXRhKTsKK30KKworQGVu
ZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9XS05hdmlnYXRpb25EYXRhSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tOYXZpZ2F0aW9uRGF0YUludGVybmFsLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tOYXZpZ2F0aW9u
RGF0YUludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgIldLTmF2aWdhdGlvbkRhdGEuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisK
KyNpbXBvcnQgIldLT2JqZWN0LmgiCisjaW1wb3J0ICJXZWJOYXZpZ2F0aW9uRGF0YS5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKK2lubGluZSBXS05hdmlnYXRpb25EYXRhICp3cmFwcGVyKFdlYk5h
dmlnYXRpb25EYXRhJiBkYXRhKSB7IEFTU0VSVChbZGF0YS53cmFwcGVyKCkgaXNLaW5kT2ZDbGFz
czpbV0tOYXZpZ2F0aW9uRGF0YSBjbGFzc11dKTsgcmV0dXJuIChXS05hdmlnYXRpb25EYXRhICop
ZGF0YS53cmFwcGVyKCk7IH0KK30KKworQGludGVyZmFjZSBXS05hdmlnYXRpb25EYXRhICgpIDxX
S09iamVjdD4KK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAxNTg2OTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQwMiw2ICs0MDIsOSBAQAogCQkzM0QzQTNDQTEzMzk2
MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0QzQTND
NjEzMzk2MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgKi87IH07CiAJCTMzRDNBM0NCMTMzOTYxNzkwMDcwOUJFNCAvKiBXZWJNZWRpYUNh
Y2hlTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMzRDNBM0M3MTMzOTYxNzkwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hl
TWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLzsgfTsKIAkJMzNGOUQ1QjkxMzEyRjFFRTAwMEQ2ODNG
IC8qIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNGOUQ1QjgxMzEyRjFFRTAwMEQ2ODNGIC8qIFdl
YlJlc291cmNlQ2FjaGVNYW5hZ2VyQ0ZOZXQuY3BwICovOyB9OworCQkzNzBGMzRBMjE4MjlCRTFF
MDA5MDI3QzggLyogV0tOYXZpZ2F0aW9uRGF0YS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MEYzNEEwMTgyOUJFMUUwMDkwMjdDOCAvKiBXS05hdmln
YXRpb25EYXRhLm1tICovOyB9OworCQkzNzBGMzRBMzE4MjlCRTFFMDA5MDI3QzggLyogV0tOYXZp
Z2F0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzcwRjM0QTExODI5QkUxRTAwOTAyN0M4IC8qIFdLTmF2aWdhdGlvbkRhdGEuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzNzBGMzRBNTE4MjlC
RUEzMDA5MDI3QzggLyogV0tOYXZpZ2F0aW9uRGF0YUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzBGMzRBNDE4MjlCRUEzMDA5MDI3Qzgg
LyogV0tOYXZpZ2F0aW9uRGF0YUludGVybmFsLmggKi87IH07CiAJCTM3MUExOTQxMTgyNEQyOTMw
MEYzMkE1RSAvKiBXS05TRGljdGlvbmFyeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUExOTNGMTgyNEQyOTMwMEYzMkE1RSAvKiBXS05TRGljdGlv
bmFyeS5tbSAqLzsgfTsKIAkJMzcxQTE5NDIxODI0RDI5MzAwRjMyQTVFIC8qIFdLTlNEaWN0aW9u
YXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFB
MTk0MDE4MjREMjkzMDBGMzJBNUUgLyogV0tOU0RpY3Rpb25hcnkuaCAqLzsgfTsKIAkJMzc0NDM2
ODgxODIwRTcyNDAwNDk1NzlGIC8qIFdLT2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc0NDM2ODcxODIwRTcyNDAwNDk1NzlGIC8qIFdLT2Jq
ZWN0Lm1tICovOyB9OwpAQCAtMTEyOSw4ICsxMTMyLDggQEAKIAkJQkNGNjlGOUExMTc2Q0VENjAw
NDcxQTUyIC8qIFdlYk5hdmlnYXRpb25EYXRhU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRjY5Rjk4MTE3NkNFRDYwMDQ3MUE1MiAvKiBXZWJO
YXZpZ2F0aW9uRGF0YVN0b3JlLmggKi87IH07CiAJCUJDRjY5RkEyMTE3NkQwMTQwMDQ3MUE1MiAv
KiBXZWJOYXZpZ2F0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkNGNjlGQTAxMTc2RDAxNDAwNDcxQTUyIC8qIFdlYk5hdmlnYXRpb25EYXRh
LmggKi87IH07CiAJCUJDRjY5RkEzMTE3NkQwMTQwMDQ3MUE1MiAvKiBXZWJOYXZpZ2F0aW9uRGF0
YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y2
OUZBMTExNzZEMDE0MDA0NzFBNTIgLyogV2ViTmF2aWdhdGlvbkRhdGEuY3BwICovOyB9OwotCQlC
Q0Y2OUZBOTExNzZEMUNCMDA0NzFBNTIgLyogV0tOYXZpZ2F0aW9uRGF0YS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNGNjlGQTcxMTc2RDFDQjAwNDcx
QTUyIC8qIFdLTmF2aWdhdGlvbkRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQlCQ0Y2OUZBQTExNzZEMUNCMDA0NzFBNTIgLyogV0tOYXZpZ2F0
aW9uRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0Y2OUZBODExNzZEMUNCMDA0NzFBNTIgLyogV0tOYXZpZ2F0aW9uRGF0YS5jcHAgKi87IH07
CisJCUJDRjY5RkE5MTE3NkQxQ0IwMDQ3MUE1MiAvKiBXS05hdmlnYXRpb25EYXRhUmVmLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y2OUZBNzExNzZE
MUNCMDA0NzFBNTIgLyogV0tOYXZpZ2F0aW9uRGF0YVJlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDRjY5RkFBMTE3NkQxQ0IwMDQ3MUE1MiAv
KiBXS05hdmlnYXRpb25EYXRhUmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDRjY5RkE4MTE3NkQxQ0IwMDQ3MUE1MiAvKiBXS05hdmlnYXRpb25E
YXRhUmVmLmNwcCAqLzsgfTsKIAkJQkNGRDU0OEIxMzJEODI2ODAwNTVEODE2IC8qIFdLRXJyb3JD
Ri5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0ZE
NTQ4OTEzMkQ4MjY4MDA1NUQ4MTYgLyogV0tFcnJvckNGLmNwcCAqLzsgfTsKIAkJQkNGRDU0OEMx
MzJEODI2ODAwNTVEODE2IC8qIFdLRXJyb3JDRi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNGRDU0OEExMzJEODI2ODAwNTVEODE2IC8qIFdLRXJyb3JD
Ri5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJG
QTYxNzlGMTJGMEI5OUQwMDMzRTBDQSAvKiBXS1ZpZXdQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRkE2MTc5RTEyRjBCOTlEMDAzM0UwQ0Eg
LyogV0tWaWV3UHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0xOTAxLDYgKzE5MDQsOSBAQAogCQkzM0QzQTNDNzEzMzk2MTc5MDA3MDlC
RTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzM0Y5RDVCODEzMTJGMUVFMDAwRDY4M0YgLyog
V2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgZmlsZUVuY29k
aW5nID0gNDsgbmFtZSA9IFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyQ0ZOZXQuY3BwOyBwYXRoID0g
UmVzb3VyY2VDYWNoZS9jZi9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlckNGTmV0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzU3NEIzN0YxNjY1OTMyQzAwODU5QkI3IC8qIFBERkFu
bm90YXRpb25UZXh0V2lkZ2V0RGV0YWlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQREZBbm5vdGF0aW9u
VGV4dFdpZGdldERldGFpbHMuaDsgcGF0aCA9IFBERi9QREZBbm5vdGF0aW9uVGV4dFdpZGdldERl
dGFpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzcwRjM0QTAxODI5QkUxRTAw
OTAyN0M4IC8qIFdLTmF2aWdhdGlvbkRhdGEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXS05hdmlnYXRpb25EYXRhLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzNzBGMzRBMTE4MjlCRTFFMDA5MDI3QzggLyogV0tOYXZpZ2F0aW9uRGF0YS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS05hdmlnYXRpb25EYXRhLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM3MEYzNEE0MTgyOUJFQTMwMDkwMjdDOCAvKiBXS05h
dmlnYXRpb25EYXRhSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tOYXZpZ2F0aW9uRGF0YUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTM3MUExOTNGMTgyNEQyOTMwMEYzMkE1RSAvKiBXS05TRGljdGlvbmFyeS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLTlNEaWN0aW9uYXJ5Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzNzFBMTk0MDE4MjREMjkzMDBGMzJBNUUgLyogV0tOU0Rp
Y3Rpb25hcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tOU0RpY3Rpb25h
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc0NDM2ODcxODIwRTcyNDAwNDk1
NzlGIC8qIFdLT2JqZWN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV0tPYmplY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjg1LDggKzI2
OTEsOCBAQAogCQlCQ0Y2OUY5ODExNzZDRUQ2MDA0NzFBNTIgLyogV2ViTmF2aWdhdGlvbkRhdGFT
dG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOYXZpZ2F0aW9uRGF0
YVN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRjY5RkEwMTE3NkQwMTQw
MDQ3MUE1MiAvKiBXZWJOYXZpZ2F0aW9uRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJOYXZpZ2F0aW9uRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQ0Y2OUZBMTExNzZEMDE0MDA0NzFBNTIgLyogV2ViTmF2aWdhdGlvbkRhdGEuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTmF2aWdhdGlvbkRhdGEuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQ0Y2OUZBNzExNzZEMUNCMDA0NzFBNTIgLyog
V0tOYXZpZ2F0aW9uRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS05h
dmlnYXRpb25EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDRjY5RkE4MTE3
NkQxQ0IwMDQ3MUE1MiAvKiBXS05hdmlnYXRpb25EYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdLTmF2aWdhdGlvbkRhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCQ0Y2OUZBNzExNzZEMUNCMDA0NzFBNTIgLyogV0tOYXZpZ2F0aW9uRGF0
YVJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS05hdmlnYXRpb25EYXRh
UmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDRjY5RkE4MTE3NkQxQ0IwMDQ3
MUE1MiAvKiBXS05hdmlnYXRpb25EYXRhUmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdLTmF2aWdhdGlvbkRhdGFSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQ0ZDQTg5NTE2REU5NkNCMDAwNzQwNjkgLyogUGx1Z2luU2VydmljZS4zMi02
NC5JbmZvLnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5wbGlzdC54bWw7IG5hbWUgPSAiUGx1Z2luU2VydmljZS4zMi02NC5JbmZvLnBs
aXN0IjsgcGF0aCA9ICJQbHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQvbWFjL1hQQ1NlcnZpY2UvUGx1
Z2luU2VydmljZS4zMi02NC5JbmZvLnBsaXN0Ijsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OwogCQlCQ0ZENTQ4OTEzMkQ4MjY4MDA1NUQ4MTYgLyogV0tFcnJvckNGLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLRXJyb3JDRi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDRkQ1NDhBMTMyRDgyNjgwMDU1RDgxNiAvKiBXS0Vycm9yQ0YuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tFcnJvckNGLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0zNjg4LDYgKzM2OTQsOSBAQAogCQkJCTM3QzRDMDg1MTgxNDlD
NUIwMDM2ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaCAqLywKIAkJCQkzN0M0QzA4NDE4
MTQ5QzVCMDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVtLm1tICovLAogCQkJCTM3QzRD
MDg4MTgxNDlGMjMwMDM2ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1JbnRlcm5hbC5oICov
LAorCQkJCTM3MEYzNEExMTgyOUJFMUUwMDkwMjdDOCAvKiBXS05hdmlnYXRpb25EYXRhLmggKi8s
CisJCQkJMzcwRjM0QTAxODI5QkUxRTAwOTAyN0M4IC8qIFdLTmF2aWdhdGlvbkRhdGEubW0gKi8s
CisJCQkJMzcwRjM0QTQxODI5QkVBMzAwOTAyN0M4IC8qIFdLTmF2aWdhdGlvbkRhdGFJbnRlcm5h
bC5oICovLAogCQkJKTsKIAkJCW5hbWUgPSBDb2NvYTsKIAkJCXBhdGggPSBVSVByb2Nlc3MvQ29j
b2E7CkBAIC00NDY0LDggKzQ0NzMsOCBAQAogCQkJCTMzRDNBM0IzMTMzOTYwMEIwMDcwOUJFNCAv
KiBXS01lZGlhQ2FjaGVNYW5hZ2VyLmNwcCAqLywKIAkJCQkzM0QzQTNCNDEzMzk2MDBCMDA3MDlC
RTQgLyogV0tNZWRpYUNhY2hlTWFuYWdlci5oICovLAogCQkJCUMwOUFFNUU4MTI1MjU3QzIwMDI1
ODI1RCAvKiBXS05hdGl2ZUV2ZW50LmggKi8sCi0JCQkJQkNGNjlGQTgxMTc2RDFDQjAwNDcxQTUy
IC8qIFdLTmF2aWdhdGlvbkRhdGEuY3BwICovLAotCQkJCUJDRjY5RkE3MTE3NkQxQ0IwMDQ3MUE1
MiAvKiBXS05hdmlnYXRpb25EYXRhLmggKi8sCisJCQkJQkNGNjlGQTgxMTc2RDFDQjAwNDcxQTUy
IC8qIFdLTmF2aWdhdGlvbkRhdGFSZWYuY3BwICovLAorCQkJCUJDRjY5RkE3MTE3NkQxQ0IwMDQ3
MUE1MiAvKiBXS05hdmlnYXRpb25EYXRhUmVmLmggKi8sCiAJCQkJMzE4QkUxNzYxNDc0M0U2MDAw
QThGQkIyIC8qIFdLTm90aWZpY2F0aW9uLmNwcCAqLywKIAkJCQkzMThCRTE3ODE0NzQzRTZBMDBB
OEZCQjIgLyogV0tOb3RpZmljYXRpb24uaCAqLywKIAkJCQkzMThCRTE3NDE0NzQzREQ2MDBBOEZC
QjIgLyogV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCAqLywKQEAgLTU5MTIsNiArNTkyMSw3IEBA
CiAJCQkJMUE5RTMyOEQxODIxNjVBOTAwRjVEMDRDIC8qIFdLUmVtb3RlT2JqZWN0SW50ZXJmYWNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTNFQkVBQjE2MjdEOUM5MDA1Rjg5RjEgLyogV0tET01U
ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAxN0QyMTE2MjYzMzA4MDA3MDU0RjUgLyogV0tE
T01UZXh0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTM3MEYzNEEzMTgyOUJFMUUwMDkw
MjdDOCAvKiBXS05hdmlnYXRpb25EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI3RDc4RDEy
ODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc1
RkMxMjRGRjAyNzAwNjhGMjBBIC8qIFdLRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkQ1
NDhDMTMyRDgyNjgwMDU1RDgxNiAvKiBXS0Vycm9yQ0YuaCBpbiBIZWFkZXJzICovLApAQCAtNTk0
Miw3ICs1OTUyLDcgQEAKIAkJCQlCQzQwNzVGRTEyNEZGMDI3MDA2OEYyMEEgLyogV0tNdXRhYmxl
QXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjAwMTI0RkYwMjcwMDY4RjIwQSAvKiBX
S011dGFibGVEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMDlBRTVFOTEyNTI1N0My
MDAyNTgyNUQgLyogV0tOYXRpdmVFdmVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkNGNjlGQTkx
MTc2RDFDQjAwNDcxQTUyIC8qIFdLTmF2aWdhdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUJDRjY5RkE5MTE3NkQxQ0IwMDQ3MUE1MiAvKiBXS05hdmlnYXRpb25EYXRhUmVmLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzMThCRTE3OTE0NzQzRTZGMDBBOEZCQjIgLyogV0tOb3RpZmljYXRpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTMxOEJFMTcxMTQ3NDNEQjEwMEE4RkJCMiAvKiBXS05vdGlm
aWNhdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQTJFQzc0MTQ4RDU5Q0EwMDgx
MEQ3MSAvKiBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLywK
QEAgLTU5NjEsNiArNTk3MSw3IEBACiAJCQkJQkMxNzc0NjUxMThCOUZGNDAwN0Q5RTlBIC8qIFdL
UGFnZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTE3QjdFMTM4MUYxMTcwMDEyQTY0
MSAvKiBXS1BhZ2VQcml2YXRlTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVGRDM4QzE2QjBF
ODhDMDBCMkYwRTggLyogV0tQYWdlVmlzaWJpbGl0eVR5cGVzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkzNzBGMzRBNTE4MjlCRUEzMDA5MDI3QzggLyogV0tOYXZpZ2F0aW9uRGF0YUludGVybmFsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MUZDQjE4NzE3QkJGRTAzMDAzOTRDRDggLyogTmV0d29ya0xv
YWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUy
IC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzg2RkY0MTMw
QjQ2RDMwMDJDMTI1NyAvKiBXS1BsdWdpblNpdGVEYXRhTWFuYWdlci5oIGluIEhlYWRlcnMgKi8s
CkBAIC02ODQzLDYgKzY4NTQsNyBAQAogCQkJCTFBNjUwNkQyMTc1MDE1RTcwMDE3NDUxOCAvKiBN
ZXNzYWdlU2VuZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMwRTNBQTdCMTIwOUU4MzUwMEE0
OUQwMSAvKiBNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzBFM0FBN0ExMjA5RTgzMDAw
QTQ5RDAxIC8qIE1vZHVsZU1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTM3MEYzNEEyMTgyOUJF
MUUwMDkwMjdDOCAvKiBXS05hdmlnYXRpb25EYXRhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNC
MEFEMzMxMjJGMjg1ODAwQjEzNDFFIC8qIE11dGFibGVBcnJheS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQ0IwQUVFQTEyMkY1M0UzMDBCMTM0MUUgLyogTXV0YWJsZURpY3Rpb25hcnkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQzAyQkZGMUUxMjUxNTAyRTAwOUNDQkVBIC8qIE5hdGl2ZVdlYktl
eWJvYXJkRXZlbnRNYWMubW0gaW4gU291cmNlcyAqLywKQEAgLTcyNTEsNyArNzI2Myw3IEBACiAJ
CQkJMzNEM0EzQjUxMzM5NjAwQjAwNzA5QkU0IC8qIFdLTWVkaWFDYWNoZU1hbmFnZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkM0MDc1RkQxMjRGRjAyNzAwNjhGMjBBIC8qIFdLTXV0YWJsZUFy
cmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NUZGMTI0RkYwMjcwMDY4RjIwQSAvKiBX
S011dGFibGVEaWN0aW9uYXJ5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDRjY5RkFBMTE3NkQx
Q0IwMDQ3MUE1MiAvKiBXS05hdmlnYXRpb25EYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJD
RjY5RkFBMTE3NkQxQ0IwMDQ3MUE1MiAvKiBXS05hdmlnYXRpb25EYXRhUmVmLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTMxOEJFMTc3MTQ3NDNFNjAwMEE4RkJCMiAvKiBXS05vdGlmaWNhdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkzMThCRTE3NTE0NzQzREQ3MDBBOEZCQjIgLyogV0tOb3Rp
ZmljYXRpb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQTJFQzc3MTQ4RDY2MkUw
MDgxMEQ3MSAvKiBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcCBpbiBTb3VyY2Vz
ICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216102</attachid>
            <date>2013-11-05 17:28:43 -0800</date>
            <delta_ts>2013-11-05 17:43:44 -0800</delta_ts>
            <desc>Add WKBrowsingContextHistoryDelegate and WKNavigationData</desc>
            <filename>bug-123837-20131105172843.patch</filename>
            <type>text/plain</type>
            <size>42913</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1ODcwMSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDEzLTExLTA1ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBIaXN0b3J5IGRlbGVn
YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjM4
MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNo
YXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChXZWJLaXQ6OkFQSU9iamVjdDo6bmV3
T2JqZWN0KTogQWxsb2NhdGUgYSBXS05hdmlnYXRpb25EYXRhIGlmIHRoZSBvYmplY3QgaXMgYQor
ICAgICAgICBXZWJOYXZpZ2F0aW9uRGF0YS4KKworICAgICAgICAqIFNoYXJlZC9Db2NvYS9XS05T
U3RyaW5nLmg6CisgICAgICAgIChXZWJLaXQ6OndyYXBwZXIpOiBBZGRlZC4gUmV0dXJucyBhIFdl
YlN0cmluZ+KAmXMgd3JhcHBlciBhcyBhbiBOU1N0cmluZy4KKworICAgICAgICAqIFNoYXJlZC9D
b2NvYS9XS05TVVJMLmg6CisgICAgICAgIChXZWJLaXQ6OndyYXBwZXIpOiBBZGRlZC4gUmV0dXJu
cyBhIFdlYlVSTOKAmXMgd3JhcHBlciBhcyBhbiBOU1VSTC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS05hdmlnYXRpb25EYXRhLmNwcDogUmVuYW1lZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YS5oOiBSZW5hbWVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS05hdmlnYXRpb25EYXRhUmVmLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkRhdGEuY3BwLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS05hdmlnYXRpb25EYXRhUmVmLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25EYXRhLmguCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIuaDogRGVjbGFyZWQgaGlz
dG9yeURlbGVnYXRlIHByb3BlcnR5LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tQ
cm9jZXNzR3JvdXAubW06CisgICAgICAgIChkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSk6
IEFkZGVkIGhpc3RvcnkgY2xpZW50IGNhbGxiYWNrIHRoYXQgY2FsbHMgdGhlIGJyb3dzaW5nCisg
ICAgICAgIGNvbnRleHTigJlzIGhpc3RvcnkgZGVsZWdhdGUuCisgICAgICAgIChkaWRQZXJmb3Jt
Q2xpZW50UmVkaXJlY3QpOiBEaXR0by4KKyAgICAgICAgKGRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVj
dCk6IERpdHRvLgorICAgICAgICAoZGlkVXBkYXRlSGlzdG9yeVRpdGxlKTogRGl0dG8uCisgICAg
ICAgIChzZXRVcEhpc3RvcnlDbGllbnQpOiBBZGRlZC4KKyAgICAgICAgKC1bV0tQcm9jZXNzR3Jv
dXAgaW5pdFdpdGhJbmplY3RlZEJ1bmRsZVVSTDpdKTogQWRkZWQgY2FsbCB0byBzZXRVcEhpc3Rv
cnlDbGllbnQuCisgICAgICAgICgtW1dLUHJvY2Vzc0dyb3VwIGRlYWxsb2NdKTogQ2xlYXIgdGhl
IGhpc3RvcnkgY2xpZW50LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLQnJvd3NpbmdD
b250ZXh0SGlzdG9yeURlbGVnYXRlLmg6IEFkZGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dLTmF2aWdhdGlvbkRhdGEuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1dLTmF2aWdhdGlvbkRhdGEubW06IEFkZGVkLgorICAgICAgICAoLVtXS05hdmlnYXRpb25EYXRh
IGRlYWxsb2NdKTogQ2FsbHMgdGhlIFdlYk5hdmlnYXRpb25EYXRhIGRlc3RydWN0b3IuCisgICAg
ICAgICgtW1dLTmF2aWdhdGlvbkRhdGEgdGl0bGVdKTogQWRkZWQuCisgICAgICAgICgtW1dLTmF2
aWdhdGlvbkRhdGEgb3JpZ2luYWxSZXF1ZXN0XSk6IEFkZGVkLgorICAgICAgICAoLVtXS05hdmln
YXRpb25EYXRhIGRlc3RpbmF0aW9uVVJMXSk6IEFkZGVkLgorICAgICAgICAoLVtXS05hdmlnYXRp
b25EYXRhIF9hcGlPYmplY3RdKTogUmV0dXJucyB0aGUgd3JhcHBlZCBXZWJOYXZpZ2F0aW9uRGF0
YS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tOYXZpZ2F0aW9uRGF0YUludGVybmFsLmg6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0Ojp3cmFwcGVyKTogQWRkZWQuIFJldHVybnMgYSBXZWJO
YXZpZ2F0aW9uRGF0YeKAmXMgd3JhcHBlciBhcyBhIFdLTmF2aWdhdGlvbkRhdGEuCisgICAgICAg
ICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBVcGRhdGVkIGZvciByZW5hbWVz
IGFuZCBhZGRpdGlvbnMuCisKIDIwMTMtMTEtMDUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KIAogICAgICAgICBCZWdpbiB3b3JrIG9uIGRlY29kaW5nIGludm9jYXRpb25z
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0JKHJldmlzaW9u
IDE1ODcwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0JKHdv
cmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgIldLTlNEaWN0aW9uYXJ5Lmgi
CiAjaW1wb3J0ICJXS05TU3RyaW5nLmgiCiAjaW1wb3J0ICJXS05TVVJMLmgiCisjaW1wb3J0ICJX
S05hdmlnYXRpb25EYXRhSW50ZXJuYWwuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTcy
LDYgKzczLDEwIEBAIHZvaWQqIEFQSU9iamVjdDo6bmV3T2JqZWN0KHNpemVfdCBzaXplLCAKICAg
ICAgICAgd3JhcHBlciA9IFtXS05TRGljdGlvbmFyeSBhbGxvY107CiAgICAgICAgIGJyZWFrOwog
CisgICAgY2FzZSBUeXBlTmF2aWdhdGlvbkRhdGE6CisgICAgICAgIHdyYXBwZXIgPSBbV0tOYXZp
Z2F0aW9uRGF0YSBhbGxvY107CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBUeXBlU3RyaW5n
OgogICAgICAgICB3cmFwcGVyID0gTlNBbGxvY2F0ZU9iamVjdChbV0tOU1N0cmluZyBjbGFzc10s
IHNpemUsIG51bGxwdHIpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db2NvYS9XS05TU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hh
cmVkL0NvY29hL1dLTlNTdHJpbmcuaAkocmV2aXNpb24gMTU4NzAxKQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL0NvY29hL1dLTlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgs
MTEgQEAKICNpZiBXS19BUElfRU5BQkxFRAogCiAjaW1wb3J0ICJXS09iamVjdC5oIgorI2ltcG9y
dCAiV2ViU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworaW5saW5lIE5TU3RyaW5nICp3
cmFwcGVyKFdlYlN0cmluZyYgc3RyaW5nKSB7IEFTU0VSVChbc3RyaW5nLndyYXBwZXIoKSBpc0tp
bmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsgcmV0dXJuIChOU1N0cmluZyAqKXN0cmluZy53
cmFwcGVyKCk7IH0KK30KIAogQGludGVyZmFjZSBXS05TU3RyaW5nIDogV0tPYmplY3QgPE5TQ29w
eWluZz4KIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9XS05TVVJMLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL1dLTlNVUkwuaAkocmV2
aXNpb24gMTU4NzAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL1dLTlNVUkwuaAko
d29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsMTEgQEAKICNpZiBXS19BUElfRU5BQkxFRAogCiAj
aW1wb3J0ICJXS09iamVjdC5oIgorI2ltcG9ydCAiV2ViVVJMLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworaW5saW5lIE5TVVJMICp3cmFwcGVyKFdlYlVSTCYgdXJsKSB7IEFTU0VSVChbdXJsLndy
YXBwZXIoKSBpc0tpbmRPZkNsYXNzOltOU1VSTCBjbGFzc11dKTsgcmV0dXJuIChOU1VSTCAqKXVy
bC53cmFwcGVyKCk7IH0KK30KIAogQGludGVyZmFjZSBXS05TVVJMIDogV0tPYmplY3QgPE5TQ29w
eWluZz4KIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05hdmln
YXRpb25EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tOYXZpZ2F0aW9uRGF0YS5jcHAJKHJldmlzaW9uIDE1ODcwMSkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25EYXRhLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIldLTmF2aWdhdGlvbkRhdGEuaCIKLQotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1
ZGUgIldlYk5hdmlnYXRpb25EYXRhLmgiCi0jaW5jbHVkZSAiV2ViVVJMUmVxdWVzdC5oIgotCi11
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1XS1R5cGVJRCBXS05hdmlnYXRpb25EYXRhR2V0VHlw
ZUlEKCkKLXsKLSAgICByZXR1cm4gdG9BUEkoV2ViTmF2aWdhdGlvbkRhdGE6OkFQSVR5cGUpOwot
fQotCi1XS1N0cmluZ1JlZiBXS05hdmlnYXRpb25EYXRhQ29weVRpdGxlKFdLTmF2aWdhdGlvbkRh
dGFSZWYgbmF2aWdhdGlvbkRhdGFSZWYpCi17Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1w
bChuYXZpZ2F0aW9uRGF0YVJlZiktPnRpdGxlKCkpOwotfQotCi1XS1VSTFJlZiBXS05hdmlnYXRp
b25EYXRhQ29weVVSTChXS05hdmlnYXRpb25EYXRhUmVmIG5hdmlnYXRpb25EYXRhUmVmKQotewot
ICAgIC8vIFRoaXMgcmV0dXJucyB0aGUgVVJMIG9mIHRoZSBvcmlnaW5hbCByZXF1ZXN0IGZvciBi
YWNrd2FyZHMtY29tcGF0aWJpbGl0eSBwdXJwb3Nlcy4KLSAgICByZXR1cm4gdG9Db3BpZWRVUkxB
UEkodG9JbXBsKG5hdmlnYXRpb25EYXRhUmVmKS0+b3JpZ2luYWxSZXF1ZXN0KCkudXJsKCkpOwot
fQotCi1XS1VSTFJlZiBXS05hdmlnYXRpb25EYXRhQ29weU5hdmlnYXRpb25EZXN0aW5hdGlvblVS
TChXS05hdmlnYXRpb25EYXRhUmVmIG5hdmlnYXRpb25EYXRhUmVmKQotewotICAgIHJldHVybiB0
b0NvcGllZFVSTEFQSSh0b0ltcGwobmF2aWdhdGlvbkRhdGFSZWYpLT51cmwoKSk7Ci19Ci0KLVdL
VVJMUmVxdWVzdFJlZiBXS05hdmlnYXRpb25EYXRhQ29weU9yaWdpbmFsUmVxdWVzdChXS05hdmln
YXRpb25EYXRhUmVmIG5hdmlnYXRpb25EYXRhKQotewotICAgIHJldHVybiB0b0FQSShXZWJVUkxS
ZXF1ZXN0OjpjcmVhdGUodG9JbXBsKG5hdmlnYXRpb25EYXRhKS0+b3JpZ2luYWxSZXF1ZXN0KCkp
LmxlYWtSZWYoKSk7Ci19CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tO
YXZpZ2F0aW9uRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS05hdmlnYXRpb25EYXRhLmgJKHJldmlzaW9uIDE1ODcwMSkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25EYXRhLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV0tOYXZpZ2F0aW9uRGF0YV9oCi0j
ZGVmaW5lIFdLTmF2aWdhdGlvbkRhdGFfaAotCi0jaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4K
LQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi1XS19FWFBPUlQg
V0tUeXBlSUQgV0tOYXZpZ2F0aW9uRGF0YUdldFR5cGVJRCgpOwotCi1XS19FWFBPUlQgV0tTdHJp
bmdSZWYgV0tOYXZpZ2F0aW9uRGF0YUNvcHlUaXRsZShXS05hdmlnYXRpb25EYXRhUmVmIG5hdmln
YXRpb25EYXRhKTsKLVdLX0VYUE9SVCBXS1VSTFJlcXVlc3RSZWYgV0tOYXZpZ2F0aW9uRGF0YUNv
cHlPcmlnaW5hbFJlcXVlc3QoV0tOYXZpZ2F0aW9uRGF0YVJlZiBuYXZpZ2F0aW9uRGF0YSk7Ci1X
S19FWFBPUlQgV0tVUkxSZWYgV0tOYXZpZ2F0aW9uRGF0YUNvcHlOYXZpZ2F0aW9uRGVzdGluYXRp
b25VUkwoV0tOYXZpZ2F0aW9uRGF0YVJlZiBuYXZpZ2F0aW9uRGF0YVJlZik7Ci0KLS8vIFRoaXMg
cmV0dXJucyB0aGUgVVJMIG9mIHRoZSBvcmlnaW5hbCByZXF1ZXN0IGZvciBiYWNrd2FyZHMtY29t
cGF0aWJpbGl0eSBwdXJwb3Nlcy4KLVdLX0VYUE9SVCBXS1VSTFJlZiBXS05hdmlnYXRpb25EYXRh
Q29weVVSTChXS05hdmlnYXRpb25EYXRhUmVmIG5hdmlnYXRpb25EYXRhKTsKLQotI2lmZGVmIF9f
Y3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmIC8qIFdLTmF2aWdhdGlvbkRhdGFfaCAqLwpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkRhdGFSZWYu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05hdmln
YXRpb25EYXRhUmVmLmNwcAkocmV2aXNpb24gMTU4NzAxKQkoZnJvbSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YS5jcHA6MTU4NzAxKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkRhdGFSZWYuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV0tOYXZpZ2F0aW9uRGF0YS5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisj
aW5jbHVkZSAiV2ViTmF2aWdhdGlvbkRhdGEuaCIKKyNpbmNsdWRlICJXZWJVUkxSZXF1ZXN0Lmgi
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLTmF2aWdhdGlvbkRhdGFH
ZXRUeXBlSUQoKQoreworICAgIHJldHVybiB0b0FQSShXZWJOYXZpZ2F0aW9uRGF0YTo6QVBJVHlw
ZSk7Cit9CisKK1dLU3RyaW5nUmVmIFdLTmF2aWdhdGlvbkRhdGFDb3B5VGl0bGUoV0tOYXZpZ2F0
aW9uRGF0YVJlZiBuYXZpZ2F0aW9uRGF0YVJlZikKK3sKKyAgICByZXR1cm4gdG9Db3BpZWRBUEko
dG9JbXBsKG5hdmlnYXRpb25EYXRhUmVmKS0+dGl0bGUoKSk7Cit9CisKK1dLVVJMUmVmIFdLTmF2
aWdhdGlvbkRhdGFDb3B5VVJMKFdLTmF2aWdhdGlvbkRhdGFSZWYgbmF2aWdhdGlvbkRhdGFSZWYp
Cit7CisgICAgLy8gVGhpcyByZXR1cm5zIHRoZSBVUkwgb2YgdGhlIG9yaWdpbmFsIHJlcXVlc3Qg
Zm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IHB1cnBvc2VzLgorICAgIHJldHVybiB0b0NvcGll
ZFVSTEFQSSh0b0ltcGwobmF2aWdhdGlvbkRhdGFSZWYpLT5vcmlnaW5hbFJlcXVlc3QoKS51cmwo
KSk7Cit9CisKK1dLVVJMUmVmIFdLTmF2aWdhdGlvbkRhdGFDb3B5TmF2aWdhdGlvbkRlc3RpbmF0
aW9uVVJMKFdLTmF2aWdhdGlvbkRhdGFSZWYgbmF2aWdhdGlvbkRhdGFSZWYpCit7CisgICAgcmV0
dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChuYXZpZ2F0aW9uRGF0YVJlZiktPnVybCgpKTsKK30K
KworV0tVUkxSZXF1ZXN0UmVmIFdLTmF2aWdhdGlvbkRhdGFDb3B5T3JpZ2luYWxSZXF1ZXN0KFdL
TmF2aWdhdGlvbkRhdGFSZWYgbmF2aWdhdGlvbkRhdGEpCit7CisgICAgcmV0dXJuIHRvQVBJKFdl
YlVSTFJlcXVlc3Q6OmNyZWF0ZSh0b0ltcGwobmF2aWdhdGlvbkRhdGEpLT5vcmlnaW5hbFJlcXVl
c3QoKSkubGVha1JlZigpKTsKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS05hdmlnYXRpb25EYXRhUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YVJlZi5jcHAJKHdvcmtpbmcgY29weSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25EYXRhUmVmLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJXS05hdmlnYXRpb25EYXRhLmgiCisjaW5jbHVkZSAiV0tOYXZpZ2F0aW9u
RGF0YVJlZi5oIgogCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViTmF2aWdh
dGlvbkRhdGEuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05hdmln
YXRpb25EYXRhUmVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLTmF2aWdhdGlvbkRhdGFSZWYuaAkocmV2aXNpb24gMTU4NzAxKQkoZnJvbSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YS5oOjE1ODcwMSkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25EYXRhUmVmLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tOYXZpZ2F0
aW9uRGF0YV9oCisjZGVmaW5lIFdLTmF2aWdhdGlvbkRhdGFfaAorCisjaW5jbHVkZSA8V2ViS2l0
Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgor
CitXS19FWFBPUlQgV0tUeXBlSUQgV0tOYXZpZ2F0aW9uRGF0YUdldFR5cGVJRCgpOworCitXS19F
WFBPUlQgV0tTdHJpbmdSZWYgV0tOYXZpZ2F0aW9uRGF0YUNvcHlUaXRsZShXS05hdmlnYXRpb25E
YXRhUmVmIG5hdmlnYXRpb25EYXRhKTsKK1dLX0VYUE9SVCBXS1VSTFJlcXVlc3RSZWYgV0tOYXZp
Z2F0aW9uRGF0YUNvcHlPcmlnaW5hbFJlcXVlc3QoV0tOYXZpZ2F0aW9uRGF0YVJlZiBuYXZpZ2F0
aW9uRGF0YSk7CitXS19FWFBPUlQgV0tVUkxSZWYgV0tOYXZpZ2F0aW9uRGF0YUNvcHlOYXZpZ2F0
aW9uRGVzdGluYXRpb25VUkwoV0tOYXZpZ2F0aW9uRGF0YVJlZiBuYXZpZ2F0aW9uRGF0YVJlZik7
CisKKy8vIFRoaXMgcmV0dXJucyB0aGUgVVJMIG9mIHRoZSBvcmlnaW5hbCByZXF1ZXN0IGZvciBi
YWNrd2FyZHMtY29tcGF0aWJpbGl0eSBwdXJwb3Nlcy4KK1dLX0VYUE9SVCBXS1VSTFJlZiBXS05h
dmlnYXRpb25EYXRhQ29weVVSTChXS05hdmlnYXRpb25EYXRhUmVmIG5hdmlnYXRpb25EYXRhKTsK
KworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdLTmF2aWdhdGlv
bkRhdGFfaCAqLwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdh
dGlvbkRhdGFSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tOYXZpZ2F0aW9uRGF0YVJlZi5oCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YVJlZi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMyw4ICsyMyw4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmbmRlZiBXS05hdmlnYXRpb25EYXRhX2gKLSNkZWZpbmUgV0tOYXZpZ2F0aW9uRGF0YV9o
CisjaWZuZGVmIFdLTmF2aWdhdGlvbkRhdGFSZWZfaAorI2RlZmluZSBXS05hdmlnYXRpb25EYXRh
UmVmX2gKIAogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CiAKQEAgLTQ1LDQgKzQ1LDQgQEAg
V0tfRVhQT1JUIFdLVVJMUmVmIFdLTmF2aWdhdGlvbkRhdGFDb3B5VQogfQogI2VuZGlmCiAKLSNl
bmRpZiAvKiBXS05hdmlnYXRpb25EYXRhX2ggKi8KKyNlbmRpZiAvKiBXS05hdmlnYXRpb25EYXRh
UmVmX2ggKi8KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5oCShyZXZpc2lvbiAxNTg3
MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogQGNsYXNzIFdL
QnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckRhdGE7CiBAY2xhc3MgV0tCYWNrRm9yd2FyZExpc3Q7
CiBAY2xhc3MgV0tCYWNrRm9yd2FyZExpc3RJdGVtOworQHByb3RvY29sIFdLQnJvd3NpbmdDb250
ZXh0SGlzdG9yeURlbGVnYXRlOwogQHByb3RvY29sIFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVn
YXRlOwogCiBXS19FWFBPUlQKQEAgLTQyLDYgKzQzLDkgQEAgQGludGVyZmFjZSBXS0Jyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIgOgogCiBAcHJvcGVydHkoYXNzaWduKSBpZDxXS0Jyb3dzaW5nQ29u
dGV4dExvYWREZWxlZ2F0ZT4gbG9hZERlbGVnYXRlOwogCisjaWYgV0tfQVBJX0VOQUJMRUQKK0Bw
cm9wZXJ0eSAoYXNzaWduKSBpZCA8V0tCcm93c2luZ0NvbnRleHRIaXN0b3J5RGVsZWdhdGU+IGhp
c3RvcnlEZWxlZ2F0ZTsKKyNlbmRpZgogCiAjcHJhZ21hIG1hcmsgTG9hZGluZwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1Byb2Nlc3NHcm91cC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1Byb2Nlc3NHcm91cC5t
bQkocmV2aXNpb24gMTU4NzAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMv
V0tQcm9jZXNzR3JvdXAubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDEyICsyOCwyMiBAQAogI2lt
cG9ydCAiV0tQcm9jZXNzR3JvdXBQcml2YXRlLmgiCiAKICNpbXBvcnQgIk9iakNPYmplY3RHcmFw
aC5oIgorI2ltcG9ydCAiV0tBUElDYXN0LmgiCisjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXJJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRIaXN0b3J5RGVs
ZWdhdGUuaCIKICNpbXBvcnQgIldLQ29ubmVjdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJXS0Nv
bnRleHQuaCIKKyNpbXBvcnQgIldLTlNTdHJpbmcuaCIKKyNpbXBvcnQgIldLTlNVUkwuaCIKKyNp
bXBvcnQgIldLTmF2aWdhdGlvbkRhdGFJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tSZXRhaW5QdHIu
aCIKICNpbXBvcnQgIldLU3RyaW5nQ0YuaCIKKyNpbXBvcnQgIldlYkZyYW1lUHJveHkuaCIKKyNp
bXBvcnQgIldlYk5hdmlnYXRpb25EYXRhLmgiCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAK
K3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKIEBpbnRlcmZhY2UgV0tQcm9jZXNzR3JvdXBEYXRh
IDogTlNPYmplY3QgewogQHB1YmxpYwogICAgIC8vIFVuZGVybHlpbmcgY29udGV4dCBvYmplY3Qu
CkBAIC05NCw2ICsxMDQsNjUgQEAgc3RhdGljIHZvaWQgc2V0VXBJbmVjdGVkQnVuZGxlQ2xpZW50
KFdLUAogICAgIFdLQ29udGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHRSZWYsICZp
bmplY3RlZEJ1bmRsZUNsaWVudCk7CiB9CiAKKyNpZiBXS19BUElfRU5BQkxFRAorCitzdGF0aWMg
dm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShXS0NvbnRleHRSZWYsIFdLUGFnZVJl
ZiBwYWdlUmVmLCBXS05hdmlnYXRpb25EYXRhUmVmIG5hdmlnYXRpb25EYXRhUmVmLCBXS0ZyYW1l
UmVmIGZyYW1lUmVmLCBjb25zdCB2b2lkKikKK3sKKyAgICBpZiAoIXRvSW1wbChmcmFtZVJlZikt
PmlzTWFpbkZyYW1lKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFdLQnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlciAqY29udHJvbGxlciA9IFtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgX2Jy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXJGb3JQYWdlUmVmOnBhZ2VSZWZdOworICAgIGlmIChbY29u
dHJvbGxlci5oaXN0b3J5RGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihicm93
c2luZ0NvbnRleHRDb250cm9sbGVyOmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhOildKQor
ICAgICAgICBbY29udHJvbGxlci5oaXN0b3J5RGVsZWdhdGUgYnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlcjpjb250cm9sbGVyIGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhOndyYXBwZXIoKnRv
SW1wbChuYXZpZ2F0aW9uRGF0YVJlZikpXTsKK30KKworc3RhdGljIHZvaWQgZGlkUGVyZm9ybUNs
aWVudFJlZGlyZWN0KFdLQ29udGV4dFJlZiwgV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVmIHNv
dXJjZVVSTFJlZiwgV0tVUkxSZWYgZGVzdGluYXRpb25VUkxSZWYsIFdLRnJhbWVSZWYgZnJhbWVS
ZWYsIGNvbnN0IHZvaWQqKQoreworICAgIGlmICghdG9JbXBsKGZyYW1lUmVmKS0+aXNNYWluRnJh
bWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
ICpjb250cm9sbGVyID0gW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBfYnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlckZvclBhZ2VSZWY6cGFnZVJlZl07CisgICAgaWYgKFtjb250cm9sbGVyLmhp
c3RvcnlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXI6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0RnJvbVVSTDp0b1VSTDopXSkKKyAg
ICAgICAgW2NvbnRyb2xsZXIuaGlzdG9yeURlbGVnYXRlIGJyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXI6Y29udHJvbGxlciBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RGcm9tVVJMOndyYXBwZXIoKnRv
SW1wbChzb3VyY2VVUkxSZWYpKSB0b1VSTDp3cmFwcGVyKCp0b0ltcGwoZGVzdGluYXRpb25VUkxS
ZWYpKV07Cit9CisKK3N0YXRpYyB2b2lkIGRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChXS0NvbnRl
eHRSZWYsIFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJlZiBzb3VyY2VVUkxSZWYsIFdLVVJMUmVm
IGRlc3RpbmF0aW9uVVJMUmVmLCBXS0ZyYW1lUmVmIGZyYW1lUmVmLCBjb25zdCB2b2lkKikKK3sK
KyAgICBpZiAoIXRvSW1wbChmcmFtZVJlZiktPmlzTWFpbkZyYW1lKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqY29udHJvbGxlciA9IFtXS0Jy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXIgX2Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJGb3JQYWdl
UmVmOnBhZ2VSZWZdOworICAgIGlmIChbY29udHJvbGxlci5oaXN0b3J5RGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihicm93c2luZ0NvbnRleHRDb250cm9sbGVyOmRpZFBlcmZv
cm1TZXJ2ZXJSZWRpcmVjdEZyb21VUkw6dG9VUkw6KV0pCisgICAgICAgIFtjb250cm9sbGVyLmhp
c3RvcnlEZWxlZ2F0ZSBicm93c2luZ0NvbnRleHRDb250cm9sbGVyOmNvbnRyb2xsZXIgZGlkUGVy
Zm9ybVNlcnZlclJlZGlyZWN0RnJvbVVSTDp3cmFwcGVyKCp0b0ltcGwoc291cmNlVVJMUmVmKSkg
dG9VUkw6d3JhcHBlcigqdG9JbXBsKGRlc3RpbmF0aW9uVVJMUmVmKSldOworfQorCitzdGF0aWMg
dm9pZCBkaWRVcGRhdGVIaXN0b3J5VGl0bGUoV0tDb250ZXh0UmVmLCBXS1BhZ2VSZWYgcGFnZVJl
ZiwgV0tTdHJpbmdSZWYgdGl0bGVSZWYsIFdLVVJMUmVmIHVybFJlZiwgV0tGcmFtZVJlZiBmcmFt
ZVJlZiwgY29uc3Qgdm9pZCopCit7CisgICAgaWYgKCF0b0ltcGwoZnJhbWVSZWYpLT5pc01haW5G
cmFtZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIgKmNvbnRyb2xsZXIgPSBbV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIF9icm93c2luZ0Nv
bnRleHRDb250cm9sbGVyRm9yUGFnZVJlZjpwYWdlUmVmXTsKKyAgICBpZiAoW2NvbnRyb2xsZXIu
aGlzdG9yeURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlcjpkaWRVcGRhdGVIaXN0b3J5VGl0bGU6Zm9yVVJMOildKQorICAgICAgICBb
Y29udHJvbGxlci5oaXN0b3J5RGVsZWdhdGUgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcjpjb250
cm9sbGVyIGRpZFVwZGF0ZUhpc3RvcnlUaXRsZTp3cmFwcGVyKCp0b0ltcGwodGl0bGVSZWYpKSBm
b3JVUkw6d3JhcHBlcigqdG9JbXBsKHVybFJlZikpXTsKK30KKworc3RhdGljIHZvaWQgc2V0VXBI
aXN0b3J5Q2xpZW50KFdLUHJvY2Vzc0dyb3VwICpwcm9jZXNzR3JvdXAsIFdLQ29udGV4dFJlZiBj
b250ZXh0UmVmKQoreworICAgIFdLQ29udGV4dEhpc3RvcnlDbGllbnQgaGlzdG9yeUNsaWVudDsK
KyAgICBtZW1zZXQoJmhpc3RvcnlDbGllbnQsIDAsIHNpemVvZihoaXN0b3J5Q2xpZW50KSk7CisK
KyAgICBoaXN0b3J5Q2xpZW50LnZlcnNpb24gPSBrV0tDb250ZXh0SGlzdG9yeUNsaWVudEN1cnJl
bnRWZXJzaW9uOworICAgIGhpc3RvcnlDbGllbnQuY2xpZW50SW5mbyA9IHByb2Nlc3NHcm91cDsK
KyAgICBoaXN0b3J5Q2xpZW50LmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhID0gZGlkTmF2
aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGE7CisgICAgaGlzdG9yeUNsaWVudC5kaWRQZXJmb3JtQ2xp
ZW50UmVkaXJlY3QgPSBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3Q7CisgICAgaGlzdG9yeUNsaWVu
dC5kaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QgPSBkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3Q7Cisg
ICAgaGlzdG9yeUNsaWVudC5kaWRVcGRhdGVIaXN0b3J5VGl0bGUgPSBkaWRVcGRhdGVIaXN0b3J5
VGl0bGU7CisKKyAgICBXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50KGNvbnRleHRSZWYsICZoaXN0
b3J5Q2xpZW50KTsKK30KKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECisKIC0gKGlkKWluaXQK
IHsKICAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhJbmplY3RlZEJ1bmRsZVVSTDpuaWxdOwpAQCAt
MTE0LDYgKzE4Myw5IEBAIC0gKGlkKWluaXRXaXRoSW5qZWN0ZWRCdW5kbGVVUkw6KE5TVVJMICoK
IAogICAgIHNldFVwQ29ubmVjdGlvbkNsaWVudChzZWxmLCBfZGF0YS0+X2NvbnRleHRSZWYuZ2V0
KCkpOwogICAgIHNldFVwSW5lY3RlZEJ1bmRsZUNsaWVudChzZWxmLCBfZGF0YS0+X2NvbnRleHRS
ZWYuZ2V0KCkpOworI2lmIFdLX0FQSV9FTkFCTEVECisgICAgc2V0VXBIaXN0b3J5Q2xpZW50KHNl
bGYsIF9kYXRhLT5fY29udGV4dFJlZi5nZXQoKSk7CisjZW5kaWYKIAogICAgIHJldHVybiBzZWxm
OwogfQpAQCAtMTIyLDYgKzE5NCw3IEBAIC0gKHZvaWQpZGVhbGxvYwogewogICAgIFdLQ29udGV4
dFNldENvbm5lY3Rpb25DbGllbnQoX2RhdGEtPl9jb250ZXh0UmVmLmdldCgpLCAwKTsKICAgICBX
S0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChfZGF0YS0+X2NvbnRleHRSZWYuZ2V0KCks
IDApOworICAgIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQoX2RhdGEtPl9jb250ZXh0UmVmLmdl
dCgpLCAwKTsKIAogICAgIFtfZGF0YSByZWxlYXNlXTsKICAgICBbc3VwZXIgZGVhbGxvY107Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIaXN0
b3J5RGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvV0tCcm93c2luZ0NvbnRleHRIaXN0b3J5RGVsZWdhdGUuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhpc3RvcnlEZWxl
Z2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0IDxXZWJLaXQyL1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2lt
cG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQyL1dLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlci5oPgorI2ltcG9ydCA8V2ViS2l0Mi9XS05hdmlnYXRpb25EYXRh
Lmg+CisKK0Bwcm90b2NvbCBXS0Jyb3dzaW5nQ29udGV4dEhpc3RvcnlEZWxlZ2F0ZSA8TlNPYmpl
Y3Q+CitAb3B0aW9uYWwKKworLSAodm9pZClicm93c2luZ0NvbnRleHRDb250cm9sbGVyOihXS0Jy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKilicm93c2luZ0NvbnRleHRDb250cm9sbGVyIGRpZE5h
dmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhOihXS05hdmlnYXRpb25EYXRhICopbmF2aWdhdGlvbkRh
dGE7CistICh2b2lkKWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI6KFdLQnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlciAqKWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgZGlkUGVyZm9ybUNsaWVudFJl
ZGlyZWN0RnJvbVVSTDooTlNVUkwgKilzb3VyY2VVUkwgdG9VUkw6KE5TVVJMICopZGVzdGluYXRp
b25VUkw7CistICh2b2lkKWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI6KFdLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlciAqKWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgZGlkUGVyZm9ybVNlcnZl
clJlZGlyZWN0RnJvbVVSTDooTlNVUkwgKilzb3VyY2VVUkwgdG9VUkw6KE5TVVJMICopZGVzdGlu
YXRpb25VUkw7CistICh2b2lkKWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI6KFdLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciAqKWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgZGlkVXBkYXRlSGlz
dG9yeVRpdGxlOihOU1N0cmluZyAqKXRpdGxlIGZvclVSTDooTlNVUkwgKilVUkw7CisKK0BlbmQK
KworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvV0tOYXZpZ2F0aW9uRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9XS05hdmlnYXRpb25EYXRhLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tOYXZpZ2F0aW9uRGF0YS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8V2ViS2l0Mi9XS05h
dmlnYXRpb25EYXRhUmVmLmg+CisKKyNpZmRlZiBfX09CSkNfXworCisjaW1wb3J0IDxXZWJLaXQy
L1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworV0tfQVBJX0NMQVNTCitA
aW50ZXJmYWNlIFdLTmF2aWdhdGlvbkRhdGEgOiBOU09iamVjdAorCitAcHJvcGVydHkgKHJlYWRv
bmx5KSBOU1N0cmluZyAqdGl0bGU7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBOU1VSTFJlcXVlc3Qg
Km9yaWdpbmFsUmVxdWVzdDsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIE5TVVJMICpkZXN0aW5hdGlv
blVSTDsKKworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKKworI2VuZGlmIC8vIGRl
ZmluZWQoX19PQkpDX18pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tO
YXZpZ2F0aW9uRGF0YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvV0tOYXZpZ2F0aW9uRGF0YS5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9XS05hdmlnYXRpb25EYXRhLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldL
TmF2aWdhdGlvbkRhdGFJbnRlcm5hbC5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9y
dCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
KworQGltcGxlbWVudGF0aW9uIFdLTmF2aWdhdGlvbkRhdGEgeworICAgIHN0ZDo6YWxpZ25lZF9z
dG9yYWdlPHNpemVvZihXZWJOYXZpZ2F0aW9uRGF0YSksIHN0ZDo6YWxpZ25tZW50X29mPFdlYk5h
dmlnYXRpb25EYXRhPjo6dmFsdWU+Ojp0eXBlIF9kYXRhOworfQorCistICh2b2lkKWRlYWxsb2MK
K3sKKyAgICByZWludGVycHJldF9jYXN0PFdlYk5hdmlnYXRpb25EYXRhKj4oJl9kYXRhKS0+fldl
Yk5hdmlnYXRpb25EYXRhKCk7CisKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKE5TU3Ry
aW5nICopdGl0bGUKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXZWJOYXZpZ2F0aW9u
RGF0YSo+KCZfZGF0YSktPnRpdGxlKCk7Cit9CisKKy0gKE5TVVJMUmVxdWVzdCAqKW9yaWdpbmFs
UmVxdWVzdAoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdlYk5hdmlnYXRpb25EYXRh
Kj4oJl9kYXRhKS0+b3JpZ2luYWxSZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkRvTm90
VXBkYXRlSFRUUEJvZHkpOworfQorCistIChOU1VSTCAqKWRlc3RpbmF0aW9uVVJMCit7CisgICAg
cmV0dXJuIFtOU1VSTCBVUkxXaXRoU3RyaW5nOnJlaW50ZXJwcmV0X2Nhc3Q8V2ViTmF2aWdhdGlv
bkRhdGEqPigmX2RhdGEpLT51cmwoKV07Cit9CisKKyNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90
b2NvbCBpbXBsZW1lbnRhdGlvbgorCistIChBUElPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICBy
ZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QVBJT2JqZWN0Kj4oJl9kYXRhKTsKK30KKworQGVuZAor
CisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XS05hdmlnYXRpb25EYXRhSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tOYXZpZ2F0aW9uRGF0YUludGVybmFsLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tOYXZpZ2F0aW9uRGF0
YUludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgIldLTmF2aWdhdGlvbkRhdGEuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNp
bXBvcnQgIldLT2JqZWN0LmgiCisjaW1wb3J0ICJXZWJOYXZpZ2F0aW9uRGF0YS5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKK2lubGluZSBXS05hdmlnYXRpb25EYXRhICp3cmFwcGVyKFdlYk5hdmln
YXRpb25EYXRhJiBkYXRhKSB7IEFTU0VSVChbZGF0YS53cmFwcGVyKCkgaXNLaW5kT2ZDbGFzczpb
V0tOYXZpZ2F0aW9uRGF0YSBjbGFzc11dKTsgcmV0dXJuIChXS05hdmlnYXRpb25EYXRhICopZGF0
YS53cmFwcGVyKCk7IH0KK30KKworQGludGVyZmFjZSBXS05hdmlnYXRpb25EYXRhICgpIDxXS09i
amVjdD4KK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
NTg3MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTQwMyw2ICs0MDMsMTAgQEAKIAkJMzNEM0EzQ0ExMzM5NjE3
OTAwNzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNEM0EzQzYx
MzM5NjE3OTAwNzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwICovOyB9OwogCQkzM0QzQTNDQjEzMzk2MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNo
ZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzM0QzQTNDNzEzMzk2MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1h
bmFnZXJQcm94eU1lc3NhZ2VzLmggKi87IH07CiAJCTMzRjlENUI5MTMxMkYxRUUwMDBENjgzRiAv
KiBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlckNGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzRjlENUI4MTMxMkYxRUUwMDBENjgzRiAvKiBXZWJS
ZXNvdXJjZUNhY2hlTWFuYWdlckNGTmV0LmNwcCAqLzsgfTsKKwkJMzcwRjM0QTIxODI5QkUxRTAw
OTAyN0M4IC8qIFdLTmF2aWdhdGlvbkRhdGEubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzNzBGMzRBMDE4MjlCRTFFMDA5MDI3QzggLyogV0tOYXZpZ2F0
aW9uRGF0YS5tbSAqLzsgfTsKKwkJMzcwRjM0QTMxODI5QkUxRTAwOTAyN0M4IC8qIFdLTmF2aWdh
dGlvbkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDM3MEYzNEExMTgyOUJFMUUwMDkwMjdDOCAvKiBXS05hdmlnYXRpb25EYXRhLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzcwRjM0QTUxODI5QkVB
MzAwOTAyN0M4IC8qIFdLTmF2aWdhdGlvbkRhdGFJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcwRjM0QTQxODI5QkVBMzAwOTAyN0M4IC8q
IFdLTmF2aWdhdGlvbkRhdGFJbnRlcm5hbC5oICovOyB9OworCQkzNzBGMzRBNzE4MjlDRkYzMDA5
MDI3QzggLyogV0tCcm93c2luZ0NvbnRleHRIaXN0b3J5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MEYzNEE2MTgyOUNGRjMwMDkwMjdD
OCAvKiBXS0Jyb3dzaW5nQ29udGV4dEhpc3RvcnlEZWxlZ2F0ZS5oICovOyB9OwogCQkzNzFBMTk0
MTE4MjREMjkzMDBGMzJBNUUgLyogV0tOU0RpY3Rpb25hcnkubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFBMTkzRjE4MjREMjkzMDBGMzJBNUUgLyog
V0tOU0RpY3Rpb25hcnkubW0gKi87IH07CiAJCTM3MUExOTQyMTgyNEQyOTMwMEYzMkE1RSAvKiBX
S05TRGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzcxQTE5NDAxODI0RDI5MzAwRjMyQTVFIC8qIFdLTlNEaWN0aW9uYXJ5LmggKi87IH07
CiAJCTM3NDQzNjg4MTgyMEU3MjQwMDQ5NTc5RiAvKiBXS09iamVjdC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NDQzNjg3MTgyMEU3MjQwMDQ5NTc5
RiAvKiBXS09iamVjdC5tbSAqLzsgfTsKQEAgLTExMzAsOCArMTEzNCw4IEBACiAJCUJDRjY5RjlB
MTE3NkNFRDYwMDQ3MUE1MiAvKiBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y2OUY5ODExNzZDRUQ2MDA0NzFB
NTIgLyogV2ViTmF2aWdhdGlvbkRhdGFTdG9yZS5oICovOyB9OwogCQlCQ0Y2OUZBMjExNzZEMDE0
MDA0NzFBNTIgLyogV2ViTmF2aWdhdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRjY5RkEwMTE3NkQwMTQwMDQ3MUE1MiAvKiBXZWJOYXZp
Z2F0aW9uRGF0YS5oICovOyB9OwogCQlCQ0Y2OUZBMzExNzZEMDE0MDA0NzFBNTIgLyogV2ViTmF2
aWdhdGlvbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNGNjlGQTExMTc2RDAxNDAwNDcxQTUyIC8qIFdlYk5hdmlnYXRpb25EYXRhLmNwcCAq
LzsgfTsKLQkJQkNGNjlGQTkxMTc2RDFDQjAwNDcxQTUyIC8qIFdLTmF2aWdhdGlvbkRhdGEuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRjY5RkE3MTE3
NkQxQ0IwMDQ3MUE1MiAvKiBXS05hdmlnYXRpb25EYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQkNGNjlGQUExMTc2RDFDQjAwNDcxQTUyIC8q
IFdLTmF2aWdhdGlvbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkNGNjlGQTgxMTc2RDFDQjAwNDcxQTUyIC8qIFdLTmF2aWdhdGlvbkRhdGEu
Y3BwICovOyB9OworCQlCQ0Y2OUZBOTExNzZEMUNCMDA0NzFBNTIgLyogV0tOYXZpZ2F0aW9uRGF0
YVJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNG
NjlGQTcxMTc2RDFDQjAwNDcxQTUyIC8qIFdLTmF2aWdhdGlvbkRhdGFSZWYuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQ0Y2OUZBQTExNzZEMUNC
MDA0NzFBNTIgLyogV0tOYXZpZ2F0aW9uRGF0YVJlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y2OUZBODExNzZEMUNCMDA0NzFBNTIgLyogV0tO
YXZpZ2F0aW9uRGF0YVJlZi5jcHAgKi87IH07CiAJCUJDRkQ1NDhCMTMyRDgyNjgwMDU1RDgxNiAv
KiBXS0Vycm9yQ0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNGRDU0ODkxMzJEODI2ODAwNTVEODE2IC8qIFdLRXJyb3JDRi5jcHAgKi87IH07CiAJ
CUJDRkQ1NDhDMTMyRDgyNjgwMDU1RDgxNiAvKiBXS0Vycm9yQ0YuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkQ1NDhBMTMyRDgyNjgwMDU1RDgxNiAv
KiBXS0Vycm9yQ0YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlCRkE2MTc5RjEyRjBCOTlEMDAzM0UwQ0EgLyogV0tWaWV3UHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkZBNjE3OUUxMkYwQjk5
RDAwMzNFMENBIC8qIFdLVmlld1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTkwMyw2ICsxOTA3LDEwIEBACiAJCTMzRDNBM0M3MTMz
OTYxNzkwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1l
c3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzRjlENUI4MTMxMkYxRUUw
MDBENjgzRiAvKiBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlckNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBmaWxlRW5jb2RpbmcgPSA0OyBuYW1lID0gV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJDRk5ldC5j
cHA7IHBhdGggPSBSZXNvdXJjZUNhY2hlL2NmL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyQ0ZOZXQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNTc0QjM3RjE2NjU5MzJDMDA4NTlC
QjcgLyogUERGQW5ub3RhdGlvblRleHRXaWRnZXREZXRhaWxzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBE
RkFubm90YXRpb25UZXh0V2lkZ2V0RGV0YWlscy5oOyBwYXRoID0gUERGL1BERkFubm90YXRpb25U
ZXh0V2lkZ2V0RGV0YWlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzNzBGMzRB
MDE4MjlCRTFFMDA5MDI3QzggLyogV0tOYXZpZ2F0aW9uRGF0YS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLTmF2aWdhdGlvbkRhdGEubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTM3MEYzNEExMTgyOUJFMUUwMDkwMjdDOCAvKiBXS05hdmlnYXRp
b25EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTmF2aWdhdGlvbkRh
dGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzcwRjM0QTQxODI5QkVBMzAwOTAy
N0M4IC8qIFdLTmF2aWdhdGlvbkRhdGFJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS05hdmlnYXRpb25EYXRhSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMzcwRjM0QTYxODI5Q0ZGMzAwOTAyN0M4IC8qIFdLQnJvd3NpbmdDb250ZXh0
SGlzdG9yeURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnJv
d3NpbmdDb250ZXh0SGlzdG9yeURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTM3MUExOTNGMTgyNEQyOTMwMEYzMkE1RSAvKiBXS05TRGljdGlvbmFyeS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLTlNEaWN0aW9uYXJ5Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzFBMTk0MDE4MjREMjkzMDBGMzJBNUUgLyogV0tO
U0RpY3Rpb25hcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tOU0RpY3Rp
b25hcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc0NDM2ODcxODIwRTcyNDAw
NDk1NzlGIC8qIFdLT2JqZWN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV0tPYmplY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjg3LDgg
KzI2OTUsOCBAQAogCQlCQ0Y2OUY5ODExNzZDRUQ2MDA0NzFBNTIgLyogV2ViTmF2aWdhdGlvbkRh
dGFTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOYXZpZ2F0aW9u
RGF0YVN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRjY5RkEwMTE3NkQw
MTQwMDQ3MUE1MiAvKiBXZWJOYXZpZ2F0aW9uRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJOYXZpZ2F0aW9uRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQ0Y2OUZBMTExNzZEMDE0MDA0NzFBNTIgLyogV2ViTmF2aWdhdGlvbkRhdGEuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTmF2aWdhdGlvbkRhdGEuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQ0Y2OUZBNzExNzZEMUNCMDA0NzFBNTIg
LyogV0tOYXZpZ2F0aW9uRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S05hdmlnYXRpb25EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDRjY5RkE4
MTE3NkQxQ0IwMDQ3MUE1MiAvKiBXS05hdmlnYXRpb25EYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLTmF2aWdhdGlvbkRhdGEuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCQ0Y2OUZBNzExNzZEMUNCMDA0NzFBNTIgLyogV0tOYXZpZ2F0aW9u
RGF0YVJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS05hdmlnYXRpb25E
YXRhUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDRjY5RkE4MTE3NkQxQ0Iw
MDQ3MUE1MiAvKiBXS05hdmlnYXRpb25EYXRhUmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdLTmF2aWdhdGlvbkRhdGFSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQ0ZDQTg5NTE2REU5NkNCMDAwNzQwNjkgLyogUGx1Z2luU2VydmljZS4z
Mi02NC5JbmZvLnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5wbGlzdC54bWw7IG5hbWUgPSAiUGx1Z2luU2VydmljZS4zMi02NC5JbmZv
LnBsaXN0IjsgcGF0aCA9ICJQbHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQvbWFjL1hQQ1NlcnZpY2Uv
UGx1Z2luU2VydmljZS4zMi02NC5JbmZvLnBsaXN0Ijsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB9OwogCQlCQ0ZENTQ4OTEzMkQ4MjY4MDA1NUQ4MTYgLyogV0tFcnJvckNGLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLRXJyb3JDRi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDRkQ1NDhBMTMyRDgyNjgwMDU1RDgxNiAvKiBXS0Vycm9yQ0Yu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tFcnJvckNGLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNjkwLDYgKzM2OTgsMTAgQEAKIAkJCQkzN0M0QzA4NTE4
MTQ5QzVCMDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVtLmggKi8sCiAJCQkJMzdDNEMw
ODQxODE0OUM1QjAwMzY4OEI5IC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbS5tbSAqLywKIAkJCQkz
N0M0QzA4ODE4MTQ5RjIzMDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVtSW50ZXJuYWwu
aCAqLywKKwkJCQkzNzBGMzRBNjE4MjlDRkYzMDA5MDI3QzggLyogV0tCcm93c2luZ0NvbnRleHRI
aXN0b3J5RGVsZWdhdGUuaCAqLywKKwkJCQkzNzBGMzRBMTE4MjlCRTFFMDA5MDI3QzggLyogV0tO
YXZpZ2F0aW9uRGF0YS5oICovLAorCQkJCTM3MEYzNEEwMTgyOUJFMUUwMDkwMjdDOCAvKiBXS05h
dmlnYXRpb25EYXRhLm1tICovLAorCQkJCTM3MEYzNEE0MTgyOUJFQTMwMDkwMjdDOCAvKiBXS05h
dmlnYXRpb25EYXRhSW50ZXJuYWwuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gQ29jb2E7CiAJCQlw
YXRoID0gVUlQcm9jZXNzL0NvY29hOwpAQCAtNDQ2Nyw4ICs0NDc5LDggQEAKIAkJCQkzM0QzQTNC
MzEzMzk2MDBCMDA3MDlCRTQgLyogV0tNZWRpYUNhY2hlTWFuYWdlci5jcHAgKi8sCiAJCQkJMzNE
M0EzQjQxMzM5NjAwQjAwNzA5QkU0IC8qIFdLTWVkaWFDYWNoZU1hbmFnZXIuaCAqLywKIAkJCQlD
MDlBRTVFODEyNTI1N0MyMDAyNTgyNUQgLyogV0tOYXRpdmVFdmVudC5oICovLAotCQkJCUJDRjY5
RkE4MTE3NkQxQ0IwMDQ3MUE1MiAvKiBXS05hdmlnYXRpb25EYXRhLmNwcCAqLywKLQkJCQlCQ0Y2
OUZBNzExNzZEMUNCMDA0NzFBNTIgLyogV0tOYXZpZ2F0aW9uRGF0YS5oICovLAorCQkJCUJDRjY5
RkE4MTE3NkQxQ0IwMDQ3MUE1MiAvKiBXS05hdmlnYXRpb25EYXRhUmVmLmNwcCAqLywKKwkJCQlC
Q0Y2OUZBNzExNzZEMUNCMDA0NzFBNTIgLyogV0tOYXZpZ2F0aW9uRGF0YVJlZi5oICovLAogCQkJ
CTMxOEJFMTc2MTQ3NDNFNjAwMEE4RkJCMiAvKiBXS05vdGlmaWNhdGlvbi5jcHAgKi8sCiAJCQkJ
MzE4QkUxNzgxNDc0M0U2QTAwQThGQkIyIC8qIFdLTm90aWZpY2F0aW9uLmggKi8sCiAJCQkJMzE4
QkUxNzQxNDc0M0RENjAwQThGQkIyIC8qIFdLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgKi8sCkBA
IC01NjczLDYgKzU2ODUsNyBAQAogCQkJCTFRUTQxN0NCMTJDMDBDQ0EwMDJCRTY3QiAvKiBUZXh0
Q2hlY2tlckNvbXBsZXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNUU0REE0MTJEM0JEM0Qw
MDk5QTJCQiAvKiBUZXh0Q2hlY2tlclN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFGMjYz
OTE0Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTM3MEYzNEE3MTgyOUNGRjMwMDkwMjdDOCAvKiBXS0Jyb3dzaW5nQ29u
dGV4dEhpc3RvcnlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGMDVEODcxNDY4ODM0
ODAwOEIxRTgxIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBNjQyNDVFMTJERTI5QTEwMENBQUUyQyAvKiBVcGRhdGVJbmZvLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0IwQjBFMDEyMzA1QUIxMDBCMTM0MUUgLyogVXNlck1lc3NhZ2VD
b2RlcnMuaCBpbiBIZWFkZXJzICovLApAQCAtNTkxNiw2ICs1OTI5LDcgQEAKIAkJCQkxQTlFMzI4
RDE4MjE2NUE5MDBGNUQwNEMgLyogV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTI5M0VCRUFCMTYyN0Q5QzkwMDVGODlGMSAvKiBXS0RPTVRleHQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMDE3RDIxMTYyNjMzMDgwMDcwNTRGNSAvKiBXS0RPTVRleHRJdGVyYXRv
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzcwRjM0QTMxODI5QkUxRTAwOTAyN0M4IC8qIFdLTmF2
aWdhdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjdENzhEMTI4OENEOUEwMENGRDA4
QyAvKiBXS0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzVGQzEyNEZGMDI3MDA2
OEYyMEEgLyogV0tFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGRDU0OEMxMzJEODI2ODAw
NTVEODE2IC8qIFdLRXJyb3JDRi5oIGluIEhlYWRlcnMgKi8sCkBAIC01OTQ2LDcgKzU5NjAsNyBA
QAogCQkJCUJDNDA3NUZFMTI0RkYwMjcwMDY4RjIwQSAvKiBXS011dGFibGVBcnJheS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM0MDc2MDAxMjRGRjAyNzAwNjhGMjBBIC8qIFdLTXV0YWJsZURpY3Rp
b25hcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUMwOUFFNUU5MTI1MjU3QzIwMDI1ODI1RCAvKiBX
S05hdGl2ZUV2ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlCQ0Y2OUZBOTExNzZEMUNCMDA0NzFB
NTIgLyogV0tOYXZpZ2F0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkNGNjlGQTkxMTc2
RDFDQjAwNDcxQTUyIC8qIFdLTmF2aWdhdGlvbkRhdGFSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTMxOEJFMTc5MTQ3NDNFNkYwMEE4RkJCMiAvKiBXS05vdGlmaWNhdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzE4QkUxNzExNDc0M0RCMTAwQThGQkIyIC8qIFdLTm90aWZpY2F0aW9uTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFBMkVDNzQxNDhENTlDQTAwODEwRDcxIC8qIFdLTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBpbiBIZWFkZXJzICovLApAQCAtNTk2NSw2ICs1
OTc5LDcgQEAKIAkJCQlCQzE3NzQ2NTExOEI5RkY0MDA3RDlFOUEgLyogV0tQYWdlUHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFMTdCN0UxMzgxRjExNzAwMTJBNjQxIC8qIFdLUGFnZVBy
aXZhdGVNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUZEMzhDMTZCMEU4OEMwMEIyRjBFOCAv
KiBXS1BhZ2VWaXNpYmlsaXR5VHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTM3MEYzNEE1MTgy
OUJFQTMwMDkwMjdDOCAvKiBXS05hdmlnYXRpb25EYXRhSW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxRkNCMTg3MTdCQkZFMDMwMDM5NENEOCAvKiBOZXR3b3JrTG9hZGVyQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3QzEzNUFBOTE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5J
bmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDODZGRjQxMzBCNDZEMzAwMkMxMjU3
IC8qIFdLUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTY4NDcsNiAr
Njg2Miw3IEBACiAJCQkJMUE2NTA2RDIxNzUwMTVFNzAwMTc0NTE4IC8qIE1lc3NhZ2VTZW5kZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzBFM0FBN0IxMjA5RTgzNTAwQTQ5RDAxIC8qIE1vZHVs
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMEUzQUE3QTEyMDlFODMwMDBBNDlEMDEgLyogTW9k
dWxlTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMzcwRjM0QTIxODI5QkUxRTAwOTAyN0M4IC8q
IFdLTmF2aWdhdGlvbkRhdGEubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0IwQUQzMzEyMkYyODU4
MDBCMTM0MUUgLyogTXV0YWJsZUFycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQjBBRUVB
MTIyRjUzRTMwMEIxMzQxRSAvKiBNdXRhYmxlRGljdGlvbmFyeS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDMDJCRkYxRTEyNTE1MDJFMDA5Q0NCRUEgLyogTmF0aXZlV2ViS2V5Ym9hcmRFdmVudE1h
Yy5tbSBpbiBTb3VyY2VzICovLApAQCAtNzI1NSw3ICs3MjcxLDcgQEAKIAkJCQkzM0QzQTNCNTEz
Mzk2MDBCMDA3MDlCRTQgLyogV0tNZWRpYUNhY2hlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQzQwNzVGRDEyNEZGMDI3MDA2OEYyMEEgLyogV0tNdXRhYmxlQXJyYXkuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkM0MDc1RkYxMjRGRjAyNzAwNjhGMjBBIC8qIFdLTXV0YWJsZURpY3Rp
b25hcnkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQkNGNjlGQUExMTc2RDFDQjAwNDcxQTUyIC8q
IFdLTmF2aWdhdGlvbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkNGNjlGQUExMTc2RDFD
QjAwNDcxQTUyIC8qIFdLTmF2aWdhdGlvbkRhdGFSZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzE4QkUxNzcxNDc0M0U2MDAwQThGQkIyIC8qIFdLTm90aWZpY2F0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTMxOEJFMTc1MTQ3NDNERDcwMEE4RkJCMiAvKiBXS05vdGlmaWNhdGlvbk1hbmFn
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFBMkVDNzcxNDhENjYyRTAwODEwRDcxIC8qIFdL
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>
<flag name="review"
          id="239002"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="239004"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>