<?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>153718</bug_id>
          
          <creation_ts>2016-01-30 14:51:32 -0800</creation_ts>
          <short_desc>[Cocoa] Get rid of many WK_ macros for nullability</short_desc>
          <delta_ts>2016-01-30 20:19:10 -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>WebKit Local 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>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1160548</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2016-01-30 14:51:32 -0800</bug_when>
    <thetext>I think we no longer need to build with compilers and SDKs that don’t support nullability, so we can use nullability specifiers and attributes directly in the headers. Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160550</commentid>
    <comment_count>1</comment_count>
      <attachid>270323</attachid>
    <who name="">mitz</who>
    <bug_when>2016-01-30 14:56:37 -0800</bug_when>
    <thetext>Created attachment 270323
Use nullability attributes and specifiers directly in the headers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160557</commentid>
    <comment_count>2</comment_count>
    <who name="">mitz</who>
    <bug_when>2016-01-30 15:50:49 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r195914&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160571</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-01-30 16:32:40 -0800</bug_when>
    <thetext>This broke the build: https://build.webkit.org/builders/Apple%20Yosemite%20Release%20%28Build%29/builds/12095/steps/compile-webkit/logs/errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160590</commentid>
    <comment_count>4</comment_count>
    <who name="">mitz</who>
    <bug_when>2016-01-30 17:14:36 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; This broke the build:
&gt; https://build.webkit.org/builders/Apple%20Yosemite%20Release%20%28Build%29/
&gt; builds/12095/steps/compile-webkit/logs/errors

It needs to be reverted. I can do so in a few minutes if no one beats me to it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160597</commentid>
    <comment_count>5</comment_count>
    <who name="">mitz</who>
    <bug_when>2016-01-30 17:23:12 -0800</bug_when>
    <thetext>Reverted in &lt;http://trac.webkit.org/r195920&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160602</commentid>
    <comment_count>6</comment_count>
      <attachid>270330</attachid>
    <who name="">mitz</who>
    <bug_when>2016-01-30 17:45:52 -0800</bug_when>
    <thetext>Created attachment 270330
Use nullability attributes and specifiers directly in the headers where possible</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160612</commentid>
    <comment_count>7</comment_count>
      <attachid>270330</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-01-30 19:05:23 -0800</bug_when>
    <thetext>Comment on attachment 270330
Use nullability attributes and specifiers directly in the headers where possible

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160617</commentid>
    <comment_count>8</comment_count>
    <who name="">mitz</who>
    <bug_when>2016-01-30 20:12:07 -0800</bug_when>
    <thetext>Committed attachment 270330 as &lt;http://trac.webkit.org/r195922&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160623</commentid>
    <comment_count>9</comment_count>
    <who name="">mitz</who>
    <bug_when>2016-01-30 20:19:10 -0800</bug_when>
    <thetext>Built successfully: https://build.webkit.org/builders/Apple%20Yosemite%20Release%20%28Build%29/builds/12100</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270323</attachid>
            <date>2016-01-30 14:56:37 -0800</date>
            <delta_ts>2016-01-30 17:45:50 -0800</delta_ts>
            <desc>Use nullability attributes and specifiers directly in the headers</desc>
            <filename>bug-153718-20160130145612.patch</filename>
            <type>text/plain</type>
            <size>34874</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NTkxMykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE2LTAxLTMwICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBHZXQgcmlkIG9mIFdL
