main: Added new wallet creation

This commit is contained in:
Nathan Woodburn 2023-06-08 23:09:16 +10:00
parent b71a5f7290
commit 4a4527657c
Signed by: nathanwoodburn
GPG Key ID: 203B000478AD0EF1
6 changed files with 1384 additions and 38 deletions

View File

@ -90,8 +90,12 @@ namespace FireWallet
labelDomainSearch = new Label(); labelDomainSearch = new Label();
textBoxDomainSearch = new TextBox(); textBoxDomainSearch = new TextBox();
panelSettings = new Panel(); panelSettings = new Panel();
buttonSeed = new Button();
groupBoxSettingsMisc = new GroupBox(); groupBoxSettingsMisc = new GroupBox();
labelSettings8 = new Label();
labelSettings6 = new Label(); labelSettings6 = new Label();
numericUpDownTXCount = new NumericUpDown();
labelSettings7 = new Label();
numericUpDownConfirmations = new NumericUpDown(); numericUpDownConfirmations = new NumericUpDown();
labelSettings5 = new Label(); labelSettings5 = new Label();
labelSettingsSaved = new Label(); labelSettingsSaved = new Label();
@ -105,9 +109,6 @@ namespace FireWallet
textBoxExAddr = new TextBox(); textBoxExAddr = new TextBox();
labelSettings4 = new Label(); labelSettings4 = new Label();
textBoxExTX = new TextBox(); textBoxExTX = new TextBox();
labelSettings7 = new Label();
numericUpDownTXCount = new NumericUpDown();
labelSettings8 = new Label();
statusStripmain.SuspendLayout(); statusStripmain.SuspendLayout();
panelaccount.SuspendLayout(); panelaccount.SuspendLayout();
groupBoxaccount.SuspendLayout(); groupBoxaccount.SuspendLayout();
@ -122,9 +123,9 @@ namespace FireWallet
groupBoxDomains.SuspendLayout(); groupBoxDomains.SuspendLayout();
panelSettings.SuspendLayout(); panelSettings.SuspendLayout();
groupBoxSettingsMisc.SuspendLayout(); groupBoxSettingsMisc.SuspendLayout();
((System.ComponentModel.ISupportInitialize)numericUpDownTXCount).BeginInit();
((System.ComponentModel.ISupportInitialize)numericUpDownConfirmations).BeginInit(); ((System.ComponentModel.ISupportInitialize)numericUpDownConfirmations).BeginInit();
groupBoxSettingsExplorer.SuspendLayout(); groupBoxSettingsExplorer.SuspendLayout();
((System.ComponentModel.ISupportInitialize)numericUpDownTXCount).BeginInit();
SuspendLayout(); SuspendLayout();
// //
// statusStripmain // statusStripmain
@ -277,6 +278,7 @@ namespace FireWallet
buttonaccountnew.TabStop = false; buttonaccountnew.TabStop = false;
buttonaccountnew.Text = "New"; buttonaccountnew.Text = "New";
buttonaccountnew.UseVisualStyleBackColor = true; buttonaccountnew.UseVisualStyleBackColor = true;
buttonaccountnew.Click += buttonaccountnew_Click;
// //
// panelNav // panelNav
// //
@ -715,6 +717,7 @@ namespace FireWallet
// //
// panelSettings // panelSettings
// //
panelSettings.Controls.Add(buttonSeed);
panelSettings.Controls.Add(groupBoxSettingsMisc); panelSettings.Controls.Add(groupBoxSettingsMisc);
panelSettings.Controls.Add(labelSettingsSaved); panelSettings.Controls.Add(labelSettingsSaved);
panelSettings.Controls.Add(buttonSettingsSave); panelSettings.Controls.Add(buttonSettingsSave);
@ -726,6 +729,17 @@ namespace FireWallet
panelSettings.TabIndex = 19; panelSettings.TabIndex = 19;
panelSettings.Visible = false; panelSettings.Visible = false;
// //
// buttonSeed
//
buttonSeed.FlatStyle = FlatStyle.Flat;
buttonSeed.Location = new Point(507, 7);
buttonSeed.Name = "buttonSeed";
buttonSeed.Size = new Size(157, 68);
buttonSeed.TabIndex = 8;
buttonSeed.Text = "Seed Phrase";
buttonSeed.UseVisualStyleBackColor = true;
buttonSeed.Click += buttonSeed_Click;
//
// groupBoxSettingsMisc // groupBoxSettingsMisc
// //
groupBoxSettingsMisc.Controls.Add(labelSettings8); groupBoxSettingsMisc.Controls.Add(labelSettings8);
@ -741,6 +755,15 @@ namespace FireWallet
groupBoxSettingsMisc.TabStop = false; groupBoxSettingsMisc.TabStop = false;
groupBoxSettingsMisc.Text = "Misc Settings"; groupBoxSettingsMisc.Text = "Misc Settings";
// //
// labelSettings8
//
labelSettings8.AutoSize = true;
labelSettings8.Location = new Point(255, 71);
labelSettings8.Name = "labelSettings8";
labelSettings8.Size = new Size(120, 21);
labelSettings8.TabIndex = 2;
labelSettings8.Text = "TXs on portfolio";
//
// labelSettings6 // labelSettings6
// //
labelSettings6.AutoSize = true; labelSettings6.AutoSize = true;
@ -750,6 +773,23 @@ namespace FireWallet
labelSettings6.TabIndex = 2; labelSettings6.TabIndex = 2;
labelSettings6.Text = "blocks"; labelSettings6.Text = "blocks";
// //
// numericUpDownTXCount
//
numericUpDownTXCount.Location = new Point(129, 69);
numericUpDownTXCount.Maximum = new decimal(new int[] { 1000, 0, 0, 0 });
numericUpDownTXCount.Name = "numericUpDownTXCount";
numericUpDownTXCount.Size = new Size(120, 29);
numericUpDownTXCount.TabIndex = 1;
//
// labelSettings7
//
labelSettings7.AutoSize = true;
labelSettings7.Location = new Point(71, 73);
labelSettings7.Name = "labelSettings7";
labelSettings7.Size = new Size(52, 21);
labelSettings7.TabIndex = 0;
labelSettings7.Text = "Show:";
//
// numericUpDownConfirmations // numericUpDownConfirmations
// //
numericUpDownConfirmations.Location = new Point(129, 34); numericUpDownConfirmations.Location = new Point(129, 34);
@ -871,32 +911,6 @@ namespace FireWallet
textBoxExTX.Size = new Size(307, 29); textBoxExTX.Size = new Size(307, 29);
textBoxExTX.TabIndex = 1; textBoxExTX.TabIndex = 1;
// //
// labelSettings7
//
labelSettings7.AutoSize = true;
labelSettings7.Location = new Point(71, 73);
labelSettings7.Name = "labelSettings7";
labelSettings7.Size = new Size(52, 21);
labelSettings7.TabIndex = 0;
labelSettings7.Text = "Show:";
//
// numericUpDownTXCount
//
numericUpDownTXCount.Location = new Point(129, 69);
numericUpDownTXCount.Maximum = new decimal(new int[] { 1000, 0, 0, 0 });
numericUpDownTXCount.Name = "numericUpDownTXCount";
numericUpDownTXCount.Size = new Size(120, 29);
numericUpDownTXCount.TabIndex = 1;
//
// labelSettings8
//
labelSettings8.AutoSize = true;
labelSettings8.Location = new Point(255, 71);
labelSettings8.Name = "labelSettings8";
labelSettings8.Size = new Size(120, 21);
labelSettings8.TabIndex = 2;
labelSettings8.Text = "TXs on portfolio";
//
// MainForm // MainForm
// //
AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleDimensions = new SizeF(7F, 15F);
@ -939,10 +953,10 @@ namespace FireWallet
panelSettings.PerformLayout(); panelSettings.PerformLayout();
groupBoxSettingsMisc.ResumeLayout(false); groupBoxSettingsMisc.ResumeLayout(false);
groupBoxSettingsMisc.PerformLayout(); groupBoxSettingsMisc.PerformLayout();
((System.ComponentModel.ISupportInitialize)numericUpDownTXCount).EndInit();
((System.ComponentModel.ISupportInitialize)numericUpDownConfirmations).EndInit(); ((System.ComponentModel.ISupportInitialize)numericUpDownConfirmations).EndInit();
groupBoxSettingsExplorer.ResumeLayout(false); groupBoxSettingsExplorer.ResumeLayout(false);
groupBoxSettingsExplorer.PerformLayout(); groupBoxSettingsExplorer.PerformLayout();
((System.ComponentModel.ISupportInitialize)numericUpDownTXCount).EndInit();
ResumeLayout(false); ResumeLayout(false);
PerformLayout(); PerformLayout();
} }
@ -1022,5 +1036,6 @@ namespace FireWallet
private Label labelSettings8; private Label labelSettings8;
private NumericUpDown numericUpDownTXCount; private NumericUpDown numericUpDownTXCount;
private Label labelSettings7; private Label labelSettings7;
private Button buttonSeed;
} }
} }

View File

@ -6,6 +6,8 @@ using Size = System.Drawing.Size;
using QRCoder; using QRCoder;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Security.Cryptography; using System.Security.Cryptography;
using System.Text;
using System.Security.Policy;
namespace FireWallet namespace FireWallet
{ {
@ -224,7 +226,7 @@ namespace FireWallet
ResizeForm(); ResizeForm();
} }
private void ThemeControl(Control c) public void ThemeControl(Control c)
{ {
if (c.GetType() == typeof(GroupBox) || c.GetType() == typeof(Panel)) if (c.GetType() == typeof(GroupBox) || c.GetType() == typeof(Panel))
{ {
@ -375,7 +377,13 @@ namespace FireWallet
} }
#endregion #endregion
#region Accounts #region Accounts
private void buttonaccountnew_Click(object sender, EventArgs e)
{
NewAccountForm newAccount = new NewAccountForm(this);
newAccount.ShowDialog();
newAccount.Dispose();
GetAccounts();
}
private async void GetAccounts() private async void GetAccounts()
{ {
string APIresponse = await APIGet("wallet", true); string APIresponse = await APIGet("wallet", true);
@ -407,7 +415,13 @@ namespace FireWallet
private async Task<bool> Login() private async Task<bool> Login()
{ {
string path = "wallet/" + account + "/unlock"; string path = "wallet/" + account + "/unlock";
string content = "{\"passphrase\": \"" + password + "\",\"timeout\": 60}"; string content = "{\"passphrase\": \"" + password + "\",\"timeout\": 60}";
if (password == "")
{
AddLog("No password entered");
content = "{\"passphrase\": \"password\" ,\"timeout\": 60}";
}
string APIresponse = await APIPost(path, true, content); string APIresponse = await APIPost(path, true, content);
@ -467,6 +481,7 @@ namespace FireWallet
private async void Logout(object sender, EventArgs e) private async void Logout(object sender, EventArgs e)
{ {
password = ""; // Clear password from memory as soon as possible
toolStripSplitButtonlogout.Visible = false; toolStripSplitButtonlogout.Visible = false;
string path = "wallet/" + account + "/lock"; string path = "wallet/" + account + "/lock";
string content = ""; string content = "";
@ -482,10 +497,7 @@ namespace FireWallet
} }
panelaccount.Visible = true; panelaccount.Visible = true;
panelNav.Visible = false; panelNav.Visible = false;
panelSend.Visible = false; hidePages();
panelRecieve.Visible = false;
panelDomains.Visible = false;
panelPortfolio.Visible = false;
toolStripStatusLabelaccount.Text = "Account: Not Logged In"; toolStripStatusLabelaccount.Text = "Account: Not Logged In";
textBoxaccountpassword.Focus(); textBoxaccountpassword.Focus();
} }
@ -1202,5 +1214,62 @@ namespace FireWallet
LoadSettings(); LoadSettings();
labelSettingsSaved.Show(); labelSettingsSaved.Show();
} }
private async void buttonSeed_Click(object sender, EventArgs e)
{
string path = "wallet/" + account + "/master";
string response = await APIGet(path, true);
AddLog(response);
JObject resp = JObject.Parse(response);
if (resp["encrypted"].ToString() == "False")
{
JObject mnemonic = JObject.Parse(resp["mnemonic"].ToString());
string phrase = mnemonic["phrase"].ToString();
NotifyForm notifyForm = new NotifyForm("Your seed phrase is:\n" + phrase, "Copy", phrase, true);
notifyForm.ShowDialog();
notifyForm.Dispose();
}
else
{
string algorithm = resp["algorithm"].ToString();
if (algorithm != "pbkdf2")
{
AddLog("Invalid algorithm");
AddLog(response);
NotifyForm notifyForm = new NotifyForm("Invalid algorithm");
notifyForm.ShowDialog();
notifyForm.Dispose();
return;
}
try
{
string iv = resp["iv"].ToString();
string ciphertext = resp["ciphertext"].ToString();
string tmpn = resp["n"].ToString();
string tmpr = resp["r"].ToString();
string tmpp = resp["p"].ToString();
int n = int.Parse(tmpn);
int p = int.Parse(tmpp);
int iterations = n;
}
catch (Exception ex)
{
AddLog("Error decrypting seed");
AddLog(ex.ToString());
NotifyForm notifyForm = new NotifyForm("Error decrypting seed");
notifyForm.ShowDialog();
notifyForm.Dispose();
}
}
}
} }
} }

261
FireWallet/NewAccountForm.Designer.cs generated Normal file
View File

@ -0,0 +1,261 @@
namespace FireWallet
{
partial class NewAccountForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(NewAccountForm));
buttonNext = new Button();
buttonCancel = new Button();
groupBoxMode = new GroupBox();
label1 = new Label();
buttonCold = new Button();
buttonImport = new Button();
buttonNew = new Button();
groupBoxNew = new GroupBox();
label4 = new Label();
textBoxNewName = new TextBox();
label3 = new Label();
label2 = new Label();
textBoxNewPass1 = new TextBox();
textBoxNewPass2 = new TextBox();
label5 = new Label();
groupBoxMode.SuspendLayout();
groupBoxNew.SuspendLayout();
SuspendLayout();
//
// buttonNext
//
buttonNext.FlatStyle = FlatStyle.Flat;
buttonNext.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
buttonNext.Location = new Point(576, 372);
buttonNext.Name = "buttonNext";
buttonNext.Size = new Size(92, 46);
buttonNext.TabIndex = 0;
buttonNext.TabStop = false;
buttonNext.Text = "Next";
buttonNext.UseVisualStyleBackColor = true;
buttonNext.Visible = false;
buttonNext.Click += buttonNext_Click;
//
// buttonCancel
//
buttonCancel.FlatStyle = FlatStyle.Flat;
buttonCancel.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
buttonCancel.Location = new Point(12, 372);
buttonCancel.Name = "buttonCancel";
buttonCancel.Size = new Size(92, 46);
buttonCancel.TabIndex = 0;
buttonCancel.TabStop = false;
buttonCancel.Text = "Cancel";
buttonCancel.UseVisualStyleBackColor = true;
buttonCancel.Click += buttonCancel_Click;
//
// groupBoxMode
//
groupBoxMode.Controls.Add(label1);
groupBoxMode.Controls.Add(buttonCold);
groupBoxMode.Controls.Add(buttonImport);
groupBoxMode.Controls.Add(buttonNew);
groupBoxMode.Font = new Font("Segoe UI", 14F, FontStyle.Regular, GraphicsUnit.Point);
groupBoxMode.Location = new Point(125, 22);
groupBoxMode.Name = "groupBoxMode";
groupBoxMode.Size = new Size(450, 319);
groupBoxMode.TabIndex = 1;
groupBoxMode.TabStop = false;
//
// label1
//
label1.AutoSize = true;
label1.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
label1.Location = new Point(29, 19);
label1.Name = "label1";
label1.Size = new Size(391, 42);
label1.TabIndex = 3;
label1.Text = "Welcome!\r\nYou can either create a new wallet or import an old one";
label1.TextAlign = ContentAlignment.TopCenter;
//
// buttonCold
//
buttonCold.Enabled = false;
buttonCold.FlatStyle = FlatStyle.Flat;
buttonCold.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
buttonCold.Location = new Point(147, 239);
buttonCold.Name = "buttonCold";
buttonCold.Size = new Size(156, 62);
buttonCold.TabIndex = 2;
buttonCold.TabStop = false;
buttonCold.Text = "Connect Ledger";
buttonCold.UseVisualStyleBackColor = true;
buttonCold.Click += buttonCold_Click;
//
// buttonImport
//
buttonImport.FlatStyle = FlatStyle.Flat;
buttonImport.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
buttonImport.Location = new Point(147, 171);
buttonImport.Name = "buttonImport";
buttonImport.Size = new Size(156, 62);
buttonImport.TabIndex = 1;
buttonImport.TabStop = false;
buttonImport.Text = "Import Wallet";
buttonImport.UseVisualStyleBackColor = true;
buttonImport.Click += buttonImport_Click;
//
// buttonNew
//
buttonNew.FlatStyle = FlatStyle.Flat;
buttonNew.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
buttonNew.Location = new Point(147, 103);
buttonNew.Name = "buttonNew";
buttonNew.Size = new Size(156, 62);
buttonNew.TabIndex = 0;
buttonNew.TabStop = false;
buttonNew.Text = "Create New Wallet";
buttonNew.UseVisualStyleBackColor = true;
buttonNew.Click += buttonNew_Click;
//
// groupBoxNew
//
groupBoxNew.Controls.Add(textBoxNewPass2);
groupBoxNew.Controls.Add(textBoxNewPass1);
groupBoxNew.Controls.Add(label4);
groupBoxNew.Controls.Add(textBoxNewName);
groupBoxNew.Controls.Add(label5);
groupBoxNew.Controls.Add(label3);
groupBoxNew.Controls.Add(label2);
groupBoxNew.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
groupBoxNew.Location = new Point(125, 22);
groupBoxNew.Name = "groupBoxNew";
groupBoxNew.Size = new Size(450, 319);
groupBoxNew.TabIndex = 4;
groupBoxNew.TabStop = false;
groupBoxNew.Text = "New Wallet";
groupBoxNew.Visible = false;
//
// label4
//
label4.AutoSize = true;
label4.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point);
label4.Location = new Point(128, 57);
label4.Name = "label4";
label4.Size = new Size(195, 15);
label4.TabIndex = 6;
label4.Text = "Only lowercase letters and numbers";
//
// textBoxNewName
//
textBoxNewName.Location = new Point(128, 25);
textBoxNewName.Name = "textBoxNewName";
textBoxNewName.Size = new Size(316, 29);
textBoxNewName.TabIndex = 5;
textBoxNewName.TextChanged += textBoxNewName_TextChanged;
//
// label3
//
label3.AutoSize = true;
label3.Location = new Point(29, 93);
label3.Name = "label3";
label3.Size = new Size(79, 21);
label3.TabIndex = 1;
label3.Text = "Password:";
//
// label2
//
label2.AutoSize = true;
label2.Location = new Point(53, 28);
label2.Name = "label2";
label2.Size = new Size(55, 21);
label2.TabIndex = 0;
label2.Text = "Name:";
//
// textBoxNewPass1
//
textBoxNewPass1.Location = new Point(128, 90);
textBoxNewPass1.Name = "textBoxNewPass1";
textBoxNewPass1.Size = new Size(316, 29);
textBoxNewPass1.TabIndex = 7;
textBoxNewPass1.UseSystemPasswordChar = true;
//
// textBoxNewPass2
//
textBoxNewPass2.Location = new Point(128, 136);
textBoxNewPass2.Name = "textBoxNewPass2";
textBoxNewPass2.Size = new Size(316, 29);
textBoxNewPass2.TabIndex = 8;
textBoxNewPass2.UseSystemPasswordChar = true;
//
// label5
//
label5.AutoSize = true;
label5.Location = new Point(38, 139);
label5.Name = "label5";
label5.Size = new Size(70, 21);
label5.TabIndex = 1;
label5.Text = "Confirm:";
//
// NewAccountForm
//
AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(680, 430);
Controls.Add(buttonCancel);
Controls.Add(buttonNext);
Controls.Add(groupBoxNew);
Controls.Add(groupBoxMode);
FormBorderStyle = FormBorderStyle.Fixed3D;
Icon = (Icon)resources.GetObject("$this.Icon");
MaximizeBox = false;
Name = "NewAccountForm";
Text = "New Account | FireWallet";
Load += NewAccountForm_Load;
groupBoxMode.ResumeLayout(false);
groupBoxMode.PerformLayout();
groupBoxNew.ResumeLayout(false);
groupBoxNew.PerformLayout();
ResumeLayout(false);
}
#endregion
private Button buttonNext;
private Button buttonCancel;
private GroupBox groupBoxMode;
private Label label1;
private Button buttonCold;
private Button buttonImport;
private Button buttonNew;
private GroupBox groupBoxNew;
private Label label3;
private Label label2;
private TextBox textBoxNewName;
private Label label4;
private TextBox textBoxNewPass2;
private TextBox textBoxNewPass1;
private Label label5;
}
}

