Hello and good afternoon, i am in development of my project long story short i need to save my html base page with UTF8 or Unicode
Dim y As String
Dim UTF8encoding() As Byte, MyEncoder As New System.Text.UTF8Encoding(TRUE)
y = (html code should be here will be under)
Dim utf8 As New UTF8Encoding()
Dim utf8EmitBOM As New UTF8Encoding(True)
Dim code As String = y
Path = "C:\Users\OWNER\Desktop\invoice.html"
Try
Dim my_write As System.IO.StreamWriter
my_write = IO.File.CreateText(path)
my_write.write(utf8EmitBOM.GetPreamble())
UTF8encoding = System.Text.Encoding.Convert(System.Text.Encoding.UTF8, System.Text.Encoding.Unicode, MyEncoder.GetBytes(y))
my_write.WriteLine(code)
my_write.Close()
Catch ex As Exception
End Try
HTML
<html>
<style>
table, th, td
{ border: 1px solid black; }
</style>
</head>
<body><center><b>
<font size=20>Family Butcher</font></br></br></br><center><b>
<font size =4>164 Battersea Bridge Road London SW11 3AW</center></font><center><b>
<font size =4>Tel: Mob:</center></font><center><b>
<font size =4>VAT No: 835522334</center></br></font></br>
<table Border = 3 WIDTH=610 align=left></br><tr>
<th colspan=3 align = left>To: " & txto & " <br/>
<br/>Date: <br/><br/>Invoice nº <br/></th></tr>
<td WIDTH = 100 HEIGHT=40><center><b>Quantity </b></td>
<td WIDTH = 400><center><b>Description</b></td><td><center>
<b>Value</b> </br></p>
</body></html>
At the moment i do not know how to save the file in either unicode or utf8 and then i cannot open the html file without the symbols "Â" Thanks for any support
I suggest you use File.WriteAllText - this overload allows you to specify encoding, so you can accomplish your goal with just one line of code, for example:
File.WriteAllText(path, code, Encoding.UTF8)
Related
I have a problem with pdf fonts. I have used a method for generating pdf from html which worked fine on my local machine which is windows OS, but now on linux Cyrillic text is displayed with question marks. I checked for fonts there but it turned out that there were required fonts. Now I switched to another method which is shown below.
Document document = new Document(PageSize.A4);
String myFontsDir = "C:\\";
String filePath = AppProperties.downloadLocation + "Order_" + orderID + ".pdf";
try {
OutputStream file = new FileOutputStream(new File(filePath));
PdfWriter writer = PdfWriter.getInstance(document, file);
int iResult = FontFactory.registerDirectory(myFontsDir);
if (iResult == 0) {
System.out.println("TestPDF(): Could not register font directory " + myFontsDir);
} else {
System.out.println("TestPDF(): Registered font directory " + myFontsDir);
}
document.open();
String htmlContent = "<html><head>"
+ "<meta http-equiv=\"content-type\" content=\"application/xhtml+xml; charset=UTF-8\"/>"
+ "</head>"
+ "<body>"
+ "<h4 style=\"font-family: arialuni, arial; font-size:16px; font-weight: normal; \" >"
+ "Здраво Kristijan!"
+ "</h4></body></html>";
InputStream inf = new ByteArrayInputStream(htmlContent.getBytes("UTF-8"));
XMLWorkerFontProvider fontImp = new XMLWorkerFontProvider(myFontsDir);
FontFactory.setFontImp(fontImp);
XMLWorkerHelper.getInstance().parseXHtml(writer, document, inf, null, null, fontImp);
document.close();
System.out.println("Done.");
} catch (Exception e) {
e.printStackTrace();
}
with this peace of code I am able to generate proper pdf from latin text, but cyrillic is displayed with weird characters. This happens on Windows, I haven't yet test it on Linux. Any advice for encoding or font?
Thanks in advance
First this: it is very hard to believe that your font directory is C:\\. You are assuming that you have a file with path C:\\arialuni.ttf whereas I assume that the path to MS Arial Unicode is C:\\windows\fonts\arialuni.ttf.
Secondly: I don't think arialuni is the correct name. I'm pretty sure it's arial unicode ms. You can check this by running this code:
XMLWorkerFontProvider fontProvider = new XMLWorkerFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS);
fontProvider.register("c:/windows/fonts/arialuni.ttf");
for (String s : fontProvider.getRegisteredFamilies()) {
System.out.println(s);
}
The output should be:
courier
arial unicode ms
zapfdingbats
symbol
helvetica
times
times-roman
These are the values you can use; arialuni isn't one of them.
Also: aren't you defining the character set in the wrong place?
I have slightly adapted your source code in the sense that I stored the HTML in an HTML file cyrillic.html:
<html>
<head>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"/>
</head>
<body>
<h4 style="font-family: Arial Unicode MS, FreeSans; font-size:16px; font-weight: normal; " >Здраво Kristijan!</h4>
</body>
</html>
Note that I replaced arialuni with Arial Unicode MS and that I used FreeSans as an alternative font. In my code, I used FreeSans.ttf instead of arialttf.
See ParseHtml11:
public static final String DEST = "results/xmlworker/cyrillic.pdf";
public static final String HTML = "resources/xml/cyrillic.html";
public static final String FONT = "resources/fonts/FreeSans.ttf";
public void createPdf(String file) throws IOException, DocumentException {
// step 1
Document document = new Document();
// step 2
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file));
// step 3
document.open();
// step 4
XMLWorkerFontProvider fontImp = new XMLWorkerFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS);
fontImp.register(FONT);
FontFactory.setFontImp(fontImp);
XMLWorkerHelper.getInstance().parseXHtml(writer, document,
new FileInputStream(HTML), null, Charset.forName("UTF-8"), fontImp);
// step 5
document.close();
}
As you can see, I use the Charset when parsing the HTML. The result looks like this:
If you insist on using Arial Unicode, just replace this line:
public static final String FONT = "resources/fonts/FreeSans.ttf";
With this one:
public static final String FONT = "c:/windows/fonts/arialuni.ttf";
I have tested this on a Windows machine and it works too:
I'm converting HTML to PDF as below:
public const string PdfDocumentHeaderHtml = #"<!DOCTYPE html>
<html lang='en' xmlns='http://www.w3.org/1999/xhtml'>
<head>
<meta charset='utf-16' />
<title></title>
</head>
<body>
<table>
<tr>
<td colspan='3'>
<span Style='font-family:Arial;font-size:10pt;font-weight:bold;'>{0}</span>
<br/>
<br/>
<span class='pageHeaderText'>{1}</span>
</td>
<td colspan='1'>
<span><img src='' width='150' height='90' alt='NOS'/></span>
</td>
</tr>
</table>
</body>
</html>";
And save to PDF using the below code:
public override void OnCreatePDF(PdfWriter writer, Document document)
{
iTextSharp.text.FontFactory.Register(#"C:\Windows\Fonts\arial.ttf", "Arial");
base.OnCreatePDF(writer, document);
if (writer == null)
throw new ArgumentNullException("writer");
if (document == null)
throw new ArgumentNullException("document");
var headerHtml = string.Format(Constants.NosPdfDocumentHeaderHtml, Urn, Title);
var providers = new Dictionary<string, Object> { { HTMLWorker.IMG_BASEURL, string.Format(Constants.HeaderImageLocation, SiteUrlForHeaderImage) } };
List<IElement> htmlarraylist = HTMLWorker.ParseToList(new StringReader(headerHtml), null, providers);
foreach (IElement htmlElement in htmlarraylist)
{
document.Add(htmlElement);
document.Add(new LineSeparator((float)0.90, 100, new BaseColor(0, 112, 192, 0), 0, 0));
}
}
I want to set Font-Family:Arial for the PDF but the problem is, when I see the PDF-File properties, it says Helvetica is used.
I think I need to download Adobe Font Metric file (arial.afm file) and set this font family (instead of arial.ttf) for use with pdf. But I don't know how to do it.
Could you please advice?
Thanks,
In the comment section, you are asking for an alternative to add a table structure to a document.
That's easy with PdfPTable. For instance, if I want to create a table with 3 columns, I do:
PdfPTable table = new PdfPTable(3);
I want to span 100% of the available width between the margins of the page, so I do:
table.WidthPercentage = 100;
I want the first column to be twice as wide as column two and three, so I do:
table.SetWidths(new int[]{2, 1, 1});
Now I add cells:
PdfPCell cell;
cell = new PdfPCell(new Phrase("Table 1"));
cell.Colspan = 3;
table.AddCell(cell);
cell = new PdfPCell(new Phrase("Cell with rowspan 2"));
cell.Rowspan = 2;
table.AddCell(cell);
table.AddCell("row 1; cell 1");
table.AddCell("row 1; cell 2");
table.AddCell("row 2; cell 1");
table.AddCell("row 2; cell 2");
Finally, I add the table to the Document:
document.Add(table);
And that's it.
Update: I copy and pasted my example html file from here into a new file to make sure people could test with it, and then my code worked! I'm thinking this is an encoding issue because the original file was auto-generated from a Linux machine. I've tried saving a new file and reopening that one from the script, but that didn't work. I'm hoping I could still solve this using only one VBA macro by either somehow saving a new file and using the data in that one or making sure the encoding matches.
I can't seem to compare the following string correctly:
line, %
I've been trying to use the StrComp function and just using an equal sign, but both have not worked. I also used the Trim function on the strings I'm comparing to make sure there's no whitespace on either ends. I can trace through the debugger and see that the values I'm comparing are both "line, %", but the expression never evaluates to true.
Do any of the characters in this string cause me to have to do something special in order for a comparison to work?
Edit: This does work (I made a typo in my last edit):
Dim percentString As String
percentString = "line, %"
Dim test As String
test = percentString
If StrComp(percentString, test) = 0 Then
MsgBox "They are equal"
End If
However, I'm reading input from an html file, and that is not working. See below for code you can try.
Maybe it has to do with charset=ISO-8859-1 in the html input? Would the character set matter? Here is what is at the beginning: <HTML><HEAD><META CONTENT="text/html; charset=ISO-8859-1" HTTP-EQUIV="Content-Type"/>
Here is an example you can try
testFile.html
<HTML><HEAD><META CONTENT="text/html; charset=ISO-8859-1" HTTP-EQUIV="Content-Type"/><TITLE>title</TITLE><STYLE>
TABLE,TD,TH {border-style:solid; border-color:black;} TD,TH {background:white;margin:0;line-height:100%;padding-
left:0.5em;padding-right:0.5em;} TD {border-width:0 1px 0 0;} TH {border-width:1px 1px 1px 0;} TR TD.h {color:red;} TABLE
{border-spacing:0; border-collapse:collapse;border-width:0 0 1px 1px;} P,H1,H2,H3,TH {font-family:verdana,arial,sans-
serif;font-size:10pt;} TD {font-family:courier,monospace;font-size:10pt;} TABLE.hdft {border-spacing:0;border-
collapse:collapse;border-style:none;} TABLE.hdft TH,TABLE.hdft TD {border-style:none;line-height:normal;} TABLE.hdft
TH.tl,TABLE.hdft TD.tl {background:#6699CC;color:white;} TABLE.hdft TD.nv {background:#6633DD;color:white;} .nv A:link
{color:white;} .nv A:visited {color:white;} .nv A:active {color:yellow;} TABLE.hdft A:link {color:white;} TABLE.hdft
A:visited {color:white;} TABLE.hdft A:active {color:yellow;} .in {color:#356085;} TABLE.s TD {padding-left:0.25em;padding-
right:0.25em;} TABLE.s TD.l {padding-left:0.25em;padding-right:0.25em;text-align:right;background:#F0F0F0;} TABLE.s TR.z TD
{background:#FF9999;} TABLE.s TR.p TD {background:#FFFF88;} TABLE.s TR.c TD {background:#CCFFCC;} A:link
{color:#0000EE;text-decoration:none;} A:visited {color:#0000EE;text-decoration:none;} A:hover {color:#0000EE;text-
decoration:underline;} TABLE.cn {border-width:0 0 1px 0;} TABLE.s {border-width:1px 0 1px 1px;} TD.h {color:red;border-
width:0 1px 0 0;} TD.f {border-width:0 1px 0 1px;} TD.hf {color:red;border-width:0 1px 0 1px;} TH.f {border-width:1px 1px
1px 1px;} TR.cis TD {background:#F0F0F0;} TR.cis TD {border-width:1px 1px 1px 0;} TR.cis TD.h {color:red;border-width:1px
1px 1px 0;} TR.cis TD.f {border-width:1px 1px 1px 1px;} TR.cis TD.hf {color:red;border-width:1px 1px 1px 1px;} TD.b
{border-style:none;background:transparent;line-height:50%;} TD.bt {border-width:1px 0 0 0;background:transparent;line-
height:50%;} TR.o TD {background:#F0F0F0;}TABLE.it {border-style:none;}TABLE.it TD,TABLE.it TH {border-style:none;}
</STYLE></HEAD><BODY><TABLECELLSPACING="0" WIDTH="100%"><TR><TH>Report</TH></TR><TR><TD></TD></TR></TABLE><H2></H2><TABLE
CELLSPACING="0" WIDTH="100%"><TR><TH>line, %</TH></TR><TR><TD>Name</TD></TR></TABLE><H3></H3><TABLE CELLSPACING="0"
WIDTH="100%"><TR><TH>line, %</TH></TR><TR><TD>test</TD></TR></TABLE><P></P><TABLE CELLSPACING="0"
WIDTH="100%"><TR><TD></TD></TR><TR><TD></TD></TR></TABLE></BODY></HTML>
Use this VBA code and make small modifications to specify where testFile.html is.
Option Explicit
Sub percent()
Dim MyFile As String
MyFile = "testFile.html"
Dim percentString As String
percentString = CStr("line, %")
Dim ws As Worksheet
Workbooks.Open Filename:= _
"path\to\testFile" & MyFile
Dim stringVal As String
Dim val As Variant
Set ws = Worksheets("testFile")
For Each val In ws.UsedRange.Value
stringVal = CStr(val)
stringVal = Replace(stringVal, vbLf, "")
stringVal = Replace(stringVal, vbTab, "")
stringVal = Trim(Application.Clean(stringVal))
percentString = Replace(percentString, vbLf, "")
percentString = Replace(percentString, vbTab, "")
percentString = Trim(Application.Clean(percentString))
Dim res As Integer
res = StrComp(stringVal, percentString)
If res = 0 Then
MsgBox "Found the percent string"
End If
Next val
Workbooks(MyFile).Close
End Sub
It turns out there was an encoding problem. Basically, an  character showed up in the debugger only after I made a script that changed all the line, % lines into something else. Therefore, the following got rid of the  character, and this character is why I couldn't get the comparison to evaluate to true:
stringVal = Replace(stringVal, Chr(194), vbNullString)
Sorry to all of those who tried to help. Turns out this kind of question would have only been useful to try to answer if I could have uploaded the input file itself so the encoding would have stayed.
When I have run into this problem in the past I have done two things:
1) See what the string is by creating a cell that has something like:
B1= "|" & A1 & "|"
I use this on both cells to see if there is anything strange. Sometimes there are tabs or new lines that don't show up.
2) I substitute out strange things. If you find a new line you can use find replace to get rid of it all together or you can do a substitute with substr().
Hope this helps a bit. If you post the results from 1 I may be able to help more.
The StrComp function returns 0 if the strings are equal.
http://msdn.microsoft.com/pt-br/library/9s233cfc(v=vs.90).aspx
Kind regards.
Using the HtmlAgilityPack I am trying to obtain the text "9/30/2013" from a node on this website: http://www.nasdaq.com/symbol/goog/financials?query=income-statement&data=quarterly
Here is the HTML from the website
<div id="financials-iframe-wrap">
<br>
<div class="nextgen thin">
<div class="table-headtag">
<div style="float:left;">
<h3 style="color:#fff;">Quarterly Income Statement (values in 000's)</h3>
</div>
<div style="float:right;">
<h3><a id="quotes_content_left_hlswitchtype" href="http://www.nasdaq.com/symbol/goog/financials?query=income-statement" style="color:#fff;">Get Annual Data</a></h3>
</div>
</div>
<div style="clear:both"></div>
<table>
<tbody><tr class="tr_BG_Color">
<th class="th_No_BG">Quarter:</th>
<th style="text-align:left;">Trend</th>
<th>3rd</th>
<th>2nd</th>
<th>1st</th>
<th>4th</th>
</tr>
<tr class="tr_BG_Color">
<th class="th_No_BG">Quarter Ending:</th>
<th></th>
<th>9/30/2013</th>
<th>6/30/2013</th>
<th>3/31/2013</th>
<th>12/31/2012</th>
</tr>
And here is my code
Dim wreq As HttpWebRequest = WebRequest.Create("http://www.nasdaq.com/symbol/goog/financials?query=income-statement&data=quarterly")
wreq.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5"
wreq.Method = "get"
Dim prox As IWebProxy = wreq.Proxy
prox.Credentials = CredentialCache.DefaultCredentials
Dim document As New HtmlAgilityPack.HtmlDocument
Dim web As New HtmlAgilityPack.HtmlWeb
web.UseCookies = True
web.PreRequest = New HtmlAgilityPack.HtmlWeb.PreRequestHandler(AddressOf onPreReq)
wreq.CookieContainer = cookies
Dim res As HttpWebResponse = wreq.GetResponse()
document.Load(res.GetResponseStream, True)
Dim Page_Most_Recent_Quarter As Date = document.DocumentNode.SelectSingleNode("//*[#id='financials-iframe-wrap']/div/table//tr[2]/th[3]").InnerText
When my code reaches the last line I get this error Object reference not set to an instance of an object.
If I debug using Debug.WriteLine(document.DocumentNode.SelectSingleNode("//*[#id='financials-iframe-wrap']/div/table/tbody/tr[2]/th[3]")) a blank is returned.
What am I doing wrong?
First of all, why are you creating a HttpWebRequest object? Let the Html Agility Pack do the heavy lifting for you:
Dim doc As New HtmlAgilityPack.HtmlDocument()
Dim web As New HtmlAgilityPack.HtmlWeb()
web.UseCookies = True
doc = web.Load("http://www.nasdaq.com/symbol/goog/financials?query=income-statement&data=quarterly")
Once the HtmlDocument is loaded, we will extract the date:
Dim dateNode As HtmlAgilityPack.HtmlNode = doc.DocumentNode.SelectSingleNode("//*[#id='financials-iframe-wrap']/div/table//tr[2]/th[3]")
If dateNode IsNot Nothing Then
Dim Page_Most_Recent_Quarter As Date = Convert.ToDateTime(dateNode.InnerHtml.Trim())
End If
I tried this several times, and it works perfectly.
Right I am stumped as hell and I don't even know what I am doing is right. I have some Base64 code of an image which I am emailing using Visual Basic (codes below) but when I recive the email its just shows the box and red cross.
My knowlage is very slim on this and I have just hacked this together. I could be doing something fundamentily stupid but I would not be aware of it.
Please advise :S
VB Code
Public Sub Main()
Dim mySmtpClient As SmtpClient
Dim myMessage As MailMessage
Dim FileReader As StreamReader
Dim EmailBody As String
FileReader = New StreamReader("D:\Extracts\Body.html")
EmailBody = FileReader.ReadToEnd()
myMessage = New MailMessage("eg#example.com", "eg#example.com")
myMessage.Body = EmailBody
myMessage.IsBodyHtml = True
mySmtpClient = New SmtpClient("Server")
mySmtpClient.Credentials = CredentialCache.DefaultNetworkCredentials
mySmtpClient.Send(myMessage)
Dts.TaskResult = ScriptResults.Success
End Sub
Body.html
<img src="data:image/jpg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABVAAD/4QNtaHR0cDov
L25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENl
aGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4
OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjAtYzA2MCA2MS4xMzQ3NzcsIDIwMTAvMDIvMTItMTc6
MzI6MDAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHht
bG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0i
aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1w
PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9
InhtcC5kaWQ6MTY3RkUyMEFCREQ0RTExMUFFODdDOUNGOURFNjQ5MUYiIHhtcE1NOkRvY3VtZW50
SUQ9InhtcC5kaWQ6RjYyRDMzNjdFQzRBMTFFMTg2RDRCN0EyNTQxQTE2QkMiIHhtcE1NOkluc3Rh
bmNlSUQ9InhtcC5paWQ6RjYyRDMzNjZFQzRBMTFFMTg2RDRCN0EyNTQxQTE2QkMiIHhtcDpDcmVh
dG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIj4gPHhtcE1NOkRlcml2ZWRGcm9t
IHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NDk5QTM0OUY0OUVDRTExMUFEQjdGMjZDRTM5OTI3
NTkiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MTY3RkUyMEFCREQ0RTExMUFFODdDOUNGOURF
NjQ5MUYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBh
Y2tldCBlbmQ9InIiPz7/7gAOQWRvYmUAZMAAAAAB/9sAhAACAQEBAQECAQECAwIBAgMDAgICAgMD
AwMDAwMDBAMEBAQEAwQEBQYGBgUEBwcICAcHCgoKCgoMDAwMDAwMDAwMAQICAgQDBAcEBAcKCAcI
CgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCABN
ASwDAREAAhEBAxEB/8QAugABAAIDAQEBAAAAAAAAAAAAAwIIBQYHCQQBAQACAwEBAQEBAAAAAAAA
AAACAwEEBgUHCAAJEAABAwMDAwMCAgUIBwkBAAACAQMEAAUGEQcIMRIJIUETFBUiCjK0dXY4UUIj
tRYXNzmzdNSFlcW2YZEzJCU2J1cYGREAAQIEBAQDBQQIBAcBAAAAAQACEQMEBSExEgZBUXEHYYET
kbEicjWhcxQ0wdEykrLCIxVCYoKz4VIzU4NUNhb/2gAMAwEAAhEDEQA/AOPF0r7bX81woL0qCiUa
golCoKJQqCiUF6VCJQLpUIgoF0qEYRlUIgoF1oUYRl0r8iCM6FGEZ+9QjCMulQjCI/ehKMIzqCjC
IvehKMIy61CYERdKFGER+9CjCI+tQUwIi6UJTAiP3qCjCI/ehKYER0KMIjoSmBCdQmBEdCmBCdCm
BEfvUFMCJz3oUYQue9CmhEdCjCE6FMCI6EpgQnUJgQl1oSmBHQo1aYulbdeEhQXpUFEo1BRKFQUS
hUFEoL0qESgXSoRBQLpUIwjKoRBQLrQowjLpX5EEZ0KMIz96hGEZdKhGER+9CUYRnUFGERe9CUYR
l1qEwIi6UKMIj96FGER9agpgRF0oSmBEfvUFGER+9CUwIjoUYRHQlMCE6hMCI6FMCE6FMCI/eoKY
ETnvQowhc96FNCI6FGEJ0KYER0JTAhOoTAhLrQlMCOhRq0xdK268JCgvSoKJRqCiUKgolCoKJQXp
UIlAulQiCgXSoRhGVQiCz+H7Qbtbiwnbnt9i93vttYc+B+RZrbMmtNu9qH2GcZo0QtFRdFXXSqVT
cJFOQ2bMa0nmQPeV0qO1VVU0ukSnvAwi1pPuClP2P3qtmRwsNuWH3uPl9yFx23Wp+1T25koGRVxw
mGCZRw0ARVSUUXREXWgbc6ZzDMExha3M6hAR5mMAmus9WyY2U6S8PdGALXRMM4CETDwX3Fxc5M//
AF1k/wDwC6/7PSP71R/96X+839atDbtw/wDXm/uO/UoFxb5Nev8A8dZP/wAAuv8As9R/eqP/AL0v
95v60Y27cP8A15v7jv1LRbjAnWqa9a7oy5GuUZw2JEd8CbdadbJQMDA0QhISRUVFTVFroNcHAOaY
grluYWOLXCBGBB4L5T96/FSF0SzcPOVeSYM7ubZdushf28ZjuXA70lpmDD+labV43xdNsRJsQRVU
hVU9OtcibfqKXM9F05gfGENQjHlDmtBJ2zcZsk1DKeYZYEdWkwgMYxhl4rmRe9dQrihGXWoTAiLp
QowiP3oUYRH1qCmBEXShKYF9OPYzkmY3tjGcQt8m65HLJQi2+2sOyZLxCKmqNtMiRkqCKr6J0SlT
ZrZTS95AA4nAKxIkvnODJbS5xyAESfIJcv29z7Ar6GL5zY7hZcmdAHW7ddoUmJKMHSUQIWZAAaoS
oqIqJ6qlKlVMuc3XLcHDmCCPaE+dSTZDtE1jmu5EEH2FLnm0G7O2DMeRuVi93x6PMUwiHfLbMgC+
TaIpo2spptCUUJNdOmtLkVsmfESntdDkQfcn1Fvn00DOluZHLUCI+0LWDp5VcITqEwIjoUwIToUw
Ij96gpgROe9CjCy2EbZbk7o3B607Z49c8iusdv6mRFsUCVPdaa7kD5DCK24Qj3Eiaqmmq1Wn1MuS
IzHBo8SB71cpqWbPMJTC4jkCfcsTkFhvmL3mVjuTQn7dkEJwo0yBPZcjyGHQXQm3WnUExJF9FRUR
UomTGvAc0gg8QofLdLcWvBBGYOBWOOpUhEdCUwITqEwIS60JTAjoUatMXStuvCQoL0qCiWf2r2p3
B3uz2BthtZbDvGeXP5/oLcwbTZvfTR3JbuhPm2CdrTRF6knT+WqVwr5NFJM+e7SxsInqYDLxK6Nr
tVRcp7aalZrmOjACGMASc4DIErpWS+ODm/iVytNnvm3VyC6XyStvtjEc4kknnhaN8kVIz7nYItgp
EZ6CiJ6qlcSTvO1zWucye2DRE5jDLiBHHgMVp6jt3epDmMfTPi8waBAxMI8CYCAiSYAc1928fjA5
u7FYM9uPn2FOJiERtX7hJtc2BcShtiPcRvtwX3XBAURVI0FRTT1VKRbt8WyumiTKm/EcgQWx6EgD
yzVm79tL1bZBqJ8g6AIktLXQ6hpJhzOQ5qW0niz5zb2YWxuBheEON4rNbGRb37vMgW05TZp3CbTM
19p1QJNFElFBJFRUVUobhvm10c0yZk34hnAF0OpAI8s0y09sr3cJIqJMg6CIguLWxHMBxBhyMIHg
tOt/B7lbdt5J/HyJhcxN47dFK6SbG+7EYdWGJg2r7LjzwNOt9ziaE0ZIvrp0XS+/c9A2mFWZo9Jx
gHYnHkYCIPUBcyVsy6PrHUAkO9Zo1FpIBhzBJgRjmCV+71cFOWnHjDP7wt5cLl2PDPqGoKz3noTw
C+8hK2JJGfdJNexfVU019NdVSgt26KCvmejTTQ50IwgRgOoCO77Kulrk+vVyCxkQIxBxOWRKx2xf
DjkxyatM++7F4lJyGz2x4Ik6RGdiMg084HyCGsp5rVe319NdPfrTLpuGitzg2qmBhcIjPLyBS7Jt
O43djn0UkzGtMCQQIHzIXp34GsLybbjZncvAc0i/RZdZswettzhK406UeVHtsRp1oiZIwUgJFRdF
XRUrxXuhUsqKiRNlmLXSog8wSYHFfRvZSjmUtJUyJwg9k4gjAwIa2IwwwXy+QXe/bvjj5QdiN5t1
5bkHALNY8j+vlMMPSTD6uDPgtaNMCZlq6+KeiemuvSp2pbZ1fZaunkCL3PZARhkWk4nwCHfF4kWv
cdBV1JhLZLmRMCcw5owGOZCtPxh5h7D8wbHdMi2Iub1ztVmfbhTzkw5UNQdebV0EQZTYKWop1SsT
etv1Vqc1lU0NLhEYg+5ekbd3VRXtjplE4uDDAxBGJ6rB8nPITxd4gZZb8K32vMm25Dc4n3WG1Gt0
2YJR/mNjuU4rRii97apoq61Ys21a26SzMpmgtaYHEDHPiVU3Bve3WWa2TWPLXOERBpOEYcB4LwN3
4ymzZzvdmWbY44ruPXi+3a6wHTAmyOPLnvPtEoGiEKqBouipqlfTttkOk00qW/NrGg9QACvjS71D
KisnTpeLXPcR0LiQuzeM7htuHyW5C4tlgYyd82KsN+gf2vkq5F+naabVJfxPtPOCZg4gIhIIrqiq
lZ3eF/lUFLMZr0zXMOnOPKIPgtbsHa8+6VsqZ6euQyY3WcIAZwIJiQei9FvLVnPkasyScT4q482/
xyPFpr+Z3oWrY65/TfWMzGP/ADzqGAtQ2xNFbDX8fXVNE8n2RTWl8H1r4TvUGgY+EDhzOGPJe5dx
6u+MjLt0uNP6R1ug3jqDhiYiDQDgOK8hth+Mu/fJ/J3MQ2FxeZkl7ZQTk/Ri23HjCaqIlIkyDaYZ
QlRdFcMda9xud3prez1Kl4YPHM9AMT5BfN9nsNZdJnp0csvIzhkOpMAPMhdN3r8T3PTYbEZGfZtg
rz+IQ2zkTpljlwbosVptFM3HmYLzrwgIopEfZ2inqqpXGoN622seJUubBxyBBEehIh5ZrRXPt5d6
CUZ02SSwZlpDoeJAJMPGEFW7tI1QRTUlXRETqq1qCscFZXbLw9+Q3dnEm81x7b96FZJAC7EG/Trd
a5L4kPcijGnSGnhRU00UwFF19FX10yNZvi2Uz/TdNiRnAEgeYEPYt1QdubxVyxNZIIBy1FrSfIkH
2gLiG+GwG8/G/NC2+3yxyZjWWiHzhFuDaILzSkoI6w62ptOt9wqne2RDqipr6V3aC5SK6X6tO8Pb
4fpGYPgVnLnaKm3TPRqpZY7kePiDkR4jBNsBxm325T5ou3+wWNysjydtv6iQ3FVppmMz3IHySJEk
2mWh7l0RTNEVfRPWl3O609BL9SpeGt9/QDE+SfaLLVXOb6NJLL3eGQHiTADzKt/wd8e/Lfhz5Fdn
7/v1ijltxafc5saNd4cmJPhK+tlnkjJvQnXUbNUFVQT7VVEXTXRaw+4Ny0VytlQ2nfFwAwIIP7Qx
gc/Jei7Y2lcLRd6Z9VL0tLiAQQRHS7CIJgeq/fPH/mcY1+xMc/rOZQ9vvpT/AJne4JvdD61L+Rn8
RVpPPRxv3k5VXDZfaLY2zOXrNJU7InybEgaZjR249uRyRIedUQbbDuTUiX1VURNSVEXI9vrnIoBU
Tqh2loDfM/FgBxK3Pc+0VFyNLIpm6nEv6AQbiTwC87OVHiA5s8SNvnN1dwbLDuu38VEK53LGZazx
t4kXahSWybZdENepoKgnuqV6Pat5UNwmelLcQ45BwhHpw8s15TethXG1yvXmtDmDMtMYdcj55KtW
LYllGeZJCw7CbdJu+WXF0YsC221lyRJkPH+iDTTSERKv8iJWlnTmSml7yA0Zk4ALK08h854lywXO
OAAxJ8laOxeC/wAm2Q2JL6G3zcNHBVxqHcL3YmJRj2oSatlN/Aq66aOKKovVErJTN92tjtPqx6Nd
D3e5beT25u726vRh4FzQff71Xbf3jnvhxgzo9td/Mal4zmQgkgIs8QIH2SVRR2O+wTjLzfcip3tm
Q6oqa6otaCguUitl+rTvDm+H6RmPNZu42qot8z0qlhY7x94ORHiF9fHPiTyN5c5S/h/HbE5mTXeI
IOTnI3xMxIguKqAsmXLNmO13dq9qGaKWi6a6LSbldqagaH1Dw0HLmegGJT7VZaq4v0UssvIz5DqT
ADzK6FyM8TXPni9hr+426mBPpgERtX513ssuDdWIYCuhHJG3vPONAKaKpmCB6/pddObb910Fa/05
Uz4jkCCI9IjHpmuxctm3GgZ6s6UdIzIIMOsCSOuSs5+WI/iy3B/dJf64g1mO5f5SX8/6Ctd2p/OT
fu/5gqgeT/8AzDd5v3tvX64danbX0+R8g9yyO6fqVR9473rDZ3wA5hbZ7IMcjtxcHlWLZmUzGkxr
zdpECJ8oTVT6dAjPyBkqTiEiiKN9yp66aetHJvtJOnfh5cwOeI4CJyzxhD7UM7b1ZIkCpmSy2WYY
kgZ5YRjj0XGDrqlckITqEwIS60JTAjoUatMXStuvCQoL0qCiVl/Dx/mNbdf7/wD+mLnWI7jfRp/+
j+Nq9L7Q/wD0VN/5P9p69S/JFyty3hrxzXeLArXBumYHcollhheReOK0koXXTcMY7jLhfhYVNEMf
VUXX00XwjZlhl3is/DTXFrdJcYQjhDmCOPIr6f7i7pm7ft34yQxrn6w0aowEYknAg8OYXRuPG5h7
/cesS3WvkBqM9lVmh3SbbhX5WAKXGE3Wk+RPxBqSond7da494ovwFZNp2kn03kA8cDgeq0W37l/d
LfJqntA9VgcRmMRiOir1wR8jGe8teUu4+y96sVvteBYuEmRYH4aSEnqzFuQ2/tlk4840RGhoX9GA
IPT8XWtdunZ0q1UMipa9znvhqjCGLY4YR9pMfBYHZHcGffLnU0b5bWy5US0iOqAdp+LEgxzwAhli
sD5Ut4YPGHkVx85GiPxFbrpeLTfX2h1N6xywgty2iQU1PsbcM20XoXqnWrOxbcblR1tHza0t8HDV
A+ZgD4Kn3NuzbPcLdcMtL3tcebDp1DxgCSPFd/5ubOROS/EDNttbUoS5d1tLk6yONaPC5Nh9txhK
Chrqhusgmo6+i+mvSsntq4m3XCVOdhpdA9DgfsJW73jaRd7VPp24lzIt44j4mw6kBcP4XwLX4+/E
/wD3u5MwLWQHape4E5h4fjV+fdABLbHNP0kIm/pmV19UX+Tomm3G519v34dh+HUJY8A39o+3UVjd
oS27Z2x+KmCDtBmnxc79geY0tWp/l/r1dck2C3DyK+vlJvc/LXpsyS76m6+/bYrrhlpp6kRKq1d7
qy2y6qSxogBLgOgJXN7HTnTaGomPMXOnEk8yWgkrh35iv/G7bv8AYcz9fWtJ2k/LTvnHuWR77fnK
f7s/xLp/5dH/AAe3I/bNv/Ujri92/wAxI+U+9aPsR+Vqfnb7lxv8xR/Ezg/7r/8ANZld7tP+Tm/e
fyhZnvl9QkfdfzOXnqXSvU14oFanxHci96duOWWGbNYTfnYG2eWX2MmRWptqMQTUFkwTvNxonE0R
P5pJWH31aaefQzaiYyL2MOk44fbBekdtL5V0txk0sp5bLmPGoQGOHSPsVkPOpzG5LbJ8hrfsttbl
ci0bYX/C2HrxaGWIbjck51yu8GQpG+w44new0IL2knonp61kO3FhpKuldUTpYc9s0wMThANIyPMr
fd29z19DWtpaeaWy3yRqEBjFzwcxHEABd92344b88dfFhZNtuENvjf8A6QyeBbrpdrqciNGNqXd2
AkzpYvS3BAjZaVGGV19NBJE9KzNXdqauvLptxJ9FhIAgTg0wAgOZxPmFsqGx1lt2+yRamj8RMa0k
xAxcIuMTxA+EeRWC8Z+1Plk2a3fmWfl/MkZDsZd4j6vyb7kMW9SoE9v+kYOORSHn0A/xNkCfh9UX
RO2rG7q2yVUgOoQGzWkZNLQRxjgB4xzVXYtv3FRVJbciXyXA4ueHkHhDEmByIy9i5psL49tr7R5t
M3jfb2F2qw+CxuLZLSSIrLdxuv06x20aQtEbYkOvuAnQewE00rqXLc85235RifUeSwnwbGPmRAHq
VxbRs6QzdE4aR6UtomNHDU6EBDkCXEdAs7zr2Y81m8HJe55Rx3uMvHNlLW6EXFoVkyeFbG5DDIpr
JmMDKD5TdcUi7XhXQdB09Kq7dr7BTUjWVQD5h/aJYTDwBhhDw6q9uq2bnrK50yjcWSWmDQ2YGxA4
kRxiefDBbL5Q9jc73v8AFKzuJyTtUWDykwKJCvst2CcdwAlDJag3AQcjkofHIYJXVAVVEJB9PwpV
PaVwl0t5MqkcTImEgRjlCLc+IOEeUeav75tc2tsAnVrQKiUA4whnEB2WECMYc4clifH2dj4CeGi6
8qrVb2ZW4d2g3DMJPypqMiUcs7ZaWXSBRL4RH4lIUXVFI9PVaduXVd762jJgxpDeghFx65+wJO0d
Ni246va0F7gXnxMdLAfDL2lcQ8WHlk5Yb280LJspyKvDOV4HmLswY7Ui329g7TPjRH58d6KURhle
3uYRtRJVREXuTRU9e7u/Z1HS0Lp9K3Q5kOJMQSAQYk84rN7F37X1tyZTVjhMZMjwA0kAkEQA5Q+1
aT54/wDM4xr9iY5/Wcyrvb76U/5ne4Kj3Q+tS/kZ/EVcXzw8x93+KOyGJ2rY6eVizjL58yG9kUUW
1lxbfCZaefZjmYkrZPOOtKpj6ogLp6qipiO39kk1895qBqawA6eBJjAnnDH2r0PubuCotlNLbTHS
+YSNQzAEIgcomGPgtX8FXMndLmZtZuJsTyannlzliCJ8Nwu6I6/Mtd6blx5ESU5oiuIKseinqSoa
oq6Imlrf1klW2dKqKUaNUcBwLYEEcs/sVPtpuCfdpE6mrD6mmGJzLXRBB55faqM8Kt1ct8f3kPzj
B9pNsT3W3Nt90veA2O3R3pDc6O1BurkeQ9HViPL0I2o+huKOgh3ar2qWu6vlIy7W6XMnTvRYWteT
wxERHEc8ua8727Wvst1my5Ej13hzmAYxEHQJEAeAxPAeCsIPG/8AMV7i7jHvouTT8YuEmStyiYzI
yyI1bIzRuE43HW1Rn34agIqg9roKWn6X4tazhuW3JMr0NAcAIatBifHUQD7PJasWndU+b+J1lhJi
G6xAeGkEj2jrit6/Mu47Gl8Y9rsyvsVoc5i35y3G+yno2Ey0uvyWgJdS7FdigqevtXO7aTCKqcxp
+Etj7Dh711e7EoGkkTHD4g+HtbE/aAtqyu+//wAkPCdZ8i2XZYib1X+FZzcu6tNOEWQZG0EqTKNH
EMXVjMd4MoSKmjYappqlVJTP79e3NnRMtpOH+VuAHhE59Sr02Z/+csDXSICY4Nx/zOxJ8YCMOgVN
OA3nO3a2TyTJLPzWuV63R2bvdvdaZtr6Qp0ti4G62OnfPcZT6ZxgnRcbUlTXt0H9LXYX/Y8qpa00
QbKe054gQ8uMYQKxG2+4E6lc9teXTpbhlgTHzhgRGI6LoX5cifiV153buXTAYjtvwSTYZr9lgSyE
340BzIYpxmXCFVRTBpRElReqVze4bXtoZImGLg4RPM6TFdXti5jrhPMsQaWmA5DUID2LtfHvw9tb
y+RbdTmRyjtYO7Ps5fepOF4vOHVLzIauJiM6Y0SaLEAgX42y/wDGL1X+jTRziV+7fw9vk0dMfj0N
1OHDDIePM8OuWgtuzPxNynVtWP6fqO0tP+IxzPhyHHpnRrzo8s+QG9nMjIdj9zYxWDbvbqa9asdx
ph10o7raiht3V3uQEN2UwYmC9qIDZIKfziLZ7KtcinpGzpZ1OmCJP8vQH2nFYffd3qKmtdImjS2W
YBvD5upGPgMOtIzrXlYsITqEwIS60JTAjoUatMXStuvCQoL0qCiVl/Dx/mNbdf7/AP8Api51iO43
0af/AKP42r0vtD/9FTf+T/aer7+eH+CGN+8tr/VZteS9q/qh+7d72r3jvl9FH3rfc5dx8fX8EG1X
7s2r9VCsxu76pU/eO962uwvotJ9033Ki3hS/jy3g/wBRuf8A1CzXqHcv6VTdW/wFeKdnPrlb8rv9
wLZ/zFP/ALI2t/16+f6CDVDtB/1ajo33uXV7/f8ARpPmf7mqwHiB5FryB4XWKLdpPz5rhpLiN17y
UnSCGAlCdLuRFXuim2Pd66kJeuuumT7g2f8AAXJ5aIMmfGPPMe2PkQt12pv/APc7PLDzF8n4Hc8P
2T+7DHiQVw78wTyCHGdqcU402N7suGRyVyG8tNroo263L8cZsx1/Rdkmpp6dWf8Av03ai0+pPmVr
hgwaR1OfsGH+pY/vnffRppVuYcZh1O+VuQ6F2P8ApWS/Lx/w05v+8/8AyqHSO7X5yV93/MVZ7EfT
p/3v8rVxj8xX/jdt3+w5n6+taDtJ+WnfOPcsr32/OU/3Z/iXT/y6P+D25H7Zt/6kdcXu3+YkfKfe
tH2I/K1Pzt9y43+Yo/iZwf8Adf8A5rMrvdp/yc37z+ULM98vqEj7r+Zy89S6V6mvFAu6eMT/ADAN
qv26x/o3KzG8vpdR8hWz7f8A1ml+cLvP5ij+NbF/3Itv9fXusv2r+nTPvT/CxbXvZ9Vl/ct/jmK1
Oet5t5DvEDjkvjDcz/vgskOznIt9tmLEkHc7HHSHPgKYGCgRgRONCSohIodEJFrFU3p2S+vFY3+m
4uxIiIOMWu/QeWK9Eq/V3HtqWaB39VgbEAwOpgg5vhHEiOeHNUx4g+OXyJcjtzSxnc6bmO223MRu
SVxyPIhurJC6DS/A3FiTJEQ5Cm6ooqgSCg9y92qIi72+7qtdDJ1yRLmvMINbp84kAww848F5ltrZ
V6uU/wBOoM6RLEYudqHQAEjVE8sIRxXS/F1uRg/F3yj5hx/yHP8A+21lvcI8NtmaTUJhubd4T7El
tgFelS9BUkeZDR1UM+3t/SSuPvClmXCzy6lsr0y06iwcGkERyHgThgF39hVsq136bRvn+qHDQHnC
LgQYYk+IGOJhDNa15O+G3kKsXMLJsq2cgZbku1uXzlvFkk4kd0mMRVloJPRpDcIiSP8AG6pIimiA
oaKi9USxtK+2x9Cxk8y2PYIHVARhkRHOI84qrvnbV4l3KZMpmzXy5jotLNRAjmCB+zA88ILUuWvj
53h4u8K7VvnyH3duMTdG/KzBPa6ST8z5npD5ErP1aXNRL4YqI49/QEIl+HVdRVblm3LIr691PS04
LG4+pgMuMNPE4DHLFUr/ALQqbZbG1VZUuEx+HpGJxJyjq4DE4EA4RyVu+D8KBzx8Jlx42YfMYb3J
ttuuGIvx3z7BZuEWaVztqu9uhI26Cs6noqa93XtVKxG4HG038VTwdBId5EQd5jH7F6Ltdovm2XUU
sj1GtLOhB1Nj4HDHryVe/FL4weUez3Mix75cjbEWEYDhsh4AcusmJ8lzuc+O7a4kWIjDjyGiuyUJ
TT8KomgqqqlaPeG7KSpoXU9K71HPHAHAAxJOXAZLKbE2TXUlxZVVjPSZLPEj4nEFoAhGOJzy5LXP
PH/mcY1+xMc/rOZVjt99Kf8AM73BV+6H1qX8jP4irg+c3iDurzI2kx4OPbLOQ7jYBNfm3bGIsqOM
9YN2jCKOg24Y6kixUUQVUUx7u3uVNKxOwrzJts5/4n4WTBAOgYRB/wCPlxXoXcqwT7tIZ+EAe+US
S0ERg4Z/Zlx4RWveFbh/uB4/tj9yeQ3LKOGJuXhmLLOFPdaV63Wexsy5D0iT8RkIK6UhdAVe5EBN
UTXSrG+LzLu8+VTUZ16Y4ji50BAdIfaqvbuwTbJTT6uuHp6gDA5hrYkk9Y5Z4LXPy/mUYBvLutyE
3/lMNf3w5Ffwuxq+IfVx7Xd5c+4KDfXtE31X5OxdFUB16DVjuHKmU0mlpwf6bWw8CWgD3ZdSq/a+
dKqp9ZVEf1Hvj4hri4/ac+g8FUbf7h75WOVvLK/Y3vva8kDHzu0opuT31JjOG2m0tSSMpUeS8QQU
jMMJ8gg0XcqJ6IprWuoLxaaCka6nLI6RBohrJhkR+1EnDH3LFXKxXq41z2VLXw1GLjH02tjmD+zA
DGAx81bj8yA3aw4TbXfYHVk2AciijDkquvyMfYZnxGqogp+IE16JWO7cE/jZ2rA6DH94Ldd1AP7f
I04jWIfulZze3Frz5SPB9jH9wXZeN0bDDscmRZmjAXnLxjsdIFxhomooLhNm440Kp+NFDT9JFqvR
TRZL4/8AEYMcXY+DjEHpkDyx5K1XSnX/AG+z8N8T2huH+Zog4dcyOeHNUq4B+ELeLkXPyXIuWUO9
7R7TWOEbjFzvkD7fLkTRMDJUj3UWiSM2wLhOOqiDr2oir+LTZ3/e0mkDW0hbOe45AxEOo4kwgFhd
t7Bn1pe6sDpMtozIgSehhgBGJXUfy4luxa0c6t2rTg05y54TFsEyPZ7lIaRl2XBbyCIEd9xtFJAJ
xtBJR1XRV0rldxHOdQyS8QcXCI5HSYhdrti1jbhPEsxaGGB5jUIH2LC+R/y/b94t5NLaxjXfb9p9
kcjdiM45HfLsvLrPy2+5SJRJ2opvxnnWW0X0bAvT1IlU9vbTkPtp1YvnNz5cQB0MCeZ8kG5d5VDL
oA3Bkh8NP/NwcT1BIHIea3n8w1xyxPerZ7AvJdsiAzsZnwoFsyKdGFER613IEk2ec4idFE3VYNVV
V1Nsf5tUNhXB9PNmW6dgQSQPEftD9PkV0u4ltZUyZVzkYggAnwOLT+jzAXkYdepFeSBCdQmBCXWh
KYEdCjVpi6Vt14SFBelQUS2TZ7eLcbYLca3btbS3H7TuDafqPt9w+niyvi+qiuw3f6KY080Xc08Y
/iBdNdU9dFqjcrdJr5LqeobqY6EREjIgjEEHMDiupZ7vUWuobV0jtExkYGAMIgg4EEZEjELfN+fI
Fy65NYOO3G9+W/e8MCS1chhfa7LD0ksCYNn8kCFHc9EcL07tPXpXIte0bdbZvrUsrS+EI6nHA9XE
cF375v27XiR+HrZ2tkQYaWDERhi1oPHms1t95TOd+1eD2rbjA86+gwuyRmrba4X2XHn/AIYzAoDY
fJItzjhaInUiVf5VqpWbFtVVNdOmyYvcYk6niJPR0FfoO518opDKeRUaWMADRolmAGWJYT7StC2V
5c8huOueXjc7ZzIfs+cX9t1m7TvobbL+cHpAyzT4p0Z9odXRQvwCn8nT0rp3Pb9HcJTZFSzUxmQi
4QgIZgg5c1xrNuuvtU99TSTNEyZEOOlpjExODgQMeQXZ9mN0N7fK1yfwLjny3zGXcMMcK+PQ5Fqg
2S3yojrdjkzu4CiwAEkJyE2hIYr+HVE7VXWs1cqGm2vQzqy3ygHfDGJcQfiA4u5E5cea2VnudbvS
5U9vus5zmfHAtaxpB0F3BuOLRGMcMoZr034c8FtlPHVjmV3vHcmuMiz3gY0u9TsnlQ2ocVm3C+om
KNMsAGiPl3kSr6adNPXxTcW6Km/vltfLaC2IAaDEkw8THLAL6P2lsqj2rLnPlzXFr4FxeQAA2OOA
AGZiSvIHyN8mYvK/ltk26FjeN7BWTbseNq4ij/6bAFWgcESXVEecU3tF9U7+iV9AbQsptdBLkOEH
/tO+Y/qEB5L5X39uIXq6TalhjLHws+VuEfMxd5rD8eeeHK3ijjU7D9gsq+w45cpX3ObG+2Wed8kn
4gY7++4w5Jp+BsU0FUT06U277Xobm8TKqXrcBAfE4YZ8CFXsO9LnZpbpVDN0NcYkaWHGEP8AE0nI
LBcjOWO//LG927I+QF/+/wB6tLBwbe99DbYPxMOOfKQ9ttjRhLUvXUkVasWmxUtsa5lIzQHGJxJx
8yVXvu5q68vbMrpmtzRAYNEBn/hAWR4685eUvEuz3Kwcfco/s/abu83MuLX220TvleaBWwLuuUSS
Q6CumgqiVXu+2qK5ua+ql6y0QGLh7iFbsO8LjZmOZQzdAcYn4WmJHzNKwfIzlRvzywyeFmO/9++/
5HbYv2yFJ+it0H443ym/2dltjxgX8bhLqSKvr10p9pslLbGGXSs0tJicSccuJKr3zcdbeZjZtbM1
uaIAwaMIx/wgDMrnRdK6i44WZ2z3NzjZncC1bpbbTvtud2R8Z1rnfDHkfC+KKiF8Upt1ovRehCqV
UraOXVSnSZwixwgRiMPKBV+3V82inMqJDtL2GIMAYHoQR7Qs3yM5Pb5csM2i7i7/AN8+/wCYwoLd
ljTPo7fB7ITL78kGvjtseM2ujklxe5RUvXTXRE0qWqz01tlmVSt0tJjCJOMAOJJyAXQvV/q7vNE+
tfreG6QYNGAJMINAGZPivp438v8AkXxHyGTkWwOTP2N6agjcInYzJhS0b7kD54soHWSUUJe0u3uH
VdFSlXexUtyaGVLA6GRyI6EYp9i3LW2d5fRzCyOYwIPUGI88xwXUN5vMTz63rxCTgl9y8LVjU1so
85vHIUa3PSGjRRICkNCr4iqKqKgGKKnoutcSg2JbKR4mNl6nDLUSYeWX2LR3LuXeK6UZT5ulpwOk
BpPnn7Cqug87HdCRHJQfAkMDBVEhIV1RUVPVFRa1pEcCsO0kGIVqtv8AzZeRDbvFWsSZzFm8RIwI
zGl3+2wps0ARFRO6STYuOr6/pOqa/wDbWLqtgWuc/X6ZbHgCQPZw8oL0Oi7n3mnliX6ocBkXNBPt
zPnFcF5Ccmt9uU+aJn2/WRychyNsFYjFJ+NtiK0pd6txo8cW2WhVfVUAE1X1XVa0NttNPb5fp0zA
0faepOJ81l7tfKu6TPWq5he7hHIeAAwHkF9fGTmByF4eZe9mewGQu2afMAWLjEJtqTCmtgqqIyI0
gTbPt7l7S07h1XtVNVpN2slNcmenUs1AZcCOhGKs2PcNZaZhmUj9JOYzB6g4fpHBb/u95Zudu82a
Y5nOTZikWfiMwbxYIdst8BmDHngBNjJcjGy42+aCSonzIaDqvaiarry6PZ1vpZb5bJcQ8QJJMSOU
Y4eUF2q/ft0rJkua+bAyzFoAAAPOEIE9Yw4Lle/fKffjk1udG3k3vvv3vciGxGhRrl9FbofYzEdN
5kfhgR47K9puEuqhquvrrXUt9op6GUZFO3SwkmESc88SSVx7nfKq4zhUVL9TwAIwAwGIwAA+xbhY
PJbzaxjkHceUFuzqSu8F5YjwbzKONBSHOixGhZZYet7bAROwBD8Pa0ioqqSKhEqrQm7XoH0wpDLH
ptJIxMQTmQYx+37F1ZO8blLq3Vomn1HAAmAgQMAC2Gn7PHMr6+U3lM5q8vsRTbzd3Ku3b0iFyTZL
HFYt0WWYGjgLKSOiG8gkKEgmSiioiomqa0m1bTobc/1JLPi5kxI6Ry8sVYvO9bjdJfpT5nwcgAAe
sM+hwXKtgOR29fFncVjdbYXIJGPZuy2cUpMZG3G347iiRsSGHxcZebVQEuxwVTuRCT1RFTqXG2yK
6X6NQ0Ob+nmDmD0XJtV2qLdN9emeWO945EHAjwK7FyN8wnPTk5t7L2qz/LW4WA3ECYusDHoMa3LO
ZJFQmn3mR+YmyRVQm0NAJPQkVK4du2db6KYJstkXDIkkw6DKPjmOC0d033crhKMmbMgw5hoAj4E5
w8IwPFc/3t8gHLnkTs1ZuP8AvNl33zabHnIT9otj1rszJsO26G5AjH9VFhNSjIWHTBVNxVLVVLVf
WrtFt+jpJzqiSzS90YmLuJicCYZ+CoV25q6tkNpqiZqlthAQbhAQGIAOR59V8PFfnNyh4WXuVeeP
GUPWaNcFErna3m2ZdumKCKIk9FlA42pihKiGiISey1N2sdLcWgVDNUMjkR5hTZtw1drcXUry2OYz
B6g+/NbxyZ8vPPPlXg8jbLcrMEi7eTB+O42nH4ca2NTQXqElyOCPONr7tqfYvuK1z7btGgoX+rKZ
FwyJJMOnDzzXUum9bjcJfpTZkGHMNAEesMfKMFy3jJzC5GcNMsuOc8bci/s3lN1ifaZ8r6C2XD5Y
vzBI+PsukWUA/jbFdRFF9OuldG52inuDAypbqAMRiRj5ELm2i9VNteZlK/S4iBwBwz4grS90ty82
3l3DvW625M37ln2Qy37teJ/wsR/qJUg1ccc+KK200GpLroAoieyVZpqZlPLbKliDWiAHh54qtU1U
ypmOnTTFzjEnARJ6YLpto8j3M+wcaXeH0HM/k45vQ5NoPHJtpscxEiS3TfcbGXLguyx0ccUgUXUV
tdOxR0TTlP29RuqfxZZ/ViDEFwxHgDDrhjxXZlblrWUv4MTP6UCIENOB8SI9McOC4UddgrjBCdQm
BCXWhKYEdCjVpi6Vt14SFBelQUSjUFEoVBRKFQUSgvSoRJ7Nfb3jVzavmOTH7feo6qTEyE64w+2p
CoKoONKJJqiqnovSlzZTZjS14BB4HEJ8ie+S4PluLXDIgwI8wsvl+8u7+e29LVnWV3i9WtF7kjXa
5zZjSLqha9kh0x6ii9Paqsi3U8g6pUtrTzDQPcFeqbvV1LdM+c945OcSPtK1cqtqiFAutCjCMulf
kQRnQowjP3qEYRl0qEYRH70JRhGdQUYRF70JRhGXWoTAiLpQowiP3oUYRH1qCmBEXShKYER+9QUY
RH70JTAiOhRhEdCUwITqEwIjoUwIToUwIj96gpgROe9CjCFz3oU0IjoUYQnQpgRHQlMCE6hMCEut
CUwI6FGrTF0rbrwkKC9KgolGoKJQqCiUKgolBelQiUC6VCIKBdKhGEZVCIKBdaFGEZdK/IgjOhRh
GfvUIwjLpUIwiP3oSjCM6gowiL3oSjCMutQmBEXShRhEfvQowiPrUFMCIulCUwIj96gowiP3oSmB
EdCjCI6EpgQnUJgRHQpgQnQpgRH71BTAic96FGELnvQpoRHQowhOhTAiOhKYEJ1CYEJdaEpgR0KN
WmLpW3XhIUF6VBRKNQUShUFEoVBRKC9KhEoF0qEQUC6VCMIyqEQUC60KMIy6V+RBGdCjCM/eoRhG
XSoRhEfvQlGEZ1BRhEXvQlGEZdahMCIulCjCI/ehRhEfWoKYERdKEpgRH71BRhEfvQlMCI6FGER0
JTAhOoTAiOhTAhOhTAiP3qCmBE570KMIXPehTQiOhRhCdCmBEdCUwITqEwIS60JTAjoUa//Z"
/>
Try using a hidden attachment as per .net - embedding attached image in html email
Dim plainView As AlternateView = AlternateView.CreateAlternateViewFromString("This is my plain text content, viewable by those clients that don't support html", Nothing, "text/plain")
Dim logo As New LinkedResource(Server.MapPath("images1/links/beach-icon.jpg"))
logo.ContentId = "embeddedimage"
Dim htmlView As AlternateView = AlternateView.CreateAlternateViewFromString("<p>Here is an embedded image.</p> <img src=cid:embeddedimage> <p>More text here</p>", Nothing, "text/html")
htmlView.LinkedResources.Add(logo)
objMM.AlternateViews.Add(plainView)
objMM.AlternateViews.Add(htmlView)