XyBtYWNyb3MgZm9yIG51bGxhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTM3MTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvV0tGb3VuZGF0aW9uLmg6IFJlbW92
ZWQgZGVmaW5pdGlvbnMgb2YgV0tfQVNTVU1FX05PTk5VTExfe0JFR0lOLCBFTkR9LAorICAgICAg
ICAgIFdLX05VTExBQkxFLCBXS19OVUxMX1VOU1BFQ0lGSUVELCBXS19OVUxMQUJMRV9TUEVDSUZJ
RVIsIGFuZCBXS19OVUxMQUJMRV9QUk9QRVJUWS4KKworICAgICAgICAqIG1hYy9wb3N0cHJvY2Vz
cy1mcmFtZXdvcmstaGVhZGVycy5zaDogUmVtb3ZlZCBydWxlcyBmb3IgcmV3cml0aW5nIHRob3Nl
IG1hY3Jvcy4KKworICAgICAgICBSZXBsYWNlZCBpbnN0YW5jZXMgb2YgdGhvc2UgbWFjcm9zIHdp
dGggdGhlaXIgZXhwYW5zaW9ucywgYnV0IHVzaW5nIHRoZSBtb2Rlcm4gX051bGxhYmxlCisgICAg
ICAgIGluc3RlYWQgb2YgX19udWxsYWJsZToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tCYWNrRm9yd2FyZExpc3QuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
QmFja0ZvcndhcmRMaXN0SXRlbS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tF
cnJvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUluZm8uaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvblJlc3BvbnNlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUhhbmRsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLU2VjdXJpdHlPcmlnaW4uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVUlEZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tV
c2VyQ29udGVudENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
VXNlclNjcmlwdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2luZG93RmVhdHVyZXMuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS0NvbnRleHRNZW51RWxlbWVudEluZm8uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRJbmZvLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tQcmV2aWV3RWxlbWVudEluZm8uaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lmg6CisKIDIwMTYtMDEtMzAgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgQ2FzZUZvbGRpbmdIYXNo
IHdpdGggQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL0NvY29hL1dLRm91bmRhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvQ29jb2EvV0tGb3VuZGF0aW9uLmgJKHJldmlzaW9uIDE5NTg5OSkKKysrIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvV0tGb3VuZGF0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgyLDM3ICs4Miw2IEBACiAjZGVmaW5lIFdLX1VOQVZBSUxBQkxFCiAjZW5kaWYKIAot
I2lmIF9faGFzX2ZlYXR1cmUoYXNzdW1lX25vbm51bGwpCi0KLSNpZmRlZiBOU19BU1NVTUVfTk9O
TlVMTF9CRUdJTgotI2RlZmluZSBXS19BU1NVTUVfTk9OTlVMTF9CRUdJTiBOU19BU1NVTUVfTk9O
TlVMTF9CRUdJTgotI2Vsc2UKLSNkZWZpbmUgV0tfQVNTVU1FX05PTk5VTExfQkVHSU4gX1ByYWdt
YSgiY2xhbmcgYXNzdW1lX25vbm51bGwgYmVnaW4iKQotI2VuZGlmCi0KLSNpZmRlZiBOU19BU1NV
TUVfTk9OTlVMTF9FTkQKLSNkZWZpbmUgV0tfQVNTVU1FX05PTk5VTExfRU5EIE5TX0FTU1VNRV9O
T05OVUxMX0VORAotI2Vsc2UKLSNkZWZpbmUgV0tfQVNTVU1FX05PTk5VTExfRU5EIF9QcmFnbWEo
ImNsYW5nIGFzc3VtZV9ub25udWxsIGVuZCIpCi0jZW5kaWYKLQotI2RlZmluZSBXS19OVUxMQUJM
RSBudWxsYWJsZQotI2RlZmluZSBXS19OVUxMX1VOU1BFQ0lGSUVEIG51bGxfdW5zcGVjaWZpZWQK
LSNkZWZpbmUgV0tfTlVMTEFCTEVfU1BFQ0lGSUVSIF9fbnVsbGFibGUKLSNkZWZpbmUgV0tfTlVM
TEFCTEVfUFJPUEVSVFkgbnVsbGFibGUsCi0KLSNlbHNlCi0KLSNkZWZpbmUgV0tfQVNTVU1FX05P
Tk5VTExfQkVHSU4KLSNkZWZpbmUgV0tfQVNTVU1FX05PTk5VTExfRU5ECi0KLSNkZWZpbmUgV0tf
TlVMTEFCTEUKLSNkZWZpbmUgV0tfTlVMTF9VTlNQRUNJRklFRAotI2RlZmluZSBXS19OVUxMQUJM
RV9TUEVDSUZJRVIKLSNkZWZpbmUgV0tfTlVMTEFCTEVfUFJPUEVSVFkKLQotI2VuZGlmCi0KICNl
bmRpZgogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tCYWNrRm9yd2FyZExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLQmFja0ZvcndhcmRMaXN0LmgJKHJldmlzaW9uIDE5NTg5OSkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMzIsMjQgKzMyLDI0IEBACiAvKiEgQGFic3RyYWN0IEEgV0tCYWNrRm9y
d2FyZExpc3Qgb2JqZWN0IGlzIGEgbGlzdCBvZiB3ZWJwYWdlcyBwcmV2aW91c2x5CiAgdmlzaXRl
ZCBpbiBhIHdlYiB2aWV3IHRoYXQgY2FuIGJlIHJlYWNoZWQgYnkgZ29pbmcgYmFjayBvciBmb3J3
YXJkLgogICovCi1XS19BU1NVTUVfTk9OTlVMTF9CRUdJTgorTlNfQVNTVU1FX05PTk5VTExfQkVH
SU4KIAogV0tfQ0xBU1NfQVZBSUxBQkxFKDEwXzEwLCA4XzApCiBAaW50ZXJmYWNlIFdLQmFja0Zv
cndhcmRMaXN0IDogTlNPYmplY3QKIAogLyohIEBhYnN0cmFjdCBUaGUgY3VycmVudCBpdGVtLgog
ICovCi1AcHJvcGVydHkgKFdLX05VTExBQkxFX1BST1BFUlRZIG5vbmF0b21pYywgcmVhZG9ubHks
IHN0cm9uZykgV0tCYWNrRm9yd2FyZExpc3RJdGVtICpjdXJyZW50SXRlbTsKK0Bwcm9wZXJ0eSAo
bnVsbGFibGUsIG5vbmF0b21pYywgcmVhZG9ubHksIHN0cm9uZykgV0tCYWNrRm9yd2FyZExpc3RJ
dGVtICpjdXJyZW50SXRlbTsKIAogLyohIEBhYnN0cmFjdCBUaGUgaXRlbSBpbW1lZGlhdGVseSBw
cmVjZWRpbmcgdGhlIGN1cnJlbnQgaXRlbSwgb3IgbmlsCiBpZiB0aGVyZSBpc24ndCBvbmUuCiAg
Ki8KLUBwcm9wZXJ0eSAoV0tfTlVMTEFCTEVfUFJPUEVSVFkgbm9uYXRvbWljLCByZWFkb25seSwg
c3Ryb25nKSBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKmJhY2tJdGVtOworQHByb3BlcnR5IChudWxs
YWJsZSwgbm9uYXRvbWljLCByZWFkb25seSwgc3Ryb25nKSBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0g
KmJhY2tJdGVtOwogCiAvKiEgQGFic3RyYWN0IFRoZSBpdGVtIGltbWVkaWF0ZWx5IGZvbGxvd2lu
ZyB0aGUgY3VycmVudCBpdGVtLCBvciBuaWwKIGlmIHRoZXJlIGlzbid0IG9uZS4KICAqLwotQHBy
b3BlcnR5IChXS19OVUxMQUJMRV9QUk9QRVJUWSBub25hdG9taWMsIHJlYWRvbmx5LCBzdHJvbmcp
IFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqZm9yd2FyZEl0ZW07CitAcHJvcGVydHkgKG51bGxhYmxl
LCBub25hdG9taWMsIHJlYWRvbmx5LCBzdHJvbmcpIFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqZm9y
d2FyZEl0ZW07CiAKIC8qISBAYWJzdHJhY3QgUmV0dXJucyB0aGUgaXRlbSBhdCBhIHNwZWNpZmll
ZCBkaXN0YW5jZSBmcm9tIHRoZSBjdXJyZW50CiAgaXRlbS4KQEAgLTU5LDcgKzU5LDcgQEAgaWYg
dGhlcmUgaXNuJ3Qgb25lLgogIEByZXN1bHQgVGhlIGl0ZW0gYXQgdGhlIHNwZWNpZmllZCBkaXN0
YW5jZSBmcm9tIHRoZSBjdXJyZW50IGl0ZW0sIG9yIG5pbAogIGlmIHRoZSBpbmRleCBwYXJhbWV0
ZXIgZXhjZWVkcyB0aGUgbGltaXRzIG9mIHRoZSBsaXN0LgogICovCi0tIChXS19OVUxMQUJMRSBX
S0JhY2tGb3J3YXJkTGlzdEl0ZW0gKilpdGVtQXRJbmRleDooTlNJbnRlZ2VyKWluZGV4OworLSAo
bnVsbGFibGUgV0tCYWNrRm9yd2FyZExpc3RJdGVtICopaXRlbUF0SW5kZXg6KE5TSW50ZWdlcilp
bmRleDsKIAogLyohIEBhYnN0cmFjdCBUaGUgcG9ydGlvbiBvZiB0aGUgbGlzdCBwcmVjZWRpbmcg
dGhlIGN1cnJlbnQgaXRlbS4KICBAZGlzY3Vzc2lvbiBUaGUgaXRlbXMgYXJlIGluIHRoZSBvcmRl
ciBpbiB3aGljaCB0aGV5IHdlcmUgb3JpZ2luYWxseQpAQCAtNzUsNiArNzUsNiBAQCBpZiB0aGVy
ZSBpc24ndCBvbmUuCiAKIEBlbmQKIAotV0tfQVNTVU1FX05PTk5VTExfRU5ECitOU19BU1NVTUVf
Tk9OTlVMTF9FTkQKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLQmFja0ZvcndhcmRMaXN0SXRlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3RJdGVtLmgJKHJldmlzaW9u
IDE5NTg5OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCYWNrRm9y
d2FyZExpc3RJdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKIAogLyohIEEg
V0tCYWNrRm9yd2FyZExpc3RJdGVtIG9iamVjdCByZXByZXNlbnRzIGEgd2VicGFnZSBpbiB0aGUg
YmFjay1mb3J3YXJkIGxpc3Qgb2YgYSB3ZWIgdmlldy4KICAqLwotV0tfQVNTVU1FX05PTk5VTExf
QkVHSU4KK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIFdLX0NMQVNTX0FWQUlMQUJMRSgxMF8x
MCwgOF8wKQogQGludGVyZmFjZSBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gOiBOU09iamVjdApAQCAt
NDIsNyArNDIsNyBAQCBXS19DTEFTU19BVkFJTEFCTEUoMTBfMTAsIDhfMCkKIAogLyohIEBhYnN0
cmFjdCBUaGUgdGl0bGUgb2YgdGhlIHdlYnBhZ2UgcmVwcmVzZW50ZWQgYnkgdGhpcyBpdGVtLgog
ICovCi1AcHJvcGVydHkgKFdLX05VTExBQkxFX1BST1BFUlRZIHJlYWRvbmx5LCBjb3B5KSBOU1N0
cmluZyAqdGl0bGU7CitAcHJvcGVydHkgKG51bGxhYmxlLCByZWFkb25seSwgY29weSkgTlNTdHJp
bmcgKnRpdGxlOwogCiAvKiEgQGFic3RyYWN0IFRoZSBVUkwgb2YgdGhlIGluaXRpYWwgcmVxdWVz
dCB0aGF0IGNyZWF0ZWQgdGhpcyBpdGVtLgogICovCkBAIC01MCw2ICs1MCw2IEBAIFdLX0NMQVNT
X0FWQUlMQUJMRSgxMF8xMCwgOF8wKQogCiBAZW5kCiAKLVdLX0FTU1VNRV9OT05OVUxMX0VORAor
TlNfQVNTVU1FX05PTk5VTExfRU5ECiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0Vycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Vycm9yLmgJKHJldmlzaW9uIDE5NTg5OSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tFcnJvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw3ICsyOSw3IEBACiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCi1X
S19BU1NVTUVfTk9OTlVMTF9CRUdJTgorTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogLyohIEBj
b25zdGFudCBXS0Vycm9yRG9tYWluIEluZGljYXRlcyBhIFdlYktpdCBlcnJvci4gKi8KIFdLX0VY
VEVSTiBOU1N0cmluZyAqIGNvbnN0IFdLRXJyb3JEb21haW4gV0tfQVZBSUxBQkxFKDEwXzEwLCA4
XzApOwpAQCAtNTAsNiArNTAsNiBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS0Vycm9y
Q29kZSkgCiAgICAgV0tFcnJvckphdmFTY3JpcHRSZXN1bHRUeXBlSXNVbnN1cHBvcnRlZCBXS19F
TlVNX0FWQUlMQUJMRSgxMF8xMSwgOV8wKSwKIH0gV0tfRU5VTV9BVkFJTEFCTEUoMTBfMTAsIDhf
MCk7CiAKLVdLX0FTU1VNRV9OT05OVUxMX0VORAorTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZyYW1lSW5m
by5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tG
cmFtZUluZm8uaAkocmV2aXNpb24gMTk1ODk5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0ZyYW1lSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBA
CiAgaXQgZG9lcyBub3QgdW5pcXVlbHkgaWRlbnRpZnkgYSBmcmFtZSBhY3Jvc3MgbXVsdGlwbGUg
ZGVsZWdhdGUgbWV0aG9kCiAgY2FsbHMuCiAgKi8KLVdLX0FTU1VNRV9OT05OVUxMX0JFR0lOCitO
U19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiBXS19DTEFTU19BVkFJTEFCTEUoMTBfMTAsIDhfMCkK
IEBpbnRlcmZhY2UgV0tGcmFtZUluZm8gOiBOU09iamVjdCA8TlNDb3B5aW5nPgpAQCAtNTUsNiAr
NTUsNiBAQCBXS19DTEFTU19BVkFJTEFCTEUoMTBfMTAsIDhfMCkKIAogQGVuZAogCi1XS19BU1NV
TUVfTk9OTlVMTF9FTkQKK05TX0FTU1VNRV9OT05OVUxMX0VORAogCiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRp
b25BY3Rpb24uaAkocmV2aXNpb24gMTk1ODk5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyAr
MzMsNyBAQAogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgogI2VuZGlmCiAKLVdLX0FTU1VNRV9O
T05OVUxMX0JFR0lOCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiBAY2xhc3MgV0tGcmFtZUlu
Zm87CiAKQEAgLTY3LDcgKzY3LDcgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKDEwXzEwLCA4XzApCiAK
IC8qISBAYWJzdHJhY3QgVGhlIHRhcmdldCBmcmFtZSwgb3IgbmlsIGlmIHRoaXMgaXMgYSBuZXcg
d2luZG93IG5hdmlnYXRpb24uCiAgKi8KLUBwcm9wZXJ0eSAoV0tfTlVMTEFCTEVfUFJPUEVSVFkg
bm9uYXRvbWljLCByZWFkb25seSwgY29weSkgV0tGcmFtZUluZm8gKnRhcmdldEZyYW1lOworQHBy
b3BlcnR5IChudWxsYWJsZSwgbm9uYXRvbWljLCByZWFkb25seSwgY29weSkgV0tGcmFtZUluZm8g
KnRhcmdldEZyYW1lOwogCiAvKiEgQGFic3RyYWN0IFRoZSB0eXBlIG9mIGFjdGlvbiB0aGF0IHRy
aWdnZXJlZCB0aGUgbmF2aWdhdGlvbi4KICBAZGlzY3Vzc2lvbiBUaGUgdmFsdWUgaXMgb25lIG9m
IHRoZSBjb25zdGFudHMgb2YgdGhlIGVudW1lcmF0ZWQgdHlwZSBXS05hdmlnYXRpb25UeXBlLgpA
QCAtOTIsNiArOTIsNiBAQCBXS19DTEFTU19BVkFJTEFCTEUoMTBfMTAsIDhfMCkKIAogQGVuZAog
Ci1XS19BU1NVTUVfTk9OTlVMTF9FTkQKK05TX0FTU1VNRV9OT05OVUxMX0VORAogCiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVs
ZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLTmF2aWdhdGlvbkRlbGVnYXRlLmgJKHJldmlzaW9uIDE5NTg5OSkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjksNyArMjksNyBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24u
aD4KIAotV0tfQVNTVU1FX05PTk5VTExfQkVHSU4KK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAK
IEBjbGFzcyBXS05hdmlnYXRpb247CiBAY2xhc3MgV0tOYXZpZ2F0aW9uQWN0aW9uOwpAQCAtOTAs
MTQgKzkwLDE0IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLTmF2aWdhdGlvblIKICBA
cGFyYW0gd2ViVmlldyBUaGUgd2ViIHZpZXcgaW52b2tpbmcgdGhlIGRlbGVnYXRlIG1ldGhvZC4K
ICBAcGFyYW0gbmF2aWdhdGlvbiBUaGUgbmF2aWdhdGlvbi4KICAqLwotLSAodm9pZCl3ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uOihXS19O
VUxMX1VOU1BFQ0lGSUVEIFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb247CistICh2b2lkKXdlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb246KG51
bGxfdW5zcGVjaWZpZWQgV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbjsKIAogLyohIEBhYnN0cmFj
dCBJbnZva2VkIHdoZW4gYSBzZXJ2ZXIgcmVkaXJlY3QgaXMgcmVjZWl2ZWQgZm9yIHRoZSBtYWlu
CiAgZnJhbWUuCiAgQHBhcmFtIHdlYlZpZXcgVGhlIHdlYiB2aWV3IGludm9raW5nIHRoZSBkZWxl
Z2F0ZSBtZXRob2QuCiAgQHBhcmFtIG5hdmlnYXRpb24gVGhlIG5hdmlnYXRpb24uCiAgKi8KLS0g
KHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb246KFdLX05VTExfVU5TUEVDSUZJRUQgV0tOYXZpZ2F0
aW9uICopbmF2aWdhdGlvbjsKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBk
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb246KG51bGxfdW5z
cGVjaWZpZWQgV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbjsKIAogLyohIEBhYnN0cmFjdCBJbnZv
a2VkIHdoZW4gYW4gZXJyb3Igb2NjdXJzIHdoaWxlIHN0YXJ0aW5nIHRvIGxvYWQgZGF0YSBmb3IK
ICB0aGUgbWFpbiBmcmFtZS4KQEAgLTEwNSwxOSArMTA1LDE5IEBAIHR5cGVkZWYgTlNfRU5VTShO
U0ludGVnZXIsIFdLTmF2aWdhdGlvblIKICBAcGFyYW0gbmF2aWdhdGlvbiBUaGUgbmF2aWdhdGlv
bi4KICBAcGFyYW0gZXJyb3IgVGhlIGVycm9yIHRoYXQgb2NjdXJyZWQuCiAgKi8KLS0gKHZvaWQp
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9u
OihXS19OVUxMX1VOU1BFQ0lGSUVEIFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24gd2l0aEVycm9y
OihOU0Vycm9yICopZXJyb3I7CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
ZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbjoobnVsbF91bnNwZWNpZmllZCBXS05hdmlnYXRp
b24gKiluYXZpZ2F0aW9uIHdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yOwogCiAvKiEgQGFic3Ry
YWN0IEludm9rZWQgd2hlbiBjb250ZW50IHN0YXJ0cyBhcnJpdmluZyBmb3IgdGhlIG1haW4gZnJh
bWUuCiAgQHBhcmFtIHdlYlZpZXcgVGhlIHdlYiB2aWV3IGludm9raW5nIHRoZSBkZWxlZ2F0ZSBt
ZXRob2QuCiAgQHBhcmFtIG5hdmlnYXRpb24gVGhlIG5hdmlnYXRpb24uCiAgKi8KLS0gKHZvaWQp
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRDb21taXROYXZpZ2F0aW9uOihXS19OVUxM
X1VOU1BFQ0lGSUVEIFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb247CistICh2b2lkKXdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkQ29tbWl0TmF2aWdhdGlvbjoobnVsbF91bnNwZWNpZmll
ZCBXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uOwogCiAvKiEgQGFic3RyYWN0IEludm9rZWQgd2hl
biBhIG1haW4gZnJhbWUgbmF2aWdhdGlvbiBjb21wbGV0ZXMuCiAgQHBhcmFtIHdlYlZpZXcgVGhl
IHdlYiB2aWV3IGludm9raW5nIHRoZSBkZWxlZ2F0ZSBtZXRob2QuCiAgQHBhcmFtIG5hdmlnYXRp
b24gVGhlIG5hdmlnYXRpb24uCiAgKi8KLS0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS19OVUxMX1VOU1BFQ0lGSUVEIFdLTmF2aWdhdGlv
biAqKW5hdmlnYXRpb247CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlk
RmluaXNoTmF2aWdhdGlvbjoobnVsbF91bnNwZWNpZmllZCBXS05hdmlnYXRpb24gKiluYXZpZ2F0
aW9uOwogCiAvKiEgQGFic3RyYWN0IEludm9rZWQgd2hlbiBhbiBlcnJvciBvY2N1cnMgZHVyaW5n
IGEgY29tbWl0dGVkIG1haW4gZnJhbWUKICBuYXZpZ2F0aW9uLgpAQCAtMTI1LDcgKzEyNSw3IEBA
IHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLTmF2aWdhdGlvblIKICBAcGFyYW0gbmF2aWdh
dGlvbiBUaGUgbmF2aWdhdGlvbi4KICBAcGFyYW0gZXJyb3IgVGhlIGVycm9yIHRoYXQgb2NjdXJy
ZWQuCiAgKi8KLS0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGYWlsTmF2
aWdhdGlvbjooV0tfTlVMTF9VTlNQRUNJRklFRCBXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uIHdp
dGhFcnJvcjooTlNFcnJvciAqKWVycm9yOworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGRpZEZhaWxOYXZpZ2F0aW9uOihudWxsX3Vuc3BlY2lmaWVkIFdLTmF2aWdhdGlvbiAq
KW5hdmlnYXRpb24gd2l0aEVycm9yOihOU0Vycm9yICopZXJyb3I7CiAKIC8qISBAYWJzdHJhY3Qg
SW52b2tlZCB3aGVuIHRoZSB3ZWIgdmlldyBuZWVkcyB0byByZXNwb25kIHRvIGFuIGF1dGhlbnRp
Y2F0aW9uIGNoYWxsZW5nZS4KICBAcGFyYW0gd2ViVmlldyBUaGUgd2ViIHZpZXcgdGhhdCByZWNl
aXZlZCB0aGUgYXV0aGVudGljYXRpb24gY2hhbGxlbmdlLgpAQCAtMTM3LDcgKzEzNyw3IEBAIHR5
cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLTmF2aWdhdGlvblIKICBjcmVkZW50aWFsLgogIEBk
aXNjdXNzaW9uIElmIHlvdSBkbyBub3QgaW1wbGVtZW50IHRoaXMgbWV0aG9kLCB0aGUgd2ViIHZp
ZXcgd2lsbCByZXNwb25kIHRvIHRoZSBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2Ugd2l0aCB0aGUg
TlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVJlamVjdFByb3RlY3Rpb25TcGFjZSBkaXNwb3NpdGlv
bi4KICAqLwotLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNo
YWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxs
ZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKldLX05VTExBQkxF
X1NQRUNJRklFUiBjcmVkZW50aWFsKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3Np
dGlvbiwgTlNVUkxDcmVkZW50aWFsICpfTnVsbGFibGUgY3JlZGVudGlhbCkpY29tcGxldGlvbkhh
bmRsZXI7CiAKIC8qISBAYWJzdHJhY3QgSW52b2tlZCB3aGVuIHRoZSB3ZWIgdmlldydzIHdlYiBj
b250ZW50IHByb2Nlc3MgaXMgdGVybWluYXRlZC4KICBAcGFyYW0gd2ViVmlldyBUaGUgd2ViIHZp
ZXcgd2hvc2UgdW5kZXJseWluZyB3ZWIgY29udGVudCBwcm9jZXNzIHdhcyB0ZXJtaW5hdGVkLgpA
QCAtMTQ2LDYgKzE0Niw2IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLTmF2aWdhdGlv
blIKIAogQGVuZAogCi1XS19BU1NVTUVfTk9OTlVMTF9FTkQKK05TX0FTU1VNRV9OT05OVUxMX0VO
RAogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tO
YXZpZ2F0aW9uUmVzcG9uc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvblJlc3BvbnNlLmgJKHJldmlzaW9uIDE5NTg5OSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uUmVzcG9uc2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaD4KIAotV0tfQVNTVU1FX05PTk5VTExfQkVHSU4KK05TX0FTU1VNRV9OT05O
VUxMX0JFR0lOCiAKIEBjbGFzcyBXS0ZyYW1lSW5mbzsKIApAQCAtNTMsNiArNTMsNiBAQCBXS19D
TEFTU19BVkFJTEFCTEUoMTBfMTAsIDhfMCkKIAogQGVuZAogCi1XS19BU1NVTUVfTk9OTlVMTF9F
TkQKK05TX0FTU1VNRV9OT05OVUxMX0VORAogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2UuaAkocmV2aXNp
b24gMTk1ODk5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Njcmlw
dE1lc3NhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogCiAjaW1wb3J0IDxG
b3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAotV0tfQVNTVU1FX05PTk5VTExfQkVHSU4KK05TX0FT
U1VNRV9OT05OVUxMX0JFR0lOCiAKIEBjbGFzcyBXS0ZyYW1lSW5mbzsKIEBjbGFzcyBXS1dlYlZp
ZXc7CkBAIC00Nyw3ICs0Nyw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRSgxMF8xMCwgOF8wKQogQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBpZCBib2R5OwogCiAvKiEgQGFic3Ry
YWN0IFRoZSB3ZWIgdmlldyBzZW5kaW5nIHRoZSBtZXNzYWdlLiAqLwotQHByb3BlcnR5IChXS19O
VUxMQUJMRV9QUk9QRVJUWSBub25hdG9taWMsIHJlYWRvbmx5LCB3ZWFrKSBXS1dlYlZpZXcgKndl
YlZpZXc7CitAcHJvcGVydHkgKG51bGxhYmxlLCBub25hdG9taWMsIHJlYWRvbmx5LCB3ZWFrKSBX
S1dlYlZpZXcgKndlYlZpZXc7CiAKIC8qISBAYWJzdHJhY3QgVGhlIGZyYW1lIHNlbmRpbmcgdGhl
IG1lc3NhZ2UuICovCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIFdLRnJh
bWVJbmZvICpmcmFtZUluZm87CkBAIC01OCw2ICs1OCw2IEBAIFdLX0NMQVNTX0FWQUlMQUJMRSgx
MF8xMCwgOF8wKQogCiBAZW5kCiAKLVdLX0FTU1VNRV9OT05OVUxMX0VORAorTlNfQVNTVU1FX05P
Tk5VTExfRU5ECiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1NjcmlwdE1lc3NhZ2VIYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VIYW5kbGVyLmgJKHJldmlzaW9u
IDE5NTg5OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRN
ZXNzYWdlSGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbXBv
cnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCi1XS19BU1NVTUVfTk9OTlVMTF9CRUdJTgor
TlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGNsYXNzIFdLU2NyaXB0TWVzc2FnZTsKIEBjbGFz
cyBXS1VzZXJDb250ZW50Q29udHJvbGxlcjsKQEAgLTUwLDYgKzUwLDYgQEAgV0tfQVNTVU1FX05P
Tk5VTExfQkVHSU4KIAogQGVuZAogCi1XS19BU1NVTUVfTk9OTlVMTF9FTkQKK05TX0FTU1VNRV9O
T05OVUxMX0VORAogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tTZWN1cml0eU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tTZWN1cml0eU9yaWdpbi5oCShyZXZpc2lvbiAxOTU4OTkpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2VjdXJpdHlPcmlnaW4uaAko
d29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogIGl0IGRvZXMgbm90IHVuaXF1ZWx5IGlk
ZW50aWZ5IGEgc2VjdXJpdHkgb3JpZ2luIGFjcm9zcyBtdWx0aXBsZSBkZWxlZ2F0ZSBtZXRob2QK
ICBjYWxscy4KICAqLwotV0tfQVNTVU1FX05PTk5VTExfQkVHSU4KK05TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCiAKIFdLX0NMQVNTX0FWQUlMQUJMRSgxMF8xMSwgOV8wKQogQGludGVyZmFjZSBXS1Nl
Y3VyaXR5T3JpZ2luIDogTlNPYmplY3QKQEAgLTU1LDYgKzU1LDYgQEAgV0tfQ0xBU1NfQVZBSUxB
QkxFKDEwXzExLCA5XzApCiAKIEBlbmQKIAotV0tfQVNTVU1FX05PTk5VTExfRU5ECitOU19BU1NV
TUVfTk9OTlVMTF9FTkQKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLVUlEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlLmgJKHJldmlzaW9uIDE5NTg5OSkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
Lmg+CiAKLVdLX0FTU1VNRV9OT05OVUxMX0JFR0lOCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgog
CiBAY2xhc3MgV0tGcmFtZUluZm87CiBAY2xhc3MgV0tOYXZpZ2F0aW9uQWN0aW9uOwpAQCAtNTUs
NyArNTUsNyBAQCBXS19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiAgSWYgeW91IGRvIG5vdCBpbXBs
ZW1lbnQgdGhpcyBtZXRob2QsIHRoZSB3ZWIgdmlldyB3aWxsIGNhbmNlbCB0aGUgbmF2aWdhdGlv
bi4KICAqLwotLSAoV0tfTlVMTEFCTEUgV0tXZWJWaWV3ICopd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBjcmVhdGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gKiljb25maWd1cmF0aW9uIGZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFj
dGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gd2luZG93RmVhdHVyZXM6KFdLV2luZG93RmVhdHVyZXMg
Kil3aW5kb3dGZWF0dXJlczsKKy0gKG51bGxhYmxlIFdLV2ViVmlldyAqKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgY3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0aW9uOihXS1dlYlZpZXdD
b25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBmb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmln
YXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIHdpbmRvd0ZlYXR1cmVzOihXS1dpbmRvd0Zl
YXR1cmVzICopd2luZG93RmVhdHVyZXM7CiAKIC8qISBAYWJzdHJhY3QgTm90aWZpZXMgeW91ciBh
cHAgdGhhdCB0aGUgRE9NIHdpbmRvdyBvYmplY3QncyBjbG9zZSgpIG1ldGhvZCBjb21wbGV0ZWQg
c3VjY2Vzc2Z1bGx5LgogICBAcGFyYW0gd2ViVmlldyBUaGUgd2ViIHZpZXcgaW52b2tpbmcgdGhl
IGRlbGVnYXRlIG1ldGhvZC4KQEAgLTExMiwxMCArMTEyLDEwIEBAIFdLX0FTU1VNRV9OT05OVUxM
X0JFR0lOCiAKICBJZiB5b3UgZG8gbm90IGltcGxlbWVudCB0aGlzIG1ldGhvZCwgdGhlIHdlYiB2
aWV3IHdpbGwgYmVoYXZlIGFzIGlmIHRoZSB1c2VyIHNlbGVjdGVkIHRoZSBDYW5jZWwgYnV0dG9u
LgogICovCi0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuSmF2YVNjcmlw
dFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDooTlNTdHJpbmcgKilwcm9tcHQgZGVmYXVsdFRleHQ6
KFdLX05VTExBQkxFIE5TU3RyaW5nICopZGVmYXVsdFRleHQgaW5pdGlhdGVkQnlGcmFtZTooV0tG
cmFtZUluZm8gKilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKiBX
S19OVUxMQUJMRV9TUEVDSUZJRVIgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQp
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxX
aXRoUHJvbXB0OihOU1N0cmluZyAqKXByb21wdCBkZWZhdWx0VGV4dDoobnVsbGFibGUgTlNTdHJp
bmcgKilkZWZhdWx0VGV4dCBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqIF9OdWxsYWJsZSByZXN1bHQpKWNv
bXBsZXRpb25IYW5kbGVyOwogCiBAZW5kCiAKLVdLX0FTU1VNRV9OT05OVUxMX0VORAorTlNfQVNT
VU1FX05PTk5VTExfRU5ECiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIuaAko
cmV2aXNpb24gMTk1ODk5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1VzZXJDb250ZW50Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBA
CiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCi1XS19BU1NVTUVfTk9OTlVM
TF9CRUdJTgorTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGNsYXNzIFdLVXNlclNjcmlwdDsK
IEBwcm90b2NvbCBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyOwpAQCAtNzIsNiArNzIsNiBAQCBXS19D
TEFTU19BVkFJTEFCTEUoMTBfMTAsIDhfMCkKIAogQGVuZAogCi1XS19BU1NVTUVfTk9OTlVMTF9F
TkQKK05TX0FTU1VNRV9OT05OVUxMX0VORAogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQuaAkocmV2aXNpb24gMTk1
ODk5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogIEBjb25zdGFudCBXS1VzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0ICAgIEluamVjdCB0aGUgc2NyaXB0IGFmdGVy
IHRoZSBkb2N1bWVudCBlbGVtZW50IGhhcyBiZWVuIGNyZWF0ZWQsIGJ1dCBiZWZvcmUgYW55IG90
aGVyIGNvbnRlbnQgaGFzIGJlZW4gbG9hZGVkLgogIEBjb25zdGFudCBXS1VzZXJTY3JpcHRJbmpl
Y3Rpb25UaW1lQXREb2N1bWVudEVuZCAgICAgIEluamVjdCB0aGUgc2NyaXB0IGFmdGVyIHRoZSBk
b2N1bWVudCBoYXMgZmluaXNoZWQgbG9hZGluZywgYnV0IGJlZm9yZSBhbnkgc3VicmVzb3VyY2Vz
IG1heSBoYXZlIGZpbmlzaGVkIGxvYWRpbmcuCiAgKi8KLVdLX0FTU1VNRV9OT05OVUxMX0JFR0lO
CitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBX
S1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKSB7CiAgICAgV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGlt
ZUF0RG9jdW1lbnRTdGFydCwKQEAgLTY0LDYgKzY0LDYgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKDEw
XzEwLCA4XzApCiAKIEBlbmQKIAotV0tfQVNTVU1FX05PTk5VTExfRU5ECitOU19BU1NVTUVfTk9O
TlVMTF9FTkQKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3LmgJKHJldmlzaW9uIDE5NTg5OSkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcg
KzMzLDcgQEAKICNpbXBvcnQgPEFwcEtpdC9BcHBLaXQuaD4KICNlbmRpZgogCi1XS19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgorTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGNsYXNzIFdLQmFja0Zv
cndhcmRMaXN0OwogQGNsYXNzIFdLQmFja0ZvcndhcmRMaXN0SXRlbTsKQEAgLTYxLDEwICs2MSwx
MCBAQCBXS19DTEFTU19BVkFJTEFCTEUoMTBfMTAsIDhfMCkKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSwgY29weSkgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbjsK
IAogLyohIEBhYnN0cmFjdCBUaGUgd2ViIHZpZXcncyBuYXZpZ2F0aW9uIGRlbGVnYXRlLiAqLwot
QHByb3BlcnR5IChXS19OVUxMQUJMRV9QUk9QRVJUWSBub25hdG9taWMsIHdlYWspIGlkIDxXS05h
dmlnYXRpb25EZWxlZ2F0ZT4gbmF2aWdhdGlvbkRlbGVnYXRlOworQHByb3BlcnR5IChudWxsYWJs
ZSwgbm9uYXRvbWljLCB3ZWFrKSBpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+IG5hdmlnYXRpb25E
ZWxlZ2F0ZTsKIAogLyohIEBhYnN0cmFjdCBUaGUgd2ViIHZpZXcncyB1c2VyIGludGVyZmFjZSBk
ZWxlZ2F0ZS4gKi8KLUBwcm9wZXJ0eSAoV0tfTlVMTEFCTEVfUFJPUEVSVFkgbm9uYXRvbWljLCB3
ZWFrKSBpZCA8V0tVSURlbGVnYXRlPiBVSURlbGVnYXRlOworQHByb3BlcnR5IChudWxsYWJsZSwg
bm9uYXRvbWljLCB3ZWFrKSBpZCA8V0tVSURlbGVnYXRlPiBVSURlbGVnYXRlOwogCiAvKiEgQGFi
c3RyYWN0IFRoZSB3ZWIgdmlldydzIGJhY2stZm9yd2FyZCBsaXN0LiAqLwogQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5LCBzdHJvbmcpIFdLQmFja0ZvcndhcmRMaXN0ICpiYWNrRm9yd2Fy
ZExpc3Q7CkBAIC04OSw3ICs4OSw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRSgxMF8xMCwgOF8wKQog
IEBwYXJhbSByZXF1ZXN0IFRoZSByZXF1ZXN0IHNwZWNpZnlpbmcgdGhlIFVSTCB0byB3aGljaCB0
byBuYXZpZ2F0ZS4KICBAcmVzdWx0IEEgbmV3IG5hdmlnYXRpb24gZm9yIHRoZSBnaXZlbiByZXF1
ZXN0LgogICovCi0tIChXS19OVUxMQUJMRSBXS05hdmlnYXRpb24gKilsb2FkUmVxdWVzdDooTlNV
UkxSZXF1ZXN0ICopcmVxdWVzdDsKKy0gKG51bGxhYmxlIFdLTmF2aWdhdGlvbiAqKWxvYWRSZXF1
ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0OwogCiAvKiEgQGFic3RyYWN0IE5hdmlnYXRlcyB0
byB0aGUgcmVxdWVzdGVkIGZpbGUgVVJMIG9uIHRoZSBmaWxlc3lzdGVtLgogIEBwYXJhbSBVUkwg
VGhlIGZpbGUgVVJMIHRvIHdoaWNoIHRvIG5hdmlnYXRlLgpAQCAtOTgsMTQgKzk4LDE0IEBAIFdL
X0NMQVNTX0FWQUlMQUJMRSgxMF8xMCwgOF8wKQogIElmIHJlYWRBY2Nlc3NVUkwgcmVmZXJlbmNl
cyBhIGRpcmVjdG9yeSwgZmlsZXMgaW5zaWRlIHRoYXQgZmlsZSBtYXkgYmUgbG9hZGVkIGJ5IFdl
YktpdC4KICBAcmVzdWx0IEEgbmV3IG5hdmlnYXRpb24gZm9yIHRoZSBnaXZlbiBmaWxlIFVSTC4K
ICAqLwotLSAoV0tfTlVMTEFCTEUgV0tOYXZpZ2F0aW9uICopbG9hZEZpbGVVUkw6KE5TVVJMICop
VVJMIGFsbG93aW5nUmVhZEFjY2Vzc1RvVVJMOihOU1VSTCAqKXJlYWRBY2Nlc3NVUkwgV0tfQVZB
SUxBQkxFKDEwXzExLCA5XzApOworLSAobnVsbGFibGUgV0tOYXZpZ2F0aW9uICopbG9hZEZpbGVV
Ukw6KE5TVVJMICopVVJMIGFsbG93aW5nUmVhZEFjY2Vzc1RvVVJMOihOU1VSTCAqKXJlYWRBY2Nl
c3NVUkwgV0tfQVZBSUxBQkxFKDEwXzExLCA5XzApOwogCiAvKiEgQGFic3RyYWN0IFNldHMgdGhl
IHdlYnBhZ2UgY29udGVudHMgYW5kIGJhc2UgVVJMLgogIEBwYXJhbSBzdHJpbmcgVGhlIHN0cmlu
ZyB0byB1c2UgYXMgdGhlIGNvbnRlbnRzIG9mIHRoZSB3ZWJwYWdlLgogIEBwYXJhbSBiYXNlVVJM
IEEgVVJMIHRoYXQgaXMgdXNlZCB0byByZXNvbHZlIHJlbGF0aXZlIFVSTHMgd2l0aGluIHRoZSBk
b2N1bWVudC4KICBAcmVzdWx0IEEgbmV3IG5hdmlnYXRpb24uCiAgKi8KLS0gKFdLX05VTExBQkxF
IFdLTmF2aWdhdGlvbiAqKWxvYWRIVE1MU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBiYXNlVVJM
OihXS19OVUxMQUJMRSBOU1VSTCAqKWJhc2VVUkw7CistIChudWxsYWJsZSBXS05hdmlnYXRpb24g
Kilsb2FkSFRNTFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgYmFzZVVSTDoobnVsbGFibGUgTlNV
UkwgKiliYXNlVVJMOwogCiAvKiEgQGFic3RyYWN0IFNldHMgdGhlIHdlYnBhZ2UgY29udGVudHMg
YW5kIGJhc2UgVVJMLgogIEBwYXJhbSBkYXRhIFRoZSBkYXRhIHRvIHVzZSBhcyB0aGUgY29udGVu
dHMgb2YgdGhlIHdlYnBhZ2UuCkBAIC0xMTQsNyArMTE0LDcgQEAgV0tfQ0xBU1NfQVZBSUxBQkxF
KDEwXzEwLCA4XzApCiAgQHBhcmFtIGJhc2VVUkwgQSBVUkwgdGhhdCBpcyB1c2VkIHRvIHJlc29s
dmUgcmVsYXRpdmUgVVJMcyB3aXRoaW4gdGhlIGRvY3VtZW50LgogIEByZXN1bHQgQSBuZXcgbmF2
aWdhdGlvbi4KICAqLwotLSAoV0tfTlVMTEFCTEUgV0tOYXZpZ2F0aW9uICopbG9hZERhdGE6KE5T
RGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgY2hhcmFjdGVyRW5jb2Rp
bmdOYW1lOihOU1N0cmluZyAqKWNoYXJhY3RlckVuY29kaW5nTmFtZSBiYXNlVVJMOihOU1VSTCAq
KWJhc2VVUkwgV0tfQVZBSUxBQkxFKDEwXzExLCA5XzApOworLSAobnVsbGFibGUgV0tOYXZpZ2F0
aW9uICopbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5
cGUgY2hhcmFjdGVyRW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKWNoYXJhY3RlckVuY29kaW5nTmFt
ZSBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwgV0tfQVZBSUxBQkxFKDEwXzExLCA5XzApOwogCiAv
KiEgQGFic3RyYWN0IE5hdmlnYXRlcyB0byBhbiBpdGVtIGZyb20gdGhlIGJhY2stZm9yd2FyZCBs
aXN0IGFuZCBzZXRzIGl0CiAgYXMgdGhlIGN1cnJlbnQgaXRlbS4KQEAgLTEyNCwxMyArMTI0LDEz
IEBAIFdLX0NMQVNTX0FWQUlMQUJMRSgxMF8xMCwgOF8wKQogIHRoZSBjdXJyZW50IGl0ZW0gb3Ig
aXMgbm90IHBhcnQgb2YgdGhlIHdlYiB2aWV3J3MgYmFjay1mb3J3YXJkIGxpc3QuCiAgQHNlZWFs
c28gYmFja0ZvcndhcmRMaXN0CiAgKi8KLS0gKFdLX05VTExBQkxFIFdLTmF2aWdhdGlvbiAqKWdv
VG9CYWNrRm9yd2FyZExpc3RJdGVtOihXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKilpdGVtOworLSAo
bnVsbGFibGUgV0tOYXZpZ2F0aW9uICopZ29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06KFdLQmFja0Zv
cndhcmRMaXN0SXRlbSAqKWl0ZW07CiAKIC8qISBAYWJzdHJhY3QgVGhlIHBhZ2UgdGl0bGUuCiAg
QGRpc2N1c3Npb24gQGxpbmsgV0tXZWJWaWV3IEAvbGluayBpcyBrZXktdmFsdWUgb2JzZXJ2aW5n
IChLVk8pIGNvbXBsaWFudAogIGZvciB0aGlzIHByb3BlcnR5LgogICovCi1AcHJvcGVydHkgKFdL
X05VTExBQkxFX1BST1BFUlRZIG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICp0
aXRsZTsKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5T
U3RyaW5nICp0aXRsZTsKIAogLyohIEBhYnN0cmFjdCBUaGUgYWN0aXZlIFVSTC4KICBAZGlzY3Vz
c2lvbiBUaGlzIGlzIHRoZSBVUkwgdGhhdCBzaG91bGQgYmUgcmVmbGVjdGVkIGluIHRoZSB1c2Vy
CkBAIC0xMzgsNyArMTM4LDcgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKDEwXzEwLCA4XzApCiAgQGxp
bmsgV0tXZWJWaWV3IEAvbGluayBpcyBrZXktdmFsdWUgb2JzZXJ2aW5nIChLVk8pIGNvbXBsaWFu
dCBmb3IgdGhpcwogIHByb3BlcnR5LgogICovCi1AcHJvcGVydHkgKFdLX05VTExBQkxFX1BST1BF
UlRZIG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TVVJMICpVUkw7CitAcHJvcGVydHkgKG51
bGxhYmxlLCBub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1VSTCAqVVJMOwogCiAvKiEgQGFi
c3RyYWN0IEEgQm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHZpZXcgaXMgY3Vy
cmVudGx5CiAgbG9hZGluZyBjb250ZW50LgpAQCAtMTkxLDI0ICsxOTEsMjQgQEAgV0tfQ0xBU1Nf
QVZBSUxBQkxFKDEwXzEwLCA4XzApCiAgQHJlc3VsdCBBIG5ldyBuYXZpZ2F0aW9uIHRvIHRoZSBy
ZXF1ZXN0ZWQgaXRlbSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vIGJhY2sKICBpdGVtIGluIHRoZSBi
YWNrLWZvcndhcmQgbGlzdC4KICAqLwotLSAoV0tfTlVMTEFCTEUgV0tOYXZpZ2F0aW9uICopZ29C
YWNrOworLSAobnVsbGFibGUgV0tOYXZpZ2F0aW9uICopZ29CYWNrOwogCiAvKiEgQGFic3RyYWN0
IE5hdmlnYXRlcyB0byB0aGUgZm9yd2FyZCBpdGVtIGluIHRoZSBiYWNrLWZvcndhcmQgbGlzdC4K
ICBAcmVzdWx0IEEgbmV3IG5hdmlnYXRpb24gdG8gdGhlIHJlcXVlc3RlZCBpdGVtLCBvciBuaWwg
aWYgdGhlcmUgaXMgbm8KICBmb3J3YXJkIGl0ZW0gaW4gdGhlIGJhY2stZm9yd2FyZCBsaXN0Lgog
ICovCi0tIChXS19OVUxMQUJMRSBXS05hdmlnYXRpb24gKilnb0ZvcndhcmQ7CistIChudWxsYWJs
ZSBXS05hdmlnYXRpb24gKilnb0ZvcndhcmQ7CiAKIC8qISBAYWJzdHJhY3QgUmVsb2FkcyB0aGUg
Y3VycmVudCBwYWdlLgogIEByZXN1bHQgQSBuZXcgbmF2aWdhdGlvbiByZXByZXNlbnRpbmcgdGhl
IHJlbG9hZC4KICAqLwotLSAoV0tfTlVMTEFCTEUgV0tOYXZpZ2F0aW9uICopcmVsb2FkOworLSAo
bnVsbGFibGUgV0tOYXZpZ2F0aW9uICopcmVsb2FkOwogCiAvKiEgQGFic3RyYWN0IFJlbG9hZHMg
dGhlIGN1cnJlbnQgcGFnZSwgcGVyZm9ybWluZyBlbmQtdG8tZW5kIHJldmFsaWRhdGlvbgogIHVz
aW5nIGNhY2hlLXZhbGlkYXRpbmcgY29uZGl0aW9uYWxzIGlmIHBvc3NpYmxlLgogIEByZXN1bHQg
QSBuZXcgbmF2aWdhdGlvbiByZXByZXNlbnRpbmcgdGhlIHJlbG9hZC4KICAqLwotLSAoV0tfTlVM
TEFCTEUgV0tOYXZpZ2F0aW9uICopcmVsb2FkRnJvbU9yaWdpbjsKKy0gKG51bGxhYmxlIFdLTmF2
aWdhdGlvbiAqKXJlbG9hZEZyb21PcmlnaW47CiAKIC8qISBAYWJzdHJhY3QgU3RvcHMgbG9hZGlu
ZyBhbGwgcmVzb3VyY2VzIG9uIHRoZSBjdXJyZW50IHBhZ2UuCiAgKi8KQEAgLTIxOSw3ICsyMTks
NyBAQCBXS19DTEFTU19BVkFJTEFCTEUoMTBfMTAsIDhfMCkKICBAcGFyYW0gY29tcGxldGlvbkhh
bmRsZXIgQSBibG9jayB0byBpbnZva2Ugd2hlbiBzY3JpcHQgZXZhbHVhdGlvbiBjb21wbGV0ZXMg
b3IgZmFpbHMuCiAgQGRpc2N1c3Npb24gVGhlIGNvbXBsZXRpb25IYW5kbGVyIGlzIHBhc3NlZCB0
aGUgcmVzdWx0IG9mIHRoZSBzY3JpcHQgZXZhbHVhdGlvbiBvciBhbiBlcnJvci4KICovCi0tICh2
b2lkKWV2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheIFdLX05VTExBQkxFX1NQRUNJRklFUikoV0tfTlVMTEFCTEVf
U1BFQ0lGSUVSIGlkLCBOU0Vycm9yICogV0tfTlVMTEFCTEVfU1BFQ0lGSUVSIGVycm9yKSljb21w
bGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWph
dmFTY3JpcHRTdHJpbmcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4gX051bGxhYmxlKShfTnVs
bGFibGUgaWQsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyOwog
CiAvKiEgQGFic3RyYWN0IEEgQm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgaG9yaXpv
bnRhbCBzd2lwZSBnZXN0dXJlcwogIHdpbGwgdHJpZ2dlciBiYWNrLWZvcndhcmQgbGlzdCBuYXZp
Z2F0aW9ucy4KQEAgLTIyOSw3ICsyMjksNyBAQCBXS19DTEFTU19BVkFJTEFCTEUoMTBfMTAsIDhf
MCkKIAogLyohIEBhYnN0cmFjdCBUaGUgY3VzdG9tIHVzZXIgYWdlbnQgc3RyaW5nIG9yIG5pbCBp
ZiBubyBjdXN0b20gdXNlciBhZ2VudCBzdHJpbmcgaGFzIGJlZW4gc2V0LgogKi8KLUBwcm9wZXJ0
eSAoV0tfTlVMTEFCTEVfUFJPUEVSVFkgbm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqY3VzdG9t
VXNlckFnZW50IFdLX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsKK0Bwcm9wZXJ0eSAobnVsbGFibGUs
IG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKmN1c3RvbVVzZXJBZ2VudCBXS19BVkFJTEFCTEUo
MTBfMTEsIDlfMCk7CiAKIC8qISBAYWJzdHJhY3QgQSBCb29sZWFuIHZhbHVlIGluZGljYXRpbmcg
d2hldGhlciBsaW5rIHByZXZpZXcgaXMgYWxsb3dlZCBmb3IgYW55CiAgbGlua3MgaW5zaWRlIHRo
aXMgV0tXZWJWaWV3LgpAQCAtMjc2LDM1ICsyNzYsMzUgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKDEw
XzEwLCA4XzApCiAgYmFjay1mb3J3YXJkIGxpc3QuCiAgQHBhcmFtIHNlbmRlciBUaGUgb2JqZWN0
IHRoYXQgc2VudCB0aGlzIG1lc3NhZ2UuCiAgKi8KLS0gKElCQWN0aW9uKWdvQmFjazooV0tfTlVM
TEFCTEUgaWQpc2VuZGVyOworLSAoSUJBY3Rpb24pZ29CYWNrOihudWxsYWJsZSBpZClzZW5kZXI7
CiAKIC8qISBAYWJzdHJhY3QgQWN0aW9uIG1ldGhvZCB0aGF0IG5hdmlnYXRlcyB0byB0aGUgZm9y
d2FyZCBpdGVtIGluIHRoZQogIGJhY2stZm9yd2FyZCBsaXN0LgogIEBwYXJhbSBzZW5kZXIgVGhl
IG9iamVjdCB0aGF0IHNlbnQgdGhpcyBtZXNzYWdlLgogICovCi0tIChJQkFjdGlvbilnb0Zvcndh
cmQ6KFdLX05VTExBQkxFIGlkKXNlbmRlcjsKKy0gKElCQWN0aW9uKWdvRm9yd2FyZDoobnVsbGFi
bGUgaWQpc2VuZGVyOwogCiAvKiEgQGFic3RyYWN0IEFjdGlvbiBtZXRob2QgdGhhdCByZWxvYWRz
IHRoZSBjdXJyZW50IHBhZ2UuCiAgQHBhcmFtIHNlbmRlciBUaGUgb2JqZWN0IHRoYXQgc2VudCB0
aGlzIG1lc3NhZ2UuCiAgKi8KLS0gKElCQWN0aW9uKXJlbG9hZDooV0tfTlVMTEFCTEUgaWQpc2Vu
ZGVyOworLSAoSUJBY3Rpb24pcmVsb2FkOihudWxsYWJsZSBpZClzZW5kZXI7CiAKIC8qISBAYWJz
dHJhY3QgQWN0aW9uIG1ldGhvZCB0aGF0IHJlbG9hZHMgdGhlIGN1cnJlbnQgcGFnZSwgcGVyZm9y
bWluZwogIGVuZC10by1lbmQgcmV2YWxpZGF0aW9uIHVzaW5nIGNhY2hlLXZhbGlkYXRpbmcgY29u
ZGl0aW9uYWxzIGlmIHBvc3NpYmxlLgogIEBwYXJhbSBzZW5kZXIgVGhlIG9iamVjdCB0aGF0IHNl
bnQgdGhpcyBtZXNzYWdlLgogICovCi0tIChJQkFjdGlvbilyZWxvYWRGcm9tT3JpZ2luOihXS19O
VUxMQUJMRSBpZClzZW5kZXI7CistIChJQkFjdGlvbilyZWxvYWRGcm9tT3JpZ2luOihudWxsYWJs
ZSBpZClzZW5kZXI7CiAKIC8qISBAYWJzdHJhY3QgQWN0aW9uIG1ldGhvZCB0aGF0IHN0b3BzIGxv
YWRpbmcgYWxsIHJlc291cmNlcyBvbiB0aGUgY3VycmVudAogIHBhZ2UuCiAgQHBhcmFtIHNlbmRl
ciBUaGUgb2JqZWN0IHRoYXQgc2VudCB0aGlzIG1lc3NhZ2UuCiAgKi8KLS0gKElCQWN0aW9uKXN0
b3BMb2FkaW5nOihXS19OVUxMQUJMRSBpZClzZW5kZXI7CistIChJQkFjdGlvbilzdG9wTG9hZGlu
ZzoobnVsbGFibGUgaWQpc2VuZGVyOwogCiBAZW5kCiAKICNlbmRpZgogCi1XS19BU1NVTUVfTk9O
TlVMTF9FTkQKK05TX0FTU1VNRV9OT05OVUxMX0VORAogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbi5oCShyZXZpc2lvbiAxOTU4OTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
MjksNyArMjksNyBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAotV0tf
QVNTVU1FX05PTk5VTExfQkVHSU4KK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIEBjbGFzcyBX
S1ByZWZlcmVuY2VzOwogQGNsYXNzIFdLUHJvY2Vzc1Bvb2w7CkBAIC0xMDUsNyArMTA1LDcgQEAg
V0tfQ0xBU1NfQVZBSUxBQkxFKDEwXzEwLCA4XzApCiAKIC8qISBAYWJzdHJhY3QgVGhlIG5hbWUg
b2YgdGhlIGFwcGxpY2F0aW9uIGFzIHVzZWQgaW4gdGhlIHVzZXIgYWdlbnQgc3RyaW5nLgogKi8K
LUBwcm9wZXJ0eSAoV0tfTlVMTEFCTEVfUFJPUEVSVFkgbm9uYXRvbWljLCBjb3B5KSBOU1N0cmlu
ZyAqYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50IFdLX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsK
K0Bwcm9wZXJ0eSAobnVsbGFibGUsIG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKmFwcGxpY2F0
aW9uTmFtZUZvclVzZXJBZ2VudCBXS19BVkFJTEFCTEUoMTBfMTEsIDlfMCk7CiAKIC8qISBAYWJz
dHJhY3QgQSBCb29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciBBaXJQbGF5IGlzIGFsbG93
ZWQuCiAgQGRpc2N1c3Npb24gVGhlIGRlZmF1bHQgdmFsdWUgaXMgWUVTLgpAQCAtMTYwLDYgKzE2
MCw2IEBAIFdLX0NMQVNTX0FWQUlMQUJMRSgxMF8xMCwgOF8wKQogCiBAZW5kCiAKLVdLX0FTU1VN
RV9OT05OVUxMX0VORAorTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhUmVjb3JkLmgJKHJldmlzaW9uIDE5NTg5OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3
ICsyOSw3IEBACiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCi1XS19BU1NV
TUVfTk9OTlVMTF9CRUdJTgorTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogLyohIEBjb25zdGFu
dCBXS1dlYnNpdGVEYXRhVHlwZURpc2tDYWNoZSBPbi1kaXNrIGNhY2hlcy4gKi8KIFdLX0VYVEVS
TiBOU1N0cmluZyAqIGNvbnN0IFdLV2Vic2l0ZURhdGFUeXBlRGlza0NhY2hlIFdLX0FWQUlMQUJM
RSgxMF8xMSwgOV8wKTsKQEAgLTY3LDYgKzY3LDYgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKDEwXzEx
LCA5XzApCiAKIEBlbmQKIAotV0tfQVNTVU1FX05PTk5VTExfRU5ECitOU19BU1NVTUVfTk9OTlVM
TF9FTkQKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDE5NTg5OSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
c2l0ZURhdGFSZWNvcmQuaD4KIAotV0tfQVNTVU1FX05PTk5VTExfQkVHSU4KK05TX0FTU1VNRV9O
T05OVUxMX0JFR0lOCiAKIC8qISBBIFdLV2Vic2l0ZURhdGFTdG9yZSByZXByZXNlbnRzIHZhcmlv
dXMgdHlwZXMgb2YgZGF0YSB0aGF0IGEgd2Vic2l0ZSBtaWdodAogIG1ha2UgdXNlIG9mLiBUaGlz
IGluY2x1ZGVzIGNvb2tpZXMsIGRpc2sgYW5kIG1lbW9yeSBjYWNoZXMsIGFuZCBwZXJzaXN0ZW50
IGRhdGEgc3VjaCBhcyBXZWJTUUwsCkBAIC03Nyw2ICs3Nyw2IEBAIFdLX0NMQVNTX0FWQUlMQUJM
RSgxMF8xMSwgOV8wKQogCiBAZW5kCiAKLVdLX0FTU1VNRV9OT05OVUxMX0VORAorTlNfQVNTVU1F
X05PTk5VTExfRU5ECiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dpbmRvd0ZlYXR1cmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dpbmRvd0ZlYXR1cmVzLmgJKHJldmlzaW9uIDE5NTg5OSkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXaW5kb3dGZWF0dXJlcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw0NSArMzEsNDUgQEAKIAogLyohIFdLV2luZG93RmVhdHVy
ZXMgc3BlY2lmaWVzIG9wdGlvbmFsIGF0dHJpYnV0ZXMgZm9yIHRoZSBjb250YWluaW5nIHdpbmRv
dyB3aGVuIGEgbmV3IFdLV2ViVmlldyBpcyByZXF1ZXN0ZWQuCiAgKi8KLVdLX0FTU1VNRV9OT05O
VUxMX0JFR0lOCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiBXS19DTEFTU19BVkFJTEFCTEUo
MTBfMTAsIDhfMCkKIEBpbnRlcmZhY2UgV0tXaW5kb3dGZWF0dXJlcyA6IE5TT2JqZWN0CiAKIC8q
ISBAYWJzdHJhY3QgQk9PTC4gV2hldGhlciB0aGUgbWVudSBiYXIgc2hvdWxkIGJlIHZpc2libGUu
IG5pbCBpZiBtZW51IGJhciB2aXNpYmlsaXR5IHdhcyBub3Qgc3BlY2lmaWVkLgogICovCi1AcHJv
cGVydHkgKFdLX05VTExBQkxFX1BST1BFUlRZIG5vbmF0b21pYywgcmVhZG9ubHkpIE5TTnVtYmVy
ICptZW51QmFyVmlzaWJpbGl0eTsKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIG5vbmF0b21pYywgcmVh
ZG9ubHkpIE5TTnVtYmVyICptZW51QmFyVmlzaWJpbGl0eTsKIAogLyohIEBhYnN0cmFjdCBCT09M
LiBXaGV0aGVyIHRoZSBzdGF0dXMgYmFyIHNob3VsZCBiZSB2aXNpYmxlLiBuaWwgaWYgc3RhdHVz
IGJhciB2aXNpYmlsaXR5IHdhcyBub3Qgc3BlY2lmaWVkLgogICovCi1AcHJvcGVydHkgKFdLX05V
TExBQkxFX1BST1BFUlRZIG5vbmF0b21pYywgcmVhZG9ubHkpIE5TTnVtYmVyICpzdGF0dXNCYXJW
aXNpYmlsaXR5OworQHByb3BlcnR5IChudWxsYWJsZSwgbm9uYXRvbWljLCByZWFkb25seSkgTlNO
dW1iZXIgKnN0YXR1c0JhclZpc2liaWxpdHk7CiAKIC8qISBAYWJzdHJhY3QgQk9PTC4gV2hldGhl
ciB0b29sYmFycyBzaG91bGQgYmUgdmlzaWJsZS4gbmlsIGlmIHRvb2xiYXIgdmlzaWJpbGl0eSB3
YXMgbm90IHNwZWNpZmllZC4KICAqLwotQHByb3BlcnR5IChXS19OVUxMQUJMRV9QUk9QRVJUWSBu
b25hdG9taWMsIHJlYWRvbmx5KSBOU051bWJlciAqdG9vbGJhcnNWaXNpYmlsaXR5OworQHByb3Bl
cnR5IChudWxsYWJsZSwgbm9uYXRvbWljLCByZWFkb25seSkgTlNOdW1iZXIgKnRvb2xiYXJzVmlz
aWJpbGl0eTsKIAogLyohIEBhYnN0cmFjdCBCT09MLiBXaGV0aGVyIHRoZSBjb250YWluaW5nIHdp
bmRvdyBzaG91bGQgYmUgcmVzaXphYmxlLiBuaWwgaWYgcmVzaXphYmlsaXR5IHdhcyBub3Qgc3Bl
Y2lmaWVkLgogICovCi1AcHJvcGVydHkgKFdLX05VTExBQkxFX1BST1BFUlRZIG5vbmF0b21pYywg
cmVhZG9ubHkpIE5TTnVtYmVyICphbGxvd3NSZXNpemluZzsKK0Bwcm9wZXJ0eSAobnVsbGFibGUs
IG5vbmF0b21pYywgcmVhZG9ubHkpIE5TTnVtYmVyICphbGxvd3NSZXNpemluZzsKIAogLyohIEBh
YnN0cmFjdCBDR0Zsb2F0LiBUaGUgeCBjb29yZGluYXRlIG9mIHRoZSBjb250YWluaW5nIHdpbmRv
dy4gbmlsIGlmIHRoZSB4IGNvb3JkaW5hdGUgd2FzIG5vdCBzcGVjaWZpZWQuCiAgKi8KLUBwcm9w
ZXJ0eSAoV0tfTlVMTEFCTEVfUFJPUEVSVFkgbm9uYXRvbWljLCByZWFkb25seSkgTlNOdW1iZXIg
Kng7CitAcHJvcGVydHkgKG51bGxhYmxlLCBub25hdG9taWMsIHJlYWRvbmx5KSBOU051bWJlciAq
eDsKIAogLyohIEBhYnN0cmFjdCBDR0Zsb2F0LiBUaGUgeSBjb29yZGluYXRlIG9mIHRoZSBjb250
YWluaW5nIHdpbmRvdy4gbmlsIGlmIHRoZSB5IGNvb3JkaW5hdGUgd2FzIG5vdCBzcGVjaWZpZWQu
CiAgKi8KLUBwcm9wZXJ0eSAoV0tfTlVMTEFCTEVfUFJPUEVSVFkgbm9uYXRvbWljLCByZWFkb25s
eSkgTlNOdW1iZXIgKnk7CitAcHJvcGVydHkgKG51bGxhYmxlLCBub25hdG9taWMsIHJlYWRvbmx5
KSBOU051bWJlciAqeTsKIAogLyohIEBhYnN0cmFjdCBDR0Zsb2F0LiBUaGUgd2lkdGggY29vcmRp
bmF0ZSBvZiB0aGUgY29udGFpbmluZyB3aW5kb3cuIG5pbCBpZiB0aGUgd2lkdGggd2FzIG5vdCBz
cGVjaWZpZWQuCiAgKi8KLUBwcm9wZXJ0eSAoV0tfTlVMTEFCTEVfUFJPUEVSVFkgbm9uYXRvbWlj
LCByZWFkb25seSkgTlNOdW1iZXIgKndpZHRoOworQHByb3BlcnR5IChudWxsYWJsZSwgbm9uYXRv
bWljLCByZWFkb25seSkgTlNOdW1iZXIgKndpZHRoOwogCiAvKiEgQGFic3RyYWN0IENHRmxvYXQu
IFRoZSBoZWlnaHQgY29vcmRpbmF0ZSBvZiB0aGUgY29udGFpbmluZyB3aW5kb3cuIG5pbCBpZiB0
aGUgaGVpZ2h0IHdhcyBub3Qgc3BlY2lmaWVkLgogICovCi1AcHJvcGVydHkgKFdLX05VTExBQkxF
X1BST1BFUlRZIG5vbmF0b21pYywgcmVhZG9ubHkpIE5TTnVtYmVyICpoZWlnaHQ7CitAcHJvcGVy
dHkgKG51bGxhYmxlLCBub25hdG9taWMsIHJlYWRvbmx5KSBOU051bWJlciAqaGVpZ2h0OwogCiBA
ZW5kCiAKLVdLX0FTU1VNRV9OT05OVUxMX0VORAorTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZXh0
TWVudUVsZW1lbnRJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLmgJKHJldmlzaW9uIDE5NTg5OSkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ29udGV4dE1lbnVFbGVt
ZW50SW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMyArMjksMTMgQEAKIAogI2ltcG9ydCA8
V2ViS2l0L19XS0VsZW1lbnRJbmZvLmg+CiAKLVdLX0FTU1VNRV9OT05OVUxMX0JFR0lOCitOU19B
U1NVTUVfTk9OTlVMTF9CRUdJTgogCiBXS19DTEFTU19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgTkEp
CiBAaW50ZXJmYWNlIF9XS0NvbnRleHRNZW51RWxlbWVudEluZm8gOiBfV0tFbGVtZW50SW5mbwog
CiBAZW5kCiAKLVdLX0FTU1VNRV9OT05OVUxMX0VORAorTlNfQVNTVU1FX05PTk5VTExfRU5ECiAK
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVt
ZW50SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLRWxlbWVudEluZm8uaAkocmV2aXNpb24gMTk1ODk5KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50SW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw3ICsyNyw3IEBACiAKICNpZiBXS19BUElfRU5BQkxFRAogCi1XS19BU1NVTUVfTk9OTlVMTF9C
RUdJTgorTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogV0tfQ0xBU1NfQVZBSUxBQkxFKFdLX01B
Q19UQkEsIFdLX0lPU19UQkEpCiBAaW50ZXJmYWNlIF9XS0VsZW1lbnRJbmZvIDogTlNPYmplY3Qg
PE5TQ29weWluZz4KQEAgLTM2LDYgKzM2LDYgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKFdLX01BQ19U
QkEsIFdLX0lPU19UQgogCiBAZW5kCiAKLVdLX0FTU1VNRV9OT05OVUxMX0VORAorTlNfQVNTVU1F
X05PTk5VTExfRU5ECiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tQcmV2aWV3RWxlbWVudEluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1ByZXZpZXdFbGVtZW50SW5mby5oCShyZXZpc2lv
biAxOTU4OTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1ByZXZp
ZXdFbGVtZW50SW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMyArMjksMTMgQEAKIAogI2lt
cG9ydCA8V2ViS2l0L19XS0VsZW1lbnRJbmZvLmg+CiAKLVdLX0FTU1VNRV9OT05OVUxMX0JFR0lO
CitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiBXS19DTEFTU19BVkFJTEFCTEUoTkEsIFdLX0lP
U19UQkEpCiBAaW50ZXJmYWNlIF9XS1ByZXZpZXdFbGVtZW50SW5mbyA6IF9XS0VsZW1lbnRJbmZv
CiAKIEBlbmQKIAotV0tfQVNTVU1FX05PTk5VTExfRU5ECitOU19BU1NVTUVfTk9OTlVMTF9FTkQK
IAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Vz
ZXJTdHlsZVNoZWV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5oCShyZXZpc2lvbiAxOTU4OTkpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
Lmg+CiAKLVdLX0FTU1VNRV9OT05OVUxMX0JFR0lOCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgog
CiBXS19DTEFTU19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSkKIEBpbnRlcmZhY2Ug
X1dLVXNlclN0eWxlU2hlZXQgOiBOU09iamVjdCA8TlNDb3B5aW5nPgpAQCAtNDIsNiArNDIsNiBA
QCBXS19DTEFTU19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCCiAKIEBlbmQKIAotV0tf
QVNTVU1FX05PTk5VTExfRU5ECitOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9tYWMvcG9zdHByb2Nlc3MtZnJhbWV3b3JrLWhlYWRlcnMuc2gKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvbWFjL3Bvc3Rwcm9jZXNzLWZyYW1ld29yay1oZWFk
ZXJzLnNoCShyZXZpc2lvbiAxOTU4OTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9tYWMvcG9zdHByb2Nl
c3MtZnJhbWV3b3JrLWhlYWRlcnMuc2gJKHdvcmtpbmcgY29weSkKQEAgLTYxLDEzICs2MSw3IEBA
IGZ1bmN0aW9uIHJld3JpdGVfaGVhZGVycyAoKSB7CiAgICAgICAgIC1lICdzL1dLX0FSUkFZXCgo
W15cKV0rKVwpL05TQXJyYXk8XDE+L2cnCiAgICAgICAgIC1lICdzL1dLX0RJQ1RJT05BUllcKChb
XlwpXSspXCkvTlNEaWN0aW9uYXJ5PFwxPi9nJwogICAgICAgICAtZSAncy9XS19TRVRcKChbXlwp
XSspXCkvTlNTZXQ8XDE+L2cnCi0gICAgICAgIC1lIHMvV0tfQVNTVU1FX05PTk5VTExfQkVHSU4v
TlNfQVNTVU1FX05PTk5VTExfQkVHSU4vCi0gICAgICAgIC1lIHMvV0tfQVNTVU1FX05PTk5VTExf
RU5EL05TX0FTU1VNRV9OT05OVUxMX0VORC8KICAgICAgICAgLWUgcy9XS19ERVNJR05BVEVEX0lO
SVRJQUxJWkVSL05TX0RFU0lHTkFURURfSU5JVElBTElaRVIvCi0gICAgICAgIC1lIHMvV0tfTlVM
TEFCTEVfUFJPUEVSVFkvbnVsbGFibGUsLwotICAgICAgICAtZSBzL1dLX05VTExBQkxFX1NQRUNJ
RklFUi9fX251bGxhYmxlL2cKLSAgICAgICAgLWUgcy9XS19OVUxMQUJMRS9udWxsYWJsZS9nCi0g
ICAgICAgIC1lIHMvV0tfTlVMTF9VTlNQRUNJRklFRC9udWxsX3Vuc3BlY2lmaWVkLwogICAgICAg
ICAtZSBzL1dLX1VOQVZBSUxBQkxFL05TX1VOQVZBSUxBQkxFLwogICAgICkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270330</attachid>
            <date>2016-01-30 17:45:52 -0800</date>
            <delta_ts>2016-01-30 19:05:23 -0800</delta_ts>
            <desc>Use nullability attributes and specifiers directly in the headers where possible</desc>
            <filename>bug-153718-20160130174527.patch</filename>
            <type>text/plain</type>
            <size>33454</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NTkyMCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE2LTAxLTMwICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBHZXQgcmlkIG9mIG1h