View File

@ -0,0 +1,149 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.VisualBasic.Devices;
namespace FireWallet
{
public partial class NewAccountForm : Form
{
MainForm mainForm;
private int page;
public NewAccountForm(MainForm main)
{
InitializeComponent();
mainForm = main;
}
private void NewAccountForm_Load(object sender, EventArgs e)
{
page = 0;
Dictionary<string, string> theme = mainForm.theme;
this.BackColor = ColorTranslator.FromHtml(theme["background"]);
this.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
foreach (Control c in Controls)
{
mainForm.ThemeControl(c);
}
}
private void buttonCancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void buttonNew_Click(object sender, EventArgs e)
{
page = 1;
groupBoxNew.Show();
buttonNext.Show();
buttonNext.Enabled = false;
buttonNext.Text = "Create";
}
private void buttonImport_Click(object sender, EventArgs e)
{
// TODO - Import wallet
}
private void buttonCold_Click(object sender, EventArgs e)
{
// TODO - Cold wallet
}
private void textBoxNewName_TextChanged(object sender, EventArgs e)
{
if (Regex.IsMatch(textBoxNewName.Text, @"^[a-z0-9]+$"))
{
textBoxNewName.BackColor = Color.LightGreen;
buttonNext.Enabled = true;
}
else
{
textBoxNewName.BackColor = Color.LightPink;
buttonNext.Enabled = false;
}
}
private async void buttonNext_Click(object sender, EventArgs e)
{
if (page == 1)
{
if (textBoxNewPass1 == null)
{
NotifyForm notify = new NotifyForm("Please enter a password");
notify.ShowDialog();
notify.Dispose();
return;
}
if (textBoxNewPass1.Text != textBoxNewPass2.Text)
{
NotifyForm notify = new NotifyForm("Passwords do not match");
notify.ShowDialog();
notify.Dispose();
return;
}
// Create new wallet
buttonNext.Enabled = false;
string path = "wallet/" + textBoxNewName.Text;
string content = "{\"passphrase\":\"" + textBoxNewPass1.Text + "\"}";
string response = await APIPut(path, true, content);
if (response == "Error")
{
NotifyForm notify = new NotifyForm("Error creating wallet");
notify.ShowDialog();
notify.Dispose();
buttonNext.Enabled = true;
return;
}
mainForm.AddLog("Created wallet: " + textBoxNewName.Text);
}
}
HttpClient httpClient = new HttpClient();
private async Task<string> APIPut(string path, bool wallet, string content)
{
string key = mainForm.nodeSettings["Key"];
string ip = mainForm.nodeSettings["IP"];
string port = "1203";
if (mainForm.network == 1)
{
port = "1303";
}
if (wallet) port = port + "9";
else port = port + "7";
HttpRequestMessage req = new HttpRequestMessage(HttpMethod.Put, "http://" + ip + ":" + port + "/" + path);
req.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes("x:" + key)));
req.Content = new StringContent(content);
// Send request
HttpResponseMessage resp = await httpClient.SendAsync(req);
try
{
resp.EnsureSuccessStatusCode();
}
catch (Exception ex)
{
mainForm.AddLog("Put Error: " + ex.Message);
mainForm.AddLog(await resp.Content.ReadAsStringAsync());
return "Error";
}
return await resp.Content.ReadAsStringAsync();
}
}
}

View File

