Reimplement Contact Actions, Profile Editing, and Profile Image Changing.

This commit is contained in:
Alan Moon 2025-12-09 16:23:42 -08:00
parent 066686205c
commit 85e2c3eb70
17 changed files with 910 additions and 345 deletions

View File

@ -11,6 +11,6 @@
public virtual User? Owner { get; }
public virtual User? User { get; }
public enum ContactStatus { AwaitingApprovalFromOther = 0, AwaitingApprovalFromSelf = 1, Accepted = 2 }
public enum ContactStatus { AwaitingApprovalFromOther = 0, AwaitingApprovalFromSelf = 1, Accepted = 2, NoRelation = 3 }
}
}

View File

@ -33,5 +33,12 @@ namespace qtcnet_client.Controls
}
private void pbCurrentProfilePic_Click(object sender, EventArgs e) => OnProfileImageClicked?.Invoke(this, EventArgs.Empty);
public void RefreshInfo()
{
lblUsername.Text = $"Welcome, {Username}!";
lblCurrencyAmount.Text = CurrencyCount.ToString();
pbCurrentProfilePic.Image = ProfileImage;
}
}
}

View File

@ -154,6 +154,7 @@
lvUserList.TabIndex = 0;
lvUserList.UseCompatibleStateImageBehavior = false;
lvUserList.View = View.SmallIcon;
lvUserList.MouseDoubleClick += lvUserList_MouseDoubleClick;
//
// ilStatusIcons
//

View File

@ -11,7 +11,11 @@ namespace qtcnet_client.Controls
{
public partial class MainTabControl : UserControl
{
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public ListViewItem? SelectedUser { get; set; }
public event EventHandler? OnContactControlDoubleClicked;
public event EventHandler? OnUserItemDoubleClicked;
public event EventHandler? OnRoomControlDoubleClicked;
public MainTabControl()
@ -20,6 +24,10 @@ namespace qtcnet_client.Controls
}
public void AddContacts(List<ContactControl> contactControls)
{
if(tlpContactsList.InvokeRequired)
{
tlpContactsList.Invoke(() =>
{
tlpContactsList.SuspendLayout();
@ -33,6 +41,22 @@ namespace qtcnet_client.Controls
tlpContactsList.Controls.AddRange([.. contactControls.DistinctBy(ctrl => ctrl.UserId)]);
tlpContactsList.ResumeLayout(true);
});
} else
{
tlpContactsList.SuspendLayout();
foreach (ContactControl contactControl in contactControls)
{
contactControl.Width = tlpContactsList.ClientSize.Width;
contactControl.OnContactDoubleClicked += ContactControl_OnContactDoubleClicked;
}
tlpContactsList.Controls.Clear();
tlpContactsList.Controls.AddRange([.. contactControls.DistinctBy(ctrl => ctrl.UserId)]);
tlpContactsList.ResumeLayout(true);
}
}
private void ContactControl_OnContactDoubleClicked(object? sender, EventArgs e) => OnContactControlDoubleClicked?.Invoke(sender, e);
@ -56,6 +80,19 @@ namespace qtcnet_client.Controls
private void RoomControl_OnRoomDoubleClicked(object? sender, EventArgs e) => OnRoomControlDoubleClicked?.Invoke(sender, e);
public void AddUsers(List<ListViewItem> users)
{
if(lvUserList.InvokeRequired)
{
lvUserList.Invoke(() =>
{
lvUserList.SuspendLayout();
lvUserList.Items.Clear();
lvUserList.Items.AddRange([.. users.DistinctBy(lvi => lvi.Tag)]); // Tag = UserId here
lvUserList.ResumeLayout(true);
});
} else
{
lvUserList.SuspendLayout();
@ -65,4 +102,18 @@ namespace qtcnet_client.Controls
lvUserList.ResumeLayout(true);
}
}
private void lvUserList_MouseDoubleClick(object sender, MouseEventArgs e)
{
if(lvUserList.SelectedItems.Count > 0)
{
ListViewItem? lvi = lvUserList.SelectedItems[0];
if(lvi != null)
{
SelectedUser = lvi;
OnUserItemDoubleClicked?.Invoke(this, EventArgs.Empty);
}
}
}
}
}

View File

