<?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>260565</bug_id>
          
          <creation_ts>2023-08-22 18:26:44 -0700</creation_ts>
          <short_desc>REGRESSION(267124@main): Broke mouse events on Windows</short_desc>
          <delta_ts>2023-08-29 18:27:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>260356</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>charliew</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1972808</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2023-08-22 18:26:44 -0700</bug_when>
    <thetext>https://commits.webkit.org/267124@main introduced a regression:
Broke mouse events on Windows

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1972811</commentid>
    <comment_count>1</comment_count>
      <attachid>467392</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2023-08-22 18:26:50 -0700</bug_when>
    <thetext>Created attachment 467392
REVERT of 267124@main

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1974360</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-08-29 18:27:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/114672571&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467392</attachid>
            <date>2023-08-22 18:26:50 -0700</date>
            <delta_ts>2023-08-22 18:26:50 -0700</delta_ts>
            <desc>REVERT of 267124@main</desc>
            <filename>bug-260565-20230823012649.patch</filename>
            <type>text/plain</type>
            <size>48675</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSAwODMwMWYyNWI1Y2NlNGQwNWM0ZGIwNjkxMDIyN2FiN2I1MzNhZDk5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBXZWQsIDIzIEF1ZyAyMDIzIDAxOjI2OjQ3ICswMDAwClN1YmplY3Q6IFtQQVRDSF0g
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIDI2NzEyNEBtYWluLgogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI2MDU2NQoKQnJva2UgbW91c2UgZXZlbnRzIG9uIFdpbmRvd3MK
ClJldmVydGVkIGNoYW5nZXNldDoKCiJSZWZhY3RvciBtb3VzZSBhbmQga2V5Ym9hcmQgaGFuZGxp
bmcgaW4gdGhlIHdlYiBwcm9jZXNzIHRvIGJlIGZyYW1lIHNwZWNpZmljIgpodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYwMzU2Cmh0dHBzOi8vY29tbWl0cy53ZWJraXQu
b3JnLzI2NzEyNEBtYWluCi0tLQogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lLmNwcCAg
ICAgICAgICAgIHwgICAyIC0KIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZS5oICAgICAg
ICAgICAgICB8ICAgNCAtCiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwICAgICAgICAgICAg
ICAgICAgfCAgIDIgKwogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggICAgICAgICAgICAgICAg
ICAgIHwgICAzICsKIFNvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuY3BwICAg
ICB8ICA3OCArKysrLS0tLQogU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5o
ICAgICAgIHwgIDExICstCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
ICAgICAgfCAgMjkgKy0tCiAuLi4vSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNw
cCAgICAgfCAgMTAgKy0KIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNw
cCAgICB8ICAgNCArLQogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwIHwgMTA2IC0tLS0tLS0tLS0tCiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5oICAgfCAgIDcgLQogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgIHwgMTY2ICsrKysrKysrKysrKysrLS0tLQogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oICAgIHwgIDEyICstCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4gICAgfCAgIDggKy0KIDE0IGZpbGVzIGNoYW5nZWQsIDIwMCBp
bnNlcnRpb25zKCspLCAyNDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Mb2NhbEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZS5j
cHAKaW5kZXggNGNmNmM3Y2FmYTBmLi43MzNjZjYwODA3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2Nh
bEZyYW1lLmNwcApAQCAtOTgsNyArOTgsNiBAQAogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgogI2luY2x1ZGUgIlVz
ZXJHZXN0dXJlSW5kaWNhdG9yLmgiCi0jaW5jbHVkZSAiVXNlcklucHV0QnJpZGdlLmgiCiAjaW5j
bHVkZSAiVXNlclNjcmlwdC5oIgogI2luY2x1ZGUgIlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9y
LmgiCiAjaW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgiCkBAIC0xNTYsNyArMTU1LDYgQEAgTG9jYWxG
cmFtZTo6TG9jYWxGcmFtZShQYWdlJiBwYWdlLCBVbmlxdWVSZWY8TG9jYWxGcmFtZUxvYWRlckNs
aWVudD4mJiBmcmFtZUxvYWQKICAgICAsIG1fcGFnZVpvb21GYWN0b3IocGFyZW50UGFnZVpvb21G
YWN0b3IodGhpcykpCiAgICAgLCBtX3RleHRab29tRmFjdG9yKHBhcmVudFRleHRab29tRmFjdG9y
KHRoaXMpKQogICAgICwgbV9ldmVudEhhbmRsZXIobWFrZVVuaXF1ZVJlZjxFdmVudEhhbmRsZXI+
KCp0aGlzKSkKLSAgICAsIG1fdXNlcklucHV0QnJpZGdlKG1ha2VVbmlxdWVSZWY8VXNlcklucHV0
QnJpZGdlPigqdGhpcykpCiB7CiAgICAgUHJvY2Vzc1dhcm1pbmc6OmluaXRpYWxpemVOYW1lcygp
OwogICAgIFN0YXRpY0NTU1ZhbHVlUG9vbDo6aW5pdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Mb2NhbEZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWUu
aAppbmRleCA4NTA4ZjAwZjg4NGUuLjdiMDFkNGE0ZDkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Mb2NhbEZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZy
YW1lLmgKQEAgLTkzLDcgKzkzLDYgQEAgY2xhc3MgUmVuZGVyVmlldzsKIGNsYXNzIFJlbmRlcldp
ZGdldDsKIGNsYXNzIFNjcmlwdENvbnRyb2xsZXI7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNs
YXNzIFVzZXJJbnB1dEJyaWRnZTsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIGNsYXNzIFdpZGdl
dDsKIApAQCAtMjg2LDggKzI4NSw2IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgYXJlUGx1Z2luc0VuYWJsZWQoKTsKIAotICAgIFVzZXJJbnB1dEJyaWRnZSYgdXNlcklucHV0
QnJpZGdlKCkgeyByZXR1cm4gbV91c2VySW5wdXRCcmlkZ2UuZ2V0KCk7IH0KLQogcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgTmF2aWdhdGlvbkRpc2FibGVyOwogCkBAIC0zNDUsNyArMzQyLDYg
QEAgcHJpdmF0ZToKICAgICBGbG9hdFNpemUgbV9vdmVycmlkZVNjcmVlblNpemU7CiAKICAgICBV
bmlxdWVSZWY8RXZlbnRIYW5kbGVyPiBtX2V2ZW50SGFuZGxlcjsKLSAgICBVbmlxdWVSZWY8VXNl
cklucHV0QnJpZGdlPiBtX3VzZXJJbnB1dEJyaWRnZTsKIH07CiAKIGlubGluZSBMb2NhbEZyYW1l
VmlldyogTG9jYWxGcmFtZTo6dmlldygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBiNjUx
MmI2MWZkYTYuLmI1NmU0ZWIyZmNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xNjIsNiArMTYy
LDcgQEAKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVXNlckNv
bnRlbnRQcm92aWRlci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgorI2lu
Y2x1ZGUgIlVzZXJJbnB1dEJyaWRnZS5oIgogI2luY2x1ZGUgIlVzZXJTY3JpcHQuaCIKICNpbmNs
dWRlICJVc2VyU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50
LmgiCkBAIC0yOTMsNiArMjk0LDcgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBh
Z2VDb25maWd1cmF0aW9uKQogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgICwgbV9jb250
ZXh0TWVudUNvbnRyb2xsZXIobWFrZVVuaXF1ZVJlZjxDb250ZXh0TWVudUNvbnRyb2xsZXI+KCp0
aGlzLCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmNvbnRleHRNZW51Q2xpZW50KSkpCiAjZW5k
aWYKKyAgICAsIG1fdXNlcklucHV0QnJpZGdlKG1ha2VVbmlxdWVSZWY8VXNlcklucHV0QnJpZGdl
PigqdGhpcykpCiAgICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIobWFrZVVuaXF1ZVJlZjxJbnNw
ZWN0b3JDb250cm9sbGVyPigqdGhpcywgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5pbnNwZWN0
b3JDbGllbnQpKSkKICAgICAsIG1fcG9pbnRlckNhcHR1cmVDb250cm9sbGVyKG1ha2VVbmlxdWVS
ZWY8UG9pbnRlckNhcHR1cmVDb250cm9sbGVyPigqdGhpcykpCiAjaWYgRU5BQkxFKFBPSU5URVJf
TE9DSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggOWJkZDEwYjM3OTIxLi4yNTZlNDIwMDdjM2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCkBAIC0xNjAsNiArMTYwLDcgQEAgY2xhc3MgU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyOwogY2xhc3MgU3RvcmFnZVByb3ZpZGVyOwogY2xhc3MgVXNlckNvbnRlbnRQcm92aWRlcjsK
IGNsYXNzIFVzZXJDb250ZW50VVJMUGF0dGVybjsKK2NsYXNzIFVzZXJJbnB1dEJyaWRnZTsKIGNs
YXNzIFVzZXJTY3JpcHQ7CiBjbGFzcyBVc2VyU3R5bGVTaGVldDsKIGNsYXNzIFZhbGlkYXRpb25N
ZXNzYWdlQ2xpZW50OwpAQCAtMzc1LDYgKzM3Niw3IEBAIHB1YmxpYzoKICAgICBDb250ZXh0TWVu
dUNvbnRyb2xsZXImIGNvbnRleHRNZW51Q29udHJvbGxlcigpIHsgcmV0dXJuIG1fY29udGV4dE1l
bnVDb250cm9sbGVyLmdldCgpOyB9CiAgICAgY29uc3QgQ29udGV4dE1lbnVDb250cm9sbGVyJiBj
b250ZXh0TWVudUNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRNZW51Q29udHJv
bGxlci5nZXQoKTsgfQogI2VuZGlmCisgICAgVXNlcklucHV0QnJpZGdlJiB1c2VySW5wdXRCcmlk
Z2UoKSB7IHJldHVybiBtX3VzZXJJbnB1dEJyaWRnZS5nZXQoKTsgfQogICAgIEluc3BlY3RvckNv
bnRyb2xsZXImIGluc3BlY3RvckNvbnRyb2xsZXIoKSB7IHJldHVybiBtX2luc3BlY3RvckNvbnRy
b2xsZXIuZ2V0KCk7IH0KICAgICBQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXImIHBvaW50ZXJDYXB0
dXJlQ29udHJvbGxlcigpIHsgcmV0dXJuIG1fcG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmdldCgp
OyB9CiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKQEAgLTExMTcsNiArMTExOSw3IEBAIHByaXZh
dGU6CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgVW5pcXVlUmVmPENvbnRleHRNZW51
Q29udHJvbGxlcj4gbV9jb250ZXh0TWVudUNvbnRyb2xsZXI7CiAjZW5kaWYKKyAgICBVbmlxdWVS
ZWY8VXNlcklucHV0QnJpZGdlPiBtX3VzZXJJbnB1dEJyaWRnZTsKICAgICBVbmlxdWVSZWY8SW5z
cGVjdG9yQ29udHJvbGxlcj4gbV9pbnNwZWN0b3JDb250cm9sbGVyOwogICAgIFVuaXF1ZVJlZjxQ
b2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI+IG1fcG9pbnRlckNhcHR1cmVDb250cm9sbGVyOwogI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkv
VXNlcklucHV0QnJpZGdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlk
Z2UuY3BwCmluZGV4IDNhYmJhYjM2NTUyYi4uNjQyNTEzNWRhMWJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmNwcApAQCAtNDEsMTE3ICs0MSwxMjMgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1Vc2VySW5wdXRCcmlkZ2U6OlVzZXJJbnB1dEJyaWRnZShMb2Nh
bEZyYW1lJiBmcmFtZSkKLSAgICA6IG1fZnJhbWUoZnJhbWUpCitVc2VySW5wdXRCcmlkZ2U6OlVz
ZXJJbnB1dEJyaWRnZShQYWdlJiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCiB7CiB9CiAKICNp
ZiBFTkFCTEUoQ09OVEVYVF9NRU5VX0VWRU5UKQotYm9vbCBVc2VySW5wdXRCcmlkZ2U6OmhhbmRs
ZUNvbnRleHRNZW51RXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBJ
bnB1dFNvdXJjZSkKK2Jvb2wgVXNlcklucHV0QnJpZGdlOjpoYW5kbGVDb250ZXh0TWVudUV2ZW50
KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCwgTG9jYWxGcmFtZSYgZnJhbWUs
IElucHV0U291cmNlKQogewotICAgIHJldHVybiBtX2ZyYW1lLmV2ZW50SGFuZGxlcigpLnNlbmRD
b250ZXh0TWVudUV2ZW50KG1vdXNlRXZlbnQpOworICAgIHJldHVybiBmcmFtZS5ldmVudEhhbmRs
ZXIoKS5zZW5kQ29udGV4dE1lbnVFdmVudChtb3VzZUV2ZW50KTsKIH0KICNlbmRpZgogCiBib29s
IFVzZXJJbnB1dEJyaWRnZTo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgbW91c2VFdmVudCwgSW5wdXRTb3VyY2UpCiB7Ci0gICAgcmV0dXJuIG1fZnJhbWUu
ZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VQcmVzc0V2ZW50KG1vdXNlRXZlbnQpOworICAgIGF1
dG8qIGxvY2FsTWFpbkZyYW1lID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWU+KG1fcGFnZS5t
YWluRnJhbWUoKSk7CisgICAgaWYgKCFsb2NhbE1haW5GcmFtZSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBSZWYoKmxvY2FsTWFpbkZyYW1lKS0+ZXZlbnRIYW5kbGVyKCkuaGFu
ZGxlTW91c2VQcmVzc0V2ZW50KG1vdXNlRXZlbnQpOwogfQogCiBib29sIFVzZXJJbnB1dEJyaWRn
ZTo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3Vz
ZUV2ZW50LCBJbnB1dFNvdXJjZSkKIHsKLSAgICByZXR1cm4gbV9mcmFtZS5ldmVudEhhbmRsZXIo
KS5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChtb3VzZUV2ZW50KTsKKyAgICBhdXRvKiBsb2NhbE1h
aW5GcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lPihtX3BhZ2UubWFpbkZyYW1lKCkp
OworICAgIGlmICghbG9jYWxNYWluRnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gUmVmKCpsb2NhbE1haW5GcmFtZSktPmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlUmVs
ZWFzZUV2ZW50KG1vdXNlRXZlbnQpOwogfQogCiBib29sIFVzZXJJbnB1dEJyaWRnZTo6aGFuZGxl
TW91c2VNb3ZlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBJbnB1
dFNvdXJjZSkKIHsKLSAgICByZXR1cm4gbV9mcmFtZS5ldmVudEhhbmRsZXIoKS5tb3VzZU1vdmVk
KG1vdXNlRXZlbnQpOworICAgIGF1dG8qIGxvY2FsTWFpbkZyYW1lID0gZHluYW1pY0Rvd25jYXN0
PExvY2FsRnJhbWU+KG1fcGFnZS5tYWluRnJhbWUoKSk7CisgICAgaWYgKCFsb2NhbE1haW5GcmFt
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBSZWYoKmxvY2FsTWFpbkZyYW1l
KS0+ZXZlbnRIYW5kbGVyKCkubW91c2VNb3ZlZChtb3VzZUV2ZW50KTsKIH0KIAogYm9vbCBVc2Vy
SW5wdXRCcmlkZ2U6OmhhbmRsZU1vdXNlTW92ZU9uU2Nyb2xsYmFyRXZlbnQoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBJbnB1dFNvdXJjZSkKIHsKLSAgICByZXR1cm4gbV9m
cmFtZS5ldmVudEhhbmRsZXIoKS5wYXNzTW91c2VNb3ZlZEV2ZW50VG9TY3JvbGxiYXJzKG1vdXNl
RXZlbnQpOworICAgIGF1dG8qIGxvY2FsTWFpbkZyYW1lID0gZHluYW1pY0Rvd25jYXN0PExvY2Fs
RnJhbWU+KG1fcGFnZS5tYWluRnJhbWUoKSk7CisgICAgaWYgKCFsb2NhbE1haW5GcmFtZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBSZWYoKmxvY2FsTWFpbkZyYW1lKS0+ZXZl
bnRIYW5kbGVyKCkucGFzc01vdXNlTW92ZWRFdmVudFRvU2Nyb2xsYmFycyhtb3VzZUV2ZW50KTsK
IH0KIAogYm9vbCBVc2VySW5wdXRCcmlkZ2U6OmhhbmRsZU1vdXNlRm9yY2VFdmVudChjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQsIElucHV0U291cmNlKQogewotICAgIHJldHVy
biBtX2ZyYW1lLmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlRm9yY2VFdmVudChtb3VzZUV2ZW50
KTsKKyAgICBhdXRvKiBsb2NhbE1haW5GcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1l
PihtX3BhZ2UubWFpbkZyYW1lKCkpOworICAgIGlmICghbG9jYWxNYWluRnJhbWUpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gUmVmKCpsb2NhbE1haW5GcmFtZSktPmV2ZW50SGFu
ZGxlcigpLmhhbmRsZU1vdXNlRm9yY2VFdmVudChtb3VzZUV2ZW50KTsKIH0KIAogYm9vbCBVc2Vy
SW5wdXRCcmlkZ2U6OmhhbmRsZUtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYg
a2V5RXZlbnQsIElucHV0U291cmNlKQogewotICAgIHJldHVybiBtX2ZyYW1lLmV2ZW50SGFuZGxl
cigpLmtleUV2ZW50KGtleUV2ZW50KTsKKyAgICByZXR1cm4gUmVmKG1fcGFnZS5mb2N1c0NvbnRy
b2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKSktPmV2ZW50SGFuZGxlcigpLmtleUV2ZW50KGtl
eUV2ZW50KTsKIH0KIAogYm9vbCBVc2VySW5wdXRCcmlkZ2U6OmhhbmRsZUFjY2Vzc0tleUV2ZW50
KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYga2V5RXZlbnQsIElucHV0U291cmNlKQogewot
ICAgIHJldHVybiBtX2ZyYW1lLmV2ZW50SGFuZGxlcigpLmhhbmRsZUFjY2Vzc0tleShrZXlFdmVu
dCk7CisgICAgcmV0dXJuIFJlZihtX3BhZ2UuZm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCkpLT5ldmVudEhhbmRsZXIoKS5oYW5kbGVBY2Nlc3NLZXkoa2V5RXZlbnQpOwogfQog
CiBib29sIFVzZXJJbnB1dEJyaWRnZTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBz
PiBwcm9jZXNzaW5nU3RlcHMsIElucHV0U291cmNlKQogewotICAgIHJldHVybiBtX2ZyYW1lLmV2
ZW50SGFuZGxlcigpLmhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCwgcHJvY2Vzc2luZ1N0ZXBz
KTsKKyAgICBhdXRvKiBsb2NhbE1haW5GcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1l
PihtX3BhZ2UubWFpbkZyYW1lKCkpOworICAgIGlmICghbG9jYWxNYWluRnJhbWUpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gUmVmKCpsb2NhbE1haW5GcmFtZSktPmV2ZW50SGFu
ZGxlcigpLmhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCwgcHJvY2Vzc2luZ1N0ZXBzKTsKIH0K
IAogdm9pZCBVc2VySW5wdXRCcmlkZ2U6OmZvY3VzU2V0QWN0aXZlKGJvb2wgYWN0aXZlLCBJbnB1
dFNvdXJjZSkKIHsKLSAgICBhdXRvKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7Ci0gICAgaWYgKCFw
YWdlKQotICAgICAgICByZXR1cm47Ci0gICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0QWN0
aXZlKGFjdGl2ZSk7CisgICAgbV9wYWdlLmZvY3VzQ29udHJvbGxlcigpLnNldEFjdGl2ZShhY3Rp
dmUpOwogfQogCiB2b2lkIFVzZXJJbnB1dEJyaWRnZTo6Zm9jdXNTZXRGb2N1c2VkKGJvb2wgZm9j
dXNlZCwgSW5wdXRTb3VyY2UpCiB7Ci0gICAgYXV0byogcGFnZSA9IG1fZnJhbWUucGFnZSgpOwot
ICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuOwotICAgIHBhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLnNldEZvY3VzZWQoZm9jdXNlZCk7CisgICAgbV9wYWdlLmZvY3VzQ29udHJvbGxlcigpLnNl
dEZvY3VzZWQoZm9jdXNlZCk7CiB9CiAKIGJvb2wgVXNlcklucHV0QnJpZGdlOjpzY3JvbGxSZWN1
cnNpdmVseShTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFu
dWxhcml0eSwgSW5wdXRTb3VyY2UpCiB7Ci0gICAgcmV0dXJuIFJlZihtX2ZyYW1lKS0+ZXZlbnRI
YW5kbGVyKCkuc2Nyb2xsUmVjdXJzaXZlbHkoZGlyZWN0aW9uLCBncmFudWxhcml0eSwgbnVsbHB0
cik7CisgICAgcmV0dXJuIFJlZihtX3BhZ2UuZm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCkpLT5ldmVudEhhbmRsZXIoKS5zY3JvbGxSZWN1cnNpdmVseShkaXJlY3Rpb24sIGdy
YW51bGFyaXR5LCBudWxscHRyKTsKIH0KIAogYm9vbCBVc2VySW5wdXRCcmlkZ2U6OmxvZ2ljYWxT
Y3JvbGxSZWN1cnNpdmVseShTY3JvbGxMb2dpY2FsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xs
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIElucHV0U291cmNlKQogewotICAgIHJldHVybiBSZWYo
bV9mcmFtZSktPmV2ZW50SGFuZGxlcigpLmxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVseShkaXJlY3Rp
b24sIGdyYW51bGFyaXR5LCBudWxscHRyKTsKKyAgICByZXR1cm4gUmVmKG1fcGFnZS5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKSktPmV2ZW50SGFuZGxlcigpLmxvZ2ljYWxT
Y3JvbGxSZWN1cnNpdmVseShkaXJlY3Rpb24sIGdyYW51bGFyaXR5LCBudWxscHRyKTsKIH0KIAog
dm9pZCBVc2VySW5wdXRCcmlkZ2U6OmxvYWRSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1
ZXN0LCBJbnB1dFNvdXJjZSkKIHsKLSAgICBhdXRvKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7Ci0g
ICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm47CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKLSAg
ICBwYWdlLT5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IoKS5yZXNldFVzZXJHZXN0dXJlUmVxdWly
ZW1lbnQoKTsKKyAgICBtX3BhZ2UuYXV0aGVudGljYXRvckNvb3JkaW5hdG9yKCkucmVzZXRVc2Vy
R2VzdHVyZVJlcXVpcmVtZW50KCk7CiAjZW5kaWYKLSAgICBhdXRvKiBsb2NhbE1haW5GcmFtZSA9
IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lPihtX2ZyYW1lLm1haW5GcmFtZSgpKTsKKyAgICBh
dXRvKiBsb2NhbE1haW5GcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lPihtX3BhZ2Uu
bWFpbkZyYW1lKCkpOwogICAgIGlmICghbG9jYWxNYWluRnJhbWUpCiAgICAgICAgIHJldHVybjsK
ICAgICBSZWYoKmxvY2FsTWFpbkZyYW1lKS0+bG9hZGVyKCkubG9hZChXVEZNb3ZlKHJlcXVlc3Qp
KTsKIH0KIAotdm9pZCBVc2VySW5wdXRCcmlkZ2U6OnJlbG9hZEZyYW1lKE9wdGlvblNldDxSZWxv
YWRPcHRpb24+IG9wdGlvbnMsIElucHV0U291cmNlKQordm9pZCBVc2VySW5wdXRCcmlkZ2U6OnJl
bG9hZEZyYW1lKExvY2FsRnJhbWUmIGZyYW1lLCBPcHRpb25TZXQ8UmVsb2FkT3B0aW9uPiBvcHRp
b25zLCBJbnB1dFNvdXJjZSkKIHsKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotICAgIGF1dG8gcGFn
ZSA9IG1fZnJhbWUucGFnZSgpOwotICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuOwotICAg
IHBhZ2UtPmF1dGhlbnRpY2F0b3JDb29yZGluYXRvcigpLnJlc2V0VXNlckdlc3R1cmVSZXF1aXJl
bWVudCgpOworICAgIG1fcGFnZS5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IoKS5yZXNldFVzZXJH
ZXN0dXJlUmVxdWlyZW1lbnQoKTsKICNlbmRpZgotICAgIG1fZnJhbWUubG9hZGVyKCkucmVsb2Fk
KG9wdGlvbnMpOworICAgIGZyYW1lLmxvYWRlcigpLnJlbG9hZChvcHRpb25zKTsKIH0KIAotdm9p
ZCBVc2VySW5wdXRCcmlkZ2U6OnN0b3BMb2FkaW5nRnJhbWUoSW5wdXRTb3VyY2UpCit2b2lkIFVz
ZXJJbnB1dEJyaWRnZTo6c3RvcExvYWRpbmdGcmFtZShMb2NhbEZyYW1lJiBmcmFtZSwgSW5wdXRT
b3VyY2UpCiB7Ci0gICAgbV9mcmFtZS5sb2FkZXIoKS5zdG9wRm9yVXNlckNhbmNlbCgpOworICAg
IGZyYW1lLmxvYWRlcigpLnN0b3BGb3JVc2VyQ2FuY2VsKCk7CiB9CiAKIGJvb2wgVXNlcklucHV0
QnJpZGdlOjp0cnlDbG9zZVBhZ2UoSW5wdXRTb3VyY2UpCiB7Ci0gICAgYXV0byogbG9jYWxNYWlu
RnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZT4obV9mcmFtZS5tYWluRnJhbWUoKSk7
CisgICAgYXV0byogbG9jYWxNYWluRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZT4o
bV9wYWdlLm1haW5GcmFtZSgpKTsKICAgICBpZiAoIWxvY2FsTWFpbkZyYW1lKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIFJlZigqbG9jYWxNYWluRnJhbWUpLT5sb2FkZXIoKS5z
aG91bGRDbG9zZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1
dEJyaWRnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5oCmluZGV4
IDk3ZGFmNDFiMmM0My4uYzdiNmY2NjQ0OTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZXBsYXkvVXNlcklucHV0QnJpZGdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJ
bnB1dEJyaWRnZS5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRnJhbWVMb2FkUmVxdWVzdDsKIGNsYXNzIExvY2FsRnJhbWU7CitjbGFzcyBQYWdlOwogY2xh
c3MgUGxhdGZvcm1LZXlib2FyZEV2ZW50OwogY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwogY2xh
c3MgUGxhdGZvcm1XaGVlbEV2ZW50OwpAQCAtNTQsMTEgKzU1LDExIEBAIGNsYXNzIFVzZXJJbnB1
dEJyaWRnZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoVXNlcklucHV0QnJpZGdlKTsKIHB1YmxpYzoKLSAgICBVc2VySW5wdXRCcmlkZ2Uo
TG9jYWxGcmFtZSYpOworICAgIFVzZXJJbnB1dEJyaWRnZShQYWdlJik7CiAKICAgICAvLyBVc2Vy
IGlucHV0IEFQSXMuCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVV9FVkVOVCkKLSAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGhhbmRsZUNvbnRleHRNZW51RXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiwgSW5wdXRTb3VyY2UgPSBJbnB1dFNvdXJjZTo6VXNlcik7CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBoYW5kbGVDb250ZXh0TWVudUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYs
IExvY2FsRnJhbWUmLCBJbnB1dFNvdXJjZSA9IElucHV0U291cmNlOjpVc2VyKTsKICNlbmRpZgog
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYsIElucHV0U291cmNlID0gSW5wdXRTb3VyY2U6OlVzZXIpOwogICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiwgSW5wdXRTb3VyY2UgPSBJbnB1dFNvdXJjZTo6VXNlcik7CkBAIC03NSwxMiAr
NzYsMTIgQEAgcHVibGljOgogCiAgICAgLy8gTmF2aWdhdGlvbiBBUElzLgogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgbG9hZFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmLCBJbnB1dFNvdXJjZSA9
IElucHV0U291cmNlOjpVc2VyKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbG9hZEZyYW1l
KE9wdGlvblNldDxSZWxvYWRPcHRpb24+LCBJbnB1dFNvdXJjZSA9IElucHV0U291cmNlOjpVc2Vy
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BMb2FkaW5nRnJhbWUoSW5wdXRTb3VyY2Ug
PSBJbnB1dFNvdXJjZTo6VXNlcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWxvYWRGcmFt
ZShMb2NhbEZyYW1lJiwgT3B0aW9uU2V0PFJlbG9hZE9wdGlvbj4sIElucHV0U291cmNlID0gSW5w
dXRTb3VyY2U6OlVzZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcExvYWRpbmdGcmFt
ZShMb2NhbEZyYW1lJiwgSW5wdXRTb3VyY2UgPSBJbnB1dFNvdXJjZTo6VXNlcik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCB0cnlDbG9zZVBhZ2UoSW5wdXRTb3VyY2UgPSBJbnB1dFNvdXJjZTo6
VXNlcik7CiAKIHByaXZhdGU6Ci0gICAgTG9jYWxGcmFtZSYgbV9mcmFtZTsKKyAgICBQYWdlJiBt
X3BhZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA3ZWIyMmIzMTBkZGMuLjkxNDcxNTU2NDI3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zMjQ0LDkgKzMyNDQs
NiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc05leHRRdWV1ZWRNb3VzZUV2ZW50KCkKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICgh
bV9tYWluRnJhbWUpCi0gICAgICAgIHJldHVybjsKLQogICAgIEFTU0VSVCghaW50ZXJuYWxzKCku
bW91c2VFdmVudFF1ZXVlLmlzRW1wdHkoKSk7CiAKICAgICBjb25zdCBOYXRpdmVXZWJNb3VzZUV2
ZW50JiBldmVudCA9IGludGVybmFscygpLm1vdXNlRXZlbnRRdWV1ZS5maXJzdCgpOwpAQCAtMzI3
Miw3ICszMjY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NOZXh0UXVldWVkTW91c2VF
dmVudCgpCiAKICAgICBMT0dfV0lUSF9TVFJFQU0oTW91c2VIYW5kbGluZywgc3RyZWFtIDw8ICJV
SVByb2Nlc3M6IHNlbnQgbW91c2UgZXZlbnQgIiA8PCBldmVudFR5cGUgPDwgIiAocXVldWUgc2l6
ZSAiIDw8IGludGVybmFscygpLm1vdXNlRXZlbnRRdWV1ZS5zaXplKCkgPDwgIikiKTsKICAgICBt
X3Byb2Nlc3MtPnJlY29yZFVzZXJHZXN0dXJlQXV0aG9yaXphdGlvblRva2VuKGV2ZW50LmF1dGhv
cml6YXRpb25Ub2tlbigpKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3VzZUV2ZW50
KG1fbWFpbkZyYW1lLT5mcmFtZUlEKCksIGV2ZW50LCBzYW5kYm94RXh0ZW5zaW9ucykpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Ok1vdXNlRXZlbnQoZXZlbnQsIHNhbmRib3hFeHRlbnNp
b25zKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpkb0FmdGVyUHJvY2Vzc2luZ0FsbFBlbmRp
bmdNb3VzZUV2ZW50cyhXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgYWN0aW9uKQpAQCAtMzMwMSwx
MSArMzI5OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmbHVzaFBlbmRpbmdNb3VzZUV2ZW50Q2Fs
bGJhY2tzKCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBXZWJQYWdlUHJveHk6OmRp
c3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3JvbGxpbmcoY29uc3QgV2ViV2hlZWxFdmVudCYgZXZl
bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgaWYgKCFtX21haW5GcmFtZSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxz
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xsaW5nKG1fbWFpbkZy
YW1lLT5mcmFtZUlEKCksIGV2ZW50KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6RGlzcGF0Y2hXaGVlbEV2ZW50
V2l0aG91dFNjcm9sbGluZyhldmVudCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
ICNlbmRpZgogCkBAIC0zMzY3LDE0ICszMzYwLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZW5k
V2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50JiBldmVudCwgT3B0aW9uU2V0PFdoZWVsRXZl
CiAgICAgaWYgKCFjb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fbWFp
bkZyYW1lKQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAoZHJhd2luZ0FyZWEoKS0+c2hvdWxk
U2VuZFdoZWVsRXZlbnRzVG9FdmVudERpc3BhdGNoZXIoKSkgewogICAgICAgICBzZW5kV2hlZWxF
dmVudFNjcm9sbGluZ0FjY2VsZXJhdGlvbkN1cnZlSWZOZWNlc3NhcnkoZXZlbnQpOwogICAgICAg
ICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpFdmVudERpc3BhdGNoZXI6OldoZWVsRXZlbnQo
d2ViUGFnZUlEKCksIGV2ZW50LCBydWJiZXJCYW5kYWJsZUVkZ2VzKSwgMCwgeyB9LCBUaHJlYWQ6
OlFPUzo6VXNlckludGVyYWN0aXZlKTsKICAgICB9IGVsc2UgewotICAgICAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZVdoZWVsRXZlbnQobV9tYWluRnJhbWUt
PmZyYW1lSUQoKSwgZXZlbnQsIHByb2Nlc3NpbmdTdGVwcywgd2lsbFN0YXJ0U3dpcGUpLCBbd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgd2hlZWxFdmVudCA9IGV2ZW50LCB3YXNIYW5kbGVk
Rm9yU2Nyb2xsaW5nXShTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCBzdGQ6Om9wdGlvbmFsPFdoZWVs
U2Nyb2xsR2VzdHVyZVN0YXRlPiBnZXN0dXJlU3RhdGUsIGJvb2wgaGFuZGxlZCkgeworICAgICAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZVdoZWVsRXZlbnQo
ZXZlbnQsIHByb2Nlc3NpbmdTdGVwcywgd2lsbFN0YXJ0U3dpcGUpLCBbd2Vha1RoaXMgPSBXZWFr
UHRyIHsgKnRoaXMgfSwgd2hlZWxFdmVudCA9IGV2ZW50LCB3YXNIYW5kbGVkRm9yU2Nyb2xsaW5n
XShTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCBzdGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVy
ZVN0YXRlPiBnZXN0dXJlU3RhdGUsIGJvb2wgaGFuZGxlZCkgewogICAgICAgICAgICAgUmVmUHRy
IHByb3RlY3RlZFRoaXMgPSB3ZWFrVGhpcy5nZXQoKTsKICAgICAgICAgICAgIGlmICghcHJvdGVj
dGVkVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0zNTIyLDEyICszNTEyLDcgQEAg
Ym9vbCBXZWJQYWdlUHJveHk6OmhhbmRsZUtleWJvYXJkRXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudCYgZXZlbnQpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIW1fbWFpbkZyYW1lKSB7Ci0gICAgICAgIG1f
dWlDbGllbnQtPmRpZE5vdEhhbmRsZUtleUV2ZW50KHRoaXMsIGV2ZW50KTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQorICAgIAogICAgIExPR19XSVRIX1NUUkVBTShLZXlIYW5kbGlu
Zywgc3RyZWFtIDw8ICJXZWJQYWdlUHJveHk6OmhhbmRsZUtleWJvYXJkRXZlbnQ6ICIgPDwgZXZl
bnQudHlwZSgpKTsKIAogICAgIGludGVybmFscygpLmtleUV2ZW50UXVldWUuYXBwZW5kKGV2ZW50
KTsKQEAgLTM1MzgsNyArMzUyMyw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpoYW5kbGVLZXlib2Fy
ZEV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIGlmIChpbnRl
cm5hbHMoKS5rZXlFdmVudFF1ZXVlLnNpemUoKSA9PSAxKSB7CiAgICAgICAgIExPRyhLZXlIYW5k
bGluZywgIiBVSSBwcm9jZXNzOiBzZW50IGtleUV2ZW50IGZyb20gaGFuZGxlS2V5Ym9hcmRFdmVu
dCIpOwogICAgICAgICBtX3Byb2Nlc3MtPnJlY29yZFVzZXJHZXN0dXJlQXV0aG9yaXphdGlvblRv
a2VuKGV2ZW50LmF1dGhvcml6YXRpb25Ub2tlbigpKTsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6S2V5RXZlbnQobV9tYWluRnJhbWUtPmZyYW1lSUQoKSwgZXZlbnQpKTsKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6S2V5RXZlbnQoZXZlbnQpKTsKICAgICB9CiAKICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTg1NTUsMTEgKzg1NDAsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFJlY2VpdmVFdmVudChXZWJFdmVudFR5cGUgZXZlbnRUeXBlLCBib29sIGhhbmRsZWQpCiAj
ZW5kaWYKIAogICAgICAgICBib29sIGNhblByb2Nlc3NNb3JlS2V5RXZlbnRzID0gIWludGVybmFs
cygpLmtleUV2ZW50UXVldWUuaXNFbXB0eSgpOwotICAgICAgICBpZiAoY2FuUHJvY2Vzc01vcmVL
ZXlFdmVudHMgJiYgbV9tYWluRnJhbWUpIHsKKyAgICAgICAgaWYgKGNhblByb2Nlc3NNb3JlS2V5
RXZlbnRzKSB7CiAgICAgICAgICAgICBhdXRvIG5leHRFdmVudCA9IGludGVybmFscygpLmtleUV2
ZW50UXVldWUuZmlyc3QoKTsKICAgICAgICAgICAgIExPRyhLZXlIYW5kbGluZywgIiBVSSBwcm9j
ZXNzOiBzZW50IGtleUV2ZW50IGZyb20gZGlkUmVjZWl2ZUV2ZW50Iik7CiAgICAgICAgICAgICBt
X3Byb2Nlc3MtPnJlY29yZFVzZXJHZXN0dXJlQXV0aG9yaXphdGlvblRva2VuKG5leHRFdmVudC5h
dXRob3JpemF0aW9uVG9rZW4oKSk7Ci0gICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpLZXlFdmVudChtX21haW5GcmFtZS0+ZnJhbWVJRCgpLCBpbnRlcm5hbHMoKS5rZXlFdmVudFF1
ZXVlLmZpcnN0KCkpKTsKKyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OktleUV2
ZW50KGludGVybmFscygpLmtleUV2ZW50UXVldWUuZmlyc3QoKSkpOwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gVGhlIGNhbGwgdG8gZG9uZVdpdGhLZXlFdmVudCBtYXkgY2xvc2UgdGhpcyBXZWJQ
YWdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCAyZmVjYTQxZDM0Y2QuLmQ4NDMw
ZTdjYTMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTIxMywxNSArMjEzLDcg
QEAgV0tBcnJheVJlZiBXS0J1bmRsZVBhZ2VDb3B5Q29udGV4dE1lbnVJdGVtcyhXS0J1bmRsZVBh
Z2VSZWYgcGFnZVJlZikKIFdLQXJyYXlSZWYgV0tCdW5kbGVQYWdlQ29weUNvbnRleHRNZW51QXRQ
b2ludEluV2luZG93KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS1BvaW50IHBvaW50KQogewog
I2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2UgPSBXZWJL
aXQ6OnRvSW1wbChwYWdlUmVmKS0+Y29yZVBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byogbG9jYWxNYWluRnJhbWUgPSBkeW5hbWljRG93
bmNhc3Q8V2ViQ29yZTo6TG9jYWxGcmFtZT4ocGFnZS0+bWFpbkZyYW1lKCkpOwotICAgIGlmICgh
bG9jYWxNYWluRnJhbWUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgV2ViS2l0OjpX
ZWJDb250ZXh0TWVudSogY29udGV4dE1lbnUgPSBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+Y29u
dGV4dE1lbnVBdFBvaW50SW5XaW5kb3cobG9jYWxNYWluRnJhbWUtPmZyYW1lSUQoKSwgV2ViS2l0
Ojp0b0ludFBvaW50KHBvaW50KSk7CisgICAgV2ViS2l0OjpXZWJDb250ZXh0TWVudSogY29udGV4
dE1lbnUgPSBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+Y29udGV4dE1lbnVBdFBvaW50SW5XaW5k
b3coV2ViS2l0Ojp0b0ludFBvaW50KHBvaW50KSk7CiAgICAgaWYgKCFjb250ZXh0TWVudSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IGQxYTM4OTVhODJjMy4uYWI5Zjhm
OWI2NTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVu
dERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2
ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTI3Miw5ICsyNzIsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hl
cjo6ZGlzcGF0Y2hXaGVlbEV2ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViV2hl
ZWxFdgogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBoYW5k
bGVkID0gZmFsc2U7Ci0gICAgaWYgKHdlYlBhZ2UtPm1haW5GcmFtZSgpKQotICAgICAgICBoYW5k
bGVkID0gd2ViUGFnZS0+d2hlZWxFdmVudCh3ZWJQYWdlLT5tYWluRnJhbWUoKS0+ZnJhbWVJRCgp
LCB3aGVlbEV2ZW50LCBwcm9jZXNzaW5nU3RlcHMsIHdoZWVsRXZlbnRPcmlnaW4pOworICAgIGJv
b2wgaGFuZGxlZCA9IHdlYlBhZ2UtPndoZWVsRXZlbnQod2hlZWxFdmVudCwgcHJvY2Vzc2luZ1N0
ZXBzLCB3aGVlbEV2ZW50T3JpZ2luKTsKIAogICAgIGlmIChwcm9jZXNzaW5nU3RlcHMuY29udGFp
bnMoV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6U3luY2hyb25vdXNTY3JvbGxpbmcpICYmIHdo
ZWVsRXZlbnRPcmlnaW4gPT0gRXZlbnREaXNwYXRjaGVyOjpXaGVlbEV2ZW50T3JpZ2luOjpVSVBy
b2Nlc3MpCiAgICAgICAgIHNlbmREaWRSZWNlaXZlRXZlbnQocGFnZUlELCB3aGVlbEV2ZW50LnR5
cGUoKSwgaGFuZGxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKaW5kZXggYjAxNjQwOWJjOTM2Li5kZjc1ZmQ5YmZlNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTQzLDExICs0Myw4IEBA
CiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCiAj
aW5jbHVkZSAiV2ViQ2hyb21lQ2xpZW50LmgiCi0jaW5jbHVkZSAiV2ViQ29udGV4dE1lbnUuaCIK
ICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJEb2N1bWVu
dExvYWRlci5oIgotI2luY2x1ZGUgIldlYkV2ZW50Q29udmVyc2lvbi5oIgotI2luY2x1ZGUgIldl
YkV2ZW50RmFjdG9yeS5oIgogI2luY2x1ZGUgIldlYkltYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCkBAIC02MiwxMyArNTksMTEg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0FyY2hpdmVSZXNvdXJjZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQ2VydGlmaWNhdGVJbmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DaHJvbWUuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Q29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RG9jdW1lbnRMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRWxlbWVudENoaWxkSXRlcmF0b3JJbmxpbmVzLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9FdmVudEhhbmRsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGUuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVTbmFwc2hv
dHRpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxGb3JtRWxlbWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSFRNTEZyYW1lT3duZXJFbGVtZW50Lmg+CkBAIC05Nyw3ICs5Miw2IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9TdWJyZXNvdXJjZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4
dEl0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0UmVzb3VyY2VEZWNvZGVyLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9Vc2VySW5wdXRCcmlkZ2UuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTEyMDQsMTA0ICsxMTk4
LDQgQEAgT3B0aW9uU2V0PFdlYkNvcmU6OkFkdmFuY2VkUHJpdmFjeVByb3RlY3Rpb25zPiBXZWJG
cmFtZTo6b3JpZ2luYXRvckFkdmFuY2VkUHJpdmEKICAgICByZXR1cm4gbG9hZGVyLT5vcmlnaW5h
dG9yQWR2YW5jZWRQcml2YWN5UHJvdGVjdGlvbnMoKTsKIH0KIAotI2lmIEVOQUJMRShDT05URVhU
X01FTlVfRVZFTlQpCi1zdGF0aWMgYm9vbCBpc0NvbnRleHRDbGljayhjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIGV2ZW50KQotewotI2lmIFVTRShBUFBLSVQpCi0gICAgcmV0dXJuIFdlYkV2ZW50
RmFjdG9yeTo6c2hvdWxkQmVIYW5kbGVkQXNDb250ZXh0Q2xpY2soZXZlbnQpOwotI2Vsc2UKLSAg
ICByZXR1cm4gZXZlbnQuYnV0dG9uKCkgPT0gV2ViQ29yZTo6UmlnaHRCdXR0b247Ci0jZW5kaWYK
LX0KLQotYm9vbCBXZWJGcmFtZTo6aGFuZGxlQ29udGV4dE1lbnVFdmVudChjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmIHBsYXRmb3JtTW91c2VFdmVudCkKLXsKLSAgICBhdXRvKiBjb3JlTG9jYWxG
cmFtZSA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lPihjb3JlRnJhbWUoKSk7Ci0gICAgaWYg
KCFjb3JlTG9jYWxGcmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEludFBvaW50IHBv
aW50ID0gY29yZUxvY2FsRnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwbGF0Zm9ybU1v
dXNlRXZlbnQucG9zaXRpb24oKSk7Ci0gICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVx
dWVzdDo6VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0
VGVzdFJlcXVlc3Q6OlR5cGU6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93
VXNlckFnZW50U2hhZG93Q29udGVudCwgIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBbGxvd0NoaWxk
RnJhbWVDb250ZW50IH07Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBjb3JlTG9jYWxGcmFt
ZS0+ZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQsIGhpdFR5cGUpOwot
Ci0gICAgUmVmIGZyYW1lID0gKmNvcmVMb2NhbEZyYW1lOwotICAgIGlmIChyZXN1bHQuaW5uZXJO
b25TaGFyZWROb2RlKCkpCi0gICAgICAgIGZyYW1lID0gKnJlc3VsdC5pbm5lck5vblNoYXJlZE5v
ZGUoKS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwotCi0gICAgYm9vbCBoYW5kbGVkID0gY29yZUxvY2Fs
RnJhbWUtPnVzZXJJbnB1dEJyaWRnZSgpLmhhbmRsZUNvbnRleHRNZW51RXZlbnQocGxhdGZvcm1N
b3VzZUV2ZW50KTsKLSNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBpZiAoaGFuZGxlZCkK
LSAgICAgICAgcGFnZSgpLT5jb250ZXh0TWVudSgpLnNob3coKTsKLSNlbmRpZgotICAgIHJldHVy
biBoYW5kbGVkOwotfQotI2VuZGlmCi0KLWJvb2wgV2ViRnJhbWU6OmhhbmRsZU1vdXNlRXZlbnQo
Y29uc3QgV2ViTW91c2VFdmVudCYgbW91c2VFdmVudCkKLXsKLSAgICBhdXRvKiBjb3JlTG9jYWxG
cmFtZSA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lPihjb3JlRnJhbWUoKSk7Ci0gICAgaWYg
KCFjb3JlTG9jYWxGcmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFjb3Jl
TG9jYWxGcmFtZS0+dmlldygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBQbGF0Zm9y
bU1vdXNlRXZlbnQgcGxhdGZvcm1Nb3VzZUV2ZW50ID0gcGxhdGZvcm0obW91c2VFdmVudCk7Ci0K
LSAgICBzd2l0Y2ggKHBsYXRmb3JtTW91c2VFdmVudC50eXBlKCkpIHsKLSAgICBjYXNlIFBsYXRm
b3JtRXZlbnQ6OlR5cGU6Ok1vdXNlUHJlc3NlZDogewotI2lmIEVOQUJMRShDT05URVhUX01FTlVT
KQotICAgICAgICBpZiAoaXNDb250ZXh0Q2xpY2socGxhdGZvcm1Nb3VzZUV2ZW50KSkKLSAgICAg
ICAgICAgIHBhZ2UoKS0+Y29yZVBhZ2UoKS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCkuY2xlYXJD
b250ZXh0TWVudSgpOwotI2VuZGlmCi0KLSAgICAgICAgYm9vbCBoYW5kbGVkID0gY29yZUxvY2Fs
RnJhbWUtPnVzZXJJbnB1dEJyaWRnZSgpLmhhbmRsZU1vdXNlUHJlc3NFdmVudChwbGF0Zm9ybU1v
dXNlRXZlbnQpOwotI2lmIEVOQUJMRShDT05URVhUX01FTlVfRVZFTlQpCi0gICAgICAgIGlmIChp
c0NvbnRleHRDbGljayhwbGF0Zm9ybU1vdXNlRXZlbnQpKQotICAgICAgICAgICAgaGFuZGxlZCA9
IGhhbmRsZUNvbnRleHRNZW51RXZlbnQocGxhdGZvcm1Nb3VzZUV2ZW50KTsKLSNlbmRpZgotICAg
ICAgICByZXR1cm4gaGFuZGxlZDsKLSAgICB9Ci0gICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpUeXBl
OjpNb3VzZVJlbGVhc2VkOgotICAgICAgICBpZiAobW91c2VFdmVudC5nZXN0dXJlV2FzQ2FuY2Vs
bGVkKCkgPT0gR2VzdHVyZVdhc0NhbmNlbGxlZDo6WWVzKQotICAgICAgICAgICAgY29yZUxvY2Fs
RnJhbWUtPmV2ZW50SGFuZGxlcigpLmludmFsaWRhdGVDbGljaygpOwotICAgICAgICByZXR1cm4g
Y29yZUxvY2FsRnJhbWUtPnVzZXJJbnB1dEJyaWRnZSgpLmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50
KHBsYXRmb3JtTW91c2VFdmVudCk7Ci0KLSAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6OlR5cGU6Ok1v
dXNlTW92ZWQ6Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIC8vIFdlIG5lZWQgdG8gZG8g
YSBmdWxsLCBub3JtYWwgaGl0IHRlc3QgZHVyaW5nIHRoaXMgbW91c2UgZXZlbnQgaWYgdGhlIHBh
Z2UgaXMgYWN0aXZlIG9yIGlmIGEgbW91c2UKLSAgICAgICAgLy8gYnV0dG9uIGlzIGN1cnJlbnRs
eSBwcmVzc2VkLiBJdCBpcyBwb3NzaWJsZSB0aGF0IG5laXRoZXIgb2YgdGhvc2UgdGhpbmdzIHdp
bGwgYmUgdHJ1ZSBzaW5jZSBvbgotICAgICAgICAvLyBMaW9uIHdoZW4gbGVnYWN5IHNjcm9sbGJh
cnMgYXJlIGVuYWJsZWQsIFdlYktpdCByZWNlaXZlcyBtb3VzZSBldmVudHMgYWxsIHRoZSB0aW1l
LiBJZiBpdCBpcyBvbmUKLSAgICAgICAgLy8gb2YgdGhvc2UgY2FzZXMgd2hlcmUgdGhlIHBhZ2Ug
aXMgbm90IGFjdGl2ZSBhbmQgdGhlIG1vdXNlIGlzIG5vdCBwcmVzc2VkLCB0aGVuIHdlIGNhbiBm
aXJlIGEgbW9yZQotICAgICAgICAvLyBlZmZpY2llbnQgc2Nyb2xsYmFycy1vbmx5IHZlcnNpb24g
b2YgdGhlIGV2ZW50LgotICAgICAgICBpZiAoIShwYWdlKCktPmNvcmVQYWdlKCktPmZvY3VzQ29u
dHJvbGxlcigpLmlzQWN0aXZlKCkgfHwgKG1vdXNlRXZlbnQuYnV0dG9uKCkgIT0gV2ViTW91c2VF
dmVudEJ1dHRvbjo6Tm9CdXR0b24pKSkKLSAgICAgICAgICAgIHJldHVybiBjb3JlTG9jYWxGcmFt
ZS0+dXNlcklucHV0QnJpZGdlKCkuaGFuZGxlTW91c2VNb3ZlT25TY3JvbGxiYXJFdmVudChwbGF0
Zm9ybU1vdXNlRXZlbnQpOwotI2VuZGlmCi0gICAgICAgIHJldHVybiBjb3JlTG9jYWxGcmFtZS0+
dXNlcklucHV0QnJpZGdlKCkuaGFuZGxlTW91c2VNb3ZlRXZlbnQocGxhdGZvcm1Nb3VzZUV2ZW50
KTsKLQotICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6VHlwZTo6TW91c2VGb3JjZUNoYW5nZWQ6Ci0g
ICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpUeXBlOjpNb3VzZUZvcmNlRG93bjoKLSAgICBjYXNlIFBs
YXRmb3JtRXZlbnQ6OlR5cGU6Ok1vdXNlRm9yY2VVcDoKLSAgICAgICAgcmV0dXJuIGNvcmVMb2Nh
bEZyYW1lLT51c2VySW5wdXRCcmlkZ2UoKS5oYW5kbGVNb3VzZUZvcmNlRXZlbnQocGxhdGZvcm1N
b3VzZUV2ZW50KTsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCi1ib29sIFdlYkZyYW1lOjpoYW5k
bGVLZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50KQotewotICAg
IGlmICghbV9jb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8qIHBh
Z2UgPSBtX2NvcmVGcmFtZS0+cGFnZSgpOwotICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgUmVmIGZyYW1lID0gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNl
ZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKGtleWJvYXJkRXZlbnQudHlwZSgpID09IFdlYkV2ZW50
VHlwZTo6Q2hhciAmJiBrZXlib2FyZEV2ZW50LmlzU3lzdGVtS2V5KCkpCi0gICAgICAgIHJldHVy
biBmcmFtZS0+dXNlcklucHV0QnJpZGdlKCkuaGFuZGxlQWNjZXNzS2V5RXZlbnQocGxhdGZvcm0o
a2V5Ym9hcmRFdmVudCkpOwotICAgIHJldHVybiBmcmFtZS0+dXNlcklucHV0QnJpZGdlKCkuaGFu
ZGxlS2V5RXZlbnQocGxhdGZvcm0oa2V5Ym9hcmRFdmVudCkpOwotfQotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCmlu
ZGV4IDEwOWMwNzc1YmUxNC4uMzUzNGRjNDg4Nzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKQEAgLTU4LDcgKzU4LDYgQEAgY2xhc3MgSFRNTEZyYW1l
T3duZXJFbGVtZW50OwogY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgTG9j
YWxGcmFtZTsKLWNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFJlbW90ZUZyYW1lOwog
c3RydWN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXI7CiB9CkBAIC03MCw5ICs2OSw3IEBAIGNsYXNz
IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDsKIGNsYXNzIEluamVjdGVkQnVuZGxlTm9kZUhh
bmRsZTsKIGNsYXNzIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU7CiBjbGFzcyBJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkOwotY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYkltYWdl
OwotY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYlBhZ2U7CiBzdHJ1Y3QgRnJhbWVJbmZv
RGF0YTsKIHN0cnVjdCBGcmFtZVRyZWVOb2RlRGF0YTsKQEAgLTIyNywxMCArMjI0LDYgQEAgcHVi
bGljOgogCiAgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkFkdmFuY2VkUHJpdmFjeVByb3RlY3Rpb25z
PiBhZHZhbmNlZFByaXZhY3lQcm90ZWN0aW9ucygpIGNvbnN0OwogICAgIE9wdGlvblNldDxXZWJD
b3JlOjpBZHZhbmNlZFByaXZhY3lQcm90ZWN0aW9ucz4gb3JpZ2luYXRvckFkdmFuY2VkUHJpdmFj
eVByb3RlY3Rpb25zKCkgY29uc3Q7Ci0KLSAgICBib29sIGhhbmRsZUNvbnRleHRNZW51RXZlbnQo
Y29uc3QgV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50Jik7Ci0gICAgYm9vbCBoYW5kbGVNb3Vz
ZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKLSAgICBib29sIGhhbmRsZUtleUV2ZW50KGNv
bnN0IFdlYktleWJvYXJkRXZlbnQmKTsKIHByaXZhdGU6CiAgICAgV2ViRnJhbWUoV2ViUGFnZSYs
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZGU3ZDJkNGNjMWZlLi5iYzEyNjQ2NmY0NTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xODAz
LDExICsxODAzLDcgQEAgdm9pZCBXZWJQYWdlOjpjbG9zZSgpCiAKIHZvaWQgV2ViUGFnZTo6dHJ5
Q2xvc2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBpZiAoIW1fbWFpbkZyYW1lLT5jb3JlTG9jYWxGcmFtZSgpKSB7Ci0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBib29s
IHNob3VsZENsb3NlID0gbV9tYWluRnJhbWUtPmNvcmVMb2NhbEZyYW1lKCktPnVzZXJJbnB1dEJy
aWRnZSgpLnRyeUNsb3NlUGFnZSgpOworICAgIGJvb2wgc2hvdWxkQ2xvc2UgPSBjb3JlUGFnZSgp
LT51c2VySW5wdXRCcmlkZ2UoKS50cnlDbG9zZVBhZ2UoKTsKICAgICBjb21wbGV0aW9uSGFuZGxl
cihzaG91bGRDbG9zZSk7CiB9CiAKQEAgLTE5MzcsNyArMTkzMyw3IEBAIHZvaWQgV2ViUGFnZTo6
bG9hZFJlcXVlc3QoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKICAgICB9CiAKICAg
ICBpZiAoZnJhbWUuZ2V0KCkgPT0gbV9tYWluRnJhbWUucHRyKCkpCi0gICAgICAgIG1fbWFpbkZy
YW1lLT5jb3JlTG9jYWxGcmFtZSgpLT51c2VySW5wdXRCcmlkZ2UoKS5sb2FkUmVxdWVzdChXVEZN
b3ZlKGZyYW1lTG9hZFJlcXVlc3QpKTsKKyAgICAgICAgY29yZVBhZ2UoKS0+dXNlcklucHV0QnJp
ZGdlKCkubG9hZFJlcXVlc3QoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSk7CiAgICAgZWxzZQog
ICAgICAgICBmcmFtZS0+Y29yZUxvY2FsRnJhbWUoKS0+bG9hZGVyKCkubG9hZChXVEZNb3ZlKGZy
YW1lTG9hZFJlcXVlc3QpKTsKIApAQCAtMjA0OCw3ICsyMDQ0LDcgQEAgdm9pZCBXZWJQYWdlOjpz
dG9wTG9hZGluZygpCiAgICAgU2VuZFN0b3BSZXNwb25zaXZlbmVzc1RpbWVyIHN0b3BwZXI7CiAK
ICAgICBSZWYgY29yZUZyYW1lID0gKm1fbWFpbkZyYW1lLT5jb3JlTG9jYWxGcmFtZSgpOwotICAg
IG1fbWFpbkZyYW1lLT5jb3JlTG9jYWxGcmFtZSgpLT51c2VySW5wdXRCcmlkZ2UoKS5zdG9wTG9h
ZGluZ0ZyYW1lKCk7CisgICAgbV9wYWdlLT51c2VySW5wdXRCcmlkZ2UoKS5zdG9wTG9hZGluZ0Zy
YW1lKGNvcmVGcmFtZS5nZXQoKSk7CiAgICAgY29yZUZyYW1lLT5sb2FkZXIoKS5jb21wbGV0ZVBh
Z2VUcmFuc2l0aW9uSWZOZWVkZWQoKTsKIH0KIApAQCAtMjA3OCw3ICsyMDc0LDcgQEAgdm9pZCBX
ZWJQYWdlOjpyZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbklELCBPcHRpb25TZXQ8V2ViQ29yZTo6
UmVsb2FkT3B0aW9uPiByZWwKICAgICBSZWYgbWFpbkZyYW1lID0gbV9tYWluRnJhbWU7CiAgICAg
bV9zYW5kYm94RXh0ZW5zaW9uVHJhY2tlci5iZWdpblJlbG9hZChtYWluRnJhbWUucHRyKCksIFdU
Rk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAgIGlmIChtX3BhZ2UgJiYgbWFpbkZy
YW1lLT5jb3JlTG9jYWxGcmFtZSgpKQotICAgICAgICBtYWluRnJhbWUtPmNvcmVMb2NhbEZyYW1l
KCktPnVzZXJJbnB1dEJyaWRnZSgpLnJlbG9hZEZyYW1lKHJlbG9hZE9wdGlvbnMpOworICAgICAg
ICBtX3BhZ2UtPnVzZXJJbnB1dEJyaWRnZSgpLnJlbG9hZEZyYW1lKCptYWluRnJhbWUtPmNvcmVM
b2NhbEZyYW1lKCksIHJlbG9hZE9wdGlvbnMpOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAKQEAgLTMwNzksMjMgKzMwNzUsMjEgQEAgV2ViQ29udGV4dE1lbnUmIFdl
YlBhZ2U6OmNvbnRleHRNZW51KCkKICAgICByZXR1cm4gKm1fY29udGV4dE1lbnU7CiB9CiAKLVdl
YkNvbnRleHRNZW51KiBXZWJQYWdlOjpjb250ZXh0TWVudUF0UG9pbnRJbldpbmRvdyhGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgSW50UG9pbnQmIHBvaW50KQorV2ViQ29udGV4dE1lbnUq
IFdlYlBhZ2U6OmNvbnRleHRNZW51QXRQb2ludEluV2luZG93KGNvbnN0IEludFBvaW50JiBwb2lu
dCkKIHsKLSAgICBhdXRvKiBjb3JlRnJhbWUgPSBtX21haW5GcmFtZS0+Y29yZUxvY2FsRnJhbWUo
KTsKLSAgICBpZiAoIWNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAgICBj
b3JlUGFnZSgpLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS5jbGVhckNvbnRleHRNZW51KCk7CiAK
ICAgICAvLyBTaW11bGF0ZSBhIG1vdXNlIGNsaWNrIHRvIGdlbmVyYXRlIHRoZSBjb3JyZWN0IG1l
bnUuCiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlUHJlc3NFdmVudChwb2ludCwgcG9pbnQs
IFJpZ2h0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpUeXBlOjpNb3VzZVByZXNzZWQsIDEsIHsgfSwg
V2FsbFRpbWU6Om5vdygpLCBXZWJDb3JlOjpGb3JjZUF0Q2xpY2ssIFdlYkNvcmU6OlN5bnRoZXRp
Y0NsaWNrVHlwZTo6Tm9UYXApOwotICAgIGNvcmVGcmFtZS0+dXNlcklucHV0QnJpZGdlKCkuaGFu
ZGxlTW91c2VQcmVzc0V2ZW50KG1vdXNlUHJlc3NFdmVudCk7Ci0gICAgYm9vbCBoYW5kbGVkID0g
ZmFsc2U7Ci0gICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LndlYkZyYW1lKGZyYW1lSUQpKQotICAgICAgICBoYW5kbGVkID0gZnJhbWUtPmhhbmRsZUNvbnRl
eHRNZW51RXZlbnQobW91c2VQcmVzc0V2ZW50KTsKKyAgICBjb3JlUGFnZSgpLT51c2VySW5wdXRC
cmlkZ2UoKS5oYW5kbGVNb3VzZVByZXNzRXZlbnQobW91c2VQcmVzc0V2ZW50KTsKKyAgICBhdXRv
KiBsb2NhbE1haW5GcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxXZWJDb3JlOjpMb2NhbEZyYW1lPihj
b3JlUGFnZSgpLT5tYWluRnJhbWUoKSk7CisgICAgaWYgKCFsb2NhbE1haW5GcmFtZSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgUmVmIG1haW5GcmFtZSA9ICpsb2NhbE1haW5GcmFtZTsK
KyAgICBib29sIGhhbmRsZWQgPSBjb3JlUGFnZSgpLT51c2VySW5wdXRCcmlkZ2UoKS5oYW5kbGVD
b250ZXh0TWVudUV2ZW50KG1vdXNlUHJlc3NFdmVudCwgbWFpbkZyYW1lKTsKICAgICBhdXRvKiBt
ZW51ID0gaGFuZGxlZCA/ICZjb250ZXh0TWVudSgpIDogbnVsbHB0cjsKICAgICBQbGF0Zm9ybU1v
dXNlRXZlbnQgbW91c2VSZWxlYXNlRXZlbnQocG9pbnQsIHBvaW50LCBSaWdodEJ1dHRvbiwgUGxh
dGZvcm1FdmVudDo6VHlwZTo6TW91c2VSZWxlYXNlZCwgMSwgeyB9LCBXYWxsVGltZTo6bm93KCks
IFdlYkNvcmU6OkZvcmNlQXRDbGljaywgV2ViQ29yZTo6U3ludGhldGljQ2xpY2tUeXBlOjpOb1Rh
cCk7Ci0gICAgY29yZUZyYW1lLT51c2VySW5wdXRCcmlkZ2UoKS5oYW5kbGVNb3VzZVJlbGVhc2VF
dmVudChtb3VzZVJlbGVhc2VFdmVudCk7CisgICAgY29yZVBhZ2UoKS0+dXNlcklucHV0QnJpZGdl
KCkuaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQobW91c2VSZWxlYXNlRXZlbnQpOwogCiAgICAgcmV0
dXJuIG1lbnU7CiB9CkBAIC0zMjkyLDYgKzMyODYsMzYgQEAgdm9pZCBXZWJQYWdlOjpkaWREaXNt
aXNzQ29udGV4dE1lbnUoKQogI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQogCiAjaWYg
RU5BQkxFKENPTlRFWFRfTUVOVV9FVkVOVCkKK3N0YXRpYyBib29sIGlzQ29udGV4dENsaWNrKGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCit7CisjaWYgVVNFKEFQUEtJVCkKKyAgICBy
ZXR1cm4gV2ViRXZlbnRGYWN0b3J5OjpzaG91bGRCZUhhbmRsZWRBc0NvbnRleHRDbGljayhldmVu
dCk7CisjZWxzZQorICAgIHJldHVybiBldmVudC5idXR0b24oKSA9PSBXZWJDb3JlOjpSaWdodEJ1
dHRvbjsKKyNlbmRpZgorfQorCitzdGF0aWMgYm9vbCBoYW5kbGVDb250ZXh0TWVudUV2ZW50KGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1Nb3VzZUV2ZW50LCBXZWJQYWdlKiBwYWdl
KQoreworICAgIGF1dG8qIGxvY2FsTWFpbkZyYW1lID0gZHluYW1pY0Rvd25jYXN0PFdlYkNvcmU6
OkxvY2FsRnJhbWU+KHBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpKTsKKyAgICBpZiAoIWxv
Y2FsTWFpbkZyYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgSW50UG9pbnQgcG9pbnQg
PSBsb2NhbE1haW5GcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBsYXRmb3JtTW91c2VF
dmVudC5wb3NpdGlvbigpKTsKKyAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0
OjpUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5LCBIaXRUZXN0
UmVxdWVzdDo6VHlwZTo6QWN0aXZlLCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6RGlzYWxsb3dVc2Vy
QWdlbnRTaGFkb3dDb250ZW50LCAgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFsbG93Q2hpbGRGcmFt
ZUNvbnRlbnQgfTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGxvY2FsTWFpbkZyYW1lLT5l
dmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCwgaGl0VHlwZSk7CisKKyAg
ICBSZWYgZnJhbWUgPSAqbG9jYWxNYWluRnJhbWU7CisgICAgaWYgKHJlc3VsdC5pbm5lck5vblNo
YXJlZE5vZGUoKSkKKyAgICAgICAgZnJhbWUgPSAqcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgp
LT5kb2N1bWVudCgpLmZyYW1lKCk7CisKKyAgICBib29sIGhhbmRsZWQgPSBwYWdlLT5jb3JlUGFn
ZSgpLT51c2VySW5wdXRCcmlkZ2UoKS5oYW5kbGVDb250ZXh0TWVudUV2ZW50KHBsYXRmb3JtTW91
c2VFdmVudCwgZnJhbWUpOworI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorICAgIGlmIChoYW5k
bGVkKQorICAgICAgICBwYWdlLT5jb250ZXh0TWVudSgpLnNob3coKTsKKyNlbmRpZgorICAgIHJl
dHVybiBoYW5kbGVkOworfQorCiB2b2lkIFdlYlBhZ2U6OmNvbnRleHRNZW51Rm9yS2V5RXZlbnQo
KQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQpAQCAtMzMwOSw3ICszMzMzLDYwIEBAIHZv
aWQgV2ViUGFnZTo6Y29udGV4dE1lbnVGb3JLZXlFdmVudCgpCiB9CiAjZW5kaWYKIAotdm9pZCBX
ZWJQYWdlOjptb3VzZUV2ZW50KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBXZWJNb3Vz
ZUV2ZW50JiBtb3VzZUV2ZW50LCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGU+PiYmIHNhbmRib3hFeHRlbnNpb25zKQorc3RhdGljIGJvb2wgaGFuZGxlTW91c2VF
dmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBXZWJQYWdlKiBwYWdlKQorewor
ICAgIGF1dG8qIGxvY2FsTWFpbkZyYW1lID0gZHluYW1pY0Rvd25jYXN0PFdlYkNvcmU6OkxvY2Fs
RnJhbWU+KHBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpKTsKKyAgICBpZiAoIWxvY2FsTWFp
bkZyYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWxvY2FsTWFpbkZyYW1l
LT52aWV3KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFBsYXRmb3JtTW91c2VFdmVu
dCBwbGF0Zm9ybU1vdXNlRXZlbnQgPSBwbGF0Zm9ybShtb3VzZUV2ZW50KTsKKworICAgIHN3aXRj
aCAocGxhdGZvcm1Nb3VzZUV2ZW50LnR5cGUoKSkgeworICAgICAgICBjYXNlIFBsYXRmb3JtRXZl
bnQ6OlR5cGU6Ok1vdXNlUHJlc3NlZDogeworI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorICAg
ICAgICAgICAgaWYgKGlzQ29udGV4dENsaWNrKHBsYXRmb3JtTW91c2VFdmVudCkpCisgICAgICAg
ICAgICAgICAgcGFnZS0+Y29yZVBhZ2UoKS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCkuY2xlYXJD
b250ZXh0TWVudSgpOworI2VuZGlmCisKKyAgICAgICAgICAgIGJvb2wgaGFuZGxlZCA9IHBhZ2Ut
PmNvcmVQYWdlKCktPnVzZXJJbnB1dEJyaWRnZSgpLmhhbmRsZU1vdXNlUHJlc3NFdmVudChwbGF0
Zm9ybU1vdXNlRXZlbnQpOworI2lmIEVOQUJMRShDT05URVhUX01FTlVfRVZFTlQpCisgICAgICAg
ICAgICBpZiAoaXNDb250ZXh0Q2xpY2socGxhdGZvcm1Nb3VzZUV2ZW50KSkKKyAgICAgICAgICAg
ICAgICBoYW5kbGVkID0gaGFuZGxlQ29udGV4dE1lbnVFdmVudChwbGF0Zm9ybU1vdXNlRXZlbnQs
IHBhZ2UpOworI2VuZGlmCisgICAgICAgICAgICByZXR1cm4gaGFuZGxlZDsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6OlR5cGU6Ok1vdXNlUmVsZWFzZWQ6CisgICAgICAg
ICAgICBpZiAobW91c2VFdmVudC5nZXN0dXJlV2FzQ2FuY2VsbGVkKCkgPT0gR2VzdHVyZVdhc0Nh
bmNlbGxlZDo6WWVzKQorICAgICAgICAgICAgICAgIGxvY2FsTWFpbkZyYW1lLT5ldmVudEhhbmRs
ZXIoKS5pbnZhbGlkYXRlQ2xpY2soKTsKKyAgICAgICAgICAgIHJldHVybiBwYWdlLT5jb3JlUGFn
ZSgpLT51c2VySW5wdXRCcmlkZ2UoKS5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChwbGF0Zm9ybU1v
dXNlRXZlbnQpOworCisgICAgICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6VHlwZTo6TW91c2VNb3Zl
ZDoKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gZG8gYSBm
dWxsLCBub3JtYWwgaGl0IHRlc3QgZHVyaW5nIHRoaXMgbW91c2UgZXZlbnQgaWYgdGhlIHBhZ2Ug
aXMgYWN0aXZlIG9yIGlmIGEgbW91c2UKKyAgICAgICAgICAgIC8vIGJ1dHRvbiBpcyBjdXJyZW50
bHkgcHJlc3NlZC4gSXQgaXMgcG9zc2libGUgdGhhdCBuZWl0aGVyIG9mIHRob3NlIHRoaW5ncyB3
aWxsIGJlIHRydWUgc2luY2Ugb24KKyAgICAgICAgICAgIC8vIExpb24gd2hlbiBsZWdhY3kgc2Ny
b2xsYmFycyBhcmUgZW5hYmxlZCwgV2ViS2l0IHJlY2VpdmVzIG1vdXNlIGV2ZW50cyBhbGwgdGhl
IHRpbWUuIElmIGl0IGlzIG9uZQorICAgICAgICAgICAgLy8gb2YgdGhvc2UgY2FzZXMgd2hlcmUg
dGhlIHBhZ2UgaXMgbm90IGFjdGl2ZSBhbmQgdGhlIG1vdXNlIGlzIG5vdCBwcmVzc2VkLCB0aGVu
IHdlIGNhbiBmaXJlIGEgbW9yZQorICAgICAgICAgICAgLy8gZWZmaWNpZW50IHNjcm9sbGJhcnMt
b25seSB2ZXJzaW9uIG9mIHRoZSBldmVudC4KKyAgICAgICAgICAgIGlmICghKHBhZ2UtPmNvcmVQ
YWdlKCktPmZvY3VzQ29udHJvbGxlcigpLmlzQWN0aXZlKCkgfHwgKG1vdXNlRXZlbnQuYnV0dG9u
KCkgIT0gV2ViTW91c2VFdmVudEJ1dHRvbjo6Tm9CdXR0b24pKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcGFnZS0+Y29yZVBhZ2UoKS0+dXNlcklucHV0QnJpZGdlKCkuaGFuZGxlTW91c2VNb3Zl
T25TY3JvbGxiYXJFdmVudChwbGF0Zm9ybU1vdXNlRXZlbnQpOworI2VuZGlmCisgICAgICAgICAg
ICByZXR1cm4gcGFnZS0+Y29yZVBhZ2UoKS0+dXNlcklucHV0QnJpZGdlKCkuaGFuZGxlTW91c2VN
b3ZlRXZlbnQocGxhdGZvcm1Nb3VzZUV2ZW50KTsKKworICAgICAgICBjYXNlIFBsYXRmb3JtRXZl
bnQ6OlR5cGU6Ok1vdXNlRm9yY2VDaGFuZ2VkOgorICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6
OlR5cGU6Ok1vdXNlRm9yY2VEb3duOgorICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6OlR5cGU6
Ok1vdXNlRm9yY2VVcDoKKyAgICAgICAgICAgIHJldHVybiBwYWdlLT5jb3JlUGFnZSgpLT51c2Vy
SW5wdXRCcmlkZ2UoKS5oYW5kbGVNb3VzZUZvcmNlRXZlbnQocGxhdGZvcm1Nb3VzZUV2ZW50KTsK
KworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCit2b2lkIFdlYlBhZ2U6Om1vdXNl
RXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgbW91c2VFdmVudCwgc3RkOjpvcHRpb25hbDxWZWN0
b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPj4mJiBzYW5kYm94RXh0ZW5zaW9ucykKIHsKICAg
ICBTZXRGb3JTY29wZSB1c2VySXNJbnRlcmFjdGluZ0NoYW5nZSB7IG1fdXNlcklzSW50ZXJhY3Rp
bmcsIHRydWUgfTsKIApAQCAtMzM0NSw5ICszNDIyLDkgQEAgdm9pZCBXZWJQYWdlOjptb3VzZUV2
ZW50KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBXZWJNb3VzZUV2ZW50JiBtb3VzZUV2
ZW4KICAgICAgICAgaGFuZGxlZCA9IG1fZm9vdGVyQmFubmVyLT5tb3VzZUV2ZW50KG1vdXNlRXZl
bnQpOwogI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCi0gICAgaWYgKFdlYkZyYW1l
KiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOyAhaGFu
ZGxlZCAmJiBmcmFtZSkgeworICAgIGlmICghaGFuZGxlZCkgewogICAgICAgICBDdXJyZW50RXZl
bnQgY3VycmVudEV2ZW50KG1vdXNlRXZlbnQpOwotICAgICAgICBoYW5kbGVkID0gZnJhbWUtPmhh
bmRsZU1vdXNlRXZlbnQobW91c2VFdmVudCk7CisgICAgICAgIGhhbmRsZWQgPSBoYW5kbGVNb3Vz
ZUV2ZW50KG1vdXNlRXZlbnQsIHRoaXMpOwogICAgIH0KIAogICAgIHJldm9rZVNhbmRib3hFeHRl
bnNpb25zKG1vdXNlRXZlbnRTYW5kYm94RXh0ZW5zaW9ucyk7CkBAIC0zNDEyLDcgKzM0ODksNyBA
QCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1IaXRUZXN0Rm9yTW91c2VFdmVudChjb25zdCBXZWJNb3Vz
ZUV2ZW50JiBldmVudCwgQ29tcGxldGlvbgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
aGl0VGVzdFJlc3VsdERhdGEpLCBtb2RpZmllcnMsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMoV1RGTW92ZSh1c2VyRGF0YSkuZ2V0KCkp
LmdldCgpKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6aGFuZGxlV2hlZWxFdmVudChGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgZXZlbnQsIGNvbnN0IE9wdGlvblNl
dDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiYgcHJvY2Vzc2luZ1N0ZXBzLCBzdGQ6Om9wdGlv
bmFsPGJvb2w+IHdpbGxTdGFydFN3aXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlNjcm9sbGluZ05vZGVJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpXaGVlbFNjcm9sbEdlc3R1
cmVTdGF0ZT4sIGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlOjpoYW5k
bGVXaGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmIGV2ZW50LCBjb25zdCBPcHRpb25TZXQ8
V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4mIHByb2Nlc3NpbmdTdGVwcywgc3RkOjpvcHRpb25h
bDxib29sPiB3aWxsU3RhcnRTd2lwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpT
Y3JvbGxpbmdOb2RlSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6V2hlZWxTY3JvbGxHZXN0dXJl
U3RhdGU+LCBib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoQVNZTkNf
U0NST0xMSU5HKQogICAgIFJlZlB0ciByZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvciA9IGR5bmFt
aWNEb3duY2FzdDxSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcj4oc2Nyb2xsaW5nQ29vcmRpbmF0
b3IoKSk7CkBAIC0zNDIyLDcgKzM0OTksNyBAQCB2b2lkIFdlYlBhZ2U6OmhhbmRsZVdoZWVsRXZl
bnQoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIGV2ZQogICAg
IFVOVVNFRF9QQVJBTSh3aWxsU3RhcnRTd2lwZSk7CiAjZW5kaWYKIAotICAgIGJvb2wgaGFuZGxl
ZCA9IHdoZWVsRXZlbnQoZnJhbWVJRCwgZXZlbnQsIHByb2Nlc3NpbmdTdGVwcywgRXZlbnREaXNw
YXRjaGVyOjpXaGVlbEV2ZW50T3JpZ2luOjpVSVByb2Nlc3MpOworICAgIGJvb2wgaGFuZGxlZCA9
IHdoZWVsRXZlbnQoZXZlbnQsIHByb2Nlc3NpbmdTdGVwcywgRXZlbnREaXNwYXRjaGVyOjpXaGVl
bEV2ZW50T3JpZ2luOjpVSVByb2Nlc3MpOwogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCiAg
ICAgaWYgKHJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yKSB7CiAgICAgICAgIGF1dG8gZ2VzdHVy
ZUluZm8gPSByZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci0+dGFrZUN1cnJlbnRXaGVlbEdlc3R1
cmVJbmZvKCk7CkBAIC0zNDMzLDE5ICszNTEwLDIwIEBAIHZvaWQgV2ViUGFnZTo6aGFuZGxlV2hl
ZWxFdmVudChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgZXZl
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoMCwgeyB9LCBoYW5kbGVkKTsKIH0KIAotYm9vbCBXZWJQ
YWdlOjp3aGVlbEV2ZW50KGNvbnN0IEZyYW1lSWRlbnRpZmllciYgZnJhbWVJRCwgY29uc3QgV2Vi
V2hlZWxFdmVudCYgd2hlZWxFdmVudCwgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3Rl
cHM+IHByb2Nlc3NpbmdTdGVwcywgRXZlbnREaXNwYXRjaGVyOjpXaGVlbEV2ZW50T3JpZ2luIHdo
ZWVsRXZlbnRPcmlnaW4pCitib29sIFdlYlBhZ2U6OndoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxF
dmVudCYgd2hlZWxFdmVudCwgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IHBy
b2Nlc3NpbmdTdGVwcywgRXZlbnREaXNwYXRjaGVyOjpXaGVlbEV2ZW50T3JpZ2luIHdoZWVsRXZl
bnRPcmlnaW4pCiB7CiAgICAgbV91c2VyQWN0aXZpdHkuaW1wdWxzZSgpOwogCiAgICAgQ3VycmVu
dEV2ZW50IGN1cnJlbnRFdmVudCh3aGVlbEV2ZW50KTsKIAogICAgIGF1dG8gZGlzcGF0Y2hXaGVl
bEV2ZW50ID0gWyZdKGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvblNldDxX
aGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiBwcm9jZXNzaW5nU3RlcHMpIHsKLSAgICAgICAgYXV0
byogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKLSAg
ICAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNvcmVMb2NhbEZyYW1lKCkgfHwgIWZyYW1lLT5j
b3JlTG9jYWxGcmFtZSgpLT52aWV3KCkpCisKKyAgICAgICAgUmVmUHRyIGxvY2FsTWFpbkZyYW1l
ID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWU+KG1fcGFnZS0+bWFpbkZyYW1lKCkpOworICAg
ICAgICBpZiAoIWxvY2FsTWFpbkZyYW1lIHx8ICFsb2NhbE1haW5GcmFtZS0+dmlldygpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGF1dG8gcGxhdGZvcm1XaGVlbEV2ZW50
ID0gcGxhdGZvcm0od2hlZWxFdmVudCk7Ci0gICAgICAgIHJldHVybiBmcmFtZS0+Y29yZUxvY2Fs
RnJhbWUoKS0+dXNlcklucHV0QnJpZGdlKCkuaGFuZGxlV2hlZWxFdmVudChwbGF0Zm9ybVdoZWVs
RXZlbnQsIHByb2Nlc3NpbmdTdGVwcyk7CisgICAgICAgIHJldHVybiBtX3BhZ2UtPnVzZXJJbnB1
dEJyaWRnZSgpLmhhbmRsZVdoZWVsRXZlbnQocGxhdGZvcm1XaGVlbEV2ZW50LCBwcm9jZXNzaW5n
U3RlcHMpOwogICAgIH07CiAKICAgICBib29sIGhhbmRsZWQgPSBkaXNwYXRjaFdoZWVsRXZlbnQo
d2hlZWxFdmVudCwgcHJvY2Vzc2luZ1N0ZXBzKTsKQEAgLTM0NTQsNyArMzUzMiw3IEBAIGJvb2wg
V2ViUGFnZTo6d2hlZWxFdmVudChjb25zdCBGcmFtZUlkZW50aWZpZXImIGZyYW1lSUQsIGNvbnN0
IFdlYldoZWVsRXZlbnQmIHdoCiB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotdm9pZCBX
ZWJQYWdlOjpkaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xsaW5nKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlOjpkaXNw
YXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xsaW5nKGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVs
RXZlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQogICAgIFJlZlB0ciBsb2NhbE1haW5G
cmFtZSA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lPihtX3BhZ2UtPm1haW5GcmFtZSgpKTsK
QEAgLTM0NjMsMTMgKzM1NDEsMjcgQEAgdm9pZCBXZWJQYWdlOjpkaXNwYXRjaFdoZWVsRXZlbnRX
aXRob3V0U2Nyb2xsaW5nKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdAogI2Vsc2UKICAg
ICBib29sIGlzQ2FuY2VsYWJsZSA9IHRydWU7CiAjZW5kaWYKLSAgICBib29sIGhhbmRsZWQgPSB0
aGlzLT53aGVlbEV2ZW50KGZyYW1lSUQsIHdoZWVsRXZlbnQsIHsgaXNDYW5jZWxhYmxlID8gV2hl
ZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6QmxvY2tpbmdET01FdmVudERpc3BhdGNoIDogV2hlZWxF
dmVudFByb2Nlc3NpbmdTdGVwczo6Tm9uQmxvY2tpbmdET01FdmVudERpc3BhdGNoIH0sIEV2ZW50
RGlzcGF0Y2hlcjo6V2hlZWxFdmVudE9yaWdpbjo6VUlQcm9jZXNzKTsKKyAgICBib29sIGhhbmRs
ZWQgPSB0aGlzLT53aGVlbEV2ZW50KHdoZWVsRXZlbnQsIHsgaXNDYW5jZWxhYmxlID8gV2hlZWxF
dmVudFByb2Nlc3NpbmdTdGVwczo6QmxvY2tpbmdET01FdmVudERpc3BhdGNoIDogV2hlZWxFdmVu
dFByb2Nlc3NpbmdTdGVwczo6Tm9uQmxvY2tpbmdET01FdmVudERpc3BhdGNoIH0sIEV2ZW50RGlz
cGF0Y2hlcjo6V2hlZWxFdmVudE9yaWdpbjo6VUlQcm9jZXNzKTsKICAgICAvLyBUaGUgY2FsbGVy
IG9mIGRpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3JvbGxpbmcgbmV2ZXIgY2FyZXMgYWJvdXQg
RGlkUmVjZWl2ZUV2ZW50IGJlaW5nIHNlbnQgYmFjay4KICAgICBjb21wbGV0aW9uSGFuZGxlciho
YW5kbGVkKTsKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6OmtleUV2ZW50KEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50KQorc3Rh
dGljIGJvb2wgaGFuZGxlS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYga2V5Ym9hcmRF
dmVudCwgUGFnZSogcGFnZSkKK3sKKyAgICBSZWZQdHIgbG9jYWxNYWluRnJhbWUgPSBkeW5hbWlj
RG93bmNhc3Q8TG9jYWxGcmFtZT4ocGFnZS0+bWFpbkZyYW1lKCkpOworICAgIGlmICghbG9jYWxN
YWluRnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbG9jYWxNYWluRnJh
bWUtPnZpZXcoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGtleWJvYXJkRXZl
bnQudHlwZSgpID09IFdlYkV2ZW50VHlwZTo6Q2hhciAmJiBrZXlib2FyZEV2ZW50LmlzU3lzdGVt
S2V5KCkpCisgICAgICAgIHJldHVybiBwYWdlLT51c2VySW5wdXRCcmlkZ2UoKS5oYW5kbGVBY2Nl
c3NLZXlFdmVudChwbGF0Zm9ybShrZXlib2FyZEV2ZW50KSk7CisgICAgcmV0dXJuIHBhZ2UtPnVz
ZXJJbnB1dEJyaWRnZSgpLmhhbmRsZUtleUV2ZW50KHBsYXRmb3JtKGtleWJvYXJkRXZlbnQpKTsK
K30KKwordm9pZCBXZWJQYWdlOjprZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXli
b2FyZEV2ZW50KQogewogICAgIFNldEZvclNjb3BlIHVzZXJJc0ludGVyYWN0aW5nQ2hhbmdlIHsg
bV91c2VySXNJbnRlcmFjdGluZywgdHJ1ZSB9OwogCkBAIC0zNDc5LDkgKzM1NzEsNyBAQCB2b2lk
IFdlYlBhZ2U6OmtleUV2ZW50KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBXZWJLZXli
b2FyZEV2ZW50JiBrZXlib2FyZAogCiAgICAgQ3VycmVudEV2ZW50IGN1cnJlbnRFdmVudChrZXli
b2FyZEV2ZW50KTsKIAotICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOwotICAgIGlmIChXZWJGcmFt
ZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSkKLSAg
ICAgICAgaGFuZGxlZCA9IGZyYW1lLT5oYW5kbGVLZXlFdmVudChrZXlib2FyZEV2ZW50KTsKKyAg
ICBib29sIGhhbmRsZWQgPSBoYW5kbGVLZXlFdmVudChrZXlib2FyZEV2ZW50LCBtX3BhZ2UuZ2V0
KCkpOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlRXZlbnQo
a2V5Ym9hcmRFdmVudC50eXBlKCksIGhhbmRsZWQpKTsKIH0KQEAgLTM2ODcsMTIgKzM3NzcsMTIg
QEAgdm9pZCBXZWJQYWdlOjpnZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBnZXN0
dXJlRXZlbnQpCiAKIGJvb2wgV2ViUGFnZTo6c2Nyb2xsKFBhZ2UqIHBhZ2UsIFNjcm9sbERpcmVj
dGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQogewotICAgIHJl
dHVybiBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS51c2VySW5w
dXRCcmlkZ2UoKS5zY3JvbGxSZWN1cnNpdmVseShkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKKyAg
ICByZXR1cm4gcGFnZS0+dXNlcklucHV0QnJpZGdlKCkuc2Nyb2xsUmVjdXJzaXZlbHkoZGlyZWN0
aW9uLCBncmFudWxhcml0eSk7CiB9CiAKIGJvb2wgV2ViUGFnZTo6bG9naWNhbFNjcm9sbChQYWdl
KiBwYWdlLCBTY3JvbGxMb2dpY2FsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJp
dHkgZ3JhbnVsYXJpdHkpCiB7Ci0gICAgcmV0dXJuIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpLnVzZXJJbnB1dEJyaWRnZSgpLmxvZ2ljYWxTY3JvbGxSZWN1cnNp
dmVseShkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKKyAgICByZXR1cm4gcGFnZS0+dXNlcklucHV0
QnJpZGdlKCkubG9naWNhbFNjcm9sbFJlY3Vyc2l2ZWx5KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkp
OwogfQogCiBib29sIFdlYlBhZ2U6OnNjcm9sbEJ5KHVpbnQzMl90IHNjcm9sbERpcmVjdGlvbiwg
V2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkgc2Nyb2xsR3JhbnVsYXJpdHkpCkBAIC02MzA3LDE4
ICs2Mzk3LDE4IEBAIHZvaWQgV2ViUGFnZTo6aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQo
Y29uc3QgU3RyaW5nJiByZXN1bHQpCiB2b2lkIFdlYlBhZ2U6OnNpbXVsYXRlTW91c2VEb3duKGlu
dCBidXR0b24sIFdlYkNvcmU6OkludFBvaW50IHBvc2l0aW9uLCBpbnQgY2xpY2tDb3VudCwgV0tF
dmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdhbGxUaW1lIHRpbWUpCiB7CiAgICAgc3RhdGljX2Fz
c2VydChzaXplb2YoV0tFdmVudE1vZGlmaWVycykgPj0gc2l6ZW9mKFdlYkV2ZW50TW9kaWZpZXIp
LCAiV0tFdmVudE1vZGlmaWVycyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUg
c2l6ZSBvZiBXZWJFdmVudE1vZGlmaWVyIik7Ci0gICAgbW91c2VFdmVudChtYWluV2ViRnJhbWUo
KS5mcmFtZUlEKCksIFdlYk1vdXNlRXZlbnQoeyBXZWJFdmVudFR5cGU6Ok1vdXNlRG93biwgZnJv
bUFQSShtb2RpZmllcnMpLCB0aW1lIH0sIHN0YXRpY19jYXN0PFdlYk1vdXNlRXZlbnRCdXR0b24+
KGJ1dHRvbiksIDAsIHBvc2l0aW9uLCBwb3NpdGlvbiwgMCwgMCwgMCwgY2xpY2tDb3VudCwgV2Vi
Q29yZTo6Rm9yY2VBdENsaWNrLCBXZWJNb3VzZUV2ZW50U3ludGhldGljQ2xpY2tUeXBlOjpOb1Rh
cCksIHN0ZDo6bnVsbG9wdCk7CisgICAgbW91c2VFdmVudChXZWJNb3VzZUV2ZW50KHsgV2ViRXZl
bnRUeXBlOjpNb3VzZURvd24sIGZyb21BUEkobW9kaWZpZXJzKSwgdGltZSB9LCBzdGF0aWNfY2Fz
dDxXZWJNb3VzZUV2ZW50QnV0dG9uPihidXR0b24pLCAwLCBwb3NpdGlvbiwgcG9zaXRpb24sIDAs
IDAsIDAsIGNsaWNrQ291bnQsIFdlYkNvcmU6OkZvcmNlQXRDbGljaywgV2ViTW91c2VFdmVudFN5
bnRoZXRpY0NsaWNrVHlwZTo6Tm9UYXApLCBzdGQ6Om51bGxvcHQpOwogfQogCiB2b2lkIFdlYlBh
Z2U6OnNpbXVsYXRlTW91c2VVcChpbnQgYnV0dG9uLCBXZWJDb3JlOjpJbnRQb2ludCBwb3NpdGlv
biwgaW50IGNsaWNrQ291bnQsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBXYWxsVGltZSB0
aW1lKQogewogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFdLRXZlbnRNb2RpZmllcnMpID49IHNp
emVvZihXZWJFdmVudE1vZGlmaWVyKSwgIldLRXZlbnRNb2RpZmllcnMgbXVzdCBiZSBncmVhdGVy
IHRoYW4gb3IgZXF1YWwgdG8gdGhlIHNpemUgb2YgV2ViRXZlbnRNb2RpZmllciIpOwotICAgIG1v
dXNlRXZlbnQobWFpbldlYkZyYW1lKCkuZnJhbWVJRCgpLCBXZWJNb3VzZUV2ZW50KHsgV2ViRXZl
bnRUeXBlOjpNb3VzZVVwLCBmcm9tQVBJKG1vZGlmaWVycyksIHRpbWUgfSwgc3RhdGljX2Nhc3Q8
V2ViTW91c2VFdmVudEJ1dHRvbj4oYnV0dG9uKSwgMCwgcG9zaXRpb24sIHBvc2l0aW9uLCAwLCAw
LCAwLCBjbGlja0NvdW50LCBXZWJDb3JlOjpGb3JjZUF0Q2xpY2ssIFdlYk1vdXNlRXZlbnRTeW50
aGV0aWNDbGlja1R5cGU6Ok5vVGFwKSwgc3RkOjpudWxsb3B0KTsKKyAgICBtb3VzZUV2ZW50KFdl
Yk1vdXNlRXZlbnQoeyBXZWJFdmVudFR5cGU6Ok1vdXNlVXAsIGZyb21BUEkobW9kaWZpZXJzKSwg
dGltZSB9LCBzdGF0aWNfY2FzdDxXZWJNb3VzZUV2ZW50QnV0dG9uPihidXR0b24pLCAwLCBwb3Np
dGlvbiwgcG9zaXRpb24sIDAsIDAsIDAsIGNsaWNrQ291bnQsIFdlYkNvcmU6OkZvcmNlQXRDbGlj
aywgV2ViTW91c2VFdmVudFN5bnRoZXRpY0NsaWNrVHlwZTo6Tm9UYXApLCBzdGQ6Om51bGxvcHQp
OwogfQogCiB2b2lkIFdlYlBhZ2U6OnNpbXVsYXRlTW91c2VNb3Rpb24oV2ViQ29yZTo6SW50UG9p
bnQgcG9zaXRpb24sIFdhbGxUaW1lIHRpbWUpCiB7Ci0gICAgbW91c2VFdmVudChtYWluV2ViRnJh
bWUoKS5mcmFtZUlEKCksIFdlYk1vdXNlRXZlbnQoeyBXZWJFdmVudFR5cGU6Ok1vdXNlTW92ZSwg
T3B0aW9uU2V0PFdlYkV2ZW50TW9kaWZpZXI+IHsgfSwgdGltZSB9LCBXZWJNb3VzZUV2ZW50QnV0
dG9uOjpOb0J1dHRvbiwgMCwgcG9zaXRpb24sIHBvc2l0aW9uLCAwLCAwLCAwLCAwLCAwLCBXZWJN
b3VzZUV2ZW50U3ludGhldGljQ2xpY2tUeXBlOjpOb1RhcCksIHN0ZDo6bnVsbG9wdCk7CisgICAg
bW91c2VFdmVudChXZWJNb3VzZUV2ZW50KHsgV2ViRXZlbnRUeXBlOjpNb3VzZU1vdmUsIE9wdGlv
blNldDxXZWJFdmVudE1vZGlmaWVyPiB7IH0sIHRpbWUgfSwgV2ViTW91c2VFdmVudEJ1dHRvbjo6
Tm9CdXR0b24sIDAsIHBvc2l0aW9uLCBwb3NpdGlvbiwgMCwgMCwgMCwgMCwgMCwgV2ViTW91c2VF
dmVudFN5bnRoZXRpY0NsaWNrVHlwZTo6Tm9UYXApLCBzdGQ6Om51bGxvcHQpOwogfQogCiB2b2lk
IFdlYlBhZ2U6OnNldENvbXBvc2l0aW9uRm9yVGVzdGluZyhjb25zdCBTdHJpbmcmIGNvbXBvc2l0
aW9uU3RyaW5nLCB1aW50NjRfdCBmcm9tLCB1aW50NjRfdCBsZW5ndGgsIGJvb2wgc3VwcHJlc3NV
bmRlcmxpbmUsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvbkhpZ2hsaWdodD4mIGhpZ2hsaWdodHMs
IGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8V2ViQ29yZTo6Q2hhcmFjdGVyUmFuZ2U+PiYg
YW5ub3RhdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
aW5kZXggMDVlYmZkZmUwMDcxLi5mZDdkMzdmZDdhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTk2MCw3ICs5NjAsNyBAQCBwdWJsaWM6CiAKICNp
ZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBXZWJDb250ZXh0TWVudSYgY29udGV4dE1lbnUo
KTsKLSAgICBXZWJDb250ZXh0TWVudSogY29udGV4dE1lbnVBdFBvaW50SW5XaW5kb3coV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAgIFdlYkNv
bnRleHRNZW51KiBjb250ZXh0TWVudUF0UG9pbnRJbldpbmRvdyhjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYpOwogI2VuZGlmCiAKICAgICBzdGF0aWMgYm9vbCBjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwpAQCAtMTE3Nyw4ICsxMTc3LDggQEAgcHVibGlj
OgogICAgIHZvaWQgc3RhcnRXYWl0aW5nRm9yQ29udGV4dE1lbnVUb1Nob3coKSB7IG1fd2FpdGlu
Z0ZvckNvbnRleHRNZW51VG9TaG93ID0gdHJ1ZTsgfQogI2VuZGlmCiAKLSAgICB2b2lkIGhhbmRs
ZVdoZWVsRXZlbnQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJXaGVlbEV2ZW50
JiwgY29uc3QgT3B0aW9uU2V0PFdlYkNvcmU6OldoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+Jiwg
c3RkOjpvcHRpb25hbDxib29sPiB3aWxsU3RhcnRTd2lwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6V2hlZWxT
Y3JvbGxHZXN0dXJlU3RhdGU+LCBib29sIGhhbmRsZWQpPiYmKTsKLSAgICBib29sIHdoZWVsRXZl
bnQoY29uc3QgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyJiwgY29uc3QgV2ViV2hlZWxFdmVudCYs
IE9wdGlvblNldDxXZWJDb3JlOjpXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiwgRXZlbnREaXNw
YXRjaGVyOjpXaGVlbEV2ZW50T3JpZ2luKTsKKyAgICB2b2lkIGhhbmRsZVdoZWVsRXZlbnQoY29u
c3QgV2ViV2hlZWxFdmVudCYsIGNvbnN0IE9wdGlvblNldDxXZWJDb3JlOjpXaGVlbEV2ZW50UHJv
Y2Vzc2luZ1N0ZXBzPiYsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gd2lsbFN0YXJ0U3dpcGUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlELCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OldoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiwgYm9vbCBoYW5kbGVkKT4mJik7Cisg
ICAgYm9vbCB3aGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmLCBPcHRpb25TZXQ8V2ViQ29y
ZTo6V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4sIEV2ZW50RGlzcGF0Y2hlcjo6V2hlZWxFdmVu
dE9yaWdpbik7CiAKICAgICB2b2lkIHdoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQoYm9vbCk7CiAg
ICAgdm9pZCByZWNvbXB1dGVTaG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHNTdGF0ZSgp
OwpAQCAtMTU3NCw3ICsxNTc0LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgIHZvaWQgZGlzcGF0Y2hXaGVlbEV2ZW50V2l0aG91dFNjcm9sbGluZyhX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFdlYldoZWVsRXZlbnQmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGRpc3BhdGNoV2hlZWxFdmVudFdpdGhv
dXRTY3JvbGxpbmcoY29uc3QgV2ViV2hlZWxFdmVudCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoUERGS0lUX1BMVUdJTikKQEAgLTE3OTMs
OCArMTc5Myw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldE5lZWRzRm9udEF0dHJpYnV0ZXMo
Ym9vbCk7CiAKLSAgICB2b2lkIG1vdXNlRXZlbnQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBj
b25zdCBXZWJNb3VzZUV2ZW50Jiwgc3RkOjpvcHRpb25hbDxWZWN0b3I8U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlPj4mJiBzYW5kYm94RXh0ZW5zaW9ucyk7Ci0gICAgdm9pZCBrZXlFdmVudChXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKKyAgICB2b2lk
IG1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZT4+JiYgc2FuZGJveEV4dGVuc2lvbnMpOworICAgIHZvaWQg
a2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogCiAjaWYgRU5BQkxFKElPU19UT1VD
SF9FVkVOVFMpCiAgICAgdm9pZCB0b3VjaEV2ZW50U3luYyhjb25zdCBXZWJUb3VjaEV2ZW50Jiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBlMzI4OWIyMjRh
YzEuLmQ1ODg0NGMxZDNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00Nyw4ICs0Nyw4IEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFZpZXdXaWxsRW5kTGl2ZVJlc2l6ZSgpCiAK
ICAgICBFeGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soU3RyaW5nIG5hbWUsIFN0cmluZyBh
cmd1bWVudCkgLT4gKCkKLSAgICBLZXlFdmVudChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgV2ViS2l0OjpXZWJLZXlib2FyZEV2ZW50IGV2ZW50KQotICAgIE1vdXNlRXZlbnQoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYktpdDo6V2ViTW91c2VFdmVudCBldmVu
dCwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+
PiBzYW5kYm94RXh0ZW5zaW9ucykKKyAgICBLZXlFdmVudChXZWJLaXQ6OldlYktleWJvYXJkRXZl
bnQgZXZlbnQpCisgICAgTW91c2VFdmVudChXZWJLaXQ6OldlYk1vdXNlRXZlbnQgZXZlbnQsIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPj4gc2Fu
ZGJveEV4dGVuc2lvbnMpCiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBDbGVhck5v
dGlmaWNhdGlvblBlcm1pc3Npb25TdGF0ZSgpCkBAIC02ODYsOSArNjg2LDkgQEAgR2VuZXJhdGVT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZFR5cGUKICAgICBTZXRBcHBIaWdobGlnaHRzVmlzaWJpbGl0eShlbnVtOmJvb2wg
V2ViQ29yZTo6SGlnaGxpZ2h0VmlzaWJpbGl0eSBoaWdobGlnaHRWaXNpYmlsaXR5KQogI2VuZGlm
CiAKLSAgICBIYW5kbGVXaGVlbEV2ZW50KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBXZWJLaXQ6OldlYldoZWVsRXZlbnQgZXZlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpXaGVlbEV2
ZW50UHJvY2Vzc2luZ1N0ZXBzPiBwcm9jZXNzaW5nU3RlcHMsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
d2lsbFN0YXJ0U3dpcGUpIC0+ICh1aW50NjRfdCBzY3JvbGxpbmdOb2RlSUQsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IGdlc3R1cmVTdGF0ZSwgYm9vbCBo
YW5kbGVkKQorICAgIEhhbmRsZVdoZWVsRXZlbnQoV2ViS2l0OjpXZWJXaGVlbEV2ZW50IGV2ZW50
LCBPcHRpb25TZXQ8V2ViQ29yZTo6V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4gcHJvY2Vzc2lu
Z1N0ZXBzLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IHdpbGxTdGFydFN3aXBlKSAtPiAodWludDY0X3Qg
c2Nyb2xsaW5nTm9kZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OldoZWVsU2Nyb2xsR2VzdHVy
ZVN0YXRlPiBnZXN0dXJlU3RhdGUsIGJvb2wgaGFuZGxlZCkKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIERpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3JvbGxpbmcoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYktpdDo6V2ViV2hlZWxFdmVudCBldmVudCkgLT4gKGJv
b2wgaGFuZGxlZCkKKyAgICBEaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xsaW5nKFdlYktp
dDo6V2ViV2hlZWxFdmVudCBldmVudCkgLT4gKGJvb2wgaGFuZGxlZCkKICNlbmRpZgogCiAgICAg
TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQoKSAtPiAoYm9vbCB3YXNBcHBCb3VuZCkK
</data>
<flag name="commit-queue"
          id="494673"
          type_id="3"
          status="?"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>