From 554a4ff8130fc2a3fb769c2d87e0b332a5cbc23f Mon Sep 17 00:00:00 2001 From: "andres.delikat" Date: Mon, 14 Mar 2011 02:23:10 +0000 Subject: [PATCH] NES PPU - drop down menu for pattern view palette selection --- .../NEStools/NESPPU.Designer.cs | 276 +++++++++++++++--- BizHawk.MultiClient/NEStools/NESPPU.cs | 112 ++++++- BizHawk.MultiClient/NEStools/NESPPU.resx | 15 + 3 files changed, 358 insertions(+), 45 deletions(-) diff --git a/BizHawk.MultiClient/NEStools/NESPPU.Designer.cs b/BizHawk.MultiClient/NEStools/NESPPU.Designer.cs index 84d4f46367..d960882e26 100644 --- a/BizHawk.MultiClient/NEStools/NESPPU.Designer.cs +++ b/BizHawk.MultiClient/NEStools/NESPPU.Designer.cs @@ -30,11 +30,9 @@ { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(NESPPU)); this.PatternGroup = new System.Windows.Forms.GroupBox(); - this.Table2PaletteLabel = new System.Windows.Forms.Label(); this.Table1PaletteLabel = new System.Windows.Forms.Label(); - this.PatternView = new BizHawk.MultiClient.PatternViewer(); + this.Table0PaletteLabel = new System.Windows.Forms.Label(); this.PalettesGroup = new System.Windows.Forms.GroupBox(); - this.PaletteView = new BizHawk.MultiClient.PaletteViewer(); this.DetailsBox = new System.Windows.Forms.GroupBox(); this.Value2Label = new System.Windows.Forms.Label(); this.ValueLabel = new System.Windows.Forms.Label(); @@ -46,6 +44,27 @@ this.saveWindowPositionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.NameTableGroup = new System.Windows.Forms.GroupBox(); this.NameTableView = new BizHawk.MultiClient.NameTableViewer(); + this.PaletteView = new BizHawk.MultiClient.PaletteViewer(); + this.PatternView = new BizHawk.MultiClient.PatternViewer(); + this.toolStripDropDownButton2 = new System.Windows.Forms.ToolStripDropDownButton(); + this.table0PToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.table1PaletteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.Table0P0 = new System.Windows.Forms.ToolStripMenuItem(); + this.Table0P1 = new System.Windows.Forms.ToolStripMenuItem(); + this.Table0P2 = new System.Windows.Forms.ToolStripMenuItem(); + this.Table0P3 = new System.Windows.Forms.ToolStripMenuItem(); + this.Table0P4 = new System.Windows.Forms.ToolStripMenuItem(); + this.Table0P5 = new System.Windows.Forms.ToolStripMenuItem(); + this.Table0P6 = new System.Windows.Forms.ToolStripMenuItem(); + this.Table0P7 = new System.Windows.Forms.ToolStripMenuItem(); + this.Table1P0 = new System.Windows.Forms.ToolStripMenuItem(); + this.Table1P1 = new System.Windows.Forms.ToolStripMenuItem(); + this.Table1P2 = new System.Windows.Forms.ToolStripMenuItem(); + this.Table1P3 = new System.Windows.Forms.ToolStripMenuItem(); + this.Table1P4 = new System.Windows.Forms.ToolStripMenuItem(); + this.Table1P5 = new System.Windows.Forms.ToolStripMenuItem(); + this.Table1P6 = new System.Windows.Forms.ToolStripMenuItem(); + this.Table1P7 = new System.Windows.Forms.ToolStripMenuItem(); this.PatternGroup.SuspendLayout(); this.PalettesGroup.SuspendLayout(); this.DetailsBox.SuspendLayout(); @@ -55,8 +74,8 @@ // // PatternGroup // - this.PatternGroup.Controls.Add(this.Table2PaletteLabel); this.PatternGroup.Controls.Add(this.Table1PaletteLabel); + this.PatternGroup.Controls.Add(this.Table0PaletteLabel); this.PatternGroup.Controls.Add(this.PatternView); this.PatternGroup.Location = new System.Drawing.Point(548, 185); this.PatternGroup.Name = "PatternGroup"; @@ -67,33 +86,21 @@ // // Table2PaletteLabel // - this.Table2PaletteLabel.AutoSize = true; - this.Table2PaletteLabel.Location = new System.Drawing.Point(129, 150); - this.Table2PaletteLabel.Name = "Table2PaletteLabel"; - this.Table2PaletteLabel.Size = new System.Drawing.Size(52, 13); - this.Table2PaletteLabel.TabIndex = 2; - this.Table2PaletteLabel.Text = "Palette: 0"; + this.Table1PaletteLabel.AutoSize = true; + this.Table1PaletteLabel.Location = new System.Drawing.Point(129, 150); + this.Table1PaletteLabel.Name = "Table2PaletteLabel"; + this.Table1PaletteLabel.Size = new System.Drawing.Size(52, 13); + this.Table1PaletteLabel.TabIndex = 2; + this.Table1PaletteLabel.Text = "Palette: 0"; // // Table1PaletteLabel // - this.Table1PaletteLabel.AutoSize = true; - this.Table1PaletteLabel.Location = new System.Drawing.Point(6, 150); - this.Table1PaletteLabel.Name = "Table1PaletteLabel"; - this.Table1PaletteLabel.Size = new System.Drawing.Size(52, 13); - this.Table1PaletteLabel.TabIndex = 1; - this.Table1PaletteLabel.Text = "Palette: 0"; - // - // PatternView - // - this.PatternView.BackColor = System.Drawing.Color.White; - this.PatternView.Location = new System.Drawing.Point(7, 20); - this.PatternView.Name = "PatternView"; - this.PatternView.Size = new System.Drawing.Size(256, 128); - this.PatternView.TabIndex = 0; - this.PatternView.MouseLeave += new System.EventHandler(this.PatternView_MouseLeave); - this.PatternView.MouseMove += new System.Windows.Forms.MouseEventHandler(this.PatternView_MouseMove); - this.PatternView.MouseClick += new System.Windows.Forms.MouseEventHandler(this.PatternView_Click); - this.PatternView.MouseEnter += new System.EventHandler(this.PatternView_MouseEnter); + this.Table0PaletteLabel.AutoSize = true; + this.Table0PaletteLabel.Location = new System.Drawing.Point(6, 150); + this.Table0PaletteLabel.Name = "Table1PaletteLabel"; + this.Table0PaletteLabel.Size = new System.Drawing.Size(52, 13); + this.Table0PaletteLabel.TabIndex = 1; + this.Table0PaletteLabel.Text = "Palette: 0"; // // PalettesGroup // @@ -105,17 +112,6 @@ this.PalettesGroup.TabStop = false; this.PalettesGroup.Text = "Palettes"; // - // PaletteView - // - this.PaletteView.BackColor = System.Drawing.Color.White; - this.PaletteView.Location = new System.Drawing.Point(6, 19); - this.PaletteView.Name = "PaletteView"; - this.PaletteView.Size = new System.Drawing.Size(257, 34); - this.PaletteView.TabIndex = 0; - this.PaletteView.MouseLeave += new System.EventHandler(this.PaletteView_MouseLeave); - this.PaletteView.MouseMove += new System.Windows.Forms.MouseEventHandler(this.PaletteView_MouseMove); - this.PaletteView.MouseEnter += new System.EventHandler(this.PaletteView_MouseEnter); - // // DetailsBox // this.DetailsBox.Controls.Add(this.Value2Label); @@ -168,7 +164,8 @@ // toolStrip1 // this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.toolStripDropDownButton1}); + this.toolStripDropDownButton1, + this.toolStripDropDownButton2}); this.toolStrip1.Location = new System.Drawing.Point(0, 0); this.toolStrip1.Name = "toolStrip1"; this.toolStrip1.Size = new System.Drawing.Size(832, 25); @@ -220,6 +217,184 @@ this.NameTableView.Size = new System.Drawing.Size(512, 480); this.NameTableView.TabIndex = 0; // + // PaletteView + // + this.PaletteView.BackColor = System.Drawing.Color.White; + this.PaletteView.Location = new System.Drawing.Point(6, 19); + this.PaletteView.Name = "PaletteView"; + this.PaletteView.Size = new System.Drawing.Size(257, 34); + this.PaletteView.TabIndex = 0; + this.PaletteView.MouseLeave += new System.EventHandler(this.PaletteView_MouseLeave); + this.PaletteView.MouseMove += new System.Windows.Forms.MouseEventHandler(this.PaletteView_MouseMove); + this.PaletteView.MouseEnter += new System.EventHandler(this.PaletteView_MouseEnter); + // + // PatternView + // + this.PatternView.BackColor = System.Drawing.Color.White; + this.PatternView.Location = new System.Drawing.Point(7, 20); + this.PatternView.Name = "PatternView"; + this.PatternView.Size = new System.Drawing.Size(256, 128); + this.PatternView.TabIndex = 0; + this.PatternView.MouseLeave += new System.EventHandler(this.PatternView_MouseLeave); + this.PatternView.MouseMove += new System.Windows.Forms.MouseEventHandler(this.PatternView_MouseMove); + this.PatternView.MouseClick += new System.Windows.Forms.MouseEventHandler(this.PatternView_Click); + this.PatternView.MouseEnter += new System.EventHandler(this.PatternView_MouseEnter); + // + // toolStripDropDownButton2 + // + this.toolStripDropDownButton2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + this.toolStripDropDownButton2.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.table0PToolStripMenuItem, + this.table1PaletteToolStripMenuItem}); + this.toolStripDropDownButton2.Image = ((System.Drawing.Image)(resources.GetObject("toolStripDropDownButton2.Image"))); + this.toolStripDropDownButton2.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripDropDownButton2.Name = "toolStripDropDownButton2"; + this.toolStripDropDownButton2.Size = new System.Drawing.Size(56, 22); + this.toolStripDropDownButton2.Text = "Pattern"; + this.toolStripDropDownButton2.DropDownOpened += new System.EventHandler(this.toolStripDropDownButton2_DropDownOpened); + // + // table0PToolStripMenuItem + // + this.table0PToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.Table0P0, + this.Table0P1, + this.Table0P2, + this.Table0P3, + this.Table0P4, + this.Table0P5, + this.Table0P6, + this.Table0P7}); + this.table0PToolStripMenuItem.Name = "table0PToolStripMenuItem"; + this.table0PToolStripMenuItem.Size = new System.Drawing.Size(157, 22); + this.table0PToolStripMenuItem.Text = "Table 0 Palette"; + // + // table1PaletteToolStripMenuItem + // + this.table1PaletteToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.Table1P0, + this.Table1P1, + this.Table1P2, + this.Table1P3, + this.Table1P4, + this.Table1P5, + this.Table1P6, + this.Table1P7}); + this.table1PaletteToolStripMenuItem.Name = "table1PaletteToolStripMenuItem"; + this.table1PaletteToolStripMenuItem.Size = new System.Drawing.Size(157, 22); + this.table1PaletteToolStripMenuItem.Text = "Table 1 Palette"; + // + // Table0P0 + // + this.Table0P0.Name = "Table0P0"; + this.Table0P0.Size = new System.Drawing.Size(152, 22); + this.Table0P0.Text = "0"; + this.Table0P0.Click += new System.EventHandler(this.Palette_Click); + // + // Table0P1 + // + this.Table0P1.Name = "Table0P1"; + this.Table0P1.Size = new System.Drawing.Size(152, 22); + this.Table0P1.Text = "1"; + this.Table0P1.Click += new System.EventHandler(this.Palette_Click); + // + // Table0P2 + // + this.Table0P2.Name = "Table0P2"; + this.Table0P2.Size = new System.Drawing.Size(152, 22); + this.Table0P2.Text = "2"; + this.Table0P2.Click += new System.EventHandler(this.Palette_Click); + // + // Table0P3 + // + this.Table0P3.Name = "Table0P3"; + this.Table0P3.Size = new System.Drawing.Size(152, 22); + this.Table0P3.Text = "3"; + this.Table0P3.Click += new System.EventHandler(this.Palette_Click); + // + // Table0P4 + // + this.Table0P4.Name = "Table0P4"; + this.Table0P4.Size = new System.Drawing.Size(152, 22); + this.Table0P4.Text = "4"; + this.Table0P4.Click += new System.EventHandler(this.Palette_Click); + // + // Table0P5 + // + this.Table0P5.Name = "Table0P5"; + this.Table0P5.Size = new System.Drawing.Size(152, 22); + this.Table0P5.Text = "5"; + this.Table0P5.Click += new System.EventHandler(this.Palette_Click); + // + // Table0P6 + // + this.Table0P6.Name = "Table0P6"; + this.Table0P6.Size = new System.Drawing.Size(152, 22); + this.Table0P6.Text = "6"; + this.Table0P6.Click += new System.EventHandler(this.Palette_Click); + // + // Table0P7 + // + this.Table0P7.Name = "Table0P7"; + this.Table0P7.Size = new System.Drawing.Size(152, 22); + this.Table0P7.Text = "7"; + this.Table0P7.Click += new System.EventHandler(this.Palette_Click); + // + // Table1P0 + // + this.Table1P0.Name = "Table1P0"; + this.Table1P0.Size = new System.Drawing.Size(152, 22); + this.Table1P0.Text = "0"; + this.Table1P0.Click += new System.EventHandler(this.Palette_Click); + // + // Table1P1 + // + this.Table1P1.Name = "Table1P1"; + this.Table1P1.Size = new System.Drawing.Size(152, 22); + this.Table1P1.Text = "1"; + this.Table1P1.Click += new System.EventHandler(this.Palette_Click); + // + // Table1P2 + // + this.Table1P2.Name = "Table1P2"; + this.Table1P2.Size = new System.Drawing.Size(152, 22); + this.Table1P2.Text = "2"; + this.Table1P2.Click += new System.EventHandler(this.Palette_Click); + // + // Table1P3 + // + this.Table1P3.Name = "Table1P3"; + this.Table1P3.Size = new System.Drawing.Size(152, 22); + this.Table1P3.Text = "3"; + this.Table1P3.Click += new System.EventHandler(this.Palette_Click); + // + // Table1P4 + // + this.Table1P4.Name = "Table1P4"; + this.Table1P4.Size = new System.Drawing.Size(152, 22); + this.Table1P4.Text = "4"; + this.Table1P4.Click += new System.EventHandler(this.Palette_Click); + // + // Table1P5 + // + this.Table1P5.Name = "Table1P5"; + this.Table1P5.Size = new System.Drawing.Size(152, 22); + this.Table1P5.Text = "5"; + this.Table1P5.Click += new System.EventHandler(this.Palette_Click); + // + // Table1P6 + // + this.Table1P6.Name = "Table1P6"; + this.Table1P6.Size = new System.Drawing.Size(152, 22); + this.Table1P6.Text = "6"; + this.Table1P6.Click += new System.EventHandler(this.Palette_Click); + // + // Table1P7 + // + this.Table1P7.Name = "Table1P7"; + this.Table1P7.Size = new System.Drawing.Size(152, 22); + this.Table1P7.Text = "7"; + this.Table1P7.Click += new System.EventHandler(this.Palette_Click); + // // NESPPU // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -261,10 +436,29 @@ private System.Windows.Forms.ToolStripDropDownButton toolStripDropDownButton1; private System.Windows.Forms.ToolStripMenuItem autoloadToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem saveWindowPositionToolStripMenuItem; - private System.Windows.Forms.Label Table2PaletteLabel; private System.Windows.Forms.Label Table1PaletteLabel; + private System.Windows.Forms.Label Table0PaletteLabel; private System.Windows.Forms.Label Value2Label; private System.Windows.Forms.GroupBox NameTableGroup; private NameTableViewer NameTableView; + private System.Windows.Forms.ToolStripDropDownButton toolStripDropDownButton2; + private System.Windows.Forms.ToolStripMenuItem table0PToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem Table0P0; + private System.Windows.Forms.ToolStripMenuItem Table0P1; + private System.Windows.Forms.ToolStripMenuItem Table0P2; + private System.Windows.Forms.ToolStripMenuItem Table0P3; + private System.Windows.Forms.ToolStripMenuItem Table0P4; + private System.Windows.Forms.ToolStripMenuItem Table0P5; + private System.Windows.Forms.ToolStripMenuItem Table0P6; + private System.Windows.Forms.ToolStripMenuItem Table0P7; + private System.Windows.Forms.ToolStripMenuItem table1PaletteToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem Table1P0; + private System.Windows.Forms.ToolStripMenuItem Table1P1; + private System.Windows.Forms.ToolStripMenuItem Table1P2; + private System.Windows.Forms.ToolStripMenuItem Table1P3; + private System.Windows.Forms.ToolStripMenuItem Table1P4; + private System.Windows.Forms.ToolStripMenuItem Table1P5; + private System.Windows.Forms.ToolStripMenuItem Table1P6; + private System.Windows.Forms.ToolStripMenuItem Table1P7; } } \ No newline at end of file diff --git a/BizHawk.MultiClient/NEStools/NESPPU.cs b/BizHawk.MultiClient/NEStools/NESPPU.cs index 310fd1a7e2..1630e18037 100644 --- a/BizHawk.MultiClient/NEStools/NESPPU.cs +++ b/BizHawk.MultiClient/NEStools/NESPPU.cs @@ -19,7 +19,6 @@ namespace BizHawk.MultiClient // Row interleaving // option for 2x view (and 4x?) // Mouse over - Usage (BG vs Sprite usage) - // Drop down menu for pattern viewer palette selections //Sprite viewer //Nametable viewer @@ -195,9 +194,13 @@ namespace BizHawk.MultiClient PatternView.Pal1++; if (PatternView.Pal1 > 7) PatternView.Pal1 = 0; } - PatternView.Refresh(); - Table1PaletteLabel.Text = "Palette: " + PatternView.Pal0; - Table2PaletteLabel.Text = "Palette: " + PatternView.Pal1; + UpdateTableLabels(); + } + + private void UpdateTableLabels() + { + Table0PaletteLabel.Text = "Palette: " + PatternView.Pal0; + Table1PaletteLabel.Text = "Palette: " + PatternView.Pal1; PatternView.Refresh(); } @@ -237,5 +240,106 @@ namespace BizHawk.MultiClient ValueLabel.Text = "Table " + table.ToString(); Value2Label.Text = "Tile " + String.Format("{0:X2}", tile); } + + private void toolStripDropDownButton2_DropDownOpened(object sender, EventArgs e) + { + Table0P0.Checked = false; + Table0P1.Checked = false; + Table0P2.Checked = false; + Table0P3.Checked = false; + Table0P4.Checked = false; + Table0P5.Checked = false; + Table0P6.Checked = false; + Table0P7.Checked = false; + Table1P0.Checked = false; + Table1P1.Checked = false; + Table1P2.Checked = false; + Table1P3.Checked = false; + Table1P4.Checked = false; + Table1P5.Checked = false; + Table1P6.Checked = false; + Table1P7.Checked = false; + + Table0P0.Checked = false; + + switch (PatternView.Pal0) + { + case 0: + Table0P0.Checked = true; + break; + case 1: + Table0P1.Checked = true; + break; + case 2: + Table0P2.Checked = true; + break; + case 3: + Table0P3.Checked = true; + break; + case 4: + Table0P4.Checked = true; + break; + case 5: + Table0P5.Checked = true; + break; + case 6: + Table0P6.Checked = true; + break; + case 7: + Table0P7.Checked = true; + break; + } + + switch (PatternView.Pal1) + { + case 0: + Table1P0.Checked = true; + break; + case 1: + Table1P1.Checked = true; + break; + case 2: + Table1P2.Checked = true; + break; + case 3: + Table1P3.Checked = true; + break; + case 4: + Table1P4.Checked = true; + break; + case 5: + Table1P5.Checked = true; + break; + case 6: + Table1P6.Checked = true; + break; + case 7: + Table1P7.Checked = true; + break; + } + } + + private void Palette_Click(object sender, EventArgs e) + { + if (sender == Table0P0) PatternView.Pal0 = 0; + if (sender == Table0P1) PatternView.Pal0 = 1; + if (sender == Table0P2) PatternView.Pal0 = 2; + if (sender == Table0P3) PatternView.Pal0 = 3; + if (sender == Table0P4) PatternView.Pal0 = 4; + if (sender == Table0P5) PatternView.Pal0 = 5; + if (sender == Table0P6) PatternView.Pal0 = 6; + if (sender == Table0P7) PatternView.Pal0 = 7; + + if (sender == Table1P0) PatternView.Pal1 = 0; + if (sender == Table1P1) PatternView.Pal1 = 1; + if (sender == Table1P2) PatternView.Pal1 = 2; + if (sender == Table1P3) PatternView.Pal1 = 3; + if (sender == Table1P4) PatternView.Pal1 = 4; + if (sender == Table1P5) PatternView.Pal1 = 5; + if (sender == Table1P6) PatternView.Pal1 = 6; + if (sender == Table1P7) PatternView.Pal1 = 7; + + UpdateTableLabels(); + } } } diff --git a/BizHawk.MultiClient/NEStools/NESPPU.resx b/BizHawk.MultiClient/NEStools/NESPPU.resx index 97685db4dc..bdc70dca76 100644 --- a/BizHawk.MultiClient/NEStools/NESPPU.resx +++ b/BizHawk.MultiClient/NEStools/NESPPU.resx @@ -134,6 +134,21 @@ dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL + U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI + VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ + QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4 + /g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9 + cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j + 3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR + dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb + NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE + s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC \ No newline at end of file