@ -125,89 +125,89 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA+hMAAAJNU0Z0AUkBTAIBAQQB
AAHIAQAByAEAARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAASADAAEBAQABIAYAASD/
AAHQAQAB0AEAARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAASADAAEBAQABIAYAASD/
AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AC4AAwYBBwM0AVQDUQGiA14B0gNaAekDYAHoA10B
0QNQAZ8DMQFNAwUBBhgAAwYBBwM0AVQDUQGiA14B0gNaAekDYAHoA10B0QNQAZ8DMQFNAwUBBhgAAwYB
BwM0AVQDUQGiA14B0gNaAekDYAHoA10B0QNQAZ8DMQFNAwUBBhgAAwYBBwM0AVQDUQGiA14B0gNaAekD
YAHoA10B0QNQAZ8DMQFNAwUBBhQAAyABLQNUAasDWwHkA1YB9QMkAfsDPQH+Az0B/gMkAfsDUwH0A2IB
4QNRAaEDHgEqEAADIAEtA1QBqwNbAeQBTAFaAUwB9QEhAVkBIQH7ARkBWQEZAf4BGQFZARkB/gEhAVkB
IQH7A1MB9ANiAeEDUQGhAx4BKhAAAyABLQNUAasDWwHkAUwCWgH1ASECWQH7ARkCWQH+ARkCWQH+ASEC
WQH7A1MB9ANiAeEDUQGhAx4BKhAAAyABLQNUAasDWwHkAkwBWgH1AiEBWQH7AhkBWQH+AhkBWQH+AiEB
WQH7A1MB9ANiAeEDUQGhAx4BKgwAAxsBJQNYAb0DWgHyA0EB/gMwAf8DOQH/AzwB/wM2Af8DKgH/AyQB
/wNAAf0DXgHwA1YBsgMaASMIAAMbASUDWAG9A1oB8gEZAWEBGQH+AQABVwEAAf8BAAFnAQAB/wEAAWwB
AAH/AQABYQEAAf8BAAFMAQAB/wEAAUABAAH/ATIBQAEyAf0BWwFeAVsB8ANWAbIBGQEaARkBIwgAAxsB
JQNYAb0DWgHyARkCYQH+AQACVwH/AQACZwH/AQACbAH/AQACYQH/AQACTAH/AQACQAH/ATICQAH9AVsC
XgHwA1YBsgEZAhoBIwgAAxsBJQNYAb0DWgHyAhkBYQH+AgABVwH/AgABZwH/AgABbAH/AgABYQH/AgAB
TAH/AgABQAH/AjIBQAH9AlsBXgHwA1YBsgIZARoBIwQAAwMBBANSAaUDYAHzA0kB/wNVAf8DZQH/A3EB
/wN1Af8DcQH/A2QB/wNMAf8DMQH/Az0B/gNiAe4DUAGaAwMBBAMDAQQBUgFTAVIBpQFYAW8BWAHzAQAB
YAHoA10B0QNQAZ8DMQFNAwUBBhQAAyABLQNUAasDWwHkA1cB9QMkAfsDPgH+Az4B/gMkAfsDUwH0A2IB
4QNRAaEDHgEqEAADIAEtA1QBqwNbAeQBTQFaAU0B9QEhAVoBIQH7ARoBWgEaAf4BGgFaARoB/gEhAVoB
IQH7A1MB9ANiAeEDUQGhAx4BKhAAAyABLQNUAasDWwHkAU0CWgH1ASECWgH7ARoCWgH+ARoCWgH+ASEC
WgH7A1MB9ANiAeEDUQGhAx4BKhAAAyABLQNUAasDWwHkAk0BWgH1AiEBWgH7AhoBWgH+AhoBWgH+AiEB
WgH7A1MB9ANiAeEDUQGhAx4BKgwAAxsBJQNYAb0DWgHyA0IB/gMwAf8DOQH/AzwB/wM2Af8DKgH/AyQB
/wNAAf0DXgHwA1YBsgMaASMIAAMbASUDWAG9A1oB8gEaAWIBGgH+AQABVwEAAf8BAAFnAQAB/wEAAWwB
AAH/AQABYQEAAf8BAAFMAQAB/wEAAUABAAH/ATQBQAE0Af0BXAFeAVwB8ANWAbIBGQEaARkBIwgAAxsB
JQNYAb0DWgHyARoCYgH+AQACVwH/AQACZwH/AQACbAH/AQACYQH/AQACTAH/AQACQAH/ATQCQAH9AVwC
XgHwA1YBsgEZAhoBIwgAAxsBJQNYAb0DWgHyAhoBYgH+AgABVwH/AgABZwH/AgABbAH/AgABYQH/AgAB
TAH/AgABQAH/AjQBQAH9AlwBXgHwA1YBsgIZARoBIwQAAwMBBANSAaUDYAHzA0kB/wNVAf8DZQH/A3EB
/wN1Af8DcQH/A2QB/wNMAf8DMQH/Az4B/gNiAe4DUAGaAwMBBAMDAQQBUgFTAVIBpQFaAW8BWgHzAQAB
ggEAAf8BAAGZAQAB/wEAAbYBAAH/AQABzAEAAf8BAAHTAQAB/wEAAcsBAAH/AQABswEAAf8BAAGIAQAB
/wEAAVcBAAH/ARkBWQEZAf4BYAFiAWAB7gNQAZoDAwEEAwMBBAFSAlMBpQFYAm8B8wEAAoIB/wEAApkB
/wEAArYB/wEAAswB/wEAAtMB/wEAAssB/wEAArMB/wEAAogB/wEAAlcB/wEZAlkB/gFgAmIB7gNQAZoD
AwEEAwMBBAJSAVMBpQJYAW8B8wIAAYIB/wIAAZkB/wIAAbYB/wIAAcwB/wIAAdMB/wIAAcsB/wIAAbMB
/wIAAYgB/wIAAVcB/wIZAVkB/gJgAWIB7gNQAZoDAwEEAy0BRANgAegDfAH+A24B/wN7Af8DhQH/A4oB
/wOMAf8DigH/A4UB/wN2Af8DVwH/AzIB/wNAAf0DXgHdAyoBPwMtAUQBYAFpAWAB6AEZAYIBGQH+AQAB
/wEAAVcBAAH/ARoBWgEaAf4BYQFiAWEB7gNQAZoDAwEEAwMBBAFSAlMBpQFaAm8B8wEAAoIB/wEAApkB
/wEAArYB/wEAAswB/wEAAtMB/wEAAssB/wEAArMB/wEAAogB/wEAAlcB/wEaAloB/gFhAmIB7gNQAZoD
AwEEAwMBBAJSAVMBpQJaAW8B8wIAAYIB/wIAAZkB/wIAAbYB/wIAAcwB/wIAAdMB/wIAAcsB/wIAAbMB
/wIAAYgB/wIAAVcB/wIaAVoB/gJhAWIB7gNQAZoDAwEEAy0BRANgAegDfQH+A24B/wN7Af8DhQH/A4oB
/wOMAf8DigH/A4UB/wN2Af8DVwH/AzIB/wNAAf0DXgHdAyoBPwMtAUQBYAFpAWAB6AEaAYABGgH+AQAB
xgEAAf8BAAHcAQAB/wEAAe4BAAH/AQAB+AEAAf8BAAH7AQAB/wEAAfkBAAH/AQAB7wEAAf8BAAHUAQAB
/wEAAZwBAAH/AQABWgEAAf8BMgFAATIB/QNeAd0DKgE/Ay0BRAFgAmkB6AEZAoIB/gEAAsYB/wEAAtwB
/wEAAu4B/wEAAvgB/wEAAvsB/wEAAvkB/wEAAu8B/wEAAtQB/wEAApwB/wEAAloB/wEyAkAB/QNeAd0D
KgE/Ay0BRAJgAWkB6AIZAYIB/gIAAcYB/wIAAdwB/wIAAe4B/wIAAfgB/wIAAfsB/wIAAfkB/wIAAe8B
/wIAAdQB/wIAAZwB/wIAAVoB/wIyAUAB/QNeAd0DKgE/A04BlQN3AfgDfwH/A4UB/wOKAf8DjQH/A44B
/wOOAf8DjgH/A40B/wOJAf8DdwH/A00B/wMlAf8DWgHyA0oBiwNOAZUBQwF+AUMB+AEAAeUBAAH/AQAB
/wEAAZwBAAH/AQABWgEAAf8BNAFAATQB/QNeAd0DKgE/Ay0BRAFgAmkB6AEaAoAB/gEAAsYB/wEAAtwB
/wEAAu4B/wEAAvgB/wEAAvsB/wEAAvkB/wEAAu8B/wEAAtQB/wEAApwB/wEAAloB/wE0AkAB/QNeAd0D
KgE/Ay0BRAJgAWkB6AIaAYAB/gIAAcYB/wIAAdwB/wIAAe4B/wIAAfgB/wIAAfsB/wIAAfkB/wIAAe8B
/wIAAdQB/wIAAZwB/wIAAVoB/wI0AUAB/QNeAd0DKgE/A04BlQN3AfgDfwH/A4UB/wOKAf8DjQH/A44B
/wOOAf8DjgH/A40B/wOJAf8DdwH/A00B/wMlAf8DWgHyA0oBiwNOAZUBRAF9AUQB+AEAAeUBAAH/AQAB
7wEAAf8BAAH4AQAB/wEAAf0BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/gEAAf8BAAH2AQAB
/wEAAdUBAAH/AQABiwEAAf8BAAFBAQAB/wNaAfIDSgGLA04BlQFDAn4B+AEAAuUB/wEAAu8B/wEAAvgB
/wEAAdUBAAH/AQABiwEAAf8BAAFBAQAB/wNaAfIDSgGLA04BlQFEAn0B+AEAAuUB/wEAAu8B/wEAAvgB
/wEAAv0B/wEAA/8BAAP/AQAD/wEAAv4B/wEAAvYB/wEAAtUB/wEAAosB/wEAAkEB/wNaAfIDSgGLA04B
lQJDAX4B+AIAAeUB/wIAAe8B/wIAAfgB/wIAAf0B/wIAAv8CAAL/AgAC/wIAAf4B/wIAAfYB/wIAAdUB
lQJEAX0B+AIAAeUB/wIAAe8B/wIAAfgB/wIAAf0B/wIAAv8CAAL/AgAC/wIAAf4B/wIAAfYB/wIAAdUB
/wIAAYsB/wIAAUEB/wNaAfIDSgGLA18B0wN+AfwDkwH/A44B/wONAf8DjgH/A44B/wOOAf8DjgH/A44B
/wONAf8DhQH/A2cB/wM0Af8DQQH5A1oBxAFbAV8BWwHTASsBrgErAfwBDgH7AQ4B/wEDAf0BAwH/AQAB
/wONAf8DhQH/A2cB/wM0Af8DQQH5A1oBxAFbAV8BWwHTASsBrAErAfwBDgH7AQ4B/wEDAf0BAwH/AQAB
/gEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/QEAAf8BAAHvAQAB
/wEAAbkBAAH/AQABXQEAAf8DQQH5A1oBxAFbAl8B0wErAq4B/AEOAvsB/wEDAv0B/wEAAv4B/wEAA/8B
AAP/AQAD/wEAA/8BAAP/AQAC/QH/AQAC7wH/AQACuQH/AQACXQH/A0EB+QNaAcQCWwFfAdMCKwGuAfwC
/wEAAbkBAAH/AQABXQEAAf8DQQH5A1oBxAFbAl8B0wErAqwB/AEOAvsB/wEDAv0B/wEAAv4B/wEAA/8B
AAP/AQAD/wEAA/8BAAP/AQAC/QH/AQAC7wH/AQACuQH/AQACXQH/A0EB+QNaAcQCWwFfAdMCKwGsAfwC
DgH7Af8CAwH9Af8CAAH+Af8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAf0B/wIAAe8B/wIAAbkB/wIAAV0B
/wNBAfkDWgHEA24B9QOAAf4DnwH/A5MB/wOPAf8DjgH/A44B/wOOAf8DjgH/A44B/wOOAf8DiwH/A3cB
/wNIAf8DQAH9A2IB4QFVAXMBVQH1AT0BzQE9Af4BJwH/AScB/wELAf8BCwH/AQEB/wEBAf8BAAH/AQAB
/wNIAf8DQAH9A2IB4QFWAXEBVgH1AT4BywE+Af4BJwH/AScB/wELAf8BCwH/AQEB/wEBAf8BAAH/AQAB
/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH5AQAB/wEAAdYBAAH/AQAB
gQEAAf8BMgFAATIB/QNiAeEBVQJzAfUBPQLNAf4BJwP/AQsD/wEBA/8BAAP/AQAD/wEAA/8BAAP/AQAD
/wEAA/8BAAL5Af8BAALWAf8BAAKBAf8BMgJAAf0DYgHhAlUBcwH1Aj0BzQH+AicC/wILAv8CAQL/AgAC
/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAB+QH/AgAB1gH/AgABgQH/AjIBQAH9A2IB4QNrAfYDgAH+A6sB
/wOZAf8DkAH/A44B/wOOAf8DjgH/A44B/wOOAf8DjgH/A40B/wN/Af8DVQH/A0AB/QNeAeIBSAF5AUgB
9gFgAc0BYAH+AUIB/wFCAf8BGQH/ARkB/wEEAf8BBAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB
/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/QEAAf8BAAHkAQAB/wEAAZgBAAH/ATIBQAEyAf0DXgHiAUgC
eQH2AWACzQH+AUID/wEZA/8BBAP/AQAD/wEAA/8BAAP/AQAD/wEAA/8BAAP/AQAC/QH/AQAC5AH/AQAC
mAH/ATICQAH9A14B4gJIAXkB9gJgAc0B/gJCAv8CGQL/AgQC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC
/wIAAf0B/wIAAeQB/wIAAZgB/wIyAUAB/QNeAeIDYQHWA34B/AO4Af8DowH/A5MB/wOOAf8DjgH/A44B
/wOOAf8DjgH/A44B/wONAf8DggH/A1wB/wNNAfoDWgHHAVwBYQFcAdYBZAGyAWQB/AFfAf8BXwH/AS8B
gQEAAf8BNAFAATQB/QNiAeEBVgJxAfUBPgLLAf4BJwP/AQsD/wEBA/8BAAP/AQAD/wEAA/8BAAP/AQAD
/wEAA/8BAAL5Af8BAALWAf8BAAKBAf8BNAJAAf0DYgHhAlYBcQH1Aj4BywH+AicC/wILAv8CAQL/AgAC
/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAB+QH/AgAB1gH/AgABgQH/AjQBQAH9A2IB4QNpAfYDgAH+A6sB
/wOZAf8DkAH/A44B/wOOAf8DjgH/A44B/wOOAf8DjgH/A40B/wN/Af8DVQH/A0AB/QNeAeIBSAF4AUgB
9gFhAcsBYQH+AUIB/wFCAf8BGQH/ARkB/wEEAf8BBAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB
/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/QEAAf8BAAHkAQAB/wEAAZgBAAH/ATQBQAE0Af0DXgHiAUgC
eAH2AWECywH+AUID/wEZA/8BBAP/AQAD/wEAA/8BAAP/AQAD/wEAA/8BAAP/AQAC/QH/AQAC5AH/AQAC
mAH/ATQCQAH9A14B4gJIAXgB9gJhAcsB/gJCAv8CGQL/AgQC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC
/wIAAf0B/wIAAeQB/wIAAZgB/wI0AUAB/QNeAeIDYQHWA34B/AO4Af8DowH/A5MB/wOOAf8DjgH/A44B
/wOOAf8DjgH/A44B/wONAf8DggH/A1wB/wNNAfoDWgHHAVwBYQFcAdYBZAGwAWQB/AFfAf8BXwH/AS8B
/wEvAf8BDAH/AQwB/wEBAf8BAQH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB
/wEAAf4BAAH/AQAB6gEAAf8BAAGlAQAB/wEtAU0BLQH6A1oBxwFcAmEB1gFkArIB/AFfA/8BLwP/AQwD
/wEBA/8BAAP/AQAD/wEAA/8BAAP/AQAD/wEAAv4B/wEAAuoB/wEAAqUB/wEtAk0B+gNaAccCXAFhAdYC
ZAGyAfwCXwL/Ai8C/wIMAv8CAQL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAH+Af8CAAHqAf8CAAGlAf8C
LQFNAfoDWgHHA1ABmgOHAfkDxQH/A7IB/wOcAf8DkQH/A44B/wOOAf8DjgH/A44B/wOPAf8DjgH/A4MB
/wNgAf8DWgHyA0wBkANQAZoBagGQAWoB+QF8Af8BfAH/AVEB/wFRAf8BHwH/AR8B/wEHAf8BBwH/AQEB
/wEAAf4BAAH/AQAB6gEAAf8BAAGlAQAB/wEuAU0BLgH6A1oBxwFcAmEB1gFkArAB/AFfA/8BLwP/AQwD
/wEBA/8BAAP/AQAD/wEAA/8BAAP/AQAD/wEAAv4B/wEAAuoB/wEAAqUB/wEuAk0B+gNaAccCXAFhAdYC
ZAGwAfwCXwL/Ai8C/wIMAv8CAQL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAH+Af8CAAHqAf8CAAGlAf8C
LgFNAfoDWgHHA1ABmgOGAfkDxQH/A7IB/wOcAf8DkQH/A44B/wOOAf8DjgH/A44B/wOPAf8DjgH/A4MB
/wNgAf8DWgHyA0wBkANQAZoBagGPAWoB+QF8Af8BfAH/AVEB/wFRAf8BHwH/AR8B/wEHAf8BBwH/AQEB
/wEBAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAgH/AQIB/wECAf4BAgH/AQAB6wEAAf8BAAGtAQAB
/wFaAWsBWgHyA0wBkANQAZoBagKQAfkBfAP/AVED/wEfA/8BBwP/AQED/wEAA/8BAAP/AQAD/wECA/8B
AgL+Af8BAALrAf8BAAKtAf8BWgJrAfIDTAGQA1ABmgJqAZAB+QJ8Av8CUQL/Ah8C/wIHAv8CAQL/AgAC
/wIAAv8CAAL/AgIC/wICAf4B/wIAAesB/wIAAa0B/wJaAWsB8gNMAZADLwFJA2wB6wOeAf4DxgH/A64B
/wOcAf8DkwH/A5AB/wOPAf8DkAH/A5MB/wOTAf8DhQH/A00B/QNgAeADLQFFAy8BSQNsAesBgAHNAYAB
/wFaAWsBWgHyA0wBkANQAZoBagKPAfkBfAP/AVED/wEfA/8BBwP/AQED/wEAA/8BAAP/AQAD/wECA/8B
AgL+Af8BAALrAf8BAAKtAf8BWgJrAfIDTAGQA1ABmgJqAY8B+QJ8Av8CUQL/Ah8C/wIHAv8CAQL/AgAC
/wIAAv8CAAL/AgIC/wICAf4B/wIAAesB/wIAAa0B/wJaAWsB8gNMAZADLwFJA2wB6wOcAf4DxgH/A64B
/wOcAf8DkwH/A5AB/wOPAf8DkAH/A5MB/wOTAf8DhQH/A0wB/QNgAeADLQFFAy8BSQNsAesBgAHLAYAB
/gF/Af8BfwH/AUkB/wFJAf8BHwH/AR8B/wEMAf8BDAH/AQUB/wEFAf8BAwH/AQMB/wEFAf8BBQH/AQoB
/wEKAf8BCgH+AQoB/wEBAe0BAQH/ATIBtgEyAf0BYAFmAWAB4AMtAUUDLwFJA2wB6wGAAs0B/gF/A/8B
SQP/AR8D/wEMA/8BBQP/AQMD/wEFA/8BCgP/AQoC/gH/AQEC7QH/ATICtgH9AWACZgHgAy0BRQMvAUkD
bAHrAoABzQH+An8C/wJJAv8CHwL/AgwC/wIFAv8CAwL/AgUC/wIKAv8CCgH+Af8CAQHtAf8CMgG2Af0C
YAFmAeADLQFFAwMBBANWAa4DbwH1A9kB/wPLAf8DtwH/A6cB/wOdAf8DmgH/A5wB/wOfAf8DmwH/A4kB
/wNoAfADUgGjAwMBBAMDAQQDVgGuAW4BcwFuAfUBqAH/AagB/wGJAf8BiQH/AVwB/wFcAf8BNwH/ATcB
/wEiAf8BIgH/ARsB/wEbAf8BHwH/AR8B/wEmAf8BJgH/AR0B/wEdAf8BBQHzAQUB/wFbAWgBWwHwA1IB
owMDAQQDAwEEA1YBrgFuAnMB9QGoA/8BiQP/AVwD/wE3A/8BIgP/ARsD/wEfA/8BJgP/AR0D/wEFAvMB
/wFbAmgB8ANSAaMDAwEEAwMBBANWAa4CbgFzAfUCqAL/AokC/wJcAv8CNwL/AiIC/wIbAv8CHwL/AiYC
/wIdAv8CBQHzAf8CWwFoAfADUgGjAwMBBAQAAxwBJwNdAccDdgH2A60B/gPXAf8DzAH/A8IB/wO7Af8D
twH/A7EB/wOAAf4DaAH0A1kBvAMbASYIAAMcAScDXQHHAXEBeQFxAfYBhQHNAYUB/gGlAf8BpQH/AYsB
/wGLAf8BdAH/AXQB/wFmAf8BZgH/AVwB/wFcAf8BTgH/AU4B/wFJAc0BSQH+AVMBdgFTAfQBVwFZAVcB
vAMbASYIAAMcAScDXQHHAXECeQH2AYUCzQH+AaUD/wGLA/8BdAP/AWYD/wFcA/8BTgP/AUkCzQH+AVMC
dgH0AVcCWQG8AxsBJggAAxwBJwNdAccCcQF5AfYChQHNAf4CpQL/AosC/wJ0Av8CZgL/AlwC/wJOAv8C
SQHNAf4CUwF2AfQCVwFZAbwDGwEmDAADIQEwA1kBtgNmAe4DkAH6A74B/QPUAf8DzAH/A74B/QODAfkD
bAHrA1UBrAMfASwQAAMhATADWQG2AWQBaAFkAe4BfQGdAX0B+gGuAb4BrgH9AZ8B/wGfAf8BjAH/AYwB
/wFdAb4BXQH9AWgBkAFoAfkBYQFsAWEB6wNVAawDHwEsEAADIQEwA1kBtgFkAmgB7gF9Ap0B+gGuAr4B
/QGfA/8BjAP/AV0CvgH9AWgCkAH5AWECbAHrA1UBrAMfASwQAAMhATADWQG2AmQBaAHuAn0BnQH6Aq4B
vgH9Ap8C/wKMAv8CXQG+Af0CaAGQAfkCYQFsAesDVQGsAx8BLBQAAwYBBwM2AVgDVQGsA2YB5QOdAfwD
kgH7A2UB4gNTAacDMwFRAwYBBxgAAwYBBwM2AVgDVQGsA2YB5QF+AbIBfgH8AWsBnQFrAfsDZQHiA1MB
pwMzAVEDBgEHGAADBgEHAzYBWANVAawDZgHlAX4CsgH8AWsCnQH7A2UB4gNTAacDMwFRAwYBBxgAAwYB
BwM2AVgDVQGsA2YB5QJ+AbIB/AJrAZ0B+wNlAeIDUwGnAzMBUQMGAQcMAAFCAU0BPgcAAT4DAAEoAwAB
/wEKAf8BCgH+AQoB/wEBAe0BAQH/ATQBtgE0Af0BYAFmAWAB4AMtAUUDLwFJA2wB6wGAAssB/gF/A/8B
SQP/AR8D/wEMA/8BBQP/AQMD/wEFA/8BCgP/AQoC/gH/AQEC7QH/ATQCtgH9AWACZgHgAy0BRQMvAUkD
bAHrAoABywH+An8C/wJJAv8CHwL/AgwC/wIFAv8CAwL/AgUC/wIKAv8CCgH+Af8CAQHtAf8CNAG2Af0C
YAFmAeADLQFFAwMBBANWAa4DbgH1A9kB/wPLAf8DtwH/A6cB/wOdAf8DmgH/A5wB/wOfAf8DmwH/A4kB
/wNoAfADUgGjAwMBBAMDAQQDVgGuAW4BcQFuAfUBqAH/AagB/wGJAf8BiQH/AVwB/wFcAf8BNwH/ATcB
/wEiAf8BIgH/ARsB/wEbAf8BHwH/AR8B/wEmAf8BJgH/AR0B/wEdAf8BBQHzAQUB/wFcAWgBXAHwA1IB
owMDAQQDAwEEA1YBrgFuAnEB9QGoA/8BiQP/AVwD/wE3A/8BIgP/ARsD/wEfA/8BJgP/AR0D/wEFAvMB
/wFcAmgB8ANSAaMDAwEEAwMBBANWAa4CbgFxAfUCqAL/AokC/wJcAv8CNwL/AiIC/wIbAv8CHwL/AiYC
/wIdAv8CBQHzAf8CXAFoAfADUgGjAwMBBAQAAxwBJwNdAccDdQH2A6sB/gPXAf8DzAH/A8IB/wO7Af8D
twH/A7EB/wOAAf4DaAH0A1kBvAMbASYIAAMcAScDXQHHAW8BeAFvAfYBgwHLAYMB/gGlAf8BpQH/AYsB
/wGLAf8BdAH/AXQB/wFmAf8BZgH/AVwB/wFcAf8BTgH/AU4B/wFKAcsBSgH+AVMBdQFTAfQBVwFZAVcB
vAMbASYIAAMcAScDXQHHAW8CeAH2AYMCywH+AaUD/wGLA/8BdAP/AWYD/wFcA/8BTgP/AUoCywH+AVMC
dQH0AVcCWQG8AxsBJggAAxwBJwNdAccCbwF4AfYCgwHLAf4CpQL/AosC/wJ0Av8CZgL/AlwC/wJOAv8C
SgHLAf4CUwF1AfQCVwFZAbwDGwEmDAADIQEwA1kBtgNlAe4DjQH6A74B/QPUAf8DzAH/A74B/QOCAfkD
bAHrA1UBrAMfASwQAAMhATADWQG2AWMBZwFjAe4BfQGbAX0B+gGuAb4BrgH9AZ8B/wGfAf8BjAH/AYwB
/wFcAb4BXAH9AWgBjwFoAfkBYQFsAWEB6wNVAawDHwEsEAADIQEwA1kBtgFjAmcB7gF9ApsB+gGuAr4B
/QGfA/8BjAP/AVwCvgH9AWgCjwH5AWECbAHrA1UBrAMfASwQAAMhATADWQG2AmMBZwHuAn0BmwH6Aq4B
vgH9Ap8C/wKMAv8CXAG+Af0CaAGPAfkCYQFsAesDVQGsAx8BLBQAAwYBBwM2AVgDVQGsA2YB5QOaAfwD
kQH7A2UB4gNTAacDMwFRAwYBBxgAAwYBBwM2AVgDVQGsA2YB5QF+AbABfgH8AWkBnAFpAfsDZQHiA1MB
pwMzAVEDBgEHGAADBgEHAzYBWANVAawDZgHlAX4CsAH8AWkCnAH7A2UB4gNTAacDMwFRAwYBBxgAAwYB
BwM2AVgDVQGsA2YB5QJ+AbAB/AJpAZwB+wNlAeIDUwGnAzMBUQMGAQcMAAFCAU0BPgcAAT4DAAEoAwAB
QAMAASADAAEBAQABAQYAAQEWAAP/gQAB4AEHAeABBwHgAQcB4AEHAcABAwHAAQMBwAEDAcABAwGAAQEB
gAEBAYABAQGAAQFQAAGAAQEBgAEBAYABAQGAAQEBwAEDAcABAwHAAQMBwAEDAeABBwHgAQcB4AEHAeAB
Bws=
@ -220,170 +220,170 @@
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAJiYAAAJNU0Z0AUkBTAIBAQMB
AAE4AQABOAEAASABAAEgAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABgAMAASADAAEBAQABIAYAAUB6
AAJMAUsB5wEIAQoBAAH/AyoBQAwAAyoBQAM2AVcDPwFsAz8BbAM/AWwDPwFsAz8BbAM/AWwDPwFsAz8B
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAECYAAAJNU0Z0AUkBTAIBAQMB
AAFAAQABQAEAASABAAEgAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABgAMAASADAAEBAQABIAYAAUB6
AAJRAVAB5wEIAQoBAAH/AyoBQAwAAyoBQAM2AVcDPwFsAz8BbAM/AWwDPwFsAz8BbAM/AWwDPwFsAz8B
bAM/AWwDPwFsAz8BbAM/AWwDPwFsAz8BbAM/AWwDPwFsAjsBOgFiAzMBUQMYASFUAANTAaIDWwHAIAAD
VAGmA1kBvPAAAyEBMANGAYAUAAEVAR8BBAH/AQ0BFQEAAf8BCAEKAQAB/wEIAQoBAAH/DAADRAF6A1MB
pwFoAWEBWgHPAWgBYQFaAc8BaAFhAVoBzwFoAWEBWgHPAWgBYQFaAc8BaAFhAVoBzwFoAWEBWgHPAWgB
YQFaAc8BaAFhAVoBzwFoAWEBWgHPAWgBYQFaAc8BaAFhAVoBzwFoAWEBWgHPAWgBYQFaAc8BaAFhAVoB
zwFnAWABWQHOAVoBWQFYAbsCUAFPAZsDKgFAVAADYQHQA20B7iAAA2IB1ANrAenkAANZAb8BCAEKAQAB
/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wNZAb8DWQG/AUMB
dAEHAf8BRwF3AQwB/wElAUcBAAH/AQ4BGQEAAf8MAAJLAUoBigFdAVoBWAG9AY8BZwFFAeoBjwFnAUUB
6gGPAWcBRQHqAY8BZwFFAeoBjwFnAUUB6gGPAWcBRQHqAY8BZwFFAeoBjwFnAUUB6gGPAWcBRQHqAY8B
ZwFFAeoBjwFnAUUB6gGPAWcBRQHqAY8BZwFFAeoBjwFnAUUB6gGPAWcBRQHqAYwBagFFAekBagFfAVgB
0wFWAlUBrwMuAUhUAANhAdADbQHuIAADYgHUA2sB6eAAAQgBCgEAAf8BEAEeAQAB/wEhAUEBAAH/AScB
SwEAAf8BJgFKAQAB/wEhAUEBAAH/ARABHgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BKQFOAQAB
/wFaAZYBEAH/AVoBnAEQAf8BcwG2ASYB/wEYAS4BAAH/DAADSQGGAloBWAG3AYEBZQFQAeMBgQFlAVAB
4wGBAWUBUAHjAYEBZQFQAeMBiAFqAU4B5gGdAWoBQAHtAbcBbwEsAfQB3AF3AQ4B/AH/AXgBAAL/AXgB
AAH/AbkBbgEpAfUBiAFqAU4B5gGBAWUBUAHjAYEBZQFQAeMBgQFlAVAB4wGAAWUBTwHiAWQBXgFZAc0C
VQFTAaoCLgEtAUZUAANhAdADbQHuIAADYgHUA2sB6dwAAQgBCgEAAf8BPQFxAQIB/wFMAYYBBwH/AVIB
jAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMARAB/wFMAX8BDwH/ATsBZwEIAf8BIQE0AQgB
/wFTAY4BCwH/AVoBnAEQAf8BcgGzAScB/wFTAYEBGwH/EAADKwFBAzYBWQJAAT8BbgJAAT8BbgJAAT8B
bgJAAT8BbgNEAXsCUQFQAZ8BYAFdAVoBxQGcAWsBPQHuAf8BeAEAAv8BeAEAAf8BYwFfAVoByQNFAXwC
QAE/AW4CQAE/AW4CQAE/AW4DPwFtAzsBYwMzAVIDGQEiVAADYQHQA20B7iAAA2IB1ANrAenYAAEVASkB
AAH/AUoBhAEEAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEQAf8B
UgGMARAB/wFSAYwBEAH/AVoBlAEQAf8BVgGQAQwB/wFaAZoBEAH/AVoBnAEQAf8BcgGpATAB/wEIAQoB
AAH/AQgBCgEAAf8MAAMMARADEQEWAxUBHAMVARwDFQEcAxUBHAMhATACPgE9AWkCUwFSAaUBhwFpAU0B
5QH/AXgBAAL/AXgBAAH/AlUBUwGqAyIBMQMVARwDFQEcAxUBHAMUARsDEwEZAxABFQMHAQlUAANhAdAD
bQHuIAADYgHUA2sB6dQAARYBJwECAf8BSQGAAQcB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwB
CAH/AVIBjAEIAf8BUgGMAQsB/wFSAYwBEAH/AVIBjAEQAf8BWAGSARAB/wFaAZQBEAH/AVoBmwEQAf8B
WgGcARAB/wFcAZ4BEgH/ATsBbQEDAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8IAAMFBAYECAEKAwgB
CgMIAQoDCAEKAxcBHwI5ATgBXQNRAZ4BgQFlAVAB4wH/AXgBAAL/AXgBAAH/A1IBowMYASEDCAEKAwgB
CgMIAQoDCAEKAwcBCQMGAQcDAgEDVAADYQHQA20B7iAAA2IB1ANrAenQAAFUAVYBUAHfAUcBgAEDAf8B
UgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMARAB/wFSAYwB
EAH/AVIBjAEQAf8BWgGUARAB/wFaAZQBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8B
WgGYARAB/wEWASoBAAH/AQgBCgEAAf8BCAEKAQAB/xwAAxIBFwM1AVYDUAGaAXwBZwFTAeEB/wF4AQAC
/wF4AQAB/wJRAVABnwMSARhwAANhAdADbQHuIAADYgHUA2sB6dAAASwBUAEAAf8BSgGMAQAB/wFSAYwB
CAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQ4B/wFVAZIBEAH/AVoBnAEQAf8B
WgGcARAB/wFaAZQBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZQB
GAH/AVgBkgEWAf8BEAEeAQAB/wEIAQoBAAH/HAADEgEXAzUBVgNQAZoBfAFnAVMB4QH/AXgBAAL/AXgB
AAH/AlEBUAGfAxIBGHAAA2EB0ANtAe4gAANiAdQDawHp1AADSwGPATMBXgEAAf8BUgGMAQgB/wFSAYwB
CAH/AVIBjAEIAf8BUgGMARAB/wF/AcABMwH/AV8BngEXAf8BIAE/AQAB/wEIAQoBAAH/AVIBjAEQAf8B
WgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZUBFwH/AVoBlAEYAf8BWgGUARgB/wFaAZQB
GAH/AQgBCgEAAf8BCAEKAQAB/xgAAxIBFwM1AVYDUAGaAXwBZwFTAeEB/wF4AQAC/wF4AQAB/wJRAVAB
nwMSARgUAAQBAwMBBAMGBAcBCQMHAQkDBAEFBAIEARQAAxEBFgMhAS8DIQEvAyEBLwMhAS8DIQEvAyEB
LwMhAS8DIQEvAyEBLwNhAdkDcgHxAyEBLwMhAS8DIQEvAyEBLwMhAS8DIQEvAyEBLwMhAS8DZgHcA20B
7QMhAS8DIQEvAyEBLwMhAS8DIQEvAyEBLwMhAS8DIQEvAyEBLwMNARG4AAFCAXsBAAH/AVIBjAEIAf8B
ewHGASkB/wMzAVAEAAMMARABOQFrAQAB/wFaAZwBEAH/AVoBnAEQAf8BXQGXARMB/wFWAZQBDAH/AVoB
nAEQAf8BWgGUARgB/wFaAZQBGAH/AWMBnAEYAf8BYwGlARcB/wEpAVABAAH/AQgBCgEAAf8YAAMSARcD
NQFWA1ABmgF8AWcBUwHhAf8BeAEAAv8BeAEAAf8CUQFQAZ8DEgEYFAAEAgMJAQwDDwEUAxMBGgMSARgD
CgENAwQBBQQBFAADagHoA38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8D
fwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8D
fwH/A38B/wN/Af8DfwH/A2EBz7wAAQgBCgEAAf8MAAETASMBAAH/AVoBlAEQAf8BWgGcARAB/wGUAdYB
SgH/AQ0BEQECAf8BMQFaAQAB/wFaAZQBEgH/AVoBlAEYAf8BWgGUARgB/wFjAZwBGAH/AWMBpQEXAf8B
awGlASEB/wEQAR4BAAH/GAADEgEXAzUBVgNQAZoBfAFnAVMB4QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIB
GBQAAwUBBgMdASkDMAFKAjsBPAFlAjsBPAFkAygBPAIVARYBHQMGAQgUAAM8AWQDTAGPA0wBjwNMAY8D
TAGPA0wBjwNMAY8DTAGPA0wBjwNMAY8DagHqA3wB+ANMAY8DTAGPA0wBjwNMAY8DTAGPA0wBjwNMAY8D
TAGPA28B7ANvAfUDTAGPA0wBjwNMAY8DTAGPA0wBjwNMAY8DTAGPA0wBjwNMAY8DNQFWqAACUgFQAd8B
CAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8DMwFQAzoBYAFLAYUB
BwH/AVoBlAEQAf8BWgGcARAB/wE5AWsBAAH/AwkBDAEQAR4BAAH/AVQBjgESAf8BWgGUARgB/wFjAZwB
GAH/AWMBnAEYAf8BYwGlARcB/wFzAbQBKQH/ARABHgEAAf8YAAMSARcDNQFWA1ABmgF8AWcBUwHhAf8B
eAEAAv8BeAEAAf8CUQFQAZ8DEgEYFAADCQEMAzMBUAJMAU0BkQJaAWMByQJaAWQBygNEAXoDKQE9AwwB
EDwAA2EB0ANtAe4gAANiAdQDawHpzAABCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoB
AAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BMwFfAQIB/wFaAZQBEAH/AVoBnAEQAf8B
rQHnAWMB/wEQAR4BAAH/AQgBCgEAAf8BFAEmAQAB/wFUAY4BEgH/AWIBmwEYAf8BYwGcARgB/wFjAaUB
FwH/AWMBpQEXAf8BYwGcASEB/wEYAS4BAAH/GAADEgEXAzUBVgNQAZoBfAFnAVMB4QH/AXgBAAL/AXgB
AAH/AlEBUAGfAxIBGBQAAwkBCwMuAUcDSAGEAlkBYAHDAlgBZAHLA0kBhQMuAUcDDwETPAADYQHQA20B
7iAAA2IB1ANrAenIAAEIAQoBAAH/ASsBUgEAAf8BQQFyAQUB/wFKAYQBBgH/AUoBhAEGAf8BSgGEAQYB
/wFCAXMBBgH/ASkBUAEAAf8BEAEeAQAB/wEfAToBAAH/AVUBjwELAf8BWgGVARAB/wFaAZwBEAH/AdYB
/wGMAf8BEAEeAQAB/wEYAS4BAAH/AUIBeAEDAf8BWgGUARgB/wFiAZsBGAH/AWMBnAEYAf8BYwGlARcB
/wFjAaUBFwH/AXMBtAEpAf8BEAEeAQAB/xgAAxIBFwM1AVYDUAGaAXwBZwFTAeEB/wF4AQAC/wF4AQAB
/wJRAVABnwMSARgUAAMGAQgDJAE0AzwBZgNTAacCWAFaAbgCRwFIAYMDMQFNAw8BFDwAA2EB0ANtAe4g
AANiAdQDawHpxAABKAFNAQAB/wFOAYgBBwH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8B
UgGMAQgB/wFSAYwBCAH/AVIBjAEQAf8BUgGMARAB/wFSAYwBEAH/AVoBlAEQAf8BWgGcARAB/wFjAaUB
FwH/AUIBewEAAf8BSgGEAQYB/wFSAYwBCAH/AVoBmAEUAf8BWgGUARgB/wFjAZwBGAH/AWMBpQEXAf8B
YwGlARcB/wFjAaUBFwH/AZQByQFNAf8EAAMQARUDGgEkAyEBLwMRARYEAgQBAxIBFwM1AVYDUAGaAXwB
ZwFTAeEB/wF4AQAC/wF4AQAB/wJRAVABnwMSARgUAAMDAQQDEwEZAyUBNgI7ATwBZAJBAUIBcgMzAVED
IQEvAwkBDDwAA2EB0ANtAe4gAANiAdQDawHpwAABKQFOAQIB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB
/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEQAf8BUgGMARAB/wFSAYwBEAH/AVoB
lAEQAf8BWgGVARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBlAEYAf8BWgGUARgB
/wFjAZwBGAH/AWMBnAEYAf8BYwGlARcB/wFjAaUBFwH/AWMBpQEXAf8BZQGgASEB/wQAAx4BKwIxATAB
TAM7AWMDIgExAwcBCQMEAQUDEgEYAzYBVwNQAZoBfAFnAVMB4QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIB
GBwAAwcBCQMcAScDIwEyAhkBGgEjAw8BFAMEAQU8AANhAdADbQHuIAADYgHUA2sB6bwAA0YBgAFOAYgB
BwH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8B
UgGMARAB/wFSAYwBEAH/AVIBjAEQAf8BWgGUARAB/wFaAZcBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwB
EAH/AVoBnAEQAf8BWgGUARgB/wFaAZQBGAH/AWMBnAEYAf8BYwGhARgB/wFjAaUBFwH/AWMBpQEXAf8B
eAG6ASwB/wEIAQoBAAH/BAADJAE0A0UBfAJaAVgBtwNOAZQDPwFtAygBOwMfASwDOQFeA1ABmgF8AWcB
UwHhAf8BeAEAAv8BeAEAAf8CUQFQAZ8DEgEYHAADEgEXAzwBZgNKAYkDQAFvAy4BRwMOARI8AANhAdAD
bQHuIAADYgHUA2sB6bwAATUBXgEHAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwB
CAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEQAf8BUgGMARAB/wFaAZQBEAH/AVoBlAEQAf8B
WgGbARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZYBFgH/AVoBlAEYAf8BXQGXARgB/wFjAZwB
GAH/AWMBpQEXAf8BYwGlARcB/wFwAbMBIAH/ASsBUAEEAf8IAAMnAToCUwFRAaIB2QFqARUB+wGJAWoB
SwHnAV8BXAFaAcQCQwFCAXUDMQFNAkABPwFuAlEBUAGfAYEBZQFQAeMB/wF4AQAC/wF4AQAB/wJRAVAB
nwMSARgcAAMZASIDTgGVAlkBZAHNAlYBVwGyA0QBegMdASkDBgEIBAIEATAAA2EB0ANtAe4gAANiAdQD
awHpvAABSgGEAQYB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BZwGpARcB
/wFSAYwBCAH/AUoBhAEGAf8BSgGEAQYB/wFSAYwBEAH/AVoBlAEQAf8BWgGXARAB/wFaAZwBEAH/AVoB
nAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBlAEYAf8BWgGUARgB/wFfAZgBGAH/AWMBngEYAf8BYwGlARcB
/wFrAakBHQH/ASkBUAEAAf8MAAMiATEDTgGYAbEBbwExAfMBpAFqATYB8AGIAWoBTgHmAV4BWgFXAcIC
VQFTAaoDUwGnAlkBVwG8AZcBbAFHAesB/wF4AQAC/wF4AQAB/wJRAVABnwMSARgcAAMUARsCQwFEAXcC
VgFZAbYCWQFkAc0CVgFYAbMDPwFsAyYBOAMMAQ8DAgEDCAADAgEDAw0BEQMNAREDDQERAw0BEQMNARED
DQERAw0BEQMNAREDDQERA18B0wNvAe8DDQERAw0BEQMNAREDDQERAw0BEQMNAREDDQERAw0BEQNiAdcD
agHqAw0BEQMNAREDDQERAw0BEQMNAREDDQERAw0BEQMNAREDDQERAwQBBZQAAUoBhAEGAf8BUgGMAQgB
/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFpAaQBHgH/ASwBUAEDAf8BCAEKAQAB/wE3AWEBBwH/AVIB
jAEOAf8BUgGMARAB/wF/AcEBMgH/AVsBXgFYAdMCWgFZAb8BLwFZAQAB/wFEAXoBBQH/AVABigEIAf8B
WgGcAQ4B/wFaAZwBEAH/AVoBnAEQAf8BTwGGARAB/wFEAXQBDAH/AVkBWgFZAb8QAAIaARkBIwNEAXsB
ZAFdAVoBygFzAWMBVwHaAY0BaQFHAegBnwFrAToB7wGWAW0BQwHsAW0BYwFXAdYBbQFiAVYB2AG3AW8B
LAH0Af8BeAEAAv8BeAEAAf8CUQFQAZ8DEgEYHAADDwETAzQBUwNNAZICWgFoAc8CWQFtAdQCUgFUAagC
QQFCAXIDJgE4AxQBGwMGAQgDAgEDA1sBwgN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B
pwFlAWEBWwHPAWUBYQFbAc8BZQFhAVsBzwFlAWEBWwHPAWUBYQFbAc8BZQFhAVsBzwFlAWEBWwHPAWUB
YQFbAc8BZQFhAVsBzwFlAWEBWwHPAWUBYQFbAc8BZQFhAVsBzwFlAWEBWwHPAWUBYQFbAc8BZQFhAVsB
zwFjAWABWwHOA1kBuwJQAU8BmwMqAUBUAANfAdADbAHuIAADYQHUA2oB6eQAA1oBvwEIAQoBAAH/AQgB
CgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/A1oBvwNaAb8BQwF0AQcB
/wFHAXcBDAH/ASUBRwEAAf8BDgEZAQAB/wwAAksBSgGKAVwBWgFYAb0BhwFnAUgB6gGHAWcBSAHqAYcB
ZwFIAeoBhwFnAUgB6gGHAWcBSAHqAYcBZwFIAeoBhwFnAUgB6gGHAWcBSAHqAYcBZwFIAeoBhwFnAUgB
6gGHAWcBSAHqAYcBZwFIAeoBhwFnAUgB6gGHAWcBSAHqAYcBZwFIAeoBhQFpAUkB6QFnAV8BWgHTA1UB
rwMuAUhUAANfAdADbAHuIAADYQHUA2oB6eAAAQgBCgEAAf8BEAEeAQAB/wEhAUEBAAH/AScBSwEAAf8B
JgFKAQAB/wEhAUEBAAH/ARABHgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BKQFOAQAB/wFaAZYB
EAH/AVoBnAEQAf8BcwG2ASYB/wEYAS4BAAH/DAADSQGGAloBWAG3AXsBZQFTAeMBewFlAVMB4wF7AWUB
UwHjAXsBZQFTAeMBggFqAVEB5gGWAWoBRQHtAa8BbQEwAfQB1wF3ARAB/AH/AXgBAAL/AXgBAAH/AbMB
bgEsAfUBggFqAVEB5gF7AWUBUwHjAXsBZQFTAeMBewFlAVMB4wF5AWUBUgHiAWEBXgFbAc0CVQFTAaoC
LgEtAUZUAANfAdADbAHuIAADYQHUA2oB6dwAAQgBCgEAAf8BPQFxAQIB/wFMAYYBBwH/AVIBjAEIAf8B
UgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMARAB/wFMAX8BDwH/ATsBZwEIAf8BIQE0AQgB/wFTAY4B
CwH/AVoBnAEQAf8BcgGzAScB/wFTAYEBGwH/EAADKwFBAzYBWQJAAT8BbgJAAT8BbgJAAT8BbgJAAT8B
bgNEAXsCUQFQAZ8CXQFbAcUBlQFqAUIB7gH/AXgBAAL/AXgBAAH/AWABXwFbAckDRQF8AkABPwFuAkAB
PwFuAkABPwFuAz8BbQM7AWMDMwFSAxkBIlQAA18B0ANsAe4gAANhAdQDagHp2AABFQEpAQAB/wFKAYQB
BAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBEAH/AVIBjAEQAf8B
UgGMARAB/wFaAZQBEAH/AVYBkAEMAf8BWgGaARAB/wFaAZwBEAH/AXIBqQEwAf8BCAEKAQAB/wEIAQoB
AAH/DAADDAEQAxEBFgMVARwDFQEcAxUBHAMVARwDIQEwAj4BPQFpAlMBUgGlAYABZwFRAeUB/wF4AQAC
/wF4AQAB/wJVAVMBqgMiATEDFQEcAxUBHAMVARwDFAEbAxMBGQMQARUDBwEJVAADXwHQA2wB7iAAA2EB
1ANqAenUAAEWAScBAgH/AUkBgAEHAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwB
CAH/AVIBjAELAf8BUgGMARAB/wFSAYwBEAH/AVgBkgEQAf8BWgGUARAB/wFaAZsBEAH/AVoBnAEQAf8B
XAGeARIB/wE7AW0BAwH/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/CAADBQQGBAgBCgMIAQoDCAEKAwgB
CgMXAR8COQE4AV0DUQGeAXsBZQFTAeMB/wF4AQAC/wF4AQAB/wNSAaMDGAEhAwgBCgMIAQoDCAEKAwgB
CgMHAQkDBgEHAwIBA1QAA18B0ANsAe4gAANhAdQDagHp0AACVwFUAd8BRwGAAQMB/wFSAYwBCAH/AVIB
jAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBEAH/AVIBjAEQAf8BUgGMARAB
/wFaAZQBEAH/AVoBlAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZgBEAH/ARYB
KgEAAf8BCAEKAQAB/wEIAQoBAAH/HAADEgEXAzUBVgNQAZoBdgFmAVYB4QH/AXgBAAL/AXgBAAH/AlEB
UAGfAxIBGHAAA18B0ANsAe4gAANhAdQDagHp0AABLAFQAQAB/wFKAYwBAAH/AVIBjAEIAf8BUgGMAQgB
/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBDgH/AVUBkgEQAf8BWgGcARAB/wFaAZwBEAH/AVoB
lAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBlAEYAf8BWAGSARYB
/wEQAR4BAAH/AQgBCgEAAf8cAAMSARcDNQFWA1ABmgF2AWYBVgHhAf8BeAEAAv8BeAEAAf8CUQFQAZ8D
EgEYcAADXwHQA2wB7iAAA2EB1ANqAenUAANLAY8BMwFeAQAB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB
/wFSAYwBEAH/AX8BwAEzAf8BXwGeARcB/wEgAT8BAAH/AQgBCgEAAf8BUgGMARAB/wFaAZwBEAH/AVoB
nAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBlQEXAf8BWgGUARgB/wFaAZQBGAH/AVoBlAEYAf8BCAEKAQAB
/wEIAQoBAAH/GAADEgEXAzUBVgNQAZoBdgFmAVYB4QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBQABAED
AwEEAwYEBwEJAwcBCQMEAQUEAgQBFAADEQEWAyEBLwMhAS8DIQEvAyEBLwMhAS8DIQEvAyEBLwMhAS8D
IQEvA2EB2QNxAfEDIQEvAyEBLwMhAS8DIQEvAyEBLwMhAS8DIQEvAyEBLwNkAdwDawHtAyEBLwMhAS8D
IQEvAyEBLwMhAS8DIQEvAyEBLwMhAS8DIQEvAw0BEbgAAUIBewEAAf8BUgGMAQgB/wF7AcYBKQH/AzMB
UAQAAwwBEAE5AWsBAAH/AVoBnAEQAf8BWgGcARAB/wFdAZcBEwH/AVYBlAEMAf8BWgGcARAB/wFaAZQB
GAH/AVoBlAEYAf8BYwGcARgB/wFjAaUBFwH/ASkBUAEAAf8BCAEKAQAB/xgAAxIBFwM1AVYDUAGaAXYB
ZgFWAeEB/wF4AQAC/wF4AQAB/wJRAVABnwMSARgUAAQCAwkBDAMPARQDEwEaAxIBGAMKAQ0DBAEFBAEU
AANpAegDfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B
/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B
/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wNmAdyUAAFKAYwBAAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwB
CAH/AVIBjAEIAf8BZwGdAScB/wEIAQoBAAH/AQoBDwEAAf8BQgF3AQMB/wFSAYwBEAH/AVoBnAEQAf8B
JQFBAQUB/wQAAzoBYAEIAQoBAAH/AQgBCgEAAf8EAANGAYADRgGAA0YBgBwAAwoBDQMiATEDNAFUA0QB
eAJRAVABnwFoAWEBWgHPAZ0BagFAAe0BlgFtAUMB7AGkAWoBNgHwAdkBagEVAfsB/wF4AQAC/wF4AQAB
/wJRAVABnwMSARgcAAMGAQgDGAEhAzEBTQJMAU0BkQJYAV0BvQJZAWcB0QJZAWABwwJRAVMBogM9AWcC
GQEaASMDDAEPA0ABbwNVAa0DVQGtA1UBrQNVAa0DVQGtA1UBrQNVAa0DVQGtA1UBrQNsAfADfQH6A1UB
rQNVAa0DVQGtA1UBrQNVAa0DVQGtA1UBrQNVAa0DcgHxA3wB+ANVAa0DVQGtA1UBrQNVAa0DVQGtA1UB
rQNVAa0DVQGtA1UBrQNHAYGUAAE7AW0BAgH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8B
UwGOARAB/wEPARsBAAH/ASMBQwEAAf8BUgGMARAB/wFSAYwBEAH/AXsBvQEwAf8BCAEKAQAB/wEIAQoB
AAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/ygAAwMBBAMJAQsDIgExAzgB
WwJPAU4BlwFkAV8BWwHIAYcBaQFNAeUByAFvASUB9wHqAXEBDgH9Af8BeAEAAv8BeAEAAf8CUQFQAZ8D
EgEYHAAEAQMCAQMDFQEcAzUBVgJLAUwBjwJbAWQByAJQAXcB3wJQAYEB4wJSAVMBpQM0AVMDHAEnKAAD
YQHQA20B7iAAA2IB1ANrAem8AAEIAQoBAAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8B
UgGMAQgB/wFOAYIBDwH/AUoBhAEGAf8BUgGMARAB/wFjAaUBFwH/AQgBCgEAAf8BCAEKAQAB/wETASMB
AAH/AUIBcwEGAf8BIAE/AQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8g
AAQBAwMBBAMMARADGAEgAykBPQM+AWoCVwFWAbUBhwFpAU0B5QHIAW8BJQH3Af8BeAEAAv8BeAEAAf8C
UQFQAZ8DEgEYIAAEAQMHAQkDFAEbAyoBQANDAXYCVQFWAa8CRQGMAekCWAFoAdACUAFRAZ8DMwFRKAAD
YQHQA20B7iAAA2IB1ANrAenAAAFCAXMBBgH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8B
UgGMAQgB/wFSAYwBEAH/AVIBjAEQAf8BSgGEAQYB/wEQAR4BAAH/ATEBWgEAAf8BTQGEAQ0B/wFaAZwB
EAH/AVoBnAEQAf8BUgGMAQgB/wEQAR4BAAH/AQgBCgEAAf8BCAEKAQAB/wNGAYAsAAMCAQMDCwEOAyAB
LgNDAXYBWAFXAVUBsQF9AWYBUgHgAb4BcQElAfYB0wFqARwB+QJRAVABnAMSARcMAAQBAwwBEAMXAR8D
HQEoAx0BKAMMAQ8IAAMPARQCJgEnATkCRwFIAYMCUwF8AeECSwGJAecCWQFpAdICPwFAAW4oAANhAdAD
bQHuIAADYgHUA2sB6cQAAUkBiQEAAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwB
EAH/AVIBjAEQAf8BUgGMARAB/wFSAYwBEAH/AVoBlAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8B
WgGcARAB/wFaAZQBGAH/AUIBcwEGAf8BCgEOAQAB/zAABAEDAwEEAwwBDwMeASoDOgFhAVsBWQFXAbkB
gQFnAUsB5AGcAWsBPQHuAk8BTgGXAxIBFwwAAwIBAwMhAS8DNgFZAkIBQwF1AkEBQgFzAx4BKwgAAwQB
BQMMAQ8DOAFcAlkBZwHOAkMBlgHsAjoBnwHvA0YBfygAA2EB0ANtAe4gAANiAdQDawHpyAABOgFrAQAB
/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBEAH/AVIBjAEQAf8BWgGUARAB/wFaAZQBEAH/AVoB
nAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGUARgB/wFaAZQBGAH/AWMBpQEXAf8BGQEsAQMB
/zgAAwIBAwMIAQoDIAEtAkEBQAFxAk0BTAGRA1ABmgI7AToBYgMMAQ8MAAMDAQQDKwFBA0QBegNTAacD
VQGtAzcBWgMYASADCQELAwYBBwMNAREDOQFfAlkBZwHRAjoBnwHvAjEBsQHzAkYBRwGBKAADYQHQA20B
7iAAA2IB1ANrAenMAAEsAVUBAAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBEAH/AVIBjAEQAf8BWgGUARAB
/wFaAZQBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGUARgB/wFaAZQBGAH/ASEB
QQEAAf9AAAQCAwcBCQMQBBUBHAIWARUBHQMPARMDAgEDDAADAwEEAzADSwFMAY8CWgFkAcoCVAF3Ad4D
TgGUAzQBUwMVARwDDQERAx4BKwJDAUQBdwJQAXcB3wI3AasB8QJFAYwB6QNEAXsoAANhAdADbQHuIAAD
YgHUA2sB6cgAARIBIgEAAf8BTAGGAQYB/wFSAYwBCAH/AVoBnAEQAf8BUAGKAQgB/wFSAYwBEAH/AVoB
lAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEQH/AWkBqwEfAf8BCAEKAQAB
/2wAAwIBAwMhAS8DOgFhA1UBrQJXAXMB2gJZAVwBvwJQAVEBnwNEAXoCQQFCAXIDSQGFAlYBVwGyAkAB
nQHtAlYBdQHbAlUBWAGxAzgBWygAA2EB0ANtAe4gAANiAdQDawHpyAABEAEeAQAB/wFIAX0BBwH/AVkB
kwETAf8BVQGIARgB/wgAASEBQQEAAf8BQgF7AQAB/wFSAYwBCAH/AVUBkQEIAf8BOQFmAQQB/wFAAUUB
OgHveAADBgEIAxcBHwNEAXsCWQFhAcYCSwGBAeQCLAG3AfQCPQGcAe4CPQGcAe4CNwGrAfECJQG+AfYC
DgHcAfwCWQFdAb4DPgFrAyQBNCgAA2EB0ANtAe4gAANiAdQDawHp0AABHgE6AQAB/5wABAIDCQEMAyoD
PwFAAW4DTgGWAlYBWAGzAlkBXgHBAlkBYAHHAlkBYAHHAlcBWwG5AlEBUgGkAkABQQFxAyUBNgMTARko
AANhAdADbQHuIAADYgHUA2sB6f8AeQAEAQMLAQ4DJgE4AzkBXgNGAX0CSgFLAYsDSgGJAz4BawMqAT8D
FwEfAwIBAywAA1MBogNaAb8gAANUAaYDWQG7qAABQgFNAT4HAAE+AwABKAMAAYADAAEgAwABAQEAAQEG
AAECFgAD/wEAA/8BxwIAAQcC/wHPAfMB/wQAAv8BzwGHAgABBwL/Ac8B8wH/BAAB/wH+AQABBwIAAQcC
/wHPAfMB/wQAAf8B/AEAAQcCAAEHAv8BzwHzAf8EAAH/AfgBAAEPAgABBwL/Ac8B8wH/BAAB/wHwAQAB
BwIAAQcC/wHPAfMB/wQAAf8B4AEAAQMCAAEHAv8BzwHzAf8EAAH/AcABAAEBAfwBAwP/Ac8B8wH/BAAB
/wHAAQABAQH8AQMD/wHPAfMB/wQAAf8B4AIAAfwBAwHgAR8IAAH/AfwBIAEAAfwBAwHgAR8IAAH/Af4B
4AEAAfwBAwHgAR8IAAH/AcACAAH8AQMB4AEfAf8BzwHzAf8EAAH/AYACAAH8AQMB4AEfAf8BzwHzAf8E
AAH/AwAB/AEDAeABHwH/Ac8B8wH/BAAB/gIAAQEBAAEDAeABHwH/Ac8B8wH/BAAB/AIAAQEBAAEDAfgB
HwH/Ac8B8wH/BAAB+AIAAQEBAAEDAfgBHwH/Ac8B8wH/BAAB+AIAAQMBAAEDAfgBAwH/Ac8B8wH/BAAB
+AIAAQcBAAEDAfgBAwgAAfgCAAEPAQABAwH4CQAB+AEAAUQBfwEAAQMB+AkAAfgBAAEBAf8BgAEDAfgB
AAH/Ac8B8wH/BAAB+AIAAX8BgAEDAfwBAAH/Ac8B8wH/BAAB/AIAAX8B8AEDAYEBgAH/Ac8B8wH/BAAB
/gIAAf8B8AEDAYEBgAH/Ac8B8wH/BAAB/wIAAf8B/AEDAYABAAH/Ac8B8wH/BAAB/wGAAQEB/wH+AQMB
gAEAAf8BzwHzAf8EAAH/AQABAwP/AYABAAH/Ac8B8wH/BAAB/wEMAQ8D/wHAAQAB/wHPAfMB/wQAAf8B
3wT/AcABAAH/Ac8B8wH/BAAG/wHwAQEB/wHPAfMB/wQACw==
/wN/Af8DYQHPvAABCAEKAQAB/wwAARMBIwEAAf8BWgGUARAB/wFaAZwBEAH/AZQB1gFKAf8BDQERAQIB
/wExAVoBAAH/AVoBlAESAf8BWgGUARgB/wFaAZQBGAH/AWMBnAEYAf8BYwGlARcB/wFrAaUBIQH/ARAB
HgEAAf8YAAMSARcDNQFWA1ABmgF2AWYBVgHhAf8BeAEAAv8BeAEAAf8CUQFQAZ8DEgEYFAADBQEGAx0B
KQMwAUoCOwE8AWUCOwE8AWQDKAE8AhUBFgEdAwYBCBQAAzwBZANMAY8DTAGPA0wBjwNMAY8DTAGPA0wB
jwNMAY8DTAGPA0wBjwNoAeoDfAH4A0wBjwNMAY8DTAGPA0wBjwNMAY8DTAGPA0wBjwNMAY8DbgHsA24B
9QNMAY8DTAGPA0wBjwNMAY8DTAGPA0wBjwNMAY8DTAGPA0wBjwM1AVaoAAJWAVQB3wEIAQoBAAH/AQgB
CgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wMzAVADOgFgAUsBhQEHAf8BWgGUARAB
/wFaAZwBEAH/ATkBawEAAf8DCQEMARABHgEAAf8BVAGOARIB/wFaAZQBGAH/AWMBnAEYAf8BYwGcARgB
/wFjAaUBFwH/AXMBtAEpAf8BEAEeAQAB/xgAAxIBFwM1AVYDUAGaAXYBZgFWAeEB/wF4AQAC/wF4AQAB
/wJRAVABnwMSARgUAAMJAQwDMwFQAkwBTQGRAlsBYAHJAlsBYQHKA0QBegMpAT0DDAEQPAADXwHQA2wB
7iAAA2EB1ANqAenMAAEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB
/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEzAV8BAgH/AVoBlAEQAf8BWgGcARAB/wGtAecBYwH/ARAB
HgEAAf8BCAEKAQAB/wEUASYBAAH/AVQBjgESAf8BYgGbARgB/wFjAZwBGAH/AWMBpQEXAf8BYwGlARcB
/wFjAZwBIQH/ARgBLgEAAf8YAAMSARcDNQFWA1ABmgF2AWYBVgHhAf8BeAEAAv8BeAEAAf8CUQFQAZ8D
EgEYFAADCQELAy4BRwNIAYQCWQFeAcMCWQFiAcsDSQGFAy4BRwMPARM8AANfAdADbAHuIAADYQHUA2oB
6cgAAQgBCgEAAf8BKwFSAQAB/wFBAXIBBQH/AUoBhAEGAf8BSgGEAQYB/wFKAYQBBgH/AUIBcwEGAf8B
KQFQAQAB/wEQAR4BAAH/AR8BOgEAAf8BVQGPAQsB/wFaAZUBEAH/AVoBnAEQAf8B1gH/AYwB/wEQAR4B
AAH/ARgBLgEAAf8BQgF4AQMB/wFaAZQBGAH/AWIBmwEYAf8BYwGcARgB/wFjAaUBFwH/AWMBpQEXAf8B
cwG0ASkB/wEQAR4BAAH/GAADEgEXAzUBVgNQAZoBdgFmAVYB4QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIB
GBQAAwYBCAMkATQDPAFmA1MBpwJYAVkBuAJHAUgBgwMxAU0DDwEUPAADXwHQA2wB7iAAA2EB1ANqAenE
AAEoAU0BAAH/AU4BiAEHAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIB
jAEIAf8BUgGMARAB/wFSAYwBEAH/AVIBjAEQAf8BWgGUARAB/wFaAZwBEAH/AWMBpQEXAf8BQgF7AQAB
/wFKAYQBBgH/AVIBjAEIAf8BWgGYARQB/wFaAZQBGAH/AWMBnAEYAf8BYwGlARcB/wFjAaUBFwH/AWMB
pQEXAf8BlAHJAU0B/wQAAxABFQMaASQDIQEvAxEBFgQCBAEDEgEXAzUBVgNQAZoBdgFmAVYB4QH/AXgB
AAL/AXgBAAH/AlEBUAGfAxIBGBQAAwMBBAMTARkDJQE2AjsBPAFkAkEBQgFyAzMBUQMhAS8DCQEMPAAD
XwHQA2wB7iAAA2EB1ANqAenAAAEpAU4BAgH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8B
UgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMARAB/wFSAYwBEAH/AVIBjAEQAf8BWgGUARAB/wFaAZUB
EAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGUARgB/wFaAZQBGAH/AWMBnAEYAf8B
YwGcARgB/wFjAaUBFwH/AWMBpQEXAf8BYwGlARcB/wFlAaABIQH/BAADHgErAjEBMAFMAzsBYwMiATED
BwEJAwQBBQMSARgDNgFXA1ABmgF2AWYBVgHhAf8BeAEAAv8BeAEAAf8CUQFQAZ8DEgEYHAADBwEJAxwB
JwMjATICGQEaASMDDwEUAwQBBTwAA18B0ANsAe4gAANhAdQDagHpvAADRgGAAU4BiAEHAf8BUgGMAQgB
/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBEAH/AVIB
jAEQAf8BUgGMARAB/wFaAZQBEAH/AVoBlwEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB
/wFaAZQBGAH/AVoBlAEYAf8BYwGcARgB/wFjAaEBGAH/AWMBpQEXAf8BYwGlARcB/wF4AboBLAH/AQgB
CgEAAf8EAAMkATQDRQF8AloBWAG3A04BlAM/AW0DKAE7Ax8BLAM5AV4DUAGaAXYBZgFWAeEB/wF4AQAC
/wF4AQAB/wJRAVABnwMSARgcAAMSARcDPAFmA0oBiQNAAW8DLgFHAw4BEjwAA18B0ANsAe4gAANhAdQD
agHpvAABNQFeAQcB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB
/wFSAYwBCAH/AVIBjAEIAf8BUgGMARAB/wFSAYwBEAH/AVoBlAEQAf8BWgGUARAB/wFaAZsBEAH/AVoB
nAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBlgEWAf8BWgGUARgB/wFdAZcBGAH/AWMBnAEYAf8BYwGlARcB
/wFjAaUBFwH/AXABswEgAf8BKwFQAQQB/wgAAycBOgJTAVEBogHWAWgBGAH7AYIBaAFQAecBXQFcAVoB
xAJDAUIBdQMxAU0CQAE/AW4CUQFQAZ8BewFlAVMB4wH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBwAAxkB
IgNOAZUCWwFhAc0CVgFXAbIDRAF6Ax0BKQMGAQgEAgQBMAADXwHQA2wB7iAAA2EB1ANqAem8AAFKAYQB
BgH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFnAakBFwH/AVIBjAEIAf8B
SgGEAQYB/wFKAYQBBgH/AVIBjAEQAf8BWgGUARAB/wFaAZcBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwB
EAH/AVoBnAEQAf8BWgGUARgB/wFaAZQBGAH/AV8BmAEYAf8BYwGeARgB/wFjAaUBFwH/AWsBqQEdAf8B
KQFQAQAB/wwAAyIBMQNOAZgBqwFvATYB8wGbAWkBOwHwAYIBagFRAeYBXQFaAVcBwgJVAVMBqgNTAacC
WQFXAbwBjwFsAUwB6wH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBwAAxQBGwJDAUQBdwJWAVkBtgJbAWEB
zQJWAVgBswM/AWwDJgE4AwwBDwMCAQMIAAMCAQMDDQERAw0BEQMNAREDDQERAw0BEQMNAREDDQERAw0B
EQMNAREDXwHTA20B7wMNAREDDQERAw0BEQMNAREDDQERAw0BEQMNAREDDQERA2IB1wNoAeoDDQERAw0B
EQMNAREDDQERAw0BEQMNAREDDQERAw0BEQMNAREDBAEFlAABSgGEAQYB/wFSAYwBCAH/AVIBjAEIAf8B
UgGMAQgB/wFSAYwBCAH/AWkBpAEeAf8BLAFQAQMB/wEIAQoBAAH/ATcBYQEHAf8BUgGMAQ4B/wFSAYwB
EAH/AX8BwQEyAf8BWwFeAVoB0wNaAb8BLwFZAQAB/wFEAXoBBQH/AVABigEIAf8BWgGcAQ4B/wFaAZwB
EAH/AVoBnAEQAf8BTwGGARAB/wFEAXQBDAH/A1oBvxAAAhoBGQEjA0QBewFhAV0BWwHKAW0BYwFaAdoB
hQFpAUwB6AGXAWkBPgHvAY8BbAFHAewBaQFhAVkB1gFoAWEBWQHYAa8BbQEwAfQB/wF4AQAC/wF4AQAB
/wJRAVABnwMSARgcAAMPARMDNAFTA00BkgJbAWUBzwJbAWoB1AJSAVQBqAJBAUIBcgMmATgDFAEbAwYB
CAMCAQMDWgHCA38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B
/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B
/wN/Af8DfwH/A2QB3JQAAUoBjAEAAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFnAZ0B
JwH/AQgBCgEAAf8BCgEPAQAB/wFCAXcBAwH/AVIBjAEQAf8BWgGcARAB/wElAUEBBQH/BAADOgFgAQgB
CgEAAf8BCAEKAQAB/wQAA0YBgANGAYADRgGAHAADCgENAyIBMQM0AVQDRAF4AlEBUAGfAWUBYQFbAc8B
lgFqAUUB7QGPAWwBRwHsAZsBaQE7AfAB1gFoARgB+wH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBwAAwYB
CAMYASEDMQFNAkwBTQGRAlgBXAG9AlsBZAHRAlkBXgHDAlEBUwGiAz0BZwIZARoBIwMMAQ8DQAFvA1UB
rQNVAa0DVQGtA1UBrQNVAa0DVQGtA1UBrQNVAa0DVQGtA2sB8AN9AfoDVQGtA1UBrQNVAa0DVQGtA1UB
rQNVAa0DVQGtA1UBrQNxAfEDfAH4A1UBrQNVAa0DVQGtA1UBrQNVAa0DVQGtA1UBrQNVAa0DVQGtA0cB
gZQAATsBbQECAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFTAY4BEAH/AQ8BGwEAAf8B
IwFDAQAB/wFSAYwBEAH/AVIBjAEQAf8BewG9ATAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoB
AAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/KAADAwEEAwkBCwMiATEDOAFbAk8BTgGXAWEBXwFcAcgB
gAFnAVEB5QHDAW8BKgH3AecBcAEQAf0B/wF4AQAC/wF4AQAB/wJRAVABnwMSARgcAAQBAwIBAwMVARwD
NQFWAksBTAGPAlwBYQHIAlQBcQHfAlMBewHjAlIBUwGlAzQBUwMcAScoAANfAdADbAHuIAADYQHUA2oB
6bwAAQgBCgEAAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AU4BggEPAf8B
SgGEAQYB/wFSAYwBEAH/AWMBpQEXAf8BCAEKAQAB/wEIAQoBAAH/ARMBIwEAAf8BQgFzAQYB/wEgAT8B
AAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/yAABAEDAwEEAwwBEAMYASAD
KQE9Az4BagJXAVYBtQGAAWcBUQHlAcMBbwEqAfcB/wF4AQAC/wF4AQAB/wJRAVABnwMSARggAAQBAwcB
CQMUARsDKgFAA0MBdgNVAa8CSQGFAekCWwFlAdACUAFRAZ8DMwFRKAADXwHQA2wB7iAAA2EB1ANqAenA
AAFCAXMBBgH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBEAH/AVIB
jAEQAf8BSgGEAQYB/wEQAR4BAAH/ATEBWgEAAf8BTQGEAQ0B/wFaAZwBEAH/AVoBnAEQAf8BUgGMAQgB
/wEQAR4BAAH/AQgBCgEAAf8BCAEKAQAB/wNGAYAsAAMCAQMDCwEOAyABLgNDAXYCVwFVAbEBdwFmAVUB
4AG2AW8BKQH2Ac0BagEeAfkCUQFQAZwDEgEXDAAEAQMMARADFwEfAx0BKAMdASgDDAEPCAADDwEUAiYB
JwE5AkcBSAGDAlYBdgHhAlABggHnAloBZQHSAj8BQAFuKAADXwHQA2wB7iAAA2EB1ANqAenEAAFJAYkB
AAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMARAB/wFSAYwBEAH/AVIBjAEQAf8B
UgGMARAB/wFaAZQBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGUARgB/wFCAXMB
BgH/AQoBDgEAAf8wAAQBAwMBBAMMAQ8DHgEqAzoBYQJZAVcBuQF6AWUBTwHkAZUBagFCAe4CTwFOAZcD
EgEXDAADAgEDAyEBLwM2AVkCQgFDAXUCQQFCAXMDHgErCAADBAEFAwwBDwM4AVwCWwFjAc4CRwGPAewC
PgGXAe8DRgF/KAADXwHQA2wB7iAAA2EB1ANqAenIAAE6AWsBAAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwB
CAH/AVIBjAEQAf8BUgGMARAB/wFaAZQBEAH/AVoBlAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8B
WgGcARAB/wFaAZQBGAH/AVoBlAEYAf8BYwGlARcB/wEZASwBAwH/OAADAgEDAwgBCgMgAS0CQQFAAXEC
TQFMAZEDUAGaAjsBOgFiAwwBDwwAAwMBBAMrAUEDRAF6A1MBpwNVAa0DNwFaAxgBIAMJAQsDBgEHAw0B
EQM5AV8CWwFkAdECPgGXAe8CNgGrAfMCRgFHAYEoAANfAdADbAHuIAADYQHUA2oB6cwAASwBVQEAAf8B
UgGMAQgB/wFSAYwBCAH/AVIBjAEQAf8BUgGMARAB/wFaAZQBEAH/AVoBlAEQAf8BWgGcARAB/wFaAZwB
EAH/AVoBnAEQAf8BWgGcARAB/wFaAZQBGAH/AVoBlAEYAf8BIQFBAQAB/0AABAIDBwEJAxAEFQEcAhYB
FQEdAw8BEwMCAQMMAAMDAQQDMANLAUwBjwJbAWEBygJWAXIB3gNOAZQDNAFTAxUBHAMNAREDHgErAkMB
RAF3AlQBcQHfAjwBpAHxAkkBhQHpA0QBeygAA18B0ANsAe4gAANhAdQDagHpyAABEgEiAQAB/wFMAYYB
BgH/AVIBjAEIAf8BWgGcARAB/wFQAYoBCAH/AVIBjAEQAf8BWgGUARAB/wFaAZwBEAH/AVoBnAEQAf8B
WgGcARAB/wFaAZwBEAH/AVoBnAERAf8BaQGrAR8B/wEIAQoBAAH/bAADAgEDAyEBLwM6AWEDVQGtAloB
bQHaAloBWwG/AlABUQGfA0QBegJBAUIBcgNJAYUCVgFXAbICRQGWAe0CWQFwAdsCVQFXAbEDOAFbKAAD
XwHQA2wB7iAAA2EB1ANqAenIAAEQAR4BAAH/AUgBfQEHAf8BWQGTARMB/wFVAYgBGAH/CAABIQFBAQAB
/wFCAXsBAAH/AVIBjAEIAf8BVQGRAQgB/wE5AWYBBAH/AUQBSQE+Ae94AAMGAQgDFwEfA0QBewJZAV8B
xgJPAXoB5AIwAa8B9AJCAZUB7gJCAZUB7gI8AaQB8QIpAbYB9gIQAdcB/AJZAVwBvgM+AWsDJAE0KAAD
XwHQA2wB7iAAA2EB1ANqAenQAAEeAToBAAH/nAAEAgMJAQwDKgM/AUABbgNOAZYCVgFYAbMCWQFcAcEC
WgFeAccCWgFeAccCVwFZAbkCUQFSAaQCQAFBAXEDJQE2AxMBGSgAA18B0ANsAe4gAANhAdQDagHp/wB5
AAQBAwsBDgMmATgDOQFeA0YBfQJKAUsBiwNKAYkDPgFrAyoBPwMXAR8DAgEDLAADUwGiA1oBvyAAA1QB
pgNZAbuoAAFCAU0BPgcAAT4DAAEoAwABgAMAASADAAEBAQABAQYAAQIWAAP/AQAD/wHHAgABBwL/Ac8B
8wH/BAAC/wHPAYcCAAEHAv8BzwHzAf8EAAH/Af4BAAEHAgABBwL/Ac8B8wH/BAAB/wH8AQABBwIAAQcC
/wHPAfMB/wQAAf8B+AEAAQ8CAAEHAv8BzwHzAf8EAAH/AfABAAEHAgABBwL/Ac8B8wH/BAAB/wHgAQAB
AwIAAQcC/wHPAfMB/wQAAf8BwAEAAQEB/AEDA/8BzwHzAf8EAAH/AcABAAEBAfwBAwP/Ac8B8wH/BAAB
/wHgAgAB/AEDAeABHwgAAf8B/AEgAQAB/AEDAeABHwgAAf8B/gHgAQAB/AEDAeABHwgAAf8BwAIAAfwB
AwHgAR8B/wHPAfMB/wQAAf8BgAIAAfwBAwHgAR8B/wHPAfMB/wQAAf8DAAH8AQMB4AEfAf8BzwHzAf8E
AAH+AgABAQEAAQMB4AEfAf8BzwHzAf8EAAH8AgABAQEAAQMB+AEfAf8BzwHzAf8EAAH4AgABAQEAAQMB
+AEfAf8BzwHzAf8EAAH4AgABAwEAAQMB+AEDAf8BzwHzAf8EAAH4AgABBwEAAQMB+AEDCAAB+AIAAQ8B
AAEDAfgJAAH4AQABRAF/AQABAwH4CQAB+AEAAQEB/wGAAQMB+AEAAf8BzwHzAf8EAAH4AgABfwGAAQMB
/AEAAf8BzwHzAf8EAAH8AgABfwHwAQMBgQGAAf8BzwHzAf8EAAH+AgAB/wHwAQMBgQGAAf8BzwHzAf8E
AAH/AgAB/wH8AQMBgAEAAf8BzwHzAf8EAAH/AYABAQH/Af4BAwGAAQAB/wHPAfMB/wQAAf8BAAEDA/8B
gAEAAf8BzwHzAf8EAAH/AQwBDwP/AcABAAH/Ac8B8wH/BAAB/wHfBP8BwAEAAf8BzwHzAf8EAAb/AfAB
AQH/Ac8B8wH/BAAL
</value>
</data>
<metadata name="ilTabIcons.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
@ -393,13 +393,13 @@
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAChkAAAJNU0Z0AUkBTAIBAQUB
AAHQAQAB0AEAARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAASADAAEBAQABIAYAASAa
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAABBkAAAJNU0Z0AUkBTAIBAQUB
AAHYAQAB2AEAARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAASADAAEBAQABIAYAASAa
AAM3AVoDWAG4A2MB3wJjAV0B3wFiAl0B3wNdAd8DXQHfAWECXQHfA2MB3wNjAd8DVQGsAzABS8wAAzsB
YgNdAcUBawJoAfQBnwFlATEB/wGXAVMBFwH/AZYBSwEJAf8BkwFGAQEB/wGMAUMBAwH/AX0BQAELAf8B
YgNdAcUBaQJoAfQBnwFlATEB/wGXAVMBFwH/AZYBSwEJAf8BkwFGAQEB/wGMAUMBAwH/AX0BQAELAf8B
awFAARoB/wFuAVABNgH/A2gB8ANaAbcDNAFUxAADNQFVA10BxwJuAVoB9QG4AWUBGwH/AbkBWAECAf8B
yQFfAQAB/wHYAWUBAAH/AdwBZwEAAf8B1gFkAQAB/wHDAVwBAAH/AaIBTAEAAf8BfAE7AQMB/wFuAUYB
IwH/A2gB8ANaAbcDMAFKwAADXAHEAYQBfAFcAfgB1AFxARgB/wHXAWUBAAH/AeUBbAEAAf8B8gFyAQAB
IwH/A2gB8ANaAbcDMAFKwAADXAHEAYEBfAFcAfgB1AFxARgB/wHXAWUBAAH/AeUBbAEAAf8B8gFyAQAB
/wH6AXUBAAH/AfwBdgEAAf8B+gF2AQAB/wHzAXIBAAH/AeIBawEAAf8BvQFZAQAB/wGHAUABAAH/AXEB
SAEjAf8DaAHwA1YBq8AAAf4B3QHBAf8B7QGAASAB/wHtAXEBAgH/AfMBcwEAAf8B+gF2AQAB/wH+AXgB
AAL/AXsBCAL/AYgBJwL/AaIBUwH/Af4BgQEXAf8B/AF4AQQB/wHsAW8BAAH/AcEBWwEAAf8BhgFBAQMB
@ -415,92 +415,92 @@
ZAEJAf8BYwFhAV0B38AAAf8BzAGfAv8BrAFjAv8BkwEzAv8BgQERAv8BeQECAv8BggEWAv8BmgFLAv8B
rgF4Av8BpQFXAv8BgQEXAv8BeQEEAv8BeAEAAv8BeAEAAf8B8AFxAQAB/wHVAXEBFwH/AmMBXQHfwAAB
/wHpAdUC/wG8AYEC/wGkAVQC/wGOASoC/wF/AQ0C/wF5AQIC/wF7AQkC/wGCAR0C/wF4AQAC/wF4AQAC
/wF4AQEC/wF6AQQC/wF6AQMB/wHzAXQBAwH/AeIBhAEyAf8DYwHfwAADXgHSAY8BiAF/AfkB/wG7AX0C
/wF4AQEC/wF6AQQC/wF6AQMB/wHzAXQBAwH/AeIBhAEyAf8DYwHfwAADXgHSAY4BhwF9AfkB/wG7AX0C
/wGjAVIC/wGQASwC/wGCARMC/wF9AQgC/wF6AQQC/wF5AQIC/wF6AQQC/wF9AQkC/wGAAQ8C/wF/AQ0B
/wH4AYYBIAH/AXQCaAH0A1gBuMAAAzwBZgNjAdUBiwF9AXwB+AH/Ab4BhQL/AaoBXwL/AZkBPgL/AY0B
JwL/AYYBGgL/AYMBFQL/AYUBGQL/AYoBIgL/AY0BKAL/AZMBMwH/AXEBbgFoAfUDXQHFAzYBWcQAA0IB
cgNjAdUBjwGKAYQB+QH/AckBmQL/AbwBfwL/Aa4BZgL/AaQBUwL/AZ8BSgL/AZ8BSwL/AaMBUQL/AacB
WAH/AYsCfAH4A10BxwM7AWLMAAM8AWUDXgHSAf8B7wHgAv8B3AG8Av8BzQGfAv8BwQGKAv8BuwF/Av8B
vwGGAv8BzQGhAv8B6QHWAf8DXAHEAzUBVcgAA2cB7wJnAVkB7wFnAV0BWQHvAWcBWwFZAe8BZwFbAVkB
7wFnAlkB7wFnAWQBWQHvA2cB7wNnAe8DZwHvA2cB7wNnAe8DZwHvA2cB7wNnAe8DZwHvOAADMwFRA3AB
9QMHAQkDKgE/A0UBfANZAbsDYwHfA2gB9AOAAf4DgQH/A4EB/wOBAf8DgAH+A2gB9ANjAd8DWgG6A0QB
egMnAToIAAM3AVoDWAG4A2MB3wJjAV0B3wFiAl0B3wNdAd8DXQHfAWECXQHfA2MB3wNjAd8DVQGsAzAB
SwgAA/gB/wG5AZUBPAH/AYMBfQFuAf8BhAF9AWwB/wGqAYQBJwH/AawBewEAAf8BzAG8AZQB/wN+Af8D
fgH/A34B/wN+Af8DfgH/A34B/wN+Af8DfgH/A44B/zgAAxIBGAM/AW0DQwF1A10BzAN8AfgDgQH/A4EB
/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wN8AfgDVAGoBAADOwFiA10BxQFrAmgB
9AGfAWUBMQH/AZcBUwEXAf8BlgFLAQkB/wGTAUYBAQH/AYwBQwEDAf8BfQFAAQsB/wFrAUABGgH/AW4B
UAE2Af8DaAHwA1oBtwM0AVQEAAT/AZcBiwFtAf8CgQGAAf8BggGBAYAB/wGYAYgBYAH/AcoBkAEAAf8B
3QHMAZ8B/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A5MB/zQAA18B0wM9AWcEAANqAe0D
fQH6A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wNVAa8D
NQFVA10BxwJuAVoB9QG4AWUBGwH/AbkBWAECAf8ByQFfAQAB/wHYAWUBAAH/AdwBZwEAAf8B1gFkAQAB
/wHDAVwBAAH/AaIBTAEAAf8BfAE7AQMB/wFuAUYBIwH/A2gB8ANaAbcDMAFKBP8BhgGEAX0B/wOBAf8D
gQH/AYcBgwF6Af8BzwGUAQAB/wHeAcwBnwH/A+AB/wPgAf8D4AH/A+AB/wPgAf8D4AH/A+AB/wPgAf8D
vAH/NAADWgHCAzQBUwQAA2MB3wNuAfUDgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8D
gQH/A4EB/wOBAf8DgQH/A1UBrwNcAcQBhAF8AVwB+AHUAXEBGAH/AdcBZQEAAf8B5QFsAQAB/wHyAXIB
AAH/AfoBdQEAAf8B/AF2AQAB/wH6AXYBAAH/AfMBcgEAAf8B4gFrAQAB/wG9AVkBAAH/AYcBQAEAAf8B
cQFIASMB/wNoAfADVgGrBP8BiwGGAXoB/wOBAf8DgQH/AY4BhgFxAf8BzwGUAQAB/wHeAcwBnyH/A8oB
/xAAAw0BEQM/AWwDUwGnAVwCWQG+AVgCVgGzAUgCRwGDAyEBMAQAA28B8wM6AWAIAAM2AVgDWwHAA24B
9QOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A2gB9ANSAaQB/gHdAcEB
/wHtAYABIAH/Ae0BcQECAf8B8wFzAQAB/wH6AXYBAAH/Af4BeAEAAv8BewEIAv8BiAEnAv8BogFTAf8B
/gGBARcB/wH8AXgBBAH/AewBbwEAAf8BwQFbAQAB/wGGAUEBAwH/AXgBVgE2Af8DYwHfBP8BrAGWAWAB
/wGDAYIBfwH/AYUBggF9Af8BswGTAUQB/wHPAZQBAAH/Ad4BzAGfAf8DsAH/A7AB/wOwAf8DsAH/A7AB
/wOwAf8DsAH/A7AB/wOoAf8IAAMaASQDUgGgAmMBSAH2AaIBcwEAAf8BrgF8AQAB/wGwAX0BAAH/AagB
eAEAAf8BlQFqAQAB/wGAAW4BGgH+AVwCWQHGA1cBtQMWAR4IAAMCAQMDGgEjAzgBXANUAagDYgHXA3AB
8QOAAf4DgQH/A4EB/wOBAf8DgQH9A2gB8ANhAdQDUwGlAzYBWQMYASAB/wGyAW8B/wH9AYABEQH/AfwB
dwEBAf8B/QF3AQAC/wF4AQAC/wF/AQ8C/wGSATsC/wGzAYMC/wHqAeAC/wGQAT0C/wF7AQoB/wH8AXcB
AAH/AeUBbAEAAf8BsQFUAQAB/wGEAUsBGgH/A2MB3wT/AdkBqgE3Af8BvgGYATgB/wHAAZgBNgH/AdwB
ogEUAf8BzwGUAQAB/wHeAcwBnwH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DkwH/BAAD
IAEtAmMBWgHpAb8BiAEAAf8BzQGVAQoB/wGwAYgBJwH/AXMBZAE/Af8BTQFLAUcB/wFOAUsBQgH/AWYB
VwExAf8BmgF0ARcB/wGkAXYBAwH/AXABTwEAAf8DQwF2BAFEAAH/AZoBQgL/AYMBFQH/Af4BegEEAv8B
eAEAAv8BeAEAAv8BlQE/Av8BygGuAv8B2gHGAv8B7QHlAv8BlgFJAv8BfAENAf8B/gF4AQAB/wH0AXMB
AAH/AdABYgEAAf8BmgFOAQoB/wFjAl0B3wT/AeEBrgExAf8BvQGXATsB/wHAAZgBNQH/AeMBpQEKAf8B
zwGUAQAB/wHeAcwBnwH/A8AB/wPAAf8DwAH/A8AB/wPAAf8DwAH/A8AB/wPAAf8DrwH/BAACYwFaAekB
2QGaAQAB/wHaAaMBHAH/Ao4BjAH/A4oB/wOXAf8DmwH/A5EB/wN0Af8DSAH/AUMBQgE/Af8BtQGDAQcB
/wF6AVcBAAH/AzYBWAwAAwIBAwMIAQoDIQEvAzEBTgM9AWgDQwF2A0QBegNDAXUDPQFnAzEBTQMgAS4D
BwEJBAIEAAH/AZUBNwL/AYkBHwL/AX0BCAL/AXgBAAL/AXgBAAL/AagBXAL/AeABzQL/AaEBZgL/AdgB
xQL/AbkBlAL/AYcBIwL/AXgBAAH/AfsBdgEAAf8B4gFqAQAB/wGvAVQBAwH/AWMCXQHfBP8BuwGdAVMB
/wGIAYQBeQH/AYwBhQF0Af8BxAGZATAB/wHPAZQBAAH/Ad4BzAGfIf8DygH/A0MBdgHpAacBAgH/AekB
qwESAf8B0AHKAbsB/wOsAf8DXQH/A0wB/wNLAf8DRAH/Aw8B/wOzAf8DZgH/AVQBTAE6Af8BrgF9AQQB
/wNdAcwIAAMTARoDOQFdA1kBvANkAdsDagHtA2MB9gNfAfsDgQH9A18B+wNjAfYDZQHsA2MB2gNaAboD
OAFcAxMBGgH/AaABSQL/AZIBMQL/AYEBEQL/AXkBAwL/AXgBAAL/AagBXAL/AeABzQL/AaEBZgL/AdgB
xQL/AcABnwL/AYkBJwL/AXgBAAH/Af4BeAEAAf8B7AFvAQAB/wG/AVoBAgH/AWMCXQHfBP8BlAGKAXMB
/wOBAf8DgQH/AZoBigFjAf8BzwGUAQAB/wHeAcwBnwH/A9AB/wPQAf8D0AH/A9AB/wPQAf8D0AH/A9AB
/wPQAf8DtQH/AmoBYQHmAe0BrQEQAf8B9AHQAXYB/wP6Af8D+gH/A30B/wN/Af8DgAH/A4AB/wN+Af8D
hAH/A7sB/wNqAf8BqAGAARwB/wJjAUgB9gQAAxoBJANWAa4DaAH0A4EB/wOBAf8DgQH/A4EB/wOBAf8D
gQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DawHyA1IBoQH/AbMBbwL/AZ4BSAL/AYgBHgL/AXwBBwL/AXgB
AAL/AZgBQwL/Ac4BtAL/AdcBwAL/AeoB4AL/AZ0BVwL/AX4BEQL/AXgBAAL/AXgBAAH/AfABcQEAAf8B
ywFkAQkB/wFjAWEBXQHfBP8BhgGDAX4B/wOBAf8DgQH/AYYBgwF7Af8BzwGUAQAB/wHeAcwBnwH/A4EB
/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DkwH/AWYBYwFiAe4B7wG0ASEB/wH3AdwBlwn/A5EB
/wOIAf8DhwH/A4cB/wOBAf8DVwH/A+YB/wOjAf8BtgGRATYB/wGBAWoBQQH5BAADVwGyA2UB5wOBAf8D
gQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DVQGvAf8BzAGfAv8B
rAFjAv8BkwEzAv8BgQERAv8BeQECAv8BggEWAv8BmgFLAv8BrgF4Av8BpQFXAv8BgQEXAv8BeQEEAv8B
eAEAAv8BeAEAAf8B8AFxAQAB/wHVAXEBFwH/AmMBXQHfBP8BiwGGAXkB/wOBAf8DgQH/AY4BhgFxAf8B
zwGUAQAB/wHeAcwBnwH/A6EB/wOhAf8DoQH/A6EB/wOhAf8DoQH/A6EB/wOhAf8DoQH/A0sBjQHwAb4B
PwH/AfQBzQFsIf8D+wH/A9AB/wHXAacBMQH/AmEBXQHRBAADbwHzA18B+wOBAf8DgQH/A4EB/wOBAf8D
gQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DVQGvAf8B6QHVAv8BvAGBAv8BpAFUAv8B
jgEqAv8BfwENAv8BeQECAv8BewEJAv8BggEdAv8BeAEAAv8BeAEAAv8BeAEBAv8BegEEAv8BegEDAf8B
8wF0AQMB/wHiAYQBMgH/A2MB3wT/AacBlAFnAf8BgwGCAX8B/wGFAYMBfgH/AbABlAFOAf8B0wGXAQIB
/wHgAc4BnwH/A+cB/wPnAf8D5wH/A+cB/wPnAf8D5wH/A+cB/wPnAf8DwAH/AwcBCQFmAWQBYgHuAfEB
vAE7Af8B+gHqAcIB/wPcAf8DdwH/A2gB/wNoAf8DaAH/AzIJ/wHyAd0BqQH/AeoBqQEIAf8DPgFqBAAD
ZAHbA2gB9AOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8D
VQGvA14B0gGPAYgBfwH5Af8BuwF9Av8BowFSAv8BkAEsAv8BggETAv8BfQEIAv8BegEEAv8BeQECAv8B
egEEAv8BfQEJAv8BgAEPAv8BfwENAf8B+AGGASAB/wF0AmgB9ANYAbgE/wHXAbEBUgH/AZoBjwF0Af8B
oAGSAW0B/wHgAa8BNwH/AecBqQEQAf8B6wHVAaAB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8D
gQH/A5MB/wQAAzMBUQNoAfAB8wHGAVgB/wH6AecBuBb/Af4B+wH/AfkB4gGqAf8B7wG4AS0B/wNOAZYE
AgQAAzwBZANfAckDfQH6A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8D
fQH6A1UBqgM8AWYDYwHVAYsBfQF8AfgB/wG+AYUC/wGqAV8C/wGZAT4C/wGNAScC/wGGARoC/wGDARUC
/wGFARkC/wGKASIC/wGNASgC/wGTATMB/wFxAW4BaAH1A10BxQM2AVkE/wH0Ac0BbAH/AfQBywFmAf8B
9AHLAWUB/wH0AcsBZQH/AfEBwQFJAf8B+QHjAawB/wOJAf8DiQH/A4kB/wOJAf8DiQH/A4kB/wOJAf8D
iQH/A5oB/wgAAyIBMQNfAckBmAF+AWcB+gHzAcoBZQH/AfkB4QGmAf8B+wHtAcwB/wH7AewByAH/AfgB
3QGbAf8BvgGQAWsB/gJlAV4B4gM9AWgEAQgAAwYBCAMxAUwDUAGbA2UB7AN9AfoDgQH/A4EB/wOBAf8D
gQH/A4EB/wOBAf8DgQH/A30B+gNqAe0DUAGbAy8BSQQAA0IBcgNjAdUBjwGKAYQB+QH/AckBmQL/AbwB
fwL/Aa4BZgL/AaQBUwL/AZ8BSgL/AZ8BSwL/AaMBUQL/AacBWAH/AYsCfAH4A10BxwM7AWIEAED/EAAD
DwETA0cBggNkAdsBrAGSAW8B/ANnAeoDVAGoAygBOxwAAwUBBgMSARcDOgFgA1EBnwNfAdMDZwHvA2MB
9gNiAe4DXgHSA1EBngM5AV8DEQEWAwUBBgwAAzwBZQNeAdIB/wHvAeAC/wHcAbwC/wHNAZ8C/wHBAYoC
/wG7AX8C/wG/AYYC/wHNAaEC/wHpAdYB/wNcAcQDNQFVCAABQgFNAT4HAAE+AwABKAMAAUADAAEgAwAB
AQEAAQEGAAEBFgAD/wEAAcABAwYAAYABAWYAAYABAQYAAcABAwgAAf8B/AIAAcABAwIAAf8B/AIAAYAB
AQIAAf8B+QYAAf8B+QYAAfABEwYAAcABAwYAAYABAQL/BAABgAEBAcABAQUAAQEBgAYAAQEHAAEBBwAB
AQcAAQEGAAGAAQEGAAHAAQMCAAGAAQECAAHwAR8BwAEBAcABAws=
/wH4AYYBIAH/AXMCaAH0A1gBuMAAAzwBZgNjAdUBiAJ8AfgB/wG+AYUC/wGqAV8C/wGZAT4C/wGNAScC
/wGGARoC/wGDARUC/wGFARkC/wGKASIC/wGNASgC/wGTATMB/wFwAW4BaAH1A10BxQM2AVnEAANCAXID
YwHVAY4BiQGDAfkB/wHJAZkC/wG8AX8C/wGuAWYC/wGkAVMC/wGfAUoC/wGfAUsC/wGjAVEC/wGnAVgB
/wGIAnwB+ANdAccDOwFizAADPAFlA14B0gH/Ae8B4AL/AdwBvAL/Ac0BnwL/AcEBigL/AbsBfwL/Ab8B
hgL/Ac0BoQL/AekB1gH/A1wBxAM1AVXIAANnAe8CZwFZAe8BZwFdAVkB7wFnAVsBWQHvAWcBWwFZAe8B
ZwJZAe8BZwFkAVkB7wNnAe8DZwHvA2cB7wNnAe8DZwHvA2cB7wNnAe8DZwHvA2cB7zgAAzMBUQNvAfUD
BwEJAyoBPwNFAXwDWQG7A2MB3wNoAfQDgAH+A4EB/wOBAf8DgQH/A4AB/gNoAfQDYwHfA1oBugNEAXoD
JwE6CAADNwFaA1gBuANjAd8CYwFdAd8BYgJdAd8DXQHfA10B3wFhAl0B3wNjAd8DYwHfA1UBrAMwAUsI
AAP4Af8BuQGVATwB/wGDAX0BbgH/AYQBfQFsAf8BqgGEAScB/wGsAXsBAAH/AcwBvAGUAf8DfgH/A34B
/wN+Af8DfgH/A34B/wN+Af8DfgH/A34B/wOOAf84AAMSARgDPwFtA0MBdQNdAcwDfAH4A4EB/wOBAf8D
gQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DfAH4A1QBqAQAAzsBYgNdAcUBaQJoAfQB
nwFlATEB/wGXAVMBFwH/AZYBSwEJAf8BkwFGAQEB/wGMAUMBAwH/AX0BQAELAf8BawFAARoB/wFuAVAB
NgH/A2gB8ANaAbcDNAFUBAAE/wGXAYsBbQH/AoEBgAH/AYIBgQGAAf8BmAGIAWAB/wHKAZABAAH/Ad0B
zAGfAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOTAf80AANfAdMDPQFnBAADagHtA30B
+gOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DVQGvAzUB
VQNdAccCbgFaAfUBuAFlARsB/wG5AVgBAgH/AckBXwEAAf8B2AFlAQAB/wHcAWcBAAH/AdYBZAEAAf8B
wwFcAQAB/wGiAUwBAAH/AXwBOwEDAf8BbgFGASMB/wNoAfADWgG3AzABSgT/AYYBhAF9Af8DgQH/A4EB
/wGHAYMBegH/Ac8BlAEAAf8B3gHMAZ8B/wPgAf8D4AH/A+AB/wPgAf8D4AH/A+AB/wPgAf8D4AH/A7wB
/zQAA1oBwgM0AVMEAANjAd8DbgH1A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB
/wOBAf8DgQH/A4EB/wNVAa8DXAHEAYEBfAFcAfgB1AFxARgB/wHXAWUBAAH/AeUBbAEAAf8B8gFyAQAB
/wH6AXUBAAH/AfwBdgEAAf8B+gF2AQAB/wHzAXIBAAH/AeIBawEAAf8BvQFZAQAB/wGHAUABAAH/AXEB
SAEjAf8DaAHwA1YBqwT/AYsBhgF6Af8DgQH/A4EB/wGOAYYBcQH/Ac8BlAEAAf8B3gHMAZ8h/wPKAf8Q
AAMNAREDPwFsA1MBpwFcAlkBvgFYAlYBswFIAkcBgwMhATAEAANvAfMDOgFgCAADNgFYA1sBwANuAfUD
gQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wNoAfQDUgGkAf4B3QHBAf8B
7QGAASAB/wHtAXEBAgH/AfMBcwEAAf8B+gF2AQAB/wH+AXgBAAL/AXsBCAL/AYgBJwL/AaIBUwH/Af4B
gQEXAf8B/AF4AQQB/wHsAW8BAAH/AcEBWwEAAf8BhgFBAQMB/wF4AVYBNgH/A2MB3wT/AawBlgFgAf8B
gwGCAX8B/wGFAYIBfQH/AbMBkwFEAf8BzwGUAQAB/wHeAcwBnwH/A7AB/wOwAf8DsAH/A7AB/wOwAf8D
sAH/A7AB/wOwAf8DqAH/CAADGgEkA1IBoAJjAUgB9gGiAXMBAAH/Aa4BfAEAAf8BsAF9AQAB/wGoAXgB
AAH/AZUBagEAAf8BgAFvARsB/gFcAlkBxgNXAbUDFgEeCAADAgEDAxoBIwM4AVwDVAGoA2IB1wNwAfED
gAH+A4EB/wOBAf8DgQH/A4EB/QNoAfADYQHUA1MBpQM2AVkDGAEgAf8BsgFvAf8B/QGAAREB/wH8AXcB
AQH/Af0BdwEAAv8BeAEAAv8BfwEPAv8BkgE7Av8BswGDAv8B6gHgAv8BkAE9Av8BewEKAf8B/AF3AQAB
/wHlAWwBAAH/AbEBVAEAAf8BhAFLARoB/wNjAd8E/wHZAaoBNwH/Ab4BmAE4Af8BwAGYATYB/wHcAaIB
FAH/Ac8BlAEAAf8B3gHMAZ8B/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A5MB/wQAAyAB
LQJjAVoB6QG/AYgBAAH/Ac0BlQEKAf8BsAGIAScB/wFzAWQBPwH/AU0BSwFHAf8BTgFLAUIB/wFmAVcB
MQH/AZoBdAEXAf8BpAF2AQMB/wFwAU8BAAH/A0MBdgQBRAAB/wGaAUIC/wGDARUB/wH+AXoBBAL/AXgB
AAL/AXgBAAL/AZUBPwL/AcoBrgL/AdoBxgL/Ae0B5QL/AZYBSQL/AXwBDQH/Af4BeAEAAf8B9AFzAQAB
/wHQAWIBAAH/AZoBTgEKAf8BYwJdAd8E/wHhAa4BMQH/Ab0BlwE7Af8BwAGYATUB/wHjAaUBCgH/Ac8B
lAEAAf8B3gHMAZ8B/wPAAf8DwAH/A8AB/wPAAf8DwAH/A8AB/wPAAf8DwAH/A68B/wQAAmMBWgHpAdkB
mgEAAf8B2gGjARwB/wKOAYwB/wOKAf8DlwH/A5sB/wORAf8DdAH/A0gB/wFDAUIBPwH/AbUBgwEHAf8B
egFXAQAB/wM2AVgMAAMCAQMDCAEKAyEBLwMxAU4DPQFoA0MBdgNEAXoDQwF1Az0BZwMxAU0DIAEuAwcB
CQQCBAAB/wGVATcC/wGJAR8C/wF9AQgC/wF4AQAC/wF4AQAC/wGoAVwC/wHgAc0C/wGhAWYC/wHYAcUC
/wG5AZQC/wGHASMC/wF4AQAB/wH7AXYBAAH/AeIBagEAAf8BrwFUAQMB/wFjAl0B3wT/AbsBnQFTAf8B
iAGEAXkB/wGMAYUBdAH/AcQBmQEwAf8BzwGUAQAB/wHeAcwBnyH/A8oB/wNDAXYB6QGnAQIB/wHpAasB
EgH/AdABygG7Af8DrAH/A10B/wNMAf8DSwH/A0QB/wMPAf8DswH/A2YB/wFUAUwBOgH/Aa4BfQEEAf8D
XQHMCAADEwEaAzkBXQNZAbwDZAHbA2oB7QNjAfYDXwH7A4EB/QNfAfsDYwH2A2UB7ANjAdoDWgG6AzgB
XAMTARoB/wGgAUkC/wGSATEC/wGBAREC/wF5AQMC/wF4AQAC/wGoAVwC/wHgAc0C/wGhAWYC/wHYAcUC
/wHAAZ8C/wGJAScC/wF4AQAB/wH+AXgBAAH/AewBbwEAAf8BvwFaAQIB/wFjAl0B3wT/AZQBigFzAf8D
gQH/A4EB/wGaAYoBYwH/Ac8BlAEAAf8B3gHMAZ8B/wPQAf8D0AH/A9AB/wPQAf8D0AH/A9AB/wPQAf8D
0AH/A7UB/wJqAWEB5gHtAa0BEAH/AfQB0AF2Af8D+gH/A/oB/wN9Af8DfwH/A4AB/wOAAf8DfgH/A4QB
/wO7Af8DagH/AagBgAEcAf8CYwFIAfYEAAMaASQDVgGuA2gB9AOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB
/wOBAf8DgQH/A4EB/wOBAf8DgQH/A2sB8gNSAaEB/wGzAW8C/wGeAUgC/wGIAR4C/wF8AQcC/wF4AQAC
/wGYAUMC/wHOAbQC/wHXAcAC/wHqAeAC/wGdAVcC/wF+AREC/wF4AQAC/wF4AQAB/wHwAXEBAAH/AcsB
ZAEJAf8BYwFhAV0B3wT/AYYBgwF+Af8DgQH/A4EB/wGGAYMBewH/Ac8BlAEAAf8B3gHMAZ8B/wOBAf8D
gQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A5MB/wFlAmIB7gHvAbQBIQH/AfcB3AGXCf8DkQH/A4gB
/wOHAf8DhwH/A4EB/wNXAf8D5gH/A6MB/wG2AZEBNgH/AYABagFBAfkEAANXAbIDZQHnA4EB/wOBAf8D
gQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wNVAa8B/wHMAZ8C/wGsAWMC
/wGTATMC/wGBAREC/wF5AQIC/wGCARYC/wGaAUsC/wGuAXgC/wGlAVcC/wGBARcC/wF5AQQC/wF4AQAC
/wF4AQAB/wHwAXEBAAH/AdUBcQEXAf8CYwFdAd8E/wGLAYYBeQH/A4EB/wOBAf8BjgGGAXEB/wHPAZQB
AAH/Ad4BzAGfAf8DoQH/A6EB/wOhAf8DoQH/A6EB/wOhAf8DoQH/A6EB/wOhAf8DSwGNAfABvgE/Af8B
9AHNAWwh/wP7Af8D0AH/AdcBpwExAf8CYQFdAdEEAANvAfMDXwH7A4EB/wOBAf8DgQH/A4EB/wOBAf8D
gQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wNVAa8B/wHpAdUC/wG8AYEC/wGkAVQC/wGOASoC
/wF/AQ0C/wF5AQIC/wF7AQkC/wGCAR0C/wF4AQAC/wF4AQAC/wF4AQEC/wF6AQQC/wF6AQMB/wHzAXQB
AwH/AeIBhAEyAf8DYwHfBP8BpwGUAWcB/wGDAYIBfwH/AYUBgwF+Af8BsAGUAU4B/wHTAZcBAgH/AeAB
zgGfAf8D5wH/A+cB/wPnAf8D5wH/A+cB/wPnAf8D5wH/A+cB/wPAAf8DBwEJAWUBYwFiAe4B8QG8ATsB
/wH6AeoBwgH/A9wB/wN3Af8DaAH/A2gB/wNoAf8DMgn/AfIB3QGpAf8B6gGpAQgB/wM+AWoEAANkAdsD
aAH0A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wNVAa8D
XgHSAY4BhwF9AfkB/wG7AX0C/wGjAVIC/wGQASwC/wGCARMC/wF9AQgC/wF6AQQC/wF5AQIC/wF6AQQC
/wF9AQkC/wGAAQ8C/wF/AQ0B/wH4AYYBIAH/AXMCaAH0A1gBuAT/AdcBsQFSAf8BmgGPAXQB/wGgAZIB
bQH/AeABrwE3Af8B5wGpARAB/wHrAdUBoAH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8D
kwH/BAADMwFRA2gB8AHzAcYBWAH/AfoB5wG4Fv8B/gH7Af8B+QHiAaoB/wHvAbgBLQH/A04BlgQCBAAD
PAFkA18ByQN9AfoDgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wN9AfoD
VQGqAzwBZgNjAdUBiAJ8AfgB/wG+AYUC/wGqAV8C/wGZAT4C/wGNAScC/wGGARoC/wGDARUC/wGFARkC
/wGKASIC/wGNASgC/wGTATMB/wFwAW4BaAH1A10BxQM2AVkE/wH0Ac0BbAH/AfQBywFmAf8B9AHLAWUB
/wH0AcsBZQH/AfEBwQFJAf8B+QHjAawB/wOJAf8DiQH/A4kB/wOJAf8DiQH/A4kB/wOJAf8DiQH/A5oB
/wgAAyIBMQNfAckBlQF9AWcB+gHzAcoBZQH/AfkB4QGmAf8B+wHtAcwB/wH7AewByAH/AfgB3QGbAf8B
vAGOAWwB/gJlAV4B4gM9AWgEAQgAAwYBCAMxAUwDUAGbA2UB7AN9AfoDgQH/A4EB/wOBAf8DgQH/A4EB
/wOBAf8DgQH/A30B+gNqAe0DUAGbAy8BSQQAA0IBcgNjAdUBjgGJAYMB+QH/AckBmQL/AbwBfwL/Aa4B
ZgL/AaQBUwL/AZ8BSgL/AZ8BSwL/AaMBUQL/AacBWAH/AYgCfAH4A10BxwM7AWIEAED/EAADDwETA0cB
ggNkAdsBqgGPAW8B/ANnAeoDVAGoAygBOxwAAwUBBgMSARcDOgFgA1EBnwNfAdMDZwHvA2MB9gNiAe4D
XgHSA1EBngM5AV8DEQEWAwUBBgwAAzwBZQNeAdIB/wHvAeAC/wHcAbwC/wHNAZ8C/wHBAYoC/wG7AX8C
/wG/AYYC/wHNAaEC/wHpAdYB/wNcAcQDNQFVCAABQgFNAT4HAAE+AwABKAMAAUADAAEgAwABAQEAAQEG
AAEBFgAD/wEAAcABAwYAAYABAWYAAYABAQYAAcABAwgAAf8B/AIAAcABAwIAAf8B/AIAAYABAQIAAf8B
+QYAAf8B+QYAAfABEwYAAcABAwYAAYABAQL/BAABgAEBAcABAQUAAQEBgAYAAQEHAAEBBwABAQcAAQEG
AAGAAQEGAAHAAQMCAAGAAQECAAHwAR8BwAEBAcABAws=
</value>
</data>
<metadata name="ilStoreIcons.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">

