<?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>128868</bug_id>
          
          <creation_ts>2014-02-15 01:15:50 -0800</creation_ts>
          <short_desc>Stop using PLATFORM(MAC) in WebKit2/UIProcess except where it means “OS X but not iOS”</short_desc>
          <delta_ts>2014-02-15 09:01:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>981145</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-02-15 01:15:50 -0800</bug_when>
    <thetext>In preparation for making PLATFORM(MAC) false when building for iOS, replace all uses that aren’t exclusive to the Mac platform with PLATFORM(COCOA) or other appropriate conditions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981149</commentid>
    <comment_count>1</comment_count>
      <attachid>224292</attachid>
    <who name="">mitz</who>
    <bug_when>2014-02-15 01:29:35 -0800</bug_when>
    <thetext>Created attachment 224292
Replace PLATFORM(MAC)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981161</commentid>
    <comment_count>2</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-02-15 09:01:39 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r164172&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224292</attachid>
            <date>2014-02-15 01:29:35 -0800</date>
            <delta_ts>2014-02-15 08:10:56 -0800</delta_ts>
            <desc>Replace PLATFORM(MAC)</desc>
            <filename>128868.diff</filename>
            <type>text/plain</type>
            <size>61928</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NDE3MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkzIEBACisyMDE0LTAyLTE1ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCB1c2luZyBQTEFURk9STShN
