In reference to #911612: Hidden attachments in some email clients I would like to request to improve the support of multipart messages with multipart/mixed content-type.

It appears that not every mail client can display attachments nested in a 'multipart/related'. In order to make this work we should wrap the whole message in a 'multipart/mixed'. However currently SMTP module's support for this content-type is limited and can't handle this kind of nesting:

alternative body with embedded objects and attachment
-----------------------------------------------------
Content-Type: multipart/mixed
--Content-Type: multipart/related
----Content-Type: multipart/alternative
------Content-Type: text/plain
------Content-Type: text/html
----Content-Type: image/png
--Content-Type: application/msword

This works with the default Mime Mail engine, but, since a lot of people are using Mime Mail with SMTP and it has more than twelve thousand users, I would rather see the needed support in SMTP module, before making this change in Mime Mail.

Comments

sgabe’s picture

Status: Active » Needs work
StatusFileSize
new3.09 KB

Initial patch to support Mime Mail beyond the alpha8 version. Attachments and embedded images seems to not work.

oneoftwo’s picture

Priority: Normal » Major

subscribe. this is important, unfortunately can't work on it myself currently.

mattconnolly’s picture

subscribe too. This no doubt has quite a bit of overlap in areas where I made a patch to fix issue #1189940.

See http://drupal.org/node/1189940

regilero’s picture

Version: 6.x-1.x-dev » 7.x-1.x-dev
StatusFileSize
new999 bytes

+1

This is an ugly patch for 7.x version, where at least Drupal is not crashing on empty body, and it seems I have my multipart/mixed/[multipart/related[multipart/alternative]] message sent.

Real patch would need functions on this code, recursive functions. As you can make multipart things inside multiparts as much as you want. Or maybe a way to avoid altering mails prepared by mimemail?

josesanmartin’s picture

regilero, how do you recommend testing this patch? In which way does one reproduce the error?

regilero’s picture

We have a mail produced by mimemail with:

--* mixed
--*-- related
--*--*-- alternative
--*--*--*-- text
--*--*--*-- html
--*--*-- img
--*--*-- img
--*--*-- img

In more details:

MIME-Version: 1.0
Content-Transfer-Encoding: 8Bit
Content-Type: multipart/mixed; charset="UTF-8"

This is a multi-part message in MIME format.

--034aa9060128d626e68ed1c0f521b4d6
Content-Type: multipart/related;
type="multipart/alternative";
boundary="cb7931a7b35d7e5481f66361367ff49f"
Content-Transfer-Encoding: 8bit

--cb7931a7b35d7e5481f66361367ff49f
Content-Type: multipart/alternative;
boundary="7d4e902a39f0bd9833bee33a5879daf9"
Content-Transfer-Encoding: 8bit

--7d4e902a39f0bd9833bee33a5879daf9
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit

(text)

--7d4e902a39f0bd9833bee33a5879daf9
Content-Type: text/html;

(html)

--7d4e902a39f0bd9833bee33a5879daf9--

--cb7931a7b35d7e5481f66361367ff49f
Content-Type: image/gif
Content-Transfer-Encoding: base64
(...)

--cb7931a7b35d7e5481f66361367ff49f
Content-Type: image/gif
(...)

--cb7931a7b35d7e5481f66361367ff49f
Content-Type: image/gif;
(...)

--cb7931a7b35d7e5481f66361367ff49f
Content-Type: image/gif;
(...)

--cb7931a7b35d7e5481f66361367ff49f
Content-Type: image/gif;
(...)

--cb7931a7b35d7e5481f66361367ff49f
Content-Type: image/gif;
(...)

--cb7931a7b35d7e5481f66361367ff49f
Content-Type: image/gif;
(...)

--cb7931a7b35d7e5481f66361367ff49f
Content-Type: image/gif;
(...)

--cb7931a7b35d7e5481f66361367ff49f--

--034aa9060128d626e68ed1c0f521b4d6--

This fails with the empty body message. Now, current implementation should be reviewed to handle such messages. Content-Type detection should not be strpos() function calls but instead a fine analysis of block headers, and Blocks should be handled recursively, as the mime block imbrications can be used in a lot of different ways.

yonailo’s picture

Issue summary: View changes

Does anybody work on this ?

pounard’s picture

I think that #1822870: Smtp breaks emails with multipart bodies is more or less linked to this issue. See my comment https://www.drupal.org/node/1822870#comment-9448725 where I did something which appears to be a side effect of the patch in #4.

pounard’s picture

Status: Needs work » Needs review
StatusFileSize
new1.1 KB

Here is an even uglier patch than #4.

zambrey’s picture

Status: Needs review » Needs work

Tried both patches but without much success.
At least the mail is sent but the body is still empty.

pounard’s picture

Yes, I just stopped using the SMTP module at all and wrote my own code for SMTP support.

amir_razavi’s picture