View File

@ -1,5 +1,6 @@
using Krypton.Toolkit;
using Microsoft.AspNetCore.Mvc.Routing;
using Microsoft.VisualBasic.ApplicationServices;
using qtcnet_client.Controls;
using qtcnet_client.Forms;
using qtcnet_client.Model;
@ -26,6 +27,8 @@ namespace qtcnet_client
private readonly List<ChatRoomForm> OpenChatRoomForms = [];
private readonly List<ProfileForm> OpenProfileForms = [];
private readonly List<Contact> UserContactsList = [];
private Size LoggedOutSize = new(615, 702);
private Size LoggedInSize = new(419, 715);
@ -278,11 +281,102 @@ namespace qtcnet_client
}
}
private void MainTabControl_OnContactControlDoubleClicked(object? sender, EventArgs e)
private async void MainTabControl_OnContactControlDoubleClicked(object? sender, EventArgs e)
{
if (sender is ContactControl _)
if (sender is ContactControl _contactCtrl)
{
var _user = await _apiService.GetUserInformationAsync(_contactCtrl.UserId);
if (_user.Success && _user.Data != null)
{
// create a profile form
ProfileForm _profile = new(_apiService)
{
UserId = _user.Data.Id,
Username = _user.Data.Username,
Bio = _user.Data.Bio,
Status = _user.Data.Status,
};
// check if user is in contacts list (if profile isn't self)
var _contact = UserContactsList.FirstOrDefault(e => e.OwnerId == _user.Data.Id || e.UserId == _user.Data.Id);
if (_contact != null)
{
// set contact status
if (_contact.UserId == _apiService.CurrentUser?.Id)
_profile.ContactStatus = _contact.UserStatus;
else
_profile.ContactStatus = _contact.OwnerStatus;
}
else
_profile.ContactStatus = Contact.ContactStatus.NoRelation;
// get profile image
var _pfpBytes = await _apiService.GetUserProfilePic(_contactCtrl.UserId);
if (_pfpBytes.Success && _pfpBytes.Data != null)
{
using var ms = new MemoryStream(_pfpBytes.Data);
Image img = Image.FromStream(ms);
_profile.ProfileImage = img;
}
_profile.OnClose += ProfileForm_OnClose;
OpenProfileForms.Add(_profile);
_profile.Show();
}
}
}
private async void MainTabControl_OnUserItemDoubleClicked(object? sender, EventArgs e)
{
if(sender is MainTabControl _mtCtrl)
{
if(_mtCtrl.SelectedUser != null)
{
// get the user to open the profile for
if(_mtCtrl.SelectedUser.Tag is string _tagString)
{
var _user = await _apiService.GetUserInformationAsync(_tagString);
if (_user.Success && _user.Data != null)
{
// create a profile form
ProfileForm _profile = new(_apiService)
{
UserId = _user.Data.Id,
Username = _user.Data.Username,
Bio = _user.Data.Bio,
Status = _user.Data.Status,
};
// check if user is in contacts list (if profile isn't self)
var _contact = UserContactsList.FirstOrDefault(e => e.OwnerId == _user.Data.Id || e.UserId == _user.Data.Id);
if (_contact != null)
{
// set contact status
if (_contact.OwnerId == _apiService.CurrentUser?.Id)
_profile.ContactStatus = _contact.UserStatus;
else
_profile.ContactStatus = _contact.OwnerStatus;
}
else
_profile.ContactStatus = Contact.ContactStatus.NoRelation;
// get profile image
var _pfpBytes = await _apiService.GetUserProfilePic(_tagString);
if(_pfpBytes.Success && _pfpBytes.Data != null)
{
using var ms = new MemoryStream(_pfpBytes.Data);
Image img = Image.FromStream(ms);
_profile.ProfileImage = img;
}
_profile.OnClose += ProfileForm_OnClose;
OpenProfileForms.Add(_profile);
_profile.Show();
}
}
}
}
}
@ -295,9 +389,21 @@ namespace qtcnet_client
}
}
private void _apiService_OnCurrentUserUpdate(object? sender, EventArgs e)
private async void _apiService_OnCurrentUserUpdate(object? sender, EventArgs e)
{
throw new NotImplementedException();
// set everything in the current user profile
CurrentProfileControl?.Username = _apiService.CurrentUser?.Username ?? "Username";
CurrentProfileControl?.CurrencyCount = _apiService.CurrentUser?.CurrencyAmount ?? 0;
var _pfpRes = await _apiService.GetUserProfilePic(_apiService.CurrentUser!.Id);
if (_pfpRes.Success && _pfpRes.Data != null)
{
using var ms = new MemoryStream(_pfpRes.Data);
Image img = Image.FromStream(ms);
CurrentProfileControl?.ProfileImage = img;
}
CurrentProfileControl?.RefreshInfo();
}
private void _gatewayService_OnUserForceLogout(object? sender, EventArgs e)
@ -315,7 +421,16 @@ namespace qtcnet_client
// get and set contacts
var _currentUserContacts = await _apiService.GetCurrentUserContacts();
if (_currentUserContacts.Success && _currentUserContacts.Data != null)
{
UserContactsList.Clear();
UserContactsList.AddRange([.. _currentUserContacts.Data.DistinctBy(c => c.Id)]);
await SetupContactsUI(_currentUserContacts.Data);
} else
{
// if no contacts are found, just clear the lists
UserContactsList.Clear();
await SetupContactsUI([]);
}
}
private async void _gatewayService_OnRefreshRoomListReceived(object? sender, EventArgs e)
@ -457,11 +572,16 @@ namespace qtcnet_client
MainTabControl.OnRoomControlDoubleClicked += MainTabControl_OnRoomControlDoubleClicked;
MainTabControl.OnContactControlDoubleClicked += MainTabControl_OnContactControlDoubleClicked;
MainTabControl.OnUserItemDoubleClicked += MainTabControl_OnUserItemDoubleClicked;
// get and set contacts
var _currentUserContacts = await _apiService.GetCurrentUserContacts();
if (_currentUserContacts.Success && _currentUserContacts.Data != null)
{
UserContactsList.Clear();
UserContactsList.AddRange([.. _currentUserContacts.Data.DistinctBy(c => c.Id)]);
await SetupContactsUI(_currentUserContacts.Data);
}
// get and set rooms
var _roomList = await _apiService.GetAllRoomsAsync();
@ -602,6 +722,7 @@ namespace qtcnet_client
{
var ctrl = new ContactControl
{
UserId = user.Data.Id,
Username = user.Data.Username,
TextStatus = "NOT IMPLEMENTED",
Status = user.Data.Status,

View File

@ -32,10 +32,14 @@
lblStatus = new Label();
rtxtBio = new RichTextBox();
tlpActionButtons = new TableLayoutPanel();
btnAction1 = new Button();
btnAction2 = new Button();
tlpUsernameTags = new TableLayoutPanel();
lblUsername = new Label();
tlpTagIcons = new TableLayoutPanel();
btnSaveProfile = new Button();
((System.ComponentModel.ISupportInitialize)pbProfileImage).BeginInit();
tlpActionButtons.SuspendLayout();
tlpUsernameTags.SuspendLayout();
SuspendLayout();
//
@ -48,6 +52,9 @@
pbProfileImage.SizeMode = PictureBoxSizeMode.Zoom;
pbProfileImage.TabIndex = 0;
pbProfileImage.TabStop = false;
pbProfileImage.Click += pbProfileImage_Click;
pbProfileImage.MouseEnter += pbProfileImage_MouseEnter;
pbProfileImage.MouseLeave += pbProfileImage_MouseLeave;
//
// lblStatus
//
@ -78,6 +85,8 @@
tlpActionButtons.ColumnCount = 2;
tlpActionButtons.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
tlpActionButtons.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
tlpActionButtons.Controls.Add(btnAction1, 0, 0);
tlpActionButtons.Controls.Add(btnAction2, 1, 0);
tlpActionButtons.Location = new Point(296, 415);
tlpActionButtons.Name = "tlpActionButtons";
tlpActionButtons.RowCount = 1;
@ -85,6 +94,28 @@
tlpActionButtons.Size = new Size(121, 42);
tlpActionButtons.TabIndex = 5;
//
// btnAction1
//
btnAction1.Dock = DockStyle.Fill;
btnAction1.FlatAppearance.BorderSize = 0;
btnAction1.FlatStyle = FlatStyle.Flat;
btnAction1.Location = new Point(3, 3);
btnAction1.Name = "btnAction1";
btnAction1.Size = new Size(54, 36);
btnAction1.TabIndex = 0;
btnAction1.UseVisualStyleBackColor = true;
//
// btnAction2
//
btnAction2.Dock = DockStyle.Fill;
btnAction2.FlatAppearance.BorderSize = 0;
btnAction2.FlatStyle = FlatStyle.Flat;
btnAction2.Location = new Point(63, 3);
btnAction2.Name = "btnAction2";
btnAction2.Size = new Size(55, 36);
btnAction2.TabIndex = 1;
btnAction2.UseVisualStyleBackColor = true;
//
// tlpUsernameTags
//
tlpUsernameTags.AutoSize = true;
@ -112,6 +143,7 @@
lblUsername.TabIndex = 0;
lblUsername.Text = "Username";
lblUsername.TextAlign = ContentAlignment.MiddleLeft;
lblUsername.DoubleClick += lblUsername_DoubleClick;
//
// tlpTagIcons
//
@ -128,6 +160,17 @@
tlpTagIcons.Size = new Size(145, 49);
tlpTagIcons.TabIndex = 1;
//
// btnSaveProfile
//
btnSaveProfile.Location = new Point(12, 434);
btnSaveProfile.Name = "btnSaveProfile";
btnSaveProfile.Size = new Size(45, 23);
btnSaveProfile.TabIndex = 7;
btnSaveProfile.Text = "Save";
btnSaveProfile.UseVisualStyleBackColor = true;
btnSaveProfile.Visible = false;
btnSaveProfile.Click += btnSaveProfile_Click;
//
// ProfileForm
//
AutoScaleDimensions = new SizeF(7F, 15F);
@ -135,6 +178,7 @@
AutoSize = true;
BackColor = Color.DodgerBlue;
ClientSize = new Size(429, 463);
Controls.Add(btnSaveProfile);
Controls.Add(tlpUsernameTags);
Controls.Add(tlpActionButtons);
Controls.Add(rtxtBio);
@ -147,6 +191,7 @@
FormClosed += ProfileForm_FormClosed;
Load += ProfileForm_Load;
((System.ComponentModel.ISupportInitialize)pbProfileImage).EndInit();
tlpActionButtons.ResumeLayout(false);
tlpUsernameTags.ResumeLayout(false);
tlpUsernameTags.PerformLayout();
ResumeLayout(false);
@ -162,5 +207,8 @@
private TableLayoutPanel tlpUsernameTags;
private Label lblUsername;
private TableLayoutPanel tlpTagIcons;
private Button btnAction1;
private Button btnAction2;
private Button btnSaveProfile;
}
}

