diff --git a/FlybyScript/AppIcon.ico b/FlybyScript/AppIcon.ico
index fe67c5f..55de7fd 100644
Binary files a/FlybyScript/AppIcon.ico and b/FlybyScript/AppIcon.ico differ
diff --git a/FlybyScript/AppIcon.png b/FlybyScript/AppIcon.png
new file mode 100644
index 0000000..c829303
Binary files /dev/null and b/FlybyScript/AppIcon.png differ
diff --git a/FlybyScript/Experience/ActivityHistory.cs b/FlybyScript/Experience/ActivityHistory.cs
new file mode 100644
index 0000000..34796ab
--- /dev/null
+++ b/FlybyScript/Experience/ActivityHistory.cs
@@ -0,0 +1,71 @@
+using FlybyScript;
+using Microsoft.Win32;
+using System;
+using System.Drawing;
+
+namespace Settings.Privacy
+{
+ internal class ActivityHistory : FeatureBase
+ {
+ public ActivityHistory(Logger logger) : base(logger)
+ {
+ }
+
+ private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Privacy";
+ private const string valueName = "ActivityHistoryEnabled";
+ private const int desiredValue = 0;
+
+ public override string GetRegistryKey()
+ {
+ return $"{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
+ }
+
+ public override string ID()
+ {
+ return "Disable activity history";
+ }
+
+ public override string Info()
+ {
+ return "Disable activity history (prevents Windows from tracking and storing your activity)";
+ }
+
+ public override bool CheckFeature()
+ {
+ return (
+ Utils.IntEquals(keyName, valueName, desiredValue)
+ );
+ }
+
+ public override bool DoFeature()
+ {
+ try
+ {
+ Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord);
+ return true;
+ }
+ catch (Exception ex)
+ {
+ logger.Log("Code red in " + ex.Message, Color.Red);
+ }
+
+ return false;
+ }
+
+ public override bool UndoFeature()
+ {
+ try
+ {
+ Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord);
+
+ return true;
+ }
+ catch (Exception ex)
+ {
+ logger.Log("Code red in " + ex.Message, Color.Red);
+ }
+
+ return false;
+ }
+ }
+}
\ No newline at end of file
diff --git a/FlybyScript/Experience/FeaturePanel.cs b/FlybyScript/Experience/FeaturePanel.cs
index 2db8e57..a0704d1 100644
--- a/FlybyScript/Experience/FeaturePanel.cs
+++ b/FlybyScript/Experience/FeaturePanel.cs
@@ -87,7 +87,7 @@ namespace FlybyScript
{
return new Label
{
- Text = feature.CheckFeature() ? "Feature Enabled" : "Feature Disabled",
+ Text = feature.CheckFeature() ? "Accepted" : "Declined",
AutoSize = true,
Font = new Font("Segoe UI", 10, FontStyle.Italic),
ForeColor = Color.Gray,
@@ -124,7 +124,7 @@ namespace FlybyScript
if (success)
{
logger.Log($"{feature.ID()} enabled", Color.Green);
- statusLabel.Text = "Feature Enabled"; // Update status label
+ statusLabel.Text = "Accepted"; // Update status label
}
}
else
@@ -133,7 +133,7 @@ namespace FlybyScript
if (success)
{
logger.Log($"{feature.ID()} disabled", Color.Red);
- statusLabel.Text = "Feature Disabled";
+ statusLabel.Text = "Declined";
}
}
}
diff --git a/FlybyScript/Experience/LocationTracking.cs b/FlybyScript/Experience/LocationTracking.cs
new file mode 100644
index 0000000..5662677
--- /dev/null
+++ b/FlybyScript/Experience/LocationTracking.cs
@@ -0,0 +1,69 @@
+using FlybyScript;
+using Microsoft.Win32;
+using System;
+using System.Drawing;
+
+namespace Settings.Privacy
+{
+ internal class LocationTracking : FeatureBase
+ {
+ public LocationTracking(Logger logger) : base(logger)
+ {
+ }
+
+ private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\LocationAndSensors";
+ private const string valueName = "LocationEnabled";
+ private const int desiredValue = 0;
+
+ public override string GetRegistryKey()
+ {
+ return $"{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
+ }
+
+ public override string ID()
+ {
+ return "Disable location tracking";
+ }
+
+ public override string Info()
+ {
+ return "Disable location tracking (prevents Windows from accessing your location)";
+ }
+
+ public override bool CheckFeature()
+ {
+ return Utils.IntEquals(keyName, valueName,desiredValue);
+ }
+
+ public override bool DoFeature()
+ {
+ try
+ {
+ Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord);
+ return true;
+ }
+ catch (Exception ex)
+ {
+ logger.Log("Code red in " + ex.Message, Color.Red);
+ }
+
+ return false;
+ }
+
+ public override bool UndoFeature()
+ {
+ try
+ {
+ Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord);
+
+ return true;
+ }
+ catch (Exception ex)
+ {
+ logger.Log("Code red in " + ex.Message, Color.Red);
+ }
+
+ return false;
+ }
+ }
+}
\ No newline at end of file
diff --git a/FlybyScript/FlybyScript.csproj b/FlybyScript/FlybyScript.csproj
index ce0e4b0..0524734 100644
--- a/FlybyScript/FlybyScript.csproj
+++ b/FlybyScript/FlybyScript.csproj
@@ -56,12 +56,13 @@
+
Component
-
+
@@ -81,6 +82,12 @@
MainForm.cs
+
+ Form
+
+
+ PluginsForm.cs
+
@@ -104,6 +111,9 @@
MainForm.cs
Designer
+
+ PluginsForm.cs
+
ResXFileCodeGenerator
Resources.Designer.cs
diff --git a/FlybyScript/MainForm.Designer.cs b/FlybyScript/MainForm.Designer.cs
index 25c4c51..c57eb2b 100644
--- a/FlybyScript/MainForm.Designer.cs
+++ b/FlybyScript/MainForm.Designer.cs
@@ -29,7 +29,6 @@
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
- this.treeSettings = new System.Windows.Forms.TreeView();
this.rtbDescription = new System.Windows.Forms.RichTextBox();
this.btnTogglePatch = new System.Windows.Forms.Button();
this.linkGitHub = new System.Windows.Forms.LinkLabel();
@@ -38,6 +37,7 @@
this.linkLabel1 = new System.Windows.Forms.LinkLabel();
this.linkLabel2 = new System.Windows.Forms.LinkLabel();
this.panelMain = new System.Windows.Forms.Panel();
+ this.treeSettings = new System.Windows.Forms.TreeView();
this.checkInstallationMedia = new System.Windows.Forms.CheckBox();
this.linkChangeExperience = new System.Windows.Forms.LinkLabel();
this.panelForm = new System.Windows.Forms.Panel();
@@ -45,31 +45,6 @@
this.panelForm.SuspendLayout();
this.SuspendLayout();
//
- // treeSettings
- //
- this.treeSettings.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
- | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.treeSettings.BackColor = System.Drawing.Color.White;
- this.treeSettings.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.treeSettings.CheckBoxes = true;
- this.treeSettings.Font = new System.Drawing.Font("Segoe UI Variable Text Light", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.treeSettings.ForeColor = System.Drawing.Color.Black;
- this.treeSettings.FullRowSelect = true;
- this.treeSettings.Indent = 20;
- this.treeSettings.ItemHeight = 25;
- this.treeSettings.Location = new System.Drawing.Point(36, 168);
- this.treeSettings.Name = "treeSettings";
- this.treeSettings.ShowLines = false;
- this.treeSettings.ShowNodeToolTips = true;
- this.treeSettings.ShowPlusMinus = false;
- this.treeSettings.ShowRootLines = false;
- this.treeSettings.Size = new System.Drawing.Size(865, 172);
- this.treeSettings.TabIndex = 200;
- this.treeSettings.TabStop = false;
- this.treeSettings.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.treeSettings_AfterCheck);
- this.treeSettings.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.treeSettings_NodeMouseClick);
- //
// rtbDescription
//
this.rtbDescription.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
@@ -95,7 +70,7 @@
this.btnTogglePatch.FlatAppearance.BorderSize = 2;
this.btnTogglePatch.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
this.btnTogglePatch.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.btnTogglePatch.Font = new System.Drawing.Font("Segoe UI Variable Small", 10F);
+ this.btnTogglePatch.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.btnTogglePatch.Location = new System.Drawing.Point(629, 484);
this.btnTogglePatch.Name = "btnTogglePatch";
this.btnTogglePatch.Size = new System.Drawing.Size(222, 40);
@@ -133,7 +108,7 @@
this.btnMountRun.FlatAppearance.BorderSize = 2;
this.btnMountRun.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
this.btnMountRun.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.btnMountRun.Font = new System.Drawing.Font("Segoe UI Variable Small", 10F);
+ this.btnMountRun.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.btnMountRun.Location = new System.Drawing.Point(403, 484);
this.btnMountRun.Name = "btnMountRun";
this.btnMountRun.Size = new System.Drawing.Size(220, 40);
@@ -149,7 +124,7 @@
| System.Windows.Forms.AnchorStyles.Right)));
this.lblHeader.AutoEllipsis = true;
this.lblHeader.Font = new System.Drawing.Font("Segoe UI Variable Small Light", 21.25F);
- this.lblHeader.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
+ this.lblHeader.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(115)))), ((int)(((byte)(193)))));
this.lblHeader.Location = new System.Drawing.Point(30, 38);
this.lblHeader.Name = "lblHeader";
this.lblHeader.Size = new System.Drawing.Size(780, 82);
@@ -184,20 +159,20 @@
this.linkLabel2.LinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(186)))), ((int)(((byte)(0)))));
this.linkLabel2.Location = new System.Drawing.Point(233, 558);
this.linkLabel2.Name = "linkLabel2";
- this.linkLabel2.Size = new System.Drawing.Size(44, 16);
+ this.linkLabel2.Size = new System.Drawing.Size(51, 16);
this.linkLabel2.TabIndex = 208;
this.linkLabel2.TabStop = true;
- this.linkLabel2.Text = "0.13.81";
+ this.linkLabel2.Text = "0.14.107";
//
// panelMain
//
+ this.panelMain.Controls.Add(this.treeSettings);
this.panelMain.Controls.Add(this.checkInstallationMedia);
this.panelMain.Controls.Add(this.linkLabel2);
this.panelMain.Controls.Add(this.linkChangeExperience);
this.panelMain.Controls.Add(this.lblHeader);
this.panelMain.Controls.Add(this.linkLabel1);
this.panelMain.Controls.Add(this.rtbDescription);
- this.panelMain.Controls.Add(this.treeSettings);
this.panelMain.Controls.Add(this.btnMountRun);
this.panelMain.Controls.Add(this.btnTogglePatch);
this.panelMain.Controls.Add(this.linkGitHub);
@@ -207,14 +182,36 @@
this.panelMain.Size = new System.Drawing.Size(943, 592);
this.panelMain.TabIndex = 209;
//
+ // treeSettings
+ //
+ this.treeSettings.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.treeSettings.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.treeSettings.CheckBoxes = true;
+ this.treeSettings.Font = new System.Drawing.Font("Segoe UI Variable Text Light", 11.25F);
+ this.treeSettings.FullRowSelect = true;
+ this.treeSettings.HotTracking = true;
+ this.treeSettings.Location = new System.Drawing.Point(36, 168);
+ this.treeSettings.Name = "treeSettings";
+ this.treeSettings.ShowLines = false;
+ this.treeSettings.ShowNodeToolTips = true;
+ this.treeSettings.ShowPlusMinus = false;
+ this.treeSettings.Size = new System.Drawing.Size(865, 172);
+ this.treeSettings.TabIndex = 210;
+ this.treeSettings.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.treeSettings_AfterCheck);
+ this.treeSettings.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.treeSettings_NodeMouseClick);
+ //
// checkInstallationMedia
//
this.checkInstallationMedia.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.checkInstallationMedia.AutoSize = true;
+ this.checkInstallationMedia.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.checkInstallationMedia.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.checkInstallationMedia.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
- this.checkInstallationMedia.Location = new System.Drawing.Point(34, 528);
+ this.checkInstallationMedia.Location = new System.Drawing.Point(34, 527);
this.checkInstallationMedia.Name = "checkInstallationMedia";
- this.checkInstallationMedia.Size = new System.Drawing.Size(245, 17);
+ this.checkInstallationMedia.Size = new System.Drawing.Size(249, 18);
this.checkInstallationMedia.TabIndex = 209;
this.checkInstallationMedia.Text = "I want to create Windows 11 installation media";
this.checkInstallationMedia.UseVisualStyleBackColor = true;
@@ -255,7 +252,8 @@
this.Controls.Add(this.panelForm);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "MainForm";
- this.Text = "Flyby11";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "Flyby11 Upgrading Assistant";
this.Load += new System.EventHandler(this.MainForm_Load);
this.panelMain.ResumeLayout(false);
this.panelMain.PerformLayout();
@@ -265,8 +263,6 @@
}
#endregion
-
- private System.Windows.Forms.TreeView treeSettings;
public System.Windows.Forms.RichTextBox rtbDescription;
private System.Windows.Forms.Button btnTogglePatch;
private System.Windows.Forms.LinkLabel linkGitHub;
@@ -278,6 +274,7 @@
private System.Windows.Forms.LinkLabel linkChangeExperience;
private System.Windows.Forms.Panel panelForm;
private System.Windows.Forms.CheckBox checkInstallationMedia;
+ private System.Windows.Forms.TreeView treeSettings;
}
}
diff --git a/FlybyScript/MainForm.cs b/FlybyScript/MainForm.cs
index 75e4aa1..03565c0 100644
--- a/FlybyScript/MainForm.cs
+++ b/FlybyScript/MainForm.cs
@@ -25,6 +25,8 @@ namespace FlybyScript
// Set the default view to the main panel
SwitchView.DefaultView = panelMain;
+ // Subscribe to the AfterSelect event for importing plugins
+ treeSettings.AfterSelect += TreeSettings_AfterSelect;
}
private async void MainForm_Load(object sender, EventArgs e)
@@ -34,21 +36,57 @@ namespace FlybyScript
treeSettings.Nodes.Add(nativePatcherNode);
// Add Method 1 as a child of NativePatcher
- TreeNode method1Node = new TreeNode("(Method 1) Inplace Upgrade via Server Setup");
- method1Node.Tag = "Method1";
+ TreeNode method1Node = new TreeNode("(Method 1) Inplace Upgrade via Server Setup")
+ {
+ Tag = "Method1",
+ BackColor = Color.LightBlue
+ };
nativePatcherNode.Nodes.Add(method1Node);
- // Add ScriptPatcher parent node
+ // Load plugins
await ScriptPatcher.LoadPlugins("upgraider", treeSettings.Nodes, logger);
- // Add PSPatcher parent node (for Dependencies)
+ // Load PowerShell plugins
PSPatcher = new PSPatcher();
PSPatcher.LoadPowerShellPlugins(treeSettings);
+ // Add the Import node at the end
+ TreeNode importNode = new TreeNode("Import [...]")
+ {
+ NodeFont = new Font(treeSettings.Font, FontStyle.Italic),
+ Checked = false,
+ ForeColor = Color.Black
+ };
+ treeSettings.Nodes.Add(importNode);
+
// Expand all nodes
ExpandAllNodes(treeSettings.Nodes);
}
+ private void TreeSettings_AfterSelect(object sender, TreeViewEventArgs e)
+ {
+ if (e.Node.Text == "Import [...]")
+ {
+ OpenPluginsForm();
+ }
+ }
+
+ private void OpenPluginsForm()
+ {
+ var pluginsForm = new PluginsForm(this);
+ pluginsForm.ShowDialog();
+ }
+
+ // Refresh the tree view
+ public void RefreshTreeView()
+ {
+ treeSettings.Nodes.Clear();
+
+ // Reload
+ MainForm_Load(this, EventArgs.Empty);
+ }
+
+ // Expand all nodes
private void ExpandAllNodes(TreeNodeCollection nodes)
{
foreach (TreeNode node in nodes)
@@ -58,49 +96,12 @@ namespace FlybyScript
}
}
- private void treeSettings_AfterCheck(object sender, TreeViewEventArgs e)
- {
- // Check if the node's checked status has changed
- if (e.Node.Checked)
- {
- // Add the node and set its status to true (enabled)
- pendingChanges[e.Node] = true;
- e.Node.BackColor = Color.LightGreen; // Mark the node as active
-
- // Check the type of node (either JSONPluginLoader/Patch or PowerShell script)
- if (e.Node.Tag is ScriptPatcher jsonPlugin)
- {
- logger.Log($"Patch activated: {jsonPlugin.PlugID}", Color.Black);
- }
- else if (e.Node.Tag is string psScriptPath)
- {
- logger.Log($"PowerShell script activated: {Path.GetFileName(psScriptPath)}", Color.Black);
- }
- }
- else
- {
- // Add the node and set its status to false (disabled)
- pendingChanges[e.Node] = false;
- e.Node.BackColor = Color.LightGray; // Mark the node as inactive
-
- // Check the type of node again (either JSONPluginLoader or PowerShell script)
- if (e.Node.Tag is ScriptPatcher jsonPlugin)
- {
- logger.Log($"Patch deactivated: {jsonPlugin.PlugID}", Color.Crimson);
- }
- else if (e.Node.Tag is string psScriptPath)
- {
- logger.Log($"PowerShell script deactivated: {Path.GetFileName(psScriptPath)}", Color.Crimson);
- }
- }
- }
-
private async void btnTogglePatch_Click(object sender, EventArgs e)
{
btnTogglePatch.Enabled = false;
foreach (var entry in pendingChanges)
{
- var node = entry.Key; // So, The TreeNode
+ var node = entry.Key; // The TreeNode
bool shouldApply = entry.Value; // Whether this patch should be applied (true) or undone (false)
// Check if the entry is Method2 and if the patch is enabled
@@ -161,6 +162,49 @@ namespace FlybyScript
btnTogglePatch.Enabled = true;
}
+ private void treeSettings_AfterCheck(object sender, TreeViewEventArgs e)
+ {
+ // Check if the node's checked status has changed
+ if (e.Node.Checked)
+ {
+ // Add the node and set its status to true (enabled)
+ pendingChanges[e.Node] = true;
+ e.Node.BackColor = Color.LightGreen; // Mark the node as active
+
+ // Check the type of node (either JSONPluginLoader/Patch or PowerShell script)
+ if (e.Node.Tag is ScriptPatcher jsonPlugin)
+ {
+ logger.Log($"Patch activated: {jsonPlugin.PlugID}", Color.Black);
+ }
+ else if (e.Node.Tag is string psScriptPath)
+ {
+ logger.Log($"PowerShell script activated: {Path.GetFileName(psScriptPath)}", Color.Black);
+ }
+ }
+ else
+ {
+ // Add the node and set its status to false (disabled)
+ pendingChanges[e.Node] = false;
+ e.Node.BackColor = Color.LightGray; // Mark the node as inactive
+
+ // Check the type of node again (either JSONPluginLoader or PowerShell script)
+ if (e.Node.Tag is ScriptPatcher jsonPlugin)
+ {
+ logger.Log($"Patch deactivated: {jsonPlugin.PlugID}", Color.Crimson);
+ }
+ else if (e.Node.Tag is string psScriptPath)
+ {
+ logger.Log($"PowerShell script deactivated: {Path.GetFileName(psScriptPath)}", Color.Crimson);
+ }
+ }
+
+ // Synchronize parent-child node states, so when a child node is checked or unchecked, its parent node automatically reflects this change
+ if (e.Node.Parent != null)
+ {
+ e.Node.Parent.Checked = e.Node.Checked;
+ }
+ }
+
private void treeSettings_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
TreeNode node = treeSettings.GetNodeAt(e.Location);
@@ -186,15 +230,14 @@ namespace FlybyScript
string pluginInfo = $"ID: {plugin.PlugID}\nHow-to:\n{plugin.PlugInfo}";
rtbDescription.Text = pluginInfo;
}
- else if (node.Tag is string psScriptPath) // Handle PowerShell script description
+ else if (node.Tag is string psScriptPath) // Handle PowerShell script description
{
rtbDescription.Clear();
string scriptInfo = $"PowerShell Script: {Path.GetFileName(psScriptPath)}\nPath: {psScriptPath}";
rtbDescription.Text = scriptInfo;
}
- else
+ else // Clear description if no node is hovered
{
- // Clear description if no node is hovered
rtbDescription.Clear();
}
}
@@ -213,7 +256,7 @@ namespace FlybyScript
private void linkChangeExperience_Paint(object sender, PaintEventArgs e)
{
- // Linkoption gains focus so trigger a vivid focus rectangle
+ // Linkoption gains focus, so trigger a vivid focus rectangle
ControlPaint.DrawFocusRectangle(e.Graphics, linkChangeExperience.ClientRectangle);
}
@@ -229,7 +272,5 @@ namespace FlybyScript
MediaView installMediaView = new MediaView();
SwitchView.SetView(installMediaView, panelForm);
}
-
-
}
}
\ No newline at end of file
diff --git a/FlybyScript/MainForm.resx b/FlybyScript/MainForm.resx
index 063f8e5..5f4edc6 100644
--- a/FlybyScript/MainForm.resx
+++ b/FlybyScript/MainForm.resx
@@ -120,615 +120,30 @@
- AAABAAEAXl4AAAEAIACgjgAAFgAAACgAAABeAAAAvAAAAAEAIAAAAAAAEIoAABMLAAATCwAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAr5J1AP+PGAD/7csA//W3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+h0AKGWcQAAAAAA58qHAP/y6QD2+mIA+v6gAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9WOAP/sagDLuXgB+uCRA//y
- rwP+u34D8PSDAPD/tgD45ZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//usAP/z
- qAD46ooC//+XAPnulwD/+5wA/+6cALA3UwDy0KsA+NmnAP/osQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAA/7+qAP/qtgD92JUE8t2CAOnKhBn23oyO+N+NvPbekH3lto0J5aiPAPTXkwH+7H8AAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAA/+mOAP//sQD98ZkD9deCAOvMgSv55pLV/uyW//3kkf/97JX//euVi/j5
- mgD7uXwC//+fAP6ehwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADx150Ar8UPAKCdYgD/344E8dyHAOzPgTX65JDk/uiT//zh
- jvn84Iz5/OOM/v/qkPP+5Y8p/+qSAP/soAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD17NwA2aqOAJBWAAD/95ED8t6KAOzQ
- g0X65I/u/ueT//zhjfv94o3//eGM//zfiPv95Yv//u6Rcf/zjgD+86IC/f+5AP//sgAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2y5kA6OfcANzB
- jQD/7YYD9uiRAO3SglP65I/2/uWT//zhjvv84oz//OGL/v3hiv/834f8/eSJ//7ojMS4y8cB////APP/
- aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAD32IAA67BjAOHEgQH//8sD//SSAO7SgmD65I/8/uSS//zijvv84o3//eGL/vzgif794If+/OCG/vze
- g//954r3/e+TNv3+nwD+5I0C/tKBAP/QfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAD85GcA8NJjAOSvSgH//7EB//yUAPHWg2795pD//uWT//3ij/z94o3//eKL/vzh
- iv/94If//N+F/vzghP/63oH7/uaG//3liIb+5oYA/cZzBP7//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+o0A+/ODAOzWfwL//6AB//+mAPHXhHv96JL//uWS/v3i
- jvz9447//OGL/v3hif/84Ij+/OCG/vzghP7834L/+96A+/zdf//96IfM//OfC/8A/wD+95YBAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKWlWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//Z0A+OSHAOzNdgIAAAAA///AAPDY
- hIn96ZP//+WS/f3ij/3+447//eKL/vziiv/94Yf+/eCF//3fhP/934L//N6B/vzdfv773n39/+iD+v7l
- hUT/5H8A/8t0BP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- 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
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/s0IAFf//AP8i
- AAB3+rIC/r5Zs/OjQv/dkzP745Eu/+mhOP/qrUP/8blM//fEVv/6y17t+tVu3PjYecT43YOi+N6FfPfZ
- f1P0zHg17st7bvfikub+65v//+WT+/7kkf//5Y/+/uSN/v3jjP7+44n+/eKH//7hhf/94YP//OCB//3f
- f//93n3//N57//vdeP/83Hb/+9t1//zbc//72nH++9pu/vrYbP3+5HP//eJzY//gdAD+33IE//dpAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAA/wBtAPL3ZADW/9sA1NaSB/m3U8/3lTr/4ok0+9iKMPzZfiT734wr+uWaMfrppTn87K4///G8
- Tf/71Wr//umF//70lv/+85v//uuW/f32q///9rT//+yf+/7mkv/+5Y/+/+SN/v7ki/7944r//uKI//7i
- hv/94YP//eCB//zfgP/9333//d57//zdeP/73Hf//Nx0//vbcv/82nH++9pu/vvZbP762Gv7/d1t//3i
- cK3/71IA/8lpA/rldAD+r3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAA/6FYAP+hVQD6t2AB7NhzAPPafhj3slHp9po9/+9+Lf7khTL/2Icu/9p7
- I//fiCn+45Iu/uWaM/3ooTf87rNE+/nOYPv/4H38/+mO/f/tlf7+8J/8/vSy/f7xqf//6Zb+/uSN/v/k
- jP/+44n+/eOI//3ihf/+4YP//eCB//3gf//8337//d97//3eef/83Xf/+9x1//zbcv/72nD//Npu//vZ
- bP/62Gr++tdo/fvaaP/+5W7n/NxsKPzVdgD93m4C//8uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/VfQD/1n4A+sxsAfnMYgD40W0y+bNP/PWd
- QP/xiTL+7nQo/+GCMP7Xgiv+2ngh/t6DJv7ijSr+5ZUv/+ecM//vtUT/+tJh///he//+6In+/+qM///w
- nv/+9K/+/+2f//7mj/7/44r+/uKI//7ihv/94oP//eGC//7ggP/9337//N97//3eef/93Xf//Nx1//vc
- cv/723H//Npu//vZbP/62Wr++9ho/vrXZv7612X6/dxn//zfaWv62mUA/OZqA///QgD//18AAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/qlYA/6pWAPq8
- XAL90WYA+MtmUfy2UP/1oUH985I3//B9K/7sbyb+4H8v/9aAKf/ZdR/+3oEk/+KLKf7lkiz+5pow/vC3
- Q/781GH+/+N7//7ohv7+6ov+//Gj//7yqf7+6pX//+SK//7ihv/94oT//uKC//3hgf/+4H7//d97//zf
- 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
- JP/raCD/6GQg/9t3KP/UcR//2XAb/959IP/hhCL/5Ism/++sNf/80VP//+Fu//7ldf/+6oT///Cb//7p
- iv//4nv//t92//3edf/+3XL//d1v//zcbf/922r//Npo//vZZv/82GP/+9hh//zXXv/71lv/+tRZ//vU
- Vv7601T++tNS/vvUUvr92VH//NlTiPrSRgD93j8E+daBAP//JwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ykUA9sdjA+7IeADzxmc+/Mdc8vm4T//4tEv9965E/vam
- Pf71mzb/848v//GDKv/veSb/7HEj/+tlH//nYx//2XQn/9RvHv/ZcBv/3n0g/+GDIv/kjCX/8rI4//3V
- V///4m3//uVz///si//+7pT//+Z///7fdf/93nL//d1w//3cbf/822v//dto//zaZf/72WP/+9hh//zX
- Xv/71lz/+9ZZ//rUVv/701T/+tNS/vrST//60k77+9RN//7eUc3001ES7LVDAPrUUAH//1wAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/IQAA/i0AAPauUgTyymgA9MRiVvzE
- Wv/4uU/8+LVL/vewRf72qT//9aA4//SWMv/yii3/8H8o/+53JP/sbiH/6mMe/+ZgH//Zcib/020c/9lv
- G//efB//4YEh/+WPJv/0ujv//tlZ///jbP/+5nT//+6P///riv/+4Xb//t1w//3dbv/93Gv//Nto//3a
- Z//82WT//Nlg//vYXv/811v/+9ZZ//rVV//71FT/+9NQ//rST//50Uz++tFL/vvTSvz92Ev/+dVORvvU
- SAD94EED//8AAP//JgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/6gzAPf/
- /wD1t00F8bxVAPTGY3T7v1j/97hR+ve2TP73s0b+96xB//alOv/0nDT/8pEv//GGKv/vfSX/7XQh/+ts
- IP/pYR3/5WAe/9dwJP/Tahv/2m8a/958H//hgCD/55Qn//fBP///3Fz//uNp//7oef/+7o///+d+//7f
- b//93Gv//dtp//zbZv/82mP//Nlh//zYXv/711v//NZZ//vVVv/61FT/+9NS//rST//60Uz++dBJ/vrQ
- SP/60Ef7/NZG//7dSpP/+UoA/+s/Av+7CwD/yjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAP/AhQDr0GwA/rlYA/64QgD2xGGV+L1W//e5Uvr4uE3+97RI/vevQv/2qDz/9KA3//OX
- Mf/yjiz/8IMo/+56I//scSH/62of/+hfHP/kXh3/1m4j/9JnGv/abxr/3nse/+CAH//pmSj/+sdC///f
- Xf/+42f//up+///siP/+43P//txp//3bZ//82mT//dph//zZXv/72Fz//NdZ//zWVv/71VT/+tRR//vS
- T//60kz/+dFJ//rQR/76z0X/+tBD/fzTQ//91UPg+tFHE/f/bAD+uzMA/0gAAP9nAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/1sA8r9uAP//JgG786EE/Mhisfm9V//2uVL7+LdO//e1
- SP72sEP/9qs+//WkOP/0nDT/85Qu//GKKv/vgSb/7nci/+xvIP/pZx7/6F0a/+NcHf/VayL/0WYY/9pu
- Gf/eeh3/4IAe/+ugK//8zkb//99d//7kaf/+7IL//+l+//7eav/922T//Npi//3ZXv/82Fz//NdZ//vW
- Vv/81VP/+9RR//rTT//70kz/+tFJ//rQR//5z0T/+c5C/vrPQf/6zj/9/dc///zZRFb92UUA/NlAAv3m
- RAD/60YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+716APLIWwGx2mgA47poEfzK
- Y8r5v1j/9rlT+/e4UP/2tkr+9rJF//atQP/1pzr/9KA1//OZMP/ykCz/8Icn/+9/JP/tdSL/620e/+lm
- HP/nWxn/4Vsc/9NpIP/RYxf/2m0Y/915G//ggB7/76kt//7USf//4F3//uVt//7rgv//5XL//ttj//3Z
- X//82Vz//NhZ//zXVv/71lT/+9VR//zUTv/700z/+9FJ//rRRv/60ET/+s5B//nNP/76zj7/+s48+/3T
- O//80zyp/881AP3gPgP33nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5bx0AOOt
- gQDjuWwD16xVAOi/aSvzwl7z971X/va6VP33uVD/9rZL/vazR//1r0L/9ak8//SjN//znDL/8pUu//GN
- Kv/whSX/7nwj/+1zIP/rax3/6GQb/+VYGP/fWhz/0mcf/9BhFv/ZbRj/3Xcb/+GCHv/ysC///9dL//7h
- XP/+53L//+p7///gZv/92Vz//Nla//zXVv/81lT/+9VR//vUT//800z/+9NJ//rRR//70EP/+s9B//nO
- P/75zTz++sw6/vrNOf37zTf//dY55PjUPyLz3S8A+dM+AvzGWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAz75VAKmMJACwTxIA//+3Av//hADpvGSa8MZi/+2+V/vzu1P/9bhQ/va2Tf71tEj/9q9D//Wr
- Pf/1pjn/8580//KZL//xkyv/8Ysn/++CJP/teiH/7HEe/+ppHP/nYRr/5VUX/99YG//QZB7/0F8V/9ls
- GP/cdhr/4oUe//a6Mv//203//uFd//7pdP//53D//ttc//3XV//911T//NZS//vVTv/81Ev//NNJ//vS
- R//60ET/+89B//rPPv/5zTz/+s05//nLN/76zDb++sw0+/3SNP/60DZk+84tAPzTLAT/9gAA/vwpAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAA8M1RALyhWwC+lVAB//+0Af//rQDhs2R289F4//DMbP3qw17+7L9X//C6
- UP70t0z/9rRJ//WxRP/1rT//9Kg6//SjNv/ynDL/8ZYt//GQKf/wiSX/74Ei/+14IP/qcB3/6Gca/+Zf
- Gf/kVBb/3Vca/89iG//QXhP/2WwX/9xzGf/lix//+cI1///cTP/+4mD//uhy///iY//92FX//NZR//zV
- Tv/71Uz//NNI//zSRv/70UT/+tBB//vPPv/6zjv/+c05//rLN/76yzX/+csz//rLMfr7zC///dMysPLr
- ewL//2EB+sYuAP/+VwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyJ5lANWiQADDlU4B////Af//2QDfsGF89t2K///s
- mf7734f99NFz/+3FYf7qv1b/7bpO/vG1Sf/1sUX/9a5B//OpPf/zpDj/858z//KaL//xlCv/8I4n/++H
- JP/ufyL/7Hce/+puG//oZBj/5V0X/+JRFf/cVRn/zl4b/89cEv/Yahb/23IX/+iTIP/7yTf//91O//7k
- Zf//52v//t1X//3WTv/81Uz/+9RJ//zTRv/80kT/+9FB//rPPv/7zjv/+s05//nMNv/6yjT/+coy/vrK
- MP/5yS/9+8ws//7RLe/3yjEq+8IqAP7UJAL//wAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmohoAK2GUwC8hjgCJgAAAP//
- /wDis2WI+OCO///xof3+65r9/+uX//7ljv752X3/8Mpn/uq/V//quU3/7rNG//OuQv/0qz//86c6//Oi
- Nf/ynDH/8Zct//CRKf/viyb/74Uj/+5+IP/rdRz/6mwa/+diGP/kWhf/4k8U/9pUGf/MXBn/z1sR/9hq
- Ff/bcxf/65sh//3ROv//3lH//uVm//7jX//92E7//NVI//zURv/70kP//NFB//vQPv/6zzv/+844//rM
- Nv/5yzT/+soy//nJL/75yC3++sos//rHKfv8yyj//tMtbv/dLQD/vBAD/rAAAP+1AAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAr5xrAMOn
- cgDGm10DYwAAAP///wDluGmW++ST///xovv+65v9/uuZ//7rl/7/6pX//+mQ/v3hhP/20nD/7cNb/+i4
- Tf/rskT/8Kw///OoO//yozj/8aA0//GZL//xlCv/8I8o/++KJf/uhCH/7Xwe/+tzG//pahn/5mAX/+NY
- Ff/gTRP/2FIY/8tZF//PWhH/12kU/9x0Fv/vpiT//9U8//7fVf/+5WL//t5S//3UR//800P/+9JB//zR
- Pv/80Dv/+844//vNNv/6zDT/+csx//rJL//5yC3/+ccq/vrIKf/5xyb8/Mwk//3OJsLDp0YC/88AAN//
- bAD/RA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAA3a5pAMOhXADRoFoDrDIAAA0AAATpvG2j/eiX///xovz+65v+/+yZ///smP7+65b//uqT/v7q
- kf//6o///+aI//vbef/yy2P/6btP/+iyQ//sqjz/8aQ5//KgNf/xnDH/8Jct//CSKv/vjSf/7ogi/+6C
- H//sexz/6nIa/+hoGP/kXxX/4VYU/95LEf/WUBj/yVcW/85ZD//XZxP/3XYV//OwJv//2ED//uBY///j
- Wf/+2Uj//NJA//vRPv/80Dv/+885//rONv/7zDT/+ssx//nKLv/6ySz/+ccq//jGKP75xyb++sgk/vnF
- If/9zCH3+9IrNP3cNwD8yR0C/70CAP+7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAA5rBbAP7ObQDUrVoDwWkpAHwmAAzov3Cy/uyb///xo/r+7Jv+/+2b//7s
- mf7/7Jb//uuV/v/rkv//6pD//umO//7pjP//6In//uKA//jVbf/uwlb/57JF/+epO//tojb/8J0z//CZ
- MP/vlCz/748o/++LJP/uhiH/7YAe/+t5G//qcRn/52cW/+RdFP/gVRP/3UkR/9ROF//IVBT/zlgO/9Zl
- Ev/fexb/97oo///aRP/+4Fb//99N//3UPv/80Tv//NA4//vONv/6zTP/+8ww//rLLv/5ySz/+sgq//nG
- KP/4xSX/+cUj/vrGIf/4xB/8/csf//vLIoX6xSEA+cscA/HeAAD/8wMAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9aAAP/XfgDuumgEw3YtAKlSFxTow3PB/u+e///x
- pPr+7Jz+/+6c//7tmv7+7Jf//+yW/v/rlP//65H//uqP///pjf/+6Yr//uiI///ohv//5oH//d52//TM
- YP/quEr/5ak7/+mgM//umjH/75Yu/+6RKv/ujSf/7okj/+2EIP/sfx3/63gb/+lwGP/nZhX/41wT/99S
- Ev/bRhD/0k0W/8dSEv/OVw3/1mMR/+ODF//6xCz//9tG//7gT//+20L//dE5//vPNf/8zjP/+8ww//vL
- Lf/6yiv/+ckp//rHJ//5xST/+MQi/vjEIP76xSD++cQf/PvFHv/8yyHM9M44CwAAAAD61CgBAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC+fD0A3aZgAO29bwDdqmAE0Y0/ALht
- KB/qxXbN//Gh///xpPr+7Z3//+6d/v7tm///7Zn+/+yW/v/slP//65L//+uQ///qjf/+6ov//umI///p
- hv/+6IP//ueB///nf//+43n/+tdq//DCUv/mrT7/5J8z/+mWL//tki3/7Y8p/+2LJv/thiL/7IIf/+x9
- HP/qdxn/6W4W/+ZlFP/jWhP/3lAR/9lFEP/QSxX/xk8R/81WDf/WYhD/5o0Y//3LMP//20j//t5G//7V
- OP/8zjL/+84w//vLLf/7yiv/+skp//nIJv/6xiT/+cUi//jDIP/5wx//+cQg/vnDH/74xB79/csg+vjF
- JEX2vyYA+b8hA+4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxYlKAP//
- xgDltGgE3qFUAMF3MijryHnZ//Oj///xpfr+7p7//++e/v7um/7/7pr+/u6Y///tlf//7JP//+yQ///r
- jv//64z//+qK///ph//+6YX//+iC//7nf//+5n3//uZ7///leP/932//9s5b/+u3Rf/joTT/5ZQt/+qP
- Kv/tiij/64gl/+uEIf/rgB//6nsc/+l1GP/obhb/5mQT/+JZEv/dThD/10QP/85KFP/ETQ//zVUM/9Zj
- EP/smRv//9I0///bQ//+2jv//dAx//vMLf/7yyv/+8oo//vJJv/6xyP/+sUh//nEIP/5wh//+MIg/vjD
- IP74wx/++MIe+vrEHv/8yyOM/cQMAP29BQP452cA/rsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AACKZjcAQxcAAAAAAADuxnYE5KRQAMWFPjXty3zi//Sm//7xpPr+76D///Ce/v7unP7/75r//u6Y///t
- lv//7ZT//+yR///sj///643//+uL///qiP//6Yb//+mE//7ogP/+533//+d7//7mef/+5Xb//+V0///j
- cP/82WP/8sRP/+apOf/hlS3/5osp/+qHJ//qhST/6oIh/+p9Hv/qeRv/6XMX/+dsFf/lZBP/4VgQ/9xN
- D//WQg7/zEcU/8NLDv/NVAv/12YQ//CmHv//1DX//to8//7WMv/8zCr/+sso//vJJf/6yCL/+sYh//nF
- IP/5xB//+MIg//fCH//4wh/++cMf//fBHvz5xR7//soh1vC5JhDzrS0A+r0oAfzZAwAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zHkD3bNgAMqLQkLuzn/s//Wn//7xpfr+8KH///Cg/v7v
- nv//75v+/+6Z/v/ul///7Zb//+2T///skP//647//+uM///rif//6of//+mE///pgv//6H///ud8//7n
- ev/+5nf//+V0//7kcv/+42///+Ns//7gZv/50Vf/7LdB/+GbL//hiif/5oQm/+mCI//pfyD/6Hod/+h2
- Gv/ochf/52wU/+VjEv/gWBD/2ksO/9NADv/JRRL/wUkM/8xSCv/abBH/9LIh///WM//+2DT//tAq//vJ
- Jf/6ySL/+scg//rGH//5xR//+cMg//jCIP/3wR//+MEg/vjCH//3wR7+98Ae/PnEHv/5ySZI98UjAPnW
- EwL/2AAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3MCUAAAAAADx14cD98tyAM+SSU/w0oT0//aq///y
- pfr+8KL///Gh/v7wnv7/8J3+/++a///vmP//7pb//+2U///ukv//7I7//+yM///riv//64j//+qE///p
- gv//6YD//+h9///nev//53j//+Z1//7lc///5G///uNs//7jav/+4mf//+Fk//3bW//0xkn/5qg1/9+N
- J//igST/538j/+h8H//neB3/53Qa/+dvF//mahT/42IS/99XD//YSg3/0j4N/8ZDEv/ASAz/zFIL/952
- E//5vCP//9Uv//7VKv/8yyL/+scg//rGIP/6xSD/+cQg//jDH//4wiD/98Ef//fAH//4wR/++MEf//a/
- Hvv8xx7/+8kinP/WGQD/qAwC8fcAANn/AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD//7oB8ct0ANid
- UV3z2Ir7//es//7xpvv+8aP///Ki/v7wn///8Z3//vCc/v/wmf//75f//+6V///uk///7ZD//+2N///s
- i///7In//+uG///rg///6oD//+l9///oe///53n//+d2///mc///5XD//uVt///kav/+42f//uJk//7g
- Yf//4F7//99a//vUT//vuT3/4Zcr/96CI//jeyH/5nkg/+V2Hf/lcRn/5W0X/+RoFP/iYBH/3lYP/9hJ
- Df/PPQ7/w0IS/79IC//MUw3/4YAW//zEJP//0yr//dEj//vHH//6xiD/+sUg//nEH//4wx//98Eg//fA
- H//2vx/+98Af/vfAH//2vx79+L8d//nCH+XyyS8W//9oAOCvHAG4iQAAu40AAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqpYAMHm
- iADeu3MC77lpAN2nWk333o/7//mu//7ypvv+8qX///Gi/v7yof//8Z/+//Cc///wmv//75n//++W///v
- lP//7pH//+2P///tjP//7Ir//+yH///rhf//6oL//+p////pe///6Xn//+d3///mdP//5nD//+Vt///k
- a///5Gj//uNk//7iYf//4V7//uBa//7fV///31X//ttP//fJQ//opzH/3Icj/954H//jdh7/5HMc/+Nv
- Gv/jaxf/42YU/+FgEv/dVhD/1kkN/8w9Dv/AQRL/vUYM/8tUD//mjxr//con///SJ//9zCD/+sYf//nF
- IP/5wyD/+MIf//fBH//3wB//9r8f//e/H/72vx/+974e/vW8Hf38xR//+MQjX/nGJQD2xB0D7rECAO+0
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAADpxW4A//+9A///zgD54pOz/ves//7yqPn/8qX///Kk/v7yov7+8p/+//Ge//7x
- nP7/8Jn///CW///wlP//75L//+6Q///ujf//7Yr//+yI///shf//64P//+qA///qff//6Xn//+h3///o
- df//53L//+Zv///la///5Gj//+Nl///jYv//4l///uBb///fWP/+31T//t5Q//7dTv//3Ev//NVF//G7
- N//hlCf/23oe/99yHf/icRv/4W0Z/+FpFv/hZRT/4F8S/9tWEf/USQ//yj4P/7xAEv+6RQz/zFoR/+ud
- Hv/+zCf//s8l//vHIP/5xB//+MMg//jCH//3wB7/9r8e//a+Hv/2vR7/9r4f/va9Hv/1vR37+b8d//zD
- IKr/sQAA/7sAA/nIMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/vewAP/9swP//bAA//mxqf72q//+8qX1/vGk/f/z
- ov7/86H///Ke//7ynP7+8Zr+//CY//7wlf7/75P+/++R///vj///7oz//+2I///thf//7IT//+uB///q
- fv//6nv//+l4///odv//6HL//+dv///mbf//5Wn//+Vl///kYv//417//+Jc///gWf/+4FX//t9S//7e
- Tv/+3Ur//ttI///bRf//2kH/+cs5/+moLP/bgiD/2nAb/99uGv/gaxj/4GcW/99jFf/eXxT/2lcT/9JJ
- EP/HPRH/uT8S/7lFDf/QYhX/8Kkh//7NJv/9zCL/+cQg//jDH//4wR//98Af//e/H//2vR7/9bwf/va+
- H//1vR7+9bwd/fa8Hf/9xR/m8b4kKO7HMAD3xCMC+nEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//+VAP75hwD++K0C/fi1AP76
- tkP++7T0/vSm//71pf/+8qD7/vCd/P7xnP3/8pv///GY//7xlv7+8JT+/++S/v7vj/7/743+/u6L///t
- h/7/7IT//+yC///sf///63z//+p5///qdv//6XP//+dw///nbf//5mn//+Vn///kY///5GD//+Nc///i
- Wf//4Vb//+BS///fT//+3kv//91H//7cRf/+2kH//tk+///ZO//+1Tj/87wv/+GSI//Xchv/22kZ/99p
- GP/eZhf/3WIX/9xfFv/YVxX/z0oT/8Q9E/+3PhL/uUYP/9NsGf/0tCT//s0l//vIIP/4wh//+MIf//fA
- H//2vh//9r0e//W8Hv/1vB/+9rwe/vW7Hf70uxz6+L4c//nAImb7uxcA+8MPA7YA/wD+3gAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAD//wAA4oT/AP71bwH/9KMA/fSoQ//7raP/+6rh/vWj//74ov/+8pv//u+X/P7wlvv/8JX9//CT/v7w
- kP//8I7//u+L/v7uiP7+7oX+/+2C//7tgP7/7H3//+t6///qd///6nT//+lw///obv//52r//+dm///l
- ZP//5GD//+Rd///jWf//4lb//+FS///gTv//30v//91I//7dRf/+3EH//9o+//7ZOv/+1zj//9Y1///X
- Mv/8zS7/66om/9p+Hf/WaBj/22YY/9xmGP/bYxj/2l8Y/9dYF//OSxX/wj4V/7Q9Ev+5RhH/2nkc//i9
- JP/9zCP/+cQf//fBH//3vx7/9r4f//W8H//1ux7/9bse//W7Hv71ux3/87kc+/e8Hf/9wyC0vZArBAD/
- /wDo2EUA+J4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP74/wD/+IYA//arAvzxnQD/9bIA/uyfG//6qVP/+qal//Wf6f77
- oP/+85f//vCT//7xkPr/7oz6/u6K/f/vif//74b//+6D//7tgP7/7H7+/+x7///reP7/6nT//+py///p
- bv//6Gr//+dn///mZf//5WH//+Rd///kWf//4lb//+JS///gT///30z//99I///eRf//3EH//9s+//7a
- O//+2Tf//9g0//7WMf/+1S7//9Us///UKv/3vyX/4pMe/9RtGf/WYxn/2mUZ/9ljGf/YXxr/1loZ/85N
- F//APhb/sTwT/7pJE//fhh//+sMl//zIIv/3wB//9r8f//a+H//1vB//9Lse//S6Hv/0uh7+9bod//O4
- Hf71uRz++Lwd9vS/Jyv0wyYA/7kTAemVAADjkwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//EAAP/fAAD99asD//mKA/7r
- ngD/96oA///PAP//phf++aBf/vWaq/78m+H+9ZL///KN//7xif/+7IT8/uyB/P7tgP3/7X7+/u17/v/s
- eP7+63b+/uty/v/qb/7/6Wz+/+ho///oZf7/5mL//+Ve///lWv//5Ff//+NT///iT///4Ez//+BI///f
- RP//3UH//9w+///bO///2jj//9k0//7YMf//1i7//tUs//7TKf/+0ib//9Mj//3NIv/vrCD/2Hwc/9Bj
- Gv/WYxv/2GMb/9dgG//VWxv/zU4Z/78/F/+vPBP/vE0W/+aUIf/7xyT/+sMg//a+H//1vR7/9bwe//S6
- Hv/0uR//9Lke//S4Hf70uB3/8bYc/Pu+Hf/7wCN4/8MmAOe4FQP/8gwA//8BAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAA//PqAP/81AD+9KYB//mWA///fwH//80A/v+jAP3rhAD+85cj/vOSYP79lKb/9Yzr/vSH//7z
- hP/+7H3//+t5/P/rePv+6nX9/+ty/v/qcP//6mz//+lp/v7oZv7+6GL+/+de///lW/7/5Vf//+RT///j
- UP//4k3//+FJ///fQ///30H//94+///cOv//2zf//9k0///YMP//2C7//tYr//7VKP//0yb//tIj//7P
- If//zyD//9Eh//jBIf/jlR//0Gsc/9BgHP/WYxz/12Ec/9RcHP/NTxr/vj8Y/646E//AVBf/7KMj//zH
- Iv/3vh7/9bwf//W7H//0uh//87ge//O4Hf7zuB3+87cd//G2HPz2uBz/9rkdyvDOfgLJUAAB27YgAJZh
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//nwA//+nAP//fAD/+18A//eWAf7tmwP+9Y0D/v+mAP3u
- kQDtkWAB/uyKH//6jGH+9IS1/vSA7P72fv/+7HX//+xy//7pbfr/52v7/+ho/v/pZf//6GL//+de/v7m
- W/7+5lf+/+VU///kUP7/4kz//+JJ///hRf//30H//989///eO///3Df//9s0///ZMf//2C3//9cr///V
- J//+1ST//tMi//7RIf//0CH//s8g//3NIP/+ziD//c0h//CxIP/XfR7/zGAd/9JhHf/WYh3/01wc/8xP
- Gv+9Pxj/qzkT/8VeGf/ysCP/+sQg//W7Hv/0uh//9Lke//O3Hv/ztx7/8rce//K2Hf7ytRz+8LMb//u8
- HvX3vCY9/70tAPGwHQPaqwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/4QA//dnAP/q
- egD/1JAA//iiAP72lgL+8pEE//+4Af7ofQD//5QA//+eAP/6hiL98Xxt/vN5s//3dun+7G3//+1q///p
- ZP7/5WD7/uZd/P/mWv3+5Vf+/+VT///kUP/+40z+/uJJ/v/hRf7+4UH//98+/v/eOv//3Tf//9w0///b
- Mf//2S7//9gq///XJ///1ST//9Qi///SIP/+0SD//9Ah//7PIf/+ziH//Mwg//zLIP/+ziH/+cMg/+SZ
- H//Oax7/zF0e/9NhHv/TXR3/zFAb/7o+GP+qORP/zGsb//e6Iv/4wB//9Lke//O4Hf/zth7/8rYe//K2
- Hf7ytRz+8rQc/vGzG/r2thz/87UgiPu2EAD6rg4E2MVaAPuHAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAD+7HgA/8qOAAAAAAAAAAAA+du0AP3ufQD++YIB/uiHAv/rbAH//4oA/f1+APq5
- YAD+63Ir//Bwaf71bbb+7GT1/+9i///qW//+5FX//+RR+v7jTvr+4kv9/+JH///iRP/+4EH//uA9/v7f
- Ov7/3jb//90z/v/cMP//2y3//9kq///YJ///1yP//9Uh///UIf//0yH//tEh///RIP/+0CH//s4h//3N
- IP/8yyD/+8kh//vKIP/9zCD/8rQf/9d/H//JXx7/zl0e/9NeHf/MURv/uT0Y/6o4E//VfB7/+cEi//W5
- Hv/zth7/8rYd//K1Hv/ytR3+8rQd/vGzHP/wshz78bIa//q6Hs3utSwR4KVXAPS2KAH/zAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+rAD//6gA/lv/AP7X
- ggD/sTYA//F/Af3phQT+v2sD/ulpAP7pbQD+uU4E/vBmJf/0Y3H+61rA/+9X7v7rUf/+5Ur//+RH/v7g
- Q/r+3j/8/988/v/fOv//3Tb//t0y/v/cL/7/2y3//top/v/ZJv7/1yL//9Yh/v/VIv/+1CL//9Mh//7R
- If//0CD//tAh//7OIP/9zSH//Msg//zLIP/7yCD/+sYf//zJIP/5xCD/5Zwf/8tqH//JWR7/0Fwe/81T
- HP+3PBj/rTsU/9+NH//6wSH/8rUe//K1Hv/xtB3/8bMe//GzHf/xshv+8LAc/vGwG/z2tBz/77MiRfK1
- HgD3nBYD/wAAAP8xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAD/14EA/8lbAP/mhAD/oX0A//+NAP/waAL+7mYD//8wAP7nbgD//2gA/+FaAP/y
- Vi3+6E91/u5MuP/rRvP+5UH//uU9///eOP/+3DX8/twx/P/bLv7/2yv+/top///YJv//1yP+/9Yh/v/V
- Iv7+1SH//9Qi/v7TIf/+0SH//9Eg//7QIP/+ziD//c0h//zLIP/8yiD/+8kg//rHH//5xSD/+cUf//vI
- H//yth//2IMe/8ZcH//LWB7/zVUd/7Y8F/+vQBX/550h//i+H//xsh3/8bMe//CyHv/xsR3+8LEc/vCw
- G//urhv687Ab//i3IZT/xw0A/6sAAv+nAAD/sQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6HwA/qGZAP/GPAD/+gAA/v8AAP7Z
- YAD++VMB/+JeA//qRAL//FcA/uxNAP/pOAX+5kIx/u1Bcv7pPML/5Tb4/uYz//7dLv//2ir//tkn+v/X
- JPv+1yH+/tYh///VIv/+1CL+/tQi/v7TIv7+0iH//9Eh/v7QIP/+zyH//s4h//3MIf/8yyD//Mof//vJ
- H//6xyD/+sYg//nEH//4wR//+cUf//nDHv/noB7/zGse/8VVHv/LVR7/tTsX/7VKF//vrCH/9bke//Cv
- Hf/wsR7/8LAd/++vHP7wrhv/7q0b/fOuGv/1sh3f57EwEuKiMwD0zRsA//8AAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- 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
- Gv7lmBn+5ZgZ/uWZGf/klhj87ZsZ/+qcHnjumxsA4YgUBLuGAACzmwMAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+xAAD/jQgAAAAAAP//
- AAD/n/8A69EhAOS2DwL/vRsC////APq9HwDsmRIA9LofG/m2HVL/th6e9asb5fSoHP/woxv/5pwa/+ac
- Gvvkmhr645ga/OSXGv7jlRn/4pQa/+OVGf7jlBj/45UY++WVGP/olxrE0emwAv9MAAHpmSgA/zUAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAD//wAA9dMAAP9FAADGqgAA/7INAP/HGQH6txsD8bgPA/PCLAD0rxwA/5Y1APnF
- HRX+tR5X86cbqPSkHOHyoRv/5pca/+aXGf/hkxn735EZ++CQGf3hkRn/4ZEY/+COGP3ikBf/7Zga8uWX
- IDncjiEA5JkaA9S0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyKoAAP+sAgD/qwAA/6QEAP+/
- JwD5uyMB9agUA/+gAAH0oCcA/7smAPCNGAD/xSQY8KYcWvOjHKDznhvf6JQZ/+mTGf/gjRj/3IoY/d6M
- GPvfjBf83YoW+eKMF//kkh1/6IYMAPGbBwSoWG8A/8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAD//wUA/qcAAPygAAD/YwAA+b4SAf2uEwLvpxMD//9mAPOmGwDfVAIA6qkcHfWk
- HVT0nRuj55Ea6OqPGf/iiRj/3YgX/9yIF/ffiBb/6Y8axM6MKgv/4/8A7JEuANGJAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+rQAA/6UAAP/QAAD/rwEA//8eAPC8
- HQHxjBUE6HcBA/yrJwDxjhkA/3kmAPm2IxTynBxb544ZqOuOGeDliRf/5ogX/+uOG5UAAJoA/7UAAdN+
- LAD1pAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAD/1wAA/KwAAAAAAACsuQQA4gAAAPLFOAD8rB0B1Z4OA/GEAgHuxzAA85kiANpmCADuox4f548ZXeSK
- GmTVhiQN14UaANiDHQHOdBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8ogAASAAAAKiuAADs7gAA95IRAfSf
- FQPgewoD5ME2AOOFEgDdexIAs99TANxqGQHbYxkA4jANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAC6rAAA7dQAAP5tAAD/sgMA/903AO6ZHALkgxEE4owQBOKNIgHifRoA4oAVAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/cAAA/7AAAAAAAAD/hw0A//9wAAAAAAD/ajMAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAD//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAA///////////////8///////////////8///////////////8///////////////8////////
- ///////8///////////////8///////////////8///////////////8/////////h/////8////////
- /f/////8////////+gv////8////////9Av////8////////6AX////8////////0AX////8////////
- oAP////8///////+QAL////8///////8gAL////8///////5AAF////8///////2AAF////8///////s
- AAF////8////x//QAAC////8/////B+gAAC////8////g+BAAAC////8///+gB+AAABf///8////AAAA
- AABf///8////AAAAAABf///8///9AAAAAAAv///8///9AAAAAAAv///8///9AAAAAAAf///8///9AAAA
- AAAX///8///9AAAAAAAX///8///9AAAAAAAH///8///6AAAAAAAL///8///6AAAAAAAL///8///6AAAA
- AAAF///8///6AAAAAAAF///8///6AAAAAAAF///8///6AAAAAAAD///8///4AAAAAAAC///8///0AAAA
- AAAC///8///0AAAAAAABf//8///0AAAAAAABf//8///IAAAAAAAAf//8//+QAAAAAAAAv//8//9gAAAA
- AAAAv//8//7AAAAAAAAAf//8//0AAAAAAAAAX//8//oAAAAAAAAAX//8//QAAAAAAAAAL//8/+gAAAAA
- AAAAL//8/9AAAAAAAAAAL//8/6AAAAAAAAAAF//8/0AAAAAAAAAAF//8/oAAAAAAAAAAF//8/QAAAAAA
- AAAAC//8+gAAAAAAAAAAC//8+gAAAAAAAAAAC//8+gAAAAAAAAAABf/8+gAAAAAAAAAABf/8/QAAAAAA
- AAAAA//8/sAAAAAAAAAAAv/8/zgAAAAAAAAAAv/8/8cAAAAAAAAAAP/8//jAAAAAAAAAAX/8//8cAAAA
- AAAAAX/8///jgAAAAAAAAL/8///8YAAAAAAAAL/8////ngAAAAAAAL/8////8YAAAAAAAH/8/////nAA
- AAAAAF/8/////84AAAAAAF/8//////jAAAAAAC/8//////84AAAAAC/8///////HAAAAAC/8///////8
- 4AAAABf8////////HAAAABf8////////84AAAB/8/////////nAAAAv8/////////44AAAv8////////
- //nAAAP8//////////44AAX8///////////HAAX8///////////44AP8////////////HAX8////////
- ////44X8/////////////Hv8/////////////4f8///////////////8///////////////8////////
- ///////8///////////////8///////////////8///////////////8///////////////8
+ AAABAAEAAAAAAAEAIABeBQAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAEAAAABAAgGAAAAXHKoZgAAAAFv
+ ck5UAc+id5oAAAUYSURBVHja7dwxSsNQAMfhgJObbp7AE/QOgmKrYCk4ODg4CgXBWhGxi4jg4Kg36KCD
+ DQrSRVwERw/h6A1q3uYamtr3wveH35gML823NVlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZma13kZvtNw6
+ zTtKp2Y/b5R9zuEaZ5dW4d2cOQDhh1E0UTpt9kd3ZZ9zuMbZJVcDAAIAAP4PgM5grAjbPnupDIBwL2ca
+ Z3MH4Pr5RxF2cPtZGQDhXs40zgAgAAAAAAIAAAAgAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAQAAABAAAAAAAUAAEAAE
+ AAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAABA
+ AAAAAAQAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAIAAAAgAAAAAAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAA
+ CAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAAAgAAAAAAIAAAAgAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJwpAAAA
+ AAEAAAAQAAAAAAHAQwCAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgOoAwN7VuyJs5+K1MgDCvZxp
+ nM0dAMXftAAomQAgAABghls/Gq0UP45jpVOr/7RW9jmHa5xdWoV3MzMzMzMzMzMzMzMzMzMzMzMzMzMz
+ MzMzM/u7rV6+2jwZjZVU3bLPOVzj3NIqvJszB8Dfgf0dWL4H4LABIADkk8P7L0XY7uVbZQCEeznTOPNR
+ UPkoqI+CAkAAAAAABAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAIAAAAAACAAAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAI
+ AAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAAAAACAAAAIAAAAAACAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAABAAAAEAAAAAABAAAAEAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAA
+ EAAEAAFAABAABAABQAAQAAQAAQAAABAAAAAAAQAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAzBQAAACAAAAAAAgAAACAAeAgAEAAE
+ AAFAABAABAABQAAQAAQAAUAAEAAEAAFAAFAdABg8fCvC9m8+KgMg3MuZxtncAVD8TQuAkgkAAgAAACAA
+ AGAWa7eHC63zxyWlU7s7XCz9nItrnF1iz7l4NzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM6v1fgFi3pGw
+ zf9AVwAAAABJRU5ErkJggg==
\ No newline at end of file
diff --git a/FlybyScript/Patcher/ScriptPatcher.cs b/FlybyScript/Patcher/ScriptPatcher.cs
index b3b09fe..68b753a 100644
--- a/FlybyScript/Patcher/ScriptPatcher.cs
+++ b/FlybyScript/Patcher/ScriptPatcher.cs
@@ -171,7 +171,7 @@ namespace FlybyScript
{
existingCategory = new TreeNode(category)
{
- BackColor = System.Drawing.Color.LightBlue,
+ // BackColor = System.Drawing.Color.LightBlue,
ForeColor = System.Drawing.Color.Black
};
pluginCategory.Add(existingCategory);
diff --git a/FlybyScript/PluginsForm.Designer.cs b/FlybyScript/PluginsForm.Designer.cs
new file mode 100644
index 0000000..0040f01
--- /dev/null
+++ b/FlybyScript/PluginsForm.Designer.cs
@@ -0,0 +1,217 @@
+namespace FlybyScript
+{
+ partial class PluginsForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.checkedListBoxPlugins = new System.Windows.Forms.CheckedListBox();
+ this.textDescription = new System.Windows.Forms.TextBox();
+ this.btnDownload = new System.Windows.Forms.Button();
+ this.progressBar = new System.Windows.Forms.ProgressBar();
+ this.lblHeader = new System.Windows.Forms.Label();
+ this.btnUninstall = new System.Windows.Forms.Button();
+ this.label1 = new System.Windows.Forms.Label();
+ this.btnImport = new System.Windows.Forms.Button();
+ this.panelBottom = new System.Windows.Forms.Panel();
+ this.linkPluginsDirectory = new System.Windows.Forms.LinkLabel();
+ this.panelBottom.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // checkedListBoxPlugins
+ //
+ this.checkedListBoxPlugins.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)));
+ this.checkedListBoxPlugins.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240)))));
+ this.checkedListBoxPlugins.Font = new System.Drawing.Font("Segoe UI Variable Text Light", 10.25F);
+ this.checkedListBoxPlugins.ForeColor = System.Drawing.Color.Black;
+ this.checkedListBoxPlugins.FormattingEnabled = true;
+ this.checkedListBoxPlugins.Location = new System.Drawing.Point(-1, 50);
+ this.checkedListBoxPlugins.Name = "checkedListBoxPlugins";
+ this.checkedListBoxPlugins.Size = new System.Drawing.Size(275, 340);
+ this.checkedListBoxPlugins.TabIndex = 0;
+ this.checkedListBoxPlugins.ThreeDCheckBoxes = true;
+ this.checkedListBoxPlugins.SelectedIndexChanged += new System.EventHandler(this.checkedListBoxPlugins_SelectedIndexChanged);
+ //
+ // textDescription
+ //
+ this.textDescription.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.textDescription.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(252)))), ((int)(((byte)(252)))));
+ this.textDescription.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.textDescription.Font = new System.Drawing.Font("Segoe UI Variable Small Light", 9.75F);
+ this.textDescription.Location = new System.Drawing.Point(281, 50);
+ this.textDescription.Multiline = true;
+ this.textDescription.Name = "textDescription";
+ this.textDescription.Size = new System.Drawing.Size(348, 309);
+ this.textDescription.TabIndex = 1;
+ //
+ // btnDownload
+ //
+ this.btnDownload.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.btnDownload.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(221)))), ((int)(((byte)(221)))), ((int)(((byte)(221)))));
+ this.btnDownload.FlatAppearance.BorderColor = System.Drawing.Color.Gray;
+ this.btnDownload.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btnDownload.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.btnDownload.ForeColor = System.Drawing.Color.Black;
+ this.btnDownload.Location = new System.Drawing.Point(536, 9);
+ this.btnDownload.Name = "btnDownload";
+ this.btnDownload.Size = new System.Drawing.Size(93, 24);
+ this.btnDownload.TabIndex = 2;
+ this.btnDownload.Text = "Install";
+ this.btnDownload.UseVisualStyleBackColor = false;
+ this.btnDownload.Click += new System.EventHandler(this.btnDownload_Click);
+ //
+ // progressBar
+ //
+ this.progressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.progressBar.Location = new System.Drawing.Point(281, 360);
+ this.progressBar.Name = "progressBar";
+ this.progressBar.Size = new System.Drawing.Size(348, 23);
+ this.progressBar.TabIndex = 3;
+ //
+ // lblHeader
+ //
+ this.lblHeader.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.lblHeader.AutoEllipsis = true;
+ this.lblHeader.Font = new System.Drawing.Font("Segoe UI Variable Small", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.lblHeader.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
+ this.lblHeader.Location = new System.Drawing.Point(277, 15);
+ this.lblHeader.Name = "lblHeader";
+ this.lblHeader.Size = new System.Drawing.Size(356, 30);
+ this.lblHeader.TabIndex = 206;
+ this.lblHeader.Text = "Welcome to Plugins Manager";
+ //
+ // btnUninstall
+ //
+ this.btnUninstall.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.btnUninstall.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(221)))), ((int)(((byte)(221)))), ((int)(((byte)(221)))));
+ this.btnUninstall.FlatAppearance.BorderColor = System.Drawing.Color.Gray;
+ this.btnUninstall.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btnUninstall.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.btnUninstall.Location = new System.Drawing.Point(437, 9);
+ this.btnUninstall.Name = "btnUninstall";
+ this.btnUninstall.Size = new System.Drawing.Size(93, 24);
+ this.btnUninstall.TabIndex = 207;
+ this.btnUninstall.Text = "Uninstall";
+ this.btnUninstall.UseVisualStyleBackColor = false;
+ this.btnUninstall.Click += new System.EventHandler(this.btnUninstall_Click);
+ //
+ // label1
+ //
+ this.label1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
+ this.label1.Font = new System.Drawing.Font("Segoe UI Variable Text", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label1.ForeColor = System.Drawing.Color.White;
+ this.label1.Location = new System.Drawing.Point(-1, 18);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(100, 33);
+ this.label1.TabIndex = 208;
+ this.label1.Text = "Available";
+ this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // btnImport
+ //
+ this.btnImport.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btnImport.Font = new System.Drawing.Font("Segoe UI Variable Text", 9F);
+ this.btnImport.Location = new System.Drawing.Point(96, 18);
+ this.btnImport.Name = "btnImport";
+ this.btnImport.Size = new System.Drawing.Size(100, 33);
+ this.btnImport.TabIndex = 209;
+ this.btnImport.Text = "Import";
+ this.btnImport.UseVisualStyleBackColor = true;
+ this.btnImport.Click += new System.EventHandler(this.btnImport_Click);
+ //
+ // panelBottom
+ //
+ this.panelBottom.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(238)))), ((int)(((byte)(238)))));
+ this.panelBottom.Controls.Add(this.linkPluginsDirectory);
+ this.panelBottom.Controls.Add(this.btnUninstall);
+ this.panelBottom.Controls.Add(this.btnDownload);
+ this.panelBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
+ this.panelBottom.Location = new System.Drawing.Point(0, 401);
+ this.panelBottom.Name = "panelBottom";
+ this.panelBottom.Size = new System.Drawing.Size(646, 45);
+ this.panelBottom.TabIndex = 210;
+ //
+ // linkPluginsDirectory
+ //
+ this.linkPluginsDirectory.ActiveLinkColor = System.Drawing.Color.RoyalBlue;
+ this.linkPluginsDirectory.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.linkPluginsDirectory.AutoEllipsis = true;
+ this.linkPluginsDirectory.AutoSize = true;
+ this.linkPluginsDirectory.Font = new System.Drawing.Font("Segoe UI Variable Small", 8.75F);
+ this.linkPluginsDirectory.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
+ this.linkPluginsDirectory.LinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
+ this.linkPluginsDirectory.Location = new System.Drawing.Point(12, 17);
+ this.linkPluginsDirectory.Name = "linkPluginsDirectory";
+ this.linkPluginsDirectory.Size = new System.Drawing.Size(97, 16);
+ this.linkPluginsDirectory.TabIndex = 208;
+ this.linkPluginsDirectory.TabStop = true;
+ this.linkPluginsDirectory.Text = "Plugins directory";
+ this.linkPluginsDirectory.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkPluginsDirectory_LinkClicked);
+ //
+ // PluginsForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(248)))));
+ this.ClientSize = new System.Drawing.Size(646, 446);
+ this.Controls.Add(this.panelBottom);
+ this.Controls.Add(this.btnImport);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.lblHeader);
+ this.Controls.Add(this.progressBar);
+ this.Controls.Add(this.textDescription);
+ this.Controls.Add(this.checkedListBoxPlugins);
+ this.Name = "PluginsForm";
+ this.ShowIcon = false;
+ this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show;
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "Plugins-Manager";
+ this.panelBottom.ResumeLayout(false);
+ this.panelBottom.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.CheckedListBox checkedListBoxPlugins;
+ private System.Windows.Forms.TextBox textDescription;
+ private System.Windows.Forms.Button btnDownload;
+ private System.Windows.Forms.ProgressBar progressBar;
+ private System.Windows.Forms.Label lblHeader;
+ private System.Windows.Forms.Button btnUninstall;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Button btnImport;
+ private System.Windows.Forms.Panel panelBottom;
+ private System.Windows.Forms.LinkLabel linkPluginsDirectory;
+ }
+}
\ No newline at end of file
diff --git a/FlybyScript/PluginsForm.cs b/FlybyScript/PluginsForm.cs
new file mode 100644
index 0000000..baf62b3
--- /dev/null
+++ b/FlybyScript/PluginsForm.cs
@@ -0,0 +1,220 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.Linq;
+using System.Net.Http;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using Newtonsoft.Json;
+using static System.Windows.Forms.VisualStyles.VisualStyleElement;
+
+namespace FlybyScript
+{
+ public partial class PluginsForm : Form
+ {
+ private const string PluginJsonUrl = "https://raw.githubusercontent.com/builtbybel/Flyby11/main/plugins/plugins_manifest.json";
+ private const string PluginBaseUrl = "https://github.com/builtbybel/Flyby11/raw/main/plugins/";
+
+ // Dictionary to store plugin filenames and descriptions
+ private Dictionary pluginDescriptions;
+
+ private readonly string pluginsDirectory = Path.Combine(Application.StartupPath, "upgraider");
+
+
+ private MainForm _mainForm;
+
+ public PluginsForm(MainForm mainForm)
+ {
+ InitializeComponent();
+ _mainForm = mainForm;
+
+ LoadPlugins();
+ }
+
+ private async void LoadPlugins()
+ {
+ try
+ {
+ var json = await DownloadJsonAsync(PluginJsonUrl);
+ pluginDescriptions = JsonConvert.DeserializeObject>(json);
+
+ foreach (var pluginFileName in pluginDescriptions.Keys)
+ {
+ // Add each plugin to the CheckedListBox
+ bool isInstalled = File.Exists(Path.Combine(pluginsDirectory, pluginFileName));
+ int index = checkedListBoxPlugins.Items.Add(pluginFileName);
+
+ // Check the item if the plugin is installed
+ checkedListBoxPlugins.SetItemChecked(index, isInstalled);
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show($"Error loading plugins: {ex.Message}");
+ }
+ }
+
+ private async Task DownloadJsonAsync(string url)
+ {
+ using (HttpClient client = new HttpClient())
+ {
+ return await client.GetStringAsync(url);
+ }
+ }
+
+ private void checkedListBoxPlugins_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ var selectedPlugin = checkedListBoxPlugins.SelectedItem?.ToString();
+ if (selectedPlugin != null && pluginDescriptions.ContainsKey(selectedPlugin))
+ {
+ textDescription.Text = pluginDescriptions[selectedPlugin];
+ }
+ }
+
+ private async void btnDownload_Click(object sender, EventArgs e)
+ {
+ var selectedPlugins = new List();
+ foreach (var plugin in checkedListBoxPlugins.CheckedItems)
+ {
+ selectedPlugins.Add(plugin.ToString());
+ }
+
+ if (selectedPlugins.Count > 0)
+ {
+ await DownloadPluginsAsync(selectedPlugins);
+ }
+ else
+ {
+ MessageBox.Show("Please select at least one plugin to download.");
+ }
+ }
+
+ private async Task DownloadPluginsAsync(List plugins)
+ {
+ progressBar.Value = 0;
+ progressBar.Maximum = plugins.Count;
+
+ using (HttpClient client = new HttpClient())
+ {
+ foreach (var pluginFileName in plugins)
+ {
+ try
+ {
+ var pluginUrl = $"{PluginBaseUrl}{pluginFileName}";
+ var downloadPath = Path.Combine(pluginsDirectory, pluginFileName);
+
+ var data = await client.GetByteArrayAsync(pluginUrl);
+ await WriteAllBytesAsync(downloadPath, data);
+
+ progressBar.Value += 1;
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show($"Failed to download {pluginFileName}: {ex.Message}");
+ }
+ }
+ }
+
+ MessageBox.Show("All selected plugins have been downloaded.");
+ }
+
+ private async Task WriteAllBytesAsync(string path, byte[] data)
+ {
+ using (var fs = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None, 4096, useAsync: true))
+ {
+ await fs.WriteAsync(data, 0, data.Length);
+ }
+ }
+
+ protected override void OnFormClosing(FormClosingEventArgs e)
+ {
+ base.OnFormClosing(e);
+ _mainForm.RefreshTreeView();
+ }
+
+ private void btnUninstall_Click(object sender, EventArgs e)
+ {
+ var pluginsToRemove = new List();
+ foreach (var plugin in checkedListBoxPlugins.CheckedItems)
+ {
+ pluginsToRemove.Add(plugin.ToString());
+ }
+
+ foreach (var pluginFileName in pluginsToRemove)
+ {
+ try
+ {
+ var filePath = Path.Combine("upgraider", pluginFileName);
+ if (File.Exists(filePath))
+ {
+ File.Delete(filePath);
+ checkedListBoxPlugins.Items.Remove(pluginFileName);
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show($"Failed to uninstall {pluginFileName}: {ex.Message}");
+ }
+ }
+
+ MessageBox.Show("Selected plugins have been uninstalled.");
+ checkedListBoxPlugins.Items.Clear();
+ LoadPlugins(); // Refresh the list of plugins
+ }
+
+ private void btnImport_Click(object sender, EventArgs e)
+ {
+ using (var folderBrowserDialog = new FolderBrowserDialog())
+ {
+ // Open the folder browser dialog to select the source directory
+ if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
+ {
+ string sourceDirectory = folderBrowserDialog.SelectedPath;
+ string[] files = Directory.GetFiles(sourceDirectory, "*.*", SearchOption.TopDirectoryOnly)
+ .Where(file => file.EndsWith(".json") || file.EndsWith(".ps1")).ToArray();
+
+ List importedPlugins = new List(); // List to store imported plugin names
+
+ foreach (var file in files)
+ {
+ try
+ {
+ string fileName = Path.GetFileName(file);
+ string destinationPath = Path.Combine(pluginsDirectory, fileName);
+ File.Copy(file, destinationPath, true); // Overwrite if file exists
+ importedPlugins.Add(fileName); // Add to the imported plugins list
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show($"Failed to import {file}: {ex.Message}");
+ }
+ }
+
+ // Show message box with the names of the imported plugins
+ if (importedPlugins.Count > 0)
+ {
+ string message = "Imported Plugins:\n" + string.Join("\n", importedPlugins);
+ MessageBox.Show(message, "Import Completed", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ }
+ else
+ {
+ MessageBox.Show("No plugins were imported.", "Import Completed", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ }
+ }
+ }
+ }
+
+ private void linkPluginsDirectory_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+ {
+ try
+ {
+ Process.Start("explorer.exe", pluginsDirectory);
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show($"Failed to open plugins directory: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/FlybyScript/PluginsForm.resx b/FlybyScript/PluginsForm.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/FlybyScript/PluginsForm.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/FlybyScript/Properties/AssemblyInfo.cs b/FlybyScript/Properties/AssemblyInfo.cs
index 93e86be..1fe3d41 100644
--- a/FlybyScript/Properties/AssemblyInfo.cs
+++ b/FlybyScript/Properties/AssemblyInfo.cs
@@ -28,5 +28,5 @@ using System.Runtime.InteropServices;
// Buildnummer
// Revision
//
-[assembly: AssemblyVersion("0.13.81")]
-[assembly: AssemblyFileVersion("0.13.81")]
\ No newline at end of file
+[assembly: AssemblyVersion("0.14.107")]
+[assembly: AssemblyFileVersion("0.14.107")]
\ No newline at end of file
diff --git a/FlybyScript/USBManagement.cs b/FlybyScript/USBManagement.cs
index e53041a..59c0e58 100644
--- a/FlybyScript/USBManagement.cs
+++ b/FlybyScript/USBManagement.cs
@@ -73,7 +73,7 @@ namespace FlybyScript
///
/// Diskpart Device ID
///
- public async Task FormatDriveAsync(string diskNumber)
+ public async Task FormatDriveAsync(string diskNumber, string partitionScheme)
{
await Task.Run(() =>
{
@@ -98,12 +98,20 @@ namespace FlybyScript
UpdateStatusLabel(); // Updates to 1/5 - Format and Boot USB Drive
// Send commands to DiskPart
- writer.WriteLine($"select disk {diskNumber}"); // Select the disk based on user input
+ writer.WriteLine($"select disk {diskNumber}"); // Select the disk
UpdateProgress(10); // Update progress
writer.WriteLine("clean"); // Clean the disk
-
- writer.WriteLine("convert mbr"); // Convert to MBR
+
+ // Check partition scheme selection
+ if (partitionScheme == "GPT")
+ {
+ writer.WriteLine("convert gpt"); // Convert to GPT
+ }
+ else if (partitionScheme == "MBR")
+ {
+ writer.WriteLine("convert mbr"); // Convert to MBR
+ }
UpdateProgress(20);
writer.WriteLine("create partition primary"); // Create a new partition
@@ -113,14 +121,13 @@ namespace FlybyScript
UpdateProgress(60);
writer.WriteLine("format fs=fat32 quick label=\"FlybyWin11\""); // Quick format to FAT32
- // writer.WriteLine("assign letter=W"); // Assign drive letter
writer.WriteLine("exit"); // Exit DiskPart
UpdateProgress(100); // Final progress
}
}
string output = process.StandardOutput.ReadToEnd(); // Get the output from DiskPart
- process.WaitForExit(); // Wait for the process to exit
+ process.WaitForExit();
_logger.Log($"Formatting completed: {output}", Color.Black);
}
}
@@ -131,6 +138,7 @@ namespace FlybyScript
});
}
+
///
/// Copies the contents of the specified ISO file to the USB drive using Robocopy.
///
@@ -287,29 +295,27 @@ namespace FlybyScript
}
///
- /// Downloads the Microsoft Media Creation Tool from https://go.microsoft.com/fwlink/?linkid=2156295
+ /// Downloads a specified tool (Media Creation Tool or Installation Assistant) from a provided URL.
///
- /// The URL of the Media Creation Tool.
+ /// The URL of the tool to download.
+ /// The name of the file to save.
/// A task representing the asynchronous operation.
- public async Task DownloadMediaCreationTool()
+ public async Task DownloadMediaTool(string downloadUrl, string fileName)
{
- string downloadUrl = "https://go.microsoft.com/fwlink/?linkid=2156295";
-
using (SaveFileDialog saveFileDialog = new SaveFileDialog())
{
saveFileDialog.Filter = "Executable Files (*.exe)|*.exe";
- saveFileDialog.Title = "Save Media Creation Tool";
- saveFileDialog.FileName = "MediaCreationTool.exe";
+ saveFileDialog.Title = $"Save {fileName}";
+ saveFileDialog.FileName = fileName;
-
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
string destinationPath = saveFileDialog.FileName;
try
{
- _logger.Log("Preparing to download Media Creation Tool...", Color.Black);
- _logger.Log("Download may take some time, please wait...", Color.Orange);
+ _logger.Log($"Preparing to download {fileName}...", Color.Black);
+ _logger.Log("Download may take some time, please wait...", Color.RoyalBlue);
var response = await httpClient.GetAsync(downloadUrl);
response.EnsureSuccessStatusCode();
@@ -319,28 +325,29 @@ namespace FlybyScript
await response.Content.CopyToAsync(fileStream);
}
- _logger.Log("Download completed successfully!", Color.Green);
+ _logger.Log($"{fileName} download completed successfully!", Color.Green);
- // Start the downloaded Media Creation Tool
- _logger.Log("Starting Media Creation Tool...", Color.Black);
+ // Start the downloaded tool
+ _logger.Log($"Starting {fileName}...", Color.Black);
Process.Start(new ProcessStartInfo
{
FileName = destinationPath,
- UseShellExecute = true // run .exe files
+ UseShellExecute = true // To run .exe files
});
}
catch (Exception ex)
{
- _logger.Log($"An error occurred while downloading: {ex.Message}", Color.Red);
+ _logger.Log($"An error occurred while downloading {fileName}: {ex.Message}", Color.Red);
}
}
else
{
- _logger.Log("Download canceled by user.", Color.Red);
+ _logger.Log($"{fileName} download canceled by user.", Color.Red);
}
}
}
+
///
/// Calculates progress based on Robocopy output
///
diff --git a/FlybyScript/Views/ExperienceView.Designer.cs b/FlybyScript/Views/ExperienceView.Designer.cs
index 186d5d7..474b6a4 100644
--- a/FlybyScript/Views/ExperienceView.Designer.cs
+++ b/FlybyScript/Views/ExperienceView.Designer.cs
@@ -117,7 +117,7 @@
this.btnRevert.FlatAppearance.BorderSize = 2;
this.btnRevert.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
this.btnRevert.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.btnRevert.Font = new System.Drawing.Font("Segoe UI Variable Small", 10F);
+ this.btnRevert.Font = new System.Drawing.Font("Arial", 9.75F);
this.btnRevert.Location = new System.Drawing.Point(473, 565);
this.btnRevert.Name = "btnRevert";
this.btnRevert.Size = new System.Drawing.Size(220, 40);
@@ -136,7 +136,7 @@
this.btnApply.FlatAppearance.BorderSize = 2;
this.btnApply.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
this.btnApply.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.btnApply.Font = new System.Drawing.Font("Segoe UI Variable Small", 10F);
+ this.btnApply.Font = new System.Drawing.Font("Arial", 9.75F);
this.btnApply.Location = new System.Drawing.Point(699, 565);
this.btnApply.Name = "btnApply";
this.btnApply.Size = new System.Drawing.Size(222, 40);
diff --git a/FlybyScript/Views/ExperienceView.cs b/FlybyScript/Views/ExperienceView.cs
index 104f420..1fb821b 100644
--- a/FlybyScript/Views/ExperienceView.cs
+++ b/FlybyScript/Views/ExperienceView.cs
@@ -35,8 +35,9 @@ namespace Views
// Initialize the list of features
features = new List
{
- new FindMyDevice(logger),
new PrivacyExperience(logger),
+ new ActivityHistory(logger),
+ new LocationTracking(logger),
new Telemetry(logger),
new FileExplorerAds(logger),
new FinishSetupAds(logger),
diff --git a/FlybyScript/Views/MediaView.Designer.cs b/FlybyScript/Views/MediaView.Designer.cs
index f4cd03f..482e587 100644
--- a/FlybyScript/Views/MediaView.Designer.cs
+++ b/FlybyScript/Views/MediaView.Designer.cs
@@ -28,13 +28,14 @@
///
private void InitializeComponent()
{
+ this.components = new System.ComponentModel.Container();
this.btnBack = new System.Windows.Forms.Button();
this.rtbLog = new System.Windows.Forms.RichTextBox();
this.comboBoxDrives = new System.Windows.Forms.ComboBox();
this.btnStart = new System.Windows.Forms.Button();
- this.label1 = new System.Windows.Forms.Label();
- this.label2 = new System.Windows.Forms.Label();
- this.label5 = new System.Windows.Forms.Label();
+ this.lblDriveInfo = new System.Windows.Forms.Label();
+ this.lblDeviceIDInfo = new System.Windows.Forms.Label();
+ this.lblStatusInfo = new System.Windows.Forms.Label();
this.btnSelect = new System.Windows.Forms.Button();
this.label6 = new System.Windows.Forms.Label();
this.btnMCT = new System.Windows.Forms.Button();
@@ -45,7 +46,13 @@
this.comboBoxDriveLetters = new System.Windows.Forms.ComboBox();
this.linkShowDiskList = new System.Windows.Forms.LinkLabel();
this.label3 = new System.Windows.Forms.Label();
- this.label4 = new System.Windows.Forms.Label();
+ this.lblDriveLetterInfo = new System.Windows.Forms.Label();
+ this.lblPartitionSchemeInfo = new System.Windows.Forms.Label();
+ this.comboBoxPartitionScheme = new System.Windows.Forms.ComboBox();
+ this.btnInstallAssistant = new System.Windows.Forms.Button();
+ this.tt = new System.Windows.Forms.ToolTip(this.components);
+ this.label1 = new System.Windows.Forms.Label();
+ this.linkPCHealthCheckApp = new System.Windows.Forms.LinkLabel();
this.SuspendLayout();
//
// btnBack
@@ -71,6 +78,7 @@
| System.Windows.Forms.AnchorStyles.Right)));
this.rtbLog.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(230)))), ((int)(((byte)(230)))), ((int)(((byte)(230)))));
this.rtbLog.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.rtbLog.Enabled = false;
this.rtbLog.Font = new System.Drawing.Font("Segoe UI Variable Small Light", 9.75F);
this.rtbLog.Location = new System.Drawing.Point(59, 362);
this.rtbLog.Name = "rtbLog";
@@ -80,9 +88,10 @@
//
// comboBoxDrives
//
+ this.comboBoxDrives.Enabled = false;
this.comboBoxDrives.Font = new System.Drawing.Font("Segoe UI Variable Small", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.comboBoxDrives.FormattingEnabled = true;
- this.comboBoxDrives.Location = new System.Drawing.Point(59, 98);
+ this.comboBoxDrives.Location = new System.Drawing.Point(59, 258);
this.comboBoxDrives.Name = "comboBoxDrives";
this.comboBoxDrives.Size = new System.Drawing.Size(121, 25);
this.comboBoxDrives.TabIndex = 235;
@@ -92,11 +101,12 @@
this.btnStart.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnStart.BackColor = System.Drawing.Color.White;
this.btnStart.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.btnStart.Enabled = false;
this.btnStart.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
this.btnStart.FlatAppearance.BorderSize = 2;
this.btnStart.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
this.btnStart.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.btnStart.Font = new System.Drawing.Font("Segoe UI Variable Small", 10F);
+ this.btnStart.Font = new System.Drawing.Font("Arial", 9.75F);
this.btnStart.Location = new System.Drawing.Point(671, 562);
this.btnStart.Name = "btnStart";
this.btnStart.Size = new System.Drawing.Size(205, 40);
@@ -107,57 +117,60 @@
this.btnStart.UseVisualStyleBackColor = false;
this.btnStart.Click += new System.EventHandler(this.btnStart_Click);
//
- // label1
+ // lblDriveInfo
//
- this.label1.AutoEllipsis = true;
- this.label1.Font = new System.Drawing.Font("Segoe UI Variable Small", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.label1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
- this.label1.Location = new System.Drawing.Point(55, 34);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(182, 32);
- this.label1.TabIndex = 237;
- this.label1.Tag = "";
- this.label1.Text = "Drive Properties";
+ this.lblDriveInfo.AutoEllipsis = true;
+ this.lblDriveInfo.Enabled = false;
+ this.lblDriveInfo.Font = new System.Drawing.Font("Segoe UI Variable Small", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.lblDriveInfo.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
+ this.lblDriveInfo.Location = new System.Drawing.Point(55, 194);
+ this.lblDriveInfo.Name = "lblDriveInfo";
+ this.lblDriveInfo.Size = new System.Drawing.Size(182, 32);
+ this.lblDriveInfo.TabIndex = 237;
+ this.lblDriveInfo.Tag = "";
+ this.lblDriveInfo.Text = "Drive Properties";
//
- // label2
+ // lblDeviceIDInfo
//
- this.label2.AutoEllipsis = true;
- this.label2.Font = new System.Drawing.Font("Segoe UI Variable Small", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.label2.Location = new System.Drawing.Point(57, 80);
- this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(79, 15);
- this.label2.TabIndex = 238;
- this.label2.Tag = "";
- this.label2.Text = "Device ID";
+ this.lblDeviceIDInfo.AutoEllipsis = true;
+ this.lblDeviceIDInfo.Font = new System.Drawing.Font("Segoe UI Variable Small", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.lblDeviceIDInfo.Location = new System.Drawing.Point(57, 240);
+ this.lblDeviceIDInfo.Name = "lblDeviceIDInfo";
+ this.lblDeviceIDInfo.Size = new System.Drawing.Size(79, 15);
+ this.lblDeviceIDInfo.TabIndex = 238;
+ this.lblDeviceIDInfo.Tag = "";
+ this.lblDeviceIDInfo.Text = "Device ID";
//
- // label5
+ // lblStatusInfo
//
- this.label5.AutoEllipsis = true;
- this.label5.Font = new System.Drawing.Font("Segoe UI Variable Small", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.label5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
- this.label5.Location = new System.Drawing.Point(55, 328);
- this.label5.Name = "label5";
- this.label5.Size = new System.Drawing.Size(114, 31);
- this.label5.TabIndex = 241;
- this.label5.Tag = "";
- this.label5.Text = "Status";
+ this.lblStatusInfo.AutoEllipsis = true;
+ this.lblStatusInfo.Enabled = false;
+ this.lblStatusInfo.Font = new System.Drawing.Font("Segoe UI Variable Small", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.lblStatusInfo.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
+ this.lblStatusInfo.Location = new System.Drawing.Point(55, 328);
+ this.lblStatusInfo.Name = "lblStatusInfo";
+ this.lblStatusInfo.Size = new System.Drawing.Size(114, 31);
+ this.lblStatusInfo.TabIndex = 241;
+ this.lblStatusInfo.Tag = "";
+ this.lblStatusInfo.Text = "Status";
//
// btnSelect
//
- this.btnSelect.AutoEllipsis = true;
this.btnSelect.BackColor = System.Drawing.Color.White;
this.btnSelect.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnSelect.FlatAppearance.BorderColor = System.Drawing.Color.Gray;
this.btnSelect.FlatAppearance.BorderSize = 2;
this.btnSelect.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
this.btnSelect.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.btnSelect.Font = new System.Drawing.Font("Segoe UI Variable Small", 9F);
- this.btnSelect.Location = new System.Drawing.Point(59, 241);
+ this.btnSelect.Font = new System.Drawing.Font("Arial", 8.75F);
+ this.btnSelect.Location = new System.Drawing.Point(60, 114);
this.btnSelect.Name = "btnSelect";
- this.btnSelect.Size = new System.Drawing.Size(132, 28);
+ this.btnSelect.Size = new System.Drawing.Size(132, 36);
this.btnSelect.TabIndex = 242;
this.btnSelect.TabStop = false;
this.btnSelect.Text = "Select";
+ this.tt.SetToolTip(this.btnSelect, "This built-in method prepares a USB drive for a clean install, enabling a fresh r" +
+ "einstallation of your system.");
this.btnSelect.UseCompatibleTextRendering = true;
this.btnSelect.UseVisualStyleBackColor = false;
this.btnSelect.Click += new System.EventHandler(this.btnSelect_Click);
@@ -166,7 +179,7 @@
//
this.label6.AutoSize = true;
this.label6.Font = new System.Drawing.Font("Segoe UI Variable Small", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.label6.Location = new System.Drawing.Point(57, 223);
+ this.label6.Location = new System.Drawing.Point(58, 96);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(76, 15);
this.label6.TabIndex = 243;
@@ -175,20 +188,23 @@
//
// btnMCT
//
- this.btnMCT.AutoEllipsis = true;
- this.btnMCT.BackColor = System.Drawing.Color.White;
+ this.btnMCT.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(103)))), ((int)(((byte)(180)))));
this.btnMCT.Cursor = System.Windows.Forms.Cursors.Hand;
- this.btnMCT.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(241)))), ((int)(((byte)(65)))), ((int)(((byte)(17)))));
+ this.btnMCT.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(103)))), ((int)(((byte)(180)))));
this.btnMCT.FlatAppearance.BorderSize = 2;
- this.btnMCT.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
+ this.btnMCT.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(103)))), ((int)(((byte)(160)))));
this.btnMCT.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.btnMCT.Font = new System.Drawing.Font("Segoe UI Variable Small", 9F);
- this.btnMCT.Location = new System.Drawing.Point(235, 241);
+ this.btnMCT.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.btnMCT.ForeColor = System.Drawing.Color.White;
+ this.btnMCT.Location = new System.Drawing.Point(463, 114);
this.btnMCT.Name = "btnMCT";
- this.btnMCT.Size = new System.Drawing.Size(205, 28);
+ this.btnMCT.Size = new System.Drawing.Size(214, 36);
this.btnMCT.TabIndex = 244;
this.btnMCT.TabStop = false;
this.btnMCT.Text = "Media Creation Tool (Microsoft)";
+ this.tt.SetToolTip(this.btnMCT, "If you want to perform a reinstall or clean install of Windows 11 on a new or use" +
+ "d PC, use this option to download the media creation tool to make a bootable USB" +
+ " or DVD.");
this.btnMCT.UseCompatibleTextRendering = true;
this.btnMCT.UseVisualStyleBackColor = false;
this.btnMCT.Click += new System.EventHandler(this.btnMCT_Click);
@@ -197,7 +213,7 @@
//
this.label7.AutoSize = true;
this.label7.Font = new System.Drawing.Font("Segoe UI Variable Small", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.label7.Location = new System.Drawing.Point(232, 223);
+ this.label7.Location = new System.Drawing.Point(233, 96);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(85, 15);
this.label7.TabIndex = 245;
@@ -208,6 +224,7 @@
//
this.progressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
+ this.progressBar.Enabled = false;
this.progressBar.Location = new System.Drawing.Point(60, 516);
this.progressBar.Name = "progressBar";
this.progressBar.Size = new System.Drawing.Size(834, 23);
@@ -232,10 +249,10 @@
this.checkCreateUnattend.AutoEllipsis = true;
this.checkCreateUnattend.FlatAppearance.BorderColor = System.Drawing.Color.Gray;
this.checkCreateUnattend.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.checkCreateUnattend.Font = new System.Drawing.Font("Segoe UI Variable Small", 8F);
- this.checkCreateUnattend.Location = new System.Drawing.Point(72, 275);
+ this.checkCreateUnattend.Font = new System.Drawing.Font("Arial", 8.75F);
+ this.checkCreateUnattend.Location = new System.Drawing.Point(73, 156);
this.checkCreateUnattend.Name = "checkCreateUnattend";
- this.checkCreateUnattend.Size = new System.Drawing.Size(194, 25);
+ this.checkCreateUnattend.Size = new System.Drawing.Size(214, 25);
this.checkCreateUnattend.TabIndex = 250;
this.checkCreateUnattend.Text = "Skip Hardware limits and go local";
this.checkCreateUnattend.UseVisualStyleBackColor = true;
@@ -245,17 +262,19 @@
// comboBoxDriveLetters
//
this.comboBoxDriveLetters.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.comboBoxDriveLetters.Enabled = false;
this.comboBoxDriveLetters.Font = new System.Drawing.Font("Segoe UI Variable Small", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.comboBoxDriveLetters.FormattingEnabled = true;
- this.comboBoxDriveLetters.Location = new System.Drawing.Point(210, 98);
+ this.comboBoxDriveLetters.Location = new System.Drawing.Point(210, 258);
this.comboBoxDriveLetters.Name = "comboBoxDriveLetters";
this.comboBoxDriveLetters.Size = new System.Drawing.Size(121, 25);
this.comboBoxDriveLetters.TabIndex = 251;
//
// linkShowDiskList
//
+ this.linkShowDiskList.Enabled = false;
this.linkShowDiskList.LinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
- this.linkShowDiskList.Location = new System.Drawing.Point(60, 126);
+ this.linkShowDiskList.Location = new System.Drawing.Point(60, 286);
this.linkShowDiskList.Name = "linkShowDiskList";
this.linkShowDiskList.Size = new System.Drawing.Size(177, 16);
this.linkShowDiskList.TabIndex = 252;
@@ -268,31 +287,114 @@
this.label3.AutoEllipsis = true;
this.label3.Font = new System.Drawing.Font("Segoe UI Variable Small", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
- this.label3.Location = new System.Drawing.Point(55, 177);
+ this.label3.Location = new System.Drawing.Point(55, 25);
this.label3.Name = "label3";
- this.label3.Size = new System.Drawing.Size(182, 32);
+ this.label3.Size = new System.Drawing.Size(232, 32);
this.label3.TabIndex = 253;
this.label3.Tag = "";
- this.label3.Text = "Create Media";
+ this.label3.Text = "Create Installation Media";
//
- // label4
+ // lblDriveLetterInfo
//
- this.label4.AutoEllipsis = true;
- this.label4.Font = new System.Drawing.Font("Segoe UI Variable Small", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.label4.Location = new System.Drawing.Point(207, 80);
- this.label4.Name = "label4";
- this.label4.Size = new System.Drawing.Size(79, 15);
- this.label4.TabIndex = 254;
- this.label4.Tag = "";
- this.label4.Text = "Device Letter";
+ this.lblDriveLetterInfo.AutoEllipsis = true;
+ this.lblDriveLetterInfo.Enabled = false;
+ this.lblDriveLetterInfo.Font = new System.Drawing.Font("Segoe UI Variable Small", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.lblDriveLetterInfo.Location = new System.Drawing.Point(207, 240);
+ this.lblDriveLetterInfo.Name = "lblDriveLetterInfo";
+ this.lblDriveLetterInfo.Size = new System.Drawing.Size(79, 15);
+ this.lblDriveLetterInfo.TabIndex = 254;
+ this.lblDriveLetterInfo.Tag = "";
+ this.lblDriveLetterInfo.Text = "Device Letter";
//
- // InstallationMediaView
+ // lblPartitionSchemeInfo
+ //
+ this.lblPartitionSchemeInfo.AutoEllipsis = true;
+ this.lblPartitionSchemeInfo.Enabled = false;
+ this.lblPartitionSchemeInfo.Font = new System.Drawing.Font("Segoe UI Variable Small", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.lblPartitionSchemeInfo.Location = new System.Drawing.Point(361, 240);
+ this.lblPartitionSchemeInfo.Name = "lblPartitionSchemeInfo";
+ this.lblPartitionSchemeInfo.Size = new System.Drawing.Size(109, 15);
+ this.lblPartitionSchemeInfo.TabIndex = 255;
+ this.lblPartitionSchemeInfo.Tag = "";
+ this.lblPartitionSchemeInfo.Text = "Partition scheme";
+ //
+ // comboBoxPartitionScheme
+ //
+ this.comboBoxPartitionScheme.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.comboBoxPartitionScheme.Enabled = false;
+ this.comboBoxPartitionScheme.Font = new System.Drawing.Font("Segoe UI Variable Small", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.comboBoxPartitionScheme.FormattingEnabled = true;
+ this.comboBoxPartitionScheme.Location = new System.Drawing.Point(364, 258);
+ this.comboBoxPartitionScheme.Name = "comboBoxPartitionScheme";
+ this.comboBoxPartitionScheme.Size = new System.Drawing.Size(126, 25);
+ this.comboBoxPartitionScheme.TabIndex = 256;
+ //
+ // btnInstallAssistant
+ //
+ this.btnInstallAssistant.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(103)))), ((int)(((byte)(180)))));
+ this.btnInstallAssistant.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.btnInstallAssistant.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(103)))), ((int)(((byte)(180)))));
+ this.btnInstallAssistant.FlatAppearance.BorderSize = 2;
+ this.btnInstallAssistant.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(103)))), ((int)(((byte)(160)))));
+ this.btnInstallAssistant.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btnInstallAssistant.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.btnInstallAssistant.ForeColor = System.Drawing.Color.White;
+ this.btnInstallAssistant.Location = new System.Drawing.Point(236, 114);
+ this.btnInstallAssistant.Name = "btnInstallAssistant";
+ this.btnInstallAssistant.Size = new System.Drawing.Size(214, 36);
+ this.btnInstallAssistant.TabIndex = 257;
+ this.btnInstallAssistant.TabStop = false;
+ this.btnInstallAssistant.Text = "Installation Assistant (Microsoft)";
+ this.tt.SetToolTip(this.btnInstallAssistant, "This is the best option for installing Windows 11 on the device you’re currently " +
+ "using.");
+ this.btnInstallAssistant.UseCompatibleTextRendering = true;
+ this.btnInstallAssistant.UseVisualStyleBackColor = false;
+ this.btnInstallAssistant.Click += new System.EventHandler(this.btnInstallAssistant_Click);
+ //
+ // label1
+ //
+ this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.label1.AutoEllipsis = true;
+ this.label1.Font = new System.Drawing.Font("Segoe UI Variable Small", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label1.Location = new System.Drawing.Point(60, 57);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(846, 15);
+ this.label1.TabIndex = 258;
+ this.label1.Tag = "";
+ this.label1.Text = "There are 3 options below for installing or creating Windows 11 media. Check out " +
+ "each one to determine the best option for you.";
+ //
+ // linkPCHealthCheckApp
+ //
+ this.linkPCHealthCheckApp.ActiveLinkColor = System.Drawing.Color.RoyalBlue;
+ this.linkPCHealthCheckApp.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.linkPCHealthCheckApp.AutoEllipsis = true;
+ this.linkPCHealthCheckApp.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.linkPCHealthCheckApp.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
+ this.linkPCHealthCheckApp.LinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
+ this.linkPCHealthCheckApp.Location = new System.Drawing.Point(44, 605);
+ this.linkPCHealthCheckApp.Name = "linkPCHealthCheckApp";
+ this.linkPCHealthCheckApp.Size = new System.Drawing.Size(566, 16);
+ this.linkPCHealthCheckApp.TabIndex = 260;
+ this.linkPCHealthCheckApp.TabStop = true;
+ this.linkPCHealthCheckApp.Text = "Before installing, please refer to the WhyNotWin11 app to confirm your device mee" +
+ "ts the minimum system requirements";
+ this.linkPCHealthCheckApp.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkPCHealthCheckApp_LinkClicked);
+ //
+ // MediaView
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoScroll = true;
this.BackColor = System.Drawing.Color.White;
- this.Controls.Add(this.label4);
+ this.Controls.Add(this.linkPCHealthCheckApp);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.btnInstallAssistant);
+ this.Controls.Add(this.comboBoxPartitionScheme);
+ this.Controls.Add(this.lblPartitionSchemeInfo);
+ this.Controls.Add(this.lblDriveLetterInfo);
this.Controls.Add(this.label3);
this.Controls.Add(this.linkShowDiskList);
this.Controls.Add(this.comboBoxDriveLetters);
@@ -303,14 +405,14 @@
this.Controls.Add(this.btnMCT);
this.Controls.Add(this.label6);
this.Controls.Add(this.btnSelect);
- this.Controls.Add(this.label5);
- this.Controls.Add(this.label2);
- this.Controls.Add(this.label1);
+ this.Controls.Add(this.lblStatusInfo);
+ this.Controls.Add(this.lblDeviceIDInfo);
+ this.Controls.Add(this.lblDriveInfo);
this.Controls.Add(this.btnStart);
this.Controls.Add(this.comboBoxDrives);
this.Controls.Add(this.rtbLog);
this.Controls.Add(this.btnBack);
- this.Name = "InstallationMediaView";
+ this.Name = "MediaView";
this.Size = new System.Drawing.Size(959, 631);
this.ResumeLayout(false);
this.PerformLayout();
@@ -323,9 +425,9 @@
private System.Windows.Forms.RichTextBox rtbLog;
private System.Windows.Forms.ComboBox comboBoxDrives;
private System.Windows.Forms.Button btnStart;
- private System.Windows.Forms.Label label1;
- private System.Windows.Forms.Label label2;
- private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.Label lblDriveInfo;
+ private System.Windows.Forms.Label lblDeviceIDInfo;
+ private System.Windows.Forms.Label lblStatusInfo;
private System.Windows.Forms.Button btnSelect;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Button btnMCT;
@@ -336,6 +438,12 @@
private System.Windows.Forms.ComboBox comboBoxDriveLetters;
private System.Windows.Forms.LinkLabel linkShowDiskList;
private System.Windows.Forms.Label label3;
- private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.Label lblDriveLetterInfo;
+ private System.Windows.Forms.Label lblPartitionSchemeInfo;
+ private System.Windows.Forms.ComboBox comboBoxPartitionScheme;
+ private System.Windows.Forms.Button btnInstallAssistant;
+ private System.Windows.Forms.ToolTip tt;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.LinkLabel linkPCHealthCheckApp;
}
}
diff --git a/FlybyScript/Views/MediaView.cs b/FlybyScript/Views/MediaView.cs
index 8f534ed..68d24d0 100644
--- a/FlybyScript/Views/MediaView.cs
+++ b/FlybyScript/Views/MediaView.cs
@@ -66,10 +66,15 @@ namespace Views
}
else
{
- //MessageBox.Show("No removable drives found.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
- comboBoxDriveLetters.Enabled =
- comboBoxDrives.Enabled = false;
+ // MessageBox.Show("No removable drives found.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ comboBoxDriveLetters.Enabled = comboBoxDrives.Enabled = false;
}
+
+ // Initialize partition schemes
+ comboBoxPartitionScheme.Items.Clear();
+ comboBoxPartitionScheme.Items.Add("GPT");
+ comboBoxPartitionScheme.Items.Add("MBR");
+ comboBoxPartitionScheme.SelectedIndex = 0; // default to gpt
}
private async Task ShowDiskList()
@@ -139,10 +144,10 @@ namespace Views
btnStart.Enabled = false; // Disable the Start button
// Validate Disk Number
- if (string.IsNullOrEmpty(comboBoxDrives.Text) || !int.TryParse(comboBoxDrives.Text, out _))
+ if (string.IsNullOrEmpty(comboBoxDrives.Text) || !int.TryParse(comboBoxDrives.Text, out int diskNumber))
{
logger.Log("Please enter a valid Disk Number.", Color.Red);
- btnStart.Enabled = true; // Re-enable the button
+ btnStart.Enabled = true;
return;
}
@@ -154,21 +159,33 @@ namespace Views
return;
}
- string diskNumber = comboBoxDrives.Text.Trim(); // Get the disk number from the ComboBox
- string driveLetter = comboBoxDriveLetters.SelectedItem.ToString().Trim(); // Get the selected drive letter
-
- logger.Log($"Starting to format Disk {diskNumber} and copy to Drive {driveLetter}...", Color.Black);
+ // Get the selected drive letter and partition scheme
+ string driveLetter = comboBoxDriveLetters.SelectedItem.ToString().Trim();
+ string partitionScheme = comboBoxPartitionScheme.SelectedItem.ToString().Trim(); // Get the selected partition scheme
try
{
- // Format the drive using the disk number
- await usbManagement.FormatDriveAsync(diskNumber); // Pass the disk number
+ // Check if the selected drive is a USB stick
+ DriveInfo selectedDrive = DriveInfo.GetDrives()
+ .FirstOrDefault(d => d.Name.StartsWith(driveLetter));
+
+ if (selectedDrive == null || selectedDrive.DriveType != DriveType.Removable)
+ {
+ logger.Log("Selected drive is not a compatible USB stick. Only USB sticks are supported.", Color.Red);
+ btnStart.Enabled = true;
+ return;
+ }
+
+ logger.Log($"Starting to format Disk {diskNumber} ({driveLetter}) as {partitionScheme}...", Color.Black);
+
+ // Format the drive with the selected partition scheme
+ await usbManagement.FormatDriveAsync(diskNumber.ToString(), partitionScheme); // Pass the disk number and selected partition scheme
logger.Log($"Disk {diskNumber} formatted successfully.", Color.Black);
logger.Log($"Disk {diskNumber} is now bootable.", Color.Black);
// Copy ISO and create unattend.xml if checked
bool createUnattend = checkCreateUnattend.Checked;
- await usbManagement.CopyISOWithUnattendAsync(driveLetter, selectedIsoPath, createUnattend); // Use the drive letter for copying
+ await usbManagement.CopyISOWithUnattendAsync(driveLetter, selectedIsoPath, createUnattend);
logger.Log("Process completed!", Color.Green);
}
@@ -194,15 +211,38 @@ namespace Views
selectedIsoPath = openFileDialog.FileName;
logger.Log($"Selected ISO file: {selectedIsoPath}", Color.Black);
- checkCreateUnattend.Visible = true; // Show the checkbox to create unattend.xml
+ ToggleIsoControls(true);
}
else
{
logger.Log("ISO file selection was cancelled.", Color.Red);
+ ToggleIsoControls(false); // Disable ISO-related controls if selection is canceled
}
+
+ // MCT and Install Assistant buttons are always enabled
+ btnMCT.Enabled = true;
+ btnInstallAssistant.Enabled = true;
}
}
+ // Helper method to toggle ISO-related controls
+ private void ToggleIsoControls(bool isEnabled)
+ {
+ checkCreateUnattend.Visible = isEnabled;
+ comboBoxDrives.Enabled = isEnabled;
+ comboBoxDriveLetters.Enabled = isEnabled;
+ comboBoxPartitionScheme.Enabled = isEnabled;
+ lblDeviceIDInfo.Enabled = isEnabled;
+ lblDriveInfo.Enabled = isEnabled;
+ rtbLog.Enabled = isEnabled;
+ lblDriveLetterInfo.Enabled = isEnabled;
+ lblPartitionSchemeInfo.Enabled = isEnabled;
+ lblStatusInfo.Enabled = isEnabled;
+ linkShowDiskList.Enabled = isEnabled;
+ btnStart.Enabled = isEnabled;
+ }
+
+
private void checkCreateUnattend_CheckedChanged(object sender, EventArgs e)
{
if (checkCreateUnattend.Checked)
@@ -235,12 +275,27 @@ namespace Views
private async void btnMCT_Click(object sender, EventArgs e)
{
- await usbManagement.DownloadMediaCreationTool();
+ string mediaCreationToolUrl = "https://go.microsoft.com/fwlink/?linkid=2156295";
+ await usbManagement.DownloadMediaTool(mediaCreationToolUrl, "MediaCreationTool.exe");
+ }
+
+ private async void btnInstallAssistant_Click(object sender, EventArgs e)
+ {
+ string installAssistantUrl = "https://go.microsoft.com/fwlink/?linkid=2171764";
+ await usbManagement.DownloadMediaTool(installAssistantUrl, "Windows11InstallationAssistant.exe");
+ }
+
+ private async void linkPCHealthCheckApp_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+ {
+ string installAssistantUrl = "https://github.com/rcmaehl/WhyNotWin11/releases/download/2.6.1.1/WhyNotWin11.exe";
+ await usbManagement.DownloadMediaTool(installAssistantUrl, "WhyNotWin11.exe");
}
private void btnBack_Click(object sender, EventArgs e)
{
SwitchView.GoBack(this.Parent as Panel);
}
+
+
}
}
\ No newline at end of file
diff --git a/FlybyScript/Views/MediaView.resx b/FlybyScript/Views/MediaView.resx
index 1af7de1..4978a90 100644
--- a/FlybyScript/Views/MediaView.resx
+++ b/FlybyScript/Views/MediaView.resx
@@ -117,4 +117,10 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 17, 17
+
+
+ 17, 17
+
\ No newline at end of file