From 7b5a90b3e0ef4a95f51949512e63e90f19bdd20c Mon Sep 17 00:00:00 2001 From: Simon Martinelli Date: Wed, 13 Jan 2021 09:24:24 +0100 Subject: [PATCH 01/26] Implemented #10 and fixed #11 --- .../PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.cs | 3 +++ PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs | 2 ++ 2 files changed, 5 insertions(+) diff --git a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.cs b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.cs index 818186a..8c58d5e 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.cs @@ -136,6 +136,9 @@ public static void OnActivate() createPopupItem(pluginId, PluginPopupIndex, "Run utPLSQL Test", "PACKAGE BODY"); createPopupItem(pluginId, PluginPopupIndexWithCoverage, "Run Code Coverage", "PACKAGE BODY"); + + createPopupItem(pluginId, PluginPopupIndex, "Run utPLSQL Test", "PROCEDURE"); + createPopupItem(pluginId, PluginPopupIndexWithCoverage, "Run Code Coverage", "PROCEDURE"); } [DllExport("CanClose", CallingConvention = CallingConvention.Cdecl)] diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs index 479bdc0..0c89b95 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs @@ -287,6 +287,8 @@ private static List GetPath(string type, string owner, string name, stri return new List { name }; case "PACKAGE": return new List { $"{owner}.{name}" }; + case "PACKAGE BODY": + return new List { $"{owner}.{name}" }; case "PROCEDURE": return new List { $"{owner}.{name}.{procedure}" }; default: From 40c9118020c05cc200a930b93976de30ad038a92 Mon Sep 17 00:00:00 2001 From: Simon Martinelli Date: Wed, 13 Jan 2021 11:15:39 +0100 Subject: [PATCH 02/26] #12 Exchanged ProgressBar with custom implementation --- .../ColorProgressBar/ColorProgressBar.cs | 244 ++++++++++++++++++ .../ColorProgressBar/ColorProgressBar.csproj | 76 ++++++ .../ColorProgressBarDesigner.cs | 25 ++ .../Properties/AssemblyInfo.cs | 36 +++ .../Properties/Resources.Designer.cs | 70 +++++ .../Properties/Resources.resx | 117 +++++++++ .../Properties/Settings.Designer.cs | 29 +++ .../Properties/Settings.settings | 7 + .../PlsqlDeveloperUtPlsqlPlugin.sln | 14 + .../utPLSQL.UI/TestRunnerWindow.Designer.cs | 26 +- .../utPLSQL.UI/TestRunnerWindow.cs | 39 +-- .../utPLSQL.UI/utPLSQL.UI.csproj | 7 + 12 files changed, 650 insertions(+), 40 deletions(-) create mode 100644 PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBar.cs create mode 100644 PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBar.csproj create mode 100644 PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBarDesigner.cs create mode 100644 PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs create mode 100644 PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Resources.Designer.cs create mode 100644 PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Resources.resx create mode 100644 PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Settings.Designer.cs create mode 100644 PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Settings.settings diff --git a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBar.cs b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBar.cs new file mode 100644 index 0000000..97826d9 --- /dev/null +++ b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBar.cs @@ -0,0 +1,244 @@ +using System; +using System.ComponentModel; +using System.Windows.Forms; +using System.Drawing; + +namespace ColorProgressBar +{ + [Description("Color Progress Bar")] + [ToolboxBitmap(typeof(ProgressBar))] + [Designer(typeof(ColorProgressBarDesigner))] + public class ColorProgressBar : System.Windows.Forms.Control + { + + private int _Value = 0; + private int _Minimum = 0; + private int _Maximum = 100; + private int _Step = 10; + + private Color _BarColor = Color.FromArgb(255, 128, 128); + private Color _BorderColor = Color.Black; + + public enum FillStyles + { + Solid, + Dashed + } + + public ColorProgressBar() + { + base.Size = new Size(150, 15); + SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw | ControlStyles.DoubleBuffer, true); + } + + [Description("ColorProgressBar color")] + [Category("ColorProgressBar")] + public Color BarColor + { + get + { + return _BarColor; + } + set + { + _BarColor = value; + this.Invalidate(); + } + } + + [Description("The current value for the ColorProgressBar, in the range specified by the Minimum and Maximum properties.")] + [Category("ColorProgressBar")] + [RefreshProperties(RefreshProperties.All)] + public int Value + { + get + { + return _Value; + } + set + { + if (value < _Minimum) + { + throw new ArgumentException("'" + value + "' is not a valid value for 'Value'.\n" + + "'Value' must be between 'Minimum' and 'Maximum'."); + } + + if (value > _Maximum) + { + throw new ArgumentException("'" + value + "' is not a valid value for 'Value'.\n" + + "'Value' must be between 'Minimum' and 'Maximum'."); + } + + _Value = value; + this.Invalidate(); + } + } + + [Description("The lower bound of the range this ColorProgressbar is working with.")] + [Category("ColorProgressBar")] + [RefreshProperties(RefreshProperties.All)] + public int Minimum + { + get + { + return _Minimum; + } + set + { + _Minimum = value; + + if (_Minimum > _Maximum) + _Maximum = _Minimum; + if (_Minimum > _Value) + _Value = _Minimum; + + this.Invalidate(); + } + } + + [Description("The uppper bound of the range this ColorProgressbar is working with.")] + [Category("ColorProgressBar")] + [RefreshProperties(RefreshProperties.All)] + public int Maximum + { + get + { + return _Maximum; + } + set + { + _Maximum = value; + + if (_Maximum < _Value) + _Value = _Maximum; + if (_Maximum < _Minimum) + _Minimum = _Maximum; + + this.Invalidate(); + } + } + + [Description("The amount to jump the current value of the control by when the Step() method is called.")] + [Category("ColorProgressBar")] + public int Step + { + get + { + return _Step; + } + set + { + _Step = value; + this.Invalidate(); + } + } + + [Description("The border color of ColorProgressBar")] + [Category("ColorProgressBar")] + public Color BorderColor + { + get + { + return _BorderColor; + } + set + { + _BorderColor = value; + this.Invalidate(); + } + } + + /// + /// Call the PerformStep() method to increase the value displayed by the amount set in the Step property + /// + public void PerformStep() + { + if (_Value < _Maximum) + _Value += _Step; + else + _Value = _Maximum; + + this.Invalidate(); + } + + /// + /// Call the PerformStepBack() method to decrease the value displayed by the amount set in the Step property + /// + public void PerformStepBack() + { + if (_Value > _Minimum) + _Value -= _Step; + else + _Value = _Minimum; + + this.Invalidate(); + } + + /// + /// Call the Increment() method to increase the value displayed by an integer you specify + /// + public void Increment(int value) + { + if (_Value < _Maximum) + _Value += value; + else + _Value = _Maximum; + + this.Invalidate(); + } + + // + // Call the Decrement() method to decrease the value displayed by an integer you specify + // + public void Decrement(int value) + { + if (_Value > _Minimum) + _Value -= value; + else + _Value = _Minimum; + + this.Invalidate(); + } + + protected override void OnPaint(System.Windows.Forms.PaintEventArgs e) + { + // + // Check for value + // + if (_Maximum == _Minimum || _Value == 0) + { + // Draw border only and exit; + DrawBorder(e.Graphics); + return; + } + + // + // The following is the width of the bar. This will vary with each value. + // + int fillWidth = (this.Width * _Value) / (_Maximum - _Minimum); + + // + // Rectangles for upper and lower half of bar + // + Rectangle rect = new Rectangle(0, 0, fillWidth, this.Height); + + // + // The brush + // + SolidBrush brush = new SolidBrush(_BarColor); + e.Graphics.FillRectangle(brush, rect); + brush.Dispose(); + + // + // Draw border and exit + DrawBorder(e.Graphics); + } + + protected void DrawBorder(Graphics g) + { + Rectangle borderRect = new Rectangle(0, 0, + ClientRectangle.Width - 1, ClientRectangle.Height - 1); + g.DrawRectangle(new Pen(_BorderColor, 1), borderRect); + } + } +} \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBar.csproj b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBar.csproj new file mode 100644 index 0000000..9cc38de --- /dev/null +++ b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBar.csproj @@ -0,0 +1,76 @@ + + + + + Debug + AnyCPU + {739E6F07-E688-4D16-8FDF-7472E7F0FEA0} + Library + ColorProgressBar + ColorProgressBar + v4.0 + 512 + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + Component + + + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBarDesigner.cs b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBarDesigner.cs new file mode 100644 index 0000000..10a59cd --- /dev/null +++ b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBarDesigner.cs @@ -0,0 +1,25 @@ +using System.Collections; + +namespace ColorProgressBar +{ + internal class ColorProgressBarDesigner : System.Windows.Forms.Design.ControlDesigner + { + public ColorProgressBarDesigner() + {} + + /// Clean up some unnecessary properties + protected override void PostFilterProperties(IDictionary Properties) + { + Properties.Remove("AllowDrop"); + Properties.Remove("BackgroundImage"); + Properties.Remove("ContextMenu"); + Properties.Remove("FlatStyle"); + Properties.Remove("Image"); + Properties.Remove("ImageAlign"); + Properties.Remove("ImageIndex"); + Properties.Remove("ImageList"); + Properties.Remove("Text"); + Properties.Remove("TextAlign"); + } + } +} \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..d5ad86b --- /dev/null +++ b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("ColorProgressBar")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ColorProgressBar")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("739e6f07-e688-4d16-8fdf-7472e7f0fea0")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Resources.Designer.cs b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Resources.Designer.cs new file mode 100644 index 0000000..b95135c --- /dev/null +++ b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Resources.Designer.cs @@ -0,0 +1,70 @@ +//------------------------------------------------------------------------------ +// +// 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. +// +//------------------------------------------------------------------------------ + + +namespace ColorProgressBar.Properties +{ + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // 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", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// 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 + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ColorProgressBar.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 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 + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Resources.resx b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Settings.Designer.cs b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Settings.Designer.cs new file mode 100644 index 0000000..6e05c97 --- /dev/null +++ b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Settings.Designer.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// 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. +// +//------------------------------------------------------------------------------ + + +namespace ColorProgressBar.Properties +{ + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Settings.settings b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.sln b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.sln index 8b8a352..34ae292 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.sln +++ b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.sln @@ -9,6 +9,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "utPLSQL.Ui", "utPLSQL.Ui\ut EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "utPLSQL.Ui.Standalone", "utPLSQL.Ui.Standalone\utPLSQL.Ui.Standalone.csproj", "{5D3EA63E-AAFE-47DB-9D48-4BA9C205ADBE}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ColorProgressBar", "ColorProgressBar\ColorProgressBar.csproj", "{739E6F07-E688-4D16-8FDF-7472E7F0FEA0}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -55,6 +57,18 @@ Global {5D3EA63E-AAFE-47DB-9D48-4BA9C205ADBE}.Release|x64.Build.0 = Release|Any CPU {5D3EA63E-AAFE-47DB-9D48-4BA9C205ADBE}.Release|x86.ActiveCfg = Release|Any CPU {5D3EA63E-AAFE-47DB-9D48-4BA9C205ADBE}.Release|x86.Build.0 = Release|Any CPU + {739E6F07-E688-4D16-8FDF-7472E7F0FEA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {739E6F07-E688-4D16-8FDF-7472E7F0FEA0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {739E6F07-E688-4D16-8FDF-7472E7F0FEA0}.Debug|x64.ActiveCfg = Debug|Any CPU + {739E6F07-E688-4D16-8FDF-7472E7F0FEA0}.Debug|x64.Build.0 = Debug|Any CPU + {739E6F07-E688-4D16-8FDF-7472E7F0FEA0}.Debug|x86.ActiveCfg = Debug|Any CPU + {739E6F07-E688-4D16-8FDF-7472E7F0FEA0}.Debug|x86.Build.0 = Debug|Any CPU + {739E6F07-E688-4D16-8FDF-7472E7F0FEA0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {739E6F07-E688-4D16-8FDF-7472E7F0FEA0}.Release|Any CPU.Build.0 = Release|Any CPU + {739E6F07-E688-4D16-8FDF-7472E7F0FEA0}.Release|x64.ActiveCfg = Release|Any CPU + {739E6F07-E688-4D16-8FDF-7472E7F0FEA0}.Release|x64.Build.0 = Release|Any CPU + {739E6F07-E688-4D16-8FDF-7472E7F0FEA0}.Release|x86.ActiveCfg = Release|Any CPU + {739E6F07-E688-4D16-8FDF-7472E7F0FEA0}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.Designer.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.Designer.cs index 319096c..d84a0fe 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.Designer.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.Designer.cs @@ -70,7 +70,6 @@ private void InitializeComponent() this.dataColumnExpectationMessage = new System.Data.DataColumn(); this.dataColumnExpectationCaller = new System.Data.DataColumn(); this.txtStatus = new System.Windows.Forms.TextBox(); - this.progressBar = new System.Windows.Forms.ProgressBar(); this.iconPictureBox1 = new FontAwesome.Sharp.IconPictureBox(); this.iconPictureBox2 = new FontAwesome.Sharp.IconPictureBox(); this.tabs = new System.Windows.Forms.TabControl(); @@ -116,6 +115,7 @@ private void InitializeComponent() this.iconPictureBox3 = new FontAwesome.Sharp.IconPictureBox(); this.btnRun = new System.Windows.Forms.Button(); this.btnRunWithCoverage = new System.Windows.Forms.Button(); + this.colorProgressBar = new ColorProgressBar.ColorProgressBar(); ((System.ComponentModel.ISupportInitialize)(this.dataGridViewTestResults)).BeginInit(); this.contextMenuResults.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.dataSet)).BeginInit(); @@ -465,13 +465,6 @@ private void InitializeComponent() this.txtStatus.TabIndex = 7; this.txtStatus.TabStop = false; // - // progressBar - // - this.progressBar.Location = new System.Drawing.Point(12, 85); - this.progressBar.Name = "progressBar"; - this.progressBar.Size = new System.Drawing.Size(986, 23); - this.progressBar.TabIndex = 21; - // // iconPictureBox1 // this.iconPictureBox1.BackColor = System.Drawing.SystemColors.Control; @@ -954,12 +947,26 @@ private void InitializeComponent() this.btnRunWithCoverage.UseVisualStyleBackColor = true; this.btnRunWithCoverage.Click += new System.EventHandler(this.button1_Click); // + // colorProgressBar + // + this.colorProgressBar.BarColor = System.Drawing.Color.Green; + this.colorProgressBar.BorderColor = System.Drawing.SystemColors.ControlDarkDark; + this.colorProgressBar.Location = new System.Drawing.Point(12, 86); + this.colorProgressBar.Maximum = 100; + this.colorProgressBar.Minimum = 0; + this.colorProgressBar.Name = "colorProgressBar"; + this.colorProgressBar.Size = new System.Drawing.Size(986, 23); + this.colorProgressBar.Step = 10; + this.colorProgressBar.TabIndex = 43; + this.colorProgressBar.Value = 0; + // // TestRunnerWindow // this.AcceptButton = this.btnClose; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(1008, 729); + this.Controls.Add(this.colorProgressBar); this.Controls.Add(this.btnRunWithCoverage); this.Controls.Add(this.btnRun); this.Controls.Add(this.iconPictureBox3); @@ -979,7 +986,6 @@ private void InitializeComponent() this.Controls.Add(this.iconPictureBox4); this.Controls.Add(this.iconPictureBox2); this.Controls.Add(this.iconPictureBox1); - this.Controls.Add(this.progressBar); this.Controls.Add(this.txtStatus); this.Controls.Add(this.dataGridViewTestResults); this.Controls.Add(this.txtDisabled); @@ -1034,7 +1040,6 @@ private void InitializeComponent() private System.Windows.Forms.TextBox txtDisabled; private System.Windows.Forms.DataGridView dataGridViewTestResults; private System.Windows.Forms.TextBox txtStatus; - private System.Windows.Forms.ProgressBar progressBar; private FontAwesome.Sharp.IconPictureBox iconPictureBox1; private FontAwesome.Sharp.IconPictureBox iconPictureBox2; private System.Windows.Forms.TabControl tabs; @@ -1105,5 +1110,6 @@ private void InitializeComponent() private System.Windows.Forms.DataGridViewTextBoxColumn packageDataGridViewTextBoxColumn; private System.Windows.Forms.DataGridViewTextBoxColumn procedureDataGridViewTextBoxColumn; private System.Windows.Forms.DataGridViewTextBoxColumn timeDataGridViewTextBoxColumn; + private ColorProgressBar.ColorProgressBar colorProgressBar; } } \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs index 0c89b95..5607619 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs @@ -15,7 +15,6 @@ public partial class TestRunnerWindow : Form public bool Running { get; private set; } private const int IconSize = 24; - private const int Steps = 1000; private const string StatusSuccess = "Success"; private const string StatusFailure = "Failure"; private const string StatusError = "Error"; @@ -165,9 +164,9 @@ private Action<@event> CollectResults(bool coverage) totalNumberOfTests = @event.totalNumberOfTests; - progressBar.Minimum = 0; - progressBar.Maximum = totalNumberOfTests * Steps; - progressBar.Step = Steps; + colorProgressBar.Minimum = 0; + colorProgressBar.Maximum = totalNumberOfTests; + colorProgressBar.Step = 1; CreateTestResults(@event); @@ -183,7 +182,7 @@ private Action<@event> CollectResults(bool coverage) txtTests.Text = (completedTests > totalNumberOfTests ? totalNumberOfTests : completedTests) + "/" + totalNumberOfTests; - UpdateProgressBar(); + colorProgressBar.PerformStep(); UpdateTestResult(@event); }); @@ -204,7 +203,7 @@ private Action<@event> CollectResults(bool coverage) if (@event.run.counter.failure > 0 || @event.run.counter.error > 0) { - progressBar.ForeColor = Color.DarkRed; + colorProgressBar.BarColor = Color.DarkRed; } if (!coverage) @@ -251,26 +250,6 @@ private List ConvertToList(string listValue) } } - /* - * Workaround for the progressbar animation that produces lagging - * https://stackoverflow.com/questions/5332616/disabling-net-progressbar-animation-when-changing-value - */ - private void UpdateProgressBar() - { - var newValue = completedTests * Steps + 1; - if (newValue > progressBar.Maximum) - { - progressBar.Value = progressBar.Maximum; - progressBar.Value--; - progressBar.Value++; - } - else - { - progressBar.Value = newValue; - progressBar.Value--; - } - } - private void SetWindowTitle(IReadOnlyList path) { var startTime = DateTime.Now.ToString(CultureInfo.CurrentCulture); @@ -323,10 +302,10 @@ private void ResetComponents() txtErrorMessage.Text = ""; - progressBar.ForeColor = Color.Green; - progressBar.Minimum = 0; - progressBar.Maximum = 100; - progressBar.Value = 0; + colorProgressBar.BarColor = Color.Green; + colorProgressBar.Minimum = 0; + colorProgressBar.Maximum = 100; + colorProgressBar.Value = 0; cbSuccess.Enabled = false; cbFailure.Enabled = false; diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/utPLSQL.UI.csproj b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/utPLSQL.UI.csproj index ebe6868..29257c7 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/utPLSQL.UI.csproj +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/utPLSQL.UI.csproj @@ -45,6 +45,7 @@ + @@ -88,5 +89,11 @@ + + + {739e6f07-e688-4d16-8fdf-7472e7f0fea0} + ColorProgressBar + + \ No newline at end of file From b9e3b485daf5fb3794f585cc4f21720461c98d91 Mon Sep 17 00:00:00 2001 From: Simon Martinelli Date: Wed, 13 Jan 2021 11:23:38 +0100 Subject: [PATCH 03/26] README.md updated --- README.md | 10 +++++++--- screenshots/result_window.png | Bin 0 -> 53868 bytes screenshots/result_window_filter.png | Bin 35065 -> 0 bytes 3 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 screenshots/result_window.png delete mode 100644 screenshots/result_window_filter.png diff --git a/README.md b/README.md index 22aebfd..af2d73d 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ The plugin adds a Button to the Tools ribbon to execute all tests of the current ![Tools Ribbon](screenshots/tools_ribbon.png) -In the object browser on Packages or Users there is a context menu entry to run the tests or code coverage of either the packages or the users. +In the object browser on Packages, Package Bodys, Procedures or Users there is a context menu entry to run the tests or code coverage of either the package, the procedure or the user. You can also run tests from an program window. ![Context Menu](screenshots/context_menu.png) @@ -20,7 +20,11 @@ The results are opened in a new window. If you've chosen code coverage the cover Double-click on a test result entry will open the package body. -### Runing single tests +### Running tests + +There are two buttons to run the tests again either with or without coverage. + +### Running single tests A right-click opens the context menu, and you can run the test function. @@ -28,7 +32,7 @@ A right-click opens the context menu, and you can run the test function. Once the tests are run you can filter the results by clicking on checkboxes behind the status field. -![img.png](screenshots/result_window_filter.png) +![Result Window](screenshots/result_window.png) ## Releases diff --git a/screenshots/result_window.png b/screenshots/result_window.png new file mode 100644 index 0000000000000000000000000000000000000000..d5b0612d6bd22b4786034dd253e63f320f95beec GIT binary patch literal 53868 zcmc$`XIN8Rv@ML~6%`c)l@4kEr3lhHs3=96(vc=zdM^P2Dk{>AbZMd#si6o62?UiA z=~AVJ5si z0hS8`nK!x@6u71-`dkMdA7Xr7Tm96 z=hcIo|2z~t{O?0!4H`u)7RvZ%p$vu&ROAmho%5dp2iZaN>RcV18X>a9Xo{v*-%i?_ z58Rj*kI3JtWb|f3lSz>cJAFu!QhV^8H@#+OJCC|H|3!^zx?x5iyWHMD?N5qxq4#Ck zo%^#1hAPHpJd|z_K_(qyrPECXY0HCxv~dHv^M;Q1URjm!U&Yw9yg`wgnLFWMW4%T6 z_M{>y3G<`$pZ#B~|0-~GX%j4w)vGwNXzR`CN`ldMVbNLcHj&goqouoR>z)|zvdkU4 zpVS6DOrDi)+1@aox#L1B?rNi_^3fBjgxibEd(+zECQKchPe{P&P8b*RHbWAKXlWM3E_2Lm9#H6yU z!JQ9h=r!iH(Fwoi?@?A!()gOuQqh@rG(5eLe$8#k35_K2?KS>r$={MCpx^0+w>Y*- z(HE8zV(6pv^}J{BvtST`Y)n05-?L8+Re`MlzHIotAFsq9|VpEA8 zug&!d8!Y$gy&W^|W|B5Wp^|>om1s=N&%jk}jFwXoVnJRAk`p>vVc9TADXmmWluscI zY`tp!RdS>~c00_BKZy$wjF)nK8OKnj^{%b0K}_S zH8oJ1JG%XoblUTcIt#^7BebqWyxhaq>d4XueB&8)>Njk5H^pp-zNXkaI+ziSZ?BgK zD>u$;qqyfMPKM(75F2f_EfzASwkiT$tW_o0j)BLj;4H}$I zo2-i&6Ntoq<2$Ri6Nj|i8;0$4&|rHcdil=iU|VE&64l5XZqPF|;R#6yfAC{))xOog zwhli0uAbC*{iS5>)DGj`w$)2fE*EufWerrU_wx>YxI`I!SDzL7nPc^3 zJrs5gs>Sd~Biu;{o zn9bPw)w9@dS1ahJ+~?Kyj0{3Ka=ohsX<4)mI_tXOt@XN~qA?|{E>W`r-iJ#=V~;2= z?9L924bL?2MuzR#`0LH|bd~#d7auwD0TQ1LP09|tc&$+{2dlb!<=2#bZ4M5b(o&*K zfnX)OG2{av=KY4R-Q3OCQgzb*bcHX7#53A9Cbc1suu$Gi_CAZVrBLUC=|4r<(G*Qv z(H4`mp>Ey1NMfkxJe^QH-~E|q$>32*;lL6pt>kzQ!TFtTp3JCr)XERnRypxf&tBc1 zEgCJ+B*(f^Th^Ynf<8Mw1l1)B{rvjm;zi7m-gvclY#$1&-PTMa#ayXc>K zd+2iAJvnMR^1SJp{6@a%E6$&9CcE`GZ@!*FL%r`h_fvVNxD2URi4VfMZ><|9d6)OD zMqp;}v8_Fv3*%EmgVLb)X7QC&rIm`J*YzC<2v?mC(}o@+ie6ORgVr-}x0jMDuZ=T5 zKuPpd;XYQx8Jy}Y2N+E6RoL2%SyvxtI{T}aK1RA5EfF^+a-^{KOU&Q{_Lo8UkUa|D z+5Ww?k1_N#B+(!iO^ssyoc^mguqqF*J7VBFOUMoPcDV?GSsZf9R#})fZ%gl-TL*p1 z<;d$b#cFT;ReEUoiiXY3l7VNe_g+8UcOyNQuGwz8*H5$i$n{r|BRldLN}9Uiypz{e8pAqQUzM zx`98hUtS~piQ^Za4m^Dd)%^QLu%K3&khh1qd@EBafct=Zur*sO!oy+YxNB5h1ysQOKlUeR+Nql%!u#%_Y1$ z4R%|lik+qYR1UlZqPzJ9%ZfPXdYuzToJrI9F#>O29c60gn%jQ-=Ro1Ow+VX-o$U*q z&^5{r_CQ{BklXV2f7-y#Qcow`yev%!jx!77fkhxPrXezhqu2ztSeM-DCF*+(nw_tA z1T5r7GtzIee9Dxz_j9H^qe1LuN)u@y1rma-8##;LeDoBIKbm$%bCik|%|VE|r2_mI2=+Pvk*r`&bL~6`ajohH^{y z#5%juVi3US($0q6JcXMZMa-4TW-wqVuMY{mz_-Tii>LGA>V5g%=a2DLHa0(J0A0! zks+`xt9rgN`AkAg5*|)i+^#~qNb`ckZGS5GtFnObo=n}Td=snN)cNYYJ^30nAxl$l zR);mLoA!i1{3E_Hmoti&S7gvxD0n$y!&&sf_k|TmQa35t>kz;?b<83`;%Ex3OG)DP zCLDGazk(;VV7oXj5m?7N+o_X!hPIJrY3MM2lJynz!W`*6iXxU8Iz_6sbs4^*mFv?F zfu$|tdvu1jZ36SDi4*JCl1^h*RoC2wh~g7#q(lmXCj~4PCSW5R)eMk*+iruq zo9Gqu5=l4-UZeuC$r1< zW@Xl*Qa{A$h+&oj!FrnRaadU{S`CEvBkjF=BK)0@Vys{YA5S|9UM5mPt!{cUR@~dv zdNl3Tm%6;AD;f`P>jg&2RT5Bt%TLv)n7n0H&6`fskQxsPzvk6T$C#WUAB z*>@%AI!>x!jR~8RDYJE?CZ0^S8`DrEh1>|S4G!ulx_2L zpt7t!2|k?`?5!^e^lk13hBl8^N%_z&kmm}5**NI!evw;TCa`bY-!?Dy9(Z1c%#THb z#5)jxoi-X*f+JeU&l?{F=z_fah@vC-rd=&X@sl`T>XmZP>ZF&YgKCh1X=%?o)vIBw zsC!uI4HN<|jYQVQwwDi}#*$x;JTvg;qf+!DQ{><0tz0OYNnJ5S@V)h_qZmPw!dH^l zr8X^1ySOPIPzM7g$PFM~K?3={v;YJAPsJ*bf!bJMuhP z!q&1r4eoxgkTK!$mmrgH;IW&Uh)rJhb5YeTofmDeO=zP zMRzO=$?EB{tU`c>5{?9@5#@~GTws?e>&7ezLX3aP3MeqA!fF6kJCYc+VW!!V74z?@PoBCfxRbJo4dY9c2HEmxT3=M_ zhz~D41)wmh6b6+$qM~KL2&b54W@DL%U*pJfj+g|n5V8|k@dKjGeBtRG&IXc#SIy6J zj9M%+SL%=R%BZU(j#vn8^57G>#%D0cgXTdW|L9-5SriYJtc9>Njq@qlQc95d6VoWl zWZB*pyT%L=zO-pTf}8Sv3oP1=#Rbo)ijRE=d`$@m+k&sstTMxqafwN)u->$L_zIJV z48R4JnfFY5Lm^$f4t$%WGUX|>Q!Zjn2l9IUs1rWINk12tT#3)374@`iB#(sn!(<{y zE+X(PGPFQ$Vkhka2uU}>bruewvXTP~(pXJM!c(S2jrT;at9Y$LUPhnc-s1%aqf=D- zdZt`9#!Y=<4@My>oR-GSNSuErMXh`lH8rlz`Z8)^22(zvP*ISk5^pX=1vOR$glll|*@>6!0-hSoP zb?1?FgAF8zFD2Q6%tK2IH*)dt=x$dv$>WRz5R@iGSTLOY#fIPOz}d-0xY?N1h0aVQ zx76Lv_nYjT_mqNVjpaoDBAmmYC>J@OT_fQ6CQ;p~9jJ4&Kiw|wQ(_704^Yi_1OIZ$ zzj$k;2Pg^HDmlg12tS57;rVaTImI0__?zFD`;FMiB#C{xJ#g9%^Q}ZCNc}ca$snN_ z{p>AYE>IpX_e=B&a&Xh&?Msr_C%t6JrC*G=dmto z%=w#x7F`=On&zChL=(XD*dZ+CUV|zM!_YV+RVJcGl^)Bg)@xm-0J*tM8 z_F0_$YyTY0e^8;VQE0mwOjs|ESVrFQQu&ce7xTr~0+P_w!j_X&y_U*YcN#jQ^UDG(poIBXOjeZ!RO zKL9jg#m8ltO-Z#Sr`p%uzb!!dOh^}r4VoGUq#tLLOs}&pM1K zMgG*^sLmssZ|ovNn(Od`0jG|6r9;t9+7&6xIQge7TblT@^ldtAHx0}z;8ftTv+F;q zk7fp?yo`%_m9hRL#eldB*(wa~Qr#iiq9yV91@S2-ZPlFgg!^t2&R!hr3`+3tl+=mb ziH*?Rq^_)=K%CpPQobc)z#lo}$qI3xYo7mxjL zs!E9TbH=lFEvON{-Q1tHJWHM5peilO3Y7)IcFKbzc-ffoYNEVjfzpA<;>7V`>VQXB zI69Sxi(m&czrT8st+n%t#D*>1!Pd5iwvhR)FpF#?@KNu?mCglfryHCTnFr~QM;o7b z$u6Y(2}P3FnCL;$Blf7-?>^(BtGg&OyB?e5qmAt{*m`0PVMW}LpHKbEo5&TsaDm#{v8-C$8$|K-F|3J`2YcsS3D zPERDhW$`-@?r~fX@na-%*R9N|cqSzOV`1mm^nt+mTbH$c1ddGAO0>pzS_Iw@=SJT6 zd{?KP!Oj*G34vILQyL<}HoB2}-J05$J}++BMr;RyB*-{kxdtl6F zS^Ko<6w)MocXMOYehWKoAB1~0e{yrPGY(ANTn@BqzNmKzK!}C{?+M6Fu~XaHj)lw- zJ74%JDGy53m`ywsnll0$a=n0%G+dQ=cW%W2qdh-W*@d}&voa~+V&Ajw z6{Fhq(9wwRk`%3SIOR?d9V;G5?$*qN z(rf9sei2ss5OEu@YiB}CFw$L095(K0YV&Fm-d%GBZ7x<_XE?Hzm1Fxukm%K zdONS(<2%;K5RuGclzU$|5=eGLs8nwAusVEOVV!D=M|g;{j!*JPTxWN~1RlI7Xe0jt zN*~0lxL(bo5AsnXM^ppF!&iBC#i=viby%IUoT+vG_;8z0jh6MSk>D4A>uJ0tt84#E zor^54B1D-DpOM5`YuNC^PU5~ z7Z>a1S`hZt>k0GETyi(Ws+d_cTGXRu2y=f3&J93V^Rq_3CF}uFmN0fvE3lQ2{>9{z z=G7s&1LY@jDycr#ds_)?xe^N??&47GxoNX0 zk3f&T?V%D@D=E`d2^b!Vgup%q8+5p;9yw~QK}(NVNsqVK{mj;K*NOS|R2x&YEP+tG z_(6fW7jeaT{&wWvv$6Zc!gD%a6$Q3UEd>-KK&SOEgM1?{kaROGM?3|BB6lE$5cKLO zp97lN!59dLrsXJHU<*lMs@`r6D6Q={P-RVksx#(xrLISZ%?C4jd8 zOcUe9xh*+YmhqI_0glE>fWou!WO7^CqsTW zO6MTui`w3oz)NSc{s;sB9F{gjSsNksFv}524Psdu!fsKVY(ciKKbTE5CWhx}sp&@K z@u$!t*kPqD<7kwQS~6`(>`LJ)^Etr;1YA?KL9JXI2C&}1$gCBb5wUpU<+F{uo!U-Q zhQ3wPX&S}x{*ZG^0&q@njDKa)Ghh9zkg?9sirY{r0>N?D$F{2n{S+E3@wNT!uv-(h z4nNL5Hl9($`b0i|}~}60cnoVioURClYoCdT?cpOurY@9bj0bOTMjZ5WMuJ!=yo=?Kt#(O_+oDKPjB)93)B@NZ-lN0DUag- z``?>tfBOdZbfbHfdDoGL$pn4U!Sx);rs8C?(h(h;$jO+gSHVCb-Cs_VEZ!CU1c+GN7)(Cp=L8GhoTCIZnIrNoU6WTyYCf;Vl&AO zSs@@Lebvb8AaCclpBIKpJ7%r=y-L>LiM?C~K2FLVxmw;V<8IliX>s2E)PO0UDN~kR zcJL12!wy=VVIi!C8$ZH z>nCFGMT3f9wiH9{@_nPls-(8yc*%B=Pu7pbhgZ0b*77h;Dr#p>nq+cop@`Mi3sVw3 zucVerID$NvA~)qCYiSCiV-@D*M$GvM+v!Cx6t3qgw_?W%2bovHrX}x7(1`C~*^oHv z5dXYw#hixC07Qz7{#o(#>sP=MD-#)~vB(@VgiY1yeD4W5$Day?r8hov3Pmv+CsC1| zWzOFXBh^i4Q~gv*Zz^`n12J4dJ5?vSTMdM4FfL;1OQzZ4yFER8gKb4vT1QCVXG9VG)}DAF9e z2F)O1*~GhuYCxasRQ4BF>z1`%0v@HBs(=gCg7NiN+$$}qhFJmlgI+^P>OkbHdS)SY zPgVP&aLj57J#jA&vFqk;YLk0MTx$L8cNM}fzH(BIpw#)bazQBPQs2pY!uw0iV@y8y zL@lPL@y8kp{gO>V3eOKa)*VpBW7H$s80OZD6{p?yoiv+a_UeD1{;44WLDR3KR9YMu z>w8C~Sx?(Pf%2XI%Y5z_bi<8KfdOHQAyVCn_*ZO;j>I`wC^Njfzinqi=&nkHm9pw+ z-XkUFX|^lC)-(|CTw->e&p|Lwzrc!6)=ML0oY$K&4K`n+)U)qT5+T9U%y2l-HRsI< zzAPgxA0w6yFU;+^8gjNhX&@K?S}bG^(rp2cFqHb>E-8n5YkEC; zdRo}4k*TO+n{tUp<}UNT6kw#74dsIt@xH%nbyMt7o}vBHqU-it5XRl`nAfeF>Cp7H z2W-y*x$oG5shXBWDk&+)Y=hVTL&(&!+m%Fn*!>~;mE;_*s1gY58dYVB#N7KxoeDVR>s1O_%?X~7INtE?PMg}(J{=cN z%-r6EM+TN+pK>IPWC-sE|BKjkoD&?-a$L<@n&(;GqH&=924V1QM4FMwPRl^Z*$C5L z7hC5dI`%J4HyH!b@;}MFK9m24fj$rk@$H`eEd}```RnpOB}V@*^zi>>6Rs{G`XN3J=YJ%kivjF_d4N+{ z7+jFtKQ=kt1m*zIMSq*dr}0qw!~q@Lzh>Pmb;hVY|95hWE;wM+WM@l=e;XF4#KfSY z^WW5T^1v+eUp*>6i|x1i|JzLU|J+(YaOm*c4qyT9%T%}S{U(te00swzg`NMmGkVuY zR0wK6$AV-Dwc{uLTqM9sVKlV0^#V?3}4;BL{kF_TAzU89n)bs6btmm^n>Se{$CUB=7sX!-{i%nhU_ZFBOmI2d^S-cY9IFmPrt@n#>&eNzk>i6%j8M|c{}=j+cejPmp&t)Xu{_n!ja$COuV{xZagIkjpZ3 zvnm(SMJKsneP#2HRrZgQa7XtkzZH}K;TKsKgXvM4?M-`Nue~_x(lVu44zSJ4QcrkK zqyxr5i=`B=pvSSS2%bKVtJ$oyx~Lt$9A{5OoqW{QrinZKIdu5VdzLLfir1Qrlt(IzgWEF>Now9G0ctqidmdc!*A0B@TD1=NNXpyeR=Oygcz{;Q_EWM85s_cIQePs)gDq)I5>><3`mFvaFBhnwEpVJ_fzaLU6z>%rIlJH+W!18CQgO5 z;+W$mJFPENi6LLBA~I61_}eis^gVCcC?!5CSsdz!=F-XZlHD-hLVpW?viEaorMxqNr}&u-dH;BcEghInovjyo#pR zUWS>64ZlmaE9vxPd=!`Ojc|k57PW*BTdpn1Tdl@=;*F9Lt#hGC!^eQSHQz}ky&vyH zZBl30;`ed`f*ww4TYjxro5f8;!b&r@E>$a!T&;i|FVnYCi5Ip=YDtO!RETO_dVB#du0^@!Q91k(%2=uXEE&M2e zrd#)_W3h}XnLJQNjX#JPnDI1&G0=1L=z_|s{zzVv3*WE00qbzs{G7x_Pp_;&zn}AB z<_%g-n-;Icj9z3LnyR?z#A7ych!hUu8~ysl2WTo$&xQA%)G(^MKO9L~EC8e_TapK! zOT!Lj)F=eN&+ zZ?lI{wrzu<43D7K5&Qcq|D|SpTrww_8S;Vy%VMB_`YGB7Co>qQVehA^!G?E zeF+kwFKVZ1d*Wy36ZTXAfyvQQusz6HG#xkJgyuQQaP8o!^Duo0+L{Doc>lihJRon* z>+9@c8aMb(EcW(_5nGww){!;i%w9K(o{{aBy>2$5qhsF``$tjT>bSNP$S z(B|iaq2TMd_D8q;PaG@t43m`@bJB;RlK!C1L`N(!Tz+G)s{57_>bA!hs(jdC4dcrK zY|ba+B1!UQh$$D#a<({o9zm@VNgGwC2HY*p?S35)efCNG9?mv=T51`Hv!yoRs?|2F zsOV>6k8~pN*Ib+IUD8xFXam2_PHTLz0k<{QSfr}fWNM>Ra{cO#u@o3*`cbB`a?;l- zja^sMyMauA)oA>lyEk%Fa%G}NjsBB7N&`fKUc zc8SH7F=i10H|@P_)AbCynJv?-KaRa-p5PyInqG|dz`pQ+B@t0U2VBjjM@_0XCTJI+ z*^Ew=0wvqHvCdR|xvYv<%`uw7HHcAH3Z+!FMaa~jSnDBodrP6o>-Cv0O8sUd;Isqp zbTuJ}wIU(+39HB}*leqFOE1@(pDw$tsKT(y5B=Zat`$#aB%#0uaD)1U3N%ODD;Fa#*+Pcq=ND$3+c#P`9Bs#fjO)^b;Bs!}kG;^57W)y9H?S$?q z>r3+%=iNB1BW#a!D48sUHg9!>F5VHZ6=luAX+aW!gKbaPNdx8G$v>E7Sn&@pcestW z`HhQKyeG*xkMO^FbvKq{DzHdfpodBOA)iI9h_kJCu!f0Zly-&)2wTtfMRdHXLOl1b zWdO&}_LlFMGhE5kq)0VQdtmJqOCyU+9^hTqxdkTAiQ3)Edu%mwzkKm#jMSNW757PJ z3F6?WXH`l&dsJ7s76EVl2wLXsg;Zf4*$^K3mObVa_^dbQGEw2g{kj7_4EHyLUz{1) z(T}&3sjpc;)3~Pj;*&$m3p;|ZjlOmG>P2$UKaIX5aT)RRbS_g&db|x|M|^M5##r4pSBMH9o}=mTCa z9TA4eFsfzx(BhZsvuP_6-f|7tW8Wxi{dQr^!10>1JQA0`iFF7uFkDx+We(CV&~4K9 zG;}i5n4wx0%Cfm(o@HmE$J&^_wwbehn$jf%Ii&lV>fC_4V4M^ly51epP1BDLyWAt> zz%k0Ip8oA??Zns^DvJYFXO(d!GE%sEdd$g>M^tHS`O1h`Nv(|}*MseGCf;q*dsm;p z!&%MSrDzGlHIr8xcc>AS8ZGDi&kHZ{PqfPe%A+EDP}yOpKVS{k z(|zyxnGsA1VIc9gp1q5@h?n~DU!11A@+|w-x$!o zCRud?P7)$s7hmfVwScI(uW}1;Ij3Xm`~2%tOlOMs8l$nLraPHG3WU3dS_ahV9*f@HS^xE@79|G zO~NHp85kp*vDfEJLtwScF~C^{Gc`HpC_kst`hJ(~i=Ow4IpDDufNW2*0;8ft(6NTA z>{caidGAilfGYtycW1V}D(k?zE^L^+Qy4^l>&yE24Pb1HGvk}H^+h z^oiP%B8>E}`IgOFcJ3H(fhn~-ljP{>W1r095(-h(6Aq)RTAkUb##R(SL3d7UJV?L3 z=iO$OT%|X0Mg%mu8L7z&@`e_V^SKGmNPM_@?Z9UY?}PdHt2Uld0!{$1T(jv&(~OT@ zGo^JW3nx#^e7em+cJSG$|IYZKE+tDyO?rf7IEafNawM_)*u+z4wA8}S4Y%M@kwLGH zsmh42@%XH`Frb>34ky5erS~CO*Yf}a>c&6N#sn~j{}Y6~MhKHE0zeD%8+Uh1_$MVF zQ1ZF}%E#p3#>8;_)Zei7CkOc78Vql>#J8OD>hkN^2SJwKOP}jk39rnka9%qM8_;M4cZyU^_<)B9(cFBRbc52gG;Uzgl%U~?*X zWYvBC57p$9;G z=bISB$jx60R$_CaI5;UqU8)kZgM9!&%08*t4Jzt!HrdsZOBO@+#hUzRHFD}&^Y;$2 zsb`~xTlf}f(CQj&-7^C`m+~Ta!rkeoS;eJ2p=DQU-N;dr@Uq1zFUxTe(He_1Q?2pa zzQhMcEnYS~Yq*-P)?~Zx8Ya@jQj{3Z=4z?prAeHFN=@^P36q9E6AwhanpVK;H$8Ry zH4)U^k0P}Y6XmAu{>Lky4U1a3KK$3bi$>y_vT|k~$ zATPE+`Tdt{ujHSaeXOm=jye?cx`=Sd_q{3V2qs>VnK?fqKeQw*o95Rx?|3aDT}%VD z6Bvlw$hveTl8BNmI(Mkd^P9O_(8^|kLy)k|dE)mZzRvd07)`%yb9kwLRyiNQaGoFA zJo?`6=`$(tHfeEp!qO&B*uU8()CuR;0Z&nz%zm)Z3hVbx)37PiJpD0#}fQw&W)|Gv&R)yZ#p^z?Ly9tgo!(t z@pwHkhs&^?BNCL}6&D~mH8N^Z}(`}nw4P~=; zRviY2s}?6XxveqN_Oc77i*x;Asjgu!>v7MTtR77s%ghR2DRo25HWk=_x{Fa79Vmp&b97i ziPrGO>^%ziYm#$+z6&N;1-%~ph^s9r2kJXI;!WI1^ni(BZg&{E4_IJAzR3$It?e|2 z8bdyf*Asb_N~+I~4iRVkmW4LzPuOwbxyQ>^MJO{{v{}-s1Ta*umo2=jue34)sKgxM zWNE?y$s1P|Z}v@~m=vUtuoyOihN@IDV*0y4_6T8fodc|tb+%`eKe=Da@T1WaUiI{^ z0wvZ?7#E9+RcTDDi+F>@J3~#@$ zgSY68bkKyaV8iDSDMEEbS!b|gn3EyMLFie0vT=5KC(OFVtJ4@?oy_TOr(%t-5F5+B z%vNhzeQUw~x_O?Grr$j?TRU$a@rS@qZ(3twmd>Q>V`;&9rMg&N@}oEz!c8D2@wtsj z8)W;m`{T4~GxxBV$TUBTKC=WNG?V1^J$~EMVgQyowF99Gstpq=`c5;*xtd^FtFRed~53Fgk5g4ezNJ+;xz4IU*O0~)?UE9or zXjz^$5zK}jPb_PYTfWX^o|OU@G5wTUx~nhKdzqYS>Af%TiS=64eKM>n(TH)pE zM3b8rh;%jO>F732&Rj!+Z1rw6MdOQj_aG7)HZOl;4A-W8oVgVN!ocM7#)s|p5l-J= zFUA&bz^l!2D<;W{)LW9p4N7(0!Wh|{FiD^0CNI@?dL7Xgk=pe4!5lZ-VGzC-(cbE- za3kv)0jTMcjf~j~7vk{@uSAY9{nK2^hIqX`gQfnV+wUt!;bXF8AAudx(Rz_^RGu3U z^f-(x85sP2hhgO9|05dkzw-_Wi+|Nh>rz2iOy}o}iGvI;e-j4(%Le&=j>5g4Wz}%k z0wH(wZz3c+xZR&QPsF(_lT30YBUQP}_6t1!EhY!YNp0whtAK?>Sr*v=W+Z>4O#~Po z`*CpF$5s@ZC#!fUVLiFZJVm_$U>oND43pzGqk3b2gIJ$0PD%>Zq*BKt2 znQbrgJ0X4^XWvTF@Rluek`Q;;9swN$czEk@qd9u$lXKk_73^E{6or2Kx|o?aIl@MZ zcY1^1b>^waIDEy2E4;UK$ABCO_+d^4Aw3Vly9HZbEt zL01U*>9p7J7%09kzi$wQq_vN!_yg%>34m0y;+{RUpYm8?)QGrmMF@-5uJuP?jRe~j zl9C}ald8*remMIy09+O4SSt)E$kI-?b!it4m@Sc9+-{Up5}%BVXepPkhSCS3e@V1J z^#4C*8eVC6UH=W$Xk4rqtZb?%vtOvA-grB77>MMdL?Dv4&Ri>-|5g`yN|!B7l4v5R z;_d=d&AhbBZ7tXPVlHR746EGz$amR@&l~RA^;&j}FIMrg*)xTLF!8y@`%V32ip+tA zyu)_-4ca@Pj9WgBTzXR_`~-0rC3atRVGc+vj#!Je3P{L2ko z;=4}o*f)D4ATFKzYZdjk9ZJRvJMi~AJ-EbKtH%?lMJ*`OVPMj4{UAI@e}Os5WE+=2^JNs#u8ER zJ`|4Mise@Nn>#m4{vsMN4u27iQCEOyr2RKUV`@e{OG)!<&>uSH!!8%h>dp(U1RZPi z?4J2o~qC2k}v-KCF z_&k~U-P7s(*WMG_JbH%ams2V*i1GEFlHl?;;nEU;KO`$#+I(xBjyD8gTrV<*n8U_K zzVPsWlgU9SXi8F2A+hg(CI{2WxW_Dy1CVmj6g8iMI) z5a#Mw8l`yWcmr~V>$kBeYZjs8mUJld%VRf%*!)H{Y*3kGh#um!Ui@1BcqV48L#(kp zEibqqH95{-cUCzo{Q1|nI?6^JlI545i?M1uS`rJoQ2jMGA6)(FO{N$%4t@|j38`AO z%6n%FFX$Woa-pY1xTI1oIivb_1>o(5@M^N#6!A5bxx1}H`#8tt5_yXxTX^_%Vu^>P zv>kkS`$tB=T4KA%W>}!j)K&G~c!V{_={BJ22EV!zMDYQ~ zFkWV4sy&TidkX-rPF4Km+EDk6wVFY_yf*!Kgw0Yjrz|KE1qAr~brb7}=fo=5Fw`Dg zn5v_5ON*IIP~xkT{@pHLHm$Cvr;~&t*KbsMsdz#JLtUF~o=j%^j1sL#$~;0+YCXx4 zU>2D7VId#;U8$|;&-LY_+tGoq;YPAtwz81BkW>XI<2qkL_#5WFZw|7PgFHHb5WBUp zx{MKi6oC)Sy8QI3L1}!t$oSf%pq#|`y&U8R)>1%W&dPuW|IQqCJbjs?Yot)SpWJ4? ztiNUinP>z#u;_rTF_&}`NQxF6C9gjBIo=CSsfZXz7BQ-WP z+jttTSDOD}RywhKB`P?#EPA?5j8i`9ZFk>rGj2EE9H{k|co1#8pnb>7>(LfR*So{HyTyp;3`P z+vitYkkwAJ>Y0*GDCOnZi=ZkQ<_f_3y&VeozxCw{A90!7MMv$umhT zHScp-k}+eh#I3#FlqNiukQ+28N~d;xkFF)9ZqUbiX(wzfp9@Bhp2hDqsoPKH$}BbY z2ylV_N(rLz(kUE`l)vXvg^_8Jf)qUlw_1zF4glCyZ7)h;UrIrVrV9EX~QP5DvAEoSC`?>)q zD%Ojdq+s0bNuA8H1iy2))6`N7orCMLCq2us$K%GWuDVpD-SOxe>y2xKSj$$6s(Dxh z&Dl(b4>(Pi-8Rv541<(w)*sS>W9z%(v%M%$xBPfg8qZ7N#$ZWs$w{;JckXoV3^7qB zjBv6-qLq`O+9bzKI(K_|@^Hv9xm2-V^1&2&xHGxzer36m3u!H4TLOHoA5cUS)OnUj7*0ew2Lh)IvOYJV|OP1F#KiF<_euK$4&jGmcKj zxqD;f|Kt*~i(BQ*n6rH%{nm#Y}CClx5Bb?)~2>6wQ)GBNCSH@_ozTzVu-vY`$|B0#*9aX5!}^`Q2C z&HzC!?2+k0>qVR~$mknFr7J_oYJ`Nw8B*i&nq=5BVRsuYi0+LnM|%$z13A!8&k>WN zd(Hvp+f6d}GB2NPDrhVb>N9nII(6bzj_+~SdE@ztS5|oQ8|1#WiPU>B>yxiL*H02;;hSJc`6BvSBm zz*g}Q;ozz)X#W=7^n{Ot5O*A>wMLRPq+BcOi;3j7pyn-eUaepE2}oQpdqu7TzireUL>46d3+OnC7<8hZ_m#Nl@WowNiyUWN2Y zNqwD6us&sbRSlmDZKzdr6AF>Oc&fgb1!sDYYd^){OB6`Vx(ZV3j-S5&>L-CzT;u3y z&AIykT&Aj75~Q6&l%z7$8oUYvFg*cbec-egb6-B#n;o2SK4FZmdEQKBg@y1(zJj2V4Lh)wAl>6gzih5{p`*(9r!0N(A2LrPsS$2 zO8ysnZypbI`@W6Wt+XJm_NZjbPE1*ojARShVkm17vKtJQO0s1gOHA39BKy8%-w9(d z7|Ym~$uPFT{N6*|b${;r^L;+w@AG?J&p*%m53d^LdhgeHoX2sT=XJ|`CU!MlWcwm8 zgR-k<1rO7*q3Iwm5EtSYd|Qisuz4*T8N7V4L6^HPfQR}o}@@sWvo%rXJqH$Pd_a+1a5u{4+!d{e?myC`pF z!(?ektv(DmaNZGW!~1OhAVSW#%~D0a%p<$Cor1YU=oCKX`GW^W%V#FP3eX7p zrfn;>7A3XJY&Y1zZ?5SZS0b#qRDlD3RVR5HK&QP+$#9Aq@xsb&jbGn=eQ?w*DbQ1B>cvL)Tds>^yFw%R zCO3lJ5>1uvA|!P_wWHKyuRXbR1OL!fGN|=-z*G8#E4_zr?@pw+ zaTx5S-p~u|lI3?g;7B=P$zUvnuki`hf$EDFf0>w+0=IRgiDW~>`JN`(_3tGng)!0I zh)B|WZ4N+SJbm;h+_JaVWS320gj$Zr8M)&%^)9yvlmCGF*B?9&5gg<+TEz}?J3&^eicl-kX zrKDlSev-^I2#bV}k-;E6>#$y2gz;%+X2r`ohUgu0j9O5#n`h6&gB-o9%R&mD;zy&D z>DkS;ONCP!?Wj>+>)8YOd{d6Z`_QT@7M50I-@qU2Z1PgAH&qi`ajn&EsV#M*pciK*_t#V}PG-Q^V^J7*(8rqgR@0zlKv2M*`dsAmmBP4clNl!a^OK&RS8AS7v zZbD1lpy6L7jE47o@1cc@`e<=~o_B?|KFNFzD$xqzo#u3gzia~;ROj2F5FOqAA*d#T zLiE|wEBBXMR!M7}&ZN$uWIa!+hUWpeCx%MMGps$-;*ws&&zvSu$aAA}-S)|q7w!fw z21=0I^I>Nvz6u0}D`7gDTI&=d^4_E#op*fy`A=Qq5l4dn&sEBf_HBvlJ$k!_oT<9z zp;qyCADx-*FmvD)h1go?&OHk4mC&%|$ZmImzxQZ7-jaG|DM7%18Cqc`t^+WrW065p z{MduE^Mq3OVxOp?7Ny?l+ZOG)>h|Fh6^;uXc?;pUjAbk(53?3F{vZ>s;@acoJO88; z1dO0Lyh8YIIcNRtV(YFQZG6wJ9n4y#8=N61XrPPB>0yd>5mPV+Z{AG%k3Wfncgg{IqRj?H0R{KHMx=q76s1sZw5D9>ph)Y(7a5@|X*tyMeji(3 z9&`T`e~)ofU+3tj$(maLbD+Oe`8#vq9_{sP0JH+1X;68U$=<(Ept}i`3Msc2V-+%u^Q0g>vje^*NO6P&3~98r4| z(;NuKSC_rZ1O3z+n(K;>!tKjo?$^^GI!qlV3h9xresdF8bXT|!<&TmZpB|{St;UMe2oolXsCbu->CrgUsQl^ z-yRikPgFk1ifY-2OL@VdVc_iXP{1%Fj%b%3_)SD;$hvg<{5~BJ^-pxb?HW7EfGd(c zv}NeatS&`w5WM;c^Bq3ur8ra_pUFlEpsvXWY^QYU9S7)u;Ni?yY_uk~<{k$cTUM`o z^$%z0#rO_4@2ux0`wf)zQvnahN8CZheIr32(k~*NQ`GTqP6Dzn@Ec)`p4*hXzL#+p zbF+I>pTN*XFFS~;-7ks8%d_jgt2uHv&b@E$kWEcfZM6M{8xn5XP;jOWNb;UhVV$6d z>Z+S?&Hq8b1=9LmcFYPn7?NGRum8jc0smw*0K#EaXSe&FV;%T0qvb^^f17(A9vAV#^3y|alvi+0X2%<`Z2a=mb%`e^a88}b}i z=^B9Es~;6FOPO5yU;6db0VCq3Bp%ZAchg?7e|>5H=8Lzg7WN&X}H z^&Q_-4xi&1+MQRSUdS*#DvvQhTmwj=rz!hkS?y<7eg%Z(#vHV>!+#o z%0#Z}0B2(;M1~a4+cQ=}+EunvR>Lz@-{mK@grlcN7RsNvCf_lwGNj8yj^|onjXj73 zkxD3w-A&)lqBUB;z|})n@>WE2F_tH{xn7V(AkT zeXsu9g_?>!&o0i3{PO~`W?Dazbt-bQp7k~mwRXhs<#ldTi>~c0f_-vNyTuRk9}_Mz zS(y=R_ZDfm!-rNq1q;fGwW#~vv7+r9Z(d!zk{(<%eAQevcAi!tE-bT#rMm+D-H?BH zT072n@Z=%qs2&@Y+gPcC@1L!`QUvK(PQvRN8cqQ!xr_HeQJ5(YD`xeY9v_{mRKUXq zUs?9-#@#!E_Zl1TJ-JeDKUFVR*2xA(GGuuL2SY@6O>yY>Ff&Qub?t}}pmp)PJ(7F3 zX9iCc5gJJsLCq)Y_VMaYU2GMJE(z+LzNY+N#b#AJ52wyvbk33qdl0FVd3oeT6s%&H zQ5%TQ2S11E6%Ai*4_#hUy6gN`Q(p=919*5-MB3)3(x!L66aN9%^^2263N3BWd?`kQ zr8JSbO~Ri`-eHH!4zTOC4|#d8W=v?)OT_%f`~NX^FMm8@mb8eN-$k5P&e@;~pkTz5 z6ek2}GeW%=m{*=mnC70icrLhREzN$mey)E5G{)nGS#ur$j64V4^ZYOn5E(Z`*g}up zG7a7qi2)i~0K&BIAmGXQT-VRx%bDXOTBX);HBuJtH>MqZA%^ShU|mknkd1j?Q@f7R z`MzuOb=?JDmG5OPj0IoXGe-5B~t~i}=d<4PgF$`fy?VtHA5t9bC*kM*R|Q z-oq7(E}FF}d{;w{jJ$eZLB>eCCjsjQXM;j9K+&B(mJmvAeeCp6oH?#S~2 z#-}&>-=^?KjYpCRd7A*_w`@Vatn6q{Z-ly15Ro5~KD|62S zl-L8;v|I=e=;e4*?-p&lL@eX!%cO;l(Mz-APKwGJw+H%R25 zewU$t#%%T`1hdMh{IzyzF2|#wiP_kh52RL}V<*6rw%n(!&JeuN`Pn|*qyTCevMgx) z{`30qbOM0ctD{AJu=mEQHR3v4Iskj$wsRgDP_7Vf;hh%k*4R~8eW=>0Hu}#f3OLy^ zEs0ow0s_3^2?5)}*E|i(rW!k_p)GCT^Y5(&Jj!S`&rvi^{uapP>kH(Oz_fj!%%N23 z50n4r0{kyrfZTu!P;$=&NF-MWs5Nop-<-u0zO}@i=4G+fUGW4TkU%Gxlr@v8$71^w6qb zoT9HVa7Tocz#)nOG(Zy#y7~G9Jzq*5?S>UCmol|?W~B0~cv^v`e--8r2YBku{85Zu zKM|I~>oRgwe&RBDY7N)Go-#EB)Oa(|uu2~3NvktaFaMq^|8LmpZGTIX>;GMv{P3=i z2+G7_=l{Qe9KIiry?+Gc##7dbgOOuj}%+NU<==kscp1adjspC@4}N*q5b1=!1~ zU7fC%RLqHxbcO-XQcnV46}hU(36o_vo)Q%qc+k!FuMT{dV=+n$!+arOqJg5Kv5wlD zNmIvOiI2^zEEI|`V=X$9PQ)6{W6=c{Rp_+4XV3F;W9~?Zm8wJ~HOwhR@LUPw|1C%} z_+6pM>ipIcmv~k))ir1s8X0HOJLy>1WBkyA#ZQ7&$_gRBGO}=eHDEhy8ohJksn6w! zh^=A5JW_~=st%~8S+c=44@QOO@^Bj3+ChFigV^#yxqg^2gMSqd9@Ep-pPMEd}h z1I%Dn&O0JT>6mPDsXL$SGi^*@hQS;avcf?wOcd$vhw?hvejc=41&H3-5r?tGSz^!R zpvg0~&?%SY2lPIluHK`xAbDUHU#668*m3-Ow|?uPY;_Z^<`4TiJez>yu;pVI=fx~Q zxp}2Le;6v;uEk&u5aq^uN<0<3k4%(z?i1yIX4u~@4?4f_dXr2ji(+`j9vY%yh)4sTk#^F5U_0y~@7k#ax*K^+>GLxmgcf=owC5{E3O;?n$tL%v6Pe!yV0E)5u?0BDE2o!H)n$Bpe^$cm>o5|g{k7T#Q2iF zl--t|V^J_IlBNUZkb4XOzIwiac>`EZLH{m_9}PTFU01Ty^ zWP+P={?vm1%*-F>ips=0h)()~vo5@%ojWtBOU(j5lMfWYSvHJKAZ1t_RZ_=iKI!v| zKAW>D%~bqME@v!0&=8?`;2){$|0s3;gZ=+JSAH05v^-Qh{dU00Vi$IQH=DK*C>f~! z_=`+G3?3O*DeqBMH#+Wr>pB?F;DZkS(%^;g3g|lj_;TW9KDx;+vSE+zCqsYh^{*m{ zdge_S(66PbP~|O994vsUcdn8=dEmjJfJ;UZIi@*!^c0oZzy%w98E`3>;bJT@VKvR) zL}RNLC?Kwolhn4zyHDp>AZ?ZxL+?*;&hG$n6nvM2@T8zD^!ku?9^e2jFQitz`=<}j zy3P4_8y=z`>ck)lj2~up7FyT;9Ursrx_k6a(_BgxsGB>a^dHsDO$Q2HRU^YhB}N5S zVR7-yZbflG3-8v-5`V6AJA$XEvtj@`uyiM)!K;K%C$rwXy{T$#&6=Ow!D)pSVYkR; zGX5%s-{G9O#UM!Qhb+Ezyw!zYnKx-6q1gQkk1dPp+9y3JH#1|jaL|iI|M~>UzWTWk!Lp|+v4|aE z7~v7z?W0L(kU?;Z9&@EPIT1_!H&t_&>3Pq*`(GE$MM(+gm{9&1#;-!~SI9+k#|oV& z9iM*`Nw6&gI?N;wZjEz}B(z2qrUsXZqla@cLf5-5WEjq8zhK}Nb%`m01J~m2ZLIBaqSNv~NY<6;rt$mU`LHNQOF$<}F zuf@n$Vx|{Ff@-1?1#=aYknF1A#JU&4{1a-yk00yi;%})q;M(J;0^b4!X9wUaKkRf~ zfSu0LEca`Yz87OVpzK_nNsm=8P zcDm=&J`e76x$dt?_Ei^hl6~wi@;1lVLyvL?m%}%TrLXx;RXoH#Od#Woo%;=mbxcKr zoPCW1y>8-}iASlz?=lpHh}*)$j73*Vhu7BoJREbxJxOaE*}!C ziwLRj0@%H}={=bcXcqNq-$vK%Xa6hbe%wL4{1#b(Z5P2IzW|l*(epAu-hIrzKsqM? zc>$LSJ)YRshFZ^T=+MZ0IM#iCy^`d;HZr9UIaRsxc}tXaaaz5&j8Upu-LJ&y~}tHqvjq&cnb=$jRIqwO&zcy0V~>9!Pepy&NyhA%2? zS1%lTeFo&c9LmTjsIPAaiPlGC6PA0-UT8#= zwWc&3)J1EF3>ZipDh2RiZNbl?;58#!fk}^MeeTS`^&zUnmaneS=@w}_a;380vy3il z(-?8AEjLvr@$(1aC45hzCr^yw#hzpka+cLd*h@uaGqr7GG zx@+Oqv#{tC^xPdIH%s(aQINI~vHJ#kY1h8GDN!puE(C-^cnm=LQN@nZ0B~>}mvAsI zo7Y#_NU^@45ma{F0z15bo;PHDB71L zfPWsDtatKen$oH+xrxc3b^v=R2T%hzr^$EpV(;ZGUNRNGc%|Xg@M!=@IP=iGJZW|M z*Fo4GW3NgrJxg`-sF>gGadH!pvbXlPihB1~&;Z_mr&+7rO|A-%w}&sjjJf6g3K;Dp zr2blhK}{1bU7-HO$(yPPRpe9Z$}(a3#{UpY0b4=a)g*z>ivqinNSeteHy6pzWKeWc zW`L?=3}EVkbnH7A^?Fjlw;U6>qaWq{f7|iPkRk`pk>#*#@6#4aa|}5bUUmupb+4KI zbyUWrwRs@}P2V8kpn^Dlog6ztO&P2zQ=hYt&<2gk4wgt2cu&}r zb^t|!AD2MeXxZEBB!A3yf<=dxg^c-l5zMsWC_9^l1V!9RWulR_7H0F(U;$#me{eOq zv9}9N58Q|5UO)R=D5olJPqLFgn7!cWc{c&|5Sgs@4&_oS=}3m85Yhl?L*J|$CQ8~t zt|u;*MY(C5^B+=RjGm;8AAlGJ+6>l=JPa|@zkd;$I@exC9QQC4E5ul{c%C~#uEodc z94Y1Y5Ee7P+}&C_g3gm0zhVkWBi>)YiEydDoA!wsaNqQ*po*)!i<9j|-$2xark1xl zWz(7B?37UY+u~byUxjFXj>AN`L{c>rq#9#-U=g~FhOB3^RY$lX$!PeO&sjsuB8zuV z#Q2CfIa>E19&rKJaHGL=YKSijk(nb64@0fpR>f2lVTPZcKRnwr>*Qz*zoNLCLzVq_ z$8{&hYsD*ew`M+U+iM>74fUFcNvhk8mgy!c>Y+61*a*CZ*-c987qiOSmho%p+Qdu1 zb1(TQ?1-eIpJlW}m?coN?3u=&-8s4W)KR0{kR>d&`npc^YJ^N&*vU}z_~{s z)Ki$+4b&mE3-S|&bfUGTZ=5;9Yw;8f(C2r#DI`E{=kjo=Wd{qX+Xyt2rnexa;%y>K z`IE`24+4~HKMRkGzdjkSuVrz zd33OdhPW)bVEw&Y39^eWHJ4&0 zbt%O03E|PS1C4e53D0wwZ_GZ=isf*))}yx#p}vJVOQE^*`ljSv^tJEqq55nfW_I&_ zxsS3NYe)QdA9S!$Z#f^{Oq44Zlnv$;)Uq>Wos10f)WpB=jg4hqaX7*l#RR`w_^qZu zLrv4-b09>r6--Px3bHxZFcHo(F-$C`AyjTstU}Oe7Rxm~ltw;6Yj1R{rFXqYdP!UH# zpDuK{oEw8WKLRk~r5v$ITc=?UcF%a?Jqg>rfJ$5yvn^1aV_DDU@b;LJ7@T8jieT?X z&!JWuyjtOGMLR5uvGdloJ4MERXKh`D_qwRlsG!}xisHvaP(Uw35VfYNy9HxrGRQ=5^7tlmSF=g)h zO_f4;Ve7>*eyj6{vikt%ZtGIYY+-3A{m6jJ)7b)-0zsPmMONC%Q|{0LVC9Z2N5L{G zB9m)YBiLwH%}_DxiL12#F^m(<oj+1lYH+T{aY9LBp# z!sK%KqxGM|h4p)IG6>-OW=sYjk938DW+L6Kf3DTp5n;r%nU$st z;DEbfe}NMJjC(vk*m)6Eqk7X!8vtbDd-g9t2RG}HiA(=xl0+h=Z&Zm(=l}@G>Cx{y z7Q*WQ{Rq791oav|rSt4$0Q34Udxf5hbsL+s)L4ZoSVFs} zCRL4oz4=JKBXo&g*J>ddeXoF9#vdo9f-HME%k(J(4)62hAX+RN!s5*bEoU;_@ zStsA;HuRKr;%jx+HJdvfJHR8Dbx82_n_PEeEAtA(2?oQ2VodLsMnk_uVR9wpYy6^uzCmHrLWplXn&vD=GjtbM{ICE1(s=ZqLi41DOU8Q zR66q7%oP=@ks+Ym?1zarA7{KYHpuM=*c7c!NqjeqzXUUkje|QOJK*WhnKltS!3YJ; zVbBT&Sl4T?(%+9>JEsW}9-_ZH8a-T(>`&oeI8UbpSOr2|Ge*kG1S>&0ro@Vc4|?}l z$gciMgYz>93-!I>A-4tR-R(Ll{W1fbKQ3A4RJFdpDi=>HayuK2LzQ*SQW19LD`-}E z_@FIiD(hClYrBz7arJhIwAu_j$idCP$Cf1z3_Z38(!;t?=e9|?p_ zXEpaaeR~X zKA_g?W@amLwLn9hOkKEAW3&2J!M5SWa>aqu4Gnxg-hPB;;}(;aE>S-RL-1D`h7#+k zLbQtzA)5KTc9~JM=>24zWtlqm`BGtlwelrPsm=**AO--IKxxA`mRPZ;H5JC4RN?`ZN zwf5MHQ@J}4>(@m_nLF%Jm{%~ZjQ8B?Zu}CHSxP&vB2mt2UPEh+y{-eRLPl8zzzI!% z0z%RIaM9V_FPGt5)>w+>Lm#nJVn8QjE0GmI8`N-lz~@t+5{*suC}SDnlf_7}3o3U} z`ONVj?xc~4r5x5bWsD39MR2i5rM5IrhE$oqst%+M_x}?QOlJO$2M+Gxfg;a-b=twZ zI6!b9+#A?!A-)$GRh=%@mpikrN^lT?)>wbzaaDc0T1W>Ru=x;jIt|xCC|Z&vr(%p& z%(O1zEz+bVUbvzTsO9*`efQ|ky#Q~d(L(MS;E$)6cv_N*o)RSHx8iVU>eJ>AW&tPu z!hWqEjSnm=-XMWDbcYe%>DkogN#L_h2+VyxFj=V~8Jk>^i@*a716=2|oK&`fjzD0s zN3NXP7nJ9vf~G$M%@B%$v93hs+^HsIOu?IfqdN9kJzEtu=oX z%uix_^c&QdK@FBQ_ocmVr!m0mhCix8(>f69BrZ>$Mf$ z!>o>lxyH?SXKF$XzaHbrQYwL-grFpzwK>OWWzbS@W!)=hzC(sLl%D~o<#p~I=4A`b z54jTQQWhejyXT>z566tm;ysqv2LO0e-cC04s+BdoaR1OXbD`JqSFHNSSZIBAkG1Jrt1({I>`k{UtOY@j`vqJaZpalLqVV%%N?v6y>-t$&m#V1y6G^%~~ zcI5^P_?$^qOkCZ7oOD3^B5Q#CEmy#Xcns(Zy0yP5x65I648IWm;tJ_>s@SuTBhM;< z9{?W=`P$@46;R&ky^TRW5*8uR6qy4Zm~I&FwPC8xdVnpf2Tc2}GQ@HMJ&U3!o*c%% zqwM1kF+dN@Pys&<9Oyq6;8}DnJp|VVbOs%NwMn9%R{rZAK;ILMGcwsYy3yF?WV-|G zRla`o9equt83eM&j->UB5lK)MF3x*tmIU;JM?j!(It|1 zJ(|TM#_gj8cJYSW{6Q0X%1D07Ei-5gJ1AF^0b=WI?cdf|#t~W99K@B@RRs2Lo_YO|l?<+1LM0PM>n|2p73SEC0 ztsb*MIz5d(0G0`{n|Z%dDW5&i+Jqad60?76oldm_6gA$U{o2H}(OIR{602nF8K+kg z)vA@`jklPFls2y`J8LlziP@y5w%}copK7Vy6s_6#D_~`1$l2kbJ5Y;tSoB&M{zNOX zvmJj=A8b!rv9kt<14BA8aS)D)p!j?Qr7+;qJfGqOJAD?tR8dTq-p~F*%3X*Bj+=`J zQ)^y;+=I8Xqo*{Nisp7w=j=cex^{`H%?6=XKf?IV4EjoT&?elR(d+$^K=cSar4Zk) zYGE9P7r`FTa?I~wYJixWlFR%Zhr8r8mU4q-)6o% zhX-taH*^Qe)KzVg0=?b>p&S+IpgWJ+0{fNuJ)E$o_Yvp94;NDp>$r?U$_}!-whyh{ zhuN3SNj@oYdAmk2y3rfx`Lts&);J~jd!)-IEKt(b8g+YaJ19FH>padpOud`;P@C;E zc4a(dUUduMKpK*L<8VgZuC<;8&baniqk_XewnXOAg70>*p={Cw9!`F3olXXLssP!) zC3f<)x0vUU}#4oXwGfPn@1T zbRviH+8<)_Z5!>rkyT1A-wSQu*%>NSCVrW!$WA$LuTm5<~H2p@mCh? z7@@H3L_1_)(YEJGb%%hkbKcF7XZp02wG1^Pi=$%Je6LeE5gvq@*IxTV% z-symvMNrA(`0bIKRRyiav4a|vUD1o~u^Ie1>M@kM;49MKbQqvByo-UJ<1zRZk7?Ho zYEvvId<;G@?e{b@b{jW{ylUjl0I_=rk&Dx4Gm0+IK2+lHLL?0KCR1?c*MT21Q%Eej z|CD5jt!Q+U-UR)@QVV$af%sotN2Sls#y@d_(%(I$;l$lq{fx^~`gp78A{gaRBy;rS z(=RiWrDNTF2wYBnI|=ae!=AE;vspiz=qk=P>aeQ{eoA_fv~`xmq!f=?7K^A*+xEKbQ^~wz zK(Z}_Za3g)ov#R$!>?Hc7dS@5T7Vn&x^;|B-3#H~!4G+9B zX)GrE!)tKOcy+sX(W1RMAs}xI+`dFgZozNM8Yv!O8YvlxrodCY3dc*L?OE1 zTavyYnwD6u0r)Uf5Rp-_uteKjcqJH)>5wbi0!f+lyz8fZ#;ygzlOA;_dbI4`53qoa zG@$M+4ms~AxyhjLms=iXF6e>&K6*4*)=9X?4p88h5#VPpEOV~n#wfHyRaL}p~ zD~{6qO4b)CAj$4Rj;D8Yz*AB^LnT-W3h7J>neE0O5tW2TzP1biZk~mmJ@J z5n?y0SamNDN3d!EB!p@x<0ku4H+DPYF1mEGfY1*YRj?u_^J*v0fLSTQu7RGlgdLL| zBW9+pX>LJ4h5k}aj;Y)6EF(a)X7OEOB1g#?35HEupr!7a0I373hk+jl4lEo8R~i5& z!$UxY2yA~L__7xvI66Rk`1;ovtY8;N{sOR7mvjT~@wvb24YQsB+db;YRMOh?o#6nh znS2v;)*xAxka+%krVTu*RiwZzr*%7a3burmv(O@>4msaGrtq5t!BiMRZyGPO7`VNQ z{t^x@Aj<)2e81#?;qDKCp0UvzCwI;hc=)bl7LrFu|H}wjA@J!Dd7s_vDlNqBn1^=E z_D(j5SA1Jt_Ly>OhBjG4Irz`03&_WV+n^8oGi^v69pwhigmOCt#Z=hY7#ssh7VZN}jKrsFBMc;rHk$dKf3i?f&urk}*6X)o^#&(zSkZ?5a1~aikD?OcdVV>a90lQ32)HCuX-e_fri$gU*J?W*#NXwm*>4E2-l$wQZ zC%!7BC+z~n{KTzjD`16jW3N-pE6io#GR2DHf(6;jf~1N_L9PJLs99>K4q}k|=RlYx zJrXtlIoqDh0WlIBSnQt+3-$seRF!c+@3_oHqbxl2HXF)fnggOxx!@%n)Ov3k05y*I zWX;Y-pgH=az*|0V?(c0&<5o|4=%!Bis{!f1ZF(JSxgv)NjT4L69DhJ=ML0ZngWg;) zB_-gNyFSXpIuTD7A|oV?QqH%;g5(%WO9&5SzNrCMZ#l5B zt%PwEGU?2`DrSxdB}4YCcHWZRNr_yL=#I6w{lt3k2qE%~^l+6bXg#x=t9ZMV1&z72 zlcdyIAZI$n9CHjH0_J?g-M@&2ZxdymIXk^7OE>SvN_70t5++wH7wgNeW#2;y0TaCC zbesR;>DI~mwp5ErgI#LKPcESK0+|a?r70hJWpiyd^@n-6Q{x7oxQrRB(Qq6 z%nV1Ou8pp)%=E7iMrNFJ;mulolZf{YTvk#dK4U53Ee$}+-{qj^L&%u9g9W18;_=L& zyKr~2WBx_q^^qSfyRpRqFPMcKP;E9vix1{RK@u4*6(X+vhLX_6hpF1kN6+8T@IJSC zYHF*)u*h$_I~ChGX~@Q46gxEt$_$-DRqE?lY&8xNBK_cUKSCtUjgX%%6)qDV1Y7lu(~7~V^!D~1s2s>O<`yP=z&O|ej4{s#!H}iKtDM6*{*u$d6w+6 z0_UjcRrgXvm3`OjwEd*{oK0I|+YKYNJJ7GS?d^fk5+4RXyg>M4_UHjCPyfVleQQ%x zN3I4XD$$BZnITv!CBPLoA>K>0Knsb`q4SG~0bNvA(8f@N^>h(JFr+F66S~+eb60%O zdZpc?rzg^!BMU|<9X{FGhcdABD7KTU@IvRmWhOH~&whv_L|{c?yjh^9P5CL605@Q& z(8X*!1FS%MlJOIe`0UzYw{HR4AlVE!^20*49<2$pMJQrv5wDU5K#73zIG*E{F{de7 z<0wlXUgz0_*2r09yf>tAt)SD5lV}!_3@$9$O zD?YAqhftMLcoSly4p_$Ue$}!@M)6MzdD8Z62X~KfneTxHN;2DM zJ3W)~oI00qcw#cb64H9^#CkM*ShdH-nL{u)cX71adNC&UF?A5tO~EuWeQ+KEyjbmE zqr<3_S&Bq!t$@6B2Ia*;6lnA`%78PndjXAOTQYamW_}40f-qlg818>gCdzm2TGP5% z+yUzQqhEghq;@4Zx=m##s2mFt?BnkqPJHwHHK0_HRxES$J1;_udUbL>c=24NI!Z8{ z?lYD?3_40)6D7Z_!-gd%B0e7L-QF?@WV~J91IuUDtNai?>s@H9>bm5kc|Gwv7Qw>{ z?>dz`=Az7T_SEe_XX4B=b-<#r6g^`^UJd%KPj|M2&(q77oW4Roaf(O_92}q=bX@ym zF=IstUkOzEcg7F$0s-D#?pGk4iR|cXV$=ISE)z_fVi8^$GCM`G!QSp_-EVEmtWp8D z#LS`JJqw%QT^wl_=h^^WD6HI`3@G1zy**qNNbUKiBd^x3+3pBA~U`VTq`($6m`IEoYi{HH>Uzs+W-qXLX7+k|Gw3S6Xp;Gm3)!!7) zq1IFf&CSh$VUJKMWSc{u@j29YC-+2`4cFSHwS$u0Y~%;0qI+N~p5`x#gA#pot7BEM zrm5g?r>sCXR?==H^$tr$2yH+~gSTkKll1`DH4nQ05-wwrMxv>@n2N%L*&|VSedT># z$oe`AWg66V%<0{33qT+A2|IPbn1N@j_d_7-0*f}Yy7UjR;SC@*MAfD!rx0H;MZ^Pb zh8w7y5e#tZo+eVOpoyuMDbPx2{q{Csq}ZLTLg6Q!-aWSmR1JpBwSDzLZi_cnVAY`U zB#InT!h6BAE3HtSR5Y0@9b$0;>uj&G#UOr{H+2*u7u4GMGAR^`{e5_YmAS4Hy()q?JamVBMDySXNFU?!@@sh+RLYTW&maG@5+>T8C zMn6tGA}N2pXVLpl%VD6O&0%9o2~po(cn{5in3R-9ZT5chY(;$Z zKhiLg>zA2n^;n_gvqy%YlXCeO=#Dk0?U z1Z-b3#s#XmI!8;HL$*@Ly#rhmj@N#$`&R{ma>};L7N9L&FdPH~2!j@r)-F+p|4M*B z@p0eu;GWAamr0PS%47kTI2vXRH#lBL9eIsPseHFkFe@PLYEznfb3ku<+jRDbj2W@W z%sXPv`ib{YKRwygVVMRzh13zEvmT644*7GEn?kU}5x&bih5?=*)n#`;&ZbLtL|+`* zd@a7be5-8vsdzdWdK9|fow4xB)Mqzkn*5-Gj5WECiMjhI@S#iF-0EdfRok`OEngZ2 zK%)YbvUIUaZI3@^UGSb5MRrcKwDzK-6r-P)Q;$ymlqE!p`?&0oU@8>&x>9t3xXU6R zv-vxjjL6)V%h$|X+}34mgBeiTc{} z+;2v)b|bOzE?W8@YxK%jv4p9t#x%h@t6~q0fD=9XxBw7`QvisCY9f}(W->y*fxORm zHYtnF(xU@aOJN6%uCkNbgXhe}xFv=9eEMJSi4|=(f6{yv-w~tFZ=DR`gvGGQ)1;Fa*}N# zaKi#)D@L9MS$3Ka#LrW-TKCAbt{fIMQ3GB9B-%+nVTB=RV0wNbIxkX;Px@L8RG z`J$nQEMJ@>=%%lr31X8R=ERuZ>mzOgz9@sa!SZg`s7&jg!;UYL3F*66kf{FMYv@U` zuxgp1!@4kZj~N{+tcEpkfLcwQi4};>Ul#1<(3XAuKE9VFD}>(M$Q^aN6+UzwX&PcF zW4@VY^Mq7y^_$&MX42!EDua3fu7q9{8IaeJ|FtQ$DibbOBE|XB>ZpFr`rHqyVhf-u zepwXkoFo-NG-hA21Q`TzO&%`8-u60+=B_RAFGMjBbAR+;u-np{EeTm58&O2rEf7NJu7>w!teijZ4&Whp-dM2wjWp4_sX z3nqg^N3B1R2SfTk^1!-c9k&p&{_XB3n#+<4-yS9?N7-H#`W5cUY6TRf7UlqTm}S1| z$u79HV>doMD!nQW?b$goC=nSLI$#QF#r9m)@_N*KKIuD$_RW>I&nM;%0iKp`)lM6` zcbwW}<`1Eyfw})>=>Hg9-~&BpqKgibyAq$L`xRaP6BA@dlXCSQvvJ_SG&P`C>}?+u z_ZGn+|J(gmOA~1pvHLijb9(@>qu&iIwMAArfX(R5`w(DxI*VzU0g_k=_K{o3E;j;hff?QY# zy?C_SbPj0J{?DUWdk_|42b96=|IO&DJ$Z!upVgy3cYGuG*N1P6fQF6x+cjz%Scy0u zv$?R+XZ+){XFWM9KfiXMTxw560e{ve!pJ8;%WQ8|DSzW*8$#*wX2-v81vd6=D@07MSv%;5b^$DJ*#wd0hVWzcl+_{ zYWr)zqTx%5Y%}gdkl_7G`{4Eitj7)1#FD$`{uuJ(kHEWL!a9lHxGn6nWnM)a--e03 zhXj|+FYn(=YQIFr%{zd{;Qm>X_mLmI(z7YJv`VIqtj1x&#{M|34}raQbW|G%NDAX} zNaN-Uoab`ALBWZh;9DZLikG||R^Gu%pAP&nXtmt+zz{*|t?`za&e@y8da1ikq6J_l zvL`|p)RV(BFXbz|qEyQRcEjsP%QO-h#_%#OZB0diq}x{;e%yp3lZU{&O2dYb^jO+8 zrOldN^#YA`e6z}S@di;oXOY7KTO?Kki4DPs?^5(IkXt(e8%sDGgda@uRsNbfH$o;L2! zt&Ga7f?l<$@RCe#vD5271W0}o4KQw;G7%z7jhBR(X1Au}%VE}4MHdTyJK>NJL78bI z2+1kimQG7dpmJq5*#c_~qC1`#+oHv^8VUB=e&t?vnxb6Cu8Mot=m<1k*Gi_)S?PMZ zJAZTWjzl6ed&4Jhji~QMuEFBLI|hyHon6e1l>*d6w@MKZPm7eo6M=Y|9Gie2FVTsX zR-o-qzSk!@5Zi*H_v4DTwlXQ*xv3Ew$$-$;c@M$B@^rBgk7IZvF^=32h{XYY;fXAWRZhpl46_mPl|#$hS+sUHPv~mH}U)T#GL6Qt6ujYxXo8 zg$url?F@uwF+$T#BcKCux{9?_lcDx-^D0#-cH{7A6F;B}qhWnmN00bl##w*%*C)R6 zh?DeER^$EyDRfx~Fa2TO-c@@4(mcEPJOp>}FK<$wC|On`Z;(r?=-6w#znaB6D*q_TN9m*n55V`SI>lGoId(KLW0tX!BPyg5dB>*!C>3jXOpc&Q<`Q)l5d$9k!@2$!)fa&KIW9vj_^i3%YrrqY< zHELJ1V#yD)sO*O7uK20Orfm-AxvTX~>$Nv-=JqLz9qXZ*;w8eoiDn5SSt{k478~bv zryQ5#TJ6gr@aRu=n#dowL>w;rhLh@_h`Xs6PuxM#iT z5!WAIKSk)N)1x<+mhpw!?ADkGqO?a^)3R>0h2liCED|c6b7VtP*7wJJaN|u7&=bb& z@lI_)X>qX*?Zd4_l|ao|iiro{%7**=f`UlAaFMh|BqCC%Z>-S5C+-cP?;-g1gV=)u zL!bv?%&$^VQrTuM}H?w_q>9N2v-XturwIS1@F2S3S_2s7g|47g)$$@Mp`& z{>0;1?4`|*asg4k-JbAIFj8_fS0GeTD+=SA_3uJ z!J?reQ()opDkHVGFy{1TbYlas8cXhWK2~(zD4uYKzhZhB0~RIuMTG%9zopW*IO_`+ z0)aw5V0*TEiK#pUC5kg?@+VbZ+4Yb-)3f`8L=?XN8W*s=$hUkG#G}~RWDL(+OT~79 zM*tg5qgADq*BIn8pDe$ye7w9xN2A8btu}O9Q)}Q0Wh3%}62Mk_tJj(xv&0BY_4M8t zs~%Fs*4$QvyE7~^OYqY-J0X0iY(`!lfSjLr;G6-_D|bhV43r+@xYQ3 z@b!VB<^4NBeN3Y&upA~|(bfX0C@`|X2nq=F5_CH)EOwEvqLbl^jO^L)zTnUQUv=Ld z)l~NV%Y2LRBf!ks2V7 zs30vNks2V7paen-frJ2|xp%{KP??jHgHN@?M?w zYV-+9e)l9ZX1z5JHR9LP<|d|xSB_ydkD@1@53~`MUGegWc_)UUYlY2DUW(Ho+aGYF zC!^1BI5&0KPIKEYE+qVT6427W)2tA4%|BLtM9kK;%VCC_L@mIjGq@CZ#D;bRff@G( z$}<4R!zMXkZKjNEySRY!$)o?d7`M*6|CyKiGk=#n-GMRsP3OPoAJ|&yGTRLa{m;Q=BcgizBehPmVL-(QoRN>k%YR0V%CjER$VYh^7;F$eaN+aNYY(H|2am*AQY zk&wLr8?*9#AV>$hMq}2ScuHV-P|L8L4;%d;qcs;h7!2g=TUrRrakSIZO!i$1DsG|G z43;PfE+FU(!Iv)2eJciGIxiA|r zUrP7Ert!zb5i?w$+=&<0DW)5?UfHdebYyNC9p-5gf5QZ zgO{lGF4WhBt)Q`M6qK`~mgkpmD(la({d?cHY5OvEIZmF&fYpYcBI`m+T4*tiId(RX zTL!q5GIuhX{q9&ITi@314v<@w=ouZV$sf;qUo=zp#%G^?kO59LB=L$1tw?hA<6p^n z-A9e-A~lz#Cf<}9p1eqWeHMFnDdR(L-a=PO%ZZJfl;hs9S9f5cM}&QG6~Z9|NjQBM z6?ict>Faqa9ua^jT^N*@Lo&)?6F?wDZnF}hWpc>ptZYI1P0yEqrQgl;&@pnNjki2H zmTfEL| z8jVmR;eJ{+$@h}T;ET-o@IU(898iA&;75Qz(1~uBar13V6&DV&%!!^#O8aT(p5j&* zNBk9Y{Yxxm>Zg41EM~wDP4a6XY0l zQd8j`Ryn}#NCZvq$c>5R?dKQRsj4sfysCz06`UqikAR5R9isxr>QT-%HsEmmREhZ7FEw(3O~y!U@}Ku z@J&G2L^e)^Nc$uTo6xhn23YOr)Imx3$(chSEEsgb7j&KrEjAAx1gwLh+8CrCsKG4- zUPJdK@DwYW_0&nS))H`Tz+n^^U8KGgA_C2Pq8}R@QmXPHm6@cgIc^D8!}$jf8`vw$ zbdx?rPY;{y5D$Pm$gNdiYeg!ri-E$lE4`>68i{4@I|nHhF~n0s-;Boha{GD1Z2`Za z3-C8605b4ih}98!_W8*-&2Z0 z$6J1eZFTohWJ^M875^~qO69kp)_2?VJ^c7L;I-w{*g|3%@qq9&*!Nvxr^~*EJou-D z9P~f5JGHN^aKCk2=)TO8&CdXwJ?AsO1^c$2hytG2BFR^k{wCrhqP8^15A4W%`k!a{ zOoL7HP6PR~h2F1AWj}_rjxF)-bb5|0qU78d6r;0f<-YUA%Xd0Ke!-m<3pE+erpymo zmovUKt$68-kUYc;6E?(hJDWP9z>$dzJIYT=jc2;{o$@l;cblY<{^r{DZy$=CIGTw> z)S8QnQ>Kr11Ro1>VMMb~sJ+wxd$Wwz(L;XUFiQIVf68)%wpn)c9>3!R7E7ejT`Hb+ zFvP2W^ULZRt5nEZ#WSiBAvaiaXLCb*cso|Co}MyZ(lF1s-FJ zCa($`+|Gj{6FyQwgLcxsrkV6SRK*+pyLM%THQwG&$G_>oW4izy*Z?-&=QjK4&YA*# zMMs5L3+}{JBI|3z-bLU&yFsP+QzC&#i0YaO;x;L~J`Co>NQ+sol`-5<_^8CYI<2%^ zpo>G=9cl5!1@(>>8}-zg6RwQt5RBKyvNh$|QgDwaCXz!onn?={Dl;z^3rXj$wYowj zHgnbLXJGbu%py+Sl`H$nH>Dh`Dc!xfos~342NlkW8pN@qcTHCX7vMy=a>CEHFgKv` zW9MqxibcKdgi@XT=+}ygkx%18TiL6C3>WX83IELq&*jB^e&secC+X;xZ*);M1d{GY zImG|;d94L&V@1Em2tPNiDU&nodicG@iUBRf4O`+E(X^^C&C0<1HbS0B``c|mGwDDd z`dMWTQH*{p#jZoS?le96ZTe5k%b-(bt2Psf>ae7T7J1l52a?2I!Yxbh0> z=-|Pvglf|}Th$@}8VkAKo*@;}z=-d5s(49Lq1W(h0Kv5C|2hMCUHSO(-ux_0HwG7W z$uENMdTs}snUuRpQ-<#+1D=`A0W8`F>s10Iq1VV7$n$bFrX_3c`Mzl8UpynVw6UwI zXx0bIvfMCan#K5VA;rOs;RYJ4oU&^HyuX~XEGnpDB)|YyQw2>fL4oP=UQ?K}6?H&y zS^$B{+gRE4OSVqQ^BM3UOf#)fpMDx<2Vx!ENWJ29$13YAXKB#CjA(8^D>9-NpBz)w zJbq6Szy5%J$;;_GdDWo&%}m3G(oV|@79>De>>osI=wOBp2=OKPF1eT3IUH%ASImA0 z!ulG0RPaG*7|@gGzjT}sH#y!k4>;}Hif%ZxB`<;helr#xI&4eG|L^4`b|XL2%?0cyH7+e< z37BJr?e_}$?dw}z!wL*8Q~$TJa+f@$zSi7Mcg;nD?--7~$z8B1u^RVi--@3$>jjdj z0>}Lemv*RfzE1RZxoL-Bh#b;i{EnQmyDKxjnyxin5o=i z=Y#=DQK5&8js17dcjtvO`{liimjSf;s~9Q^2^icO;N`mvf{r76^AqplOD7wNkY!u7 zRh8=&^Rep{s+rurY>o1n?gyoPJ~uVV>SBVG$_^^}ul?B&`OTE=O`s9wK< zWLoF1nloNs?WUGe$`}!kq6w)1;wZPR0)BuAw?qDD3=)O6o3Z5ABk>t^gEyOIjocVU ziBK}zbJsAb#Xp(S1YWXzugPh#p?aJJADg{se}+zj8+C6q;C9zUgqlg3W<;Gc>d;x} zd<4`Lc|qkg26jl^M+n|<3du0NlV;|-17Y=254Bo0Zy3;s9Rzn*7^7%>9$;&3 z2g?gWw9OpQUqC%Gn!nWl>F?60Yz=b48PdAF-0t~q@w9pt2DMeVVqn}2Iqlp<=W zaGZ4q4m$Mv>e)mZP+7~3!K!3I(Iqhr7AR<`U5mZvg*Npt{uC~XM(PgQ9^gRBOFO_E z+0N+M$4vSLtlI2)+C)+uHa&;rMhN65>?> zfqausLgAO5AlYgoXE;kw?;nU_&R)N&N5Y;a1IePczC7x}_y2C63f)%*prcIqciDCh zv~@NX^P_b2YwiI9Tx;8hZ(!{qSAH>a-w!9ozxzJ^w+@kiyEs5@LomTV?tH(eA`2-H zb7aJu{GV}PoD;*+3i04SOnKlMd~l@ezhwf)B>7}0U}u!1#u~UXz-#JA_WNO+`B=0Y zug~|c_45;g{5HY@%!_a+S^t zE}lTSx>J>gYs7$r$X9$b6m!43FVc5)EyS!x6WgMZSq0W0){>w7Jts_51BlpE9mI3p zQ;FZhJX!W<~fIo2=q3Xb5$!QUM7erGK3HxF69U^`i5&9ezn0Sdps zxc+IS7n46j@@Fg@8V^}f3h;KPOUgdo>Rqr&2Afsx!KdFx%=9`jD6ViVbMAPCRas-m z>*E}gFG0BzVw8PiXYEQl)dQ~JtBe*s>eoEc2z3iD)~q1NCAod3!6-2RAR}0JavDPy zza|d`S}<)!1}!Hla8Vfr6mN2$4d?@g-w--KcBf;rbi!4~du_bLVAt}(T-Th#8<7zW zuGQ+*q3U&;Du!F)# z{kPs;?}|gsty5ZQIh42sYih*rKE{gGK`JA^KE4J2Ql1nlLdFQucn{pyuRF(oA`~;`j=0h1?eX zlk9CJp&U;>sS+a3hRDmN1evv3tWNxSCk_#Q{PKFtdZFWNx|WF)+~G#XLVtt>j=SRQ zwd-8djBzSZq9s+O)mj1MH-(=u`cPfKbtwCE&+E_Pm_bT}H?9KK?z^dhdvR{xNuwB^ ztDbq{cm~Z=#QCl)Z)|5pJjzsZC`Y`!zEzCjcu6wasfw`V_6*x#FK3{kPShw(YOk!( zJl-D_+T*9&?DAlxvbdif&?bk9X&{O!X-{ zpOsoQH!de`K8Hg~XI+IHNG;V>uZr6wc2YmqYPK9_re-u|(m(NjhP?#+ve@x?qDwQn z;7-Gm+jHvm_~cF|hq1&W5wf12jB!f~HLB`d?;a6(F?I?*Tli#np*YFO%OH^L`mBSy zO#hT|o_=%92@ggc{soHeTG;;35`Vn;=_vdP7)(XF#3eANK8d8LN8Do=}Cx~>`E z?Av|nj=m>2^t60gUQhYBI$WdbDZtvpX&N4P6}<=*zOYM0KijP4ZS|-_3cdI$^IqmK zj_;j&_t&u@N4hJ2_W3WGMbZ-saZW7Low3#?qipLu9msVFl(?6VVDZ=eUbzuUN;=;R z>m8TRoRhZ;b_;#?8x$gdy07^-qKJ{OGp9?uTo}t%R`^IHg`7iHk~ce@p%FnlU7ft> zv)jLRHe{?jD3PukX$v;@RDh;wVV>B=A>Q>;!!YVDdyRVKv!|x#$Narhf^v@W3p6T; z+QbuX30Ss!x zEGg?a89!V4p^Y*fKxWVjDM3+O<4`_qV~vj*VR?XROB)g;8iG-!;X#(a0ZWygya z*0@;`!45$8JWlzv*3|UxPKiT=xt#QYoZFz-A`#!Awzq(Bp+4+8n7JUbTpluL+ZY4v zSQP_}kY>fl(Lff7!}~G|NS{XB86Nev|A3&QfAXitFPEs7-{!;RWl^Sx-L`M8#SeLN zq0cO|Te^Vc5gcA6n`V-B4{j>;I|&o9QS|99p?TX4|GrKRP_AsDFWsx+IdB(U_gJrp zCXemuBP9JNu!~bXX8r#65P&~h57;w;e}prPHUPHVzn@8W0xGbQti~~Hk%Vu%xPU** z>}*LmpaX$+{c6ALQsyO=_IZhe+J(`}PK6RBz!0dVLnn*gGI%z99PLSn8} zD}VJow_<_Mr^ss3VT@c<k_kFucM<_rr1x?d|LRH37du$mK(YTE|U@xST-D=3}Q1cvf>H_iY*8ygCo`XGA4;w13(FYfa8;Jv2Q~l%8 zh6cy8AlN<*|LacMyQz(64t4OaPS319-@2+zfcPF5U+A|1ba(#3K<sE<1_ZY8VQ~7qP~f7%bh^gh@AATRvF_F>MAQAR{Pxad%9MWT66_o zI?%euUCT&N9^Pk|p~CuOs{XWl(0Q3UwYy|Z4BON;zCN@=XVW{8GaR;a%_5qhVqaRl z)?I_t_JV5}7b)gpQmbn>YQALXs>FJ%Xoy`*P^1`WWDeJTDaB78eOF1S zkDF!(N$DzlUDy@(+S3X9Ym0Pbg`O7KR%b~ERK|ZNf{o|b46$vVFMa3-dxyqpN4k1n zk*ZsXKL0$-<;2E|b{;hb5Nw&z|Z%unWL7Stwj(3g@7 zpW3wjmE>ZP=SlyAv>KMQVQNYnaO+WDy7kT0`@DP0^DC@2<@ivqd!jad!}APBcBXPl zLr^K*5T%ds+qiwhVj6HI4!pe^q^rSu3g*zVgAjIl@6BBLXtX2cK9xI#{Z z(JkKJcEl>l(HZu+i=T(uEZ`R}GCYqO5AO{>R4QT{pV7E1OoI*Qs+D`sJZdQFnGF}{ zic@kVid8bMfYc`L;T~wJ=h!mVCR!eYwTEmDv)=9vw7iyAT73N3*h#OW&yL^s&|MPl z(+KtOdhoKfC0enMW^W72tdO>a=gC-PN={P7>U$Ml(dKd`cg^^;syK^-qf^iM!*rrn zd{@?B)Q(S9(49E7^0ob#FFE}YC2`g+5eGf)jag0yeywM$2KPG-lwL*7xcvrqN7r$+ z|K&#kl~#`f+B=tAzECTrI;VpOF-FJ-0pU%CR$CYrjt$V>`=`#ffavU$>w@cmOQEPXPR#>9nkQ)6G5tc9g|No zZ>7_Y<#*1$B@?WqU>$oL{OM@BRhYt%`cp;$t7y=!N4Adpf%eeZYzu5W5C#b95EoK_ zDo30m>T=QYg(jy$8Ed{rVw4kA;)=u%(g^gUl%Pk-KFeUs7mJB5G z2E;#>^;H_{59V~PCAk&#uN_HFJTZ(n8UKy*Qmvi1cvIw+J8Ha>@bNPieG^4@12&A} zX~Ws4f~W%$gj+gk9lN+Y*8&rKUCea%dMAZG>6A)-&2|4nzOZs?1yv-Q9Hb=xb`Raj zbdzUSwlf`PS*H?T#byJ$cq=Ixy>H2pd%b~~@u%Ve-cXwx_gI6@HDb90XVqwu_##mE zVx}6$ad6Ez)Wsn=mp3-)vDj$387Vg7q$S7FEVjAa?4L zX$hCHSA$clCb;Ue^2Y9@{I?GN@#eQSYBu`f-j~exX zpb3yOm<^IvMl}V4DwT-K%4g;6^thgxzVvZe0MCO5i&<^aM{Zhyn98_-OY&tqv*w=O z@m&td4Th&=Of{qjg7hjt9FFi4^}il~ZlB7s73X>`JKZIeNF4$Po&}9_puG&v5l0hY za$gLqep8!c0)%0&R}=>_pvl#RjkWEvs+6&%C2O|BMsOctZvD}_5mAfy;N!{7lb!GQ zER=?KRQ)=~qXCxIp>9LXD|i&rpFZ)m++$)%*Aj&={s<@~r{%KeZ~N!Q33E2ubN;gr z);G%u3BzSJ)^#;8F%2V3_0s8d|8l0oJclv#$ANe|3%@zb@VW}-a~&nNuCFx4R3bVO zF*oEN=XLZ>_=K!ja3)GY<&UN+Sfk(>38PE;T?~bVqM%vef;d|Z6-;O%lKiskmeT;P zx<+Ms57Dy+j-Hjz86luXKB*aQRGj|CU~ibh#agPdSj)8MO3GUyR_7n(FB@#853X>1 z^{Vx`aVtB%-j@;*LDjSz0RAf!7q{gVi*R7TG*m)%Cw-o;yn0`_&D}omS_=0B1PBD? zsHM*h>*yOhxiHqcLE~c~bu(KuEcDj0lQ=?MqP{&5BNcHuumM=KuXMK} zJHn;U82iEHl*&U_7f*^v?)?+NMUs=b zc$?^n?MVat<;`jZL)dd{b8oHNnbQqM$!INwI__T`FVBy0=iaqKu8MN4U3oziL;gsF zuSSwnWAPFd!k$a*aDL=miA3C>l(md+uGrW>^5Ze!vjD*_+O@pz`hZ}3RVvFy##aTl z3Tf2!o*n(8iY)*}S}rnw%m5lgd|Drt-|cA^zenEJO=PoXN5@y~GN^4)*<*bhivnO6 zUEx#01DORt=5yzYTk#dwXKoLjIb>k}l{4w1(#J97970?_m7Q?r)XmM1f_{~V6Zn)G z<{KixsEpWt=`^fHiD=iXW7ppK^oSpf+qSray9zE zkSH+)#v=w(tU-F4Q(ROP20_b>a|w)VgTHmUWL*_7r&9qlXFB-Nq&HX6eBOkLel6~E zD-&G~7}KJjA{+L^eS(Xpl06Q1XmDf{=Rj^7c7ZB&V{-^aRO=F=ua2>bpAH@xbzs;% zS=x{V27s~OkJ_e*=H+>4UDHt=NxpB;k)URh+AMebb6&psKZ@$W6pxN#`O2s2qoMu6 zEubFB6jecPz0GPR$734U8#tW*mmIHu=R^&$g$>A5%f>dH*@yWff7a|VpdqytF0|aa z%zOr>=%dj~ODDYObXi+# zS*Y#!bS+Y|t@y5sarzan6r{L(c4xH4O6Gy9dyTb;8V0nz=dzu;c{NQE@QvBhvz7Le z1&`jvom4-*^?h7ab!19u^;0Btl|THR;Em*a=>yeLZFyP9tWdr?nKfN52Ig)SXMVCt z%A*a>pU*>r$k-?CQDo#uOhZ+pcKnb8ze!fGh>KjI7_zWZ=jJ*Yt^R5Z?@kk0RP~mrF`D42XOhQ{TrbsDE(JS!S z`O>@~DO?)aEa&>oh1m#Tiuw1%glw#f165J8$^aLAJb`e!MAYex8MAH4fR+(37wD=S9={9${rU>1kt42l@?Qt>l{hGVRd@5rsNA& zBeWnF$X~p9?BUWs#aIvEY+L-B-;na4@eCLU@^loAo?s@DKDD`3nu*+;@tWBe_E=@D zfAsN8Ius@HM#Q%C!f zUiAx}GH(`o0Q;WUn7??4x-n=HyU-?PZJ*CU$Zi0 zlRr4DD|>ghiSwcH z^4%W@R^7(C(nEDRufG&v&$99Jq>bbI~Q_f@<7SNIO&6T%pdHl{Fde{TTxNck_aPtMkfX~$Yn+J_s!ftX0;HQtgvhUvO}VPACxmBg#tX zzYE*{9`662vHaT?-zg%N0}wl@NYxa*PT^rVO91BXJ4HR%f0wLf}EDf ze{!F*`xL6s8ZGe}v!WhxiUxY3-^k8aJN~|q=HjsK+_d?5BJeJQdyLqIX!+)leV75a z6kB!RjV#=WHOM}SShQe^!Lj;MW0c{DPkKAoikA6;^|EOTQ`!#h7`t#mb|Y!E4F9~x z@bc=KD&ny$A|R&)I!xcVj(^TsjM8Z34j62<(xoZX#a90`U6rnd>HRywKe*Z1Yn8io z&)j9;i^A5G$Rap_63;OE#OV&|-XRJ6gvKFx*;%`CvOv#0(m|dzOAH2Tn<|7Yj>s0- zCADxGSBnsk(ikUE7hj!t7e;lIU=C4;nUb{x$A1IZ4>iuDeHP#wgS9;m2{)-WSffXN zD)^}TS>NX3A95Qcbnpp8pO%xq<)@E7(`z`80Z1krwOBN z144RW?2Fgtjh4R{Ctw~0(xvU#=Ky;b@)s%4^9ZB!XOiB5UW8eKliSwLv-^z?cG*&m z6HrPVN2S_3KWP-9B6}i5&qdC?<5H0Vhk^FpVN-hPyE#6WX;md&zULgxKbWLJW@}bz zJH7KYLhGayc6^+M*Wy?`%y-qak{nSAdXYJn1EI%Z^P#@(=y#WgOVuL}uf=~U|H-Uu ze)7pli2F&=hJK?D=>M(_Eic0~z}ADqqfP z=g&04C~ zKA`uEtC63prw+rbOY{yivOnLkN|jfw20b0wZWVkT~!Y;u)nbr ze)yvw0&0asDY5!h{qM$H_q=fYCB>3Z{B@@O$?7EP!_-5W>0(0tj0#2DNe3gssZ-)K zH9ymF9D?ax#6Rm>$=$SVpd`(mX`4yVjbL*b$NX?0%&~6Y4#x2<(ed|bU^F$P8IUo# zHKoVvPQxVY#|?E$n*$jkZGQI4z0v_+O`j@-uje{3P~q#fW`C#L*gvl5kT?CN$@319 z!b0iOeumoOf7cqTyPY5)fjQCoVSmWVpzdR}6~@Yu7ap&t?%LWuR14YqYG^r7xaXk< z!x|xLeol#_mVpVVjs3qkV)oKYs~mrUbAjDDI8ow~l{WUgS3Lb7V?%e`e`T_S2c}3o zemipV@5~S4Vn5|I1m?Wg6G)q<+)j|iJOPb(tyAyE%f)O2yC~{!&v=L}1lCv`=D2Qh zBVO^+*AY?9fnRiwS0rC}++c$gg|rsdPgzNKll_+E>^|RUS6^L!JGVig7j?HnTO34t zN(4V|&9mWC(ibQi;*9a>(!i6}vRC)%y_Za1r3Y)^gGtlzQ&f6~ef z7&BOc=Hi%;PeX*9U`kOtVlx9VI5OvLQ!RK3!deF!;7Z5j*o0fxL*IK+OABo43SBNG zun~g4h4ZE}p)@QvCq{?9_Z2_D;bKVNS!PYyb!wJ)9NKLqODe#<0i?f05n`@H-eCL; zS)E5?*YPa>UIUx6$6wSP_n0=zQ2bSTV`A9D-4JcpcM^=?vd+eL6km z;$Izh9z8n!sedaFrugap)MT;s$tKq2qE5uuq)B$0lU`q`hZr&b?<}`d2gHpW(_qp-a-+-*(hMVL;Ag8J$NM z!%Z#pJaGQ>a;}ms_f41H*uUKeA)#NkSBQ|%|CL{wA+r1zjAA|jm-S`q~jld5UGH3Tt+}50JadMJ zS4<4IY}~t1L_}oE#S3T6MMPG!L`43GTfYwYB;wkYXCfkZMJ}Gzw+w<#*EucYBkCT#~ujZDu@0c{nq_Ra@dXM51$hXW!HQ6>(li$#ZA_2P*ab4tgLJPswPSy z;JTVd+jawalD=x^$N0-Ck{?rS#iAU_5)OZU>tdofvbF5&DuW}rXLYW=ZYZ!P7UDQK zE35j#Iu9!W@>@c8%dw<02}1uSv?*FU!Xe9ieB6fAb|-l6VC|9q*X$R+&z z>)GQq!DoNGnqm*M?%((0b@PC}?9V$-?BBrpb&ur5M8ls~erh$-=aU6=liLuCwI~uajtOzV3mrS|x{DiR4lo%BCqw`cn-YUC86RhoKM(d~TIhw4hP&RT(z05lIqXvGlcBp^U~Q47fs;*75?ariWMZN8?hWrs_-s zNn#w&Fl0l9dRDqOcP!@3{JGf(!wL(AVYQ=oCX_t$8Kg`AFO5UulQ&zEzEs}{g~Fd- z#hT8RK~teTdHN-yRt0Hh6IB)Rol?()1s6e)xTTk+CWY;Z>OcHEyRs2;S?5)I?bDZh zQ6Lk=6PEb?2G1IO2L!?8Apx*>bcEE+vkUy{FBh%pG6@Py_6(;l2h{10Qu>?h@o!7=}?hcuc@& zrAM1k9eAb=EZo{h#=bYB57ZPO6@tlExL2pKQ|y-8Ej>H31hU}y%%*9VWOj15wSJx0 zxSl7Co=;KC1pf8edhS+%9%>{ey(-+g1~BB4#rtlH>a08x zd!?=^L`#p+>#wwR^5q>y!V^1EclC5<;@&>Ghee<1Q+HT;foH9e^NyKkI`~W8M!^~g zh!elhuD2lR_KqJ5qCAn92!7RmaLX#br94zxdMuUMB+#g9*Cj9!_K{1F`3YR-bBUg7 z@XK~{GOT;@m#eq^!M(R+GCQKv!{K%tkfxsKkiJT!71xm)QyAiX*H?lxqNN-G z6}_7*_~@*)^44itlSfwOe;0Z|)C*a&l+j=txrCZy3ktifuSAWWaQ&>iYn>iUDrBIH z!w=B;M5oSISShphrg7h-XAaY;>yDFllr*l5sfn{pwdQ5f%V+^reKof_?ZF{v3Zq9} zPxDoKCqLpx(B;7|TmYF*n77Y#akh>^=52Bxt+XaQ`JzrQT_O_Erb0F-+gNeB|s8$SCJH!bvF9iKs zCSvI^$Iofq`DdUnsI5Zx&(8l0hl3U2byn(;jS*ooqp3Qx9XQJ{vXt^86x$SmS(4y4 zWh(P4A?zJQ%DkTfzoTL3KCm!(0+YPrepaSz%m*v2;ty$J&EzU^zbO1ShFmd`Js)7f zOv+541u#zoKAE2k>5AOsgx}cVo8D6vg)#GqPl25&@5{9zJEXiW>Au|n?xjM8Bp|Yo zZ}khZ#f$X$>W4p^GV#+XgSmf%-X1Omj;?I6S(YY`!t&)f-;P=Wm7H0D3!XbqR%FFB zBtWl6s>t}z4To17%;W|R9L^(I!ZWOb$>-KOHAIu#MVnYNxJne2GPG+5ztnB25Ja#i z;0fyFZ3(wz4KxNW6RUe&-HGn?DI?qXnyunNXhYHERlmY@S>_RR<_mI!z&sd%`IMxM zS+O--yZo)8X8G~xth3*l6*>yNv>LS%r9=4Zq;1qY+Pb(r1mZ@H)-6{Cka3_j2K7A$6$%;^SeGK%-n&6d;wYRN=tq=n+lCJ<`wK~; zyN&(<5EsIAe;&!#&u<_5b*b8)e_i?CVos`@fX`+A0;ADS2mhzI^xI>VR9hPs20Vbp z3VOw1(xi!`Sb}*2+271tLCJ`R?69gIs!?Qf8MXa#;sAzIB-Ns8Uab^6EBVhv%-2y> zCy;rsK}snncs^bF&=kOwY-YcH(?O~?Pc=Oh^oo4EyLM6MIM3&KJR|A{f-1`B{2U?I zp9zfMs=fGQgzi$FPqv%@8&qb$t1vks#!Wdu4?ki0h)8j3-sFUQ72tLDY}0JK%vneC zId2{h;fo>{>$FBG(t{tVOUw*%<#=At+v~~hpOMj3lIh|u+>!hG{EM@?N=ZKav0Ah0 zh34{6-}Ov|Ev)M1&$QecPomb7q2b9*TProHU57}ihOnszrSOwCnXL@!QLT)&DrIS*}y^(HQ4{nQ^>hR>9j(6J7ko`FK5a0`9vE&BC%tn3kWJ>Y%Pku;X3M&o0}74N{6ttStU%wr zyWKb-Np85kCn#4MK7W57I^G8Pio$uhH#C0!z5Z}$Cfjdbhsa!~DAmIw45dVAVaY_< z+2^NT6E?A+5dSs<>p%HU3&$ygbM2zXES`!@r;LOJa;q(zQ>1{6q_ByloS|33e`$0< zSsdy4bt>nWy{gl?WrgOXnxgXf5tH3x4u`-mb@qBzYA30l^8TV8rw$yL9-`v=%p>}H zbUXGZyYq^bMHgp>3`0c@!A-SM_|Oy?eznC+)02BS)y7s0N2JP>tQ2G~in#lWyEip-#BT4Eo)Hq^Y#_$z!|tKAzx{Y?aMK4}u<>uqP;#5JSxz91tQzJ7ky$nq097->-!~)#nKFshP_(GACl$uWQ z_IA;zfYA@Mfxgv%ZzY^6h;>0##WVmT1x znj^A#>7zVIFBm#BW+^#!C2(beTo%AF&C|uG9Dp~1U@2X^+~-Q%Q9cZj2kDvRy50x_ zSBIluq7B`qJ0?(UTy?{4l`4?Qp0RZC?!|O*W0^5x)O5diZ-0J7m}Y;v2A+7UaQY;J z^7avZT4$ttGIaOQF^&DCit&pI%!-)kXj`qotz8_hEI;01_23)i@?!nwrLG$J(%6aq z(+6F9?>hGpyT{4SjebQ}#QTAa%f1g(UE=jJB*4EM)N0K%plxfP2^v=ssj52Rgg=IQ z*2sMc+i_&Zxn)asZ%{dA@?;?PVnfUTxQx8Tp{fD(mFt(*$aN}aKYtw&HYaJrCbB~3 znT7m4yxfTUoGW>z;VWF&1*D}mO}elVHfM_rlP}71rp?tZ$FJbf_NMWZoTpv5H=7E9 zGwCBRLNr2;G5k2wHxVuEPwcowsNLss1m0c;y1bv%GdFhTUUwG&1kI%p(Y8z-)_8Lm z8}6*E*5rGSwsm8G4yGhSUBI{ZJd5&&NsU)5FV>-)FeZ{W&m-LWaS?^pCnkxrP)N@R zq7xKKhr&6NjmX#9TGK$9cBEC>f`-8=^{>X zRi9uXdkGG%`Rc{Nw7Pu&q?EddZadycW=}HfLQkMZ<!RN&(ilX#T z-W2uEoVY32bJ*A{WmN>RzaZZ68*|;mg);WtatpWCGQ1X6oa16T)NrPun_{G=ca}4B z%?Z!0w;{WZ?+Vi~7SM+NF^R|exT2f} ze58_*zKVqCRhrzI{$HD*|7K*@JeYhNU2Gq~1(4g&jS678{7)yw4u; zWCHY0@v|U z!?8bkCGf8iz5*Kg=WO%Vv)J^T&Hb!h6T&XxsMfyABp+5MR3a#dssFMev0N2OtZ9+jB-#WrWuPTh>-P zaI5ddWrv2#{~XQ;;+X5gmH)x@jqqaol#Zb2DO3N&+a=j>^>;v5<+1H9TteO4WIcfxyS;${ir zJ6zD!u}d&E)RElgp(l9pN*vlk=G7uVE7NX9)XI#815++3vjk_ppDzmKd=$+Nd*!`P z$v9m1=6=w((RLYo<}0M->Uk=Yw}Vl0_0eH z*)^l2Va=3_6HLm2GY1jOHPg`zUOz5O#(lM_zV|F?%`%HtYzB_ZyTjec;EH4xDx>CH zXCIp)UIm3N2D%MbYS9MMvJi+X>(;tx66Hqe4ZO0YJON!)d&KD&>{SUA`SFV=DXmBx zH@Ns-JnZF;;YxEu8jb3&UI@M!YjIzi)9=me_1=}q>B)Q1i3|;OSO+(QM)~FMhp}0G zx2zG}S6Z{Y_hk?Y*R!fM5*8?t#9_nc&x|an75`08Mdsqy2cxQDnY*3=w z)H{ZoR1uePhPFB^{!+Byo%7P^QjWOw>pt0Wc5Sed_{0=HEG)$P38>wfsrxh-f$&j^ zh?bWJi_L{B9}LY0Yg!k2KRUA;;d44#{E}0BSo=5;KS0@O)|!>jEYGiB9HxIlEwfxL z4Eco<&N;R7pTBVPn&bBF-=sBf+~mLfPEL>=v|uY9Bur(m^*|De#S2KO*V&Wqk{EJB zgI?I-X^5O`BnzQ};!K*&_FzJl*x3-Dtk0^O)3QAScA0~|`CCK<%`Qu1!f9;IsNJk4 zxFJKjtK~AbRqjlCcj{7@qt*LX9aLpk@Iaqv)aHFiMjx_xsWS>}xia0spT4+m8^@P} zV!dv#Ul}GNzFa1F9EqXFqCWA1XJ5_L3TlED&h*8E@n6~MA+52U=#J@goNu-}5Ejo6 zpp&wBDQ}g?aT3Les6m$nYY2A5?Z$3|;t7*&!DwUfqv-4APa!yG7ykh+56#3#11@ zXXY8kdNnqL)?M_#^(pE_s{}heT`tM9SAi9Zw+g-r=E~DUcx`goGKpj23$H~B@U+a- z35%H;LS)T%at)TL%b-UfBBE99E@go@S))?qr50e?04ZIROsLYFtC{(@BcE{MNNzPeoTC9*8M%qW_RhIV4w*EFPe&=JMuC&} z=B@WVGFKG00rRUprC>?7Rt&`}FtX%|F zKEz2MT5`G%w6XW}kqj@IhE0)269?>POr&nh5jzXNGQK&Ni>q?l3@vi|h ztwzhn+)}PNEMtNF9-v*~a`*E^w>b;q;MxhFqnPjTIsV+7rny=J?~OToWQSg^b8k6q zb2sPZMsnyD)EjeD(`ea(j5gP6<)o)eCJmt7mmIHzw3CtW>ND^lnMk9 z4e94Z=p7cR6!fP|m=}aK1=F6=J*(zBK6g80L_N&AI@a|CH&=lcZ+m%q-3C?L^{Y2{ zi^yNri+&p(wxWqp;kU2M>f`jH=Vecw;=V>Q*pwgS)BA5NwEN3BJ^CaOl z<=*__K=9%KuNt%Md}2cw`K)d=pd4^+UsLNp2Ek@SYOJN8>8oi5v3h#Y`qy^=JgRl%BOfllP zu&)~?^_TT^=uzLpDFR8%S%@VtNjO;C08)`G)z#3X$g#biwh!3x7f+iaCWbc7jdX<| z@^H>|3C}Yv9^$eg4cdeUR4Y&qA+n>s_gq9!Xiwm6;GBxXuMHkCN9>p#%+PIhct3JA zC=JI?JUKAgBYAa2-%9M8cLC~X$tk%@E7v{X9K@X0$_-D7oG_GYD?hB{8-%%Qnx=`2 zrNdna;vo|+ZDv9r>z|$H?kZ+Y_DwUXu)=tRFsfCew|+SNLF)ASygg@|fS{HG$>t@1 z$`c}1mQdmCvV)JPE-%kFOm7ZKSkJ<KKgdGRuSr<-F#`2=DBB~piS=w>l$UFmYw-jXD=u{glCVq+(y%xx`}dMe5#-M zFuO}shi6$mayj&7mxfe=IP1e}Amz}~b5BH%F@E-Af4}2c!Hwn1nnbk8D0zP@=!m+_0nAEC@ zNw45@hjA7=^;r3hp+S0YK?#h!kh<`c$q4);Tj+)F%X21IQkcyI8F&{b9;=u`n$nm> zI`9-u3~{x-R^wW+99uZB{`CowK1%k22iQFy!mcED!8i=u#21AZS7#o~H2Ot=cTlKo zx7V|^eNc7IU~E;lY6{M7`K=t}zJ(C9Lk8poNM6>Cb)7T=g(uaJrB|2166|4z_sm6j4|ZO8G=9e3#!OaK8It=%4{VVEft`5r9B%zhF~&T6opN{uD}qVU&N(IEaf(rbKBl;B)UE+n9h zIp3%&93AEp8te5%P+gj`Gft66wY^9_>zEuP#(Jx}B+@}Tn3g*K9{XB+H2-zNh~sM@ z8zwZb3wA8w@LIxpn64!>-iN>5m*0>J9f{n?P9?tpBk~TFck|DqWvV zJD*;smmu~R#SB9Je`Hnu$F=p~fJEnF>wj526sJ4${Lhj**52FOdy~G~cxlF|Ruqr! z{Hqj?y;Q!1H8D;lq+r&I++06#6sTpqt5CtckYFLVj)|U`Slha~-3s{duKTsHQ_AaE z`(MueF}CWr>((r9>kMASy6e9Sxaz9?9_P=S!dKQ$Vnu@A)e8F^RF21@$D2FlQ2zei zN4mFQHaR zC_PvcykS;f&(!UX(|GNm97w#AJ%1(MNlfID@SaAkzO}-~Y^$dfKB&81KCsg`%x&6# zJ0~0{ese$Q>f^dE0)q9WJQxi$$Kf&__L(C>kc?smE>?S zgYYnCyR=f+^9jF*upMPP($SLdn2#8^9IrD6H;8iMvGtqM>o?BclnVD!&|W1*?P6(b ziYPwG=^&Olw!inwhCvxsbdC*J)=h_169 zWrSOtaIBKi(;Z_L>7EKUDFub5Rz520SY}RB{T{V@U!$b2U(hK|I=J!J>xY|Gi)>i>%p(o2S097TUXVsExCl;=m;{*EbImC(lbrL&lS%Z_bm>Tw$-bz z0)}h93^-^+UO&UP;|j39CK=d}tHW1dY3B46=QQctekK$D4&B$8to2FCCKR#EpH80<#Qi!6#C;d zsoz!~+;vDecS+&grKQHGrzja&TgMDluyfF47QSL0PG40L?f5fR9IyV2m1q7F^@RdS z(GuvYPh3agHf`P3Vlx*m2l+!=`LwK0$sfQ+mp4%gg8@TVrAx?(YuX51k{dZo#LBfM z+-={KD4JFXd?M2QVd*v$c;4xMiO8}oe;rzVx0Chx+Z}J$i>QeGJ!EToLRMXs{@XZ< zSZ*a8_V{BDeeK=u-vgB>x@-ekyj>cCu;N!I9O>I6k{9vM(2gk-W63v(lEWs9onALv z3UB`KTa**m1H8$BAaazY*&G#OIvT7A5i z?&JYl7_KlqKH7s-6vWo$>)1Fzndd?*!^-p=y);>vdRKAaNSra!_ z<@qRr;j#adDbeV&PO=M0H&D2hZ54A`Z2a?1^?uz&Vq+%9T!DHVbZ}QH!n*j6Wn7p= z!*CSWDoNp0d+y=FAnF$!R;lkGwWVs;rj0Cb6q_;3tb-hA+O%f**w~9jJ(r@6=%g=w zrkwFj2DDh}PETNU-&y$qlR5Hu>k!68_K%?ZHVRh5Ix~Jsdz+}YS8jSal)jV`^oDxF z&V)#hgZ7R_Hil476LQ1~Cy%yO^`CT29sm5*GY5aL3do>zv+=4g43D>Iz{pj|HI2t4 zdIE>+NW=O-_XnDw;acl>>I=Pqe!tL&YE>{pUpP@#{pP)PdvT#%7iVmv^&1B-|GC@% z(t7Tn+Saodsfdc#m#cNf*nhgka+<@# zv2yR7qF_f-_cd)A^4Yo$Lu!dP9eBS9EqlhrM=<7V^!?n#eRrd_xUY}k}^aO(IZs7;Q zRjtv;**#9`2U^h@QBo0{&_(Lf<+eC>KpUa7AJbE({ubC#w%4Gcm!l=LN94qU3OPzP zF6-mCeXMoUq93W~y<#$Q%&~U68u}s6iq(d1aw1yIsJlZ1oPk-|&M3V87+$)H{#VSc{AG1kSL2lHrdvW{J>NW?8 z3T*$O>%RKX3z5PYNZc%%uk*3)`(ft0Ixp%=?ZGLfY5nCVe;L?HSFIpKZg`%IH>l#C zMwcix;}0M8daT_})!lHueW8LT={d>CM@XA%D2aFbsQ)=pfGj2iK=yV!k7}Rj#k8>= zXKum7lS<5H7%^8FaB>x3+&inTl=o#HxEZ0bHVS55Yr~A4YctS!s{z?QeAhT=`{-H? z>7AStGb+mbr|&tpAK{YR%=H38ZoVr`44zgH~onjlOR}!+f{XuAnJ=&0+a~5== zzAqgn$wRifMa)>_Gp6Q0_Tb*|dg(t_-tEFV!h`lbA6w<1GH7hO579?4_OlqJtT#x} z3<^EmNzp(&&a(AMlo(YJbZ%9y=#xUG9S!TSnmO5*PF-Wu`XjLR98BROM zzs!I2;oecSGpOoVk7U^vGZ{1@2U}O-cfM|QL80xC%aeDS?L#r^Mh?W#TFA%L2i`2W zd){gAmo7q_iWj{$sVco=jQL=GKidT!g;KD@H9iSK$NA@yn4)PZ7*jU;;!tj>^7yja zShf%+9CsP0*(&u5c8AHdB*9i#tdcM_@MbFU^Ph*3q}L^x1mAM5?!F0hn~NgoAYf`DqhTIrG;v58W(BBvJ!BmJ&>&EV2TMF5%q1B@8@Hr}=l(`eqK`g74qK?fvWCO(K+U zKQQpwZU6)Kk^ZXU1Qp+u98>Ch(R zBVamHBR|bdJ{OM;)LC}kD{Rs@RHE7n+A$g#Rifb#2&AyXyCtUcL~@=r*R}<(2Hdpi z`ff_$hW{JT5}t24jYA7p0(~q_8Zq#HrUu!U{tIwL%>O%ZX&#%G0LHi7TE55G_?$;t z)v+o%%xr?r2k;Q==e=N8*~a9ujCmoT8JpA^Pvt%6^H zVHfBuV>_I8U3m${qxG3dMWSghv^QpU`@AT9-1zbT)gPg z>N`6Cti#>uQdQfMNtNQf;xd)=qY0~VasGzjcF8S3iFECT8SNsYuRG=)>295&XH4r-0d~lY=A`4Y4Y+IfMsmmf7Pz`@WT|q$#VXj)Xr?8l;kIUgPhFDE^%1e` z3N!In6j#cs1%tNZ^L%zCg?Oak%08L$FvlBp#oCqk^N+3#NO&9-n&x_wo&IF}=(FLB zyL~O`<-A@nt%}>$crtAZP;%|A%b5EVqE{sz=^oeD{)|7JMOWb5@)Oj%?m+7>A_IZF zBj;f*si^Un!9DO1Ldbakg$zu^AKa&FgXMRPCv2GwmlA7RRf|fb&e*Zn(>irn>>+h} zye(M-2+vLRCe?u%9@GW z9wG07Z`R9_q5vp@>YUN?K8;%FWEUf($^_8blz>VcOw|*wRY;RpF(fRe_Gs2JoG}Ya--^e*#iV*8WYjqt=Ui4ywfa zFJ|j&e$2)cPU?I)FGU0w$1wo2E72{pw~QOV?%6$NMJ{hwTdeGgI+Na+asNARk$lT7 z09Ey!Q?9*xoF5ee3+CcyVgotxZuLrl@vW&@l8O@3s7*MT42Cu`IC%9d$xYT&KRj-4 zgUlV(1l^}t_V%y4M1%E_pOKHYD#zL>-*_Mvns~|vRbtYgNdPfo1g8OberHwII!p9Y z5ExMaA9OU0Myx!!+yJd@`%-@<31Pi3%cqq=LOs#40UB6LoAkiL z3{Ak8yM?Y$$}xaC{f|KCzrdI^DfY@DvA@%vI}yM7QAaCZxF$CI+XX_&LkU2YJ)(b8 zM)a6ShLh6`Rd&d#Zzq2PL|?W(pV(1vUj%i2Dqy&@2|?#KY#c3!2wOkDSD?DVC!4=MsA*5+7)4SN4-UIE*=02VW4{Z3 z*1UB4s6C~^sniJ_V**_OhHZ8#{pv0SpX$s-_m^oN<;Bcziy0b}oM63(?!w*TT%ZLW=0 zQtoxZJ=uAVS4c27&rngTA2j3%)$i0rbYaQ+qsys#w{vOR4_6a*8n(CWd7xFa&{Hm>w4jYv&EFF*} zW$JB5RA>QsB}878w?dHeDf$OU8HYvb;RwnUY+};&l5g?Jovj8_8#l$DylL14@KUS4aY@iF0xbm{FJgt6X>KT^judTwQ&7&qL{*7>E*dYEyU5$X$|xy_>|&?s(!b$)kJV3oWE&cRU7p_Ip)Z zG4&XIH!Ns z+q5vF>p@B80A3zOVX16!Yt*xG=w98fMrZefclJG;9oPmWiJbDN5^qLowcwg0VA?$G%1NaUMK`>&sz#*{A+Vnjq4Xc&OEtH|Ix*R=W{>?XN-xS2`Ve z(Iv9CQX}Tx=-x?T2YHf#TqOYEU*C?oR8SX_<&rE&J2NM*ifeX!>N5eAan7-Lrj=?H5RJGav7S@&W^Mulp_V4H z%|O*wJ-{#aLGMA1Ji)=^FT zgLEtPG`;x8-ugb&pVQib&@xO+8$=>6ELCLSJ2b08$^U4JIxY&3!_6&Szaws8Eo{ zGI<&Ul0%t#>*me;1vx^2PUMe&XGyz@+Nkk}Q%IeD%zLeDRwr@lzndR?pmGq74_1BVg)%lvQ-qw0J?xO42$a{O9t4fN9j0BnwEV_kXP}1h*WBQ4 zu>{+qn9mC(b!m8h+*3ov7p|#*o)%3|0%PM;Nz=Bvod>_&YcZ9I$3GcP)b1ymE zY?C5}CgEF$v)9oz2^Y6I2dt;}56RGyNrTuUL+T%Jui~x3%!9eNWfU}ZhGM+hxqoVQ z6d;c$K!%8fg?V`^92C7{!ZwcB-p`+YJel)Z%Y%X1=ph)L%Pz4nNu99#qcUw7X-D@y zC6pQRJ^)ANm;3H+LR}9Uyh#tN{pr?BE1mjc%5S9_CDWpdVZ3Nw6RaOzCq_3{2Z9JQ zB8SzYJ%02Pq6QHbJDOGx28k#~eE&(Op1gBpzuDO-ws5l}U1btotzenF^#BRuKk%k+$g(=#YHr}G4O7#~!sop91TAs#T)La9 zbLU?W)pT#L$;0h3sw9PxIFm!vDvai09+sm*YH`31C1eCMTxt>Iws1}+Q7P~JnznRp z!`!)?n4;>@ZxJ6wn~i~%>>68y6+~MNwU!RpTMDTGTJKQPrgT8Bd`x{;j=Am!&@7&Z zWGqvZN=0v@>7(%`GrEyF=3mZt++CLcOHcz8zq4(4qbkyP-99V)sra7+i9EqPr)zZ-^|^4bJnIc=d{VvyMhfeVmN-FpZjo`(pH z6}jG8z}3Ln^6uhAK=t!62)M5#B|CO74DM}`%+4;2ftr{uK2`n=z~s;tzvI_Pye0Yc zLe^g<3N=5YtBLMY{UpRo8=L%5mz}$+FUU;zL3f^=|2N5R(7*DO-Z$NHXad8)H+>IU zCM!+jB_wo`(~Aq{f|9!?mv5%7Zu^^+Q-rH_@}>*tt~IS>)Y;&Vp-aQzVG6jcy!5-o zjJK`AjDRmM5B=VF4>^76Qw#`I49X$G8J7$2pT$3K3A#@_Do%3MgOaMZ_{unu9ns|_ zf6`{IPu`_M$~zrjtHwXBy9O}tYpY4w8?Tjg zhn%?EnY}FwI{5bkHk6; zJ`3o<@wZN?hg(x8o*493HF2rMz=V>V zXXx8>g~iY(_ZDjtuzf(H#8}^S-ul@O&)8>fPJS1$Ypm5?t(gZ5vb%X7-li^nML7;w zJ`mwCLlN9+`f;BA^cZ;P*vTm!s)bsVXQ$)U)b%nk*MIS^%xuQPfq;(uhXX*ib+=p< zJ-Z92QT?w)!T-d^&Q<;OTk=`^&#JA?|49`5Pkbx`-mp-jr20GrPy+YdSen#c#R&+SHIu68{2zKB#{OKf|s?+~Q~9BWy*I;?YXR z9xFez!ct;{7NB6_5(b22EfyCSwxb@(y@%BwAdW!HaQ`LmdVvFXY6y4N)m4|ZahQ|v z)ayh{qwE>Du!xl*z2j2nVgz=O%5=PZ;feCU!QN!SrJtCm)gNVesJHoMXrEL2{t(3+ zN9*BPRh4Oy5{SCziqabfro5^?0*Dsp6z?_`f|L#;!d{3;!G|0FQNo(NxC8AChySgD z<$HB*;h#ETa|p<4Iiwyuk8TfkPcu!|&N34%gv2wtWqbKkbAi(fKPqw8UEexBUMY?D zi^`~K`w&o|E4JjcT^|q!4ccPXuKhcpNn5ft&#Nhilz+IYJA1R{zH6I$_WQcc?<}aW zty`$Z6MM^ma|#X6WQSxOVae)#k`-YVrS>4bpD-v?9-nDxW zeHXJ+-r&N?At>Pg8f)z4q<49}IZ50IX(jAPacMiYTVgEI@)<z;;c)C_woLG`Z=kmkVbxHK?%$zl%xcR@p;-`neKBs%!@T}u)HuyB zlr2Y+er8C$R##-`!L5=n$)TsxVZB!7Lw1{GN>?WKz9=+mIpL@ANvECYSLWregX<Ccx)gQL2c0gV&)rUqmt{4C{Zm9Rt2_m1+ci+6?&KlN@&)OMHDhh|(FriDCYMW6e3-S1c70Sqp1#JlwTVd(N+Z{;UY)JHEv!%fZQkZrRE{`QTaKl3nvGX(-#aNEVc zm}rG0|6RaXzV?#Np9%CItrX5&!jSgkq+*F}rbj1^0)viLsN!Cv^hu4uq9sCQOEYiO zM+f=+vH|v(QfM0Xdg+@&EK6Qk#tTl@=SOc<1_#yGavq|0)sa{1XZ4-pH7$}RXm|P8 zdkF+}%JtJgSHx_a4TPuT`uu8T z?eZ7gN-_FPAdO=dJcU$*+pL(Bnt85C`3r+?L`ygT1S~NOz##2k1k4H`V3^Ep*O}ZU z*7vNh4)B*2m1-@&JukJ`_lwOV4dh&EvlM3r1Ed(r_{5R(owyYvT5h7Egy;fdQW>|i zddG2Ys{F9C0q{F1^diu@x=J2;pjC>UJadW}+VUcE+k4z%g*X31M)qg0a;XW>+~!#H zan{N!Sza60=%xE`ig@v9oeTQtcQRrsbx4O<2?{gni1AXAR05hA&uYBFU*q4Chw2t- zU@mQs9IDHmhQBzb&3a%tO|Gei2Byr#$`THzJZ(1<`?Tn(k#KeXi4>`_w5mSm2S6D` zDWZ1+k>BU8eRWV$T*%30`r~?i<4s=#Au@x4g$OlNMf|A?Mm(-Y_xgU}-c_icliXJC zT*r%ggBrHBF+WxScEU~MFIIJ*uf|rISlD?79Mqh_KkNu^taY1b_o$1zmzT#ydD5qu z{rQf zgsiz8YCn-NLx(Ut=MvTHNH$Xp<}?2*KmOx|*5u8%n~C@AO&x?7He&>IT|_Zk32||a zTQ1jUbe@M71sUr@D}W*wu$?hLy7d4qBag^p*2{c(aLRMzBH#(f!cy9RO{+c79@O(~nMA!D(lrjtibgey{hV@2Q1T>nV=M73j%T6dm3W z9w-1+C|dx{cQSeH$Zz?^V0&`d)gK#z9h%P#_xiCVTndks%|0EF&s-ZKb>_-qRq%z> zj1Z?;zL=gUEETZ(Sww`Ytx{l%dCQ*WLdw&qZ$o1*w7(g8Rsp|n(s}q2S+5U`ZCqIm zB->E$8jLw;aLF(|8-)E+-*3))L$db^`}R_Rbp7G6r6SbeJR3l|toB6DXj%|MiaG>) zSg^lP*njb=`rwy;bYSf6f=9-w7a%yf|A0E)`}L;RCe*T5UKaIV?7TCqhE{&FXxWfb ztbJZ8AC{|_;x3SvT(G-3&o)VKoPVjV7sr!9hymN;dSGCS&2tZd!*|B_JAJbRLLH0U zis!(`D00eh)+vT!z-N8v6QBGZm|(4wO;>mSf(AN3voe=1Jzj|`u@v$JB}l93 zBtWwY6?gNWrc9+bs^3z6YrJOpoEEQE`>Dhv$?!QLPzVgQY0M>>_QC&%L7y)n_0 zF~@Vjk(g!;G+6v82l)W>Pi(_~tbGLdTeBEw!#${vybsj2_Qn5>L;qcEE5=oH*%?*7 z)T_MmF?;D#fva6rrbhC6fd9n&-utH-v7&*q52JgB*(kj8AZT+j22)PTBA@>Ftrsy_ zV(j2EsVu#zcPg2Vz<29@`wmDBqXr-LB@;Hw0fn?@;=i?LC?0DiEDpm?3)~tU!svXW z!Ewgtqc0uyWuvO zAd=)$`LkH}&~^amH~xDq>|*a%w^yHUTQt44<_%f5S-0J;Ex=ty#~94Pxq%c6{kq4R zQtF!EU7w67b*V`q@AJsLyFIC6ARnB+$znc3Juq3lLUR%v9ZJEi+1)DN!EUnC4A#KVjE3-{4 zaT!xH_fT zeeUJ4N9=>|obP<+{ND5a-rxIv-(oL}5H7bUb)FGC&fpSG@xYgn?`BdRKqpbgx1yd0 z_!h&mOtF5evsIBT+Bl$i0dOTROxxF`?7j3$LVocftK!%?Ktsl8JevJW%WwBB_^*gX zZVBpwwm#3IGwMcdN}Ohhg&L~ABv!Pnt~nchyF^{(@d^;c{C)eK5f@KwNLs{MkZOa@ zZ2mij_V#ye%WCd6$A8rtrc89oBV}1(7v0iN{t+pQC~iBuak=gPQrK~ki%g$EhKeqD zEVNx9R*N3t_cH^6c;}Np2oFqdUGSGn*!OKQjP?3WWdJZ6Jv}WeBlq43+F(RYDh*07 zwnjm!3ckA(wzIkRc}1o+k$xozWowbv!sWlJ=cXYwL|y}0=A+tLp{ej^KdHuE#a-DA zFL~!?pkY2W{1#dsOfMu*@>1_9idFYkcZtd51jqbmjdw!{oP+n7Rl+kr_LklAq>XC% zr0>=3o|!Yf^KS|dxgQq~Xgl)nOS-27`Lli_2_b;Rc=wJJjXA06b0qZC1vT*ANQ4q*DOwh9KK85OYzH>5$L}Qp$(jk_b0DE_=m^?kJ-d9rV)!h1A%~U%SHR9fjRjeqCoI|`uruL z|Kv6aSn7X(ba0sOK~cpJqNf5b(3?JbcD)>yPivz=E6@zqiFhaCod^q)Nu#>s6;50n>IBIpY&WN!z9_-JBD8m+8ezVdCHT0rEz*j3u5??)h(qhe z%;5Na{7iV&l>IkbqZ|N=f34b7s*;N1b;tMTk8lT%1E+IR$=~Mos%)Q0YfEb` zx6JmCoax*6SF$ca8?y1AQjY(LQe)$P=;r^o!uk|V8d}mZc7-^niH)*){8z<2C#G&CY-fe8=GMt%;Ml-ljvdpW z5f|SWXa%(P1Nm6l`&w0Tn@jhnZaX3u`Gfv)sd6UjFu!&OeD)o(URls|q~ z(b*f%r^f5c=fMkwl$5xCFqikQW=Xb&078xs-;3yrwIf=`F|HP_LJt%^EA3zGWAd%o ze<&QU-iH~@bxqLUof9YnZJdcoe|00zNM-Pg9=|%FuB1`)y$T0lA1i-ll>T-oBbpg8 zu`In*f6eQEGmx)#jehK(czU(fc!Rs1TtedgZw;&)p3j;$4{cfK!!d@EFarVPi)#df z^Y82m+=&Ap0=Djhw34aGK`#h^HEFeV^mzON@B7ZUqxYN06@`UHVw0cbY^JBI`Q5i^ z-UE}@I|{<{ZFfA1e4nAdno~TndJ`ae{AD$VvpWA>hRTJYymhp~kq^Yb6PqhD9->~qHa*^Z zd0pMO3-s0H)X`llQ=_77yp)cX7hB}tiyA&1#&9w!%|h}L&Ks@rc>*gr&Th*I`o2zJ zqC(q!2K#;ULR-{;imRjy*=0%^Bgh3vU9kY998N2s!mi}SFO68o?arKpotAY_Q2y6 zw4&OrPSd2$bZ{Zy)!D-sG0rP!jk$T_kLHGrJ-KGi;GZS+iNY~4zBXL6>ig?A*9 zdu(`DdE?T58p!d|@Aq8Txi~X_1xY7A0g@O#F`o^1_*{0xQdJNTX0IjSTz#NAz0kK^ z%i7T1Il}Dn|1goep_ZPFTy~rJZ+E4W`V$+gUj(&EorRaHfLRWb|nd>-~!kU(TXR^xaKcTX50uwKFvwh8Lro z{w{me-UGcIn3!stxe#3_ay2DA@|wA!G>T;BzRy1{uv0CSwu1YuNVgGk`IEwhU4~A# z`(?MIEix%#%WDIH;Hdv_>tO&pR*=8_rv+TG;Xl;(>z*5~1PFn;c(2uwqv~!oHOv2|G-=!`p4dx~mx_)s{l9ASfJ$VBTqn}@uO&B2duLh5aMKU+-u;nB>(i~wF|WAd71G@2mHkIrt76((&W;*}@BTkx ze5WqU9slU>U&r4qZnOO3>#AMKoUz0WphH#q+&>b0!3{v{Lu`X+?FTBCeoZG>R1n83 zZTRDhKL4Alp;s?`ZF*zA13i$G`&H@rUAEi*cZuDA)5a!<15;)sM?RhCn3e3O66`$rM-<= z8uq?ebm?}61(fGc+iprH48y44Pal7+6Irf}{#epqWcoc;YjmF>cc@jQx)ox|; zmm!C537VjSXW0+lGGN0=AoW`q=gDP{D4LesDyQAmssL>YymWa>)`WG_B8Oll{-(JJ zR&vy+kNL%Raf{4TV#j|(UKzR-_KcgFF;r^S-c}2EMUbl!Ja3}2a^pu{`6b-8 z3Y~t(pQCuc4b2mV4SKAa=ga!Mj#d#X*Y`0ZYA=Ejl-GY7O0@|n98hx`cX$dIYL6=bDe8!>*W{=CiI*sars*m^wye8n`QNVhp*DM^hZ1`WIb?-Q2cuW9}YdSFFqZit5>F~z3smj@^n#5&wss|bNuvMZ z{{>PA0iB3n>6caUZ2{LKQ5yoA=#a}10auF=qm3=w(aN~-87EwxF1H4Ieg#Ex-jPI- z)0ayd3){O-yA@)PU3BTq_ni5cYRBs*22}o54Y&g1Fy0a1EZ|Q%K>5#VaLf`tdgkE?SaXA$<{M4)z4f>2KunVo0t;9XqR<7ULXA2(g?>T43+Xqt+9hG~ zPhJlV+TX??+JH*CLwi*{ES|ql*;u65kx_9v7pOrAyk4)`b5)b(W*I$edE5X)f$Ysr zl_6a$qa7YXfLddh?6V!iXy4uZu=l7edF<`DsBCs>`OONdWr^myHj$Wj()k+02B=q^ z0e@=+)a-QEd~j!F;n?JKKnUA)&(?vb2Qe0(Q>|+*#KkEJ3(oM;ki1r;Mr)gwPFmp$ zx4u-)o@XYE?-`B(aB{S3z6wWRU&ww7iHf48`}kFOp?s_gVCXBB_XrqjJr`1b+HWLR zQg;Ub>2iM&>H%__RQQNaB3Xu%K3U5gC5jF%ZJ@Q`1?Ji(Eexal(KFg^&Qv4Nf@jF_ zE6tiW>~XLWgo&)*m}iMQJNF9+{|Vq>AGG zv6z9?k>hx#IW1+owew#1Wc=_$lfgseY2ST85Ay~qCf}}#5s?=^qi5=qM0jE;C{-q- z;L*E!BX0%u7yY)N6t(k*tc*(?r6ys+ObA_$EJFsK1ryAh;v0PiK(mJGG{Zu9PYjo(on0yXHab9Fy3*a(W+TnBXkLCzYE zUf-(7V-DYZ{+U4jrcL~5^bN4?K1!YlU+ip^b7;SOVi}% zn{%~sj!cvlB;cWy>Wk07#GY_Ngl6Gziw`fW&!GRxYGK>+LAHIbPO-e-D{}m`TS0}T zHTo+#84@-*xq8tJG*jNFl~&IZj(!EA$~Fsf+J ztQMcSC_WlidzfjEkF+R7hM8s+o~KTpF|`C0AcOES*C87i%aGUE81Hr?720& zp@bCAIA{iC9GzOfqgrJk-Sa`G4$Ck)vx&Ro8GFz~^$-_FZowUp4S}B`sfG4*`TRV& zCu2QFvPsMj(Wtm%4Ic7P#g<`2nKQa7OK>sz=NpOGnq-7obz3ogBq@lkWo!3JH+GEL zN2e|K7Y$_^kJ8O6;!Sopj=va^gsxwBTh3kFng{z;ywA!FLMDtRB|xsHPVWqWRAOL* zlcJRh3YYdiIISqW^81+-g8lwt48vQ{vu~b=d`eh4-eCW3webBRmVQH68xC)rZb5YJ zxWT0yVmHCywEUEt)QqG04NpnyXOumANk;It42!vrETI%Of%Cjjr{`wg*%9tB+XYAD zLx>gN9@|BMZb~0Lq30R|SVl%lUN5b|0-1ywkhdEgUZHuHEe(?iP`X)6>}Iua?q}iGgi3RC|^y;?pU0wZ^c?4V8O&*ykY3 zx1q19ks4q;^gBK-6h~o9|RB2dT~Sw~3!eQi5a|n85re0( za^2rYt50}l;1V(a2QEDjeE+E(upCv~GyVaLyX6R1mnw&8V!?QzBXc#lfW)pCW*{`- zz4Lx9GW$J$!V)G^RV<3o>>Q_OAM$Jm3Di9ST5IX?S>p{fOs}JhAgn07rSueq?BtUO z?g3lqQ}>t@jq*GN+-|pT z-c80V3Fx*!0`O3}41mbS8)Ci+QsPp*5>o32DFjEsv~LL_%+Q*&(hKW$&AsQ`7)n*?8^pP2}ne+v-N8~do#fpMES{P!_QGJoJh~rqDJP8x)NByStp4{&Jlv8&)(H=y)d>O>ETAD?Y z3C@FViu_lpv&Vo^y`P6F#24vQ<*L{oIt}05H90dTItQBW7NLOg@yvlPS|Y1o6U3_} zEY{LQXzP%bJ$=LeVp3=18LZB<)4bHUZLtZ<@|(m~Rm#n8MDf`XAQGD{%nQ#G&2kno zei3X|mkBmCXa>_;7Ho?upxWjE*s))U8vpx%B5$g#zt$iydQYpGC~Z6JWPQhh+1tMl z3wn^gBiF#`1`pLMaaP&AJ}11<@z`n1^5{TUUo^1VAiEwsR1^v>EpcJMU;gLh>v_Ln zYqi@NlXHth!cylpOJKqT%2%9!x_mEi(^2W~+X5#w+P7c#B@YC9f$ztu0RwhZkSyO{ z0Pht3xdr*x-HCFlR0y=BFmm*fszuCFW1O1(pP*7I2NgA1PZaQhs=eP>qu#8HlsBX9q@J&&VhijpgUmquURKns3Vj}CpMG!> zBffVKXbt7CCu0oeGI7a*9$ub)u|>RrxoxjSq13|gt{ zYXsToW<60I-J}_?DvQT*{J(2OuWyWA;F8N+!6OXTP`qfo43`1YAQrGmn5tps>6=%e zQDpSC)z;GO*Hy*dC1MF-Fl?Dg0hOuRJH3h33~!;G&B7mWkwqg3&>KVwGpLPai@eKF z^z@Dk5yS=vh6`?TM@2A`{P3Z0aC{WlBb!dqm@!TzoDT1Vi8MOqjjP{FUB!1Wz7WAs zUAGh%C)AI7)Rj1=r=*KZS|9S5!~`aNnsF1PD1+hyx+k~K;RAvs7_nr3NFs#UL?6!B z5IKF6K5-d)iw>@^&8aB76MJn<<9Xx<9`0ZZcQ#X%+Bp^S zegkXZi5<(rH@NgjuB`~xZ-r27hrouUk&mZudN_e^S%{#rX~aonKJTq@GBO2#j%+{t zqnzj!Kb`qBYxg`@ze=co3$4QHZW*;eS6h*7H`7wX6~RXTCo9_@c(M@nC&=YMP`0=P z44G6Ej&j8F8O!a?x?BdO6qA=3LPc3h6}Z|O!Ux;h3IYgbNpiZT2DYc}FJlv|iFgaN zndTulsmJUGJH|^`c8|{q^GkKajziM9eDNb;e!zaY-E!4?aBr0mGC(4>v_0`r6!PgP z%D0FCX!R}xD8?J~A=ki@L8xKoXuC~$UT@#aGj4jJ9urQr7vx3e3a=6_1b&$0M_j_{ zq)RkWPa$h({{(Zu@KLYKlSsgjzc?Xx6{^|+E52js$59xa=)Io{Ow$_qsx1T9Utngq z>ilB`K@%PSFtsDVV*vEFxXRb)h`oF%{_AQ5j{b+6Vc;U71DB}~q58@0E33I$e#M1v zChFxY6`E+z0Q%Vf^dB1tCAr(e){!Go=}ZmfBEElKuZI?!-QyK(spS?q09~N(i=?$+$afE-d%NY`AnuZTTb{gcdy$&5oC9c* zz=t;L@;;b*!qa>3mV-!#olI zU#Js%GL$)JDZ&v80`=12gM1L*UQuYY3TxD16v0EVd0#dF*op-J!5R#dyke~hI6d^z zb(B=PRI?w?j^zcPK#{{g5b!VE4DQLEfop3co+FlAAjcyNcSL3GD>lG{6eY}uzeVNU zhSLmseTjuC`LM8Q);mRC?d?NQuw%UZ!h1&%zLWBEs!)}a>32n+CWj@Cc1#6@E>T7Zvl>twElguav!-*CUBP=*I;$ z-<`}Jh?k%sY2sklxAQa2*zGu+by`_M?SA7RS*IBn`G*`7KwM~o~{wh8v3=~idww-mqFT0_vhA`L31u@U_&I8u`>XhVOJ7(Mluw_>R^nR!bGiB zC1LO;JbrxIIF9_XZ`EQ%h7B4gIU%-Vh+7N+f9U3VWiOaDYOa{a%MwtyJfEIY()y;* z54O8c3ED<_USul)6@S-S6Z*mDWj`hcr5I9U+5@ITH&2Nt#$t8)({(zM?HJ>tT~0js zSQ80XdyN&_WmNWqm3sS0?zLtm$t_54-#+dc%E&cFFX<)})r6*sQrqlc+xKgw&yswvE5n1}%3GR5xc#G>--%dIIN;dBsn?Y{nUE%eVqr zEXPw)F~eY8s}e?D4r3GA?8+vmai)kr9=Q&Zs=10}%g@t-L9*Mhb2#zY)S}=tL-s<5 z3sn<4*L;*^w5?rl8p4Ek?e1y$ke2j{u_dLnI$*aO=@oeWQB)Q2{g7el`)3`@`6BQ# z1@~MzJK}cpFijTwG_{X=z+(g8FVz5WN7QKzikI((_PNNnSYHtD|5F_1DGJ%78PDp% z@T_ri&FNW&6B7(BWLKb4N@uoWE{Z?VKC941{C>>JKlmOjr`p|7R1AGex8-G#Q zCR06?7UGYm>O%PVtIcT;mVC!_Nl%XR8;atsMGVuO?eNA71=UrI10!Xk-xxNg*zE>d z<5(3AOkagwal)$n^dKMcEPQyp4QD>9(rY&Sw1VkE3anlQ<68w9=1UB-nSuc(syowc zX>&{PdRL?di@!~xf}?~##m>+-5)bZHcyT$W$f6aZ@mdxxK9xu$$7@60^Ur0;&BzG` z-QQw#fLZ0zJkm$I#7cO4fZNkMm&6pAkG0n#Ui&k0;i z&#)fETku*+s|bNIC=ylCHcnvzJXN6GBn;^tgQ!2fRd+$%07ts#fI$`|ysa6RJknL+ z#NKHTJ)S$O$!D65;((a2e&575`y(Mx5h0K=n@hNVr?VpPu(9gRDRbH{Zy&dn zSBr*xXvr1}(-G5K-`g$|8K*PpX)2s?Wk&ET<27gFxy1psKU7L_IL{Gi7qnKnp@tgT zz7TSmI@9Wa_6%CEaS1L$!DKRRoJI^YaYx-n$Q3j{DN> z(eoPmBl$D<$jQm`+YJSe79jQushSYj5X`d|W7nbsEbJva>08gVgaJt=gIG+=Qco`% z^V}>&GY3gg_L{k&`t{u*D%hQ>GIFE34)jQ-Imr-N;hBm?zaIaVUm2QtT)ZKG65si2 zWZt-1%iaY!u#wNgEPKd@d{f(fg0-HsNL>E#f(1$39n8%NPBCYVH_|*MJ~YrePOQla z^IQ@E!*0biCsdJE3#as#AX+qC%3-w|qb1QbhEYmt!SL!|CzJb5S2DxYx_psONuow0 zHgT*nHC9w!x^rGn~G^-3pd@LjrMznDxC5Pv+scIs+|Y z;EHX{UEkJA9=%kBF<{*iJlXzv2X^;`IN6F(JIa}SKjfOY9j(1N-^1>9<6a}ZF|Y_i zef03E&QP#G^rMV;is?Bhs27DUxn!7eYfU;c!8c&7)0DeSz>_qbXDo{CtI}s*KB*uA zT#G`(cX8!_#aE>3#w;zWAPO{SVjcc;M4=J~D#1ZV(s34-2Pc!Hn@0mL&6gm|WzX?R zd6B7AdL4d&$Uxai&-J13kF^$V=_phYs@VxwYsQm|Pu0M~eDQNI(bDe$qm_D(%G@B% z*kl&99(6LHkrZ}K)nmV%Y)|_eqRkkf8RRKj)%mQFY zz()^Yf3=sLGs_V};mx0}fDIx|$*({HGwf7Ua8I&v4ofU;f^p2a;6zoztrF)=5I_gz z#jZ}wUd?R|O(fQD>_QkzvFkV=SyX6Nyci9{I>3IuYJ?d1uif z;`R^>dke{2KONkS&viEB>uKd*fWWb^@|NK1Lyb;6m`N}GJT-VkpHQWvCWIGUpdgUm}SFk@-+by_vv#K75)^F-A>;@!QX#|86sKK>@P8wgC>c{{BByqfJjj9brc!%N*VcY?>;*{QVS zl9U-c?g_q?Mc-6i+Ema_OYyZ6RXOg zLvI>=J<|nr-t)}!>TS1&Bk5j~HJHI6Ez-=(T`!5MSYV!y-6{uiygOM^A+CQ&nYb77 zUhxH3%3h(c@3`FJ2k5rO<86kse((RF=};AK)%=N}GO?$6DQ0q)cssvFV2QBKFYACuD}3Qim4 zM2*6wA3i++?c0AGLXCDqAPrSdN(JYhaIaqJCPzQ-j(oX)nz3G?UANW1rKaDZ$~gtG zgHcBbbml~+-p~rHE}FJnc~eIo4|>6}F)sEQwsGdf6>$SIQcxp#nemj0D((h_ls&+9 z=9Nop;Q2jvgv79sfSzs={sA{Qqc2=*dBdhSAg9uaZ^OUwTt790;w<&1+;?2Sh2-oL z+Vn+MpSFXr&)H++^NjPNqz---s>|GewQ)uz%A`f$aQt<$8R{Oz|3cJ`Xz*-li@O`M zw8aB$N)Ags|LjhJJ@afM`ri@W8E%Jb66;-eu>|=u=OFOsXT->`cf-)N%x>lGv8qw}jWvZ(gHU*U1O>YJ z(n(~>AZc4+|0JURNP@^L6k^+0GmOyBK~_ud23UAt$CMYw2uoRKC!wvkxiTl@y&1Zg zq3srx)x*q$tDCbg6PLuCQSOTmPcNX^Mvo-54?00Nw7{y%ZYG@tbi?`jyYjR3B0u-3 z*x`h;7*jok*54eZx480_%Z|aQ;=N;<8c>7A{VKp7siY9(FxY~24c_Abqm_EHbAOoC@ zUKWK{e#lP(pP@jE`(B)`ziUxX$?zouHI0pUFRSZaKg3(S6H3;0Dztx5$nS$7mEIgE!TfTg=Cpnq9@kFcn~zAh zG;~X*#G1^{gP0+^yTlwKAZM=zcM9kc+}q^B*g9^YA04VE5FY}9WNh-JOEJV&rfUYu zWdm8(1V0$bknT~^aTUooisFau&GK|WE_mAy((zvh{8%F9A$TXYUO63g@I0$A^pzGq zu^x(eDtQvn(=wsl^#n83XvEwpjtI@M2r8;LjeMUe@xT6dPK8w;FpkR?zbAVMCd_i$ zfp5WWQ4!L37{ z-dar><7T$Yk9@V;ClZO!eaG8=t^S5~hgz2zotZXdoK~Z-fB&leJm>2WpQ4{K_#q4T z=+nm#$e%UAJ(nQ~lp(4yGoM&P#2b*5yhh??$E{IL)O~Pip?q<^#B5Hcte$3M`e#I! zeE5P&EUX2^l6@IRO;ug}nQbgNKZ%VmK9_M$a+f?+M%J-HkBI`?8;7W^P4pcK2R6NX z9E&)x`1px?@aWc=#$#iPFJF(JO%62F^7CD-R*rrYw3;N{PYcecKR~U9M>seS8TS~Y zG+3?=S!X6hnb)y=tIVbk2yK32NCj3*scaNqUdjiL~q;@aA$pGt>#3QZ^}K#=U7ve#R+@=kofWl>~ml*n>l z<=$Q{<}xL6je;EzrXjiyC_7&=c%b9fYR<0mou)(IMb@1DVhuLZ)Y{`_jpNE`%Fgs* zXAw12DS(!HNQg{106QQR~l8$v4L$ zi`HIf1JtO~x(t;4hKUgLEmk^tu2oE0Jalc<60-VO`NmeIG@Wr#MkH)#sEIxAUb6rXh?r+%#dbk|%*A6lbWnnL{=)of+TZ8W8Q zEA^f|@kpt$QD3t0Hd;o2L9f{dxZRlUipW6mkVZH2Q&7t>;$kA2X2^M?O|1?h>rNdAwXwPth%hO2KjP9TER}CRa@7K%kg{aRI}CO zQ^IxZp*8r&)K{s}gr!Ua{2g{9@qOwraG;^1Fm~zDC+ccng0|bIo#_kH7(}{! Date: Wed, 13 Jan 2021 11:25:06 +0100 Subject: [PATCH 04/26] Updated version --- .../PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs | 4 ++-- .../utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs | 4 ++-- .../utPLSQL.UI/Properties/AssemblyInfo.cs | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs index f859e53..dbf5e4c 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.2.0.0")] -[assembly: AssemblyFileVersion("1.2.0.0")] +[assembly: AssemblyVersion("1.2.1.0")] +[assembly: AssemblyFileVersion("1.2.1.0")] diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs index 97bbaf1..d3dfde2 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.2.0.0")] -[assembly: AssemblyFileVersion("1.2.0.0")] +[assembly: AssemblyVersion("1.2.1.0")] +[assembly: AssemblyFileVersion("1.2.1.0")] diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs index 3b6a419..745af55 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.2.0.0")] -[assembly: AssemblyFileVersion("1.2.0.0")] +[assembly: AssemblyVersion("1.2.1.0")] +[assembly: AssemblyFileVersion("1.2.1.0")] From 6b68977ed9d7afba1f848ef5fc6b97ab48482da0 Mon Sep 17 00:00:00 2001 From: Simon Martinelli Date: Wed, 13 Jan 2021 11:26:57 +0100 Subject: [PATCH 05/26] Updated AssemblyInfos --- .../ColorProgressBar/Properties/AssemblyInfo.cs | 2 +- .../PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs | 2 +- .../utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs | 4 ++-- .../utPLSQL.UI/Properties/AssemblyInfo.cs | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs index d5ad86b..95216e6 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs @@ -8,7 +8,7 @@ [assembly: AssemblyTitle("ColorProgressBar")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] +[assembly: AssemblyCompany("utPLSQL.org")] [assembly: AssemblyProduct("ColorProgressBar")] [assembly: AssemblyCopyright("Copyright © 2021")] [assembly: AssemblyTrademark("")] diff --git a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs index dbf5e4c..f0724c6 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs @@ -9,7 +9,7 @@ [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("utPLSQL.org")] [assembly: AssemblyProduct("PlsqlDeveloperUtPlsqlPlugin")] -[assembly: AssemblyCopyright("Copyright © 2020")] +[assembly: AssemblyCopyright("Copyright © 2021")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs index d3dfde2..8ce7102 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs @@ -8,9 +8,9 @@ [assembly: AssemblyTitle("utPLSQL.UI.Standalone")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("HP Inc.")] +[assembly: AssemblyCompany("utPLSQL.org")] [assembly: AssemblyProduct("utPLSQL.UI.Standalone")] -[assembly: AssemblyCopyright("Copyright © HP Inc. 2020")] +[assembly: AssemblyCopyright("Copyright © 2021")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs index 745af55..0e54db1 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs @@ -8,9 +8,9 @@ [assembly: AssemblyTitle("utPLSQL.UI")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("HP Inc.")] +[assembly: AssemblyCompany("utPLSQL.org")] [assembly: AssemblyProduct("utPLSQL.UI")] -[assembly: AssemblyCopyright("Copyright © HP Inc. 2020")] +[assembly: AssemblyCopyright("Copyright © 2021")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] From 057891b27ec76e773b6c889acc9f44b3b4845413 Mon Sep 17 00:00:00 2001 From: Simon Martinelli Date: Wed, 13 Jan 2021 14:06:45 +0100 Subject: [PATCH 06/26] Update README.md --- README.md | 20 ++++++++++++++++---- screenshots/code_coverage_dialog.png | Bin 0 -> 7709 bytes screenshots/code_coverage_report.png | Bin 0 -> 88714 bytes 3 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 screenshots/code_coverage_dialog.png create mode 100644 screenshots/code_coverage_report.png diff --git a/README.md b/README.md index af2d73d..2475cfd 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ The utPLSQL Plugin integrates [utPLSQL](https://utplsql.org) with [Allround Automations PL/SQL Developer](https://www.allroundautomations.com/products/pl-sql-developer/). -## Running Tests and Code Coverage +## Running Tests The plugin adds a Button to the Tools ribbon to execute all tests of the current user or run code coverage. @@ -14,7 +14,7 @@ In the object browser on Packages, Package Bodys, Procedures or Users there is a ## Viewing Results -The results are opened in a new window. If you've chosen code coverage the coverage report will be opened in the default browser. +The results are opened in a new window. Each test run will open a separate window. ### Navigating to the package body @@ -28,12 +28,24 @@ There are two buttons to run the tests again either with or without coverage. A right-click opens the context menu, and you can run the test function. -### Filtering Results +### Filtering and Sorting Results -Once the tests are run you can filter the results by clicking on checkboxes behind the status field. +You can filter the results by clicking on checkboxes behind the status field. A click on the header cell sorts the results first ascending and with a second click descending. ![Result Window](screenshots/result_window.png) +## Code Coverage + +If you select Run Code Coverage from the menu or the context menu a dialog is displayed. In this dialog you can configure the schemas to check for coverage and include or exclude specific objects. + +![Code Coverage Diaog](screenshots/code_coverage_dialog.png) + +### Report + +After running the tests the HTML code coverage report will be opened in the default browser. + +![Code Coverage Reports](screenshots/code_coverage_report.png) + ## Releases Binary releases for 64bit and 32bit are published in the [releases section](https://github.com/utPLSQL/utPLSQL-PLSQL-Developer/releases). diff --git a/screenshots/code_coverage_dialog.png b/screenshots/code_coverage_dialog.png new file mode 100644 index 0000000000000000000000000000000000000000..332fe3cddf3a8fba40daf9ceaa3524c09dc1818e GIT binary patch literal 7709 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 literal 0 HcmV?d00001 diff --git a/screenshots/code_coverage_report.png b/screenshots/code_coverage_report.png new file mode 100644 index 0000000000000000000000000000000000000000..10728e384b25eec735214ce664143dc1af58817b GIT binary patch literal 88714 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 q*t(fGj^)<@)2 ze|09G$dnm7D|m3zAnM~o#*`uYmCY^cmKh>rh*#3QgGp)~C4%G(MODi7q8UJVG2m~B zrJ_{4q+2--qcI(_3j1NVGq_z&c98@s{|u4dm+`-Q7bc;lCH#MiK?IX4WmnOR`ha7U zBlPC*7|?^R9t|u)z&ORC?hT*r4hVJ-3(K8qWqK$U{NfLmqEBu`~djtEQ*HHgn zi2>={|MaF0&i-E*4*pw}2rYa9WX1j!JAU$@oH3xiHq`w8(h}bdLdZs;P)3OgE?v8Z zI6rcVZ`p*5~niW&m4(?h_o!`rj z4)w1X$E6I0v?tP4mtM9iel42W*7iV(v>owS#lNf{7zfnmF+=}EI#qH5hw@)?Rraz} zo+kH->E*~X220EV0^k}e14tSwxfrMKEWJaTjLV| zH$%`Da>>o>eZg@?Q`M~uWIX92bfly0fKP6!=*Dq}nbvPXmEYW>mtlrV@kfFkd{%mM z_`Z_<=1ZOufYKhfC`9E$?5ytD42Qdd7hAr`49oY4b$Uv6XQvZR2$}_Kn#k~JQjpnk z)|zM#A!z3#rIEDW`c6bswXyIeMed8OY~6r!2idnvLp;^`y-#10F(w;S-8OI4MY_xa_g{*}w0W z2jznGB>eM*{%d=yz?cgr#@IjCvgQYJ_$34*L$iTkm)Z@QhX;3njy8UPN#M01_3x^Y4nx#Mi-+s+4 zC$mr}sMf`JwbBys@?2d8^0)S25bs|=~`DV6S3mG6k@HecqOdxFsX z<%eA9dQPASl@Qjg;lJjdzdj zf*W7lT0NHx!pgPXflxw0< zT@K{@9Ahj*%Zi-;!;z<7w4%1Hl`PeNIr-jVW@dw2x@2rlF-J(x^$a2GQ|lpSncibS zWYd4weM&>-UF@SlORL(^zj|RybKj(msmq3M`Cryj1aY;iIPd8P^SUw>R-g`_BrH^D-cg~Jgs0B6&R0#b zcXv^NoDw~A$kCR>ZLM~$TeX}jNgSn`u6)Fv%YkFZ!c}RVr*XV|lwRkytCVl^&E>5R zDgo}BUf90Oz9})>Z7Pz_%W*ZH9>Tu20LZ?$g02CQveVb^SFCVRy!K5@jzQW#nUy@h zfQ2ah3W)3r{02tjRvwb|EzUbVXNNglp75%`pRs@-)=!gpsivDb$-@=yRdN)Yhx;}n zA^=7C@+mz=TjB*NznRCA zAKwMYxo2t7Ly*HItt8viUCO|*oZPAxmxuO8%yFLvn^3TL6JF>WjUz5%(&2;b2&ESaL~oM8(vMSi<);%aO{_8zxA+#G+m#An znkz?+if~C&8_92v7Rpuw!H~D7<;*ft!61rjN70!0C2T}UeA7|jF91$RU=0p4%O)7f z(X9A6-mgUo3ie4v@Aw-+K_i)chs~p|xL7SiNEMZfLPqZanfOs(rYp^9%i5a;@4aue zC+>`^U;XTQ7&J0;sny|1zwz&~17_4k3L0YT>&K?Q^0@&WX1O z>{pYz1&Adt`^lKrD!mTHK=)4}icZ=mmGl-YG(&@)$F~Ot7n~ACYWOEy+&hg3!zKLe z;ho0unS}*sx%X0Et$<`cR3Vz)arw_@bSXfcnFO?=Ci3!)jX1d@0neDt+*vt*XjTKG z#B^&_q8CJUxtXf0Z`LYB0~N_bccIyw&i+!>&C?#s1)H~znZ_RpAQTvB`b-*x-W-bk z+xJ;g@`fM;Qf3C zDf1IP>5cyNq@m2$YPx^bN&}ydNYeULpaxY$G{ACR`+>2weMFOH*XAVY+?tCI zH^B64zH<@k+Sjyv+mpb@dLQ7JYgLpy$&BJnXOQ9f&02{aZm(tdB&1}cJu>`xco%&1 zl8Nh}v5Belpmb|tXz{ojV&AD)$D7C4JzuuOut?}K`-WI49j`t4@$Odjk_G?M^b za~qiDZYN&{b3SEomce29dz*OjrmN>%*9mOT7Z(mWkHb0xK= zXqFtd#{hxC_HWdWZ1eTHp2eXGSrV z9nZ&kP`A`xXko67?c1psJV{mY^V)f2zh<%;rQv$u8U~^!?lj_;kYm($cJQkZY{Rhs2xIoRCpkj2h9 z1i0$hqJdueyElDS$7_tvuoKRpp<4LqgKyuHbPZhkV7!f6o=H|;m-~QtwXiIDxom3l zblW@M13&n&Dv_SwCT?5lHnjKk=AF;=YUFrHl zbq@Kr(kR`6qAgFelPw85n`SO|?@eRB5!>>I>Z9wTc2cyo_^EFSzKur$PaCh?1vC7$ zC^5VSE2{f#JT#SB@1K7k5(!y(C=^@R(R@+R;|VpGV%^gH(IPmTKURF~wtD&=_Oo#B zct!ARk~Dtf*jcJTd(v8ybUKSG=0*CE^GQaXzY-9@1XL$YiBZ4Iljae;ZMP3Rv-HdMpr@5T(YnK@xJZEEl-E3C8*<0!O+u591i5ElICa!y(nX8bb zOQT`$`5F zK+5IcLy{cDfRL?u=HGUZ8^qyg0xDFMcK)L?$5q+3F3)o{A76{YzY!7m zRbuwlMGM)cv#)@V$-U_>Bw)?|XESK9&L4+Wt-mpmb<~8Lyduu};4~vCq#Y z4UL-p>zyjgUl9Y68GnBV9Swl`#l^+L7yVD(0$zF^WQ$1B{(5(>yZ=l){P%B8-paCF zII0KQ{nYM9`(->1q51#(+Q|iEUr2-#H z!cpSyM&Ski+M;rHe!Mrf08FcJ$M*x76$UYP8@B%X?Lt)LlLas)e9pnWAdR}4NVtc6 z0pE`|P@{H8C8N6|hnzBWHiRe0vSbt0%AV-yS4tkmdSk(5<>oo|*Umd=8x6eu zc}|w2((BIoc#>34|5V5!vmjmT(ddOHWuJk3e&C*Qo&^|>CHrvGWj}o2x49hqa^0~~ zxBM2FdD`2lYS9z!JDamC{uedTI z#yQq&(+mv{>JNCf^hPPVG{8s&Uyrr(*>Q8j=%RJNpcP$83u$_1=L0usHS?kgqS;L5h)!8<(^{B_=!45rNfWtO!qt$u6s#li3LbEVg7 z**%a$hPsK9QhHT<4wgxl6d^r@{t(WZ!fr4|o;>vk)rL;w$<&;5!z2EJ~_J=3NdY4!DW&)kZ}UB^_D^-A_{;|?X!ma zTNcX!1|x(`W!?~~Wa~K}!TLB8yg~3g6Qd>iMCk%@ii_aJ4vET#Kyd%?Zyq!RPl9_O>2UZ2A&TxI(> zSaf(lEypDLb7$};t|!0&W?uR3j6WlMKIH9(@UpwkmsYE(o`tuV$l4V5qJr(m78Gi3 zemwV{IfWZrAh0v~Yf(DXmQwTC^uBHcm2&v4ud9yOJc|bu2n%>F>wU3AvszxEc}2}9 zw*Ly_)zqaSyV}*agzj=L@$)fS)G{TH@0oGdZS8nH24M!SdH!Ry6|J~PRBpSm$Y06) zm*7O4gHB#q^c6X>9WMa`QyvY5zo>C2cv&DXXMNZYInNo6A zH&c$jvfE?QU=Hi9(8A%LC!6k>n!kNu2ZRNjYV#9T6oQloK1|Pq{n#y+nvHdh$JCfg zyB}ZaBMLEB_Z>NqjBdvE*?A@#Vj<=49={^9O{>)>HQ?rV!pWL%%;h^hnL{1+6$HK?dHU^t!(>9IR7k0O5lXz;J$#M zUl)PYQ@XO*22$%6B|ieN7%+Eh6piWyJtp)#p^(Y(^z-_o5zA;?{=E=b^$$|Hd4y8b zV|J@izk0*NoxvmxBs~;JN5w6?%T}Ply)cuzh87TgHKG~F2O~->v*mtvkebru{XyNPlVIYL zBL5F-?;X&@w#JL9*bo&J6#-YW27uE8p{D$?jaK_#E z>GSjFapu)1MT*>5^3OZc!c9J|3z0st>526xP)qW6H0e#ur+HMO6(h8(3&UVUDu&pO zy*{iAH@sMRQJXw;Y7K7aas#>tDGVpnVMUFe6S3ac;pO)9NGD&u9nXo<1a3>97Oy-Kc3LGG>c+1jvWuZb=omi;Ui_% z03kjCqmfw)=Eogf?!rTNFOGwVh~l{9Bo?ATT*;X(9Jo;2D#Ij(Z;S`6KsIH{1lC&R z9FR^WymAxKv%bF9vj60ZuQv96ripMyP@`h`-treGhCM^#byLJ(5)U(yn#ip7Zq3hv zMav-%gkpMswyhP5pL%B{8Sx-nLP(ZrQvGna_Oh~grOcZdi{eoe(9zui@pWF+E4oQ? z!a3bYDRV(EC~uOipV@q~_F%2?y|cs85ad_AvPy|cok}>Gnzjg4UVG_2f0wy`zdT?? zwp;aRX?#FItI1xJ(eW_5e^1hvHq;Sc_C!4~`n;NGoKm}JCNPXnq+ZJ4QufL!Rffcs zG*QoVg9bK?Dn-5ws7ArgV-PhECIAIrvD~8LYLi$RTO$Ui^Z+CF8Bsz45^+QTQ_S=kb;Uhr>RM;<F@#lv41=~&;{;570Z=IrZG(|A zi-zjS6#(M)&1KVyYnIqWLRNlYIvnFJy<$lmi{R zAa?VsxkklxSoRT8C15%*H7_;*lvFrId0F0IPf&dXRGW%rF2V{#w4-)TvP;p-cU73X zPNxksW7WIE6`TTW$602~k5V1^3JTTV1uugYId}&=< z$)jEo-H$VVnk z6HT+Cg#ZKqN+%Kk!WxXjinMjPVPe2Y#yVOv0fQ~zr`=n!A?u8f!_Knk<9K}f=P81% z8&>b#_af#=w0{g#PDMsnn#|)Y&lE|a4IkfD#^o%(=-Tq!*>qd?{jU&=9R}&gezO>d zRIxv!AzXjgxcwQihzPWF`9zu5eXI{+mR%M@1?mtcg(vLFx;45-zUBvB<((Bhe2x0b z?LfsS9z7~1tE1W>`05e8_!cwzqUlF~ z!ks*K3F-}o?sKb|%jRcEV&X61>#EW{!f$VTM6*BC?M`uUni-{?Q6G>W!^0xqItITo zCd*;B!_hdZxkkkZPCcC{Z0~4O?};a@30z352yczC7T3k4Ba#UhFwk+_AOy*~U%c|Q zZK=&oKwIgOIhW3|ZFJjlFNIZzD3LZeGEJqv4%5LZ)Hk1_g?d!(tdVS+%=C$)$H5<# zux@)?7g0ZbUw-}l;qNz*jxBxGOCuGplUfA{*!QLnyYIh1FQiHwCXy;^tnDG#fiOO? zr^`s7ckD}wSGeStan&_}QjuES3<^_ur*HJ^dTj<}_d?1!Znu@3|oOU0#QWwG}Q z2fk)pL@St(I5Ahk=O^yvKT)~^sb_D@_yEJwfD4rK^P7ny&YsSnGn?qNk&K_v3K~F4@M4n;EH1?I6&di zX3_w%^|&X`T&_w`SPd}zhdKwgsApDbBO@FVrJ>V73Pu{EF7oXkb|7Kp9?M*_|v;JPi~21Ng>{!T!CeDQbh&TapOlp<4DKu?L^`0FZq2xzQCMY4VW?JMZq zY38Pte2j$1L6GCnxg;c;p+$$m!8yM~U|IfTA>xFxUF{2&6*6)7C?<_ z&4&w1QKe-Oyyye7cK%6|UHScfwxU%YwzoS@RmYw(4O|s+MiiGK-7UDSd~Kv_poO{>^v5WiY?&G=W|6!W&yoP8e!E-QBiAM zOPTZ$?Vv!_Sa*%?GbFtit4>1;7mQIIaQ?0!*$iSWCXv4@mywxv<(brq;U>W0t7&&B zaB8FXoxqq!m&b;@Pc=i3fE{lOrdEXh|}e9b7!1>aH+D# zAj79nEv0R@dB04`E8ebq0_-DYTY7Zt;&#kD`5=o^?O>a`%$&9s6;BDc%c#u5AzZcc z!@9)=EXJT&4d8u<bKZL_qD#nNcnHhQUwlaL&&cu*uXy7sA0ZO*G?UyMqRLz zmy$w{jU}-h%;Lu(C!cv5QM`}gL2(8w#Z_`9qo1X{68b0eaRa+Qu)ix+$!sOM;oay) zzM8Mx*}UL6J5f+FMZrP#FG#0 z)e0JNh3Jf&b;T(_;#K5o3jLOY^=ZbzZ z>`-_F5Z-cG5O+Sgjh}R)wY#jTzQ=TtT8xG-(z_E?f_(0sthI38^>V)GXWGQDPDSJe z+~vuOlG>o2kkOPsYa>94%z<|;c8s2H1b4n2wfgnnHWoXT1{oI+wy30}uiOTS8_PLy#s7a(p$MrZ*>T{ISX+<8^*UQ{b?`J5*i@;HyEQ zO>N?Z#{CMrN);Z2i?0L0ou!&1RlfayaP6r^^teW}kDU9H?KOz=&TYvatO8ap>i!y^cG)W&cqp)V-e#O4v z)De*@`%ElKEJ{Wb0!{Fj@M+w6**<2j5);WMDr zC6e;MiCe>GQ!Sl_+osYZ`BmJQ4(HMixx*Jm9>$luUJ>NSw63N1m-s78){%jv9CT+W#--^u#?vleXIFax!CP5T z^K6A3W@Ymq0`DE}K>*Dye$?r7iHVb!VGIqD+6eY+uOy0U4C49>MviMGZg?JQ&R~yn zXR5!-(4Y7QHddNKyIavqyKIJMJc3ZOjOBA;#-cHeWxh`IT{C9&kdK7Vb-b1}nXKWH zG)E^V`Ya#bMWld;7!6Zkx)nJ;_+*(8sbPI`-qC0=|8cblDHQis%$AwBF+wR=s0>=TyKz`&8xEzq`l8|N@vOoiMHe< zkz`|gdN?9idj}65ol;&4QTb9Y$CrV-7?Gkdhq!J_YvYeB?xE(RZiqnY+X3UpI|G=0 zblHj3>#dg}9}U$Ou(im7_PtsD2W_t1N@~!wx=8yF$lbW}y6g3vuP#^c(D~ZAs)T~0 z&gku)i+|vuw9ya^inwcyB6H~3{iNIv)O;=a^tsogC5Pq)G}1S0TQ9>$m2ct4`^ktW zVdN1;5_QLG^Lx;ggl)We{DUEIDEI>XjF~1Wo7j~|O+_)A?ro0){BE{?@idJF!}Kmu z_Ns`=#}@Ob?Zh#}c);v-;7x>PLh7St=Iu6AYuNQ9xITPVjlkW^HpbEu>awnLuu2B| zcH|8=Lr=WO@~m^*nSX+nw=zt{mAmpxMVnk(p{kV*m2fG7LeWX5{dN{|=CLMDj``D8wB?zTT0raNXa~BlQZHJ%1vPoU!ZVBs zp1VTH`t)ig9FZ(hM~rT+1t81x`UPwkL317Q1**SuKf@LxI@GlsmfcNlc((xem9ECe z?VP!ZXdS2O2E?GB@i#*Dc&zGb$@y62{An5@2lTB4Z@w_{0M6Q=4`L5up!z#DrlpZF zIeT9(4^4JFk2wAi4-+X^`hMlLkT9#hrJxvVnsJ1w?GOa&;4lN{0(*OQ}*8@iU^sOZHt4`3WtJZ6bQ=YnOJuITO6Fbl!u z-#Fy~2D+AA5(FU0Ydi0)XxxlzMfP@jkT4>F*-Yg1Q2uVMlRqt|B7PhUDV zQuLlr?St#jI5^+4jlySnb^u?AF(Iu=DibZ)z zt}T)L;ljqNfL&bWEy*p8yBCYU_xu?RBPp=GkaZF+5g8~~h5HuA;zW%DzO1derbUN( zJ$KzEFfgnHD^D;1)d%DO7YV_dcv)3reL`PMD#DE%R;`(2vvXptMZh@9mq{-Ohg6 zP<7x<+KFl3_U?36{O}FG3PH=O!6dBbOn3NFa5&BRO+Bwv@D&AE(^C3nJE#= zLQ7|C)bGZF}NDE3<7;`s;{O&`#g(Uc}?D?OU{ny2A{F9lVFPU1+1oT*y9- z;Yhz%4X&v)VA&?G_-N6@Vb@7WQ&(9l;Q;d?p9ldl=q>5Kl7!7ez0q&~8%HGF|C@g? zY6A!v>;?||H{HUaXh48sck|WH``N;*pLQlDdd^m7@<=`X64CvcfqmBBB5_x*O)(s|VN;HjE(;oltitQx* zpVJQw3ld8H*c!-gi2`vBI+$h#fUpr1_IeBGG-uCNHvU5i)1QQNcnC{3)K>^$1B6cV zE5N#-v@tUrT}JFU0J}0cOYAD8o&J`&Qt!%=>?l?G&hr)w5inO9VKg(6xOc{&;*}{) z_191J1|HB+wnN#uvo!)*Z$GG7i;dg&8xPAcw-3n}{?E#>8okI{V?HfeM8zXLtoENu zgX82LhNcGkPsodqSz6-k{)O8`zI0sL%S%Zd(Vu+L(Fy@T(f^_N(%yAXAEMp@lB|gh3%wKu zcT6@I0! zZW~HP)OKlXEq!Y}p(qNl=NkqTlpuAnBCcOt>svE(;8n&_*~w=3BJYVWVU`c$F_IT23=Z=o7zVXdG)z4H8=#vNg#N-a>K;LkW7IVhv?qnF(E22OFSg1J!sJ1tdGC1E-9G=D4+YgE=In3xh;ND@}?}n;y znKp}Y=w|Hs>~C^&% zcy=mbLo^9dKgvmBXi_nlHl%B`-Tp&Ieq6*K51L5ide&VwAELUPp}ba29K=`%tGT<3 zaiIMt>X`Q?b*aK0;4U{7q)Tv+y*H}mn)mIKXgVoFsH;GGCbOrKH?TE$9pD!ctXK5x z^cRY8T(S_f8fdn6;QgmzYGcc^I$gpDKuQ0d4#ww9{H!ehO( z<^WRlvxc=Zdz{+X;aEZ`=LHpMB>J!2hn!klbZL7n6n(||T~{(}t{sV@i>n{E0nwL# zw76Xfb!2zWKUGyI0_iUiW*8x@NeJAkKo83zUtGzKjwL6sD*@p`Lo!QWgZ8EF6T3It zN;+XalL#%Udy6eHU{$rCFMzIpz4h;$oVE>e46;eebr6)K1M8zFa`JD|T`lAfPZxdF zqzkV#j|q-DF4Xr7_G}!-gRb%Z6vqC1aS;iae+Oh0ne;3E>T{u#q<-eT)OTUb#HcYj z-ZID$@$jj0B6FECO!$4{M{N{+K*0j&6FPy{ukv+H_1nB+vew!TIRv$Zb z+OmSHPjoNFZ05V^5?m^Cbohb)q%F067RPWQ?fj8L30^qk{r$-(9;)?hv0@h(3CgC1 zj)Y-Sh%ljA$52}^QdKsW0W)lnw>Jv#P++EOGYyR`=|B;4v8tkv!|qgauLmYkx3}Nv zBP6pwJVU;5FCl)n(`PHH7^t~U!Ruw1apLNy;ZT57zna8qjSZaTHej*xw-gmVX3vSF zNB-DX0KjP7zGCq>p|YQ=^vIiy>Bmm@74(A>si?tY(vRl~%9j1s{k`SQ-vT1Z);PaV zVCw|*f^o3+XHV_@3_3jb5-1QeL2_0}n?jAOTX;f$_{JrwEFX942xD{e-rg3h?-l@$ zS5suVO5ecau1+$x(Zv}BT+6e$PtAtlnpKk45%e?i*zh(115+P=t7HvFzAN`;^k zUCc7$&jDM}KdH;jEbcqM2Y_=F{k8MAGB(!I<&O|iG0N-@sExqC^w(%#^IIL{Aoora zp|fHP(YyXx$TalAeBOF%L%R6L#B+M#R?T(Ty&sIc;s!YR(~tg?{t-U1ZTMK`#?m*5 zMWS-Z1+81tpVMi?Qs;+2ZJL0D%p6&7q@>!=&p$8hlz^q}J%%Bi)EifM5=IQ8Xdu|| z&zfL@E#lL88tGFO602Ve$WNg6$SWQX0R<(dEZ}bCq!#kl&kEJmDpGjlO!4!YsxOxX z?y+XiJBe+ry&;_2q7?~Do4^{U$B>H~PO5p{oO|*z+(k2Uf_y0orfEJ??gk!wl36gl zeBj3#k;|EA?O%rhM&BWy_jQ9gX0dAH*_YUdkf@^5@Ql3qc&*4XcVV0Tc9T1QNnyIb z0%dBf(f|*SbJt`}-}_-iLvh5db{9ZZiK`oU|9ucH6Jq5Or{qxsv`x<@Le*>D9QQH@ zrCi6OgO0x}d)a(SY-@pen_HN)9WUMC>D-rs<&`)$U2wvPp9rmyY5!6_ogk%8Fan=` zaO0%if!=lhUBTXclFG1lcwMwh@GG=@-uM?c3L0|&zW~FEg4nZEVQKSS4uvI z<)K^{W&105Z^BE$4p%BpE}t*AC422Q>vK3Ml0V{erh4G^)faNg0raHB;EgM$(SBFb z4&}z*i^5(fH|Qd)tY_~woVV_yP)-(gV%yePr_ zY+GhmSMLo|n!Ei9jv<+jF1IuA*?Lw)H~B}lFnd`T52H`7u2SgLfb&G_i$LGQzB(E4 z$?5Y449>X2W#1lduZXZlg?Rm_fA(^kndg7fP}(Uao4YG2nfz7v$(IPx8F|Hm%nK*F z-$AAx0Q(IC>Z55LiFrTM%Nv@Z;`;L^4%<{Frk5ose)mU)av!ODm{C&))m#N&d@u}52t?fZvM&Y+yB66X)#lDGx(ke8U)T)0K-G`YOz8G&)SGOiYUQgWoP)R@>UNHBR(* zoKr!EO*1WMu?yD(?HhMrki~vF6cuA^^&#san0>*NzpSSW10)fKw5?_WY28^p^JjZO zA=ih3!w4^kU6EdWRT$`i>$ejET@((-I%x@P$!R*s{L5ke0|Q$x10=D=dN&vg-6y#w zyC+jLF-}heC2%acGG0M0c;ynx z^PjZSM>>)kf9Ot%(<^oKSB~5>zXEzHQ_aTlM<5a99s`q|B~B z(=1!2kcje^RGijbg32#WCb1NFrHglnEM*SbTp(3)K}LSK*brX2XRI9ObM)BA;gb!9 zU^QkUvDkEAJ?9K-%4zSWM}Nbs>yA(V2h_>Fe5;cC=&d#PuGlG$Ki?Xxb&y_vso0TM zf#PvX5Ur8?MfREhTJAOh-v0*y;lHzXNkDqU7HZz+{V%Az5A(~=XnE_GK62YO@I@g- zW;BR(`SGGKqx+M!?E0))FCryZ<`pIz(Ky(1q{5}tlE<75lcceUTJoET<(=RTb zo(oH*K&tg$P{r=4)N-3RSP;(>5Mib|$V_mNG1s1CW)y* z)+X0a6|KiI0G4L$$kqjZwC9{JiaNj9xN#;G7FAqF5PAsn62d#TW98pdJ9BdcKV$u7 zcx=Af#hVHt;EOK45N99~vsyzRncm@BtZQmk4P#yWZ%Frx5Pibp?LlJwFy3{@&SVrD zjkFY#Fbize-L-WGe?$RlE&%3oLa{U$3-YVP9CZH5Y*#exEJ&D$g!tnmAVt?S8S73PF>VDfMplJI1O_jj9qSF!UNHme;tIq|7XKaD zR*l5p7zGk$ig3vgnRpCA|AhpUc0J8MHv5;T*R-QA6%qL_NK0*?s;{Pzg2Ya+q0BjB za_qirqCVt3YeciqJYGY&F7qaRb?QlENXs-+_3Y^tpk1j>a+?m@avz@Ho&`!T{XvGT z?ASc>$A!t*t_Oc)S&on ztB{*sPpo7t#07D>XS)i+{dCcKC=A>)kdF5xt8U$jj{`EL7^o+Cs?~A>Xt5?9x2q=t zExX%7+f(VN$cuwH5&gm3wZhh;0seJa=XpZD+{4gJpwcb zjYpjT*>yTLMB~j0VJvIR-Tz9#0_Exz4SB-N=AXu=8zZl2yc-`pU3Sxi0E04!OSLpLadnVZ{ zXttTC7^R2O@-?6#@(ot{E3gSN8Rp%VUrgvyEoHxwW#thoF+qcQacy)3-=!g3a~7Z{ zsFh`QRb8l0y}Wl8^JD%J2HBjk;ZlV7thF2+j~Umb-IywqrAFV+U+i>1YpzAOy%u(5EH1VB7gq%#6K8FVEp{Z zLl}b1{|5%$_Mq%crRb>Cq&@_zIPX4$P+0RFefDw5NLmS5TiUUz@e*wqP8q4Qzu1Od z8$V_z0Xy7E4Os_Tb9x596P`$QSyJF7#g){7n%>)f^a5XQ`u5!7Y~}XiHVi6@4cRMR zZ<(L$&slQR^sVTFxAThz|A{wa{{c7cA2(h$!6Vn}*T3YTCNUUj(Gi)r9b_xS*%xtw zGOc~0nQu_*>J#4|j}t&n1R?pI7^MA2U|RkdRho@~T6Xr2?A%aqXKb@SHwP*t4)Xp4 z82BaPl&%7^p?zUH`q7Ky`Ue3lxdSMC1M3)j1j`iSECDqDLzE^-;!nDOO*<(=+I6`$ zzd=EKdmHp%(k;MEF+xVDZ$BiuQ?!SY>U+3KmnX@LQsqi_f2N}T&1s6dlTV4sDWwB{ zkq@XrKkmE$K^jYwamxk>G&byK>I-c8-lQiv>5Y^Tewr>G25n4WE!;1hxQSFhkJLQ_ zzErmz5!+4L7K1_i%2JL4gx6!vpE;GIz|7A?FX-uHYzUrZE`R%pUNExTSwxLD<+nWI zM7zoTLvq8GuoGYm1vsnthsnPGgoI%Rh&_RHF440Z5-&mS7y{GlTdjOgsZoTvd#|e0 z+t93nXKf^*ABU4z$=mVJ^E7`INrd&momAuF9p4@RqL{5ohR%f{bSG^z$!D+&p8=$lw}A^!;J#`yLgAXRx+`E2CbgTEPY zE(rK|tP8Y1iCk@bI=nLFG8djw0E-|SMG}Q2hlN*$>i|i)wA}&hQt&}ATj9jG`~07a z>rWqkE6ug2RSP=0buN_Wz_s>XAs9QP_t}}a8Kz+Q`D4k|KM*g&Dbi2@`?X;*nd*5Y zZjaBsYw?P2Cufg=7nbc%K9bd&_^q(^C7&Q`-02ka+!GY~X!RVK*Y1Sfk+<(hm#f}a z67Cnj)94m^#*Lb`t$i+D+p-!B5odIzc*j`ueM+2VwHXa9Hyu;9PN|6W|2A2!8$4Hk zJw<(OIC*Nk1Frq{$4FMY(paL}Vj$A|p_|I5?<)t0Ty*4};dC*4{{=~#4v}UvB}C(w zcoIzc;O6C6e*O*KlHUI^qy6NV(Smk!%xGE;b#+glxX6E(>lJ35I#3j4>k!8?-X11- zQ1SCf=U*P79tu>|Nztp<1NQ_cQ4-V!^{=jbB;WOfD;Y9zveI0aFOV-4 z4bILIJ6|}^ngSRbQ|E3*X28N(f5sitCGgt}MwWY>6_JJ-o|e78FmR!&%eBqj2T&aNmkABex8LZzvqjSCGC5YX@Qw9UJFU^u)F?@7 zM$bl-VsY_Cn`>0o;aRWe*JZ+rU9W$slYP_sVm9tVFysCEgZ`AjyLeK&OU292!k(ED z7c1*6^h@HYMFxqAMX9eX_cCY2w7(QHnjHSfse&pQOwx<&9%U7rvK=G02Kz}&iHK%w zjpB+WJv8Y?q(aalht$@HO-^yivFvNc705Wp9>+s3go)x5K-XlpPRD(>$&86ClW2Rh z;k8B^*zBmm^y`d+R;iCq@!Q;_7uYLCTl>1u>zCKyfRwq;*NP5dl1p@lTS5w;u8&@D zKg|HeyK>P~1jnN`5B>po9z{}F28kytPpqDO2|Xj*qLiU(VUaC+v@D5bP$Bi8)PCeq z7I#SendyNklA_LVwKaW@7F~WfwcuT_nHwmPNENNIr{|pM1wH=eJ3T9M`}8-TK6WD0 zuIo(i<~IGqJzzqJHZZXH^J(>3h_;k6e~6>bm&;-^_tGp60hX;cX?xtYFP@}{KAzD$9u&UU$6Fs+YXDHY;i~KRxJ9H( z)huvg#;v`JS}k2i4Q|6edIi`A)HlnVv9lPbsD^#@j0ky1+;Tmr}h(KVcT`6Z*si5r`;E) zSKMKZytHiB1n`|KsteXw8H4mcKXfT3qBVtB*-{%Ai1b^|czaT)Sif$$s51DZ=g_`G zf1hFqF|_qu5^MM@W$3Na7MrlXk}0?f@PzZjCuT&3evJ-*2OnFkT* zPnKa?&j3%SLbdU&|~HRbW40w3m|Mf9HcK}Xg`+X`o@`p13UUbr;m`_z`1i_gBi5qVhMu0GeY^aF&aM^*AP7N5Xq8O3bdZ_Ko>eFW zr16N+O%-9oNwreBHwv+sS%&Q`pzOc;6_8BwUUJIi-}Iye2w;`gfE3Y+ho+`R9C_$w zWE~#O%0kcqEsX*^s?JTVpPx(734>hy!3QyUf9-*KehW&R(RALEz?B1wT(|s?pLp=K zVWk?aabB)SOIfHC?p1!J;c#S}vE%2F@55p;Oh-Mh8)<$$LX1&h#EYWSs>BNF4o{C->8a3MX#yLo|nTkbWj+3R*8N(*q@ZT6eLi} z#s>+H)SOa;0~e>2#T^IA{#c-uDqR2vBxE)R{od1$Gz_ zQuAhuj9EfYM0JLzl$m}vPHQuP9a2XNcSZAq zrPPoe&)Hoqdy8i{i$>oUoSoUj z^Hy@Ay!wd;b*MB;ipKj!-qNX|r=7myny#mvEl~UZ_NkwMHj+$M!6Q|xp$4Jnq)piG zB=jH}#S(9$_&2zcqz7Xkx?a?Cp2I8kB3pdQ4l@@51}&B?TyLR1%&r!T?|J>~mpJnD z`6A0NsL_FEWsY1o0{rZW+5E9xGeYe|(Vm70H}gGImjb8tT_u;5jf)8O%j zQU2I2Lr?a|_mm1%QU6nr7Fe&w&A{0~l(&9M<;DiCI9f^6_3L}?O58ffNf%&NAsor{ zRzCBA(Il*h9I0F2?9TI#6D$2Y9>zmKQ^f3^{;#P~>sL1F=zb3qsmiNK=-F#N6N-|P z?uoV;Ev=f7vP|$O1tN^bS{ir#G#?7|ZUS&Gwhl_-LIO--ApY28m6!EZ(6}RheWSDN^kJ~{* zcv!`rq{VIJ+)tenqmmwS)L;QBOK(?rF)g;lJwu^rV{DKWI>kYsJ#{O(1tTn7m3uA_ zAf6D>ewUk_BQ1c34j3n3(r2?kY{(+LjlF&=Mg~0M%F#2{(`HiVKJ$X^a#Yv-^F=^0 zFnlB9+E0U){7*+YWPgPO;u_F@U0;(uDq6!frMBbK^%qGIw@h>wDcZur zc>OUV+E16+LtTjbW=8o6%-(gsl|S$yH`DQe7`Xu9U#cvZOcXX0b?TdfXYa$KA@{2S z`@!rNF)Y8%Cm&9lC7zMQ%|Ni_2wt#yN)f8zO2|*qMG4d3V^-G7A*9VA@yyUl`2@P>9$y`Yt#kED!@c z`N~Dgyi+ra9fo|YR~9sZORmRFCO}sCbvrxPGEF}{3AjK#($P-Q|D-ul29&md*8rTv zN|Ay#oCIUjcdi5ZYvGUtut!8K!oqv0wxQ@4D#=@LtFd%Tr z*Sf}Y5Iy9x6}&n#Lt2JuiUHyqSL5Jeu@|uQvk{u~=exD)#AEtf<1IeP2zQ+6Y35E~ zHE~zhflQL023!O>XFc6|xc}1ywfvTS_nTUp)~@iJ85oU zC=kr?w-YJ{Xgu`W2PNoC#{-f=$qIg3(YtQyFKAQKubB6HE@MCtUe~h-gSR(tYV_uY zd)T^?2w9|Nudm|F^N+nI#LB37S!uiL>p`ag|Kt1n|0x+Xmu(|ObpV>dyIjJJIn5Lo zlSz`X^anK3&@K|hysX>HScjt_IBIMB)=dX=UP$D6@mZ@Rx-A{Kl1kW#FG4Y(^#SFV z#V%=3DwAh4z6zobgU4>SZfXbjMiyG{xRx*1`gDuDfc75)GRdJdEcF=o=RPrf(KNDG z-^I=@TPJ!hlNcSddL@69^|UT65gM!R=mfehbof^w0tARI;6zvi*_5EDE^und{Bg zn_C*Io$E|fn*)L>MJI{?RiRodGvOv)2?wMru6Zo3UpI=n={=JU9y&2%TIAxaa>}Kp z=px3$=LJyKG2*Gegl)>}n~i)`l87IkzQ-MRw1S8M^~M1%}cP zsj>hD0yO0s8SE}3%ZLe3RmMoh2%!(krW>z@LpK_;h@L*Ni;69a;1nVjsAXZ^t?6Bo z_xx>|n)vKsvvmAlrm5zu(mr9bV54Tolra4O$3p1^am)Jy?QW>DNF z{&=05QB;t`5(p>HhpO_OS3e8BYxO!_@xCN4Q53BWJ>G**7x(~O96U@OPqA^Lc-9q5 zzlz)Q;d2!N+~RV*;8Q&CpXXJiqimCcLaC<~R`=T%jHUS&(a!eG6hf_U*OodJpzIhn zDG1o1#DCCrzaYZ_+&^@w1-u&$T{jEyL6a@LXxNIGhE(Jl+}pkfNP)P;jX|FO7h=F| zAqL~1R(N&dz4w~EeL1dK?5IUY5xPKO{Y3q+W7{FRTv4$rg z+5hi$s?=|XOiwnRaK^bDa`n$^+xb+ctJU^7NxA3){Ve0%SNFc#GE9eFS^Bk@(;!p* z2z#t%AJ4N$!IG}wu5iUaaywTkeMG7nTMe)kbTI@8~qMB~;ni?NfUJAKdr#k7$$ z*FvhnM*PDp!i=Jx0jr!^_#o3F2@RCWP6X<8Q0Aux0~D`fMJ9j*0FP|0g)6|nKF@Cf z;k7?b!2V$FfA`|j4Yo`SYbLNhcvo__%|Ar9SYRjo3q7=Np$FCRzONU2Prq&7RM{qL z%B6jJ_=|c}Zu#`3%BM3jSN_pi>9F7W+VY%{5?o0YGB8f{+)MSZl)+wga^3g%<|3I8 zr~mLtCCw`Rk3Ok=nHndOQIguG7K<3rOadiAzO&zh_mlpcFI~yuD2Cv=>lLv3?^xSbdg_hRH5o48OOiwUIL5qz zLFImnCEDODLLkyp7_{9d`^Nj*mlk-WBeGn?Gd7r?mPjxnUnM*{>6?3jVm_RA%tk}s z+WIh_pdagNeUyNd@dl*c`p_xg<%ye{x@^FGem4z-M6~nMZU+A)>Dh1j(h+Izck|0P zk<7RKKwiVz$Yx%HB1|yVqwf*2xDF)i3l$AftZo#rb`87*v@O+6&D!PgAloEP#|S!e zPnmg~FrF!aOPr2^Pmf%X^c~=R{^ay|Y4fF^BN!mf3W6LE7F5ogq!WZDtijG9V|uTq z&$rmb3|g*8K#)DYLz-=twid3`;TJ^d7F&&|-6+#F^$1*I3gU^1F^uo$W+X#QF7Qq( z5^?mD&=q5s*)Oe6+R4IUq6L*0LOtw_Oz>`F>aA*c--FYkry3*1wli~EV27t+rcK*T zcVm!b$JF&_c|aTy`vZD`vE++Y+rkQUGPkvx>uG;tuBMPi-%ab_(UL=JgQ}UaH|cyv z(kpFXWDoCZuCo;#-}-XXh+f#B(>$NthEhwiOrn{eM@d3?NUsK`_iO-Ygbjw;xG zQne)I^`IV}bO5<(RWbIHag5hHn0usi_W`VMZ74xJ@I=MlM5_Kda1;atOtFgp01S+A zYM*bzN*bV@UM+yO>RpNl0w*%)q&~ALQAOFV1oqOpXSx3?`+kz_n!U0-Af1lCz3;A@ z>769jqmsrkAa+YTg3{u7+#JwQtMvBa>TGMyg?I95CaSIV-{DC)Ff;KcG=WASu0hp<52zD_i_nko>Y@sOI`fk88fl^nv!H7rf zN1isHZDV4+6kb;6leA_m^{l44<-Y&QgP)$G`Wd|<&8}exS~t>6_Rc2SHwiwf&H+{H zTWflyL_QUzxmo{CTyWJ=6U+~&d7mkv7jWAmRIu74yl3???JeGpQf~)hT;(8#fqgc) zD@T}z=YV*0UYuT%&5$rHD_RYdHMnVHq9L}Ue+4cW;lzg$4-J2T*sn`UN@566abF~i zsm(cu*L)VLi(%OYT`gI{Y~rllpUC*>+jEK^Mw3__hAD{t9zef&&H!;B1`!_h^BJn2 zJ2+cx+e8=b0LD0m^#pfsERbinX5EQhZ2gx06)caY6O(e1gK!Eej`f`(4ic(s-&T1}VtUa1rqmmvHU zqPWXlPc5TF(xfUk-jiJo9PA>~q)_Z#+dM(VQ>x(oFH|4&0_Y+m*7x-O@J8M|l(M7h zSkn0AR?FxE(IJ7>=hV_Z>X47vMH)~_BAeS>a*6sQBbDXfEM6spt5^SszSZLK6;U92 zxv1>G%gWKp_jhExBc(MZ2yoexu(DFw6lTB;)q{!sE)Jtr0!~gGXI5&7sH`Sb3GV5WFJ9n9TG4rZPxU+ z{Rl}`X7ZlCA_M!0^>IytEM*dnX>z`q4O+A~yTK8GX?|R>=W6-;iX^XU_{~hIa?|uXT0Y$(wK<>5ya&i%UQ`S zpYRXyRk9x*+t3j8%hR(Lk^m5Hzugy{Fu4C)umV^Kg|GO%8HZENS9|rO^JdcnJGX>c z{u;kYh_bj%dk1@sz#6elLb%R#rK#lr9RZT_y#$+o=hNLm_Z+%@-u*M;uMHylstYT-zG_sF@%dnthbkNE*SW+k+5W8-y7DqjHo`ii>$wNoi* zY5dH=JRUhTH@-#sO2$l_>M2!eJhh3!seI5D)(mUVy~QSLlOnS9#Fl7r|2K>GSL)?% z63!dF-*h(svJ*y8<>s)!;Pa+&RvcxS>jHt(w5Xy2!;z`Jyp&Bkts+27G^r%{AS+sU<0YpQ;YQ%qk{%W`0IPS9cU!C-on}| z2lG8A)*T6aMp-jwV1!YP)s4to!}OLpTIg&akSkZ11$ou3*>Yx8kL~}6rH&dHVl!$^ z!T8hDjaT&9CGC3_-+@8rF$R>>#o2E~{OJ{OCO0)4O|wDz4Z=U-PUB7>)MWV@#0^M& z97`Kqfj!fa`spY8J1_DMmdzyf11&xqFKy$DKtacHZpt})5w7M9j&9KO!O63rWu!+> zasp9MseHPBYq*HbiiV;Ot>9 z5>_X;y+zc0r(e^|{?pQNz76X5Ay3($KQu@7p|eP|#;tdeFWiE^vm>uEW9M6ZCu}(4Y=^`t4v&kCW9f0eLB;P_pv_kKO+=`=TLpUlbdQjGs9nuf*nN5-_`BS z=%#0l#r0z|A?_LwfwW?#da2`^tM}Yvj*1V}mCVAoGGD5m^KYd)*qJz!!|b@d>;9kG z&O9EfzW@JiSEz(bS(3G)l076_ND>l4vP_XBYn0v0TxCl_l0Bx$zBFT(b&8Ok7~5cC ztTUJ}V;E-UcTm@L-S_wY-rxKCdpy49ubI!BnKNhmocHp2Ki}U4=K$}Z-&xPXSSz6- zmabfp5jE#HShMzm;%s6P)|2QDUTE7Zc7LkmqIvfFG@Vv)p5-%@^1^PBWfFZCjb>bJ zwOl=!?Q$iMKF71iqufdXC6J$MEbP;x!3VfcXveZ;b*GL+nZ-a%7Av3DL;kJ&SC||a zdy7X+wYCZL{CxMi5}<%v@C8Y}`A^GEc&8I%`}C`1(j~LJQ)dEh)))gR`>fPGS5#vo z1jGuQ4ECx`mTTpaediFbG!^@4BL7!r7_i zp3(rI-mdJT-b8zK9FLT5^e_@;lz8||vYn`2r|?JKeAR3Fr9(WJnfiB+pa}h~ZpyzA z?ErArsa~5bzhUd=d3er9rKOiWm7%$b);eYQsbgV~j;6qAT=7S9y+FO=i%BW;yHufw zcSy$|TE>5x*@Pp(Y4K%=3WFzpS&m+QX#Djn%`-B(dJ1A^ZhK>K2dPA0AC^zpAm4z`xjS>VzGBvFCL?R+b&{wopS zOxzZPti!2`9?*jAYFio5l-QBxfQKS4ua>FH)k^3=?fZ)XG(xZG4jKVB8+Ajkzxd8L zEGd^M;(pZNRk>3JhDKa*CREj#Vf|)bd$+xs#Z%{h%p>eKVm#%jj6nk(<&Ed5A)l_c*L{_~ zw&qrL=>*u4qO=BJ$Qn^!u(n^70<`bnS^$wG{3c520ew8qMECid5z7D+{`zDCqn0d#U8tD}yE8uAU z-xeh0#VHuDRcdQm_dgjC=%}0MPWZz-fl|YSrB*PN;m#jHnc4d@J}rtnS$+X(lmL1Z zWhXcNKcp1$B3>QLe7+A)%?T5ZRX0y%dU$n9z|P~gY@d3j{(R;Yw-SwfY1;6E&>Hj3 z+$f&;nAwxe?RECN-%5@sxMl#-6p@0G(PE@?fw1fu(VB~pQ&aLC&nuJZ39T8oAu7=- zpKn#E5o(U=LsOLoZPRWe4y|GP`ee3w&hy* z%`1c|(tHdbzb1;Vkt%sn?55uHS-NcoMlRKgy6;&hmHhdg54AHol~(LM)W)y{L8xc2 z+dK}@eP>q2J3{MkU~ZFioWmm51m2iCpA@GVmBEvpmbcRjJ}Xz3WGMb;HnB`3F#N&` z{!NL(lV9_sgn<{=yF?PdXvx4QR?wieX`4x$^8=!O76Dg})>jG^&&BC~~i6DQ* zZFi$&>1BXwaC-NkxKPV)zP-fpk^%HJG|rrT!A4$Q9P8bq6YSP^^rW?HwlMf%denu4 z!5gci4rVJsG>;w~x%aHssm)t=s}5=l))_6M_S{<%v!QbTnSDr?fD4=q1%$mGe%{qG zb)K(33-AfBQdSnzX0TlT6|*gCvD-ugEd%Jtc>RZ_wPzjI+deSKz-mvHV4ZKQUS@~% z3iJ7*Wy{VkBAwO7Ra#_j>mRx_&B;1{sn|XO7g!6lA9h~fJZUg4$gak4LygC#LcscK zffzHc2mczpCRd(=D#=vsEu-D6Qy{O>r`;orwUW~M`oYzkP+5D>r#tg4jA~x0xH8k@ zVa{P9A4clxM&QrO#_gX|5;v|L-#q7XT}Q@S`LqXB=S9O$P+5;_zW6rEU;{?#yK7-_ z?pp@ci5i#d#AUkVaa-mBT%f4zm!0ciZ7s8!&4@EplL4HACwa6iFEfD4MrbOTrvu)> z^mo8JV8gID<6SJ>ieGcH4_y4FM!Q`mvujMJ0ce2nzwl^alilLK|0I*}@4(QulLkK{ z{CoQUR;KZ%m+`N0Ykx~U$a4M%6&nBNNrmj-MSh(klc0L)s}XWzcz>kJh8SgK*t*lR zAlyv7`Bivh>WmvA@G?Yxv(;5ZM_%-o6p)fEH(|6tlHovll`R;lc8ul?1i;m% zzlNnv{8E@h;ObhdK}skVXy8em>B0R_uEQQ zsg|kk&>P-1@D0wj7`3<^QSSH)s8*-uW31e>ZQQ5Rdd^%v#pnp{+;9;?YklisdP1*B zEmM|^ag0wBc;4dZaF(|bs~rAMM8C7FOpk+k8pohyvTn>Z&uN!1KmETWN1B z(#A*Y0gw)H@M@%seL)lAqv<#%%W$HOqFLty)1=IjYmY@*X5ZWwwS7%w7qts`2@`4} z8L9&A9d>I*5sg5q4nVh2(f_70=A1!im$Ys+DA5~!j^N@e4l)`U#V`A81#{GYI3`u%ElpP(U-$|C~uo4%ZXa%hLGm41u1T8}?}Phq<}@sQcknh3Vc74B;JMw7~|# zL@b{CaA~wOv2&KXGCUSF4{g@oDdJYt2ARvyXRhmv0kpK(J|JVyM4}bw5*AKb_c*3Ng8Eaa6_7?izp5PJv#v_%PC#q-0Dv$Yq?};{kiLol z$GqRfFwdGnbBO`6lVw1<5$NC3Od>F&6t*ZttY9B0P^+>q0Y)No9NfT{-0czV95m;- zz#nD9?8brYWPMZ9oo-Kl${~gFV{;jDX&QW0|^S96>(=DD-;V?TngD5S#i#hCcC?)qB-}s*rnZtg~m$H z*;oV&gCId)>D9!NXZ8Q9guswfu7zZp+8;H*VbXcXvMjBBF6p|N`(@`?dhf^{pO>}^ z1E*-5ifTDg%~Mc2HAH@Ff$KZ&uua=uFJltn z)873-x0Ti7q4R4%R1_8|KG1x9b)mCZ!sH^jio<)xaO%u*Sp7%yT&)1)+7ruNfmW3 zz5T{hajKnvv#m0=E>Uje;WoIrqc)7!^C7jA-t$qHe~|I8tj1~ZKIQkXYXYuc!r4U? z@nGZaLsH@aPR(&EB*r6B{?NUrXMpDsTc1Rv-E;bjZx&JIA_!f)BX@n_3N-hp_@E2(byV&5Qq2y#Ex{gR{!Vh+1vL zdlKNCFnue;Klkgpo$qY!Xp~CZJvst zP6|#NQmB~iLKU91)|7pROde#6hGX^cHu86(C#etwn-KTCwU}WDUL#UaC zNxmtW>QCq8Ju#K{P68OD!S(Iv=8h<+9Yhx~ccv0xhC6IU$ooUt~unlxA+DWxb-t{TkbN|0%Gb-2^>yl=_@BKwxB7e<7p;%hzbUBPmnF1VwwYlRAp z-#=W#8uoqlh8ce*QRJ&xNA8Nv#-&xu+usxhaArXV?}`q+L;Vd#rj?1E1cfC?5-EC_ ztFVPq&I4H+c=31^RvkBg6eLid#Gx$eA~jbaL4>_sR;mNgV{zJGuVdL!$?~+6I5ES6 zIOy7fMe>E`VT<~JMo2Q0auAa(AplYclLSAsssBw4XbfvP5 z?fLV7)v2F28L592#;^T*7=N3V?C259ZBM4fSHv0$h$G?I>TVv`0oy@1ShQR2GOr5{@1#- zw!|tvvV0rt0u#3DEXv9(JrC(t-gH_@sPJJXn0l^EW_ue~JhpMdfSyK)|4$MA-R+@4 zD9!vIL^n`CP6Tw8*HgX0)54a2ecCU!qwVGI9GtPypp%z3!W~cBiJ^O|MT*6r_rBa8 zCY*BTDu?Ywm8+Q-@agz`Jc4R!3X@Y+Z2_lr>rlVGT>{4N4jq;GoBEReS? zF0!6_V@E0k)D8F)8z#oKMD;C);cDZ!sNGBc4n5|a?9cWD1o-wYB{U9RJ3@CvFG+;= zlg%LC%Pj_(ZB#SUhaW49rx$m=8+Wi?m)$DTN3xnI%T81P z*_n5pvF+gSDZ1x&t8Eqr9l9c*cr#J?WDNdvC}eC<=LraT+NP7|z=Q-9f_dx^0_|Ya zq@D_1g-~BrS4;`|xedrayZl4lwo7g#@#l^eQ4s;3!)Prpz7xYCoNWx8A`==!EAgna z+^U06K6v;QkbEZJT@c4y521&<#xvT@VX_75>XBOD;x?mdwS1Y<_hsR996TkOMqUv!|x{1EM|^`1y|N zmF%vuzz03`h@)e*lS}B}SG-&hWsEzf?R&f1-K)(q&OQpqRNsxp9)u4yu*Za-WznGDUZ8(3UvYU%(PS+ znryz^H&VBSdh3h#2q|Y~7vR@pP3@YeO&93bpVwvvN(S-WCMP|dHw&U}@F%$x2 zWBLZ8H$#Ve*$;KtLUPJVO6wNKUAHTb_v#_M68GjY7vKN>p{@FI-EmjGBb6uXZGsXe zs*bd1!}2L3jY7`BDY<(1ec*mG|DzB~`OV1s_WGf2ce3iCGEa~fT)iB7uANoUCXKDJ zaEwS@6g@V&eo(_N*1M_)mc0JFMIc1 z+&AW3Bf%@(W8d(86O%fYa{MHpaotLNFOD{SqYP5=?oc6G zM)E7+)(IvXCAAq{Ce9P>(kU#nvi&XISz6E@WQU)QeK5qlrCLVTZMcZ95Yo;PsXZ_q zl=U?6H6ctFsjk_WZOKY{ZLjWsjezIn-S;eu>1i zx6q1JVdDIqdBYI3VZ?mg#k!J{p%C>4c*ygLXSWE8zTiZSy1N$j*+*3uk>^|5Zb=bd zZ)Q0>6GowAIr~ppTf2K>0j-FPcho6T7&dJT>$Z`llOI*&>| zdA6SW`v)A}XZiG%t%l!m&5RC_A zGls47fKfNPp*9B@+tkWlnPSg5N^mT_l)>Z8lY%!-x3*CA7i!G6;XvX!;Lz)^$#{A| zMh|x72GrC+Z$mqLOm|78bpI<%#sZP=fFbff$L7NMTAS!s4_` z?zkT80Qbh3k#nNI*Lo18%mAUw73!=mQvZM$O&cOhqD(|?-C&{7q&fb$JRO$(KR8y)W^boq`VOr>xjaXJw*&VPiYUCeI*;jU3b?SDXLC_ zR8eifsD?T0xJS#^)I#P)S8BkU*<(Quzfa|r^TZ5|^JvaoK1MdU)?@6^rvg2c}BHsnI8(9Xe638Mp2 z0QV9t)Y|vY!S+93$;lCG;bwamUL7{m_|762KVIVKOUm+hASmG1?;bdLH$(%&YGZYqT2?o}K=npW0(-Ae-biZ+_00 zieeRdo9P(__8x2(%)rNoY4^)tB$>w@$xhSiP9h?*;>D4Ti`U|=(AmEk!`nMm<~oe?|T>?oOGCW>O%w0*1BFu zKz%&s`S#N8XsOZ<2N57yur+|l`eM!8M}}lBPMFB|q90zVcOPqeGL}IbveHx+0Tx?z z*T^%WbOTjpT4`x%lj1r|DUM;RWXG+=2wG1HobWnOuRsz&3C^BJtsj2@N86FWu{}E* z8e+rP>cXLmGp%g2oee*KZe1$D{OdJ;sYJptsv_n4GUV#c@&z%>rFV!1UKdgSYary; zhtb1ae}By>xZ479&mJLG_)oacyBzjkg8_&B8U(Ip%S!h%zf9jJ$=Ps54VEVP=Nj$6 z8Y<&Iu|Yka%)e}A)zF?_gC>6sW<8w4*80o+!?)GfKePS0hIRJCIVgaDXZiIz+XJ&{ zzhJ)6T64Qvo;`EtLVgXVYyPW2S)dwYeHrKM;Bb&*XDQ~!zr}C?`%eC&qpNHC^Z?76 zX4+%Sdu}*`N+$d~&ULSPh;XLHv;(_qOlIoMQF?;mgx%wMbs;ze!lue&jo8og*~w$Jd~7)zwp@%` z#(`AeW=E+-gt=)a!JU8l-h*3nJ1H@o)&t#GnLdHN_!-HJ3GUW$6G97vplaYNZWlBe zeE8M5Aq8;h5t^fV;^xS5hPgt*USFKJAUeG}wcF!1)6Eu)jyxuT-;m#(_E@qRQhXE< zf3&Td?gTr_Y1P*d(-HEt4&kAOY-D`vQX+m=AuA17nXB4p&p~OcfBz@h2C3DYRCS;= zduURK`HH)asr=&tzBa~zT-?4+s>)=T=o$r`Qp>) zdWn+Ls^r%!WbLym30UGYyNR3L7fhQMr3gydK3q?USsLFZXuX_{;+7YG6cP&B z((9cF7w`ePb!DH?*8DlDk3WTtydS;UYnJQoI4ktsCIFnnGRf4H8yVqM-L<0f!Ye1z zOT*Hn0`X;;?3Tv+w!O_&(4>vN@V3fnjTOJP8JBM&Xjx_*ZSM{4+&I#_s%43l4qn?L z+(XX4qa`jp(2-Z82GyyJtc~7T8ntiMp%jeHbah9?D=U0d90N}sqnz3~oojbBQQ-nF zBe|sp0$g*r5w1VZQ=oJEXg9q{&uE41iz-}8SpVDBXQP)JYY>>Ql6R7WVG@@8ru@Eb z9xdtv2@)gABWT(sS_x}Qg|&ZlmYl+KRM5zp;s9y*z-@D1j_Wa2&+)HX1}g0v@i&z< zCSV{<-<#9qB$>~Fxb_@<@bs)O?bYCdt+%xg7a&j5)kIn|?(}(hh|KO+RhuBkAP7y) zDl~eCUC_uu`j3$s&x;h7ncWHJ%lOVM<2lg~3QrI4*W#s@@jWT(-&7kyDjd@wdy^C2 zFBp|;C0d}M?2{dy;yDVrG%1MgzAulRTmlB=96 zN5rVIxu6&g{|{c*?B=_S1UK*ZR%U3w@}V7)pj5dmSof{GZCft3lPkAlZ(D>gs%?HC ztUYUovXMEy-N`hxAK|h-RG(2m*q#5`B6n_fpd5VoYuAGGeP?Iqnv`D5%>}u=t}Pti z^=IWWD!7H+VbpgQP#TMYj3A2^rp?X+4Qqq7E6QtmVC_eITjqjt>qLDc_eTp6MdNX^ zZZ%Dw2*w0GnP2p|*QU#@RHhHmnE1(?mXp~A5>#u4Qy~i~Y zuoYnVwsaBSjj?7l(z3@iuB%Lqux=iQC88_pAPn6=wPI~(JDsrHqcOHtaMrFRSHn^c zW8fs!tl->U>0IfoMVc;Rp;gm!-LOs<3hdf6vwy<{tEgb_z-GCywwV@GJ=6 zOf@ZrrUXhThVAZ;4zNGFetJz&R^!KE(T3GmJ?c+T1BW;4b4y_buc|)wNCn^LrC&Qb zDOLgp-Mo91^N9RjrLhFX&)*w-IQ%&6j*}Y?x7dHJ1cPqO`Q9J1sgxbcc~&}zpr5>X z`^aG$`atVfIM%>@ozt*_F&5?A@rN7;{ZgV>aO9E+|vRpFi4RZ z?#>95v_fU8NmTFyN@)Ah<;&NpZgaGzdN+KzA-O{1k)>lWE)Zd5N@QUql}HwYNP)Ea zI!~0bz=%UT>^ViLoo+TO(c*-GfARcQ@*%EuvGF`?^o zQo>*-ii^d~a(M%Dxs5Q1Sgg=Et7yMf+(+|;(PS=E#?R&umTknDn{^lX27GrOTMO~K zS2lz?ul3zUltg$Xu&A~3$(Q=;+fTsdRxuc<8|yA#&_YItO{djGnc%V1!{?CFxzj!yz#k(G@ zR4E~!vw+Bi!VExCC(gGI4~${*`s|H-ZSI@>q&q~bJldS0qq^F93~iT;Q3Fo%Bjww%qeTy-$gZjQGVapWxT&JY zS2vJYW&hiwJe)k#Ms|<=8=A*;?b-Rcs0O)Zn{Lt)TJKmxAvAcc366@~LFI#Rg#izdb`Tpx3?5AZ3P8U-T8Z4)tS%DGU#Ihc5RjpuVQ-V)9OBDXi; zQdZyr%C>+)%xsl zPEW2z1P8iX@uU0ptvcV=2!Svno|Z(fw}wtly((Wiv2J+&01k)1J{yFroRDv!rNs^h zC2i-;e_FLT5k3bnDT6#{l~gHg73RVBDwxXU`Br(rfal{N>ucelkbq!tIUHNgp*F@I zt*63r%b1fY-zq(*IX4*g6g`l}+`M7BaJk{uh3ZjXp=%o)L z;Lze2N}~6h8G__8&=R5fTz(4{7eD`^8XV1`6c=$#S9GJUZe#&}1-U^a{=8F~wH1y9YE%YTjSmW(+E)z1 z+C~?cjhJXCAE9}Z+k{}M>c;y`Z!k zs2G;Hm2-bomsIt5P_RiRj{{^yP6+A6^?*2QA3QGlcUM7jXoS)cZbXkhrZdlhCm5XVtZf5i9`#>JZsUY zRr5nLIq^cY!Ar5;%L0{$b0NtOa`kT^%r>7YGrzen_>GoG6Q~2unX|VFT2PR;fp&St zaBq@J3O_Q8NaFrTFkPz~8d_4OX{hr1=fHL+QE7<&9Yw}---Lpt6H35?%aC?= zzK(QnkJ$SVVYpK4tJl+Q#e=*t7`~R`RkgUXZUqf`Fo)EvmVtCOr10_S$yXUeX}DGI z#rDMs`3sxzNky$|eFh<;d5Fr|Fuf)kEe^Qt06*-fqd2!u9y_9Ll=NtL=DgICw{y$% zHDD5l1>n#9oOOfht{QTkUZZ#j0nH;SuK@E}h9K?vpAQWClrYHnpY_<6 z{s%X7`+~NvN%;G>=@OO|e?A+wpDf+DU2j*~%)K-Dhe%q@89hnP%9&=2&8Pj|j`WIZ zRjA{SoVAarcTlmdXVp@^FViMweWCYl##$FUWNXJy`g(MkQHFaWA$pzK(+d?17T&9f zO7VOBUY$a_)A6UP_cR%A580a9VoH|F!|2oZjWrp;%B#VUXc-c=F3(}CyaM3AW_i|t zZXP{GnTblhA!zCgi@uBaS>qsT1YY)ijYZ7pAA{V?1585@w^lp4+F{5IvY zQT5x;V1_iuOX^K%(WF4g$E%OxgxdoPl@HAhn+|=sQ3NtO*x;&4e^C`QrN%*R7ZNw? z34SEe9=7+gdh2&4Fvs}*Npv7e09qmxkT3M0{R+X`0KhO92_1~npe?-1|&{)QTO-8R7TgE6~%O&uslEmu2 zNNjI2@q>m(Ux)f_UdAB{# z01`cSe-2wTqx|!V=MilEJ{_9*2x?0n!!GT+Yw*>J^N{_e?lAIIO9L%vgyn|MeV+|2 zl+`@)IU)CXW6kmV?%x{*Y&BZkRty`0k_y39OlsU*ceVIZ;@O|gK$?juB{MB ze51;18#P;I5yOsL3LV?mmB;V$a=-b(nyW6NSmSmKn1>cma;^g0q$e7U5o5q z;nes%vf=LfW>+NIa-#{-B~&(zszbe1>A`TXF47>hQ{j*()V`%~^qDZaKO=Ri;0J%5 zBeuDc(yp^UCVto}@YAcuD>i{isK=G{t}|PGaO{|Qgp?TxL^~@rFb79nu@Lyscfa5+cCz+8-7oh{z&)#nZp0Wr^j%B z5bBdy2lUY5v0uHfaFjMOR^yu(wHs{_nOwyD|8HhOxN?_+bFlh0LyyFG9#nA3T(-_2ExS8wF=`}aw0&~^;0kybG&5!%S zj^lg96m>8z3Y6B} zt!umvKW|*+VTHI`p3kiKoM)2}c#VylpTp$L_8HdIzIhd)dGFc( E1Jm)Op#T5? literal 0 HcmV?d00001 From 22daed5538e6d7135ed9da9befa0b75adcdc2469 Mon Sep 17 00:00:00 2001 From: Simon Martinelli Date: Wed, 13 Jan 2021 14:10:19 +0100 Subject: [PATCH 07/26] Update README.md --- screenshots/context_menu.png | Bin 20802 -> 46006 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/screenshots/context_menu.png b/screenshots/context_menu.png index b7175571bd2e5ed1fb81b116990e5e39e6ad82be..d6b3db23ec9898f04570374da977cff49fda0057 100644 GIT binary patch literal 46006 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 literal 20802 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 Iol`;+0B8 Date: Wed, 13 Jan 2021 14:11:28 +0100 Subject: [PATCH 08/26] Update README.md --- README.md | 2 +- screenshots/{context_menu.png => context_menu1.png} | Bin 2 files changed, 1 insertion(+), 1 deletion(-) rename screenshots/{context_menu.png => context_menu1.png} (100%) diff --git a/README.md b/README.md index 2475cfd..27dd992 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ The plugin adds a Button to the Tools ribbon to execute all tests of the current In the object browser on Packages, Package Bodys, Procedures or Users there is a context menu entry to run the tests or code coverage of either the package, the procedure or the user. You can also run tests from an program window. -![Context Menu](screenshots/context_menu.png) +![Context Menu](screenshots/context_menu1.png) ## Viewing Results diff --git a/screenshots/context_menu.png b/screenshots/context_menu1.png similarity index 100% rename from screenshots/context_menu.png rename to screenshots/context_menu1.png From 6aae7a51dce71a7ed7c439a4dd4b681f7b4e7444 Mon Sep 17 00:00:00 2001 From: Simon Martinelli Date: Wed, 13 Jan 2021 14:14:19 +0100 Subject: [PATCH 09/26] Update README.md --- README.md | 4 ++-- .../{context_menu1.png => context_menu.png} | Bin screenshots/tools_ribbon.png | Bin 27989 -> 0 bytes screenshots/tools_ribbon_full.png | Bin 0 -> 28263 bytes 4 files changed, 2 insertions(+), 2 deletions(-) rename screenshots/{context_menu1.png => context_menu.png} (100%) delete mode 100644 screenshots/tools_ribbon.png create mode 100644 screenshots/tools_ribbon_full.png diff --git a/README.md b/README.md index 27dd992..6329140 100644 --- a/README.md +++ b/README.md @@ -6,11 +6,11 @@ The utPLSQL Plugin integrates [utPLSQL](https://utplsql.org) with [Allround Auto The plugin adds a Button to the Tools ribbon to execute all tests of the current user or run code coverage. -![Tools Ribbon](screenshots/tools_ribbon.png) +![Tools Ribbon](screenshots/tools_ribbon_full.png) In the object browser on Packages, Package Bodys, Procedures or Users there is a context menu entry to run the tests or code coverage of either the package, the procedure or the user. You can also run tests from an program window. -![Context Menu](screenshots/context_menu1.png) +![Context Menu](screenshots/context_menu.png) ## Viewing Results diff --git a/screenshots/context_menu1.png b/screenshots/context_menu.png similarity index 100% rename from screenshots/context_menu1.png rename to screenshots/context_menu.png diff --git a/screenshots/tools_ribbon.png b/screenshots/tools_ribbon.png deleted file mode 100644 index 9e7a7453bf2d2ba2eacea01274c0f403ebe9d20c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27989 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 diff --git a/screenshots/tools_ribbon_full.png b/screenshots/tools_ribbon_full.png new file mode 100644 index 0000000000000000000000000000000000000000..34ec487a7905e3ad49c1bc135029838e3de5b950 GIT binary patch literal 28263 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 Date: Wed, 13 Jan 2021 14:17:45 +0100 Subject: [PATCH 10/26] Removed unnecessary dependencies --- PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/packages.config | 2 -- PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/utPLSQL.UI.csproj | 6 ------ 2 files changed, 8 deletions(-) diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/packages.config b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/packages.config index ca2e476..e70edc3 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/packages.config +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/packages.config @@ -1,7 +1,5 @@  - - \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/utPLSQL.UI.csproj b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/utPLSQL.UI.csproj index 29257c7..ffe5ffc 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/utPLSQL.UI.csproj +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/utPLSQL.UI.csproj @@ -34,15 +34,9 @@ false - - ..\packages\Geomatics.IO.BindingListView.1.3.2\lib\net40\BindingListView.dll - ..\packages\FontAwesome.Sharp.5.15.3\lib\net45\FontAwesome.Sharp.dll - - ..\packages\Oracle.ManagedDataAccess.19.10.0\lib\net40\Oracle.ManagedDataAccess.dll - From 8aca68c117c7e6a075eb6c75af8efdf7e2e1dcb1 Mon Sep 17 00:00:00 2001 From: Simon Martinelli Date: Wed, 13 Jan 2021 16:31:54 +0100 Subject: [PATCH 11/26] #13 Redesigned display of failure to display the whole message --- .../utPLSQL.UI/TestRunnerWindow.Designer.cs | 152 ++++++++++-------- .../utPLSQL.UI/TestRunnerWindow.cs | 61 ++++--- .../utPLSQL.UI/TestRunnerWindow.resx | 3 + 3 files changed, 125 insertions(+), 91 deletions(-) diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.Designer.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.Designer.cs index d84a0fe..917a2ee 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.Designer.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.Designer.cs @@ -44,10 +44,6 @@ private void InitializeComponent() this.lblDisabled = new System.Windows.Forms.Label(); this.txtDisabled = new System.Windows.Forms.TextBox(); this.dataGridViewTestResults = new System.Windows.Forms.DataGridView(); - this.iconDataGridViewImageColumn = new System.Windows.Forms.DataGridViewImageColumn(); - this.packageDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.procedureDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.timeDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.contextMenuResults = new System.Windows.Forms.ContextMenuStrip(this.components); this.menuItemRunTests = new System.Windows.Forms.ToolStripMenuItem(); this.menuItemCoverage = new System.Windows.Forms.ToolStripMenuItem(); @@ -94,9 +90,8 @@ private void InitializeComponent() this.txtTestOwner = new System.Windows.Forms.TextBox(); this.lblTestOwner = new System.Windows.Forms.Label(); this.tabFailures = new System.Windows.Forms.TabPage(); + this.txtFailureMessage = new System.Windows.Forms.TextBox(); this.dataGridViewExpectations = new System.Windows.Forms.DataGridView(); - this.messageDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.callerDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.tabErrors = new System.Windows.Forms.TabPage(); this.txtErrorMessage = new System.Windows.Forms.TextBox(); this.label1 = new System.Windows.Forms.Label(); @@ -116,6 +111,12 @@ private void InitializeComponent() this.btnRun = new System.Windows.Forms.Button(); this.btnRunWithCoverage = new System.Windows.Forms.Button(); this.colorProgressBar = new ColorProgressBar.ColorProgressBar(); + this.timeDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.procedureDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.packageDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.iconDataGridViewImageColumn = new System.Windows.Forms.DataGridViewImageColumn(); + this.dataColumnExpectationLine = new System.Data.DataColumn(); + this.Line = new System.Windows.Forms.DataGridViewTextBoxColumn(); ((System.ComponentModel.ISupportInitialize)(this.dataGridViewTestResults)).BeginInit(); this.contextMenuResults.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.dataSet)).BeginInit(); @@ -269,46 +270,6 @@ private void InitializeComponent() this.dataGridViewTestResults.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.gridResults_CellDoubleClick); this.dataGridViewTestResults.SelectionChanged += new System.EventHandler(this.gridResults_SelectionChanged); // - // iconDataGridViewImageColumn - // - this.iconDataGridViewImageColumn.DataPropertyName = "Icon"; - this.iconDataGridViewImageColumn.FillWeight = 0.2504606F; - this.iconDataGridViewImageColumn.HeaderText = ""; - this.iconDataGridViewImageColumn.Name = "iconDataGridViewImageColumn"; - this.iconDataGridViewImageColumn.ReadOnly = true; - this.iconDataGridViewImageColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; - this.iconDataGridViewImageColumn.Width = 35; - // - // packageDataGridViewTextBoxColumn - // - this.packageDataGridViewTextBoxColumn.DataPropertyName = "Package"; - this.packageDataGridViewTextBoxColumn.FillWeight = 14.3167F; - this.packageDataGridViewTextBoxColumn.HeaderText = "Package"; - this.packageDataGridViewTextBoxColumn.Name = "packageDataGridViewTextBoxColumn"; - this.packageDataGridViewTextBoxColumn.ReadOnly = true; - this.packageDataGridViewTextBoxColumn.Width = 300; - // - // procedureDataGridViewTextBoxColumn - // - this.procedureDataGridViewTextBoxColumn.DataPropertyName = "Procedure"; - this.procedureDataGridViewTextBoxColumn.FillWeight = 182.3871F; - this.procedureDataGridViewTextBoxColumn.HeaderText = "Procedure"; - this.procedureDataGridViewTextBoxColumn.Name = "procedureDataGridViewTextBoxColumn"; - this.procedureDataGridViewTextBoxColumn.ReadOnly = true; - this.procedureDataGridViewTextBoxColumn.Width = 530; - // - // timeDataGridViewTextBoxColumn - // - this.timeDataGridViewTextBoxColumn.DataPropertyName = "Time"; - dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight; - dataGridViewCellStyle1.Format = "N3"; - dataGridViewCellStyle1.NullValue = null; - this.timeDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle1; - this.timeDataGridViewTextBoxColumn.FillWeight = 203.0457F; - this.timeDataGridViewTextBoxColumn.HeaderText = "Time"; - this.timeDataGridViewTextBoxColumn.Name = "timeDataGridViewTextBoxColumn"; - this.timeDataGridViewTextBoxColumn.ReadOnly = true; - // // contextMenuResults // this.contextMenuResults.ImageScalingSize = new System.Drawing.Size(36, 36); @@ -431,7 +392,8 @@ private void InitializeComponent() this.dataTableExpectations.Columns.AddRange(new System.Data.DataColumn[] { this.dataColumnExpectationTestResultId, this.dataColumnExpectationMessage, - this.dataColumnExpectationCaller}); + this.dataColumnExpectationCaller, + this.dataColumnExpectationLine}); this.dataTableExpectations.Constraints.AddRange(new System.Data.Constraint[] { new System.Data.ForeignKeyConstraint("FkTestResult", "TestResults", new string[] { "Id"}, new string[] { @@ -709,6 +671,7 @@ private void InitializeComponent() // tabFailures // this.tabFailures.BackColor = System.Drawing.SystemColors.Control; + this.tabFailures.Controls.Add(this.txtFailureMessage); this.tabFailures.Controls.Add(this.dataGridViewExpectations); this.tabFailures.Location = new System.Drawing.Point(4, 22); this.tabFailures.Name = "tabFailures"; @@ -717,16 +680,24 @@ private void InitializeComponent() this.tabFailures.TabIndex = 0; this.tabFailures.Text = "Failures"; // + // txtFailureMessage + // + this.txtFailureMessage.Location = new System.Drawing.Point(131, 6); + this.txtFailureMessage.Multiline = true; + this.txtFailureMessage.Name = "txtFailureMessage"; + this.txtFailureMessage.ReadOnly = true; + this.txtFailureMessage.Size = new System.Drawing.Size(841, 187); + this.txtFailureMessage.TabIndex = 1; + this.txtFailureMessage.TabStop = false; + // // dataGridViewExpectations // this.dataGridViewExpectations.AllowUserToAddRows = false; this.dataGridViewExpectations.AllowUserToDeleteRows = false; this.dataGridViewExpectations.AutoGenerateColumns = false; - this.dataGridViewExpectations.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; this.dataGridViewExpectations.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.dataGridViewExpectations.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { - this.messageDataGridViewTextBoxColumn, - this.callerDataGridViewTextBoxColumn}); + this.Line}); this.dataGridViewExpectations.DataMember = "Expectations"; this.dataGridViewExpectations.DataSource = this.dataSet; this.dataGridViewExpectations.Location = new System.Drawing.Point(6, 6); @@ -734,26 +705,12 @@ private void InitializeComponent() this.dataGridViewExpectations.Name = "dataGridViewExpectations"; this.dataGridViewExpectations.ReadOnly = true; this.dataGridViewExpectations.RowHeadersVisible = false; + this.dataGridViewExpectations.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; this.dataGridViewExpectations.ShowEditingIcon = false; - this.dataGridViewExpectations.Size = new System.Drawing.Size(966, 188); + this.dataGridViewExpectations.Size = new System.Drawing.Size(119, 187); this.dataGridViewExpectations.TabIndex = 0; this.dataGridViewExpectations.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.gridTestFailures_CellDoubleClick); - // - // messageDataGridViewTextBoxColumn - // - this.messageDataGridViewTextBoxColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - this.messageDataGridViewTextBoxColumn.DataPropertyName = "Message"; - this.messageDataGridViewTextBoxColumn.HeaderText = "Message"; - this.messageDataGridViewTextBoxColumn.Name = "messageDataGridViewTextBoxColumn"; - this.messageDataGridViewTextBoxColumn.ReadOnly = true; - // - // callerDataGridViewTextBoxColumn - // - this.callerDataGridViewTextBoxColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - this.callerDataGridViewTextBoxColumn.DataPropertyName = "Caller"; - this.callerDataGridViewTextBoxColumn.HeaderText = "Caller"; - this.callerDataGridViewTextBoxColumn.Name = "callerDataGridViewTextBoxColumn"; - this.callerDataGridViewTextBoxColumn.ReadOnly = true; + this.dataGridViewExpectations.SelectionChanged += new System.EventHandler(this.dataGridViewExpectations_SelectionChanged); // // tabErrors // @@ -960,6 +917,59 @@ private void InitializeComponent() this.colorProgressBar.TabIndex = 43; this.colorProgressBar.Value = 0; // + // timeDataGridViewTextBoxColumn + // + this.timeDataGridViewTextBoxColumn.DataPropertyName = "Time"; + dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight; + dataGridViewCellStyle1.Format = "N3"; + dataGridViewCellStyle1.NullValue = null; + this.timeDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle1; + this.timeDataGridViewTextBoxColumn.FillWeight = 203.0457F; + this.timeDataGridViewTextBoxColumn.HeaderText = "Time"; + this.timeDataGridViewTextBoxColumn.Name = "timeDataGridViewTextBoxColumn"; + this.timeDataGridViewTextBoxColumn.ReadOnly = true; + // + // procedureDataGridViewTextBoxColumn + // + this.procedureDataGridViewTextBoxColumn.DataPropertyName = "Procedure"; + this.procedureDataGridViewTextBoxColumn.FillWeight = 182.3871F; + this.procedureDataGridViewTextBoxColumn.HeaderText = "Procedure"; + this.procedureDataGridViewTextBoxColumn.Name = "procedureDataGridViewTextBoxColumn"; + this.procedureDataGridViewTextBoxColumn.ReadOnly = true; + this.procedureDataGridViewTextBoxColumn.Width = 530; + // + // packageDataGridViewTextBoxColumn + // + this.packageDataGridViewTextBoxColumn.DataPropertyName = "Package"; + this.packageDataGridViewTextBoxColumn.FillWeight = 14.3167F; + this.packageDataGridViewTextBoxColumn.HeaderText = "Package"; + this.packageDataGridViewTextBoxColumn.Name = "packageDataGridViewTextBoxColumn"; + this.packageDataGridViewTextBoxColumn.ReadOnly = true; + this.packageDataGridViewTextBoxColumn.Width = 300; + // + // iconDataGridViewImageColumn + // + this.iconDataGridViewImageColumn.DataPropertyName = "Icon"; + this.iconDataGridViewImageColumn.FillWeight = 0.2504606F; + this.iconDataGridViewImageColumn.HeaderText = ""; + this.iconDataGridViewImageColumn.Name = "iconDataGridViewImageColumn"; + this.iconDataGridViewImageColumn.ReadOnly = true; + this.iconDataGridViewImageColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; + this.iconDataGridViewImageColumn.Width = 35; + // + // dataColumnExpectationLine + // + this.dataColumnExpectationLine.Caption = "Line"; + this.dataColumnExpectationLine.ColumnName = "Line"; + // + // Line + // + this.Line.DataPropertyName = "Line"; + this.Line.FillWeight = 101.5228F; + this.Line.HeaderText = "Line"; + this.Line.Name = "Line"; + this.Line.ReadOnly = true; + // // TestRunnerWindow // this.AcceptButton = this.btnClose; @@ -1016,6 +1026,7 @@ private void InitializeComponent() this.tabTest.ResumeLayout(false); this.tabTest.PerformLayout(); this.tabFailures.ResumeLayout(false); + this.tabFailures.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.dataGridViewExpectations)).EndInit(); this.tabErrors.ResumeLayout(false); this.tabErrors.PerformLayout(); @@ -1104,12 +1115,13 @@ private void InitializeComponent() private System.Data.DataColumn dataColumnExpectationTestResultId; private System.Data.DataColumn dataColumnExpectationMessage; private System.Data.DataColumn dataColumnExpectationCaller; - private System.Windows.Forms.DataGridViewTextBoxColumn messageDataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn callerDataGridViewTextBoxColumn; + private ColorProgressBar.ColorProgressBar colorProgressBar; + private System.Windows.Forms.TextBox txtFailureMessage; private System.Windows.Forms.DataGridViewImageColumn iconDataGridViewImageColumn; private System.Windows.Forms.DataGridViewTextBoxColumn packageDataGridViewTextBoxColumn; private System.Windows.Forms.DataGridViewTextBoxColumn procedureDataGridViewTextBoxColumn; private System.Windows.Forms.DataGridViewTextBoxColumn timeDataGridViewTextBoxColumn; - private ColorProgressBar.ColorProgressBar colorProgressBar; + private System.Data.DataColumn dataColumnExpectationLine; + private System.Windows.Forms.DataGridViewTextBoxColumn Line; } } \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs index 5607619..86c3874 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs @@ -5,6 +5,7 @@ using System.Drawing; using System.Globalization; using System.IO; +using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows.Forms; @@ -12,6 +13,8 @@ namespace utPLSQL { public partial class TestRunnerWindow : Form { + Regex regexLine = new Regex("(.*line )([0-9]+)( .*)", RegexOptions.IgnoreCase); + public bool Running { get; private set; } private const int IconSize = 24; @@ -37,6 +40,7 @@ public partial class TestRunnerWindow : Form private ImageConverter imageConverter = new ImageConverter(); private DataView dataViewTestResults; + private DataView dataViewExpectations; public TestRunnerWindow(object pluginIntegration, string username, string password, string database, string connectAs, string oracleHome) { @@ -50,6 +54,12 @@ public TestRunnerWindow(object pluginIntegration, string username, string passwo InitializeComponent(); dataViewTestResults = new DataView(dataTableTestResults); + dataGridViewTestResults.DataMember = null; + dataGridViewTestResults.DataSource = dataViewTestResults; + + dataViewExpectations = new DataView(dataTableExpectations); + dataGridViewExpectations.DataMember = null; + dataGridViewExpectations.DataSource = dataViewExpectations; } public async Task RunTestsAsync(string type, string owner, string name, string procedure, bool coverage) @@ -94,8 +104,6 @@ private async Task RunTestsAsync(List path, bool coverage) Running = true; - EnableFilter(); - if (coverage) { var codeCoverageReportDialog = new CodeCoverageReportDialog(path); @@ -122,8 +130,6 @@ private async Task RunTestsAsync(List path, bool coverage) txtStatus.BeginInvoke((MethodInvoker)delegate { - EnableFilter(); - txtStatus.Text = totalNumberOfTests > 0 ? "Finished" : "No tests found"; }); @@ -144,14 +150,6 @@ private async Task RunTestsAsync(List path, bool coverage) } } - private void EnableFilter() - { - cbSuccess.Enabled = true; - cbFailure.Enabled = true; - cbError.Enabled = true; - cbDisabled.Enabled = true; - } - private Action<@event> CollectResults(bool coverage) { return @event => @@ -208,8 +206,6 @@ private Action<@event> CollectResults(bool coverage) if (!coverage) { - EnableFilter(); - txtStatus.Text = totalNumberOfTests > 0 ? "Finished" : "No tests found"; Running = false; @@ -306,11 +302,6 @@ private void ResetComponents() colorProgressBar.Minimum = 0; colorProgressBar.Maximum = 100; colorProgressBar.Value = 0; - - cbSuccess.Enabled = false; - cbFailure.Enabled = false; - cbError.Enabled = false; - cbDisabled.Enabled = false; } private void UpdateTestResult(@event @event) @@ -367,6 +358,7 @@ private void UpdateTestResult(@event @event) rowExpectation["TestResultId"] = @event.test.id; rowExpectation["Message"] = expectation.message; rowExpectation["Caller"] = expectation.caller; + rowExpectation["Line"] = ExtractLine(expectation.caller); dataTableExpectations.Rows.Add(rowExpectation); @@ -396,6 +388,17 @@ private void UpdateTestResult(@event @event) } } + private string ExtractLine(string caller) + { + var m = regexLine.Match(caller); + if (m.Success) + { + var g = m.Groups[2]; + return g.Value; + } + return caller; + } + private void CreateTestResults(@event @event) { CreateTestResults(@event.items); @@ -479,8 +482,6 @@ private void FilterTestResults() dataViewTestResults.RowFilter = filter; } - - dataGridViewTestResults.DataSource = dataViewTestResults; } private void btnClose_Click(object sender, EventArgs e) @@ -534,6 +535,8 @@ private void gridResults_SelectionChanged(object sender, EventArgs e) txtErrorMessage.Text = rowTestResult.Row["Error"] == null ? "" : rowTestResult.Row["Error"].ToString().Replace("\n", "\r\n"); + dataViewExpectations.RowFilter = $"TestResultId = '{rowTestResult.Row["Id"]}'"; + if (!Running) { if (rowTestResult.Row["Status"] == null) @@ -631,5 +634,21 @@ private async void button1_Click(object sender, EventArgs e) { await RunTestsAsync(new List { txtPath.Text }, true); } + + private void dataGridViewExpectations_SelectionChanged(object sender, EventArgs e) + { + txtFailureMessage.Text = ""; + + if (dataGridViewExpectations.SelectedRows.Count > 0) + { + var row = dataGridViewExpectations.SelectedRows[0]; + + if (row.DataBoundItem is DataRowView rowExpectation) + { + txtFailureMessage.Text = rowExpectation.Row["Message"].ToString() + "\r\n\r\n" + rowExpectation.Row["Caller"].ToString(); + } + } + + } } } \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.resx b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.resx index 585acf9..af06881 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.resx +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.resx @@ -123,6 +123,9 @@ 179, 17 + + True + From fe99547cda1eaffc446ab5c5c33cabb3bdd6e71e Mon Sep 17 00:00:00 2001 From: Simon Martinelli Date: Wed, 13 Jan 2021 17:32:48 +0100 Subject: [PATCH 12/26] Clear failure message when test result is selected and set progressbar color to red during test run --- .../utPLSQL.UI/TestRunnerWindow.Designer.cs | 145 +++++++++++------- .../utPLSQL.UI/TestRunnerWindow.cs | 20 ++- 2 files changed, 111 insertions(+), 54 deletions(-) diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.Designer.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.Designer.cs index 917a2ee..a15ebb1 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.Designer.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.Designer.cs @@ -44,6 +44,10 @@ private void InitializeComponent() this.lblDisabled = new System.Windows.Forms.Label(); this.txtDisabled = new System.Windows.Forms.TextBox(); this.dataGridViewTestResults = new System.Windows.Forms.DataGridView(); + this.iconDataGridViewImageColumn = new System.Windows.Forms.DataGridViewImageColumn(); + this.packageDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.procedureDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.timeDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.contextMenuResults = new System.Windows.Forms.ContextMenuStrip(this.components); this.menuItemRunTests = new System.Windows.Forms.ToolStripMenuItem(); this.menuItemCoverage = new System.Windows.Forms.ToolStripMenuItem(); @@ -65,6 +69,7 @@ private void InitializeComponent() this.dataColumnExpectationTestResultId = new System.Data.DataColumn(); this.dataColumnExpectationMessage = new System.Data.DataColumn(); this.dataColumnExpectationCaller = new System.Data.DataColumn(); + this.dataColumnExpectationLine = new System.Data.DataColumn(); this.txtStatus = new System.Windows.Forms.TextBox(); this.iconPictureBox1 = new FontAwesome.Sharp.IconPictureBox(); this.iconPictureBox2 = new FontAwesome.Sharp.IconPictureBox(); @@ -92,6 +97,7 @@ private void InitializeComponent() this.tabFailures = new System.Windows.Forms.TabPage(); this.txtFailureMessage = new System.Windows.Forms.TextBox(); this.dataGridViewExpectations = new System.Windows.Forms.DataGridView(); + this.Line = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.tabErrors = new System.Windows.Forms.TabPage(); this.txtErrorMessage = new System.Windows.Forms.TextBox(); this.label1 = new System.Windows.Forms.Label(); @@ -111,12 +117,10 @@ private void InitializeComponent() this.btnRun = new System.Windows.Forms.Button(); this.btnRunWithCoverage = new System.Windows.Forms.Button(); this.colorProgressBar = new ColorProgressBar.ColorProgressBar(); - this.timeDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.procedureDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.packageDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.iconDataGridViewImageColumn = new System.Windows.Forms.DataGridViewImageColumn(); - this.dataColumnExpectationLine = new System.Data.DataColumn(); - this.Line = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.testResultIdDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.messageDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.callerDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.lineDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); ((System.ComponentModel.ISupportInitialize)(this.dataGridViewTestResults)).BeginInit(); this.contextMenuResults.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.dataSet)).BeginInit(); @@ -270,6 +274,46 @@ private void InitializeComponent() this.dataGridViewTestResults.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.gridResults_CellDoubleClick); this.dataGridViewTestResults.SelectionChanged += new System.EventHandler(this.gridResults_SelectionChanged); // + // iconDataGridViewImageColumn + // + this.iconDataGridViewImageColumn.DataPropertyName = "Icon"; + this.iconDataGridViewImageColumn.FillWeight = 0.2504606F; + this.iconDataGridViewImageColumn.HeaderText = ""; + this.iconDataGridViewImageColumn.Name = "iconDataGridViewImageColumn"; + this.iconDataGridViewImageColumn.ReadOnly = true; + this.iconDataGridViewImageColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; + this.iconDataGridViewImageColumn.Width = 35; + // + // packageDataGridViewTextBoxColumn + // + this.packageDataGridViewTextBoxColumn.DataPropertyName = "Package"; + this.packageDataGridViewTextBoxColumn.FillWeight = 14.3167F; + this.packageDataGridViewTextBoxColumn.HeaderText = "Package"; + this.packageDataGridViewTextBoxColumn.Name = "packageDataGridViewTextBoxColumn"; + this.packageDataGridViewTextBoxColumn.ReadOnly = true; + this.packageDataGridViewTextBoxColumn.Width = 300; + // + // procedureDataGridViewTextBoxColumn + // + this.procedureDataGridViewTextBoxColumn.DataPropertyName = "Procedure"; + this.procedureDataGridViewTextBoxColumn.FillWeight = 182.3871F; + this.procedureDataGridViewTextBoxColumn.HeaderText = "Procedure"; + this.procedureDataGridViewTextBoxColumn.Name = "procedureDataGridViewTextBoxColumn"; + this.procedureDataGridViewTextBoxColumn.ReadOnly = true; + this.procedureDataGridViewTextBoxColumn.Width = 530; + // + // timeDataGridViewTextBoxColumn + // + this.timeDataGridViewTextBoxColumn.DataPropertyName = "Time"; + dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight; + dataGridViewCellStyle1.Format = "N3"; + dataGridViewCellStyle1.NullValue = null; + this.timeDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle1; + this.timeDataGridViewTextBoxColumn.FillWeight = 203.0457F; + this.timeDataGridViewTextBoxColumn.HeaderText = "Time"; + this.timeDataGridViewTextBoxColumn.Name = "timeDataGridViewTextBoxColumn"; + this.timeDataGridViewTextBoxColumn.ReadOnly = true; + // // contextMenuResults // this.contextMenuResults.ImageScalingSize = new System.Drawing.Size(36, 36); @@ -415,6 +459,11 @@ private void InitializeComponent() this.dataColumnExpectationCaller.Caption = "Caller"; this.dataColumnExpectationCaller.ColumnName = "Caller"; // + // dataColumnExpectationLine + // + this.dataColumnExpectationLine.Caption = "Line"; + this.dataColumnExpectationLine.ColumnName = "Line"; + // // txtStatus // this.txtStatus.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); @@ -686,6 +735,7 @@ private void InitializeComponent() this.txtFailureMessage.Multiline = true; this.txtFailureMessage.Name = "txtFailureMessage"; this.txtFailureMessage.ReadOnly = true; + this.txtFailureMessage.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; this.txtFailureMessage.Size = new System.Drawing.Size(841, 187); this.txtFailureMessage.TabIndex = 1; this.txtFailureMessage.TabStop = false; @@ -697,7 +747,11 @@ private void InitializeComponent() this.dataGridViewExpectations.AutoGenerateColumns = false; this.dataGridViewExpectations.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.dataGridViewExpectations.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { - this.Line}); + this.Line, + this.testResultIdDataGridViewTextBoxColumn, + this.messageDataGridViewTextBoxColumn, + this.callerDataGridViewTextBoxColumn, + this.lineDataGridViewTextBoxColumn}); this.dataGridViewExpectations.DataMember = "Expectations"; this.dataGridViewExpectations.DataSource = this.dataSet; this.dataGridViewExpectations.Location = new System.Drawing.Point(6, 6); @@ -712,6 +766,14 @@ private void InitializeComponent() this.dataGridViewExpectations.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.gridTestFailures_CellDoubleClick); this.dataGridViewExpectations.SelectionChanged += new System.EventHandler(this.dataGridViewExpectations_SelectionChanged); // + // Line + // + this.Line.DataPropertyName = "Line"; + this.Line.FillWeight = 101.5228F; + this.Line.HeaderText = "Line"; + this.Line.Name = "Line"; + this.Line.ReadOnly = true; + // // tabErrors // this.tabErrors.BackColor = System.Drawing.SystemColors.Control; @@ -917,58 +979,33 @@ private void InitializeComponent() this.colorProgressBar.TabIndex = 43; this.colorProgressBar.Value = 0; // - // timeDataGridViewTextBoxColumn + // testResultIdDataGridViewTextBoxColumn // - this.timeDataGridViewTextBoxColumn.DataPropertyName = "Time"; - dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight; - dataGridViewCellStyle1.Format = "N3"; - dataGridViewCellStyle1.NullValue = null; - this.timeDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle1; - this.timeDataGridViewTextBoxColumn.FillWeight = 203.0457F; - this.timeDataGridViewTextBoxColumn.HeaderText = "Time"; - this.timeDataGridViewTextBoxColumn.Name = "timeDataGridViewTextBoxColumn"; - this.timeDataGridViewTextBoxColumn.ReadOnly = true; + this.testResultIdDataGridViewTextBoxColumn.DataPropertyName = "TestResultId"; + this.testResultIdDataGridViewTextBoxColumn.HeaderText = "TestResultId"; + this.testResultIdDataGridViewTextBoxColumn.Name = "testResultIdDataGridViewTextBoxColumn"; + this.testResultIdDataGridViewTextBoxColumn.ReadOnly = true; // - // procedureDataGridViewTextBoxColumn + // messageDataGridViewTextBoxColumn // - this.procedureDataGridViewTextBoxColumn.DataPropertyName = "Procedure"; - this.procedureDataGridViewTextBoxColumn.FillWeight = 182.3871F; - this.procedureDataGridViewTextBoxColumn.HeaderText = "Procedure"; - this.procedureDataGridViewTextBoxColumn.Name = "procedureDataGridViewTextBoxColumn"; - this.procedureDataGridViewTextBoxColumn.ReadOnly = true; - this.procedureDataGridViewTextBoxColumn.Width = 530; + this.messageDataGridViewTextBoxColumn.DataPropertyName = "Message"; + this.messageDataGridViewTextBoxColumn.HeaderText = "Message"; + this.messageDataGridViewTextBoxColumn.Name = "messageDataGridViewTextBoxColumn"; + this.messageDataGridViewTextBoxColumn.ReadOnly = true; // - // packageDataGridViewTextBoxColumn + // callerDataGridViewTextBoxColumn // - this.packageDataGridViewTextBoxColumn.DataPropertyName = "Package"; - this.packageDataGridViewTextBoxColumn.FillWeight = 14.3167F; - this.packageDataGridViewTextBoxColumn.HeaderText = "Package"; - this.packageDataGridViewTextBoxColumn.Name = "packageDataGridViewTextBoxColumn"; - this.packageDataGridViewTextBoxColumn.ReadOnly = true; - this.packageDataGridViewTextBoxColumn.Width = 300; + this.callerDataGridViewTextBoxColumn.DataPropertyName = "Caller"; + this.callerDataGridViewTextBoxColumn.HeaderText = "Caller"; + this.callerDataGridViewTextBoxColumn.Name = "callerDataGridViewTextBoxColumn"; + this.callerDataGridViewTextBoxColumn.ReadOnly = true; // - // iconDataGridViewImageColumn + // lineDataGridViewTextBoxColumn // - this.iconDataGridViewImageColumn.DataPropertyName = "Icon"; - this.iconDataGridViewImageColumn.FillWeight = 0.2504606F; - this.iconDataGridViewImageColumn.HeaderText = ""; - this.iconDataGridViewImageColumn.Name = "iconDataGridViewImageColumn"; - this.iconDataGridViewImageColumn.ReadOnly = true; - this.iconDataGridViewImageColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; - this.iconDataGridViewImageColumn.Width = 35; - // - // dataColumnExpectationLine - // - this.dataColumnExpectationLine.Caption = "Line"; - this.dataColumnExpectationLine.ColumnName = "Line"; - // - // Line - // - this.Line.DataPropertyName = "Line"; - this.Line.FillWeight = 101.5228F; - this.Line.HeaderText = "Line"; - this.Line.Name = "Line"; - this.Line.ReadOnly = true; + this.lineDataGridViewTextBoxColumn.DataPropertyName = "Line"; + this.lineDataGridViewTextBoxColumn.HeaderText = "Line"; + this.lineDataGridViewTextBoxColumn.Name = "lineDataGridViewTextBoxColumn"; + this.lineDataGridViewTextBoxColumn.ReadOnly = true; // // TestRunnerWindow // @@ -1123,5 +1160,9 @@ private void InitializeComponent() private System.Windows.Forms.DataGridViewTextBoxColumn timeDataGridViewTextBoxColumn; private System.Data.DataColumn dataColumnExpectationLine; private System.Windows.Forms.DataGridViewTextBoxColumn Line; + private System.Windows.Forms.DataGridViewTextBoxColumn testResultIdDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn messageDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn callerDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn lineDataGridViewTextBoxColumn; } } \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs index 86c3874..4fca3d8 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs @@ -333,11 +333,21 @@ private void UpdateTestResult(@event @event) { testResult["Icon"] = (byte[])imageConverter.ConvertTo(IconChar.TimesCircle.ToBitmap(IconFont.Solid, IconSize, Color.Orange), typeof(byte[])); testResult["Status"] = StatusFailure; + + colorProgressBar.BeginInvoke((MethodInvoker)delegate + { + colorProgressBar.BarColor = Color.DarkRed; + }); } else if (counter.error > 0) { testResult["Icon"] = (byte[])imageConverter.ConvertTo(IconChar.ExclamationCircle.ToBitmap(Color.Red, IconSize), typeof(byte[])); testResult["Status"] = StatusError; + + colorProgressBar.BeginInvoke((MethodInvoker)delegate + { + colorProgressBar.BarColor = Color.DarkRed; + }); } else if (counter.warning > 0) { @@ -535,8 +545,15 @@ private void gridResults_SelectionChanged(object sender, EventArgs e) txtErrorMessage.Text = rowTestResult.Row["Error"] == null ? "" : rowTestResult.Row["Error"].ToString().Replace("\n", "\r\n"); + txtFailureMessage.Text = ""; + dataViewExpectations.RowFilter = $"TestResultId = '{rowTestResult.Row["Id"]}'"; + if (dataViewExpectations.Count > 0) + { + dataGridViewExpectations.Rows[0].Selected = true; + } + if (!Running) { if (rowTestResult.Row["Status"] == null) @@ -645,10 +662,9 @@ private void dataGridViewExpectations_SelectionChanged(object sender, EventArgs if (row.DataBoundItem is DataRowView rowExpectation) { - txtFailureMessage.Text = rowExpectation.Row["Message"].ToString() + "\r\n\r\n" + rowExpectation.Row["Caller"].ToString(); + txtFailureMessage.Text = $"{rowExpectation.Row["Message"].ToString().Replace("\n", "\r\n")}\r\n\r\n{rowExpectation.Row["Caller"].ToString().Replace("\n", "\r\n")}"; } } - } } } \ No newline at end of file From 720f382408683f22f1c7256b79461c5b00340235 Mon Sep 17 00:00:00 2001 From: Simon Martinelli Date: Thu, 14 Jan 2021 17:45:23 +0100 Subject: [PATCH 13/26] New version 1.2.2 --- .../PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs | 4 ++-- .../utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs | 4 ++-- .../utPLSQL.UI/Properties/AssemblyInfo.cs | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs index f0724c6..c9b6cfc 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.2.1.0")] -[assembly: AssemblyFileVersion("1.2.1.0")] +[assembly: AssemblyVersion("1.2.2.0")] +[assembly: AssemblyFileVersion("1.2.2.0")] diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs index 8ce7102..b6c101b 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.2.1.0")] -[assembly: AssemblyFileVersion("1.2.1.0")] +[assembly: AssemblyVersion("1.2.2.0")] +[assembly: AssemblyFileVersion("1.2.2.0")] diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs index 0e54db1..db7ec5d 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.2.1.0")] -[assembly: AssemblyFileVersion("1.2.1.0")] +[assembly: AssemblyVersion("1.2.2.0")] +[assembly: AssemblyFileVersion("1.2.2.0")] From 999bd2a158f38d3ba1591897e7abac61e42c2cf0 Mon Sep 17 00:00:00 2001 From: Simon Martinelli Date: Fri, 15 Jan 2021 08:15:30 +0100 Subject: [PATCH 14/26] #14 Only display line number in failed expectation table --- .../Properties/AssemblyInfo.cs | 4 +- .../Properties/AssemblyInfo.cs | 4 +- .../utPLSQL.UI/Properties/AssemblyInfo.cs | 4 +- .../utPLSQL.UI/TestRunnerWindow.Designer.cs | 56 +++---------------- 4 files changed, 14 insertions(+), 54 deletions(-) diff --git a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs index c9b6cfc..2d3d9bf 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.2.2.0")] -[assembly: AssemblyFileVersion("1.2.2.0")] +[assembly: AssemblyVersion("1.2.3.0")] +[assembly: AssemblyFileVersion("1.2.3.0")] diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs index b6c101b..79d4349 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.2.2.0")] -[assembly: AssemblyFileVersion("1.2.2.0")] +[assembly: AssemblyVersion("1.2.3.0")] +[assembly: AssemblyFileVersion("1.2.3.0")] diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs index db7ec5d..0999535 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.2.2.0")] -[assembly: AssemblyFileVersion("1.2.2.0")] +[assembly: AssemblyVersion("1.2.3.0")] +[assembly: AssemblyFileVersion("1.2.3.0")] diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.Designer.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.Designer.cs index a15ebb1..1b4503c 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.Designer.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.Designer.cs @@ -97,7 +97,6 @@ private void InitializeComponent() this.tabFailures = new System.Windows.Forms.TabPage(); this.txtFailureMessage = new System.Windows.Forms.TextBox(); this.dataGridViewExpectations = new System.Windows.Forms.DataGridView(); - this.Line = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.tabErrors = new System.Windows.Forms.TabPage(); this.txtErrorMessage = new System.Windows.Forms.TextBox(); this.label1 = new System.Windows.Forms.Label(); @@ -117,10 +116,7 @@ private void InitializeComponent() this.btnRun = new System.Windows.Forms.Button(); this.btnRunWithCoverage = new System.Windows.Forms.Button(); this.colorProgressBar = new ColorProgressBar.ColorProgressBar(); - this.testResultIdDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.messageDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.callerDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.lineDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Line = new System.Windows.Forms.DataGridViewTextBoxColumn(); ((System.ComponentModel.ISupportInitialize)(this.dataGridViewTestResults)).BeginInit(); this.contextMenuResults.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.dataSet)).BeginInit(); @@ -747,11 +743,7 @@ private void InitializeComponent() this.dataGridViewExpectations.AutoGenerateColumns = false; this.dataGridViewExpectations.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.dataGridViewExpectations.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { - this.Line, - this.testResultIdDataGridViewTextBoxColumn, - this.messageDataGridViewTextBoxColumn, - this.callerDataGridViewTextBoxColumn, - this.lineDataGridViewTextBoxColumn}); + this.Line}); this.dataGridViewExpectations.DataMember = "Expectations"; this.dataGridViewExpectations.DataSource = this.dataSet; this.dataGridViewExpectations.Location = new System.Drawing.Point(6, 6); @@ -766,14 +758,6 @@ private void InitializeComponent() this.dataGridViewExpectations.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.gridTestFailures_CellDoubleClick); this.dataGridViewExpectations.SelectionChanged += new System.EventHandler(this.dataGridViewExpectations_SelectionChanged); // - // Line - // - this.Line.DataPropertyName = "Line"; - this.Line.FillWeight = 101.5228F; - this.Line.HeaderText = "Line"; - this.Line.Name = "Line"; - this.Line.ReadOnly = true; - // // tabErrors // this.tabErrors.BackColor = System.Drawing.SystemColors.Control; @@ -979,33 +963,13 @@ private void InitializeComponent() this.colorProgressBar.TabIndex = 43; this.colorProgressBar.Value = 0; // - // testResultIdDataGridViewTextBoxColumn - // - this.testResultIdDataGridViewTextBoxColumn.DataPropertyName = "TestResultId"; - this.testResultIdDataGridViewTextBoxColumn.HeaderText = "TestResultId"; - this.testResultIdDataGridViewTextBoxColumn.Name = "testResultIdDataGridViewTextBoxColumn"; - this.testResultIdDataGridViewTextBoxColumn.ReadOnly = true; - // - // messageDataGridViewTextBoxColumn - // - this.messageDataGridViewTextBoxColumn.DataPropertyName = "Message"; - this.messageDataGridViewTextBoxColumn.HeaderText = "Message"; - this.messageDataGridViewTextBoxColumn.Name = "messageDataGridViewTextBoxColumn"; - this.messageDataGridViewTextBoxColumn.ReadOnly = true; - // - // callerDataGridViewTextBoxColumn - // - this.callerDataGridViewTextBoxColumn.DataPropertyName = "Caller"; - this.callerDataGridViewTextBoxColumn.HeaderText = "Caller"; - this.callerDataGridViewTextBoxColumn.Name = "callerDataGridViewTextBoxColumn"; - this.callerDataGridViewTextBoxColumn.ReadOnly = true; - // - // lineDataGridViewTextBoxColumn + // Line // - this.lineDataGridViewTextBoxColumn.DataPropertyName = "Line"; - this.lineDataGridViewTextBoxColumn.HeaderText = "Line"; - this.lineDataGridViewTextBoxColumn.Name = "lineDataGridViewTextBoxColumn"; - this.lineDataGridViewTextBoxColumn.ReadOnly = true; + this.Line.DataPropertyName = "Line"; + this.Line.FillWeight = 101.5228F; + this.Line.HeaderText = "Line"; + this.Line.Name = "Line"; + this.Line.ReadOnly = true; // // TestRunnerWindow // @@ -1160,9 +1124,5 @@ private void InitializeComponent() private System.Windows.Forms.DataGridViewTextBoxColumn timeDataGridViewTextBoxColumn; private System.Data.DataColumn dataColumnExpectationLine; private System.Windows.Forms.DataGridViewTextBoxColumn Line; - private System.Windows.Forms.DataGridViewTextBoxColumn testResultIdDataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn messageDataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn callerDataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn lineDataGridViewTextBoxColumn; } } \ No newline at end of file From 32336e26041dc99f81cecd34a024c3799458d33a Mon Sep 17 00:00:00 2001 From: Simon Martinelli Date: Fri, 15 Jan 2021 08:53:44 +0100 Subject: [PATCH 15/26] Added script to set assemby versions --- .../Properties/AssemblyInfo.cs | 3 --- PlsqlDeveloperUtPlsqlPlugin/SetAssemblyVersion.ps1 | 8 ++++++++ .../utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs | 3 --- .../utPLSQL.UI/Properties/AssemblyInfo.cs | 3 --- 4 files changed, 8 insertions(+), 9 deletions(-) create mode 100644 PlsqlDeveloperUtPlsqlPlugin/SetAssemblyVersion.ps1 diff --git a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs index 2d3d9bf..6e039ff 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs @@ -28,8 +28,5 @@ // Build Number // Revision // -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.2.3.0")] [assembly: AssemblyFileVersion("1.2.3.0")] diff --git a/PlsqlDeveloperUtPlsqlPlugin/SetAssemblyVersion.ps1 b/PlsqlDeveloperUtPlsqlPlugin/SetAssemblyVersion.ps1 new file mode 100644 index 0000000..e3518cf --- /dev/null +++ b/PlsqlDeveloperUtPlsqlPlugin/SetAssemblyVersion.ps1 @@ -0,0 +1,8 @@ +param([string]$NewVersion) + +Get-ChildItem -Include assemblyinfo.cs, assemblyinfo.vb -Recurse | + ForEach-Object { + $_.IsReadOnly = $false + (Get-Content -Path $_) -replace '(?<=Assembly(?:File)?Version\(")[^"]*(?="\))', $NewVersion | + Set-Content -Path $_ + } \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs index 79d4349..6fd89d3 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs @@ -29,8 +29,5 @@ // Build Number // Revision // -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.2.3.0")] [assembly: AssemblyFileVersion("1.2.3.0")] diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs index 0999535..893909a 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs @@ -29,8 +29,5 @@ // Build Number // Revision // -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.2.3.0")] [assembly: AssemblyFileVersion("1.2.3.0")] From 2d51941630c98701e3492f737684712391842d7a Mon Sep 17 00:00:00 2001 From: Simon Martinelli Date: Fri, 15 Jan 2021 08:57:27 +0100 Subject: [PATCH 16/26] Use same version in ColorProgressBar --- .../ColorProgressBar/Properties/AssemblyInfo.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs index 95216e6..b365962 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs @@ -31,6 +31,5 @@ // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyVersion("1.2.3.0")] +[assembly: AssemblyFileVersion("1.2.4.0")] From 2d1463e15315dc4687075f795354f808c774e107 Mon Sep 17 00:00:00 2001 From: Simon Martinelli Date: Fri, 15 Jan 2021 09:04:40 +0100 Subject: [PATCH 17/26] Code clean up --- .../ColorProgressBar/ColorProgressBar.cs | 39 +++++++------------ .../ColorProgressBarDesigner.cs | 35 ++++++++--------- 2 files changed, 31 insertions(+), 43 deletions(-) diff --git a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBar.cs b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBar.cs index 97826d9..ed7c152 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBar.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBar.cs @@ -16,22 +16,16 @@ public class ColorProgressBar : System.Windows.Forms.Control private int _Maximum = 100; private int _Step = 10; - private Color _BarColor = Color.FromArgb(255, 128, 128); + private Color _BarColor = Color.Green; private Color _BorderColor = Color.Black; - public enum FillStyles - { - Solid, - Dashed - } - public ColorProgressBar() { - base.Size = new Size(150, 15); + base.Size = new Size(200, 20); SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw | ControlStyles.DoubleBuffer, true); } - [Description("ColorProgressBar color")] + [Description("Progress bar color")] [Category("ColorProgressBar")] public Color BarColor { @@ -46,7 +40,7 @@ public Color BarColor } } - [Description("The current value for the ColorProgressBar, in the range specified by the Minimum and Maximum properties.")] + [Description("The current value for the progres bar. Must be between Minimum and Maximum.")] [Category("ColorProgressBar")] [RefreshProperties(RefreshProperties.All)] public int Value @@ -59,14 +53,12 @@ public int Value { if (value < _Minimum) { - throw new ArgumentException("'" + value + "' is not a valid value for 'Value'.\n" + - "'Value' must be between 'Minimum' and 'Maximum'."); + throw new ArgumentException($"'{value}' is not a valid 'Value'.\n'Value' must be between 'Minimum' and 'Maximum'."); } if (value > _Maximum) { - throw new ArgumentException("'" + value + "' is not a valid value for 'Value'.\n" + - "'Value' must be between 'Minimum' and 'Maximum'."); + throw new ArgumentException($"'{value}' is not a valid 'Value'.\n'Value' must be between 'Minimum' and 'Maximum'."); } _Value = value; @@ -74,7 +66,7 @@ public int Value } } - [Description("The lower bound of the range this ColorProgressbar is working with.")] + [Description("The lower bound of the range.")] [Category("ColorProgressBar")] [RefreshProperties(RefreshProperties.All)] public int Minimum @@ -96,7 +88,7 @@ public int Minimum } } - [Description("The uppper bound of the range this ColorProgressbar is working with.")] + [Description("The uppper bound of the range.")] [Category("ColorProgressBar")] [RefreshProperties(RefreshProperties.All)] public int Maximum @@ -118,7 +110,7 @@ public int Maximum } } - [Description("The amount to jump the current value of the control by when the Step() method is called.")] + [Description("The value to move the progess bar when the Step() method is called.")] [Category("ColorProgressBar")] public int Step { @@ -133,7 +125,7 @@ public int Step } } - [Description("The border color of ColorProgressBar")] + [Description("The border color")] [Category("ColorProgressBar")] public Color BorderColor { @@ -149,7 +141,7 @@ public Color BorderColor } /// - /// Call the PerformStep() method to increase the value displayed by the amount set in the Step property + /// Call the PerformStep() method to increase the value displayed by the value set in the Step property /// public void PerformStep() { @@ -162,7 +154,7 @@ public void PerformStep() } /// - /// Call the PerformStepBack() method to decrease the value displayed by the amount set in the Step property + /// Call the PerformStepBack() method to decrease the value displayed by the value set in the Step property /// public void PerformStepBack() { @@ -175,7 +167,7 @@ public void PerformStepBack() } /// - /// Call the Increment() method to increase the value displayed by an integer you specify + /// Call the Increment() method to increase the value displayed by the passed value /// public void Increment(int value) { @@ -188,7 +180,7 @@ public void Increment(int value) } // - // Call the Decrement() method to decrease the value displayed by an integer you specify + // Call the Decrement() method to decrease the value displayed by the passed value // public void Decrement(int value) { @@ -236,8 +228,7 @@ protected override void OnPaint(System.Windows.Forms.PaintEventArgs e) protected void DrawBorder(Graphics g) { - Rectangle borderRect = new Rectangle(0, 0, - ClientRectangle.Width - 1, ClientRectangle.Height - 1); + Rectangle borderRect = new Rectangle(0, 0, ClientRectangle.Width - 1, ClientRectangle.Height - 1); g.DrawRectangle(new Pen(_BorderColor, 1), borderRect); } } diff --git a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBarDesigner.cs b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBarDesigner.cs index 10a59cd..81c0085 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBarDesigner.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBarDesigner.cs @@ -3,23 +3,20 @@ namespace ColorProgressBar { internal class ColorProgressBarDesigner : System.Windows.Forms.Design.ControlDesigner - { - public ColorProgressBarDesigner() - {} - - /// Clean up some unnecessary properties - protected override void PostFilterProperties(IDictionary Properties) - { - Properties.Remove("AllowDrop"); - Properties.Remove("BackgroundImage"); - Properties.Remove("ContextMenu"); - Properties.Remove("FlatStyle"); - Properties.Remove("Image"); - Properties.Remove("ImageAlign"); - Properties.Remove("ImageIndex"); - Properties.Remove("ImageList"); - Properties.Remove("Text"); - Properties.Remove("TextAlign"); - } - } + { + /// Clean up some unnecessary properties + protected override void PostFilterProperties(IDictionary Properties) + { + Properties.Remove("AllowDrop"); + Properties.Remove("BackgroundImage"); + Properties.Remove("ContextMenu"); + Properties.Remove("FlatStyle"); + Properties.Remove("Image"); + Properties.Remove("ImageAlign"); + Properties.Remove("ImageIndex"); + Properties.Remove("ImageList"); + Properties.Remove("Text"); + Properties.Remove("TextAlign"); + } + } } \ No newline at end of file From 206929fa08a64e669f11108f9fb0aef3359b17bc Mon Sep 17 00:00:00 2001 From: Simon Martinelli Date: Fri, 15 Jan 2021 09:13:34 +0100 Subject: [PATCH 18/26] Clean up --- PlsqlDeveloperUtPlsqlPlugin/SetAssemblyVersion.ps1 | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/PlsqlDeveloperUtPlsqlPlugin/SetAssemblyVersion.ps1 b/PlsqlDeveloperUtPlsqlPlugin/SetAssemblyVersion.ps1 index e3518cf..69e5f7e 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/SetAssemblyVersion.ps1 +++ b/PlsqlDeveloperUtPlsqlPlugin/SetAssemblyVersion.ps1 @@ -1,8 +1,6 @@ param([string]$NewVersion) -Get-ChildItem -Include assemblyinfo.cs, assemblyinfo.vb -Recurse | - ForEach-Object { - $_.IsReadOnly = $false - (Get-Content -Path $_) -replace '(?<=Assembly(?:File)?Version\(")[^"]*(?="\))', $NewVersion | - Set-Content -Path $_ - } \ No newline at end of file +Get-ChildItem -Include AssemblyInfo.cs -Recurse | ForEach-Object { + $_.IsReadOnly = $false + (Get-Content -Path $_) -replace '(?<=Assembly(?:File)?Version\(")[^"]*(?="\))', $NewVersion |Set-Content -Path $_ +} \ No newline at end of file From 90811e189a10ea783a34e192099b839142bde389 Mon Sep 17 00:00:00 2001 From: Simon Martinelli Date: Fri, 15 Jan 2021 09:14:13 +0100 Subject: [PATCH 19/26] Delete PlsqlDeveloperUtPlsqlPlugin/utPLSQL.Ui.Standalone directory --- .../utPLSQL.Ui.Standalone/FodyWeavers.xml | 3 - .../utPLSQL.Ui.Standalone/FodyWeavers.xsd | 111 ------------------ .../utPLSQL.Ui.Standalone/packages.config | 5 - .../utPLSQL.Ui.Standalone.csproj | 104 ---------------- 4 files changed, 223 deletions(-) delete mode 100644 PlsqlDeveloperUtPlsqlPlugin/utPLSQL.Ui.Standalone/FodyWeavers.xml delete mode 100644 PlsqlDeveloperUtPlsqlPlugin/utPLSQL.Ui.Standalone/FodyWeavers.xsd delete mode 100644 PlsqlDeveloperUtPlsqlPlugin/utPLSQL.Ui.Standalone/packages.config delete mode 100644 PlsqlDeveloperUtPlsqlPlugin/utPLSQL.Ui.Standalone/utPLSQL.Ui.Standalone.csproj diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.Ui.Standalone/FodyWeavers.xml b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.Ui.Standalone/FodyWeavers.xml deleted file mode 100644 index 5029e70..0000000 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.Ui.Standalone/FodyWeavers.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.Ui.Standalone/FodyWeavers.xsd b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.Ui.Standalone/FodyWeavers.xsd deleted file mode 100644 index 44a5374..0000000 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.Ui.Standalone/FodyWeavers.xsd +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - - - - - A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks - - - - - A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks. - - - - - A list of unmanaged 32 bit assembly names to include, delimited with line breaks. - - - - - A list of unmanaged 64 bit assembly names to include, delimited with line breaks. - - - - - The order of preloaded assemblies, delimited with line breaks. - - - - - - This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file. - - - - - Controls if .pdbs for reference assemblies are also embedded. - - - - - Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option. - - - - - As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off. - - - - - Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code. - - - - - Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior. - - - - - A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with | - - - - - A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |. - - - - - A list of unmanaged 32 bit assembly names to include, delimited with |. - - - - - A list of unmanaged 64 bit assembly names to include, delimited with |. - - - - - The order of preloaded assemblies, delimited with |. - - - - - - - - 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. - - - - - A comma-separated list of error codes that can be safely ignored in assembly verification. - - - - - 'false' to turn off automatic generation of the XML Schema file. - - - - - \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.Ui.Standalone/packages.config b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.Ui.Standalone/packages.config deleted file mode 100644 index 01e2767..0000000 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.Ui.Standalone/packages.config +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.Ui.Standalone/utPLSQL.Ui.Standalone.csproj b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.Ui.Standalone/utPLSQL.Ui.Standalone.csproj deleted file mode 100644 index 2d8cc12..0000000 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.Ui.Standalone/utPLSQL.Ui.Standalone.csproj +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - Debug - AnyCPU - {5D3EA63E-AAFE-47DB-9D48-4BA9C205ADBE} - WinExe - utPLSQL.UI.Standalone - utPLSQL.UI.Standalone - v4.5 - 512 - true - - - - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - - - - ..\packages\Costura.Fody.4.1.0\lib\net40\Costura.dll - - - - - - - - - - - - - - - Form - - - LoginForm.cs - - - - - LoginForm.cs - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - True - Resources.resx - True - - - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - - - {7669189c-4a58-4e82-9dcb-7956624a719b} - utPLSQL.Ui - - - - - - - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - - \ No newline at end of file From 2bf317831e58d71fc991ee998d0238746a3af140 Mon Sep 17 00:00:00 2001 From: Simon Martinelli Date: Mon, 18 Jan 2021 15:48:37 +0100 Subject: [PATCH 20/26] Set Version to 1.2.3 --- .../ColorProgressBar/Properties/AssemblyInfo.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs index b365962..7b3844b 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs @@ -32,4 +32,4 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: [assembly: AssemblyVersion("1.2.3.0")] -[assembly: AssemblyFileVersion("1.2.4.0")] +[assembly: AssemblyFileVersion("1.2.3.0")] From 437f28b2ad99717cafe35e332f2006f87316c989 Mon Sep 17 00:00:00 2001 From: Simon Martinelli Date: Mon, 18 Jan 2021 15:53:48 +0100 Subject: [PATCH 21/26] Version update after release --- .../Properties/AssemblyInfo.cs | 8 +- .../Properties/AssemblyInfo.cs | 8 +- .../utPLSQL.UI.Standalone/FodyWeavers.xml | 3 + .../utPLSQL.UI.Standalone/FodyWeavers.xsd | 111 ++++++++++++++++++ .../Properties/AssemblyInfo.cs | 8 +- .../utPLSQL.UI/Properties/AssemblyInfo.cs | 8 +- 6 files changed, 130 insertions(+), 16 deletions(-) create mode 100644 PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/FodyWeavers.xml create mode 100644 PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/FodyWeavers.xsd diff --git a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs index 7b3844b..ded20e6 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs @@ -1,4 +1,4 @@ -using System.Reflection; +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -10,7 +10,7 @@ [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("utPLSQL.org")] [assembly: AssemblyProduct("ColorProgressBar")] -[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyCopyright("Copyright © 2021")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -31,5 +31,5 @@ // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("1.2.3.0")] -[assembly: AssemblyFileVersion("1.2.3.0")] +[assembly: AssemblyVersion("1.2.4.0")] +[assembly: AssemblyFileVersion("1.2.4.0")] diff --git a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs index 6e039ff..0654ec4 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs @@ -1,4 +1,4 @@ -using System.Reflection; +using System.Reflection; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following @@ -9,7 +9,7 @@ [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("utPLSQL.org")] [assembly: AssemblyProduct("PlsqlDeveloperUtPlsqlPlugin")] -[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyCopyright("Copyright © 2021")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -28,5 +28,5 @@ // Build Number // Revision // -[assembly: AssemblyVersion("1.2.3.0")] -[assembly: AssemblyFileVersion("1.2.3.0")] +[assembly: AssemblyVersion("1.2.4.0")] +[assembly: AssemblyFileVersion("1.2.4.0")] diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/FodyWeavers.xml b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/FodyWeavers.xml new file mode 100644 index 0000000..5029e70 --- /dev/null +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/FodyWeavers.xsd b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/FodyWeavers.xsd new file mode 100644 index 0000000..44a5374 --- /dev/null +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/FodyWeavers.xsd @@ -0,0 +1,111 @@ + + + + + + + + + + + + A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks + + + + + A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks. + + + + + A list of unmanaged 32 bit assembly names to include, delimited with line breaks. + + + + + A list of unmanaged 64 bit assembly names to include, delimited with line breaks. + + + + + The order of preloaded assemblies, delimited with line breaks. + + + + + + This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file. + + + + + Controls if .pdbs for reference assemblies are also embedded. + + + + + Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option. + + + + + As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off. + + + + + Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code. + + + + + Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior. + + + + + A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with | + + + + + A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |. + + + + + A list of unmanaged 32 bit assembly names to include, delimited with |. + + + + + A list of unmanaged 64 bit assembly names to include, delimited with |. + + + + + The order of preloaded assemblies, delimited with |. + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs index 6fd89d3..68eb8e8 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs @@ -1,4 +1,4 @@ -using System.Reflection; +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -10,7 +10,7 @@ [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("utPLSQL.org")] [assembly: AssemblyProduct("utPLSQL.UI.Standalone")] -[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyCopyright("Copyright © 2021")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -29,5 +29,5 @@ // Build Number // Revision // -[assembly: AssemblyVersion("1.2.3.0")] -[assembly: AssemblyFileVersion("1.2.3.0")] +[assembly: AssemblyVersion("1.2.4.0")] +[assembly: AssemblyFileVersion("1.2.4.0")] diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs index 893909a..45469a4 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs @@ -1,4 +1,4 @@ -using System.Reflection; +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -10,7 +10,7 @@ [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("utPLSQL.org")] [assembly: AssemblyProduct("utPLSQL.UI")] -[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyCopyright("Copyright © 2021")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -29,5 +29,5 @@ // Build Number // Revision // -[assembly: AssemblyVersion("1.2.3.0")] -[assembly: AssemblyFileVersion("1.2.3.0")] +[assembly: AssemblyVersion("1.2.4.0")] +[assembly: AssemblyFileVersion("1.2.4.0")] From 481d0bb1263df59fa3e7ace4458e426d6a360a0b Mon Sep 17 00:00:00 2001 From: Simon Martinelli Date: Mon, 25 Jan 2021 15:23:53 +0100 Subject: [PATCH 22/26] Updated dependency version --- PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/App.config | 8 +++++--- .../utPLSQL.UI/TestRunnerWindow.cs | 4 ++-- PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/packages.config | 3 ++- PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/utPLSQL.UI.csproj | 7 +++++-- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/App.config b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/App.config index 292458b..c063f3e 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/App.config +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/App.config @@ -1,12 +1,14 @@ - + -
+
- + diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs index 4fca3d8..83bf04d 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs @@ -74,6 +74,8 @@ public async Task RunTestsAsync(string type, string owner, string name, string p { Environment.SetEnvironmentVariable("ORACLE_HOME", oracleHome); } + Running = true; + testRunner.Connect(username, password, database); } catch (Exception e) @@ -102,8 +104,6 @@ private async Task RunTestsAsync(List path, bool coverage) SetWindowTitle(path); - Running = true; - if (coverage) { var codeCoverageReportDialog = new CodeCoverageReportDialog(path); diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/packages.config b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/packages.config index e70edc3..4c17a59 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/packages.config +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/packages.config @@ -1,5 +1,6 @@  - + + \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/utPLSQL.UI.csproj b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/utPLSQL.UI.csproj index ffe5ffc..55de144 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/utPLSQL.UI.csproj +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/utPLSQL.UI.csproj @@ -37,6 +37,9 @@ ..\packages\FontAwesome.Sharp.5.15.3\lib\net45\FontAwesome.Sharp.dll + + ..\packages\Oracle.ManagedDataAccess.19.10.0\lib\net40\Oracle.ManagedDataAccess.dll + @@ -47,8 +50,8 @@ - - ..\packages\utPLSQL.Api.1.5.2\lib\net45\utPLSQL.Api.dll + + ..\packages\utPLSQL.Api.1.5.6\lib\net45\utPLSQL.Api.dll From 4be4e769e70c0a682a8eb00c83ee4c9edc76aaa5 Mon Sep 17 00:00:00 2001 From: Simon Martinelli Date: Fri, 10 Dec 2021 10:47:29 +0100 Subject: [PATCH 23/26] #21 Manually enter path in run window --- .../ColorProgressBar/ColorProgressBar.csproj | 6 +- .../Properties/Resources.Designer.cs | 67 +++++++++---------- .../Properties/Settings.Designer.cs | 29 ++++---- .../PlsqlDeveloperUtPlsqlPlugin/App.config | 4 +- .../PlsqlDeveloperUtPlsqlPlugin.cs | 28 ++++++-- .../PlsqlDeveloperUtPlsqlPlugin.csproj | 2 +- .../Properties/Resources.Designer.cs | 30 ++++----- .../packages.config | 2 +- .../utPLSQL.UI.Standalone/App.config | 4 +- .../utPLSQL.UI.Standalone/LoginForm.cs | 4 +- .../Properties/Resources.Designer.cs | 26 +++---- .../Properties/Settings.Designer.cs | 10 +-- .../utPLSQL.UI.Standalone.csproj | 9 +-- .../utPLSQL.UI/App.config | 10 ++- .../utPLSQL.UI/TestRunnerWindow.cs | 19 ++++-- .../utPLSQL.UI/packages.config | 2 +- .../utPLSQL.UI/utPLSQL.UI.csproj | 2 +- 17 files changed, 134 insertions(+), 120 deletions(-) diff --git a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBar.csproj b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBar.csproj index 9cc38de..e67f3fc 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBar.csproj +++ b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBar.csproj @@ -8,9 +8,10 @@ Library ColorProgressBar ColorProgressBar - v4.0 + v4.8 512 true + AnyCPU @@ -21,6 +22,7 @@ DEBUG;TRACE prompt 4 + false AnyCPU @@ -30,6 +32,7 @@ TRACE prompt 4 + false @@ -61,6 +64,7 @@ True Resources.resx + True SettingsSingleFileGenerator diff --git a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Resources.Designer.cs b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Resources.Designer.cs index b95135c..d9db046 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Resources.Designer.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Resources.Designer.cs @@ -1,68 +1,61 @@ //------------------------------------------------------------------------------ // -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. // //------------------------------------------------------------------------------ - -namespace ColorProgressBar.Properties -{ +namespace ColorProgressBar.Properties { + using System; + + /// - /// A strongly-typed resource class, for looking up localized strings, etc. + /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. /// - // 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", "4.0.0.0")] + // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert + // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. + // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen + // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. + [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 - { - + internal class Resources { + private static global::System.Resources.ResourceManager resourceMan; - + private static global::System.Globalization.CultureInfo resourceCulture; - + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() - { + internal Resources() { } - + /// - /// Returns the cached ResourceManager instance used by this class. + /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager - { - get - { - if ((resourceMan == null)) - { + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ColorProgressBar.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; } } - + /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. + /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle + /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture - { - get - { + internal static global::System.Globalization.CultureInfo Culture { + get { return resourceCulture; } - set - { + set { resourceCulture = value; } } diff --git a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Settings.Designer.cs b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Settings.Designer.cs index 6e05c97..04a8807 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Settings.Designer.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Settings.Designer.cs @@ -1,27 +1,24 @@ //------------------------------------------------------------------------------ // -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. // //------------------------------------------------------------------------------ - -namespace ColorProgressBar.Properties -{ +namespace ColorProgressBar.Properties { + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase - { - + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.0.3.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default - { - get - { + + public static Settings Default { + get { return defaultInstance; } } diff --git a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/App.config b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/App.config index 4338a08..3e0e37c 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/App.config +++ b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/App.config @@ -1,3 +1,3 @@ - + - + diff --git a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.cs b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.cs index 8c58d5e..2cf307f 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.cs @@ -43,6 +43,7 @@ public class PlsqlDeveloperUtPlsqlPlugin private const int PluginMenuIndexAllTests = 3; private const int PluginMenuIndexAllTestsWithCoverage = 4; + private const int PluginMenuIndexPath = 5; private const int PluginPopupIndex = 1; private const int PluginPopupIndexWithCoverage = 2; @@ -107,6 +108,14 @@ public static void OnActivate() } } + using (var stream = assembly.GetManifestResourceStream("utPLSQL.utPLSQL.bmp")) + { + if (stream != null) + { + createToolButton(pluginId, PluginMenuIndexPath, "utPLSQL", "utPLSQL.bmp", new Bitmap(stream).GetHbitmap().ToInt64()); + } + } + using (var stream = assembly.GetManifestResourceStream("utPLSQL.utPLSQL.bmp")) { if (stream != null) @@ -210,6 +219,8 @@ public static string CreateMenuItem(int index) return "LARGEITEM=Run all tests of current user"; case PluginMenuIndexAllTestsWithCoverage: return "LARGEITEM=Run code coverage for current user"; + case PluginMenuIndexPath: + return "LARGEITEM=Run tests for specific path"; default: return ""; } @@ -226,7 +237,7 @@ public static void OnMenuClick(int index) { var testResultWindow = new TestRunnerWindow(_plugin, username, password, database, connectAs, oracleHome); Windows.Add(testResultWindow); - testResultWindow.RunTestsAsync("_ALL", username, null, null, false); + testResultWindow.RunTestsAsync("_ALL", username, null, null, false, false); } } else if (index == PluginMenuIndexAllTestsWithCoverage) @@ -235,7 +246,16 @@ public static void OnMenuClick(int index) { var testResultWindow = new TestRunnerWindow(_plugin, username, password, database, connectAs, oracleHome); Windows.Add(testResultWindow); - testResultWindow.RunTestsAsync("_ALL", username, null, null, true); + testResultWindow.RunTestsAsync("_ALL", username, null, null, true, false); + } + } + else if (index == PluginMenuIndexPath) + { + if (isConnected() && !isSydba()) + { + var testResultWindow = new TestRunnerWindow(_plugin, username, password, database, connectAs, oracleHome); + Windows.Add(testResultWindow); + testResultWindow.RunTestsAsync(null, null, null, null, false, true); } } else if (index == PluginPopupIndex) @@ -247,7 +267,7 @@ public static void OnMenuClick(int index) var testResultWindow = new TestRunnerWindow(_plugin, username, password, database, connectAs, oracleHome); Windows.Add(testResultWindow); testResultWindow.RunTestsAsync(Marshal.PtrToStringAnsi(type), Marshal.PtrToStringAnsi(owner), - Marshal.PtrToStringAnsi(name), Marshal.PtrToStringAnsi(subType), false); + Marshal.PtrToStringAnsi(name), Marshal.PtrToStringAnsi(subType), false, false); } } else if (index == PluginPopupIndexWithCoverage) @@ -259,7 +279,7 @@ public static void OnMenuClick(int index) var testResultWindow = new TestRunnerWindow(_plugin, username, password, database, connectAs, oracleHome); Windows.Add(testResultWindow); testResultWindow.RunTestsAsync(Marshal.PtrToStringAnsi(type), Marshal.PtrToStringAnsi(owner), - Marshal.PtrToStringAnsi(name), Marshal.PtrToStringAnsi(subType), true); + Marshal.PtrToStringAnsi(name), Marshal.PtrToStringAnsi(subType), true, false); } } } diff --git a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.csproj b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.csproj index e62f061..47062f2 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.csproj +++ b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.csproj @@ -10,7 +10,7 @@ Properties utPLSQL PlsqlDeveloperUtPlsqlPlugin - v4.5 + v4.8 512 true diff --git a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/Resources.Designer.cs b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/Resources.Designer.cs index aed0e2d..c8d1576 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/Resources.Designer.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/Resources.Designer.cs @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ // -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. // //------------------------------------------------------------------------------ @@ -13,13 +13,13 @@ namespace utPLSQL.Properties { /// - /// A strongly-typed resource class, for looking up localized strings, etc. + /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. /// - // 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", "16.0.0.0")] + // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert + // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. + // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen + // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. + [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 @@ internal Resources() { } /// - /// Returns the cached ResourceManager instance used by this class. + /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Resources.ResourceManager ResourceManager { @@ -47,8 +47,8 @@ internal Resources() { } /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. + /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle + /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Globalization.CultureInfo Culture { @@ -61,7 +61,7 @@ internal Resources() { } /// - /// Looks up a localized resource of type System.Drawing.Bitmap. + /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap utPLSQL { get { @@ -71,7 +71,7 @@ internal static System.Drawing.Bitmap utPLSQL { } /// - /// Looks up a localized resource of type System.Drawing.Bitmap. + /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap utPLSQL_coverage { get { diff --git a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/packages.config b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/packages.config index 90cda05..a54dbe2 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/packages.config +++ b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/packages.config @@ -3,5 +3,5 @@ - + \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/App.config b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/App.config index 4338a08..3e0e37c 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/App.config +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/App.config @@ -1,3 +1,3 @@ - + - + diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/LoginForm.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/LoginForm.cs index 4450d65..0b808b1 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/LoginForm.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/LoginForm.cs @@ -13,13 +13,13 @@ public LoginForm() private void BtnRunTests_Click(object sender, EventArgs e) { var testRunnerWindow = new TestRunnerWindow(null, txtUsername.Text, txtPassword.Text, txtDatabase.Text, null, null); - testRunnerWindow.RunTestsAsync("USER", null, txtUsername.Text, null, false); + testRunnerWindow.RunTestsAsync("USER", null, txtUsername.Text, null, false, false); } private void btnCodeCoverage_Click(object sender, EventArgs e) { var testRunnerWindow = new TestRunnerWindow(null, txtUsername.Text, txtPassword.Text, txtDatabase.Text, null, null); - testRunnerWindow.RunTestsAsync("USER", null, txtUsername.Text, null, true); + testRunnerWindow.RunTestsAsync("USER", null, txtUsername.Text, null, true, false); } } } diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/Resources.Designer.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/Resources.Designer.cs index fa38f58..a1baf06 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/Resources.Designer.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/Resources.Designer.cs @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ // -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. // //------------------------------------------------------------------------------ @@ -13,13 +13,13 @@ namespace utPLSQL.UI.Standalone.Properties { /// - /// A strongly-typed resource class, for looking up localized strings, etc. + /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. /// - // 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", "16.0.0.0")] + // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert + // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. + // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen + // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. + [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 @@ internal Resources() { } /// - /// Returns the cached ResourceManager instance used by this class. + /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Resources.ResourceManager ResourceManager { @@ -47,8 +47,8 @@ internal Resources() { } /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. + /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle + /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Globalization.CultureInfo Culture { diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/Settings.Designer.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/Settings.Designer.cs index 83b35b5..82c597d 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/Settings.Designer.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/Settings.Designer.cs @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ // -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. // //------------------------------------------------------------------------------ @@ -12,7 +12,7 @@ namespace utPLSQL.UI.Standalone.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.0.3.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/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/utPLSQL.UI.Standalone.csproj b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/utPLSQL.UI.Standalone.csproj index 2d8cc12..1e92865 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/utPLSQL.UI.Standalone.csproj +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/utPLSQL.UI.Standalone.csproj @@ -9,7 +9,7 @@ WinExe utPLSQL.UI.Standalone utPLSQL.UI.Standalone - v4.5 + v4.8 512 true @@ -94,11 +94,4 @@ - - - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/App.config b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/App.config index c063f3e..7b54b1e 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/App.config +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/App.config @@ -1,14 +1,12 @@ - + -
+
- + @@ -27,4 +25,4 @@ - + diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs index 83bf04d..5091c2b 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs @@ -62,9 +62,9 @@ public TestRunnerWindow(object pluginIntegration, string username, string passwo dataGridViewExpectations.DataSource = dataViewExpectations; } - public async Task RunTestsAsync(string type, string owner, string name, string procedure, bool coverage) + public async Task RunTestsAsync(string type, string owner, string name, string procedure, bool coverage, bool showOnly) { - var path = GetPath(type, owner, name, procedure); + var path = showOnly ? null : GetPath(type, owner, name, procedure); testRunner = new RealTimeTestRunner(); @@ -93,7 +93,16 @@ public async Task RunTestsAsync(string type, string owner, string name, string p return; } - await RunTestsAsync(path, coverage); + if (showOnly) + { + txtPath.ReadOnly = false; + txtPath.Focus(); + Show(); + } + else + { + await RunTestsAsync(path, coverage); + } } private async Task RunTestsAsync(List path, bool coverage) @@ -611,7 +620,7 @@ private async void menuItemRunTests_ClickAsync(object sender, EventArgs e) var rowTestResult = dataTableTestResults.Rows[rowIndexOnRightClick]; var testResultWindow = new TestRunnerWindow(pluginIntegration, username, password, database, connectAs, oracleHome); - await testResultWindow.RunTestsAsync("PROCEDURE", rowTestResult["Owner"].ToString(), rowTestResult["Package"].ToString(), rowTestResult["Procedure"].ToString(), false); + await testResultWindow.RunTestsAsync("PROCEDURE", rowTestResult["Owner"].ToString(), rowTestResult["Package"].ToString(), rowTestResult["Procedure"].ToString(), false, false); } private async void menuItemCoverage_ClickAsync(object sender, EventArgs e) @@ -619,7 +628,7 @@ private async void menuItemCoverage_ClickAsync(object sender, EventArgs e) var rowTestResult = dataTableTestResults.Rows[rowIndexOnRightClick]; var testResultWindow = new TestRunnerWindow(pluginIntegration, username, password, database, connectAs, oracleHome); - await testResultWindow.RunTestsAsync("PROCEDURE", rowTestResult["Owner"].ToString(), rowTestResult["Package"].ToString(), rowTestResult["Procedure"].ToString(), true); + await testResultWindow.RunTestsAsync("PROCEDURE", rowTestResult["Owner"].ToString(), rowTestResult["Package"].ToString(), rowTestResult["Procedure"].ToString(), true, false); } private void cbSuccess_CheckedChanged(object sender, EventArgs e) diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/packages.config b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/packages.config index 4c17a59..e4d0a02 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/packages.config +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/packages.config @@ -1,6 +1,6 @@  - + \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/utPLSQL.UI.csproj b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/utPLSQL.UI.csproj index 55de144..32746a5 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/utPLSQL.UI.csproj +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/utPLSQL.UI.csproj @@ -9,7 +9,7 @@ Properties utPLSQL utPLSQL.UI - v4.5 + v4.8 512 true From 13841d83c6a58e2e434cdc84b11c7c9e0d98ba05 Mon Sep 17 00:00:00 2001 From: Simon Martinelli Date: Fri, 10 Dec 2021 10:55:31 +0100 Subject: [PATCH 24/26] New development version --- .../ColorProgressBar/Properties/AssemblyInfo.cs | 4 ++-- .../PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs | 4 ++-- .../utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs | 4 ++-- .../utPLSQL.UI/Properties/AssemblyInfo.cs | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs index ded20e6..813cb01 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("1.2.4.0")] -[assembly: AssemblyFileVersion("1.2.4.0")] +[assembly: AssemblyVersion("1.2.5.0")] +[assembly: AssemblyFileVersion("1.2.5.0")] diff --git a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs index 0654ec4..c0abd13 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs @@ -28,5 +28,5 @@ // Build Number // Revision // -[assembly: AssemblyVersion("1.2.4.0")] -[assembly: AssemblyFileVersion("1.2.4.0")] +[assembly: AssemblyVersion("1.2.5.0")] +[assembly: AssemblyFileVersion("1.2.5.0")] diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs index 68eb8e8..3a1c0b6 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ // Build Number // Revision // -[assembly: AssemblyVersion("1.2.4.0")] -[assembly: AssemblyFileVersion("1.2.4.0")] +[assembly: AssemblyVersion("1.2.5.0")] +[assembly: AssemblyFileVersion("1.2.5.0")] diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs index 45469a4..7738391 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ // Build Number // Revision // -[assembly: AssemblyVersion("1.2.4.0")] -[assembly: AssemblyFileVersion("1.2.4.0")] +[assembly: AssemblyVersion("1.2.5.0")] +[assembly: AssemblyFileVersion("1.2.5.0")] From 9c38f61ca748228016ee7c3269f8a0e719ba8887 Mon Sep 17 00:00:00 2001 From: Simon Martinelli Date: Thu, 16 Dec 2021 16:23:12 +0100 Subject: [PATCH 25/26] Updated documentation. --- README.md | 2 +- screenshots/tools_ribbon_full.png | Bin 28263 -> 29520 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6329140..2d51958 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ The utPLSQL Plugin integrates [utPLSQL](https://utplsql.org) with [Allround Auto ## Running Tests -The plugin adds a Button to the Tools ribbon to execute all tests of the current user or run code coverage. +The plugin adds three buttons to the tools ribbon to 1) execute all tests of the current user, 2) run code coverage or 3) run tests for a specific path. If you choose 3) the run window will open and you can enter the path manually. ![Tools Ribbon](screenshots/tools_ribbon_full.png) diff --git a/screenshots/tools_ribbon_full.png b/screenshots/tools_ribbon_full.png index 34ec487a7905e3ad49c1bc135029838e3de5b950..85c1cfb8c75fe2b6327c0c24cc5d54c9141ccee7 100644 GIT binary patch literal 29520 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 D^LiWg literal 28263 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 Date: Thu, 16 Dec 2021 17:25:52 +0100 Subject: [PATCH 26/26] Changed version to align with utPLSQL versioning schema --- .../ColorProgressBar/Properties/AssemblyInfo.cs | 4 ++-- .../PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs | 4 ++-- .../utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs | 4 ++-- .../utPLSQL.UI/Properties/AssemblyInfo.cs | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs index 813cb01..c0079b2 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("1.2.5.0")] -[assembly: AssemblyFileVersion("1.2.5.0")] +[assembly: AssemblyVersion("3.1.6")] +[assembly: AssemblyFileVersion("3.1.6")] diff --git a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs index c0abd13..f74de45 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs @@ -28,5 +28,5 @@ // Build Number // Revision // -[assembly: AssemblyVersion("1.2.5.0")] -[assembly: AssemblyFileVersion("1.2.5.0")] +[assembly: AssemblyVersion("3.1.6")] +[assembly: AssemblyFileVersion("3.1.6")] diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs index 3a1c0b6..747cc77 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ // Build Number // Revision // -[assembly: AssemblyVersion("1.2.5.0")] -[assembly: AssemblyFileVersion("1.2.5.0")] +[assembly: AssemblyVersion("3.1.6")] +[assembly: AssemblyFileVersion("3.1.6")] diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs index 7738391..3f2d36e 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ // Build Number // Revision // -[assembly: AssemblyVersion("1.2.5.0")] -[assembly: AssemblyFileVersion("1.2.5.0")] +[assembly: AssemblyVersion("3.1.6")] +[assembly: AssemblyFileVersion("3.1.6")]