View File

@ -1,16 +1,22 @@
using qtcnet_client.Properties;
using Krypton.Toolkit;
using qtcnet_client.Properties;
using QtCNETAPI.Models;
using QtCNETAPI.Services.ApiService;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace qtcnet_client.Forms
{
public partial class ProfileForm : Form
{
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public string UserId { get; set; } = string.Empty;
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public string Username { get; set; } = "Username";
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
@ -22,13 +28,16 @@ namespace qtcnet_client.Forms
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public string[] Tags { get; set; } = [];
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public int ContactStatus { get; set; } = 0;
public Contact.ContactStatus ContactStatus { get; set; }
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public Image ProfileImage { get; set; } = Resources.DefaultPfp;
public event EventHandler? OnClose;
public ProfileForm()
private IApiService _apiService;
public ProfileForm(IApiService apiService)
{
_apiService = apiService;
InitializeComponent();
}
@ -41,12 +50,249 @@ namespace qtcnet_client.Forms
pbProfileImage.Image = ProfileImage;
if (Status == 0) lblStatus.Visible = false;
if (UserId == _apiService.CurrentUser?.Id)
{
btnAction1.Visible = false;
btnAction2.Visible = false;
btnSaveProfile.Visible = true;
rtxtBio.ReadOnly = false;
}
private void ProfileForm_FormClosed(object sender, FormClosedEventArgs e)
switch (ContactStatus)
{
OnClose?.Invoke(this, EventArgs.Empty);
Close();
case Contact.ContactStatus.Accepted:
if (Status == 0) btnAction1.Visible = false;
btnAction1.Image = Resources.MessageIcon;
btnAction2.Image = Resources.RemoveContactIcon;
btnAction1.Click += BtnAction1_MessageClick;
btnAction2.Click += BtnAction2_RemoveContactClick;
break;
case Contact.ContactStatus.AwaitingApprovalFromSelf:
btnAction1.Image = Resources.AcceptContactIcon;
btnAction2.Image = Resources.DeclineContactIcon;
btnAction1.Click += BtnAction1_AcceptContactClick;
btnAction2.Click += BtnAction2_DeclineContactClick;
break;
case Contact.ContactStatus.AwaitingApprovalFromOther:
btnAction1.Image = Resources.RequestSentIcon;
btnAction2.Image = Resources.CancelRequestIcon;
btnAction1.Enabled = false;
btnAction2.Click += BtnAction2_CancelContactRequestClick;
break;
case Contact.ContactStatus.NoRelation:
btnAction1.Image = null;
btnAction2.Image = Resources.AddContactIcon;
btnAction1.Enabled = false;
btnAction2.Click += BtnAction2_AddContactClick;
break;
}
}
private async void BtnAction2_AddContactClick(object? sender, EventArgs e)
{
// send request to add user as a contact
var _res = await _apiService.AddContactToCurrentUser(UserId);
if (_res.Success && _res.Data != null)
{
if (_res.Data.OwnerId == UserId)
ContactStatus = _res.Data.UserStatus;
else
ContactStatus = _res.Data.OwnerStatus;
}
ReevaluateContactStatus();
}
private async void BtnAction2_CancelContactRequestClick(object? sender, EventArgs e)
{
// remove contact from user
var _res = await _apiService.RemoveContactFromCurrentUser(UserId);
if (_res.Success && _res.Data != null)
ContactStatus = Contact.ContactStatus.NoRelation;
ReevaluateContactStatus();
}
private async void BtnAction1_AcceptContactClick(object? sender, EventArgs e)
{
// accept contact request
var _res = await _apiService.AcceptContactRequest(UserId);
if (_res.Success)
ContactStatus = Contact.ContactStatus.Accepted;
ReevaluateContactStatus();
}
private async void BtnAction2_DeclineContactClick(object? sender, EventArgs e)
{
// remove contact from user
var _res = await _apiService.RemoveContactFromCurrentUser(UserId);
if (_res.Success && _res.Data != null)
ContactStatus = Contact.ContactStatus.NoRelation;
ReevaluateContactStatus();
}
private void BtnAction1_MessageClick(object? sender, EventArgs e)
{
throw new NotImplementedException();
}
private async void BtnAction2_RemoveContactClick(object? sender, EventArgs e)
{
// remove contact from user
var _res = await _apiService.RemoveContactFromCurrentUser(UserId);
if (_res.Success && _res.Data != null)
ContactStatus = Contact.ContactStatus.NoRelation;
ReevaluateContactStatus();
}
private void ProfileForm_FormClosed(object sender, FormClosedEventArgs e) => OnClose?.Invoke(this, EventArgs.Empty);
private void ReevaluateContactStatus()
{
if (UserId != _apiService.CurrentUser?.Id)
{
switch (ContactStatus)
{
case Contact.ContactStatus.Accepted:
if (Status == 0) btnAction1.Visible = false;
btnAction1.Image = Resources.MessageIcon;
btnAction2.Image = Resources.RemoveContactIcon;
btnAction1.Click += BtnAction1_MessageClick;
btnAction2.Click += BtnAction2_RemoveContactClick;
break;
case Contact.ContactStatus.AwaitingApprovalFromSelf:
btnAction1.Image = Resources.AcceptContactIcon;
btnAction2.Image = Resources.DeclineContactIcon;
btnAction1.Click += BtnAction1_AcceptContactClick;
btnAction2.Click += BtnAction2_DeclineContactClick;
break;
case Contact.ContactStatus.AwaitingApprovalFromOther:
btnAction1.Image = Resources.RequestSentIcon;
btnAction2.Image = Resources.CancelRequestIcon;
btnAction1.Enabled = false;
btnAction2.Click += BtnAction2_CancelContactRequestClick;
break;
case Contact.ContactStatus.NoRelation:
btnAction1.Image = null;
btnAction2.Image = Resources.AddContactIcon;
btnAction1.Enabled = false;
btnAction2.Click += BtnAction2_AddContactClick;
break;
}
}
else
{
btnAction1.Enabled = false;
btnAction2.Enabled = false;
}
}
private void lblUsername_DoubleClick(object sender, EventArgs e)
{
if (UserId == _apiService.CurrentUser?.Id)
{
lblUsername.Visible = false;
TextBox txtUsernameEdit = new()
{
Text = lblUsername.Text,
Font = lblUsername.Font,
MaxLength = 16,
Dock = lblUsername.Dock,
Location = lblUsername.Location,
Size = lblUsername.Size,
};
txtUsernameEdit.KeyDown += TxtUsernameEdit_KeyDown;
tlpUsernameTags.Controls.Add(txtUsernameEdit);
txtUsernameEdit.Focus();
}
}
private void TxtUsernameEdit_KeyDown(object? sender, KeyEventArgs e)
{
if (sender is TextBox txtUsernameEdit && e.KeyCode == Keys.Enter)
{
lblUsername.Text = txtUsernameEdit.Text;
tlpUsernameTags.Controls.Remove(txtUsernameEdit);
txtUsernameEdit.Dispose();
lblUsername.Visible = true;
}
}
private async void btnSaveProfile_Click(object sender, EventArgs e)
{
// update current user profile based on stuff inputted
var _res = await _apiService.UpdateUserInformationAsync(new()
{
Id = _apiService.CurrentUser!.Id,
Username = lblUsername.Text,
Bio = rtxtBio.Text,
DateOfBirth = _apiService.CurrentUser.DateOfBirth,
});
if (_res.Success && _res.Data != null)
KryptonMessageBox.Show("Profile Updated", "Yipee!");
else
KryptonMessageBox.Show("Profile Update Failed. Please Try Again Later.", "Oops.");
}
private void pbProfileImage_Click(object sender, EventArgs e)
{
if(UserId == _apiService.CurrentUser?.Id)
{
Thread _fileDialogThread = new Thread(async () =>
{
using OpenFileDialog openFileDialog = new()
{
CheckFileExists = true,
CheckPathExists = true,
InitialDirectory = Environment.CurrentDirectory,
Filter = "Image Files (*.png, *.jpg, *.gif, *.bmp)|*.png;*.jpg;*.gif;*.bmp",
Title = "Select A New Profile Image"
};
var _res = openFileDialog.ShowDialog();
if(_res == DialogResult.OK)
{
// update the current users profile image
var _apiRes = await _apiService.UpdateUserProfilePic(openFileDialog.FileName);
if(_apiRes.Success)
{
Image newImg = Image.FromFile(openFileDialog.FileName);
pbProfileImage.Image = newImg;
pbProfileImage.Invalidate();
}
}
});
_fileDialogThread.SetApartmentState(ApartmentState.STA);
_fileDialogThread.Start();
}
}
private void pbProfileImage_MouseEnter(object sender, EventArgs e)
{
if(UserId == _apiService.CurrentUser?.Id)
{
Graphics g = pbProfileImage.CreateGraphics();
Rectangle rect = pbProfileImage.ClientRectangle;
// draw an opaque dark color onto the client rectangle of the picturebox
using SolidBrush sb = new(Color.FromArgb(50, Color.Black));
g.FillRectangle(sb, rect);
pbProfileImage.Cursor = Cursors.Hand;
}
}
private void pbProfileImage_MouseLeave(object sender, EventArgs e)
{
// redraw the box normally
pbProfileImage.Cursor = Cursors.Default;
pbProfileImage.Invalidate();
}
}
}

