<?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>137628</bug_id>
          
          <creation_ts>2014-10-10 15:44:12 -0700</creation_ts>
          <short_desc>Remove unused classes WebRender{Node, Layer}</short_desc>
          <delta_ts>2014-10-10 16:24:50 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1041054</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-10-10 15:44:12 -0700</bug_when>
    <thetext>As of the time of writing, we no longer make use of the functionality provided by the WebKit1-specific classes WebRenderNode and WebRenderLayer. We should remove these classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041055</commentid>
    <comment_count>1</comment_count>
      <attachid>239656</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-10-10 15:48:43 -0700</bug_when>
    <thetext>Created attachment 239656
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041064</commentid>
    <comment_count>2</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-10-10 16:24:50 -0700</bug_when>
    <thetext>Committed r174621: &lt;http://trac.webkit.org/changeset/174621&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239656</attachid>
            <date>2014-10-10 15:48:43 -0700</date>
            <delta_ts>2014-10-10 15:53:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137628-20141010154846.patch</filename>
            <type>text/plain</type>
            <size>34112</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE4NjBlMjUxNDBkMDQ5YjQ2
MmQ4N2FkM2ZkMTFlNTkyZWFiMGVlOGEuLjgzMmYxYTBmZDk2OTA3MmIwZDI3NWJkYTk5YzM4OTNm
Mjc1MjZlZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTQtMTAtMTAgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQgY2xhc3Nl
cyBXZWJSZW5kZXJ7Tm9kZSwgTGF5ZXJ9CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzc2MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZSBubyBsb25nZXIgbWFrZSB1c2Ugb2YgdGhlIFdlYktpdDEtc3Bl
Y2lmaWMgY2xhc3NlcyBXZWJSZW5kZXJOb2RlIGFuZCBXZWJSZW5kZXJMYXllci4KKyAgICAgICAg
Rm9yIGNvbXBsZXRlbmVzcywgdGhlcmUgaXMgYSBXZWJLaXQyIGFuYWxvZyBvZiBXZWJSZW5kZXJM
YXllciBieSB0aGUgc2FtZSBuYW1lLgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisKIDIwMTQtMTAtMDYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW1dpbl0gVW5yZXZpZXdlZCA2NC1iaXQgYnVpbGQgZml4IGFmdGVy
IHIxNzQzMTUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNjU1ZDE0ZGQ5NjJmZWE0YWQ4NjY4NTgwZDY4
ZTViMWIwMDY4MDNkMi4uN2U1NzBlNmRiOTdmZWQzNzhhNzQ1NWIxOTI3MmU5M2Q0ZTE5YjVhMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE0LTEwLTEwICBEYW5pZWwgQmF0
ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdW51c2VkIGNsYXNzZXMg
V2ViUmVuZGVye05vZGUsIExheWVyfQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM3NjI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2Ugbm8gbG9uZ2VyIG1ha2UgdXNlIG9mIHRoZSBXZWJLaXQxLXNwZWNp
ZmljIGNsYXNzZXMgV2ViUmVuZGVyTm9kZSBhbmQgV2ViUmVuZGVyTGF5ZXIuCisgICAgICAgIEZv
ciBjb21wbGV0ZW5lc3MsIHRoZXJlIGlzIGEgV2ViS2l0MiBhbmFsb2cgb2YgV2ViUmVuZGVyTGF5
ZXIgYnkgdGhlIHNhbWUgbmFtZS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYktpdExl
Z2FjeS54Y2NvbmZpZzogUmVtb3ZlIGZpbGUgV2ViUmVuZGVyTm9kZS5tbSBmcm9tIHRoZSBsaXN0
CisgICAgICAgIG9mIGV4Y2x1ZGVkIHNvdXJjZSBmaWxlcyB3aGVuIGJ1aWxkaW5nIGZvciBpT1Mu
CisgICAgICAgICogV2ViS2l0LmV4cDogUmVtb3ZlIHN5bWJvbCBmb3IgV2ViUmVuZGVyTGF5ZXIu
CisgICAgICAgICogV2ViS2l0Lm1hYy5leHA6IFJlbW92ZSBzeW1ib2wgZm9yIFdlYlJlbmRlck5v
ZGUuCisgICAgICAgICogV2ViVmlldy9XZWJSZW5kZXJMYXllci5oOiBSZW1vdmVkLgorICAgICAg
ICAqIFdlYlZpZXcvV2ViUmVuZGVyTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICogV2ViVmll
dy9XZWJSZW5kZXJOb2RlLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJSZW5kZXJO
b2RlLm1tOiBSZW1vdmVkLgorCiAyMDE0LTEwLTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgUmVuZGVyQm94
TW9kZWxPYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDhhMWM5NzcyMmJhMDU0YzA4ZTU4ODRjNTY1NjJlYWVkZmRlMjdmYjAuLjUw
NDQ2ODhmOTFiZDY2N2U4ZjBlZDBmMTMwMjNiNjIzN2E2YjM1OGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTcsOCArMTcsNiBAQAog
CQkwQUI3NTIzODBGQTJFNERCMDBEN0NCQjEgLyogV2ViTmV0c2NhcGVDb250YWluZXJDaGVja0Nv
bnRleHRJbmZvLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEFCNzUyMzYwRkEyRTREQjAwRDdDQkIxIC8qIFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tD
b250ZXh0SW5mby5tbSAqLzsgfTsKIAkJMEFFQkZGNjMwRjlGQThCRTAwMEQ0ODZCIC8qIFdlYk5l
dHNjYXBlQ29udGFpbmVyQ2hlY2tQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwQUVCRkY2MTBGOUZBOEJFMDAwRDQ4NkIgLyogV2ViTmV0c2Nh
cGVDb250YWluZXJDaGVja1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwQUVCRkY2NDBGOUZBOEJFMDAwRDQ4NkIgLyogV2ViTmV0c2Nh
cGVDb250YWluZXJDaGVja1ByaXZhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwQUVCRkY2MjBGOUZBOEJFMDAwRDQ4NkIgLyogV2ViTmV0c2NhcGVD
b250YWluZXJDaGVja1ByaXZhdGUubW0gKi87IH07Ci0JCTBGMzA5ODVGMTFFQ0ZFNDUwMEY1NTlE
RiAvKiBXZWJSZW5kZXJMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYzMDk4NUQxMUVDRkU0NDAwRjU1OURGIC8qIFdlYlJlbmRlckxheWVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEYzMDk4
NjAxMUVDRkU0NTAwRjU1OURGIC8qIFdlYlJlbmRlckxheWVyLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzMDk4NUUxMUVDRkU0NTAwRjU1OURGIC8q
IFdlYlJlbmRlckxheWVyLm1tICovOyB9OwogCQkxNEQ4MjUyRjBBRjk1NTA5MDAwNEYwNTcgLyog
V2ViQ2hyb21lQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNEQ4MjUyRDBBRjk1NTA5MDAwNEYwNTcgLyogV2ViQ2hyb21lQ2xpZW50LmggKi87
IH07CiAJCTE0RDgyNTMwMEFGOTU1MDkwMDA0RjA1NyAvKiBXZWJDaHJvbWVDbGllbnQubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEQ4MjUyRTBBRjk1
NTA5MDAwNEYwNTcgLyogV2ViQ2hyb21lQ2xpZW50Lm1tICovOyB9OwogCQkxQTJEQkU5RjBGMjUx
RTNBMDAzNkY4QTYgLyogUHJveHlJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyREJFOUQwRjI1MUUzQTAwMzZGOEE2IC8qIFByb3h5SW5z
dGFuY2UuaCAqLzsgfTsKQEAgLTIxMyw3ICsyMTEsNiBAQAogCQk5Mzk4MTA1QjA4MjRCRjAxMDA4
REYwMzggLyogV2ViRnJhbWVMb2FkRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNTJGQUU1MDMzRkM1MjIwMENBMkFDRCAvKiBXZWJGcmFt
ZUxvYWREZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTkzOTgxMDVEMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQcmVmZXJlbmNlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzk0NDYwNkUwMjBG
NTBFRDBFQ0ExNzY3IC8qIFdlYlByZWZlcmVuY2VzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM5ODEwNUUwODI0QkYwMTAwOERGMDM4IC8qIFdl
YlByZWZlcmVuY2VzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOUNBRTlEMDcwMjUyQTQxMzBFQ0ExNkVBIC8qIFdlYlByZWZlcmVuY2VzUHJp
dmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTkzOTgxMDVGMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJSZW5kZXJOb2RlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNUY4MUMzOTAyQjY3QzI2MDE4NjM1
Q0EgLyogV2ViUmVuZGVyTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTkzOTgxMDYwMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJSZXNvdXJjZUxv
YWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEzRDQyMkUwMzRDRjU1QTAwQ0EyQUNEIC8qIFdlYlJlc291cmNlTG9hZERlbGVnYXRlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM5ODEw
NjMwODI0QkYwMTAwOERGMDM4IC8qIFdlYkhpc3RvcnlJdGVtSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNkYyOTZGMDNBNkM0NUEwMENB
MkQzQSAvKiBXZWJIaXN0b3J5SXRlbUludGVybmFsLmggKi87IH07CiAJCTkzOTgxMDY0MDgyNEJG
MDEwMDhERjAzOCAvKiBXZWJGb3JtRGVsZWdhdGVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDM2RkQ1RTAzRjc4RjlFMDBBODAxNjYgLyog
V2ViRm9ybURlbGVnYXRlUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0yOTYsNyArMjkzLDYgQEAKIAkJOTM5ODEwRjMwODI0QkYwMTAw
OERGMDM4IC8qIFdlYkhUTUxSZXByZXNlbnRhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM1MDgxRDkzMDJCNkQ0RDgwQUNBMkFDQSAvKiBXZWJI
VE1MUmVwcmVzZW50YXRpb24ubW0gKi87IH07CiAJCTkzOTgxMEY0MDgyNEJGMDEwMDhERjAzOCAv
KiBXZWJIVE1MVmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDM1MDgxRDk1MDJCNkQ0RDgwQUNBMkFDQSAvKiBXZWJIVE1MVmlldy5tbSAqLzsgfTsK
IAkJOTM5ODEwRjgwODI0QkYwMTAwOERGMDM4IC8qIFdlYlByZWZlcmVuY2VzLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjVBRUJCM0QwMjRBNTI3NjAx
QzFBNTI2IC8qIFdlYlByZWZlcmVuY2VzLm1tICovOyB9OwotCQk5Mzk4MTBGOTA4MjRCRjAxMDA4
REYwMzggLyogV2ViUmVuZGVyTm9kZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY1RjgxQzNBMDJCNjdDMjYwMTg2MzVDQSAvKiBXZWJSZW5kZXJOb2Rl
Lm1tICovOyB9OwogCQk5Mzk4MTBGQzA4MjRCRjAxMDA4REYwMzggLyogV2ViRm9ybURlbGVnYXRl
Lm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDgxREFC
MzAzRUIwQjJEMDBBODAxNjYgLyogV2ViRm9ybURlbGVnYXRlLm0gKi87IH07CiAJCTkzOTgxMEZE
MDgyNEJGMDEwMDhERjAzOCAvKiBDYXJib25XaW5kb3dBZGFwdGVyLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjdFQkVFOTEwM0Y5REJBMTAzQ0EwREU2
IC8qIENhcmJvbldpbmRvd0FkYXB0ZXIubW0gKi87IH07CiAJCTkzOTgxMEZFMDgyNEJGMDEwMDhE
RjAzOCAvKiBDYXJib25XaW5kb3dDb250ZW50Vmlldy5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjdFQkVFOTMwM0Y5REJBMTAzQ0EwREU2IC8qIENhcmJv
bldpbmRvd0NvbnRlbnRWaWV3Lm0gKi87IH07CkBAIC00NjAsOCArNDU2LDYgQEAKIAkJMEFCNzUy
MzYwRkEyRTREQjAwRDdDQkIxIC8qIFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tDb250ZXh0SW5m
by5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYk5ldHNjYXBl
Q29udGFpbmVyQ2hlY2tDb250ZXh0SW5mby5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEFFQkZGNjEwRjlGQThCRTAwMEQ0ODZCIC8qIFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tQ
cml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gV2ViTmV0c2NhcGVDb250
YWluZXJDaGVja1ByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEFFQkZG
NjIwRjlGQThCRTAwMEQ0ODZCIC8qIFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tQcml2YXRlLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViTmV0c2NhcGVDb250
YWluZXJDaGVja1ByaXZhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGMzA5
ODVEMTFFQ0ZFNDQwMEY1NTlERiAvKiBXZWJSZW5kZXJMYXllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJSZW5kZXJMYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkwRjMwOTg1RTExRUNGRTQ1MDBGNTU5REYgLyogV2ViUmVuZGVyTGF5ZXIubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJSZW5kZXJMYXllci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTREODI1MkQwQUY5NTUwOTAwMDRGMDU3IC8q
IFdlYkNocm9tZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
Q2hyb21lQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0RDgyNTJFMEFG
OTU1MDkwMDA0RjA1NyAvKiBXZWJDaHJvbWVDbGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ2hyb21lQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQTJEQkU5RDBGMjUxRTNBMDAzNkY4QTYgLyogUHJveHlJbnN0YW5jZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm94eUluc3RhbmNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04ODAsOCArODc0LDYgQEAKIAkJRjVGNzE3MjEwMjg4
NDkzQzAxODYzNUNBIC8qIFdlYlBsdWdpbkRhdGFiYXNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IGZpbGVF
bmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgcGF0aCA9IFdlYlBsdWdpbkRhdGFiYXNlLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsK
IAkJRjVGNzE3MjMwMjg4NDkzQzAxODYzNUNBIC8qIG5wYXBpLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IGZp
bGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgcGF0aCA9IG5wYXBpLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjVGNzMy
RDIwMkZGNEQ0RjAxQTgwMTgwIC8qIFdlYktpdC5leHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5l
eHBvcnRzOyBuYW1lID0gV2ViS2l0LmV4cDsgcGF0aCA9IG1hYy9XZWJLaXQuZXhwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDQ7IHVzZXNUYWJzID0gMDsgfTsKLQkJRjVGODFD
MzkwMkI2N0MyNjAxODYzNUNBIC8qIFdlYlJlbmRlck5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZW5kZXJOb2RlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwotCQlGNUY4MUMz
QTAyQjY3QzI2MDE4NjM1Q0EgLyogV2ViUmVuZGVyTm9kZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUmVuZGVyTm9kZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJ
CUY3MzhDOUU5MDNGQUQzREYwMzIxRkJFMCAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZy
YW1ld29yazsgcGF0aCA9IEphdmFTY3JpcHRDb3JlLmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRjczOEM5RUEwM0ZBRDNERjAzMjFGQkUwIC8qIFdlYkNv
cmUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gd3JhcHBlci5mcmFtZXdvcms7IHBhdGggPSBXZWJDb3JlLmZyYW1ld29yazsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRjc5Qjk3NDgwNDAxOTkzNDAzNjkwOUQy
IC8qIENhcmJvblV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENhcmJvblV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtMTM0NSwxMCArMTMzNyw2IEBACiAJCQkJMzk0
NDYwNkUwMjBGNTBFRDBFQ0ExNzY3IC8qIFdlYlByZWZlcmVuY2VzLmggKi8sCiAJCQkJRjVBRUJC
M0QwMjRBNTI3NjAxQzFBNTI2IC8qIFdlYlByZWZlcmVuY2VzLm1tICovLAogCQkJCTlDQUU5RDA3
MDI1MkE0MTMwRUNBMTZFQSAvKiBXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaCAqLywKLQkJCQkwRjMw
OTg1RDExRUNGRTQ0MDBGNTU5REYgLyogV2ViUmVuZGVyTGF5ZXIuaCAqLywKLQkJCQkwRjMwOTg1
RTExRUNGRTQ1MDBGNTU5REYgLyogV2ViUmVuZGVyTGF5ZXIubW0gKi8sCi0JCQkJRjVGODFDMzkw
MkI2N0MyNjAxODYzNUNBIC8qIFdlYlJlbmRlck5vZGUuaCAqLywKLQkJCQlGNUY4MUMzQTAyQjY3
QzI2MDE4NjM1Q0EgLyogV2ViUmVuZGVyTm9kZS5tbSAqLywKIAkJCQk4NDMxMUExMjA1RUFBQUYw
MDA4OEVEQTQgLyogV2ViUmVzb3VyY2UuaCAqLywKIAkJCQk4NDMxMUExMzA1RUFBQUYwMDA4OEVE
QTQgLyogV2ViUmVzb3VyY2UubW0gKi8sCiAJCQkJOTM0QzRBOUYwRjAxNDFGNzAwOTM3MkMwIC8q
IFdlYlJlc291cmNlSW50ZXJuYWwuaCAqLywKQEAgLTE4NzgsOCArMTg2Niw2IEBACiAJCQkJOTM5
ODEwNUQwODI0QkYwMTAwOERGMDM4IC8qIFdlYlByZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5Mzk4MTA1RTA4MjRCRjAxMDA4REYwMzggLyogV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTdFMkYyNDEyMDc0OUU2MDAwNDhERjMgLyogV2ViUXVvdGFN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjMwOTg1RjExRUNGRTQ1MDBGNTU5REYgLyog
V2ViUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTkzOTgxMDVGMDgyNEJGMDEwMDhE
RjAzOCAvKiBXZWJSZW5kZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4MTA4ODA4MjRC
RjAxMDA4REYwMzggLyogV2ViUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNEM0QUEw
MEYwMTQxRjcwMDkzNzJDMCAvKiBXZWJSZXNvdXJjZUludGVybmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5Mzk4MTA2MDA4MjRCRjAxMDA4REYwMzggLyogV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGUu
aCBpbiBIZWFkZXJzICovLApAQCAtMjI2NCw4ICsyMjUwLDYgQEAKIAkJCQkyMjQxMDBGOTA5MTgx
OTAxMDBEMkQyNjYgLyogV2ViUGx1Z2luc1ByaXZhdGUubSBpbiBTb3VyY2VzICovLAogCQkJCTkz
OTgxMTA4MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQb2xpY3lEZWxlZ2F0ZS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTkzOTgxMEY4MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQcmVmZXJlbmNlcy5tbSBp
biBTb3VyY2VzICovLAotCQkJCTBGMzA5ODYwMTFFQ0ZFNDUwMEY1NTlERiAvKiBXZWJSZW5kZXJM
YXllci5tbSBpbiBTb3VyY2VzICovLAotCQkJCTkzOTgxMEY5MDgyNEJGMDEwMDhERjAzOCAvKiBX
ZWJSZW5kZXJOb2RlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODExMUEwODI0QkYwMTAwOERG
MDM4IC8qIFdlYlJlc291cmNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0U2RkVGMDkwODk4NUE3
MjAwQzQ0QzNGIC8qIFdlYlNjcmlwdERlYnVnRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlBMTBDMUQzQjE4MjAyRkM1MDAzNjg4M0EgLyogV2ViTlNTdHJpbmdFeHRyYXNJT1MubSBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMv
V2ViS2l0TGVnYWN5LnhjY29uZmlnIGIvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMv
V2ViS2l0TGVnYWN5LnhjY29uZmlnCmluZGV4IDljYzAwZDU0YzJlMWEzYjViOTc3N2U4N2U0NTg0
Y2I2ZWRjYzA2YTIuLjhhNWM1ZmNkNWYyZWI4MzY5YTVhOTZkMWEwNjYyYmQxOGFmMDFhMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL1dlYktpdExlZ2FjeS54
Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9XZWJLaXRMZWdh
Y3kueGNjb25maWcKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlICJWZXJzaW9uLnhjY29uZmln
IgogCiBFWENMVURFRF9TT1VSQ0VfRklMRV9OQU1FUyA9ICQoRVhDTFVERURfU09VUkNFX0ZJTEVf
TkFNRVNfJChQTEFURk9STV9OQU1FKSk7Ci1FWENMVURFRF9TT1VSQ0VfRklMRV9OQU1FU19pcGhv
bmVvcyA9ICoubmliICoucGRmICoudGlmZiBDYXJib25VdGlscy5tIENhcmJvbldpbmRvd0FkYXB0
ZXIubW0gQ2FyYm9uV2luZG93Q29udGVudFZpZXcubSBDYXJib25XaW5kb3dGcmFtZS5tIEhJVmll
d0FkYXB0ZXIubSBISVdlYlZpZXcubW0gT3V0bG9va1F1aXJrc1VzZXJTY3JpcHQuanMgUG9wdXBN
ZW51TWFjLm1tIFNlYXJjaFBvcHVwTWVudU1hYy5tbSBXZWJDbGlwVmlldy4qIFdlYkRhc2hib2Fy
ZFJlZ2lvbi4qIFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlldy4qIFdlYkljb25EYXRhYmFzZS4qIFdl
Ykljb25EYXRhYmFzZVByaXZhdGUuKiBXZWJJbnNwZWN0b3JDbGllbnQubW0gV2ViSmF2YVNjcmlw
dFRleHRJbnB1dFBhbmVsLiogV2ViS2V5R2VuZXJhdG9yLiogV2ViTmV0c2NhcGVDb250YWluZXJD
aGVja0NvbnRleHRJbmZvLiogV2ViTmV0c2NhcGVDb250YWluZXJDaGVja1ByaXZhdGUuKiBXZWJO
U0V2ZW50RXh0cmFzLiogV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLiogV2ViTlNXaW5kb3dFeHRyYXMu
KiBXZWJQYW5lbEF1dGhlbnRpY2F0aW9uSGFuZGxlci4qIFdlYlBsdWdpbnNQcml2YXRlLiogV2Vi
UmVuZGVyTm9kZS5tbSBXZWJTdHJpbmdUcnVuY2F0b3IuKiBXZWJUZXh0Q29tcGxldGlvbkNvbnRy
b2xsZXIuKjsKK0VYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTX2lwaG9uZW9zID0gKi5uaWIgKi5w
ZGYgKi50aWZmIENhcmJvblV0aWxzLm0gQ2FyYm9uV2luZG93QWRhcHRlci5tbSBDYXJib25XaW5k
b3dDb250ZW50Vmlldy5tIENhcmJvbldpbmRvd0ZyYW1lLm0gSElWaWV3QWRhcHRlci5tIEhJV2Vi
Vmlldy5tbSBPdXRsb29rUXVpcmtzVXNlclNjcmlwdC5qcyBQb3B1cE1lbnVNYWMubW0gU2VhcmNo
UG9wdXBNZW51TWFjLm1tIFdlYkNsaXBWaWV3LiogV2ViRGFzaGJvYXJkUmVnaW9uLiogV2ViRHlu
YW1pY1Njcm9sbEJhcnNWaWV3LiogV2ViSWNvbkRhdGFiYXNlLiogV2ViSWNvbkRhdGFiYXNlUHJp
dmF0ZS4qIFdlYkluc3BlY3RvckNsaWVudC5tbSBXZWJKYXZhU2NyaXB0VGV4dElucHV0UGFuZWwu
KiBXZWJLZXlHZW5lcmF0b3IuKiBXZWJOZXRzY2FwZUNvbnRhaW5lckNoZWNrQ29udGV4dEluZm8u
KiBXZWJOZXRzY2FwZUNvbnRhaW5lckNoZWNrUHJpdmF0ZS4qIFdlYk5TRXZlbnRFeHRyYXMuKiBX
ZWJOU1Bhc3RlYm9hcmRFeHRyYXMuKiBXZWJOU1dpbmRvd0V4dHJhcy4qIFdlYlBhbmVsQXV0aGVu
dGljYXRpb25IYW5kbGVyLiogV2ViUGx1Z2luc1ByaXZhdGUuKiBXZWJTdHJpbmdUcnVuY2F0b3Iu
KiBXZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIuKjsKIEVYQ0xVREVEX1NPVVJDRV9GSUxFX05B
TUVTX2lwaG9uZXNpbXVsYXRvciA9ICQoRVhDTFVERURfU09VUkNFX0ZJTEVfTkFNRVNfaXBob25l
b3MpOwogRVhDTFVERURfU09VUkNFX0ZJTEVfTkFNRVNfbWFjb3N4ID0gKklPUy5tbSBNZW1vcnlN
ZWFzdXJlLmggV2ViQ2FyZXRDaGFuZ2VMaXN0ZW5lci5oIFdlYkZpeGVkUG9zaXRpb25Db250ZW50
LmggV2ViRnJhbWVJT1MuaCBXZWJGcmFtZUlQaG9uZS5oIFdlYkdlb2xvY2F0aW9uQ29yZUxvY2F0
aW9uUHJvdmlkZXIuaCBXZWJHZW9sb2NhdGlvblByaXZhdGUuaCBXZWJHZW9sb2NhdGlvblByb3Zp
ZGVySU9TLmggV2ViTUlNRVR5cGVSZWdpc3RyeS5oIFdlYk5TU3RyaW5nRXh0cmFzSU9TLmggV2Vi
TlNTdHJpbmdFeHRyYXNJUGhvbmUuaCBXZWJQREZWaWV3SU9TLmggV2ViUERGVmlld0lQaG9uZS5o
IFdlYlBERlZpZXdQbGFjZWhvbGRlci5oIFdlYlNlbGVjdGlvblJlY3QuaCBXZWJVSUtpdERlbGVn
YXRlLmggV2ViVUlLaXRTdXBwb3J0LmggV2ViVmlzaWJsZVBvc2l0aW9uLmg7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5leHAgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJL
aXQuZXhwCmluZGV4IGJmMzFhMGZjNTgxNDBkYjgxYjM3MjcyOTc2YTQwNDcyMzE5MTc0ZDkuLjFi
ZDRiMTM1MGFmMTBmYzc5NGVlYjY0YzFiNTljZWFlYWY0Mjc2MzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYktpdC5leHAKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViS2l0LmV4
cApAQCAtMjIsNyArMjIsNiBAQAogLm9iamNfY2xhc3NfbmFtZV9XZWJLaXRTdGF0aXN0aWNzCiAu
b2JqY19jbGFzc19uYW1lX1dlYlBsdWdpbkRhdGFiYXNlCiAub2JqY19jbGFzc19uYW1lX1dlYlBy
ZWZlcmVuY2VzCi0ub2JqY19jbGFzc19uYW1lX1dlYlJlbmRlckxheWVyCiAub2JqY19jbGFzc19u
YW1lX1dlYlJlc291cmNlCiAub2JqY19jbGFzc19uYW1lX1dlYlNjcmlwdENhbGxGcmFtZQogLm9i
amNfY2xhc3NfbmFtZV9XZWJTY3JpcHRXb3JsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViS2l0Lm1hYy5leHAgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQubWFjLmV4cAppbmRl
eCA4OGE1NTA1ODU0MmZmNzRjZGYyZDI5ZDNlYTNmNGRjMWFhN2VjNDQyLi40NDQ4YjY2YWZhZDgy
NzZkZjMyNzkwZDVjMzcwNTNhNmMxMjUzODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJLaXQubWFjLmV4cAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQubWFjLmV4cApA
QCAtMyw3ICszLDYgQEAKIC5vYmpjX2NsYXNzX25hbWVfV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBh
bmVsCiAub2JqY19jbGFzc19uYW1lX1dlYktleUdlbmVyYXRvcgogLm9iamNfY2xhc3NfbmFtZV9X
ZWJQYW5lbEF1dGhlbnRpY2F0aW9uSGFuZGxlcgotLm9iamNfY2xhc3NfbmFtZV9XZWJSZW5kZXJO
b2RlCiAub2JqY19jbGFzc19uYW1lX1dlYlN0cmluZ1RydW5jYXRvcgogLm9iamNfY2xhc3NfbmFt
ZV9XZWJVUkxzV2l0aFRpdGxlcwogX0hJV2ViVmlld0NyZWF0ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJSZW5kZXJMYXllci5oIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJSZW5kZXJMYXllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
N2U3N2YwMjQ2NzU0MzY1MDA5MGE1MWM5OTNhODYzMjVhYjA5M2I0Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViUmVuZGVyTGF5ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmg+Ci0KLSNpZiBUQVJHRVRfT1NfSVBIT05FCi0jaW1wb3J0IDxGb3VuZGF0
aW9uL05TR2VvbWV0cnkuaD4KLSNlbmRpZgotCi1AY2xhc3MgV2ViRnJhbWU7Ci0KLUBpbnRlcmZh
Y2UgV2ViUmVuZGVyTGF5ZXIgOiBOU09iamVjdAotewotICAgIE5TQXJyYXkgKmNoaWxkcmVuOwot
ICAgIE5TU3RyaW5nICpuYW1lOwotICAgIE5TU3RyaW5nICpjb21wb3NpdGluZ0luZm87Ci0gICAg
TlNSZWN0IGJvdW5kczsKLSAgICBCT09MIGNvbXBvc2l0ZWQ7Ci0gICAgQk9PTCBzZXBhcmF0b3I7
Ci19Ci0KLS0gKGlkKWluaXRXaXRoV2ViRnJhbWU6KFdlYkZyYW1lICopZnJhbWU7Ci0KLS0gKE5T
QXJyYXkgKiljaGlsZHJlbjsKLQotLSAoTlNTdHJpbmcgKiluYW1lOwotLSAoTlNTdHJpbmcgKilw
b3NpdGlvblN0cmluZzsKLS0gKE5TU3RyaW5nICopd2lkdGhTdHJpbmc7Ci0tIChOU1N0cmluZyAq
KWhlaWdodFN0cmluZzsKLS0gKE5TU3RyaW5nICopY29tcG9zaXRpbmdJbmZvOwotCi0tIChCT09M
KWlzQ29tcG9zaXRlZDsKLS0gKEJPT0wpaXNTZXBhcmF0b3I7Ci0KLUBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUmVuZGVyTGF5ZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlJlbmRlckxheWVyLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAyODc4YWQzYmZiZWFhNTBkZTVkZTFkYWE2ZTBiYzZkNTZmNTlmNWQ0Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViUmVuZGVyTGF5ZXIubW0KKysrIC9kZXYvbnVsbApAQCAtMSwyNzggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0
ICJXZWJSZW5kZXJMYXllci5oIgotCi0jaW1wb3J0ICJXZWJGcmFtZUludGVybmFsLmgiCi0jaW1w
b3J0IDxXZWJDb3JlL0ZyYW1lLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyQ2xpZW50Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Jl
bmRlckxheWVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1JlbmRlckxheWVyQmFja2luZy5oPgotI2lt
cG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1N0eWxlZEVsZW1l
bnQuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLSNpbXBvcnQgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotQGludGVyZmFj
ZSBXZWJSZW5kZXJMYXllcihQcml2YXRlKQotCi0tIChpZClpbml0V2l0aFJlbmRlckxheWVyOihS
ZW5kZXJMYXllciAqKWxheWVyOwotLSAodm9pZClidWlsZERlc2NlbmRhbnRMYXllcnM6KFJlbmRl
ckxheWVyKilyb290TGF5ZXI7Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYlJlbmRlckxh
eWVyCi0KLSsgKE5TU3RyaW5nICopbmFtZUZvckxheWVyOihSZW5kZXJMYXllciopbGF5ZXIKLXsK
LSAgICBjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyID0gbGF5ZXItPnJlbmRlcmVyKCk7Ci0g
ICAgTlNTdHJpbmcgKm5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6cmVuZGVy
ZXIucmVuZGVyTmFtZSgpXTsKLQotICAgIGlmIChFbGVtZW50KiBlbGVtZW50ID0gaXM8RWxlbWVu
dD4ocmVuZGVyZXIubm9kZSgpKSA/IGRvd25jYXN0PEVsZW1lbnQ+KHJlbmRlcmVyLm5vZGUoKSkg
OiBudWxscHRyKSB7Ci0gICAgICAgIG5hbWUgPSBbbmFtZSBzdHJpbmdCeUFwcGVuZGluZ0Zvcm1h
dDpAIiAlQCIsIChOU1N0cmluZyAqKWVsZW1lbnQtPnRhZ05hbWUoKV07Ci0gICAgICAgIGlmIChl
bGVtZW50LT5oYXNJRCgpKQotICAgICAgICAgICAgbmFtZSA9IFtuYW1lIHN0cmluZ0J5QXBwZW5k
aW5nRm9ybWF0OkAiIGlkPVwiJUBcIiIsIChOU1N0cmluZyAqKWVsZW1lbnQtPmdldElkQXR0cmli
dXRlKCldOwotCi0gICAgICAgIGlmIChlbGVtZW50LT5oYXNDbGFzcygpKSB7Ci0gICAgICAgICAg
ICBTdHJpbmdCdWlsZGVyIGNsYXNzZXM7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGVsZW1lbnQtPmNsYXNzTmFtZXMoKS5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAg
IGlmIChpID4gMCkKLSAgICAgICAgICAgICAgICAgICAgY2xhc3Nlcy5hcHBlbmQoJyAnKTsKLSAg
ICAgICAgICAgICAgICBjbGFzc2VzLmFwcGVuZChlbGVtZW50LT5jbGFzc05hbWVzKClbaV0pOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgbmFtZSA9IFtuYW1lIHN0cmluZ0J5QXBwZW5kaW5n
Rm9ybWF0OkAiIGNsYXNzPVwiJUBcIiIsIChOU1N0cmluZyAqKWNsYXNzZXMudG9TdHJpbmcoKV07
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAobGF5ZXItPmlzUmVmbGVjdGlvbigpKQotICAg
ICAgICBuYW1lID0gW25hbWUgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6QCIgKHJlZmxlY3Rpb24p
Il07Ci0KLSAgICByZXR1cm4gbmFtZTsKLX0KLQotKyAoTlNTdHJpbmcgKiljb21wb3NpdGluZ0lu
Zm9Gb3JMYXllcjooUmVuZGVyTGF5ZXIqKWxheWVyCi17Ci0gICAgaWYgKCFsYXllci0+aXNDb21w
b3NpdGVkKCkpCi0gICAgICAgIHJldHVybiBAIiI7Ci0KLSAgICBOU1N0cmluZyAqbGF5ZXJUeXBl
ID0gQCIiOwotICAgIFJlbmRlckxheWVyQmFja2luZyogYmFja2luZyA9IGxheWVyLT5iYWNraW5n
KCk7Ci0gICAgc3dpdGNoIChiYWNraW5nLT5jb21wb3NpdGluZ0xheWVyVHlwZSgpKSB7Ci0gICAg
ICAgIGNhc2UgTm9ybWFsQ29tcG9zaXRpbmdMYXllcjoKLSAgICAgICAgICAgIGxheWVyVHlwZSA9
IEAiY29tcG9zaXRlZCI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUaWxlZENv
bXBvc2l0aW5nTGF5ZXI6Ci0gICAgICAgICAgICBsYXllclR5cGUgPSBAImNvbXBvc2l0ZWQ6IHRp
bGVkIGxheWVyIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1lZGlhQ29tcG9z
aXRpbmdMYXllcjoKLSAgICAgICAgICAgIGxheWVyVHlwZSA9IEAiY29tcG9zaXRlZCBmb3IgcGx1
Zy1pbiwgdmlkZW8gb3IgV2ViR0wiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
Q29udGFpbmVyQ29tcG9zaXRpbmdMYXllcjoKLSAgICAgICAgICAgIGxheWVyVHlwZSA9IEAiY29t
cG9zaXRlZDogY29udGFpbmVyIGxheWVyIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAg
ICAKLSAgICBpZiAoYmFja2luZy0+aGFzQ2xpcHBpbmdMYXllcigpKQotICAgICAgICBsYXllclR5
cGUgPSBbbGF5ZXJUeXBlIHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOkAiIChjbGlwcGluZykiXTsK
LQotICAgIGlmIChiYWNraW5nLT5oYXNBbmNlc3RvckNsaXBwaW5nTGF5ZXIoKSkKLSAgICAgICAg
bGF5ZXJUeXBlID0gW2xheWVyVHlwZSBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpAIiAoY2xpcHBl
ZCkiXTsKLQotICAgIHJldHVybiBsYXllclR5cGU7Ci19Ci0KLS0gKGlkKWluaXRXaXRoUmVuZGVy
TGF5ZXI6KFJlbmRlckxheWVyKilsYXllcgotewotICAgIGlmICgoc2VsZiA9IFtzdXBlciBpbml0
XSkpIHsKLSAgICAgICAgbmFtZSA9IFtbV2ViUmVuZGVyTGF5ZXIgbmFtZUZvckxheWVyOmxheWVy
XSByZXRhaW5dOwotICAgICAgICBib3VuZHMgPSBsYXllci0+YWJzb2x1dGVCb3VuZGluZ0JveCgp
OwotICAgICAgICBjb21wb3NpdGVkID0gbGF5ZXItPmlzQ29tcG9zaXRlZCgpOwotICAgICAgICBj
b21wb3NpdGluZ0luZm8gPSBbW1dlYlJlbmRlckxheWVyIGNvbXBvc2l0aW5nSW5mb0ZvckxheWVy
OmxheWVyXSByZXRhaW5dOwotICAgIH0KLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tIChpZClp
bml0V2l0aE5hbWU6KE5TU3RyaW5nKilsYXllck5hbWUKLXsKLSAgICBpZiAoKHNlbGYgPSBbc3Vw
ZXIgaW5pdF0pKSB7Ci0gICAgICAgIG5hbWUgPSBbbGF5ZXJOYW1lIGNvcHldOwotICAgICAgICBz
ZXBhcmF0b3IgPSBZRVM7Ci0gICAgfQotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS8vIE9ubHkg
Y2FsbGVkIG9uIHRoZSByb290LgotLSAoaWQpaW5pdFdpdGhXZWJGcmFtZTooV2ViRnJhbWUgKil3
ZWJGcmFtZQotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgCi0gICAgRnJhbWUqIGZy
YW1lID0gY29yZSh3ZWJGcmFtZSk7Ci0gICAgaWYgKCFmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCku
aGFzSFRNTFZpZXcoKSkgewotICAgICAgICBbc2VsZiByZWxlYXNlXTsKLSAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICB9Ci0gICAgCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGZyYW1lLT5j
b250ZW50UmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKSB7Ci0gICAgICAgIFtzZWxmIHJl
bGVhc2VdOwotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KLQotICAgIGlmIChyZW5kZXJlci0+
aGFzTGF5ZXIoKSkgewotICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBkb3duY2FzdDxSZW5k
ZXJCb3hNb2RlbE9iamVjdD4oKnJlbmRlcmVyKS5sYXllcigpOwotCi0gICAgICAgIG5hbWUgPSBb
W1dlYlJlbmRlckxheWVyIG5hbWVGb3JMYXllcjpsYXllcl0gcmV0YWluXTsKLSAgICAgICAgYm91
bmRzID0gbGF5ZXItPmFic29sdXRlQm91bmRpbmdCb3goKTsKLSAgICAgICAgY29tcG9zaXRlZCA9
IGxheWVyLT5pc0NvbXBvc2l0ZWQoKTsKLSAgICAgICAgY29tcG9zaXRpbmdJbmZvID0gW1tXZWJS
ZW5kZXJMYXllciBjb21wb3NpdGluZ0luZm9Gb3JMYXllcjpsYXllcl0gcmV0YWluXTsKLSAgICAK
LSAgICAgICAgW3NlbGYgYnVpbGREZXNjZW5kYW50TGF5ZXJzOmxheWVyXTsKLSAgICB9Ci0gICAg
Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtjaGlsZHJl
biByZWxlYXNlXTsKLSAgICBbbmFtZSByZWxlYXNlXTsKLSAgICBbY29tcG9zaXRpbmdJbmZvIHJl
bGVhc2VdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClidWlsZERlc2NlbmRh
bnRMYXllcnM6KFJlbmRlckxheWVyKilsYXllcgotewotICAgIE5TTXV0YWJsZUFycmF5ICpjaGls
ZFdlYkxheWVycyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwotCi0gICAgLy8gQnVp
bGQgY2hpbGRyZW4gaW4gYmFjayB0byBmcm9udCBvcmRlci4KLSAgICAKLSAgICBpZiAoVmVjdG9y
PFJlbmRlckxheWVyKj4qIG5lZ1pPcmRlckxpc3QgPSBsYXllci0+bmVnWk9yZGVyTGlzdCgpKSB7
Ci0gICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IG5lZ1pPcmRlckxpc3QtPnNpemUoKTsKLQotICAg
ICAgICBpZiAobGlzdFNpemUpIHsKLSAgICAgICAgICAgIFdlYlJlbmRlckxheWVyKiBuZXdMYXll
ciA9IFtbV2ViUmVuZGVyTGF5ZXIgYWxsb2NdIGluaXRXaXRoTmFtZTpAIi12ZSB6LW9yZGVyIGxp
c3QiXTsKLSAgICAgICAgICAgIFtjaGlsZFdlYkxheWVycyBhZGRPYmplY3Q6bmV3TGF5ZXJdOwot
ICAgICAgICAgICAgW25ld0xheWVyIHJlbGVhc2VdOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICBSZW5kZXJM
YXllciogY3VyTGF5ZXIgPSBuZWdaT3JkZXJMaXN0LT5hdChpKTsKLQotICAgICAgICAgICAgV2Vi
UmVuZGVyTGF5ZXIqIG5ld0xheWVyID0gW1tXZWJSZW5kZXJMYXllciBhbGxvY10gaW5pdFdpdGhS
ZW5kZXJMYXllcjpjdXJMYXllcl07Ci0gICAgICAgICAgICBbbmV3TGF5ZXIgYnVpbGREZXNjZW5k
YW50TGF5ZXJzOmN1ckxheWVyXTsKLQotICAgICAgICAgICAgW2NoaWxkV2ViTGF5ZXJzIGFkZE9i
amVjdDpuZXdMYXllcl07Ci0gICAgICAgICAgICBbbmV3TGF5ZXIgcmVsZWFzZV07Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5vcm1hbEZsb3dMaXN0
ID0gbGF5ZXItPm5vcm1hbEZsb3dMaXN0KCkpIHsKLSAgICAgICAgc2l6ZV90IGxpc3RTaXplID0g
bm9ybWFsRmxvd0xpc3QtPnNpemUoKTsKLQotICAgICAgICBpZiAobGlzdFNpemUpIHsKLSAgICAg
ICAgICAgIFdlYlJlbmRlckxheWVyKiBuZXdMYXllciA9IFtbV2ViUmVuZGVyTGF5ZXIgYWxsb2Nd
IGluaXRXaXRoTmFtZTpAIm5vcm1hbCBmbG93IGxpc3QiXTsKLSAgICAgICAgICAgIFtjaGlsZFdl
YkxheWVycyBhZGRPYmplY3Q6bmV3TGF5ZXJdOwotICAgICAgICAgICAgW25ld0xheWVyIHJlbGVh
c2VdOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGxpc3RTaXplOyArK2kpIHsKLSAgICAgICAgICAgIFJlbmRlckxheWVyKiBjdXJMYXllciA9IG5v
cm1hbEZsb3dMaXN0LT5hdChpKTsKLQotICAgICAgICAgICAgV2ViUmVuZGVyTGF5ZXIqIG5ld0xh
eWVyID0gW1tXZWJSZW5kZXJMYXllciBhbGxvY10gaW5pdFdpdGhSZW5kZXJMYXllcjpjdXJMYXll
cl07Ci0gICAgICAgICAgICBbbmV3TGF5ZXIgYnVpbGREZXNjZW5kYW50TGF5ZXJzOmN1ckxheWVy
XTsKLQotICAgICAgICAgICAgW2NoaWxkV2ViTGF5ZXJzIGFkZE9iamVjdDpuZXdMYXllcl07Ci0g
ICAgICAgICAgICBbbmV3TGF5ZXIgcmVsZWFzZV07Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBp
ZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIHBvc1pPcmRlckxpc3QgPSBsYXllci0+cG9zWk9yZGVy
TGlzdCgpKSB7Ci0gICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IHBvc1pPcmRlckxpc3QtPnNpemUo
KTsKLQotICAgICAgICBpZiAobGlzdFNpemUpIHsKLSAgICAgICAgICAgIFdlYlJlbmRlckxheWVy
KiBuZXdMYXllciA9IFtbV2ViUmVuZGVyTGF5ZXIgYWxsb2NdIGluaXRXaXRoTmFtZTpAIit2ZSB6
LW9yZGVyIGxpc3QiXTsKLSAgICAgICAgICAgIFtjaGlsZFdlYkxheWVycyBhZGRPYmplY3Q6bmV3
TGF5ZXJdOwotICAgICAgICAgICAgW25ld0xheWVyIHJlbGVhc2VdOwotICAgICAgICB9Ci0KLSAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7Ci0gICAgICAgICAg
ICBSZW5kZXJMYXllciogY3VyTGF5ZXIgPSBwb3NaT3JkZXJMaXN0LT5hdChpKTsKLQotICAgICAg
ICAgICAgV2ViUmVuZGVyTGF5ZXIqIG5ld0xheWVyID0gW1tXZWJSZW5kZXJMYXllciBhbGxvY10g
aW5pdFdpdGhSZW5kZXJMYXllcjpjdXJMYXllcl07Ci0gICAgICAgICAgICBbbmV3TGF5ZXIgYnVp
bGREZXNjZW5kYW50TGF5ZXJzOmN1ckxheWVyXTsKLQotICAgICAgICAgICAgW2NoaWxkV2ViTGF5
ZXJzIGFkZE9iamVjdDpuZXdMYXllcl07Ci0gICAgICAgICAgICBbbmV3TGF5ZXIgcmVsZWFzZV07
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBjaGlsZHJlbiA9IGNoaWxkV2ViTGF5ZXJzOwotfQot
Ci0tIChOU0FycmF5ICopY2hpbGRyZW4KLXsKLSAgICByZXR1cm4gY2hpbGRyZW47Ci19Ci0KLS0g
KE5TU3RyaW5nICopbmFtZQotewotICAgIHJldHVybiBuYW1lOwotfQotCi0tIChOU1N0cmluZyAq
KXBvc2l0aW9uU3RyaW5nCi17Ci0gICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiKCUuMGYsICUuMGYpIiwgYm91bmRzLm9yaWdpbi54LCBib3VuZHMub3JpZ2luLnldOwotfQot
Ci0tIChOU1N0cmluZyAqKXdpZHRoU3RyaW5nCi17Ci0gICAgcmV0dXJuIFtOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiJS4wZiIsIGJvdW5kcy5zaXplLndpZHRoXTsKLX0KLQotLSAoTlNTdHJp
bmcgKiloZWlnaHRTdHJpbmcKLXsKLSAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCIlLjBmIiwgYm91bmRzLnNpemUuaGVpZ2h0XTsKLX0KLQotLSAoTlNTdHJpbmcgKiljb21w
b3NpdGluZ0luZm8KLXsKLSAgICByZXR1cm4gY29tcG9zaXRpbmdJbmZvOwotfQotCi0tIChCT09M
KWlzQ29tcG9zaXRlZAotewotICAgIHJldHVybiBjb21wb3NpdGVkOwotfQotCi0tIChCT09MKWlz
U2VwYXJhdG9yCi17Ci0gICAgcmV0dXJuIHNlcGFyYXRvcjsKLX0KLQotQGVuZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJSZW5kZXJOb2RlLmggYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlJlbmRlck5vZGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggOGI1MjVhNjZhZTFhY2YwNWFlOGUzOGFmOTgwNWFmNDk5ZGQ1MGUxNS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlJlbmRlck5vZGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQg
PEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgotCi1AY2xhc3MgV2ViRnJhbWU7Ci0KLUBpbnRlcmZh
Y2UgV2ViUmVuZGVyTm9kZSA6IE5TT2JqZWN0Ci17Ci0gICAgTlNBcnJheSAqY2hpbGRyZW47Ci0g
ICAgTlNTdHJpbmcgKm5hbWU7Ci0gICAgTlNSZWN0IHJlY3Q7Ci0gICAgTlNQb2ludCBhYnNvbHV0
ZVBvc2l0aW9uOwotfQotCi0tIChpZClpbml0V2l0aFdlYkZyYW1lOihXZWJGcmFtZSAqKWZyYW1l
OwotCi0tIChOU0FycmF5ICopY2hpbGRyZW47Ci0KLS0gKE5TU3RyaW5nICopbmFtZTsKLS0gKE5T
U3RyaW5nICopcG9zaXRpb25TdHJpbmc7Ci0tIChOU1N0cmluZyAqKWFic29sdXRlUG9zaXRpb25T
dHJpbmc7Ci0tIChOU1N0cmluZyAqKXdpZHRoU3RyaW5nOwotLSAoTlNTdHJpbmcgKiloZWlnaHRT
dHJpbmc7Ci0KLUBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
UmVuZGVyTm9kZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUmVuZGVyTm9kZS5t
bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ZlYzJlNmVkYmQwYTBjNDIxMjc2NWUz
MWRlYmRjNjZhZGRhZTc3Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlJlbmRlck5vZGUubW0KKysrIC9k
ZXYvbnVsbApAQCAtMSwxODUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAw
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJXZWJSZW5kZXJOb2RlLmgiCi0KLSNp
bXBvcnQgIldlYkZyYW1lSW50ZXJuYWwuaCIKLSNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2Fk
ZXJDbGllbnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUmVuZGVySW5saW5lLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1JlbmRlclRleHQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyV2lkZ2V0Lmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1JlbmRlclZpZXcuaD4KLSNpbXBvcnQgPFdlYkNvcmUvV2lkZ2V0Lmg+
Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1zdGF0aWMgV2ViUmVuZGVyTm9kZSAqY29w
eVJlbmRlck5vZGUoUmVuZGVyT2JqZWN0Kik7Ci0KLUBpbXBsZW1lbnRhdGlvbiBXZWJSZW5kZXJO
b2RlCi0KLS0gKGlkKV9pbml0V2l0aENvcmVGcmFtZTooRnJhbWUgKilmcmFtZQotewotICAgIFtz
ZWxmIHJlbGVhc2VdOwotICAgIAotICAgIGlmICghZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmhh
c0hUTUxWaWV3KCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciA9IGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVy
KQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIHJldHVybiBjb3B5UmVuZGVyTm9kZShy
ZW5kZXJlcik7Ci19Ci0KLS0gKGlkKV9pbml0V2l0aE5hbWU6KE5TU3RyaW5nICopbiBwb3NpdGlv
bjooTlNQb2ludClwIHJlY3Q6KE5TUmVjdClyIGNvcmVGcmFtZTooRnJhbWUqKWNvcmVGcmFtZSBj
aGlsZHJlbjooTlNBcnJheSAqKWMKLXsKLSAgICBOU011dGFibGVBcnJheSAqY29sbGVjdENoaWxk
cmVuOwotICAgIAotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAg
ICAgICByZXR1cm4gbmlsOwotCi0gICAgY29sbGVjdENoaWxkcmVuID0gW2MgbXV0YWJsZUNvcHld
OwotCi0gICAgbmFtZSA9IFtuIHJldGFpbl07Ci0gICAgcmVjdCA9IHI7Ci0gICAgYWJzb2x1dGVQ
b3NpdGlvbiA9IHA7Ci0KLSAgICBpZiAoY29yZUZyYW1lKSB7Ci0gICAgICAgIFdlYlJlbmRlck5v
ZGUgKm5vZGUgPSBbW1dlYlJlbmRlck5vZGUgYWxsb2NdIF9pbml0V2l0aENvcmVGcmFtZTpjb3Jl
RnJhbWVdOwotICAgICAgICBbY29sbGVjdENoaWxkcmVuIGFkZE9iamVjdDpub2RlXTsKLSAgICAg
ICAgW25vZGUgcmVsZWFzZV07Ci0gICAgfQotICAgIAotICAgIGNoaWxkcmVuID0gW2NvbGxlY3RD
aGlsZHJlbiBjb3B5XTsKLSAgICBbY29sbGVjdENoaWxkcmVuIHJlbGVhc2VdOwotICAgIAotICAg
IHJldHVybiBzZWxmOwotfQotCi1zdGF0aWMgV2ViUmVuZGVyTm9kZSAqY29weVJlbmRlck5vZGUo
UmVuZGVyT2JqZWN0KiBub2RlKQotewotICAgIE5TTXV0YWJsZUFycmF5ICpjaGlsZHJlbiA9IFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwotICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGls
ZCA9IG5vZGUtPmZpcnN0Q2hpbGRTbG93KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2li
bGluZygpKSB7Ci0gICAgICAgIFdlYlJlbmRlck5vZGUgKmNoaWxkQ29weSA9IGNvcHlSZW5kZXJO
b2RlKGNoaWxkKTsKLSAgICAgICAgW2NoaWxkcmVuIGFkZE9iamVjdDpjaGlsZENvcHldOwotICAg
ICAgICBbY2hpbGRDb3B5IHJlbGVhc2VdOwotICAgIH0KLQotICAgIE5TU3RyaW5nICpuYW1lID0g
W1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhVVEY4U3RyaW5nOm5vZGUtPnJlbmRlck5hbWUoKV07
Ci0gICAgCi0gICAgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXQgPSBpczxSZW5kZXJXaWRnZXQ+
KCpub2RlKSA/IGRvd25jYXN0PFJlbmRlcldpZGdldD4obm9kZSkgOiBudWxscHRyOwotICAgIFdp
ZGdldCogd2lkZ2V0ID0gcmVuZGVyV2lkZ2V0ID8gcmVuZGVyV2lkZ2V0LT53aWRnZXQoKSA6IG51
bGxwdHI7Ci0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBpczxGcmFtZVZpZXc+KHdpZGdldCkg
PyBkb3duY2FzdDxGcmFtZVZpZXc+KHdpZGdldCkgOiBudWxscHRyOwotICAgIEZyYW1lKiBmcmFt
ZSA9IGZyYW1lVmlldyA/ICZmcmFtZVZpZXctPmZyYW1lKCkgOiBudWxscHRyOwotCi0gICAgLy8g
RklYTUU6IGJyb2tlbiB3aXRoIHRyYW5zZm9ybXMKLSAgICBGbG9hdFBvaW50IGFic1BvcyA9IG5v
ZGUtPmxvY2FsVG9BYnNvbHV0ZSgpOwotICAgIGludCB4ID0gMDsKLSAgICBpbnQgeSA9IDA7Ci0g
ICAgaW50IHdpZHRoID0gMDsKLSAgICBpbnQgaGVpZ2h0ID0gMDsKLSAgICBpZiAoaXM8UmVuZGVy
Qm94Pigqbm9kZSkpIHsKLSAgICAgICAgUmVuZGVyQm94JiBib3ggPSBkb3duY2FzdDxSZW5kZXJC
b3g+KCpub2RlKTsKLSAgICAgICAgeCA9IGJveC54KCk7Ci0gICAgICAgIHkgPSBib3gueSgpOwot
ICAgICAgICB3aWR0aCA9IGJveC53aWR0aCgpOwotICAgICAgICBoZWlnaHQgPSBib3guaGVpZ2h0
KCk7Ci0gICAgfSBlbHNlIGlmIChpczxSZW5kZXJUZXh0Pigqbm9kZSkpIHsKLSAgICAgICAgLy8g
RklYTUU6IFByZXNlcnZlIG9sZCBiZWhhdmlvciBldmVuIHRob3VnaCBpdCdzIHN0cmFuZ2UuCi0g
ICAgICAgIFJlbmRlclRleHQmIHRleHQgPSBkb3duY2FzdDxSZW5kZXJUZXh0Pigqbm9kZSk7Ci0g
ICAgICAgIEludFBvaW50IGZpcnN0UnVuTG9jYXRpb24gPSB0ZXh0LmZpcnN0UnVuTG9jYXRpb24o
KTsKLSAgICAgICAgeCA9IGZpcnN0UnVuTG9jYXRpb24ueCgpOwotICAgICAgICB5ID0gZmlyc3RS
dW5Mb2NhdGlvbi55KCk7Ci0gICAgICAgIEludFJlY3QgYm94ID0gdGV4dC5saW5lc0JvdW5kaW5n
Qm94KCk7Ci0gICAgICAgIHdpZHRoID0gYm94LndpZHRoKCk7Ci0gICAgICAgIGhlaWdodCA9IGJv
eC5oZWlnaHQoKTsKLSAgICB9IGVsc2UgaWYgKGlzPFJlbmRlcklubGluZT4oKm5vZGUpKSB7Ci0g
ICAgICAgIFJlbmRlcklubGluZSYgaW5saW5lRmxvdyA9IGRvd25jYXN0PFJlbmRlcklubGluZT4o
Km5vZGUpOwotICAgICAgICBJbnRSZWN0IGJvdW5kaW5nQm94ID0gaW5saW5lRmxvdy5ib3JkZXJC
b3VuZGluZ0JveCgpOwotICAgICAgICB4ID0gYm91bmRpbmdCb3gueCgpOwotICAgICAgICB5ID0g
Ym91bmRpbmdCb3gueSgpOwotICAgICAgICB3aWR0aCA9IGJvdW5kaW5nQm94LndpZHRoKCk7Ci0g
ICAgICAgIGhlaWdodCA9IGJvdW5kaW5nQm94LmhlaWdodCgpOwotICAgIH0KLQotICAgIFdlYlJl
bmRlck5vZGUgKnJlc3VsdCA9IFtbV2ViUmVuZGVyTm9kZSBhbGxvY10gX2luaXRXaXRoTmFtZTpu
YW1lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBvc2l0aW9uOmFic1BvcyByZWN0Ok5TTWFrZVJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b3JlRnJhbWU6ZnJhbWUgY2hpbGRyZW46Y2hpbGRyZW5dOwotCi0gICAgW25hbWUgcmVsZWFzZV07
Ci0gICAgW2NoaWxkcmVuIHJlbGVhc2VdOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAo
aWQpaW5pdFdpdGhXZWJGcmFtZTooV2ViRnJhbWUgKilmcmFtZQotewotICAgIHJldHVybiBbc2Vs
ZiBfaW5pdFdpdGhDb3JlRnJhbWU6Y29yZShmcmFtZSldOwotfQotCi0tICh2b2lkKWRlYWxsb2MK
LXsKLSAgICBbY2hpbGRyZW4gcmVsZWFzZV07Ci0gICAgW25hbWUgcmVsZWFzZV07Ci0gICAgW3N1
cGVyIGRlYWxsb2NdOwotfQotCi0tIChOU0FycmF5ICopY2hpbGRyZW4KLXsKLSAgICByZXR1cm4g
Y2hpbGRyZW47Ci19Ci0KLS0gKE5TU3RyaW5nICopbmFtZQotewotICAgIHJldHVybiBuYW1lOwot
fQotCi0tIChOU1N0cmluZyAqKWFic29sdXRlUG9zaXRpb25TdHJpbmcKLXsKLSAgICByZXR1cm4g
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIoJS4wZiwgJS4wZikiLCBhYnNvbHV0ZVBvc2l0
aW9uLngsIGFic29sdXRlUG9zaXRpb24ueV07Ci19Ci0KLS0gKE5TU3RyaW5nICopcG9zaXRpb25T
dHJpbmcKLXsKLSAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIoJS4wZiwg
JS4wZikiLCByZWN0Lm9yaWdpbi54LCByZWN0Lm9yaWdpbi55XTsKLX0KLQotLSAoTlNTdHJpbmcg
Kil3aWR0aFN0cmluZwotewotICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IiUuMGYiLCByZWN0LnNpemUud2lkdGhdOwotfQotCi0tIChOU1N0cmluZyAqKWhlaWdodFN0cmlu
ZwotewotICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiUuMGYiLCByZWN0
LnNpemUuaGVpZ2h0XTsKLX0KLQotQGVuZAo=
</data>
<flag name="review"
          id="264386"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>