I have similar problem (get update messages very similar to #6), tried both patches without any luck! This is what I get:

This is a multi-part message in MIME format.

--725439805183e20399bc7143bf77b1b851c4ca862
Content-Type: multipart/related;
type="multipart/alternative";
boundary="f4fea373259afd930de9ac04bcbda73664934aa91"
Content-Transfer-Encoding: 8bit

--f4fea373259afd930de9ac04bcbda73664934aa91
Content-Type: multipart/alternative;
boundary="db4194566ea1afdb5b8c19188fbcb8b47ff8793d0"
Content-Transfer-Encoding: 8bit

--db4194566ea1afdb5b8c19188fbcb8b47ff8793d0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit

--db4194566ea1afdb5b8c19188fbcb8b47ff8793d0
Content-Type: text/html; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: base64

PGh0bWw+CiAgPGhlYWQ+CiAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4KICAgICAgICA8c3R5bGUgdHlwZT0idGV4
dC9jc3MiPgogICAgICA8IS0tCiAgICAgIGFydGljbGUsYXNpZGUsZGV0YWlscyxmaWdjYXB0aW9u
LGZpZ3VyZSxmb290ZXIsaGVhZGVyLG1haW4sbmF2LHNlY3Rpb24sc3VtbWFyeXtkaXNwbGF5OmJs
b2NrO31hdWRpbyxjYW52YXMsdmlkZW97ZGlzcGxheTppbmxpbmUtYmxvY2s7KmRpc3BsYXk6aW5s
aW5lOyp6b29tOjE7fWF1ZGlvOm5vdChbY29udHJvbHNdKXtkaXNwbGF5Om5vbmU7aGVpZ2h0OjA7
fVtoaWRkZW5de2Rpc3BsYXk6bm9uZTt9aHRtbHtmb250LWZhbWlseTpWZXJkYW5hLFRhaG9tYSwi
RGVqYVZ1IFNhbnMiLHNhbnMtc2VyaWY7Zm9udC1zaXplOjc1JTtmb250LXNpemU6ODcuNSU7Zm9u
dC1zaXplOjEwMCU7LW1zLXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTstd2Via2l0LXRleHQtc2l6ZS1h
ZGp1c3Q6MTAwJTtsaW5lLWhlaWdodDoxLjVlbTt9YnV0dG9uLGlucHV0LHNlbGVjdCx0ZXh0YXJl
YXtmb250LWZhbWlseTpWZXJkYW5hLFRhaG9tYSwiRGVqYVZ1IFNhbnMiLHNhbnMtc2VyaWY7fWJv
ZHl7bWFyZ2luOjA7cGFkZGluZzowO31hOmxpbmt7fWE6dmlzaXRlZHt9YTpob3ZlcixhOmZvY3Vz
e31hOmFjdGl2ZXt9YTpmb2N1c3tvdXRsaW5lOnRoaW4gZG90dGVkO31hOmFjdGl2ZSxhOmhvdmVy
e291dGxpbmU6MDt9cCxwcmV7bWFyZ2luOjEuNWVtIDA7fWJsb2NrcXVvdGV7bWFyZ2luOjEuNWVt
CjMwcHg7fWgxe2ZvbnQtc2l6ZToyZW07bGluZS1oZWlnaHQ6MS41ZW07bWFyZ2luLXRvcDowLjc1
ZW07bWFyZ2luLWJvdHRvbTowLjc1ZW07fWgye2ZvbnQtc2l6ZToxLjVlbTtsaW5lLWhlaWdodDoy
ZW07bWFyZ2luLXRvcDoxZW07bWFyZ2luLWJvdHRvbToxZW07fWgze2ZvbnQtc2l6ZToxLjE3ZW07
bGluZS1oZWlnaHQ6MS4yODIwNWVtO21hcmdpbi10b3A6MS4yODIwNWVtO21hcmdpbi1ib3R0b206
MS4yODIwNWVtO31oNHtmb250LXNpemU6MWVtO2xpbmUtaGVpZ2h0OjEuNWVtO21hcmdpbi10b3A6
MS41ZW07bWFyZ2luLWJvdHRvbToxLjVlbTt9aDV7Zm9udC1zaXplOjAuODNlbTtsaW5lLWhlaWdo
dDoxLjgwNzIzZW07bWFyZ2luLXRvcDoxLjgwNzIzZW07bWFyZ2luLWJvdHRvbToxLjgwNzIzZW07
fWg2e2ZvbnQtc2l6ZTowLjY3ZW07bGluZS1oZWlnaHQ6Mi4yMzg4MWVtO21hcmdpbi10b3A6Mi4y
Mzg4MWVtO21hcmdpbi1ib3R0b206Mi4yMzg4MWVtO31hYmJyW3RpdGxlXXtib3JkZXItYm90dG9t
OjFweCBkb3R0ZWQ7fWIsc3Ryb25ne2ZvbnQtd2VpZ2h0OmJvbGQ7fWRmbntmb250LXN0eWxlOml0
YWxpYzt9aHJ7LXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy1tb3otYm94LXNpemluZzpj
b250ZW50LWJveDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2hlaWdodDowO2JvcmRlcjoxcHggc29s
aWQKIzY2NjtwYWRkaW5nLWJvdHRvbTotMXB4O21hcmdpbjoxLjVlbSAwO31tYXJre2JhY2tncm91
bmQ6I2ZmMDtjb2xvcjojMDAwO31jb2RlLGtiZCxwcmUsc2FtcCx0dCx2YXJ7Zm9udC1mYW1pbHk6
IkNvdXJpZXIgTmV3IiwiRGVqYVZ1IFNhbnMgTW9ubyIsbW9ub3NwYWNlLHNhbnMtc2VyaWY7X2Zv
bnQtZmFtaWx5Oidjb3VyaWVyIG5ldycsbW9ub3NwYWNlO2ZvbnQtc2l6ZToxZW07bGluZS1oZWln
aHQ6MS41ZW07fXByZXt3aGl0ZS1zcGFjZTpwcmU7d2hpdGUtc3BhY2U6cHJlLXdyYXA7d29yZC13
cmFwOmJyZWFrLXdvcmQ7fXF7cXVvdGVzOiJcMjAxQyIgIlwyMDFEIiAiXDIwMTgiICJcMjAxOSI7
fXNtYWxse2ZvbnQtc2l6ZTo4MCU7fXN1YixzdXB7Zm9udC1zaXplOjc1JTtsaW5lLWhlaWdodDow
O3Bvc2l0aW9uOnJlbGF0aXZlO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO31zdXB7dG9wOi0wLjVl
bTt9c3Vie2JvdHRvbTotMC4yNWVtO31kbCxtZW51LG9sLHVse21hcmdpbjoxLjVlbSAwO31vbCBv
bCxvbCB1bCx1bCBvbCx1bCB1bHttYXJnaW46MDt9ZGR7bWFyZ2luOjAgMCAwIDMwcHg7fW1lbnUs
b2wsdWx7cGFkZGluZzowIDAgMCAzMHB4O31uYXYgdWwsbmF2Cm9se2xpc3Qtc3R5bGU6bm9uZTts
aXN0LXN0eWxlLWltYWdlOm5vbmU7fWltZ3tib3JkZXI6MDstbXMtaW50ZXJwb2xhdGlvbi1tb2Rl
OmJpY3ViaWM7bWF4LXdpZHRoOjEwMCU7aGVpZ2h0OmF1dG87d2lkdGg6YXV0bzt9c3ZnOm5vdCg6
cm9vdCl7b3ZlcmZsb3c6aGlkZGVuO31maWd1cmV7bWFyZ2luOjA7fWZvcm17bWFyZ2luOjA7fSNz
ZWFyY2gtYmxvY2stZm9ybXttYXJnaW46MDtmbG9hdDpyaWdodDt9ZmllbGRzZXR7Ym9yZGVyOjFw
eCBzb2xpZCAjYzBjMGMwO21hcmdpbjowIDJweDtwYWRkaW5nOjAuNWVtIDAuNjI1ZW0gMWVtO31s
ZWdlbmR7Ym9yZGVyOjA7cGFkZGluZzowOyptYXJnaW4tbGVmdDotN3B4O31idXR0b24saW5wdXQs
c2VsZWN0LHRleHRhcmVhe2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOjEwMCU7bWFyZ2lu
OjA7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7KnZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXgtd2lk
dGg6MTAwJTstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9y
ZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7fWJ1dHRvbixpbnB1dHtsaW5lLWhlaWdodDpu
b3JtYWw7fWJ1dHRvbixzZWxlY3R7dGV4dC10cmFuc2Zvcm06bm9uZTt9YnV0dG9uLGh0bWwKaW5w
dXRbdHlwZT0iYnV0dG9uIl0saW5wdXRbdHlwZT0icmVzZXQiXSxpbnB1dFt0eXBlPSJzdWJtaXQi
XXstd2Via2l0LWFwcGVhcmFuY2U6YnV0dG9uO2N1cnNvcjpwb2ludGVyOypvdmVyZmxvdzp2aXNp
YmxlO31idXR0b25bZGlzYWJsZWRdLGh0bWwKaW5wdXRbZGlzYWJsZWRde2N1cnNvcjpkZWZhdWx0
O31pbnB1dFt0eXBlPSJjaGVja2JveCJdLGlucHV0W3R5cGU9InJhZGlvIl17LXdlYmtpdC1ib3gt
c2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpi
b3JkZXItYm94O3BhZGRpbmc6MDsqaGVpZ2h0OjEzcHg7KndpZHRoOjEzcHg7fWlucHV0W3R5cGU9
InNlYXJjaCJdey13ZWJraXQtYXBwZWFyYW5jZTp0ZXh0ZmllbGQ7LXdlYmtpdC1ib3gtc2l6aW5n
OmNvbnRlbnQtYm94Oy1tb3otYm94LXNpemluZzpjb250ZW50LWJveDtib3gtc2l6aW5nOmNvbnRl
bnQtYm94O31pbnB1dFt0eXBlPSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRv
bixpbnB1dFt0eXBlPSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbnstd2Via2l0
LWFwcGVhcmFuY2U6bm9uZTt9YnV0dG9uOjotbW96LWZvY3VzLWlubmVyLGlucHV0OjotbW96LWZv
Y3VzLWlubmVye2JvcmRlcjowO3BhZGRpbmc6MDt9dGV4dGFyZWF7b3ZlcmZsb3c6YXV0bzt2ZXJ0
aWNhbC1hbGlnbjp0b3A7fWxhYmVse2Rpc3BsYXk6YmxvY2s7Zm9udC13ZWlnaHQ6Ym9sZDt9dGFi
bGV7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO2JvcmRlci1zcGFjaW5nOjA7bWFyZ2luLXRvcDox
LjVlbTttYXJnaW4tYm90dG9tOjEuNWVtO31pbnB1dC5mb3JtLXRleHR7bWF4LXdpZHRoOjI1MHB4
O21pbi13aWR0aDoxMDBweDt3aWR0aDoyNTBweDt9LnZpZXctY29udGVudAp0YWJsZXt3aWR0aDo5
NSU7fS5maWx0ZXItd3JhcHBlcntkaXNwbGF5Om5vbmU7fQojcGFnZSwucmVnaW9uLWJvdHRvbXtt
YXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvO21heC13aWR0aDoxNzAwcHg7fSNoZWFk
ZXIsI2NvbnRlbnQsI25hdmlnYXRpb24sLnJlZ2lvbi1zaWRlYmFyLWZpcnN0LC5yZWdpb24tc2lk
ZWJhci1zZWNvbmQsI2Zvb3RlcntwYWRkaW5nLWxlZnQ6MTBweDtwYWRkaW5nLXJpZ2h0OjEwcHg7
LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7
LW1zLWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7d29yZC13cmFw
OmJyZWFrLXdvcmQ7KmJlaGF2aW9yOnVybCgiL3BhdGgvdG8vYm94c2l6aW5nLmh0YyIpO19kaXNw
bGF5OmlubGluZTtfb3ZlcmZsb3c6aGlkZGVuO19vdmVyZmxvdy15OnZpc2libGU7fSNoZWFkZXIs
I21haW4sI2Zvb3RlcnsqcG9zaXRpb246cmVsYXRpdmU7Knpvb206MTt9I2hlYWRlcjpiZWZvcmUs
I2hlYWRlcjphZnRlciwjbWFpbjpiZWZvcmUsI21haW46YWZ0ZXIsI2Zvb3RlcjpiZWZvcmUsI2Zv
b3RlcjphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6dGFibGU7fSNoZWFkZXI6YWZ0ZXIsI21haW46
YWZ0ZXIsI2Zvb3RlcjphZnRlcntjbGVhcjpib3RoO31AbWVkaWEgYWxsIGFuZAoobWluLXdpZHRo
OjQ4MHB4KXsjbWFpbntwYWRkaW5nLXRvcDozZW07cG9zaXRpb246cmVsYXRpdmU7fSNuYXZpZ2F0
aW9ue3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2hlaWdodDozZW07d2lkdGg6MTAwJTt9fUBtZWRp
YSBhbGwgYW5kIChtaW4td2lkdGg6NDgwcHgpIGFuZCAobWF4LXdpZHRoOjEwMjNweCl7LnNpZGVi
YXItZmlyc3QgI2NvbnRlbnR7ZmxvYXQ6bGVmdDt3aWR0aDo2Ni42NjY2NyU7bWFyZ2luLWxlZnQ6
MzMuMzMzMzMlO21hcmdpbi1yaWdodDotMTAwJTt9LnNpZGViYXItZmlyc3QgLnJlZ2lvbi1zaWRl
YmFyLWZpcnN0e2Zsb2F0OmxlZnQ7d2lkdGg6MzMuMzMzMzMlO21hcmdpbi1sZWZ0OjAlO21hcmdp
bi1yaWdodDotMzMuMzMzMzMlO30uc2lkZWJhci1zZWNvbmQgI2NvbnRlbnR7ZmxvYXQ6bGVmdDt3
aWR0aDo3OSU7bWFyZ2luLWxlZnQ6MCU7bWFyZ2luLXJpZ2h0Oi03OSU7fS5zaWRlYmFyLXNlY29u
ZCAucmVnaW9uLXNpZGViYXItc2Vjb25ke2Zsb2F0OmxlZnQ7d2lkdGg6MjAlO21hcmdpbi1sZWZ0
OjgwJTttYXJnaW4tcmlnaHQ6LTEwMCU7Zm9udC1zaXplOjY1JTt9LnR3by1zaWRlYmFycyAjY29u
dGVudHtmbG9hdDpsZWZ0O3dpZHRoOjY2LjY2NjY3JTttYXJnaW4tbGVmdDozMy4zMzMzMyU7bWFy
Z2luLXJpZ2h0Oi0xMDAlO30udHdvLXNpZGViYXJzCi5yZWdpb24tc2lkZWJhci1maXJzdHtmbG9h
dDpsZWZ0O3dpZHRoOjMzLjMzMzMzJTttYXJnaW4tbGVmdDowJTttYXJnaW4tcmlnaHQ6LTMzLjMz
MzMzJTt9LnR3by1zaWRlYmFycyAucmVnaW9uLXNpZGViYXItc2Vjb25ke2Rpc3BsYXk6bm9uZTt9
LnR3by1zaWRlYmFycyAucmVnaW9uLXNpZGViYXItc2Vjb25kIC5ibG9ja3twYWRkaW5nLWxlZnQ6
MTBweDtwYWRkaW5nLXJpZ2h0OjEwcHg7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtp
dC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1zLWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6
aW5nOmJvcmRlci1ib3g7d29yZC13cmFwOmJyZWFrLXdvcmQ7KmJlaGF2aW9yOnVybCgiL3BhdGgv
dG8vYm94c2l6aW5nLmh0YyIpO19kaXNwbGF5OmlubGluZTtfb3ZlcmZsb3c6aGlkZGVuO19vdmVy
Zmxvdy15OnZpc2libGU7fS50d28tc2lkZWJhcnMgLnJlZ2lvbi1zaWRlYmFyLXNlY29uZCAuYmxv
Y2s6bnRoLWNoaWxkKDNuKzEpe2Zsb2F0OmxlZnQ7d2lkdGg6MzMuMzMzMzMlO21hcmdpbi1sZWZ0
OjAlO21hcmdpbi1yaWdodDotMzMuMzMzMzMlO2NsZWFyOmxlZnQ7fS50d28tc2lkZWJhcnMgLnJl
Z2lvbi1zaWRlYmFyLXNlY29uZAouYmxvY2s6bnRoLWNoaWxkKDNuKzIpe2Zsb2F0OmxlZnQ7d2lk
dGg6MzMuMzMzMzMlO21hcmdpbi1sZWZ0OjMzLjMzMzMzJTttYXJnaW4tcmlnaHQ6LTY2LjY2NjY3
JTt9LnR3by1zaWRlYmFycyAucmVnaW9uLXNpZGViYXItc2Vjb25kIC5ibG9jazpudGgtY2hpbGQo
M24pe2Zsb2F0OmxlZnQ7d2lkdGg6MzMuMzMzMzMlO21hcmdpbi1sZWZ0OjY2LjY2NjY3JTttYXJn
aW4tcmlnaHQ6LTEwMCU7fX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjEwMjRweCl7LnNpZGVi
YXItZmlyc3QgI2NvbnRlbnR7ZmxvYXQ6bGVmdDt3aWR0aDo4MCU7bWFyZ2luLWxlZnQ6MjAlO21h
cmdpbi1yaWdodDotMTAwJTt9LnNpZGViYXItZmlyc3QgLnJlZ2lvbi1zaWRlYmFyLWZpcnN0e2Zs
b2F0OmxlZnQ7d2lkdGg6MjAlO21hcmdpbi1sZWZ0OjAlO21hcmdpbi1yaWdodDotMjAlO30uc2lk
ZWJhci1zZWNvbmQgI2NvbnRlbnR7ZmxvYXQ6bGVmdDt3aWR0aDo4MCU7bWFyZ2luLWxlZnQ6MCU7
bWFyZ2luLXJpZ2h0Oi04MCU7fS5zaWRlYmFyLXNlY29uZCAucmVnaW9uLXNpZGViYXItc2Vjb25k
e2Zsb2F0OmxlZnQ7d2lkdGg6MjAlO21hcmdpbi1sZWZ0OjgwJTttYXJnaW4tcmlnaHQ6LTEwMCU7
fS50d28tc2lkZWJhcnMgI2NvbnRlbnR7ZmxvYXQ6bGVmdDt3aWR0aDo2MCU7bWFyZ2luLWxlZnQ6
MjAlO21hcmdpbi1yaWdodDotODAlO30udHdvLXNpZGViYXJzCi5yZWdpb24tc2lkZWJhci1maXJz
dHtmbG9hdDpsZWZ0O3dpZHRoOjIwJTttYXJnaW4tbGVmdDowJTttYXJnaW4tcmlnaHQ6LTIwJTt9
LnR3by1zaWRlYmFycyAucmVnaW9uLXNpZGViYXItc2Vjb25ke2Zsb2F0OmxlZnQ7d2lkdGg6MTUl
O21hcmdpbi1sZWZ0Ojg1JTttYXJnaW4tcmlnaHQ6LTEwMCU7fS5yZWdpb24tc2lkZWJhci1zZWNv
bmR7Zm9udC1zaXplOjkwJTt9fS5yZWdpb24tc2lkZWJhci1maXJzdCBpbnB1dC5mb3JtLXRleHR7
ZmxvYXQ6bGVmdDt3aWR0aDo4NSU7bWFyZ2luLWxlZnQ6MCU7bWFyZ2luLXJpZ2h0Oi0xMCU7fQou
d2l0aC13aXJlZnJhbWVzICNoZWFkZXIsLndpdGgtd2lyZWZyYW1lcyAjbWFpbiwud2l0aC13aXJl
ZnJhbWVzICNjb250ZW50LC53aXRoLXdpcmVmcmFtZXMgI25hdmlnYXRpb24sLndpdGgtd2lyZWZy
YW1lcyAucmVnaW9uLXNpZGViYXItZmlyc3QsLndpdGgtd2lyZWZyYW1lcyAucmVnaW9uLXNpZGVi
YXItc2Vjb25kLC53aXRoLXdpcmVmcmFtZXMgI2Zvb3Rlciwud2l0aC13aXJlZnJhbWVzIC5yZWdp
b24tYm90dG9te291dGxpbmU6MXB4IHNvbGlkICNjY2M7fS5sdC1pZTggLndpdGgtd2lyZWZyYW1l
cyAjaGVhZGVyLC5sdC1pZTggLndpdGgtd2lyZWZyYW1lcyAjbWFpbiwubHQtaWU4IC53aXRoLXdp
cmVmcmFtZXMgI2NvbnRlbnQsLmx0LWllOCAud2l0aC13aXJlZnJhbWVzICNuYXZpZ2F0aW9uLC5s
dC1pZTggLndpdGgtd2lyZWZyYW1lcyAucmVnaW9uLXNpZGViYXItZmlyc3QsLmx0LWllOCAud2l0
aC13aXJlZnJhbWVzIC5yZWdpb24tc2lkZWJhci1zZWNvbmQsLmx0LWllOCAud2l0aC13aXJlZnJh
bWVzICNmb290ZXIsLmx0LWllOCAud2l0aC13aXJlZnJhbWVzIC5yZWdpb24tYm90dG9te2JvcmRl
cjoxcHggc29saWQgI2NjYzt9LmVsZW1lbnQtaW52aXNpYmxlLC5lbGVtZW50LWZvY3VzYWJsZSwj
bmF2aWdhdGlvbiAuYmxvY2stbWVudSAuYmxvY2tfX3RpdGxlLCNuYXZpZ2F0aW9uIC5ibG9jay1t
ZW51LWJsb2NrCi5ibG9ja19fdGl0bGV7cG9zaXRpb246YWJzb2x1dGUgIWltcG9ydGFudDtoZWln
aHQ6MXB4O3dpZHRoOjFweDtvdmVyZmxvdzpoaWRkZW47Y2xpcDpyZWN0KDFweCAxcHggMXB4IDFw
eCk7Y2xpcDpyZWN0KDFweCwxcHgsMXB4LDFweCk7fS5lbGVtZW50LWZvY3VzYWJsZTphY3RpdmUs
LmVsZW1lbnQtZm9jdXNhYmxlOmZvY3Vze3Bvc2l0aW9uOnN0YXRpYyAhaW1wb3J0YW50O2NsaXA6
YXV0bztoZWlnaHQ6YXV0bzt3aWR0aDphdXRvO292ZXJmbG93OmF1dG87fSNza2lwLWxpbmt7bWFy
Z2luOjA7fSNza2lwLWxpbmsgYSwjc2tpcC1saW5rIGE6dmlzaXRlZHtkaXNwbGF5OmJsb2NrO3dp
ZHRoOjEwMCU7cGFkZGluZzoycHggMCAzcHgKMDt0ZXh0LWFsaWduOmNlbnRlcjtiYWNrZ3JvdW5k
LWNvbG9yOiM2NjY7Y29sb3I6I2ZmZjt9LmhlYWRlcl9fbG9nb3tmbG9hdDpsZWZ0O21hcmdpbjow
O3BhZGRpbmc6MDt9LmhlYWRlcl9fbG9nby1pbWFnZXt2ZXJ0aWNhbC1hbGlnbjpib3R0b207fS5o
ZWFkZXJfX25hbWUtYW5kLXNsb2dhbntmbG9hdDpsZWZ0O30uaGVhZGVyX19zaXRlLW5hbWV7bWFy
Z2luOjA7Zm9udC1zaXplOjJlbTtsaW5lLWhlaWdodDoxLjVlbTt9LmhlYWRlcl9fc2l0ZS1saW5r
OmxpbmssLmhlYWRlcl9fc2l0ZS1saW5rOnZpc2l0ZWR7Y29sb3I6IzAwMDt0ZXh0LWRlY29yYXRp
b246bm9uZTt9LmhlYWRlcl9fc2l0ZS1saW5rOmhvdmVyLC5oZWFkZXJfX3NpdGUtbGluazpmb2N1
c3t0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30uaGVhZGVyX19zaXRlLXNsb2dhbnttYXJnaW46
MDt9LmhlYWRlcl9fc2Vjb25kYXJ5LW1lbnV7ZmxvYXQ6cmlnaHQ7fS5oZWFkZXJfX3JlZ2lvbntj
bGVhcjpib3RoO30jbmF2aWdhdGlvbnt9I25hdmlnYXRpb24gLmJsb2Nre21hcmdpbi1ib3R0b206
MDt9I25hdmlnYXRpb24gLmxpbmtzLCNuYXZpZ2F0aW9uIC5tZW51e21hcmdpbjowO3BhZGRpbmc6
MDt0ZXh0LWFsaWduOmxlZnQ7fSNuYXZpZ2F0aW9uIC5saW5rcyBsaSwjbmF2aWdhdGlvbiAubWVu
dSBsaXtmbG9hdDpsZWZ0O3BhZGRpbmc6MCAxMHB4IDAKMDtsaXN0LXN0eWxlLXR5cGU6bm9uZTts
aXN0LXN0eWxlLWltYWdlOm5vbmU7fS5icmVhZGNydW1iIG9se21hcmdpbjowO3BhZGRpbmc6MDt9
LmJyZWFkY3J1bWIgbGl7ZGlzcGxheTppbmxpbmU7bGlzdC1zdHlsZS10eXBlOm5vbmU7bWFyZ2lu
OjA7cGFkZGluZzowO30ucGFnZV9fdGl0bGUsLm5vZGVfX3RpdGxlLC5ibG9ja19fdGl0bGUsLmNv
bW1lbnRzX190aXRsZSwuY29tbWVudHNfX2Zvcm0tdGl0bGUsLmNvbW1lbnRfX3RpdGxle21hcmdp
bjowO30ubWVzc2FnZXMsLm1lc3NhZ2VzLS1zdGF0dXMsLm1lc3NhZ2VzLS13YXJuaW5nLC5tZXNz
YWdlcy0tZXJyb3J7bWFyZ2luOjEuNWVtIDA7cGFkZGluZzoxMHB4IDEwcHggMTBweAo1MHB4O2Jh
Y2tncm91bmQtaW1hZ2U6dXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFB
TlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFENlVsRVFWUjQyczJXWDB4YlZSekgzWXdt
QzRrK0dGLzBaUy9TMjY3L2Jtblg5bkw3YndzdFpsbmJqVERZeW9DNUdDYkIwWlc1cGRKQ2U2c3di
TEZBNmJwV0lHdVJNV1ZqS0dQKzIxUVczU1pCU0FqR2g0WEVhVFpUSDgyQ20vM3p0UzJ4czdtdzRL
TFJrM3h5emozMy9INmZlNVB6N3pFQS95ci92VUR1a2o5Rkg2ZHJxVGFxVDhFb1BzL1VWK25YNlRE
MUJsVWg5QXFMSGxtZ1BLTGNSSG1vQ09XbUVsSy9GT0tUWXBTOFV3TEprQVNpVXlMSTNwS2hsQ2xO
MGc0NnFqK3FML3BiQXJsYnJsTzFxMjVKZWlTZ1IyaVlKOHl3WExTZy9xUDZMTmwycm84K1E0TU1r
S0NkOUsydDNxM0tkUW5rWFhJRjVhSVNrZ0VKek9ObTFGMnFXNTJwREpOMU1JMmJVQkl1QWRWT0pX
U01UUE5RZ1g2L3ZralZwdnBSRXBhZzZvTXFXQ1l0YTFJemJzSGg5Z2EwUkp0elk4VVJNZFJPOVUv
S1N1V21OUVVxaDJwWTNDdEcrZnZscUp5b2ZNQUZOclpBRSs3ZS9SV1I0WDRjRDl0Z09Hc0EyVTJD
ZHRNRHF3cXlNeUl6UTVLS3FBS21jeWFZeGt6WWQzWXZqR05HRnRYUlBSajU4RFQrTE9lbVJyRm5y
Qkx5SVRtVURtVXlPL05ZZ3UyZDI2dWtIVkpvM3RYQU1HcEFzK2NRbWgwTmVDbGFuMzB1d043VGdu
UTZuUmQ0cjN0aE9HT0FKcVlCMlVWQzc5QWZaQW5LSEdVeFFhOEEydE5hTkxXL2pLdlh2OER5Yjhz
NHlyeUtBNE8xMEEzcm9JdnBVQitzd1RkejEvTEpaMjdQUUJ2VDVsQkgxUkQ0QkNoemxRMndCTnRj
MjJhRS9VTFFnelJDbDRQNUJQY1Q5M0dNT1l6OXdiMlFoQ1JnQXEzNWQ4dS9MMlBYZTd0QURWR2dC
bGNRK0FYUXRtbHZzUC9nemJKWnZwOFBNa0pDRkJZaDhtMGtueWlWU3NIZTBZSUdaejErL3VWT3Z0
OHo3UUd2bndmK1NUNUVJUkhJVXlSNGZoNTByYnA1bHNEY1lSNFJlQVhnQnJuZzlxL1FmYTBiZnkw
MzVyN090MmR2ejRJWDRJRUlFQVh3dkR6c2NPdzR6eEpVZDFZZkVYbEU0QWE0QlFITWx3elNTQmVJ
N2lYdm9UeFdEcUtQWUNGc0ZhS21yK1lWbGlCMEpmUzg5RFZwaXVobEI5ay90U09aVHVZRnZxOTh5
STdMMC9NQXNWV2NHcDBiZlc2MWhiYWh3bHR4U2VBUnNJS3lXS2VzU0tRU1dJd3ZZa3Z2bGx3Zng4
OHBnT3Zod3RodS9BekF4bFZYOHZ6Mzg1dExiYVZ4d3BjTFp0RXcwUURqc0JHY3R6a3NpRTRDaW1a
RmZIcCsrb1dIYm5idVVmZEIwa29tTWdIc1JOMXIwTVdCc0VtWU9ERjVvblk5Mi9VVHdjdkJ4dXpY
Y04xY2NIeWNWU24yRmFQWVd3ekNRVURXS0l0N3ozdXRBSjVjNzRIeitPTFNvbXluWStjVmZpTS94
VzNKaUR5WnBCM0Z1WnJqNG9Dd0UrQWQ0cVdNalBIanBUdEwwbXpNb3h5Wno5eU0zOVE3WTg1T2s5
MzBpY3FtK2s1OVRMMndtOWw5MGRadjh5LzhzUEFpZ0dmL2lVTi9RNGFuTTJ6T3NkTGUrTCs0VmZ3
QlZWakRzMnJUWXgwQUFBQUFTVVZPUks1Q1lJST0nKTsqYmFja2dyb3VuZC1pbWFnZTp1cmwoJ2Nv
bXBvbmVudHMvLi4vLi4vaW1hZ2VzL21lc3NhZ2UtMjQtb2sucG5nJyk7YmFja2dyb3VuZC1wb3Np
dGlvbjo4cHgKOHB4O2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtib3JkZXI6MXB4IHNvbGlk
CiNiZTc7fS5tZXNzYWdlcy0td2FybmluZ3tiYWNrZ3JvdW5kLWltYWdlOnVybCgnZGF0YTppbWFn
ZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0
QUFBQ3VFbEVRVlJJaVdQNC8vOC9BeTB4U1lxbnRUcG5UMjUyenFlSkJmME5qaHN5a3J6L3B5ZDYv
ZTl2Y05wR1ZRdjZxMndsbTBxYy9yMCtJUEQvM1VHKy82MWw5djltZHJqSVVjMkM3aHFIVXpjM1Mv
Ly9lWndCak85dEYvdmZXZTF3amlvV1RLaXhWbThvdFBuMzh3UVQzSUtmeHhuL3Q1VmEvdXRwc05T
ZzJJTFdjdHRyTnpkSmdRMytkcFFSakVIcys5dEUvemVYV3QrZ3lJTE9hbXVUcWx4cnNPdFBMdWIr
NytlbUJzU3EvODh2NXdMN29xSFE5SDlubWJrRjJSYlVGMXJldjdsSkV1eml1VTNpLzkwZGRjQjRV
WnNvSkM2MmlmeXZLN1I0UUpZRnJjVUdybVVaNXY5aFliOWhvc2gvYnpjRE1ONDJWUmdlRjlXNWh2
OGJpL1hkU2JhZ0t0ZnMyYzFORXZDSVBiYVEvNysvcHdrWW4xN0tpMGhSMjRUL2wyZVpQQ2ZKZ3Na
ODNkQ2lOT1AveUNubjdpYXUvOEcrNW1EOGFCc0hTb3FxeU5MOVg1ZXJIVW0wQmNWcFJtOXViaFpI
TW9UaC80ZUR6UC9EQTIzK1J3VFovUDk2aEFsRjd0NVdvZjhGeWZwdmliS2dOazhub3lEWjREOXF1
b2ZnMUJqci8xa0psaGppSUYrVXBtbi9yODNSekNKb1FYYUMzcWNibThTd0dNTHd2eWJQL0g4ak1H
bGlrN3U3VmVCL1pxejJKN3dXVkdkcjF1VEc2MkoxUFFnZldTVDEvK2hpQ2F4eUlGOFVKcXY5cjho
UXJjVnBRVnFrenJjYkcwV3dHdkIySC9QL2xueDVNQWF4c2FtNXZZbjNmMktZK2plc0ZwU2xxZlpu
eFdqaWRQMk9HV0wvZy8wc3dCakV4dTRMaHY5NThVci9pNUtVK2xFc0NBMWxZSTRKVXY5NWJaMGdU
bzJQdDNQK3owbXlCbU1RRzVlNm14dTQva2Y0S2Y4RW1RbTNvQ1JOZWJLcnZTYXdJR1BCcVJHOXNN
T3A1aGpqZndkcmxmLzU4YktUNFJhVXBXdnRjTFpWLzM5aXNjRC9IMEFGUDQ2all3WWlNZVAvNDR1
NC85dGJLUU9EU1hVSDNJSTlHN3YxOGhJMG44WUdLditJRFZUNmpveGovQlZ4NG1nY09DZGUvU25J
VFBSVUpBSEVHbFRDRWtRVjE5VEFBTjhGQzY3aFpkRlhBQUFBQUVsRlRrU3VRbUNDJyk7KmJhY2tn
cm91bmQtaW1hZ2U6dXJsKCdjb21wb25lbnRzLy4uLy4uL2ltYWdlcy9tZXNzYWdlLTI0LXdhcm5p
bmcucG5nJyk7Ym9yZGVyLWNvbG9yOiNlZDU7fS5tZXNzYWdlcy0tZXJyb3J7YmFja2dyb3VuZC1p
bWFnZTp1cmwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFB
QmdBQUFBWUNBWUFBQURnZHozNEFBQUNwRWxFUVZSNDJyV1dUVWdiUVJpR1EwVHg0TVdEZUZNOGVC
QTlpS0FvZ2dpQ29DaWlJaUw0TDNvUVYxQ0pCMFVFZjZpUllGcEs3VW5pVHc5VlNxTDJrdlFzVkRC
cFNacnRSbzM1Y3pWTlczb3ByUmYxN2V4U2w0eXp1MWlrQXk5aDU5dnZlZGhrTXJNR0FHb3hrbkFr
Mnc4TUovV29zWFRoaVprWnQ5amRMZWdsUGpuNUFUYzNtaEpOdU5qYkswUWJHM0V4TUlDTC9uNklm
WDBnY3hCN2VrREFFTHU2SUhaMklsSmJpMWhMUzFCTG9nbVB0YlVoTVR2N29NU2FtelVscW5CeU14
TFQwLzhTVFFrRGo5VFY0WkxqNU95c3JPRGw4akl1NUdzNjhkRlI3Skc2ZFdrSjBmRngrVHBTWDg5
SURNbndjSFUxeUtlYzEyWXozcmxjNEhrZUx3amtYSnBQaXAzVTMrN3ZJeDZQNHltcGg0ZUc1UGx3
VFEwbE1keXRsbUJ4TVdLdHJYTGVUMHpBNVhUaWJ2ajlmanhmWEVUa2IvM04vRHoyZG5lVnVpVFp0
bGlVL3JQU1VzUTV6aXV4WllHMDNJSWxKZEtLVVBKamRSVUFLTW16dVRuc2tCL1ZZYmRUdGQ5SFI0
ZzJOQ2k5WjJWbGlEWTFCU25CYVVFQnpzckxxWHl6V0NpUTlIVTVIQTRhZm5pSVVGV1YwaE9xcU1C
cFVSRXJPTTdOeFdsaElaT3ZDd3ZBN1MzVXhxK0RBNUFuWjNwTzh2SllRU0FyQzhjNU9lcXgyUmo0
dWRlTFFINis2djJCN0d4VzhEa2pBMEptSnBPTndVSFk3WFpHSUFnQ3pDWVRlSlVld21JRmZxTVJm
RW9LbFEyeUpiemEyb0xXY0x2ZGVESTJoay8zK2lRV0t6QVlrSnpOamc1c3JxOVR3SjlPSjc2WVRO
U2N4K09SSlQ2NlgxL2dyS3lFYlcyTmdmUHA2WEtkL0pNWnlTckhhUXNTVTFPZSswL3czV3BWZ3l1
NUhCbFI2bGMrSDhnaW9ldkR3ejZKcld3VjUrM3R4eW9TRms1RGNPWDFNbkN5SjRWd2ZiMXp0MVVZ
OVNSOGFpb0RwdXBwYVZwd1piUFRsK2hIRjA0ZE9Lems4WEJGOERnSkMzL3dvVS9XL0VjaU90RUxP
V2k4RER3cC8vMjE1UStwN2tpS2gybFFTQUFBQUFCSlJVNUVya0pnZ2c9PScpOypiYWNrZ3JvdW5k
LWltYWdlOnVybCgnY29tcG9uZW50cy8uLi8uLi9pbWFnZXMvbWVzc2FnZS0yNC1lcnJvci5wbmcn
KTtib3JkZXItY29sb3I6I2VkNTQxZDt9Lm1lc3NhZ2VzX19saXN0e21hcmdpbjowO30ubWVzc2Fn
ZXNfX2l0ZW17bGlzdC1zdHlsZS1pbWFnZTpub25lO30ubWVzc2FnZXMtLWVycm9yCnAuZXJyb3J7
Y29sb3I6IzMzMzt9Lm9rLC5tZXNzYWdlcy0tc3RhdHVze2JhY2tncm91bmQtY29sb3I6I2Y4ZmZm
MDtjb2xvcjojMjM0NjAwO30ud2FybmluZywubWVzc2FnZXMtLXdhcm5pbmd7YmFja2dyb3VuZC1j
b2xvcjojZmZmY2U1O2NvbG9yOiM4NDA7fS5lcnJvciwubWVzc2FnZXMtLWVycm9ye2JhY2tncm91
bmQtY29sb3I6I2ZlZjVmMTtjb2xvcjojOGMyZTBiO30udGFicy1wcmltYXJ5LC50YWJzLXNlY29u
ZGFyeXtvdmVyZmxvdzpoaWRkZW47Knpvb206MTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3Jh
ZGllbnQobGluZWFyLDUwJSAxMDAlLDUwJSAwJSxjb2xvci1zdG9wKDEwMCUsI2JiYmJiYiksY29s
b3Itc3RvcCgxMDAlLHRyYW5zcGFyZW50KSk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVh
ci1ncmFkaWVudChib3R0b20sI2JiYmJiYiAxcHgsdHJhbnNwYXJlbnQgMXB4KTtiYWNrZ3JvdW5k
LWltYWdlOi1tb3otbGluZWFyLWdyYWRpZW50KGJvdHRvbSwjYmJiYmJiIDFweCx0cmFuc3BhcmVu
dCAxcHgpO2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KGJvdHRvbSwjYmJiYmJi
IDFweCx0cmFuc3BhcmVudCAxcHgpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KGJv
dHRvbSwjYmJiYmJiIDFweCx0cmFuc3BhcmVudAoxcHgpO2xpc3Qtc3R5bGU6bm9uZTtib3JkZXIt
Ym90dG9tOjFweCBzb2xpZCAjYmJiYmJiIFwwL2llO21hcmdpbjoxLjVlbSAwO3BhZGRpbmc6MCAy
cHg7d2hpdGUtc3BhY2U6bm93cmFwO30udGFicy1wcmltYXJ5X190YWIsLnRhYnMtc2Vjb25kYXJ5
X190YWIsLnRhYnMtc2Vjb25kYXJ5X190YWIuaXMtYWN0aXZle2Zsb2F0OmxlZnQ7bWFyZ2luOjAg
M3B4O31hLnRhYnMtcHJpbWFyeV9fdGFiLWxpbmssYS50YWJzLXNlY29uZGFyeV9fdGFiLWxpbmt7
Ym9yZGVyOjFweCBzb2xpZCAjZTllOWU5O2JvcmRlci1yaWdodDowO2JvcmRlci1ib3R0b206MDtk
aXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjEuNWVtO3RleHQtZGVjb3JhdGlvbjpub25lO30udGFi
cy1wcmltYXJ5X190YWIsLnRhYnMtcHJpbWFyeV9fdGFiLmlzLWFjdGl2ZXstbW96LWJvcmRlci1y
YWRpdXMtdG9wbGVmdDo0cHg7LXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOjRweDtib3Jk
ZXItdG9wLWxlZnQtcmFkaXVzOjRweDstbW96LWJvcmRlci1yYWRpdXMtdG9wcmlnaHQ6NHB4Oy13
ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NHB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVz
OjRweDt0ZXh0LXNoYWRvdzoxcHggMXB4IDAgd2hpdGU7Ym9yZGVyOjFweCBzb2xpZAojYmJiYmJi
O2JvcmRlci1ib3R0b20tY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTowIFwwL2llO30u
aXMtYWN0aXZlLnRhYnMtcHJpbWFyeV9fdGFie2JvcmRlci1ib3R0b20tY29sb3I6d2hpdGU7fWEu
dGFicy1wcmltYXJ5X190YWItbGluayxhLnRhYnMtcHJpbWFyeV9fdGFiLWxpbmsuaXMtYWN0aXZl
ey1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjRweDstd2Via2l0LWJvcmRlci10b3AtbGVmdC1y
YWRpdXM6NHB4O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NHB4Oy1tb3otYm9yZGVyLXJhZGl1cy10
b3ByaWdodDo0cHg7LXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo0cHg7Ym9yZGVyLXRv
cC1yaWdodC1yYWRpdXM6NHB4Oy13ZWJraXQtdHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDAu
M3M7LW1vei10cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgMC4zczstby10cmFuc2l0aW9uOmJh
Y2tncm91bmQtY29sb3IgMC4zczt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgMC4zcztjb2xv
cjojMzMzO2JhY2tncm91bmQtY29sb3I6I2RlZGVkZTtsZXR0ZXItc3BhY2luZzoxcHg7cGFkZGlu
ZzowCjFlbTt0ZXh0LWFsaWduOmNlbnRlcjt9YS50YWJzLXByaW1hcnlfX3RhYi1saW5rOmhvdmVy
LGEudGFicy1wcmltYXJ5X190YWItbGluazpmb2N1c3tiYWNrZ3JvdW5kLWNvbG9yOiNlOWU5ZTk7
Ym9yZGVyLWNvbG9yOiNmMmYyZjI7fWEudGFicy1wcmltYXJ5X190YWItbGluazphY3RpdmUsYS50
YWJzLXByaW1hcnlfX3RhYi1saW5rLmlzLWFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFy
ZW50Oyp6b29tOjE7ZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFk
aWVudChncmFkaWVudFR5cGU9MCxzdGFydENvbG9yc3RyPScjRkZFOUU5RTknLGVuZENvbG9yc3Ry
PScjMDBFOUU5RTknKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLDUw
JSAwJSw1MCUKMTAwJSxjb2xvci1zdG9wKDAlLCNlOWU5ZTkpLGNvbG9yLXN0b3AoMTAwJSxyZ2Jh
KDIzMywyMzMsMjMzLDApKSk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVu
dCgjZTllOWU5LHJnYmEoMjMzLDIzMywyMzMsMCkpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1saW5l
YXItZ3JhZGllbnQoI2U5ZTllOSxyZ2JhKDIzMywyMzMsMjMzLDApKTtiYWNrZ3JvdW5kLWltYWdl
Oi1vLWxpbmVhci1ncmFkaWVudCgjZTllOWU5LHJnYmEoMjMzLDIzMywyMzMsMCkpO2JhY2tncm91
bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KCNlOWU5ZTkscmdiYSgyMzMsMjMzLDIzMywwKSk7Ym9y
ZGVyLWNvbG9yOiNmZmY7fS50YWJzLXNlY29uZGFyeXtmb250LXNpemU6LjllbTttYXJnaW4tdG9w
Oi0xLjVlbTt9LnRhYnMtc2Vjb25kYXJ5X190YWIsLnRhYnMtc2Vjb25kYXJ5X190YWIuaXMtYWN0
aXZle21hcmdpbjowLjc1ZW0gM3B4O31hLnRhYnMtc2Vjb25kYXJ5X190YWItbGluayxhLnRhYnMt
c2Vjb25kYXJ5X190YWItbGluay5pcy1hY3RpdmV7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjAuNzVl
bTstbW96LWJvcmRlci1yYWRpdXM6MC43NWVtOy1tcy1ib3JkZXItcmFkaXVzOjAuNzVlbTstby1i
b3JkZXItcmFkaXVzOjAuNzVlbTtib3JkZXItcmFkaXVzOjAuNzVlbTstd2Via2l0LXRyYW5zaXRp
b246YmFja2dyb3VuZC1jb2xvcgowLjNzOy1tb3otdHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9y
IDAuM3M7LW8tdHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDAuM3M7dHJhbnNpdGlvbjpiYWNr
Z3JvdW5kLWNvbG9yIDAuM3M7dGV4dC1zaGFkb3c6MXB4IDFweCAwIHdoaXRlO2JhY2tncm91bmQt
Y29sb3I6I2YyZjJmMjtjb2xvcjojNjY2O3BhZGRpbmc6MCAuNWVtO31hLnRhYnMtc2Vjb25kYXJ5
X190YWItbGluazpob3ZlcixhLnRhYnMtc2Vjb25kYXJ5X190YWItbGluazpmb2N1c3tiYWNrZ3Jv
dW5kLWNvbG9yOiNkZWRlZGU7Ym9yZGVyLWNvbG9yOiM5OTk7Y29sb3I6IzMzMzt9YS50YWJzLXNl
Y29uZGFyeV9fdGFiLWxpbms6YWN0aXZlLGEudGFicy1zZWNvbmRhcnlfX3RhYi1saW5rLmlzLWFj
dGl2ZXt0ZXh0LXNoYWRvdzoxcHggMXB4IDAgIzMzMzMzMztiYWNrZ3JvdW5kLWNvbG9yOiM2NjY7
Ym9yZGVyLWNvbG9yOiMwMDA7Y29sb3I6I2ZmZjt9LmlubGluZXtkaXNwbGF5OmlubGluZTtwYWRk
aW5nOjA7fS5pbmxpbmUgbGl7ZGlzcGxheTppbmxpbmU7bGlzdC1zdHlsZS10eXBlOm5vbmU7cGFk
ZGluZzowIDFlbSAwIDA7fXNwYW4uZmllbGQtbGFiZWx7cGFkZGluZzowIDFlbSAwIDA7fS5tb3Jl
LWxpbmt7dGV4dC1hbGlnbjpyaWdodDt9Lm1vcmUtaGVscC1saW5re3RleHQtYWxpZ246cmlnaHQ7
fS5tb3JlLWhlbHAtbGluawphe2JhY2tncm91bmQtaW1hZ2U6dXJsKCdkYXRhOmltYWdlL3BuZzti
YXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBN1Vs
RVFWUjQycVdUUFFxRFFCQ0Zjd1NQa0NOSVRwQWo1QWplSW0xdVlwa3lSN0N5Mk1vdDdPd3NCQXNS
d1VLd21Pd0xHUmxlM0VJeThQeUJmWi96M0oyVGlQeWx6OFZXV1pacFVCNDBCb25SS3lpemF4a0E4
OE1ZWWlxQ0VndjRNVHZuWkpvbTBWcVdSYnozRmxKWmdMWXRxbUVZMUxnOXIrc0tzSVhjTFNDM0FD
MDE5SDB2cUxxdUxlQzVBZmlIWVNHa2NkQUppbUtJQlFpSjQrQ085Mk9BdG0wRk5jOHpPamtNd0U1
UTYzRkF0YmVnNnpwQVl2RzhCV1I3aTVxbVFZd1k0TUlIcVloRTJET1BRV2NHSkJRRjJYVTcyWnp5
VWVaNUdDTnQ1L2h5YkpnWWRBWHNxNXNPRUUvakc2ZEM1SU9xQ1hUbUFBQUFBRWxGVGtTdVFtQ0Mn
KTsqYmFja2dyb3VuZC1pbWFnZTp1cmwoJ2NvbXBvbmVudHMvLi4vLi4vaW1hZ2VzL2hlbHAucG5n
Jyk7YmFja2dyb3VuZC1wb3NpdGlvbjowIDUwJTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7
cGFkZGluZzoxcHggMCAxcHgKMjBweDt9LnBhZ2Vye2NsZWFyOmJvdGg7cGFkZGluZzowO3RleHQt
YWxpZ246Y2VudGVyO30ucGFnZXItaXRlbSwucGFnZXItZmlyc3QsLnBhZ2VyLXByZXZpb3VzLC5w
YWdlci1uZXh0LC5wYWdlci1sYXN0LC5wYWdlci1lbGxpcHNpcywucGFnZXItY3VycmVudHtkaXNw
bGF5OmlubGluZTtwYWRkaW5nOjAKMC41ZW07bGlzdC1zdHlsZS10eXBlOm5vbmU7YmFja2dyb3Vu
ZC1pbWFnZTpub25lO30ucGFnZXItY3VycmVudHtmb250LXdlaWdodDpib2xkO30uYmxvY2t7bWFy
Z2luLWJvdHRvbToxLjVlbTt9Lm1lbnVfX2l0ZW0uaXMtbGVhZntsaXN0LXN0eWxlLWltYWdlOnVy
bCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBY0FBQUFI
QkFNQUFBQTJmRXJnQUFBQUQxQk1WRVgvLy8rL3Y3K0xpNHNBQUFEQXdNQkZ2c3c4QUFBQUFYUlNU
bE1BUU9iWVpnQUFBQjFKUkVGVUNGdGpZQUFEWXdNR0JtWVZaU0RoS0F3a0ZKV2hZaUFBQUIyK0Fh
Lzl1Z2VhQUFBQUFFbEZUa1N1UW1DQycpOypsaXN0LXN0eWxlLWltYWdlOnVybCgnY29tcG9uZW50
cy8uLi8uLi9pbWFnZXMvbWVudS1sZWFmLnBuZycpO2xpc3Qtc3R5bGUtdHlwZTpzcXVhcmU7fS5t
ZW51X19pdGVtLmlzLWV4cGFuZGVke2xpc3Qtc3R5bGUtaW1hZ2U6dXJsKCdkYXRhOmltYWdlL3Bu
ZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUFjQUFBQUhBUU1BQUFEK25NV1FBQUFB
QmxCTVZFWC8vLzhBQUFCVnd0TitBQUFBQVhSU1RsTUFRT2JZWmdBQUFCSkpSRUZVZUp4aitNZFF3
MkRCSU1BQUJnQVVzQUhEM2MzQnB3QUFBQUJKUlU1RXJrSmdnZz09Jyk7Kmxpc3Qtc3R5bGUtaW1h
Z2U6dXJsKCdjb21wb25lbnRzLy4uLy4uL2ltYWdlcy9tZW51LWV4cGFuZGVkLnBuZycpO2xpc3Qt
c3R5bGUtdHlwZTpjaXJjbGU7fS5tZW51X19pdGVtLmlzLWNvbGxhcHNlZHtsaXN0LXN0eWxlLWlt
YWdlOnVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFB
Y0FBQUFIQVFNQUFBRCtuTVdRQUFBQUJsQk1WRVgvLy84QUFBQlZ3dE4rQUFBQUFYUlNUbE1BUU9i
WVpnQUFBQkZKUkVGVUNCMWpWbUNHUUNsbUVXWU9BQVo4QU15M0hQTFhBQUFBQUVsRlRrU3VRbUND
Jyk7Kmxpc3Qtc3R5bGUtaW1hZ2U6dXJsKCdjb21wb25lbnRzLy4uLy4uL2ltYWdlcy9tZW51LWNv
bGxhcHNlZC5wbmcnKTtsaXN0LXN0eWxlLXR5cGU6ZGlzYzt9Lm1lbnUKYS5hY3RpdmV7Y29sb3I6
IzAwMDt9Lm5ldywudXBkYXRle2NvbG9yOiNjMDA7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVu
dDt9LnVucHVibGlzaGVke2hlaWdodDowO292ZXJmbG93OnZpc2libGU7YmFja2dyb3VuZC1jb2xv
cjp0cmFuc3BhcmVudDtjb2xvcjojZDhkOGQ4O2ZvbnQtc2l6ZTo3NXB4O2xpbmUtaGVpZ2h0OjE7
Zm9udC1mYW1pbHk6SW1wYWN0LCJBcmlhbCBOYXJyb3ciLEhlbHZldGljYSxzYW5zLXNlcmlmO2Zv
bnQtd2VpZ2h0OmJvbGQ7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO3RleHQtYWxpZ246Y2VudGVy
O3dvcmQtd3JhcDpicmVhay13b3JkO30ubHQtaWU4IC5ub2RlLXVucHVibGlzaGVkID4gKiwubHQt
aWU4IC5jb21tZW50LXVucHVibGlzaGVkID4gKntwb3NpdGlvbjpyZWxhdGl2ZTt9LmNvbW1lbnRz
e21hcmdpbjoxLjVlbSAwO30uY29tbWVudC1wcmV2aWV3e2JhY2tncm91bmQtY29sb3I6I2ZmZmZl
YTt9LmNvbW1lbnR7fS5jb21tZW50IC5wZXJtYWxpbmt7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNl
O2ZvbnQtc2l6ZTo3NSU7fS5pbmRlbnRlZHttYXJnaW4tbGVmdDozMHB4O30uZm9ybS1pdGVte21h
cmdpbjoxLjVlbSAwO30uZm9ybS1jaGVja2JveGVzIC5mb3JtLWl0ZW0sLmZvcm0tcmFkaW9zIC5m
b3JtLWl0ZW17bWFyZ2luOjA7fXRyLm9kZCAuZm9ybS1pdGVtLHRyLmV2ZW4KLmZvcm0taXRlbXtt
YXJnaW46MDt9LmZvcm0taXRlbSBpbnB1dC5lcnJvciwuZm9ybS1pdGVtIHRleHRhcmVhLmVycm9y
LC5mb3JtLWl0ZW0gc2VsZWN0LmVycm9ye2JvcmRlcjoxcHggc29saWQgI2MwMDt9LmZvcm0taXRl
bSAuZGVzY3JpcHRpb257Zm9udC1zaXplOjAuODVlbTt9LmZvcm0tdHlwZS1yYWRpbyAuZGVzY3Jp
cHRpb24sLmZvcm0tdHlwZS1jaGVja2JveCAuZGVzY3JpcHRpb257bWFyZ2luLWxlZnQ6Mi40ZW07
fS5mb3JtLXJlcXVpcmVke2NvbG9yOiNjMDA7fWxhYmVsLm9wdGlvbntkaXNwbGF5OmlubGluZTtm
b250LXdlaWdodDpub3JtYWw7fWEuYnV0dG9uey13ZWJraXQtYXBwZWFyYW5jZTpidXR0b247LW1v
ei1hcHBlYXJhbmNlOmJ1dHRvbjthcHBlYXJhbmNlOmJ1dHRvbjt9LnBhc3N3b3JkLXBhcmVudCwu
Y29uZmlybS1wYXJlbnR7bWFyZ2luOjA7fSN1c2VyLWxvZ2luLWZvcm17dGV4dC1hbGlnbjpsZWZ0
O30ub3BlbmlkLWxpbmtze21hcmdpbi1ib3R0b206MDt9Lm9wZW5pZC1saW5rLC51c2VyLWxpbmt7
bWFyZ2luLXRvcDoxLjVlbTt9aHRtbC5qcyAjdXNlci1sb2dpbi1mb3JtIGxpLm9wZW5pZC1saW5r
LCN1c2VyLWxvZ2luLWZvcm0gbGkub3BlbmlkLWxpbmt7bWFyZ2luLWxlZnQ6LTIwcHg7fSN1c2Vy
LWxvZ2luIHVse21hcmdpbjoxLjVlbSAwO31mb3JtCnRoe3RleHQtYWxpZ246bGVmdDtwYWRkaW5n
LXJpZ2h0OjFlbTtib3JkZXItYm90dG9tOjNweCBzb2xpZCAjY2NjO31mb3JtIHRib2R5e2JvcmRl
ci10b3A6MXB4IHNvbGlkICNjY2M7fWZvcm0gdGFibGUgdWx7bWFyZ2luOjA7fXRyLmV2ZW4sdHIu
b2Rke2JhY2tncm91bmQtY29sb3I6I2VlZTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjY2NjO3Bh
ZGRpbmc6MC4xZW0gMC42ZW07fXRyLmV2ZW57YmFja2dyb3VuZC1jb2xvcjojZmZmO30ubHQtaWU4
IHRyLmV2ZW4gdGgsLmx0LWllOCB0ci5ldmVuIHRkLC5sdC1pZTggdHIub2RkIHRoLC5sdC1pZTgg
dHIub2RkIHRke2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNjY2M7fXRkLmFjdGl2ZXtiYWNrZ3Jv
dW5kLWNvbG9yOiNkZGQ7fXRkLmNoZWNrYm94LHRoLmNoZWNrYm94e3RleHQtYWxpZ246Y2VudGVy
O310ZC5tZW51LWRpc2FibGVke2JhY2tncm91bmQ6I2NjYzt9I2F1dG9jb21wbGV0ZSAuc2VsZWN0
ZWR7YmFja2dyb3VuZDojMDA3MmI5O2NvbG9yOiNmZmY7fWh0bWwuanMgLmNvbGxhcHNpYmxlCi5m
aWVsZHNldC1sZWdlbmR7YmFja2dyb3VuZC1pbWFnZTp1cmwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2
NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQWNBQUFBSEFRTUFBQUQrbk1XUUFBQUFCbEJNVkVY
Ly8vOEFBQUJWd3ROK0FBQUFBWFJTVGxNQVFPYllaZ0FBQUJKSlJFRlVlSnhqK01kUXcyREJJTUFB
QmdBVXNBSEQzYzNCcHdBQUFBQkpSVTVFcmtKZ2dnPT0nKTsqYmFja2dyb3VuZC1pbWFnZTp1cmwo
J2NvbXBvbmVudHMvLi4vLi4vaW1hZ2VzL21lbnUtZXhwYW5kZWQucG5nJyk7YmFja2dyb3VuZC1w
b3NpdGlvbjo1cHggNjUlO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtwYWRkaW5nLWxlZnQ6
MTVweDt9aHRtbC5qcyAuY29sbGFwc2VkIC5maWVsZHNldC1sZWdlbmR7YmFja2dyb3VuZC1pbWFn
ZTp1cmwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQWNB
QUFBSEFRTUFBQUQrbk1XUUFBQUFCbEJNVkVYLy8vOEFBQUJWd3ROK0FBQUFBWFJTVGxNQVFPYlla
Z0FBQUJGSlJFRlVDQjFqVm1DR1FDbG1FV1lPQUFaOEFNeTNIUExYQUFBQUFFbEZUa1N1UW1DQycp
OypiYWNrZ3JvdW5kLWltYWdlOnVybCgnY29tcG9uZW50cy8uLi8uLi9pbWFnZXMvbWVudS1jb2xs
YXBzZWQucG5nJyk7YmFja2dyb3VuZC1wb3NpdGlvbjo1cHggNTAlO30uZmllbGRzZXQtbGVnZW5k
Ci5zdW1tYXJ5e2NvbG9yOiM5OTk7Zm9udC1zaXplOjAuOWVtO21hcmdpbi1sZWZ0OjAuNWVtO310
ci5kcmFne2JhY2tncm91bmQtY29sb3I6I2ZmZmZmMDt9dHIuZHJhZy1wcmV2aW91c3tiYWNrZ3Jv
dW5kLWNvbG9yOiNmZmQ7fS50YWJsZWRyYWctdG9nZ2xlLXdlaWdodHtmb250LXNpemU6MC45ZW07
fXRyLnNlbGVjdGVkIHRke2JhY2tncm91bmQ6I2ZmYzt9LnByb2dyZXNze2ZvbnQtd2VpZ2h0OmJv
bGQ7fS5wcm9ncmVzcyAuYmFye2JhY2tncm91bmQ6I2NjYztib3JkZXItY29sb3I6IzY2NjttYXJn
aW46MCAwLjJlbTstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4Oy1tb3otYm9yZGVyLXJhZGl1czoz
cHg7LW1zLWJvcmRlci1yYWRpdXM6M3B4Oy1vLWJvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1yYWRp
dXM6M3B4O30ucHJvZ3Jlc3MgLmZpbGxlZHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDcyYjk7YmFja2dy
b3VuZC1pbWFnZTp1cmwoJ2NvbXBvbmVudHMvLi4vLi4vaW1hZ2VzL3Byb2dyZXNzLmdpZicpO30u
YmxvY2suYmxvY2stdmlld3MuY29udGV4dHVhbC1saW5rcy1yZWdpb24uZmlyc3QubGFzdC5vZGR7
Ym9yZGVyOjJweCBzb2xpZDtwYWRkaW5nOjFlbTtib3JkZXItY29sb3I6bGlnaHRncmF5O30KQG1l
ZGlhIHByaW50e2E6bGluayxhOnZpc2l0ZWR7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSAhaW1w
b3J0YW50O31hOmxpbmsuaGVhZGVyX19zaXRlLWxpbmssYTp2aXNpdGVkLmhlYWRlcl9fc2l0ZS1s
aW5re3RleHQtZGVjb3JhdGlvbjpub25lICFpbXBvcnRhbnQ7fSNjb250ZW50IGFbaHJlZl06YWZ0
ZXJ7Y29udGVudDoiICgiIGF0dHIoaHJlZikgIikiO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXNp
emU6MTZweDt9I2NvbnRlbnQgYVtocmVmXj0iamF2YXNjcmlwdDoiXTphZnRlciwjY29udGVudCBh
W2hyZWZePSIjIl06YWZ0ZXJ7Y29udGVudDoiIjt9I2NvbnRlbnQgYWJiclt0aXRsZV06YWZ0ZXJ7
Y29udGVudDoiICgiIGF0dHIodGl0bGUpICIpIjt9I2NvbnRlbnR7ZmxvYXQ6bm9uZSAhaW1wb3J0
YW50O3dpZHRoOjEwMCUgIWltcG9ydGFudDttYXJnaW46MCAhaW1wb3J0YW50O3BhZGRpbmc6MCAh
aW1wb3J0YW50O31ib2R5LCNwYWdlLCNtYWluLCNjb250ZW50e2NvbG9yOiMwMDA7YmFja2dyb3Vu
ZC1jb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50O2JhY2tncm91bmQtaW1hZ2U6bm9uZQohaW1w
b3J0YW50O30jc2tpcC1saW5rLCN0b29sYmFyLCNuYXZpZ2F0aW9uLC5yZWdpb24tc2lkZWJhci1m
aXJzdCwucmVnaW9uLXNpZGViYXItc2Vjb25kLCNmb290ZXIsLmJyZWFkY3J1bWIsLnRhYnMsLmFj
dGlvbi1saW5rcywubGlua3MsLmJvb2stbmF2aWdhdGlvbiwuZm9ydW0tdG9waWMtbmF2aWdhdGlv
biwucGFnZXIsLmZlZWQtaWNvbnN7dmlzaWJpbGl0eTpoaWRkZW47ZGlzcGxheTpub25lO319Cgog
ICAgICAtLT4KICAgIDwvc3R5bGU+CiAgICAgIDwvaGVhZD4KICA8Ym9keSBpZD0ibWltZW1haWwt
Ym9keSIgY2xhc3M9Im1pbWVtYWlsLTEiPgogICAgPGRpdiBpZD0iY2VudGVyIj4KICAgICAgPGRp
diBpZD0ibWFpbiI+CiAgICAgICAgPHA+RGVhciBEciBDaG9vc2UgYW5kPC9wPgo8cD7CoDwvcD4K
PHA+wqA8L3A+CjxwPlBsZWFzZSBmaWxsIHRoZSBlbWFpbCdzIGJvZHkgd2l0aCBzdWl0YWJsZSBt
ZXNzYWdlLi4uPC9wPgo8cD7CoDwvcD4KPHA+CjwvcD48cD48c3Ryb25nPjxlbT5BbWlyIFJhemF2
aTwvZW0+PC9zdHJvbmc+PGVtPsKgPC9lbT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2t5
cGF0aC5jby51ay8iIHRhcmdldD0iX2JsYW5rIj48aW1nIGFsdD0iIiBzcmM9ImNpZDo3YTMxZmIy
OWY4ODJlZDUzMTUwOGE0ZDgwMzRmNjAwZkA1Mi4xOC4yMy4xNSIgLz48L2E+PC9wPgo8cD7CoDwv
cD4KPHA+PHN0cm9uZz5NOjwvc3Ryb25nPsKgwqAwNzg1MCAxNjQgOTcxPC9wPgo8cD48c3Ryb25n
PkU6wqDCoMKgPC9zdHJvbmc+PGEgaHJlZj0ibWFpbHRvOmFtaXIucmF6YXZpQHNreXBhdGguY28u
dWsiIHRhcmdldD0iX2JsYW5rIj5hbWlyLnJhemF2aUBza3lwYXRoLmNvLnVrPC9hPjwvcD4KPHA+
PHN0cm9uZz5XOsKgPGEgaHJlZj0iaHR0cDovL3d3dy5za3lwYXRoLmNvLnVrLyIgdGFyZ2V0PSJf
YmxhbmsiPnd3dy5za3lwYXRoLmNvLnVrPC9hPjwvc3Ryb25nPjwvcD4KPHA+wqA8L3A+CjxwPjxh
IGhyZWY9Imh0dHA6Ly93d3cubGlua2VkaW4uY29tL2dyb3Vwcy9UcmF2ZWwtVGVjaG5vbG9neS1K
b2JzLVNLWVBBVEgtMzIxMDM0Nz9naWQ9MzIxMDM0NyZhbXA7dHJrPWhiX3NpZGVfZyIgdGFyZ2V0
PSJfYmxhbmsiPkpvaW4gb3VyIExpbmtlZEluIEdyb3VwPC9hPsKgLcKgPGEgaHJlZj0iaHR0cDov
L3d3dy5saW5rZWRpbi5jb20vY29tcGFueS9za3lwYXRoLS0tdHJhdmVsLXJlY3J1aXRtZW50P3Ry
az1oYl90YWJfY29tcHlfaWRfMjk1OTk4IiB0YXJnZXQ9Il9ibGFuayI+Rm9sbG93IFNreXBhdGgg
b24gTGlua2VkSW48L2E+PC9wPgo8cD5Ta3lwYXRoIERpc2NsYWltZXIgLSBUaGUgY29udGVudHMg
b2YgdGhpcyBlLW1haWwgYXJlIGZvciB1c2UgYnkgdGhlIGludGVuZGVkIGFkZHJlc3NlZShzKSBv
bmx5IGFuZCBtYXkgY29udGFpbiBsZWdhbGx5IHByaXZpbGVnZWQgbWF0ZXJpYWwgYW5kIGNvbmZp
ZGVudGlhbCBpbmZvcm1hdGlvbiB0aGF0IGlzIGV4ZW1wdCBmcm9tIGRpc2Nsb3N1cmUgYnkgbGF3
LiBQbGVhc2Ugbm90ZSB0aGF0IGlmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNpcGllbnQg
b2YgdGhpcyBlLW1haWwsIGFueSBkaXNzZW1pbmF0aW9uLCBkaXN0cmlidXRpb24gb3IgY29weWlu
ZyBvZiB0aGlzIGUtbWFpbCBieSB5b3UgaXMgc3RyaWN0bHkgcHJvaGliaXRlZCBhbmQgeW91IG11
c3Qgbm90IHJlYWQsIHVzZSBvciB0YWtlIGFueSBhY3Rpb24gaW4gcmVsaWFuY2Ugb24gaXQuIElm
IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgZS1tYWlsIGluIGVycm9yLCBwbGVhc2UgaW1tZWRpYXRl
bHkgbm90aWZ5IHRoZSBzZW5kZXIgYnkgcmV0dXJuIGUtbWFpbCBhbmQgdGhlbiBwZXJtYW5lbnRs
eSBkZWxldGUgaXQgZnJvbSB5b3VyIHN5c3RlbS4gUGxlYXNlIG5vdGUgdGhhdCBuZWl0aGVyIFNr
eXBhdGggbm9yIHRoZSBzZW5kZXIgYWNjZXB0cyBhbnkgcmVzcG9uc2liaWxpdHkgZm9yIHZpcnVz
ZXMgYW5kIGl0IGlzIHlvdXIgcmVzcG9uc2liaWxpdHkgdG8gc2NhbiBhbnkgYXR0YWNobWVudHMu
PC9wPgo8cD5Ta3lwYXRoIC0gUmVnaXN0ZXJlZCBpbiBFbmdsYW5kIGFuZCBXYWxlcy4gUmVnaXN0
ZXJlZCBudW1iZXIgLSA0MDkyMTc0PC9wPgoKICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Jv
ZHk+CjwvaHRtbD4K
--db4194566ea1afdb5b8c19188fbcb8b47ff8793d0--

--f4fea373259afd930de9ac04bcbda73664934aa91
Content-ID: <7a31fb29f882ed531508a4d8034f600f@52.18.23.15>
Content-Type: image/jpeg; name="logoemail.jpg"
Content-Disposition: inline; filename="logoemail.jpg"
Content-Transfer-Encoding: base64

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
xYbIuLDZFxYbIuLHQshUf//Z

--f4fea373259afd930de9ac04bcbda73664934aa91--

--725439805183e20399bc7143bf77b1b851c4ca862--

amir_razavi’s picture

At least in my case, problem was related to 8bit encoding for base64 encoded message body and it has been solved by changing:
if (drupal_strtolower($body_part2_encoding) == 'base64') {
to
if (trim(drupal_strtolower($body_part2_encoding)) == 'base64') {
in smtp.mail.inc and they are sending good for me now!

berenddeboer’s picture

Have come to the conclusion in #12, unfortunately no new module was released, so I wrote my own: Just SMTP. It's designed to solve the problems of SMTP, and not be an MIME parser, queuing system, etc etc.

pounard’s picture

You are still using PHPMailer which was the cause of many problems of the SMTP module, that's why I choose a different path and made use the PEAR::Net_SMTP package instead, code is working gracefully on production environments since. You can check this out there https://github.com/makinacorpus/drupal-netsmtp

vlad.dancer’s picture

@pounard, thanks man for the amazing module. It saved for me a bunch of time)

pounard’s picture

@vlad.dancer I'm happy to hear it did the job for you

spazfox’s picture

The Just SMTP module is working great for me and has resolved all of my Mime Mail/SMTP issues so far. Thanks, berenddeboer!

wundo’s picture

bluegeek9’s picture

Status: Needs work » Closed (outdated)
//www.flaticon.com/free-icons/thank-you Thank you for your contribution!

Unfortunately, Drupal 7 is End of Life and no longer supported. We strongly encourage you to upgrade to a supported version of Drupal.

Now that this issue is closed, please review the contribution record.

As a contributor, attribute any organization that helped you, or if you volunteered your own time.

Maintainers, please credit people who helped resolve this issue.