bnkgV0tfIG1hY3JvcyBmb3IgbnVsbGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzcxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9XS0ZvdW5kYXRpb24uaDog
UmVtb3ZlZCBkZWZpbml0aW9ucyBvZiBXS19BU1NVTUVfTk9OTlVMTF97QkVHSU4sIEVORH0sCisg
ICAgICAgICAgV0tfTlVMTEFCTEUsIFdLX05VTExfVU5TUEVDSUZJRUQsIGFuZCBXS19OVUxMQUJM
RV9QUk9QRVJUWS4gUmVtb3ZlZCB0aGUKKyAgICAgICAgICAhX19oYXNfZmVhdHVyZShhc3N1bWVf
bm9ubnVsbCkgY2FzZS4KKworICAgICAgICAqIG1hYy9wb3N0cHJvY2Vzcy1mcmFtZXdvcmstaGVh
ZGVycy5zaDogUmVtb3ZlZCBydWxlcyBmb3IgcmV3cml0aW5nIHRoZSBhYm92ZSBtYWNyb3MuIEFs
c28KKyAgICAgICAgICBjaGFuZWdkIHRvIHJld3JpdGUgV0tfTlVMTEFCTEVfU1BFQ0lGSUVSIHRv
IHRoZSBtb2Rlcm4gX051bGxhYmxlIGluc3RlYWQgb2YgX19udWxsYWJsZS4KKworICAgICAgICBS
ZXBsYWNlZCBpbnN0YW5jZXMgb2YgdGhlIGFib3ZlIG1hY3JvcyB3aXRoIHRoZWlyIGV4cGFuc2lv
bnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQmFja0ZvcndhcmRMaXN0Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRXJyb3IuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS05hdmlnYXRpb25BY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLTmF2aWdhdGlvbkRlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S05hdmlnYXRpb25SZXNwb25zZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tT
Y3JpcHRNZXNzYWdlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1l
c3NhZ2VIYW5kbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NlY3VyaXR5
T3JpZ2luLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dpbmRvd0ZlYXR1cmVzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tD
b250ZXh0TWVudUVsZW1lbnRJbmZvLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tFbGVtZW50SW5mby5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJldmll
d0VsZW1lbnRJbmZvLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5
bGVTaGVldC5oOgorCiAyMDE2LTAxLTMwICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2ZXJ0ZWQgcjE5NTkxNCwgYmVjYXVzZSBhdCBsZWFzdCBvbmUgb2YgdGhl
IGJ1aWxkLndlYmtpdC5vcmcgYnVpbGRlcnMgc3RpbGwgdXNlcyBhIGNvbXBpbGVyIHRoYXQgZG9l
c27igJl0IHVuZGVyc3RhbmQgX051bGxhYmxlLgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9Db2NvYS9XS0ZvdW5kYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL0NvY29hL1dLRm91bmRhdGlvbi5oCShyZXZpc2lvbiAxOTU5MjApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dLRm91bmRhdGlvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC04MiwzNiArODIsNyBAQAogI2RlZmluZSBXS19VTkFWQUlMQUJMRQogI2VuZGlmCiAKLSNp
ZiBfX2hhc19mZWF0dXJlKGFzc3VtZV9ub25udWxsKQotCi0jaWZkZWYgTlNfQVNTVU1FX05PTk5V
TExfQkVHSU4KLSNkZWZpbmUgV0tfQVNTVU1FX05PTk5VTExfQkVHSU4gTlNfQVNTVU1FX05PTk5V
TExfQkVHSU4KLSNlbHNlCi0jZGVmaW5lIFdLX0FTU1VNRV9OT05OVUxMX0JFR0lOIF9QcmFnbWEo
ImNsYW5nIGFzc3VtZV9ub25udWxsIGJlZ2luIikKLSNlbmRpZgotCi0jaWZkZWYgTlNfQVNTVU1F
X05PTk5VTExfRU5ECi0jZGVmaW5lIFdLX0FTU1VNRV9OT05OVUxMX0VORCBOU19BU1NVTUVfTk9O
TlVMTF9FTkQKLSNlbHNlCi0jZGVmaW5lIFdLX0FTU1VNRV9OT05OVUxMX0VORCBfUHJhZ21hKCJj
bGFuZyBhc3N1bWVfbm9ubnVsbCBlbmQiKQotI2VuZGlmCi0KLSNkZWZpbmUgV0tfTlVMTEFCTEUg
bnVsbGFibGUKLSNkZWZpbmUgV0tfTlVMTF9VTlNQRUNJRklFRCBudWxsX3Vuc3BlY2lmaWVkCiAj
ZGVmaW5lIFdLX05VTExBQkxFX1NQRUNJRklFUiBfX251bGxhYmxlCi0jZGVmaW5lIFdLX05VTExB
QkxFX1BST1BFUlRZIG51bGxhYmxlLAotCi0jZWxzZQotCi0jZGVmaW5lIFdLX0FTU1VNRV9OT05O
VUxMX0JFR0lOCi0jZGVmaW5lIFdLX0FTU1VNRV9OT05OVUxMX0VORAotCi0jZGVmaW5lIFdLX05V
TExBQkxFCi0jZGVmaW5lIFdLX05VTExfVU5TUEVDSUZJRUQKLSNkZWZpbmUgV0tfTlVMTEFCTEVf
U1BFQ0lGSUVSCi0jZGVmaW5lIFdLX05VTExBQkxFX1BST1BFUlRZCi0KLSNlbmRpZgogCiAjZW5k
aWYKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0JhY2tGb3J3
YXJkTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tCYWNrRm9yd2FyZExpc3QuaAkocmV2aXNpb24gMTk1OTIwKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0JhY2tGb3J3YXJkTGlzdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiwyNCArMzIsMjQgQEAKIC8qISBAYWJzdHJhY3QgQSBXS0JhY2tGb3J3YXJkTGlzdCBv
YmplY3QgaXMgYSBsaXN0IG9mIHdlYnBhZ2VzIHByZXZpb3VzbHkKICB2aXNpdGVkIGluIGEgd2Vi
IHZpZXcgdGhhdCBjYW4gYmUgcmVhY2hlZCBieSBnb2luZyBiYWNrIG9yIGZvcndhcmQuCiAgKi8K
LVdLX0FTU1VNRV9OT05OVUxMX0JFR0lOCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiBXS19D
TEFTU19BVkFJTEFCTEUoMTBfMTAsIDhfMCkKIEBpbnRlcmZhY2UgV0tCYWNrRm9yd2FyZExpc3Qg
OiBOU09iamVjdAogCiAvKiEgQGFic3RyYWN0IFRoZSBjdXJyZW50IGl0ZW0uCiAgKi8KLUBwcm9w
ZXJ0eSAoV0tfTlVMTEFCTEVfUFJPUEVSVFkgbm9uYXRvbWljLCByZWFkb25seSwgc3Ryb25nKSBX
S0JhY2tGb3J3YXJkTGlzdEl0ZW0gKmN1cnJlbnRJdGVtOworQHByb3BlcnR5IChudWxsYWJsZSwg
bm9uYXRvbWljLCByZWFkb25seSwgc3Ryb25nKSBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKmN1cnJl
bnRJdGVtOwogCiAvKiEgQGFic3RyYWN0IFRoZSBpdGVtIGltbWVkaWF0ZWx5IHByZWNlZGluZyB0
aGUgY3VycmVudCBpdGVtLCBvciBuaWwKIGlmIHRoZXJlIGlzbid0IG9uZS4KICAqLwotQHByb3Bl
cnR5IChXS19OVUxMQUJMRV9QUk9QRVJUWSBub25hdG9taWMsIHJlYWRvbmx5LCBzdHJvbmcpIFdL
QmFja0ZvcndhcmRMaXN0SXRlbSAqYmFja0l0ZW07CitAcHJvcGVydHkgKG51bGxhYmxlLCBub25h
dG9taWMsIHJlYWRvbmx5LCBzdHJvbmcpIFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqYmFja0l0ZW07
CiAKIC8qISBAYWJzdHJhY3QgVGhlIGl0ZW0gaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRoZSBjdXJy
ZW50IGl0ZW0sIG9yIG5pbAogaWYgdGhlcmUgaXNuJ3Qgb25lLgogICovCi1AcHJvcGVydHkgKFdL
X05VTExBQkxFX1BST1BFUlRZIG5vbmF0b21pYywgcmVhZG9ubHksIHN0cm9uZykgV0tCYWNrRm9y
d2FyZExpc3RJdGVtICpmb3J3YXJkSXRlbTsKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIG5vbmF0b21p
YywgcmVhZG9ubHksIHN0cm9uZykgV0tCYWNrRm9yd2FyZExpc3RJdGVtICpmb3J3YXJkSXRlbTsK
IAogLyohIEBhYnN0cmFjdCBSZXR1cm5zIHRoZSBpdGVtIGF0IGEgc3BlY2lmaWVkIGRpc3RhbmNl
IGZyb20gdGhlIGN1cnJlbnQKICBpdGVtLgpAQCAtNTksNyArNTksNyBAQCBpZiB0aGVyZSBpc24n
dCBvbmUuCiAgQHJlc3VsdCBUaGUgaXRlbSBhdCB0aGUgc3BlY2lmaWVkIGRpc3RhbmNlIGZyb20g
dGhlIGN1cnJlbnQgaXRlbSwgb3IgbmlsCiAgaWYgdGhlIGluZGV4IHBhcmFtZXRlciBleGNlZWRz
IHRoZSBsaW1pdHMgb2YgdGhlIGxpc3QuCiAgKi8KLS0gKFdLX05VTExBQkxFIFdLQmFja0Zvcndh
cmRMaXN0SXRlbSAqKWl0ZW1BdEluZGV4OihOU0ludGVnZXIpaW5kZXg7CistIChudWxsYWJsZSBX
S0JhY2tGb3J3YXJkTGlzdEl0ZW0gKilpdGVtQXRJbmRleDooTlNJbnRlZ2VyKWluZGV4OwogCiAv
KiEgQGFic3RyYWN0IFRoZSBwb3J0aW9uIG9mIHRoZSBsaXN0IHByZWNlZGluZyB0aGUgY3VycmVu
dCBpdGVtLgogIEBkaXNjdXNzaW9uIFRoZSBpdGVtcyBhcmUgaW4gdGhlIG9yZGVyIGluIHdoaWNo
IHRoZXkgd2VyZSBvcmlnaW5hbGx5CkBAIC03NSw2ICs3NSw2IEBAIGlmIHRoZXJlIGlzbid0IG9u
ZS4KIAogQGVuZAogCi1XS19BU1NVTUVfTk9OTlVMTF9FTkQKK05TX0FTU1VNRV9OT05OVUxMX0VO
RAogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tC
YWNrRm9yd2FyZExpc3RJdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaAkocmV2aXNpb24gMTk1OTIwKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0JhY2tGb3J3YXJkTGlzdEl0
ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogCiAvKiEgQSBXS0JhY2tGb3J3
YXJkTGlzdEl0ZW0gb2JqZWN0IHJlcHJlc2VudHMgYSB3ZWJwYWdlIGluIHRoZSBiYWNrLWZvcndh
cmQgbGlzdCBvZiBhIHdlYiB2aWV3LgogICovCi1XS19BU1NVTUVfTk9OTlVMTF9CRUdJTgorTlNf
QVNTVU1FX05PTk5VTExfQkVHSU4KIAogV0tfQ0xBU1NfQVZBSUxBQkxFKDEwXzEwLCA4XzApCiBA
aW50ZXJmYWNlIFdLQmFja0ZvcndhcmRMaXN0SXRlbSA6IE5TT2JqZWN0CkBAIC00Miw3ICs0Miw3
IEBAIFdLX0NMQVNTX0FWQUlMQUJMRSgxMF8xMCwgOF8wKQogCiAvKiEgQGFic3RyYWN0IFRoZSB0
aXRsZSBvZiB0aGUgd2VicGFnZSByZXByZXNlbnRlZCBieSB0aGlzIGl0ZW0uCiAgKi8KLUBwcm9w
ZXJ0eSAoV0tfTlVMTEFCTEVfUFJPUEVSVFkgcmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICp0aXRs
ZTsKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqdGl0bGU7
CiAKIC8qISBAYWJzdHJhY3QgVGhlIFVSTCBvZiB0aGUgaW5pdGlhbCByZXF1ZXN0IHRoYXQgY3Jl
YXRlZCB0aGlzIGl0ZW0uCiAgKi8KQEAgLTUwLDYgKzUwLDYgQEAgV0tfQ0xBU1NfQVZBSUxBQkxF
KDEwXzEwLCA4XzApCiAKIEBlbmQKIAotV0tfQVNTVU1FX05PTk5VTExfRU5ECitOU19BU1NVTUVf
Tk9OTlVMTF9FTkQKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLRXJyb3IuaAkocmV2aXNpb24gMTk1OTIwKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Vycm9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5
LDcgQEAKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAKLVdLX0FTU1VNRV9O
T05OVUxMX0JFR0lOCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiAvKiEgQGNvbnN0YW50IFdL
RXJyb3JEb21haW4gSW5kaWNhdGVzIGEgV2ViS2l0IGVycm9yLiAqLwogV0tfRVhURVJOIE5TU3Ry
aW5nICogY29uc3QgV0tFcnJvckRvbWFpbiBXS19BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CkBAIC01
MCw2ICs1MCw2IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLRXJyb3JDb2RlKSAKICAg
ICBXS0Vycm9ySmF2YVNjcmlwdFJlc3VsdFR5cGVJc1Vuc3VwcG9ydGVkIFdLX0VOVU1fQVZBSUxB
QkxFKDEwXzExLCA5XzApLAogfSBXS19FTlVNX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKIAotV0tf
QVNTVU1FX05PTk5VTExfRU5ECitOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZyYW1lSW5mby5o
CShyZXZpc2lvbiAxOTU5MjApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLRnJhbWVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICBpdCBkb2Vz
IG5vdCB1bmlxdWVseSBpZGVudGlmeSBhIGZyYW1lIGFjcm9zcyBtdWx0aXBsZSBkZWxlZ2F0ZSBt
ZXRob2QKICBjYWxscy4KICAqLwotV0tfQVNTVU1FX05PTk5VTExfQkVHSU4KK05TX0FTU1VNRV9O
T05OVUxMX0JFR0lOCiAKIFdLX0NMQVNTX0FWQUlMQUJMRSgxMF8xMCwgOF8wKQogQGludGVyZmFj
ZSBXS0ZyYW1lSW5mbyA6IE5TT2JqZWN0IDxOU0NvcHlpbmc+CkBAIC01NSw2ICs1NSw2IEBAIFdL
X0NMQVNTX0FWQUlMQUJMRSgxMF8xMCwgOF8wKQogCiBAZW5kCiAKLVdLX0FTU1VNRV9OT05OVUxM
X0VORAorTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5o
CShyZXZpc2lvbiAxOTU5MjApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLTmF2aWdhdGlvbkFjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAj
aW1wb3J0IDxBcHBLaXQvQXBwS2l0Lmg+CiAjZW5kaWYKIAotV0tfQVNTVU1FX05PTk5VTExfQkVH
SU4KK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIEBjbGFzcyBXS0ZyYW1lSW5mbzsKIApAQCAt
NjcsNyArNjcsNyBAQCBXS19DTEFTU19BVkFJTEFCTEUoMTBfMTAsIDhfMCkKIAogLyohIEBhYnN0
cmFjdCBUaGUgdGFyZ2V0IGZyYW1lLCBvciBuaWwgaWYgdGhpcyBpcyBhIG5ldyB3aW5kb3cgbmF2
aWdhdGlvbi4KICAqLwotQHByb3BlcnR5IChXS19OVUxMQUJMRV9QUk9QRVJUWSBub25hdG9taWMs
IHJlYWRvbmx5LCBjb3B5KSBXS0ZyYW1lSW5mbyAqdGFyZ2V0RnJhbWU7CitAcHJvcGVydHkgKG51
bGxhYmxlLCBub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBXS0ZyYW1lSW5mbyAqdGFyZ2V0RnJh
bWU7CiAKIC8qISBAYWJzdHJhY3QgVGhlIHR5cGUgb2YgYWN0aW9uIHRoYXQgdHJpZ2dlcmVkIHRo
ZSBuYXZpZ2F0aW9uLgogIEBkaXNjdXNzaW9uIFRoZSB2YWx1ZSBpcyBvbmUgb2YgdGhlIGNvbnN0
YW50cyBvZiB0aGUgZW51bWVyYXRlZCB0eXBlIFdLTmF2aWdhdGlvblR5cGUuCkBAIC05Miw2ICs5
Miw2IEBAIFdLX0NMQVNTX0FWQUlMQUJMRSgxMF8xMCwgOF8wKQogCiBAZW5kCiAKLVdLX0FTU1VN
RV9OT05OVUxMX0VORAorTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0
aW9uRGVsZWdhdGUuaAkocmV2aXNpb24gMTk1OTIwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw3ICsyOSw3IEBACiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCi1XS19B
U1NVTUVfTk9OTlVMTF9CRUdJTgorTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGNsYXNzIFdL
TmF2aWdhdGlvbjsKIEBjbGFzcyBXS05hdmlnYXRpb25BY3Rpb247CkBAIC05MCwxNCArOTAsMTQg
QEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tOYXZpZ2F0aW9uUgogIEBwYXJhbSB3ZWJW
aWV3IFRoZSB3ZWIgdmlldyBpbnZva2luZyB0aGUgZGVsZWdhdGUgbWV0aG9kLgogIEBwYXJhbSBu
YXZpZ2F0aW9uIFRoZSBuYXZpZ2F0aW9uLgogICovCi0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb246KFdLX05VTExfVU5TUEVD
SUZJRUQgV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbjsKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbjoobnVsbF91bnNwZWNp
ZmllZCBXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uOwogCiAvKiEgQGFic3RyYWN0IEludm9rZWQg
d2hlbiBhIHNlcnZlciByZWRpcmVjdCBpcyByZWNlaXZlZCBmb3IgdGhlIG1haW4KICBmcmFtZS4K
ICBAcGFyYW0gd2ViVmlldyBUaGUgd2ViIHZpZXcgaW52b2tpbmcgdGhlIGRlbGVnYXRlIG1ldGhv
ZC4KICBAcGFyYW0gbmF2aWdhdGlvbiBUaGUgbmF2aWdhdGlvbi4KICAqLwotLSAodm9pZCl3ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTmF2aWdhdGlvbjooV0tfTlVMTF9VTlNQRUNJRklFRCBXS05hdmlnYXRpb24gKiluYXZp
Z2F0aW9uOworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbjoobnVsbF91bnNwZWNpZmllZCBX
S05hdmlnYXRpb24gKiluYXZpZ2F0aW9uOwogCiAvKiEgQGFic3RyYWN0IEludm9rZWQgd2hlbiBh
biBlcnJvciBvY2N1cnMgd2hpbGUgc3RhcnRpbmcgdG8gbG9hZCBkYXRhIGZvcgogIHRoZSBtYWlu
IGZyYW1lLgpAQCAtMTA1LDE5ICsxMDUsMTkgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwg
V0tOYXZpZ2F0aW9uUgogIEBwYXJhbSBuYXZpZ2F0aW9uIFRoZSBuYXZpZ2F0aW9uLgogIEBwYXJh
bSBlcnJvciBUaGUgZXJyb3IgdGhhdCBvY2N1cnJlZC4KICAqLwotLSAodm9pZCl3ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246KFdLX05VTExf
VU5TUEVDSUZJRUQgV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbiB3aXRoRXJyb3I6KE5TRXJyb3Ig
KillcnJvcjsKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGYWlsUHJv
dmlzaW9uYWxOYXZpZ2F0aW9uOihudWxsX3Vuc3BlY2lmaWVkIFdLTmF2aWdhdGlvbiAqKW5hdmln
YXRpb24gd2l0aEVycm9yOihOU0Vycm9yICopZXJyb3I7CiAKIC8qISBAYWJzdHJhY3QgSW52b2tl
ZCB3aGVuIGNvbnRlbnQgc3RhcnRzIGFycml2aW5nIGZvciB0aGUgbWFpbiBmcmFtZS4KICBAcGFy
YW0gd2ViVmlldyBUaGUgd2ViIHZpZXcgaW52b2tpbmcgdGhlIGRlbGVnYXRlIG1ldGhvZC4KICBA
cGFyYW0gbmF2aWdhdGlvbiBUaGUgbmF2aWdhdGlvbi4KICAqLwotLSAodm9pZCl3ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IGRpZENvbW1pdE5hdmlnYXRpb246KFdLX05VTExfVU5TUEVDSUZJ
RUQgV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbjsKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBkaWRDb21taXROYXZpZ2F0aW9uOihudWxsX3Vuc3BlY2lmaWVkIFdLTmF2aWdh
dGlvbiAqKW5hdmlnYXRpb247CiAKIC8qISBAYWJzdHJhY3QgSW52b2tlZCB3aGVuIGEgbWFpbiBm
cmFtZSBuYXZpZ2F0aW9uIGNvbXBsZXRlcy4KICBAcGFyYW0gd2ViVmlldyBUaGUgd2ViIHZpZXcg
aW52b2tpbmcgdGhlIGRlbGVnYXRlIG1ldGhvZC4KICBAcGFyYW0gbmF2aWdhdGlvbiBUaGUgbmF2
aWdhdGlvbi4KICAqLwotLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZp
bmlzaE5hdmlnYXRpb246KFdLX05VTExfVU5TUEVDSUZJRUQgV0tOYXZpZ2F0aW9uICopbmF2aWdh
dGlvbjsKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZp
Z2F0aW9uOihudWxsX3Vuc3BlY2lmaWVkIFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb247CiAKIC8q
ISBAYWJzdHJhY3QgSW52b2tlZCB3aGVuIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgYSBjb21taXR0
ZWQgbWFpbiBmcmFtZQogIG5hdmlnYXRpb24uCkBAIC0xMjUsNyArMTI1LDcgQEAgdHlwZWRlZiBO
U19FTlVNKE5TSW50ZWdlciwgV0tOYXZpZ2F0aW9uUgogIEBwYXJhbSBuYXZpZ2F0aW9uIFRoZSBu
YXZpZ2F0aW9uLgogIEBwYXJhbSBlcnJvciBUaGUgZXJyb3IgdGhhdCBvY2N1cnJlZC4KICAqLwot
LSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZhaWxOYXZpZ2F0aW9uOihX
S19OVUxMX1VOU1BFQ0lGSUVEIFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24gd2l0aEVycm9yOihO
U0Vycm9yICopZXJyb3I7CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlk
RmFpbE5hdmlnYXRpb246KG51bGxfdW5zcGVjaWZpZWQgV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlv
biB3aXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcjsKIAogLyohIEBhYnN0cmFjdCBJbnZva2VkIHdo
ZW4gdGhlIHdlYiB2aWV3IG5lZWRzIHRvIHJlc3BvbmQgdG8gYW4gYXV0aGVudGljYXRpb24gY2hh
bGxlbmdlLgogIEBwYXJhbSB3ZWJWaWV3IFRoZSB3ZWIgdmlldyB0aGF0IHJlY2VpdmVkIHRoZSBh
dXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UuCkBAIC0xNDYsNiArMTQ2LDYgQEAgdHlwZWRlZiBOU19F
TlVNKE5TSW50ZWdlciwgV0tOYXZpZ2F0aW9uUgogCiBAZW5kCiAKLVdLX0FTU1VNRV9OT05OVUxM
X0VORAorTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25SZXNwb25zZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uUmVzcG9u
c2UuaAkocmV2aXNpb24gMTk1OTIwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS05hdmlnYXRpb25SZXNwb25zZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3
IEBACiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCi1XS19BU1NVTUVfTk9O
TlVMTF9CRUdJTgorTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGNsYXNzIFdLRnJhbWVJbmZv
OwogCkBAIC01Myw2ICs1Myw2IEBAIFdLX0NMQVNTX0FWQUlMQUJMRSgxMF8xMCwgOF8wKQogCiBA
ZW5kCiAKLVdLX0FTU1VNRV9OT05OVUxMX0VORAorTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1l
c3NhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLU2NyaXB0TWVzc2FnZS5oCShyZXZpc2lvbiAxOTU5MjApCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw3ICsyOSw3IEBACiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCi1XS19B
U1NVTUVfTk9OTlVMTF9CRUdJTgorTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGNsYXNzIFdL
RnJhbWVJbmZvOwogQGNsYXNzIFdLV2ViVmlldzsKQEAgLTQ3LDcgKzQ3LDcgQEAgV0tfQ0xBU1Nf
QVZBSUxBQkxFKDEwXzEwLCA4XzApCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNv
cHkpIGlkIGJvZHk7CiAKIC8qISBAYWJzdHJhY3QgVGhlIHdlYiB2aWV3IHNlbmRpbmcgdGhlIG1l
c3NhZ2UuICovCi1AcHJvcGVydHkgKFdLX05VTExBQkxFX1BST1BFUlRZIG5vbmF0b21pYywgcmVh
ZG9ubHksIHdlYWspIFdLV2ViVmlldyAqd2ViVmlldzsKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIG5v
bmF0b21pYywgcmVhZG9ubHksIHdlYWspIFdLV2ViVmlldyAqd2ViVmlldzsKIAogLyohIEBhYnN0
cmFjdCBUaGUgZnJhbWUgc2VuZGluZyB0aGUgbWVzc2FnZS4gKi8KIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSwgY29weSkgV0tGcmFtZUluZm8gKmZyYW1lSW5mbzsKQEAgLTU4LDYgKzU4
LDYgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKDEwXzEwLCA4XzApCiAKIEBlbmQKIAotV0tfQVNTVU1F
X05PTk5VTExfRU5ECitOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUhhbmRsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0
TWVzc2FnZUhhbmRsZXIuaAkocmV2aXNpb24gMTk1OTIwKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDcgKzI5LDcgQEAKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAK
LVdLX0FTU1VNRV9OT05OVUxMX0JFR0lOCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiBAY2xh
c3MgV0tTY3JpcHRNZXNzYWdlOwogQGNsYXNzIFdLVXNlckNvbnRlbnRDb250cm9sbGVyOwpAQCAt
NTAsNiArNTAsNiBAQCBXS19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiBAZW5kCiAKLVdLX0FTU1VN
RV9OT05OVUxMX0VORAorTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NlY3VyaXR5T3JpZ2luLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NlY3VyaXR5T3Jp
Z2luLmgJKHJldmlzaW9uIDE5NTkyMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tTZWN1cml0eU9yaWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBA
CiAgaXQgZG9lcyBub3QgdW5pcXVlbHkgaWRlbnRpZnkgYSBzZWN1cml0eSBvcmlnaW4gYWNyb3Nz
IG11bHRpcGxlIGRlbGVnYXRlIG1ldGhvZAogIGNhbGxzLgogICovCi1XS19BU1NVTUVfTk9OTlVM
TF9CRUdJTgorTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogV0tfQ0xBU1NfQVZBSUxBQkxFKDEw
XzExLCA5XzApCiBAaW50ZXJmYWNlIFdLU2VjdXJpdHlPcmlnaW4gOiBOU09iamVjdApAQCAtNTUs
NiArNTUsNiBAQCBXS19DTEFTU19BVkFJTEFCTEUoMTBfMTEsIDlfMCkKIAogQGVuZAogCi1XS19B
U1NVTUVfTk9OTlVMTF9FTkQKK05TX0FTU1VNRV9OT05OVUxMX0VORAogCiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGUu
aAkocmV2aXNpb24gMTk1OTIwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VJRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogCiAjaW1w
b3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAotV0tfQVNTVU1FX05PTk5VTExfQkVHSU4K
K05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIEBjbGFzcyBXS0ZyYW1lSW5mbzsKIEBjbGFzcyBX
S05hdmlnYXRpb25BY3Rpb247CkBAIC01NSw3ICs1NSw3IEBAIFdLX0FTU1VNRV9OT05OVUxMX0JF
R0lOCiAKICBJZiB5b3UgZG8gbm90IGltcGxlbWVudCB0aGlzIG1ldGhvZCwgdGhlIHdlYiB2aWV3
IHdpbGwgY2FuY2VsIHRoZSBuYXZpZ2F0aW9uLgogICovCi0tIChXS19OVUxMQUJMRSBXS1dlYlZp
ZXcgKil3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNyZWF0ZVdlYlZpZXdXaXRoQ29uZmln
dXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gZm9yTmF2aWdh
dGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiB3aW5kb3dG
ZWF0dXJlczooV0tXaW5kb3dGZWF0dXJlcyAqKXdpbmRvd0ZlYXR1cmVzOworLSAobnVsbGFibGUg
V0tXZWJWaWV3ICopd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjcmVhdGVXZWJWaWV3V2l0
aENvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uIGZv
ck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24g
d2luZG93RmVhdHVyZXM6KFdLV2luZG93RmVhdHVyZXMgKil3aW5kb3dGZWF0dXJlczsKIAogLyoh
IEBhYnN0cmFjdCBOb3RpZmllcyB5b3VyIGFwcCB0aGF0IHRoZSBET00gd2luZG93IG9iamVjdCdz
IGNsb3NlKCkgbWV0aG9kIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCiAgIEBwYXJhbSB3ZWJWaWV3
IFRoZSB3ZWIgdmlldyBpbnZva2luZyB0aGUgZGVsZWdhdGUgbWV0aG9kLgpAQCAtMTEyLDEwICsx
MTIsMTAgQEAgV0tfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogIElmIHlvdSBkbyBub3QgaW1wbGVt
ZW50IHRoaXMgbWV0aG9kLCB0aGUgd2ViIHZpZXcgd2lsbCBiZWhhdmUgYXMgaWYgdGhlIHVzZXIg
c2VsZWN0ZWQgdGhlIENhbmNlbCBidXR0b24uCiAgKi8KLS0gKHZvaWQpd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0OihOU1N0
cmluZyAqKXByb21wdCBkZWZhdWx0VGV4dDooV0tfTlVMTEFCTEUgTlNTdHJpbmcgKilkZWZhdWx0
VGV4dCBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShOU1N0cmluZyAqIFdLX05VTExBQkxFX1NQRUNJRklFUiByZXN1bHQpKWNv
bXBsZXRpb25IYW5kbGVyOworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1
bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQ6KE5TU3RyaW5nICopcHJvbXB0IGRl
ZmF1bHRUZXh0OihudWxsYWJsZSBOU1N0cmluZyAqKWRlZmF1bHRUZXh0IGluaXRpYXRlZEJ5RnJh
bWU6KFdLRnJhbWVJbmZvICopZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3Ry
aW5nICogV0tfTlVMTEFCTEVfU1BFQ0lGSUVSIHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXI7CiAK
IEBlbmQKIAotV0tfQVNTVU1FX05PTk5VTExfRU5ECitOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNv
bnRlbnRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5oCShyZXZpc2lvbiAxOTU5MjApCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9s
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2ltcG9ydCA8Rm91bmRh
dGlvbi9Gb3VuZGF0aW9uLmg+CiAKLVdLX0FTU1VNRV9OT05OVUxMX0JFR0lOCitOU19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgogCiBAY2xhc3MgV0tVc2VyU2NyaXB0OwogQHByb3RvY29sIFdLU2NyaXB0
TWVzc2FnZUhhbmRsZXI7CkBAIC03Miw2ICs3Miw2IEBAIFdLX0NMQVNTX0FWQUlMQUJMRSgxMF8x
MCwgOF8wKQogCiBAZW5kCiAKLVdLX0FTU1VNRV9OT05OVUxMX0VORAorTlNfQVNTVU1FX05PTk5V
TExfRU5ECiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VzZXJTY3JpcHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLVXNlclNjcmlwdC5oCShyZXZpc2lvbiAxOTU5MjApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw3ICszNCw3IEBACiAgQGNvbnN0YW50IFdLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERv
Y3VtZW50U3RhcnQgICAgSW5qZWN0IHRoZSBzY3JpcHQgYWZ0ZXIgdGhlIGRvY3VtZW50IGVsZW1l
bnQgaGFzIGJlZW4gY3JlYXRlZCwgYnV0IGJlZm9yZSBhbnkgb3RoZXIgY29udGVudCBoYXMgYmVl
biBsb2FkZWQuCiAgQGNvbnN0YW50IFdLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50
RW5kICAgICAgSW5qZWN0IHRoZSBzY3JpcHQgYWZ0ZXIgdGhlIGRvY3VtZW50IGhhcyBmaW5pc2hl
ZCBsb2FkaW5nLCBidXQgYmVmb3JlIGFueSBzdWJyZXNvdXJjZXMgbWF5IGhhdmUgZmluaXNoZWQg
bG9hZGluZy4KICAqLwotV0tfQVNTVU1FX05PTk5VTExfQkVHSU4KK05TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCiAKIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLVXNlclNjcmlwdEluamVjdGlv
blRpbWUpIHsKICAgICBXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0LApA
QCAtNjQsNiArNjQsNiBAQCBXS19DTEFTU19BVkFJTEFCTEUoMTBfMTAsIDhfMCkKIAogQGVuZAog
Ci1XS19BU1NVTUVfTk9OTlVMTF9FTkQKK05TX0FTU1VNRV9OT05OVUxMX0VORAogCiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
aAkocmV2aXNpb24gMTk1OTIwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogI2ltcG9ydCA8
QXBwS2l0L0FwcEtpdC5oPgogI2VuZGlmCiAKLVdLX0FTU1VNRV9OT05OVUxMX0JFR0lOCitOU19B
U1NVTUVfTk9OTlVMTF9CRUdJTgogCiBAY2xhc3MgV0tCYWNrRm9yd2FyZExpc3Q7CiBAY2xhc3Mg
V0tCYWNrRm9yd2FyZExpc3RJdGVtOwpAQCAtNjEsMTAgKzYxLDEwIEBAIFdLX0NMQVNTX0FWQUlM
QUJMRSgxMF8xMCwgOF8wKQogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBX
S1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uOwogCiAvKiEgQGFic3RyYWN0IFRo
ZSB3ZWIgdmlldydzIG5hdmlnYXRpb24gZGVsZWdhdGUuICovCi1AcHJvcGVydHkgKFdLX05VTExB
QkxFX1BST1BFUlRZIG5vbmF0b21pYywgd2VhaykgaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPiBu
YXZpZ2F0aW9uRGVsZWdhdGU7CitAcHJvcGVydHkgKG51bGxhYmxlLCBub25hdG9taWMsIHdlYWsp
IGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4gbmF2aWdhdGlvbkRlbGVnYXRlOwogCiAvKiEgQGFi
c3RyYWN0IFRoZSB3ZWIgdmlldydzIHVzZXIgaW50ZXJmYWNlIGRlbGVnYXRlLiAqLwotQHByb3Bl
cnR5IChXS19OVUxMQUJMRV9QUk9QRVJUWSBub25hdG9taWMsIHdlYWspIGlkIDxXS1VJRGVsZWdh
dGU+IFVJRGVsZWdhdGU7CitAcHJvcGVydHkgKG51bGxhYmxlLCBub25hdG9taWMsIHdlYWspIGlk
IDxXS1VJRGVsZWdhdGU+IFVJRGVsZWdhdGU7CiAKIC8qISBAYWJzdHJhY3QgVGhlIHdlYiB2aWV3
J3MgYmFjay1mb3J3YXJkIGxpc3QuICovCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHks
IHN0cm9uZykgV0tCYWNrRm9yd2FyZExpc3QgKmJhY2tGb3J3YXJkTGlzdDsKQEAgLTg5LDcgKzg5
LDcgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKDEwXzEwLCA4XzApCiAgQHBhcmFtIHJlcXVlc3QgVGhl
IHJlcXVlc3Qgc3BlY2lmeWluZyB0aGUgVVJMIHRvIHdoaWNoIHRvIG5hdmlnYXRlLgogIEByZXN1
bHQgQSBuZXcgbmF2aWdhdGlvbiBmb3IgdGhlIGdpdmVuIHJlcXVlc3QuCiAgKi8KLS0gKFdLX05V
TExBQkxFIFdLTmF2aWdhdGlvbiAqKWxvYWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0
OworLSAobnVsbGFibGUgV0tOYXZpZ2F0aW9uICopbG9hZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAq
KXJlcXVlc3Q7CiAKIC8qISBAYWJzdHJhY3QgTmF2aWdhdGVzIHRvIHRoZSByZXF1ZXN0ZWQgZmls
ZSBVUkwgb24gdGhlIGZpbGVzeXN0ZW0uCiAgQHBhcmFtIFVSTCBUaGUgZmlsZSBVUkwgdG8gd2hp
Y2ggdG8gbmF2aWdhdGUuCkBAIC05OCwxNCArOTgsMTQgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKDEw
XzEwLCA4XzApCiAgSWYgcmVhZEFjY2Vzc1VSTCByZWZlcmVuY2VzIGEgZGlyZWN0b3J5LCBmaWxl
cyBpbnNpZGUgdGhhdCBmaWxlIG1heSBiZSBsb2FkZWQgYnkgV2ViS2l0LgogIEByZXN1bHQgQSBu
ZXcgbmF2aWdhdGlvbiBmb3IgdGhlIGdpdmVuIGZpbGUgVVJMLgogICovCi0tIChXS19OVUxMQUJM
RSBXS05hdmlnYXRpb24gKilsb2FkRmlsZVVSTDooTlNVUkwgKilVUkwgYWxsb3dpbmdSZWFkQWNj
ZXNzVG9VUkw6KE5TVVJMICopcmVhZEFjY2Vzc1VSTCBXS19BVkFJTEFCTEUoMTBfMTEsIDlfMCk7
CistIChudWxsYWJsZSBXS05hdmlnYXRpb24gKilsb2FkRmlsZVVSTDooTlNVUkwgKilVUkwgYWxs
b3dpbmdSZWFkQWNjZXNzVG9VUkw6KE5TVVJMICopcmVhZEFjY2Vzc1VSTCBXS19BVkFJTEFCTEUo
MTBfMTEsIDlfMCk7CiAKIC8qISBAYWJzdHJhY3QgU2V0cyB0aGUgd2VicGFnZSBjb250ZW50cyBh
bmQgYmFzZSBVUkwuCiAgQHBhcmFtIHN0cmluZyBUaGUgc3RyaW5nIHRvIHVzZSBhcyB0aGUgY29u
dGVudHMgb2YgdGhlIHdlYnBhZ2UuCiAgQHBhcmFtIGJhc2VVUkwgQSBVUkwgdGhhdCBpcyB1c2Vk
IHRvIHJlc29sdmUgcmVsYXRpdmUgVVJMcyB3aXRoaW4gdGhlIGRvY3VtZW50LgogIEByZXN1bHQg
QSBuZXcgbmF2aWdhdGlvbi4KICAqLwotLSAoV0tfTlVMTEFCTEUgV0tOYXZpZ2F0aW9uICopbG9h
ZEhUTUxTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGJhc2VVUkw6KFdLX05VTExBQkxFIE5TVVJM
ICopYmFzZVVSTDsKKy0gKG51bGxhYmxlIFdLTmF2aWdhdGlvbiAqKWxvYWRIVE1MU3RyaW5nOihO
U1N0cmluZyAqKXN0cmluZyBiYXNlVVJMOihudWxsYWJsZSBOU1VSTCAqKWJhc2VVUkw7CiAKIC8q
ISBAYWJzdHJhY3QgU2V0cyB0aGUgd2VicGFnZSBjb250ZW50cyBhbmQgYmFzZSBVUkwuCiAgQHBh
cmFtIGRhdGEgVGhlIGRhdGEgdG8gdXNlIGFzIHRoZSBjb250ZW50cyBvZiB0aGUgd2VicGFnZS4K
QEAgLTExNCw3ICsxMTQsNyBAQCBXS19DTEFTU19BVkFJTEFCTEUoMTBfMTAsIDhfMCkKICBAcGFy
YW0gYmFzZVVSTCBBIFVSTCB0aGF0IGlzIHVzZWQgdG8gcmVzb2x2ZSByZWxhdGl2ZSBVUkxzIHdp
dGhpbiB0aGUgZG9jdW1lbnQuCiAgQHJlc3VsdCBBIG5ldyBuYXZpZ2F0aW9uLgogICovCi0tIChX
S19OVUxMQUJMRSBXS05hdmlnYXRpb24gKilsb2FkRGF0YTooTlNEYXRhICopZGF0YSBNSU1FVHlw
ZTooTlNTdHJpbmcgKilNSU1FVHlwZSBjaGFyYWN0ZXJFbmNvZGluZ05hbWU6KE5TU3RyaW5nICop
Y2hhcmFjdGVyRW5jb2RpbmdOYW1lIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTCBXS19BVkFJTEFC
TEUoMTBfMTEsIDlfMCk7CistIChudWxsYWJsZSBXS05hdmlnYXRpb24gKilsb2FkRGF0YTooTlNE
YXRhICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSBjaGFyYWN0ZXJFbmNvZGlu
Z05hbWU6KE5TU3RyaW5nICopY2hhcmFjdGVyRW5jb2RpbmdOYW1lIGJhc2VVUkw6KE5TVVJMICop
YmFzZVVSTCBXS19BVkFJTEFCTEUoMTBfMTEsIDlfMCk7CiAKIC8qISBAYWJzdHJhY3QgTmF2aWdh
dGVzIHRvIGFuIGl0ZW0gZnJvbSB0aGUgYmFjay1mb3J3YXJkIGxpc3QgYW5kIHNldHMgaXQKICBh
cyB0aGUgY3VycmVudCBpdGVtLgpAQCAtMTI0LDEzICsxMjQsMTMgQEAgV0tfQ0xBU1NfQVZBSUxB
QkxFKDEwXzEwLCA4XzApCiAgdGhlIGN1cnJlbnQgaXRlbSBvciBpcyBub3QgcGFydCBvZiB0aGUg
d2ViIHZpZXcncyBiYWNrLWZvcndhcmQgbGlzdC4KICBAc2VlYWxzbyBiYWNrRm9yd2FyZExpc3QK
ICAqLwotLSAoV0tfTlVMTEFCTEUgV0tOYXZpZ2F0aW9uICopZ29Ub0JhY2tGb3J3YXJkTGlzdEl0
ZW06KFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW07CistIChudWxsYWJsZSBXS05hdmlnYXRp
b24gKilnb1RvQmFja0ZvcndhcmRMaXN0SXRlbTooV0tCYWNrRm9yd2FyZExpc3RJdGVtICopaXRl
bTsKIAogLyohIEBhYnN0cmFjdCBUaGUgcGFnZSB0aXRsZS4KICBAZGlzY3Vzc2lvbiBAbGluayBX
S1dlYlZpZXcgQC9saW5rIGlzIGtleS12YWx1ZSBvYnNlcnZpbmcgKEtWTykgY29tcGxpYW50CiAg
Zm9yIHRoaXMgcHJvcGVydHkuCiAgKi8KLUBwcm9wZXJ0eSAoV0tfTlVMTEFCTEVfUFJPUEVSVFkg
bm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKnRpdGxlOworQHByb3BlcnR5IChu
dWxsYWJsZSwgbm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKnRpdGxlOwogCiAv
KiEgQGFic3RyYWN0IFRoZSBhY3RpdmUgVVJMLgogIEBkaXNjdXNzaW9uIFRoaXMgaXMgdGhlIFVS
TCB0aGF0IHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIHVzZXIKQEAgLTEzOCw3ICsxMzgsNyBA
QCBXS19DTEFTU19BVkFJTEFCTEUoMTBfMTAsIDhfMCkKICBAbGluayBXS1dlYlZpZXcgQC9saW5r
IGlzIGtleS12YWx1ZSBvYnNlcnZpbmcgKEtWTykgY29tcGxpYW50IGZvciB0aGlzCiAgcHJvcGVy
dHkuCiAgKi8KLUBwcm9wZXJ0eSAoV0tfTlVMTEFCTEVfUFJPUEVSVFkgbm9uYXRvbWljLCByZWFk
b25seSwgY29weSkgTlNVUkwgKlVSTDsKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIG5vbmF0b21pYywg
cmVhZG9ubHksIGNvcHkpIE5TVVJMICpVUkw7CiAKIC8qISBAYWJzdHJhY3QgQSBCb29sZWFuIHZh
bHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgdmlldyBpcyBjdXJyZW50bHkKICBsb2FkaW5nIGNv
bnRlbnQuCkBAIC0xOTEsMjQgKzE5MSwyNCBAQCBXS19DTEFTU19BVkFJTEFCTEUoMTBfMTAsIDhf
MCkKICBAcmVzdWx0IEEgbmV3IG5hdmlnYXRpb24gdG8gdGhlIHJlcXVlc3RlZCBpdGVtLCBvciBu
aWwgaWYgdGhlcmUgaXMgbm8gYmFjawogIGl0ZW0gaW4gdGhlIGJhY2stZm9yd2FyZCBsaXN0Lgog
ICovCi0tIChXS19OVUxMQUJMRSBXS05hdmlnYXRpb24gKilnb0JhY2s7CistIChudWxsYWJsZSBX
S05hdmlnYXRpb24gKilnb0JhY2s7CiAKIC8qISBAYWJzdHJhY3QgTmF2aWdhdGVzIHRvIHRoZSBm
b3J3YXJkIGl0ZW0gaW4gdGhlIGJhY2stZm9yd2FyZCBsaXN0LgogIEByZXN1bHQgQSBuZXcgbmF2
aWdhdGlvbiB0byB0aGUgcmVxdWVzdGVkIGl0ZW0sIG9yIG5pbCBpZiB0aGVyZSBpcyBubwogIGZv
cndhcmQgaXRlbSBpbiB0aGUgYmFjay1mb3J3YXJkIGxpc3QuCiAgKi8KLS0gKFdLX05VTExBQkxF
IFdLTmF2aWdhdGlvbiAqKWdvRm9yd2FyZDsKKy0gKG51bGxhYmxlIFdLTmF2aWdhdGlvbiAqKWdv
Rm9yd2FyZDsKIAogLyohIEBhYnN0cmFjdCBSZWxvYWRzIHRoZSBjdXJyZW50IHBhZ2UuCiAgQHJl
c3VsdCBBIG5ldyBuYXZpZ2F0aW9uIHJlcHJlc2VudGluZyB0aGUgcmVsb2FkLgogICovCi0tIChX
S19OVUxMQUJMRSBXS05hdmlnYXRpb24gKilyZWxvYWQ7CistIChudWxsYWJsZSBXS05hdmlnYXRp
b24gKilyZWxvYWQ7CiAKIC8qISBAYWJzdHJhY3QgUmVsb2FkcyB0aGUgY3VycmVudCBwYWdlLCBw
ZXJmb3JtaW5nIGVuZC10by1lbmQgcmV2YWxpZGF0aW9uCiAgdXNpbmcgY2FjaGUtdmFsaWRhdGlu
ZyBjb25kaXRpb25hbHMgaWYgcG9zc2libGUuCiAgQHJlc3VsdCBBIG5ldyBuYXZpZ2F0aW9uIHJl
cHJlc2VudGluZyB0aGUgcmVsb2FkLgogICovCi0tIChXS19OVUxMQUJMRSBXS05hdmlnYXRpb24g
KilyZWxvYWRGcm9tT3JpZ2luOworLSAobnVsbGFibGUgV0tOYXZpZ2F0aW9uICopcmVsb2FkRnJv
bU9yaWdpbjsKIAogLyohIEBhYnN0cmFjdCBTdG9wcyBsb2FkaW5nIGFsbCByZXNvdXJjZXMgb24g
dGhlIGN1cnJlbnQgcGFnZS4KICAqLwpAQCAtMjI5LDcgKzIyOSw3IEBAIFdLX0NMQVNTX0FWQUlM
QUJMRSgxMF8xMCwgOF8wKQogCiAvKiEgQGFic3RyYWN0IFRoZSBjdXN0b20gdXNlciBhZ2VudCBz
dHJpbmcgb3IgbmlsIGlmIG5vIGN1c3RvbSB1c2VyIGFnZW50IHN0cmluZyBoYXMgYmVlbiBzZXQu
CiAqLwotQHByb3BlcnR5IChXS19OVUxMQUJMRV9QUk9QRVJUWSBub25hdG9taWMsIGNvcHkpIE5T
U3RyaW5nICpjdXN0b21Vc2VyQWdlbnQgV0tfQVZBSUxBQkxFKDEwXzExLCA5XzApOworQHByb3Bl
cnR5IChudWxsYWJsZSwgbm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqY3VzdG9tVXNlckFnZW50
IFdLX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsKIAogLyohIEBhYnN0cmFjdCBBIEJvb2xlYW4gdmFs
dWUgaW5kaWNhdGluZyB3aGV0aGVyIGxpbmsgcHJldmlldyBpcyBhbGxvd2VkIGZvciBhbnkKICBs
aW5rcyBpbnNpZGUgdGhpcyBXS1dlYlZpZXcuCkBAIC0yNzYsMzUgKzI3NiwzNSBAQCBXS19DTEFT
U19BVkFJTEFCTEUoMTBfMTAsIDhfMCkKICBiYWNrLWZvcndhcmQgbGlzdC4KICBAcGFyYW0gc2Vu
ZGVyIFRoZSBvYmplY3QgdGhhdCBzZW50IHRoaXMgbWVzc2FnZS4KICAqLwotLSAoSUJBY3Rpb24p
Z29CYWNrOihXS19OVUxMQUJMRSBpZClzZW5kZXI7CistIChJQkFjdGlvbilnb0JhY2s6KG51bGxh
YmxlIGlkKXNlbmRlcjsKIAogLyohIEBhYnN0cmFjdCBBY3Rpb24gbWV0aG9kIHRoYXQgbmF2aWdh
dGVzIHRvIHRoZSBmb3J3YXJkIGl0ZW0gaW4gdGhlCiAgYmFjay1mb3J3YXJkIGxpc3QuCiAgQHBh
cmFtIHNlbmRlciBUaGUgb2JqZWN0IHRoYXQgc2VudCB0aGlzIG1lc3NhZ2UuCiAgKi8KLS0gKElC
QWN0aW9uKWdvRm9yd2FyZDooV0tfTlVMTEFCTEUgaWQpc2VuZGVyOworLSAoSUJBY3Rpb24pZ29G
b3J3YXJkOihudWxsYWJsZSBpZClzZW5kZXI7CiAKIC8qISBAYWJzdHJhY3QgQWN0aW9uIG1ldGhv
ZCB0aGF0IHJlbG9hZHMgdGhlIGN1cnJlbnQgcGFnZS4KICBAcGFyYW0gc2VuZGVyIFRoZSBvYmpl
Y3QgdGhhdCBzZW50IHRoaXMgbWVzc2FnZS4KICAqLwotLSAoSUJBY3Rpb24pcmVsb2FkOihXS19O
VUxMQUJMRSBpZClzZW5kZXI7CistIChJQkFjdGlvbilyZWxvYWQ6KG51bGxhYmxlIGlkKXNlbmRl
cjsKIAogLyohIEBhYnN0cmFjdCBBY3Rpb24gbWV0aG9kIHRoYXQgcmVsb2FkcyB0aGUgY3VycmVu
dCBwYWdlLCBwZXJmb3JtaW5nCiAgZW5kLXRvLWVuZCByZXZhbGlkYXRpb24gdXNpbmcgY2FjaGUt
dmFsaWRhdGluZyBjb25kaXRpb25hbHMgaWYgcG9zc2libGUuCiAgQHBhcmFtIHNlbmRlciBUaGUg
b2JqZWN0IHRoYXQgc2VudCB0aGlzIG1lc3NhZ2UuCiAgKi8KLS0gKElCQWN0aW9uKXJlbG9hZEZy
b21PcmlnaW46KFdLX05VTExBQkxFIGlkKXNlbmRlcjsKKy0gKElCQWN0aW9uKXJlbG9hZEZyb21P
cmlnaW46KG51bGxhYmxlIGlkKXNlbmRlcjsKIAogLyohIEBhYnN0cmFjdCBBY3Rpb24gbWV0aG9k
IHRoYXQgc3RvcHMgbG9hZGluZyBhbGwgcmVzb3VyY2VzIG9uIHRoZSBjdXJyZW50CiAgcGFnZS4K
ICBAcGFyYW0gc2VuZGVyIFRoZSBvYmplY3QgdGhhdCBzZW50IHRoaXMgbWVzc2FnZS4KICAqLwot
LSAoSUJBY3Rpb24pc3RvcExvYWRpbmc6KFdLX05VTExBQkxFIGlkKXNlbmRlcjsKKy0gKElCQWN0
aW9uKXN0b3BMb2FkaW5nOihudWxsYWJsZSBpZClzZW5kZXI7CiAKIEBlbmQKIAogI2VuZGlmCiAK
LVdLX0FTU1VNRV9OT05OVUxMX0VORAorTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1
cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDE5NTkyMCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5oPgogCi1XS19BU1NVTUVfTk9OTlVMTF9CRUdJTgorTlNfQVNTVU1FX05PTk5VTExfQkVH
SU4KIAogQGNsYXNzIFdLUHJlZmVyZW5jZXM7CiBAY2xhc3MgV0tQcm9jZXNzUG9vbDsKQEAgLTEw
NSw3ICsxMDUsNyBAQCBXS19DTEFTU19BVkFJTEFCTEUoMTBfMTAsIDhfMCkKIAogLyohIEBhYnN0
cmFjdCBUaGUgbmFtZSBvZiB0aGUgYXBwbGljYXRpb24gYXMgdXNlZCBpbiB0aGUgdXNlciBhZ2Vu
dCBzdHJpbmcuCiAqLwotQHByb3BlcnR5IChXS19OVUxMQUJMRV9QUk9QRVJUWSBub25hdG9taWMs
IGNvcHkpIE5TU3RyaW5nICphcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgV0tfQVZBSUxBQkxF
KDEwXzExLCA5XzApOworQHByb3BlcnR5IChudWxsYWJsZSwgbm9uYXRvbWljLCBjb3B5KSBOU1N0
cmluZyAqYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50IFdLX0FWQUlMQUJMRSgxMF8xMSwgOV8w
KTsKIAogLyohIEBhYnN0cmFjdCBBIEJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIEFp
clBsYXkgaXMgYWxsb3dlZC4KICBAZGlzY3Vzc2lvbiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBZRVMu
CkBAIC0xNjAsNiArMTYwLDYgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKDEwXzEwLCA4XzApCiAKIEBl
bmQKIAotV0tfQVNTVU1FX05PTk5VTExfRU5ECitOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFSZWNvcmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFSZWNvcmQuaAkocmV2aXNpb24gMTk1OTIwKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
Lmg+CiAKLVdLX0FTU1VNRV9OT05OVUxMX0JFR0lOCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgog
CiAvKiEgQGNvbnN0YW50IFdLV2Vic2l0ZURhdGFUeXBlRGlza0NhY2hlIE9uLWRpc2sgY2FjaGVz
LiAqLwogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgV0tXZWJzaXRlRGF0YVR5cGVEaXNrQ2Fj
aGUgV0tfQVZBSUxBQkxFKDEwXzExLCA5XzApOwpAQCAtNjcsNiArNjcsNiBAQCBXS19DTEFTU19B
VkFJTEFCTEUoMTBfMTEsIDlfMCkKIAogQGVuZAogCi1XS19BU1NVTUVfTk9OTlVMTF9FTkQKK05T
X0FTU1VNRV9OT05OVUxMX0VORAogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUuaAkocmV2aXNp
b24gMTk1OTIwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogCiAjaW1wb3J0
IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVJlY29yZC5oPgogCi1XS19BU1NVTUVfTk9OTlVMTF9CRUdJ
TgorTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogLyohIEEgV0tXZWJzaXRlRGF0YVN0b3JlIHJl
cHJlc2VudHMgdmFyaW91cyB0eXBlcyBvZiBkYXRhIHRoYXQgYSB3ZWJzaXRlIG1pZ2h0CiAgbWFr
ZSB1c2Ugb2YuIFRoaXMgaW5jbHVkZXMgY29va2llcywgZGlzayBhbmQgbWVtb3J5IGNhY2hlcywg
YW5kIHBlcnNpc3RlbnQgZGF0YSBzdWNoIGFzIFdlYlNRTCwKQEAgLTc3LDYgKzc3LDYgQEAgV0tf
Q0xBU1NfQVZBSUxBQkxFKDEwXzExLCA5XzApCiAKIEBlbmQKIAotV0tfQVNTVU1FX05PTk5VTExf
RU5ECitOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2luZG93RmVhdHVyZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2luZG93RmVhdHVyZXMuaAkocmV2
aXNpb24gMTk1OTIwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dp
bmRvd0ZlYXR1cmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDQ1ICszMSw0NSBAQAogCiAvKiEg
V0tXaW5kb3dGZWF0dXJlcyBzcGVjaWZpZXMgb3B0aW9uYWwgYXR0cmlidXRlcyBmb3IgdGhlIGNv
bnRhaW5pbmcgd2luZG93IHdoZW4gYSBuZXcgV0tXZWJWaWV3IGlzIHJlcXVlc3RlZC4KICAqLwot
V0tfQVNTVU1FX05PTk5VTExfQkVHSU4KK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIFdLX0NM
QVNTX0FWQUlMQUJMRSgxMF8xMCwgOF8wKQogQGludGVyZmFjZSBXS1dpbmRvd0ZlYXR1cmVzIDog
TlNPYmplY3QKIAogLyohIEBhYnN0cmFjdCBCT09MLiBXaGV0aGVyIHRoZSBtZW51IGJhciBzaG91
bGQgYmUgdmlzaWJsZS4gbmlsIGlmIG1lbnUgYmFyIHZpc2liaWxpdHkgd2FzIG5vdCBzcGVjaWZp
ZWQuCiAgKi8KLUBwcm9wZXJ0eSAoV0tfTlVMTEFCTEVfUFJPUEVSVFkgbm9uYXRvbWljLCByZWFk
b25seSkgTlNOdW1iZXIgKm1lbnVCYXJWaXNpYmlsaXR5OworQHByb3BlcnR5IChudWxsYWJsZSwg
bm9uYXRvbWljLCByZWFkb25seSkgTlNOdW1iZXIgKm1lbnVCYXJWaXNpYmlsaXR5OwogCiAvKiEg
QGFic3RyYWN0IEJPT0wuIFdoZXRoZXIgdGhlIHN0YXR1cyBiYXIgc2hvdWxkIGJlIHZpc2libGUu
IG5pbCBpZiBzdGF0dXMgYmFyIHZpc2liaWxpdHkgd2FzIG5vdCBzcGVjaWZpZWQuCiAgKi8KLUBw
cm9wZXJ0eSAoV0tfTlVMTEFCTEVfUFJPUEVSVFkgbm9uYXRvbWljLCByZWFkb25seSkgTlNOdW1i
ZXIgKnN0YXR1c0JhclZpc2liaWxpdHk7CitAcHJvcGVydHkgKG51bGxhYmxlLCBub25hdG9taWMs
IHJlYWRvbmx5KSBOU051bWJlciAqc3RhdHVzQmFyVmlzaWJpbGl0eTsKIAogLyohIEBhYnN0cmFj
dCBCT09MLiBXaGV0aGVyIHRvb2xiYXJzIHNob3VsZCBiZSB2aXNpYmxlLiBuaWwgaWYgdG9vbGJh
ciB2aXNpYmlsaXR5IHdhcyBub3Qgc3BlY2lmaWVkLgogICovCi1AcHJvcGVydHkgKFdLX05VTExB
QkxFX1BST1BFUlRZIG5vbmF0b21pYywgcmVhZG9ubHkpIE5TTnVtYmVyICp0b29sYmFyc1Zpc2li
aWxpdHk7CitAcHJvcGVydHkgKG51bGxhYmxlLCBub25hdG9taWMsIHJlYWRvbmx5KSBOU051bWJl
ciAqdG9vbGJhcnNWaXNpYmlsaXR5OwogCiAvKiEgQGFic3RyYWN0IEJPT0wuIFdoZXRoZXIgdGhl
IGNvbnRhaW5pbmcgd2luZG93IHNob3VsZCBiZSByZXNpemFibGUuIG5pbCBpZiByZXNpemFiaWxp
dHkgd2FzIG5vdCBzcGVjaWZpZWQuCiAgKi8KLUBwcm9wZXJ0eSAoV0tfTlVMTEFCTEVfUFJPUEVS
VFkgbm9uYXRvbWljLCByZWFkb25seSkgTlNOdW1iZXIgKmFsbG93c1Jlc2l6aW5nOworQHByb3Bl
cnR5IChudWxsYWJsZSwgbm9uYXRvbWljLCByZWFkb25seSkgTlNOdW1iZXIgKmFsbG93c1Jlc2l6
aW5nOwogCiAvKiEgQGFic3RyYWN0IENHRmxvYXQuIFRoZSB4IGNvb3JkaW5hdGUgb2YgdGhlIGNv
bnRhaW5pbmcgd2luZG93LiBuaWwgaWYgdGhlIHggY29vcmRpbmF0ZSB3YXMgbm90IHNwZWNpZmll
ZC4KICAqLwotQHByb3BlcnR5IChXS19OVUxMQUJMRV9QUk9QRVJUWSBub25hdG9taWMsIHJlYWRv
bmx5KSBOU051bWJlciAqeDsKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIG5vbmF0b21pYywgcmVhZG9u
bHkpIE5TTnVtYmVyICp4OwogCiAvKiEgQGFic3RyYWN0IENHRmxvYXQuIFRoZSB5IGNvb3JkaW5h
dGUgb2YgdGhlIGNvbnRhaW5pbmcgd2luZG93LiBuaWwgaWYgdGhlIHkgY29vcmRpbmF0ZSB3YXMg
bm90IHNwZWNpZmllZC4KICAqLwotQHByb3BlcnR5IChXS19OVUxMQUJMRV9QUk9QRVJUWSBub25h
dG9taWMsIHJlYWRvbmx5KSBOU051bWJlciAqeTsKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIG5vbmF0
b21pYywgcmVhZG9ubHkpIE5TTnVtYmVyICp5OwogCiAvKiEgQGFic3RyYWN0IENHRmxvYXQuIFRo
ZSB3aWR0aCBjb29yZGluYXRlIG9mIHRoZSBjb250YWluaW5nIHdpbmRvdy4gbmlsIGlmIHRoZSB3
aWR0aCB3YXMgbm90IHNwZWNpZmllZC4KICAqLwotQHByb3BlcnR5IChXS19OVUxMQUJMRV9QUk9Q
RVJUWSBub25hdG9taWMsIHJlYWRvbmx5KSBOU051bWJlciAqd2lkdGg7CitAcHJvcGVydHkgKG51
bGxhYmxlLCBub25hdG9taWMsIHJlYWRvbmx5KSBOU051bWJlciAqd2lkdGg7CiAKIC8qISBAYWJz
dHJhY3QgQ0dGbG9hdC4gVGhlIGhlaWdodCBjb29yZGluYXRlIG9mIHRoZSBjb250YWluaW5nIHdp
bmRvdy4gbmlsIGlmIHRoZSBoZWlnaHQgd2FzIG5vdCBzcGVjaWZpZWQuCiAgKi8KLUBwcm9wZXJ0
eSAoV0tfTlVMTEFCTEVfUFJPUEVSVFkgbm9uYXRvbWljLCByZWFkb25seSkgTlNOdW1iZXIgKmhl
aWdodDsKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIG5vbmF0b21pYywgcmVhZG9ubHkpIE5TTnVtYmVy
ICpoZWlnaHQ7CiAKIEBlbmQKIAotV0tfQVNTVU1FX05PTk5VTExfRU5ECitOU19BU1NVTUVfTk9O
TlVMTF9FTkQKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0NvbnRleHRNZW51RWxlbWVudEluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0NvbnRleHRNZW51RWxlbWVudEluZm8uaAkocmV2
aXNpb24gMTk1OTIwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tD
b250ZXh0TWVudUVsZW1lbnRJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEzICsyOSwxMyBA
QAogCiAjaW1wb3J0IDxXZWJLaXQvX1dLRWxlbWVudEluZm8uaD4KIAotV0tfQVNTVU1FX05PTk5V
TExfQkVHSU4KK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIFdLX0NMQVNTX0FWQUlMQUJMRShX
S19NQUNfVEJBLCBOQSkKIEBpbnRlcmZhY2UgX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mbyA6IF9X
S0VsZW1lbnRJbmZvCiAKIEBlbmQKIAotV0tfQVNTVU1FX05PTk5VTExfRU5ECitOU19BU1NVTUVf
Tk9OTlVMTF9FTkQKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0VsZW1lbnRJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50SW5mby5oCShyZXZpc2lvbiAxOTU5MjApCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRJbmZvLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIFdLX0FQSV9FTkFCTEVECiAKLVdLX0FT
U1VNRV9OT05OVUxMX0JFR0lOCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiBXS19DTEFTU19B
VkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSkKIEBpbnRlcmZhY2UgX1dLRWxlbWVudElu
Zm8gOiBOU09iamVjdCA8TlNDb3B5aW5nPgpAQCAtMzYsNiArMzYsNiBAQCBXS19DTEFTU19BVkFJ
TEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCCiAKIEBlbmQKIAotV0tfQVNTVU1FX05PTk5VTExf
RU5ECitOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1ByZXZpZXdFbGVtZW50SW5mby5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJldmlld0VsZW1lbnRJ
bmZvLmgJKHJldmlzaW9uIDE5NTkyMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLUHJldmlld0VsZW1lbnRJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEzICsy
OSwxMyBAQAogCiAjaW1wb3J0IDxXZWJLaXQvX1dLRWxlbWVudEluZm8uaD4KIAotV0tfQVNTVU1F
X05PTk5VTExfQkVHSU4KK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIFdLX0NMQVNTX0FWQUlM
QUJMRShOQSwgV0tfSU9TX1RCQSkKIEBpbnRlcmZhY2UgX1dLUHJldmlld0VsZW1lbnRJbmZvIDog
X1dLRWxlbWVudEluZm8KIAogQGVuZAogCi1XS19BU1NVTUVfTk9OTlVMTF9FTkQKK05TX0FTU1VN
RV9OT05OVUxMX0VORAogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0LmgJKHJldmlzaW9uIDE5NTky
MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hl
ZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogCiAjaW1wb3J0IDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaD4KIAotV0tfQVNTVU1FX05PTk5VTExfQkVHSU4KK05TX0FTU1VNRV9O
T05OVUxMX0JFR0lOCiAKIFdLX0NMQVNTX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJB
KQogQGludGVyZmFjZSBfV0tVc2VyU3R5bGVTaGVldCA6IE5TT2JqZWN0IDxOU0NvcHlpbmc+CkBA
IC00Miw2ICs0Miw2IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEIK
IAogQGVuZAogCi1XS19BU1NVTUVfTk9OTlVMTF9FTkQKK05TX0FTU1VNRV9OT05OVUxMX0VORAog
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL21hYy9wb3N0cHJvY2Vzcy1mcmFtZXdvcmst
aGVhZGVycy5zaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9tYWMvcG9zdHByb2Nlc3Mt
ZnJhbWV3b3JrLWhlYWRlcnMuc2gJKHJldmlzaW9uIDE5NTkyMCkKKysrIFNvdXJjZS9XZWJLaXQy
L21hYy9wb3N0cHJvY2Vzcy1mcmFtZXdvcmstaGVhZGVycy5zaAkod29ya2luZyBjb3B5KQpAQCAt
NjEsMTMgKzYxLDggQEAgZnVuY3Rpb24gcmV3cml0ZV9oZWFkZXJzICgpIHsKICAgICAgICAgLWUg
J3MvV0tfQVJSQVlcKChbXlwpXSspXCkvTlNBcnJheTxcMT4vZycKICAgICAgICAgLWUgJ3MvV0tf
RElDVElPTkFSWVwoKFteXCldKylcKS9OU0RpY3Rpb25hcnk8XDE+L2cnCiAgICAgICAgIC1lICdz
L1dLX1NFVFwoKFteXCldKylcKS9OU1NldDxcMT4vZycKLSAgICAgICAgLWUgcy9XS19BU1NVTUVf
Tk9OTlVMTF9CRUdJTi9OU19BU1NVTUVfTk9OTlVMTF9CRUdJTi8KLSAgICAgICAgLWUgcy9XS19B
U1NVTUVfTk9OTlVMTF9FTkQvTlNfQVNTVU1FX05PTk5VTExfRU5ELwogICAgICAgICAtZSBzL1dL
X0RFU0lHTkFURURfSU5JVElBTElaRVIvTlNfREVTSUdOQVRFRF9JTklUSUFMSVpFUi8KLSAgICAg
ICAgLWUgcy9XS19OVUxMQUJMRV9QUk9QRVJUWS9udWxsYWJsZSwvCi0gICAgICAgIC1lIHMvV0tf
TlVMTEFCTEVfU1BFQ0lGSUVSL19fbnVsbGFibGUvZwotICAgICAgICAtZSBzL1dLX05VTExBQkxF
L251bGxhYmxlL2cKLSAgICAgICAgLWUgcy9XS19OVUxMX1VOU1BFQ0lGSUVEL251bGxfdW5zcGVj
aWZpZWQvCisgICAgICAgIC1lIHMvV0tfTlVMTEFCTEVfU1BFQ0lGSUVSL19OdWxsYWJsZS9nCiAg
ICAgICAgIC1lIHMvV0tfVU5BVkFJTEFCTEUvTlNfVU5BVkFJTEFCTEUvCiAgICAgKQogCg==
</data>
<flag name="review"
          id="295171"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>