@ -0,0 +1,828 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing"">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAAAAAAAEAIAB2pAAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAOEAAADAAgGAAAAfG+p9QAAIABJ
REFUeJzs3XmQXdWV7/nf2ueOOSg1C4lBAiEmMUhIzFOKWaARuFSVXVV22S653K563dXVr7qjOvq9fNH/
df/1/uioaEdXd1VUv6h+Uhnb4IKwwc7UCDJisi2MJzyDQWAZNORw79mr/0hhGwMij3TvPZn3fj8RFyLs
zHsWWMdnr7PXXksCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAB5skw/vf6pWdVy426Xl0OM3z7+dvyWRtY1WhQbAAAAAOCk3Hq37rk8ui4xqT+a
Xhw7dvw5ffWuY1P57UKWS1WS+mxF/YmZVkQlX6/OSp5IN+57sazxN46sGfyVhiye2j8EAAAAAGCqZtX2
zR0f19zE9l6QprZBphtlcSxE+6f+cumlI1LzE0IVGsG8UHHpQjNfYNJgovSHjVAY6Xl219ePDw5/RyPr
xk7pnwgAAAAAcHLbDhRLh46dXx9P7wymG6PsQjM/U9IcuX1fkrySTLkSNFtC2ChET3REUpQ016W5Ml0s
1/muZFV1IDztW3YdNPfvjX7plp9l+m4AAAAAwPvqq+1akE74Cnvt+CXycK1M17l0icnf+ZEo09EoG0sa
pSlXbmZLCCVJnkjmv/cfXiDzFZI2mMKzkn+1Z8vuJxT8leNHR9+eav0qAAAAAOCE9Y+W+/r6Zk2MFebF
enqzu22RaY1McyUlv/fTLlcI5r//n59U9oTQLbxPK5pw4u+z5X6zpOXudo9Sfava07NXm3fuGV198y84
YwgAAAAAU7BpT3852HXpRLw1WHq5u5abaZmk0gf+jssytg3NmBCWgnmahg+5SkHSUsmXSrpWrtVmdlnP
87u/YZt3/vBYKf5IO9YdzRYmAAAAAHS4weFCeVZ5mXn9HJNfJvfbJK0zU9+Uft9kcjOlx1t0hnDyKuHD
f+Y3ipKucbfVkl5x2b6eMfu8Nu15ulwePXb4UOEYYysAAAAAdC831UZ6+xqlnjTGc80am93DeknLJVU1
9ZzNXApmMUu+lj0hDPLgU9+HNE3WtlYlLTdpgQe7WK6XxuqV56uzffdo7eDz2rFyImscAAAAADCj1bYn
lfrI2Rov3tKw9FqTrXC3iyUtOcVvNHmmDbyMCWGcMKmQ6QK/y6VZktbKfK1c68zt4ur4m0+ELXtf8pC+
dvyhm375Pg1rAAAAAKBzrH9qVqkyfmahniyL0a828w2SrT3drw2SuVumU4SZdwhdWY8pfqDFbvqIZPdG
+Ytq2MPlDbseHU+fek361bgeu2e8SdcBAAAAgHwNDhe0QJX+MVVSa1zvaVJz+fXBNN8nKypdp5lruZQo
RPNiq+YQSpKZyb0ZSWHQ5D94Ve5nyLQkJHZdT6H+kqz/QKjt2n905U1v0pkUAAAAwMzlpvWPlarl5ArV
w/Vp4pe5+4WSrpDU18TySJNkihakqX9rtoQwDabQlGTw/Vwk2UXuiub+RKzr7Orzu5/xDbt/OWbVN/TI
2uMtui4AAAAANNfgcKF3VnWekj1nxDjrIo9+q5lvdGlxy65pMslb21RGrvebQ9hM5rKb5Fol6RULPlK1
YztGa8Pf1NHRuq5ZX2fXEAAAAMD046bai0Xp9VJ5vHhmVP1uRW2U/MJgmuVSb2sv75NjJxqhlSWjOuWm
MlO+wjulpNJCmS2WbHl1Ihz04qxv+4Fd3xivbX9ZO2qRBjQAAAAApoXa9qT32MgCrxdXx1hYY/JL3OxS
k18mZSniPGWTHUYzbt9lSwiLwZS2PCH8fYskbZS0UaZvWWL/WhlfNKL79v1krLHnV7ryhmPsGAIAAABo
PzfVnqz0jodZXq+f5UVdG903mOk2SUVrRxr4u0ym6EHJ1H/lFAbTt7hg9IO5yS+Q7DNuVrM0faEawsPJ
wd3DRweHD2twMJIYAgAAAGg9N9V2BL311UplvLImWrJBrpsknWnSHEnFnAJLZK2cQzip3TuE7zBJZUln
mHSGZOfL/cx0XNf1DCQH9cy+F47Xhr+jHYPHKCUFAAAA0BLbDhTLr+87J0wsvtx6dIXLVsl9raQz8w5N
krylg+kn5ZUQ/r6KpEGZDbrrkIX45Z568nDcuOuFscZTb+rswqg+t7aed5AAAAAAZrghD9r/WLG/Mq+v
8erYCje/S6Yt7lrVltOBU2eyaJ6WWtNUxmMwU8xQkdompvnu2mCya8zs5Wpp4uvpq/GxiSH/HmWkAAAA
AE7Ls3t7q6X+2+tx/E4LttYm+5zMzzus9xEka2FTGWnyoOK0SoIlTUY136X5Ml3kCktDSC/ueX73c3HT
zoOFpPDS0Suuf4PkEAAAAMCUDA5XSgPJeYnsQvO4WmbXyu0qSbP0zhD46SfILGTJ106lZHS6eud/EDP5
SkkXudsfybSr4f5Q+dknd46vf/Rn6jvaYGQFAAAAgPcY8qAhudbv768UG2tMvkXSvW52tlyJlKV/Zy5M
Hlu8Q+hm06xO9v2EE5+iya4392XRGvdVyrOesoner43WduzXDqV5BwkAAABg+uh7Yd/8dLPf7tK6E/MD
z5R0hmbORtqJwfSjLRxM7x5k03J79IMMuDTLZCvkvlIKF/VMLF4Vt+46aJb+cPTywVcoJQUAAAC61J1f
6S31Vs4ppMmK6PEqyW8z2eWabGIZND1LQ9+fK4SWDqaPZm5KZs6/EUm/re8Nks6RtChK91q0l9yLX+p7
Yd8jRweHX9LIuobkRikpAAAA0Mn8RDpjrk17+nsUb1a0+920Tq4FkpU1c3YE3+2dwfQZZEwI66Zkukyd
OCUmqWKT2f4VZj67kfpNPQOFZ9Mte3eNF5/crR0azTtIAAAAAK1iXt6yd7n57pslXe/SSknnSb4o78ia
IMgseGXqe3jZEsJiMHVOcWVF0gozneeutcHjFdUJXeRbdz+run46tqT6KnMMAQAAgM4wp/b4wLGx3sUF
ixe4pze57G6TL5esqOnfLGaqToydmHrRY7aEMDWT+QyrGD2pyeYzpgWSbpf8Oovhp5boseprow+PDvnT
nC8EAAAAZraBe3fPGRv3uxJLt7rpGpPNkdSnyXygY7hkZi3sMuoezKxjm3NWJKtIPtddAzK7oue5Pc9r
064nk6T81JEvXPNm3gECAAAAmLrezTsvSxXWjruuNdNlLl1ik00nO1KQzN0sy+D4bDuEoRFmUpOdU2Qy
LZP8LJdukNkNjXT80ermnXuVxJ+O/kpvaGTdWN5BAgAAAHiv/q37503Ux+YmIbk4yu806W6ZFktWspna
LGaK/LcNNacs07+QUkhCI3ZFBWWQVDrxuUFmF8vto0rDzsqAHhnbdmAn5wsBAACA6aV63/BZaRzfGJJw
h8svd2m+SQN5x9VeFlp3hlAntiGz/tLMVpS0SKZFkhbJtaLn9dFbtHn3N2KqF8a+fNNP8w4QAAAA6FqD
w4Vqf3GtJ1rpqV8j6UpJl0oqd3xt4/uKpkZoTZdRjw3rsHOXWS0y021y3eDS9xT05ermnY+bJz8+Pnbs
LX31rmN5BwgAAAB0vCEPfS/sm19PfU4wrZLiRnMblDRHk1V+HV0aehIms5BhgzDrGcIQOmjsxKkwSSWf
/EO2xkxnS8nmKD3V01P96vHa8BPase5o3kECAAAAnazvmb0XN4JvNPObJLtQsoWS+vOOaxo4MZh+6nuj
2XYI0xhkU99+7HAmaZHki8x0rlzLe8aTK7Vp1/40+vfGv3zL9/MOEAAAAOgYteG+SqOwSm4XRvcbgnSt
yy7OO6zpyGOLSkYVzTpmZGNzzXbZLW66RtLPQhIeq2zd9W/B9L3jjXBUD994JO8AAQAAgBmntj3pbyyd
PaGJeTaha016QPI1Ls2WVM47vGnJLNMZv+wlo1kKUrtL2Sb/UA5IvtCi3RqlA5UQ9yT3DD9x7NF1v8w7
QAAAAGAm6Rlfsroe6utD1NUyXSDpHEmVvOOaxkzmrUsIPcRgTsXoFCyUtNCky+R2iZeSS3o27drbMP1o
ovTL72rHg2neAQIAAADT0cC9u+dMlMJFHuNFkg+a6xaZluYdV6fKtkPoRjaYTUnSNXK7ws1rQTbcO774
Id+055vHpSOUkgIAAACSth0ozjo80T8+HhfUpXWK8QGTLvHJGYLVvMObUbzVJaPdMZi+mU50JbVZJs2L
ptUuPd+juD9u3Pm1sUdu+VHeAQIAAAC5qW1PKodGr2m4bg/mq112kaTlEt1LToG5PFMX0MzzOTxLD1P8
vjmS1pp8rSusseDn92zZszONenm8/vaP9dg943kHCAAAALRD/9b989L6+NI4YZeadJdLt58YH4HTYqbS
eIu6jKZpEFWjTeKXSTrX3bcG0/6eUv8O3bfrwPGjo2/r+jtHNWRsxQIAAKCzbDtQnHP4cM/x0dLCho/f
rULYYu4XSJorqSfv8DpEC5vKWAhGl9FmKWiyXe5sSWe6dIGneq6nUn228cyTuyekl3KODwAAAGieweFK
5dDxa0bT6vWh4KslrZL7irzD6jCmjDt4mUtG0RK9kq4x2TUyfSexuKKyZddXFOxHY0nyqnZcP5p3gAAA
AMCp6N+6f954HF+UKKxSjJtkfqdcc/KOC5MydhlNTZbpjCIycukCyT9lbhvV0HPV2Ph82PTUnmPl+Lb0
8wlGVgAAAGDaqx0safxwueThzEasb0gsrJf7csnma3IzBC0S3C1LTSc7hNNPosnmM3NkOk9u50ar31yZ
0POFcObTR4f8Rc4XAgAAYNratKe/MvbGVWZhlULjSk2OYTs/77C6hClkawKaLSFMzEQq0k4lSddKutak
H6Zp/GLl+T1ftg37vj9qpcN6ZO3xvAMEAAAAJLeBe/fMHi9rjjXi1QrJAya/w2Wz8o6s67gFpVOv6szY
ZTQEZdqARBOdK9PHzHWHQvxm1ca+nGzdO3x07K231He0QSkpAAAA2m7bgaJeVbFU2LV0wm2jUrtVwc6T
+2KX+vIOrwuZ5C0cTD95hjDTr6BpgqT5kubL/FLJl6epXVktzXo2TPS+eGzbgZf0ubX1vIMEAABAdxi4
d/ec8ddHrwiJXywPa911i0nLGUqQr6xz47OXjDqD6aeBINl1Ml0n95ejJV+q/vL45wsbh797RP3HKSUF
AABASwx50P79fdUk9k8k8Ubz+BHJBl2iNHS6cLMsGVvGHUKm0k87pvMk/6jMbkqt+O2KHf9aYeverx4t
zP61dDCllBQAAACnx03bnino8ESh74V9yxtF3yjTDZIvl+wsSkOnFZNF81adIZwcTB+ZTT/9LJS00OVr
zO2CqHhhdeJXzwYt+sGxweHva2TdWN4BAgAAYGbq27pvQeNQenGIWtFQuMZMt0u+LO+48AE82xm/TAlh
wVOLbBJOZybpenddL+lH0cLD1QFtH92051uqvz2hx9ZPiK5AAAAA+DC17YnGziv32Njshsfb5PYRl240
ObuB012mgtFTKhl1y3hOEflYJteDUlhbkR9UuX9Psmn/V4+9PfymBgcjswwBAADwbm6q7QjSWaWe8fpF
0UbvddMauS03+bmiNLQjZSwZtSDqRWcKk7RY0mIz3SDX5anq5/XMLn4jPLP3p0drwz/RjnVH8w4SAAAA
08CQh95vjCyME4vOc48rpHCTme6SdBbnxWaUzBt4GXcIY8YNSEwTLukaM61195+kQV+pjIf/OlY7+NRk
45lapJQUAACgCw150MhI6Hth39xGsbA+SB8x86tPdA2lomzmMZkFlVo1mD4xUyRvmIHe+QNRkLRc0hZT
WFmd+NVBtzOetg1PPj661l/VkJzEEAAAoBu4af1jpZ5n914WBwq3p2lcbaaLXDpPvy0NZQB5F8iWEEb2
BzvEEpmWSLrZ3K72pHFO5bk9+3yT/Wy8PPwL7Rg8RmIIAADQgWrbkz6dMTeO7j7bQ98FCn6Hue6WabFo
FNIZXKZ6Y8rJfPamMhSNdporTLZS8l/IbKRSL/yXsdqO3doh5hcCAAB0mP6xBXNS0xZP7A8kX+WufkmJ
SAY7hUuSJ4VWJYTRxNiJTmKSipMfW27yHpOWVscXf9M37XnOCvWdow+t+3neQQIAAOA0DA4XevqSyz3R
LanpCpddJteFkvXmHRpawUwZZgVmPEMomgx1LpO02F0LZbrZpBe9UTi3snX3iCz8bOzo0Tf01buO5R0k
AAAApmDIw8DTewbGEluYeLwohrDB5Pe4a4EmzwYmeYeIFor11iSE7mwPdjjT5J+JguSXmGmpR/2hPO6t
lCv/dUw+zNlCAACA6W/g6T0D40W7z6Lf78EuNflsST0iEex0JnNTsVVdRt2MfKBrlCWVTZoj0zxXOLtn
897b3Pa8oFDfRykpAADANDPkoff5fZd79GvHpctNca3MVmoyEUQ3SVtVMmoxcN6065ikRWa6zeU3KeqH
Hgv/Wt2y66thIv3psd7yW9px3Rg7hwAAADkY8qD9+/sqhfF54bm9F7v7fW66y6R5cisq63ofM53LZZ6k
LewyKvqMdiGTVJJUkukSk/5Ssq1pMflGZSL9/Jj0tbwDBAAA6Eb9L3xjTr3c2GJKNrr7xTItlDQgdnG6
1WS+1rKmMoHB9FBR0iK5FpnsLElnVjbtvSpoz0G39LnRL93ys7wDBAAA6Gi17UlvY/GlaWqrGrF+hclv
kHSpKA3FCaUYbGKKP5txh5A3DXiXhZLuMPObXPqpe9jRs2HXo0mx/JMjh48f08i6sbwDBAAA6AhDHnRw
pKc6Wh6werzc5Q+Y+e2S5kqqiNJQvMPMPLSsZDQau8/4PZUTn34zzfXE7m7E+rPlWcVHxof8axqymHeA
AAAAM13vN0YWeiHZ6IX0Do+6QOZnSTYv77gwTWWYDpG9ZJRdQry/RNJZk594UQjhnOpzuy8Nm3e9GOUv
UkoKAACQUe1gqbfxq4uj65LoukLSbXJdKlOFTRp8II+mpFUJoZuJyfT4UDZP7nfK7fooveKmh3q37H24
VDz+o8NaMqodK6da0gwAANBdhjzomWcqPTY2W+Nvro5mfyDpFkmzJPWJ0lBMhbdoDqFbDOa8jcCUVGWq
Slpgsjnu8aaxeuWbPTr8xPHawa+RFAIAALxX5fmRc0Io3uXymyW7QNJ5mjwnCEyRmTdadYZQU996BH7H
OS6dI9dad7+gWn/zfN+059sq2MtjD93wk7yDAwAAyFVtX7W37hdGT89XtKvc/E5JKzXZ3R3IxmUqtKpk
FDg9s2W6TW5rTP66RX+kZ8OuLxwP4fs6ozKmz62t5x0gAABAe7hpcKTcM6s41yfSa6L0oGTXydSvyTmC
Sd4RojswdgLtVtVkOelidxtQ0Kqq+bfttdF9xzftGdHDNx7JO0AAAIBWK2/dsyJJi7fK/DpJF5h0iU+e
EwROX8sG05uHyQOKNJZBM/gymZZJuiVKq6rSUt+6+3l54+djXxz8iWT8QQMAAJ3jzq/09vX2nRtjPNej
3yzTPS5dLBY9aCYzc4utOkMItES/SYMyv9Si3pCSJ6ob936+nAy/9OuF/ccoJQUAADOXm9Y/Vqoms+cr
iTemMT4g+SpJc3yyWQwVeGi+ls0hzPDFQEYV/WaOoS1Q8AvHvXCw+suxp5Ote/cc/cINr+cdIAAAQFZ9
G/deEm3WTVK61icbxVwhWTXvuNC5XNEsJC3aITQLVIuiDc488blDpm+kMV1a3bxzvyeFX4zNL7/CjiEA
AJjWNu3pLyXpWYWYnJt6vENmGyUtzzss4P1QMorprCL5tZKdK7NDlvreyi/HvlDZMvzcr4uHjmjHg2ne
AQIAAExy07ZnCtVXJhZ6SG+1mGx2+UqZzZc0P+/o0GVig7ET6BglSWfLdbbk55hp2YQKL1QnFj+r+4af
Hn1o3c/zDhAAAKB3865L01+Gq1Tw1ea2VvK1Yq2NPEwe82tNQhg8mjOcHvmZL2mju+6S9JwayeerW3bt
VEhfGR0dPaTH7hnPO0AAANBF1j81q1xOFyj6eVHaaKaNci0VjWKQM09a1lRGJuMPOHJXkrRGZmfIdZ/S
wrPl8sCXKvfufvqtnlffppQUAAC01LYDxcoro4uV1G8z1z0yXSBpiSgNxXRgstbNIQxmNJXBNFGQtPTE
59IQ4znjifb3TCx+IW4Z/tbYF9f9ON/wAABAx1n/aLm31HtB+vroKktstSzeKLer8g4LeI/QqjmEbgyl
x3TUJ9O9Jt3h0ncUC5/v2bL7MQV/5XhS+LV2XD+ad4AAAGCmctP6/f2VpD7bC+GiNMb7TbpH8iUnzmq5
KBHF9GJKQ6sSQgpGMW2ZpLKkK8w01113eqqDPWn6aLJ1/74jhZ/8mlJSAACQybYDxcobe84OUbe7+63m
8XyZztXkQHmgI2QsGY0mJyPEtGaSzpF0jsmujdIyT8cv6k0XfyvduPO7Y5XXfkpiCAAATmrTnv5eS5fF
18YukbTapbskW5V3WEArnELJKDBjFEy6XWa3pNLLQfZQz+gZX0w2Dv/0SKV8jFJSAADwG7XtibSg2ntM
fR602j15UPI7NNkopiBKQzFDBLnF4C0qGZ28CbgRMFOYJv+MF0xa6WazLNF1DRW/U51Ih8Omp/Yde3v0
TY2sa+QdKAAAyIubai8WS403lhfS5JZYjDfKfblLF5s0kHd0QGZmJm/RHEJ3MxlNZTBjne3S2ZLfJrOV
UY3llYHC89q484djleIv2TEEAKC7zKrtmxsb+5ak4/FiKVzj5hsku1BiBwTdgzOE6E7uN5q01qRfuIVH
qxPpjkrt8ZcOHyqMa2RwXLz5AACgMw0OF9TfX+orjPfV63FQ8gdkulHSLE02qKM0FDOeW8u6jHKGEB3B
JJV8csD9LJlmu7RybKLyveosf9I37Nk3dnT4FY0MpiSGAAB0ghM7GoMj5Z5ZxUvdRq9PU7tK5udLukxS
b67hAU1W8NTGp/qzmb6ZsRPoTItNWizpbplda4mWVvrD09oy8vJY3POmHr7xSN4BAgCAUzTkof+Zkbnj
IVmYqHhZdN1i0kaZn5V3aEBLuCzLRl7GklEzORsm6Fgu6QpJ51kIv3K3r1dC/NexjQee1GLVtWRNqiGL
eQcJAACmoLY9kVYm1W+OLKwnxbuS6FtkvtZMFUl9eYcHtIpLptCqhBDobO8Mty9Lmm/SPHdbVg1j3/HX
47Px1ScPTAwO/4BSUgAApjM33fnVnup4dZXC4asUi2ssxAtltlqsfYH3yFgyGk3iHCG6hc0z6W7J7w5u
3wlJ+nmbVdwVNu96aXTiqbfU99NjDLkHAGCa2HagOPCL0b6x0p4FlvZeJYvr5X6PTHNoioiu06qxE3Lj
DCG6kkvnyvWpYP6gFPZXSxMPVzTn8cPyt9ktBAAgZ0MeKt/cc/ZEoo1J9HvctFKyHk12DgW6j0dKRoEm
q0g648RniSycOVav3FjZvOfZxPZ+89jC8kF9bm095xgBAOgqs7cMzx6L4XJ7fvcVJq2JFq6UdKkYG4Fu
l7SsqYxM7IUAfXIflHSLSa9Ej4/0vDb2b7bpqWeOeeGIjhyZ0Mi6Rt5BAgDQedy07ZmCXlWxomOLxmJy
s1m8T27rXOoxeRDJIBAUW1kySkYISNI7wz4XS9oq+bpoE9+shMbjYVbxsePSK3kGBwBAZzIvvbZrRWK6
1y3cavIVks2R1J93ZMC0Er1Vg+mj0VMGeJeCpDNcWiTZ+eZ+rpsur2zZ9XRo6MXjR9MXNbJuLO8gAQCY
yfo3Ds+vFwoXhdQulfxqD7rRXOdKSvKODZiWklbtEE6WjJIRAu9mJz5B0hpJl5vbH3iir/XMKfxL8d7d
e9/6t5sO5xsiAAAzzWRr0MqGPWenwdZb9Fo0X2tSRa6iflutA+A0nELJKICTSE58KnLd4VGXThTsK+Ut
e//P8S/e8MO8gwMAYCbp3bz7zuj2MZevkbTEGCgPTIV5hryNLqNAq5jmS5on+YLgqvRs2f1Px1fd+JyG
LOYdGgAA09r6p2ZVS7vvTGWfMtNNkqqiWQzQEpm22p0bEcjinTLSMyT/M7k+W35274q8gwIAYFpb/2i5
pzCxTqa/NWmdpB6xBgWmzmVZKjuz1V5TMgqcCpPU59LmIP9E7z3DZ+QdEAAA01W1MnClm31KbqsklfKO
B5iRLE45z+MwLtA+c2XaFAvF61XbTlc0AAB+T//G4fmKcZNMN0oq5h0PMGO1bIfQIjuEwOk5003re8aX
rNa2AzzoAAA4YfaW4dl1K2yS+W2SZuUdD9AtMu4QUjIKnKZec79VIV6lwxM0dQIA4IRxD/1mfqfcLhVV
bMCpMpmZQqt2CAGcriDT0ujhyr6G9+cdDAAA04bbOS5bqcmOogBOmWeaHZ+xqcxvBnADOHWJyc+NHs/O
OxAAAKaDgXt3z5HCapPm5h0LMMP55F+nftSPHUIgH/Pc7XzV9vEWFADQ9UYLvlghXih2B4HmaFnJqDkJ
JNAUNtvdV1RHeRMKAEAwW6hoyyRVcg4F6AzMIQSmOx+Q2dK0WKeLGgCg64XUBxR8kZg7CJwukxS8VWcI
Q+D8INAkfSZfVPDQk3cgAADkzZNQNrc+SczpBZohTP0MIW3vgXwUJZ/vkdIYAABcXpbUm3ccQDfiTCDQ
fj75F5vl7uW8gwEAIG8hekWcHwRykS0hjDSVAZrFpKInBXbpAQBdzxXKklMuCjTN1Hu/nMpilHOEwOmZ
vIdchUROQggAgKkiGRsPwOmbnEMYp34/ceMBeTElvA0FAGDyDKHRUAZoEg9ZmsqQEAL5McqwAQCQgoxx
E0BzZK7mZDEK5Cd4oDwGANDt3GSx6BxLAnLBYhQAAAD5qb1YdFcx7zCAbpUtIQxT71YD4EOZnHsKANDl
xg+XZVYUO4RA82RYY2ZLCJ0bFQAAAM3T7/WyJncIWWcCzZIhb6NkFAAAALlpeLnsroJICIHmyVDZmTEh
NBM3K9A8GVoCAwDQedy8lJZDOKXZ2ADel1nwVo2dMBavQBMrVuzLAAAgAElEQVRxPwEAulttR4j1pCQn
IQSayCgZBWYGkwcegACA7nVogRWtUXJRMgrkJVNC6E7JKNBMbpE22wCA7nVBv3mwouRJ3qEAHaV1ZwhJ
BoEmCiGqmncQAADk5nDVJhvKWCLWmUDztGzsBIDmcQWX9Wv9o+W8QwEAIBdHf2IeVJSxJgXywhxCIC+m
xKX+/kK1P+9QAADIRd/sIHkiJyEEmqiFTWVs6luPAD6UmdRTL5Z6JefeAgB0p4YnkigZBZopw2gz3sYA
+TGZFb1hRQ3xEAQAdKG3jgRPCgWnqQzQXJwhBGYI96jgnncYAADkJZEnWRavAD6EeabJEBkTQgbTAwAA
oEkGSibzhKYyQHM5O4QAAACYERqehMmEkI0HIAcZu4yynQ8AAIAmSn6TCHKEAmgGN8vSVKbQylgAAACA
DzReNJeCZTzzBOBDUDIKAACAaa9eMFkMTjII5CZbQhjE2xugmYJMkVJsAECXY9Y10EwtHEzPGUIAAAA0
k5vJnTUm0EyBklEAAADMBBkWrgCaj4QQAAAAADqFyeRT7zKasWSUwfQAAAAAMK3RZRQAAAAA8GFICAEA
AACgk4SpdxnNNpg+mMkzhwMAAAAAaIfJclFKRgEAAAAAJ5exqQxD6YGmYrYnAAAAmq1lXUYBNJc5RdgA
AABoIrcsZwhJCAEAAACgS5EQAgAAAECXypYQmgfOEQIAAKBpPMa8QwA6jbtNOc9jhxAAAAD5YagZkCsS
QgAAAOTLjKQQyAkJIQAAAHJl7pSNAjkhIQQAAEB+3EgGgWbK2POFhBAAAAD5KDbcIruDQJ5ICAEAAJCP
cn3y7CCNZYDmcmvRYPoMXwwAAAB8qGBR7i6RFAJ5YIcQAAAA+QnyKLqMAnkhIQQAAEB+UnYHgaYymSy2
qGQUAAAAaJa3JlwWSAaBpmvVGUJla2EKAAAAAJi+MiWETlMZAAAANJPJ5ZSMAnmhZBQAAAD5KM9zi04y
COSokHcAAAAA6GL2TlMZCtGApvGp31DZdggzdKsBAAAATmr8TWtY4iYaywDN4jJTaF1TGQDNFOUKlMoA
ALpUeZ6LklEgVySEAAAAyI2Zu5ykEMhLxoTQTEaBNwAAAJrI6DIKNJUzmB6YGczdQuQhCAAAgFyQEAIA
AABAlyIhBAAAAICO4SZvVZfRDPMsAAAAgClhjQk0VQitmkMIoMmCq84ZQgAAAOSDhBAAAAAAuhQJIQAA
AAB0KRJCIG9JdA0xfwkAAABN0rKmMgylBwAAAICOwQ4hAAAAAHQpEkIAAADkyzg6ATSRySNjJ4AZwZ0H
IACge1UmXMazEMgTCSEAAADyk5IQAnnKmBBOvVsNAAAAAGB6Y4cQAAAAADpJaNXYCQAAAKCZLHGJslEg
LySEQH5cJlco8RAEAHSnQ+Ou4C4LLtFpFMhDpoQwuHOGEGi2icgDEADQnRaUTeZO122gecLkIBdKRgEA
AAAAJ0dCCAAAAABdioQQAAAA+WEOIZArEkIAAADk49C4Kwkx7zCAzsPYCWCm4K0oAAAmkkIgJ4W8AwC6
mZm7EkplAAAAkI9sO4Rh6u1LAQAAAAA5sEjJKAAAAADg5EgIgbwl0SWjbBQA0H2qo250GQVyRUIIAACA
/Ji7nBejQF5ICAEAAACgS5EQAnny4Joo81YUANC9QoHnIJCjbAmhyySn0ygAAACao+EucY4QaCZ3BtMD
AAAAAD4ECSGQK96IAgC6XHCXiechkBMSQiBnFiIPQQBA9zJejgJ5IiEEAAAAgC5FQggAAIB89C11SxN2
CIEckRAC+XG5RxUoGQUAdDFzV5RLnCMEmsEnczy6jAIAAAAATq6Q9RcYQgg0l42lvBEFAHS1YO7OKhNo
iqwLy0wJIbcp0FwmyQtVEkIAQNdjnQk0R9Z7KVNCSH0p0FwmKc07CAAAclSUOEAI5ChzQsjNCjRRsKiY
dxAAAORkzqjrdXe5OetMoHmy3EucIQRyZJJiwhlC4LTVtifaUYuStel+ctPgSKIFh1w7HmSjHzhN9nt/
B3B6stxLnCEEAMxQbnM377rO3eY0GuWnjgzpsIbatcFgftaCfcW3GovPDlt2nS0lP37rizf8sD3XBjoT
60ygOVzZjvplLBl95znLhgbQHK5eBR3NOwxgBlpwz8iiqMJn3XxJqXH8MxrSr9p5/ThWsmI4tloKn3VP
H5H0v7fz+kCnKDbcY5J3FEAnMZn7lN+xsEMI5Mc9BrcyJaNAVnM277wsWvik3G8P0q8tKfS2O4Z0/E0L
1cpsl18qadbcTbvfTMqN7Yd2rOMdD5CBFZIoT1lnAjnJfIaQA79Ac5i4l4DMth0ozn/l+GUm+4S7f1xS
1WSvp6kV2x3KeE+pmEQrmikx00rJ/8bHk+SM2q4v/nLHzYfaHQ8wk9HJHshPtpLRE9kgb3CA02eSeXAP
DKYHpmbIw6Lndl3kif33br7JpF5JLvOYKC1qSNa+M4RSpZgUG3UVbHJ6TEHSRTL9h0bD+s+q7fv7n++4
frRdsQAznf3mLwBOm0ue4S0LYyeAHPFGFJi6Rc/tudXNPibpLpP6f/NfuMyCFTUyEqT2DXJppCoE94Ls
N51Ng6SzTP6x8Ua9tPi+vf/y6kM3/KRd8QAzmRlLTKBZslahMXYCyBFPP+DDLagN94WJwrVm/heS1kuq
vvsnzMxDedmyWPix1GhPVG6liT3FtGhl/f7BfddKk/116mlxwf07/79Dl938Qw0ZE0eBk2B9CeSHpjJA
jkySFSgZBT7Iko0HetLG6KDM/0rSjSb1vPenPLh5afSVifb1KRySpd9UwVIvyd6z2Z9IWmiyz1pq8xY9
s+s/vyb9qG2xATOMWfTg5s5rUqBpzKeeulGxBuTH5XIr9PAEBN7H3PVPzfLCsa3m/pcm3aT3TQYluQWT
lerJQPsSwoM7rOAqmOkkzWx8kcu3qmB/tXjTnrVtiw0AgAwoGQVy5SSDwPtYsnF4vicTdyvaX5jpKkml
D/xhc5Or3NMXC7+Sm2Rtua/ShhVDopJ00llPZ5nrzyzEyuItu708u3Hwx/+4bqwd8QEzRVGTh39ZYwLN
k+V+ytxUBkDz8PAD3mvJxuH5FsL9Lv2Zma6UTrYLJ0kKcis21GjfDuGhBZbM8YLHWDSzk93KQdJsSX9o
7rMm3k7+XoPD+zWyrk1nHYFp7ntH3GYlbqYMBW4AmokzhACAaePM+4bPsphsdemPg7RWU30XaSrG8Ym2
vbdcc0G/vfL6aCHYlOcfzpHpXkX5WXMK/YWPD4+wUwi8G+tMoHlatkM4+eVUuAHNwnB64LeWbNh9jqXx
jyT/uJnO15QLUyyYxWJZlfbtEEpKXAWFWDx5xei7zJa0VR5n198qFM5f/9SuHzx27dstDBGYMQJPQ6CJ
XFlWmJSMAnkyeThOl1Hg7C1fW+6Kf2zSRyRdkO23PShaKbW0bQnh6OGqhXCk6AolZXs89kp2m3ksTZTH
e+Zv2vPYGw/feKRVcQIzBbOugeZxTb4qnerPM5geyBH3EyAt3brzYkV91E1/JOm8U/kOCyoUrNHW95bB
VXBZ8RRa5VclDUqy3iQtljYOf+WVR9a90fQAgRnCkjQqBkpGgSZhMD0wg1Ayim63dOvOi+X6byQ9YNIZ
p/YtFuRerqdhquf5miIqScxi0aZeMvq7SpJulmtWoWA9SzYOf4GkEN2M9SXQXFnuKapAAQC5WLZleJXc
PiOpJjvVZFByeZC8VChmf8l5qo73vh6CpUW5Cjr1Z2lZ0tXB7c+LSfKHy2rDp/zvAACAU0WXUSBHHt0L
PWMx7ziAtqptT5aOL7pcpk+be03S3NP8RjOpEBtJ0JBMQ+3ZeHdLkhC9eGobhL9hktaaednqZuffN/yF
Hzy07ufNiRCY/gYl/UyTcwipmAGah5JRYIbgfkLXqW1Pzq2fscYs/rW73SVpzul+pUlBZsWipW2tejFX
QaZiE+5jk+tSyf4qjWH2+fcN/z8khegWIwsO+fljS1xJw42nItA0LR1M7xkvAOD98SYUXae2PVnWOONG
U/yUzDaZ1NOU73UFScUYk7YlhBNv9odKcrwgqSBXM9axQdIKSR+Lbrbivt3/7/cfuunl0/5WYIZgbQk0
V8sTQgCnz058qBdFN7ikdrA0OnHomhD8v5XsHk2en2sadxUSeVvnEAZ54lKTr+nL5fZp9xjO3/K1f/7B
F299WTIevehsIbopOKtMoEnMTd6isRMSb3CAJnJZ4OmHjrdm24Hi4dffvCkx+xu5blGTk0GZQpCK0UJ7
S0bliWTFpuwPvtsSmT7lXph93v27/o+XP+8/IClEp2N9CTSRm1uY+huWjAkhexlAc7HGQ2db9vHhyq9f
P7ouSJ+RdKeavqMmafJdaDHx9u0Qzh9/0473lBJNPkebv5Z1nWnSR5RqfPnWkX/+4Rf07aZfA5hWWGMC
zTX1R1P2LqO8wgGaxVzu4Wg/WSE60lm1fdXiWxM3yvS3km5Ra54gpskuo8XUvW1jJ05cuCCpFTuE71gQ
pD93t+qKrTv//vuF176nHQ+mLboWkIvBQwvsF3PczaXT7NgL4B0Z7yXOEAL58aDgKja4rdBxln18uFL6
9fhdZuG/c/kNau3rRJN7MQnetpLRxkDJLFXBvSldRk9mjpk+IvP+FfUF//n7te3fIilEJxlZcMgviAtc
0TxIzgMRaI6WNZXJ+uUAgO5zXu3xgeLbukNmn5X8ljY8N0whFOKpD4g/tYu6CtaqktF3myeppmATF6QL
/6/v1bY/S1KITkMneyA/DKYHckSXUXSaNRsP9BxPj97qUX8n0+o2XdbkXgyygg7uaMujKh0vmoV6QUGF
tpTOuHpN+lPJey+MZ/xviweHXxwZWddow5WBlrO6uxKmEAJ5aevbVABAp3I7q7aveqxwrOauv5XpirZd
+cQZwsTTtq4nXSHRZJOcdl23ItlmpenfvT7gawYHh9t6ZhIA0JkoGQXy5O5Juc6RCcx4l9RGFqlh6132
WUlr2nltk0yuordx7ERaL1ih0kjU+jOEv6/PzLa4WXx9QH9//vpHv/GDx+4Zb28IQPOxvgSaJ2sFWuam
MgCaxyUV3pogIcSMdlZtX9XTiTtM+p9MviKHEEymxEJs22Mq9h0xaxQTa+8O4TvKku5Xor5yted/XbPt
wPPPfG5tvc0xAE1F40KgubI8EMnxgDwZzz/MYEMeLrt395yBRv0Tivp3ks5XPi/6TVIhKmnbHEJJCrIg
qWD5rGNLct3h0t+NHTp2E+WjAIBTxdgJIEe8kcFMdvkzu5amZV8v12eD6eLcAjEFdxWSGEMtSDvacMk5
ksbNE/lkl9Gcyt0qcm2QefLaXIVLasNPvbhj3dF8QgFOTU3SdyWlomwUaKYsOVvGN4qxhfN3ga7kxTIl
o5hp3NbUnpg1Xo+bzPXvJZ2RczhmUmLytu0QpvWCWVAieVC+69iCXHcnUn+YsP8wODj8JN1HMRP99ibi
kQicHpPkmYrQMm1QGB8+fJr2AWYmt9WbHl880Sj8hZl9wqQzTEryvZ/cTCq0s6mMJq+bmKxomtwhzPFT
NOmamPi/f2Ou31WrbW9r6SxwOnasfNEtiW7mMe/nMh8+nfTJ8kCkZBTIieUdAJBRrbY9+e748PlpUtpk
8s9IvjTvmH7LixY9qE2pUFovWCg3Ek0+R6fDPO2que42WeWlON9XbRne9/wX1/0655iAKWONCeSHI0xA
ftxMXqrM4xmIGeG7jYF5Hqwm6X+QdGbe8fyWJTqxQ3jo0IK2JWbuFqZByejvKrp0c/DwP6eJX593MACA
meGUupJNlycf0Ale7R0nIcS0d+Wm4fMbro8Gswclzde0eqHoJqlg5u0bO9FzzAqN8js7hNNJWe6rE7e/
vHzL16tvz7Z/+/E/rhvLOyjgZCwU3T2yvgSaKMv9lOlB9k5NKoDmMEnLJP043zCAD3RJbXspmVh0YRr8
AZNvM2nhiV2xacYSiwrtLDoztatANbOqZLcF06yBty1evfWJXd/4wu1v5h0UcDKsL4HmyfoknIYPdaBr
WHT3n782yg4hpq1qfd7ZSYh/avLPmDR/eiaDMrkK3sYdwsmL2nT8d3GCl1xaY9H/lwkVbj2xiwoAwHtk
3CEMLjmLV6BJWKFhOrvy/icuTz35qLlvlbQg73hOwmSeSJ60667qbRSs0cYxF6fCpIpMl0j+6VVbR0rl
sUcf2f/YPW/nHRfwfmgqAzRP1qrOjAlhZAULNBHv7DEdXVfbVx2L4yvl+qgp/qmZZucd04cwSYnavWMX
vGDTfwVblnSjSXPqPVW7qjb8xNM71v0y76CA94oy46EInL4TD6YM91Pmw/DcqkDTeIjyUt/R6b+kRFcZ
j8dXmIdPmXSfSXM0/f+v3yQlk01l2hNq2kjMijPmlU5Z0iVy/x9japXravv+y5M7rh/NOyjgHSFEtzTv
KIDOYnHqVZ3T+PwD0PmiUYKNaWRoKKzd8rWrTeGTJm3UZJnoTEh6TKbC5Hz6dl51Op8hfI+KpIsk/9hE
Ov7Ry7d+ZWHeAQEApofMg+kBNM9MWGmjO1xX21etf3PsSgX9mUXVZOrPO6ZMohJTDO16UsVKYiE2khl2
DxckXS3FeUUVCldt3vlvT68e/oWGhmLegQESz0QgL5kTQrYzgObhfsJ0UU/HrgzSp920QdKsvOPJzJR4
lgMTTRDcbQYuYUuSrZD5v7NC2rP64K3//JyGDuUdFLrY0H902/J1D2EGnMgFZpCWNZWR0QMDaKZgwatz
zuMhiNxcUtte6vO51yjqY5LuNdecvGM6RQVrY0JYbYxaw4oz9ZFYMNlFcv/jUkzTqzbvfOjpL93ys7yD
AmbqDQVMN6Zsmw5UgQJAl7qutq/amy64WZ78lVw1SXPzjuk0JG4xHLmgv21rSp/Zz1CT7DJ3/ytL0j+6
6r4nzqvVtk/rMRoAgNagZBTICfcS8tbwseuD9ClF3SWbgWWi75ZYDKFdh+HSNLFQmJElo7+rIGm55J8y
C5WXNecfJf0055jQhcqSaDIKNFfrSkYlGctYoCkmt/Pp5YD2G/z4cGX07fQ6i/4JSXd3QDIoSWahvaca
Ji/WEc/EFXL/w2IjjF9XG/78kzvW/SDvgNB9WF8CzeUZ7qmZXO4CdIT+7x3hKYi2ua62rzp6xG812V9r
crTEQN4xNYvH9o2BiOXETOqkEssLZfZZb8SPX3f/8EWUjwJA98i0Q2jKfkgRwAeb0cVmmHFqte3Jz+Lo
7UH+Scnu0ORsus5h3taXnCYLHfREDJKfLdMfK8bk51rwT5JeyjsodBeeiUDztLRkNOsFAHywjllKYtq7
80++0vvzo8lNIfgn5R2YDEqyNg6mr6SJRdU78XG4VKY/NE/r1259/F+eumLvd5lTiHagZA1orpZ1GTU5
61egedxi8AULDnFfoaXu/JOv9B49lqwPFv7G3W6X1JN3TK3gFtu6ppzhXUZPZpnLPplY2HbjCzdfRvko
WmroP1kI7nLWmEBeMpeMAmgenn5otfXrHy2/dbx4t7n/uczXhc469/ZubdwhjI0xsyQJHfxgXCL5H7hJ
rzbm/6OkF/IOCJ3NLDhPRaB5WtxlFECzcD+hlW7YtKf/SHF8MIm+zU03qZOTQUnW7jOEodMbI9piSQ9a
8MbNmx+Pi0qHX9yx40GmA6AleB4CzZXl8ZRxDmFHP/mAtsvSEhjI4oZNe/qTZGyTu/25zK+xDjwzmDfz
9o65yMkSuf44Jtb/ejr3HwYHh58bGVnXyDsodKJIUgg0icsynWk4paYyAJrDgtGsAU23ZuMjPVYc3+BR
n5L8lrzjaRdvY8lolznDpAeiLIa5qSQ9nXdAAIDmyZYQmrlx5hdoGpe0Y+WLrh15R4JOcXvt8YGJqLsU
/TMyXZ13PG3VxpLRYqEYosXQRb3W5klec8lvvv/xxhvh8MEXdzw4kXdQ6ABD/9FD7auutKMr2oG2emdU
4FRlLBn9nasAOG2d2qIQ+RjcMjx7IjbuM9knFXSVpGLeMbVX+wbTB8XE5Z3cVOb9zJf0gGQ9CzXnH6rb
Dux/5nNr63kHhc4QjJYyQFNleD6xHgWADnDNRx+dpSTdIGmbpOvVdcmgFDy2LT1rJI1ufX4ulHS/p/pE
76/euoqRFAAw82XeIeTtDdAck/eSu4b+o0tD+QaDGe322uMDjTHbKOmzJlvdXZtWv2XWvh3CQr0Q0kIM
1hV9Zd6jX2ab5O5v2rzG+vWPvvDYY/eM5x0UOkNX3lFAE7laXDKqjF8O4IOZeMGC03fb1ifmNVwPyPUx
M11tXVz5YebhvMMv2zPtuVZibt3cxWaeSZsVvTTaW/yHNdsO7KV8FKcj6wIWwPs7lfsoY0IYWb8CTcUt
hVN3e+3xgUbUhuD+aTetzjuevLmbtWtFmYY0BAXr8jt4nkv3W5T1Hz7cGBwcfoqRFDh1UaSEQLO4lKET
KCWjQI66disHp239Rx+dNTFqDwTzT0u6hGWU2tplNAlJkHuHD6afkqpM6y0qxrmNxvr1jz5H+Siyqkiq
i3QQaKaWDaaXuFkBIG+3bXpi0cRYfECKf2qyq/KOZ7owV9t2CGMMlijlkThprsk2yDxp9Bb+7/XrH91D
UoiseEEKNI8r2z3F/QcAM8jttccHvBQ3SvqMzLprzuCHaN9gerdirJMM/g6XzzHpvuj25+PV5Jo12w50
XZdbAJipMu0Q8vQDmsstuNTtx5Dw/7N3p/F2VVW+9/9jrr1Pk4YQJCI2ZYMgBpXGYHexDJaiqAQS3MEA
gdCYlCgUol6rfJ7Px82tuqXVqCU2ZexAENBzFNQgEVASOygVrLIJZVn2lg0G0p+cZu81x/PiQD1a0px1
svZaa+/9+77wVXLW+GDmGWusOeaYM+N2wuqb58S9Ot08nGfmh5YdUdVYKObaiWbzUvvq944LQdHIjH9g
SNKLzUJcuH17bDRGvjnK5fWYIY4lAflhyijQTXzmB37R31687JaDfa8tN+lsMz9G/Dr+YzGEPePzCvnv
EkIMihb4P+GPHCDpZRbl2/yAoaVrNn1t8xXHT5QdFLoD6wkoR7ahMu5u4gw9kBeSH2Zi2bKvzZ+sj7/c
pQslPaXseKrKQrTxg4Y7vqy2bFlsIU2CLJIPH9gCScsT88HannRy6dJNtzN9FA+HfAjky2PozJTR+358
9r8C4EGQAvFQpttEJ/aOnSO3s2R6YtkRVZm7h4F0KpHcOtmKvXXrIqs/ohXMFEiJD2rYXC9wxcmBA1Jb
unTTbRSFeHgsKCA/M19PsygIeYUF8kLqw0M5ccXGx6Rj9eVmOlvmR4tfvw/DwuDO8Y4PS9t92Hw7cPs9
QcXdctGdTAea7OUy18DCqcFG47avjY4+b7zssFBd/IID8tOxM4SkPiBvnCHEH2s2m2HzlhfMcZ9aFjz+
hWRPFO9KM2DWml+3ZvNSazY7+70liWZxeieyk4/pBQskO0XB5uzyXRPNZvPrzWYzlh0Uqod3TCBfWZJg
pvVnJucIIZAPM7mxnvBH3G778XOHh9P2+Yp2rmSPE+9KM+IWrTVVL6RCc2eeTAZzzP244Pbnt3/3OS9o
Npv8e8YfCK1ILgRKxJRRAKgMtxNXbHyMjyfLZH6WSUeKYnDGzM2G27WOp6knbf+J7Q0LQpRxhnCmTAdK
9oqg4N/4znOt0bjtdtpH8fu4dgLIjynbeuIeQqBErCncr9lshjvvvGEohoFlcnu9S08QxWBWNl6f7Ph/
sz175pnPCyFEGa+wmewn0zIPNme3xqYkfa3sgFAt5EQgN9Fs5seSMhaEXJoG5Iv0h2nf/vbRc2O9fp67
nS754zXLoV/9zE02UBvseEE4ftCwzdk1FVi+s+HzzXWcufac2Lg52Th6wpfLjghVwRsmkJ9sCYqWUaBE
pD9IbieffPNjWzVbJvk5Jj9CUlJ2VN3I3ApLUSHE4J6wQzg7B0q+LETTK1650Wyy/c0NG07aW3ZQKBfv
l0C+OjZl1LL+dAAPiX5AnHTSDcPtev3UIF0k6fHin8U+iNZuj3c8Sy0aG7S9cdIsOBlxdkzSAslPcoX9
Yn3gnZK+0un7I1FdQ0NSqyUV90kH6G3+3/8zM7x4ACWKGfq70Xte1LhlgQYG1pnZanFmcN+5BZMnmze/
oKP/HScm7jULIZjxiXQf7W/y/xXMzj+pcdMLKQb719RU9CznnQDki5ZRoESsp341PU20rniSm51v7oeJ
fw77zCXVknohRXUSo3lgP2Pf2SPcfJmikpMaN6eamPwW7aP9icUE5CfrespUECbGLdpAnlhP/anRuH1o
UrWVcn+tTQ+Q4cxgDop8ofRk+hZRXmL3mZm0QKYT5XGeDw28W9KtZQeFcrCegBxluOua9iSgRBb5xtJv
Xn76DQsnfPf5kp8h6UmiGMyPmcU06fg75eT+A+ZuNn3mDTlZ6LLjQrQ1y1Z84fiygwGAfjKLsebOFxwg
J1SD/cRtxYqNj2m3wikmv0CuJ5cdUQ+ygXTSpOGOPyh4am6W5QMsHoZJC2V+skkDy1Z8QYPJ4LdGR4/f
U3Zc6LwhSakksiKQF1eWY+4ZC0J3thSB/LCe+sdJJ90wnIb6GcF9rWRPEP/3584kpQOd3yGUpBDMotyM
TcI8maYvr3+pmeZOxYn3Srqp7KBQjCDKQaAsvJAAJYpsL/SFRuMLB9QG6ucE6XTJniR+93aEe7Q0DYVU
aF7gnYd9aIGkPzWzs5c3bnph2cEAQK/LtEPIGwyQL9ZU71ux4gsHt6RTzfQ6SYdQRXSQmQ2kUzar0xAZ
LJgYsOgT5jLuSeic/SS9wuQDyxs3aWxI37j5qpeMlR0UOovfj0B+OncxvXOAEABmavXqm+aOjfvqELVW
pkPKjqcPWBwIdthh823z5s49ZHJylyUDQ8HENmGHzXfXi00+NGfc3idpY9kBoXNYS0B+sn6sZIMCKBMX
8fasRuMLB4yNxzNNdibFYEHcrFi+P7sAACAASURBVF5Qy2jg82ghbHqn8PjgfvaKFV84nsmuAJC/bDuE
iuIbDpAPkyuynnrSslVfPChtTa002QVSfDL/LxfFlaZpx/9zz59ft/GpyD2ExZkj04kKNri8sdHmDd30
jatoH+1BfGUB8mLKdA1h9oMWLFYgP1xA13vOOOPG/SYn22dLOl/SoWXH009cUr1e1A6hGTMRC7Wf3F+c
SLWJCf+ApM+XHRDyMzAQrNWS0YMNlKOzJ+8BoI8sX/7FR0xNtU6V/CzJKAYLZmYWYzGvlO7RQjCavos1
V7IXu/vEK1+5ccxs91dHR1emZQcFANU08wzFlFEAyEGjceMii61V7nqNsTNYCpcUYzE7hMl9z2NDo3CD
kk6QVHefn6xefdO/0D7aG3jHBPKV5Xtl5oKQj6FAflhPvaHRuGWBeetsM50n6fCy4+lXJslqrY7XaFNT
dVNom9yMq0RLsZ+kF5kpTO5N5zSbzc83m81YdlCYvTQNFhRZTUCOsiRDPsgAwD5oNL5wQPB0hcvWOMVg
qcw9FLVDiNLNlesEBZ1913ePPW7p0k0cgQGAWZrFUBm+3wB54YtMd1u1asOBsR1fJdO64BSD5XNJQdu3
/6TjReF0yyibUiUblOtFSiw5eNF4rdEYuX10dOV42UFhtqKMJmwgNx1rGWWZAsC0Vas2HKhWcnaQznVp
cdnxoHjkxEpYINdLXGZ1nz/UaIzcxKCZ7sR6AvJjylYQZtqg8OntQbYIAfS1RuMLB/hUssxd51EMVkut
gJbRua09ZjEGGZv8FTEs+UvT4OdaOu85a9feUS87IADoJkwZBUrEF9Huc/rpNyxUK57upleLaaLVUuCM
Fw9mDFqrlEFzvUiJtHv7795P+2h3GZLUEsMLgbIwZRQAZmjVqg0H+lRYJdNak55Wdjz4Q0XmJ66dqKQF
cr1MchvQvMFGY+RLo6Mrp8oOCjNz/6YDawrIB1NGASBnjcYtC6yVvMykV5tTDFaRSRZrLduzZx7vlP1r
WLITJVtT0/xn0j4KAA8v45RRd7IskB+mFHaHNadcv38rTr1KQefK9dSy48EDc0kDBT6PqduVNSz5CSHK
d2//3T+vWbPpG1dccfxE2UHhgTWbl9oPv7vEgpmcNQXkx23GC2oW104AyAtb9NW3atVnD2q36ytMvk6u
I8uOBw/u/vz05IKfh0raX6aTEndr7RkfvPDEG7/8no0vmyw7KDw01hSQH1pGASAH5y777Pxau3ai5BfI
9fSy48HD42J6/J45kl4R3M/dNqyjaR8FgAfGlFEA+CNua075zIJWUnuVSWdr+tJ5fgVWncsSD6YOt2JP
zalbmPRg/IvoBnNkenGw2N677bfrLzzxxm+yU1hNfMkB8uSe5VwDLaNASUydfm3FbK1efvOiNAyebObr
5DqK33v4nxJNr1/+bXSFAySdbLKwY57qa9Zsuo0zhdUyJCkVk+yBPGVZT5kKQnO5jBQIoHetPWnDnPFa
+yXm8TWSMU20m5gspm0rdjOXV9guMU/yl5t7ql27d69de8e/ffCDS1plBwWp2Xyrn33aRvPUA+sJyNPM
tx24hxAoER1nVeK2tvHF/SZ8qhHcz7qvGMzcRYFyFZmjWL9dZz9JL3EL7da2335o7do7vkVRWB1sNQB5
Y8oo0BX4wFId56/63COnppKXJ+YXuOzosuNBdsVfO4EutEimUyULU9t+m3CmsFpYU0B+mDIKABk0GiMD
6VTyUpkuiDKmieJhhRDNuZq3W813+UkuO2fXvPi0RmMkKTsgAChTth3CxDNccQjg4fBFpmzT00Rl9RUK
OtOkpxttol3L7t8iLGhcCBdcdLWFkr/UTFP7+fBHG42RO0dHV6ZlB9XPAueSgDy5Mqwo3kcB9K3zV33u
kaE+cIq5XitpqYrtOARQIpMONtfKVLZ2ns959po1m4bKjgkAypBxqMz9E0b5hAPkg7VUHjdvbzhBSv/c
ZEeUHQ323fSVS53/zrlA05uQxsUTvWBhkJbJPPWxvXsl/06WQQzIj3ERE5Ary5CfMk8ZJf0B+eGtoxxr
G7csiPb5k9zDapMfJWmw7JjQXRKxfnvIgZKdGDxOvLpx4+UfGtW/lR1QvxmU1Bbvl0CezJyWUQD4Y25/
vvy6R6YaX+buF0p+vCgGgX5nkh4r06vc47pzT/38krVr76iXHRQAFCXbxfQxeKCTAsgNX0OL1Wxeav/1
/We+1KR1ko7U9EYPekiRGYr121PMpq+kWB5C2tL2uz8k6XtlB9VP2KEAysM9hECJ+LxSnAvPuHG//7qr
/XIzO1PyZ4qdwd5j5taOXuSrJTmxp5ikRfJwUrQ4dd5pN1zxkU++4vtlB9Xrms1L7ZdbjragxMiKQD5M
UowzX1AZC0IO/ALoPmtXbThwcio9waSLJD9GctrBkBNeYHtMkPxPzO10UxxYe9rnrtgeJ74/OrpyquzA
eh/vmEC+OjRURuaeZWINgIdGi0wR3NS+4QTJ15l0FMVgbyuqPGOoTE8Lkj9Sbq+UPN0/Dn1Y0payg+p1
XEMI5CvLO2bmKaMA0C0uaIzMi7bhJe5aLenZok20pxX9Msnn0Z6WSH6QXMtC0MQFp91w5fs/+Yp/Lzuo
XjUoKRVrCshTlpxIjQegJ6055fr9Uw2/XG6XSGKaKICsgqQnuLQ6jen5607bcOTatevpMOiANAZqQaBE
mXcI2c4H8sN66oxGYyQZ8vBSyc+XtMSkgbJjQueZih0byxtsXwiSDpbsVXJ5svMxH5HETmHOYi1YEtOy
wwB6iLky3EOY7doJC27uM//pAB4UL5OdcUFjZJ7b8IskP0vScaIYRAeYuZvzTadPTBeF7ss9+uRrGp+9
8p9HT/6PsoPqJQOiZRTIk6uDZwiZAAXkjfSXp7WNkQXugye44utMOla0ifaZrCkwj+ehT5ikJ8h0ttwH
XnPqZ69KH/Hbf//gB9e1yg6sN0xqeu2SE4F8uLLkqMz3EEosVwDV02iMJDUNvFimV5v0XEmc9ekzRZZn
TBntS0HSo2V2upt84N5Hf1TSD8oOqttt2bLYDlRiicucF0wgFyZJZh26hzC6m7Fagdx4ZEHlYO1JG+Yk
iscHaY1LzxfFYF8KZm4hdrxOG9zb8nYtOF9H+5JJerRJK2Lwqdeedt2V7/vkih+WHVQvsCDjKwuQH6aM
AugbFzRG5tWH0pcE+et9eproUNkxoffFDIf10ZOeaPI1FmvnvPbUzx3RXLppVh1XAFAF3EMIlIg3yn3T
XLqpdo/teZE8vlrSn4qdQRTk/mmmrOG+FSQ9RvLVwdy2HrT9o5LYKZylJAZTEtl0B3KUZT1lnDIqJ/0B
+bFAD/ZsrT1pw5x7hnc+31znSFoqikFISkL04obXRxmvsP3uMTK9MnGbuKDx2Y+/f/TkH5UdULeiXxTI
lSvO/Awhm34Aus4bV980d2jQX2yuiyX9maThsmMC0Lee5G7nBfma15264XDaRwF0Gy6mB0rE3kJ2a9eu
r7e2jR1vFl4t6YXinkHcp+j8xPrFfUzSY006W0k7bF+062OSuKdwFlhTQH6y5MTMX7FYrEB+nCmjmaxZ
s2loaNuO/yWzNZKON4pB/J4Q3dte9wPn7el4bci1E3gAj5XbSsknLjzt+qvf88nlPy47oG5wxNZFtuOg
7aYYzHnNBHITMgw/o2UUQFd4fWNkeP+xXX9mZhdJOkHSnLJjQv9ypozigT1J0vlJGs6+5LTrDms0RpKH
/RsAUDJaRoES8Sl0ZtauXV+POwb+1NzPl3SCcbUEHsRgQc8JbpEpa3gAJulxMj/b3exRoX6FJHYKZ4ic
CJRjFgefyX8AitNcc/nQrh0HPDfGeK5ML6IYxEOb7PgT0rmDMWlNurtFJiPiQfyJu1bV3MfesOLT177j
ulN/XnZA1cdaAvKTbT1lvHbCnfUK5MecayceSnPN5UM7xxYsldK1ZvZnkuaVHROqy02F5ijOXOBhHCLZ
ujTY4OtXfPqqBc/43s+azWYsO6iq2bJoq/9JHLDICyaQq47dQ5j1hwPAbDWXbqrtHtv+fMlebbITJWdn
EA+pyPzEUBnM0BPMdI5qwXZ+9+lXSvpJ2QFVGe+YQD6y5ic+cAKonAtPvHFw96Ltz3HZGpNeTDGImWqH
eiF1WozuJgbLYEYeL9eZSuzUS171mceVHQyA/mAWZpyjsrWMZo8FwEPgbfKPXXjijYP1uZPHycL55v5S
SfPLjgndo6ihMvfvEJIXMUNPMtlapXH44lddf+X+h3/nF7SP/iF2KID8ZM1NGVtGo4I4Qg/kwSS5eB/4
fWvXrq8Pbpt8rsnPc/dl4moJZDB9gLCY18po7olk5EPMkEl6suRraqnSPVuOuUbST8sOqkqmX2BZUUBe
XOmM/2ymzGmR3AegM5qNkYF5Ow98pls8200vFcUgMjIzb4fUf71we0dz1fDulgdLnGsnkJ09UdLZ8tbJ
F6/49MFlR1MVtdg2ubPhDuTHLXaoZfR+rFgAeWo2Rgb2eP15SernyXSipIVlx4TuU2R1ZjE6yRCzdKjM
1tUTDV3yqs9cvd/h//Yr2kd5twTylLVfJvPF9AByYxa4dqLZGBkYt+Q55n6emS+XbG7ZMaE7maS6pD0F
Pg+YpcMlP6/e9jjxgyNHJP2s7ICqgDUF5KPDZwhFgwyQpz7/JtxsjAzsjeEZMltt0svkFIOYPXN522Nx
WYp8iH1iT3b5uZ7a3r9qjHzybaONe/rxWOoRWxfZnoXbLSQMqQByk7EizFgQ0iED5Mn6eEWtXbu+Pr69
9iwznSP5KyQdUHZM6HZFrydyIvbZYfK4Nqo29P80Rq+tH9H8TT+2jw5IiveNhQKQjywrKlNBmLi599/H
K6BjPMS+fJ9cu3Z9feG2A4416RzJV0qaV3ZM6A1JKGaHMEynQxIi9pVJ9nS5v7ptodXesvh6Sb8oO6iy
9GVCBDrFZn5XLscCgRKZ998ZwubSTbUD7n3E00y2WvJlohhETtzd0wIupp8zOOkhutPghtyYDrNo6yzW
XtY85fr9JSZuAihO5jOE/IYC8jP9NunWL+dG1q5dX29tu+fY4OFsl5ZJOrDsmNBDzCxpFXeGkHyIXJme
IvNXT0oDb1lx3ejfXue/7ZfcILGegLxlWVPsEAIlCn20Q9hsjAw8YvuiJVG2xk2nS3pU2TGht5i715K0
4y/Qe4Ym3Czpmxd1FCbIdYxM6zzxU/73iuseU3ZARUlroW9yIVAIn3m7qJRxh9AsdcvSkArgQfnv/W+v
azabId2ip5j7mS6dbHLaRJE/M28nnW8ZlaRo7qFP1i+K5oe76zWJefuNq6+85h+vWr2313cKk9g2N6ML
G8hRltWU+R5CF9v6QB5M/bGWmks31Vpbth7jHs4y+ckmLSo7JvQq92SqmJbRmqTpKWu8wCJ3waTD3XTe
4N45yVtWfe76v71Wd5cdVKfRsgbki5ZRAJXQbIwMtB5x71HudqZJqyU9Rv1RB6NEj/7hYR2v0mIs8L5D
9KO6Sc+W6XWhNfWyt6z67EFlB9Qpvz7sh5bEYOYM0gHKkq1lVIGvoUCOLMiazUut2ezNhdUOtUOCx9Uu
WyFpftnxoPcVtZCCufNtAwU4TGavS9ptbzZGrmmOrpwqO6BOSGttCx7651A9UIQM5wiZMgogd43GSHJY
DEeHNJ7uruVmOlj8+kCHFf1VxcSRenRcXa4jTDovyuyvGiM3vG105dayg8rbgKS2SBJAXrImp4wFYcz4
4wE8FHfZli2LeyoHNhsjA0qTp0XzM12+Rqb9RJ5HAczNkwKmjM7bsdDj0LhP33zIP2103KDLn+PSfnWp
/VfLr7vxbdevuLfsoPJm3L0IlGZWQ2UA5MTNem54XIhPiDGcJfNXmrSg7HDQR8y9naReL+BRIU08Jilf
OlCUmkmHy+119VpbzaWbrm1uPr5ddlC5SZMQQuQdE8iJScpyzo+hMgBy0Ww2Q7MxcpSnyXmSVkh6dNkx
AUAPGZB0pLudGw+857TmqmsOLDsgAL0h21AZN7f7riHkKw6wb0yyGKIdsXWRjZYdzD5qLt1US7dsfWoy
PU30XDPfn4kbKJpJClMDHU9PO4fGfb4b/W0ow6BJzzPzhXFqIDZPuX5j8zPLd5Qd1L5Kk9SCG51oQI6y
5KjMQ2Vm8xAADyyR9KjDfmjaXHYk+2jR1ickbmdLOk3SQonfESiF15LUO91H9zhJu2OIHrh6AqUYkNtT
g/mFVm/Vur199NHbF5pimL6a15zcAeSkYxfTM1QGwO9rNptBWxY/Q1GnSb5SpseUHRP6WZGvksxERKkG
JD3TXefZoq1TzVXXfKl57en3lB3UPjE39geBPM08R2UrCM3dSIBAbszNfrN9YVcuqpHGSPKD74XDo+Jq
M50jaX/xhowyuXu71vkpo7vmjrntmsM/dpRtQNJzJO0f2rXk7Y2Rz795tLGrmyeVsaaA3Pz3Mb+ZyDxl
FEB+zKOpS6/ivUt6oll6TpCt1H1tokCpzL02NeCtIh6VWJSznYHSDcp1hEuvnTQlly7dfK02q+vaR2ui
Bw3IW5a3S2o8oGQH7JnXVRWhy625/BNPs6g1JjtN0mPLjgmQJFfwllu6eNFWCjX0k5pJzzLXeXbgPcuZ
Pgogq8xDZbrqzRWoOAtm2w66u2uWlcvtbxqjhyVuayStkfSIciMC/n8mKS34eUBF1CQ91+QLrFUfaJ7x
8Q1vvfqM3d3SPhq9bWb3DZYBkAvzmbeMZtohNIWu+MUCdAt3s/3G5nZNAry0MXqIu58rt5WiGEQFDdTa
ftcRd3U8V4XU3YyWUVTKgKSjXH5BbaK+/D0nbhwoO6CZOGDPPAtJ6Jo8CPSizFNGWbFAfqbfJ6u/qlxu
f3PaJw9X6quCdLqb0yaKyilqPR1w90G+Z+5Oj55QE6KKni0z7Zy3Z6y56prN3TJ9dHrlsp6AfGTLhQyV
AcpjJtmuieHKV4R/0xg9LKR2nqQzJR1U+YDRl8zdixrSFC3x4Ly+opISyY+V9P/WW2FO84yPf6Z59Zm7
yg7qoYSYmixhPQE5cWWr26jxgBK5VX/E6NsaI0+2GNdo+tL5g0oOB3hQbsWcl9o2b4/L0yg5gxFRVXVz
HSmz19Qna6e8szEyXHZADyW6mcsrnw+BbmHTBwg7c+2E1A3NbUB3cN13tWdFNZvNkHzvaYd4bJ8ZzM4U
00TRDdq1Qou0yi5gQJJczzKFOBl97G+XX7f5LdevuLfskB4MawnIV5YvpJkLwuyPAPDgTBoar+ROffK9
Qw9JLF0r2RmSH1x2PMBMTNXaBSco8iEqLbj8WQp6i4fJ+c0zPn5dVdtH3Yra4wf6xcw/s2Q7Qxgz/WwA
D8HkJnMbnpxTuVX1thVXP0leWy35aZIoBtEt4uBAyyc7/JCDF273HfcsiNFoGUVXqMl1jLnWDownafOk
DZ9ubjhpb9lB/b5a8OCxcqkQ6FrmUtTMr52gZRQokcVQqd3BZrMZ5m5Z/PiY+mo3P1vS48qOCciiyA0G
8iG6itlzTAqDA3v3vu30q2/9q2vO2F52SL+P9QTki6EyQDdwcw/RxufvrkweHPjO4U9Oo1/gpvMl/UnZ
8QAAcmOSjjX5W8JUcsrbGyMLyg4IQDVw7QRQFnMzSQvG5lZiaf39KZ84JAadYeany/XosuMBsnJJQ3vn
dLxlVJKCuacydjXQbYKkY+RaK/dWszHymeboyj1lByVLgtEzCuSqY0NlzFKXmXOGHsjTjlKfPtIYSX7c
Sh+nJJ4VZGsoBtGtTIrJ3LFCzvXFED1EE41u6FLPMXkynGri7Y2RW/5ydOXOsgLZdtDdNjQ2qCDj9RLI
UciQnyqxMwGgPL9sx0NqiV8g2TmiTRRdbnz3/I6/U/7mh4d5kibTH0iB7rXETP87xPTUKrSPOhvuQGkY
KgOUyc0m5gyUtqzedsq1T4iJnya3M41pouhyRVZnqbkH+mXQ3abPFLo8xPb4+xojG15bUvtocDO5GXuE
QH4sw5RRdgiBEpm7DbbqhReEI42R5B0nX/u4WtDZ5jpXFIPoASb3eYOTHX+jXLxoqych8uaKnuCmY+V2
8ZjHEy874+P7Ff38/cbmWoiB/QagRAyVAUpkWRq8c/SL2D5UNZ1tslWSHk8mRi8oukILJTwT6ACT6VnB
/Q2Tk7V5bzv96s+UcSUF75hAfkwdHCpz/wMA5MLMzQbS8UKX1T80Rp5onjYknSPXQUU+G+goCy5Jb22+
1ZtqdvRRSZp4NDktbughzzb3MDhpY+9rjNxYZPtoSFLzSEkIlCXjlNGZ96ICmAnXxFAxLaMjjZHkp+nU
wSFNz5HpTMkpBtFjXEXsM9x1xF0+/3tPcSkan0nRY5ZIumTCW/4Pq6+88Y1Xrd5r6uzwpF1zx3zuniEL
cmPPHciJZ1tQmXcIaZEBcuPmZj7R6vgbrMvtHfHaQwcsnOnyMyU9vtPPBArn7rXJ4UKunZAoBdGTTNKz
ze3iMJbMfd/yKzfoet3b6YfWxLslkCeTlCUZsj8PlMdiiFZPax1/r3zHimv+xFzL3XS+KAbRo0zmY0Pj
hbxXhhDdO7xzApToeUH2usmk9sJ/WH3l3E4+aL+xuRYjl9IDZZrVUBlWLZAPiyF08rvoSGMk+W06dXDb
7FyTnS73R3bsYUDZTL5z7ph3usVNkmI78SSJzkEK9CzTUSHa6208Sd7ZGPns60cbE51aW8HNZB7EKyaQ
myxH/RgqA5TIJdUHO7ND6HJ7V7z28BDsVcF1puRP6MRzgKpwFbf9Xdd0Ow45ET0skem55ubm7cF3rLr2
87pW93TqYRxJAvKVpQ00W0EYJZYrkCfXVNrO/Z3S5fZPp3zi8Yn7Cne9RvJH5P0MoHLctPvugwpJUjFE
V6QkRF94nkvDyaSPrT9p/Y3rNqzb25GnsN0OlCZryyirFciLySx6SGv5ztpuNpvhPd+9+tHBdb5kK01a
mOfPB6rLfdu8PcXlKTPnFCH6xNMlu3iiPnfgshNv/PSFG0+cyqt9dO7EdpsYnGtyM9YTkA+X3OLM6zaG
ygBlshBqaZLbFoPLbeF3nrQ4ul4ts9WSDhXrHACwb2omPUey1/jw9pXvXnZtrufRLRpb7UCJMg+V4eMN
kB+TFNLEXNMn6vflZ7nc3rfimj8xq60w99dKok0U/aWgES9vbb7VL1t+VQyW0OSGfpJIOk7SXKvF8cvX
XH7DOVecM5HHDw5uFrnXE8hN1pXEUBmgRC4Pnvg+7+DdXwxKOt/cV4o2UfShMvITORF96Ah5uGjP7sGh
y068cfSijS+b3Jcftmv/YRscj2aF3SAK9IkMTdiZC0L2CIGcuCy4Qsv3rWW0uXRT7b0Lrn6q5KdKdpak
x4n3VKAADJVBXxqQ+XPd3TTn3vSfl1/5pddcf9bv8vnRrCkgH9mups9UEJq5Uw8C+Rrax7//iEW/fJzS
pGHSBZreGSSboj9ZMRnKZP7ecI3L0yIeB1RRzWTPlTQvDUovX3P552bbPrrfjnGfGphnJi6nB/KUJSEy
bAIokQW3dr1llzYvnVUivOyUTxxiaXi1SadJOkCsafS14mYUWmxHL/B5QAUlcn+qor1mbNdA47ITbxyc
zQ/Ztf+whRjNjMEyQH7cQ6cupmeoDJAzN/NWPXMRt37t+vrk1jmLE0tPlXSW5AeLnUH0OZO0uMDn8fUF
sEE3PS/I6xra3vqnZddsuvhzp9+d+af49GEnkhhQDvIZUCJ3s6TeypwDp7YPPzaRvUrmr5P0KLGWAQAl
MGnA5Uss+Jvr9fSFs9kpjImZnHoQKEu2M4QFjfQG+kUInnmw2vpTrjgkTcN5Mn+lnGmiwP3Mo0v1Yp5V
s6gYXc47LCBpUO5PlWttbc62gfUnrR9dt2Hd3pn8xTkTQ2Y++XsLiVdNIBexQy2jEtv5QF5Mktyt3p7Z
tRPr166vp/cOPdU9aZj8bE3vDAIoCfkQ+AODMj3X3YdjbU57/Yqrbl133erfZPkBrCkgP1k+rWS/doIP
N0AuXDLJrJ3O7CB9+7dzHm+JVrviuZIxTRT4H8xCYRmq1o7etuCMlQH+wKBJR0n6y9Q1cOUJV46cdfNZ
Yw/3l8zvaxllQQGlyDxURqImBPLiMvMkhsVbFj9kcbf+1GsOl8dz3H2FZAcUFR+ABxZDzUNMje8ywB8Z
lPRUk87ZO0dhfWPkU+tGV+58uL/ESgLy45JCho+ks7iYHkBezKMlHh40D440RgZ2tFqLY0xPd2mNSY8o
Mj4AAGYhkfQsyeZ5ezJ+aMXHbzn/ujN+9WBbgBajKXDtBFCWjAXh9PgL4zsOkAOXzIIlbZMGHvBP7GxP
HOLBzzO3M0wMkAEeUpQrKeZRtVb0tCYXs9aABzMo09Mk/e/oPueKU664Wp/Rjgf8k8FDmL5IlBdMIAcm
yTTzsYXZpoxG4x5eIEcuKcRgD3RpxAdO/vhiV3qO3E6mGARmIMMlvPsqDamb8/4KPIy6pMNlWj1lob3+
pGs+vW7D6ff8zz9kHkzmMk4lAaWgZRQojZm5Wepmd21d9N9vldNtomOLZb5astUmHVhmlAAA7BPXMSab
50ka1jc+9vm1o2f98v720aHJ3dYOD9wlA6AYXDsBlMQlWXBL/A/3B7dPTT3FQu3PTf5KcWYQmLGitxZC
Cc8EulRd0lMt+CVqa94Hll/1MV2v30lSe3B+sHTcbPpOT14zgXy44syHyszo/jMA+btvPGFi0VrNzce3
JelDp37sGRbiOSZfJopBIBMrsGW0HurUgkA2Qa4nS+H0mvSq9SuuOliSFkp7zBWlok4AA/ifMl47ETX9
DkseBHLhslatFSXpw8uvfJrH+JogNUQxCGRWbGaalJTIyIdARv40Sa8LUv1Dy675+F1H3LX10d95Ymru
0VhQQG68U0Nl3IJL7uznA7lIJe0NCgMfPvVjR3vq55jZaWKADNAteHkFsqtJOtTcL1RotR/9nSdutGAx
RJ9w7rUOQAAAIABJREFU1hSQm47dQ5jovpXKcgVy4gsshufJ/ekmLZNTDAKzZa5im86YMQrsi8dLflaI
WqToO2Q2bCwpID8ZVhNTRoHyDEp6htyfKunJYmcQANBX7OkmPVrSj116lDHbAigFU0aB8gxI9hRNF4Z8
nAH2UZHNKxYt8uYK7LO6TI+StMBcJiMXAnkwKcMJwlkMlaFbFMhNImlu2UEAveL+e82Ke15xU02BHuaS
htlxAPIVMpSEfOAEAABAWSgFgdy5e4Z7CGkZBQD0hKLzE/kQAFBFWWessUMIAAAAAH0q4xlCbpwAAGAg
pN6KNXYJAQCVY5LcZn7OfRbTnCgJAQBVVHR+Ih8CALpfpoLQIhPVAADVVOyMUWnmx/UBAChWyNDCwhlC
AEBPcCuuJGxP1SkHAQA9gSmjAICewJRRAACyoyAEAGAWGLQGAKisDEf9GCoDAOgJbtG3L9xeYJKK4jMp
AKCaZp6fMl87YaIkBABUTxmlGeUgAKBqstZqDJUBAAAAgD41i5ZRvogCAKqnyO6VYUntAp8HAMBMBcmz
XEzPDiEAAAAA9KlsF9N76sb+IACggoq8mL4VW5YkJp/5B1gAAApimVo62SEEAAAAgD6VaYcwERNGAQDV
VEZ+omcGAFBFWfLTrIbKAAAAAACqx81dcebfSTMXhHwNBQBUUZH5aUhMGQUAVJMpW07kDCEAABlNDSR8
HwUA9IRsU0bNXe5inxAAUDVe8ClC41Q9AKCyZl6vZWsZTTP9bAAAilN0fooFPw8AgJnI+L2SM4QAgN7g
Zgu3Lyw0TZETAQBVZDbzi3I5QwgAQEZJ2rZs1/4CAFBNmXYIqR4BAFVlKq6LM4mJeaBnFABQPaZsXaOz
vIeQg/QAgGoxL3rHjlwIAKiqDg2VCeZeeL4FAKCCzM1kFIUAgO5GFygAAAAA9CmmjAIAeoJp+nakIp8H
AEAVWZz5lNFsBWEUGRAAUEmxwAwVYss8SThGCADoepmnjFITAgCqKLhbkTuEEvkQAFBNWfLTLKaM8jkU
ANDfQj2xGFOuIgQAVFC23JS5IGQKDQCg34XYNikwYxQA0PWo7wAAAACgT2U+Q8jXUABAFRXdvGlyp2UU
AFA1Wes1dggBAD3BrbicFkM9uIxqEADQ9TKeIYwyJ/8BAKrHC6zPkjQGl3OGEABQOSaXZchQ7BACAAAA
QJ/iDCEAoDe4F/aRsx1TS0IwIysCACrIY5hxgmKHEACADFxuteCBMxQAgF6Q+R5Csh8AoIoKnzLq5vTN
AACqKMuuHzuEAICeYF7cjp154PsoAKAnZN8hdL6GAgCqqJiC8NLmpfbMOx4VQizuzCIAADNlLrnFGf95
khkAALNgzikKAED3yzxlFACAKiqyfyXEYFKkIgQAVBJnCAEAfcfcbN6e3xZSoyXBg4x6EADQ/ZgyCgDo
CW5mw3vndzxNLd6y2MzvMfNA0ygAoOuxQwgA6Akmt62Ltpt3eLjMoq13WduDsUMIAOgFGXcIo9gjBABU
krsNT8wtJEmFmJqHYGREAEC3yzZUJk6Xg1w8AQCoHFcYmBzueI02f/fBNjVHwRWNhAgAqCKf+a0T2VpG
zfkYCgCoroGp3XZp89KO5qqfPGmhxehBnCAEAPSAzENlJJpGAQAVFMx27TdYTMtokppiIB0CACqJaycA
AP3HzebsbReS10JaC6JrBgDQAzJfTM9xCQBANbnV5o13vEhbtHUsTA6mllggJwIAqsblcpfPOEXNomWU
9AcAqCBzmxyfH6SdHX9UCPcNlQEAoMtlv5ieehAAUEVuNjiQdrxldHDRdkt3DQY3WkYBANXjkpIMf54z
hACA3mBu4+3JQoq0aB6YvA0A6AUUhACAnmBulqR1W7xlcUcLtXsn5lpwJowCAHpD9pbRTkQBAMA+Mldw
C8mirXd1NFUNTO4yS+YEd1EVAgAqJ2tuYocQANATYpDV67GQvOZRwfhGCgDoAZl2CBO5OVNGAQAVFFzW
mvIw0OHnzB06IExNTibORYQAgOqx6UMUnbx2IopvogCAyonmFmK9kAzl7tMto+RDAEDVmKZrthmiZRQA
0BPMzcJAq+Ml2q7WmJl5MKNlBgDQ/RgqAwDoDa5gMbH5uw/ueKoyDya5kRQBAN2OHUIAQG8wWbRWlrt4
Z6XeGrQYosmcHAoA6HqZdgiDRH8MAKCSXG5uoeMFYa291xQGErE/CACoGNN0vZalZsvYMprhdCIAAAUy
yUIM9pMn/cZ0Z+eeU5s7aGmamjzDCDcAAArjynLQj3YXAEBvMJnFtOO7du2xSfcYqAUBAD0h2w5hvK/W
JA0CAKomKsRgybw9B3S0KGzX5njdW6mRDQEAFRSybRBm3CF0zksAAKrJTaFWwBlCAAB6CddOAAB6gkmW
ph6yZ7Z9eiYAAF2NM4QAgJ7gUkiCh+Hx+dRpAADMEAUhAKAnmCuk0cPg5PaOFoS19l4KTgBAz8h4D2GU
c/ESAKCKgswsFJKiQvCg6EFGRgQAVI9luC4w+0kLZqoBACrI3L2m6JODCzuaqWpzB01T6fS9E+REAEAV
Zbg+PlNBaG7Gx1AAQL8zN3Nj9DYAoPtxhhAAgKyCm9EvCgDoARSEAICeEUPnh8ok7QlTVCIKQgBAD8g4
VIbjEgCAajKZWQFZKmkPmAfngyoAoLKyZEMSGgAAs2Du7BACALpeximjUXL2CQEAFdUq8mFOOgQAdL3M
107wORQAUEkmS2vRkkIfCQBAtbikLLkwY8uomUSLDACggpz9OgAAsuIMIQCgZyTtQFEIAEAGtIwCAHqG
W+x4G0tam3KLtbTDjwEAYFay5kF2CAEAPcHM0uC1dHJwYUd3CdPakFu0KImiEADQ9TLvEHJCAwBQSR7b
HkJrfHB3RzNVe2zSa7WkJVmUkxQBABXjyrTtl/liegAAqimkCmo9ft62jlZpw8NJ9Alrh+CRchAAUEVZ
8lOmgtDcjeQHAKgmb3vbWr/bqtjJpwynk+lYGJgSLaMAgErKVrGx6QcA6A2mlic23unHbJs6MFWwccna
nX4WAACdxpRRAEBvcJ+a227vPWqpojZ38kE/bys9YNzMKQgBAJWUZddvFhfTAwBQPSaN79D+E2q+taOn
G5Zufmta8/aYTFOdfA4AAEVgyigAoCe4hb2PXPTzaOrscXeT+e3+rjGLPkHfDACgkjKccucMIQCgJ5h8
YvwnBxfy2TKt16bkoVXEswAA6KTMU0ZNbBICAConlfveoh5mVmsHm9pLPgQAVE3W3MQOIQCg27mkbaaw
Z/f83xRSo9XSNHVpTxHPAgCgk7KfIWR/EABQLZOSfufysaIeODUZ4kC9vVumtmaVSwEAqIaMSSyaZByh
BwBUyZTJf5Uq2bl10eJCvlrW57fTMKEdLt0j6ZGi4wYAUBFZj/iRwAAA3cwljbvpZ3K/t3HEXYUUhMPp
ZOpm90j6lSTuIwQAdC2unQAAdDWXT5iH/6qZ7Zi+g7DZ8WeO7U5ifcjvddfvZIodfyAAAB2SaYfQnIvp
AQDVYmZTJr+rPaitnb6D8H6Tg7taHvQbmf/S2SEEAHSxTDuEQWwQAgAqxeW2Xa7/ePazt+3RxmIeevzm
Zvu2F77z1wMefuJGQQgAqJYsu3icIQQAdLMgxd8k9bDNms1iWzfHtS1KP5NoGQUAdK9MBWGUm7IVnAAA
dNLdMvvBVM0LvxPwube/fiJJ4q8lbS/62QAAPAiXZFmO+mVuGQUAoCJSk31P0jdaO9qtoh9uMv+2LrvX
FP9D0hMkJUXHAADA/5T12gkupgcAdCuTxx/U6unXdw2OFV4QSlK0uEfy70h6pqSDyogBAIA/lK1em0VB
CABA6aKk3R605cib3/S7soIYbte3jYfJzeZ2rFMQAgC6EPcQAgC6jUva5bJ/MbfvlxnI4s0XjN3+knfd
UZ/SLRZ1jEwLROsoAKBMrkxTX7h2AgDQbUzSDjO/vh3q/15uIOa6Sdu+/WeX3eAxPl7u58soCAEAJXGZ
zMwylITMiQEAdBmbkOu7MeiLz/rSa7eVHY0k7Uy3/dCDrpT0NUmTZccDAMBMURACALpJW+53Kejze9Kd
vzBZJRpXjt/cbNfrre8r+Hq531l2PAAAzFSmgtCdAhIAUCpz0y1pGjcev7nZLjuY33fkzW8as3Ztk8tu
MOnusuMBAGAmshV4bibN/JJDAABy1JL0NclueNZX3vDLsoN5ID961KO2hRBvdPmopK1lxwMAwMNhxw8A
0A1SSXeY6++mJmNlWzJXjq5M4655d0Ul6820Wa69Yh4bAKDCKAgBAN3gX8304flzklufd/sl42UH81CW
3Lmudezmv/i+yz4is68o0/BvAACKxcX0AIAqSyX9u8k/EpOpTx+68S+7ZoKn7xq+VfPG95PpcSY9ReRc
AEAFsUMIAKgmV5T0bUnviIqfWvLFv9xZdkhZLLlzXWuiPfkFk/21pC2idRQAUEGZCkIzCkgAQDHMdLuk
9/v8OSNLNr/xnrLjmY3jvv7m3bu047Pm+oimi0IAAColc4Fncs5CAAA6qSXXt+V6X22gPbpkw7q9ZQe0
L5Zufuukma4y0+WSfil2CgEAFcKOHwCgSlK5blfwv5uak3z+yJvfNFZ2QPvKZH705tfvCOafNNn75Pqp
KAoBABXBAXcAQFWkcn3dTO85ZtMlnyo7mLwddeslv/r28y/7qIX2HJedLunJZccEAOhRPvOuzkw7hJF2
UQBAZ0xK9i0L9o75w8mGsoPplKO/euE9bfcPS7pa0q/KjgcAAFpGAQDlck1J2iyPfx/nDX/x0I0Xdc3V
ElmZzJ/1lTf8UvKPS7pCrl+I9lEAQIkytYyay7heFwCQo7bMv2pu7z7my5dsLDuYojxz8yU/+s7Syz6Q
WkzcfaVMTyo7JgBAf8q2QxhoGQUA5MUm5Lotevi7nbbzlrKjKdozlm77dZr4hyzoarl+LXYKAQA5sWAz
rtsYKgMAKMO45F+MIX5gzoG7v3zsaLNddkBFs2YzSvrJnUvfeaUUEldcZbInSPTiAACKQ0EIAChaS9LX
o/TOYze9YXPZwZTtmZsv+dE3l/79e2pWTz3qDJmeKIpCAEBBsrWM+sy3HgEAeACTkn/FzP9mydKdXyk7
mKo4dvOb7o6JfdjNPyTXL+WKZccEAOhiGeo2powCAIqyR7IbPejv4665t93XMglNTx9d8sWLf6FauMaD
fUSm/6QoBAAUIVNBaGKHEAAwKy1JX3XT3y259ZKbl9y5rlV2QFW05IsX/0LJxLvl9hGZfkJRCADotGwX
07ubO+caAAAz5pLakt9kwd6+23fcWXZAVbfki3+5s1XTlZK9W6afUhQCADqJllEAQCftMtP1CvaunXHH
bcdv7r9porPxnC9dfLel4ZNmer+k70tKy44JANCbsl1MH8wUuSYJADADrijT16Lp7Utuff23yw6n2xzz
1Yu2/ueJl71v1964293faKZDxfRRAMDDMoua+f3x7BACADrD/Hq5/512zvle2aF0q0M3XjRZTwc+Zaa3
SfpB2fEAAHoPBSEAIG/bJX3STO8ZeuSubzBAZt8842sXbK+3Bz8r0z+Z65uaHtADAEAuMt5DOPOtRwBA
33FJqVybPPr/PfoFu756xGhzquygesEzvnbB9l2+86Me/B2S/qPseAAAVeZmHbyHkIIQAPAQbNQSe/fw
Qbv+g3sG83X85mZ7fKq10c3fJumOsuMBAPQGWkYBAHm4R9JINH/v/MHwDXYGO+O4r79598RUa4Nk7zbp
65Imy44JANDdsl1MT8soAOCPtSV9KTH/6z2+8xuHbryIIqWDjvv6m3fvNxxGXfZ2Sd8tOx4AQHfLdjF9
mHkvKgCgL7Qk/4QFe39719wfcs9gMQ7deNHkeGvyyzL/R0lfKzseAEDFBK6dAAB0mEl3m9uo5O+bPxiY
Jlqw477+5t1DPniju10m6auSTZQdEwCg+2RvGTUGywAAbMJdnw+19NJd2n0HbaLlOGLza/dMTcUbottf
y+O3y44HANB92CEEAGQ1JvdrYtBHj3z+7h/RJlqu591+yfjAYOs2WbhM0pfLjgcAUAEdvHYCANDPXL+W
NBo9vnfOgTu/xdUS1XDkzW8aG1L983J/t1xfkWtv2TEBALoDBSEAYKb2SPYZD8nf/PSgx32XqyWq5YjN
r90zOaUvKNGlkv6l7HgAAN2hlu2PM2UUAPqRubZFsxFP4seOvfXiH5cdDx7Y826/ZPw/T7zs67vH0392
uUv2Z2XHBAAolrlMFmkZBQDkxPWLaDZSs/he2zn3X8sOBw/t0I0XTQ5q4AvR/J1y3SppT9kxAQCqK1tB
mOFwIgCgJ9wr6RMhtN9+1KZLtnC1RHc4YvNr9+zx3bda8P8j6atlxwMAqK5s105kuOAQAND1fmPuV1uI
1xxz6xt/XnYwyOb4zc2JHx342K/J9GG5bpaUlh0TAKAYkSmjAIB94JJ+LumTbnrPTt+9peyAMDsrR1em
tXr7pij7R7m+JNeusmMCAFRLxqEyAIA+8FuXX5XIPnL05kt+VnYw2DdH3vymsS2N5pf33rNgb4i6RK5T
ZHwQBoBe5SaTzbyzM1NB6K4gibZRAOhRLv2XXCPmds3RX3n9z8qOB/m474qQr99x/Lv2N/cBKbxI8qGy
4wIAlC/bDqHLKAcBoAe5oqSfmfSpmtc+8IwX3vtzfaXsoJC7eXM2adfYLpm7pOdL2r/skAAA5aJlBAAg
mX5hZpcH0z8f+ZULf2rNZiw7JORvyYZ1e3/8yMfe5mb/19xulGyi7JgAAOXKNmWUMwcA0It+ZrJPpIlf
c/Rm2kR73crRlemSTRd/I5WukLRR0u6SQwIA5Mw8zLhuo8ADgP6VyvUTM12l0P7Aki9d/NOyA0Jx9tiO
r4Zg/+jSTebaVnY8AIByUBACQP/6qYJ/RJZ+5Jhb3/hzk3nZAaE4x29uThx961/c5sH/wU2fEzuFANCX
MhWEUVxMDwA9YXpncNST8HEune9vx956yTct2OWS3yxpR9nxAACKle0MYYYb7wEAlZRK+rGZXS5L1y/5
4sW/KDsglG/+YPhGDPp7yW+QdG/Z8QAA9omZd+geQgBA1/uRyS5vx/SaZ21+4y/LDgbVcOjGiyYlffPb
S9/5bnftlakhaWHZcQEAOi/bGcJgJi6mB4Bu5JJ+7PLRROHqZ33lDRSD+CPHbL7kDpOukOsW0T4KAH2B
oTIA0Pvami4GP6xa+NCRmy/6r7IDQnXFPXPuCLJ/NOmzku7R9McEAEAXiWHmR/0yniF0CkgA6D7/abIP
14Ku4swgHs6SO9e1jv7yxd+S/L0u+5RcW8uOCQDQOZnOEEaXMVYGALqEK7r5zyV92uq1q4665eJflx0S
uoPLzTbbHf/6gn+yaLa/5C8RZwoBoFuYPHZohzBwfhAAukQq048lfbAe6x895pYLKQYxY/ffSZnuGf63
4HqnSZ/W9PRR2kcBoAuYZr6Nx5RRAOg9LunfXX51LeiqIzdf+KuyA0J3WnLnupakb915/Luju7dNOkXy
R5UdFwAgP9kKQndjyCgAVNh9baIm+3So1688ip1B7COXm22yO+944bvcUtvPTS+TtH/ZcQEA8pFxSIyZ
ORUhAFRUKtN/SvpgTHQlbaLIw/3to9o553sx6DKTPmWubaJ9FACqyWXiYnoA6Dvu0g/M/JpQq1MMInf3
tY9+419f8E8xhujycBLtowDQ/TIVhOZmfBAEgMpxSb8waTQxfYw2UXSKy82+bN/61p++ox2C5kt6haS5
4jwJAFSKdeoewhjc3PilDwAV4pJ+KPMPhhiuOfJPd/2m7IDQu+5vH51z0O7/r707j6+yPve9/7nue2Vg
xgEBFW1raatUERImFQiIA622td1hn72fM+yzn73rrm0RtLY9Pa/96urreZ59enZbUKy1OGvrlBxbh1bq
AKTghCRMyiSzgMxDEkhIstbvev6Ibm2rlUCSe2Xl+3698K+stb5Ckvu+7t/1+12rg/nPDR4z5xB6Wiwi
klOCWkZFRLoFd1gTYY+FDPePWHzjLhYlHUm6g2GV6Wbg5WVls5ociwy+6DAw6VwiItJ2bZtD6BpLLyKS
Q3YYVGZC9sHSxTO1MiidbkTVzBqi6BeOLQQak84jIiKAmdGGOYRtPGVURERyxHrD7nKyj28dOER7BiUR
hnnfYnvTIu4EHgdqk84kIiJt08aC8Ph7UUVEpEO0Dp13Hs7QfE9J2ZG3plVOyyYdSrqvofOmN2087cyX
Q+R3gj8D7Es6k4iIHL+2tYwaETpJTEQkMQ47gYoCT/16VNUteyydDklnEplWOS275bSza0LE7cACnOak
M4mIdGdt2erXtlNGNZReRCQx7rxlcA+Bxw9GB7b/x8BwkRwwrXJa9kioW0XEXZhXoPZREZFEOG5Ex9/Z
qT2EIiK5z8HWmfGIFaTu3jTwrLcmVaUzSYcS+XOTqtLHvLbn4sijOe+2jx5IOpOIiPx1bWsZ1R5CEZEk
7HDj0VRIPTTihW/t0p5ByWWlNde3HLbDy0PE7W48D7QknUlEpLvpsJZRNHZCRKSzrQfuwzMVF00+sE1t
otIVTKpKZ/oXpVZGRPeaWyVwOOlMIiLy4dpWEJoKQhGRTuEEYL07D3uWuZsHnLNBB8hIVzJ03vSmotMP
LTa41Y15wKGkM4mIyF86kbET7/0REZGOs8OwXxPHj5Qunqk2UemShlWmmw/b4eWxRT934w+A9r6KiHSC
QOiollEdQiMi0gnWW8SDWaOyZMLBLUmHETkZk6rSmd5FVhM597mh9lERkQ5mbVy8a1OB54b2roiIdJws
2DrgVxlv+cWW08/cqDZRyQdD501v6tMjXmxEPzO3Z1H7qIhIzmhTQRgZzYC/+0dERNqTs83dH4rg4dFV
392tNlHJJ0PnTW/adPrgFRbbHeC/R6ePioh0nA4bTB9oBHSDIiLS/tZ6ZA8SxxUjqmZuTTqMSEeYVjkt
m60tXkpk9+P8Fq0Uioi0P8esowbTRxFHAbUviYi0nyzua3C7v6Cg5ZclC769OelAIh2ptOb6lr5F8ctE
0b8Dah8VEUlY2/YQOs242kVFRNrRZrPooaxnHxv+/C17NWdQuoOh86Y3jVw4fZljv8T4HdCUdCYRkbzS
US2j7mRNB8uIiLQP9zXu/CoOccXoRTdvTzqOSGcyzKnvsQTjATOeNudg0plERPKCYUYHFYRmahcVEWkH
GdzXuHFfsJa7hy/6tkZLSLf0XvtoMH4c4HdoJIWISLsIfvx7CFNtemdz5/jfW0REPoQ7my2yBws8fnx4
1U27k84jkqSh86Y3AcuWTpp9lzkBKAd6JRxLRKRrizpohVBERE6KA2uJ7GGP7bHhVdN3JB1IJFeUTqx9
Fff7zHgWOJB0HhGRrszasELYtoKwDZsTRUTkT2RwX4v73VEqvqf0xRlvJx1IJJdYOh2Kz6hbYs6/4Tyl
PYUiIiesTTVbWw+V0YqiiMiJ2UBkD1phweMjX/j2O0mHEclFwyrTzSOqZq7Awt3B/LdoT6GISIdrc4Hn
3raKU0SkW3MC2Dp3Hk15/IiKQZGPV1J182txFN8H9gdgf9J5RES6IO0hFBHJAVk31oLPTcV+n/YMihy/
bG3xUrPsj4EnaN1TqLFXIiIdoE0FYWTmmkMoInLc3jLjoSwtj1284KadSYcR6UpKa65vGbnw5pUh8vsM
fgvaUygicrw67FCZgGccU0EoIvLXZYEN77WJjq76rkZLiJygUQtuej0b+d1gL6DTR0VEPpaDddjYici9
CVwFoYjIR8s6rMP9zgKL71ebqMjJ23La2TUe+U8cq6R1T6HuRURE2knbVgiNRly/hEVE/oq3cB5uSUWP
qBgUaR/TKqdlSxfMXBY79zn+FFopFBH5q0JHtYxGbkcxsm2PJCKS97I4m4HHg4dfj50/Y0/SgUTyzYg/
zlgaezQX7EXNKRQR+XDmbubRcdd5bZtDaHbI8UzbY4mI5LUs8JYbd1qUfWD0opu3Jx1IJF9dPOlwTeTM
IuJxYB9qHxUR+VNmZnb8dV6qLe/tUdhrwbRCKCLyAe5sIrLHMhG/Gjv/O1oZFOlAlk4HYOmyslmOWxHG
tcCApHOJiOSQLB6aj/eL27RCGAfbC7S0OZKISH7K4rwdRTweuz+kNlGRzjOy6qZqM78TWADUopVCEZH3
NIHtP94vbtsewpCqNdgDhDbHEhHJJ04A2+Dmd2YjHhhRNXNr0pFEupuNA85eDuFW4DE0vF5EBAw3OEgU
rTnel7SpZTRbRBMZ1uKMAPq1OaCISH5wjM3moaIlFd2vlUGRZEyrnJYFXquZdFsLhJ44U4HTk84lIpKg
hoBtiqxl4/G+oE0rhC3BmgK2Dni79em4iEg34wScXbhVhDilNlGRHDBy4qHlePiFGQtxGtBKoYh0T1mc
LbivoqWw4Xhf1KaCsCG7/6i7LQBbrfETItINOcYmj2xu5PZA6YLpm5IOJCKtB81sGjBkaXCbAzxmziFU
FIpI93PE8Cri+Pk+vak73hcd98DCD6qeOPt/mPE91DYqIt2HA28b9mjI+pzSxTN3JR1IRP7SsrJZpU50
M/jVQP+k84iIdBIH1uH+vZI/3vRMW17YphXC98SRrwHWgB07kdeLiHQxjrPPsEezxgMli2fsTjqQiHy4
WupWmPschxeBpqTziIh0DtvjzjyMtW195QkVhJ4qWAo8DL4TtWSISP7bhHF3IPNg6cIb3zJMv/dEctSk
qnQmHOlZjYdfgFcCh5LOJCLSwY6Cz4/MH/X6Xtva+uITahkFeL3s3wfFXvD/YXwNtY6KSJ5y2GHmj3rG
ZpcsnrFbxaBI1+C41Uy6bbR5uAXsSqBP0plERDpAI9hreLh95B9nPnki9ykntEII0GtAw0GLwhyDJ1FL
hojkIXMOGjwWPH5o86Cz9qoYFOk6DPN+xdEKd78DmK/T0UUkT60B5qaKss+f6H2e8vShAAAgAElEQVTK
Ca8QAng6Ha1YdMrY4OFfcMqAs0/2PUVEcsRWw57IYg9sGTB47bvzzkSki1ldni5sPNC3jGD/bHAF6moS
kfxwBHgZ98cLssVPXvTSDSfcHn/SxVtFeUU8dN/OIW58Pbj/J8OGAHF7vLeISCKcvRiPxJH/dPiEul2W
TmtlQaQLW1iWTvWlTylEPwCmAD2SziQichKO4Czw2O/ocVpd1QWVP2w5mS6mdinaPJ2Oqhf3+0SUZZwb
XzTnK+iXrYh0TYcwe8DIPrjx9CFvamVQJD9smDqnqL4xOz7Atwy+nHQeEZET4rxN5I+bRb9raGpaftnL
36s/2bdst1U8T6ejjUtOLahvCmM8618041KHC4BT2uszREQ6kuNbDHvag99bH9WtnVSVziSdSUTaz4ap
c4pqmzITCXaDOZMw+iadSUTkOB0AX+HYH+IQPXU4OrSlve5T2r2ts7pkbgGnHOoZZQsvxu2/A1c7DGzv
zxERaWf7gIdTxD9bP2DQLq0MiuSn1eXpwmP7+owE+59gVwEFSWcSEfkYuxx7KiLcW0TRugvK9jW053aW
DtvnV33t3J5xXeOwQPg8ZhNwvoBxRkd9nojISTgEPBhCeKh00U0rdJqoSH7bMHVOUX1DdrKb3wB2TdJ5
REQ+wj6DZ939jxb5sj7FBeuGzpve7tMd4vZ+w/fc9dbvWv7TJ8fupblobRT5JousEbyF1hutvpzEyAsR
kXa0zY1Kgt9rR3uvOWtXqVYGRfLc7RvnZf/bmVftLIhtH8apwCCgKOlcIiJAi+Nvm9sbFvFUNoT7mlus
auugIbsmPPWPLR3xgZ1yEmhFeUV87sG9/VMtLWd47JMit793GM37bRreWVlERD5gvzsPFVg8W22iIt3P
wrJ0cf/olJEhhB8AV9OBD8pFRD6WEzCWAo/F5i80RYW7t516xuGOvj/p9CKsevzswaQYSeAiM0YD44HT
OjuHiHRv5hx046EQwkOjFt28POk8IpKM1j2F/a+EcL3aR0UkCeYcDMbiCKvGWBV7tGx41fQdnfb5nfVB
73Hc1pT/qKD+yKnF8bHshRb4quFjMTsLZzBGYWdnEpFuZ6sbz0RR/MtwuGhDac31HdKCISJdQ/W1c3tG
dQ0T3Ww67pfo9FER6Xh2DHwPsBt4zSL7jQVfVTigtuFk5wq2OUlnfdCHWViWTvXJ9hsQxwx0Z7wb5cBY
dOKXiHQUZ68b96civ334gpnv6AAZEYHW9tF+3m+EG/8D+AJqHxWR9vXBLXKN4K+A/TaE8EpcVLgnHCzc
l9QD6pzZt/fa5bcOLAphrGMlBCsBH+utG71FRNqHs9fh17g/ULropjeSjiMiuaWivCL+1P6dV5v7v6h9
VEQ6wCagGvNVeLQqS3P16Krv7k46VM4UhNB6DHRjfapnc6p5mDl/B34ZZmeAn4ZWDUXk5Gw196eDhTs3
Dzhngw6QEZEPU33t3J5Wf3SCYTe5M0btoyJykmpxDmC2DQsvxvDUseLU9j69Dx7r7NbQj5JTBeF7Ksor
4qH7dg4J7kPcuNScazEbg9o3ROREOHvB7vEC5pa+OOPtpOOISG7bMHVOUW1jGGX4zcC16P5DRE7MTuAF
w5/zOFrTAnvGzp+xJ+lQfy4nC8IPqh4/e7DFNsFglMMw8AuBs5LOJSJdhe3GeDS43Teq6sY3k04jIl1H
Tdmt10C4HrcvYJqfLCLHpRFnLcYqYGUURa9na4uX5vIBdqmkA3yc0sUzd70ybtbTcc/CFwszmU+52Vcd
nwIMBvoDvRKOKCK5axv4b6NsdOemgYM3Jx1GRLoW79NjQVTfcMyhEGes2kdF5CNkzKlzYx+wAuOZbAiL
ekXFhxprU025XAxCF1gh/HPVU249x7M+JHa/0GEK2ARgQNK5RCTX2G4n3BNj946omrk16TQi0jVVl8wt
iPsdGxWy4WaMa9GZBiLypzLACof5hr0UW9hypLnl7cte/l590sGOV5crCN+zYeqcovrG7HiHSx1GGHwO
+BT6RS0izjtE9jhZv7tk0cy1SccRka5v2cTZU934BnAlUJR0HhFJ3D5go2MrDV8C/lJJ1U0bkw51InK+
ZfSjDJ03vWnD1DmLjzRmqwnRgBCFK1uPiPZhQH+cXur3F+l+HHZYZJV4+MXIyXWbWZR0IhHJB7VWu7CP
9zlmREUYY4B+SWcSkU7mNBscCcYujAUe7JlsilWpnj3rS0p2HaMq6YAnpsuuEP656rKfno6lzovgs+5+
CTCB1lXDvPl/FJGPY7vB7/Uovr90wfRNSacRkfyysCyd6kP/sQbfBL8OrRSKdB9OHcbr7iwy86VRiDdt
GDh4cz6MscrLYql6wqwLzZjiZpcA5xucA/RJOpeIdCTbbR4qopTfcfH8m99KOo2I5K+lE2+9IrIwHexy
oEfSeUSkQ+0CtoLX4CwoyBZXXfTSDYeSDtWeumzL6F9TH9Wt7U+/7VFIPZmJW0aBXUPgUuB0jB5on6FI
PnHgHfBKN+4YPv+mTXBz0plEJI/17xktqm+iiSyRm1+K2kdF8owdM/cGNza72TNR8BeaU9Hm0BDqSl69
oTHpdO0tL1cIP2hhWbq4P/0+5875bowGGwtcDF6cdDYRaQfOO25+n8GDXXUzt4h0PY5b9aRbLzH4pgW+
jNEz6Uwi0h5st+NLcJaY+fIUqTeHV03fkXSqjpT3BeEHrSybc3bGM1dg0ZXgw4FBwClJ5xKRE7YL+A34
rSoGRSQJy8pmT3GYAZSh2cgiXZPTDOzH2G7YSx75s3WhdtGkqnQm6WidoVsVhI7bkqm39ylsaj7FQ3Q+
2NXA1cCZQDFqJRXpKhxnl8NjsUe/vHjR9I2GedKhRKT72TB1TlFdQ2Y0Zt/DGa/h9SJdhBMwWoAGnOVu
/jSRLc6Y7TytMDo8dN70pqQjdpZuVRD+uZoJs8/32EcYUam5j3AYjlYMRbqCnWY8FEXhAR0gIyK5oHri
zyYRRf9szrVA76TziMjH2oSzkshr3KjOWmHNmPnfOpB0qCR064LwPa9NndO34Fh2ijlfCs44Mwbg9NMc
Q5GctM+xJzz2n4yaP3Nz0mFERN5TM3n2ZMvazW4+EbWPiuQgO2Z4rcNWM57H/emRVTdVJ50qaXl5ymhb
jZ03vW512R3PN9O8LDI+HfCJmF1jMBQopPXvScWzSJKcQGt//6NRHN01YvzBrcxPOpSIyPv6FsUv1zeF
DFkyGJPRSqFILsjiZDEaHP8j2DzMqkMmvFMf1+1LOlwuUJHzIZZN/um5hGicY2NwLgI+h3Fm0rlEurmd
mD/iHu4rrfrOuqTDiIh8lA+0j16D5iCLJKkFWAe2EbyGiFfrQu0rk6rSx5IOlktUEP4VG6bOKaptykwk
RNcZfjnOQM0xFOl85hz0yJ9IZQv+1/BF396SdB4RkY+zbPKtEzz4D4AJaHi9SGdrBI4ZrAnwZCoOT+vM
gY+mltG/Yui86U2vjJu1uKCnb4xC9H/Axzl+FVACFOBE2mco0oFaTwA74MYjweN71g8c+HbSkUREjkdt
OPx6b/r9OHKagCmaUyjS4bJAADvg7s9HZosgrAxkdlw8/7u7kw6Xy7RC2AYrr/zJGZnmgklufqkFhmOc
C5yD/h5FOspOoJLAXSWLZq5NOoyISFstK5s9JcD1Bleh9lGRjnIEbAP4DsxfC9gfRy2c+XLSoboKFTIn
YHV5urBxX//RZnwV92vAhoCn0IqrSPtx6ty8Msb+3xFVM7cmHUdE5EQtmzRrojv/itt4jMKk84jkCcdp
aZ0l6K8Z/J84FDynrSVtpwLmBAyrTDdvmDpn6ZGjvifEPGfOKG8dRjsepwjDULEtcqLcnENuPOrB7z0c
1e1IOpCIyMk4dozXC3vw7xZoALsCvDjpTCJdlOM4RgB2YDxnxuuBaHVLxNaxVd/ek3TArkhFSzt4beqc
vgUNmcsxJuOMBBuEMQQdPiPSds47GL8NRL8cVXXjm0nHERFpL9WTZ11JsBsMJqP2UZG2cqAWbAv4DtwW
R+YvjKiauSLpYF2dCsJ24LhVlldGA/atKehj/YdH+BeD81VzztdqoUgbOA1E9ngqG/8/avkQkXzUevoo
afAydH8gcrwcaHB4McIfi0m9tH7AoF3lw9Y46R+6YZ50wK5MLaPtwDCnkiyQrSivqB66Z9fByMKrbox0
GGXOJIy+SecUyXGHwB4NFh5sOdpDbaIikpfiVEtNS0vqZ1GwRje/Et2Lifw1mdYZguFFI1rhxpvBs5tG
Vk3fD0AlQDrJfHlBT6Y6gONG+kdWUzO42I40jrcQvuBm44ABYIPAi9Dfvch/MNgDPJMluq20avpqPekT
kXxWUV4Rf3L/9qsij76FM1EjKUQ+oHXkVB3u72C2DfcX4pT//q1Th2wqH7bGLZ0OSUfMNypKOpDjVlX2
o6I+qeIiy/b4NMEnY/63tM4xFBEApxnjkShE/3bx5EOb9IteRLqDivKK+FN7t08wi34EjE86j0gOaQSe
xqjw2Kqbj4Z9TUV1LWVVP8zqgXHHUEHYSTydjqoX9/uEBc43pxRsOPh44PSks4kk6DDmlRbs/nCkZ3Vp
zfUtSQcSEeksq8vu6H3Mm64A+xdah9dHSWcSSUTrquAax17CfVUEK8xYe3HVjFoVgR1PBWEn8nQ6qnlm
cNxceDRVWBSV4H6dGROAgbQWhj0SjijSeZy9GM8S2+y67OE1k6rSmaQjiYh0ttXl6cKG/X2mRB7NBC5F
9wLSXbQWgbXAAbCNbuGZyMLv+xQV7t7ReDCrFcHOo4IwIQvL0sU949N7xd5yLm6XmfvfoJYR6T5aMPt1
gP+95fQzN06rnJZNOpCISFJWl6cLG/f2udSI0rQ+KBbpDurd+a1FPOUWr8wUse/t3oOO6p6g86kgTJin
09GqqlPPzBAuNvPR7vZ53MdgnJl0NpEOcsjx37jZ/Ue8dolWBkVEYOWVP+mVbSm42t3/Bbgc3aNJPnKC
G6vAa4A3IrfXGzLNb1728vfqk47WnemXTQ5w3DZOvb3wABQVNmY+A9HX3P1K4GzM+oIXJ51RpJ3sA37v
wWdxtNc67RkUEXnfwrJ0cR/rd7k5t4CN0fVf8oITgCNu1JmzhognzLLPxSnff7D5aJMeDCdPBWGO2TB1
TtGhxmOnWJQ6JwrRaAhfAbs86Vwi7SDj+IMW7Gd1Ue0GXQBERP7Shqlziuobs+Pd+Ve1j0o+MOegw5NE
/pxFqTdTTaldF710w6Gkc8n7VBDmsJVX/uSMTFM8xs0uNXxY68mkDEk6l8gJOITZkwG/t3Ri7asaLSEi
8tGqr53b0+obrwWuBy9D92vS9WTA3jBnrcMKj1hE7x5vlD5zfUPSweQv6RdMjltYli4uKurbs6DRz43j
6Dp3uwb8E0BPoBD9G0quc/aaMY84/veiUw9uHFaZbk46kohIrmstCo9OAPu+2kelS2g9NfQocMTclrt5
ZSqk/tjYyw+k9hY1aptI7lIx0UVUlFfEnzmwY1A2y6c8ikZEgavc/AqgIOlsIh/Njjk8EMXR7SPGH1yn
lUERkeO3YeqcovpjfpmH8AOMyUnnEfkYOx17BguLY7c1caZom1pDuwYVhF3QK1fNOrX4mI3B7HJ3vxDj
M8Anks4l8mf24zyNhbtLqm5+LekwIiJd0cKydHFf+n8Z/Bu0zilMJZ1J5H12DPc1bmw2Y2nIhhf69ypY
M3Te9Kakk8nxU0HYRW2YOqeo/gh9SbWcGdymRm7XOXwOowi1kkqyHGwP7k+HyGZZXY/NahMRETlxK6/8
Sa+WTHyphej74GPR8HpJVhZoBOqBJZg/msoWLA1R5tCGAWfVa45g16OiIQ+sLJtzdtb8s8HDCGt9ejgF
6J10Lum2jrhxv2W5s2TRzLVJhxERyQcLy9LFvb3/+Mj8u7Re50WSshF4zpwlmK8NqeYNpS9+vzbpUHLi
VBDmkeopP+7nLcWjI/MvACOAc1ErqXSufTjPmPmdI6tuqk46jIhIPqkumVtA78avROY3uHMJRmHSmaTb
qAfbiPt2NxanzOcd8rr1GiGVH1QQ5pn/mGMY4sEWRZcb9jXwYUAxrfsO9G8uHcR2m/lv3X1WHXVbdZEQ
EWl/q8vu6H0sah5tge87XIbaR6XjZIFm4KAbiyx4ZUjZypaUHx43ru6wDorLHyoO8lj1+NmDLWUXeWsr
aSnYBGBA0rkkL9UC9xO4S22iIiIdq7pkboH3biyLYYa3dgWJtD9nleFVbrY8clvd2BzevOTVmxqTjiXt
TwVhN7Dyyp/0ymYKSgh8yT2MAxuEMQSNrJB2Ybud8PvI/PaRC29emXQaEZHuwNPpqKaq35cMm66DZqQd
HQa24WzD7IUQ+7Ol82dsMcyTDiYdRwVhN1FdMrcgOrV5QMhmBllgHM5XMUpoHXCvVlI5EQ7sBirAf75p
wNlbdLKYiEjnWXnlT3o1N6dGxW63OF6G0TPpTNIFOQGzZtz3mvF8MJ6Ms9FbcSjYrzmC3YOKgG6ouuyn
p5ulSnAvxbkIYxwwJOlc0uXsd+chLHt3adV31iUdRkSkO3LcqifeNiUyvwHnSxhR0pmki3GWYbzqsMJD
qCmdXL9S+wO7FxWE3djCsnRxf+9/oUd+nbtNAh8ENgi8OOlsktsM9rjzlKXi20bOn77GcVM7iYhIcqon
zf6iuc8EGw30STqP5LzDYLvBN4E9kw3ZZ0cvunl70qEkGSoIu7mK8or4Mwd2DAqBwW42EucrwFhaLyYx
+h6RP+U4u8zsUQs29+JF0zeqEBQRSV71tXN7Wt3REiyaCT4FFYXylxynBeMdx/4QGfM86xsKQtFutYZ2
b7rZl//w0qX/u09xUcE4PBob4Z93ZyRwXtK5JJfYboOHs8bdoxbOWJ90GhER+VPLJt12OYTr3bkGHTQj
72sBVmG+zJxlHkevlMyfsSrpUJIbVBDKX6gumVtAr6Ofs8i+as4X3BgMnI4uLN2bsxd40i07W3sGRURy
17JJt13uHm4BLkErhd3dIeAgsM6M32S85dnRVd/dnXQoyS0qCOUjrZg866yMR2fjfiFwjcGlwClAhL53
ug8nuPEO8DBkHyipunm92kRFRHLXhqlzio40eUkIYTpwNdAv6UzSqd5rDd3uxrM4Cwi+KY5s+4iqmYeT
Die5Rzf18rFWl6cLm/afMh7CRA8Mxzgf+DT6/ukWHHaY+aM4d5VU3bQx6TwiInJ8lk2aNdHdvgF8Eeid
dB7pFEdx1ju8GUE1qXj+yPnT1yQdSnKbbujlY713guTq8nRhy/6+Q4NH1zn+ZYMhDn1RK2m+cpx9GJVR
iG4bsejGDUkHEhGRtmktCqPvg1+K2kfzkxOAI27URW6r3Hi0JeaFMfNv3KuOHjkeKgilzVZMnnVWIDov
ZH2YwRSM8cCpqJU0fzgBY6cZv85iD+oAGRGRrml1ebqwcV//0ZHzDTf/AtA/6UzSbt5rDd0C/oLBy27x
hpZi2zB23vS6pMNJ16Gbdzlhnk5HNQv7TMSiqwwuprWN9BygIOFocvK2G1YRoujO0gXTNyUdRkRETs6y
ybdO8MA3wK9GRWE+OAxsw1lvEUuy2O/18FZOlApCOWGOW2V5ZTRg35qCvqHfJ4m5FmeaOZ90owdqJe2K
HNjvxmPmPkd7BkVE8sfyybddEkL4PjAZ6JV0HmmzLNCI0+DGqxH+WMjaH3sMqj1wwTAylk6HpANK16SC
UNrNsituP5OWzAXB7IIIv8zdxoMPoLWVFPT9ltta20S3O/4rC/ZIyaKZa5OOJCIi7WdhWTrVh/5jzfzr
tM4p7I+uzbnO3/1vC8Zbbiw0Z4mbbezhBauHVX3zSML5JA/ol4B0iJqJs8Zj9iVglOPnmNtAjJ5J55K/
ahvmFWbhjpELvrMt6TAiItIxlk++7ZKsh29FgavcODXpPPLRzDkYjF3mrMdYnAqpp4Yv+vaWpHNJfkkl
HUDyj+O2seftr9e2NKzyTI8hRrga42+Bz+EUYhSghxG5o3Vl8JA7TxjcNXKhikERkXw2YsGNryydNNsc
euFMoXWbh67LuSML1gJ+1M2r8OjxlEWvpogPrx44oPG909+TDin5QwWhtDvDnHk0AU1AbfX42Qc8xVoL
doGbjzYYBwxCp5LmAnfzbYY9gmV/XVL1He0ZFBHpBqyu5+vW9+gs3A7hXOvGKeianCTHcSADvAm8ZhE1
BFvb1BxWlL46ozHhfJLH9IMvnWr55NsuCe5/g/tYhyEGp6CN7UlxnO1E/ng267ePXnTz9qQDiYhI56op
+9lYiG809yvVPpoQJxgcdmMfsBZsvqd4uvTFGW8nHU26hzjpANJ9OG7rzv3Dvl6F8dJsiy00s93WOr9w
8LtfYughRWdx4ADGw1GI7y5dNFP7EUREuqG5W5/bufvc13a6+WCIPkXrvaGuxZ2hdctGFuMgEfMcbg8h
3FeULa45zIEDD26t0qmh0in0Ay+JcNyWXH7bGQWZMNqxz2OMNBhF6xxDfV92LAc2AY/H5o8OXzhzjfYi
iIh0X6vL04VNB/qPdecfLPiXtVLY4RxoNmclETXBWWaEN4sH1C8bVpluTjqcdD+68ZbEeTod1SzqdzGB
aYZNBD4B3ge1knYIx7eAVUQFqTkjX/j2O0nnERGR3LCsbFZpMLtJp492mAxwxPFDYKuA3xUUZp4e/vwt
e5MOJt1b9PFfItKxLJ0OzY2+toD45x75N83938Bex1GrRPvbD1YB2QdGvPCtXUmHERGR3FFL3QqHO4Kx
AGhJOk8eOoTzG3NuJopvhuyT6/udeyDpUCJaIZSc4bgBLB9/++mWylwS3EbgXOjmIwz7BPp+PVkbcauI
o/DIW6efvW5a5bRs0oFERCS3rC5PFx470O8ynH+wwBe1UnjSmnBWAyswlrlZdY/TDy+/oPKHLfDuyewi
CdMNtuQcx62q7EfxGQOIWvb3HRoC09zsKnOGullP3AsxrW630TaHx8hyW8nltXssndbqq4iIfKiK8or4
vP27LrbgN7n5F4D+SWfqYrJAM3AYqAZ+0xLbvNThHgdLrt2V1TVYco0KQslpC8vSxf2i3gMtmzoji5ea
cS0wBShIOltXYbDH4R4CD4+cXLteFyIREfk41SVzC7xvw+jI7VvgX0PX3eNmsCfgv4uwPxDHa+K4af9F
lxzdr+uv5CoVhJLzHDfSP7I3XjyjX3NB0yW4jzVsOHAB8Cn0ffyR3HnLjMpg9qstp5+5UW2iIiJyvFaX
pwsb9vW7JDL+EWcqcHrSmXKXHQNfD7yJew1RvMjrileVXLsrS/qHrtZQyWW6kZYuZXV5upB9AwobaTwb
j68z48vAMJyemOYYvstp/XvYBPw6S8svR5U17NWTSRERaavqkrkFUd8jF7jbd8CuQe2j73vv8DvjAPgS
c6sIgRfp37N2c/EpTXoIK12Fbp6lS1pYlk71p9/ZGeOsyLkY50qMK4AeSWfLEdvc7D6Hx0sX3viWnkyK
iMiJqi6ZW0CfxjFm/nXcysGLk86UI7Y7/nzkNj/rYV3sBTtGLp6+L+lQIm2lglC6rPdaSV9+oUev4qKC
cVGIJjk+wvHPmNu53fbgGfc1mFWAP1xH3dZJVelM0pFERKRrW12eLjy2t+8Yx/7J4GqMM5LOlJCjDlsN
X4dHS4JnX+zfq2DNp8ccbFFrqHRVKgglL2yYOqeosT7VsznVMBCiLxrR34APp3XF8L0Wyu5gvWH3N8c8
MGb84X1qExURkfbSuqfwlM8Y2RmGfRU4JelMnWw/2GIjVIRU9EqmIDr8du9BR9UaKl1dd7lJlm5k2eSf
nuvE5xG4yKHMYCLdY8/DBsfvi0P8xIhFN25IOoyIiOSfivKK+JP7d46NAv+IMQ3onXSmTrARZxHGYgjr
MnHRhjHzv6WB8pI3VBBK3nHcKssro8/Wbitubk6NMrja8FKw84CzyL+js7MOb4A/Tip6pOSywzu0Migi
Ih1ldXm68Ni+PiMd+ydzm4pxZtKZ2p1Th7ETWO/4Sxbs2bqodsu+ARe0lFeWB7WGSj5RQSh5rbpkbkHU
s6l/lMqcEYJNduNrwGjeP3ymy7eTOqww7F7LRo9rM7uIiHSG6pK5Bdar4dNEfBP4W/JoJIXBnmAsiLAn
spEvL2oqOnThS984rCJQ8lWXvhEWaYtlV9x+Zsi2fJ7AhYZdZjDOYWDSuU7SSje7j5gnS1+c8XbSYURE
pPtw3Gom3TbaAv8V87+j6+8pfMNgCdhrFtnawpBaNazqm0eSDiXS0VQQSrfxwVbSTHN0oRN9xZxxwCcw
O6NLHaPtNGOsBB7M0vLEqKpb9ujJpYiIdLbqkrkF9Gu4MHL+KTjXGpyddKa2MOegG/uAtWDzUyH+fc9e
/s7y3oMyOixGugsVhNItVZRXxJ/avfOMOGZg1hn37oD7S+kam+Md91fduKu5iGcuee6mg0kHEhGR7qui
vCL+zMHt52Wz0T/j/P27ewq7wpaMbTjPuTEvFYc1DSnbr2uqdEe5/oMq0uGWXP7z0woyLaMDXGwwFmM4
cG7SuT6Cm7PUI+5NFWSeHP78LXuTDiQiIgJQPXn2SHP7zwT/2xw+aKYFWOn4SvNoSQQrDtvh5ZrZK92Z
CkIRYGFZOnUGA4qbaf50gK8YTHQ4j9b9ELmyathosMzhnqYif3rcczMPqU1URERyxcKydOoU6/vZrNs/
OP41wz5BbtxrOnAQbB/4SsfnRQUFL9S2HDi4b8AFLWoNle4uF35IRXJK9fjZg93CoDiKRwb8aoMykj89
LWuwwM3v8bj5udIXv1+bcB4REZEPtXLC7Z9sibP/xdz/K60PV5PkwGp3njezhXGcfStjLXt0HRV5nwpC
kY/wyrhZPYqL40uCZ0cZNgbsc+BDgbiTo2SAl4G7PdX0O13EREQk19VMmH0+Ef+X439v2Cc7PUDrHMHV
mL9J4NVg8dJRVTe+2ek5RLqAzr6xFeky7t3xXOafT+wQAuQAAAQBSURBVLtuR0GfYzUGSzxQj0WGUwgY
RlEnxDiK84pFdoenmv6gYlBERLqCKaP/70OnNtRtMyy4c6YZ/YGogz82AxwCe5vInne4L5D5Vf+ehUvX
njJ4b+WaSm2zEPkQWiEUOU6vXX7rwJT7WQS/0Cya6B7KOvipZ4vDs+Z+b6oou2D487cc7cDPEhERaXev
T/jZkFQclbvzD8CFHfhRLeYsJ2K+u70SjA3Wu8f20meub+jAzxTJCyoIRU5A9aRbx+DhMoNxYJ/BOQ+j
Zzt+RBPOy+A/79sz9ezQedOb2vG9RUREOk31lFvPIRP+3oj+G/jn2vnt9wObHH8zsmhRnI0XD1/07S3t
/BkieU0toyIn4OunXbe3oM+x5VFL0StZy75jWPxuQWhAASfXFnPE3KpCFG7L9Cj44/B50/V0U0REuqy5
m+fV7Tzn1W2RWQNwFnAqJ3MP6jQb1LqxGeMZIp8bPPNoPfU1YyY1HvxRVZVaQ0XaQCuEIiepesqP+xGK
zrNgF0AYg9sEjAuAVJvfzGkAfhewe47Y4YWaiyQiIvnitctvHVgQ/Mu4/XfwMZzYfWg9WDX4ItxrIo/X
bRg4eLNGR4icOBWEIu1o6aRbP2vBJxuUYZwPDAH6H+fLjwJVwe220kmH51s6HTouqYiISOd75apZpxY1
2d/hfB1jGMe/UrjLnO1uLDezF1qiVNWY+d860JFZRboLtYyKtKMrRv3j4TMbmtYEy77ixnqMyPG+5hZj
RHz0z1y9GfMC3FZYlFky6N7/2dyZuUVERDrDvZuea/ynT1y+PY7ig8DZwGl8dEdNE3DEYZ25VYL/ImuZ
39RT/8ZlC79b32mhRfKcVghFOsiGqXOKjjRmz3ezi9x9BNhY3C/6i8NnnDoinjKze0YumLEoobgiIiKd
pnrKj/tF2eIvt54+6uP586LQ2YtRY+5LiaIac181omrm1iSyiuQ7FYQinaB6/OzBFnMVcDXuF2I2GOgD
HAFb6DCrtGrGSwnHFBER6TQrr/xJr2xLwdfc/dvA+UAK7BD4DmCJOb8/1uxVl7x6U2PCUUXyWkcPCBUR
oOTy2j2NLc1PhJgfENm/glWB7Xd40aPwyx4UrEg6o4iISGca/vwtR0nFL2LcDazC2YnxaIBb4sj/l4pB
kc7R9lMQRaTN3j0gpr66ZO4x63ukD8Sb3cNAzDalnJ172Xcs6YwiIiKdraGhob5HYdE2CJswO+qEjZaK
Ng+/rHaXDlcTERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER
ERERERERERERERERERERERERERERERERERERERERERERERERERERkbz1/wNrGKFswMgwBwAAAABJRU5E
rkJggg==
</value>
</data>
</root>

