From d9419df191e8c31590156ed43dbc1202880f33c9 Mon Sep 17 00:00:00 2001 From: H4CK3R-01 Date: Sat, 26 Mar 2022 21:03:02 +0100 Subject: [PATCH] Fixed open and save files --- SOURCE/Application/Form1.Designer.cs | 2 +- SOURCE/Application/packages.config | 9 + SOURCE/Plugin/AML.ico | Bin 0 -> 67646 bytes SOURCE/Plugin/DeviceDescription.Designer.cs | 15 +- SOURCE/Plugin/DeviceDescription.cs | 7 +- SOURCE/Plugin/DeviceDescription.resx | 404 +++++++++++------- SOURCE/Plugin/MWController.cs | 6 +- SOURCE/Plugin/ModellingWizard.xaml.cs | 2 +- SOURCE/Plugin/Properties/Settings.Designer.cs | 26 ++ SOURCE/Plugin/Properties/Settings.settings | 6 + SOURCE/Plugin/README.md | 214 ++++++++++ 11 files changed, 512 insertions(+), 179 deletions(-) create mode 100644 SOURCE/Application/packages.config create mode 100644 SOURCE/Plugin/AML.ico create mode 100644 SOURCE/Plugin/Properties/Settings.Designer.cs create mode 100644 SOURCE/Plugin/Properties/Settings.settings create mode 100644 SOURCE/Plugin/README.md diff --git a/SOURCE/Application/Form1.Designer.cs b/SOURCE/Application/Form1.Designer.cs index d5dd497..614fe94 100644 --- a/SOURCE/Application/Form1.Designer.cs +++ b/SOURCE/Application/Form1.Designer.cs @@ -30,7 +30,7 @@ namespace App private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); - this.deviceDescription1 = new Aml.Editor.Plugin.DeviceDescription(); + this.deviceDescription1 = new Aml.Editor.Plugin.DeviceDescription(new Aml.Editor.Plugin.MWController()); this.SuspendLayout(); // // deviceDescription1 diff --git a/SOURCE/Application/packages.config b/SOURCE/Application/packages.config new file mode 100644 index 0000000..53cee4c --- /dev/null +++ b/SOURCE/Application/packages.config @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/SOURCE/Plugin/AML.ico b/SOURCE/Plugin/AML.ico new file mode 100644 index 0000000000000000000000000000000000000000..7ef373c66a1881abeedcab97b0a7834238fd6d77 GIT binary patch literal 67646 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 G!2bYcaJC!( literal 0 HcmV?d00001 diff --git a/SOURCE/Plugin/DeviceDescription.Designer.cs b/SOURCE/Plugin/DeviceDescription.Designer.cs index cf10732..ac3b544 100644 --- a/SOURCE/Plugin/DeviceDescription.Designer.cs +++ b/SOURCE/Plugin/DeviceDescription.Designer.cs @@ -58,7 +58,6 @@ namespace Aml.Editor.Plugin this.helpButton = new System.Windows.Forms.ToolStripDropDownButton(); this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.manualToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.fileNameLabel = new System.Windows.Forms.ToolStripLabel(); this.vendorNameTextBox = new System.Windows.Forms.ToolStripTextBox(); this.filePathLabel = new System.Windows.Forms.ToolStripLabel(); this.deviceNameTextBox = new System.Windows.Forms.ToolStripTextBox(); @@ -295,7 +294,6 @@ namespace Aml.Editor.Plugin this.fileButton, this.librariesSplitButton, this.helpButton, - this.fileNameLabel, this.vendorNameTextBox, this.filePathLabel, this.deviceNameTextBox, @@ -468,14 +466,6 @@ namespace Aml.Editor.Plugin this.manualToolStripMenuItem.Text = "Manual"; this.manualToolStripMenuItem.Click += new System.EventHandler(this.manualToolStripMenuItem_Click); // - // fileNameLabel - // - this.fileNameLabel.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; - this.fileNameLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold); - this.fileNameLabel.ForeColor = System.Drawing.Color.Black; - this.fileNameLabel.Name = "fileNameLabel"; - this.fileNameLabel.Size = new System.Drawing.Size(0, 20); - // // vendorNameTextBox // this.vendorNameTextBox.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; @@ -1105,8 +1095,8 @@ namespace Aml.Editor.Plugin this.toolStripLabel20.BackColor = System.Drawing.Color.Transparent; this.toolStripLabel20.ForeColor = System.Drawing.Color.Black; this.toolStripLabel20.Name = "toolStripLabel20"; - this.toolStripLabel20.Size = new System.Drawing.Size(122, 22); - this.toolStripLabel20.Text = "Generic Information 2"; + this.toolStripLabel20.Size = new System.Drawing.Size(113, 22); + this.toolStripLabel20.Text = "Generic Information"; // // deleteRoleClassButton // @@ -2626,7 +2616,6 @@ namespace Aml.Editor.Plugin private System.Windows.Forms.Label TableHeader_lbl_Copyright; private System.Windows.Forms.Label TableHeader_lbl_Description; private System.Windows.Forms.TextBox descriptionTxtBoxElecAttri; - private System.Windows.Forms.ToolStripLabel fileNameLabel; private System.Windows.Forms.TreeView treeViewElectricalInterfaces; private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn17; private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn18; diff --git a/SOURCE/Plugin/DeviceDescription.cs b/SOURCE/Plugin/DeviceDescription.cs index acefe67..de03b4d 100644 --- a/SOURCE/Plugin/DeviceDescription.cs +++ b/SOURCE/Plugin/DeviceDescription.cs @@ -1614,7 +1614,7 @@ namespace Aml.Editor.Plugin { SaveFileDialog saveFileDialog = new SaveFileDialog(); - // saveFileDialog.Filter = "AML Files( *.amlx )| *.amlx;"; + saveFileDialog.Filter = "AML Files( *.amlx )| *.amlx;"; saveFileDialog.FileName = vendorNameTextBox.Text + "-" + deviceNameTextBox.Text + "-V.1.0-" + DateTime.Now.Date.ToShortDateString(); if (saveFileDialog.ShowDialog() == DialogResult.OK) @@ -1622,11 +1622,9 @@ namespace Aml.Editor.Plugin device.filepath = Path.GetDirectoryName(saveFileDialog.FileName); device.environment = Path.GetDirectoryName(saveFileDialog.FileName); - //filePathLabel.Text = Path.GetDirectoryName(saveFileDialog.FileName); device.fileName = saveFileDialog.FileName; - fileNameLabel.Text = ""; // storing user defined values of Attachebles data grid view in to list // Pass the device to the controller @@ -1750,7 +1748,6 @@ namespace Aml.Editor.Plugin device.fileName = saveFileDialog.FileName; - fileNameLabel.Text = ""; // storing user defined values of Attachebles data grid view in to list // Pass the device to the controller @@ -2076,7 +2073,6 @@ namespace Aml.Editor.Plugin document = CAEXDocument.LoadFromStream(part.GetStream()); } - fileNameLabel.Text = fileInfo.Name; getAllInterfaces(treeViewInterfaceClassLib.Nodes); foreach (var classLibType in document.CAEXFile.SystemUnitClassLib) @@ -3590,7 +3586,6 @@ namespace Aml.Editor.Plugin { vendorNameTextBox.Text = ""; deviceNameTextBox.Text = ""; - fileNameLabel.Text = ""; genericDataHeaderLabel.Text = ""; electricalInterfacesHeaderlabel.Text = ""; genericInformationDataGridView.Rows.Clear(); diff --git a/SOURCE/Plugin/DeviceDescription.resx b/SOURCE/Plugin/DeviceDescription.resx index 334c27a..01e3423 100644 --- a/SOURCE/Plugin/DeviceDescription.resx +++ b/SOURCE/Plugin/DeviceDescription.resx @@ -123,6 +123,33 @@ 265, 17 + + 1330, 103 + + + 1066, 103 + + + 273, 146 + + + True + + + True + + + True + + + True + + + True + + + True + True @@ -144,6 +171,9 @@ 273, 146 + + 17, 80 + 278, 103 @@ -151,63 +181,63 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD6 - DAAAAk1TRnQBSQFMAgEBAwEAAfgBAwH4AQMBHAEAARwBAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo - AwABcAMAARwDAAEBAQABCAUAAUABDBgAAYACAAGAAwACgAEAAYADAAGAAQABgAEAAoACAAPAAQABwAHc - AcABAAHwAcoBpgEAATMFAAEzAQABMwEAATMBAAIzAgADFgEAAxwBAAMiAQADKQEAA1UBAANNAQADQgEA - AzkBAAGAAXwB/wEAAlAB/wEAAZMBAAHWAQAB/wHsAcwBAAHGAdYB7wEAAdYC5wEAAZABqQGtAgAB/wEz - AwABZgMAAZkDAAHMAgABMwMAAjMCAAEzAWYCAAEzAZkCAAEzAcwCAAEzAf8CAAFmAwABZgEzAgACZgIA - AWYBmQIAAWYBzAIAAWYB/wIAAZkDAAGZATMCAAGZAWYCAAKZAgABmQHMAgABmQH/AgABzAMAAcwBMwIA - AcwBZgIAAcwBmQIAAswCAAHMAf8CAAH/AWYCAAH/AZkCAAH/AcwBAAEzAf8CAAH/AQABMwEAATMBAAFm - AQABMwEAAZkBAAEzAQABzAEAATMBAAH/AQAB/wEzAgADMwEAAjMBZgEAAjMBmQEAAjMBzAEAAjMB/wEA - ATMBZgIAATMBZgEzAQABMwJmAQABMwFmAZkBAAEzAWYBzAEAATMBZgH/AQABMwGZAgABMwGZATMBAAEz - AZkBZgEAATMCmQEAATMBmQHMAQABMwGZAf8BAAEzAcwCAAEzAcwBMwEAATMBzAFmAQABMwHMAZkBAAEz - AswBAAEzAcwB/wEAATMB/wEzAQABMwH/AWYBAAEzAf8BmQEAATMB/wHMAQABMwL/AQABZgMAAWYBAAEz - AQABZgEAAWYBAAFmAQABmQEAAWYBAAHMAQABZgEAAf8BAAFmATMCAAFmAjMBAAFmATMBZgEAAWYBMwGZ - AQABZgEzAcwBAAFmATMB/wEAAmYCAAJmATMBAANmAQACZgGZAQACZgHMAQABZgGZAgABZgGZATMBAAFm - AZkBZgEAAWYCmQEAAWYBmQHMAQABZgGZAf8BAAFmAcwCAAFmAcwBMwEAAWYBzAGZAQABZgLMAQABZgHM - Af8BAAFmAf8CAAFmAf8BMwEAAWYB/wGZAQABZgH/AcwBAAHMAQAB/wEAAf8BAAHMAQACmQIAAZkBMwGZ - AQABmQEAAZkBAAGZAQABzAEAAZkDAAGZAjMBAAGZAQABZgEAAZkBMwHMAQABmQEAAf8BAAGZAWYCAAGZ - AWYBMwEAAZkBMwFmAQABmQFmAZkBAAGZAWYBzAEAAZkBMwH/AQACmQEzAQACmQFmAQADmQEAApkBzAEA - ApkB/wEAAZkBzAIAAZkBzAEzAQABZgHMAWYBAAGZAcwBmQEAAZkCzAEAAZkBzAH/AQABmQH/AgABmQH/ - ATMBAAGZAcwBZgEAAZkB/wGZAQABmQH/AcwBAAGZAv8BAAHMAwABmQEAATMBAAHMAQABZgEAAcwBAAGZ - AQABzAEAAcwBAAGZATMCAAHMAjMBAAHMATMBZgEAAcwBMwGZAQABzAEzAcwBAAHMATMB/wEAAcwBZgIA - AcwBZgEzAQABmQJmAQABzAFmAZkBAAHMAWYBzAEAAZkBZgH/AQABzAGZAgABzAGZATMBAAHMAZkBZgEA - AcwCmQEAAcwBmQHMAQABzAGZAf8BAALMAgACzAEzAQACzAFmAQACzAGZAQADzAEAAswB/wEAAcwB/wIA - AcwB/wEzAQABmQH/AWYBAAHMAf8BmQEAAcwB/wHMAQABzAL/AQABzAEAATMBAAH/AQABZgEAAf8BAAGZ - AQABzAEzAgAB/wIzAQAB/wEzAWYBAAH/ATMBmQEAAf8BMwHMAQAB/wEzAf8BAAH/AWYCAAH/AWYBMwEA - AcwCZgEAAf8BZgGZAQAB/wFmAcwBAAHMAWYB/wEAAf8BmQIAAf8BmQEzAQAB/wGZAWYBAAH/ApkBAAH/ - AZkBzAEAAf8BmQH/AQAB/wHMAgAB/wHMATMBAAH/AcwBZgEAAf8BzAGZAQAB/wLMAQAB/wHMAf8BAAL/ - ATMBAAHMAf8BZgEAAv8BmQEAAv8BzAEAAmYB/wEAAWYB/wFmAQABZgL/AQAB/wJmAQAB/wFmAf8BAAL/ - AWYBAAEhAQABpQEAA18BAAN3AQADhgEAA5YBAAPLAQADsgEAA9cBAAPdAQAD4wEAA+oBAAPxAQAD+AEA - AfAB+wH/AQABpAKgAQADgAMAAf8CAAH/AwAC/wEAAf8DAAH/AQAB/wEAAv8CAAP/AQA49Bv/AfQcAA3/ - DfYB/wH2OP8cAAH/AvYK/wT2Bf8D9gL/AfY4/xwAA/YY/wH2OP8cAAP2D/8B9Aj/AfYH/w/0Iv8cAAL2 - BP8Q9Az/AfQB8wLxA/IE8QHyAvEB8gHzIv8cAAH2BP8C9AEZDQkBGQL0BP8B9gX/AfMBvAgHAe8CBwG1 - AQcB8AH0If8cAAX/AfQBGQG7BJEHtAKRAbsBGQH0BP8C9gT/AfMBBwG1CrsCtQG7AfQh/xwAAfYE/wH0 - AQkBtAKLA60BswGtAYsCswGtAosBtAEJAfQE/wL2BP8BGQIJCBkB8QEZAQkBtQG7AfQh/xwAAfYE/wH0 - AQkBswGLAa0DswG6AbQBrQG0AdsBswGtAYsBtAEJAfQE/wL2BP8B8wEJAhkCBwHxAfIB7wGSAfcB8AIZ - AgkB9BX/AfQCGQH0CP8cAAH2BP8B9AHcAbMBiwG0AboBswHbAdwBCQGzAdsB3AHbAbMBrQG0AQkB9Ar/ - AfIBvAEZAfIB7QHsAfABBwFtARMBEgHtAfEBGQG7AQcB9BT/ARkBtQKRAbsB8AHzBf8B9hwABv8BCQGz - AYsBtAG6AbMB3AG0AboBswLbAbMBrAGLAbQBCQH0Cv8B8gEHAvAC6wG8AewBQwESARMBEgHvAfMCBwH0 - Df8B9AHyAfMB9AL/AfQBtQGLA2wBtQHxAfQE/wH2HAAG/wEJAbMBiwG0AboBtAHcAbQBkQGLAboB2wGz - AqwBuQEJAfQK/wHyAbwB8QHwAW0B6wEHAeoBEgHvAfcBbQHvAfMCBwH0Df8B8gHvAQcB8gL0ARkBiwFs - AYsBkQKLAe8B8gT/AfYcAAX/AfQBCQGzAYsBtAG6AbQB3AK0AYsBugHbAbMCrAGtAQkB9Ar/AfIBBwHx - AfABbQHrAe8B6gFtAfEB8AHvAbwB8gIHAfQN/wHxAewBrgEJAhkBtQFsAYsBCQEZAbQBiwG0AfEE/wH2 - HAAF/wH0AQkBswGLAbQBugGzAdwBuwEJAbMC2wGzAqwBswEJAfQK/wHyAQcB8QHwAm0B7wHqAesB8QHz - AvQB8gIHAfQN/wHxAewBbAGuAZECrgFmAbQCGQG7AZABkQHwBP8B9hwABf8B9AEJAbMBiwG0AboBswHb - AuEBswLbAbMCsgGzAQkB9Ar/AfIBBwHxAfACbQH3ARMB6wLzAfIB8wHyAgcB8w3/AfEC7AO7AbQBbAGL - AgkBtAGLAbQB8QT/AfYcAAH2BP8B9AEJAbMBiwKzAa0DswGtArMDrAGzAQkB9Ar/AfIBBwLwAm0BBwJt - AbwB7wHtAQcB8gHvAQcB9A3/AfIB7wEHARkC4gEZAosBtAGRApABuwHzBP8B9hwAAvYD/wH0AQkBtAKL - Aa0CrAKtBawBrQG0AQkB9Ar/AfIBBwLwAW0B6wG8AesBFQHrAm0BBwEZArsB9A3/AfQB8gHzBPQBtAGL - AWYBbAGLAbQBGQH0Bf8cAAL2BP8B8wEJAbsBtQG0AbMBrQGzCLQBvAH0Cv8B8gEHAQkB8AHsAesB8AH3 - ARQBFQEUAewB8AEZArsB9BT/ARkBuwKRAbUBvAH0Bv8cAAL2Bf8B4gMZAdwBtAGzBtwCtAG8C/8B8gEH - AQkBGQH3AZEBGQHwAfcB6wGRAQcCGQG7AQkB9BX/AfQB8gHzAvQH/xwAAvYG/wP0ARkBuwG6AbsBtQO7 - A7UB8QP2CP8B8gEHAQkCGQEJAhkB8AG8AQkB8gIZAQkBvAH0If8cAAL2CP8C9AEZArwBBwK8AwkB8AHz - A/YI/wHyAe8DuwIHAbsEBwEJAbsB9wHvAfMh/xwAAfYG/wP2Av8B9AHzBfQC8wL/AvYD/wH2Bf8B8wEH - AfcDtQG7AbUCuwHvAbUB7wK1AQcB8yH/HAAH/wT2A/8D9gb/AvYD/wH2Bf8B9AHxAbwB8AO8AQkCGQHw - AbwBGQG8AfAB8xf/AvYJ/xwAB/8E9gT/A/YF/wL2Cv8B9ALzBvQC8wP0GP8B9gr/HAAH/wT2Bf8C9gX/ - AfYN/wH0Cf8B9CT/HAAH/wP2B/8C9gT/AfY8/xwAB/8E9gf/AfZB/xwAAUIBTQE+BwABPgMAASgDAAFw - AwABHAMAAQEBAAEBBQABwAEBFgAD//8AwgAL + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD4 + DAAAAk1TRnQBSQFMAgEBAwIAAQQBAAEEARwBAAEcAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA + AXADAAEcAwABAQEAAQgFAAFAAQwYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA + AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 + AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA + AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm + AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM + AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA + ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz + AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ + AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM + AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA + AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA + AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ + AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/ + AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA + AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm + ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ + Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz + AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA + AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM + AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM + ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM + Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA + AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM + AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ + AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz + AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm + AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw + AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/wEAOPQb/wH0HAAN/w32 + Af8B9jj/HAAB/wL2Cv8E9gX/A/YC/wH2OP8cAAP2GP8B9jj/HAAD9g//AfQI/wH2B/8P9CL/HAAC9gT/ + EPQM/wH0AfMC8QPyBPEB8gLxAfIB8yL/HAAB9gT/AvQBGQ0JARkC9AT/AfYF/wHzAbwIBwHvAgcBtQEH + AfAB9CH/HAAF/wH0ARkBuwSRB7QCkQG7ARkB9AT/AvYE/wHzAQcBtQq7ArUBuwH0If8cAAH2BP8B9AEJ + AbQCiwOtAbMBrQGLArMBrQKLAbQBCQH0BP8C9gT/ARkCCQgZAfEBGQEJAbUBuwH0If8cAAH2BP8B9AEJ + AbMBiwGtA7MBugG0Aa0BtAHbAbMBrQGLAbQBCQH0BP8C9gT/AfMBCQIZAgcB8QHyAe8BkgH3AfACGQIJ + AfQV/wH0AhkB9Aj/HAAB9gT/AfQB3AGzAYsBtAG6AbMB2wHcAQkBswHbAdwB2wGzAa0BtAEJAfQK/wHy + AbwBGQHyAe0B7AHwAQcBbQETARIB7QHxARkBuwEHAfQU/wEZAbUCkQG7AfAB8wX/AfYcAAb/AQkBswGL + AbQBugGzAdwBtAG6AbMC2wGzAawBiwG0AQkB9Ar/AfIBBwLwAusBvAHsAUMBEgETARIB7wHzAgcB9A3/ + AfQB8gHzAfQC/wH0AbUBiwNsAbUB8QH0BP8B9hwABv8BCQGzAYsBtAG6AbQB3AG0AZEBiwG6AdsBswKs + AbkBCQH0Cv8B8gG8AfEB8AFtAesBBwHqARIB7wH3AW0B7wHzAgcB9A3/AfIB7wEHAfIC9AEZAYsBbAGL + AZECiwHvAfIE/wH2HAAF/wH0AQkBswGLAbQBugG0AdwCtAGLAboB2wGzAqwBrQEJAfQK/wHyAQcB8QHw + AW0B6wHvAeoBbQHxAfAB7wG8AfICBwH0Df8B8QHsAa4BCQIZAbUBbAGLAQkBGQG0AYsBtAHxBP8B9hwA + Bf8B9AEJAbMBiwG0AboBswHcAbsBCQGzAtsBswKsAbMBCQH0Cv8B8gEHAfEB8AJtAe8B6gHrAfEB8wL0 + AfICBwH0Df8B8QHsAWwBrgGRAq4BZgG0AhkBuwGQAZEB8AT/AfYcAAX/AfQBCQGzAYsBtAG6AbMB2wLh + AbMC2wGzArIBswEJAfQK/wHyAQcB8QHwAm0B9wETAesC8wHyAfMB8gIHAfMN/wHxAuwDuwG0AWwBiwIJ + AbQBiwG0AfEE/wH2HAAB9gT/AfQBCQGzAYsCswGtA7MBrQKzA6wBswEJAfQK/wHyAQcC8AJtAQcCbQG8 + Ae8B7QEHAfIB7wEHAfQN/wHyAe8BBwEZAuIBGQKLAbQBkQKQAbsB8wT/AfYcAAL2A/8B9AEJAbQCiwGt + AqwCrQWsAa0BtAEJAfQK/wHyAQcC8AFtAesBvAHrARUB6wJtAQcBGQK7AfQN/wH0AfIB8wT0AbQBiwFm + AWwBiwG0ARkB9AX/HAAC9gT/AfMBCQG7AbUBtAGzAa0Bswi0AbwB9Ar/AfIBBwEJAfAB7AHrAfAB9wEU + ARUBFAHsAfABGQK7AfQU/wEZAbsCkQG1AbwB9Ab/HAAC9gX/AeIDGQHcAbQBswbcArQBvAv/AfIBBwEJ + ARkB9wGRARkB8AH3AesBkQEHAhkBuwEJAfQV/wH0AfIB8wL0B/8cAAL2Bv8D9AEZAbsBugG7AbUDuwO1 + AfED9gj/AfIBBwEJAhkBCQIZAfABvAEJAfICGQEJAbwB9CH/HAAC9gj/AvQBGQK8AQcCvAMJAfAB8wP2 + CP8B8gHvA7sCBwG7BAcBCQG7AfcB7wHzIf8cAAH2Bv8D9gL/AfQB8wX0AvMC/wL2A/8B9gX/AfMBBwH3 + A7UBuwG1ArsB7wG1Ae8CtQEHAfMh/xwAB/8E9gP/A/YG/wL2A/8B9gX/AfQB8QG8AfADvAEJAhkB8AG8 + ARkBvAHwAfMX/wL2Cf8cAAf/BPYE/wP2Bf8C9gr/AfQC8wb0AvMD9Bj/AfYK/xwAB/8E9gX/AvYF/wH2 + Df8B9An/AfQk/xwAB/8D9gf/AvYE/wH2PP8cAAf/BPYH/wH2Qf8cAAFCAU0BPgcAAT4DAAEoAwABcAMA + ARwDAAEBAQABAQUAAcABARYAA///AMIACw== @@ -225,6 +255,21 @@ True + + True + + + True + + + True + + + True + + + True + 17, 80 @@ -262,8 +307,38 @@ True - - 1330, 103 + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True True @@ -298,6 +373,18 @@ TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + 1179, 60 + + + True + + + True + + + True + True @@ -328,6 +415,9 @@ 729, 60 + + 729, 60 + iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 @@ -336,6 +426,12 @@ RgtnViTyCJEC4UCoEdfIj94AAAAASUVORK5CYII= + + 1311, 60 + + + 1435, 60 + 149, 103 @@ -343,64 +439,64 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABC - DQAAAk1TRnQBSQFMAgEBAwEAAfgBAwH4AQMBHAEAARwBAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo - AwABcAMAARwDAAEBAQABCAUAAUABDBgAAYACAAGAAwACgAEAAYADAAGAAQABgAEAAoACAAPAAQABwAHc - AcABAAHwAcoBpgEAATMFAAEzAQABMwEAATMBAAIzAgADFgEAAxwBAAMiAQADKQEAA1UBAANNAQADQgEA - AzkBAAGAAXwB/wEAAlAB/wEAAZMBAAHWAQAB/wHsAcwBAAHGAdYB7wEAAdYC5wEAAZABqQGtAgAB/wEz - AwABZgMAAZkDAAHMAgABMwMAAjMCAAEzAWYCAAEzAZkCAAEzAcwCAAEzAf8CAAFmAwABZgEzAgACZgIA - AWYBmQIAAWYBzAIAAWYB/wIAAZkDAAGZATMCAAGZAWYCAAKZAgABmQHMAgABmQH/AgABzAMAAcwBMwIA - AcwBZgIAAcwBmQIAAswCAAHMAf8CAAH/AWYCAAH/AZkCAAH/AcwBAAEzAf8CAAH/AQABMwEAATMBAAFm - AQABMwEAAZkBAAEzAQABzAEAATMBAAH/AQAB/wEzAgADMwEAAjMBZgEAAjMBmQEAAjMBzAEAAjMB/wEA - ATMBZgIAATMBZgEzAQABMwJmAQABMwFmAZkBAAEzAWYBzAEAATMBZgH/AQABMwGZAgABMwGZATMBAAEz - AZkBZgEAATMCmQEAATMBmQHMAQABMwGZAf8BAAEzAcwCAAEzAcwBMwEAATMBzAFmAQABMwHMAZkBAAEz - AswBAAEzAcwB/wEAATMB/wEzAQABMwH/AWYBAAEzAf8BmQEAATMB/wHMAQABMwL/AQABZgMAAWYBAAEz - AQABZgEAAWYBAAFmAQABmQEAAWYBAAHMAQABZgEAAf8BAAFmATMCAAFmAjMBAAFmATMBZgEAAWYBMwGZ - AQABZgEzAcwBAAFmATMB/wEAAmYCAAJmATMBAANmAQACZgGZAQACZgHMAQABZgGZAgABZgGZATMBAAFm - AZkBZgEAAWYCmQEAAWYBmQHMAQABZgGZAf8BAAFmAcwCAAFmAcwBMwEAAWYBzAGZAQABZgLMAQABZgHM - Af8BAAFmAf8CAAFmAf8BMwEAAWYB/wGZAQABZgH/AcwBAAHMAQAB/wEAAf8BAAHMAQACmQIAAZkBMwGZ - AQABmQEAAZkBAAGZAQABzAEAAZkDAAGZAjMBAAGZAQABZgEAAZkBMwHMAQABmQEAAf8BAAGZAWYCAAGZ - AWYBMwEAAZkBMwFmAQABmQFmAZkBAAGZAWYBzAEAAZkBMwH/AQACmQEzAQACmQFmAQADmQEAApkBzAEA - ApkB/wEAAZkBzAIAAZkBzAEzAQABZgHMAWYBAAGZAcwBmQEAAZkCzAEAAZkBzAH/AQABmQH/AgABmQH/ - ATMBAAGZAcwBZgEAAZkB/wGZAQABmQH/AcwBAAGZAv8BAAHMAwABmQEAATMBAAHMAQABZgEAAcwBAAGZ - AQABzAEAAcwBAAGZATMCAAHMAjMBAAHMATMBZgEAAcwBMwGZAQABzAEzAcwBAAHMATMB/wEAAcwBZgIA - AcwBZgEzAQABmQJmAQABzAFmAZkBAAHMAWYBzAEAAZkBZgH/AQABzAGZAgABzAGZATMBAAHMAZkBZgEA - AcwCmQEAAcwBmQHMAQABzAGZAf8BAALMAgACzAEzAQACzAFmAQACzAGZAQADzAEAAswB/wEAAcwB/wIA - AcwB/wEzAQABmQH/AWYBAAHMAf8BmQEAAcwB/wHMAQABzAL/AQABzAEAATMBAAH/AQABZgEAAf8BAAGZ - AQABzAEzAgAB/wIzAQAB/wEzAWYBAAH/ATMBmQEAAf8BMwHMAQAB/wEzAf8BAAH/AWYCAAH/AWYBMwEA - AcwCZgEAAf8BZgGZAQAB/wFmAcwBAAHMAWYB/wEAAf8BmQIAAf8BmQEzAQAB/wGZAWYBAAH/ApkBAAH/ - AZkBzAEAAf8BmQH/AQAB/wHMAgAB/wHMATMBAAH/AcwBZgEAAf8BzAGZAQAB/wLMAQAB/wHMAf8BAAL/ - ATMBAAHMAf8BZgEAAv8BmQEAAv8BzAEAAmYB/wEAAWYB/wFmAQABZgL/AQAB/wJmAQAB/wFmAf8BAAL/ - AWYBAAEhAQABpQEAA18BAAN3AQADhgEAA5YBAAPLAQADsgEAA9cBAAPdAQAD4wEAA+oBAAPxAQAD+AEA - AfAB+wH/AQABpAKgAQADgAMAAf8CAAH/AwAC/wEAAf8DAAH/AQAB/wEAAv8CAAP/AQAc9BP2CP8B9Bv/ - AfQcAAT2A/8N9Aj/BPYX/wH2HP8cAAP2A/8B9AnzARkD8yP/AfYc/xwAAf8B9gP/AfQOCQEZAfQF/wH2 - G/8B9hz/HAAE/wH0AfIBuw20AQkB9AX/AfYB/wH2Nv8cAAX/AfEBtAyLAZEBCQH0BP8B9AEaBfYL/wH2 - Cv8B9hz/HAAD/wL2ARkBtAGtCrMBrQG0AbwE/wH2ARsBkwX2Av8B9gb/A/YK/wH2HP8cAAP/AvYBGQG0 - Aa0BtAK6AbQBuwEJAtsBCQHbAbMBtAG8BP8B9gEbAZoB9gH/A/YB9AHyA/EB8gEZAfIC8QPyBPEB8yH/ - HAAD/wL2ARkBtAGtAdsBugG7AbQCCQHcAdsB3AG6ArMBvAX/AfQBGgT/AfQB3QK1AgcCtQG7ArUBuwG1 - Ae8BuwG1Au8B8AH0IP8cAAT/AfYBGQG0Aa0C3AG7AZEBGQGRAbQB2wHcAbMBrAGzAbwF/wL2BP8B9AEJ - AbUBCQIZAt0BGQLdARkBCQHwARkB3QEJAfcBvAH0FP8B9AIZAfQI/xwABf8BGQG0Aa0B3AEZAQkBtAEZ - AosBtAHcAbMBrQG0AbwF/wP2A/8B9AEHAfcC8gHwARkB8gHwAfEC8wHxAbwBCQEZAQkB9wEHAfQT/wEZ - AbUCkQG7AfAB8wX/AfYcAAX/ARkBtAGtAdwCCQG0ARkBkQGzAdsB3AGzAawBtAG8B/8B9gH/AfYC/wEH - AfcB8AH3AewB9wHvAesB7AHwAbwB7AEUAeoBuwEJAbsBvA3/AfQB8gHzAfQC/wH0AbUBiwNsAbUB8QH0 - BP8B9hwABf8BGQG0Aa0C3AEJAbQBGQG0AboC2wGzAawBtAG8B/8C9gL/AfQBvAG1AbsB7AEUAesBEgEQ - AewB8QHtARABEQHsAQkBGQG7AQcN/wHyAe8BBwHyAvQBGQGLAWwBiwGRAosB7wHyBP8B9hwABf8BGQG0 - Aa0D3AG0ARkB3AHiAtsBswGsAbQBvAf/AvYC/wH0AQkBtQG7AewBQwEVAQ8BFAHvAfEB7AEQAZIB8gIZ - AbsBvAH/AfYL/wHxAewBrgEJAhkBtQFsAYsBCQEZAbQBiwG0AfEE/wH2HAAF/wHyAbQBrQG6AdsBugGz - AbQB2wG6AbMB2wGzAawBswEJAfQG/wH2A/8B9AEHAe8BvAHsAQ8CDgFDAe8B8AHsAREB9wHyAfQBGQH3 - AQcN/wHxAewBbAGuAZECrgFmAbQCGQG7AZABkQHwBP8B9hwABf8B8gG0AYsBswG0AbMBrQWzAa0BrAGz - AQkB9AX/AvYD/wH0AQcBuwG8AesBFQJtARAB7AEHAesBEQHsAfEB8wEJAfcBvAL2C/8B8QLsA7sBtAFs - AYsCCQG0AYsBtAHxBP8B9hwABf8B8gG0BYsBrQGLAa0DrAGtAbQBCQH0BP8C9gT/AfQBCQG1AQkBkQEV - AhMBQwH3AfMBkgFDARQB7AG7AQkB9wEHDf8B8gHvAQcBGQLiARkCiwG0AZECkAG7AfME/wH2HAAF/wHz - AgkBuwK6AYsBtAG6A9sCugG0AQkB9AT/AvYD/wL0AQkBuwEJAbUBbQHqAW0B7QHwAfQBvAHsAW0B6wG7 - AQkB9wEHDf8B9AHyAfME9AG0AYsBZgFsAYsBtAEZAfQF/xwABv8B4gMZAbsBkQG0AbsE2wG6AbQBCQH0 - BP8C9gT/AfQCuwEZAfICvAHwAfEB8wH0AfMB8AK8ARkBCQH3AQcU/wEZAbsCkQG1AbwB9Ab/HAAH/wPi - ARkBuwGRBrQBugHwAfYF/wH2BP8B9AG8AfcBCQjwAQkB8AG8AgkBtAEHFf8B9AHyAfMC9Af/HAAJ/wL0 - AfACvAEHAbsBvAEIAgkB8wL2BP8B9gT/AfQB8AHvArsG7wK7A+8CuwHwIf8cAAT/AfYG/wH0A/MBGQPz - AfQD9gr/AfMB8gPxAfAI8QHwAvEB9AH/AfYf/xwACf8B9gH/AfYB/wL2Bf8D9hn/AvQB/wP2Hv8cAAf/ - CPYF/wP2HP8C9hT/AvYJ/xwAB/8D9gL/AfYH/wL2HP8B9AP2E/8B9gr/HAAH/wH2Df8B9hj/AvYC/wH0 - A/Ye/xwAB/8B9g3/AfYE/wL2Ef8D9gL/BPYe/xwAFf8B9gT/AvYF/wP2Cf8D9gL/BPYe/xwAAUIBTQE+ - BwABPgMAASgDAAFwAwABHAMAAQEBAAEBBQABwAEBFgAD//8AwgAL + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABA + DQAAAk1TRnQBSQFMAgEBAwIAAQQBAAEEARwBAAEcAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA + AXADAAEcAwABAQEAAQgFAAFAAQwYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA + AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 + AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA + AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm + AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM + AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA + ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz + AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ + AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM + AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA + AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA + AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ + AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/ + AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA + AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm + ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ + Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz + AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA + AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM + AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM + ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM + Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA + AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM + AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ + AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz + AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm + AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw + AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/wEAHPQT9gj/AfQb/wH0 + HAAE9gP/DfQI/wT2F/8B9hz/HAAD9gP/AfQJ8wEZA/Mj/wH2HP8cAAH/AfYD/wH0DgkBGQH0Bf8B9hv/ + AfYc/xwABP8B9AHyAbsNtAEJAfQF/wH2Af8B9jb/HAAF/wHxAbQMiwGRAQkB9AT/AfQBGgX2C/8B9gr/ + AfYc/xwAA/8C9gEZAbQBrQqzAa0BtAG8BP8B9gEbAZMF9gL/AfYG/wP2Cv8B9hz/HAAD/wL2ARkBtAGt + AbQCugG0AbsBCQLbAQkB2wGzAbQBvAT/AfYBGwGaAfYB/wP2AfQB8gPxAfIBGQHyAvED8gTxAfMh/xwA + A/8C9gEZAbQBrQHbAboBuwG0AgkB3AHbAdwBugKzAbwF/wH0ARoE/wH0Ad0CtQIHArUBuwK1AbsBtQHv + AbsBtQLvAfAB9CD/HAAE/wH2ARkBtAGtAtwBuwGRARkBkQG0AdsB3AGzAawBswG8Bf8C9gT/AfQBCQG1 + AQkCGQLdARkC3QEZAQkB8AEZAd0BCQH3AbwB9BT/AfQCGQH0CP8cAAX/ARkBtAGtAdwBGQEJAbQBGQKL + AbQB3AGzAa0BtAG8Bf8D9gP/AfQBBwH3AvIB8AEZAfIB8AHxAvMB8QG8AQkBGQEJAfcBBwH0E/8BGQG1 + ApEBuwHwAfMF/wH2HAAF/wEZAbQBrQHcAgkBtAEZAZEBswHbAdwBswGsAbQBvAf/AfYB/wH2Av8BBwH3 + AfAB9wHsAfcB7wHrAewB8AG8AewBFAHqAbsBCQG7AbwN/wH0AfIB8wH0Av8B9AG1AYsDbAG1AfEB9AT/ + AfYcAAX/ARkBtAGtAtwBCQG0ARkBtAG6AtsBswGsAbQBvAf/AvYC/wH0AbwBtQG7AewBFAHrARIBEAHs + AfEB7QEQAREB7AEJARkBuwEHDf8B8gHvAQcB8gL0ARkBiwFsAYsBkQKLAe8B8gT/AfYcAAX/ARkBtAGt + A9wBtAEZAdwB4gLbAbMBrAG0AbwH/wL2Av8B9AEJAbUBuwHsAUMBFQEPARQB7wHxAewBEAGSAfICGQG7 + AbwB/wH2C/8B8QHsAa4BCQIZAbUBbAGLAQkBGQG0AYsBtAHxBP8B9hwABf8B8gG0Aa0BugHbAboBswG0 + AdsBugGzAdsBswGsAbMBCQH0Bv8B9gP/AfQBBwHvAbwB7AEPAg4BQwHvAfAB7AERAfcB8gH0ARkB9wEH + Df8B8QHsAWwBrgGRAq4BZgG0AhkBuwGQAZEB8AT/AfYcAAX/AfIBtAGLAbMBtAGzAa0FswGtAawBswEJ + AfQF/wL2A/8B9AEHAbsBvAHrARUCbQEQAewBBwHrAREB7AHxAfMBCQH3AbwC9gv/AfEC7AO7AbQBbAGL + AgkBtAGLAbQB8QT/AfYcAAX/AfIBtAWLAa0BiwGtA6wBrQG0AQkB9AT/AvYE/wH0AQkBtQEJAZEBFQIT + AUMB9wHzAZIBQwEUAewBuwEJAfcBBw3/AfIB7wEHARkC4gEZAosBtAGRApABuwHzBP8B9hwABf8B8wIJ + AbsCugGLAbQBugPbAroBtAEJAfQE/wL2A/8C9AEJAbsBCQG1AW0B6gFtAe0B8AH0AbwB7AFtAesBuwEJ + AfcBBw3/AfQB8gHzBPQBtAGLAWYBbAGLAbQBGQH0Bf8cAAb/AeIDGQG7AZEBtAG7BNsBugG0AQkB9AT/ + AvYE/wH0ArsBGQHyArwB8AHxAfMB9AHzAfACvAEZAQkB9wEHFP8BGQG7ApEBtQG8AfQG/xwAB/8D4gEZ + AbsBkQa0AboB8AH2Bf8B9gT/AfQBvAH3AQkI8AEJAfABvAIJAbQBBxX/AfQB8gHzAvQH/xwACf8C9AHw + ArwBBwG7AbwBCAIJAfMC9gT/AfYE/wH0AfAB7wK7Bu8CuwPvArsB8CH/HAAE/wH2Bv8B9APzARkD8wH0 + A/YK/wHzAfID8QHwCPEB8ALxAfQB/wH2H/8cAAn/AfYB/wH2Af8C9gX/A/YZ/wL0Af8D9h7/HAAH/wj2 + Bf8D9hz/AvYU/wL2Cf8cAAf/A/YC/wH2B/8C9hz/AfQD9hP/AfYK/xwAB/8B9g3/AfYY/wL2Av8B9AP2 + Hv8cAAf/AfYN/wH2BP8C9hH/A/YC/wT2Hv8cABX/AfYE/wL2Bf8D9gn/A/YC/wT2Hv8cAAFCAU0BPgcA + AT4DAAEoAwABcAMAARwDAAEBAQABAQUAAcABARYAA///AMIACw== @@ -417,7 +513,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC4 - CQAAAk1TRnQBSQFMAgEBAgEAAfABAwHwAQMBGQEAARkBAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CQAAAk1TRnQBSQFMAgEBAgEAAfgBAwH4AQMBGQEAARkBAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABZAMAARkDAAEBAQABCAUAAcQBCRgAAYACAAGAAwACgAEAAYADAAGAAQABgAEAAoACAAPAAQABwAHc AcABAAHwAcoBpgEAATMFAAEzAQABMwEAATMBAAIzAgADFgEAAxwBAAMiAQADKQEAA1UBAANNAQADQgEA AzkBAAGAAXwB/wEAAlAB/wEAAZMBAAHWAQAB/wHsAcwBAAHGAdYB7wEAAdYC5wEAAZABqQGtAgAB/wEz @@ -471,42 +567,42 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAA - CAAAAk1TRnQBSQFMAwEBAAH4AQMB+AEDARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA - AUADAAEQAwABAQEAAQgGAAEEGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA - AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA - AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm - AwABmQMAAcwCAAEzAwACMwIAATMBZgIAATMBmQIAATMBzAIAATMB/wIAAWYDAAFmATMCAAJmAgABZgGZ - AgABZgHMAgABZgH/AgABmQMAAZkBMwIAAZkBZgIAApkCAAGZAcwCAAGZAf8CAAHMAwABzAEzAgABzAFm - AgABzAGZAgACzAIAAcwB/wIAAf8BZgIAAf8BmQIAAf8BzAEAATMB/wIAAf8BAAEzAQABMwEAAWYBAAEz - AQABmQEAATMBAAHMAQABMwEAAf8BAAH/ATMCAAMzAQACMwFmAQACMwGZAQACMwHMAQACMwH/AQABMwFm - AgABMwFmATMBAAEzAmYBAAEzAWYBmQEAATMBZgHMAQABMwFmAf8BAAEzAZkCAAEzAZkBMwEAATMBmQFm - AQABMwKZAQABMwGZAcwBAAEzAZkB/wEAATMBzAIAATMBzAEzAQABMwHMAWYBAAEzAcwBmQEAATMCzAEA - ATMBzAH/AQABMwH/ATMBAAEzAf8BZgEAATMB/wGZAQABMwH/AcwBAAEzAv8BAAFmAwABZgEAATMBAAFm - AQABZgEAAWYBAAGZAQABZgEAAcwBAAFmAQAB/wEAAWYBMwIAAWYCMwEAAWYBMwFmAQABZgEzAZkBAAFm - ATMBzAEAAWYBMwH/AQACZgIAAmYBMwEAA2YBAAJmAZkBAAJmAcwBAAFmAZkCAAFmAZkBMwEAAWYBmQFm - AQABZgKZAQABZgGZAcwBAAFmAZkB/wEAAWYBzAIAAWYBzAEzAQABZgHMAZkBAAFmAswBAAFmAcwB/wEA - AWYB/wIAAWYB/wEzAQABZgH/AZkBAAFmAf8BzAEAAcwBAAH/AQAB/wEAAcwBAAKZAgABmQEzAZkBAAGZ - AQABmQEAAZkBAAHMAQABmQMAAZkCMwEAAZkBAAFmAQABmQEzAcwBAAGZAQAB/wEAAZkBZgIAAZkBZgEz - AQABmQEzAWYBAAGZAWYBmQEAAZkBZgHMAQABmQEzAf8BAAKZATMBAAKZAWYBAAOZAQACmQHMAQACmQH/ - AQABmQHMAgABmQHMATMBAAFmAcwBZgEAAZkBzAGZAQABmQLMAQABmQHMAf8BAAGZAf8CAAGZAf8BMwEA - AZkBzAFmAQABmQH/AZkBAAGZAf8BzAEAAZkC/wEAAcwDAAGZAQABMwEAAcwBAAFmAQABzAEAAZkBAAHM - AQABzAEAAZkBMwIAAcwCMwEAAcwBMwFmAQABzAEzAZkBAAHMATMBzAEAAcwBMwH/AQABzAFmAgABzAFm - ATMBAAGZAmYBAAHMAWYBmQEAAcwBZgHMAQABmQFmAf8BAAHMAZkCAAHMAZkBMwEAAcwBmQFmAQABzAKZ - AQABzAGZAcwBAAHMAZkB/wEAAswCAALMATMBAALMAWYBAALMAZkBAAPMAQACzAH/AQABzAH/AgABzAH/ - ATMBAAGZAf8BZgEAAcwB/wGZAQABzAH/AcwBAAHMAv8BAAHMAQABMwEAAf8BAAFmAQAB/wEAAZkBAAHM - ATMCAAH/AjMBAAH/ATMBZgEAAf8BMwGZAQAB/wEzAcwBAAH/ATMB/wEAAf8BZgIAAf8BZgEzAQABzAJm - AQAB/wFmAZkBAAH/AWYBzAEAAcwBZgH/AQAB/wGZAgAB/wGZATMBAAH/AZkBZgEAAf8CmQEAAf8BmQHM - AQAB/wGZAf8BAAH/AcwCAAH/AcwBMwEAAf8BzAFmAQAB/wHMAZkBAAH/AswBAAH/AcwB/wEAAv8BMwEA - AcwB/wFmAQAC/wGZAQAC/wHMAQACZgH/AQABZgH/AWYBAAFmAv8BAAH/AmYBAAH/AWYB/wEAAv8BZgEA - ASEBAAGlAQADXwEAA3cBAAOGAQADlgEAA8sBAAOyAQAD1wEAA90BAAPjAQAD6gEAA/EBAAP4AQAB8AH7 - Af8BAAGkAqABAAOAAwAB/wIAAf8DAAL/AQAB/wMAAf8BAAH/AQAC/wIAA/8BAAL2B/8B9Ab/MAAB9gL/ - AfQIGQT/MAAD/wEZB7MBtAP/AfYwAAL/AfYBCQGsAbMBrQGLA60BswP/ARowAAL/AfYBCQGsAbQBugEJ - AtwBtAGzAf8B9gH/ARswAAP/AQkBrAEJAbQB8AG0AdwBrQGzA/8B9jAAA/8BCQGtAdwBugHwAbMB3AGt - AbME/zAAA/8BCQGtAdwBugEZAeIB2wGsAbME/zAAA/8BCQGtAbQEswGsAbME/zAAA/8BGQK0AbMBtAK6 - AbMBtAP/AfYwAAT/AeIBGQG6A7QBugG0A/8B9jAABv8B8gEHAbsDCQH2A/8wAAX/AfYG/wH2A/8wAAT/ - A/YB/wH2A/8B9gP/MAAE/wH2B/8B9gP/MAAP/wH2MAABQgFNAT4HAAE+AwABKAMAAUADAAEQAwABAQEA - AQEFAAGAFwAD/4EACw== + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD+ + BwAAAk1TRnQBSQFMAwECAAEEAQABBAEQAQABEAEABP8BCQEACP8BQgFNATYBBAYAATYBBAIAASgDAAFA + AwABEAMAAQEBAAEIBgABBBgAAYACAAGAAwACgAEAAYADAAGAAQABgAEAAoACAAPAAQABwAHcAcABAAHw + AcoBpgEAATMFAAEzAQABMwEAATMBAAIzAgADFgEAAxwBAAMiAQADKQEAA1UBAANNAQADQgEAAzkBAAGA + AXwB/wEAAlAB/wEAAZMBAAHWAQAB/wHsAcwBAAHGAdYB7wEAAdYC5wEAAZABqQGtAgAB/wEzAwABZgMA + AZkDAAHMAgABMwMAAjMCAAEzAWYCAAEzAZkCAAEzAcwCAAEzAf8CAAFmAwABZgEzAgACZgIAAWYBmQIA + AWYBzAIAAWYB/wIAAZkDAAGZATMCAAGZAWYCAAKZAgABmQHMAgABmQH/AgABzAMAAcwBMwIAAcwBZgIA + AcwBmQIAAswCAAHMAf8CAAH/AWYCAAH/AZkCAAH/AcwBAAEzAf8CAAH/AQABMwEAATMBAAFmAQABMwEA + AZkBAAEzAQABzAEAATMBAAH/AQAB/wEzAgADMwEAAjMBZgEAAjMBmQEAAjMBzAEAAjMB/wEAATMBZgIA + ATMBZgEzAQABMwJmAQABMwFmAZkBAAEzAWYBzAEAATMBZgH/AQABMwGZAgABMwGZATMBAAEzAZkBZgEA + ATMCmQEAATMBmQHMAQABMwGZAf8BAAEzAcwCAAEzAcwBMwEAATMBzAFmAQABMwHMAZkBAAEzAswBAAEz + AcwB/wEAATMB/wEzAQABMwH/AWYBAAEzAf8BmQEAATMB/wHMAQABMwL/AQABZgMAAWYBAAEzAQABZgEA + AWYBAAFmAQABmQEAAWYBAAHMAQABZgEAAf8BAAFmATMCAAFmAjMBAAFmATMBZgEAAWYBMwGZAQABZgEz + AcwBAAFmATMB/wEAAmYCAAJmATMBAANmAQACZgGZAQACZgHMAQABZgGZAgABZgGZATMBAAFmAZkBZgEA + AWYCmQEAAWYBmQHMAQABZgGZAf8BAAFmAcwCAAFmAcwBMwEAAWYBzAGZAQABZgLMAQABZgHMAf8BAAFm + Af8CAAFmAf8BMwEAAWYB/wGZAQABZgH/AcwBAAHMAQAB/wEAAf8BAAHMAQACmQIAAZkBMwGZAQABmQEA + AZkBAAGZAQABzAEAAZkDAAGZAjMBAAGZAQABZgEAAZkBMwHMAQABmQEAAf8BAAGZAWYCAAGZAWYBMwEA + AZkBMwFmAQABmQFmAZkBAAGZAWYBzAEAAZkBMwH/AQACmQEzAQACmQFmAQADmQEAApkBzAEAApkB/wEA + AZkBzAIAAZkBzAEzAQABZgHMAWYBAAGZAcwBmQEAAZkCzAEAAZkBzAH/AQABmQH/AgABmQH/ATMBAAGZ + AcwBZgEAAZkB/wGZAQABmQH/AcwBAAGZAv8BAAHMAwABmQEAATMBAAHMAQABZgEAAcwBAAGZAQABzAEA + AcwBAAGZATMCAAHMAjMBAAHMATMBZgEAAcwBMwGZAQABzAEzAcwBAAHMATMB/wEAAcwBZgIAAcwBZgEz + AQABmQJmAQABzAFmAZkBAAHMAWYBzAEAAZkBZgH/AQABzAGZAgABzAGZATMBAAHMAZkBZgEAAcwCmQEA + AcwBmQHMAQABzAGZAf8BAALMAgACzAEzAQACzAFmAQACzAGZAQADzAEAAswB/wEAAcwB/wIAAcwB/wEz + AQABmQH/AWYBAAHMAf8BmQEAAcwB/wHMAQABzAL/AQABzAEAATMBAAH/AQABZgEAAf8BAAGZAQABzAEz + AgAB/wIzAQAB/wEzAWYBAAH/ATMBmQEAAf8BMwHMAQAB/wEzAf8BAAH/AWYCAAH/AWYBMwEAAcwCZgEA + Af8BZgGZAQAB/wFmAcwBAAHMAWYB/wEAAf8BmQIAAf8BmQEzAQAB/wGZAWYBAAH/ApkBAAH/AZkBzAEA + Af8BmQH/AQAB/wHMAgAB/wHMATMBAAH/AcwBZgEAAf8BzAGZAQAB/wLMAQAB/wHMAf8BAAL/ATMBAAHM + Af8BZgEAAv8BmQEAAv8BzAEAAmYB/wEAAWYB/wFmAQABZgL/AQAB/wJmAQAB/wFmAf8BAAL/AWYBAAEh + AQABpQEAA18BAAN3AQADhgEAA5YBAAPLAQADsgEAA9cBAAPdAQAD4wEAA+oBAAPxAQAD+AEAAfAB+wH/ + AQABpAKgAQADgAMAAf8CAAH/AwAC/wEAAf8DAAH/AQAB/wEAAv8CAAP/AQAC9gf/AfQG/zAAAfYC/wH0 + CBkE/zAAA/8BGQezAbQD/wH2MAAC/wH2AQkBrAGzAa0BiwOtAbMD/wEaMAAC/wH2AQkBrAG0AboBCQLc + AbQBswH/AfYB/wEbMAAD/wEJAawBCQG0AfABtAHcAa0BswP/AfYwAAP/AQkBrQHcAboB8AGzAdwBrQGz + BP8wAAP/AQkBrQHcAboBGQHiAdsBrAGzBP8wAAP/AQkBrQG0BLMBrAGzBP8wAAP/ARkCtAGzAbQCugGz + AbQD/wH2MAAE/wHiARkBugO0AboBtAP/AfYwAAb/AfIBBwG7AwkB9gP/MAAF/wH2Bv8B9gP/MAAE/wP2 + Af8B9gP/AfYD/zAABP8B9gf/AfYD/zAAD/8B9jAAAUIBTQE+BwABPgMAASgDAAFAAwABEAMAAQEBAAEB + BQABgBcAA/+BAAs= diff --git a/SOURCE/Plugin/MWController.cs b/SOURCE/Plugin/MWController.cs index 6948026..4fb1751 100644 --- a/SOURCE/Plugin/MWController.cs +++ b/SOURCE/Plugin/MWController.cs @@ -28,12 +28,9 @@ namespace Aml.Editor.Plugin /// /// Init the controller and reload all amlx devices /// - /// - public MWController(ModellingWizard modellingWizard) + public MWController() { - this.modellingWizard = modellingWizard; mWData = new MWData(this); - } /// @@ -101,6 +98,7 @@ namespace Aml.Editor.Plugin /// the GUI Type to display public void ChangeGui(MWGUIType targetGUI) { + // TODO modellingWizard is null switch (targetGUI) { diff --git a/SOURCE/Plugin/ModellingWizard.xaml.cs b/SOURCE/Plugin/ModellingWizard.xaml.cs index c521c28..fcac4c9 100644 --- a/SOURCE/Plugin/ModellingWizard.xaml.cs +++ b/SOURCE/Plugin/ModellingWizard.xaml.cs @@ -28,7 +28,7 @@ namespace Aml.Editor.Plugin public ModellingWizard() { - mWController = new MWController(this); + mWController = new MWController(); // Defines the Command list, which will contain user commands, which a user can select // via the PlugIn Menu. diff --git a/SOURCE/Plugin/Properties/Settings.Designer.cs b/SOURCE/Plugin/Properties/Settings.Designer.cs new file mode 100644 index 0000000..375dee4 --- /dev/null +++ b/SOURCE/Plugin/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 +// +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. +// +//------------------------------------------------------------------------------ + +namespace Aml.Editor.Plugin.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/SOURCE/Plugin/Properties/Settings.settings b/SOURCE/Plugin/Properties/Settings.settings new file mode 100644 index 0000000..049245f --- /dev/null +++ b/SOURCE/Plugin/Properties/Settings.settings @@ -0,0 +1,6 @@ + + + + + + diff --git a/SOURCE/Plugin/README.md b/SOURCE/Plugin/README.md new file mode 100644 index 0000000..e90d1bd --- /dev/null +++ b/SOURCE/Plugin/README.md @@ -0,0 +1,214 @@ +# Gsd2Aml.Lib + +Welcome to the Gsd2Aml.Lib! This library was developed as a student project by (in alphabetical order) +1. Nico Dietz +2. Steffen Gerdes +3. Constantin Ruhdorfer +4. Jonas Komarek +5. Phuc Quang Vu +6. Michael Weidmann + +at [Cooperate State University Stuttgart](https://www.dhbw-stuttgart.de/home/). +This project is distributed via: +1. [GitHub](https://github.com/TINF17C/GSD2AML-Converter) +2. [NuGet](https://www.nuget.org/packages/Gsd2Aml.Lib) + +We can be found as a [GitHub Team](https://github.com/orgs/TINF17C/teams/gsd2aml). + +## About this project + +This library converts a Profinet (PN-)GSD file to AutomationML. +The library can either +1. return a string containing the AutomatonML content. +2. convert the GSD file to an .aml file and package that, including all its dependencies, into an .amlx package. This process uses the [AML.Engine](https://www.nuget.org/packages/Aml.Engine). + +## Contributing to this project + +Contributions are always welcome! +If you want to contribute feel free to fork this repo and later perform a pull request. + +## File structure + +The relevant files and folders are listed here. + +### Logging/ +Contains the logging service. + +### Models/ +Contains the classes representing AML and GSD. +Also contains the used XSD files. + +### Properties/ +Contains the assembly info. + +### Compressor.cs +Contains all the logic that is required to: +1. Create a temporary folder +2. Find files and copy them to this folder +3. Uses the AML.Engine to build the .amlx package + +### Converter.cs +Contains all the logic that traverses the GSD file and uses the rulesset file to translate the GSD file to AML. + +### Util.cs +Contains the utility functionality. + +### gsd2aml.xml +This is the rulesset file. +Please have a look below. + +## GSD2AML Rules + +The rules for conversion are written in XML and are listed here. + +### Tables of Content + +1. [Structure](#structure) +2. [References](#references) +3. [Reference Types](#reference_types) +4. [GUID](#guid) +5. [The Rule Element](#rule_element) + +### Structure + +This section will explain the structure of a gsd2aml rulesset file. + +The gsd2aml file will consist of one, and only one, element, the ``. Each seperate rule shall be direct child of this element. + +A rule must start with the GSD element, which is to be replaced. It must have a child `` describing the corresponding XML-structure of the AML replacement. + +```xml + + + + 1.0.0 + + + +``` + +Additionally a rule can also have any number of `` childs. References will be explained in the following section. + +### References + +#### Normal Reference + +It may not be possible to replace a GSD element with a static replacements. Let's look at this example: + +```xml + +``` + +This element has a attribute "SubslotNumber". In order to transform this element to AML the attribute "SubslotNumber" should be converted into an `Attribute`, `` pair. + +```xml + + + + + +``` + +Unfortunately the converter itself cannot figure out where this information is located. A referece, signaled by a `$` followed by an identifier like `$1`, is necessary. + +The conversion rule for "SubslotItem" may look like this: + +```xml + + + + + $1 + + + + + + + +``` + +Every reference within the replacement element shall have a corresponding reference element. This element must have the attribute `Ref=""` with the identifier. There are different [types](#reference_types) of references. These will be explained later. The content of the reference shall be a the location of the referenced value. A reference only has one child. The child is the full qualified path to the referenced element in a point sepearted list without whitespace. + +The element shall have one attribute, which shall be the same attribute that is being referenced. If the attribute exists, its value will be the return value. + +#### True Reference + +You may have noticed that the example above never resolved the GSD attribute TextId of the "SubslotItem" element. This is because the TextId attribute in itself is also a reference within the GSD file and as such must be handled differently. To differentiate this case from a normal reference, it shall be named "true reference". + +A true reference within an GSD file will always reference another element within a "List", that has the attribute `ID` or other identifying attribute like `TextId`. + +These references must be handled differently by the GSD2AML Converter. The converter will know of the different "reference lists" (such as `ExternalTextList`) and their location within the GSD. The converter merely needs to know which list to look in and the corresponding id. Therefore each list will receive its own "type" which can be used as an attribute of the reference element. The other way around, this means that the converter __cannot__ handle true references of lists that the converter does not know. + + Consider the example from above. `TextId=TOK_Subslot_8000` signifies that this attribute references an element within a text list with the id `TOK_Subslot_8000`. + +```xml + + + + + $2 + + + + + + + + + + +``` + +The type `TextRef` will tell the converter to search under `ExternalTextList/PrimaryLanguage`. The content of a true reference is the location of the corresponding id. + +Other languages will be ignored. + +### Reference Types + +This section will list the different reference types and their uses. + +#### TextRef + +A `TextRef` is a true reference. Within the GSD it will reference an element within ``. As the name suggest it will only return a single text. It will only over use the ``. The location of the reference __id__ used in the GSD will be given as content of the reference. + + +#### GraphicRef + +A `GraphicRef` is a true reference. Within the GSD it will reference an element within `GraphicsList`. The location of the reference __id__ used in the GSD will be given as content of the reference. + +#### RelGsdFilePath + +`RelGsdFilePath` returns a relative path to the original GSD file. + +### GUID + +Every time the converters reads the string `GUID`, it will be replaced with a real GUID. + +### The Rule Element + +In order to maintain modularity while also providing a way to define the structure of the result aml in terms of parent-child relationships, a `` element is introduced. + +The content of the `` tag shall be a full a string consisting of the relative path from the parent rule element to the GSD element, which should be placed here. + +That path shall a rule of its own and a child of the `` element. + +Example: + +```xml + + + +ProfileBody.ApplicationProcess.DeviceAccessPointList.DeviceAccessPointItem.SystemDefinedSubmoduleList.InterfaceSubmoduleItem + + + + + + ... + +``` \ No newline at end of file