QUMpIGluIFdlYktpdDIvVUlQcm9jZXNzIGV4Y2VwdCB3aGVyZSBpdCBtZWFucyDigJxPUyBYIGJ1
dCBub3QgaU9T4oCdCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjg4NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOiBDaGFuZ2VkIFBMQVRGT1JNKE1BQykg
dG8gUExBVEZPUk0oQ09DT0EpLgorICAgICAgICAqIFVJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJh
c2VQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3NQcm94
eTo6ZGlkQ3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKTogQ2hhbmdlZAorICAg
ICAgICBQTEFURk9STShNQUMpIHRvIE9TKERBUldJTikgYXJvdW5kIHVzZSBvZiBNYWNoLWJhc2Vk
IElQQy4KKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHA6IENoYW5nZWQg
UExBVEZPUk0oTUFDKSB0byBQTEFURk9STShDT0NPQSkKKyAgICAgICAgKFdlYktpdDo6RHJhd2lu
Z0FyZWFQcm94eTo6RHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0RyYXdp
bmdBcmVhUHJveHkuaDogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJv
eHkubWVzc2FnZXMuaW46IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9Qcm9j
ZXNzTGF1bmNoZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmRpZEZp
bmlzaExhdW5jaGluZ1Byb2Nlc3MpOiBDaGFuZ2VkIFBMQVRGT1JNKE1BQykgdG8gT1MoREFSV0lO
KQorICAgICAgICBhcm91bmQgdXNlIG9mIE1hY2ggQVBJLgorICAgICAgICAqIFVJUHJvY2Vzcy9M
YXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaDogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmg6IENoYW5n
ZWQgUExBVEZPUk0oTUFDKSB0bworICAgICAgICBQTEFURk9STShDT0NPQSkKKyAgICAgICAgKiBV
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xh
dW5jaCk6IENoYW5nZWQgUExBVEZPUk0oTUFDKQorICAgICAgICB0byBPUyhEQVJXSU4pLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOiBDaGFuZ2VkIFBMQVRGT1JNKE1BQykgdG8gUExB
VEZPUk0oQ09DT0EpCisgICAgICAgIGFyb3VuZCBwcm9jZXNzIHN1cHByZXNzaW9uIGNhbGwuCisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOiBEaXR0by4K
KyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOiBDaGFuZ2VkIFBMQVRGT1JNKE1BQykg
dG8gUExBVEZPUk0oQ09DT0EpLgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbklu
Zm9TdG9yZS5jcHA6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NNYW5hZ2VyLmg6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6
UGx1Z2luUHJvY2Vzc1Byb3h5KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nl
c3NQcm94eTo6cGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKTogQ2hhbmdlZCBQ
TEFURk9STShNQUMpCisgICAgICAgIHRvIE9TKERBUldJTikuCisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UpOiBDaGFuZ2VkIFBMQVRGT1JNKE1BQykgdG8gUExB
VEZPUk0oQ09DT0EpLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZEZp
bmlzaExhdW5jaGluZyk6IENoYW5nZWQgUExBVEZPUk0oTUFDKSB0byBPUyhEQVJXSU4pIGFyb3Vu
ZAorICAgICAgICB1c2Ugb2YgTWFjaC1iYXNlZCBJUEMsIGFuZCB0byBQTEFURk9STShDT0NPQSkg
YXJvdW5kIFNldFFPUy4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRD
cmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik6IENoYW5nZWQgUExBVEZPUk0oTUFDKSB0bworICAg
ICAgICBPUyhEQVJXSU4pLgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NQcm94eS5oOiBDaGFuZ2VkIFBMQVRGT1JNKE1BQykgdG8gUExBVEZPUk0oQ09DT0EpLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjog
RGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1RleHRDaGVja2VyLmg6IERpdHRvLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHQ6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dDo6Y3JlYXRlTmV3V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6
OnNldEhUVFBQaXBlbGluaW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6
Omh0dHBQaXBlbGluaW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBs
dWdpbkluZm9TdG9yZURpZExvYWRQbHVnaW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29u
dGV4dC5oOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5p
bjogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHRVc2VyTWVzc2FnZUNvZGVy
cy5oOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dFVzZXJNZXNzYWdlRW5jb2Rl
cjo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2Rl
cjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNw
cDogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFn
ZXJQcm94eS5oOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRm9ybVN1Ym1pc3Npb25M
aXN0ZW5lclByb3h5Lmg6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVBvbGlj
eUxpc3RlbmVyUHJveHkuaDogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3Rv
clByb3h5Lmg6IEFkZGVkICFQTEFURk9STShJT1MpIGFyb3VuZCBtZW1iZXJzIHJlbHRhdGVkIHRv
IG1hbmFnaW5nCisgICAgICAgIHRoZSBpbnNwZWN0b3Igd2luZG93IGFuZCBpdHMgdmlldy4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDogQ2hhbmdlZCBQTEFURk9STShNQUMp
IHRvIFBMQVRGT1JNKENPQ09BKS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQ
YWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQ
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNvcmROYXZpZ2F0aW9uU25h
cHNob3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNhblNob3dNSU1FVHlwZSk6
CisgICAgICAgIChXZWJLaXQ6OmNhbkNvYWxlc2NlKToKKyAgICAgICAgKFdlYktpdDo6Y29hbGVz
Y2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpbmRQbHVnaW4pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmVkaXRvclN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbjogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHA6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OldlYlByb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Y3Jl
YXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6YWRkRXhpc3Rp
bmdXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQ
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnBhZ2VTdXBwcmVzc2liaWxp
dHlDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpwYWdlUHJlZmVy
ZW5jZXNDaGFuZ2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6IERp
dHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9jZi9XZWJQcmVmZXJlbmNlc0NGLmNwcDogUmVtb3Zl
ZCB0aGlzIGZpbGUgd2hpY2ggd2FzIG5vdCB1c2VkIGluIGFueQorICAgICAgICBjb25maWd1cmF0
aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViSW5zcGVjdG9yUHJveHlJT1MubW06IFJl
bW92ZWQgZnVuY3Rpb25zIHRoYXQgbm8gbG9uZ2VyIG5lZWQgdG8gYmUKKyAgICAgICAgaW1wbGVt
ZW50ZWQgZm9yIGlPUy4KKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6IFJlbW92ZWQgcmVmZXJlbmNlIHRvIFdlYlByZWZlcmVuY2VzQ0YuY3BwLgorCiAyMDE0LTAy
LTE0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR1RLXSBGaXggbWFyc2hhbGxlciB1c2VkIGluIFdlYktpdFdlYlBhZ2U6OmRvY3VtZW50LWxv
YWRlZCBzaWduYWwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVBy
b3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0Fy
ZWFQcm94eS5jcHAJKHJldmlzaW9uIDE2NDE1MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9EcmF3aW5nQXJlYVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBE
cmF3aW5nQXJlYVByb3h5OjpEcmF3aW5nQXJlYVByb3h5KERyYXdpCiAgICAgOiBtX3R5cGUodHlw
ZSkKICAgICAsIG1fd2ViUGFnZVByb3h5KHdlYlBhZ2VQcm94eSkKICAgICAsIG1fc2l6ZSh3ZWJQ
YWdlUHJveHktPnZpZXdTaXplKCkpCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgICwgbV9leHBvc2VkUmVjdENoYW5nZWRUaW1lcih0aGlzLCAmRHJhd2luZ0FyZWFQ
cm94eTo6ZXhwb3NlZFJlY3RDaGFuZ2VkVGltZXJGaXJlZCkKICNlbmRpZgogewpAQCAtNjIsNyAr
NjIsNyBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHk6OnNldFNpemUoY29uc3QgSW50CiAgICAgc2l6
ZURpZENoYW5nZSgpOwogfQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09B
KQogdm9pZCBEcmF3aW5nQXJlYVByb3h5OjpzZXRFeHBvc2VkUmVjdChjb25zdCBGbG9hdFJlY3Qm
IGV4cG9zZWRSZWN0KQogewogICAgIGlmICghbV93ZWJQYWdlUHJveHktPmlzVmFsaWQoKSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAkocmV2aXNp
b24gMTY0MTUzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlLCBXZWJDb3JlOjpGbG9hdFBvaW50KSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUsIFdlYkNvcmU6OkZs
b2F0UG9pbnQpIHsgfQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIHZpcnR1YWwgdm9pZCBzZXRFeHBvc2VkUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
KTsKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgZXhwb3NlZFJlY3QoKSBjb25zdCB7IHJldHVybiBt
X2V4cG9zZWRSZWN0OyB9CiAgICAgdm9pZCBleHBvc2VkUmVjdENoYW5nZWRUaW1lckZpcmVkKFdl
YkNvcmU6OlRpbWVyPERyYXdpbmdBcmVhUHJveHk+Kik7CkBAIC0xMDcsNyArMTA3LDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSh1
aW50NjRfdCAvKiBiYWNraW5nU3RvcmVTdGF0ZUlEICovLCBjb25zdCBMYXllclRyZWVDb250ZXh0
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSh1
aW50NjRfdCAvKiBiYWNraW5nU3RvcmVTdGF0ZUlEICovLCBjb25zdCBVcGRhdGVJbmZvJikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKHVpbnQ2
NF90IC8qIGJhY2tpbmdTdG9yZVN0YXRlSUQgKi8sIGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSB7
IH0KLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCB2
b2lkIGRpZFVwZGF0ZUdlb21ldHJ5KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGludHJpbnNpY0Nv
bnRlbnRTaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG5ld0ludHJpbnNpY0Nv
bnRlbnRTaXplKSB7IH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdB
cmVhUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0RyYXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE2NDE1MykKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBAIG1lc3NhZ2VzIC0+IERyYXdpbmdBcmVhUHJveHkg
ewogICAgIEV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSh1aW50NjRfdCBiYWNraW5nU3Rv
cmVTdGF0ZUlELCBXZWJLaXQ6OlVwZGF0ZUluZm8gdXBkYXRlSW5mbykKICAgICBVcGRhdGVBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlELCBXZWJL
aXQ6OkxheWVyVHJlZUNvbnRleHQgY29udGV4dCkKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQ
TEFURk9STShDT0NPQSkKICAgICAvLyBVc2VkIGJ5IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhUHJveHkuCiAgICAgRGlkVXBkYXRlR2VvbWV0cnkoKQogICAgIEludHJpbnNpY0NvbnRlbnRT
aXplRGlkQ2hhbmdlKFdlYkNvcmU6OkludFNpemUgbmV3SW50cmluc2ljQ29udGVudFNpemUpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHJldmlzaW9uIDE2NDE1MykK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvckNsaWVudC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0o
Q09DT0EpCiAjaW5jbHVkZSAiUGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlLmgiCiAKIE9CSkNf
Q0xBU1MgQ0FMYXllcjsKQEAgLTcyLDcgKzcyLDcgQEAgY2xhc3MgV2ViQ29sb3JQaWNrZXI7CiBj
bGFzcyBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50OwogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiBzdHJ1Y3QgQ29sb3JTcGFjZURhdGE7CiAj
ZW5kaWYKIApAQCAtMTY2LDcgKzE2Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xl
YXJBbGxFZGl0Q29tbWFuZHMoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhblVuZG9SZWRvKFdl
YlBhZ2VQcm94eTo6VW5kb09yUmVkbykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlVW5k
b1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKSA9IDA7Ci0jaWYgUExBVEZPUk0oTUFDKQor
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NpYmlsaXR5V2ViUHJv
Y2Vzc1Rva2VuUmVjZWl2ZWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJikgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50
JiwgVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4mKSA9IDA7CiAgICAgdmlydHVhbCBi
b29sIGV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3Ip
ID0gMDsKQEAgLTIzNiw3ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0b3I8U3Ry
aW5nPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgPSAw
OwogI2VuZGlmIC8vIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQogI2VuZGlmIC8vIFVTRShB
UFBLSVQpCi0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorI2VuZGlmIC8vICFQTEFURk9STShJT1Mp
ICYmIFBMQVRGT1JNKE1BQykKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkR2V0VGFwSGlnaGxpZ2h0R2VvbWV0cmllcyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdl
YkNvcmU6OkNvbG9yJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UXVhZD4mIGhpZ2hsaWdo
dGVkUXVhZHMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBi
b3R0b21MZWZ0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBib3R0b21SaWdodFJhZGl1
cykgPSAwOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1RleHRDaGVja2VyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1RleHRDaGVja2VyLmgJKHJldmlz
aW9uIDE2NDE1MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9UZXh0Q2hlY2tlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBz
ZXRDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCk7CiAgICAgc3RhdGljIHZvaWQg
c2V0R3JhbW1hckNoZWNraW5nRW5hYmxlZChib29sKTsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBzdGF0aWMgdm9pZCBzZXRBdXRvbWF0aWNTcGVsbGluZ0Nv
cnJlY3Rpb25FbmFibGVkKGJvb2wpOwogICAgIHN0YXRpYyB2b2lkIHNldEF1dG9tYXRpY1F1b3Rl
U3Vic3RpdHV0aW9uRW5hYmxlZChib29sKTsKICAgICBzdGF0aWMgdm9pZCBzZXRBdXRvbWF0aWNE
YXNoU3Vic3RpdHV0aW9uRW5hYmxlZChib29sKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5jcHAJKHJldmlzaW9uIDE2NDE1MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExLDcgKzIxMSw3IEBA
IFdlYkNvbnRleHQ6OldlYkNvbnRleHQoY29uc3QgU3RyaW5nJiBpbmoKICAgICBtX3N0b3JhZ2VN
YW5hZ2VyLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkobG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkp
OwogfQogCi0jaWYgIVBMQVRGT1JNKE1BQykKKyNpZiAhUExBVEZPUk0oQ09DT0EpCiB2b2lkIFdl
YkNvbnRleHQ6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiB7CiB9CkBAIC0zOTMsNyArMzkzLDcgQEAg
dm9pZCBXZWJDb250ZXh0OjplbnN1cmVOZXR3b3JrUHJvY2VzcygpCiAgICAgLy8gSW5pdGlhbGl6
ZSB0aGUgbmV0d29yayBwcm9jZXNzLgogICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpJbml0aWFsaXplTmV0d29ya1Byb2Nlc3MocGFyYW1ldGVycyks
IDApOwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIG1fbmV0
d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRRT1MobmV0d29y
a1Byb2Nlc3NMYXRlbmN5UU9TKCksIG5ldHdvcmtQcm9jZXNzVGhyb3VnaHB1dFFPUygpKSwgMCk7
CiAjZW5kaWYKIH0KQEAgLTYxNSw3ICs2MTUsNyBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYkNvbnRl
eHQ6OmNyZWF0ZU5ld1dlCiAgICAgICAgIGluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2Vy
RGF0YSA9IG1faW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhOwogICAgIHByb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkluaXRpYWxpemVXZWJQcm9jZXNzKHBhcmFt
ZXRlcnMsIFdlYkNvbnRleHRVc2VyTWVzc2FnZUVuY29kZXIoaW5qZWN0ZWRCdW5kbGVJbml0aWFs
aXphdGlvblVzZXJEYXRhLmdldCgpLCAqcHJvY2VzcykpLCAwKTsKIAotI2lmIFBMQVRGT1JNKE1B
QykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpTZXRRT1Mod2ViUHJvY2Vzc0xhdGVuY3lRT1MoKSwgd2ViUHJvY2Vzc1Rocm91Z2hw
dXRRT1MoKSksIDApOwogI2VuZGlmCiAKQEAgLTEyMDcsNyArMTIwNyw3IEBAIHZvaWQgV2ViQ29u
dGV4dDo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGkKIAogdm9pZCBXZWJDb250ZXh0OjpzZXRIVFRQ
UGlwZWxpbmluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewotI2lmIFBMQVRGT1JNKE1BQykKKyNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBSZXNvdXJjZVJlcXVlc3Q6OnNldEhUVFBQaXBlbGluaW5n
RW5hYmxlZChlbmFibGVkKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwpAQCAt
MTIxNiw3ICsxMjE2LDcgQEAgdm9pZCBXZWJDb250ZXh0OjpzZXRIVFRQUGlwZWxpbmluZ0VuYWJs
ZQogCiBib29sIFdlYkNvbnRleHQ6Omh0dHBQaXBlbGluaW5nRW5hYmxlZCgpIGNvbnN0CiB7Ci0j
aWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHJldHVybiBSZXNvdXJj
ZVJlcXVlc3Q6Omh0dHBQaXBlbGluaW5nRW5hYmxlZCgpOwogI2Vsc2UKICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xMjc3LDcgKzEyNzcsNyBAQCB2b2lkIFdlYkNvbnRleHQ6OnJlcXVlc3ROZXR3b3Jr
aW5nU3RhdGlzCiAjZW5kaWYKIH0KIAotI2lmICFQTEFURk9STShNQUMpCisjaWYgIVBMQVRGT1JN
KENPQ09BKQogdm9pZCBXZWJDb250ZXh0OjpkdW1teShib29sJikKIHsKIH0KQEAgLTEzNzIsNyAr
MTM3Miw3IEBAIHZvaWQgV2ViQ29udGV4dDo6cGx1Z2luSW5mb1N0b3JlRGlkTG9hZFAKICAgICAg
ICAgICAgIG1pbWVUeXBlcy51bmNoZWNrZWRBcHBlbmQoQVBJOjpTdHJpbmc6OmNyZWF0ZShtaW1l
Q2xhc3NJbmZvLnR5cGUpKTsKICAgICAgICAgbWFwLnNldChBU0NJSUxpdGVyYWwoIm1pbWVzIiks
IEFQSTo6QXJyYXk6OmNyZWF0ZShzdGQ6Om1vdmUobWltZVR5cGVzKSkpOwogCi0jaWYgUExBVEZP
Uk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBtYXAuc2V0KEFTQ0lJTGl0ZXJh
bCgiYnVuZGxlSWQiKSwgQVBJOjpTdHJpbmc6OmNyZWF0ZShwbHVnaW5Nb2R1bGUuYnVuZGxlSWRl
bnRpZmllcikpOwogICAgICAgICBtYXAuc2V0KEFTQ0lJTGl0ZXJhbCgidmVyc2lvbiIpLCBBUEk6
OlN0cmluZzo6Y3JlYXRlKHBsdWdpbk1vZHVsZS52ZXJzaW9uU3RyaW5nKSk7CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAkocmV2aXNpb24gMTY0MTUzKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAkod29ya2luZyBjb3B5KQpA
QCAtNjEsNyArNjEsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKICNlbmRp
ZgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBO
U09iamVjdDsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CiAjZW5kaWYKQEAgLTg2LDcgKzg2LDcgQEAg
Y2xhc3MgV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk7CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFU
Rk9STShDT0NPQSkKIGludCBuZXR3b3JrUHJvY2Vzc0xhdGVuY3lRT1MoKTsKIGludCBuZXR3b3Jr
UHJvY2Vzc1Rocm91Z2hwdXRRT1MoKTsKIGludCB3ZWJQcm9jZXNzTGF0ZW5jeVFPUygpOwpAQCAt
MjYyLDcgKzI2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlw
dE9iamVjdHMoKTsKICAgICB2b2lkIHNldEphdmFTY3JpcHRHYXJiYWdlQ29sbGVjdG9yVGltZXJF
bmFibGVkKGJvb2wgZmxhZyk7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgc3RhdGljIGJvb2wgb21pdFBERlN1cHBvcnQoKTsKICNlbmRpZgogCkBAIC0yOTMs
NyArMjkzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlv
bihQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vz
c0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4pOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMp
CisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVk
KCkgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uSXNFbmFibGVkRm9y
QWxsQ29udGV4dHMoKTsKICNlbmRpZgpAQCAtMzI3LDcgKzMyNyw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgdm9pZCB1bnJlZ2lzdGVyR2xvYmFsVVJMU2NoZW1lQXNIYXZpbmdDdXN0b21Qcm90b2Nv
bEhhbmRsZXJzKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCisj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCB1cGRhdGVQcm9jZXNzU3VwcHJlc3Npb25TdGF0
ZSgpIGNvbnN0OwogI2VuZGlmCiAKQEAgLTM0OCw3ICszNDgsNiBAQCBwcml2YXRlOgogICAgIHZv
aWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQogI2lmIFBMQVRGT1JN
KElPUykKICAgICB2b2lkIHdyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkV2ViQ29udGVudCYpOwogICAgIHZvaWQgd3JpdGVJbWFnZVRvUGFzdGVib2Fy
ZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmKTsKQEAgLTM1OCw2ICszNTcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYsIHVp
bnQ2NF90JiBzaXplKTsKICAgICB2b2lkIGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KHVpbnQ2NF90
JiBpdGVtc0NvdW50KTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgZ2V0
UGFzdGVib2FyZFR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMpOwogICAgIHZvaWQgZ2V0UGFzdGVib2FyZFBhdGhuYW1lc0Zv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcyk7CiAgICAgdm9pZCBnZXRQYXN0ZWJv
YXJkU3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcmKTsKQEAgLTM3NCw3ICszNzQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU2hhcmVkTWVt
b3J5OjpIYW5kbGUmLCB1aW50NjRfdCBzaXplLCB1aW50NjRfdCYgbmV3Q2hhbmdlQ291bnQpOwog
I2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oTUFDKQorI2lmICFQTEFURk9STShDT0NPQSkKICAgICAv
LyBGSVhNRTogVGhpcyBhIGR1bW15IG1lc3NhZ2UsIHRvIGF2b2lkIGJyZWFraW5nIHRoZSBidWls
ZCBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJ3QgcmVxdWlyZQogICAgIC8vIGFueSBzeW5jaHJvbm91
cyBtZXNzYWdlcywgYW5kIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gPHJkYXI6Ly9wcm9ibGVtLzg3
NzUxMTU+IGlzIGZpeGVkLgogICAgIHZvaWQgZHVtbXkoYm9vbCYpOwpAQCAtNDA2LDcgKzQwNiw3
IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsK
ICAgICBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0
OwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgcmVn
aXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMoKTsKICAgICB2b2lkIHVucmVnaXN0ZXJOb3RpZmlj
YXRpb25PYnNlcnZlcnMoKTsKICNlbmRpZgpAQCAtNDg1LDExICs0ODUsMTEgQEAgcHJpdmF0ZToK
ICAgICBIVFRQQ29va2llQWNjZXB0UG9saWN5IG1faW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xp
Y3k7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpICYmICFQ
TEFURk9STShJT1MpCiAgICAgUmV0YWluUHRyPE5TT2JqZWN0PiBtX2VuaGFuY2VkQWNjZXNzaWJp
bGl0eU9ic2VydmVyOwogICAgIFJldGFpblB0cjxOU09iamVjdD4gbV9hdXRvbWF0aWNUZXh0UmVw
bGFjZW1lbnROb3RpZmljYXRpb25PYnNlcnZlcjsKICAgICBSZXRhaW5QdHI8TlNPYmplY3Q+IG1f
YXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uTm90aWZpY2F0aW9uT2JzZXJ2ZXI7Ci0jaWYgIVBM
QVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCisj
aWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCiAgICAgUmV0YWluUHRy
PE5TT2JqZWN0PiBtX2F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uTm90aWZpY2F0aW9uT2JzZXJ2
ZXI7CiAgICAgUmV0YWluUHRyPE5TT2JqZWN0PiBtX2F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25O
b3RpZmljYXRpb25PYnNlcnZlcjsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE2NDE1MykKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw3ICszNyw3IEBAIG1lc3NhZ2VzIC0+IFdlYkNvbnRleHQgTGVnYWN5UmVjZWl2
ZXIgewogICAgIEdldFBhc3RlYm9hcmRJdGVtc0NvdW50KCkgLT4gKHVpbnQ2NF90IGl0ZW1zQ291
bnQpCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAjIFBhc3RlYm9hcmQgbWVzc2FnZXMuCiAgICAgR2V0UGFzdGVib2FyZFR5cGVzKFN0cmluZyBw
YXN0ZWJvYXJkTmFtZSkgLT4gKFZlY3RvcjxTdHJpbmc+IHR5cGVzKQogICAgIEdldFBhc3RlYm9h
cmRQYXRobmFtZXNGb3JUeXBlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9h
cmRUeXBlKSAtPiAoVmVjdG9yPFN0cmluZz4gcGF0aG5hbWVzKQpAQCAtNTUsNyArNTUsNyBAQCBt
ZXNzYWdlcyAtPiBXZWJDb250ZXh0IExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRQYXN0ZWJvYXJk
QnVmZmVyRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlw
ZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IHNpemUpIC0+
ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkKICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKE1BQykKKyNp
ZiAhUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gRklYTUU6IFRoaXMgYSBkdW1teSBtZXNzYWdlLCB0
byBhdm9pZCBicmVha2luZyB0aGUgYnVpbGQgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IHJlcXVp
cmUKICAgICAvLyBhbnkgc3luY2hyb25vdXMgbWVzc2FnZXMsIGFuZCBzaG91bGQgYmUgcmVtb3Zl
ZCB3aGVuIDxyZGFyOi8vcHJvYmxlbS84Nzc1MTE1PiBpcyBmaXhlZC4KICAgICBEdW1teSgpIC0+
IChib29sIGR1bW15UmV0dXJuKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bnRleHRVc2VyTWVzc2FnZUNvZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0VXNlck1lc3NhZ2VDb2RlcnMuaAkocmV2aXNpb24gMTY0MTUzKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRVc2VyTWVzc2FnZUNvZGVycy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZUdyb3Vw
RGF0YS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogCi0jaWYgUExBVEZPUk0oTUFDKQor
I2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIk9iakNPYmplY3RHcmFwaENvZGVycy5oIgog
I2VuZGlmCiAKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgZW5jb2RlciA8
PCBwYWdlR3JvdXAtPmRhdGEoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0jaWYg
UExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBjYXNlIEFQSTo6T2Jq
ZWN0OjpUeXBlOjpPYmpDT2JqZWN0R3JhcGg6IHsKICAgICAgICAgICAgIE9iakNPYmplY3RHcmFw
aCogb2JqZWN0R3JhcGggPSBzdGF0aWNfY2FzdDxPYmpDT2JqZWN0R3JhcGgqPihtX3Jvb3QpOwog
ICAgICAgICAgICAgZW5jb2RlciA8PCBXZWJDb250ZXh0T2JqQ09iamVjdEdyYXBoRW5jb2Rlcihv
YmplY3RHcmFwaCwgbV9wcm9jZXNzKTsKQEAgLTE0OCw3ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBjb2Rlci5tX3Jvb3QgPSBXZWJQYWdlR3JvdXA6OmdldChwYWdlR3JvdXBJRCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZTo6T2JqQ09iamVjdEdy
YXBoOiB7CiAgICAgICAgICAgICBSZWZQdHI8T2JqQ09iamVjdEdyYXBoPiBvYmplY3RHcmFwaDsK
ICAgICAgICAgICAgIFdlYkNvbnRleHRPYmpDT2JqZWN0R3JhcGhEZWNvZGVyIG9iamVjdEdyYXBo
RGVjb2RlcihvYmplY3RHcmFwaCwgY29kZXIubV9wcm9jZXNzKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCShyZXZpc2lv
biAxNjQxNTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclBy
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5Ojpjb29raWVzRGlkQ2gKIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6
OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kp
CiB7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHBlcnNpc3RI
VFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSk7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5
LmgJKHJldmlzaW9uIDE2NDE1MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29r
aWVNYW5hZ2VyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRl
OgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlk
ZTsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHBl
cnNpc3RIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwogI2Vu
ZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGb3JtU3VibWlzc2lvbkxp
c3RlbmVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Rm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5LmgJKHJldmlzaW9uIDE2NDE1MykKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtMjgsMTEgKzI4LDExIEBACiAKICNpbmNsdWRlICJXZWJGcmFtZUxpc3Rl
bmVyUHJveHkuaCIKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICNp
bmNsdWRlICJXS0ZvdW5kYXRpb24uaCIKICNlbmRpZgogCi0jZGVmaW5lIERFTEVHQVRFX1JFRl9D
T1VOVElOR19UT19DT0NPQSAoUExBVEZPUk0oTUFDKSAmJiBXS19BUElfRU5BQkxFRCkKKyNkZWZp
bmUgREVMRUdBVEVfUkVGX0NPVU5USU5HX1RPX0NPQ09BIChQTEFURk9STShDT0NPQSkgJiYgV0tf
QVBJX0VOQUJMRUQpCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oCShy
ZXZpc2lvbiAxNjQxNTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDExICsyOCwxMSBAQAogCiAj
aW5jbHVkZSAiV2ViRnJhbWVMaXN0ZW5lclByb3h5LmgiCiAKLSNpZiBQTEFURk9STShNQUMpCisj
aWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiV0tGb3VuZGF0aW9uLmgiCiAjZW5kaWYKIAot
I2RlZmluZSBERUxFR0FURV9SRUZfQ09VTlRJTkdfVE9fQ09DT0EgKFBMQVRGT1JNKE1BQykgJiYg
V0tfQVBJX0VOQUJMRUQpCisjZGVmaW5lIERFTEVHQVRFX1JFRl9DT1VOVElOR19UT19DT0NPQSAo
UExBVEZPUk0oQ09DT0EpICYmIFdLX0FQSV9FTkFCTEVEKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgJ
KHJldmlzaW9uIDE2NDE1MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0
b3JQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgUExBVEZP
Uk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykKICNpbmNsdWRlICJX
S0dlb21ldHJ5LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGhpZGUoKTsKICAg
ICB2b2lkIGNsb3NlKCk7CiAgICAgCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1B
QykgJiYgIVBMQVRGT1JNKElPUykKICAgICB2b2lkIGNyZWF0ZUluc3BlY3RvcldpbmRvdygpOwog
ICAgIHZvaWQgdXBkYXRlSW5zcGVjdG9yV2luZG93VGl0bGUoKSBjb25zdDsKICAgICB2b2lkIGlu
c3BlY3RlZFZpZXdGcmFtZURpZENoYW5nZShDR0Zsb2F0ID0gMCk7CkBAIC0yMjQsNyArMjI0LDcg
QEAgcHJpdmF0ZToKIAogICAgIEF0dGFjaG1lbnRTaWRlIG1fYXR0YWNobWVudFNpZGU7CiAKLSNp
ZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQogICAg
IFJldGFpblB0cjxXS1dlYkluc3BlY3RvcldLVmlldz4gbV9pbnNwZWN0b3JWaWV3OwogICAgIFJl
dGFpblB0cjxOU1dpbmRvdz4gbV9pbnNwZWN0b3JXaW5kb3c7CiAgICAgUmV0YWluUHRyPE5TQnV0
dG9uPiBtX2RvY2tCb3R0b21CdXR0b247CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMTY0MTUzKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBA
QAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIlZpZXdTbmFwc2hvdFN0
b3JlLmgiCiAjZW5kaWYKIApAQCAtMzA0LDcgKzMwNCw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFn
ZVByb3h5KFBhZ2VDbGllbnQmIHAKICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKICAgICAsIG1fc2Vz
c2lvbigqY29uZmlndXJhdGlvbi5zZXNzaW9uKQogICAgICwgbV9pc1BhZ2VTdXNwZW5kZWQoZmFs
c2UpCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICwgbV9pc1Nt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChUZXh0Q2hlY2tlcjo6aXNTbWFydEluc2VydERlbGV0ZUVu
YWJsZWQoKSkKICNlbmRpZgogICAgICwgbV9zcGVsbERvY3VtZW50VGFnKDApCkBAIC01NzMsNyAr
NTczLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlKCkKIAogICAgIHBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDcmVhdGVXZWJQYWdlKG1fcGFnZUlE
LCBjcmVhdGlvblBhcmFtZXRlcnMoKSksIDApOwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNtYXJ0SW5zZXJ0
RGVsZXRlRW5hYmxlZChtX2lzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKSk7CiAjZW5kaWYKIH0K
QEAgLTc4Myw3ICs3ODMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjb3JkTmF2aWdhdGlvblNu
YXBzCiAgICAgaWYgKCFtX3Nob3VsZFJlY29yZE5hdmlnYXRpb25TbmFwc2hvdHMpCiAgICAgICAg
IHJldHVybjsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBW
aWV3U25hcHNob3RTdG9yZTo6c2hhcmVkKCkucmVjb3JkU25hcHNob3QoKnRoaXMpOwogI2VuZGlm
CiB9CkBAIC04ODcsMTEgKzg4NywxMSBAQCBib29sIFdlYlBhZ2VQcm94eTo6Y2FuU2hvd01JTUVU
eXBlKGNvbnN0CiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQ
RV9QTFVHSU5fQVBJKQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIC8vIE9uIE1hYywgd2UgY2FuIHNob3cgUERGcy4KICAgICBpZiAoTUlNRVR5cGVSZWdpc3Ry
eTo6aXNQREZPclBvc3RTY3JpcHRNSU1FVHlwZShtaW1lVHlwZSkgJiYgIVdlYkNvbnRleHQ6Om9t
aXRQREZTdXBwb3J0KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmIC8vIFBMQVRGT1JN
KE1BQykKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIAogICAgIHJldHVybiBmYWxzZTsKIH0K
QEAgLTEyMjEsNyArMTIyMSw3IEBAIHN0YXRpYyBib29sIGNhbkNvYWxlc2NlKGNvbnN0IFdlYldo
ZWVsRXYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChhLmdyYW51bGFyaXR5KCkgIT0g
Yi5ncmFudWxhcml0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0jaWYgUExBVEZPUk0oTUFD
KQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChhLnBoYXNlKCkgIT0gYi5waGFzZSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGEubW9tZW50dW1QaGFzZSgpICE9IGIubW9t
ZW50dW1QaGFzZSgpKQpAQCAtMTI0MCw3ICsxMjQwLDcgQEAgc3RhdGljIFdlYldoZWVsRXZlbnQg
Y29hbGVzY2UoY29uc3QgV2ViVwogICAgIEZsb2F0U2l6ZSBtZXJnZWREZWx0YSA9IGEuZGVsdGEo
KSArIGIuZGVsdGEoKTsKICAgICBGbG9hdFNpemUgbWVyZ2VkV2hlZWxUaWNrcyA9IGEud2hlZWxU
aWNrcygpICsgYi53aGVlbFRpY2tzKCk7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgRmxvYXRTaXplIG1lcmdlZFVuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0
YSA9IGEudW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhKCkgKyBiLnVuYWNjZWxlcmF0ZWRTY3Jv
bGxpbmdEZWx0YSgpOwogCiAgICAgcmV0dXJuIFdlYldoZWVsRXZlbnQoV2ViRXZlbnQ6OldoZWVs
LCBiLnBvc2l0aW9uKCksIGIuZ2xvYmFsUG9zaXRpb24oKSwgbWVyZ2VkRGVsdGEsIG1lcmdlZFdo
ZWVsVGlja3MsIGIuZ3JhbnVsYXJpdHkoKSwgYi5kaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2Uo
KSwgYi5waGFzZSgpLCBiLm1vbWVudHVtUGhhc2UoKSwgYi5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVs
dGFzKCksIGIuc2Nyb2xsQ291bnQoKSwgbWVyZ2VkVW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRh
LCBiLm1vZGlmaWVycygpLCBiLnRpbWVzdGFtcCgpKTsKQEAgLTEzNzIsNyArMTM3Miw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpmaW5kUGx1Z2luKGNvbnN0IFN0cmkKIAogICAgIHBsdWdpbkxvYWRQ
b2xpY3kgPSBQbHVnaW5JbmZvU3RvcmU6OmRlZmF1bHRMb2FkUG9saWN5Rm9yUGx1Z2luKHBsdWdp
bik7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmVmUHRy
PEltbXV0YWJsZURpY3Rpb25hcnk+IHBsdWdpbkluZm9ybWF0aW9uID0gY3JlYXRlUGx1Z2luSW5m
b3JtYXRpb25EaWN0aW9uYXJ5KHBsdWdpbiwgZnJhbWVVUkxTdHJpbmcsIFN0cmluZygpLCBwYWdl
VVJMU3RyaW5nLCBTdHJpbmcoKSwgU3RyaW5nKCkpOwogICAgIHBsdWdpbkxvYWRQb2xpY3kgPSBt
X2xvYWRlckNsaWVudC0+cGx1Z2luTG9hZFBvbGljeSh0aGlzLCBzdGF0aWNfY2FzdDxQbHVnaW5N
b2R1bGVMb2FkUG9saWN5PihwbHVnaW5Mb2FkUG9saWN5KSwgcGx1Z2luSW5mb3JtYXRpb24uZ2V0
KCksIHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24pOwogI2Vsc2UKQEAgLTMwNDAsNyArMzA0MCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEZvcndhcmRMaXMKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmVkaXRvclN0YXRlQ2hhbmdlZChjb25zdCBFZGl0b3JTdGF0ZSYgZWRpdG9yU3Rh
dGUpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wg
Y291bGRDaGFuZ2VTZWN1cmVJbnB1dFN0YXRlID0gbV9lZGl0b3JTdGF0ZS5pc0luUGFzc3dvcmRG
aWVsZCAhPSBlZGl0b3JTdGF0ZS5pc0luUGFzc3dvcmRGaWVsZCB8fCBtX2VkaXRvclN0YXRlLnNl
bGVjdGlvbklzTm9uZTsKICAgICBib29sIGNsb3NlZENvbXBvc2l0aW9uID0gIWVkaXRvclN0YXRl
LnNob3VsZElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlICYmICFlZGl0b3JTdGF0ZS5o
YXNDb21wb3NpdGlvbiAmJiAobV9lZGl0b3JTdGF0ZS5oYXNDb21wb3NpdGlvbiB8fCBtX3RlbXBv
cmFyaWx5Q2xvc2VkQ29tcG9zaXRpb24pOwogICAgIG1fdGVtcG9yYXJpbHlDbG9zZWRDb21wb3Np
dGlvbiA9IGVkaXRvclN0YXRlLnNob3VsZElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdl
ICYmIChtX3RlbXBvcmFyaWx5Q2xvc2VkQ29tcG9zaXRpb24gfHwgbV9lZGl0b3JTdGF0ZS5oYXND
b21wb3NpdGlvbikgJiYgIWVkaXRvclN0YXRlLmhhc0NvbXBvc2l0aW9uOwpAQCAtMzA0OCw3ICsz
MDQ4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmVkaXRvclN0YXRlQ2hhbmdlZChjbwogCiAgICAg
bV9lZGl0b3JTdGF0ZSA9IGVkaXRvclN0YXRlOwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIC8vIFNlbGVjdGlvbiBiZWluZyBub25lIGlzIGEgdGVtcG9yYXJ5
IHN0YXRlIHdoZW4gZWRpdGluZy4gRmxpcHBpbmcgc2VjdXJlIGlucHV0IHN0YXRlIHRvbyBxdWlj
a2x5IHdhcyBjYXVzaW5nIHRyb3VibGUgKG5vdCBmdWxseSB1bmRlcnN0b29kKS4KICAgICBpZiAo
Y291bGRDaGFuZ2VTZWN1cmVJbnB1dFN0YXRlICYmICFlZGl0b3JTdGF0ZS5zZWxlY3Rpb25Jc05v
bmUpCiAgICAgICAgIG1fcGFnZUNsaWVudC51cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCk7CkBAIC0z
MjgyLDcgKzMyODIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnU21h
cnRDb3B5UGFzdGUpIHsKICAgICAgICAgc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKCFpc1Nt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzU4NCw3ICsz
NTg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFdmVudCh1aW50MwogICAgICAg
ICBpZiAoIWhhbmRsZWQpIHsKICAgICAgICAgICAgIGlmIChtX3VpQ2xpZW50LT5pbXBsZW1lbnRz
RGlkTm90SGFuZGxlV2hlZWxFdmVudCgpKQogICAgICAgICAgICAgICAgIG1fdWlDbGllbnQtPmRp
ZE5vdEhhbmRsZVdoZWVsRXZlbnQodGhpcywgb2xkZXN0Q29hbGVzY2VkRXZlbnQtPmxhc3QoKSk7
Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICAgICAgbV9w
YWdlQ2xpZW50LndoZWVsRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKG9sZGVzdENvYWxlc2Nl
ZEV2ZW50LT5sYXN0KCkpOwogI2VuZGlmCiAgICAgICAgIH0KQEAgLTQxODIsNyArNDE4Miw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRCbG9ja0luc2VjdXJlUGx1Z2kKIHsKICAgICBSZWZQdHI8
SW1tdXRhYmxlRGljdGlvbmFyeT4gcGx1Z2luSW5mb3JtYXRpb247CiAKLSNpZiBQTEFURk9STShN
QUMpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorI2lmIFBMQVRGT1JNKENPQ09BKSAm
JiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBTdHJpbmcgbmV3TWltZVR5cGUgPSBt
aW1lVHlwZTsKICAgICBQbHVnaW5Nb2R1bGVJbmZvIHBsdWdpbiA9IG1fcHJvY2Vzcy0+Y29udGV4
dCgpLnBsdWdpbkluZm9TdG9yZSgpLmZpbmRQbHVnaW4obmV3TWltZVR5cGUsIFVSTChVUkwoKSwg
cGx1Z2luVVJMU3RyaW5nKSk7CiAgICAgcGx1Z2luSW5mb3JtYXRpb24gPSBjcmVhdGVQbHVnaW5J
bmZvcm1hdGlvbkRpY3Rpb25hcnkocGx1Z2luLCBmcmFtZVVSTFN0cmluZywgbWltZVR5cGUsIHBh
Z2VVUkxTdHJpbmcsIFN0cmluZygpLCBTdHJpbmcoKSwgcmVwbGFjZW1lbnRPYnNjdXJlZCk7CkBA
IC00MjU3LDcgKzQyNTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJp
bnRpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNG
b3JQcmludGluZyhmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIGNhbGxiYWNrSUQpLCBtX3Bh
Z2VJRCwgbV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbiA/IElQQzo6RGlzcGF0Y2hNZXNz
YWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5IDogMCk7CiB9CiAKLSNpZiBQTEFURk9STShN
QUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1JlY3RUb0lt
YWdlKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgY29u
c3QgSW50UmVjdCYgcmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW1hZ2VTaXplLCBQYXNz
UmVmUHRyPEltYWdlQ2FsbGJhY2s+IHBycENhbGxiYWNrKQogewogICAgIFJlZlB0cjxJbWFnZUNh
bGxiYWNrPiBjYWxsYmFjayA9IHBycENhbGxiYWNrOwpAQCAtNDQxMiw3ICs0NDEyLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpY3RhdGlvbkFsdGVybmF0aXZlcwogCiAjZW5kaWYgLy8gIVBMQVRG
T1JNKElPUykgJiYgUExBVEZPUk0oTUFDKQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRG
T1JNKENPQ09BKQogUmV0YWluUHRyPENHSW1hZ2VSZWY+IFdlYlBhZ2VQcm94eTo6dGFrZVZpZXdT
bmFwc2hvdCgpCiB7CiAgICAgcmV0dXJuIG1fcGFnZUNsaWVudC50YWtlVmlld1NuYXBzaG90KCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAx
NjQxNTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTkzLDcgKzkzLDcgQEAKICNpbmNsdWRlIDxFdmFzLmg+CiAjZW5kaWYKIAot
I2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtTGF5ZXIuaD4KICNlbmRpZgogCkBAIC00OTYsNyArNDk2LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwogI2VuZGlmCiAKLSNp
ZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCB3aW5kb3dBbmRW
aWV3RnJhbWVzQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHZpZXdGcmFtZUluV2lu
ZG93Q29vcmRpbmF0ZXMsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGFjY2Vzc2liaWxpdHlW
aWV3Q29vcmRpbmF0ZXMpOwogICAgIHZvaWQgc2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGJvb2wp
OwogCkBAIC01MjMsNyArNTIzLDcgQEAgcHVibGljOgogICAgIFdLVmlldyogd2tWaWV3KCkgY29u
c3Q7CiAgICAgdm9pZCBpbnRyaW5zaWNDb250ZW50U2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBpbnRyaW5zaWNDb250ZW50U2l6ZSk7CiAjZW5kaWYKLSNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpCisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCiAjaWYgUExBVEZPUk0oRUZMKQog
ICAgIHZvaWQgaGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKGJvb2wmIGhhbmRsZWQpOwogICAgIHZv
aWQgY29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYpOwpAQCAtNjMyLDcgKzYzMiw3IEBA
IHB1YmxpYzoKICAgICBkb3VibGUgZ2FwQmV0d2VlblBhZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9n
YXBCZXR3ZWVuUGFnZXM7IH0KICAgICB1bnNpZ25lZCBwYWdlQ291bnQoKSBjb25zdCB7IHJldHVy
biBtX3BhZ2VDb3VudDsgfQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIC8vIENhbGxlZCBieSB0aGUgd2ViIHByb2Nlc3MgdGhyb3VnaCBhIG1lc3NhZ2UuCiAg
ICAgdm9pZCByZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJik7CiAgICAgLy8gQ2FsbGVkIGJ5IHRoZSBVSSBwcm9jZXNzIHdoZW4gaXQg
aXMgcmVhZHkgdG8gc2VuZCBpdHMgdG9rZW5zIHRvIHRoZSB3ZWIgcHJvY2Vzcy4KQEAgLTY4Myw3
ICs2ODMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3SGVhZGVyKFdlYkZyYW1lUHJveHkqLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKICAgICB2b2lkIGRyYXdGb290ZXIoV2ViRnJhbWVQ
cm94eSosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwogCi0jaWYgUExBVEZPUk0oTUFDKQor
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIERpY3Rpb25hcnkuCiAgICAgdm9pZCBwZXJmb3Jt
RGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwog
I2VuZGlmCkBAIC03MDEsNyArNzAxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRQZXJmb3Jt
RHJhZ0NvbnRyb2xsZXJBY3Rpb24oV2ViQ29yZTo6RHJhZ1Nlc3Npb24pOwogICAgIHZvaWQgZHJh
Z0VuZGVkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBvcGVyYXRpb24pOwotI2lm
IFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNldERyYWdJbWFn
ZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlJiBkcmFnSW1hZ2VIYW5kbGUsIGJvb2wgaXNMaW5rRHJhZyk7CiAgICAg
dm9pZCBzZXRQcm9taXNlZERhdGEoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
U2hhcmVkTWVtb3J5OjpIYW5kbGUmIGltYWdlSGFuZGxlLCB1aW50NjRfdCBpbWFnZVNpemUsIGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLAogICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHZpc2libGVVUkwsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBhcmNo
aXZlSGFuZGxlLCB1aW50NjRfdCBhcmNoaXZlU2l6ZSk7CkBAIC03MjgsNyArNzI4LDcgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNWYWxpZEVkaXRDb21tYW5kKFdlYkVkaXRDb21tYW5kUHJveHkqKTsK
ICAgICB2b2lkIHJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFuZFBy
b3h5PiwgVW5kb09yUmVkbyk7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgdm9pZCByZWdpc3RlcktleXByZXNzQ29tbWFuZE5hbWUoY29uc3QgU3RyaW5nJiBu
YW1lKSB7IG1fa25vd25LZXlwcmVzc0NvbW1hbmROYW1lcy5hZGQobmFtZSk7IH0KICAgICBib29s
IGlzVmFsaWRLZXlwcmVzc0NvbW1hbmROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QgeyBy
ZXR1cm4gbV9rbm93bktleXByZXNzQ29tbWFuZE5hbWVzLmNvbnRhaW5zKG5hbWUpOyB9CiAjZW5k
aWYKQEAgLTc4Miw3ICs3ODIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYXBpdGFsaXplV29yZCgp
OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
Ym9vbCBpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTbWFy
dEluc2VydERlbGV0ZUVuYWJsZWQ7IH0KICAgICB2b2lkIHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5h
YmxlZChib29sKTsKICNlbmRpZgpAQCAtNzk3LDcgKzc5Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGJlZ2luUHJpbnRpbmcoV2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYpOwogICAgIHZv
aWQgZW5kUHJpbnRpbmcoKTsKICAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdlYkZy
YW1lUHJveHkqLCBjb25zdCBQcmludEluZm8mLCBQYXNzUmVmUHRyPENvbXB1dGVkUGFnZXNDYWxs
YmFjaz4pOwotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lk
IGRyYXdSZWN0VG9JbWFnZShXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBQYXNzUmVmUHRyPElt
YWdlQ2FsbGJhY2s+KTsKICAgICB2b2lkIGRyYXdQYWdlc1RvUERGKFdlYkZyYW1lUHJveHkqLCBj
b25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFBhc3NSZWZQ
dHI8RGF0YUNhbGxiYWNrPik7CiAjZWxpZiBQTEFURk9STShHVEspCkBAIC04MDYsMTMgKzgwNiwx
MyBAQCBwdWJsaWM6CiAKICAgICBQYWdlTG9hZFN0YXRlJiBwYWdlTG9hZFN0YXRlKCkgeyByZXR1
cm4gbV9wYWdlTG9hZFN0YXRlOyB9CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgdm9pZCBoYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJp
bmcmIHJlc3VsdCk7CiAjZW5kaWYKIAogICAgIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fk
c0ZvbGRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBBUEk6OkRhdGEqKTsK
ICAgICB2b2lkIHNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgdm9pZCBzYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2
ZUFwcGxpY2F0aW9uUmF3KGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5nJiBwZGZVVUlEKTsKICAgICB2b2lkIHNhdmVQREZUb1Rl
bXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24oY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBwZGZVVUlEKTsKICAgICB2b2lk
IG9wZW5QREZGcm9tVGVtcG9yYXJ5Rm9sZGVyV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKGNvbnN0IFN0
cmluZyYgcGRmVVVJRCk7CkBAIC04ODMsNyArODgzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
U2hvdWxkUmVjb3JkTmF2aWdhdGlvblNuYXBzaG90cyhib29sIHNob3VsZFJlY29yZFNuYXBzaG90
cykgeyBtX3Nob3VsZFJlY29yZE5hdmlnYXRpb25TbmFwc2hvdHMgPSBzaG91bGRSZWNvcmRTbmFw
c2hvdHM7IH0KICAgICB2b2lkIHJlY29yZE5hdmlnYXRpb25TbmFwc2hvdCgpOwogCi0jaWYgUExB
VEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiB0YWtlVmlld1NuYXBzaG90KCk7CiAjZW5kaWYKIApAQCAtMTA0NSw3ICsxMDQ1LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGV4ZWN1dGVVbmRvUmVkbyh1aW50MzJfdCBhY3Rpb24sIGJvb2wmIHJl
c3VsdCk7CiAKICAgICAvLyBLZXlib2FyZCBoYW5kbGluZwotI2lmIFBMQVRGT1JNKE1BQykKKyNp
ZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGludGVycHJldFF1ZXVlZEtleUV2ZW50KGNvbnN0
IEVkaXRvclN0YXRlJiwgYm9vbCYgaGFuZGxlZCwgVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29t
bWFuZD4mKTsKICAgICB2b2lkIGV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0
cmluZyYgc2VsZWN0b3IsIGJvb2wmIGhhbmRsZWQpOwogI2VuZGlmCkBAIC0xMDcyLDcgKzEwNzIs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAgICAgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29u
c3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mKTsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQ
TEFURk9STShDT0NPQSkKICAgICAvLyBTcGVlY2guCiAgICAgdm9pZCBnZXRJc1NwZWFraW5nKGJv
b2wmKTsKICAgICB2b2lkIHNwZWFrKGNvbnN0IFN0cmluZyYpOwpAQCAtMTEzNCw3ICsxMTM0LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3Bh
Y2VJbkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFj
ZSYsIGJvb2wmIGNhbkF1dGhlbnRpY2F0ZSk7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCk7CiAKLSNpZiBQTEFURk9STShN
QUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBwbHVnaW5Gb2N1c09yV2luZG93Rm9j
dXNDaGFuZ2VkKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCBib29s
IHBsdWdpbkhhc0ZvY3VzQW5kV2luZG93SGFzRm9jdXMpOwogICAgIHZvaWQgc2V0UGx1Z2luQ29t
cGxleFRleHRJbnB1dFN0YXRlKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlm
aWVyLCB1aW50NjRfdCBjb21wbGV4VGV4dElucHV0U3RhdGUpOwogI2VuZGlmCkBAIC0xMjYwLDcg
KzEyNjAsNyBAQCBwcml2YXRlOgogCiAgICAgSGFzaFNldDxXZWJFZGl0Q29tbWFuZFByb3h5Kj4g
bV9lZGl0Q29tbWFuZFNldDsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NP
QSkKICAgICBIYXNoU2V0PFN0cmluZz4gbV9rbm93bktleXByZXNzQ29tbWFuZE5hbWVzOwogI2Vu
ZGlmCiAKQEAgLTEzNTcsNyArMTM1Nyw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1faXNQYWdl
U3VzcGVuZGVkOwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IGJvb2wgbV9pc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDsKICNlbmRpZgogCkBAIC0xNDE3LDcg
KzE0MTcsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX3dhaXRpbmdGb3JEaWRVcGRhdGVWaWV3
U3RhdGU7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz4gbV90ZW1wb3JhcnlQREZGaWxlczsKICNlbmRpZgogICAgICAg
ICAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgkocmV2aXNpb24gMTY0MTUzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjQyLDcgKzI0Miw3
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
ICAgICBEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oV2ViQ29yZTo6RHJhZ1Nlc3Npb24g
ZHJhZ1Nlc3Npb24pCiAjZW5kaWYKLSNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShEUkFHX1NV
UFBPUlQpCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAg
U2V0RHJhZ0ltYWdlKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJLaXQ6OlNo
YXJlYWJsZUJpdG1hcDo6SGFuZGxlIGRyYWdJbWFnZSwgYm9vbCBsaW5rRHJhZykKICAgICBTZXRQ
cm9taXNlZERhdGEoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6
SGFuZGxlIGltYWdlSGFuZGxlLCB1aW50NjRfdCBpbWFnZVNpemUsIFN0cmluZyBmaWxlbmFtZSwg
U3RyaW5nIGV4dGVuc2lvbiwgU3RyaW5nIHRpdGxlLCBTdHJpbmcgdXJsLCBTdHJpbmcgdmlzaWJs
ZVVSTCwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBhcmNoaXZlSGFuZGxlLCB1aW50NjRf
dCBhcmNoaXZlU2l6ZSkKICNlbmRpZgpAQCAtMjUwLDcgKzI1MCw3IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2VQcm94eSB7CiAgICAgU3RhcnREcmFnKFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhLCBX
ZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGRyYWdJbWFnZSkKICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICMgRGljdGlvbmFyeSBzdXBw
b3J0LgogICAgIERpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKFdlYktpdDo6QXR0cmlidXRlZFN0
cmluZyB0ZXh0LCBXZWJLaXQ6OkRpY3Rpb25hcnlQb3B1cEluZm8gZGljdGlvbmFyeVBvcHVwSW5m
bykKIApAQCAtMzIyLDcgKzMyMiw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAg
ICBTYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1l
LCBTdHJpbmcgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQog
Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFNhdmVQREZUb1Rl
bXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24oU3RyaW5nIHN1Z2dlc3Rl
ZEZpbGVuYW1lLCBTdHJpbmcgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIElQQzo6RGF0YVJlZmVyZW5j
ZSBkYXRhLCBTdHJpbmcgcGRmVVVJRCkKICAgICBPcGVuUERGRnJvbVRlbXBvcmFyeUZvbGRlcldp
dGhOYXRpdmVBcHBsaWNhdGlvbihTdHJpbmcgcGRmVVVJRCkKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDE2NDE1
MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oTUFDKQor
I2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIlBERlBsdWdpbi5oIgogI2VuZGlmCiAKQEAg
LTkyLDcgKzkyLDcgQEAgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkoV2ViQ29udAog
I2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQogICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eSh0aGlzLCBjb250ZXh0KQogI2VuZGlmCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgICwgbV9wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGZhbHNlKQog
I2VuZGlmCiAgICAgLCBtX251bWJlck9mVGltZXNTdWRkZW5UZXJtaW5hdGlvbldhc0Rpc2FibGVk
KDApCkBAIC0xNzQsNyArMTc0LDcgQEAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYlByb2Nl
c3NQcm94eQogICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IHdlYlBhZ2UgPSBXZWJQYWdlUHJveHk6
OmNyZWF0ZShwYWdlQ2xpZW50LCAqdGhpcywgcGFnZUlELCBjb25maWd1cmF0aW9uKTsKICAgICBt
X3BhZ2VNYXAuc2V0KHBhZ2VJRCwgd2ViUGFnZS5nZXQoKSk7CiAgICAgZ2xvYmFsUGFnZU1hcCgp
LnNldChwYWdlSUQsIHdlYlBhZ2UuZ2V0KCkpOwotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBpZiAod2ViUGFnZS0+aXNQcm9jZXNzU3VwcHJlc3NpYmxlKCkpCiAg
ICAgICAgIG1fcHJvY2Vzc1N1cHByZXNzaWJsZVBhZ2VzLmFkZChwYWdlSUQpOwogICAgIHVwZGF0
ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXRlKCk7CkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OmFkZEV4aXN0aW5nV2ViUGFnZQogewogICAgIG1fcGFnZU1hcC5zZXQocGFn
ZUlELCB3ZWJQYWdlKTsKICAgICBnbG9iYWxQYWdlTWFwKCkuc2V0KHBhZ2VJRCwgd2ViUGFnZSk7
Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmICh3ZWJQYWdl
LT5pc1Byb2Nlc3NTdXBwcmVzc2libGUoKSkKICAgICAgICAgbV9wcm9jZXNzU3VwcHJlc3NpYmxl
UGFnZXMuYWRkKHBhZ2VJRCk7CiAgICAgdXBkYXRlUHJvY2Vzc1N1cHByZXNzaW9uU3RhdGUoKTsK
QEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVtb3ZlV2ViUGFnZSh1
aW50CiB7CiAgICAgbV9wYWdlTWFwLnJlbW92ZShwYWdlSUQpOwogICAgIGdsb2JhbFBhZ2VNYXAo
KS5yZW1vdmUocGFnZUlEKTsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgbV9wcm9jZXNzU3VwcHJlc3NpYmxlUGFnZXMucmVtb3ZlKHBhZ2VJRCk7CiAgICAgdXBk
YXRlUHJvY2Vzc1N1cHByZXNzaW9uU3RhdGUoKTsKICNlbmRpZgpAQCAtMjg1LDcgKzI4NSw3IEBA
IGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpjaGVja1VSTFJlY2VpdmVkRnIKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLSNpZiAhUExBVEZPUk0oTUFDKQorI2lmICFQTEFURk9STShDT0NPQSkKIGJvb2wg
V2ViUHJvY2Vzc1Byb3h5OjpmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKCkKIHsKICAgICByZXR1
cm4gZmFsc2U7CkBAIC00NDksNyArNDQ5LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZEZp
bmlzaExhdW5jaGluZwogCiAgICAgbV9jb250ZXh0LT5wcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5n
KHRoaXMpOwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHVw
ZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXRlKCk7CiAjZW5kaWYKIH0KQEAgLTYwOCw3ICs2MDgs
NyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkVXBkYXRlSGlzdG9yeVRpCiAKIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpwYWdlU3VwcHJlc3NpYmlsaXR5Q2hhbmdlZChXZWJLaXQ6OldlYlBhZ2VQ
cm94eSAqcGFnZSkKIHsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgaWYgKHBhZ2UtPmlzUHJvY2Vzc1N1cHByZXNzaWJsZSgpKQogICAgICAgICBtX3Byb2Nlc3NT
dXBwcmVzc2libGVQYWdlcy5hZGQocGFnZS0+cGFnZUlEKCkpOwogICAgIGVsc2UKQEAgLTYyMSw3
ICs2MjEsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cGFnZVN1cHByZXNzaWJpbGl0CiAKIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpwYWdlUHJlZmVyZW5jZXNDaGFuZ2VkKFdlYktpdDo6V2ViUGFn
ZVByb3h5ICpwYWdlKQogewotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBpZiAocGFnZS0+aXNQcm9jZXNzU3VwcHJlc3NpYmxlKCkpCiAgICAgICAgIG1fcHJvY2Vz
c1N1cHByZXNzaWJsZVBhZ2VzLmFkZChwYWdlLT5wYWdlSUQoKSk7CiAgICAgZWxzZQpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMTY0
MTUzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkU2F2ZVRv
UGFnZUNhY2hlKCk7CiAgICAgdm9pZCByZWxlYXNlUGFnZUNhY2hlKCk7CiAKLSNpZiBQTEFURk9S
TShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBhbGxQYWdlc0FyZVByb2Nlc3NT
dXBwcmVzc2libGUoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0
YXRlKCk7CiAjZW5kaWYKQEAgLTIwNSw3ICsyMDUsNyBAQCBwcml2YXRlOgogICAgIEN1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5IG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk7CiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBIYXNoU2V0PHVp
bnQ2NF90PiBtX3Byb2Nlc3NTdXBwcmVzc2libGVQYWdlczsKICAgICBib29sIG1fcHJvY2Vzc1N1
cHByZXNzaW9uRW5hYmxlZDsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDE2NDE1MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTg2LDcgKzE1ODYs
NyBAQCB2b2lkIFdLUGFnZUV4ZWN1dGVDb21tYW5kKFdLUGFnZVJlZiBwYWdlCiAgICAgdG9JbXBs
KHBhZ2VSZWYpLT5leGVjdXRlRWRpdENvbW1hbmQodG9JbXBsKGNvbW1hbmQpLT5zdHJpbmcoKSk7
CiB9CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiBzdHJ1Y3QgQ29t
cHV0ZWRQYWdlc0NvbnRleHQgewogICAgIENvbXB1dGVkUGFnZXNDb250ZXh0KFdLUGFnZUNvbXB1
dGVQYWdlc0ZvclByaW50aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpCiAgICAg
ICAgIDogY2FsbGJhY2soY2FsbGJhY2spCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
RGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5LmNwcAkocmV2
aXNpb24gMTY0MTUzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRh
YmFzZVByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgdm9p
ZCBEYXRhYmFzZVByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlRGF0YQogCiAgICAgUmVmUHRyPE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5
ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsK
IAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBPUyhEQVJXSU4pCiAgICAgcmVwbHktPnNlbmQoSVBD
OjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9N
T1ZFX1NFTkQpKTsKICNlbHNlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3Bw
CShyZXZpc2lvbiAxNjQxNTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIv
UHJvY2Vzc0xhdW5jaGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCB2b2lk
IFByb2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNoTGF1bmNoaW5nCiAgICAgCiAgICAgaWYgKCFtX2Ns
aWVudCkgewogICAgICAgICAvLyBGSVhNRTogTWFrZSBJZGVudGlmaWVyIGEgbW92ZS1vbmx5IG9i
amVjdCBhbmQgcmVsZWFzZSBwb3J0IHJpZ2h0cy9jb25uZWN0aW9ucyBpbiB0aGUgZGVzdHJ1Y3Rv
ci4KLSNpZiBQTEFURk9STShNQUMpCisjaWYgT1MoREFSV0lOKQogICAgICAgICBpZiAoaWRlbnRp
Zmllci5wb3J0KQogICAgICAgICAgICAgbWFjaF9wb3J0X21vZF9yZWZzKG1hY2hfdGFza19zZWxm
KCksIGlkZW50aWZpZXIucG9ydCwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsIC0xKTsKIApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1
bmNoZXIuaAkocmV2aXNpb24gMTY0MTUzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xh
dW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBA
IHB1YmxpYzoKICAgICBzdHJ1Y3QgTGF1bmNoT3B0aW9ucyB7CiAgICAgICAgIFByb2Nlc3NUeXBl
IHByb2Nlc3NUeXBlOwogICAgICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBleHRyYUluaXRp
YWxpemF0aW9uRGF0YTsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgT1MoREFSV0lOKQogICAgICAg
ICBzdGF0aWMgY29uc3QgY3B1X3R5cGVfdCBNYXRjaEN1cnJlbnRBcmNoaXRlY3R1cmUgPSAwOwog
ICAgICAgICBjcHVfdHlwZV90IGFyY2hpdGVjdHVyZTsKICAgICAgICAgYm9vbCBleGVjdXRhYmxl
SGVhcDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAxNjQxNTMpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bmV0
d29ya1Byb2Nlc3MKICAgICB3aGlsZSAoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1w
dHkoKSkgewogICAgICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29u
bmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgT1Mo
REFSV0lOKQogICAgICAgICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoMCwgTUFDSF9NU0df
VFlQRV9NT1ZFX1NFTkQpKTsKICNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgICAg
ICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoKSk7CkBAIC0xNjEsNyArMTYxLDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVOZXR3bwogICAgIC8vIEdyYWIgdGhlIGZp
cnN0IHBlbmRpbmcgY29ubmVjdGlvbiByZXBseS4KICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJl
cGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKLSNpZiBQTEFU
Rk9STShNQUMpCisjaWYgT1MoREFSV0lOKQogICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVu
dChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7
CiAjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICByZXBseS0+c2VuZChjb25uZWN0
aW9uSWRlbnRpZmllcik7CkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpkaWRGaW5pc2hMYXVuYwogICAgIAogICAgIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1
ZXN0cyA9IDA7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
aWYgKG1fd2ViQ29udGV4dC5wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkpCiAgICAgICAgIHNl
dFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQodHJ1ZSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmgJKHJldmlzaW9uIDE2NDE1MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBw
dWJsaWM6CiAKICAgICBEb3dubG9hZFByb3h5KiBjcmVhdGVEb3dubG9hZFByb3h5KCk7CiAKLSNp
ZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBzZXRQcm9jZXNz
U3VwcHJlc3Npb25FbmFibGVkKGJvb2wpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oCShyZXZpc2lvbiAxNjQx
NTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAs
NyBAQAogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAKLSNpZiBQTEFURk9STShNQUMp
CisjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiBPQkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI7CkBA
IC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgQ2hpbGRQcm9jZXNzUHJveHkqIG1fY2hpbGRQ
cm9jZXNzUHJveHk7CiAgICAgV2ViQ29udGV4dCYgbV93ZWJDb250ZXh0OwogCi0jaWYgUExBVEZP
Uk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRf
dCwgUmV0YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI+PiBMb2FkZXJNYXA7CiAgICAgTG9h
ZGVyTWFwIG1fbG9hZGVyTWFwOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAJKHJldmlzaW9uIDE2NDE1
MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw3ICsxNzEsNyBAQCBzdGF0aWMgaW5saW5lIFN0cmlu
ZyBwYXRoRXh0ZW5zaW9uKGNvbnN0CiAgICAgcmV0dXJuIGV4dGVuc2lvbjsKIH0KIAotI2lmICFQ
TEFURk9STShNQUMpCisjaWYgIVBMQVRGT1JNKENPQ09BKQogUGx1Z2luTW9kdWxlTG9hZFBvbGlj
eSBQbHVnaW5JbmZvU3RvcmU6OmRlZmF1bHRMb2FkUG9saWN5Rm9yUGx1Z2luKGNvbnN0IFBsdWdp
bk1vZHVsZUluZm8mKQogewogICAgIHJldHVybiBQbHVnaW5Nb2R1bGVMb2FkTm9ybWFsbHk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NNYW5hZ2VyLmgJKHJldmlzaW9uIDE2NDE1MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0U2l0ZXNXaXRoRGF0YShjb25zdCBQ
bHVnaW5Nb2R1bGVJbmZvJiwgV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyKiwgdWludDY0X3QgY2Fs
bGJhY2tJRCk7CiAgICAgdm9pZCBjbGVhclNpdGVEYXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8m
LCBXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIqLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2l0ZXMs
IHVpbnQ2NF90IGZsYWdzLCB1aW50NjRfdCBtYXhBZ2VJblNlY29uZHMsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZv
aWQgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sKTsKICNlbmRpZgogCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NQcm94eS5jcHAJKHJldmlzaW9uIDE2NDE1MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcg
KzM5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1J1bkxvb3AuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBPUyhEQVJXSU4pCiAjaW5j
bHVkZSAiTWFjaFBvcnQuaCIKICNlbmRpZgogCkBAIC02Myw3ICs2Myw3IEBAIFBsdWdpblByb2Nl
c3NQcm94eTo6UGx1Z2luUHJvY2Vzc1Byb3h5KFAKICAgICAsIG1fcGx1Z2luUHJvY2Vzc0F0dHJp
YnV0ZXMocGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMpCiAgICAgLCBtX3BsdWdpblByb2Nlc3NUb2tl
bihwbHVnaW5Qcm9jZXNzVG9rZW4pCiAgICAgLCBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVz
dHMoMCkKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLCBtX21v
ZGFsV2luZG93SXNTaG93aW5nKGZhbHNlKQogICAgICwgbV9mdWxsc2NyZWVuV2luZG93SXNTaG93
aW5nKGZhbHNlKQogICAgICwgbV9wcmVGdWxsc2NyZWVuQXBwUHJlc2VudGF0aW9uT3B0aW9ucygw
KQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpwbHVnaW5Qcm9j
ZXNzQ3IKICAgICB3aGlsZSAoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHkoKSkg
ewogICAgICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9u
UmVwbGllcy50YWtlRmlyc3QoKTsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBPUyhEQVJXSU4p
CiAgICAgICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBFX01P
VkVfU0VORCksIGZhbHNlKTsKICNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgICAg
ICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoKSwgZmFsc2UpOwpAQCAtMTU4LDcgKzE1OCw3
IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpwbHVnaW5Qcm9jZXNzQ3IKIAogdm9pZCBQbHVn
aW5Qcm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiopCiB7Ci0jaWYgUExBVEZP
Uk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChtX21vZGFsV2luZG93SXNTaG93
aW5nKQogICAgICAgICBlbmRNb2RhbCgpOwogCkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBQbHVn
aW5Qcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaAogICAgIH0KIAogICAgIG1fY29ubmVjdGlv
biA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQ29ubmVjdGlvbihjb25uZWN0aW9uSWRl
bnRpZmllciwgdGhpcywgUnVuTG9vcDo6bWFpbigpKTsKLSNpZiBQTEFURk9STShNQUMpCisjaWYg
T1MoREFSV0lOKQogICAgIG1fY29ubmVjdGlvbi0+c2V0U2hvdWxkQ2xvc2VDb25uZWN0aW9uT25N
YWNoRXhjZXB0aW9ucygpOwogI2VuZGlmCiAKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFBsdWdp
blByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgcGx1
Zy1pbiBob3N0IHByb2Nlc3MuCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpQbHVn
aW5Qcm9jZXNzOjpJbml0aWFsaXplUGx1Z2luUHJvY2VzcyhwYXJhbWV0ZXJzKSwgMCk7CiAKLSNp
ZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbV9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzOjpTZXRRT1MocGx1Z2luUHJvY2Vzc0xhdGVuY3lR
T1MoKSwgcGx1Z2luUHJvY2Vzc1Rocm91Z2hwdXRRT1MoKSksIDApOwogI2VuZGlmCiAKQEAgLTIy
OCw3ICsyMjgsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoCiAg
ICAgCiAgICAgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzID0gMDsKIAotI2lmIFBMQVRG
T1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoV2ViQ29udGV4dDo6cHJvY2Vz
c1N1cHByZXNzaW9uSXNFbmFibGVkRm9yQWxsQ29udGV4dHMoKSkKICAgICAgICAgc2V0UHJvY2Vz
c1N1cHByZXNzaW9uRW5hYmxlZCh0cnVlKTsKICNlbmRpZgpAQCAtMjQxLDcgKzI0MSw3IEBAIHZv
aWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm8KICAgICAvLyBHcmFiIHRoZSBm
aXJzdCBwZW5kaW5nIGNvbm5lY3Rpb24gcmVwbHkuCiAgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJl
cGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKLSNpZiBQTEFU
Rk9STShNQUMpCisjaWYgT1MoREFSV0lOKQogICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVu
dChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSwg
c3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbik7CiAjZWxpZiBVU0UoVU5J
WF9ET01BSU5fU09DS0VUUykKICAgICByZXBseS0+c2VuZChjb25uZWN0aW9uSWRlbnRpZmllciwg
c3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHku
aAkocmV2aXNpb24gMTY0MTUzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAKICNp
bmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KIE9CSkNfQ0xBU1MgTlNPYmplY3Q7CiBPQkpDX0NMQVNTIFdLUGxhY2Vo
b2xkZXJNb2RhbFdpbmRvdzsKQEAgLTYzLDcgKzYzLDcgQEAgc3RydWN0IFJhd1BsdWdpbk1ldGFE
YXRhIHsKIH07CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NP
QSkKIGludCBwbHVnaW5Qcm9jZXNzTGF0ZW5jeVFPUygpOwogaW50IHBsdWdpblByb2Nlc3NUaHJv
dWdocHV0UU9TKCk7CiAjZW5kaWYKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogCiAgICAgYm9v
bCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9CiAKLSNpZiBQTEFURk9S
TShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBzZXRQcm9jZXNzU3VwcHJlc3Np
b25FbmFibGVkKGJvb2wpOwogCiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBwbHVnLWluIG5l
ZWRzIHRoZSBoZWFwIHRvIGJlIG1hcmtlZCBleGVjdXRhYmxlLgpAQCAtMTI1LDcgKzEyNSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRHZXRTaXRlc1dpdGhEYXRhKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBzaXRlcywgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkaWRDbGVhclNpdGVE
YXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIGJvb2wgZ2V0UGx1Z2luUHJvY2Vzc1NlcmlhbE51bWJlcihQcm9jZXNz
U2VyaWFsTnVtYmVyJik7CiAgICAgdm9pZCBtYWtlUGx1Z2luUHJvY2Vzc1RoZUZyb250UHJvY2Vz
cygpOwogICAgIHZvaWQgbWFrZVVJUHJvY2Vzc1RoZUZyb250UHJvY2VzcygpOwpAQCAtMTc1LDcg
KzE3NSw3IEBAIHByaXZhdGU6CiAgICAgLy8gd2hlbiB0aGUgcHJvY2VzcyBmaW5pc2hlcyBsYXVu
Y2hpbmcuCiAgICAgdW5zaWduZWQgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzOwogCi0j
aWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxOU09i
amVjdD4gbV9hY3RpdmF0aW9uT2JzZXJ2ZXI7CiAgICAgUmV0YWluUHRyPFdLUGxhY2Vob2xkZXJN
b2RhbFdpbmRvdyAqPiBtX3BsYWNlaG9sZGVyV2luZG93OwogICAgIGJvb2wgbV9tb2RhbFdpbmRv
d0lzU2hvd2luZzsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9u
IDE2NDE1MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQCBtZXNz
YWdlcyAtPiBQbHVnaW5Qcm9jZXNzUHJveHkgewogICAgIERpZEdldFNpdGVzV2l0aERhdGEoVmVj
dG9yPFN0cmluZz4gc2l0ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgRGlkQ2xlYXJTaXRl
RGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIFNldE1vZGFsV2luZG93SXNTaG93aW5nKGJvb2wgbW9kYWxXaW5kb3dJ
c1Nob3dpbmcpCiAgICAgU2V0RnVsbHNjcmVlbldpbmRvd0lzU2hvd2luZyhib29sIGZ1bGxzY3Jl
ZW5XaW5kb3dJc1Nob3dpbmcpCiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Y2YvV2ViUHJlZmVyZW5jZXNDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2NmL1dlYlByZWZlcmVuY2VzQ0YuY3BwCShyZXZpc2lvbiAxNjQxNTMpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViUHJlZmVyZW5jZXNDRi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKLQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgotCi0jaWYgIVBMQVRGT1JN
KE1BQykKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBtYWtlS2V5KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBiYXNlS2V5KQotewotICAgIHJldHVybiBtYWtlU3RyaW5nKGlkZW50aWZpZXIsICIuV2ViS2l0
MiIsIGJhc2VLZXkpLmNyZWF0ZUNGU3RyaW5nKCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNldFN0cmlu
Z1ZhbHVlSWZJblVzZXJEZWZhdWx0cyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgYmFzZUtleSwgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCi17Ci0gICAgUmV0YWlu
UHRyPENGUHJvcGVydHlMaXN0UmVmPiB2YWx1ZSA9IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlB
cHBWYWx1ZShtYWtlS2V5KGlkZW50aWZpZXIsIGJhc2VLZXkpLmdldCgpLCBrQ0ZQcmVmZXJlbmNl
c0N1cnJlbnRBcHBsaWNhdGlvbikpOwotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybjsK
LSAgICBpZiAoQ0ZHZXRUeXBlSUQodmFsdWUuZ2V0KCkpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHN0b3JlLnNldFN0cmluZ1ZhbHVlRm9yS2V5KGJhc2VL
ZXksIChDRlN0cmluZ1JlZil2YWx1ZS5nZXQoKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNldEJvb2xW
YWx1ZUlmSW5Vc2VyRGVmYXVsdHMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGJhc2VLZXksIFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQotewotICAgIFJldGFpblB0
cjxDRlByb3BlcnR5TGlzdFJlZj4gdmFsdWUgPSBhZG9wdENGKENGUHJlZmVyZW5jZXNDb3B5QXBw
VmFsdWUobWFrZUtleShpZGVudGlmaWVyLCBiYXNlS2V5KS5nZXQoKSwga0NGUHJlZmVyZW5jZXND
dXJyZW50QXBwbGljYXRpb24pKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm47Ci0g
ICAgaWYgKENGR2V0VHlwZUlEKHZhbHVlLmdldCgpKSAhPSBDRkJvb2xlYW5HZXRUeXBlSUQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RvcmUuc2V0Qm9vbFZhbHVlRm9yS2V5KGJhc2VLZXks
IENGQm9vbGVhbkdldFZhbHVlKChDRkJvb2xlYW5SZWYpdmFsdWUuZ2V0KCkpID8gdHJ1ZSA6IGZh
bHNlKTsKLX0KLQotc3RhdGljIHZvaWQgc2V0VUludDMyVmFsdWVJZkluVXNlckRlZmF1bHRzKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBiYXNlS2V5LCBXZWJQcmVmZXJl
bmNlc1N0b3JlJiBzdG9yZSkKLXsKLSAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RSZWY+IHZh
bHVlID0gYWRvcHRDRihDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlKG1ha2VLZXkoaWRlbnRpZmll
ciwgYmFzZUtleSkuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKSk7Ci0g
ICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChDRkdldFR5cGVJRCh2YWx1
ZS5nZXQoKSkgIT0gQ0ZOdW1iZXJHZXRUeXBlSUQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlu
dDMyX3QgaW50VmFsdWUgPSAwOwotICAgIGlmICghQ0ZOdW1iZXJHZXRWYWx1ZSgoQ0ZOdW1iZXJS
ZWYpdmFsdWUuZ2V0KCksIGtDRk51bWJlclNJbnQzMlR5cGUsICZpbnRWYWx1ZSkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIHN0b3JlLnNldFVJbnQzMlZhbHVlRm9yS2V5KGJhc2VLZXksIGludFZh
bHVlKTsKLX0KLQotc3RhdGljIHZvaWQgc2V0RG91YmxlVmFsdWVJZkluVXNlckRlZmF1bHRzKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBiYXNlS2V5LCBXZWJQcmVmZXJl
bmNlc1N0b3JlJiBzdG9yZSkKLXsKLSAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RSZWY+IHZh
bHVlID0gYWRvcHRDRihDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlKG1ha2VLZXkoaWRlbnRpZmll
ciwgYmFzZUtleSkuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKSk7Ci0g
ICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChDRkdldFR5cGVJRCh2YWx1
ZS5nZXQoKSkgIT0gQ0ZOdW1iZXJHZXRUeXBlSUQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGRv
dWJsZSBkb3VibGVWYWx1ZSA9IDA7Ci0gICAgaWYgKCFDRk51bWJlckdldFZhbHVlKChDRk51bWJl
clJlZil2YWx1ZS5nZXQoKSwga0NGTnVtYmVyRG91YmxlVHlwZSwgJmRvdWJsZVZhbHVlKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgc3RvcmUuc2V0RG91YmxlVmFsdWVGb3JLZXkoYmFzZUtleSwg
ZG91YmxlVmFsdWUpOwotfQotCi12b2lkIFdlYlByZWZlcmVuY2VzOjpwbGF0Zm9ybUluaXRpYWxp
emVTdG9yZSgpCi17Ci0gICAgaWYgKCFtX2lkZW50aWZpZXIpCi0gICAgICAgIHJldHVybjsKLQot
I2RlZmluZSBJTklUSUFMSVpFX1BSRUZFUkVOQ0VfRlJPTV9OU1VTRVJERUZBVUxUUyhLZXlVcHBl
ciwgS2V5TG93ZXIsIFR5cGVOYW1lLCBUeXBlLCBEZWZhdWx0VmFsdWUpIFwKLSAgICBzZXQjI1R5
cGVOYW1lIyNWYWx1ZUlmSW5Vc2VyRGVmYXVsdHMobV9pZGVudGlmaWVyLCBXZWJQcmVmZXJlbmNl
c0tleTo6S2V5TG93ZXIjI0tleSgpLCBtX3N0b3JlKTsKLQotICAgIEZPUl9FQUNIX1dFQktJVF9Q
UkVGRVJFTkNFKElOSVRJQUxJWkVfUFJFRkVSRU5DRV9GUk9NX05TVVNFUkRFRkFVTFRTKQotCi0j
dW5kZWYgSU5JVElBTElaRV9QUkVGRVJFTkNFX0ZST01fTlNVU0VSREVGQVVMVFMKLQotfQotCi12
b2lkIFdlYlByZWZlcmVuY2VzOjpwbGF0Zm9ybVVwZGF0ZVN0cmluZ1ZhbHVlRm9yS2V5KGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQotewotICAgIGlmICghbV9pZGVudGlm
aWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUobWFr
ZUtleShtX2lkZW50aWZpZXIsIGtleSkuZ2V0KCksIGNmU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmco
dmFsdWUpLmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbik7Ci19Ci0KLXZv
aWQgV2ViUHJlZmVyZW5jZXM6OnBsYXRmb3JtVXBkYXRlQm9vbFZhbHVlRm9yS2V5KGNvbnN0IFN0
cmluZyYga2V5LCBib29sIHZhbHVlKQotewotICAgIGlmICghbV9pZGVudGlmaWVyKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUobWFrZUtleShtX2lkZW50
aWZpZXIsIGtleSkuZ2V0KCksIHZhbHVlID8ga0NGQm9vbGVhblRydWUgOiBrQ0ZCb29sZWFuRmFs
c2UsIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKTsKLX0KLQotdm9pZCBXZWJQcmVm
ZXJlbmNlczo6cGxhdGZvcm1VcGRhdGVVSW50MzJWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtl
eSwgdWludDMyX3QgdmFsdWUpCi17Ci0gICAgaWYgKCFtX2lkZW50aWZpZXIpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gbnVtYmVyID0gYWRvcHRDRihDRk51
bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJTSW50MzJUeXBlLCAmdmFsdWUpKTsKLSAgICBDRlByZWZl
cmVuY2VzU2V0QXBwVmFsdWUobWFrZUtleShtX2lkZW50aWZpZXIsIGtleSkuZ2V0KCksIG51bWJl
ci5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwotfQotCi12b2lkIFdl
YlByZWZlcmVuY2VzOjpwbGF0Zm9ybVVwZGF0ZURvdWJsZVZhbHVlRm9yS2V5KGNvbnN0IFN0cmlu
ZyYga2V5LCBkb3VibGUgdmFsdWUpCi17Ci0gICAgaWYgKCFtX2lkZW50aWZpZXIpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gbnVtYmVyID0gYWRvcHRDRihD
Rk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAmdmFsdWUpKTsKLSAgICBDRlBy
ZWZlcmVuY2VzU2V0QXBwVmFsdWUobWFrZUtleShtX2lkZW50aWZpZXIsIGtleSkuZ2V0KCksIG51
bWJlci5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwotfQotCi12b2lk
IFdlYlByZWZlcmVuY2VzOjpwbGF0Zm9ybVVwZGF0ZUZsb2F0VmFsdWVGb3JLZXkoY29uc3QgU3Ry
aW5nJiBrZXksIGZsb2F0IHZhbHVlKQotewotICAgIGlmICghbV9pZGVudGlmaWVyKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IG51bWJlciA9IGFkb3B0Q0Yo
Q0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyRmxvYXRUeXBlLCAmdmFsdWUpKTsKLSAgICBDRlBy
ZWZlcmVuY2VzU2V0QXBwVmFsdWUobWFrZUtleShtX2lkZW50aWZpZXIsIGtleSkuZ2V0KCksIG51
bWJlci5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vICFQTEFURk9STShNQUMpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYkluc3BlY3RvclByb3h5SU9TLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViSW5zcGVjdG9yUHJveHlJT1Mu
bW0JKHJldmlzaW9uIDE2NDE1MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2Vi
SW5zcGVjdG9yUHJveHlJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDE2ICszMiw2IEBACiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNw
ZWN0b3JXaW5kb3coKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OnVwZGF0ZUluc3BlY3RvcldpbmRvd1RpdGxlKCkgY29uc3QKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCiBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkBA
IC04NCwxMSArNzQsNiBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUFwcGVuZChj
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6aW5z
cGVjdGVkVmlld0ZyYW1lRGlkQ2hhbmdlKENHRmxvYXQpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQogdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2lu
ZG93SGVpZ2h0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTY0
MTUzKQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDMwLDcgKzEwMzAsNiBAQAogCQlCQzI2NTIxNzExODI2MDgx
MDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNjUyMTMxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdB
cmVhUHJveHkuaCAqLzsgfTsKIAkJQkMyRDAyMTcxMkFDNDFDQjAwRTczMkEzIC8qIFNhbWVEb2N1
bWVudE5hdmlnYXRpb25UeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzJEMDIxNjEyQUM0MUNCMDBFNzMyQTMgLyogU2FtZURvY3VtZW50TmF2aWdh
dGlvblR5cGUuaCAqLzsgfTsKIAkJQkMyRDAyMTkxMkFDNDI2QzAwRTczMkEzIC8qIFdLUGFnZUxv
YWRUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkMyRDAyMTgxMkFDNDI2QzAwRTczMkEzIC8qIFdLUGFnZUxvYWRUeXBlcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUJDMkRGQkEzMTJBNzYxQTUw
MEU3MzJBMyAvKiBXZWJQcmVmZXJlbmNlc0NGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkRGQkEyMTJBNzYxQTUwMEU3MzJBMyAvKiBXZWJQcmVm
ZXJlbmNlc0NGLmNwcCAqLzsgfTsKIAkJQkMyRTZFOEQxMTQxOTcxNTAwQTYzQjFFIC8qIFdvcmtR
dWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzJFNkU3RDExNDE5NzBDMDBBNjNCMUUgLyogV29ya1F1ZXVlLmNwcCAqLzsgfTsKIAkJQkMyRTZF
OEUxMTQxOTcxNTAwQTYzQjFFIC8qIFdvcmtRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyRTZFN0UxMTQxOTcwQzAwQTYzQjFFIC8qIFdvcmtR
dWV1ZS5oICovOyB9OwogCQlCQzMwNjVDNDEyNTkyRjg5MDBFNzEyNzggLyogV2ViUHJvY2Vzc01h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzA2
NUMzMTI1OTJGODkwMEU3MTI3OCAvKiBXZWJQcm9jZXNzTWFjLm1tICovOyB9OwpAQCAtMjc5MCw3
ICsyNzg5LDYgQEAKIAkJQkMyNjUyMTMxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJv
eHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhd2luZ0FyZWFQcm94eS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJEMDIxNjEyQUM0MUNCMDBFNzMyQTMg
LyogU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkMyRDAyMTgxMkFDNDI2QzAwRTczMkEzIC8qIFdLUGFnZUxvYWRUeXBlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1BhZ2VMb2FkVHlwZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkMyREZCQTIxMkE3NjFBNTAwRTczMkEzIC8qIFdl
YlByZWZlcmVuY2VzQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
V2ViUHJlZmVyZW5jZXNDRi5jcHA7IHBhdGggPSBjZi9XZWJQcmVmZXJlbmNlc0NGLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyRTZFN0QxMTQxOTcwQzAwQTYzQjFFIC8qIFdv
cmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrUXVl
dWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJFNkU3RTExNDE5NzBDMDBB
NjNCMUUgLyogV29ya1F1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdv
cmtRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzMwNjVDMzEyNTkyRjg5
MDBFNzEyNzggLyogV2ViUHJvY2Vzc01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYlByb2Nlc3NNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC00NzE4LDcgKzQ3MTYsNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTFCMzAwNEUxMjUy
OUQwRTAwMEI1Q0EwIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENGLmNwcCAqLywKIAkJCQk1MUIzMDA0
RjEyNTI5RDBFMDAwQjVDQTAgLyogV2ViUGFnZVByb3h5Q0YuY3BwICovLAotCQkJCUJDMkRGQkEy
MTJBNzYxQTUwMEU3MzJBMyAvKiBXZWJQcmVmZXJlbmNlc0NGLmNwcCAqLywKIAkJCSk7CiAJCQlu
YW1lID0gY2Y7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtODEyMSw3ICs4MTE4LDYg
QEAKIAkJCQlCQ0M0M0FDNzEyN0I5OURFMDAzMTdGMTYgLyogV2ViUG9wdXBNZW51TWFjLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkM1NzUwOTgxMjY4RjNDNjAwNkYwRjEyIC8qIFdlYlBvcHVwTWVu
dVByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNENTk4MDAxMTJCNTdCRTAwRUM4QzIz
IC8qIFdlYlByZWZlcmVuY2VzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDMkRGQkEzMTJBNzYx
QTUwMEU3MzJBMyAvKiBXZWJQcmVmZXJlbmNlc0NGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
ODRFQjE4MTJBNzEwMEMwMDgzRjJEQSAvKiBXZWJQcmVmZXJlbmNlc01hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDRDU5OEFEMTEyQjdGREYwMEVDOEMyMyAvKiBXZWJQcmVmZXJlbmNlc1N0b3Jl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMTExQUU0MTEyRjVDMjYwMDMzN0JBQiAvKiBXZWJQ
cm9jZXNzLmNwcCBpbiBTb3VyY2VzICovLAo=
</data>
<flag name="review"
          id="248373"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>