From 9c37bed4180c87727fafceb2b966f0e384b048cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=95=D0=B3=D0=BE=D1=80=20=D0=97=D0=B8=D0=BC=D0=BA=D0=B8?= =?UTF-8?q?=D0=BD?= Date: Wed, 12 Feb 2025 23:21:33 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=20=E2=84=961?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProjectDoubleDeckerBus/DirectionType.cs | 29 +++ .../DrawningDoubleDeckerBus.cs | 195 ++++++++++++++++++ .../EntityDoubleDeckerBus.cs | 55 +++++ .../ProjectDoubleDeckerBus/Form1.Designer.cs | 39 ---- .../ProjectDoubleDeckerBus/Form1.cs | 10 - .../FormDoubleDeckerBus.Designer.cs | 134 ++++++++++++ .../FormDoubleDeckerBus.cs | 85 ++++++++ .../FormDoubleDeckerBus.resx | 120 +++++++++++ .../ProjectDoubleDeckerBus/Program.cs | 2 +- .../ProjectDoubleDeckerBus.csproj | 15 ++ .../Properties/Resources.Designer.cs | 103 +++++++++ .../Properties/Resources.resx | 133 ++++++++++++ .../ProjectDoubleDeckerBus/Resources/down.jpg | Bin 0 -> 16299 bytes .../ProjectDoubleDeckerBus/Resources/left.jpg | Bin 0 -> 15576 bytes .../Resources/right.jpg | Bin 0 -> 15498 bytes .../ProjectDoubleDeckerBus/Resources/up.jpg | Bin 0 -> 16270 bytes 16 files changed, 870 insertions(+), 50 deletions(-) create mode 100644 ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/DirectionType.cs create mode 100644 ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/DrawningDoubleDeckerBus.cs create mode 100644 ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/EntityDoubleDeckerBus.cs delete mode 100644 ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/Form1.Designer.cs delete mode 100644 ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/Form1.cs create mode 100644 ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/FormDoubleDeckerBus.Designer.cs create mode 100644 ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/FormDoubleDeckerBus.cs create mode 100644 ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/FormDoubleDeckerBus.resx create mode 100644 ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/Properties/Resources.Designer.cs create mode 100644 ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/Properties/Resources.resx create mode 100644 ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/Resources/down.jpg create mode 100644 ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/Resources/left.jpg create mode 100644 ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/Resources/right.jpg create mode 100644 ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/Resources/up.jpg diff --git a/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/DirectionType.cs b/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/DirectionType.cs new file mode 100644 index 0000000..e8a1d5a --- /dev/null +++ b/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/DirectionType.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectDoubleDeckerBus +{ + public enum DirectionType + { + /// + /// Вверх + /// + Up = 1, + /// + /// Вниз + /// + Down = 2, + /// + /// Влево + /// + Left = 3, + /// + /// Вправо + /// + Right = 4 + + } +} diff --git a/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/DrawningDoubleDeckerBus.cs b/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/DrawningDoubleDeckerBus.cs new file mode 100644 index 0000000..bc4e139 --- /dev/null +++ b/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/DrawningDoubleDeckerBus.cs @@ -0,0 +1,195 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectDoubleDeckerBus +{ + public class DrawningDoubleDeckerBus + { + /// + /// Класс-сущность + /// + public EntityDoubleDeckerBus? EntityDoubleDeckerBus { get; private set; } + + /// + /// Ширина окна + /// + private int _pictureWidth; + + /// + /// Высота окна + /// + private int _pictureHeight; + + /// + /// Левая координата прорисовки автобуса + /// + /// + private int _startPosX; + + /// + /// Верхняя кооридната прорисовки автобуса + /// + private int _startPosY; + + /// + /// Ширина прорисовки автобуса + /// + private readonly int _busWidth = 110; + + /// + /// Высота прорисовки автобуса + /// + private readonly int _busHeight = 70; + + /// + /// Инициализация свойств + /// + /// Скорость + /// Вес + /// Цвет кузова + /// Дополнительный цвет + /// Признак наличия второго этажа + /// Признак наличия лестницы на второй этаж + /// Ширина картинки + /// Высота картинки + /// true - объект создан, false - проверка не пройдена, + /// нельзя создать объект в этих размерах + public bool Init(int speed, double weight, Color bodyColor, Color +additionalColor, bool secondFloor, bool ladder, bool roadLine, int width, int height) + { + _pictureWidth = width; + _pictureHeight = height; + if (_pictureHeight < _busHeight || _pictureWidth < _busWidth) + { + return false; + } + EntityDoubleDeckerBus = new EntityDoubleDeckerBus(); + EntityDoubleDeckerBus.Init(speed, weight, bodyColor, additionalColor, + secondFloor, ladder); + return true; + } + + /// + /// Установка позиции + /// + /// Координата X + /// Координата Y + public void SetPosition(int x, int y) + { + _startPosX = Math.Min(x, _pictureWidth - _busWidth); + _startPosY = Math.Min(y, _pictureHeight - _busHeight); + } + + /// + /// Изменение направления перемещения + /// + /// Направление + public void MoveTransport(DirectionType direction) + { + if (EntityDoubleDeckerBus == null) + { + return; + } + switch (direction) + { + //влево + case DirectionType.Left: + if (_startPosX - EntityDoubleDeckerBus.Step > 0) + { + _startPosX -= (int)EntityDoubleDeckerBus.Step; + } + break; + //вверх + case DirectionType.Up: + if (_startPosY - EntityDoubleDeckerBus.Step > 0) + { + _startPosY -= (int)EntityDoubleDeckerBus.Step; + } + break; + // вправо + case DirectionType.Right: + if (_startPosX + _busWidth + EntityDoubleDeckerBus.Step < _pictureWidth) + { + _startPosX += (int)EntityDoubleDeckerBus.Step; + } + break; + //вниз + case DirectionType.Down: + if (_startPosY + _busHeight + EntityDoubleDeckerBus.Step < _pictureHeight) + { + _startPosY += (int)EntityDoubleDeckerBus.Step; + } + break; + } + } + + /// + /// Прорисовка объекта + /// + /// + public void DrawTransport(Graphics g) + { + if (EntityDoubleDeckerBus == null) + { + return; + } + + Pen pen = new(Color.Black); + + // Границы первого этажа автобуса + g.DrawRectangle(pen, _startPosX, _startPosY + 30, 100, 30); + Brush brBodyColor = new SolidBrush(EntityDoubleDeckerBus.BodyColor); + g.FillRectangle(brBodyColor, _startPosX, _startPosY + 30, 100, 30); + + // Дверь + g.DrawRectangle(pen, _startPosX + 30, _startPosY + 40, 10, 20); + Brush brBlack = new SolidBrush(Color.Black); + g.FillRectangle(brBlack, _startPosX + 30, _startPosY + 40, 10, 20); + + // Колеса + g.DrawEllipse(pen, _startPosX + 7, _startPosY + 55, 10, 10); + g.DrawEllipse(pen, _startPosX + 77, _startPosY + 55, 10, 10); + g.FillEllipse(brBlack, _startPosX + 7, _startPosY + 55, 10, 10); + g.FillEllipse(brBlack, _startPosX + 77, _startPosY + 55, 10, 10); + + // Окна + Brush brBlue = new SolidBrush(Color.Blue); + g.FillEllipse(brBlue, _startPosX + 10, _startPosY + 35, 10, 15); + g.FillEllipse(brBlue, _startPosX + 50, _startPosY + 35, 10, 15); + g.FillEllipse(brBlue, _startPosX + 70, _startPosY + 35, 10, 15); + g.FillEllipse(brBlue, _startPosX + 90, _startPosY + 35, 10, 15); + + if (EntityDoubleDeckerBus.SecondFloor) + { + // Границы второго этажа автобуса + g.FillRectangle(brBodyColor, _startPosX, _startPosY, 100, 30); + + // Дверь второго этажа + g.DrawRectangle(pen, _startPosX, _startPosY + 10, 10, 20); + g.FillRectangle(brBlack, _startPosX, _startPosY + 10, 10, 20); + + // Окна второго этажа + g.FillEllipse(brBlue, _startPosX + 12, _startPosY + 5, 10, 15); + g.FillEllipse(brBlue, _startPosX + 30, _startPosY + 5, 10, 15); + g.FillEllipse(brBlue, _startPosX + 50, _startPosY + 5, 10, 15); + g.FillEllipse(brBlue, _startPosX + 70, _startPosY + 5, 10, 15); + g.FillEllipse(brBlue, _startPosX + 90, _startPosY + 5, 10, 15); + } + + if (EntityDoubleDeckerBus.Ladder) + { + //Вертикальные прямые + g.DrawLine(pen, new Point((int)(_startPosX), (int)(_startPosY + 55)), new Point((int)(_startPosX), (int)(_startPosY + 25))); + g.DrawLine(pen, new Point((int)(_startPosX + 10), (int)(_startPosY + 55)), new Point((int)(_startPosX + 10), (int)(_startPosY + 25))); + + //Горизонтальные прямые + g.DrawLine(pen, new Point((int)(_startPosX), (int)(_startPosY + 35)), new Point((int)(_startPosX + 10), (int)(_startPosY + 35))); + g.DrawLine(pen, new Point((int)(_startPosX), (int)(_startPosY + 45)), new Point((int)(_startPosX + 10), (int)(_startPosY + 45))); + g.DrawLine(pen, new Point((int)(_startPosX), (int)(_startPosY + 55)), new Point((int)(_startPosX + 10), (int)(_startPosY + 55))); + } + } + } +} diff --git a/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/EntityDoubleDeckerBus.cs b/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/EntityDoubleDeckerBus.cs new file mode 100644 index 0000000..1f7f751 --- /dev/null +++ b/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/EntityDoubleDeckerBus.cs @@ -0,0 +1,55 @@ +namespace ProjectDoubleDeckerBus +{ + public class EntityDoubleDeckerBus + { + /// + /// Скорость + /// + public int Speed { get; private set; } + /// + /// Вес + /// + public double Weight { get; private set; } + /// + /// Основной цвет + /// + public Color BodyColor { get; private set; } + /// + /// Дополнительный цвет (для опциональных элементов) + /// + public Color AdditionalColor { get; private set; } + /// + /// Признак (опция) наличия второго этажа + /// + public bool SecondFloor { get; private set; } + /// + /// Признак (опция) наличия лестницы на второй этаж + /// + public bool Ladder { get; private set; } + + public double Step => (double)Speed * 100 / Weight; + /// + /// Инициализация полей объекта-класса спортивного автомобиля + /// + /// Скорость + /// Вес автобуса + /// Основной цвет + /// Дополнительный цвет + /// Признак наличия второго этажа + /// Признак наличия лестницы на второй этаж + + public void Init(int speed, double weight, Color bodyColor, Color + additionalColor, bool secondFloor, bool ladder) + { + Speed = speed; + Weight = weight; + BodyColor = bodyColor; + AdditionalColor = additionalColor; + SecondFloor = secondFloor; + Ladder = ladder; + + } + } +} + + diff --git a/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/Form1.Designer.cs b/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/Form1.Designer.cs deleted file mode 100644 index 420d78b..0000000 --- a/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/Form1.Designer.cs +++ /dev/null @@ -1,39 +0,0 @@ -namespace ProjectDoubleDeckerBus -{ - partial class Form1 - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(800, 450); - this.Text = "Form1"; - } - - #endregion - } -} diff --git a/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/Form1.cs b/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/Form1.cs deleted file mode 100644 index 50401af..0000000 --- a/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/Form1.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace ProjectDoubleDeckerBus -{ - public partial class Form1 : Form - { - public Form1() - { - InitializeComponent(); - } - } -} diff --git a/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/FormDoubleDeckerBus.Designer.cs b/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/FormDoubleDeckerBus.Designer.cs new file mode 100644 index 0000000..13b7e59 --- /dev/null +++ b/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/FormDoubleDeckerBus.Designer.cs @@ -0,0 +1,134 @@ +namespace ProjectDoubleDeckerBus +{ + partial class FormDoubleDeckerBus + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + pictureBoxDoubleDeckerBus = new PictureBox(); + buttonCreate = new Button(); + buttonLeft = new Button(); + buttonRight = new Button(); + buttonDown = new Button(); + buttonUp = new Button(); + ((System.ComponentModel.ISupportInitialize)pictureBoxDoubleDeckerBus).BeginInit(); + SuspendLayout(); + // + // pictureBoxDoubleDeckerBus + // + pictureBoxDoubleDeckerBus.Dock = DockStyle.Fill; + pictureBoxDoubleDeckerBus.Location = new Point(0, 0); + pictureBoxDoubleDeckerBus.Name = "pictureBoxDoubleDeckerBus"; + pictureBoxDoubleDeckerBus.Size = new Size(800, 450); + pictureBoxDoubleDeckerBus.TabIndex = 0; + pictureBoxDoubleDeckerBus.TabStop = false; + // + // buttonCreate + // + buttonCreate.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonCreate.Location = new Point(12, 415); + buttonCreate.Name = "buttonCreate"; + buttonCreate.Size = new Size(75, 23); + buttonCreate.TabIndex = 1; + buttonCreate.Text = "Создать"; + buttonCreate.UseVisualStyleBackColor = true; + buttonCreate.Click += buttonCreate_Click; + // + // buttonLeft + // + buttonLeft.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonLeft.BackgroundImage = Properties.Resources.left; + buttonLeft.BackgroundImageLayout = ImageLayout.Stretch; + buttonLeft.Location = new Point(643, 403); + buttonLeft.Name = "buttonLeft"; + buttonLeft.Size = new Size(35, 35); + buttonLeft.TabIndex = 2; + buttonLeft.UseVisualStyleBackColor = true; + buttonLeft.Click += buttonMove_Click; + // + // buttonRight + // + buttonRight.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonRight.BackgroundImage = Properties.Resources.right; + buttonRight.BackgroundImageLayout = ImageLayout.Stretch; + buttonRight.Location = new Point(725, 403); + buttonRight.Name = "buttonRight"; + buttonRight.Size = new Size(35, 35); + buttonRight.TabIndex = 3; + buttonRight.UseVisualStyleBackColor = true; + buttonRight.Click += buttonMove_Click; + // + // buttonDown + // + buttonDown.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonDown.BackgroundImage = Properties.Resources.down; + buttonDown.BackgroundImageLayout = ImageLayout.Stretch; + buttonDown.Location = new Point(684, 403); + buttonDown.Name = "buttonDown"; + buttonDown.Size = new Size(35, 35); + buttonDown.TabIndex = 4; + buttonDown.UseVisualStyleBackColor = true; + buttonDown.Click += buttonMove_Click; + // + // buttonUp + // + buttonUp.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonUp.BackgroundImage = Properties.Resources.up; + buttonUp.BackgroundImageLayout = ImageLayout.Stretch; + buttonUp.Location = new Point(684, 362); + buttonUp.Name = "buttonUp"; + buttonUp.Size = new Size(35, 35); + buttonUp.TabIndex = 5; + buttonUp.UseVisualStyleBackColor = true; + buttonUp.Click += buttonMove_Click; + // + // FormDoubleDeckerBus + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(buttonUp); + Controls.Add(buttonDown); + Controls.Add(buttonRight); + Controls.Add(buttonLeft); + Controls.Add(buttonCreate); + Controls.Add(pictureBoxDoubleDeckerBus); + Name = "FormDoubleDeckerBus"; + Text = "Двухэтажный автобус"; + ((System.ComponentModel.ISupportInitialize)pictureBoxDoubleDeckerBus).EndInit(); + ResumeLayout(false); + } + + #endregion + + private PictureBox pictureBoxDoubleDeckerBus; + private Button buttonCreate; + private Button buttonLeft; + private Button buttonRight; + private Button buttonDown; + private Button buttonUp; + } +} \ No newline at end of file diff --git a/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/FormDoubleDeckerBus.cs b/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/FormDoubleDeckerBus.cs new file mode 100644 index 0000000..01fd517 --- /dev/null +++ b/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/FormDoubleDeckerBus.cs @@ -0,0 +1,85 @@ +namespace ProjectDoubleDeckerBus +{ + public partial class FormDoubleDeckerBus : Form + { + + /// + /// Поле-объект для прорисовки объекта + /// + private DrawningDoubleDeckerBus? _drawningDoubleDeckerBus; + + /// + /// Конструктор формы + /// + public FormDoubleDeckerBus() + { + InitializeComponent(); + } + + /// + /// Метод прорисовки автобуса + /// + private void Draw() + { + if (_drawningDoubleDeckerBus == null) + { + return; + } + Bitmap bmp = new(pictureBoxDoubleDeckerBus.Width, + pictureBoxDoubleDeckerBus.Height); + Graphics gr = Graphics.FromImage(bmp); + _drawningDoubleDeckerBus.DrawTransport(gr); + pictureBoxDoubleDeckerBus.Image = bmp; + } + + /// + /// Обработка нажатия кнопки "Создать" + /// + /// + /// + private void buttonCreate_Click(object sender, EventArgs e) + { + Random random = new(); + _drawningDoubleDeckerBus = new DrawningDoubleDeckerBus(); + _drawningDoubleDeckerBus.Init(random.Next(100, 300), random.Next(1000, 3000), + Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)), + Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)), + Convert.ToBoolean(random.Next(0, 2)), + Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2)), + pictureBoxDoubleDeckerBus.Width, pictureBoxDoubleDeckerBus.Height); + _drawningDoubleDeckerBus.SetPosition(random.Next(10, 100), + random.Next(10, 100)); + Draw(); + } + + /// + /// Перемещение объекта по форме (нажатие кнопок навигации) + /// + /// + /// + private void buttonMove_Click(object sender, EventArgs e) + { + if (_drawningDoubleDeckerBus == null) + { + return; + } + string name = ((Button)sender)?.Name ?? string.Empty; + switch (name) + { + case "buttonUp": + _drawningDoubleDeckerBus.MoveTransport(DirectionType.Up); + break; + case "buttonDown": + _drawningDoubleDeckerBus.MoveTransport(DirectionType.Down); + break; + case "buttonLeft": + _drawningDoubleDeckerBus.MoveTransport(DirectionType.Left); + break; + case "buttonRight": + _drawningDoubleDeckerBus.MoveTransport(DirectionType.Right); + break; + } + Draw(); + } + } +} diff --git a/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/FormDoubleDeckerBus.resx b/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/FormDoubleDeckerBus.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/FormDoubleDeckerBus.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/Program.cs b/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/Program.cs index 3d0abaa..f41ca0b 100644 --- a/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/Program.cs +++ b/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/Program.cs @@ -11,7 +11,7 @@ namespace ProjectDoubleDeckerBus // To customize application configuration such as set high DPI settings or default font, // see https://aka.ms/applicationconfiguration. ApplicationConfiguration.Initialize(); - Application.Run(new Form1()); + Application.Run(new FormDoubleDeckerBus()); } } } \ No newline at end of file diff --git a/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus.csproj b/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus.csproj index 663fdb8..af03d74 100644 --- a/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus.csproj +++ b/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus.csproj @@ -8,4 +8,19 @@ enable + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + \ No newline at end of file diff --git a/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/Properties/Resources.Designer.cs b/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/Properties/Resources.Designer.cs new file mode 100644 index 0000000..ff7763e --- /dev/null +++ b/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/Properties/Resources.Designer.cs @@ -0,0 +1,103 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace ProjectDoubleDeckerBus.Properties { + using System; + + + /// + /// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д. + /// + // Этот класс создан автоматически классом StronglyTypedResourceBuilder + // с помощью такого средства, как ResGen или Visual Studio. + // Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen + // с параметром /str или перестройте свой проект VS. + [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 { + + 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() { + } + + /// + /// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ProjectDoubleDeckerBus.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Перезаписывает свойство CurrentUICulture текущего потока для всех + /// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap down { + get { + object obj = ResourceManager.GetObject("down", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap left { + get { + object obj = ResourceManager.GetObject("left", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap right { + get { + object obj = ResourceManager.GetObject("right", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap up { + get { + object obj = ResourceManager.GetObject("up", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/Properties/Resources.resx b/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/Properties/Resources.resx new file mode 100644 index 0000000..799a689 --- /dev/null +++ b/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/Properties/Resources.resx @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\up.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\right.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\left.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\down.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/Resources/down.jpg b/ProjectDoubleDeckerBus/ProjectDoubleDeckerBus/Resources/down.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c02625daa5702a54cccbf0193e1ebc3ab6d54870 GIT binary patch literal 16299 zcmeHu1yohrxA#6l*C8bY4oH`@h|(dYbV`SWgeW2+jnYcD3P_jIAgF+XpnynOh!UcN zC`hQ}+xwh@a=m&V|8IQX8*hB$F2-1Ut+{?{&flDCuAPUi7h9tMN<&p$6@bA200#a6 zTf=}7K!i^~NPtg7NI*zTOhiIPM?pqPO2$M(i=sm_v$La_Sy?%F#05CGM7UX51!V+9 zBo0VROYh^CQY zZpuOFnf9AO5YlzlHFa-%r~PhbL73BLhoUVo;Fr%{3LV@R*SXu7?`BKs8X+*Oy1dH# z^bxk*t|#o#b0a}7XePq(xP8OBD@tgnvx|aAyjk{hIXxfk{dYNkiQ2!*`Aa~4?f$zv ze~rj5{r~N|6Q6XVb0T_=QPGePS(K&TbdTZCHNAsBo%n}SVMMA@{5$g5j`sw$2V@Tg zgcYs|y)C)dB7?v4Jc}UcB_ZJOUkA@?b1!K=+%P92o8Q*{=kpJon)bRM2!q`&5NtNe zt|JTEp%alZ?IPCO0u4`_(R{vPP9f*FeVYBV%Ag*nc~ZzSfm_?BJzTa)P#aTVF|ky| z75rFQOJ%DU`h@Vq7I3HEKdv7tYTz(-3e3%S{e$YZHqZb`+d0r*sKBOP8GI->-Xr)F z+yB#cL5rCk#3}>qs~h+4AH>3;8gai=sPST-s5M4JQ0Sz8J>5gRULMo^gFeC-qh|B5 z6buAFJY8H{yoqxM62Ur`-*U1~eSd%*2bSiD&kPDayMiU~`%@kz@yjPTIE79||ML-C z2XkOAcl{Q1v~Mv8D`dHrbIjMF=^FDW)cV7#lfZnMMY{U6pJ&DL0*>l($JHS$#b<{V%VPF_c z)8Aak_t8E`$7x_m&y+iqjqCh8APvj2K#yg;TCg&ild>7h(Qbtezq@l%e=r7x+2w%`YgAf8(Vz9hY$!yv(w|F z?C*oHa15D9vpf0zFNVyEVQ_#xPC{9%Q+hry$Y*~^9BSOrbih&2B5ttKu{ws!_j>2J2s4s*EX zZ>NG}Wg7n+pC3~(`%(7PPpz;S61hXWxL^EbD}xHaCGq_0cK@mMFD-1CenyxjyLxd~ z6MsE_u%y)loNM`u?mu?66LTR5f`Azu?e$O|YVM-o=K76-SQ!zgi9h82?=(f-t(@1B zlT2kfQ-19X@*Rao`9aNnjvs#q{gaGsaOudk%BtNz2mVRX|B)PgMi)c@a2Sjb4nxB5 zuut)DBmxhHFDxo1E^iI!P@<@)(QGud`$Xb6z=wB2@R1${KHLMBR)!bG>X8Ao7RL{7 zeyI=EH(4jjO>8>u(SF77M)*TMfunBu&H=&V!Q-{*b_>Sr_7{@EL@ukA=pWylXHOdE zb5k>^ZUE8A;d4pzLFMp#89R}c)q%jUy(;va??W^>W9yQe=?n_%PE`58g zJI^;q5%=8fyJg;;O;eBFe3u;frkLr~b;%QQf_1|Ip}etih78f|{FLgW$>EMdxOL}K zqHkYqulshICS|kk_`pj1Czz-vX8=EpuHjUCdN1ixMU6c!W!)&IE-BzO!(rihlc)3(KVIn@@p{$!xHwo*(YRWMu#W% zm$MubuOd~@FQVp-$;*oJ>H19WU}p8OK-w*%ilt-8r3H0_<8)jS2t^q{I;LB{4Zb&GUynM~?>ZE3q>%Q_IMgHNUd?$a(N2*| z$FjAu$mq+H<5}yT*oWGL#s|awPVazP8Z^oIAoRtZ(;E?b*MAc;p~k_3@eMOAnl07v0_xJ5-uK8 z4;g3Asbwz>Sy&|k>=~~~r3kSf&8Xt*6l0OVDKzDve^{u?MG}#4Vlb+Vx2l0NQ}!_D(i2NJZ@?wqjv%lJ#xA0t(X#91a++M%$V zv2WEGvMf6k8xb7_0gr44j_^q*WLXnq`6fxn3Vu<>(u1BDRQD;1}!GfV%o;vHI@ zHrj$j$&Ovs+(Sul)O62P?$~LZ&krEOI9EzqY651qT?sA7i_@a+n8fN+FZH-ern{j zoq}7aplZJBGYl`oV4qbaju-WpJuj#Fv|hzSLK>W~PF)G|a(pTQ>!oEMO;0hc`JUKZ zH3WKax~=j8hrVQ<;VDbmcrR_N!@p7lPRaAm1=s*>Pkc#5A zO5eOhP=&RbYz~?<6jCum1*vHDSxv&KU@cHT$cPc-;dJIf!B54Tn85|#GLn-Fq(v89 zhNI<+#L=q7=%ku_0I1;BYp=kA4!-axQ6thnRSzY7s z<)MADokMdtH%!#Iz%ATT;}4~Cj)v5oy51P1bHAwOe#Wua!}+apF?uG^UDinfbt-J< z@kG-7jACgl313K_vyCC?(ldK2cjI_#h{zTYW(9qopxpV{0=j{!z}(@0pEKlOKCJ(M z0PmP^2rUDjSyiM)j{tQ)3ph%L{Z!3AmbGE5^y(B z_;TP)l*+f>J-Ut=9*0-75urVmsrqdLJzjnn+lD{-?2U9ZZsRNpc->vi1f)t!aUCsE zOJyZ^FV*{MIt%!mdj4pbg-67}@VQ&*)k?SC5LkRaTX|1@?5Z!fyZPMptS)kkuf0mk zp(#-x@@)tHt^d;qTpCyIDB^CTCSY7JUn(;@>E?ZX+O2HpqQ4!6;>Z>`px-yf_`t$%E(R7~5e(O!^Uoe87}5sJks z+!b^?_uq|2B-bJ4<-@31DG_?GVKY{ES+EC zU3ykB<+0x*i8Oq!0HZXiIuqI0z!m+u{3z|Dlsnp9S{Dk7Gl@uxW@!k8j!|C-MYtz| ztsmpKss*GcTw5*aSyn;9(A*vJa8>^6$cm+ zxt(G;zxIMV=Q}w!078g$fpm&PoLw!4(>?M0k)_ef_tKVnLC`TK(25TR6Meu&XsIVc zyl%f+H(}`0#|<@_k7BhoT~=Ppcb>U)roYlT0}O*=WC)pHl<@18A{m-e5>QP+%KThI z@YDC0K#49gAsf=Xmg>ksLj<`aHW%-Nj%3YhI(_+s_Bt2>MY>DiVJpNIGD95N?_P1= zQp-2+vS4mkLvY+AMhj2%USwk$y8p%DrZh@|d{E21(2;337K=9Wa2_Zk>6~dVkhcd~ z@l#qSU$;caNY0WdgN8Q6>tcn*36v6`m}*6LpGuW>Y|XFmhR7Z+CFOkg&G-0`R8K@s zC$x5j_2(~#m}{f^N0{qH$0>CA?)UBIejtrSth7T8&so}8XVnjUadu^~0An)vsiB6! zAMdV=5QfStjFu|XCZaQinAn13OGZ4MQWIISCa^9`uCYTtuk078(7YyQOC}iFbvszc z_qH)zq`xfdgy#AIlr*a~`exYXsmbp(pdr%}DR0EiFPeQ*}si+z{iZ2P+>N4GasaQvyeRN0 zjfaH8p`RIGF4!=DQeHQQO+>+3SjWaQI39(r?2BvNemNn>wgudur`Fr&dbE)6vEvM0 zbbsO;QhVz9N5W#%+BdhH!Pf|Vhs6zHuD0w=OKaI%$+us(q_Q)LnqR$N;=TzZ!}k^5 zuhQ#@^hVuOitLTC53Ys}5}f=>c76-EDDd*0>T&hWxO-0A!@d!5va~mJH+?QjlX4#P zNQ(pZ&<9S1=)i5c^SroPigY5XJTmVudb~$vm}D~TS${a*o;@WeM=1n5T@A)nqZS~! z|H{tkSpB=r&Vsy_q~kup8TVY5v^tr}w7qUC+8VRM0u#*@dheLsg5Wo%5gMFN4}A*{ zpdGDLdWwe}xuHjfJToEsM45u)dsQieLfYd5LUKFZO!%hq9`6X78rs!K@G=}i=lYh- z@VfV4iuBS@H=+mW>7m`mlY~THNet|GsELjpuGb_=Io7^D z#a}7KmOf)Nbs~tbH0S1U!r(V>(e;C=IO1O1B^DXu8^P;RbQsQ-;qDQGjO#g}Hu9P* zBbQGeC+Ac?t3zD)$i*DY5MF$d+l<9V7r*AF`qeh4Yb2Dx4?J?wa)8_Le7E6ZC}G-@ zOVp^G*d^f}%Qcfn|CYuRHJJNQhl?tL3Qoy$*fI{KHL{F!Z{-_Fy_loR!N^NmGmbcV zj;At-Atpz>wTm#`_*1IpQHuP4sfrxVyKIFfm-=qI>;*0JAmiA`Z`@ldbQH5t@I=R3 z7I7U`N*tNiVDH0cdjFUdq;PnGkj#dfEkk!Q65eJJsK`MbMjx#~u)sk>^yPRjl=Q}1hzswujhanYYciTb51+JQS_k}5Ml?7`R>jllH;j+LfB4UUBQ zQLgc%S8c+C-#tN=UwBi_+az@M@Y<;bsaiA_>Wkm-yBw0_#x<5n=$8ft)n`(V4cQhj ztxmmvG`Q2Exmb@=QB*%eha)3spV-0#xGLib$InNuoaR+x47jL1DdaIT*u$fE$u{ZL zOo$WP+xD33ZpSby2Z``2lX{_&+O1SRn&+MsQz;$cOFHO?;t`V&9D_D+%NsStNTm$D zf-v|ei{@Jy>Zl+?+a$B2Ek5ZP*P(F8HL>B1=|7V5Dr{$GjZ2x^hEb z*WP?jG*~$6WlemypgL)P7@ZnHu=i$rB<3w&!cHR=*%O|ptHXV!5>daTDDW_b%oiC||=6fr+ z@hUx^6n=6w|GI<;DOGdKc&Kn(&pS3m&W$%oI)zj6?+3g$m$mxCxJ8pCiQ}%$s( zK@1g*YNyX=p!9%6&faEy@tp4dc7c8|9kE5F-YV36uZXN3o@bih&<9EG;+cO5LzmLr zDIA+d?9C=P=)FN^-bWgCLgsd={9e4_CDZayCtKp{gL@|dU#gMjBXm(NilQ0L3m+e( zq!APsl&`86DAFWkY+OJU@&rFk`K$>60ArRrC3!)gUwI4|L`vCYoA32~dLo4Ay!cSF zwjRe=7))#^nxstUSQs&d!;^GXQAll;t!BniRRHyxxP0K^* z6B?GXdq}AoHN7{?P1#5_PO`*IYc8YZotpxxZu*R)x&?eue76y=n*!=?o*JjjNV_GZ z7hxeeG+U)fmZO>S+9=8k(QVOem60Y94&3CsKdwf|>b6E)!8wM~s;6b^(t^b`1w71C ze?W|rAn2OF+WYg<-~b~cbq+IQZ@Q|tWUIbQw4?9_Iq#Snew5KT{@u& z%88FZp9BMpyx(y(y-HqO_V~&$FLEEJ$RzpadHLMb?{hOBSlA+pW9d)q9W^|XycWx^ ztd#9m&$c&2(hpCcsTls)qWO$^g7;cy}y1~UIf-U@?}af zG0+@u3!o>rGLYBY0!RbFD=X$VdjRx+i^4qQ{ts7ZGzs!QGfB34JWUX&8cw)d{RlXS zL_FFp8~}nqXi&?p@n{G+ziT*#_u*Z`A@TsluHhK+h?ZUB(Gc=q^1qAMzmfl4RIoBM zboe)Iu)+9i{r@0sT6S1KL+yWvJY|Qt@DBJdXB$`x0KdOu7}%>sDvWCRA^C+oAvmId zkzoAsGTe{l_8}WgPe} zE;z2TuXXIl+c*^X0%bBrjir=ak=0(oW;usF>DD-X!v{65=*ypNJMj!tX#7ng(yE7Y z)ED>C2IktyzoIjkn+e@3Ga}nN`k9i{P@g`7eK2sngScd7bxJ2-Qt?2rvv;^pADXyS zGB7H0>ABtvOTyJt5+7x(zxtXUQN1!uACY{#F)0lo9Xd_Yw&E-Ey0lM|kJ#F%wM3(g zanWO)`30$XIctqAfx*xa8-CKVC%<0Br-v(_sEiG=C<&)NWvzyL>umuFo3qp{$4;U? zJ=rI{$>nJh?(NC&d_gR#?ND{Zljh*7Mu+Nm93!t9v5j0+J-eXV_?$g);OOCug$~QTE13c{Vjm) zbw!n!Gh@Ml>;sMd@=;9tK1L`5%ONn=>@x{d#+zVY%jvOvsLs+|B=Cpbnumz}@3D9_Kays}2ZIbEA#}ZYL zy)7Dg;8ikZNOfDU#!u<{8SmNIQZPNBv^dLgxTJKP&Ct%;p+8XZfLj>b6HbBwahc!; zL5-CHe8o+Js{@U0uPc(n@t0Q%!4yJBm7OJF8KX7W0@#x^dP=&AwbSrzDLHxvC1>M` zM;>_5mp6QRJYBm|zDB5+ao|(qb!-;R>>;9c_%P4E(Ks}l>+d_K=Ju?v<^~!-v4r#;8 zuNK?reEQLnGON#p8}E&bEys$67oH8&Sokunkj-*btG#Jx4IAOca`(z@nJLp%2Ldf< z38s#iJ!Pu%GFCaj#L;Bp->u}Hh}~7v^2i}gYS9v=+f%c*Qp;~?SFU-vMryajmz21V zcx^90L>j!9HZHrl*fJ8JHSrcc`MJE4!4)E~XCz}PIo~2L%w`|K3erABnx1^2X2F-?LN@zmmo9l5| zX{^jXbYn>6^M6Cdeb-s?SF8;GxktMSy2smWDn#YjLSb7UTk`# zg@&Z8Vzz!0!QV&R#zmqteN5!&!-;3SdIvt$LU|6&%I+ztje3~`&T0zwcBQ|JCOLQB zKW3DJ!@cl0=QIu9NEgS6#>{%N*H}MF1Wp&_Fk}>wWVP#*@bM;a%nMpMZ z7oWCF=$}j=_qrW!jE%em(NmYabB}UVw}618%SqMNDJu95AKy1DDMzQJ-%Gf*@2$$i zZa7=RA*n%J0z2q7^dXy#sbMUsw#m1MB zJ0x3%uuz@vP@_(j;>blBYgdbaQT<`qLLU{|(ekJb+1!5Kq^deK!4?;%2J8tzeub{2 zl1%n8OUhKI(+f`0$i@90;<1GBbmhu&B9yuPLd&`MWNdizFsYU+|*s!LL{M&Y!ID&D?w{4K!a11=Omq)RC!`_xe2gk@M& z{CKcSM;lPWbYShm%bPNk>|>_X9;Msd>@F`vTu-NjXN) zh3)&a(efpaTK{-cD$^H9lH8ruh>9zxregGXtC-%ZYkTLTHSj{m0byB{>+PbN#GIN% zsQL%9BRW!?(fZ@M$0UWSUwj4>RU7YzG#h`r)j$cqZ1{pbMM1f-yU?DGi!eEM-7I>; z{6Z8rO^FF7$As&I7AKg?7Gm~MHqEd#Q}TY) z$UB~YQ8>ueYLa&t>EvbLcC=V&@grLW^R-yhBkX?Bbx&HRie^>7oUabJ{V>Y3BJd+R z3V!Jsfjfc|?+Dp4rPVDndzior*-7#-jRRIP_pFP9*%u^=&u#%9jG}nm>8N6#66Zg& zc}*ZO6(S*Cv@8e+@R*43N{~f=rGLweD)VNq-9PZy$DNK)*!9yF3xfoBO9H{}3n6qR0k2nnNh zyu+cQRF;VNYcdT1c4aJ`W)(^tg@tFY&q={=Ni~SG-}2AX0%%XT;|Yg-i=l>q~Ar;6qvlEdsBBBp1bIx zza3&ur~p>%%%ZAQsTire6d2_&aWbwyZ@DhMn|9^~LoG8r>9gBZZkkd0-Xcj5O#oo z3Ie5q?6v}oV2}h*Ot?Q@gfJ)(F@ykA(n5Zxz#t&IuK+SA$U#66;ArUw>pva5DsX8I zFW4RkI`ysXxx4DE{I{2-FNuAvdbk$fTEkSW`ZWiG_~8!#zHN4!doG{F zmsgM?vj>G<$}H>7?Zt~{LtAklM+08oDdMgO!iPr8W`3y~ha``z)NjO(WLAp{3Q|TF z9gANjh2SG^+;HYyd+w=^=BDA}j6TfelOzr(Zqv8AZ{p|NR=zWr8uuWO3NXZ=pTqaG zzbi&!B{iO;e-)!j?i}TVh!nhdt$fB(xS+&y9|o33E8s>yZT`K8=d@kd8h?t$DZv@s zy2$S8a#Nv^A%wFj4KTf z5j`z_&^ASf4ntz9DI+~xi&5^|f1Z`n<;Xvb)0|o;b^2qr3{Ip4X z8aQy2SP$;m3Icn0y&#JTrc0!@6RBySS8{2WL0Ax8JPZhVhW%Y?+5|{oShzBmdlPRW z08~7ZJ%;)1U(K(owW-FR*b|yBy@`Q;{Z4CneY)VJ6~0`ggXUS|ewH8*Pk6XFefTu` zQUQ(&JrT^Q_8Zk56}yAh4@9oc9NE^_o0hFY6#phugXW@v~%O$c)m8qd+KknFNCQV)GU0)IftF>x>0?^$uE_I#v5UdD*$&N| zB^tR~Qm*wDFXx0j85u)kX!pWBG^}nL7B+IXxV)$$Xw@f_BUO)^GSG&P1?JrNxdoK&P3pQF`@tPITfdlr zClxzco<|k$O_l)Wl8ZTGL4Su^cc(3nfNX16XDw;+kBnDpPl3*Z21iL`ZiNx@zPUF-33$y+($(rQ*-iiXG+Ky)P zISCa&&4*Lo4U4Mn9A+o1yau+uAEhr8Hf1jjj5^MfzkaZ{a{Z%_iM=q9U4x9kE->?? zHk^+sMWHZt?nvH;n`OH|jQOx&n{8~z2fGGW>J8I%S0R(BRS@kLR^I5cjnr$QjnZZ{ z(tbN|W~Op|XJnlWqh}aBem!C9%qfhLt?16z*qoVM?RSqw$c#?N1e+d@Mx>ahB;g!A z3oUq>ifW+^*Jm}NoN5~!e%|N>S-ZIx)DzUjQv_#90BiKWP>$8K1 zOpsEvPXQy|>Q=h4&zp^)LGQAQ5=ANT$&b6wS30=NKvM+2py+M}#$Dx@Q8jX%n6)?VDh^L6(9ELnq5SX&-@&%XXeQ$5?|^7E@E1 z@Q0dH?fueP#kZ9(MLw(rZo*ik#$x#+2mt+75^QS7GBTGVU4EUX|L z6x`XQt@abH(s{BdQm3^vAYIx0|5FFyY1oke*rMX3*T|&x^%l&gS_o`-c7}Bg&0jt) zI`aKHb|;~|vtBcn&Zi?wFQ4P^g-`Yh%gzH?v7Px%2LU&ukuytA8g>DFQkNuTywldh z$58@X;%g({zgAlmloii@ry6n6lS55}?E)+MqmvhR`nQCU%iAfWJIF~ZpChl%T_|rQ z?hK5wkTI6M4)fPxa^CVp*Xn+BGpuFaq`OO(gz_8qDM78faF6tt%S&r8!XN7_R1XI& z*k4c2cH2H@M9TMAYoTIjIR80O)YGtY^8SX+&7bt83O7~x1tb|I4}*XIhu@-wi#G1@ zrhL{=jjWJ}$*R-*#p@#ZJ+ZX@D!1p#2drKMixa*S`9IMpFw42@)wXC;$W%a2$&4=L z?vPt~L1lM=oR*QMfiqEhbWX)-{$pSU6S0S4h6rJx;73aTCcq$iKm;d(C0q_`V-RaY z-2f|i;Z|BVL;)JLR5zQ#+1RK2Fv`2AjI}Xb3%T|?FT=I`ZK3mpBc!C5nKJd%?qZ>) zEIq~z*6I~4OJ%dC6?BxC$d0Y=8^LgjjQ1uJ$U)T>?g=nPDyG_|;8?3a5N%Up#hOA^ z-*6Qv+!VTWu<(z9Voj@3S+V>{YaeH3qsxh1!A4?&W-Qo1u=zSD6dX(xpgieZV`BI! z!m#0}2&>^OEjrjfizUPZyyQae# z@PH!huv#6P4WEl>%SiumW)s$+i0yWH@N9#I>faaEF=rd4*fR@o!CfBWi~I?K;0Hn& z0YC@{iJ$~Tgy5+P<^`_4Qyml%hO#LrTCwZK2#Qc!y9bxCa@eGMq!B9V;m%!%<-v0o zH{Y5j3uMN;wb8L0S}(bRtoFOD8C_)K;}`39iW5>Z5)NgLb=5uvc-&UcW(lrznUAYh z&JcAALNvNc+rKPaCex1}tFLWm%{u!~R!3DwI?7xm3T0#>-*9F!Hn!H<6CBt_Z1xIG zh*CaBYrVgNPO{$d(vm->cN*KD8(o{GmTcrXytw0a4k_BVIyK!b2v_^=r?v|)ZJzMF z3FuYu%N}oadoh-X@#0`&t9d^o5AsYi*@_@0<>k&=`NMm0^i8<&#H=Qt(<5@LsS3%d z?6cL`=*p!~^VvIH7+-=;_U9ycjXX?~J@iCg_jkVX(W}G^RBy`f0ZmTufZ?k7`{@Al zV-HMD@M9ve4;L+^Sqh~Gbzm%|EtH?LL)FaDe6S-)GZ0i)=~^ib28-2-yk;;FzZb`V ziN*tNWY?4(>Qt+Eb1J+01dnMveScHsSlVzD>hya6jBRsoNTG?T7ZPMb25J=xnc~mV z6Y-G=?gCOKq(0n2p?4C%>X^n7#}kZql40@!YZcFe8-a$2_=H>f8_hvCOmVeOAsRid zPF4b#c=>z4=)n-KO6{4E3PyD$iq_(g?MFZ!!H_+Z~A zm}RXAuZ}Gtm^4U~E!&>=7Xh)Xup`GV1?g41?!UIEXI&bUX9!O>;0@Esr&apj=o)$Y zS{yfJKHwRpi0X0msC&j7S9AZEsb3o=bAQ|K(@lvv{7a#CZ72(t6aCZ$zna9;Qq4D> z{urk%6x06TNs_C_1>p;}30d!7a;2sU6Is_y&%N6PqD5Jvj(`2E-H@@edI~A$Fp-+| zX*yNd#XoL%gC%b9aCOpUb+d_6#F44rSgh##4Cv){(rpKsPeva@SLxSZOf{)`zmzsP zP&R$L1$j}VqP3S!hMUn_$}zkEUiuGxo|6@jUdfky%1h?Rz}_APJsFiS`7W6KhO$)= z3vId?ZDw<&uThwzQ8c`7(hL;H@Tr5NFvsP8Qk^H-77f=w->$j5qOBB}%f;`jBmU8= zf%1?zEnQ;NDU;>2b1&!ZT4hO2RLUe*O)3mLi4#GrvCj0adW>9E%xOmnPTYeh<#5Dy ztV6L@_<0@ncnhvx0Bb#N$!% z>WQTf5^YYLaA{_JUDh8iFHS3>rOp+zK#|j~$?*{z4CvmetiN;XrH-c-mPb)-n~k2~ zSL_mk#m3jOlgz)ISGKr^@W)t<##%M@w}%O~dU&*7HN)glCr-mO5Cgiz6bCzML0ke8 z35___uE`g@n6^P5iVYqNxA;ZmiE!4{eQGl36|}pGot~x^DTi@hv1v2;QFMTXO)(C` z7Eg$BAdU`O5LUOmlfKhLV2bycIZEr!c4~r^sbgl6U+=tOiRsZD8bQa)a5K1i3CPx3 zyEF&qv@2|#GBa6+>Dzv&WJun02g{t(K13m2oe1t446Xr!Pg$RCZ(g%)ANRQss77|! z$3o)#rQ~8Nk~*Mq!$M2`%s_9m!Ne-%OCA%p7Zp^NFU^aFg0_t{6?Osl9`F#!g8(nY z35daqb^v#y8Uj$Qun8$B>RMSN1l?oOgIUv>%KG-N+2z^5ZK0 z%n4S17|jK%;>(~K(CJOocepIGDEb@8dhhG|RLP=WEz&hY6IZyI89UwIO^&vedNLKk zmhM!I8j``i&-FixI!rmvC%+5Ojy}kN7pj!Z^SuCN z3MS;aL(%CJnmAc6u$KGu&H;k^XbYiwy*PQVj21G&+l(7#=h7y7xBJ5hg``x;Ed9CT z$%gqq24D@Mb-T`Xf!y3Ud)ykd%@dp?E(cTdK#gFL=xDbYB50( z5nB`9rhM{TwTva-{X#ZX2nn1ObX`G8!w&nTS878Ll5}WAneUpSP2XQ9woq6 z4p*?e<$aL6+_>X^{)p1)?VO*E{sljK^2&0j`43u^-#!>6Ijs*D2@iZI zGPBPeF{^y8U0mf9pK9SeARzZ>D90?|V!?kGHed=H%3(2?YE^oqV^(JW4(eC*UG6ej z3dj3171`|Fir%3l_fsk;SU5PG`@=pUr_S@zN=ptduTbAz>@V2xW#Mqw$=mRBntTTd zTy-+Ndut>3>b?8-o3>Bt&S^28ak^jKzVv9OEe_lKdsrr!qd7J)gVW+!~c5!aFPe+0H{QjU(Pl_W7;oHf}wy~{}d|yOs zu6Y}F8k`($`7jx&T7aT57JFX_p(=HWWfU%%&!*3Ia2Ma?s<;k|i0m3cK?P2Cvt_;Y z_F$WQhoCJ%5x1Fq4Ms3}Ule1KQFACj*-#6*Lvzp4elzBZyjd}i8ay$^-mdfUL&fVA zs{3AmR-Wrd!-ljZkQjLtCPML&q{aeVNqRz@|~Xr9b#QHZ;pD>8ZHqvH-mu5*5W ztx!x=;7Mwf^hRm9OG0Gc$daRhOxZ@06PSu=6DbwLz!<=Y;v$gPB>?;SxeqPru` zznF||^*(oH4q`j>82~yKXCV(lThCt^BX;SDWTzePaepzLaNxA=YnBeR)lte&8j7io z-ztO-O4w7;%#yL|wr?>}3TWKow&Fb7?oD@9rfb9RSeGf)xg%2FJK>bAY?zfzv|Egfxlh2o%B~&P_K-^K=x7wdq1Bu{y~kKoPUu1dH5sEpg-&W3kd{U zrT;?l7b4vHFL;Dj_zT4E#Sl&07|$aP1h&r)+VA|d{ZUUq;itGCO6(j3M~I*wqMvmL zPU3bh1%;o%e&`?+xGui=671XmVdCcj{r?96SJ~KvtX9BfHfwi;U~o)2Ygt-T-}2;- zbvDEAvQYK}+p!D=Vux193qM>!2| zxnB;@MbxwU@DQ_KZaT(YCjIHCfr`mD3v%s?ODfr@C-#B&q^ZlKRj%h7UD1w|M?oLd z6H=L>Y32x0U%xYWaAqa|sSh3LFN?et@8s+{)Un0 zyxd&?ef$$&8qHn%U0~^>c$lF{9a>vk7W$fhwCncyOb~Tb*0*FnTH%Hs`BP8hZMAvg z_9~MRwczc?bO~Kn4co+XV(rfPG7A}H5vdl8F?rf2KTQ>N*+mT*TsWt|u(hq3(0AlW zA{#(20j@4(BEP1Q`y{QZ8ojyAaJXkK*gQ^AGD1n}b{cXbyXN(EdZ&Jbg0-atcL<-V zikOa{f5ljF^Z~I50v70@H|BBoxWlE;jb)1~{iUzuV%|Vh$^5E$qGa=1i>s9TN3306 z5guFt(zlgi`ioyQFFP z$_pn#B0J-J<9x?#NQ!9b3|PspSZ4Oa6+Gxk7$a$tEIN^=h74Q^6#V_Syh_Nd^&vz7 z(2lw|McRyP3LSXa(&oJ3F$XeOPm-crU*~FhHJf0)VYJs%W}lMw-nlVH#!SeBVDs&P z&as@NX`|!rN~sgsra@ZtB!)qtEK9??5WK%6r~NtG%34d3i6=;~Ixqp?#)-{FwQ?u!uwBWkoe2*dm_?l%vw% ztYeV;1Zs{p_xiG&HMK%o=jxLF9dGaM}92n8{}kL)jTKb`3^DU8 zM=kbRwfV}nJS7|8dowNC!&}B42CO~Y=*s50rtHmae_o$c+VIwNUiGJy{%Eq|MES8Z zKGR^pMYMvCt>hatPm|vG$davVam&bPO1L>cpGP6xWZpJJX@+kXuzCltFdWN~+$f-u zMo`YrpNdoMx+2q*1G!~9R@5N~bG8Za;@SCTAY4!9>_;S3GI08h=cO0363PF3^G?3c z4IQc)qEbB?3ghuH?v3OyGie&-4wPO$?uEz*t!buQcje3>YAX(mKg3SQ5$HR2>jCri zBTSbcpC43;k-pR2=EEYG0dM+#wF7FnNF`X6t;V>1+~<`Y{KGELVFIxUcrrtDp~e&O z{G!EMYaMYe$IT6~FImW{;234i$3C|w36=-w>qzCgjSCoWh71S##D{Pz>sD_f?K`qU z42?!CW-paczl$y(6nhg&zPWvyz2^<}LBqk7`gt+^kB$0SRgQyKd}329yh1dPg>rrO zo_P&rsW=TAEvKv3EPwY(i#A?6M&$sBgstk8aLdyB5qR_nZsG;UJ# z@dXyuSflCkfHtp0>AaO!9uvfLJ-EhI-P1tQT2wgWz|nB(Z0!pW|Mas$uOV`F92S-%M9$wS)if`~WqG)~GZKC_IzJb%c$+p@1 z2^!sNI@nkv4XvHXc>11~XDHc3dwX90K=7r8M4=89AE|a~9`xr!3(0Co)S#H>dN96!LtHDsrS)YmNiFvmHMKn%-QUNZ%8FRv-Pu6%-YT>cdn|0WM{Sc&gVKPxq4k2Npw3ip->tY?N2%x3GgRy#fzb%(kk+xTf|nbV4iXuX z%N!K9$m9YSfS8x({i%q<4ICBS7W^aBRE0~`NDr74g!>5Vm}VDrorb0l&UI*}wi$n6 z4Q1!sUh)v-*6Z&gOuUd!^lV&aIl9TPap ze%{kJl(tJW&Mom2+BEt~-wJtmdt6`V&07u?2VQUX8@ROqk0C4!OWyPfq9V&tizqTK zjUwmDO&^q%@vA2`q!iT9%+kl_3r#yVC>`&1yl+JJCh_a-+#gJ!j1*p~GcccY6qKUQ ze014T!bXKd+c>eT>un?YOIwhptaN41WG0$^-m6r0`|UX$;O6$rYlZ>UZjYSO(T8f2 z=}%3hKH6UJw`5CDRID2`jTQdR>Hgt-GMCGh*B4R8N@XgLf(k48#e%|zS_wG#3?ho(31>owcr&R$61OOo5 z2iPA2lmQ|FC?S-9h!9FhOiV-qqalZplEN6MsNpoMOl)kdOe`!%IYoJo9uqpw!onxZ zCnP2zEiKK?Bd;PasVpibErBuuAtok}9HSU4p9@v+|mP!QtIgC7VRfI|Vn zrGV_W0SsV}xBxB~>5l_K0L8__#{oO3P-*;p?2iJZAQ}gb3kNfN^mFHbTmJ?I@Fd9s zq_qqN9$bwW*dC#}Wq(ZeGXEJl1*}~`DBs_fs-)Ef6+R=&E)R;m)_8!mGK*B~Bp2El z^lq_TKzgOL#Y=3JIg!!$ekd?r)20~dWQ6eNf9lLkaik!0D-~#W`s#B zWPHk-z)qcvaX|O2kYUgh3>>oP`1L)?yK4eg`cN{bV%N0XW-B5D8jm|TDAcI=+P>fo zR_Xx8y+hS&j5;8zrOdDiyVAFkgq{9W@5Tx{rOAf_b>_mXINuA8=D!@Y|6l|+T6~~B zM$4|^AX##KosL}*OV5WP*y&5wI?I6Es}E!RK<^gK-1!Hyb-EY%bMQH_TNfV6GB2=V z?ET?N#`|7lMu;P$27^2H-MwtT!XGp--HcZ|Qafxl#Li)w=%LejZ6Ws-D{a8-J-roO zB=1lzB?gaPt2q@9WU1UrI(G^i{ zsDrUhuC3kaFJf`$`=Wwtx*BT4cbLDwMP(Ok_n$bepYO=uILI9E^^N;m>WX43Cx(|d z6fmLx@k*|(()Vk{7XnpAWW~{JeF#f5`t>f!0lX+|t~9 z$O-`X9zugPFaN0V18}->OU^qNYANRSP;D%Z(=?L(;hbn7c~;KcHzPNLXzRP>L525; zGlsdH{@v9PeEo8#o);1k2ceo|=*(gfH2}fev=chsaR8;^>OY0a;ZM4YA~=2rV*;^@ z<#b2w)AK1?1&zWR@tV6ED%ukv;hrz@No# z>xSxC2lE|At-1qC<^gt|f$CNS#uf?H0+!wYvM~9ona-zZJ^V;4Qv=a6o%c1zOVR$Y zUtXZz+HQo9Ky(2wc$1ot_}7;U+W#LeEOehE369X8Wc`GI$PN^o`%)g>iQTfs7@m2@ zeEf!MQuJ^GIms|~i}Vi>{kQuU44|HLIpF{f4g?f(!kPE6+S{~FJ!KvkC7K`ukkOG(Hf>h@&3isUF8yxq& zSCnxGVQaTkd6qcm;uvq%lve8pvQqA067J2>eIQnZX45~u zKeo1{`#w&~u8ZLgwb<+JZN2+fOpTgMjm!1{T?wm?A5}+&&ZBHpiknyZQ8{NC8CKEI zF4pV=yX0Z9tr*=iSFbtm7`QMQ8P?EHFUk*c?^Vv^U0SRuM^rUxUy+u3h-;YDseWK6 zOG@Lb6$eAOVag@^(5(vuF{GJH7i-_;xh~e+1M!-(B+AF*xeL~H>(PN&6<%!5xzU-T z|BcIBy1eupZ{>iHZBy4wclAzkIVPHgjB1B-YqJJ>>R@_2CL|;qy(UOupY^iqf4M0$ zp*wNaNIog0wqz7c_pyi(AL*SFrL=h=0}KmyAjsq-7xur@7m%8x$Pygc5YkL^bUEjM%II39vsP0H|_L+jU~; z0*Q7;5uF~G2R)8wm0gUdQ1{Fg)y5w-Y?(+jDbzs_GM ztu-SNGePOoJ0lVDA1*|ET87RS8pTBlBw;3M_a03>b;0f71*RJ{UFE4xQe*$yKSUj7 ze#nE#wf)Xr(Og43-TJWwdhvv&>@}Eg8RPP4K6VBt(>+UZ>TeU(1?QwP?%ipm^)P$R zHY2x`bAV~dqo@18>#70mm3rSt)Qx6b%8%Xb$jq*b0LisWl9Q2u{ZVTmdUt#jE2ZqUZR>f*(>S>Tm~KMEbV{{k&2 z!?#;teyg-jduB{d6HGa&$w)4#wVC9ph0LXILO$y?8W0m-4Kh4|Bc975?>g)@QGzW{ zK%lfRYTp&z`Qh9voa&96mej8UP=XkgfSy;DBQ^BOWW87Vx}DJMxtre+Q)rcxAQR%w zep4S~i|r!EtYac9g}8f+ISRjUkhdQVv~{Km_5dAl8FNtdRZt&2NP)( zC^#^J7F2`T8Y$JRjLB%C_^5J1@nM8hQ-KleUP3cAlu%as>iK}2rlll`Lgu7531ts& z#({zhXn|bPo9qLDENx^@!b<1HX%(ibw1} zci7!SkNvaE>pM|x(s7N22YxIva&}&SItb~*Q%^qOw8zGkGqD{h!QikCf7m;}q$VwQ zE3tB0-|+dXI7V8imgvAJeBMlk&LW}8DU*uv(6rl?*8rX z1R@XdVfhUL=LbR<4nT15@xc2OT+BTSxLuD!aY#tm8uy5TBAcLyE~SlIU^TmKBCC6L z4xWA%%P)sJ9PvvbaCGe0*HfU?uWfQ*GwMic3-&SN!i!tAN#KQp#z%j>Xd_QOb;Y zGYj#RG;9+s>EXxut`J9`LVRhDc0{41oZ1xiCHzI&BkHP(Y`S_Z*@)90R;?-DI@3aq zZc_EWxor}C4fJ=M*C&GeLj1sVdr>RO7e>{KnfK)55XNV>@3o#6@wS-`7tah~23svh zG$%FJY|-)EuAXMiom+X%$@=vgp%fT`PlUeU$=fFPCtAorCuc#Qx2o1`xljR}sGuPB zGV!T)mLc{!w_dNpHS&<0isG^jRPY_DHO$tE3N?7x-Tie$P?7bn9IxUSrb!r7cwy;; z4j2t{>y7RyII3k5LWK=~7hEV2RnhV^TYr?eblQgvx<$76bk&fyBNzyLED?@8GN53)06Q`Pzl z@lX`SAZ>4_;7^XFgh!*ou6nmBYDKB$BUwufhC)uCbC$aKKXJBx({Z~*+t$x^h8I11 zLTT&qVHDI?FZW$8Hk`Hm51k4RW6>n7a=2_oNrx}rJc*iH&*U#lt6Ca7udtvQs0tpL zqs^)jaI3I}?h;27rLK;t&RM}ay}q6Ct~%r0@a)#7v2O1dB97k*SyFF&=@o6P>yj!= z{rpWj_+7-aG&#q-;j3pp%fvjDW{~K~%xfF(fT)Zw@6=PTc`iwXxBINdi-L2NcERPv zr3czm z2#^Y-$&Y6Po`=(*5<)7REBGjCRh!eEzU>%7-*;c#a=oq&)e>ZV6&nV&@>s}~qh&r@ z>s6tk+{Y&VrigCYFBb-ziPLdi>y88!e|R*|dQ8UqVk8jb0)vcj+|zMVAy7ZNo~s=W zI+@vMNy)pE+%S7`aNh00^`dWz<#0MKkErOoU@p7J7MQ~rhk!4pl?HcGZROy|Jl9c)gjrHEL+eNpNe9c)1i)g$fKqf~?Z%rXrR(M~Gp()Rt ztaCZKvM~teCllW#x%1Vd5oMEAIDA*qL*7{wWL|G=eM)l|xess~#n$A?onHR7dMse{ zdNSB$x(19)_`Rs&G86AnTVjLxjZC5lxNo(#5%%WWjYemoy_ZfZz%$lG_Pg0^lb5-j zwbFvkSPAUKQ$u^&S~vG9af!)aznSR96$=hAtlAPF>3-~U$FO>fz!oRp!ot;V|q=?YpxJwzKvg+oGaWp+gmMZp+a?OQbsC-o(6`pHB^ z7~2a`Y)O9Yc@z%08`*hTiC;ybdj9G+t%ql!VN$of-p?qp8B5H`y=Y*@WqdB<40SEA z0P39f)c8)^_G;JWm8NiMtT8<&++4{9e?JAybT7v++4)+k$X=!Pbk}D$BUK3e?fBl>vsfXm!CN6`@`Lp4%oD%Jj z**JTqtgu6Yp=a-iR%lRhBP;Cfk48RIo!u-TcuB6Q3C40Cp9A+{g=qFfV_V9WyW7a% z5QUGS_?S9%$y=s?=Q7fX$NEeSo$se;nBW(IvCS0=$EGYeDn2$|SKr~bbsK5RE>85< z+bp12e0xIZ*-Y)qO_e+`2Im6L*Bk0(JazUO2C7H%KB;pp?gL3iQ)fYoN&L@z)VKP> z)$2(s-p$nJ9-0%nYq-^)d3{B5i0-zR*QUCJl5ao4_~uhB<})%O@AG6Q;KvYsp8g&VRN%|JmyN z-2dd&>Uw7;vX+Nh{Bwnwj>~IeWP@a%-q%kI0VC}7&`|k>tW{bmk5oFh)c@ft%NjMC zmY}zZhzXrrw(87bpU5$7Ub11PtRQOj!V_{A7b;75)ypQviK?63Ux>sf?sOjMIiyrF zGfop#eu%-h?1{97hyRyjt0W($Ilj<+{x*JtE+njxSof>9Jkb!4*}7WdecJegpMXZK z<(yLF)aoaGlleK(6$5RLHDBP=F(Jq3@o>G|%Ffxq9Th{y?O+-^&aK}r3!m-lnX8>9#I~r)f8XKRmcxO_6Ot7UWQe?S)w&ld~?r>!BYy4Ws15*=Y(s$7s{FKR7-B{6&=N|0PCJN-7^d@Dm&HN4)jMsY+F z()`T!BNL~OTpNw`Obv1?T>4xU4vMhWnk@At55~%{vwHpd|Bp+&EXgw3Cu++N`^qT48g*VigGNm__6?hpqlEy;od7C@! z*WB;u_r>Ak;;1k%9?w>(Rm-msKglsu7Y9&b{Ym_b2D}N=foJ;* zz|Uf;gC=&yai5~$kQnTY!vR(l9-@FQP*p4rRy=DgP~dBJGztg!{kVTO1;<1V09ZwS zU>pFjiyWeWb^{?~`|j>{B?ONZ-AzRNJJgRp2$U0Dr$YP?{kDRG`AZRY0}5I~{TT~_ zr|?^wf9s?If02oZS^p;aeHEVF49AL=12ga$EWfIM@AkjFzhD6OH?M|JFOT5pmq&Eq z>m_gp?QaK!BEc1bdB=o$g9LvodU#&^DR&9ise?T?90)Eh9uBzYhE@Xi+>QuYuYsFx za6ucl#2nVZ>b}+NAA4?aaL=tb>FMg>du#Y8A=fj8=}X zARfGaq&h_HKPT<-1h4Gt#aWlWbJVAN{kNk@J2VLsi7zg$J!Fo1x;<~?s&SUkPs!$u zPw=(7Pi+TQJtZhJ!u$wL5Z|Cr7PHGeufoE40x2N!+-naE%Jn8MtF1KMYf+4VKJ{<) z2-F}v)63BbV`67F=?(d~72~LNwvr(;O7oicby=R%WX43WY0^oV+h#fx@t52Qt zjQIOxT48qPJRR?WS+$Ilwk4Zc!Tkk?@V}}Vg;IO_j4v_<5xI>N@31q+x{{RUa^Po- zK61H0gPTvGR<5wa-d8Qu!SVe7x0wDwkEz zfTd35R9{U37;5VceN~1u3g$%i>2n!bG(z(O?dju$L4$+cif-?BxTcs+3Yhjjibiw&*f$-q~SsrF1ZyZ8txs$No_@_B#PIL7l{VuGA zG?Ho(K^HHsu6W2HdDwdWUwYOBAn!GW2Ud3HG{oCD9^$vVA9pkBG{5_|yO&&BX8m2< z;+i5UiApW@qzy}|ZxQXyd^Rzd^%msUy}2%Jh+D$c?srO4pR%;$J@0cIFWYOreQ)}+Q%KX)Ttiyc z3s$VhMI+%dR90E)6RqWewCh>YYh+2YJ*oUw)T*Ufk&<^-rTE3u+g`5Un(dju!t_5|w9f7W3kvnf(E8Evqhr^M zPrLD?^@N1sGzULgvDS+8SZ{oYL0D1gri=pp{WML#QYa$7+2L2F8j zLgGp97mpe>y>f*8^N@VRdqHO#+`lLtKF*W4Ni#Fca@qH>hKXmJ*Y=t1231bNsS`~# zh))8{Z#xg~1+pA+9&uS^>a5Eh%x|Xh{yeX{d_p3$Sw(HG-|(K}G8bz=4Nv)`^Q`&+ z_xAXa3wL@8OD@ZuD=D8oLKEQn+0?1iS1i^)sm{`VNah)jqEo&wmux~ipTM#hg~nAu zlGEF1mc=|HI7?j7Au`R{&a;W>#u|-|?C(d0#wnVz9hu(Jm?PAM66jxs$<{Oxt8!)F ziR}aBle(0|VutietdN`)D&_ps-s{_uClx7cA6gJw6ds+Ag?yA?vpJ-XGZ!o{AHp(k zQrxFF!j63CIdoWtxah+gUOFdK*~O`I%kX`HTF%9+7|~9EA$cvBrhDg$XvInpLESnIg94CzT)AAA8tOiwnTI zT%%tOb+4*A-MRtU>>u8Q@hmFfQ4x>lJ_&wjveBXF%EV)6uDjMoeq4daJ!~3QVZ^N? z$w-zEU2#&cbnP92kdwN8=@aiKE(HCE&Pvc+^R8#91HNZKRWBIt)A~@!Jd&(@ON9XV zf^LuMz-AcX2Bg82O705tii;mqy^VQD{tz8UHtcB=qw#x7w$!d(#DdY7%j96#R}iS| z|LTeHpp8^P8WVQ`kHNqikqtO#k!JKGmTW70@d^ui4<^)vP;&uFEVZdhcWR1>r$nzW zK78<43ou@UX!lNyOrf7`nqTo#Iqte6$BILY?_x}NxU#Lw_L5DJWy&Ca@s4${AVJuy z8RDtU^;7xy4sj<=>ODNGbd(s^Lx?6sL&JT?(~w*2epJDAlMBxgMsp48qq{=GL(&p& zuH1GF`#MkjhV;f>n3Mm8mghJLmv!g68q_G#Y(tDR|87cZ==7u|z8OSuLJb2yR{Zz;3;Bk>NPNP!Gqu zCbX%h*7s?CACO7qCtBr80D=(ZZ{^Jt?;heVGu>ilm!_=0p4pU5V%g@*&tKFglaNRV zd6b-1#!l3QD_xlr#c@B8`Nign%d#(jg5JiiDz+ z0)iq4{AYF-U-Nza{?GZvIlp%}&OFb3KKI_wjhUUDS$9WvCjl}I6?GK=1_J;X_y_Ec z14jXT99%qH9DF=nJOToILSh?P0dvP zRMjSSwuIRV^)}FJ>Y-f z6o+VK`Wwyvz$*^Xa?uC5uRcNF_>69U7Hcbw(~O*@+a6uiFD>&_a{XFohb&+zblVb55dnaK?11y{4HZ#5~r0PxkAkUF;Q0TMKfPh ztL{gs0BIpy3tu^`LL+ed2j{pn2Vi@i+anB`Bn&?>NuNh)@|#gzIA+W&(PNUXfD!-{ zJZ~RK4oj-vM^As)lQ0go_?4iA_H-1+F>)V*PaJd~2or{6@aANt*TGlsVe8I39}0Yh zhQZilBFkNDY;P!_=ilu~xGZHc=3x6xXRJih=;u0P(heda6b*kFH$QN0o#1MF^%+Dv zS`n_w*zUP>$N8!Qdj9R6QR6{RGDg7J$>KzxD_mFJtcvevCjpS$YHjTHMa$3(C07qJ*YpZD}BRM*pDP zRaf(xRU{hvyK1=2{?&8%^z94^0AM36F>vj#TG;A9XOQ%kuu-jcr%AdV+8(+hH2ObO zWZJmJuVxYrp%dY3j(}I+ zVeRe(rLd^UXFA6{rqFt&cJT+TAS~_lJ8IHY_hDQN9_z{>@S135W)JCLHrQ=v@o2A1 z^bD?2hQ40ni2c|uNEBiUGI-9oH3c<;rP-Pqzj1f3_@*X^6UwItPovF=1*YQg=Nv+- z{xXLkPTDu*=x8vU|kP%F~DB}UAi z%_hulXqB3ICK0p>v`4fRx_0=@poaT733<9Fq2X^62(FOI_crK#uA)BfT@L|$xFVPQ zoS_kVLy(yb2PON+LEhksk;1Nf3%?5&07yty^t|^BK8>9=J*}{(1OP;~-V!10^@i=F zNIxX({?L1$f#5e@d+S8@I1kUw;L~}C(y8>{XB85 z4P~Y@&pkr=j~s#^+M;4pcNCcPUWRFzzfeZzpQxA++h8!F+|4GkC)He*GeA>2>lPff&Q({|7Z~x{E{v} z2Ebu3JUASNz(#+Khhu>w9AQy0aRn{ZHL|s>{b;fB zTCT|5n=UH&IlV1S^fTf@;ld=iX^u#o?|Ciw%EPIO{am8inpCGnah)BJ=2B^rxh=Ph z)UBgh6qmGx30ppd4yF;Z<_(d}sjTo@l)g!_ylE=Xuejd}jEA zAX3~isrph&Jg{&JSOKOy*)}&qsr_7ZN16Z-D|E zFphaBj)l;{^lS{P0`WEhhP$B6B1~XuP#n@O>I)c}J~sU5IPPL>&S{IHQjz`y!#fv4 z%a;#hB5D9_VrkC=n2Hsd(F*QLjET2}_tPFtPRSx=*XP3@y ziU7I{bM$3j?KMIP0NGPq)8TCc6fUWYiWEm*{J0C;S-!kd8-JUd0;~^I;c-kN+<85w z(~wxW>llk`>9BOEehJ&XNVil{uxGp*!AJ#fIKM(zk@jmvov}HwT{o1}5I&(cbTvY| zAmKIGri<6D_C>!TE|gAu=y}H+W<@%T0gmngwF(lNAs`(H9DWJ`-E|b;h>sZ0pR56E zsR4}V78};hSt!RS&uLm@*hqPAbSxW0cZpOsPv1$?uu~a=LK*%mlm$~TIc}IFPL@0n zVQ9bpS8@!&(n1|ak*Zsf5QQVsfbo2}W3ma%cKcqo*NI9{jR$&=PGu$JVC2PkcCIH< zSw(q1G86-P9uV(3qXKp)1We(nw_!Yp0Y=pmDb0sM6w%F~1~!8$*!)em3?qU;&rKN5 zSNiLlTnqm4yoRdtp1~Q~RvL5?YsEAXA`i3vDqk<={B!3`oVLmVDLP_2F9{O0%tI6n zUsXp}TG&f>*VA831{>^}&VCJH+E!*vRbY96;V<;S@*O?Ds@i=|VoNnbE1wdZmdK_a z!>z&5%38`u!geZOXv$i&q%lQ#%h|`m&OS^l|0*|?4Xv9kx>uL4o6xkHqkoFk!7S&e~!6m>rBhCvokmhwl zm-3lK^2FpU)ykI~uqbZ>TN?}d_e-B`C7Gi8rmwcoIX6!!*=(BGRc;V!1qi65eL0o^ z-$@>q^RvEQv!i{a>eU=EX|lodRT(ktSK`9uZB(Iz2NN(xhMSpcFR9}uA0SRQMc8X% z=!|2|j*so=j@d55B-r_10P4c_zaS4)&hoG5%cr88@OFWjr3!~ShLp-nk^?heG(L`P z?gDI)+Cih&8RYnv%3Ezqt6@TtT-3Uaq-TqAY(!GVutQXjjOujC@xP7U z4@`|?wNp-hDhzr(L5{xP`RkUc1a*T0zRr+`d9nNr0=!|uAjDC3Pq=U_Y%Cc1_6Y_D z+{r1}gcTI65F+fNVtTClrvgjKC^@XLju^znXC+{6qHyHFo2X#M&LuIna?^d z39fxn@xI${-L&(-lb*0;d9#x=q_(F2lU^6TQQH%&1?xI#I^xU^6y0`r+(zu4`}v$( zWl$BWnKk!&L^OUcRtM*(gY5lBsg80?q5iG%twOwwN!QK`xQ-JOx3=bQ1SU>(XdX;1 zU0xKwc#=6|8brT(oz|%i&Z~~^0*pkr`r5(u48cZS_m#QM4j0C#^3*dIMx0#b4j=R; z&WU?DuW33}GW6Wf0LL(J<`YU)qU!iqoahb3nY^@4i^|56kY<|;qjNdL;&JHA=DF1y zs&s<0<}WIlTRpeM5WM%@&vo17S2m8i*772F8?Pio3`yh_|;($0sw7dB6Wu}*@q>Rvnbu8L*gi$aGBZV;Fn?#7Z&zOk`7psC4= zU;v#ZA2mOE1^8IRg7LdeN~Lvz0r#ipn_!g*(=Embi)}KuYP$EVfQz42!6-UQ`gh(K zd9e|WwXOFE=j)ksKb4fRxEHIt0_Ogu=D};R*G}baci+Y5XUZ`+e7@(cehcO7BPM~? zX0F%LzN7Y{1LLRiNCz8Ojh8khIG)Mwuxz+bxYQnsgI5g2yCb&Vc zpd_GJZM{bxrb@Z#?174+&4u}$S=ar~7w9dv6|M0-m4hdpRPTCkXh>I@`hjkqfmOd2 zH+FdN5mZOVv+LLq@O!70D?m?Qlo_=kNUP-9>sOM&?=C)vk^^$hPdK4(wQ)UuAw57e zhAXVIwEx8=t@;iZ<{AI48eeDes+VnCLo}q(h0N7&SaTvytuA_0odnZ8wS>-ZUfm!w zzNZQuG062G7o#TWHJiK#Z#H%TGSM5Vm0-^0PJ|}!0)|**e33vqM7M)y8pRgfv16Up zPz!2$FDt?e>g}McyiRiGmpc)Y43_naW{2Cygl@ZHFmJURtbs$H$R5S2)+TKwV{K5qBwqC}sELd(3gWMyN~mWPDG}2q#`p zz4#JDJn}BrFs(h`wmXuzqVaB>-+~1g6d^DOm1y4e!B%JS_?sJBv9mI((KUR&E~(xn zbK%t3NGEf!K%OSY{a+6+m3A_@7A(h1G}>=giq1r3>fqN91l3DuL*^gdMkHUPl!_t)zi#|(C%Hv$pg*gVAdZQzUrpb;IBlj0V=V=>92rtwvMULA3!{>FpYu zdM%@AfW&1+!9JnAX0?Y@OG|#T5&T%?B?CWrv9aLb2L2WR+F$^=f_@g8h@zFS-YNIM zcrwL>)0YepWtz&ghti7D;~WyQjR9|PPbT(PYt(LTQ3LCFkdFnw#M#ZT#tv{ zYMxrqTt7@lla5ED=6TM+w1&f*MT6YVozjA%sJ&evT&e96ZoUGwf?Cqxt52m~F7tY# z9qta-d*|5{lAEW>L0waV~UNGt=LS=EE z<1q;%HC*1lv|Nb;^TeV|oIckbEGg&Yx^M=x16a*@bNX7d1j4m;2FaDRI4hZGbO`r_ z34WYRC=93JeCyb4TC?AFEjY3NvcVZLK}Qd&SNunYH8*&V<{H)7*s^`-_KQ;ImC>Wf zv&M?B{NkH1a`{SPrU!Cr7QYae9VyD{ma86~$EQ52pw<8Bk$0sKL6ZEDL|9gVC4O3H zUt(t0n+;)&2pi)(JkDol6iN@gNIDy|JlESFG?-T3!1l$Chw|W#BCR{ger*Hfbtkye z4en~MTWOXwGAA1}xdK5ic+&D|d2oCAPMio@KlUO$g4@XZhN|O{N1CTZI}!o+Eqz#%aNp&{{`zjFTC0s~>tcy?X}f?G&~us&o=j;V zUqI>g`1&%95dJk~9&t`F?8}UooFPBY**KnN#c3N{HZxqOv|w)ja=DUiGmoF@obGc9 zGK;O(AmL@^{ima|Ott%w)W_HzIek{&f&J=1l^Jm~z^W#0*`7!2;Bp8K2yyF9rZULn zygJ-IB@nK%m=TmXRjn^n7Uy*yB(o7tap-92kOu5XDO~BE33uXyn*AQz1ZEe`v8%h} zG$&?iy=fs&{ebtxDG{f`9ma0_Sp5~hC7onOg9hAM-kmSLHI`Q)wI{)uE$ozxxjS*I z0}Ypthv)?%qV$u68fsZ76sJaHQ#**d{cgc%FNo!ZQaEEJSoF8Qw_e@_w$(L1SRJoV z9EH8^);oQEmL!8XYsH|RKc6Ph;Z}Oofdp|O;+wp-Z$vW*nQb69Y1z7=y*tTA`0DYo zUabi>nbrt7Yv?J3S~F_LnpB!t*5txvZ(-R7ZBDaJqILw4mx*@sZNLsfyV%Xn84@zVx5H>0!e zJ(05!5yQe6qqv)h+m!C;>unN&kF9bpSnPV@W;cIm&hjeUIeJDbuWH#OZVV6h$!TNN ziPCKXk5#%5irA>;>U7&V-6##k0%j|?%0yr}9R9weE>a_J@B?;#0Yu}r_xg>a7pG#e zn(mMb^iRQUiG%z288^zPvOhPmC#dfX6l}1$h}2*K(tHrDVNIl2sPV?eWe@9V$+H^~ z!k2@dte%}F=N!KnsFVd)Nsq&dQ@gZyokI^OJ7SPrjps=Vei7pc*aeIz=mbwJK#loK z!?$J2s_u);E+E_Tq&DVS8h930LXE#vt%23;>k7t~KK_4HXb_B3el&3 zA>1jf46Vagm%1;scA3*(MbeHOa{HW_NMNqJwu&`Mo-e=rj-UzG_eneAe2d^wC%<|? z{Lq!h`-B4(lk<_(99}%?ZXW>6z~=+=8w~N%mx5E;Qnx9t3WZa11D`*;WC9e2N-4J3 znbR`Vj`4KczmuGu(1RaQ-4F&pTv5No0}$ZnFB$4n_`i8aWE1`$c!c!;Fgw;iS3p8g zyg$UlJ5WIEKf}WqktjIq>>rs2p9r8gJT{(xR`}+b1pb+S#*-tznuPy>eethoXz)+* zlGlF+$AkSnAI9&{kbTx4CEv`+pL{bx4PiEalYg?zAK{?=-}0eQK%=pQp(9oadiL9X zz{|t{(61b+P+9;U7Ar>l{Q(w+@ynrsUZ6tT$Ahtc5BzQh(*X>SpaklMOz_`tHho-- zaU?*M31N@`Kt%=(0MNpZ8*DGh9Zv#2{7>jKh_t5 zfg6kv+J7Yvj?wV~FjjE<*M`Il-Js)F^59sQ6_Nme&bNH_3aWxyLYI;iHU7HWk79?O z5}P^UdmadeG$C z%>T6bv*1VaKO?@A{7nA4<)0=$k^c$to#0>c-=*W*$-kNZHXGlM|81M^^YP8>e^=YU zurfhzY~NhizoGhzAqnbAtMH4JUyBqWas98?ej$Zv;sMBC$p1!!`DFPU#DBpO;&0wY zLGP=`Q17eg$iZLdU>>QVNszngSs~G{wV;<)WOozcfNmSUyf|Y2(HKD1Odhm*0DK$= zLm&{~13Aq9Y)X2CPHlDHjoX7rnIJ_CG46 z-JmMA=_`8H9bQ*ANDD8xIcA%B(KPVwjbUPIF>e048i^i#=6O?oM>*vtSl&d5hd|+d z15?BNi48L)%l=nH0wf30WDgZ73TEBsY$P#xux- zKl(r-5`V}naVD&zlp-ggIC#`BwQt|2P_ItKU? zGlbS+y-4es`!iHx=F9Pr^V|-{4E9T%C9)kqM0!RWpWr|PvHPI0uk4N941KG}Xeye9 zrJ}w-!xs35f~3WS+g6PLdT-sT3>E|~7mdgMtiT};#PPVl*s)K;9L z2>Cr*euK86D${U0C!7Wrx7_t852QfA@+3Yy{odCw0XcKI#$ll(*3`V#zPcbe1<=#&~2PthUomD>O?(XSm#=-){S8~J3ATr0CK*0 zqncofUbxtmrVlb-XfCm-&7E60*(^?y)OlaXi@VjxWJ0Hn=I-*g*2H}S1CwkIodOEM z0HofRJq6^u$3@Pw2dK?2%g8jm9MRfrBE z5gRL}P&_@WBvvC2X2sVZUC@c!IQ5n+azAGhZuK$35-Gt_s*S|8;5>WMVv5y$BuM$l z`_rYe-F4U*vrIvQu3ZiqF6QaMeRWr;dn30d=-9&3r>*Oszi6Vgdr{)=(trEm>vj$f z1*#n_wAM`okI0b)&J*EPWj47~PAVGU**JCUAm#X5E8SGpBUHDo=8OjB^|?##1HGU| zOda-3a#z;NyonEzwLC7XSZG#k`73C7l7DQ@rBZM`5s+!d5zv@tkt?pfya5n7pu_2o zBxF6Iow5rYD{xME`*ar|;&l~zPYjl5tQn7{Xn`tt@lYibZwt1uESo47LV3*HG~NDW zP+$RKZ(M2Mumt;J?Yn zP#v~;s-7a&#v$nB!v^9}=Srfr?9rhj1I4R)2;;pV9>#OH&Pz8-5_0EjT(0M-B@=zD zbZ;i0I`Ip_>|xV+Hgg72)x4VV1r0?bD@1p>^c`KXdkyxPbn`b%^d(H z`EWPU1Qqz)^p1L)JmNBD9P?{S+{!}996z9pWM_%|H~8!p)@72RIwGdRF` zB_j(T$=gSS?yK~;q6$gZoNU8oZdJ=V`;QBbMb0;At*MP4h3gS3FmY2yyz<=OUyJEq zQml9+`ZnLXy^l)qqItnKBAfh)Q9zs*E#OgurrLi|CD z4t4>P*d9EWbm-QLXSse!{*J|Jn=FeVC4j%@-TrD1m)H{v#f~+{0&*GI0VY*6+jUOf z9H)7SkHwGn-(*jo%2aZavOWR7dHz1TW^AGE1D&%fnWY+Y8YM>`C}7J!_^M?bhBGuh zS7qIPE1e4eQQu~e7B+J2BO*m3|JDJP-sp%^H(3dyf=}Ze?LaboS^t{t^3UhmJ^7+7 zn;rb#QoD`tl}<^KJ^DmC)k{Tcm780ER1l&*;eUHOTMD71afvl*94;!}-^_B$Wd+DL z>OMf(1@^-Nb8TXlf$?z$`N>$Gx@gLrI*}D&163<7tCQg-)E*41NZ$}E0FXQ!&mKCh zd7MEg*(P0I%Qw{Y4lRCiLh6a*>^Z50SEydY?=A5TqtBNf^P~tWxV1MWxklZv4g0|-jsHKEj|*wXxKqIor591NrLwu6 zg+@MgFE5BFzOav2p@=DFJC_%BK{SasWlCdHI;H^EsF#(@Aj?1NMeKAAPTDh@+j{y2 z$+^^TS>H{0)xKBJccUmbzNrKhjYQbdCdsv4>^F&l-wew=p_%RD2>zfF>nt*k05-w3 zY(A1jZBeb)E9`U!_l~s#oBl2^i)WolvT_Mm+E>P(q9bWrZ%j{W2e;mhIwbNiJykN5 pKVG;Qkjb>T78xBQDBaI%9?**&)_*w^U$=~$)d!1o`Q+~C{{t13-%S7j literal 0 HcmV?d00001