View File

@ -60,6 +60,36 @@ namespace qtcnet_client.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap AcceptContactIcon {
get {
object obj = ResourceManager.GetObject("AcceptContactIcon", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap AddContactIcon {
get {
object obj = ResourceManager.GetObject("AddContactIcon", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap CancelRequestIcon {
get {
object obj = ResourceManager.GetObject("CancelRequestIcon", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
@ -70,6 +100,16 @@ namespace qtcnet_client.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap DeclineContactIcon {
get {
object obj = ResourceManager.GetObject("DeclineContactIcon", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
@ -80,6 +120,16 @@ namespace qtcnet_client.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap MessageIcon {
get {
object obj = ResourceManager.GetObject("MessageIcon", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
@ -90,6 +140,26 @@ namespace qtcnet_client.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap RemoveContactIcon {
get {
object obj = ResourceManager.GetObject("RemoveContactIcon", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap RequestSentIcon {
get {
object obj = ResourceManager.GetObject("RequestSentIcon", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>

View File

@ -121,8 +121,8 @@
<data name="DefaultPfp" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\DefaultPfp.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="QtCNETIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\QtCNETIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="MessageIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\MessageIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="CurrencyIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\CurrencyIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@ -130,7 +130,28 @@
<data name="RoomsChatIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\RoomsChatIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="QtCNETIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\QtCNETIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="SendIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\SendIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="RemoveContactIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\RemoveContactIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="AddContactIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AddContactIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="RequestSentIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\RequestSentIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="CancelRequestIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\CancelRequestIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="AcceptContactIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AcceptContactIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="DeclineContactIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\DeclineContactIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB