<?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>258393</bug_id>
          
          <creation_ts>2023-06-22 02:08:24 -0700</creation_ts>
          <short_desc>REGRESSION(265388@main): Broke builds</short_desc>
          <delta_ts>2023-06-22 02:13:18 -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>RESOLVED</bug_status>
          <resolution>FIXED</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>257887</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>richard_robinson2</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1962997</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2023-06-22 02:08:24 -0700</bug_when>
    <thetext>https://commits.webkit.org/265388@main introduced a regression:
Broke builds

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>1962999</commentid>
    <comment_count>1</comment_count>
      <attachid>466793</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2023-06-22 02:08:32 -0700</bug_when>
    <thetext>Created attachment 466793
REVERT of 265388@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>1963000</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-06-22 02:12:36 -0700</bug_when>
    <thetext>Committed 265398@main (4e562aef92f8): &lt;https://commits.webkit.org/265398@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 466793.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1963001</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-06-22 02:13:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/111148022&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>466793</attachid>
            <date>2023-06-22 02:08:32 -0700</date>
            <delta_ts>2023-06-22 02:12:37 -0700</delta_ts>
            <desc>REVERT of 265388@main</desc>
            <filename>bug-258393-20230622090831.patch</filename>
            <type>text/plain</type>
            <size>69991</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSBmNzllOTkxMTMwOTMzZWM2ZDljN2Q3Y2EwYjIwZWRkMmNhMmQ3NGQzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBUaHUsIDIyIEp1biAyMDIzIDA5OjA4OjI5ICswMDAwClN1YmplY3Q6IFtQQVRDSF0g
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIDI2NTM4OEBtYWluLgogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI1ODM5MwoKQnJva2UgYnVpbGRzCgpSZXZlcnRlZCBjaGFuZ2Vz
ZXQ6CgoiVXBzdHJlYW0gcmVkZXNpZ25lZCB0ZXh0IGN1cnNvciBzdXBwb3J0IGZvciBXZWJLaXQi
Cmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTc4ODcKaHR0cHM6Ly9j
b21taXRzLndlYmtpdC5vcmcvMjY1Mzg4QG1haW4KLS0tCiAuLi4vUEFML3BhbC9zcGkvbWFjL05T
VGV4dElucHV0Q29udGV4dFNQSS5oICAgfCAgIDQgLQogLi4uL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIHwgIDE2IC0KIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJh
bWVTZWxlY3Rpb24uY3BwICAgICB8ICAzMCArLQogU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5oICAgICAgIHwgICAyIC0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhcmV0
QW5pbWF0b3IuaCAgICAgICB8ICA0MSAtLQogLi4uL3BsYXRmb3JtL0RpY3RhdGlvbkNhcmV0QW5p
bWF0b3IuY3BwICAgICAgIHwgMzY0IC0tLS0tLS0tLS0tLS0tLS0tLQogLi4uL1dlYkNvcmUvcGxh
dGZvcm0vRGljdGF0aW9uQ2FyZXRBbmltYXRvci5oIHwgIDg5IC0tLS0tCiAuLi4vV2ViQ29yZS9w
bGF0Zm9ybS9PcGFjaXR5Q2FyZXRBbmltYXRvci5jcHAgfCAxNTEgLS0tLS0tLS0KIC4uLi9XZWJD
b3JlL3BsYXRmb3JtL09wYWNpdHlDYXJldEFuaW1hdG9yLmggICB8ICA2OCAtLS0tCiAuLi4vcmVu
ZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmNwcCAgICAgICAgfCAgIDYgKy0KIC4uLi9XZWJD
b3JlL3JlbmRlcmluZy9DYXJldFJlY3RDb21wdXRhdGlvbi5oICB8ICAxNyAtCiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbSAgfCAgIDkgKy0KIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAgICB8IDE4NiArLS0tLS0tLS0KIC4uLi9j
b2NvYS9fV0tXZWJWaWV3VGV4dElucHV0Tm90aWZpY2F0aW9ucy5oICB8ICA0NiAtLS0KIC4uLi9j
b2NvYS9fV0tXZWJWaWV3VGV4dElucHV0Tm90aWZpY2F0aW9ucy5tbSB8IDEwNCAtLS0tLQogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLmggICAgIHwgIDExICstCiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW0gICAgfCAgNDkgKy0tCiAuLi4v
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qICAgfCAgIDggLQogMTggZmls
ZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgMTE2NiBkZWxldGlvbnMoLSkKIGRlbGV0ZSBt
b2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EaWN0YXRpb25DYXJldEFuaW1hdG9y
LmNwcAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RpY3RhdGlv
bkNhcmV0QW5pbWF0b3IuaAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL09wYWNpdHlDYXJldEFuaW1hdG9yLmNwcAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL09wYWNpdHlDYXJldEFuaW1hdG9yLmgKIGRlbGV0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL19XS1dlYlZpZXdUZXh0SW5wdXROb3RpZmlj
YXRpb25zLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29h
L19XS1dlYlZpZXdUZXh0SW5wdXROb3RpZmljYXRpb25zLm1tCgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL05TVGV4dElucHV0Q29udGV4dFNQSS5oIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL05TVGV4dElucHV0Q29udGV4dFNQSS5oCmluZGV4IDcw
NmNkMGJjMzQzMi4uNzYwYTQzMWNkZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9tYWMvTlNUZXh0SW5wdXRDb250ZXh0U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvbWFjL05TVGV4dElucHV0Q29udGV4dFNQSS5oCkBAIC0zNSwxMCArMzUsNiBA
QAogLSAodm9pZCloYW5kbGVFdmVudDooTlNFdmVudCAqKWV2ZW50IGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkKF4pKEJPT0wgaGFuZGxlZCkpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKWhhbmRs
ZUV2ZW50QnlJbnB1dE1ldGhvZDooTlNFdmVudCAqKWV2ZW50IGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkKF4pKEJPT0wgaGFuZGxlZCkpY29tcGxldGlvbkhhbmRsZXI7CiAtIChCT09MKWhhbmRsZUV2
ZW50QnlLZXlib2FyZExheW91dDooTlNFdmVudCAqKWV2ZW50OwotCi0jaWYgSEFWRShSRURFU0lH
TkVEX1RFWFRfQ1VSU09SKQotQHByb3BlcnR5IEJPT0wgc2hvd3NDdXJzb3JBY2Nlc3NvcmllczsK
LSNlbmRpZgogQGVuZAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0ZGI0ZGNlZjIyMjcuLjRmMjg3YTBhODZiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjM0LDEwICsyMzQsNiBAQAogCQkwN0Q2QTRGNDFCRUQ1Rjg4MDAxNzQxNDYgLyogTW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3RDZBNEYyMUJFRDVGODgwMDE3NDE0NiAvKiBNb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTA3RDZBNEY4MUJGMjMwN0QwMDE3NDE0NiAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0Q2
QTRGNjFCRjIzMDdEMDAxNzQxNDYgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oICov
OyB9OwogCQkwN0UzREZEMTFBOUU3ODY1MDA3NjRDQTggLyogTWVkaWFQbGF5YmFja1RhcmdldC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFM0RGRDAx
QTlFNzg2NTAwNzY0Q0E4IC8qIE1lZGlhUGxheWJhY2tUYXJnZXQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwN0U0QkRCRjJBM0E1RkFCMDAwRDU1
MDkgLyogRGljdGF0aW9uQ2FyZXRBbmltYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0U0QkRCRDJBM0E1RkFCMDAwRDU1MDkgLyogRGljdGF0
aW9uQ2FyZXRBbmltYXRvci5jcHAgKi87IH07Ci0JCTA3RTRCREMwMkEzQTVGQUIwMDBENTUwOSAv
KiBEaWN0YXRpb25DYXJldEFuaW1hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwN0U0QkRCRTJBM0E1RkFCMDAwRDU1MDkgLyogRGljdGF0aW9uQ2Fy
ZXRBbmltYXRvci5oICovOyB9OwotCQkwN0U0QkRDMzJBM0E2MTkxMDAwRDU1MDkgLyogT3BhY2l0
eUNhcmV0QW5pbWF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDdFNEJEQzEyQTNBNjE5MTAwMEQ1NTA5IC8qIE9wYWNpdHlDYXJldEFuaW1hdG9y
LmNwcCAqLzsgfTsKLQkJMDdFNEJEQzQyQTNBNjE5MTAwMEQ1NTA5IC8qIE9wYWNpdHlDYXJldEFu
aW1hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
N0U0QkRDMjJBM0E2MTkxMDAwRDU1MDkgLyogT3BhY2l0eUNhcmV0QW5pbWF0b3IuaCAqLzsgfTsK
IAkJMDdFOUUxMkUxOEY1RTI3NjAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJp
dmF0ZUFWRi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdFOUUxMkQxOEY1RTI3NjAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0
ZUFWRi5oICovOyB9OwogCQkwN0VEMTkzODI3NjI3Njk0MDBBRjFFQzUgLyogRGlzcGxheUNhcHR1
cmVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwN0VEMTkzNzI3NjI3Njk0MDBBRjFFQzUgLyogRGlzcGxheUNhcHR1cmVNYW5hZ2VyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdFRTc2RUMx
QkU5NkRCMDAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0VFNzZFQTFCRTk2REIwMDBGODkx
MzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjYxNywxMCArNjYxMyw2IEBACiAJCTA3RDZBNEY2
MUJGMjMwN0QwMDE3NDE0NiAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0u
aDsgcGF0aCA9IHBsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJl
YW0uaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQkwN0UxMTcwNjE0ODlFQkVCMDBF
QzVBQ0UgLyogSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwN0UzREZEMDFBOUU3ODY1MDA3NjRDQTggLyogTWVkaWFQbGF5YmFja1Rh
cmdldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXliYWNrVGFy
Z2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3RTRCREJEMkEzQTVGQUIwMDBE
NTUwOSAvKiBEaWN0YXRpb25DYXJldEFuaW1hdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERp
Y3RhdGlvbkNhcmV0QW5pbWF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkw
N0U0QkRCRTJBM0E1RkFCMDAwRDU1MDkgLyogRGljdGF0aW9uQ2FyZXRBbmltYXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEaWN0YXRpb25DYXJldEFuaW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTA3RTRCREMxMkEzQTYxOTEwMDBENTUwOSAvKiBPcGFjaXR5Q2FyZXRBbmltYXRv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPcGFjaXR5Q2FyZXRBbmltYXRvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3RTRCREMyMkEzQTYxOTEwMDBENTUwOSAvKiBPcGFj
aXR5Q2FyZXRBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcGFjaXR5Q2FyZXRBbmltYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0U5RTEyRDE4RjVFMjc2MDAxMUEzQTQg
LyogSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0U5RTEyRjE4RjYyQjM3MDAxMUEzQTQgLyogSW5i
YW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RUQxOTM3Mjc2Mjc2OTQwMEFGMUVDNSAvKiBE
aXNwbGF5Q2FwdHVyZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RGlzcGxheUNhcHR1cmVNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0z
MjI5MSw4ICszMjI4Myw2IEBACiAJCQkJNDVGRUE1Q0QxNTZEREU4QzAwNjU0MTAxIC8qIERlY2lt
YWwuY3BwICovLAogCQkJCTQ1RkVBNUNFMTU2RERFOEMwMDY1NDEwMSAvKiBEZWNpbWFsLmggKi8s
CiAJCQkJQ0Q4M0QzNUEyMTExMTA4MjAwNzZFMTFDIC8qIERlZmVycmFibGVUYXNrLmggKi8sCi0J
CQkJMDdFNEJEQkQyQTNBNUZBQjAwMEQ1NTA5IC8qIERpY3RhdGlvbkNhcmV0QW5pbWF0b3IuY3Bw
ICovLAotCQkJCTA3RTRCREJFMkEzQTVGQUIwMDBENTUwOSAvKiBEaWN0YXRpb25DYXJldEFuaW1h
dG9yLmggKi8sCiAJCQkJQTc5NTQ2NDIwQjVDNENCNDAwN0I0MzhGIC8qIERyYWdEYXRhLmNwcCAq
LywKIAkJCQlBN0I2RTY5RDBCMjkxQTk2MDBEMDUyOUYgLyogRHJhZ0RhdGEuaCAqLywKIAkJCQlB
N0NGQjNDRjBCN0VEMTBBMDA3MEMzMkQgLyogRHJhZ0ltYWdlLmNwcCAqLywKQEAgLTMyMzYxLDgg
KzMyMzUxLDYgQEAKIAkJCQk5OEVCMUY5NDEzMTNGRTA1MDBEMEUxRUEgLyogTm90SW1wbGVtZW50
ZWQuaCAqLywKIAkJCQk0MTc4RUYxNjI0MTI1QjZDMDAxOTNDNzQgLyogTm93UGxheWluZ01hbmFn
ZXIuY3BwICovLAogCQkJCTQxNzhFRjE0MjQxMjVCNkMwMDE5M0M3NCAvKiBOb3dQbGF5aW5nTWFu
YWdlci5oICovLAotCQkJCTA3RTRCREMxMkEzQTYxOTEwMDBENTUwOSAvKiBPcGFjaXR5Q2FyZXRB
bmltYXRvci5jcHAgKi8sCi0JCQkJMDdFNEJEQzIyQTNBNjE5MTAwMEQ1NTA5IC8qIE9wYWNpdHlD
YXJldEFuaW1hdG9yLmggKi8sCiAJCQkJNDE4NEY1MTUxRUFGMDU5ODAwRjE4QkYwIC8qIE9yaWVu
dGF0aW9uTm90aWZpZXIuaCAqLywKIAkJCQk0MTkyQkIxMjI3Q0Y2MzgzMDBGMjlBNDYgLyogUGFn
ZUlkZW50aWZpZXIuaCAqLywKIAkJCQkyRUUwMkExRTFGNzMyNDI4MDAwNkFGNzIgLyogUGFzdGVi
b2FyZC5jcHAgKi8sCkBAIC0zNjkzNSw3ICszNjkyMyw2IEBACiAJCQkJNDZGQ0I2MTgxQTcwODIw
RTAwQzVBMjFFIC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODM3MkRCMzExQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VDQURGQzcxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlv
bkFsdGVybmF0aXZlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwN0U0QkRDMDJBM0E1RkFCMDAwRDU1
MDkgLyogRGljdGF0aW9uQ2FyZXRBbmltYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VDQURG
QzkxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUQwQkQ0RjVEMTQwODg1MEYwMDY4MzlCNiAvKiBEaWN0YXRpb25Db21tYW5kSU9TLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5Mzg0MzBCNDI0NzVERTQwMDAzRjk2MTcgLyogRGljdGF0aW9uQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zOTIzMiw3ICszOTIxOSw2IEBACiAJCQkJMzE0ODc3
RTMxRkFBOEZFOTAwQzA1NzU5IC8qIE9mZnNjcmVlbkNhbnZhcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzE0MEM1MjAxRkRGMTUxQTAwRDJBODczIC8qIE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjY4QTFCMDQyNzIzQTcyQjAwNzY1RTBGIC8q
IE9mZnNldFJvdGF0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQkwN0U0QkRDNDJBM0E2MTkxMDAw
RDU1MDkgLyogT3BhY2l0eUNhcmV0QW5pbWF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRDNE
QTY1MEQwMDZDRDYwMEVGNkYzQSAvKiBPcGVuVHlwZUNHLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MkQzREE2NTBEMDA2Q0Q2MDBFRjZGMjcgLyogT3BlblR5cGVNYXRoRGF0YS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjJEM0VBNjUwRDAwNkNENjAwRUY2RjI4IC8qIE9wZW5UeXBlVHlwZXMuaCBpbiBI
ZWFkZXJzICovLApAQCAtNDE2MTYsNyArNDE2MDIsNiBAQAogCQkJCTFBQkE3NkNBMTFEMjBFNTAw
MDRDMjAxQyAvKiBDU1NQcm9wZXJ0eU5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMjI4
MzAzMjNBODQ3MDcwMDM2NEI3RSAvKiBDdXJzb3JNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1
Q0JENTk1OTIyODBFOTI2MDAyQjIyQUEgLyogQ3VzdG9tSGVhZGVyRmllbGRzLmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCTA3RTRCREJGMkEzQTVGQUIwMDBENTUwOSAvKiBEaWN0YXRpb25DYXJldEFu
aW1hdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDRTZDQkZEMTg3RjM5NDkwMEQ0NkJGNSAv
KiBGb3JtYXRDb252ZXJ0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDY2N0VBM0UyOTY4RDlE
QTAwQkFCMUUyIC8qIEdhbWVDb250cm9sbGVySGFwdGljRWZmZWN0Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDZGRTczRDMyOTY4RTUyMDAwQjgwNjRDIC8qIEdhbWVDb250cm9sbGVySGFwdGljRW5n
aW5lcy5tbSBpbiBTb3VyY2VzICovLApAQCAtNDE2NzMsNyArNDE2NTgsNiBAQAogCQkJCTFBNTY5
RDE4MEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpjX3J1bnRpbWUubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkxQTU2OUQxQTBEN0UyQjgyMDA3QzM5ODMgLyogb2JqY191dGlsaXR5Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTE2OTgyNjAxMTM0NjM2QTAwODk0MTE1IC8qIE9iakNSdW50aW1lT2JqZWN0Lm1t
IGluIFNvdXJjZXMgKi8sCi0JCQkJMDdFNEJEQzMyQTNBNjE5MTAwMEQ1NTA5IC8qIE9wYWNpdHlD
YXJldEFuaW1hdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNFQTI4NDY2MjE0MUU4NDkwMEU0
MDdFOCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUFB
MTJERjQ5MTc0M0RGODMwMDREQUZERiAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ29jb2Eu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlDREEyOUEzMDFDQkY3NEQ0MDA5MDFDQ0YgLyogUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggYTQ3NzEyZGM4MjM1Li5jMzMxNmJkY2Zi
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0zMSw3
ICszMSw2IEBACiAjaW5jbHVkZSAiQ2hhcmFjdGVyRGF0YS5oIgogI2luY2x1ZGUgIkNvbG9yQmxl
bmRpbmcuaCIKICNpbmNsdWRlICJEZWxldGVTZWxlY3Rpb25Db21tYW5kLmgiCi0jaW5jbHVkZSAi
RGljdGF0aW9uQ2FyZXRBbmltYXRvci5oIgogI2luY2x1ZGUgIkRvY3VtZW50SW5saW5lcy5oIgog
I2luY2x1ZGUgIkVkaXRpbmcuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKQEAgLTYwLDcgKzU5LDYg
QEAKICNpbmNsdWRlICJMb2NhbEZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzLmgiCi0jaW5jbHVkZSAiT3BhY2l0eUNhcmV0
QW5pbWF0b3IuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUHNldWRvQ2xhc3NDaGFu
Z2VJbnZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJSYW5nZS5oIgpAQCAtMTYyLDI2ICsxNjAsMTUg
QEAgc3RhdGljIGlubGluZSBib29sIGlzUGFnZUFjdGl2ZShEb2N1bWVudCogZG9jdW1lbnQpCiAg
ICAgcmV0dXJuIGRvY3VtZW50ICYmIGRvY3VtZW50LT5wYWdlKCkgJiYgZG9jdW1lbnQtPnBhZ2Uo
KS0+Zm9jdXNDb250cm9sbGVyKCkuaXNBY3RpdmUoKTsKIH0KIAotc3RhdGljIFVuaXF1ZVJlZjxD
YXJldEFuaW1hdG9yPiBjcmVhdGVDYXJldEFuaW1hdG9yKEZyYW1lU2VsZWN0aW9uKiBmcmFtZVNl
bGVjdGlvbiwgc3RkOjpvcHRpb25hbDxDYXJldEFuaW1hdG9yVHlwZT4gb3B0aW9uYWxDYXJldFR5
cGUgPSBzdGQ6Om51bGxvcHQpCi17Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiBIQVZFKFJFREVTSUdO
RURfVEVYVF9DVVJTT1IpCi0gICAgaWYgKHJlZGVzaWduZWRUZXh0Q3Vyc29yRW5hYmxlZCgpKSB7
Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gZXhpc3RpbmdFeHBhbnNpb25SZWN0
ID0gc3RkOjpudWxsb3B0OwotICAgICAgICBpZiAob3B0aW9uYWxDYXJldFR5cGUpCi0gICAgICAg
ICAgICBleGlzdGluZ0V4cGFuc2lvblJlY3QgPSBmcmFtZVNlbGVjdGlvbi0+Y2FyZXRBbmltYXRv
cigpLmNhcmV0UmVwYWludFJlY3RGb3JMb2NhbFJlY3QoTGF5b3V0UmVjdCgpKTsKLQotICAgICAg
ICBzd2l0Y2ggKG9wdGlvbmFsQ2FyZXRUeXBlLnZhbHVlX29yKENhcmV0QW5pbWF0b3JUeXBlOjpE
ZWZhdWx0KSkgewotICAgICAgICBjYXNlIENhcmV0QW5pbWF0b3JUeXBlOjpEZWZhdWx0OgotICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8T3BhY2l0eUNhcmV0QW5pbWF0b3I+KCpmcmFt
ZVNlbGVjdGlvbiwgZXhpc3RpbmdFeHBhbnNpb25SZWN0KTsKLSAgICAgICAgY2FzZSBDYXJldEFu
aW1hdG9yVHlwZTo6QWx0ZXJuYXRlOgotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8
RGljdGF0aW9uQ2FyZXRBbmltYXRvcj4oKmZyYW1lU2VsZWN0aW9uKTsKLSAgICAgICAgfQotICAg
IH0KKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25z
L0ZyYW1lU2VsZWN0aW9uQWRkaXRpb25zLmNwcD4KICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG9w
dGlvbmFsQ2FyZXRUeXBlKTsKLSNlbmRpZgorCitzdGF0aWMgVW5pcXVlUmVmPENhcmV0QW5pbWF0
b3I+IGNyZWF0ZUNhcmV0QW5pbWF0b3IoRnJhbWVTZWxlY3Rpb24qIGZyYW1lU2VsZWN0aW9uLCBD
YXJldEFuaW1hdG9yVHlwZSA9IENhcmV0QW5pbWF0b3JUeXBlOjpEZWZhdWx0KQorewogICAgIHJl
dHVybiBtYWtlVW5pcXVlUmVmPFNpbXBsZUNhcmV0QW5pbWF0b3I+KCpmcmFtZVNlbGVjdGlvbik7
CiB9CisjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogRnJhbWVTZWxlY3Rpb246
OkZyYW1lU2VsZWN0aW9uKERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IG1fZG9jdW1lbnQoZG9j
dW1lbnQpCkBAIC0xOTgzLDExICsxOTcwLDYgQEAgRG9jdW1lbnQqIEZyYW1lU2VsZWN0aW9uOjpk
b2N1bWVudCgpCiAgICAgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7CiB9CiAKLU5vZGUqIEZyYW1l
U2VsZWN0aW9uOjpjYXJldE5vZGUoKQotewotICAgIHJldHVybiBzZWxlY3Rpb24oKS52aXNpYmxl
U3RhcnQoKS5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCk7Ci19Ci0KIGJvb2wgRnJh
bWVTZWxlY3Rpb246OmNvbnRhaW5zKGNvbnN0IExheW91dFBvaW50JiBwb2ludCkgY29uc3QKIHsK
ICAgICAvLyBUcmVhdCBhIGNvbGxhcHNlZCBzZWxlY3Rpb24gbGlrZSBubyBzZWxlY3Rpb24uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKaW5kZXggYzBhMWViMjRjOTZjLi42
OTA5OTUyZTk0MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKQEAg
LTMyMSw4ICszMjEsNiBAQCBwcml2YXRlOgogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgZmlu
YWw7CiAKLSAgICBOb2RlKiBjYXJldE5vZGUoKSBmaW5hbDsKLQogICAgIGJvb2wgZGlzcGF0Y2hT
ZWxlY3RTdGFydCgpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhcmV0QW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0NhcmV0QW5pbWF0b3IuaAppbmRleCAwYTIxMTc5MGE4MmUuLjIxYjBmNDNlMzRlOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FyZXRBbmltYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhcmV0QW5pbWF0b3IuaApAQCAtMjUsMTMgKzI1LDgg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkVs
ZW1lbnRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlJlZHVj
ZWRSZXNvbHV0aW9uU2Vjb25kcy5oIgotI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCi0jaW5jbHVk
ZSAiUmVuZGVyU3R5bGVJbmxpbmVzLmgiCi0jaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNs
dWRlICJUaW1lci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NSw3ICs0MCw2IEBAIGNs
YXNzIE5vZGU7CiBjbGFzcyBQYWdlOwogY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKIAotLy8gRklY
TUU6IFJlbmFtZSAiQWx0ZXJuYXRlIiB0byAiRGljdGF0aW9uIiAocmRhcjovLzExMDgwMjcyOSku
CiBlbnVtIGNsYXNzIENhcmV0QW5pbWF0b3JUeXBlIDogdWludDhfdCB7CiAgICAgRGVmYXVsdCwK
ICAgICBBbHRlcm5hdGUKQEAgLTU2LDM3ICs1MCw2IEBAIGVudW0gY2xhc3MgQ2FyZXRBbmltYXRv
clN0b3BSZWFzb24gOiB1aW50OF90IHsKICAgICBDYXJldFJlY3RDaGFuZ2VkLAogfTsKIAotI2lm
IEhBVkUoUkVERVNJR05FRF9URVhUX0NVUlNPUikKLQotLy8gRklYTUU6IFVzZSBNb25vdG9uaWNU
aW1lIHR5cGUgdGhyb3VnaG91dCBpbnN0ZWFkIG9mIGNvbnZlcnRpbmcgdG8gU2Vjb25kcyAocmRh
cjovLzExMDgwMjcyOSkKLVtbbWF5YmVfdW51c2VkXV0gc3RhdGljIFNlY29uZHMgY3VycmVudFRp
bWVTaW5jZUVwb2NoKCkKLXsKLSAgICByZXR1cm4gTW9ub3RvbmljVGltZTo6bm93KCkuc2Vjb25k
c1NpbmNlRXBvY2goKTsKLX0KLQotLy8gRklYTUU6IE1vdmUgdG8gRnJhbWVTZWxlY3Rpb24gKHJk
YXI6Ly8xMTA4MDI3MjkpCi1bW21heWJlX3VudXNlZF1dIHN0YXRpYyBDb2xvciBwbGF0Zm9ybUNh
cmV0Q29sb3IoY29uc3QgUmVuZGVyU3R5bGUmIGVsZW1lbnRTdHlsZSwgY29uc3QgTm9kZSogbm9k
ZSkKLXsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKGVsZW1lbnRTdHlsZS5oYXNBdXRvQ2Fy
ZXRDb2xvcigpKSB7Ci0gICAgICAgIGF1dG8gc3R5bGVDb2xvck9wdGlvbnMgPSBub2RlLT5kb2N1
bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKCZlbGVtZW50U3R5bGUpOwotICAgICAgICByZXR1cm4g
UmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLnN5c3RlbUNvbG9yKENTU1ZhbHVlQXBwbGVTeXN0ZW1D
b250cm9sQWNjZW50LCBzdHlsZUNvbG9yT3B0aW9ucyB8IFN0eWxlQ29sb3JPcHRpb25zOjpVc2VT
eXN0ZW1BcHBlYXJhbmNlKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZWxlbWVudFN0eWxlLmNvbG9y
UmVzb2x2aW5nQ3VycmVudENvbG9yKGVsZW1lbnRTdHlsZS5jYXJldENvbG9yKCkpOwotI2Vsc2UK
LSAgICBVTlVTRURfUEFSQU0obm9kZSk7Ci0gICAgcmV0dXJuIGVsZW1lbnRTdHlsZS52aXNpdGVk
RGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlDYXJldENvbG9yKTsKLSNl
bmRpZgotfQotCi1zdHJ1Y3QgS2V5RnJhbWUgewotICAgIFNlY29uZHMgdGltZTsKLSAgICBmbG9h
dCB2YWx1ZTsKLX07Ci0KLSNlbmRpZgotCiBjbGFzcyBDYXJldEFuaW1hdGlvbkNsaWVudCB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+Q2FyZXRBbmltYXRpb25DbGllbnQoKSA9IGRlZmF1bHQ7CkBA
IC05NSw4ICs1OCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFJlY3QgbG9jYWxDYXJl
dFJlY3QoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIERvY3VtZW50KiBkb2N1bWVudCgpID0g
MDsKLQotICAgIHZpcnR1YWwgTm9kZSogY2FyZXROb2RlKCkgPSAwOwogfTsKIAogY2xhc3MgQ2Fy
ZXRBbmltYXRvciB7CkBAIC0xMjksOCArOTAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHNldFZpc2libGUoYm9vbCkgPSAwOwogCiAgICAgUHJlc2VudGF0aW9uUHJvcGVydGllcyBwcmVz
ZW50YXRpb25Qcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9wcmVzZW50YXRpb25Qcm9wZXJ0
aWVzOyB9Ci0gICAgLy8gRklYTUU6IFRoZSBjYXJldCBhbmltYXRvcnMgc2hvdWxkIG5vdCBiZSB0
aGUgdGhpbmdzIHBhaW50aW5nIHRoZSBjYXJldC4KLSAgICAvLyBSZW1vdmUgdGhpcyBtZXRob2Qg
YW5kIGluc3N0ZWFkIGF1Z21lbnQgUHJlc2VudGF0aW9uUHJvcGVydGllcyAocmRhcjovLzExMDgw
MjcyOSkuCiAgICAgdmlydHVhbCB2b2lkIHBhaW50KGNvbnN0IE5vZGUmLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIGNvbnN0IExheW91dFBvaW50Jiwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiYpIGNvbnN0OwogICAgIHZpcnR1
YWwgTGF5b3V0UmVjdCBjYXJldFJlcGFpbnRSZWN0Rm9yTG9jYWxSZWN0KExheW91dFJlY3QpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EaWN0YXRpb25DYXJl
dEFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RpY3RhdGlvbkNhcmV0QW5p
bWF0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTNjOWI1YWZlY2IuLjAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EaWN0YXRpb25DYXJldEFu
aW1hdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM2NCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDIyLTIwMjMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiRGljdGF0aW9uQ2FyZXRBbmltYXRvci5oIgotCi0jaWYgSEFWRShSRURFU0lH
TkVEX1RFWFRfQ1VSU09SKQotCi0jaW5jbHVkZSAiRWRpdGluZy5oIgotI2luY2x1ZGUgIkZsb2F0
Um91bmRlZFJlY3QuaCIKLSNpbmNsdWRlICJQYXRoLmgiCi0jaW5jbHVkZSAiUmVuZGVyQmxvY2su
aCIKLSNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZGljYXRpb25DYXJldEFuaW1hdG9yVXBkYXRlUmF0
ZSA9IDYwOwotCi1zdGF0aWMgY29uc3RleHByIEtleUZyYW1lIGtleWZyYW1lKHNpemVfdCBpKQot
ewotICAgIGkgJT0gZGljYXRpb25DYXJldEFuaW1hdG9yVXBkYXRlUmF0ZTsKLSAgICBjb25zdGV4
cHIgZmxvYXQgaW52ZXJzZUZyYW1lUmF0ZSA9IDEuZiAvIHN0YXRpY19jYXN0PGZsb2F0PihkaWNh
dGlvbkNhcmV0QW5pbWF0b3JVcGRhdGVSYXRlKTsKLSAgICByZXR1cm4gS2V5RnJhbWUgeyBTZWNv
bmRzKGkgKiBpbnZlcnNlRnJhbWVSYXRlKSwgZmFicyhzaW5mKHN0YXRpY19jYXN0PGZsb2F0PihN
X1BJICogaSAqIGludmVyc2VGcmFtZVJhdGUpKSkgfTsKLX0KLQotY29uc3RleHByIGF1dG8gdGFp
bEJsdXJSYWRpdXMoZmxvYXQgY3Vyc29ySGVpZ2h0KQotewotICAgIHJldHVybiAoMTAuZiAqIGN1
cnNvckhlaWdodCkgLyAxMi5mOwotfQotY29uc3RleHByIGF1dG8gY2FyZXRCbHVyUmFkaXVzKGZs
b2F0IGN1cnNvckhlaWdodCkKLXsKLSAgICByZXR1cm4gKDguZiAqIGN1cnNvckhlaWdodCkgLyAx
Mi5mOwotfQotCi1jb25zdGV4cHIgYXV0byBjb25lU3RhcnQoZmxvYXQgY3Vyc29ySGVpZ2h0KQot
ewotICAgIHJldHVybiAoNC5mICogY3Vyc29ySGVpZ2h0KSAvIDM4LmY7Ci19Ci0KLWNvbnN0ZXhw
ciBhdXRvIGNvbmVFbmQoZmxvYXQgY3Vyc29ySGVpZ2h0KQotewotICAgIHJldHVybiAoMTUyLmYg
KiBjdXJzb3JIZWlnaHQpIC8gMzguZjsKLX0KLQotc2l6ZV90IERpY3RhdGlvbkNhcmV0QW5pbWF0
b3I6OmtleWZyYW1lQ291bnQoKSBjb25zdAotewotICAgIHJldHVybiAyICogZGljYXRpb25DYXJl
dEFuaW1hdG9yVXBkYXRlUmF0ZTsKLX0KLQotRGljdGF0aW9uQ2FyZXRBbmltYXRvcjo6RGljdGF0
aW9uQ2FyZXRBbmltYXRvcihDYXJldEFuaW1hdGlvbkNsaWVudCYgY2xpZW50KQotICAgIDogQ2Fy
ZXRBbmltYXRvcihjbGllbnQpCi17Ci19Ci0KLVNlY29uZHMgRGljdGF0aW9uQ2FyZXRBbmltYXRv
cjo6a2V5ZnJhbWVUaW1lRGVsdGEoKSBjb25zdAotewotICAgIHJldHVybiBTZWNvbmRzKDEuZiAv
IHN0YXRpY19jYXN0PGZsb2F0PihkaWNhdGlvbkNhcmV0QW5pbWF0b3JVcGRhdGVSYXRlKSk7Ci19
Ci0KLXZvaWQgRGljdGF0aW9uQ2FyZXRBbmltYXRvcjo6c2V0QmxpbmtpbmdTdXNwZW5kZWQoYm9v
bCBzdXNwZW5kZWQpCi17Ci0gICAgaWYgKHN1c3BlbmRlZCA9PSBpc0JsaW5raW5nU3VzcGVuZGVk
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghc3VzcGVuZGVkKSB7Ci0gICAgICAgIG1f
Y3VycmVudEtleWZyYW1lSW5kZXggPSAxOwotICAgICAgICBtX2JsaW5rVGltZXIuc3RhcnRPbmVT
aG90KGtleWZyYW1lVGltZURlbHRhKCkpOwotICAgICAgICByZXNldEdsb3dUYWlsKG1fY2xpZW50
LmxvY2FsQ2FyZXRSZWN0KCkpOwotICAgIH0KLQotICAgIENhcmV0QW5pbWF0b3I6OnNldEJsaW5r
aW5nU3VzcGVuZGVkKHN1c3BlbmRlZCk7Ci19Ci0KLUZsb2F0UmVjdCBEaWN0YXRpb25DYXJldEFu
aW1hdG9yOjpjb21wdXRlVGFpbFJlY3QoKSBjb25zdAotewotICAgIGF1dG8gY2FyZXRYID0gbV9s
b2NhbENhcmV0UmVjdC54KCk7Ci0gICAgYXV0byBjdXJzb3JIZWlnaHQgPSBtX2xvY2FsQ2FyZXRS
ZWN0LmhlaWdodCgpOwotCi0gICAgcmV0dXJuIHsgc3RkOjptaW4obV9nbG93U3RhcnQsIGNhcmV0
WCksIG1fbG9jYWxDYXJldFJlY3QueSgpLCBmYWJzKGNhcmV0WCAtIG1fZ2xvd1N0YXJ0KSwgY3Vy
c29ySGVpZ2h0IH07Ci19Ci0KLWludCBEaWN0YXRpb25DYXJldEFuaW1hdG9yOjpjb21wdXRlU2Ny
b2xsTGVmdCgpIGNvbnN0Ci17Ci0gICAgYXV0byBkb2N1bWVudCA9IG1fY2xpZW50LmRvY3VtZW50
KCk7Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoYXV0
byogY2FyZXROb2RlID0gbV9jbGllbnQuY2FyZXROb2RlKCkpIHsKLSAgICAgICAgaWYgKGF1dG8q
IHJlbmRlcmVyRm9yQ2FyZXQgPSByZW5kZXJlckZvckNhcmV0UGFpbnRpbmcoY2FyZXROb2RlKSkK
LSAgICAgICAgICAgIHJldHVybiByZW5kZXJlckZvckNhcmV0LT5zY3JvbGxMZWZ0KCk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgRGljdGF0aW9uQ2FyZXRBbmltYXRvcjo6dXBk
YXRlR2xvd1RhaWwoU2Vjb25kcyBlbGFwc2VkVGltZSkKLXsKLSAgICBhdXRvIGRvY3VtZW50ID0g
bV9jbGllbnQuZG9jdW1lbnQoKTsKLSAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX3ByZXZpb3VzVGFpbFJlY3QgPSBjb21wdXRlVGFpbFJlY3QoKTsKLQotICAgIGF1
dG8gcHJldmlvdXNTY3JvbGxMZWZ0ID0gbV9zY3JvbGxMZWZ0OwotICAgIG1fc2Nyb2xsTGVmdCA9
IGNvbXB1dGVTY3JvbGxMZWZ0KCk7Ci0gICAgYXV0byBkZWx0YVNjcm9sbExlZnQgPSBtX3Njcm9s
bExlZnQgLSBwcmV2aW91c1Njcm9sbExlZnQ7Ci0gICAgbV9nbG93U3RhcnQgLT0gZGVsdGFTY3Jv
bGxMZWZ0OwotCi0gICAgYXV0byBjYXJldFJlY3QgPSBtX2NsaWVudC5sb2NhbENhcmV0UmVjdCgp
OwotCi0gICAgZmxvYXQgY2FyZXRQb3NpdGlvbiA9IGNhcmV0UmVjdC54KCk7Ci0gICAgaWYgKGNh
cmV0UmVjdC55KCkgIT0gbV9sb2NhbENhcmV0UmVjdC55KCkpCi0gICAgICAgIHJlc2V0R2xvd1Rh
aWwoY2FyZXRSZWN0KTsKLQotICAgIG1fbG9jYWxDYXJldFJlY3QgPSBjYXJldFJlY3Q7Ci0KLSAg
ICBpZiAoY2FyZXRQb3NpdGlvbiAhPSBtX2dsb3dTdGFydCkKLSAgICAgICAgdXBkYXRlR2xvd1Rh
aWwoY2FyZXRQb3NpdGlvbiwgZWxhcHNlZFRpbWUpOwotICAgIGVsc2UKLSAgICAgICAgcmVzZXRH
bG93VGFpbChjYXJldFJlY3QpOwotCi0gICAgbV90YWlsUmVjdCA9IGNvbXB1dGVUYWlsUmVjdCgp
OwotfQotCi12b2lkIERpY3RhdGlvbkNhcmV0QW5pbWF0b3I6OnVwZGF0ZUFuaW1hdGlvblByb3Bl
cnRpZXMoUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzKQotewotICAgIGF1dG8gY3VycmVudFRpbWUg
PSBjdXJyZW50VGltZVNpbmNlRXBvY2goKTsKLSAgICBhdXRvIGVsYXBzZWRUaW1lID0gY3VycmVu
dFRpbWUgLSBtX2xhc3RVcGRhdGVUaW1lOwotICAgIGlmIChlbGFwc2VkVGltZSA+PSBrZXlmcmFt
ZVRpbWVEZWx0YSgpKSB7Ci0gICAgICAgIHNldE9wYWNpdHkoa2V5ZnJhbWUobV9jdXJyZW50S2V5
ZnJhbWVJbmRleCkudmFsdWUpOwotICAgICAgICBtX2xhc3RVcGRhdGVUaW1lID0gY3VycmVudFRp
bWU7Ci0KLSAgICAgICAgaWYgKG1fY3VycmVudEtleWZyYW1lSW5kZXggPj0ga2V5ZnJhbWVDb3Vu
dCgpIC0gMSkKLSAgICAgICAgICAgIG1fY3VycmVudEtleWZyYW1lSW5kZXggPSAwOwotCi0gICAg
ICAgIG1fY3VycmVudEtleWZyYW1lSW5kZXgrKzsKLSAgICAgICAgdXBkYXRlR2xvd1RhaWwoZWxh
cHNlZFRpbWUpOwotICAgICAgICBjb25zdGV4cHIgYXV0byBzY2FsZUFuaW1hdGlvblNwZWVkID0g
Mi5mOwotICAgICAgICBtX2luaXRpYWxTY2FsZSA9IHN0ZDo6bWF4KDAuZiwgbV9pbml0aWFsU2Nh
bGUgLSBzY2FsZUFuaW1hdGlvblNwZWVkICogc3RhdGljX2Nhc3Q8ZmxvYXQ+KGVsYXBzZWRUaW1l
LnZhbHVlKCkpKTsKLQotICAgICAgICBtX2JsaW5rVGltZXIuc3RhcnRPbmVTaG90KGtleWZyYW1l
VGltZURlbHRhKCkpOwotICAgIH0KLX0KLQotdm9pZCBEaWN0YXRpb25DYXJldEFuaW1hdG9yOjpz
dGFydChSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMpCi17Ci0gICAgLy8gVGhlIGRlZmF1bHQvc3Rh
cnQgdmFsdWUgb2YgYG1fY3VycmVudEtleWZyYW1lSW5kZXhgIHNob3VsZCBiZSBgMWAgc2luY2Ug
dGhlIGtleWZyYW1lCi0gICAgLy8gZGVsdGEgaXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBgbV9j
dXJyZW50S2V5ZnJhbWVJbmRleGAgYW5kIGBtX2N1cnJlbnRLZXlmcmFtZUluZGV4IC0gMWAKLSAg
ICBtX2N1cnJlbnRLZXlmcmFtZUluZGV4ID0gMTsKLSAgICBtX2xhc3RVcGRhdGVUaW1lID0gY3Vy
cmVudFRpbWVTaW5jZUVwb2NoKCk7Ci0gICAgbV9pbml0aWFsU2NhbGUgPSBNX1BJXzI7Ci0gICAg
ZGlkU3RhcnQobV9sYXN0VXBkYXRlVGltZSwga2V5ZnJhbWVUaW1lRGVsdGEoKSk7Ci0KLSAgICBy
ZXNldEdsb3dUYWlsKG1fY2xpZW50LmxvY2FsQ2FyZXRSZWN0KCkpOwotICAgIG1fcHJldmlvdXNU
YWlsUmVjdCA9IGNvbXB1dGVUYWlsUmVjdCgpOwotfQotCi1TdHJpbmcgRGljdGF0aW9uQ2FyZXRB
bmltYXRvcjo6ZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0Ci17Ci0gICAgVGV4dFN0cmVhbSB0ZXh0
U3RyZWFtOwotICAgIHRleHRTdHJlYW0gPDwgIkRpY3RhdGlvbkNhcmV0QW5pbWF0b3IgIiA8PCB0
aGlzIDw8ICIgZ2xvd1N0YXJ0ICIgPDwgbV9nbG93U3RhcnQgPDwgIiBnbG93RW5kID0gIiA8PCBt
X2xvY2FsQ2FyZXRSZWN0LngoKTsKLSAgICByZXR1cm4gdGV4dFN0cmVhbS5yZWxlYXNlKCk7Ci19
Ci0KLXZvaWQgRGljdGF0aW9uQ2FyZXRBbmltYXRvcjo6dXBkYXRlR2xvd1RhaWwoZmxvYXQgY2Fy
ZXRQb3NpdGlvbiwgU2Vjb25kcyBlbGFwc2VkU2Vjb25kcykKLXsKLSAgICBhdXRvIGRpc3RhbmNl
RnJvbVByZXZpb3VzID0gY2FyZXRQb3NpdGlvbiAtIG1fZ2xvd1N0YXJ0OwotCi0gICAgYXV0byBl
bGFwc2VkVGltZSA9IHN0YXRpY19jYXN0PGZsb2F0PihlbGFwc2VkU2Vjb25kcy52YWx1ZSgpKTsK
LQotICAgIGNvbnN0ZXhwciBhdXRvIGVhc2VJbk11bHRpcGxpZXIgPSAuMTJmOwotICAgIGNvbnN0
ZXhwciBhdXRvIG1heEFuaW1hdGlvblNwZWVkID0gLjJmOwotICAgIGNvbnN0ZXhwciBhdXRvIG1p
bmltdW1WZWxvY2l0eU11bHRpcGxpZXIgPSAxLjBmOwotICAgIGNvbnN0ZXhwciBhdXRvIGFjY2Vs
ZXJhdGlvbiA9IC4xZjsKLSAgICBtX2FuaW1hdGlvblNwZWVkID0gc3RkOjptaW4obWF4QW5pbWF0
aW9uU3BlZWQsIG1fYW5pbWF0aW9uU3BlZWQgKyBhY2NlbGVyYXRpb24gKiBlbGFwc2VkVGltZSk7
Ci0gICAgYXV0byBkaXJlY3Rpb24gPSBkaXN0YW5jZUZyb21QcmV2aW91cyA+IDAuZiA/IDEuZiA6
IC0xLmY7Ci0gICAgZGlzdGFuY2VGcm9tUHJldmlvdXMgKj0gZGlyZWN0aW9uOwotICAgIGlmIChk
aXN0YW5jZUZyb21QcmV2aW91cyA+IDApIHsKLSAgICAgICAgaWYgKGVsYXBzZWRUaW1lIDw9IDAp
Ci0gICAgICAgICAgICBtX2dsb3dTdGFydCA9IGNhcmV0UG9zaXRpb247Ci0gICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgbV9nbG93U3RhcnQgKz0gZGlyZWN0aW9uICogc3RkOjptYXgoMS5mLCBl
bGFwc2VkVGltZSAqIG1fYW5pbWF0aW9uU3BlZWQgKiBzdGQ6Om1heChtaW5pbXVtVmVsb2NpdHlN
dWx0aXBsaWVyLCBkaXN0YW5jZUZyb21QcmV2aW91cyAqIGRpc3RhbmNlRnJvbVByZXZpb3VzICog
ZWFzZUluTXVsdGlwbGllcikpOwotICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiAqIChtX2dsb3dT
dGFydCAtIGNhcmV0UG9zaXRpb24pID4gMCkKLSAgICAgICAgICAgICAgICBtX2dsb3dTdGFydCA9
IGNhcmV0UG9zaXRpb247Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgRGljdGF0aW9uQ2Fy
ZXRBbmltYXRvcjo6cmVzZXRHbG93VGFpbChGbG9hdFJlY3QgbG9jYWxDYXJldFJlY3QpCi17Ci0g
ICAgbV9hbmltYXRpb25TcGVlZCA9IDA7Ci0gICAgbV9nbG93U3RhcnQgPSBsb2NhbENhcmV0UmVj
dC54KCk7Ci0gICAgbV9sb2NhbENhcmV0UmVjdCA9IGxvY2FsQ2FyZXRSZWN0OwotICAgIG1fdGFp
bFJlY3QgPSBjb21wdXRlVGFpbFJlY3QoKTsKLQotICAgIG1fc2Nyb2xsTGVmdCA9IGNvbXB1dGVT
Y3JvbGxMZWZ0KCk7Ci19Ci0KLUZsb2F0UmVjdCBEaWN0YXRpb25DYXJldEFuaW1hdG9yOjp0YWls
UmVjdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdGFpbFJlY3Q7Ci19Ci0KLVBhdGggRGljdGF0
aW9uQ2FyZXRBbmltYXRvcjo6bWFrZURpY3RhdGlvblRhaWxDb25lUGF0aChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpIGNvbnN0Ci17Ci0gICAgY29uc3QgYXV0byB3aWR0aCA9IHJlY3Qud2lkdGgoKTsK
LSAgICBjb25zdCBhdXRvIGhlaWdodCA9IHJlY3QuaGVpZ2h0KCk7Ci0gICAgY29uc3QgZmxvYXQg
bWluaW11bVRhaWxXaWR0aCA9IGNvbmVTdGFydChoZWlnaHQpOwotICAgIGNvbnN0IGF1dG8gbm9u
VHJ1bmNhdGVkVGFpbFdpZHRoID0gY29uZUVuZChoZWlnaHQpOwotICAgIGNvbnN0IGF1dG8gY29u
ZVJlY3RhbmdsZU1vcnBoQ29uc3RhbnQgPSAod2lkdGggLSBtaW5pbXVtVGFpbFdpZHRoKSAvIChu
b25UcnVuY2F0ZWRUYWlsV2lkdGggLSBtaW5pbXVtVGFpbFdpZHRoKTsKLSAgICBhdXRvIHZlcnRp
Y2FsT2Zmc2V0ID0gLWhlaWdodCAqIC4zZiArIGhlaWdodCAqIDAuNWYgKiBzdGQ6Om1pbigxLmYs
IHN0ZDo6bWF4KDAuZiwgY29uZVJlY3RhbmdsZU1vcnBoQ29uc3RhbnQpKTsKLSAgICBib29sIGlz
TFRSID0gaXNMZWZ0VG9SaWdodExheW91dCgpOwotCi0gICAgY29uc3QgYXV0byB2ZXJ0aWNhbE9m
ZnNldExUUiA9IGlzTFRSID8gdmVydGljYWxPZmZzZXQgOiAwLmY7Ci0gICAgY29uc3QgYXV0byB2
ZXJ0aWNhbE9mZnNldFJUTCA9IGlzTFRSID8gMC5mIDogdmVydGljYWxPZmZzZXQ7Ci0KLSAgICBy
ZXR1cm4gUGF0aDo6cG9seWdvblBhdGhGcm9tUG9pbnRzKHsKLSAgICAgICAgeyByZWN0LngoKSwg
cmVjdC55KCkgKyB2ZXJ0aWNhbE9mZnNldExUUiB9LAotICAgICAgICB7IHJlY3QueCgpLCByZWN0
Lm1heFkoKSAtIHZlcnRpY2FsT2Zmc2V0TFRSIH0sCi0gICAgICAgIHsgcmVjdC5tYXhYKCksIHJl
Y3QubWF4WSgpIC0gdmVydGljYWxPZmZzZXRSVEwgfSwKLSAgICAgICAgeyByZWN0Lm1heFgoKSwg
cmVjdC55KCkgKyB2ZXJ0aWNhbE9mZnNldFJUTCB9Ci0gICAgfSk7Ci19Ci0KLXZvaWQgRGljdGF0
aW9uQ2FyZXRBbmltYXRvcjo6ZmlsbENhcmV0VGFpbChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgQ29sb3ImIHRhaWxDb2xvcikgY29uc3QKLXsK
LSAgICBBU1NFUlQoIXJlY3QuaXNaZXJvKCkpOwotCi0gICAgZmxvYXQgaGVpZ2h0ID0gcmVjdC5o
ZWlnaHQoKTsKLSAgICBmbG9hdCB3aWR0aCA9IHJlY3Qud2lkdGgoKTsKLSAgICBmbG9hdCBtaWRZ
ID0gcmVjdC55KCkgKyAwLjVmICogaGVpZ2h0OwotCi0gICAgYXV0byBncmFkaWVudCA9IEdyYWRp
ZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCBt
aWRZKSwgRmxvYXRQb2ludChyZWN0LngoKSArIHdpZHRoLCBtaWRZKSB9LCB7IENvbG9ySW50ZXJw
b2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVs
dGlwbGllZCB9KTsKLSAgICBjb25zdGV4cHIgYXV0byBnbG93T3BhY2l0eSA9IC43NWY7Ci0gICAg
Ym9vbCBpc0xUUiA9IGlzTGVmdFRvUmlnaHRMYXlvdXQoKTsKLSAgICBncmFkaWVudC0+YWRkQ29s
b3JTdG9wKHsgaXNMVFIgPyAwLmYgOiAxLmYsIHRhaWxDb2xvci5jb2xvcldpdGhBbHBoYSgwLjFm
ICogZ2xvd09wYWNpdHkpIH0pOwotICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyBpc0xUUiA/
IDEuZiA6IDAuZiwgdGFpbENvbG9yLmNvbG9yV2l0aEFscGhhKDAuMzVmICogZ2xvd09wYWNpdHkp
IH0pOwotICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjUzMTM5IC0gdGhpcyBzaG91bGQgYmUgY29tcHV0ZWQgYmFzZWQgb24gdGhlIHJlbmRlciBh
cmVhCi0gICAgY29uc3RleHByIGF1dG8gc2hhZG93T2Zmc2V0ID0gMTAwMDAuZjsKLSAgICBEcm9w
U2hhZG93IGRyb3BTaGFkb3cgPSB7Ci0gICAgICAgIC5vZmZzZXQgPSBGbG9hdFNpemUoc2hhZG93
T2Zmc2V0LCBzaGFkb3dPZmZzZXQpLAotICAgICAgICAuYmx1clJhZGl1cyA9IHRhaWxCbHVyUmFk
aXVzKHJlY3QuaGVpZ2h0KCkpLAotICAgICAgICAuY29sb3IgPSB0YWlsQ29sb3IuY29sb3JXaXRo
QWxwaGEoZ2xvd09wYWNpdHkpLAotICAgICAgICAucmFkaXVzTW9kZSA9IFNoYWRvd1JhZGl1c01v
ZGU6OkRlZmF1bHQsCi0gICAgfTsKLSAgICBjb250ZXh0LnNldERyb3BTaGFkb3coZHJvcFNoYWRv
dyk7Ci0gICAgY29udGV4dC50cmFuc2xhdGUoLWRyb3BTaGFkb3cub2Zmc2V0KTsKLSAgICBjb250
ZXh0LnNldEZpbGxHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSk7Ci0gICAgY29udGV4dC5maWxs
UGF0aChtYWtlRGljdGF0aW9uVGFpbENvbmVQYXRoKHJlY3QpKTsKLX0KLQotRmxvYXRSb3VuZGVk
UmVjdCBEaWN0YXRpb25DYXJldEFuaW1hdG9yOjpleHBhbmRlZENhcmV0UmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGJvb2wgZmlsbFRhaWwpIGNvbnN0Ci17Ci0gICAgaWYgKG1faW5pdGlhbFNj
YWxlIDw9IDAuZiAmJiBmaWxsVGFpbCkKLSAgICAgICAgcmV0dXJuIEZsb2F0Um91bmRlZFJlY3Qg
eyByZWN0LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSB7IDEuZiB9IH07Ci0KLSAgICBhdXRvIGV4
dHJhU2NhbGVGYWN0b3IgPSAxLmY7Ci0gICAgYXV0byBwdWxzZUV4cGFuc2lvbiA9IDEuZjsKLSAg
ICBpZiAobV9pbml0aWFsU2NhbGUgPiAwLmYpCi0gICAgICAgIGV4dHJhU2NhbGVGYWN0b3IgPSAx
LmYgKyBzaW5mKDIuZiAqIG1faW5pdGlhbFNjYWxlKTsKLSAgICBlbHNlCi0gICAgICAgIHB1bHNl
RXhwYW5zaW9uID0gMC43NWYgKiBtX3ByZXNlbnRhdGlvblByb3BlcnRpZXMub3BhY2l0eSAqIGV4
dHJhU2NhbGVGYWN0b3I7Ci0KLSAgICBmbG9hdCBob3Jpem9udGFsUHVsc2VFeHBhbnNpb24gPSAw
LjVmICogcHVsc2VFeHBhbnNpb247Ci0gICAgZmxvYXQgdmVydGljYWxQdWxzZUV4cGFuc2lvbiA9
IHB1bHNlRXhwYW5zaW9uICogKDEuZiArIDMuZiAqIChleHRyYVNjYWxlRmFjdG9yIC0gMS5mKSkg
LSAxLmY7Ci0gICAgRmxvYXRSZWN0IGV4cGFuZGVkUmVjdCA9IHJlY3Q7Ci0gICAgZXhwYW5kZWRS
ZWN0LmV4cGFuZChGbG9hdEJveEV4dGVudCB7IHZlcnRpY2FsUHVsc2VFeHBhbnNpb24sIGhvcml6
b250YWxQdWxzZUV4cGFuc2lvbiwgdmVydGljYWxQdWxzZUV4cGFuc2lvbiwgaG9yaXpvbnRhbFB1
bHNlRXhwYW5zaW9uIH0pOwotICAgIHJldHVybiBGbG9hdFJvdW5kZWRSZWN0IHsgZXhwYW5kZWRS
ZWN0LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSgxLmYgKyBzdGQ6Om1heCgwLmYsIC41ZiAqIGhv
cml6b250YWxQdWxzZUV4cGFuc2lvbiksIDEuZiArIHN0ZDo6bWF4KDAuZiwgLjVmICogaG9yaXpv
bnRhbFB1bHNlRXhwYW5zaW9uKSkgfTsKLX0KLQotdm9pZCBEaWN0YXRpb25DYXJldEFuaW1hdG9y
OjpwYWludChjb25zdCBOb2RlJiBub2RlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIG9sZENhcmV0Q29sb3IsIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnNldCwgY29uc3Qgc3RkOjpvcHRpb25hbDxWaXNpYmxlU2VsZWN0aW9u
PiYgc2VsZWN0aW9uKSBjb25zdAotewotICAgIGF1dG8gdGFpbFJlY3QgPSBjb21wdXRlVGFpbFJl
Y3QoKTsKLSAgICBib29sIGJsaW5raW5nU3VzcGVuZGVkID0gaXNCbGlua2luZ1N1c3BlbmRlZCgp
OwotICAgIGJvb2wgZmlsbFRhaWwgPSAhYmxpbmtpbmdTdXNwZW5kZWQgJiYgdGFpbFJlY3Qud2lk
dGgoKSA+IDAuZjsKLQotICAgIGF1dG8gY2FyZXRDb2xvciA9IFsmXSB7Ci0gICAgICAgIGlmICgh
c2VsZWN0aW9uKSB7Ci0gICAgICAgICAgICBhdXRvKiBlbGVtZW50ID0gaXM8RWxlbWVudD4obm9k
ZSkgPyBkb3duY2FzdDxFbGVtZW50Pigmbm9kZSkgOiBub2RlLnBhcmVudEVsZW1lbnQoKTsKLSAg
ICAgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQtPnJlbmRlcmVyKCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHBsYXRmb3JtQ2FyZXRDb2xvcihlbGVtZW50LT5yZW5kZXJlcigpLT5zdHls
ZSgpLCAmbm9kZSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBvbGRDYXJldENvbG9yOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKFJlZlB0ciBlZGl0YWJsZVJvb3QgPSBzZWxlY3Rpb24tPnJvb3RF
ZGl0YWJsZUVsZW1lbnQoKTsgZWRpdGFibGVSb290ICYmIGVkaXRhYmxlUm9vdC0+cmVuZGVyZXIo
KSkKLSAgICAgICAgICAgIHJldHVybiBwbGF0Zm9ybUNhcmV0Q29sb3IoZWRpdGFibGVSb290LT5y
ZW5kZXJlcigpLT5zdHlsZSgpLCAmbm9kZSk7Ci0KLSAgICAgICAgcmV0dXJuIG9sZENhcmV0Q29s
b3I7Ci0gICAgfSgpOwotCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KGNvbnRleHQpOwotICAgIGNvbnRleHQucmVzZXRDbGlwKCk7Ci0gICAgY29uc3QgYXV0byB0YXJn
ZXRPcGFjaXR5ID0gKGZpbGxUYWlsID8gMS4wIDogbV9wcmVzZW50YXRpb25Qcm9wZXJ0aWVzLm9w
YWNpdHkpIC0gbV9pbml0aWFsU2NhbGU7Ci0gICAgaWYgKHRhcmdldE9wYWNpdHkgPiAwICYmICFi
bGlua2luZ1N1c3BlbmRlZCkgewotICAgICAgICBjb250ZXh0LnNldERyb3BTaGFkb3coewotICAg
ICAgICAgICAgLm9mZnNldCA9IHsgfSwKLSAgICAgICAgICAgIC5ibHVyUmFkaXVzID0gY2FyZXRC
bHVyUmFkaXVzKHJlY3QuaGVpZ2h0KCkpLAotICAgICAgICAgICAgLmNvbG9yID0gY2FyZXRDb2xv
ci5jb2xvcldpdGhBbHBoYSh0YXJnZXRPcGFjaXR5KSwKLSAgICAgICAgICAgIC5yYWRpdXNNb2Rl
ID0gU2hhZG93UmFkaXVzTW9kZTo6RGVmYXVsdCwKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAg
Y29udGV4dC5maWxsUm91bmRlZFJlY3QoZXhwYW5kZWRDYXJldFJlY3QocmVjdCwgZmlsbFRhaWwp
LCBjYXJldENvbG9yKTsKLQotICAgIGlmIChmaWxsVGFpbCkgewotICAgICAgICB0YWlsUmVjdC5t
b3ZlQnkocGFpbnRPZmZzZXQpOwotICAgICAgICBmaWxsQ2FyZXRUYWlsKHRhaWxSZWN0LCBjb250
ZXh0LCBjYXJldENvbG9yKTsKLSAgICB9Ci19Ci0KLWJvb2wgRGljdGF0aW9uQ2FyZXRBbmltYXRv
cjo6aXNMZWZ0VG9SaWdodExheW91dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZ2xvd1N0YXJ0
IDw9IG1fbG9jYWxDYXJldFJlY3QueCgpOwotfQotCi1MYXlvdXRSZWN0IERpY3RhdGlvbkNhcmV0
QW5pbWF0b3I6OmNhcmV0UmVwYWludFJlY3RGb3JMb2NhbFJlY3QoTGF5b3V0UmVjdCByZXBhaW50
UmVjdCkgY29uc3QKLXsKLSAgICBhdXRvIHRhaWxSZWN0ID0gdW5pb25SZWN0KHRoaXMtPnRhaWxS
ZWN0KCksIG1fcHJldmlvdXNUYWlsUmVjdCk7Ci0gICAgdGFpbFJlY3QgPSBleHBhbmRlZENhcmV0
UmVjdCh0YWlsUmVjdCwgIWlzQmxpbmtpbmdTdXNwZW5kZWQoKSAmJiB0YWlsUmVjdC53aWR0aCgp
ID4gMC5mKS5yZWN0KCk7Ci0gICAgYXV0byBoZWlnaHQgPSBzdGF0aWNfY2FzdDxmbG9hdD4odGFp
bFJlY3QuaGVpZ2h0KCkpOwotICAgIGNvbnN0IGF1dG8gbWF4Qmx1ckRpYW1ldGVyID0gMi5mICog
c3RkOjptYXgoY2FyZXRCbHVyUmFkaXVzKGhlaWdodCksIHRhaWxCbHVyUmFkaXVzKGhlaWdodCkp
OwotICAgIGlmIChpc0xlZnRUb1JpZ2h0TGF5b3V0KCkpCi0gICAgICAgIHJlcGFpbnRSZWN0Lm1v
dmUoTGF5b3V0U2l6ZShGbG9hdFNpemUoLXRhaWxSZWN0LndpZHRoKCkgLSAyICogbWF4Qmx1ckRp
YW1ldGVyLCAtbWF4Qmx1ckRpYW1ldGVyKSkpOwotICAgIGVsc2UKLSAgICAgICAgcmVwYWludFJl
Y3QubW92ZShMYXlvdXRTaXplKEZsb2F0U2l6ZSgtMiAqIG1heEJsdXJEaWFtZXRlciwgLW1heEJs
dXJEaWFtZXRlcikpKTsKLQotICAgIGF1dG8gaGVpZ2h0T2Zmc2V0ID0gc3RkOjptYXgoMC5mLCBo
ZWlnaHQgLSBzdGF0aWNfY2FzdDxmbG9hdD4ocmVwYWludFJlY3QuaGVpZ2h0KCkpKTsKLSAgICBy
ZXBhaW50UmVjdC5leHBhbmQoTGF5b3V0U2l6ZShGbG9hdFNpemUodGFpbFJlY3Qud2lkdGgoKSAr
IDQgKiBtYXhCbHVyRGlhbWV0ZXIsIGhlaWdodE9mZnNldCArIDIgKiBtYXhCbHVyRGlhbWV0ZXIp
KSk7Ci0KLSAgICByZXR1cm4gcmVwYWludFJlY3Q7Ci19Ci0KLXZvaWQgRGljdGF0aW9uQ2FyZXRB
bmltYXRvcjo6c3RvcChDYXJldEFuaW1hdG9yU3RvcFJlYXNvbiByZWFzb24pCi17Ci0gICAgaWYg
KHJlYXNvbiA9PSBDYXJldEFuaW1hdG9yU3RvcFJlYXNvbjo6RGVmYXVsdCkKLSAgICAgICAgQ2Fy
ZXRBbmltYXRvcjo6c3RvcCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGljdGF0aW9uQ2FyZXRBbmlt
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGljdGF0aW9uQ2FyZXRBbmltYXRvci5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzAzMDE3OWYyZDQuLjAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EaWN0YXRpb25DYXJldEFuaW1hdG9yLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIy
LTIwMjMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkNhcmV0
QW5pbWF0b3IuaCIKLQotI2lmIEhBVkUoUkVERVNJR05FRF9URVhUX0NVUlNPUikKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBQYXRoOwotCi1jbGFzcyBEaWN0YXRpb25DYXJldEFuaW1h
dG9yIGZpbmFsIDogcHVibGljIENhcmV0QW5pbWF0b3IgewotcHVibGljOgotICAgIGV4cGxpY2l0
IERpY3RhdGlvbkNhcmV0QW5pbWF0b3IoQ2FyZXRBbmltYXRpb25DbGllbnQmKTsKLQotcHJpdmF0
ZToKLSAgICB2b2lkIHVwZGF0ZUFuaW1hdGlvblByb3BlcnRpZXMoUmVkdWNlZFJlc29sdXRpb25T
ZWNvbmRzKSBmaW5hbDsKLSAgICB2b2lkIHN0YXJ0KFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcykg
ZmluYWw7Ci0gICAgRmxvYXRSZWN0IHRhaWxSZWN0KCkgY29uc3Q7Ci0KLSAgICBTdHJpbmcgZGVi
dWdEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsOwotCi0gICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wg
dmlzaWJsZSkgZmluYWwgeyBzZXRPcGFjaXR5KHZpc2libGUgPyAxLjAgOiAwLjApOyB9Ci0KLSAg
ICB2b2lkIHNldE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKLSAgICB7Ci0gICAgICAgIGlmIChtX3By
ZXNlbnRhdGlvblByb3BlcnRpZXMub3BhY2l0eSA9PSBvcGFjaXR5KQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIG1fcHJlc2VudGF0aW9uUHJvcGVydGllcy5vcGFjaXR5ID0gb3BhY2l0
eTsKLSAgICAgICAgbV9jbGllbnQuY2FyZXRBbmltYXRpb25EaWRVcGRhdGUoKnRoaXMpOwotICAg
IH0KLQotICAgIHZvaWQgc2V0QmxpbmtpbmdTdXNwZW5kZWQoYm9vbCkgZmluYWw7Ci0KLSAgICB2
b2lkIHN0b3AoQ2FyZXRBbmltYXRvclN0b3BSZWFzb24pIGZpbmFsOwotCi0gICAgU2Vjb25kcyBr
ZXlmcmFtZVRpbWVEZWx0YSgpIGNvbnN0OwotICAgIHNpemVfdCBrZXlmcmFtZUNvdW50KCkgY29u
c3Q7Ci0gICAgdm9pZCB1cGRhdGVHbG93VGFpbChmbG9hdCBjYXJldFBvc2l0aW9uLCBTZWNvbmRz
IGVsYXBzZWRUaW1lKTsKLSAgICB2b2lkIHJlc2V0R2xvd1RhaWwoRmxvYXRSZWN0KTsKLSAgICB2
b2lkIHVwZGF0ZUdsb3dUYWlsKFNlY29uZHMgZWxhcHNlZFRpbWUpOwotICAgIHZvaWQgcGFpbnQo
Y29uc3QgTm9kZSYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENv
bG9yJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFZpc2libGVTZWxl
Y3Rpb24+JikgY29uc3QgZmluYWw7Ci0gICAgTGF5b3V0UmVjdCBjYXJldFJlcGFpbnRSZWN0Rm9y
TG9jYWxSZWN0KExheW91dFJlY3QgcmVwYWludFJlY3QpIGNvbnN0IGZpbmFsOwotICAgIFBhdGgg
bWFrZURpY3RhdGlvblRhaWxDb25lUGF0aChjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKLSAgICB2
b2lkIGZpbGxDYXJldFRhaWwoY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgQ29sb3ImKSBjb25zdDsKLQotICAgIEZsb2F0UmVjdCBjb21wdXRlVGFpbFJlY3QoKSBjb25z
dDsKLSAgICBib29sIGlzTGVmdFRvUmlnaHRMYXlvdXQoKSBjb25zdDsKLSAgICBGbG9hdFJvdW5k
ZWRSZWN0IGV4cGFuZGVkQ2FyZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wgZmlsbFRhaWwp
IGNvbnN0OwotICAgIGludCBjb21wdXRlU2Nyb2xsTGVmdCgpIGNvbnN0OwotCi0gICAgUmVkdWNl
ZFJlc29sdXRpb25TZWNvbmRzIG1fbGFzdFVwZGF0ZVRpbWU7Ci0gICAgc2l6ZV90IG1fY3VycmVu
dEtleWZyYW1lSW5kZXggeyAxIH07Ci0gICAgRmxvYXRSZWN0IG1fbG9jYWxDYXJldFJlY3Q7Ci0g
ICAgRmxvYXRSZWN0IG1fdGFpbFJlY3QsIG1fcHJldmlvdXNUYWlsUmVjdDsKLSAgICBmbG9hdCBt
X2FuaW1hdGlvblNwZWVkIHsgMCB9OwotICAgIGZsb2F0IG1fZ2xvd1N0YXJ0IHsgMCB9OwotICAg
IGZsb2F0IG1faW5pdGlhbFNjYWxlIHsgMCB9OwotICAgIGZsb2F0IG1fc2Nyb2xsTGVmdCB7IDAg
fTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9PcGFjaXR5Q2FyZXRBbmltYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9PcGFjaXR5Q2FyZXRBbmltYXRvci5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGFhNjkwZTMyYzcxMC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL09wYWNpdHlDYXJldEFuaW1hdG9yLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDE1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIyLTIwMjMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiT3BhY2l0eUNhcmV0QW5p
bWF0b3IuaCIKLQotI2lmIEhBVkUoUkVERVNJR05FRF9URVhUX0NVUlNPUikKLQotI2luY2x1ZGUg
IkZsb2F0Um91bmRlZFJlY3QuaCIKLSNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9uLmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IGtleWZyYW1l
cyA9IHsKLSAgICBLZXlGcmFtZSB7IDAuMF9zICAgLCAxLjAwIH0sCi0gICAgS2V5RnJhbWUgeyAw
LjVfcyAgICwgMS4wMCB9LAotICAgIEtleUZyYW1lIHsgMC41Mzc1X3MsIDAuNzUgfSwKLSAgICBL
ZXlGcmFtZSB7IDAuNTc1X3MgLCAwLjUwIH0sCi0gICAgS2V5RnJhbWUgeyAwLjYxMjVfcywgMC4y
NSB9LAotICAgIEtleUZyYW1lIHsgMC42NV9zICAsIDAuMDAgfSwKLSAgICBLZXlGcmFtZSB7IDAu
ODVfcyAgLCAwLjAwIH0sCi0gICAgS2V5RnJhbWUgeyAwLjg4NzVfcywgMC4yNSB9LAotICAgIEtl
eUZyYW1lIHsgMC45MjVfcyAsIDAuNTAgfSwKLSAgICBLZXlGcmFtZSB7IDAuOTYyNV9zLCAwLjc1
IH0sCi0gICAgS2V5RnJhbWUgeyAxLjBfcyAgICwgMS4wMCB9LAotfTsKLQotT3BhY2l0eUNhcmV0
QW5pbWF0b3I6Ok9wYWNpdHlDYXJldEFuaW1hdG9yKENhcmV0QW5pbWF0aW9uQ2xpZW50JiBjbGll
bnQsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gcmVwYWludEV4cGFuc2lvblJlY3QpCi0gICAg
OiBDYXJldEFuaW1hdG9yKGNsaWVudCkKLSAgICAsIG1fb3ZlcnJpZGVSZXBhaW50UmVjdChyZXBh
aW50RXhwYW5zaW9uUmVjdCkKLXsKLX0KLQotU2Vjb25kcyBPcGFjaXR5Q2FyZXRBbmltYXRvcjo6
a2V5ZnJhbWVUaW1lRGVsdGEoKSBjb25zdAotewotICAgIEFTU0VSVChtX2N1cnJlbnRLZXlmcmFt
ZUluZGV4ID4gMCAmJiBtX2N1cnJlbnRLZXlmcmFtZUluZGV4IDwga2V5ZnJhbWVzLnNpemUoKSk7
Ci0gICAgcmV0dXJuIGtleWZyYW1lc1ttX2N1cnJlbnRLZXlmcmFtZUluZGV4XS50aW1lIC0ga2V5
ZnJhbWVzW21fY3VycmVudEtleWZyYW1lSW5kZXggLSAxXS50aW1lOwotfQotCi12b2lkIE9wYWNp
dHlDYXJldEFuaW1hdG9yOjpzZXRCbGlua2luZ1N1c3BlbmRlZChib29sIHN1c3BlbmRlZCkKLXsK
LSAgICBpZiAoc3VzcGVuZGVkID09IGlzQmxpbmtpbmdTdXNwZW5kZWQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKCFzdXNwZW5kZWQpIHsKLSAgICAgICAgbV9jdXJyZW50S2V5ZnJhbWVJ
bmRleCA9IDE7Ci0gICAgICAgIG1fYmxpbmtUaW1lci5zdGFydE9uZVNob3Qoa2V5ZnJhbWVUaW1l
RGVsdGEoKSk7Ci0gICAgfQotCi0gICAgQ2FyZXRBbmltYXRvcjo6c2V0QmxpbmtpbmdTdXNwZW5k
ZWQoc3VzcGVuZGVkKTsKLX0KLQotdm9pZCBPcGFjaXR5Q2FyZXRBbmltYXRvcjo6dXBkYXRlQW5p
bWF0aW9uUHJvcGVydGllcyhSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMpCi17Ci0gICAgaWYgKGlz
QmxpbmtpbmdTdXNwZW5kZWQoKSAmJiBtX3ByZXNlbnRhdGlvblByb3BlcnRpZXMub3BhY2l0eSA+
PSAxLjApCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gY3VycmVudFRpbWUgPSBjdXJyZW50
VGltZVNpbmNlRXBvY2goKTsKLSAgICBpZiAoY3VycmVudFRpbWUgLSBtX2xhc3RUaW1lQ2FyZXRP
cGFjaXR5V2FzVG9nZ2xlZCA+PSBrZXlmcmFtZVRpbWVEZWx0YSgpKSB7Ci0gICAgICAgIHNldE9w
YWNpdHkoa2V5ZnJhbWVzW21fY3VycmVudEtleWZyYW1lSW5kZXhdLnZhbHVlKTsKLSAgICAgICAg
bV9sYXN0VGltZUNhcmV0T3BhY2l0eVdhc1RvZ2dsZWQgPSBjdXJyZW50VGltZTsKLQotICAgICAg
ICBpZiAobV9jdXJyZW50S2V5ZnJhbWVJbmRleCA9PSBrZXlmcmFtZXMuc2l6ZSgpIC0gMSkKLSAg
ICAgICAgICAgIG1fY3VycmVudEtleWZyYW1lSW5kZXggPSAwOwotCi0gICAgICAgIG1fY3VycmVu
dEtleWZyYW1lSW5kZXgrKzsKLQotICAgICAgICBtX2JsaW5rVGltZXIuc3RhcnRPbmVTaG90KGtl
eWZyYW1lVGltZURlbHRhKCkpOwotCi0gICAgICAgIG1fb3ZlcnJpZGVSZXBhaW50UmVjdCA9IHN0
ZDo6bnVsbG9wdDsKLSAgICB9Ci19Ci0KLXZvaWQgT3BhY2l0eUNhcmV0QW5pbWF0b3I6OnN0YXJ0
KFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcykKLXsKLSAgICAvLyBUaGUgZGVmYXVsdC9zdGFydCB2
YWx1ZSBvZiBgbV9jdXJyZW50S2V5ZnJhbWVJbmRleGAgc2hvdWxkIGJlIGAxYCBzaW5jZSB0aGUg
a2V5ZnJhbWUKLSAgICAvLyBkZWx0YSBpcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGBtX2N1cnJl
bnRLZXlmcmFtZUluZGV4YCBhbmQgYG1fY3VycmVudEtleWZyYW1lSW5kZXggLSAxYAotICAgIG1f
Y3VycmVudEtleWZyYW1lSW5kZXggPSAxOwotICAgIG1fbGFzdFRpbWVDYXJldE9wYWNpdHlXYXNU
b2dnbGVkID0gY3VycmVudFRpbWVTaW5jZUVwb2NoKCk7Ci0gICAgZGlkU3RhcnQobV9sYXN0VGlt
ZUNhcmV0T3BhY2l0eVdhc1RvZ2dsZWQsIGtleWZyYW1lVGltZURlbHRhKCkpOwotfQotCi1TdHJp
bmcgT3BhY2l0eUNhcmV0QW5pbWF0b3I6OmRlYnVnRGVzY3JpcHRpb24oKSBjb25zdAotewotICAg
IFRleHRTdHJlYW0gdGV4dFN0cmVhbTsKLSAgICB0ZXh0U3RyZWFtIDw8ICJPcGFjaXR5Q2FyZXRB
bmltYXRvciAiIDw8IHRoaXMgPDwgIiBhY3RpdmUgIiA8PCBpc0FjdGl2ZSgpIDw8ICIgb3BhY2l0
eSA9ICIgPDwgbV9wcmVzZW50YXRpb25Qcm9wZXJ0aWVzLm9wYWNpdHk7Ci0gICAgcmV0dXJuIHRl
eHRTdHJlYW0ucmVsZWFzZSgpOwotfQotCi12b2lkIE9wYWNpdHlDYXJldEFuaW1hdG9yOjpwYWlu
dChjb25zdCBOb2RlJiBub2RlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIG9sZENhcmV0Q29sb3IsIGNvbnN0IExheW91dFBvaW50
JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiYgc2VsZWN0aW9uKSBjb25z
dAotewotICAgIGF1dG8gY2FyZXRDb2xvciA9IFsmXSB7Ci0gICAgICAgIGlmICghc2VsZWN0aW9u
KSB7Ci0gICAgICAgICAgICBhdXRvKiBlbGVtZW50ID0gaXM8RWxlbWVudD4obm9kZSkgPyBkb3du
Y2FzdDxFbGVtZW50Pigmbm9kZSkgOiBub2RlLnBhcmVudEVsZW1lbnQoKTsKLSAgICAgICAgICAg
IGlmIChlbGVtZW50ICYmIGVsZW1lbnQtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHBsYXRmb3JtQ2FyZXRDb2xvcihlbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLCAmbm9k
ZSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBvbGRDYXJldENvbG9yOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKFJlZlB0ciBlZGl0YWJsZVJvb3QgPSBzZWxlY3Rpb24tPnJvb3RFZGl0YWJsZUVs
ZW1lbnQoKTsgZWRpdGFibGVSb290ICYmIGVkaXRhYmxlUm9vdC0+cmVuZGVyZXIoKSkKLSAgICAg
ICAgICAgIHJldHVybiBwbGF0Zm9ybUNhcmV0Q29sb3IoZWRpdGFibGVSb290LT5yZW5kZXJlcigp
LT5zdHlsZSgpLCAmbm9kZSk7Ci0KLSAgICAgICAgcmV0dXJuIG9sZENhcmV0Q29sb3I7Ci0gICAg
fSgpOwotCi0gICAgYXV0byBjYXJldFByZXNlbnRhdGlvblByb3BlcnRpZXMgPSBwcmVzZW50YXRp
b25Qcm9wZXJ0aWVzKCk7Ci0KLSAgICBpZiAoY2FyZXRDb2xvciAhPSBDb2xvcjo6dHJhbnNwYXJl
bnRCbGFjaykKLSAgICAgICAgY2FyZXRDb2xvciA9IGNhcmV0Q29sb3IuY29sb3JXaXRoQWxwaGEo
Y2FyZXRQcmVzZW50YXRpb25Qcm9wZXJ0aWVzLm9wYWNpdHkpOwotCi0gICAgY29udGV4dC5maWxs
Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCB7IHJlY3QsIEZsb2F0Um91bmRlZFJlY3Q6OlJh
ZGlpIHsgMS4wIH0gfSwgY2FyZXRDb2xvcik7Ci19Ci0KLUxheW91dFJlY3QgT3BhY2l0eUNhcmV0
QW5pbWF0b3I6OmNhcmV0UmVwYWludFJlY3RGb3JMb2NhbFJlY3QoTGF5b3V0UmVjdCByZXBhaW50
UmVjdCkgY29uc3QKLXsKLSAgICBpZiAoIW1fb3ZlcnJpZGVSZXBhaW50UmVjdCkKLSAgICAgICAg
cmV0dXJuIENhcmV0QW5pbWF0b3I6OmNhcmV0UmVwYWludFJlY3RGb3JMb2NhbFJlY3QocmVwYWlu
dFJlY3QpOwotCi0gICAgYXV0byByZWN0ID0gKm1fb3ZlcnJpZGVSZXBhaW50UmVjdDsKLSAgICBy
ZXBhaW50UmVjdC5tb3ZlQnkocmVjdC5sb2NhdGlvbigpKTsKLSAgICByZXBhaW50UmVjdC5leHBh
bmQocmVjdC5zaXplKCkpOwotCi0gICAgcmV0dXJuIHJlcGFpbnRSZWN0OwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vT3BhY2l0eUNhcmV0QW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL09w
YWNpdHlDYXJldEFuaW1hdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2ZTAw
YmEwYTYxMC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL09wYWNp
dHlDYXJldEFuaW1hdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDIyLTIwMjMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2luY2x1ZGUgIkNhcmV0QW5pbWF0b3IuaCIKLQotI2lmIEhBVkUoUkVERVNJR05FRF9URVhU
X0NVUlNPUikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBPcGFjaXR5Q2FyZXRBbmlt
YXRvciBmaW5hbCA6IHB1YmxpYyBDYXJldEFuaW1hdG9yIHsKLXB1YmxpYzoKLSAgICBleHBsaWNp
dCBPcGFjaXR5Q2FyZXRBbmltYXRvcihDYXJldEFuaW1hdGlvbkNsaWVudCYsIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0UmVjdD4gPSBzdGQ6Om51bGxvcHQpOwotCi1wcml2YXRlOgotICAgIHZvaWQgdXBk
YXRlQW5pbWF0aW9uUHJvcGVydGllcyhSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMpIGZpbmFsOwot
ICAgIHZvaWQgc3RhcnQoUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzKSBmaW5hbDsKLSAgICB2b2lk
IHBhaW50KGNvbnN0IE5vZGUmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBDb2xvciYsIGNvbnN0IExheW91dFBvaW50JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxWaXNp
YmxlU2VsZWN0aW9uPiYpIGNvbnN0IGZpbmFsOwotCi0gICAgU3RyaW5nIGRlYnVnRGVzY3JpcHRp
b24oKSBjb25zdCBmaW5hbDsKLQotICAgIHZvaWQgc2V0VmlzaWJsZShib29sIHZpc2libGUpIGZp
bmFsIHsgc2V0T3BhY2l0eSh2aXNpYmxlID8gMS4wIDogMC4wKTsgfQotCi0gICAgdm9pZCBzZXRP
cGFjaXR5KGZsb2F0IG9wYWNpdHkpCi0gICAgewotICAgICAgICBpZiAobV9wcmVzZW50YXRpb25Q
cm9wZXJ0aWVzLm9wYWNpdHkgPT0gb3BhY2l0eSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBtX3ByZXNlbnRhdGlvblByb3BlcnRpZXMub3BhY2l0eSA9IG9wYWNpdHk7Ci0gICAgICAg
IG1fY2xpZW50LmNhcmV0QW5pbWF0aW9uRGlkVXBkYXRlKCp0aGlzKTsKLSAgICB9Ci0KLSAgICB2
b2lkIHNldEJsaW5raW5nU3VzcGVuZGVkKGJvb2wpIGZpbmFsOwotCi0gICAgU2Vjb25kcyBrZXlm
cmFtZVRpbWVEZWx0YSgpIGNvbnN0OwotICAgIExheW91dFJlY3QgY2FyZXRSZXBhaW50UmVjdEZv
ckxvY2FsUmVjdChMYXlvdXRSZWN0KSBjb25zdCBmaW5hbDsKLQotICAgIFJlZHVjZWRSZXNvbHV0
aW9uU2Vjb25kcyBtX2xhc3RUaW1lQ2FyZXRPcGFjaXR5V2FzVG9nZ2xlZDsKLSAgICBzaXplX3Qg
bV9jdXJyZW50S2V5ZnJhbWVJbmRleCB7IDEgfTsKLSAgICBzdGQ6Om9wdGlvbmFsPExheW91dFJl
Y3Q+IG1fb3ZlcnJpZGVSZXBhaW50UmVjdDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0
Q29tcHV0YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1
dGF0aW9uLmNwcAppbmRleCAxNjk5OTdkODI0N2MuLmVkMjRjMmRkNTNhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwCkBAIC00Mywx
NiArNDMsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgVVNFKEFQUExFX0lOVEVS
TkFMX1NESykgJiYgUExBVEZPUk0oTUFDKQorI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL0NhcmV0
UmVjdENvbXB1dGF0aW9uQWRkaXRpb25zLmNwcD4KKyNlbHNlCiBpbnQgY2FyZXRXaWR0aCgpCiB7
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gMjsgLy8gVGhpcyB2YWx1ZSBz
aG91bGQgYmUga2VwdCBpbiBzeW5jIHdpdGggVUlLaXQuIFNlZSA8cmRhcjovL3Byb2JsZW0vMTU1
ODA2MDE+LgotI2VsaWYgUExBVEZPUk0oTUFDKSAmJiBIQVZFKFJFREVTSUdORURfVEVYVF9DVVJT
T1IpCi0gICAgcmV0dXJuIHJlZGVzaWduZWRUZXh0Q3Vyc29yRW5hYmxlZCgpID8gMiA6IDE7CiAj
ZWxzZQogICAgIHJldHVybiAxOwogI2VuZGlmCiB9CisjZW5kaWYKIAogc3RhdGljIExheW91dFJl
Y3QgY29tcHV0ZUNhcmV0UmVjdEZvckVtcHR5RWxlbWVudChjb25zdCBSZW5kZXJCb3hNb2RlbE9i
amVjdCYgcmVuZGVyZXIsIExheW91dFVuaXQgd2lkdGgsIExheW91dFVuaXQgdGV4dEluZGVudE9m
ZnNldCwgQ2FyZXRSZWN0TW9kZSBjYXJldFJlY3RNb2RlKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uaAppbmRleCA2YzQ2YWVlMTlkNmQuLjE5
MGU3N2UzMzZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVj
dENvbXB1dGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVjdENv
bXB1dGF0aW9uLmgKQEAgLTI4LDEwICsyOCw2IEBACiAjaW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zm
c2V0LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0RW51bXMuaCIKIAotI2lmIEhBVkUoUkVERVNJ
R05FRF9URVhUX0NVUlNPUikKLSNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0ZlYXR1cmVGbGFnc1NQ
SS5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBDYXJldFJl
Y3RNb2RlIHsKQEAgLTQzLDE3ICszOSw0IEBAIGludCBjYXJldFdpZHRoKCk7CiAKIExheW91dFJl
Y3QgY29tcHV0ZUxvY2FsQ2FyZXRSZWN0KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IElubGlu
ZUJveEFuZE9mZnNldCYsIENhcmV0UmVjdE1vZGUgPSBDYXJldFJlY3RNb2RlOjpOb3JtYWwpOwog
Ci0vLyBGSVhNRTogUmVtb3ZlIHRoaXMgZmVhdHVyZSBmbGFnIGNoZWNrIHdoZW4gcG9zc2libGUg
KHJkYXI6Ly8xMTA4MDI3MjkpLgotI2lmIEhBVkUoUkVERVNJR05FRF9URVhUX0NVUlNPUikKLXN0
YXRpYyBpbmxpbmUgYm9vbCByZWRlc2lnbmVkVGV4dEN1cnNvckVuYWJsZWQoKQotewotICAgIHN0
YXRpYyBib29sIGVuYWJsZWQ7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGZsYWc7Ci0gICAg
c3RkOjpjYWxsX29uY2UoZmxhZywgW10gewotICAgICAgICBlbmFibGVkID0gb3NfZmVhdHVyZV9l
bmFibGVkKFVJS2l0LCByZWRlc2lnbmVkX3RleHRfY3Vyc29yKTsKLSAgICB9KTsKLSAgICByZXR1
cm4gZW5hYmxlZDsKLX0KLSNlbmRpZgotCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVDb2NvYS5tbQppbmRleCBjYzUzNDU0MmQ5ZjUuLjFiNDliMjM2MTQ0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0KQEAgLTI3LDcg
KzI3LDYgQEAKICNpbXBvcnQgIlJlbmRlclRoZW1lQ29jb2EuaCIKIAogI2ltcG9ydCAiQXR0YWNo
bWVudExheW91dC5oIgotI2ltcG9ydCAiQ2FyZXRSZWN0Q29tcHV0YXRpb24uaCIKICNpbXBvcnQg
IkRyYXdHbHlwaHNSZWNvcmRlci5oIgogI2ltcG9ydCAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2lt
cG9ydCAiRm9udENhY2hlQ29yZVRleHQuaCIKQEAgLTc4LDE0ICs3NywxNCBAQCBjb25zdGV4cHIg
aW50IGtUaHVtYm5haWxCb3JkZXJDb3JuZXJSYWRpdXMgPSAxOwogY29uc3RleHByIGludCBrVmlz
aWJsZUJhY2tncm91bmRJbWFnZVdpZHRoID0gMTsKIGNvbnN0ZXhwciBpbnQga011bHRpcGxlVGh1
bWJuYWlsU2hyaW5rU2l6ZSA9IDI7CiAKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2lu
Y2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9SZW5kZXJUaGVtZUNvY29hQWRkaXRpb25zLm1tPgorI2Vs
c2UKIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5TaG93Q2Fwc0xvY2tJbmRpY2F0b3IoKQogewotI2lm
IEhBVkUoQUNDRUxFUkFURURfVEVYVF9JTlBVVCkKLSAgICBpZiAocmVkZXNpZ25lZFRleHRDdXJz
b3JFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgogICAgIHJldHVybiB0
cnVlOwogfQorI2VuZGlmCiAKIFJlbmRlclRoZW1lQ29jb2EmIFJlbmRlclRoZW1lQ29jb2E6OnNp
bmdsZXRvbigpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJv
eFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNw
cAppbmRleCBlYWE2MDE5NGU2MTcuLmU5YjNiYzFkZjI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCkBAIC02NzMsMTk3ICs2NzMsMzkgQEAgdm9pZCBU
ZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OnBhaW50Rm9yZWdyb3VuZERlY29yYXRpb25zKFRl
eHREZWNvcmF0aW9uUGFpbnQKICAgICAgICAgbV9wYWludEluZm8uY29udGV4dCgpLmNvbmNhdENU
TShyb3RhdGlvbihtX3BhaW50UmVjdCwgQ291bnRlcmNsb2Nrd2lzZSkpOwogfQogCi1zdGF0aWMg
RmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkgcmFkaWlGb3JVbmRlcmxpbmUoY29uc3QgQ29tcG9zaXRp
b25VbmRlcmxpbmUmIHVuZGVybGluZSwgdW5zaWduZWQgbWFya2VkVGV4dFN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBtYXJrZWRUZXh0RW5kT2Zmc2V0KQotewotICAgIGF1dG8gcmFkaWkgPSBGbG9hdFJv
dW5kZWRSZWN0OjpSYWRpaSB7IDAgfTsKLQotI2lmIEhBVkUoUkVERVNJR05FRF9URVhUX0NVUlNP
UikKLSAgICBpZiAoIXJlZGVzaWduZWRUZXh0Q3Vyc29yRW5hYmxlZCgpKQotICAgICAgICByZXR1
cm4gcmFkaWk7Ci0KLSAgICBpZiAodW5kZXJsaW5lLnN0YXJ0T2Zmc2V0ID49IG1hcmtlZFRleHRT
dGFydE9mZnNldCkgewotICAgICAgICByYWRpaS5zZXRUb3BMZWZ0KHsgMSwgMSB9KTsKLSAgICAg
ICAgcmFkaWkuc2V0Qm90dG9tTGVmdCh7IDEsIDEgfSk7Ci0gICAgfQotCi0gICAgaWYgKHVuZGVy
bGluZS5lbmRPZmZzZXQgPD0gbWFya2VkVGV4dEVuZE9mZnNldCkgewotICAgICAgICByYWRpaS5z
ZXRUb3BSaWdodCh7IDEsIDEgfSk7Ci0gICAgICAgIHJhZGlpLnNldEJvdHRvbVJpZ2h0KHsgMSwg
MSB9KTsKLSAgICB9CisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbmNsdWRlIDxXZWJL
aXRBZGRpdGlvbnMvVGV4dEJveFBhaW50ZXJBZGRpdGlvbnMuY3BwPgogI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0odW5kZXJsaW5lKTsKLSAgICBVTlVTRURfUEFSQU0obWFya2VkVGV4dFN0YXJ0T2Zm
c2V0KTsKLSAgICBVTlVTRURfUEFSQU0obWFya2VkVGV4dEVuZE9mZnNldCk7Ci0jZW5kaWYKLQot
ICAgIHJldHVybiByYWRpaTsKLX0KLQotI2lmIEhBVkUoUkVERVNJR05FRF9URVhUX0NVUlNPUikK
LWVudW0gY2xhc3MgVHJpbVNpZGUgOiBib29sIHsKLSAgICBMZWZ0LAotICAgIFJpZ2h0LAotfTsK
LQotc3RhdGljIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpIHRyaW1SYWRpaShjb25zdCBGbG9hdFJv
dW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIFRyaW1TaWRlIHRyaW1TaWRlKQorc3RhdGljIEZsb2F0
Um91bmRlZFJlY3Q6OlJhZGlpIHJhZGlpRm9yVW5kZXJsaW5lKGNvbnN0IENvbXBvc2l0aW9uVW5k
ZXJsaW5lJiwgdW5zaWduZWQsIHVuc2lnbmVkKQogewotICAgIHN3aXRjaCAodHJpbVNpZGUpIHsK
LSAgICBjYXNlIFRyaW1TaWRlOjpMZWZ0OgotICAgICAgICByZXR1cm4geyB7IH0sIHJhZGlpLnRv
cFJpZ2h0KCksIHsgfSwgcmFkaWkuYm90dG9tUmlnaHQoKSB9OwotICAgIGNhc2UgVHJpbVNpZGU6
OlJpZ2h0OgotICAgICAgICByZXR1cm4geyByYWRpaS50b3BMZWZ0KCksIHsgfSwgcmFkaWkuYm90
dG9tTGVmdCgpLCB7IH0gfTsKLSAgICB9CisgICAgcmV0dXJuIEZsb2F0Um91bmRlZFJlY3Q6OlJh
ZGlpIHsgMCB9OwogfQogCi1lbnVtIGNsYXNzIFNuYXBEaXJlY3Rpb24gOiB1aW50OF90IHsKLSAg
ICBMZWZ0LAotICAgIFJpZ2h0LAotICAgIEJvdGgsCi19OwotCi1zdGF0aWMgRmxvYXRSZWN0IHNu
YXBSZWN0VG9EZXZpY2VQaXhlbHNJbkRpcmVjdGlvbihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZs
b2F0IGRldmljZVNjYWxlRmFjdG9yLCBTbmFwRGlyZWN0aW9uIHNuYXBEaXJlY3Rpb24pCi17Ci0g
ICAgY29uc3QgYXV0byBsYXlvdXRSZWN0ID0gTGF5b3V0UmVjdCB7IHJlY3QgfTsKLSAgICBzd2l0
Y2ggKHNuYXBEaXJlY3Rpb24pIHsKLSAgICBjYXNlIFNuYXBEaXJlY3Rpb246OkxlZnQ6Ci0gICAg
ICAgIHJldHVybiBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0aFdyaXRpbmdEaXJlY3Rpb24obGF5
b3V0UmVjdCwgZGV2aWNlU2NhbGVGYWN0b3IsIHRydWUpOwotICAgIGNhc2UgU25hcERpcmVjdGlv
bjo6UmlnaHQ6Ci0gICAgICAgIHJldHVybiBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0aFdyaXRp
bmdEaXJlY3Rpb24obGF5b3V0UmVjdCwgZGV2aWNlU2NhbGVGYWN0b3IsIGZhbHNlKTsKLSAgICBj
YXNlIFNuYXBEaXJlY3Rpb246OkJvdGg6Ci0gICAgICAgIGF1dG8gc25hcHBlZFJlY3RMZWZ0ID0g
c25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKGxheW91dFJlY3QsIGRl
dmljZVNjYWxlRmFjdG9yLCB0cnVlKTsKLSAgICAgICAgcmV0dXJuIHNuYXBSZWN0VG9EZXZpY2VQ
aXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihMYXlvdXRSZWN0IHsgc25hcHBlZFJlY3RMZWZ0IH0s
IGRldmljZVNjYWxlRmFjdG9yLCBmYWxzZSk7Ci0gICAgfQotfQotCi1lbnVtIGNsYXNzIExheW91
dEJveExvY2F0aW9uIDogdWludDhfdCB7Ci0gICAgT25seUJveCwKLSAgICBTdGFydE9mU2VxdWVu
Y2UsCi0gICAgRW5kT2ZTZXF1ZW5jZSwKLSAgICBNaWRkbGVPZlNlcXVlbmNlLAotICAgIFVua25v
d24sCi19OwotCi1zdGF0aWMgTGF5b3V0Qm94TG9jYXRpb24gbGF5b3V0Qm94U2VxdWVuY2VMb2Nh
dGlvbihjb25zdCBJbmxpbmVJdGVyYXRvcjo6Qm94TW9kZXJuUGF0aCYgdGV4dEJveCkKLXsKLSAg
ICBhdXRvIGlzRmlyc3RGb3JMYXlvdXRCb3ggPSB0ZXh0Qm94LmJveCgpLmlzRmlyc3RGb3JMYXlv
dXRCb3goKTsKLSAgICBhdXRvIGlzTGFzdEZvckxheW91dEJveCA9IHRleHRCb3guYm94KCkuaXNM
YXN0Rm9yTGF5b3V0Qm94KCk7Ci0gICAgaWYgKGlzRmlyc3RGb3JMYXlvdXRCb3ggJiYgaXNMYXN0
Rm9yTGF5b3V0Qm94KQotICAgICAgICByZXR1cm4gTGF5b3V0Qm94TG9jYXRpb246Ok9ubHlCb3g7
Ci0gICAgaWYgKGlzRmlyc3RGb3JMYXlvdXRCb3gpCi0gICAgICAgIHJldHVybiBMYXlvdXRCb3hM
b2NhdGlvbjo6U3RhcnRPZlNlcXVlbmNlOwotICAgIGlmIChpc0xhc3RGb3JMYXlvdXRCb3gpCi0g
ICAgICAgIHJldHVybiBMYXlvdXRCb3hMb2NhdGlvbjo6RW5kT2ZTZXF1ZW5jZTsKLSAgICByZXR1
cm4gTGF5b3V0Qm94TG9jYXRpb246Ok1pZGRsZU9mU2VxdWVuY2U7Ci19Ci0KLXN0YXRpYyBMYXlv
dXRCb3hMb2NhdGlvbiBsYXlvdXRCb3hTZXF1ZW5jZUxvY2F0aW9uKGNvbnN0IElubGluZUl0ZXJh
dG9yOjpCb3hMZWdhY3lQYXRoJikKLXsKLSAgICByZXR1cm4gTGF5b3V0Qm94TG9jYXRpb246OlVu
a25vd247Ci19Ci0jZW5kaWYKLQogdGVtcGxhdGU8dHlwZW5hbWUgVGV4dEJveFBhdGg+Ci12b2lk
IFRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6ZmlsbENvbXBvc2l0aW9uVW5kZXJsaW5lKGZs
b2F0IHN0YXJ0LCBmbG9hdCB3aWR0aCwgY29uc3QgQ29tcG9zaXRpb25VbmRlcmxpbmUmIHVuZGVy
bGluZSwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpLCBib29sIGhhc0xpdmVD
b252ZXJzaW9uKSBjb25zdAordm9pZCBUZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OmZpbGxD
b21wb3NpdGlvblVuZGVybGluZShmbG9hdCBzdGFydCwgZmxvYXQgd2lkdGgsIGNvbnN0IENvbXBv
c2l0aW9uVW5kZXJsaW5lJiB1bmRlcmxpbmUsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlp
JiwgYm9vbCkgY29uc3QKIHsKLSNpZiBIQVZFKFJFREVTSUdORURfVEVYVF9DVVJTT1IpCi0gICAg
aWYgKCFyZWRlc2lnbmVkVGV4dEN1cnNvckVuYWJsZWQoKSkKLSNlbmRpZgotICAgIHsKLSAgICAg
ICAgLy8gVGhpY2sgbWFya2VkIHRleHQgdW5kZXJsaW5lcyBhcmUgMnB4IHRoaWNrIGFzIGxvbmcg
YXMgdGhlcmUgaXMgcm9vbSBmb3IgdGhlIDJweCBsaW5lIHVuZGVyIHRoZSBiYXNlbGluZS4KLSAg
ICAgICAgLy8gQWxsIG90aGVyIG1hcmtlZCB0ZXh0IHVuZGVybGluZXMgYXJlIDFweCB0aGljay4K
LSAgICAgICAgLy8gSWYgdGhlcmUncyBub3QgZW5vdWdoIHNwYWNlIHRoZSB1bmRlcmxpbmUgd2ls
bCB0b3VjaCBvciBvdmVybGFwIGNoYXJhY3RlcnMuCi0gICAgICAgIGludCBsaW5lVGhpY2tuZXNz
ID0gMTsKLSAgICAgICAgaW50IGJhc2VsaW5lID0gbV9zdHlsZS5tZXRyaWNzT2ZQcmltYXJ5Rm9u
dCgpLmFzY2VudCgpOwotICAgICAgICBpZiAodW5kZXJsaW5lLnRoaWNrICYmIG1fbG9naWNhbFJl
Y3QuaGVpZ2h0KCkgLSBiYXNlbGluZSA+PSAyKQotICAgICAgICAgICAgbGluZVRoaWNrbmVzcyA9
IDI7Ci0KLSAgICAgICAgLy8gV2UgbmVlZCB0byBoYXZlIHNvbWUgc3BhY2UgYmV0d2VlbiB1bmRl
cmxpbmVzIG9mIHN1YnNlcXVlbnQgY2xhdXNlcywgYmVjYXVzZSBzb21lIGlucHV0IG1ldGhvZHMg
ZG8gbm90IHVzZSBkaWZmZXJlbnQgdW5kZXJsaW5lIHN0eWxlcyBmb3IgdGhvc2UuCi0gICAgICAg
IC8vIFdlIG1ha2UgZWFjaCBsaW5lIHNob3J0ZXIsIHdoaWNoIGhhcyBhIGhhcm1sZXNzIHNpZGUg
ZWZmZWN0IG9mIHNob3J0ZW5pbmcgdGhlIGZpcnN0IGFuZCBsYXN0IGNsYXVzZXMsIHRvby4KLSAg
ICAgICAgc3RhcnQgKz0gMTsKLSAgICAgICAgd2lkdGggLT0gMjsKLQotICAgICAgICBhdXRvJiBz
dHlsZSA9IG1fcmVuZGVyZXIuc3R5bGUoKTsKLSAgICAgICAgYXV0byB1bmRlcmxpbmVDb2xvciA9
IHVuZGVybGluZS5jb21wb3NpdGlvblVuZGVybGluZUNvbG9yID09IENvbXBvc2l0aW9uVW5kZXJs
aW5lQ29sb3I6OlRleHRDb2xvciA/IHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xv
ckZpbHRlcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IpIDogc3R5bGUuY29sb3JCeUFw
cGx5aW5nQ29sb3JGaWx0ZXIodW5kZXJsaW5lLmNvbG9yKTsKLQotICAgICAgICBhdXRvJiBjb250
ZXh0ID0gbV9wYWludEluZm8uY29udGV4dCgpOwotICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNv
bG9yKHVuZGVybGluZUNvbG9yKTsKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3Mo
bGluZVRoaWNrbmVzcyk7Ci0gICAgICAgIGNvbnRleHQuZHJhd0xpbmVGb3JUZXh0KEZsb2F0UmVj
dChtX3BhaW50UmVjdC54KCkgKyBzdGFydCwgbV9wYWludFJlY3QueSgpICsgbV9sb2dpY2FsUmVj
dC5oZWlnaHQoKSAtIGxpbmVUaGlja25lc3MsIHdpZHRoLCBsaW5lVGhpY2tuZXNzKSwgbV9pc1By
aW50aW5nKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotI2lmIEhBVkUoUkVERVNJR05FRF9U
RVhUX0NVUlNPUikKLSAgICBpZiAoIXVuZGVybGluZS5jb2xvci5pc1Zpc2libGUoKSkKLSAgICAg
ICAgcmV0dXJuOwotCiAgICAgLy8gVGhpY2sgbWFya2VkIHRleHQgdW5kZXJsaW5lcyBhcmUgMnB4
IHRoaWNrIGFzIGxvbmcgYXMgdGhlcmUgaXMgcm9vbSBmb3IgdGhlIDJweCBsaW5lIHVuZGVyIHRo
ZSBiYXNlbGluZS4KICAgICAvLyBBbGwgb3RoZXIgbWFya2VkIHRleHQgdW5kZXJsaW5lcyBhcmUg
MXB4IHRoaWNrLgogICAgIC8vIElmIHRoZXJlJ3Mgbm90IGVub3VnaCBzcGFjZSB0aGUgdW5kZXJs
aW5lIHdpbGwgdG91Y2ggb3Igb3ZlcmxhcCBjaGFyYWN0ZXJzLgogICAgIGludCBsaW5lVGhpY2tu
ZXNzID0gMTsKICAgICBpbnQgYmFzZWxpbmUgPSBtX3N0eWxlLm1ldHJpY3NPZlByaW1hcnlGb250
KCkuYXNjZW50KCk7Ci0gICAgaWYgKG1fbG9naWNhbFJlY3QuaGVpZ2h0KCkgLSBiYXNlbGluZSA+
PSAyKQorICAgIGlmICh1bmRlcmxpbmUudGhpY2sgJiYgbV9sb2dpY2FsUmVjdC5oZWlnaHQoKSAt
IGJhc2VsaW5lID49IDIpCiAgICAgICAgIGxpbmVUaGlja25lc3MgPSAyOwogCi0gICAgYXV0byB1
bmRlcmxpbmVDb2xvciA9IFt0aGlzXSB7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgICAgICBhdXRv
IGNzc0NvbG9yVmFsdWUgPSBDU1NWYWx1ZUFwcGxlU3lzdGVtQ29udHJvbEFjY2VudDsKLSNlbHNl
Ci0gICAgICAgIGF1dG8gY3NzQ29sb3JWYWx1ZSA9IENTU1ZhbHVlQXBwbGVTeXN0ZW1CbHVlOwot
I2VuZGlmCi0gICAgICAgIGF1dG8gc3R5bGVDb2xvck9wdGlvbnMgPSBtX3JlbmRlcmVyLnN0eWxl
Q29sb3JPcHRpb25zKCk7Ci0gICAgICAgIHJldHVybiBSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCku
c3lzdGVtQ29sb3IoY3NzQ29sb3JWYWx1ZSwgc3R5bGVDb2xvck9wdGlvbnMgfCBTdHlsZUNvbG9y
T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5jZSk7Ci0gICAgfSgpOworICAgIC8vIFdlIG5lZWQg
dG8gaGF2ZSBzb21lIHNwYWNlIGJldHdlZW4gdW5kZXJsaW5lcyBvZiBzdWJzZXF1ZW50IGNsYXVz
ZXMsIGJlY2F1c2Ugc29tZSBpbnB1dCBtZXRob2RzIGRvIG5vdCB1c2UgZGlmZmVyZW50IHVuZGVy
bGluZSBzdHlsZXMgZm9yIHRob3NlLgorICAgIC8vIFdlIG1ha2UgZWFjaCBsaW5lIHNob3J0ZXIs
IHdoaWNoIGhhcyBhIGhhcm1sZXNzIHNpZGUgZWZmZWN0IG9mIHNob3J0ZW5pbmcgdGhlIGZpcnN0
IGFuZCBsYXN0IGNsYXVzZXMsIHRvby4KKyAgICBzdGFydCArPSAxOworICAgIHdpZHRoIC09IDI7
CiAKLSAgICBpZiAoIXVuZGVybGluZS50aGljayAmJiBoYXNMaXZlQ29udmVyc2lvbikKLSAgICAg
ICAgdW5kZXJsaW5lQ29sb3IgPSB1bmRlcmxpbmVDb2xvci5jb2xvcldpdGhBbHBoYSgwLjM1KTsK
KyAgICBhdXRvJiBzdHlsZSA9IG1fcmVuZGVyZXIuc3R5bGUoKTsKKyAgICBhdXRvIHVuZGVybGlu
ZUNvbG9yID0gdW5kZXJsaW5lLmNvbXBvc2l0aW9uVW5kZXJsaW5lQ29sb3IgPT0gQ29tcG9zaXRp
b25VbmRlcmxpbmVDb2xvcjo6VGV4dENvbG9yID8gc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9y
V2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcikgOiBzdHlsZS5j
b2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcih1bmRlcmxpbmUuY29sb3IpOwogCiAgICAgYXV0byYg
Y29udGV4dCA9IG1fcGFpbnRJbmZvLmNvbnRleHQoKTsKICAgICBjb250ZXh0LnNldFN0cm9rZUNv
bG9yKHVuZGVybGluZUNvbG9yKTsKICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhsaW5l
VGhpY2tuZXNzKTsKLQotICAgIGF1dG8gcmVjdCA9IEZsb2F0UmVjdChtX3BhaW50UmVjdC54KCkg
KyBzdGFydCwgbV9wYWludFJlY3QueSgpICsgbV9sb2dpY2FsUmVjdC5oZWlnaHQoKSAtIGxpbmVU
aGlja25lc3MsIHdpZHRoLCBsaW5lVGhpY2tuZXNzKTsKLQotICAgIGlmIChyYWRpaS5pc1plcm8o
KSkgewotICAgICAgICBjb250ZXh0LmRyYXdMaW5lRm9yVGV4dChyZWN0LCBtX2lzUHJpbnRpbmcp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gV2UgY2Fubm90IGRpcmVjdGx5IGRy
YXcgcm91bmRlZCBlZGdlcyBmb3IgZXZlcnkgcmVjdCwgc2luY2UgYSBzaW5nbGUgdGV4dGJveCBw
YXRoIG1heSBiZSBzcGxpdCB1cCBvdmVyIG11bHRpcGxlIHJlY3RzLgotICAgIC8vIERyYXdpbmcg
cm91bmRlZCBlZGdlcyB1bmNvbmRpdGlvbmFsbHkgY291bGQgdGhlbiBwcm9kdWNlIGJyb2tlbiB1
bmRlcmxpbmVzIGJldHdlZW4gY29udGludW91cyByZWN0cy4KLSAgICAvLyBBcyBhIG1pdGlnYXRp
b24sIHdlIGNvbnN1bHQgdGhlIHRleHRib3ggcGF0aCB0byB1bmRlcnN0YW5kIHRoZSBjdXJyZW50
IHJlY3QncyBwb3NpdGlvbiBpbiB0aGUgdGV4dGJveCBwYXRoLgotICAgIC8vIElmIHdlJ3JlIHRo
ZSBvbmx5IGJveCBpbiB0aGUgcGF0aCwgdGhlbiB3ZSBmYWxsYmFjayB0byB1bmNvbmRpdGlvbmFs
bHkgZHJhd2luZyByb3VuZGVkIGVkZ2VzLgotICAgIC8vIElmIG5vdCwgd2UgZmxhdHRlbiBvdXQg
dGhlIHJpZ2h0LCBsZWZ0LCBvciBib3RoIGVkZ2VzIGRlcGVuZGluZyBvbiB3aGV0aGVyIHdlJ3Jl
IGF0IHRoZSBzdGFydCwgZW5kLCBvciBtaWRkbGUgb2YgYSBwYXRoLCByZXNwZWN0aXZlbHkuCi0K
LSAgICBhdXRvIGRldmljZVNjYWxlRmFjdG9yID0gbV9kb2N1bWVudC5kZXZpY2VTY2FsZUZhY3Rv
cigpOwotCi0gICAgc3dpdGNoIChsYXlvdXRCb3hTZXF1ZW5jZUxvY2F0aW9uKG1fdGV4dEJveCkp
IHsKLSAgICBjYXNlIExheW91dEJveExvY2F0aW9uOjpVbmtub3duOgotICAgIGNhc2UgTGF5b3V0
Qm94TG9jYXRpb246Ok9ubHlCb3g6IHsKLSAgICAgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3Qo
RmxvYXRSb3VuZGVkUmVjdCB7IHJlY3QsIHJhZGlpIH0sIHVuZGVybGluZUNvbG9yKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIExheW91dEJveExvY2F0aW9uOjpTdGFydE9mU2Vx
dWVuY2U6IHsKLSAgICAgICAgYXV0byBzbmFwcGVkUmVjdFJpZ2h0ID0gc25hcFJlY3RUb0Rldmlj
ZVBpeGVsc0luRGlyZWN0aW9uKHJlY3QsIGRldmljZVNjYWxlRmFjdG9yLCBTbmFwRGlyZWN0aW9u
OjpSaWdodCk7Ci0gICAgICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJl
Y3QgeyBzbmFwcGVkUmVjdFJpZ2h0LCB0cmltUmFkaWkocmFkaWksIFRyaW1TaWRlOjpSaWdodCkg
fSwgdW5kZXJsaW5lQ29sb3IpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgTGF5
b3V0Qm94TG9jYXRpb246OkVuZE9mU2VxdWVuY2U6IHsKLSAgICAgICAgYXV0byBzbmFwcGVkUmVj
dExlZnQgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzSW5EaXJlY3Rpb24ocmVjdCwgZGV2aWNlU2Nh
bGVGYWN0b3IsIFNuYXBEaXJlY3Rpb246OkxlZnQpOwotICAgICAgICBjb250ZXh0LmZpbGxSb3Vu
ZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0IHsgc25hcHBlZFJlY3RMZWZ0LCB0cmltUmFkaWkocmFk
aWksIFRyaW1TaWRlOjpMZWZ0KSB9LCB1bmRlcmxpbmVDb2xvcik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgY2FzZSBMYXlvdXRCb3hMb2NhdGlvbjo6TWlkZGxlT2ZTZXF1ZW5jZTogewot
ICAgICAgICBhdXRvIHNuYXBwZWRSZWN0Qm90aCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNJbkRp
cmVjdGlvbihyZWN0LCBkZXZpY2VTY2FsZUZhY3RvciwgU25hcERpcmVjdGlvbjo6Qm90aCk7Ci0g
ICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcHBlZFJlY3RCb3RoLCB1bmRlcmxpbmVDb2xvcik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgi
VW5leHBlY3RlZCBMYXlvdXRCb3hMb2NhdGlvbiB2YWx1ZSwgdW5kZXJsaW5lIG5vdCBkcmF3biIp
OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocmFkaWkpOwotICAgIFVOVVNFRF9QQVJBTShoYXNM
aXZlQ29udmVyc2lvbik7Ci0jZW5kaWYKKyAgICBjb250ZXh0LmRyYXdMaW5lRm9yVGV4dChGbG9h
dFJlY3QobV9wYWludFJlY3QueCgpICsgc3RhcnQsIG1fcGFpbnRSZWN0LnkoKSArIG1fbG9naWNh
bFJlY3QuaGVpZ2h0KCkgLSBsaW5lVGhpY2tuZXNzLCB3aWR0aCwgbGluZVRoaWNrbmVzcyksIG1f
aXNQcmludGluZyk7CiB9CisjZW5kaWYKIAogdGVtcGxhdGU8dHlwZW5hbWUgVGV4dEJveFBhdGg+
CiB2b2lkIFRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6cGFpbnRDb21wb3NpdGlvblVuZGVy
bGluZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9fV0tXZWJW
aWV3VGV4dElucHV0Tm90aWZpY2F0aW9ucy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2Nv
YS9fV0tXZWJWaWV3VGV4dElucHV0Tm90aWZpY2F0aW9ucy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAyNzQ5NThkZTExMzcuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL2NvY29hL19XS1dlYlZpZXdUZXh0SW5wdXROb3RpZmljYXRpb25zLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBIQVZFKFJFREVTSUdORURfVEVYVF9D
VVJTT1IpCi0KLSNpbXBvcnQgPFdlYkNvcmUvQ2FyZXRBbmltYXRvci5oPgotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLWNsYXNzIFdlYlZpZXdJbXBsOwotfQotCi1AaW50ZXJmYWNlIF9XS1dlYlZpZXdU
ZXh0SW5wdXROb3RpZmljYXRpb25zIDogTlNPYmplY3QKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0
aFdlYlZpZXc6KFdlYktpdDo6V2ViVmlld0ltcGwqKXdlYlZpZXc7Ci0tICh2b2lkKWRpY3RhdGlv
bkRpZFN0YXJ0OwotLSAodm9pZClkaWN0YXRpb25EaWRFbmQ7Ci0tICh2b2lkKWRpY3RhdGlvbkRp
ZFBhdXNlOwotLSAodm9pZClkaWN0YXRpb25EaWRSZXN1bWU7Ci0KLS0gKFdlYkNvcmU6OkNhcmV0
QW5pbWF0b3JUeXBlKWNhcmV0VHlwZTsKLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL19XS1dlYlZpZXdUZXh0SW5wdXROb3RpZmljYXRpb25z
Lm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9fV0tXZWJWaWV3VGV4dElucHV0Tm90
aWZpY2F0aW9ucy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZmZjZhN2JhMzJm
Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9fV0tXZWJW
aWV3VGV4dElucHV0Tm90aWZpY2F0aW9ucy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9y
dCAiY29uZmlnLmgiCi0jaW1wb3J0ICJfV0tXZWJWaWV3VGV4dElucHV0Tm90aWZpY2F0aW9ucy5o
IgotCi0jaWYgSEFWRShSRURFU0lHTkVEX1RFWFRfQ1VSU09SKQotCi0jaW1wb3J0ICJXZWJQYWdl
UHJveHkuaCIKLSNpbXBvcnQgIldlYlZpZXdJbXBsLmgiCi0jaW1wb3J0IDxwYWwvc3BpL21hYy9O
U1RleHRJbnB1dENvbnRleHRTUEkuaD4KLQotQGltcGxlbWVudGF0aW9uIF9XS1dlYlZpZXdUZXh0
SW5wdXROb3RpZmljYXRpb25zIHsKLSAgICBXZWFrUHRyPFdlYktpdDo6V2ViVmlld0ltcGw+IF93
ZWJWaWV3OwotICAgIFdlYkNvcmU6OkNhcmV0QW5pbWF0b3JUeXBlIF9jYXJldFR5cGU7Ci19Ci0K
LS0gKFdlYkNvcmU6OkNhcmV0QW5pbWF0b3JUeXBlKWNhcmV0VHlwZQotewotICAgIHJldHVybiBf
Y2FyZXRUeXBlOwotfQotCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWV3OihXZWJLaXQ6
OldlYlZpZXdJbXBsKil3ZWJWaWV3Ci17Ci0gICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkp
Ci0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfd2ViVmlldyA9IHdlYlZpZXc7Ci0gICAgX2Nh
cmV0VHlwZSA9IFdlYkNvcmU6OkNhcmV0QW5pbWF0b3JUeXBlOjpEZWZhdWx0OwotCi0gICAgcmV0
dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpZGljdGF0aW9uRGlkU3RhcnQKLXsKLSAgICBpZiAoX2Nh
cmV0VHlwZSA9PSBXZWJDb3JlOjpDYXJldEFuaW1hdG9yVHlwZTo6QWx0ZXJuYXRlKSB7Ci0gICAg
ICAgIGlmIChfd2ViVmlldykKLSAgICAgICAgICAgIF93ZWJWaWV3LT5wYWdlKCkuc2V0Q2FyZXRC
bGlua2luZ1N1c3BlbmRlZChmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBf
Y2FyZXRUeXBlID0gV2ViQ29yZTo6Q2FyZXRBbmltYXRvclR5cGU6OkFsdGVybmF0ZTsKLSAgICBp
ZiAoX3dlYlZpZXcpIHsKLSAgICAgICAgaWYgKE5TVGV4dElucHV0Q29udGV4dCAqY29udGV4dCA9
IF93ZWJWaWV3LT5pbnB1dENvbnRleHQoKSkKLSAgICAgICAgICAgIGNvbnRleHQuc2hvd3NDdXJz
b3JBY2Nlc3NvcmllcyA9IFlFUzsKLQotICAgICAgICBfd2ViVmlldy0+cGFnZSgpLnNldENhcmV0
QW5pbWF0b3JUeXBlKFdlYkNvcmU6OkNhcmV0QW5pbWF0b3JUeXBlOjpBbHRlcm5hdGUpOwotICAg
IH0KLX0KLQotLSAodm9pZClkaWN0YXRpb25EaWRFbmQKLXsKLSAgICBpZiAoX2NhcmV0VHlwZSA9
PSBXZWJDb3JlOjpDYXJldEFuaW1hdG9yVHlwZTo6RGVmYXVsdCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgX2NhcmV0VHlwZSA9IFdlYkNvcmU6OkNhcmV0QW5pbWF0b3JUeXBlOjpEZWZhdWx0Owot
ICAgIGlmIChfd2ViVmlldykKLSAgICAgICAgX3dlYlZpZXctPnBhZ2UoKS5zZXRDYXJldEFuaW1h
dG9yVHlwZShXZWJDb3JlOjpDYXJldEFuaW1hdG9yVHlwZTo6RGVmYXVsdCk7Ci19Ci0KLS0gKHZv
aWQpZGljdGF0aW9uRGlkUGF1c2UKLXsKLSAgICBpZiAoX3dlYlZpZXcpCi0gICAgICAgIF93ZWJW
aWV3LT5wYWdlKCkuc2V0Q2FyZXRCbGlua2luZ1N1c3BlbmRlZCh0cnVlKTsKLX0KLQotLSAodm9p
ZClkaWN0YXRpb25EaWRSZXN1bWUKLXsKLSAgICBpZiAoX2NhcmV0VHlwZSA9PSBXZWJDb3JlOjpD
YXJldEFuaW1hdG9yVHlwZTo6QWx0ZXJuYXRlKSB7Ci0gICAgICAgIGlmIChfd2ViVmlldykKLSAg
ICAgICAgICAgIF93ZWJWaWV3LT5wYWdlKCkuc2V0Q2FyZXRCbGlua2luZ1N1c3BlbmRlZChmYWxz
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBfY2FyZXRUeXBlID0gV2ViQ29yZTo6
Q2FyZXRBbmltYXRvclR5cGU6OkFsdGVybmF0ZTsKLSAgICBpZiAoX3dlYlZpZXcpCi0gICAgICAg
IF93ZWJWaWV3LT5wYWdlKCkuc2V0Q2FyZXRBbmltYXRvclR5cGUoV2ViQ29yZTo6Q2FyZXRBbmlt
YXRvclR5cGU6OkFsdGVybmF0ZSk7Ci19Ci0KLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5oCmluZGV4IDk1NGU3NDkyMWFmNi4uMDYxZWY1ZDU2
NDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwuaApAQCAtOTAs
MTAgKzkwLDYgQEAgT0JKQ19DTEFTUyBXS1BERkhVRFZpZXc7CiBPQkpDX0NMQVNTIFZLQ0ltYWdl
QW5hbHlzaXM7CiBPQkpDX0NMQVNTIFZLQ0ltYWdlQW5hbHlzaXNPdmVybGF5VmlldzsKIAotI2lm
IEhBVkUoUkVERVNJR05FRF9URVhUX0NVUlNPUikKLU9CSkNfQ0xBU1MgX1dLV2ViVmlld1RleHRJ
bnB1dE5vdGlmaWNhdGlvbnM7Ci0jZW5kaWYKLQogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBIaXRU
ZXN0UmVzdWx0OwogY2xhc3MgT2JqZWN0OwpAQCAtMzc3LDEwICszNzMsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCB2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVtKGlkIDxOU1ZhbGlkYXRlZFVzZXJJbnRl
cmZhY2VJdGVtPik7CiAgICAgdm9pZCBzZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoYm9vbCk7
CiAKLSAgICAvLyBGSVhNRTogUmVuYW1lIHRvIGB1cGRhdGVDdXJzb3JBY2Nlc3NvcnlQbGFjZW1l
bnRgIChyZGFyOi8vMTEwODAyNzI5KS4KLSNpZiBIQVZFKFJFREVTSUdORURfVEVYVF9DVVJTT1Ip
CiAgICAgdm9pZCB1cGRhdGVDYXJldERlY29yYXRpb25QbGFjZW1lbnQoKTsKLSNlbmRpZgogCiAg
ICAgdm9pZCBzdGFydFNwZWFraW5nKCk7CiAgICAgdm9pZCBzdG9wU3BlYWtpbmcoaWQpOwpAQCAt
OTUyLDkgKzk0NSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIFdl
YWtPYmpDUHRyPE5TUG9wb3Zlcj4gbV9sYXN0Q29udGV4dE1lbnVUcmFuc2xhdGlvblBvcG92ZXI7
CiAjZW5kaWYKIAotI2lmIEhBVkUoUkVERVNJR05FRF9URVhUX0NVUlNPUikKLSAgICBSZXRhaW5Q
dHI8X1dLV2ViVmlld1RleHRJbnB1dE5vdGlmaWNhdGlvbnM+IF90ZXh0SW5wdXROb3RpZmljYXRp
b25zOwotI2VuZGlmCisgICAgUmV0YWluUHRyPE5TT2JqZWN0PiBfdGV4dElucHV0Tm90aWZpY2F0
aW9uczsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJWaWV3SW1wbC5tbQppbmRleCA2ZjJhM2RmMGEzN2QuLjA0YThmYjA1ZWM3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5tbQpAQCAtODEs
MTIgKzgxLDEwIEBACiAjaW1wb3J0ICJfV0tEcmFnQWN0aW9uc0ludGVybmFsLmgiCiAjaW1wb3J0
ICJfV0tSZW1vdGVPYmplY3RSZWdpc3RyeUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tUaHVtYm5h
aWxWaWV3SW50ZXJuYWwuaCIKLSNpbXBvcnQgIl9XS1dlYlZpZXdUZXh0SW5wdXROb3RpZmljYXRp
b25zLmgiCiAjaW1wb3J0IDxDYXJib24vQ2FyYm9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0FYT2Jq
ZWN0Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9BdHRyaWJ1dGVkU3RyaW5nLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0NhcmV0UmVjdENv
bXB1dGF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0NvbG9yU2VyaWFsaXphdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db21wb3NpdGlvbkhp
Z2hsaWdodC5oPgpAQCAtMTEzNCw5ICsxMTMyLDcgQEAgc3RhdGljIE5TVHJhY2tpbmdBcmVhT3B0
aW9ucyB0cmFja2luZ0FyZWFPcHRpb25zKCkKICAgICByZXR1cm4gb3B0aW9uczsKIH0KIAotI2lm
IEhBVkUoUkVERVNJR05FRF9URVhUX0NVUlNPUikKLXN0YXRpYyBSZXRhaW5QdHI8X1dLV2ViVmll
d1RleHRJbnB1dE5vdGlmaWNhdGlvbnM+IHN1YnNjcmliZVRvVGV4dElucHV0Tm90aWZpY2F0aW9u
cyhXZWJWaWV3SW1wbCopOwotI2VuZGlmCitzdGF0aWMgUmV0YWluUHRyPE5TT2JqZWN0PiBzdWJz
Y3JpYmVUb1RleHRJbnB1dE5vdGlmaWNhdGlvbnMoV2ViVmlld0ltcGwqKTsKIAogc3RhdGljIGJv
b2wgaXNJblJlY292ZXJ5T1MoKQogewpAQCAtMTI0Niw5ICsxMjQyLDcgQEAgV2ViVmlld0ltcGw6
OldlYlZpZXdJbXBsKE5TVmlldyA8V2ViVmlld0ltcGxEZWxlZ2F0ZT4gKnZpZXcsIFdLV2ViVmll
dyAqb3V0ZXJXZWIKICAgICBtX2xhc3RTY3JvbGxWaWV3RnJhbWUgPSBzY3JvbGxWaWV3RnJhbWUo
KTsKICNlbmRpZgogCi0jaWYgSEFWRShSRURFU0lHTkVEX1RFWFRfQ1VSU09SKQogICAgIF90ZXh0
SW5wdXROb3RpZmljYXRpb25zID0gc3Vic2NyaWJlVG9UZXh0SW5wdXROb3RpZmljYXRpb25zKHRo
aXMpOwotI2VuZGlmCiAKICAgICBXZWJQcm9jZXNzUG9vbDo6c3RhdGlzdGljcygpLndrVmlld0Nv
dW50Kys7CiB9CkBAIC0yNzE3LDEwICsyNzExLDggQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2VsZWN0
aW9uRGlkQ2hhbmdlKCkKICAgICAgICAgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb25JZk5l
ZWRlZCgpOwogI2VuZGlmCiAKLSNpZiBIQVZFKFJFREVTSUdORURfVEVYVF9DVVJTT1IpCiAgICAg
aWYgKG1fcGFnZS0+ZWRpdG9yU3RhdGUoKS5oYXNQb3N0TGF5b3V0RGF0YSgpKQogICAgICAgICB1
cGRhdGVDYXJldERlY29yYXRpb25QbGFjZW1lbnQoKTsKLSNlbmRpZgogCiAgICAgTlNXaW5kb3cg
KndpbmRvdyA9IFttX3ZpZXcgd2luZG93XTsKICAgICBpZiAod2luZG93LmZpcnN0UmVzcG9uZGVy
ID09IG1fdmlldy5nZXQoKS5nZXQoKSkgewpAQCAtNjEyNyw0NSArNjExOSwxNiBAQCB2b2lkIFdl
YlZpZXdJbXBsOjpzZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoYm9vbCBlZGl0YWJsZUVsZW1l
bnRJc0ZvY3VzZWQpCiAKICNlbmRpZiAvLyBIQVZFKFRPVUNIX0JBUikKIAotI2lmIEhBVkUoUkVE
RVNJR05FRF9URVhUX0NVUlNPUikKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2ltcG9y
dCA8V2ViS2l0QWRkaXRpb25zL1dlYlZpZXdJbXBsQWRkaXRpb25zLm1tPgorI2Vsc2UKIHZvaWQg
V2ViVmlld0ltcGw6OnVwZGF0ZUNhcmV0RGVjb3JhdGlvblBsYWNlbWVudCgpCiB7Ci0gICAgY29u
c3QgRWRpdG9yU3RhdGUmIGVkaXRvclN0YXRlID0gbV9wYWdlLT5lZGl0b3JTdGF0ZSgpOwotICAg
IGlmICghZWRpdG9yU3RhdGUuaGFzUG9zdExheW91dERhdGEoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgYXV0byYgcG9zdExheW91dERhdGEgPSAqZWRpdG9yU3RhdGUucG9zdExheW91dERhdGE7
Ci0KLSAgICBOU1RleHRJbnB1dENvbnRleHQgKmNvbnRleHQgPSBbbV92aWV3IF93ZWJfc3VwZXJJ
bnB1dENvbnRleHRdOwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
aWYgKFtfdGV4dElucHV0Tm90aWZpY2F0aW9ucyBjYXJldFR5cGVdID09IFdlYkNvcmU6OkNhcmV0
QW5pbWF0b3JUeXBlOjpBbHRlcm5hdGUpIHsKLSAgICAgICAgLy8gVGhlIGRpY3RhdGlvbiBjdXJz
b3IgYWNjZXNzb3J5IHNob3VsZCBhbHdheXMgYmUgdmlzaWJsZSBubyBtYXR0ZXIgd2hhdCwgc2lu
Y2UgaXQgaXMKLSAgICAgICAgLy8gdGhlIG9ubHkgcHJvbWluZW50IHdheSBhIHVzZXIgY2FuIHRl
bGwgaWYgZGljdGF0aW9uIGlzIGFjdGl2ZS4KLSAgICAgICAgY29udGV4dC5zaG93c0N1cnNvckFj
Y2Vzc29yaWVzID0gWUVTOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gT3RoZXJ3
aXNlLCB0aGUgY3Vyc29yIGFjY2Vzc29yeSBzaG91bGQgYmUgaGlkZGVuIGlmIGl0IHdpbGwgbm90
IHNob3cgdXAgaW4gdGhlIGNvcnJlY3QgcG9zaXRpb24uCi0gICAgY29udGV4dC5zaG93c0N1cnNv
ckFjY2Vzc29yaWVzID0gIXBvc3RMYXlvdXREYXRhLmVkaXRhYmxlUm9vdElzVHJhbnNwYXJlbnRP
ckZ1bGx5Q2xpcHBlZDsKIH0KLSNlbmRpZgogCi0jaWYgSEFWRShSRURFU0lHTkVEX1RFWFRfQ1VS
U09SKQotc3RhdGljIFJldGFpblB0cjxfV0tXZWJWaWV3VGV4dElucHV0Tm90aWZpY2F0aW9ucz4g
c3Vic2NyaWJlVG9UZXh0SW5wdXROb3RpZmljYXRpb25zKFdlYlZpZXdJbXBsKiB3ZWJWaWV3KQor
c3RhdGljIFJldGFpblB0cjxOU09iamVjdD4gc3Vic2NyaWJlVG9UZXh0SW5wdXROb3RpZmljYXRp
b25zKFdlYlZpZXdJbXBsKikKIHsKLSAgICBpZiAoIXJlZGVzaWduZWRUZXh0Q3Vyc29yRW5hYmxl
ZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8gdGV4dElucHV0Tm90aWZp
Y2F0aW9ucyA9IGFkb3B0TlMoW1tfV0tXZWJWaWV3VGV4dElucHV0Tm90aWZpY2F0aW9ucyBhbGxv
Y10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXddKTsKLQotICAgIFtbTlNOb3RpZmljYXRpb25DZW50
ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6dGV4dElucHV0Tm90aWZpY2F0aW9ucy5nZXQo
KSBzZWxlY3RvcjpAc2VsZWN0b3IoZGljdGF0aW9uRGlkU3RhcnQpIG5hbWU6QCJfTlNUZXh0SW5w
dXRDb250ZXh0RGljdGF0aW9uRGlkU3RhcnROb3RpZmljYXRpb24iIG9iamVjdDpuaWxdOwotICAg
IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6dGV4dElu
cHV0Tm90aWZpY2F0aW9ucy5nZXQoKSBzZWxlY3RvcjpAc2VsZWN0b3IoZGljdGF0aW9uRGlkRW5k
KSBuYW1lOkAiX05TVGV4dElucHV0Q29udGV4dERpY3RhdGlvbkRpZEVuZE5vdGlmaWNhdGlvbiIg
b2JqZWN0Om5pbF07Ci0gICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBh
ZGRPYnNlcnZlcjp0ZXh0SW5wdXROb3RpZmljYXRpb25zLmdldCgpIHNlbGVjdG9yOkBzZWxlY3Rv
cihkaWN0YXRpb25EaWRQYXVzZSkgbmFtZTpAIl9OU1RleHRJbnB1dENvbnRleHREaWN0YXRpb25E
aWRQYXVzZU5vdGlmaWNhdGlvbiIgb2JqZWN0Om5pbF07Ci0gICAgW1tOU05vdGlmaWNhdGlvbkNl
bnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjp0ZXh0SW5wdXROb3RpZmljYXRpb25zLmdl
dCgpIHNlbGVjdG9yOkBzZWxlY3RvcihkaWN0YXRpb25EaWRSZXN1bWUpIG5hbWU6QCJfTlNUZXh0
SW5wdXRDb250ZXh0RGljdGF0aW9uRGlkUmVzdW1lTm90aWZpY2F0aW9uIiBvYmplY3Q6bmlsXTsK
LQotICAgIHJldHVybiB0ZXh0SW5wdXROb3RpZmljYXRpb25zOworICAgIHJldHVybiBudWxscHRy
OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDM4MmYxODgzMGI0MC4uNDY2MjM4MGU5ZTZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMSw4ICsxMzEs
NiBAQAogCQkwN0E1RUJCQzFDN0JBNDNFMDBCOUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdBNUVCQkExQzdC
QTQzRTAwQjlDQTY5IC8qIFdLRnJhbWVIYW5kbGVSZWYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwN0UxOUVGQjIzRDQwMUYxMDA5NEZGQjQgLyog
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RTE5RUY4MjNENDAxRjAwMDk0RkZC
NCAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9Owog
CQkwN0UxOUVGQzIzRDQwMUYxMDA5NEZGQjQgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
RTE5RUY5MjNENDAxRjAwMDk0RkZCNCAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdl
cy5oICovOyB9OwotCQkwN0U0QkRDNzJBM0E3MDg5MDAwRDU1MDkgLyogX1dLV2ViVmlld1RleHRJ
bnB1dE5vdGlmaWNhdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3RTRCREM1MkEzQTcwODkwMDBENTUwOSAvKiBfV0tXZWJWaWV3VGV4dElucHV0
Tm90aWZpY2F0aW9ucy5oICovOyB9OwotCQkwN0U0QkRDODJBM0E3MDg5MDAwRDU1MDkgLyogX1dL
V2ViVmlld1RleHRJbnB1dE5vdGlmaWNhdGlvbnMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0U0QkRDNjJBM0E3MDg5MDAwRDU1MDkgLyogX1dLV2Vi
Vmlld1RleHRJbnB1dE5vdGlmaWNhdGlvbnMubW0gKi87IH07CiAJCTBFOTdENzREMjAwRTkwMDQw
MEJGNjY0MyAvKiBTYWZlQnJvd3NpbmdTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBFOTdENzRDMjAwRThGRjMwMEJGNjY0MyAvKiBTYWZlQnJvd3Np
bmdTUEkuaCAqLzsgfTsKIAkJMEVERTg1MDMyMDA0RTc1RDAwMDMwNTYwIC8qIFdlYnNpdGVQb3BV
cFBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEVERTg1MDIyMDA0RTc0OTAwMDMwNTYwIC8qIFdlYnNpdGVQb3BVcFBvbGljeS5oICovOyB9Owog
CQkwRjA4Q0Y1MjFENjNDMTNBMDBCNDhERjEgLyogV0tGb3JtU2VsZWN0UGlja2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjA4Q0Y1MTFENjNDMTNB
MDBCNDhERjEgLyogV0tGb3JtU2VsZWN0UGlja2VyLmggKi87IH07CkBAIC0yODI1LDggKzI4MjMs
NiBAQAogCQkwN0UxOUYwNzIzRDREQzg4MDA5NEZGQjQgLyogUmVtb3RlVGV4dFRyYWNrUHJveHku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwN0UxOUYwODIzRDUzM0I5MDA5NEZGQjQgLyogVGV4dFRy
YWNrUHJpdmF0ZVJlbW90ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0VHJhY2tQcml2YXRl
UmVtb3RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdFMTlGMDkyM0Q1MzNC
QTAwOTRGRkI0IC8qIFRleHRUcmFja1ByaXZhdGVSZW1vdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4
dFRyYWNrUHJpdmF0ZVJlbW90ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwN0U0
QkRDNTJBM0E3MDg5MDAwRDU1MDkgLyogX1dLV2ViVmlld1RleHRJbnB1dE5vdGlmaWNhdGlvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gX1dLV2ViVmlld1RleHRJbnB1dE5vdGlmaWNhdGlvbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDdFNEJEQzYyQTNBNzA4OTAwMEQ1NTA5IC8qIF9X
S1dlYlZpZXdUZXh0SW5wdXROb3RpZmljYXRpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
X1dLV2ViVmlld1RleHRJbnB1dE5vdGlmaWNhdGlvbnMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA3RUYwNzUxMjc0NTkzRkEwMDY2RUEwNCAvKiBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdF
RjA3NTIyNzQ1OTNGQTAwNjZFQTA0IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHlN
YWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eU1hYy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0VGMDc1ODI3NDVBODE2MDA2NkVBMDQg
LyogRGlzcGxheUNhcHR1cmVTZXNzaW9uTWFuYWdlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IERpc3BsYXlDYXB0dXJlU2Vzc2lvbk1hbmFnZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMDQ1OSw4ICsxMDQ1NSw2IEBACiAJCTQ0NTBBRUJFMURDM0ZBQUMwMDk5NDNGMiAv
KiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJ
MDdFNEJEQzUyQTNBNzA4OTAwMEQ1NTA5IC8qIF9XS1dlYlZpZXdUZXh0SW5wdXROb3RpZmljYXRp
b25zLmggKi8sCi0JCQkJMDdFNEJEQzYyQTNBNzA4OTAwMEQ1NTA5IC8qIF9XS1dlYlZpZXdUZXh0
SW5wdXROb3RpZmljYXRpb25zLm1tICovLAogCQkJCTFDNjI3NDdCMjg4QjRDM0UwMENFRDNBMiAv
KiBDb2NvYUhlbHBlcnMuaCAqLywKIAkJCQkxQzYyNzQ3QzI4OEI0QzNFMDBDRUQzQTIgLyogQ29j
b2FIZWxwZXJzLm1tICovLAogCQkJCTQ0ODI3MzQ2MjQ1MjhGNjAwMEE5NTQ5MyAvKiBDb2NvYUlt
YWdlLmggKi8sCkBAIC0xNDExNiw3ICsxNDExMCw2IEBACiAJCQkJNDFDNTM3OTAyMUYxNUI1NTAw
OEIxRkFEIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTExNURDNzIxOTFEODJEQTAwREE4MDcyIC8qIF9XS1dlYlZpZXdQcmludEZvcm1hdHRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTE5REQzQzAxRDA3RDE2ODAwQUM4MjNCIC8qIF9XS1dlYlZp
ZXdQcmludEZvcm1hdHRlckludGVybmFsLmggaW4gSGVhZGVycyAqLywKLQkJCQkwN0U0QkRDNzJB
M0E3MDg5MDAwRDU1MDkgLyogX1dLV2ViVmlld1RleHRJbnB1dE5vdGlmaWNhdGlvbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUExODJENUI1MUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5
SU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQlFM0NBQUE0NDI0MTMyNzk5MDBDRUQyRTIgLyogQWNj
ZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDc5MkQ4MTc2N0ND
QTMwMDg4MUNCRSAvKiBBY3Rpdml0eUFzc2VydGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNjk2
MSw3ICsxNjk1NCw2IEBACiAJCQkJMUMwNDk4MzgyODlBRjVBRDAwMTAzMDhCIC8qIF9XS1dlYkV4
dGVuc2lvblBlcm1pc3Npb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMzc4MjI0ODI5NDdGQkE1
MDAyMTA2QkIgLyogX1dLV2ViRXh0ZW5zaW9uVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMzM3ODIyNDMyOTQ3RjY3OTAwMjEwNkJCIC8qIF9XS1dlYkV4dGVuc2lvbldlYk5hdmlnYXRp
b25VUkxGaWx0ZXIubW0gaW4gU291cmNlcyAqLywKLQkJCQkwN0U0QkRDODJBM0E3MDg5MDAwRDU1
MDkgLyogX1dLV2ViVmlld1RleHRJbnB1dE5vdGlmaWNhdGlvbnMubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1NzJFQkJEQTI1MzhGNkI0MDAwNTUyQjMgLyogQXBwQXR0ZXN0SW50ZXJuYWxTb2Z0TGlu
ay5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxN0I1RjdFMjc1RTk3QjYwMDJEQzIyRCAvKiBBcHBC
dW5kbGVSZXF1ZXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRUJBOEQzQjIyN0E1RTMzRjAwQ0I3
OTAwIC8qIEFwcGxlUHVzaFNlcnZpY2VDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>