View File

@ -18,6 +18,7 @@ namespace FireWallet
string dir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\FireWallet\\"; string dir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\FireWallet\\";
Dictionary<string, string> theme; Dictionary<string, string> theme;
string altLink; string altLink;
bool Linkcopy;
public NotifyForm(string Message) public NotifyForm(string Message)
{ {
InitializeComponent(); InitializeComponent();
@ -33,6 +34,23 @@ namespace FireWallet
buttonALT.Visible = true; buttonALT.Visible = true;
this.altLink = altLink; this.altLink = altLink;
buttonOK.Focus(); buttonOK.Focus();
Linkcopy = false;
}
public NotifyForm(string Message, string altText, string altLink, bool Linkcopy)
{
InitializeComponent();
labelmessage.Text = Message;
buttonALT.Text = altText;
buttonALT.Visible = true;
this.altLink = altLink;
buttonOK.Focus();
this.Linkcopy = Linkcopy;
if (Linkcopy)
{
// Small font to fix more data
labelmessage.Font = new Font(labelmessage.Font.FontFamily, 10);
}
} }
#region Theming #region Theming
@ -220,6 +238,12 @@ namespace FireWallet
private void buttonALT_Click(object sender, EventArgs e) private void buttonALT_Click(object sender, EventArgs e)
{ {
if (Linkcopy)
{
// Copy link to clipboard
Clipboard.SetText(altLink);
return;
}
// Open link // Open link
ProcessStartInfo psi = new ProcessStartInfo ProcessStartInfo psi = new ProcessStartInfo
{ {