From 1c67e39504a38ba0fd282df049bbcc7c10790bfd Mon Sep 17 00:00:00 2001 From: VaDiM Date: Fri, 12 May 2023 23:35:28 +0300 Subject: [PATCH] [GUI] Add "About" window & update titles --- AssetStudioCLI/AssetStudioCLI.csproj | 3 +- AssetStudioGUI/AboutForm.Designer.cs | 504 ++++++++++++ AssetStudioGUI/AboutForm.cs | 77 ++ AssetStudioGUI/AboutForm.resx | 754 ++++++++++++++++++ AssetStudioGUI/AssetStudioGUI.csproj | 12 +- AssetStudioGUI/AssetStudioGUIForm.Designer.cs | 28 +- AssetStudioGUI/AssetStudioGUIForm.cs | 14 +- AssetStudioGUI/AssetStudioGUIForm.resx | 6 +- .../Properties/Resources.Designer.cs | 56 +- AssetStudioGUI/Properties/Resources.resx | 55 +- .../Properties/Settings.Designer.cs | 2 +- AssetStudioGUI/Resources/as_logo.png | Bin 0 -> 13850 bytes LICENSE | 3 +- 13 files changed, 1445 insertions(+), 69 deletions(-) create mode 100644 AssetStudioGUI/AboutForm.Designer.cs create mode 100644 AssetStudioGUI/AboutForm.cs create mode 100644 AssetStudioGUI/AboutForm.resx create mode 100644 AssetStudioGUI/Resources/as_logo.png diff --git a/AssetStudioCLI/AssetStudioCLI.csproj b/AssetStudioCLI/AssetStudioCLI.csproj index 6e95efc..0f563e9 100644 --- a/AssetStudioCLI/AssetStudioCLI.csproj +++ b/AssetStudioCLI/AssetStudioCLI.csproj @@ -3,7 +3,8 @@ Exe net472;net6.0;net7.0 - AssetStudio Mod by VaDiM + AssetStudioMod by aelurum + AssetStudioModCLI 0.16.48.1 Copyright © Perfare; Copyright © aelurum 2023 AnyCPU diff --git a/AssetStudioGUI/AboutForm.Designer.cs b/AssetStudioGUI/AboutForm.Designer.cs new file mode 100644 index 0000000..c54f55a --- /dev/null +++ b/AssetStudioGUI/AboutForm.Designer.cs @@ -0,0 +1,504 @@ +namespace AssetStudioGUI +{ + partial class AboutForm + { + /// + /// 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() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutForm)); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.panel1 = new System.Windows.Forms.Panel(); + this.label2 = new System.Windows.Forms.Label(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.label11 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); + this.label16 = new System.Windows.Forms.Label(); + this.label17 = new System.Windows.Forms.Label(); + this.gitPerfareLinkLabel = new System.Windows.Forms.LinkLabel(); + this.label18 = new System.Windows.Forms.Label(); + this.label19 = new System.Windows.Forms.Label(); + this.gitAelurumLinkLabel = new System.Windows.Forms.LinkLabel(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.label5 = new System.Windows.Forms.Label(); + this.productNamelabel = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.modVersionLabel = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.checkUpdatesLinkLabel = new System.Windows.Forms.LinkLabel(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.licenseRichTextBox = new System.Windows.Forms.RichTextBox(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.productTitleLabel = new System.Windows.Forms.Label(); + this.CloseButton = new System.Windows.Forms.Button(); + this.productVersionLabel = new System.Windows.Forms.Label(); + this.panel2 = new System.Windows.Forms.Panel(); + this.panel3 = new System.Windows.Forms.Panel(); + this.tabControl1.SuspendLayout(); + this.tabPage1.SuspendLayout(); + this.panel1.SuspendLayout(); + this.tableLayoutPanel2.SuspendLayout(); + this.tableLayoutPanel1.SuspendLayout(); + this.tabPage2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.panel2.SuspendLayout(); + this.SuspendLayout(); + // + // tabControl1 + // + this.tabControl1.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.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Controls.Add(this.tabPage2); + this.tabControl1.Location = new System.Drawing.Point(8, 103); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(370, 315); + this.tabControl1.TabIndex = 0; + // + // tabPage1 + // + this.tabPage1.BackColor = System.Drawing.Color.White; + this.tabPage1.Controls.Add(this.panel1); + this.tabPage1.Controls.Add(this.textBox2); + this.tabPage1.Controls.Add(this.label11); + this.tabPage1.Controls.Add(this.label10); + this.tabPage1.Controls.Add(this.tableLayoutPanel2); + this.tabPage1.Controls.Add(this.tableLayoutPanel1); + this.tabPage1.Location = new System.Drawing.Point(4, 22); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(362, 289); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "Info"; + // + // panel1 + // + this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.panel1.BackColor = System.Drawing.Color.White; + this.panel1.Controls.Add(this.label2); + this.panel1.Location = new System.Drawing.Point(9, 16); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(347, 46); + this.panel1.TabIndex = 21; + // + // label2 + // + this.label2.Dock = System.Windows.Forms.DockStyle.Fill; + this.label2.Location = new System.Drawing.Point(0, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(347, 46); + this.label2.TabIndex = 0; + this.label2.Text = "AssetStudio is a tool for exploring, extracting, and exporting assets and asset b" + + "undles."; + this.label2.UseCompatibleTextRendering = true; + // + // textBox2 + // + this.textBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox2.BackColor = System.Drawing.SystemColors.Window; + this.textBox2.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.textBox2.Cursor = System.Windows.Forms.Cursors.Default; + this.textBox2.Enabled = false; + this.textBox2.ForeColor = System.Drawing.SystemColors.GrayText; + this.textBox2.Location = new System.Drawing.Point(9, 232); + this.textBox2.Multiline = true; + this.textBox2.Name = "textBox2"; + this.textBox2.ReadOnly = true; + this.textBox2.Size = new System.Drawing.Size(347, 51); + this.textBox2.TabIndex = 20; + this.textBox2.TabStop = false; + this.textBox2.Text = "* Neither the repository, nor the tool, nor the author of the tool, nor the autho" + + "r of the modification is affiliated with, sponsored, or authorized by Unity Tech" + + "nologies or its affiliates."; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(6, 150); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(43, 13); + this.label11.TabIndex = 17; + this.label11.Text = "Authors"; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(8, 65); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(42, 13); + this.label10.TabIndex = 16; + this.label10.Text = "Version"; + // + // tableLayoutPanel2 + // + this.tableLayoutPanel2.BackColor = System.Drawing.Color.WhiteSmoke; + this.tableLayoutPanel2.ColumnCount = 3; + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 41.37931F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 58.62069F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 111F)); + this.tableLayoutPanel2.Controls.Add(this.label16, 0, 0); + this.tableLayoutPanel2.Controls.Add(this.label17, 1, 0); + this.tableLayoutPanel2.Controls.Add(this.gitPerfareLinkLabel, 2, 0); + this.tableLayoutPanel2.Controls.Add(this.label18, 0, 1); + this.tableLayoutPanel2.Controls.Add(this.label19, 1, 1); + this.tableLayoutPanel2.Controls.Add(this.gitAelurumLinkLabel, 2, 1); + this.tableLayoutPanel2.Location = new System.Drawing.Point(6, 165); + this.tableLayoutPanel2.Name = "tableLayoutPanel2"; + this.tableLayoutPanel2.Padding = new System.Windows.Forms.Padding(2); + this.tableLayoutPanel2.RowCount = 2; + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel2.Size = new System.Drawing.Size(350, 40); + this.tableLayoutPanel2.TabIndex = 15; + // + // label16 + // + this.label16.AutoSize = true; + this.label16.BackColor = System.Drawing.Color.Transparent; + this.label16.Location = new System.Drawing.Point(5, 2); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(78, 13); + this.label16.TabIndex = 9; + this.label16.Text = "Original author:"; + // + // label17 + // + this.label17.AutoSize = true; + this.label17.BackColor = System.Drawing.Color.Transparent; + this.label17.Location = new System.Drawing.Point(102, 2); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(110, 13); + this.label17.TabIndex = 10; + this.label17.Text = "Perfare (c) 2016-2022"; + // + // gitPerfareLinkLabel + // + this.gitPerfareLinkLabel.AutoSize = true; + this.gitPerfareLinkLabel.BackColor = System.Drawing.Color.Transparent; + this.gitPerfareLinkLabel.Location = new System.Drawing.Point(239, 2); + this.gitPerfareLinkLabel.Name = "gitPerfareLinkLabel"; + this.gitPerfareLinkLabel.Size = new System.Drawing.Size(67, 13); + this.gitPerfareLinkLabel.TabIndex = 11; + this.gitPerfareLinkLabel.TabStop = true; + this.gitPerfareLinkLabel.Text = "GitHub page"; + this.gitPerfareLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.gitPerfareLinkLabel_LinkClicked); + // + // label18 + // + this.label18.AutoSize = true; + this.label18.BackColor = System.Drawing.Color.Transparent; + this.label18.Location = new System.Drawing.Point(5, 20); + this.label18.Name = "label18"; + this.label18.Size = new System.Drawing.Size(76, 13); + this.label18.TabIndex = 12; + this.label18.Text = "Author of mod:"; + // + // label19 + // + this.label19.AutoSize = true; + this.label19.BackColor = System.Drawing.Color.Transparent; + this.label19.Location = new System.Drawing.Point(102, 20); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(113, 13); + this.label19.TabIndex = 13; + this.label19.Text = "aelurum (c) 2021-2023"; + // + // gitAelurumLinkLabel + // + this.gitAelurumLinkLabel.AutoSize = true; + this.gitAelurumLinkLabel.BackColor = System.Drawing.Color.Transparent; + this.gitAelurumLinkLabel.Location = new System.Drawing.Point(239, 20); + this.gitAelurumLinkLabel.Name = "gitAelurumLinkLabel"; + this.gitAelurumLinkLabel.Size = new System.Drawing.Size(67, 13); + this.gitAelurumLinkLabel.TabIndex = 14; + this.gitAelurumLinkLabel.TabStop = true; + this.gitAelurumLinkLabel.Text = "GitHub page"; + this.gitAelurumLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.gitAelurumLinkLabel_LinkClicked); + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.BackColor = System.Drawing.Color.WhiteSmoke; + this.tableLayoutPanel1.ColumnCount = 3; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 41.37931F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 58.62069F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 111F)); + this.tableLayoutPanel1.Controls.Add(this.label5, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.productNamelabel, 1, 0); + this.tableLayoutPanel1.Controls.Add(this.label7, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.modVersionLabel, 1, 1); + this.tableLayoutPanel1.Controls.Add(this.label4, 0, 2); + this.tableLayoutPanel1.Controls.Add(this.label8, 1, 2); + this.tableLayoutPanel1.Controls.Add(this.checkUpdatesLinkLabel, 2, 1); + this.tableLayoutPanel1.Location = new System.Drawing.Point(6, 80); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.Padding = new System.Windows.Forms.Padding(2); + this.tableLayoutPanel1.RowCount = 3; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33334F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(350, 60); + this.tableLayoutPanel1.TabIndex = 5; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.BackColor = System.Drawing.Color.Transparent; + this.label5.Location = new System.Drawing.Point(5, 2); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(76, 13); + this.label5.TabIndex = 0; + this.label5.Text = "Product name:"; + // + // productNamelabel + // + this.productNamelabel.AutoSize = true; + this.productNamelabel.BackColor = System.Drawing.Color.Transparent; + this.productNamelabel.Location = new System.Drawing.Point(102, 2); + this.productNamelabel.Name = "productNamelabel"; + this.productNamelabel.Size = new System.Drawing.Size(103, 13); + this.productNamelabel.TabIndex = 1; + this.productNamelabel.Text = "AssetStudioModGUI"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.BackColor = System.Drawing.Color.Transparent; + this.label7.Location = new System.Drawing.Point(5, 20); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(68, 13); + this.label7.TabIndex = 2; + this.label7.Text = "Mod version:"; + // + // modVersionLabel + // + this.modVersionLabel.AutoSize = true; + this.modVersionLabel.BackColor = System.Drawing.Color.Transparent; + this.modVersionLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.modVersionLabel.Location = new System.Drawing.Point(102, 20); + this.modVersionLabel.Name = "modVersionLabel"; + this.modVersionLabel.Size = new System.Drawing.Size(52, 13); + this.modVersionLabel.TabIndex = 3; + this.modVersionLabel.Text = "0.16.48.1"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.BackColor = System.Drawing.Color.Transparent; + this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label4.Location = new System.Drawing.Point(5, 38); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(55, 13); + this.label4.TabIndex = 4; + this.label4.Text = "Based on:"; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.BackColor = System.Drawing.Color.Transparent; + this.label8.Location = new System.Drawing.Point(102, 38); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(108, 13); + this.label8.TabIndex = 5; + this.label8.Text = "AssetStudio v0.16.47"; + // + // checkUpdatesLinkLabel + // + this.checkUpdatesLinkLabel.AutoSize = true; + this.checkUpdatesLinkLabel.BackColor = System.Drawing.Color.Transparent; + this.checkUpdatesLinkLabel.Location = new System.Drawing.Point(239, 20); + this.checkUpdatesLinkLabel.Name = "checkUpdatesLinkLabel"; + this.checkUpdatesLinkLabel.Size = new System.Drawing.Size(96, 13); + this.checkUpdatesLinkLabel.TabIndex = 6; + this.checkUpdatesLinkLabel.TabStop = true; + this.checkUpdatesLinkLabel.Text = "Check for Updates"; + this.checkUpdatesLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.checkUpdatesLinkLabel_LinkClicked); + // + // tabPage2 + // + this.tabPage2.Controls.Add(this.licenseRichTextBox); + this.tabPage2.Location = new System.Drawing.Point(4, 22); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.Padding = new System.Windows.Forms.Padding(3); + this.tabPage2.Size = new System.Drawing.Size(362, 289); + this.tabPage2.TabIndex = 1; + this.tabPage2.Text = "License"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // licenseRichTextBox + // + this.licenseRichTextBox.BackColor = System.Drawing.Color.White; + this.licenseRichTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.licenseRichTextBox.DetectUrls = false; + this.licenseRichTextBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.licenseRichTextBox.Location = new System.Drawing.Point(3, 3); + this.licenseRichTextBox.Name = "licenseRichTextBox"; + this.licenseRichTextBox.ReadOnly = true; + this.licenseRichTextBox.Size = new System.Drawing.Size(356, 283); + this.licenseRichTextBox.TabIndex = 0; + this.licenseRichTextBox.Text = "MIT License"; + this.licenseRichTextBox.ZoomFactor = 1.1F; + // + // pictureBox1 + // + this.pictureBox1.BackColor = System.Drawing.Color.Transparent; + this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Top; + this.pictureBox1.Image = global::AssetStudioGUI.Properties.Resources.as_logo; + this.pictureBox1.Location = new System.Drawing.Point(0, 0); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(384, 50); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox1.TabIndex = 0; + this.pictureBox1.TabStop = false; + // + // productTitleLabel + // + this.productTitleLabel.BackColor = System.Drawing.Color.Transparent; + this.productTitleLabel.Dock = System.Windows.Forms.DockStyle.Bottom; + this.productTitleLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.productTitleLabel.Location = new System.Drawing.Point(0, 52); + this.productTitleLabel.Name = "productTitleLabel"; + this.productTitleLabel.Size = new System.Drawing.Size(384, 30); + this.productTitleLabel.TabIndex = 1; + this.productTitleLabel.Text = "AssetStudioModGUI"; + this.productTitleLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // CloseButton + // + this.CloseButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.CloseButton.Dock = System.Windows.Forms.DockStyle.Bottom; + this.CloseButton.Location = new System.Drawing.Point(0, 422); + this.CloseButton.Name = "CloseButton"; + this.CloseButton.Size = new System.Drawing.Size(384, 39); + this.CloseButton.TabIndex = 1; + this.CloseButton.Text = "Close"; + this.CloseButton.UseVisualStyleBackColor = true; + // + // productVersionLabel + // + this.productVersionLabel.Dock = System.Windows.Forms.DockStyle.Bottom; + this.productVersionLabel.ForeColor = System.Drawing.SystemColors.GrayText; + this.productVersionLabel.Location = new System.Drawing.Point(0, 82); + this.productVersionLabel.Name = "productVersionLabel"; + this.productVersionLabel.Padding = new System.Windows.Forms.Padding(0, 0, 5, 0); + this.productVersionLabel.Size = new System.Drawing.Size(384, 13); + this.productVersionLabel.TabIndex = 2; + this.productVersionLabel.Text = "v0.16.48.1 [x64]"; + this.productVersionLabel.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + // + // panel2 + // + this.panel2.Controls.Add(this.productTitleLabel); + this.panel2.Controls.Add(this.pictureBox1); + this.panel2.Controls.Add(this.productVersionLabel); + this.panel2.Dock = System.Windows.Forms.DockStyle.Top; + this.panel2.Location = new System.Drawing.Point(0, 5); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(384, 95); + this.panel2.TabIndex = 3; + // + // panel3 + // + this.panel3.Dock = System.Windows.Forms.DockStyle.Top; + this.panel3.Location = new System.Drawing.Point(0, 0); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(384, 5); + this.panel3.TabIndex = 3; + // + // AboutForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.CloseButton; + this.ClientSize = new System.Drawing.Size(384, 461); + this.Controls.Add(this.panel2); + this.Controls.Add(this.panel3); + this.Controls.Add(this.CloseButton); + this.Controls.Add(this.tabControl1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "AboutForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "About"; + this.tabControl1.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); + this.tabPage1.PerformLayout(); + this.panel1.ResumeLayout(false); + this.tableLayoutPanel2.ResumeLayout(false); + this.tableLayoutPanel2.PerformLayout(); + this.tableLayoutPanel1.ResumeLayout(false); + this.tableLayoutPanel1.PerformLayout(); + this.tabPage2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.panel2.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.TabPage tabPage2; + private System.Windows.Forms.Label productTitleLabel; + private System.Windows.Forms.Button CloseButton; + private System.Windows.Forms.Label productVersionLabel; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; + private System.Windows.Forms.Label label16; + private System.Windows.Forms.Label label17; + private System.Windows.Forms.LinkLabel gitPerfareLinkLabel; + private System.Windows.Forms.Label label18; + private System.Windows.Forms.Label label19; + private System.Windows.Forms.LinkLabel gitAelurumLinkLabel; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label productNamelabel; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label modVersionLabel; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.LinkLabel checkUpdatesLinkLabel; + private System.Windows.Forms.RichTextBox licenseRichTextBox; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Panel panel3; + } +} \ No newline at end of file diff --git a/AssetStudioGUI/AboutForm.cs b/AssetStudioGUI/AboutForm.cs new file mode 100644 index 0000000..baee692 --- /dev/null +++ b/AssetStudioGUI/AboutForm.cs @@ -0,0 +1,77 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Reflection.Emit; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace AssetStudioGUI +{ + public partial class AboutForm : Form + { + public AboutForm() + { + InitializeComponent(); + var productName = Application.ProductName; + var arch = Environment.Is64BitProcess ? "x64" : "x32"; + Text += " " + productName; + productTitleLabel.Text = productName; + productVersionLabel.Text = $"v{Application.ProductVersion} [{arch}]"; + productNamelabel.Text = productName; + modVersionLabel.Text = Application.ProductVersion; + + licenseRichTextBox.Text = GetLicenseText(); + } + + private string GetLicenseText() + { + string license = "MIT License"; + + if (File.Exists("LICENSE")) + { + string text = File.ReadAllText("LICENSE"); + license = text.Replace("\r", "") + .Replace("\n\n", "\r") + .Replace("\nCopyright", "\tCopyright") + .Replace("\n", " ") + .Replace("\r", "\n\n") + .Replace("\tCopyright", "\nCopyright"); + } + + return license; + } + + private void checkUpdatesLinkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + var ps = new ProcessStartInfo("https://github.com/aelurum/AssetStudio/releases") + { + UseShellExecute = true + }; + Process.Start(ps); + } + + private void gitPerfareLinkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + var ps = new ProcessStartInfo("https://github.com/Perfare") + { + UseShellExecute = true + }; + Process.Start(ps); + } + + private void gitAelurumLinkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + var ps = new ProcessStartInfo("https://github.com/aelurum") + { + UseShellExecute = true + }; + Process.Start(ps); + } + } +} diff --git a/AssetStudioGUI/AboutForm.resx b/AssetStudioGUI/AboutForm.resx new file mode 100644 index 0000000..3a83801 --- /dev/null +++ b/AssetStudioGUI/AboutForm.resx @@ -0,0 +1,754 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + AAABAAoAEBAQAAEABAAoAQAApgAAABAQAAABAAgAaAUAAM4BAAAQEAAAAQAgAGgEAAA2BwAAICAQAAEA + BADoAgAAngsAACAgAAABAAgAqAgAAIYOAAAgIAAAAQAgAKgQAAAuFwAAMDAQAAEABABoBgAA1icAADAw + AAABAAgAqA4AAD4uAAAwMAAAAQAgAKglAADmPAAAAAAAAAEAIADMMAAAjmIAACgAAAAQAAAAIAAAAAEA + BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAACAAACAAIAAgIAAAAAAgACAgIAAAICAAMDA + wAAAAP8A////AP8A/wAAAAAAAAAAAAAAAAAAAAAAABcXAQQBcDABcQBgYFISFUUCVAACFRUhAEMVFlMj + IDIGaGZqubk2ABAIiKiTlpMhBxaDppYzlgUBdoapY5aTQCMBiIk5aTIFEHCKaWllIwQHEGqWmWaTJQEj + CJZWmWcBRRBxcBV3EBcAcQYBcQEGAAYGAEUGAjBxABAjAEBRIBCAAQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAAKAAAABAAAAAgAAAAAQAIAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwKCYANzZSADI2ZQAwKSoAMCgsADInSAAxLlUAMDZeADAq + LAAyKigAmqDgADpR/gA0M20AOiWTADk0vwA2VfwANVj+ADNQ1wAwKi4AXlZUAOfj7QBDSv0APzrTAEEj + nAA+RewAPDvDAEArrAA6TPQAMzZvAJyUkQDz7egAdG33AEU99QBGIpgAQ0D0ADcwbAAyJzEAMis7ADEq + MAAxKScA18/JANTH1QCuoe8ATDf/AEwmrgBKMdUARznrAEA1sgA2LV8AV05LAOTY1gCCXKUA4NfjAFMw + /gBMKr8ARiNwAE8qwgBPMOMATDX6ADQqRwCSiIIAu6G7AFwjiQDm29oAfFT2AFMn6QA2J0QARCNbAFge + hwBUKucAPiqAAMq+tQDdzssA1sTKAOfc1gCvjeoAXh7/AF0f/wBYH7sAXR2YAFoj8gA/J3QAUEdDAN/Q + xgCRXpcAhF2FAJSKhQDbydoAZRb+AGMX8wBiGP4AYRn/AFcd2gAyKDAARDw4AF9TUQBAJD4AOCYzADkw + LgBnXloARSdlAEEiXgBAI1IAPiNfADInLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAV9gYWJjZGVmZ2hpAQEBAQFTVFVWV1hZWltcXV4BAQEBAUhJSktMTU5PUFFS + AQEBAQE9Pj9AQUJDREVGRwEBAQEBMjM0NTY3ODk6OzwBAQEBASgpKissLS4vMDEBAQEBAQEBHh8gISIj + JCUmJwEBAQEBARQVFhcYGRobHB0BAQEBAQEKCwwNDg8QERITAQEBAQEBAQIDBAUGBwgJAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEAgAEAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAEAACgAAAAQAAAAIAAAAAEA + IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwKCY3MCgm2DAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJtgwKCY3MCgm2DAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm2DAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/0Q8OP9fU1H/QCQ+/zgm + M/85MC7/Z15a/0UnZf9BIl7/QCNS/z4jX/8yJy3/MCgm/zAoJv8wKCb/MCgm/zAoJv9QR0P/39DG/5Fe + l/+EXYX/lIqF/9vJ2v9lFv7/Yxfz/2IY/v9hGf//Vx3a/zIoMP8wKCb/MCgm/zAoJv8wKCb/MCgm/8q+ + tf/dzsv/1sTK/+fc1v+vjer/Xh7//10f//9YH7v/XR2Y/1oj8v8/J3T/MCgm/zAoJv8wKCb/MCgm/zAo + Jv+SiIL/u6G7/1wjif/m29r/fFT2/1Mn6f82J0T/RCNb/1geh/9UKuf/PiqA/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/V05L/+TY1v+CXKX/4Nfj/1Mw/v9MKr//RiNw/08qwv9PMOP/TDX6/zQqR/8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zEpJ//Xz8n/1MfV/66h7/9MN///TCau/0ox1f9HOev/QDWy/zYtX/8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/nJSR//Pt6P90bff/RT31/0YimP9DQPT/NzBs/zInMf8yKzv/MSow/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/15WVP/n4+3/Q0r9/z860/9BI5z/PkXs/zw7w/9AK6z/Okz0/zM2 + b/8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8yKij/mqDg/zpR/v80M23/OiWT/zk0v/82Vfz/NVj+/zNQ + 1/8wKi7/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zc2Uv8yNmX/MCkq/zAoLP8yJ0j/MS5V/zA2 + Xv8wKiz/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJtgwKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJtgwKCY3MCgm2DAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJtgwKCY3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAgAAAAQAAAAAEABAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAgAAAAACAAACAAIAAgIAAAAAAgACAgIAAAICAAAAA/wDAwMAA////AAD/ + /wD/AP8AAAAAAAAAAAAAAAAAAAAwIVBFIVBAVAFFEhcDAAAXEjAGADISMEUCUGBQQCADIVBFQDIBUCMB + cQQAQDAyBFAhUjAhUhcQcBcQVFEgRRUhVAECMEUBcQRQcSAXAwACFUUHFxcEUgRUBAMEUEBxAyAQQQAB + BRAwUFFSMARRAgRRJmYWMjRpNzY3M3FxBUUVIVaZMzEJmYyDjIaDAjIQAjAjqZaWmanIbIaMjHEFIwMh + UpmampqWjIaDOGg3EhAEBUVqmZmprIg4NlOGgQVFFSEBaaY1mpiMc0UzaMJUAAIwcQmmM6mYxwBTY4hl + EHEVQBcJmTaqhoNzNoaGMCMFAjBwFpo5qYyGOGjIaGAyEgMgEGCaaamGg2hohoYBIDAEAyMCmpqoaGOG + hlYFBgMgFSECMGmqmGhlhoQAEhAgMgIwcQIaqmhoNoaEVnNwMhADIBcVCZpoaGiGhlOGhAMHBFFwEjap + hoZWhoaGhoIwIRUhAXBAqYaDU4aGi4ZUAjACFQYBUJhoYGVlhoaGADAjAyBAUEVlaCUVVldzUlQGEARR + BxIwIXEEAXEBBgQBUHAwIyEDIDIAYFIVJUBQMgQBAjAFQAYBVAEjBAFUASMAMgMhcQcQJUUCMHAXBxJQ + YSUEBQRRIwEBcQQDIQFRIQcBAGBgBFBgIwcQVFBFIwIwEAABAjAEBRIBUhAGABJRAgDAAAADgAAAAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABwAAAAygA + AAAgAAAAQAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMCgmAEhFVgA0Q6UAM0OlADAs + NwAyJ0AANCdlADQmbgA0K3UAMT+UADBGogAwQYkAMC4/ALCsqwBHXvsAOFP+ADM5egA1JmkAOSWjADgy + uQA1VfcANFn+ADNa/gAyWfYAMTluADYuLADt6eYAhI32ADtP/gA4RMEANSZUADwkoAA8KakAOFD4ADhU + /gA3Vf4ANlb+ADVX/gA1VvgAMS9GAGxlYwD18e0AwcHwAD5K/gA9SvkAPSaVAD8jngA9OtAAPTrPAD4u + sgA8OckAOVH8ADRBoACrpaEA9O/rAPHs7ABNT/sAQkX+AEFH/gBBMMAAQiObAD9B5gA5P7cAPyOKAD4+ + 2AA4R9AANCwqAOXe2gDz7egAhYD0AEVB/gBEQv4ARTnfAEUimABCQO4AODeQADMnNgA0Jz0AMytJADMw + VQAyL04AZl5bAPDp5ADx6+YAvrfsAEg9/gBHPv4ARz37AEgjmwBIIZYARTrlAD86wwCjm5cA7ubgAOLZ + 3ADx6uUA7ebnAFNB/ABKOf4ASTv+AEopuABLIZMASS/KAEc9/gA/NrIAODB1ADUtWQAwKCkAMysoAN3U + zgDu5d8Ak3axAOrh4ACGc/UATTX/AE0v2wBOIJAATSKZAEs29ABLN/8ANSxPAGBXVADr4toA7OPcAGE1 + lQDArMgA8OjjALus6QBRL/8AUDH6AFAgjwBRH44AUCOgAE4x6QBJN+wAMik4AJ2TjQDq39gAzr3JAFQf + iwCTcK0A6ODhAFoz/ABTLf8APSlyADkmQQA/JFEATyB+AFIjoQBSJrIAUC3bAE8z/wBONP8APy6WANXK + wgDo3dQAooKwAFceiABoNZIA7eTeAIdl8QBWKf8ASSm0ADQnMgBVHoUAUivgAEou0ABaUU0A5trRAHlJ + lgBZHYYA0sDMAO3k3QC5oecAWyL/AFkl/wBXJfQAOydhADYoQwBRIHIAViS8AFQr/wBQK+QAlImDAOXY + zgDFrsEA3c/RAOTZ3QBhJf0AXCD/AE0ktQBZHnwAXB2DAFkizgBQJ9oAzcC2AOPWzADp3tYA6uDYAIpX + 8gBfG/8AXR37AF4evgBeHZwASiWrAFVLRwDi1MkAv6OzALeZrwC4mrEAsZ2lAKqgmgDc0ckAuJblAGMX + /wBhGf8AOCZOAI2BegDh0cYA2snCAGkhfQBlG3sAQSRBAJmPigDo3tUA4NLXAGgX/QBlE/8AZRT/AGUX + zwBkFfsAYBj5AEIjdgCCdm8AmIuDAIRwdwBQIFYAMicpAJ6UjgBhNKAAURqnAFEdgwBQH2YATxyVAE8c + pgBJH4wANiZBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAerr7O3t7e4Bzonv8PHx8vP09fb3AWwBAQEBAQEB + AQEB2tvc3d7e3wHg4eLj5OXm5+XX1+jpAQEBAQEBAQEBAQHOz8/Q0dLT1NWK1tfX19jJycnJysrZAQEB + AQEBAQEBAQHExbmpqZzGx3vIycnJycrLzMu+r80BAQEBAQEBAQEBAbi5qbq6urt7vL2vvq+vv8DBwcKw + wwEBAQEBAQEBAQEBqKmpqqurrK2ur7CxsrKztKurtba3AQEBAQEBAQEBAQEBm5ydnp+gXqGioqMBAaSl + np6mkKcBAQEBAQEBAQEBAQGJiouMjV6Oj5CQkZKTlJWWl5iZmgEBAQEBAQEBAQEBAXp7fH1+f4CBgYKD + hIWGc3N4eIeIAQEBAQEBAQEBAQEBbW5vcHFgcnNzdHV2d3hjZGRJeQEBAQEBAQEBAQEBAQEBXV5fYGFi + Y2RlZmdWaGlqa2wBAQEBAQEBAQEBAQEBAQFSU1RFVVZXWFlaW0dcAQEBAQEBAQEBAQEBAQEBAQEBAUNE + RTdGR0hJSkpLOkxNTk5PUFEBAQEBAQEBAQEBAQEBATY3ODk6Ozw9PT4sP0A9PUEdQgEBAQEBAQEBAQEB + AQEBKSorLCwtLi8vMB0dMTIzNBA1AQEBAQEBAQEBAQEBAQEaGxwdHR4fICAhIiMkJCUmJygBAQEBAQEB + AQEBAQEBAQEODxAQEQESExMUFRYXFxgZAQEBAQEBAQEBAQEBAQEBAQIDBAQFAQEGBwgJCgsMDQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAMAAAAOAAAABAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAHAAAADKAAAACAA + AABAAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwKCYKMCgmgzAoJt8wKCb+MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv4wKCbfMCgmgzAoJgoAAAAAMCgmCjAoJsgwKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgmyDAoJgowKCaDMCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgmgzAo + Jt8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCbfMCgm/jAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv4wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv+Cdm//mIuD/4Rw + d/9QIFb/UCBW/1AgVf8yJyn/MCgm/1JKRv+dk43/npSO/2E0oP9RGaf/URqn/1Edg/9QH2b/TxyV/08c + pv9JH4z/NiZB/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/42B + ev/g0MX/2snC/2khff9lG3v/ZRt7/0EkQf8wKCb/mY+K/+je1f/g0tf/aBf9/2UT//9lFP//ZRfP/2QV + +/9jFv//Yxb//2IX//9gGPn/QiN2/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/VUtH/+HSx//i1Mn/v6Oz/7eZr/+4mrH/sZ2l/6qgmv/c0cn/6t/Y/7iW5f9jF///Yhf//2IY + //9hGf7/YRn//2Aa//9gG///Xxz//14c//9dHfv/OCZO/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8xKSf/zcC2/+PWzP/k2M7/5tnQ/+fb0v/o3dT/6d7W/+rg2P/r4tr/ilfy/18b + //9fHP//Xx3//14d//9eHv7/Xh2//14dnP9dHr3/WyH9/1si//9KJav/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv+UiYP/5djO/+ba0P/Frb//xa3A/8Wuwv/dz9H/6+Lb/+TZ + 3f9hJf3/XCD//1wg//9bIf//WyH//00ktf9ZHnz/XB2D/1wdg/9ZIs7/WCb//1An2v8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/1pRTf/m2tH/59vT/3lJlv9ZHYb/WR2G/9LA + zP/t5N3/uaHn/1oj//9ZJP//VyX0/zsnYf87J2H/NihD/1Egcv9ZHYb/WR2G/1YkvP9UK///UCvk/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MSkn/9XKwv/o3tX/ooKw/1ce + iP9oNZL/7eTe/+7m4P+HZfH/Vij//1Yp//9JKbT/MCgm/zAoJv80JzL/VR6F/1ceiP9XHon/Uivg/1Ev + //9KLtD/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/nJKN/+rf + 2P/Ovcn/VB+L/5Nwrf/u5uD/6ODh/1oz/P9TLP//Uy3//z0pcv85JkH/PyRR/08gfv9SI6H/Uiay/1At + 2/9PM///TjT//z8ulv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv9gV1T/6+La/+zj3P9hNZX/wKzI//Do4/+7rOn/UTD//1Ax//9QMfr/UCCP/1Efjv9QI6D/TjHp/001 + //9NNv//TDf//0s3//9JN+z/Mik4/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zMrKP/d1M7/7uXf/5N2sf/q4eD/8erl/4Zz9f9NNf//TTX//00v2/9OIJD/TSKZ/0s2 + 9P9LOf7/Sjn+/0k6/v9JO/7/RTne/zUsT/8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/6Obl//v5+H/4tnc//Hq5f/t5uf/U0H8/0o5/v9KOv7/Sim4/0sh + k/9JL8r/SDz+/0c9/v8/NrL/ODB1/zUtWf8wKCn/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/Zl5b//Dp5P/x6+b/8+3o/7637P9IPf7/Rz7+/0c9 + +/9II5v/SCGW/0U65f9FQf7/PzrD/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv80LCr/5d7a//Pt6P/07ur/hYD0/0RB + /v9EQv7/RDnf/0UimP9FIpj/QkDu/0JF/v84N5D/Myc2/zQnPf80Jz3/MytJ/zMwVf8yL07/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv+rpaH/9O/r//Hs + 7P9NT/v/QUb+/0FH/v9BMMD/QiOb/0Ijm/8/Qeb/Pkr+/zk/t/8/I4r/QiOb/0Ijm/8+Ptj/O0/+/zhH + 0P8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/2xl + Y//18e3/wcHw/z9K/v8+Sv7/PUr5/z0mlf8/I57/PyOe/z060P87Tv7/O0/+/z06z/8+LrL/PDnJ/zlR + /P84U/7/NEGg/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/Ni4s/+3p5v+Ejfb/O07+/ztP/v84RMH/NSZU/zwkoP88JKD/PCmp/zhQ+P84VP7/N1T+/zZV + /v82Vv7/NVf+/zVW+P8xL0b/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/sKyr/0de+/84U/7/OFP+/zM5ev8wKCb/NSZp/zklov85JaP/ODK5/zVV + 9/80Wf7/M1r+/zNa/v8yWfb/MTlu/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv9IRVb/NEOl/zNDpf8zQ6X/MCw3/zAoJv8wKCb/MidA/zQn + Zf80Jm7/NCt1/zE/lP8wRqL/MEGJ/zAuP/8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv4wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb+MCgm3zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJt8wKCaDMCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgmgzAoJgowKCbIMCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJsgwKCYKAAAAADAoJgowKCaDMCgm3zAo + Jv4wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/jAoJt8wKCaDMCgmCgAAAACAAAABAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAASgA + AAAwAAAAYAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAACAAACAAIAAgIAAAAAA + gACAgIAAAICAAAAA/wDAwMAAAP//AP///wD/AP8AAAAAAAAAAAAAAAAAAAAAYAMhUhJRJRcBIVJRIyAS + AyMhUgAAAARUAGBUBFBAVAFwFwEGABUjBAAwIVAAAABRcQIQUBcXECMBcBcQBgQBcBcSMEAAADISAyFU + BgAQcVIXFxBxcQVFAyAwIwYAAyFRcVBFASMHEEUAEAcQBFQAQFQCMCBUEgUhAgYAYFIQRQEjJUAXFQBg + MhBRIDBFBUAXAwEjAhFwMhcQBFFwBFQARQYEUSMABFFwEjJRIyUEADIGAwIQYAFUUEADBxBxAyEBcBBA + UBIVBgAwIGBUBUUgFxVAIQcQElBxBgcDIXAyEHEEUQEjISEDIBJRBgEGBUAXAQESEAEgMhBFFxcAUDBg + cXAXBFIwBAMgMpmWNjcVQGmZaDjGNoaDMAMgFQEgAyFUBpmZMzMyBZubPIyDjIyGhlQDIGBUElAhUGuZ + YzYxYZuZhoaMhoyMjIRSMBIVBUAwIWmbmZmZmbm8jIyGjIaMhoMBIHFSBFElFSmZm5uZubm2hoaMiDOG + jIYHFRIQAyFUAha5uZm5ubmYyMjIk1ZThoxxBAUjEgUhUXG5mZmZm5vIaGiDhjM2OGgwcGASBUAwIQeZ + uTc1m5s4yGU2UDc1OMhxAQYFBFEgMlGZuTMzm5uGjIElBjM2hoY3FSASAyFUUEBpuWNWubmMhlcQRTVj + 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 + wwA+JUUAVSOqADspYwA0LCoA1Mi/AMWvvwBmM/kAWiP/AEEmfgA8KWwANyY2AFcglwBeVVEA0r+9ALOV + tgC0lrgAzrvGAJNr7gBeHf8AVCThAFgfpgCYjIYA4tXLAMOp4wBaIuIA0MK4AGoo+gBhGv8AXh3KAF8b + qwBcH+cAVCPcAFlPSwDh0sYA39DEAN/RygCUYO4AZBX+AJGFfgB/R4oAZyN8AEAtPABNQ0EAv6HfAGQW + 9ABTH8QAx7muAGUbegBfHHAAbBv6AGUYqQBSHbsAMycyAMu8sQCgfpUAYBxtAE0hUQDUycEAhU3YAGIT + 6QBhE+cAYRmWAF8W1QBdF90AUhuzAD4jYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQYBAQEBAQEBAQEBAQEBAQEBAQYGBgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB3+rq + 6uvs7Ozl7QEBATa57u7v8PHw8PLl0vPx9PX2AQEBAQEBAQEBAQEBAQEBAQEBBuPX18Lk5OTk5QYGAUGf + n5Tm2tra4efh2tra0Nra6OkBAQEBAQEBAQEBAQEBAQEBAdvWy9bc3d3d3d6C34OfjODa2tra4dra0NDa + 0NDQ0OIGAQEBAQEBAQEBAQEBAQEBAdXWy8vXntjW2NjLsJ+fn9na0NDQ0NDQ0MfHx8fHx8e9AQEBAQEB + AQEBAQEBAQEBAQHOy7CwsIODn4OfaoyEas/Qx8fHx8fH0NHS0tPHvLzUAQEBAQEBAQEBAQEBAQEBAQHK + y8uwsIODn5+fn4yEzMfHx8fHx7y8yaysrKzNvKmprgEBAQEBAQEBAQEBAQEBAQHBsLCDwsPDxMPFhISE + xsfHvLy8x7zItaysrKzJqamptwEBAQEBAQEBAQEBAQEBAQG4uYODuqysrKyghISMu7y8vLyqvb2+v6ys + rKzAqamWvgEBAQEBAQEBAQEBAQEBAQEBr4ODsLGyrLKUTk6zqampqbQBAQEBtayskqy2lpaQtwEBAQEB + AQEBAQEBAQEBAQEBpZ+fn6aSkqeEhHGoqamWqaoBAQEGq5KskpKtkJaQrgEBAQEBAQEBAQEBAQEBAQEB + gp6fn6CSiaFxTk6ilpaWlkwBICajkpKSmqSQfJB9AQEBAQEBAQEBAQEBAQEBAQEBAZOMhJSJiXlxcZWW + lpCQl5iZkpKam5x8fJB8fHydAQEBAQEBAQEBAQEBAQEBAQEBAYuMhISNjoRxYo+QkJCQkZKSbYp8fHxz + c3xzc24gAQEBAQEBAQEBAQEBAQEBAQEBAYKDhISFhmJicYd8fHx8iG2JinN8c3xzc3NzbhcBAQEBAQEB + AQEBAQEBAQEBAQEBAQF4Tk55emJie3x8fHx9bW1nfnNzZHNkf4CBIAEBAQEBAQEBAQEBAQEBAQEBAQEB + AQFwTnFOTk9icnNzc3N0bW11ZGRkXHZ3IAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFpamJiYk9Za2Rk + ZGRsbWduZGRvXwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBYWJPT09jZGRlZGZnZ2dcUlFoAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBWFlZLCxaUVFRUVtGRkZcUlJdBlVeXl5fYGBgTAEBAQEB + AQEBAQEBAQEBAQEBAQEBTU5PLDdQUVJSUlNGRkZUOUNKVUZGRkZWJCQkVwEBAQEBAQEBAQEBAQEBAQEB + AQEBAUE3N0JDQ0M5REVGRUVHLy8kSEVGRUlKJBRLTAEBAQEBAQEBAQEBAQEBAQEBAQEBATY3Nzg5OTk5 + OjMzMzM7JCQUJDw9Pj8UFBVAAQEBAQEBAQEBAQEBAQEBAQEBAQEBASssLS4vLyQkMDEyMjMzNBQVFRUV + FRUVFRU1AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEhIiMUFCQlASYnGRkZKCkVFRUVHBwcHSoBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQESExQUFRUWAQEXGBkZGRobHB0dHh4eHyABAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQECAwQEBAQFAQEBBgcICQoLDA0ODxARAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAABAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAADwAAAAAA8AAOAAAAAABwAAwAAAAAADAACAAAAAAAEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAgAAAAAABAADAAAAAAAMAAOAAAAAABwAA8AAAAAAPAAAoAAAAMAAAAGAA + AAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMCgmLDAoJpkwKCbeMCgm/TAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb9MCgm3jAoJpkwKCYsAAAAAAAAAAAAAAAAAAAAADAoJgEwKCZ3MCgm+TAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb5MCgmdzAoJgEAAAAAAAAAADAo + JncwKCb+MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/jAo + JncAAAAAMCgmLDAoJvkwKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJvkwKCYsMCgmmTAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCaZMCgm3jAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCbeMCgm/TAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb9MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/05EQf/Lu7D/y7yx/8y9s/+gfpX/YBxt/2Acbf9gHG3/YBxt/00hUf8wKCb/MCgm/zAo + Jv99dG//08jA/9TJwf/VysP/hU3Y/2IS5/9iEuf/YRPo/2IT6f9hGZb/YBt4/18Yrv9fFtX/YBXm/10X + 3f9SG7P/PiNi/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zIqKP/Hua7/39DE/+DRxf/Sv73/Zhx7/2Ybe/9mG3v/Zht7/18c + cP8xKCf/MCgm/zAoJv+/tK3/6N3V/+ne1v/k2Nb/bBv6/2YS//9mEv//ZRP//2UU+P9lGKn/ZBX1/2QU + //9kFf//YxX//2MW//9jFv//Yhf//1Idu/8zJzL/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv+RhX7/4NHG/+HSx//h08j/f0eK/2cj + fP9nI3z/ZyN8/2cjfP9ALTz/Ny8t/0tCQP/l2tL/6d7W/+rf2P+/od//ZBT//2QV//9kFf//Yxb//2MX + 8v9jF/v/Yhf//2IX//9iGP//YRj//2EZ//9hGv//YBr//2Ab//9TH8T/MSgp/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv9ZT0v/4dLH/+LT + yf/i1Mr/39DI/93PyP/e0Mn/39HK/+DSzP/f08z/4NXM/+LYz//p3tf/6t/Y/+vh2f+UYO7/Yhf//2IY + //9hGP//YRn//2EZ//9hGf//YBr//2Ab//9gG///Xxz//18c//9eHf//Xh3//14e//9dHv//QiR9/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8xKSf/0MK4/+PVyv/j1sz/5NfN/+XYzv/m2dD/5trR/+fb0//o3NT/6N7V/+nf1//q4Nj/6+HZ/+ba + 2/9qKPr/YBr//2Ab//9fG///Xxz//18c//9fHP//Xh3//14d/P9eHcr/Xh2o/10ds/9cH+f/XCD//1wh + //9bIf//VCPc/zAoJ/8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/mIyG/+PWzP/k183/5djP/+bZ0P/m2tL/59zT/+jd1P/p3tb/6d/X/+rg + 2P/r4dr/7OLb/8Op4/9eHf//Xh3//14e//9dHv//XR///10f//9cH///XCD+/1gfpv9eHIL/XhyC/14c + gv9dHYb/WiLi/1kk//9ZJP//WCX9/zUoQv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/XlVR/+TXzv/l2M//5trQ/8+8xP+zlLX/s5W2/7OV + t/+0lrj/zbnH/+vh2v/s4tv/7OTd/5Nr7v9cIP//XCD//1sh//9bIf//WyL+/1si//9aIv//VCTh/z8k + Rv9cHYT/XB2E/1wdhP9cHYT/WSCp/1cm//9XJ///Vyf//zsoYv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/NCwq/9TIv//m2tH/59vS/8Wv + v/9aHYX/Wh2F/1odhf9aHYX/up++/+zj3P/t5N3/6d/e/2Yz+f9aI///WiP//1kk//9YJPv/QSZ+/0Em + f/9BJ3//PCdo/zcmNv9aHYX/Wh2F/1odhf9aHYX/VyCX/1Up//9VKv//VCv//zwpbP8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/56U + jv/n29L/6NzU/+TY0v9kLoz/WB6H/1geh/9bIon/49bX/+3k3f/u5d//xbLj/1gl//9YJv//WCb//1cn + //9MJ8P/MCgm/zAoJv8wKCb/MCgm/zwlQ/9YHof/WB6H/1geh/9YHof/VSOq/1Mt//9TLf//Ui7//zoq + Y/8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/2NaV//o3NT/6N7V/+nf1/+JYqL/Vh6J/1Yeif97T57/7eTe/+7l3//u5uD/k3Xt/1Yo + //9WKf//VSn//1Uq//8/KX3/MCgm/zAoJv8wKCb/MSgo/0whcP9WHon/Vh6J/1Yeif9WHor/Uivg/1Ev + //9RMP//UDD9/zUpRf8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zYuLP/az8j/6d/X/+rg2P+1nLv/VB+L/1Qfi/+nirj/7ubf/+/n + 4f/t5eH/YTv5/1Qr//9ULP//Uyz//1It+v8zKDv/MCgn/zEoKv82Jjn/SSJt/1Qfi/9UH4v/VCCP/1Mi + nf9QLNv/TzL//08y//9PM///SjLg/zAoKP8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv+lm5b/6uDZ/+vh2v/g1NT/VCKN/1Mg + jP/UxdL/7+fh/+/o4v/IuuX/Ui7//1Iu//9SL///US///0wt0/9EI2P/TSB+/1EfiP9SH4z/USKb/1Ar + zf9PMO7/TjP4/040//9ONP//TTX//002//9MNv//PS6I/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv9pYF3/6+La/+zj + 3P/t5N3/dE2e/2Y7mf/t5eD/8Ojj//Dp5P+Uf+//UDH//1Ax//9PMv//TzL//1Anvv9QH47/UB+O/1Af + jv9OKLj/TTT6/001//9NNv//TDb//0w3//9LN///Szj//0s4/v9FNdX/MSgs/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv82Liz/4tnS/+3k3f/u5d//ooi3/5N1s//w6eP/8erk/+7n5f9hSPr/TjT//040//9NNf//TTX9/04i + nP9OIJD/TiCQ/00otP9LN/7/Szj//0s4/v9KOf7/Sjn+/0o6/v9JOv7/STv+/0Q30/8zKj3/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/rKOe/+7l3//u5uD/0cPR/8KwzP/x6uT/8evm/8zB6v9NN///TDf//0w3 + //9LOP//SzLl/0wgkv9MIJL/TCKX/0o48/9JOv7/STv+/0k7/v9IPP7/SDz8/0Y88/9DOdL/OjGD/zEp + Lf8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/b2dj/+/n4f/v6OL/7+fj/+7m4//y6+b/8uzo/5WJ + 8P9KOf7/Sjr+/0o6/v9JO/7/SizC/0ohk/9KIZP/SSy6/0g9/v9HPf7/Rz7+/0Q85/83L2v/Mio1/zEp + Lv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/OjIw/+be2f/w6eT/8erl//Lr + 5//y7Oj/8Ovo/15T9v9IPP7/SD3+/0c9/v9HPv7/SCSh/0ghlf9IIZX/RjXV/0ZA/v9FQP7/RUD7/zQt + VP8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/7Or + p//x6uX/8uzn//Pt6P/z7ur/z8np/0Y//v9GP/7/RkD+/0VA/v9FOuj/RiKX/0Yil/9GIpf/RDvj/0ND + /v9DQ/7/Pz7V/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/3Vtav/y7Of/8+3o//Pu6v/07+v/lpLx/0RC/v9EQv7/Q0P+/0ND/v9EMcj/RCKZ/0Qi + mf9EIpn/Qj7n/0FG/v9BRv7/PD7C/zEoKv82Jkf/NiZI/zYmSP82Jkj/NilR/zQ0bf80NG3/NDRt/zEr + Of8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/z01M//r5eH/9O7q//Tv6//18O3/W1z3/0JF/v9CRf7/QUb+/0FG + /f9CJ6n/QyKa/0Mimv9DIpr/QD7e/z9J/v8/Sf7/PUbk/zQnQv9DIpr/QyKa/0Mimv9DIpr/QDG9/zxN + /v88Tv7/O07+/zIwVP8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv+6tLD/9fDs//Xx7f/U0ez/QEf+/0BI + /v9ASP7/P0n+/z9C6/9BI53/QSOc/0EjnP9BI5z/PzjO/z1M/v89TP7/PE3+/zw1sv9BI5z/QSOc/0Ej + nP9BJJ7/PEbn/zpQ/v85Uf7/OVH5/zErOP8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv97dHH/9fHt//by + 7/+Ym/H/Pkr+/z5L/v89S/7/PUz+/zk4pv8/I53/PyOe/z8jnv8/I57/Piyx/ztP/v87T/7/OlD+/zpQ + /P87P9j/PDS8/zw2w/86SOn/OFP+/zhT/v83VP7/NUrM/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8+NjT/8u7r//by8P9bZ/j/PE3+/zxO/v87Tv7/O078/zIuSv85JX3/PSSg/z0koP89JKD/PSSg/zpG + 4/84Uv7/OFP+/zhT/v83VP7/N1T+/zdV/v82Vf7/Nlb+/zZW/v81V/7/Mjdt/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/wby6/9fX7/88Uf3/OlD+/zpR/v85Uf7/N0rY/zAoJ/8xJzX/OiSX/zsk + of87JKH/OySh/zorrf83UfX/Nlb+/zZW/v81V/7/NVf+/zVY/v80WP7/NFn+/zNZ/v8ySbf/MCgn/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/gXt5/5qk8/84U/7/OFP+/zdU/v83VP7/ND6T/zAo + Jv8wKCb/Mic9/zglkf85JaP/OSWj/zklo/84LrH/NFHv/zRZ/v8zWv7/M1r+/zJb/v8yW/7/Mlz+/zFK + sv8wKi7/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/Qzw6/1Zp3P81UOT/NVDk/zVR + 5P81UeT/MTBL/zAoJv8wKCb/MCgm/zAoK/8zJ1v/NSaB/zYmj/82JZP/NieW/zQ8tf8yTtH/MVXh/zBU + 2P8wSq//MDZe/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/TAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb9MCgm3jAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCbeMCgmmTAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCaZMCgmLDAoJvkwKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJvkwKCYsAAAAADAoJncwKCb+MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/jAoJncAAAAAAAAAADAoJgEwKCZ3MCgm+TAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb5MCgmdzAoJgEAAAAAAAAAAAAA + AAAAAAAAMCgmLDAoJpkwKCbeMCgm/TAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAo + Jv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb/MCgm/zAoJv8wKCb9MCgm3jAoJpkwKCYsAAAAAAAA + AAAAAAAA4AAAAAAHAACAAAAAAAEAAIAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + + + \ No newline at end of file diff --git a/AssetStudioGUI/AssetStudioGUI.csproj b/AssetStudioGUI/AssetStudioGUI.csproj index 60c5c24..c0b9b21 100644 --- a/AssetStudioGUI/AssetStudioGUI.csproj +++ b/AssetStudioGUI/AssetStudioGUI.csproj @@ -5,9 +5,10 @@ net472;net6.0-windows;net7.0-windows true Resources\as.ico - AssetStudio Mod by VaDiM + AssetStudioMod by aelurum + AssetStudioModGUI 0.16.48.1 - Copyright © Perfare 2018-2022 + Copyright © Perfare 2018-2022; Copyright © aelurum 2021-2023 embedded @@ -44,6 +45,13 @@ + + + PreserveNewest + LICENSE + + + diff --git a/AssetStudioGUI/AssetStudioGUIForm.Designer.cs b/AssetStudioGUI/AssetStudioGUIForm.Designer.cs index fd9cb75..0a962e5 100644 --- a/AssetStudioGUI/AssetStudioGUIForm.Designer.cs +++ b/AssetStudioGUI/AssetStudioGUIForm.Designer.cs @@ -76,6 +76,7 @@ this.debugMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItem15 = new System.Windows.Forms.ToolStripMenuItem(); this.exportClassStructuresMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.splitContainer1 = new System.Windows.Forms.SplitContainer(); this.tabControl1 = new System.Windows.Forms.TabControl(); this.tabPage1 = new System.Windows.Forms.TabPage(); @@ -164,7 +165,8 @@ this.modelToolStripMenuItem, this.exportToolStripMenuItem, this.filterTypeToolStripMenuItem, - this.debugMenuItem}); + this.debugMenuItem, + this.aboutToolStripMenuItem}); this.menuStrip1.Location = new System.Drawing.Point(0, 0); this.menuStrip1.Name = "menuStrip1"; this.menuStrip1.Size = new System.Drawing.Size(1264, 24); @@ -272,9 +274,11 @@ // // specifyUnityVersion // + this.specifyUnityVersion.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.specifyUnityVersion.Font = new System.Drawing.Font("Microsoft YaHei UI", 9F); this.specifyUnityVersion.Name = "specifyUnityVersion"; this.specifyUnityVersion.Size = new System.Drawing.Size(100, 23); + this.specifyUnityVersion.ToolTipText = "Specify full Unity version, including letters at the end\r\nExample: 2017.4.39f1"; // // showExpOpt // @@ -531,6 +535,13 @@ this.exportClassStructuresMenuItem.Text = "Export class structures"; this.exportClassStructuresMenuItem.Click += new System.EventHandler(this.exportClassStructuresMenuItem_Click); // + // aboutToolStripMenuItem + // + this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem"; + this.aboutToolStripMenuItem.Size = new System.Drawing.Size(52, 20); + this.aboutToolStripMenuItem.Text = "About"; + this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click); + // // splitContainer1 // this.splitContainer1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; @@ -1051,38 +1062,38 @@ this.expandAllToolStripMenuItem, this.collapseAllToolStripMenuItem}); this.contextMenuStrip2.Name = "contextMenuStrip2"; - this.contextMenuStrip2.Size = new System.Drawing.Size(181, 120); + this.contextMenuStrip2.Size = new System.Drawing.Size(152, 98); // // selectAllToolStripMenuItem // this.selectAllToolStripMenuItem.Name = "selectAllToolStripMenuItem"; - this.selectAllToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.selectAllToolStripMenuItem.Size = new System.Drawing.Size(151, 22); this.selectAllToolStripMenuItem.Text = "Select all"; this.selectAllToolStripMenuItem.Click += new System.EventHandler(this.selectAllToolStripMenuItem_Click); // // clearSelectionToolStripMenuItem // this.clearSelectionToolStripMenuItem.Name = "clearSelectionToolStripMenuItem"; - this.clearSelectionToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.clearSelectionToolStripMenuItem.Size = new System.Drawing.Size(151, 22); this.clearSelectionToolStripMenuItem.Text = "Clear selection"; this.clearSelectionToolStripMenuItem.Click += new System.EventHandler(this.clearSelectionToolStripMenuItem_Click); // // toolStripSeparator5 // this.toolStripSeparator5.Name = "toolStripSeparator5"; - this.toolStripSeparator5.Size = new System.Drawing.Size(177, 6); + this.toolStripSeparator5.Size = new System.Drawing.Size(148, 6); // // expandAllToolStripMenuItem // this.expandAllToolStripMenuItem.Name = "expandAllToolStripMenuItem"; - this.expandAllToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.expandAllToolStripMenuItem.Size = new System.Drawing.Size(151, 22); this.expandAllToolStripMenuItem.Text = "Expand all"; this.expandAllToolStripMenuItem.Click += new System.EventHandler(this.expandAllToolStripMenuItem_Click); // // collapseAllToolStripMenuItem // this.collapseAllToolStripMenuItem.Name = "collapseAllToolStripMenuItem"; - this.collapseAllToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.collapseAllToolStripMenuItem.Size = new System.Drawing.Size(151, 22); this.collapseAllToolStripMenuItem.Text = "Collapse all"; this.collapseAllToolStripMenuItem.Click += new System.EventHandler(this.collapseAllToolStripMenuItem_Click); // @@ -1168,7 +1179,7 @@ this.MinimumSize = new System.Drawing.Size(620, 400); this.Name = "AssetStudioGUIForm"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "AssetStudioGUI"; + this.Text = "AssetStudioModGUI"; this.DragDrop += new System.Windows.Forms.DragEventHandler(this.AssetStudioGUIForm_DragDrop); this.DragEnter += new System.Windows.Forms.DragEventHandler(this.AssetStudioGUIForm_DragEnter); this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.AssetStudioForm_KeyDown); @@ -1311,6 +1322,7 @@ private System.Windows.Forms.ToolStripSeparator toolStripSeparator5; private System.Windows.Forms.ToolStripMenuItem collapseAllToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem expandAllToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem; } } diff --git a/AssetStudioGUI/AssetStudioGUIForm.cs b/AssetStudioGUI/AssetStudioGUIForm.cs index 823ace2..20536e2 100644 --- a/AssetStudioGUI/AssetStudioGUIForm.cs +++ b/AssetStudioGUI/AssetStudioGUIForm.cs @@ -112,7 +112,7 @@ namespace AssetStudioGUI { Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); InitializeComponent(); - Text = $"AssetStudioGUI v{Application.ProductVersion}"; + Text = $"{Application.ProductName} v{Application.ProductVersion}"; delayTimer = new System.Timers.Timer(800); delayTimer.Elapsed += new ElapsedEventHandler(delayTimer_Elapsed); displayAll.Checked = Properties.Settings.Default.displayAll; @@ -227,11 +227,11 @@ namespace AssetStudioGUI if (!string.IsNullOrEmpty(productName)) { - Text = $"AssetStudioGUI v{Application.ProductVersion} - {productName} - {assetsManager.assetsFileList[0].unityVersion} - {assetsManager.assetsFileList[0].m_TargetPlatform}"; + Text = $"{Application.ProductName} v{Application.ProductVersion} - {productName} - {assetsManager.assetsFileList[0].unityVersion} - {assetsManager.assetsFileList[0].m_TargetPlatform}"; } else { - Text = $"AssetStudioGUI v{Application.ProductVersion} - no productName - {assetsManager.assetsFileList[0].unityVersion} - {assetsManager.assetsFileList[0].m_TargetPlatform}"; + Text = $"{Application.ProductName} v{Application.ProductVersion} - no productName - {assetsManager.assetsFileList[0].unityVersion} - {assetsManager.assetsFileList[0].m_TargetPlatform}"; } assetListView.VirtualListSize = visibleAssets.Count; @@ -1311,7 +1311,7 @@ namespace AssetStudioGUI private void ResetForm() { - Text = $"AssetStudioGUI v{Application.ProductVersion}"; + Text = $"{Application.ProductName} v{Application.ProductVersion}"; assetsManager.Clear(); assemblyLoader.Clear(); exportableAssets.Clear(); @@ -1815,6 +1815,12 @@ namespace AssetStudioGUI sceneTreeView.EndUpdate(); } + private void aboutToolStripMenuItem_Click(object sender, EventArgs e) + { + var aboutForm = new AboutForm(); + aboutForm.ShowDialog(this); + } + #region FMOD private void FMODinit() { diff --git a/AssetStudioGUI/AssetStudioGUIForm.resx b/AssetStudioGUI/AssetStudioGUIForm.resx index dcce5cf..095950b 100644 --- a/AssetStudioGUI/AssetStudioGUIForm.resx +++ b/AssetStudioGUI/AssetStudioGUIForm.resx @@ -120,9 +120,6 @@ 312, 17 - - 432, 17 - abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWYZ 1234567890.:,;'\"(!?)+-*/= @@ -141,6 +138,9 @@ The quick brown fox jumps over the lazy dog. 1234567890 The quick brown fox jumps over the lazy dog. 1234567890 + + 432, 17 + 775, 21 diff --git a/AssetStudioGUI/Properties/Resources.Designer.cs b/AssetStudioGUI/Properties/Resources.Designer.cs index 82deaf4..28e13a2 100644 --- a/AssetStudioGUI/Properties/Resources.Designer.cs +++ b/AssetStudioGUI/Properties/Resources.Designer.cs @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ // -// 此代码由工具生成。 -// 运行时版本:4.0.30319.42000 +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 // -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ @@ -13,13 +13,13 @@ namespace AssetStudioGUI.Properties { /// - /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// A strongly-typed resource class, for looking up localized strings, etc. /// - // 此类是由 StronglyTypedResourceBuilder - // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 - // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen - // (以 /str 作为命令选项),或重新生成 VS 项目。 - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { @@ -33,7 +33,7 @@ namespace AssetStudioGUI.Properties { } /// - /// 返回此类使用的缓存的 ResourceManager 实例。 + /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Resources.ResourceManager ResourceManager { @@ -47,8 +47,8 @@ namespace AssetStudioGUI.Properties { } /// - /// 重写当前线程的 CurrentUICulture 属性,对 - /// 使用此强类型资源类的所有资源查找执行重写。 + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Globalization.CultureInfo Culture { @@ -61,7 +61,7 @@ namespace AssetStudioGUI.Properties { } /// - /// 查找类似于 (图标) 的 System.Drawing.Icon 类型的本地化资源。 + /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). /// internal static System.Drawing.Icon _as { get { @@ -71,7 +71,17 @@ namespace AssetStudioGUI.Properties { } /// - /// 查找类似 #version 140 + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap as_logo { + get { + object obj = ResourceManager.GetObject("as_logo", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized string similar to #version 140 /// ///in vec3 normal; /// @@ -86,7 +96,7 @@ namespace AssetStudioGUI.Properties { /// /// vec3 color = nDotProduct * vec3(1, 0.957, 0.839) / 3.14159; /// color += vec3(0.779, 0.716, 0.453) * ContributionWeights.y; - /// color += vec3(0.368, 0.477, 0. [字符串的其余部分被截断]"; 的本地化字符串。 + /// color += vec3(0.368, 0.477, 0.735) * Contribu [rest of string was truncated]";. /// internal static string fs { get { @@ -95,14 +105,14 @@ namespace AssetStudioGUI.Properties { } /// - /// 查找类似 #version 140 + /// Looks up a localized string similar to #version 140 /// ///out vec4 outputColor; /// ///void main() ///{ /// outputColor = vec4(0, 0, 0, 1); - ///} 的本地化字符串。 + ///}. /// internal static string fsBlack { get { @@ -111,7 +121,7 @@ namespace AssetStudioGUI.Properties { } /// - /// 查找类似 #version 140 + /// Looks up a localized string similar to #version 140 /// ///out vec4 outputColor; ///in vec4 color; @@ -119,7 +129,7 @@ namespace AssetStudioGUI.Properties { ///void main() ///{ /// outputColor = color; - ///} 的本地化字符串。 + ///}. /// internal static string fsColor { get { @@ -128,7 +138,7 @@ namespace AssetStudioGUI.Properties { } /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap preview { get { @@ -138,7 +148,7 @@ namespace AssetStudioGUI.Properties { } /// - /// 查找类似 #version 140 + /// Looks up a localized string similar to #version 140 /// ///in vec3 vertexPosition; ///in vec3 normalDirection; @@ -155,7 +165,7 @@ namespace AssetStudioGUI.Properties { /// gl_Position = projMatrix * viewMatrix * modelMatrix * vec4(vertexPosition, 1.0); /// normal = normalDirection; /// color = vertexColor; - ///} 的本地化字符串。 + ///}. /// internal static string vs { get { diff --git a/AssetStudioGUI/Properties/Resources.resx b/AssetStudioGUI/Properties/Resources.resx index 5441d15..c0e023e 100644 --- a/AssetStudioGUI/Properties/Resources.resx +++ b/AssetStudioGUI/Properties/Resources.resx @@ -117,6 +117,33 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + #version 140 + +in vec3 vertexPosition; +in vec3 normalDirection; +in vec4 vertexColor; +uniform mat4 modelMatrix; +uniform mat4 viewMatrix; +uniform mat4 projMatrix; + +out vec3 normal; +out vec4 color; + +void main() +{ + gl_Position = projMatrix * viewMatrix * modelMatrix * vec4(vertexPosition, 1.0); + normal = normalDirection; + color = vertexColor; +} + + + + ..\Resources\preview.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\as.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + #version 140 @@ -158,31 +185,7 @@ void main() outputColor = color; } - - - ..\Resources\preview.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - #version 140 - -in vec3 vertexPosition; -in vec3 normalDirection; -in vec4 vertexColor; -uniform mat4 modelMatrix; -uniform mat4 viewMatrix; -uniform mat4 projMatrix; - -out vec3 normal; -out vec4 color; - -void main() -{ - gl_Position = projMatrix * viewMatrix * modelMatrix * vec4(vertexPosition, 1.0); - normal = normalDirection; - color = vertexColor; -} - - - ..\Resources\as.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\as_logo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/AssetStudioGUI/Properties/Settings.Designer.cs b/AssetStudioGUI/Properties/Settings.Designer.cs index bb52046..9ba3bcf 100644 --- a/AssetStudioGUI/Properties/Settings.Designer.cs +++ b/AssetStudioGUI/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace AssetStudioGUI.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.1.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.5.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); diff --git a/AssetStudioGUI/Resources/as_logo.png b/AssetStudioGUI/Resources/as_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e82ed2674f189c288abd975e3a55b3d63823bcf1 GIT binary patch literal 13850 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 literal 0 HcmV?d00001 diff --git a/LICENSE b/LICENSE index dd7bf91..598799c 100644 --- a/LICENSE +++ b/LICENSE @@ -1,7 +1,8 @@ MIT License Copyright (c) 2016 Radu -Copyright (c) 2016-2020 Perfare +Copyright (c) 2016-2022 Perfare +Copyright (c) 2021-2023 aelurum Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal