From 1df413458a3ac52f4ae87a64e2f95e4f42c03957 Mon Sep 17 00:00:00 2001 From: pnevmoslon1 Date: Mon, 25 Nov 2024 08:31:54 +0400 Subject: [PATCH] lab1 --- .lab2.vpp.lck | 0 ProjectHotel/ProjectHotel/Entities/Athlete.cs | 5 +- .../Entities/AthletePlacingAthlete.cs | 6 +- .../Entities/Enums/AthleteClass.cs | 16 ++ .../ProjectHotel/Entities/Enums/Sport.cs | 23 +++ ProjectHotel/ProjectHotel/Entities/Hotel.cs | 6 +- .../ProjectHotel/Entities/PlacingAthlete.cs | 10 +- .../Entities/{Rooms.cs => Room.cs} | 6 +- .../Forms/FormAthlete.Designer.cs | 75 +++++++- .../ProjectHotel/Forms/FormAthlete.cs | 48 +++-- .../Forms/FormAthletes.Designer.cs | 125 +++++++++++++ .../ProjectHotel/Forms/FormAthletes.cs | 104 +++++++++++ .../ProjectHotel/Forms/FormAthletes.resx | 120 +++++++++++++ .../Forms/FormCleaningRoom.Designer.cs | 98 +++++++++++ .../ProjectHotel/Forms/FormCleaningRoom.cs | 49 ++++++ .../ProjectHotel/Forms/FormCleaningRoom.resx | 120 +++++++++++++ .../Forms/FormCleaningRooms.Designer.cs | 97 ++++++++++ .../ProjectHotel/Forms/FormCleaningRooms.cs | 54 ++++++ .../ProjectHotel/Forms/FormCleaningRooms.resx | 120 +++++++++++++ .../ProjectHotel/Forms/FormHotel.Designer.cs | 41 ++++- ProjectHotel/ProjectHotel/Forms/FormHotel.cs | 8 +- .../Forms/FormHotelForAthletes.Designer.cs | 103 ++++++----- .../Forms/FormHotelForAthletes.cs | 81 ++++++++- .../ProjectHotel/Forms/FormHotels.Designer.cs | 11 +- ProjectHotel/ProjectHotel/Forms/FormHotels.cs | 10 +- .../Forms/FormPlacingAthlete.Designer.cs | 166 ++++++++++++++++++ .../ProjectHotel/Forms/FormPlacingAthlete.cs | 73 ++++++++ .../Forms/FormPlacingAthlete.resx | 123 +++++++++++++ .../Forms/FormPlacingAthletes.Designer.cs | 110 ++++++++++++ .../ProjectHotel/Forms/FormPlacingAthletes.cs | 89 ++++++++++ .../Forms/FormPlacingAthletes.resx | 120 +++++++++++++ .../ProjectHotel/Forms/FormRoom.Designer.cs | 109 +++++++++++- ProjectHotel/ProjectHotel/Forms/FormRoom.cs | 72 +++++++- ProjectHotel/ProjectHotel/Forms/FormRoom.resx | 24 +++ .../ProjectHotel/Forms/FormRooms.Designer.cs | 125 +++++++++++++ ProjectHotel/ProjectHotel/Forms/FormRooms.cs | 111 ++++++++++++ .../ProjectHotel/Forms/FormRooms.resx | 120 +++++++++++++ ProjectHotel/ProjectHotel/Program.cs | 19 +- ProjectHotel/ProjectHotel/ProjectHotel.csproj | 4 - .../IAthletePlacingAthleteRepository.cs | 15 -- .../Repositories/ICleaningRoomRepository.cs | 6 +- .../Repositories/IPlacingAthleteRepository.cs | 4 +- .../Repositories/IRoomRepository.cs | 8 +- .../AthletePlacingAthleteRepository.cs | 24 --- .../Implementations/AthleteRepository.cs | 2 +- .../Implementations/CleaningRoomRepository.cs | 10 +- .../PlacingAthleteRepository.cs | 6 +- .../Implementations/RoomRepository.cs | 10 +- lab2.vpp | Bin 716800 -> 716800 bytes lab2.vpp.bak_000f | Bin 0 -> 716800 bytes 50 files changed, 2517 insertions(+), 169 deletions(-) create mode 100644 .lab2.vpp.lck create mode 100644 ProjectHotel/ProjectHotel/Entities/Enums/AthleteClass.cs create mode 100644 ProjectHotel/ProjectHotel/Entities/Enums/Sport.cs rename ProjectHotel/ProjectHotel/Entities/{Rooms.cs => Room.cs} (81%) create mode 100644 ProjectHotel/ProjectHotel/Forms/FormAthletes.Designer.cs create mode 100644 ProjectHotel/ProjectHotel/Forms/FormAthletes.cs create mode 100644 ProjectHotel/ProjectHotel/Forms/FormAthletes.resx create mode 100644 ProjectHotel/ProjectHotel/Forms/FormCleaningRoom.Designer.cs create mode 100644 ProjectHotel/ProjectHotel/Forms/FormCleaningRoom.cs create mode 100644 ProjectHotel/ProjectHotel/Forms/FormCleaningRoom.resx create mode 100644 ProjectHotel/ProjectHotel/Forms/FormCleaningRooms.Designer.cs create mode 100644 ProjectHotel/ProjectHotel/Forms/FormCleaningRooms.cs create mode 100644 ProjectHotel/ProjectHotel/Forms/FormCleaningRooms.resx create mode 100644 ProjectHotel/ProjectHotel/Forms/FormPlacingAthlete.Designer.cs create mode 100644 ProjectHotel/ProjectHotel/Forms/FormPlacingAthlete.cs create mode 100644 ProjectHotel/ProjectHotel/Forms/FormPlacingAthlete.resx create mode 100644 ProjectHotel/ProjectHotel/Forms/FormPlacingAthletes.Designer.cs create mode 100644 ProjectHotel/ProjectHotel/Forms/FormPlacingAthletes.cs create mode 100644 ProjectHotel/ProjectHotel/Forms/FormPlacingAthletes.resx create mode 100644 ProjectHotel/ProjectHotel/Forms/FormRooms.Designer.cs create mode 100644 ProjectHotel/ProjectHotel/Forms/FormRooms.cs create mode 100644 ProjectHotel/ProjectHotel/Forms/FormRooms.resx delete mode 100644 ProjectHotel/ProjectHotel/Repositories/IAthletePlacingAthleteRepository.cs delete mode 100644 ProjectHotel/ProjectHotel/Repositories/Implementations/AthletePlacingAthleteRepository.cs create mode 100644 lab2.vpp.bak_000f diff --git a/.lab2.vpp.lck b/.lab2.vpp.lck new file mode 100644 index 0000000..e69de29 diff --git a/ProjectHotel/ProjectHotel/Entities/Athlete.cs b/ProjectHotel/ProjectHotel/Entities/Athlete.cs index 080a91d..24f0f5d 100644 --- a/ProjectHotel/ProjectHotel/Entities/Athlete.cs +++ b/ProjectHotel/ProjectHotel/Entities/Athlete.cs @@ -1,4 +1,5 @@  +using ProjectHotel.Entities.Enums; using System; using System.Collections.Generic; using System.Linq; @@ -13,7 +14,9 @@ public class Athlete public string FirstName { get; private set; } = string.Empty; public string LastName { get; private set; } = string.Empty; public string FatherName { get; private set; } = string.Empty; - public static Athlete CreateEntity(int id, string first, string last, string father) + public Sport Sport { get; private set; } + public AthleteClass AthleteClass { get; private set; } + public static Athlete CreateEntity(int id, string first, string last, string father, Sport sport, AthleteClass athleteClass) { return new Athlete { diff --git a/ProjectHotel/ProjectHotel/Entities/AthletePlacingAthlete.cs b/ProjectHotel/ProjectHotel/Entities/AthletePlacingAthlete.cs index 43e3ab0..c715d0f 100644 --- a/ProjectHotel/ProjectHotel/Entities/AthletePlacingAthlete.cs +++ b/ProjectHotel/ProjectHotel/Entities/AthletePlacingAthlete.cs @@ -10,14 +10,14 @@ public class AthletePlacingAthlete { public int Id { get; set; } public int AthleteId { get; private set; } - public int PlacingId { get; private set; } - public static AthletePlacingAthlete CreateElement(int id, int athleteId, int placingId) + public int LengthOfStay { get; private set; } + public static AthletePlacingAthlete CreateElement(int id, int athleteId, int lengthOfStay) { return new AthletePlacingAthlete { Id = id, AthleteId = athleteId, - PlacingId = placingId + LengthOfStay = lengthOfStay }; } diff --git a/ProjectHotel/ProjectHotel/Entities/Enums/AthleteClass.cs b/ProjectHotel/ProjectHotel/Entities/Enums/AthleteClass.cs new file mode 100644 index 0000000..556a03e --- /dev/null +++ b/ProjectHotel/ProjectHotel/Entities/Enums/AthleteClass.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectHotel.Entities.Enums; + +public enum AthleteClass +{ + None = 0, + MSMK = 1, + MS = 2, + KMS = 3 + +} diff --git a/ProjectHotel/ProjectHotel/Entities/Enums/Sport.cs b/ProjectHotel/ProjectHotel/Entities/Enums/Sport.cs new file mode 100644 index 0000000..0e92e4c --- /dev/null +++ b/ProjectHotel/ProjectHotel/Entities/Enums/Sport.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectHotel.Entities.Enums; +[Flags] +public enum Sport +{ + None = 0, + Archery = 2, + Athletics = 4, + Badminton = 8, + Basketball = 16, + Boxing = 32, + Cycling = 64, + Fencing = 128, + Gymnastics = 256, + Rowing = 512, + Swimming = 1024 +} + diff --git a/ProjectHotel/ProjectHotel/Entities/Hotel.cs b/ProjectHotel/ProjectHotel/Entities/Hotel.cs index 38ac0ff..5425230 100644 --- a/ProjectHotel/ProjectHotel/Entities/Hotel.cs +++ b/ProjectHotel/ProjectHotel/Entities/Hotel.cs @@ -9,16 +9,16 @@ namespace ProjectHotel.Entities; public class Hotel { public int Id { get; private set; } - public string HotelName { get; private set; } = string.Empty; + public string Name { get; private set; } = string.Empty; public string Adress { get; private set; } = string.Empty; - public static Hotel CreateEntity(int id, string hotelName, string adress) + public static Hotel CreateEntity(int id, string name, string adress) { return new Hotel { Id = id, - HotelName = hotelName, + Name = name, Adress = adress diff --git a/ProjectHotel/ProjectHotel/Entities/PlacingAthlete.cs b/ProjectHotel/ProjectHotel/Entities/PlacingAthlete.cs index 10ec6a0..13df528 100644 --- a/ProjectHotel/ProjectHotel/Entities/PlacingAthlete.cs +++ b/ProjectHotel/ProjectHotel/Entities/PlacingAthlete.cs @@ -11,15 +11,19 @@ public class PlacingAthlete public int Id { get; private set; } public int RoomId { get; private set; } public DateTime PlacingDate { get; private set; } - public DateTime UnplacingDate { get; private set; } - public static PlacingAthlete CreateOpeartion(int id, int roomId, DateTime unplacing) + public IEnumerable AthletePlacingAthletes + { + get; + private set; + } = []; + public static PlacingAthlete CreateOpeartion(int id, int roomId, IEnumerable athletePlacingAthletes) { return new PlacingAthlete { Id = id, RoomId = roomId, PlacingDate = DateTime.Now, - UnplacingDate = unplacing, + AthletePlacingAthletes = athletePlacingAthletes }; } diff --git a/ProjectHotel/ProjectHotel/Entities/Rooms.cs b/ProjectHotel/ProjectHotel/Entities/Room.cs similarity index 81% rename from ProjectHotel/ProjectHotel/Entities/Rooms.cs rename to ProjectHotel/ProjectHotel/Entities/Room.cs index 0792a28..28abbd9 100644 --- a/ProjectHotel/ProjectHotel/Entities/Rooms.cs +++ b/ProjectHotel/ProjectHotel/Entities/Room.cs @@ -7,15 +7,15 @@ using static System.Runtime.InteropServices.JavaScript.JSType; namespace ProjectHotel.Entities; -public class Rooms +public class Room { public int Id { get; private set; } public int HotelId { get; private set; } public string Name { get; private set; } = string.Empty; public int Capacity { get; private set; } - public static Rooms CreateEntity(int id, int hotel, string name, int capacity) + public static Room CreateEntity(int id, int hotel, string name, int capacity) { - return new Rooms + return new Room { Id = id, HotelId = hotel, diff --git a/ProjectHotel/ProjectHotel/Forms/FormAthlete.Designer.cs b/ProjectHotel/ProjectHotel/Forms/FormAthlete.Designer.cs index 5160b7a..00bb4e3 100644 --- a/ProjectHotel/ProjectHotel/Forms/FormAthlete.Designer.cs +++ b/ProjectHotel/ProjectHotel/Forms/FormAthlete.Designer.cs @@ -34,6 +34,12 @@ textBoxFirstName = new TextBox(); textBoxLastName = new TextBox(); textBoxFatherName = new TextBox(); + comboBoxClass = new ComboBox(); + labelClass = new Label(); + label1 = new Label(); + checkedListBoxSport = new CheckedListBox(); + buttonSave = new Button(); + buttonCancel = new Button(); SuspendLayout(); // // labelName @@ -84,11 +90,72 @@ textBoxFatherName.Size = new Size(207, 23); textBoxFatherName.TabIndex = 5; // + // comboBoxClass + // + comboBoxClass.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxClass.FormattingEnabled = true; + comboBoxClass.Location = new Point(99, 144); + comboBoxClass.Name = "comboBoxClass"; + comboBoxClass.Size = new Size(207, 23); + comboBoxClass.TabIndex = 6; + // + // labelClass + // + labelClass.AutoSize = true; + labelClass.Location = new Point(12, 147); + labelClass.Name = "labelClass"; + labelClass.Size = new Size(44, 15); + labelClass.TabIndex = 7; + labelClass.Text = "Разряд"; + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(12, 186); + label1.Name = "label1"; + label1.Size = new Size(41, 15); + label1.TabIndex = 8; + label1.Text = "Спорт"; + // + // checkedListBoxSport + // + checkedListBoxSport.FormattingEnabled = true; + checkedListBoxSport.Location = new Point(98, 193); + checkedListBoxSport.Name = "checkedListBoxSport"; + checkedListBoxSport.Size = new Size(278, 112); + checkedListBoxSport.TabIndex = 9; + // + // buttonSave + // + buttonSave.Location = new Point(61, 324); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(75, 23); + buttonSave.TabIndex = 11; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += buttonSave_Click; + // + // buttonCancel + // + buttonCancel.Location = new Point(251, 324); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(75, 23); + buttonCancel.TabIndex = 10; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += buttonCancel_Click; + // // FormAthlete // AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(318, 139); + ClientSize = new Size(388, 359); + Controls.Add(buttonSave); + Controls.Add(buttonCancel); + Controls.Add(checkedListBoxSport); + Controls.Add(label1); + Controls.Add(labelClass); + Controls.Add(comboBoxClass); Controls.Add(textBoxFatherName); Controls.Add(textBoxLastName); Controls.Add(textBoxFirstName); @@ -110,5 +177,11 @@ private TextBox textBoxFirstName; private TextBox textBoxLastName; private TextBox textBoxFatherName; + private ComboBox comboBoxClass; + private Label labelClass; + private Label label1; + private CheckedListBox checkedListBoxSport; + private Button buttonSave; + private Button buttonCancel; } } \ No newline at end of file diff --git a/ProjectHotel/ProjectHotel/Forms/FormAthlete.cs b/ProjectHotel/ProjectHotel/Forms/FormAthlete.cs index d50b52e..8ed43b9 100644 --- a/ProjectHotel/ProjectHotel/Forms/FormAthlete.cs +++ b/ProjectHotel/ProjectHotel/Forms/FormAthlete.cs @@ -1,4 +1,7 @@ -using ProjectHotel.Repositories; +using Microsoft.VisualBasic.FileIO; +using ProjectHotel.Entities; +using ProjectHotel.Entities.Enums; +using ProjectHotel.Repositories; using ProjectHotel.Repositories.Implementations; using System; using System.Collections.Generic; @@ -28,9 +31,18 @@ public partial class FormAthlete : Form throw new InvalidDataException(nameof(athlete)); } + foreach (Sport elem in Enum.GetValues(typeof(Sport))) + { + if ((elem & athlete.Sport) != 0) + { + checkedListBoxSport.SetItemChecked(checkedListBoxSport.Items.IndexOf(elem), true); + } + } + textBoxFirstName.Text = athlete.FirstName; textBoxLastName.Text = athlete.LastName; textBoxFatherName.Text = athlete.FatherName; + comboBoxClass.SelectedItem = athlete.AthleteClass; } catch (Exception ex) { @@ -43,20 +55,27 @@ public partial class FormAthlete : Form { InitializeComponent(); _athleteRepository = athleteRepository ?? - throw new - ArgumentNullException(nameof(athleteRepository)); + throw new ArgumentNullException(nameof(athleteRepository)); + foreach (var elem in Enum.GetValues(typeof(Sport))) + { + checkedListBoxSport.Items.Add(elem); + } + comboBoxClass.DataSource = Enum.GetValues(typeof(AthleteClass)); } - private void ButtonSave_Click(object sender, EventArgs e) + private void buttonSave_Click(object sender, EventArgs e) { try { - if (string.IsNullOrWhiteSpace(textBoxFirstName.Text) || string.IsNullOrWhiteSpace(textBoxLastName.Text) || string.IsNullOrWhiteSpace(textBoxFatherName.Text)) + if (string.IsNullOrWhiteSpace(textBoxFirstName.Text) || + string.IsNullOrWhiteSpace(textBoxLastName.Text) || + string.IsNullOrWhiteSpace(textBoxFatherName.Text) || + comboBoxClass.SelectedIndex < 0 || checkedListBoxSport.SelectedIndex < 0) { throw new Exception("Имеются незаполненные поля"); } if (_athleteId.HasValue) { - _athleteRepository.UpdateAthlete(CreateEmployee(_athleteId.Value)); + _athleteRepository.UpdateAthlete(CreateAthlete(_athleteId.Value)); } else { @@ -70,10 +89,17 @@ public partial class FormAthlete : Form MessageBoxButtons.OK, MessageBoxIcon.Error); } } - private void ButtonCancel_Click(object sender, EventArgs e) => + private void buttonCancel_Click(object sender, EventArgs e) => Close(); - private Employee CreateEmployee(int id) => - Employee.CreateEntity(id, textBoxFirstName.Text, - textBoxLastName.Text, - (EmployeePost)comboBoxPost.SelectedItem!); + private Athlete CreateAthlete(int id) + { + Sport sport = Sport.None; + foreach (var elem in checkedListBoxSport.CheckedItems) + { + sport |= (Sport)elem; + } + return Athlete.CreateEntity(id, textBoxFirstName.Text, textBoxLastName.Text, + textBoxFatherName.Text, sport, (AthleteClass)comboBoxClass.SelectedItem!); + } + } diff --git a/ProjectHotel/ProjectHotel/Forms/FormAthletes.Designer.cs b/ProjectHotel/ProjectHotel/Forms/FormAthletes.Designer.cs new file mode 100644 index 0000000..9257812 --- /dev/null +++ b/ProjectHotel/ProjectHotel/Forms/FormAthletes.Designer.cs @@ -0,0 +1,125 @@ +namespace ProjectHotel.Forms +{ + partial class FormAthletes + { + /// + /// 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() + { + panel1 = new Panel(); + buttonDelete = new Button(); + buttonChange = new Button(); + buttonAdd = new Button(); + dataGridViewData = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + SuspendLayout(); + // + // panel1 + // + panel1.Controls.Add(buttonDelete); + panel1.Controls.Add(buttonChange); + panel1.Controls.Add(buttonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(632, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(168, 450); + panel1.TabIndex = 1; + // + // buttonDelete + // + buttonDelete.BackgroundImage = Properties.Resources.ImageDelete; + buttonDelete.BackgroundImageLayout = ImageLayout.Zoom; + buttonDelete.Location = new Point(24, 308); + buttonDelete.Name = "buttonDelete"; + buttonDelete.Size = new Size(130, 130); + buttonDelete.TabIndex = 2; + buttonDelete.UseVisualStyleBackColor = true; + buttonDelete.Click += ButtonDelete_Click; + // + // buttonChange + // + buttonChange.BackgroundImage = Properties.Resources.ImageChange; + buttonChange.BackgroundImageLayout = ImageLayout.Zoom; + buttonChange.Location = new Point(24, 158); + buttonChange.Name = "buttonChange"; + buttonChange.Size = new Size(130, 130); + buttonChange.TabIndex = 1; + buttonChange.UseVisualStyleBackColor = true; + buttonChange.Click += ButtonChange_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.AddImage; + buttonAdd.BackgroundImageLayout = ImageLayout.Zoom; + buttonAdd.Location = new Point(24, 12); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(130, 130); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // dataGridViewData + // + dataGridViewData.AllowUserToAddRows = false; + dataGridViewData.AllowUserToDeleteRows = false; + dataGridViewData.AllowUserToResizeColumns = false; + dataGridViewData.AllowUserToResizeRows = false; + dataGridViewData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewData.Dock = DockStyle.Fill; + dataGridViewData.Location = new Point(0, 0); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(632, 450); + dataGridViewData.TabIndex = 2; + // + // FormAthletes + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridViewData); + Controls.Add(panel1); + Name = "FormAthletes"; + StartPosition = FormStartPosition.CenterParent; + Text = "FormAthletes"; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel1; + private Button buttonDelete; + private Button buttonChange; + private Button buttonAdd; + private DataGridView dataGridViewData; + } +} \ No newline at end of file diff --git a/ProjectHotel/ProjectHotel/Forms/FormAthletes.cs b/ProjectHotel/ProjectHotel/Forms/FormAthletes.cs new file mode 100644 index 0000000..0a15bd6 --- /dev/null +++ b/ProjectHotel/ProjectHotel/Forms/FormAthletes.cs @@ -0,0 +1,104 @@ +using ProjectHotel.Repositories; +using ProjectHotel.Repositories.Implementations; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Unity; + +namespace ProjectHotel.Forms; + +public partial class FormAthletes : Form +{ + private readonly IUnityContainer _container; + private readonly IAthleteRepository _athleteRepository; + public FormAthletes(IUnityContainer container, IAthleteRepository athleteRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _athleteRepository = athleteRepository ?? throw new ArgumentNullException(nameof(athleteRepository)); + } + private void FormAthletes_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonChange_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + try + { + var form = _container.Resolve(); + form.Id = findId; + form.ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonDelete_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + try + { + _athleteRepository.DeleteAthlete(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void LoadList() => dataGridViewData.DataSource = _athleteRepository.ReadAthletes(); + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridViewData.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", + MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + id = Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); + return true; + } +} diff --git a/ProjectHotel/ProjectHotel/Forms/FormAthletes.resx b/ProjectHotel/ProjectHotel/Forms/FormAthletes.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectHotel/ProjectHotel/Forms/FormAthletes.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/ProjectHotel/ProjectHotel/Forms/FormCleaningRoom.Designer.cs b/ProjectHotel/ProjectHotel/Forms/FormCleaningRoom.Designer.cs new file mode 100644 index 0000000..de8788f --- /dev/null +++ b/ProjectHotel/ProjectHotel/Forms/FormCleaningRoom.Designer.cs @@ -0,0 +1,98 @@ +namespace ProjectHotel.Forms +{ + partial class FormCleaningRoom + { + /// + /// 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() + { + labelRoom = new Label(); + comboBoxRoom = new ComboBox(); + buttonSave = new Button(); + buttonCancel = new Button(); + SuspendLayout(); + // + // labelRoom + // + labelRoom.AutoSize = true; + labelRoom.Location = new Point(46, 54); + labelRoom.Name = "labelRoom"; + labelRoom.Size = new Size(97, 15); + labelRoom.TabIndex = 0; + labelRoom.Text = "Номер комнаты"; + // + // comboBoxRoom + // + comboBoxRoom.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxRoom.FormattingEnabled = true; + comboBoxRoom.Location = new Point(176, 51); + comboBoxRoom.Name = "comboBoxRoom"; + comboBoxRoom.Size = new Size(161, 23); + comboBoxRoom.TabIndex = 1; + // + // buttonSave + // + buttonSave.Location = new Point(68, 149); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(75, 23); + buttonSave.TabIndex = 2; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // buttonCancel + // + buttonCancel.Location = new Point(218, 149); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(75, 23); + buttonCancel.TabIndex = 3; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // FormCleaningRoom + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(364, 194); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(comboBoxRoom); + Controls.Add(labelRoom); + Name = "FormCleaningRoom"; + StartPosition = FormStartPosition.CenterParent; + Text = "FormCleaningRoom"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label labelRoom; + private ComboBox comboBoxRoom; + private Button buttonSave; + private Button buttonCancel; + } +} \ No newline at end of file diff --git a/ProjectHotel/ProjectHotel/Forms/FormCleaningRoom.cs b/ProjectHotel/ProjectHotel/Forms/FormCleaningRoom.cs new file mode 100644 index 0000000..7329423 --- /dev/null +++ b/ProjectHotel/ProjectHotel/Forms/FormCleaningRoom.cs @@ -0,0 +1,49 @@ +using ProjectHotel.Entities.Enums; +using ProjectHotel.Entities; +using ProjectHotel.Repositories; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ProjectHotel.Forms; + +public partial class FormCleaningRoom : Form +{ + private readonly ICleaningRoomRepository _cleaningRoomRepository; + + public FormCleaningRoom(ICleaningRoomRepository cleaningRoomRepository, IRoomRepository roomRepository) + { + InitializeComponent(); + _cleaningRoomRepository = cleaningRoomRepository ?? + throw new ArgumentNullException(nameof(cleaningRoomRepository)); + comboBoxRoom.DataSource = roomRepository.ReadRooms(); + comboBoxRoom.DisplayMember = "Name"; + comboBoxRoom.ValueMember = "Id"; + + } + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (comboBoxRoom.SelectedIndex < 0) + { + throw new Exception("Имеются незаполненные поля"); + } + _cleaningRoomRepository.CreateCleaningRoom(CleaningRoom.CreateOperation(0, (int)comboBoxRoom.SelectedValue!)); + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + +} diff --git a/ProjectHotel/ProjectHotel/Forms/FormCleaningRoom.resx b/ProjectHotel/ProjectHotel/Forms/FormCleaningRoom.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectHotel/ProjectHotel/Forms/FormCleaningRoom.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/ProjectHotel/ProjectHotel/Forms/FormCleaningRooms.Designer.cs b/ProjectHotel/ProjectHotel/Forms/FormCleaningRooms.Designer.cs new file mode 100644 index 0000000..17b6da6 --- /dev/null +++ b/ProjectHotel/ProjectHotel/Forms/FormCleaningRooms.Designer.cs @@ -0,0 +1,97 @@ +namespace ProjectHotel.Forms +{ + partial class FormCleaningRooms + { + /// + /// 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() + { + dataGridViewData = new DataGridView(); + panel1 = new Panel(); + buttonAdd = new Button(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + panel1.SuspendLayout(); + SuspendLayout(); + // + // dataGridViewData + // + dataGridViewData.AllowUserToAddRows = false; + dataGridViewData.AllowUserToDeleteRows = false; + dataGridViewData.AllowUserToResizeColumns = false; + dataGridViewData.AllowUserToResizeRows = false; + dataGridViewData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewData.Dock = DockStyle.Fill; + dataGridViewData.Location = new Point(0, 0); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(579, 445); + dataGridViewData.TabIndex = 5; + // + // panel1 + // + panel1.Controls.Add(buttonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(579, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(168, 445); + panel1.TabIndex = 4; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.AddImage; + buttonAdd.BackgroundImageLayout = ImageLayout.Zoom; + buttonAdd.Location = new Point(26, 146); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(130, 130); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // FormCleaningRooms + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(747, 445); + Controls.Add(dataGridViewData); + Controls.Add(panel1); + Name = "FormCleaningRooms"; + StartPosition = FormStartPosition.CenterParent; + Text = "FormCleaningRooms"; + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + panel1.ResumeLayout(false); + ResumeLayout(false); + } + + #endregion + + private DataGridView dataGridViewData; + private Panel panel1; + private Button buttonAdd; + } +} \ No newline at end of file diff --git a/ProjectHotel/ProjectHotel/Forms/FormCleaningRooms.cs b/ProjectHotel/ProjectHotel/Forms/FormCleaningRooms.cs new file mode 100644 index 0000000..4ccfd97 --- /dev/null +++ b/ProjectHotel/ProjectHotel/Forms/FormCleaningRooms.cs @@ -0,0 +1,54 @@ +using ProjectHotel.Repositories; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Unity; + +namespace ProjectHotel.Forms; + +public partial class FormCleaningRooms : Form +{ + private readonly IUnityContainer _container; + private readonly ICleaningRoomRepository _cleaningRoomRepository; + public FormCleaningRooms(IUnityContainer container, ICleaningRoomRepository cleaningRoomRepository) + { + InitializeComponent(); + _container = container ?? + throw new ArgumentNullException(nameof(container)); + _cleaningRoomRepository = cleaningRoomRepository ?? + throw new ArgumentNullException(nameof(cleaningRoomRepository)); + } + private void FormCleaningRooms_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void LoadList() => dataGridViewData.DataSource = _cleaningRoomRepository.ReadCleaningRooms(); +} + + diff --git a/ProjectHotel/ProjectHotel/Forms/FormCleaningRooms.resx b/ProjectHotel/ProjectHotel/Forms/FormCleaningRooms.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectHotel/ProjectHotel/Forms/FormCleaningRooms.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/ProjectHotel/ProjectHotel/Forms/FormHotel.Designer.cs b/ProjectHotel/ProjectHotel/Forms/FormHotel.Designer.cs index e6d5bee..8fbb75a 100644 --- a/ProjectHotel/ProjectHotel/Forms/FormHotel.Designer.cs +++ b/ProjectHotel/ProjectHotel/Forms/FormHotel.Designer.cs @@ -31,7 +31,9 @@ label1 = new Label(); label2 = new Label(); textBoxHotelName = new TextBox(); - textBoxHotelAdress = new TextBox(); + textBoxHotelAddress = new TextBox(); + buttonSave = new Button(); + buttonCancel = new Button(); SuspendLayout(); // // label1 @@ -59,19 +61,41 @@ textBoxHotelName.Size = new Size(390, 23); textBoxHotelName.TabIndex = 2; // - // textBoxHotelAdress + // textBoxHotelAddress // - textBoxHotelAdress.Location = new Point(168, 90); - textBoxHotelAdress.Name = "textBoxHotelAdress"; - textBoxHotelAdress.Size = new Size(387, 23); - textBoxHotelAdress.TabIndex = 3; + textBoxHotelAddress.Location = new Point(168, 90); + textBoxHotelAddress.Name = "textBoxHotelAddress"; + textBoxHotelAddress.Size = new Size(387, 23); + textBoxHotelAddress.TabIndex = 3; + // + // buttonSave + // + buttonSave.Location = new Point(105, 136); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(75, 23); + buttonSave.TabIndex = 4; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // buttonCancel + // + buttonCancel.Location = new Point(385, 136); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(75, 23); + buttonCancel.TabIndex = 5; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; // // FormHotel // AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(570, 167); - Controls.Add(textBoxHotelAdress); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(textBoxHotelAddress); Controls.Add(textBoxHotelName); Controls.Add(label2); Controls.Add(label1); @@ -88,5 +112,8 @@ private Label label2; private TextBox textBoxHotelName; private TextBox textBoxHotelAdress; + private Button buttonSave; + private Button buttonCancel; + private TextBox textBoxHotelAddress; } } \ No newline at end of file diff --git a/ProjectHotel/ProjectHotel/Forms/FormHotel.cs b/ProjectHotel/ProjectHotel/Forms/FormHotel.cs index 7f09583..eb664df 100644 --- a/ProjectHotel/ProjectHotel/Forms/FormHotel.cs +++ b/ProjectHotel/ProjectHotel/Forms/FormHotel.cs @@ -30,7 +30,7 @@ public partial class FormHotel : Form throw new InvalidDataException(nameof(hotel)); } - textBoxHotelName.Text = hotel.HotelName; + textBoxHotelName.Text = hotel.Name; textBoxHotelAdress.Text = hotel.Adress; @@ -39,7 +39,7 @@ public partial class FormHotel : Form catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); - return; + return; } } } @@ -56,7 +56,7 @@ public partial class FormHotel : Form { if (string.IsNullOrWhiteSpace(textBoxHotelName.Text) || - string.IsNullOrWhiteSpace(textBoxHotelName.Text)) + string.IsNullOrWhiteSpace(textBoxHotelAddress.Text)) { throw new Exception("Имеются незаполненные поля"); } @@ -78,5 +78,7 @@ public partial class FormHotel : Form } private void ButtonCancel_Click(object sender, EventArgs e) => Close(); private Hotel CreateHotel(int id) => Hotel.CreateEntity(id, textBoxHotelName.Text, textBoxHotelAdress.Text); + + } diff --git a/ProjectHotel/ProjectHotel/Forms/FormHotelForAthletes.Designer.cs b/ProjectHotel/ProjectHotel/Forms/FormHotelForAthletes.Designer.cs index 17894e5..d08df32 100644 --- a/ProjectHotel/ProjectHotel/Forms/FormHotelForAthletes.Designer.cs +++ b/ProjectHotel/ProjectHotel/Forms/FormHotelForAthletes.Designer.cs @@ -29,68 +29,80 @@ private void InitializeComponent() { menuStrip1 = new MenuStrip(); - справочникиToolStripMenuItem = new ToolStripMenuItem(); - комнатыToolStripMenuItem = new ToolStripMenuItem(); - отелелиToolStripMenuItem = new ToolStripMenuItem(); - спортсменыToolStripMenuItem = new ToolStripMenuItem(); - операцииToolStripMenuItem = new ToolStripMenuItem(); - заселениеСпортсменаToolStripMenuItem = new ToolStripMenuItem(); - отчетыToolStripMenuItem = new ToolStripMenuItem(); + DirectoriesToolStripMenuItem = new ToolStripMenuItem(); + RoomsToolStripMenuItem = new ToolStripMenuItem(); + HotelsToolStripMenuItem = new ToolStripMenuItem(); + AthletesToolStripMenuItem = new ToolStripMenuItem(); + OperationsToolStripMenuItem = new ToolStripMenuItem(); + PlacingAthleteToolStripMenuItem = new ToolStripMenuItem(); + CleaningRoomToolStripMenuItem = new ToolStripMenuItem(); + ReportsToolStripMenuItem = new ToolStripMenuItem(); menuStrip1.SuspendLayout(); SuspendLayout(); // // menuStrip1 // - menuStrip1.Items.AddRange(new ToolStripItem[] { справочникиToolStripMenuItem, операцииToolStripMenuItem, отчетыToolStripMenuItem }); + menuStrip1.Items.AddRange(new ToolStripItem[] { DirectoriesToolStripMenuItem, OperationsToolStripMenuItem, ReportsToolStripMenuItem }); menuStrip1.Location = new Point(0, 0); menuStrip1.Name = "menuStrip1"; menuStrip1.Size = new Size(800, 24); menuStrip1.TabIndex = 0; menuStrip1.Text = "menuStrip1"; // - // справочникиToolStripMenuItem + // DirectoriesToolStripMenuItem // - справочникиToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { комнатыToolStripMenuItem, отелелиToolStripMenuItem, спортсменыToolStripMenuItem }); - справочникиToolStripMenuItem.Name = "справочникиToolStripMenuItem"; - справочникиToolStripMenuItem.Size = new Size(94, 20); - справочникиToolStripMenuItem.Text = "Справочники"; + DirectoriesToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { RoomsToolStripMenuItem, HotelsToolStripMenuItem, AthletesToolStripMenuItem }); + DirectoriesToolStripMenuItem.Name = "DirectoriesToolStripMenuItem"; + DirectoriesToolStripMenuItem.Size = new Size(94, 20); + DirectoriesToolStripMenuItem.Text = "Справочники"; // - // комнатыToolStripMenuItem + // RoomsToolStripMenuItem // - комнатыToolStripMenuItem.Name = "комнатыToolStripMenuItem"; - комнатыToolStripMenuItem.Size = new Size(145, 22); - комнатыToolStripMenuItem.Text = "Комнаты"; + RoomsToolStripMenuItem.Name = "RoomsToolStripMenuItem"; + RoomsToolStripMenuItem.Size = new Size(180, 22); + RoomsToolStripMenuItem.Text = "Комнаты"; + RoomsToolStripMenuItem.Click += RoomsToolStripMenuItem_Click; // - // отелелиToolStripMenuItem + // HotelsToolStripMenuItem // - отелелиToolStripMenuItem.Name = "отелелиToolStripMenuItem"; - отелелиToolStripMenuItem.Size = new Size(145, 22); - отелелиToolStripMenuItem.Text = "Отелели"; + HotelsToolStripMenuItem.Name = "HotelsToolStripMenuItem"; + HotelsToolStripMenuItem.Size = new Size(180, 22); + HotelsToolStripMenuItem.Text = "Отелели"; + HotelsToolStripMenuItem.Click += HotelsToolStripMenuItem_Click; // - // спортсменыToolStripMenuItem + // AthletesToolStripMenuItem // - спортсменыToolStripMenuItem.Name = "спортсменыToolStripMenuItem"; - спортсменыToolStripMenuItem.Size = new Size(145, 22); - спортсменыToolStripMenuItem.Text = "Спортсмены"; + AthletesToolStripMenuItem.Name = "AthletesToolStripMenuItem"; + AthletesToolStripMenuItem.Size = new Size(180, 22); + AthletesToolStripMenuItem.Text = "Спортсмены"; + AthletesToolStripMenuItem.Click += AthletesToolStripMenuItem_Click; // - // операцииToolStripMenuItem + // OperationsToolStripMenuItem // - операцииToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { заселениеСпортсменаToolStripMenuItem }); - операцииToolStripMenuItem.Name = "операцииToolStripMenuItem"; - операцииToolStripMenuItem.Size = new Size(75, 20); - операцииToolStripMenuItem.Text = "Операции"; + OperationsToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { PlacingAthleteToolStripMenuItem, CleaningRoomToolStripMenuItem }); + OperationsToolStripMenuItem.Name = "OperationsToolStripMenuItem"; + OperationsToolStripMenuItem.Size = new Size(75, 20); + OperationsToolStripMenuItem.Text = "Операции"; // - // заселениеСпортсменаToolStripMenuItem + // PlacingAthleteToolStripMenuItem // - заселениеСпортсменаToolStripMenuItem.Name = "заселениеСпортсменаToolStripMenuItem"; - заселениеСпортсменаToolStripMenuItem.Size = new Size(201, 22); - заселениеСпортсменаToolStripMenuItem.Text = "Заселение спортсмена"; + PlacingAthleteToolStripMenuItem.Name = "PlacingAthleteToolStripMenuItem"; + PlacingAthleteToolStripMenuItem.Size = new Size(201, 22); + PlacingAthleteToolStripMenuItem.Text = "Заселение спортсмена"; + PlacingAthleteToolStripMenuItem.Click += PlacingAthleteToolStripMenuItem_Click; // - // отчетыToolStripMenuItem + // CleaningRoomToolStripMenuItem // - отчетыToolStripMenuItem.Name = "отчетыToolStripMenuItem"; - отчетыToolStripMenuItem.Size = new Size(60, 20); - отчетыToolStripMenuItem.Text = "Отчеты"; + CleaningRoomToolStripMenuItem.Name = "CleaningRoomToolStripMenuItem"; + CleaningRoomToolStripMenuItem.Size = new Size(201, 22); + CleaningRoomToolStripMenuItem.Text = "Уборка комнаты"; + CleaningRoomToolStripMenuItem.Click += CleaningRoomToolStripMenuItem_Click; + // + // ReportsToolStripMenuItem + // + ReportsToolStripMenuItem.Name = "ReportsToolStripMenuItem"; + ReportsToolStripMenuItem.Size = new Size(60, 20); + ReportsToolStripMenuItem.Text = "Отчеты"; // // FormHotelForAthletes // @@ -113,12 +125,13 @@ #endregion private MenuStrip menuStrip1; - private ToolStripMenuItem справочникиToolStripMenuItem; - private ToolStripMenuItem комнатыToolStripMenuItem; - private ToolStripMenuItem отелелиToolStripMenuItem; - private ToolStripMenuItem спортсменыToolStripMenuItem; - private ToolStripMenuItem операцииToolStripMenuItem; - private ToolStripMenuItem заселениеСпортсменаToolStripMenuItem; - private ToolStripMenuItem отчетыToolStripMenuItem; + private ToolStripMenuItem DirectoriesToolStripMenuItem; + private ToolStripMenuItem RoomsToolStripMenuItem; + private ToolStripMenuItem HotelsToolStripMenuItem; + private ToolStripMenuItem AthletesToolStripMenuItem; + private ToolStripMenuItem OperationsToolStripMenuItem; + private ToolStripMenuItem PlacingAthleteToolStripMenuItem; + private ToolStripMenuItem ReportsToolStripMenuItem; + private ToolStripMenuItem CleaningRoomToolStripMenuItem; } } diff --git a/ProjectHotel/ProjectHotel/Forms/FormHotelForAthletes.cs b/ProjectHotel/ProjectHotel/Forms/FormHotelForAthletes.cs index f56f2e7..8c05fc4 100644 --- a/ProjectHotel/ProjectHotel/Forms/FormHotelForAthletes.cs +++ b/ProjectHotel/ProjectHotel/Forms/FormHotelForAthletes.cs @@ -1,10 +1,83 @@ -namespace ProjectHotel +using ProjectHotel.Forms; +using System.ComponentModel; +using System.Xml.Linq; +using Unity; + +namespace ProjectHotel; + +public partial class FormHotelForAthletes : Form { - public partial class FormHotelForAthletes : Form + private readonly IUnityContainer _container; + public FormHotelForAthletes(IUnityContainer container) { - public FormHotelForAthletes() + InitializeComponent(); + _container = container ?? + throw new ArgumentNullException(nameof(container)); + } + + private void RoomsToolStripMenuItem_Click(object sender, EventArgs e) + { + try { - InitializeComponent(); + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + + } + + private void HotelsToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void AthletesToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void PlacingAthleteToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void CleaningRoomToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", + MessageBoxButtons.OK, MessageBoxIcon.Error); } } } diff --git a/ProjectHotel/ProjectHotel/Forms/FormHotels.Designer.cs b/ProjectHotel/ProjectHotel/Forms/FormHotels.Designer.cs index 8960bec..d8f13ae 100644 --- a/ProjectHotel/ProjectHotel/Forms/FormHotels.Designer.cs +++ b/ProjectHotel/ProjectHotel/Forms/FormHotels.Designer.cs @@ -1,6 +1,6 @@ namespace ProjectHotel.Forms { - partial class Отели + partial class FormHotels { /// /// Required designer variable. @@ -57,6 +57,7 @@ buttonDelete.Size = new Size(130, 130); buttonDelete.TabIndex = 2; buttonDelete.UseVisualStyleBackColor = true; + buttonDelete.Click += ButtonDelete_Click; // // buttonChange // @@ -67,6 +68,7 @@ buttonChange.Size = new Size(130, 130); buttonChange.TabIndex = 1; buttonChange.UseVisualStyleBackColor = true; + buttonChange.Click += ButtonChange_Click; // // buttonAdd // @@ -77,6 +79,7 @@ buttonAdd.Size = new Size(130, 130); buttonAdd.TabIndex = 0; buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; // // dataGridViewData // @@ -96,16 +99,16 @@ dataGridViewData.Size = new Size(632, 450); dataGridViewData.TabIndex = 1; // - // Отели + // FormHotels // AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(800, 450); Controls.Add(dataGridViewData); Controls.Add(panel1); - Name = "Отели"; + Name = "FormHotels"; StartPosition = FormStartPosition.CenterParent; - Text = "FormHotels"; + Text = "Гостиницы"; panel1.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); ResumeLayout(false); diff --git a/ProjectHotel/ProjectHotel/Forms/FormHotels.cs b/ProjectHotel/ProjectHotel/Forms/FormHotels.cs index 6157dde..099b259 100644 --- a/ProjectHotel/ProjectHotel/Forms/FormHotels.cs +++ b/ProjectHotel/ProjectHotel/Forms/FormHotels.cs @@ -13,12 +13,12 @@ using Unity; namespace ProjectHotel.Forms; -public partial class Отели : Form +public partial class FormHotels : Form { private readonly IUnityContainer _container; private readonly IHotelRepository _hotelRepository; - public Отели(IUnityContainer container, IHotelRepository hotelRepository) + public FormHotels(IUnityContainer container, IHotelRepository hotelRepository) { InitializeComponent(); _container = container ?? @@ -26,7 +26,7 @@ public partial class Отели : Form _hotelRepository = hotelRepository ?? throw new ArgumentNullException(nameof(hotelRepository)); } - private void FormAnimals_Load(object sender, EventArgs e) + private void FormRoom_Load(object sender, EventArgs e) { try { @@ -51,7 +51,7 @@ public partial class Отели : Form MessageBoxButtons.OK, MessageBoxIcon.Error); } } - private void ButtonUpd_Click(object sender, EventArgs e) + private void ButtonChange_Click(object sender, EventArgs e) { if (!TryGetIdentifierFromSelectedRow(out var findId)) { @@ -104,6 +104,8 @@ public partial class Отели : Form id = Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); return true; } + + } diff --git a/ProjectHotel/ProjectHotel/Forms/FormPlacingAthlete.Designer.cs b/ProjectHotel/ProjectHotel/Forms/FormPlacingAthlete.Designer.cs new file mode 100644 index 0000000..8be2f83 --- /dev/null +++ b/ProjectHotel/ProjectHotel/Forms/FormPlacingAthlete.Designer.cs @@ -0,0 +1,166 @@ +namespace ProjectHotel.Forms +{ + partial class FormPlacingAthlete + { + /// + /// 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() + { + DataGridViewCellStyle dataGridViewCellStyle1 = new DataGridViewCellStyle(); + label1 = new Label(); + label2 = new Label(); + buttonCancel = new Button(); + buttonSave = new Button(); + comboBoxRoom = new ComboBox(); + groupBox1 = new GroupBox(); + dataGridView = new DataGridView(); + ColumnAthlete = new DataGridViewComboBoxColumn(); + ColumnLengthOfStay = new DataGridViewTextBoxColumn(); + groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(58, 35); + label1.Name = "label1"; + label1.Size = new Size(54, 15); + label1.TabIndex = 0; + label1.Text = "Комната"; + // + // label2 + // + label2.AutoSize = true; + label2.Location = new Point(58, 90); + label2.Name = "label2"; + label2.Size = new Size(156, 15); + label2.TabIndex = 1; + label2.Text = "Длительность проживания"; + // + // buttonCancel + // + buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonCancel.Location = new Point(304, 479); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(75, 23); + buttonCancel.TabIndex = 5; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // buttonSave + // + buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonSave.Location = new Point(111, 479); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(75, 23); + buttonSave.TabIndex = 4; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // comboBoxRoom + // + comboBoxRoom.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxRoom.FormattingEnabled = true; + comboBoxRoom.Location = new Point(118, 32); + comboBoxRoom.Name = "comboBoxRoom"; + comboBoxRoom.Size = new Size(382, 23); + comboBoxRoom.TabIndex = 6; + // + // groupBox1 + // + groupBox1.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; + groupBox1.Controls.Add(dataGridView); + groupBox1.Location = new Point(12, 130); + groupBox1.Name = "groupBox1"; + groupBox1.Size = new Size(491, 329); + groupBox1.TabIndex = 7; + groupBox1.TabStop = false; + groupBox1.Text = "Спортсмены"; + // + // dataGridView + // + dataGridView.AllowUserToResizeColumns = false; + dataGridView.AllowUserToResizeRows = false; + dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView.Columns.AddRange(new DataGridViewColumn[] { ColumnAthlete, ColumnLengthOfStay }); + dataGridView.Dock = DockStyle.Fill; + dataGridView.Location = new Point(3, 19); + dataGridView.MultiSelect = false; + dataGridView.Name = "dataGridView"; + dataGridView.RowHeadersVisible = false; + dataGridViewCellStyle1.Alignment = DataGridViewContentAlignment.MiddleCenter; + dataGridView.RowsDefaultCellStyle = dataGridViewCellStyle1; + dataGridView.Size = new Size(485, 307); + dataGridView.TabIndex = 0; + // + // ColumnAthlete + // + ColumnAthlete.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox; + ColumnAthlete.HeaderText = "Спортсмен"; + ColumnAthlete.Name = "ColumnAthlete"; + // + // ColumnLengthOfStay + // + ColumnLengthOfStay.HeaderText = "Длительность проживания"; + ColumnLengthOfStay.Name = "ColumnLengthOfStay"; + // + // FormAthletePlacingAthlete + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(515, 534); + Controls.Add(groupBox1); + Controls.Add(comboBoxRoom); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(label2); + Controls.Add(label1); + Name = "FormAthletePlacingAthlete"; + StartPosition = FormStartPosition.CenterParent; + Text = "Размещение спортсмена"; + groupBox1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label label1; + private Label label2; + private Label label3; + private Button buttonCancel; + private Button buttonSave; + private ComboBox comboBoxRoom; + private GroupBox groupBox1; + private DataGridView dataGridView; + private DataGridViewComboBoxColumn ColumnAthlete; + private DataGridViewTextBoxColumn ColumnLengthOfStay; + } +} \ No newline at end of file diff --git a/ProjectHotel/ProjectHotel/Forms/FormPlacingAthlete.cs b/ProjectHotel/ProjectHotel/Forms/FormPlacingAthlete.cs new file mode 100644 index 0000000..8c7ef6a --- /dev/null +++ b/ProjectHotel/ProjectHotel/Forms/FormPlacingAthlete.cs @@ -0,0 +1,73 @@ +using ProjectHotel.Entities; +using ProjectHotel.Repositories; +using ProjectHotel.Repositories.Implementations; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ProjectHotel.Forms; + +public partial class FormPlacingAthlete : Form +{ + private readonly IPlacingAthleteRepository _placingAthleteRepository; + public FormPlacingAthlete(IPlacingAthleteRepository placingAthleteRepository, + IRoomRepository roomRepository, + IAthleteRepository athleteRepository) + { + InitializeComponent(); + _placingAthleteRepository = placingAthleteRepository ?? + throw new ArgumentNullException(nameof(placingAthleteRepository)); + comboBoxRoom.DataSource = roomRepository.ReadRooms(); + comboBoxRoom.DisplayMember = "Name"; + comboBoxRoom.ValueMember = "Id"; + ColumnAthlete.DataSource = athleteRepository.ReadAthletes(); + ColumnAthlete.DisplayMember = "FirstName"; + ColumnAthlete.ValueMember = "Id"; + } + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (dataGridView.RowCount < 1 || + comboBoxRoom.SelectedIndex < 0) + { + throw new Exception("Имеются незаполненные поля"); + } + _placingAthleteRepository.CreatePlacingAthlete(PlacingAthlete.CreateOpeartion(0,(int)comboBoxRoom.SelectedValue!, + CreateListAthletePlacingAthleteFromDataGrid())); + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + private List + CreateListAthletePlacingAthleteFromDataGrid() + { + var list = new List(); + foreach (DataGridViewRow row in dataGridView.Rows) + { + if (row.Cells["ColumnFeed"].Value == null || + row.Cells["ColumnCount"].Value == null) + { + continue; + } + list.Add(AthletePlacingAthlete.CreateElement(0, + Convert.ToInt32(row.Cells["ColumnAthlete"].Value), + Convert.ToInt32(row.Cells["ColumnLengthOfStay"].Value))); + } + return list; + } + +} + + diff --git a/ProjectHotel/ProjectHotel/Forms/FormPlacingAthlete.resx b/ProjectHotel/ProjectHotel/Forms/FormPlacingAthlete.resx new file mode 100644 index 0000000..28a69c7 --- /dev/null +++ b/ProjectHotel/ProjectHotel/Forms/FormPlacingAthlete.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + True + + \ No newline at end of file diff --git a/ProjectHotel/ProjectHotel/Forms/FormPlacingAthletes.Designer.cs b/ProjectHotel/ProjectHotel/Forms/FormPlacingAthletes.Designer.cs new file mode 100644 index 0000000..fe7af57 --- /dev/null +++ b/ProjectHotel/ProjectHotel/Forms/FormPlacingAthletes.Designer.cs @@ -0,0 +1,110 @@ +namespace ProjectHotel.Forms +{ + partial class FormPlacingAthletes + { + /// + /// 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() + { + dataGridViewData = new DataGridView(); + panel1 = new Panel(); + buttonDelete = new Button(); + buttonAdd = new Button(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + panel1.SuspendLayout(); + SuspendLayout(); + // + // dataGridViewData + // + dataGridViewData.AllowUserToAddRows = false; + dataGridViewData.AllowUserToDeleteRows = false; + dataGridViewData.AllowUserToResizeColumns = false; + dataGridViewData.AllowUserToResizeRows = false; + dataGridViewData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewData.Dock = DockStyle.Fill; + dataGridViewData.Location = new Point(0, 0); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(632, 450); + dataGridViewData.TabIndex = 3; + // + // panel1 + // + panel1.Controls.Add(buttonDelete); + panel1.Controls.Add(buttonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(632, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(168, 450); + panel1.TabIndex = 2; + // + // buttonDelete + // + buttonDelete.BackgroundImage = Properties.Resources.ImageDelete; + buttonDelete.BackgroundImageLayout = ImageLayout.Zoom; + buttonDelete.Location = new Point(26, 248); + buttonDelete.Name = "buttonDelete"; + buttonDelete.Size = new Size(130, 130); + buttonDelete.TabIndex = 2; + buttonDelete.UseVisualStyleBackColor = true; + buttonDelete.Click += ButtonDelete_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.AddImage; + buttonAdd.BackgroundImageLayout = ImageLayout.Zoom; + buttonAdd.Location = new Point(24, 51); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(130, 130); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // FormPlacingAthletes + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridViewData); + Controls.Add(panel1); + Name = "FormPlacingAthletes"; + Text = "FormPlacingAthletes"; + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + panel1.ResumeLayout(false); + ResumeLayout(false); + } + + #endregion + + private DataGridView dataGridViewData; + private Panel panel1; + private Button buttonDelete; + private Button buttonAdd; + } +} \ No newline at end of file diff --git a/ProjectHotel/ProjectHotel/Forms/FormPlacingAthletes.cs b/ProjectHotel/ProjectHotel/Forms/FormPlacingAthletes.cs new file mode 100644 index 0000000..1ca386d --- /dev/null +++ b/ProjectHotel/ProjectHotel/Forms/FormPlacingAthletes.cs @@ -0,0 +1,89 @@ +using ProjectHotel.Repositories; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Unity; + +namespace ProjectHotel.Forms; + +public partial class FormPlacingAthletes : Form +{ + private readonly IUnityContainer _container; + private readonly IPlacingAthleteRepository _placingAthleteRepository; + public FormPlacingAthletes(IUnityContainer container, IPlacingAthleteRepository placingAthleteRepository) + { + InitializeComponent(); + _container = container ?? + throw new ArgumentNullException(nameof(container)); + _placingAthleteRepository = placingAthleteRepository ?? + throw new ArgumentNullException(nameof(placingAthleteRepository)); + } + private void FormPlacingAthletes_Load1(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonDelete_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + if (MessageBox.Show("Удалить запись?", "Удаление", + MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + try + { + _placingAthleteRepository.DeletePlacingAthlete(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void LoadList() => dataGridViewData.DataSource = + _placingAthleteRepository.ReadPlacingAthlete(); + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridViewData.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", + MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + id = + Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); + return true; + } + } diff --git a/ProjectHotel/ProjectHotel/Forms/FormPlacingAthletes.resx b/ProjectHotel/ProjectHotel/Forms/FormPlacingAthletes.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectHotel/ProjectHotel/Forms/FormPlacingAthletes.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/ProjectHotel/ProjectHotel/Forms/FormRoom.Designer.cs b/ProjectHotel/ProjectHotel/Forms/FormRoom.Designer.cs index bf304be..6972411 100644 --- a/ProjectHotel/ProjectHotel/Forms/FormRoom.Designer.cs +++ b/ProjectHotel/ProjectHotel/Forms/FormRoom.Designer.cs @@ -1,6 +1,6 @@ namespace ProjectHotel.Forms { - partial class Комната + partial class FormRoom { /// /// Required designer variable. @@ -30,26 +30,121 @@ { components = new System.ComponentModel.Container(); hotelBindingSource = new BindingSource(components); + labelHotelName = new Label(); + labelCapacity = new Label(); + labelRoomName = new Label(); + numericUpDownCapacity = new NumericUpDown(); + textBoxRoomName = new TextBox(); + buttonCancel = new Button(); + buttonSave = new Button(); + comboBoxHotel = new ComboBox(); ((System.ComponentModel.ISupportInitialize)hotelBindingSource).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDownCapacity).BeginInit(); SuspendLayout(); // - // hotelBindingSource + // labelHotelName // - hotelBindingSource.DataSource = typeof(Entities.Hotel); + labelHotelName.AutoSize = true; + labelHotelName.Location = new Point(31, 55); + labelHotelName.Name = "labelHotelName"; + labelHotelName.Size = new Size(93, 15); + labelHotelName.TabIndex = 0; + labelHotelName.Text = "Название отеля"; // - // Комната + // labelCapacity + // + labelCapacity.AutoSize = true; + labelCapacity.Location = new Point(31, 109); + labelCapacity.Name = "labelCapacity"; + labelCapacity.Size = new Size(80, 15); + labelCapacity.TabIndex = 1; + labelCapacity.Text = "Вместимость"; + // + // labelRoomName + // + labelRoomName.AutoSize = true; + labelRoomName.Location = new Point(31, 168); + labelRoomName.Name = "labelRoomName"; + labelRoomName.Size = new Size(97, 15); + labelRoomName.TabIndex = 2; + labelRoomName.Text = "Номер комнаты"; + // + // numericUpDownCapacity + // + numericUpDownCapacity.Location = new Point(153, 109); + numericUpDownCapacity.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); + numericUpDownCapacity.Name = "numericUpDownCapacity"; + numericUpDownCapacity.Size = new Size(55, 23); + numericUpDownCapacity.TabIndex = 3; + numericUpDownCapacity.Value = new decimal(new int[] { 1, 0, 0, 0 }); + // + // textBoxRoomName + // + textBoxRoomName.Location = new Point(153, 160); + textBoxRoomName.Name = "textBoxRoomName"; + textBoxRoomName.Size = new Size(185, 23); + textBoxRoomName.TabIndex = 5; + // + // buttonCancel + // + buttonCancel.Location = new Point(263, 251); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(75, 23); + buttonCancel.TabIndex = 7; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // buttonSave + // + buttonSave.Location = new Point(73, 251); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(75, 23); + buttonSave.TabIndex = 8; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // comboBoxHotel + // + comboBoxHotel.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxHotel.FormattingEnabled = true; + comboBoxHotel.Location = new Point(153, 47); + comboBoxHotel.Name = "comboBoxHotel"; + comboBoxHotel.Size = new Size(197, 23); + comboBoxHotel.TabIndex = 9; + // + // FormRoom // AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(584, 389); - Name = "Комната"; + ClientSize = new Size(419, 309); + Controls.Add(comboBoxHotel); + Controls.Add(buttonSave); + Controls.Add(buttonCancel); + Controls.Add(textBoxRoomName); + Controls.Add(numericUpDownCapacity); + Controls.Add(labelRoomName); + Controls.Add(labelCapacity); + Controls.Add(labelHotelName); + Name = "FormRoom"; StartPosition = FormStartPosition.CenterParent; - Text = "FormRoom"; + Text = "Комната"; ((System.ComponentModel.ISupportInitialize)hotelBindingSource).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDownCapacity).EndInit(); ResumeLayout(false); + PerformLayout(); } #endregion private BindingSource hotelBindingSource; + private Label labelHotelName; + private Label labelCapacity; + private Label labelRoomName; + private NumericUpDown numericUpDownCapacity; + private TextBox textBoxRoomName; + private Button buttonCancel; + private Button buttonSave; + private ComboBox comboBoxHotel; } } \ No newline at end of file diff --git a/ProjectHotel/ProjectHotel/Forms/FormRoom.cs b/ProjectHotel/ProjectHotel/Forms/FormRoom.cs index e4a6c7a..8b866aa 100644 --- a/ProjectHotel/ProjectHotel/Forms/FormRoom.cs +++ b/ProjectHotel/ProjectHotel/Forms/FormRoom.cs @@ -1,4 +1,6 @@ -using System; +using ProjectHotel.Entities; +using ProjectHotel.Repositories; +using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; @@ -10,11 +12,75 @@ using System.Windows.Forms; namespace ProjectHotel.Forms { - public partial class Комната : Form + public partial class FormRoom : Form { - public Комната() + private readonly IRoomRepository _roomRepository; + private int? _roomId; + public int Id + { + set + { + try + { + var room = _roomRepository.ReadRoomById(value); + if (room == null || comboBoxHotel.SelectedIndex < 0) + { + throw new + InvalidDataException(nameof(room)); + } + textBoxRoomName.Text = room.Name; + numericUpDownCapacity.Value = room.Capacity; + _roomId = value; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + } + public FormRoom(IRoomRepository roomRepository, IHotelRepository hotelRepository) { InitializeComponent(); + _roomRepository = roomRepository ?? + throw new ArgumentNullException(nameof(roomRepository)); + comboBoxHotel.DataSource = hotelRepository.ReadHotels(); + comboBoxHotel.DisplayMember = "Name"; + comboBoxHotel.ValueMember = "Id"; } + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + + if (string.IsNullOrWhiteSpace(textBoxRoomName.Text)) + { + throw new Exception("Имеются незаполненные поля"); + } + if (_roomId.HasValue) + { + _roomRepository.UpdateRoom(CreateRoom(_roomId.Value)); + } + else + { + _roomRepository.CreateRoom(CreateRoom(0)); + } + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + + private Room CreateRoom(int id) => Room.CreateEntity(id, (int)comboBoxHotel.SelectedValue!, textBoxRoomName.Text, Convert.ToInt32(numericUpDownCapacity.Value)); + + } + + + } + diff --git a/ProjectHotel/ProjectHotel/Forms/FormRoom.resx b/ProjectHotel/ProjectHotel/Forms/FormRoom.resx index bfd5f48..b922c5b 100644 --- a/ProjectHotel/ProjectHotel/Forms/FormRoom.resx +++ b/ProjectHotel/ProjectHotel/Forms/FormRoom.resx @@ -120,4 +120,28 @@ 17, 17 + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + \ No newline at end of file diff --git a/ProjectHotel/ProjectHotel/Forms/FormRooms.Designer.cs b/ProjectHotel/ProjectHotel/Forms/FormRooms.Designer.cs new file mode 100644 index 0000000..9c070fb --- /dev/null +++ b/ProjectHotel/ProjectHotel/Forms/FormRooms.Designer.cs @@ -0,0 +1,125 @@ +namespace ProjectHotel.Forms +{ + partial class FormRooms + { + /// + /// 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() + { + dataGridViewData = new DataGridView(); + panel1 = new Panel(); + buttonDelete = new Button(); + buttonChange = new Button(); + buttonAdd = new Button(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + panel1.SuspendLayout(); + SuspendLayout(); + // + // dataGridViewData + // + dataGridViewData.AllowUserToAddRows = false; + dataGridViewData.AllowUserToDeleteRows = false; + dataGridViewData.AllowUserToResizeColumns = false; + dataGridViewData.AllowUserToResizeRows = false; + dataGridViewData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewData.Dock = DockStyle.Fill; + dataGridViewData.Location = new Point(0, 0); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(632, 450); + dataGridViewData.TabIndex = 3; + // + // panel1 + // + panel1.Controls.Add(buttonDelete); + panel1.Controls.Add(buttonChange); + panel1.Controls.Add(buttonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(632, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(168, 450); + panel1.TabIndex = 2; + // + // buttonDelete + // + buttonDelete.BackgroundImage = Properties.Resources.ImageDelete; + buttonDelete.BackgroundImageLayout = ImageLayout.Zoom; + buttonDelete.Location = new Point(24, 308); + buttonDelete.Name = "buttonDelete"; + buttonDelete.Size = new Size(130, 130); + buttonDelete.TabIndex = 2; + buttonDelete.UseVisualStyleBackColor = true; + buttonDelete.Click += ButtonDelete_Click; + // + // buttonChange + // + buttonChange.BackgroundImage = Properties.Resources.ImageChange; + buttonChange.BackgroundImageLayout = ImageLayout.Zoom; + buttonChange.Location = new Point(24, 158); + buttonChange.Name = "buttonChange"; + buttonChange.Size = new Size(130, 130); + buttonChange.TabIndex = 1; + buttonChange.UseVisualStyleBackColor = true; + buttonChange.Click += ButtonChange_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.AddImage; + buttonAdd.BackgroundImageLayout = ImageLayout.Zoom; + buttonAdd.Location = new Point(24, 12); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(130, 130); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // FormRooms + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridViewData); + Controls.Add(panel1); + Name = "FormRooms"; + StartPosition = FormStartPosition.CenterParent; + Text = "FormRooms"; + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + panel1.ResumeLayout(false); + ResumeLayout(false); + } + + #endregion + + private DataGridView dataGridViewData; + private Panel panel1; + private Button buttonDelete; + private Button buttonChange; + private Button buttonAdd; + } +} \ No newline at end of file diff --git a/ProjectHotel/ProjectHotel/Forms/FormRooms.cs b/ProjectHotel/ProjectHotel/Forms/FormRooms.cs new file mode 100644 index 0000000..929bcc4 --- /dev/null +++ b/ProjectHotel/ProjectHotel/Forms/FormRooms.cs @@ -0,0 +1,111 @@ +using ProjectHotel.Repositories; +using ProjectHotel.Repositories.Implementations; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Unity; + +namespace ProjectHotel.Forms; + +public partial class FormRooms : Form +{ + private readonly IUnityContainer _container; + private readonly IRoomRepository _roomRepository; + + public FormRooms(IUnityContainer container, IRoomRepository roomRepository) + { + InitializeComponent(); + _container = container ?? + throw new ArgumentNullException(nameof(container)); + _roomRepository = roomRepository ?? + throw new ArgumentNullException(nameof(roomRepository)); + } + private void FormRoom_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonChange_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + try + { + var form = _container.Resolve(); + form.Id = findId; + form.ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при изменении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonDelete_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + try + { + _roomRepository.DeleteRoom(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void LoadList() => dataGridViewData.DataSource = _roomRepository.ReadRooms(); + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridViewData.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", + MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + id = Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); + return true; + } + + +} + + diff --git a/ProjectHotel/ProjectHotel/Forms/FormRooms.resx b/ProjectHotel/ProjectHotel/Forms/FormRooms.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectHotel/ProjectHotel/Forms/FormRooms.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/ProjectHotel/ProjectHotel/Program.cs b/ProjectHotel/ProjectHotel/Program.cs index 8177a3b..6834d59 100644 --- a/ProjectHotel/ProjectHotel/Program.cs +++ b/ProjectHotel/ProjectHotel/Program.cs @@ -1,3 +1,8 @@ +using Unity.Lifetime; +using Unity; +using ProjectHotel.Repositories; +using ProjectHotel.Repositories.Implementations; + namespace ProjectHotel { internal static class Program @@ -11,7 +16,19 @@ namespace ProjectHotel // To customize application configuration such as set high DPI settings or default font, // see https://aka.ms/applicationconfiguration. ApplicationConfiguration.Initialize(); - Application.Run(new FormHotelForAthletes()); + Application.Run(CreateContainer().Resolve()); + } + private static IUnityContainer CreateContainer() + { + var container = new UnityContainer(); + + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + + return container; } } } \ No newline at end of file diff --git a/ProjectHotel/ProjectHotel/ProjectHotel.csproj b/ProjectHotel/ProjectHotel/ProjectHotel.csproj index 24b1910..8fef0f9 100644 --- a/ProjectHotel/ProjectHotel/ProjectHotel.csproj +++ b/ProjectHotel/ProjectHotel/ProjectHotel.csproj @@ -23,10 +23,6 @@ - - - - diff --git a/ProjectHotel/ProjectHotel/Repositories/IAthletePlacingAthleteRepository.cs b/ProjectHotel/ProjectHotel/Repositories/IAthletePlacingAthleteRepository.cs deleted file mode 100644 index 00a82fb..0000000 --- a/ProjectHotel/ProjectHotel/Repositories/IAthletePlacingAthleteRepository.cs +++ /dev/null @@ -1,15 +0,0 @@ -using ProjectHotel.Entities; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ProjectHotel.Repositories; - -internal interface IAthletePlacingAthleteRepository -{ - IEnumerable ReadAthletePlacingAthlete(int? id = null, int? athleteId = null, int? roomId = null); - void CreateAthletePlacingAthlete(AthletePlacingAthlete athletePlacingAthlete); - AthletePlacingAthlete ReadAthleteById(int id); -} diff --git a/ProjectHotel/ProjectHotel/Repositories/ICleaningRoomRepository.cs b/ProjectHotel/ProjectHotel/Repositories/ICleaningRoomRepository.cs index 63db9d7..c0116d5 100644 --- a/ProjectHotel/ProjectHotel/Repositories/ICleaningRoomRepository.cs +++ b/ProjectHotel/ProjectHotel/Repositories/ICleaningRoomRepository.cs @@ -7,10 +7,10 @@ using System.Threading.Tasks; namespace ProjectHotel.Repositories; -internal interface ICleaningRoomRepository +public interface ICleaningRoomRepository { - IEnumerable ReadCleaningRoom(int? id = null, int? roomId = null, int? athleteId = null); + IEnumerable ReadCleaningRooms(int? id = null, int? roomId = null); void CreateCleaningRoom(CleaningRoom cleaningRoom); - AthletePlacingAthlete ReadAthleteById(int id); + CleaningRoom ReadCleaningRoomById(int id); } \ No newline at end of file diff --git a/ProjectHotel/ProjectHotel/Repositories/IPlacingAthleteRepository.cs b/ProjectHotel/ProjectHotel/Repositories/IPlacingAthleteRepository.cs index 90d930d..ed3ba80 100644 --- a/ProjectHotel/ProjectHotel/Repositories/IPlacingAthleteRepository.cs +++ b/ProjectHotel/ProjectHotel/Repositories/IPlacingAthleteRepository.cs @@ -9,7 +9,7 @@ namespace ProjectHotel.Repositories; public interface IPlacingAthleteRepository { - IEnumerable ReadPlacingAthlete(DateTime? placing = null, DateTime? unplacing = null, int? roomId = null); + IEnumerable ReadPlacingAthlete(int? roomId = null, DateTime ? placing = null); void CreatePlacingAthlete(PlacingAthlete placingAthlete); - PlacingAthlete ReadPlacingAthleteById(int id); + void DeletePlacingAthlete(int id); } diff --git a/ProjectHotel/ProjectHotel/Repositories/IRoomRepository.cs b/ProjectHotel/ProjectHotel/Repositories/IRoomRepository.cs index d32eeb3..05f0116 100644 --- a/ProjectHotel/ProjectHotel/Repositories/IRoomRepository.cs +++ b/ProjectHotel/ProjectHotel/Repositories/IRoomRepository.cs @@ -10,9 +10,9 @@ namespace ProjectHotel.Repositories; public interface IRoomRepository { - IEnumerable ReadRooms(); - Rooms ReadRoomById(int id); - void CreateRoom(Rooms rooms); - void UpdateRoom(Rooms rooms); + IEnumerable ReadRooms(); + Room ReadRoomById(int id); + void CreateRoom(Room room); + void UpdateRoom(Room room); void DeleteRoom(int id); } diff --git a/ProjectHotel/ProjectHotel/Repositories/Implementations/AthletePlacingAthleteRepository.cs b/ProjectHotel/ProjectHotel/Repositories/Implementations/AthletePlacingAthleteRepository.cs deleted file mode 100644 index cf4cc95..0000000 --- a/ProjectHotel/ProjectHotel/Repositories/Implementations/AthletePlacingAthleteRepository.cs +++ /dev/null @@ -1,24 +0,0 @@ -using ProjectHotel.Entities; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ProjectHotel.Repositories.Implementations; - -internal class AthletePlacingAthleteRepository -{ - public IEnumerable ReadAthletePlacingAthlete(int? id = null, int? athleteId = null, int? roomId = null) - { - return []; - } - public void CreateAthletePlacingAthlete(AthletePlacingAthleteRepository athletePlacingAthlete) - { - } - - public AthletePlacingAthlete ReadAthleteById(int id) - { - return AthletePlacingAthlete.CreateElement(0, 0, 0); - } -} diff --git a/ProjectHotel/ProjectHotel/Repositories/Implementations/AthleteRepository.cs b/ProjectHotel/ProjectHotel/Repositories/Implementations/AthleteRepository.cs index 02b7f70..d5866c8 100644 --- a/ProjectHotel/ProjectHotel/Repositories/Implementations/AthleteRepository.cs +++ b/ProjectHotel/ProjectHotel/Repositories/Implementations/AthleteRepository.cs @@ -17,7 +17,7 @@ internal class AthleteRepository : IAthleteRepository } public Athlete ReadAthleteById(int id) { - return Athlete.CreateEntity(0, string.Empty, string.Empty,string.Empty); + return Athlete.CreateEntity(0, string.Empty, string.Empty,string.Empty, Entities.Enums.Sport.None, Entities.Enums.AthleteClass.None); } public IEnumerable ReadAthletes() { diff --git a/ProjectHotel/ProjectHotel/Repositories/Implementations/CleaningRoomRepository.cs b/ProjectHotel/ProjectHotel/Repositories/Implementations/CleaningRoomRepository.cs index f0f4415..71713ea 100644 --- a/ProjectHotel/ProjectHotel/Repositories/Implementations/CleaningRoomRepository.cs +++ b/ProjectHotel/ProjectHotel/Repositories/Implementations/CleaningRoomRepository.cs @@ -7,18 +7,18 @@ using System.Threading.Tasks; namespace ProjectHotel.Repositories.Implementations; -internal class CleaningRoomRepository +internal class CleaningRoomRepository : ICleaningRoomRepository { - IEnumerable ReadCleaningRoom(int? id = null, int? roomId = null, int? athleteId = null) + public IEnumerable ReadCleaningRooms(int? id = null, int? roomId = null) { return []; } - void CreateCleaningRoom(CleaningRoom cleaningRoom) + public void CreateCleaningRoom(CleaningRoom cleaningRoom) { } - AthletePlacingAthlete ReadAthleteById(int id) + public CleaningRoom ReadCleaningRoomById(int id) { - return AthletePlacingAthlete.CreateElement(0, 0, 0); + return CleaningRoom.CreateOperation(0, 0); } } diff --git a/ProjectHotel/ProjectHotel/Repositories/Implementations/PlacingAthleteRepository.cs b/ProjectHotel/ProjectHotel/Repositories/Implementations/PlacingAthleteRepository.cs index 60773f0..af90ecd 100644 --- a/ProjectHotel/ProjectHotel/Repositories/Implementations/PlacingAthleteRepository.cs +++ b/ProjectHotel/ProjectHotel/Repositories/Implementations/PlacingAthleteRepository.cs @@ -9,7 +9,7 @@ namespace ProjectHotel.Repositories.Implementations; internal class PlacingAthleteRepository : IPlacingAthleteRepository { - public IEnumerable ReadPlacingAthlete(DateTime? plasing = null, DateTime? unplacing = null, int? roomId = null) + public IEnumerable ReadPlacingAthlete(int? roomId = null, DateTime? placing = null) { return []; } @@ -17,8 +17,8 @@ internal class PlacingAthleteRepository : IPlacingAthleteRepository { } - public PlacingAthlete ReadPlacingAthleteById(int id) + public void DeletePlacingAthlete(int id) { - return PlacingAthlete.CreateOpeartion(0, 0, DateTime.Now); + } } diff --git a/ProjectHotel/ProjectHotel/Repositories/Implementations/RoomRepository.cs b/ProjectHotel/ProjectHotel/Repositories/Implementations/RoomRepository.cs index 2ba2260..0aed54d 100644 --- a/ProjectHotel/ProjectHotel/Repositories/Implementations/RoomRepository.cs +++ b/ProjectHotel/ProjectHotel/Repositories/Implementations/RoomRepository.cs @@ -9,19 +9,19 @@ namespace ProjectHotel.Repositories.Implementations { internal class RoomRepository : IRoomRepository { - public IEnumerable ReadRooms() + public IEnumerable ReadRooms() { return []; } - public Rooms ReadRoomById(int id) + public Room ReadRoomById(int id) { - return Rooms.CreateEntity(0, 0, string.Empty, 0); + return Room.CreateEntity(0, 0, string.Empty, 0); } - public void CreateRoom(Rooms rooms) + public void CreateRoom(Room rooms) { } - public void UpdateRoom(Rooms rooms) + public void UpdateRoom(Room rooms) { } diff --git a/lab2.vpp b/lab2.vpp index 5da342e0fc875ef4fde1014a3e804bbe40026a17..bf3e8e5cf5d6ecde08ef4675f9feb8a2ac40480c 100644 GIT binary patch delta 776 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]V;{$#waVIp zI%81{6U?U-R%RKeGZtv1=AE%1&(DPG%{e9=bdI4hRdG6B!u*_h!;{NuKXqUr>0P}B zv$m`wUn^!HU+xO|^5&6uJTCQ5l!0hG(VA8U=p>L+8K9AxR|by9Tbo`6%&!wU(*x@y zYa6NzgbaF6&8ZBKMo`_nG60{XPQ3mjMKIoKR|CvC-s(n`2P_V>Q-BUM8-F(e2G~#@Yro)drm(~+tm9wvKXXrMlJzO7&Y9Xkg)4Pl(Y!i$I4axpHqi9p04Vx$ zvIsDRmAuh`YA|CFpn;l7+1ZmJLChp3SSMJORAoW`w&+DVGh$^CWp!SY;INat7TmafNqD^LRTNEKibpxm8M0Cp##l%8jm2H#Uzt_#|bgJW1we ztAt`s-mOHK7rVl|xOvQ}J33F2w#6!@Xfw6(B3Eb^HIKIaw$78}U2YXoyqOf;;0kX; z^LRTLBTtaILiQXcCw{<`j}(u12Zn82sS+dabadh z>Os*Z-@QO`9^wjJ@Rqcz*M35il8nYi-}d87R2``HRl$p!;B7x^cZw)^Igw5@Gs^{{ znOV&tno?C3k96Ak4ADm`_NEz9ITr@t@!_|3qdXvL4ma^ zO^ZwDtBir1)Bug-x*7ln(8W3V@%mzIyrzW9t5Td>F4<;H)-DuV^6@()<7!vfs$FLr z25w%OG~o46@SuH(r75hrK1W2d)>%7KtjR7JVIANK>j2kTMhC(yG`&feYcN(&{Te5I=E|C^*+OeaiZE$gApNl)C&Fl? z<`aIbMAbn7-a(XY(Sf2%Dl(FDUsve*x=uGViPK$iuD!C4k553LHwZn!T4HTa5ha&7 z5uz$rh^kyCO0FX5DlH+!#YXU=E*IZKTuG}{zG@XT9D(J0#u;ZHS2+7Lk29Q36oZ%D zIX#`$=;#Y-wcY=1hSUq#^$Yf34z!EnOg35MGC~BWT16wdUaO%=Q6^(qNuvgGgZtrN z=cRrd2F~n|)#WNqM9@gC6M;>VTIXoGt<1c7?Q|z@g0)p$Mb?rF+X$6PSNK;pkH3Av zM-JHVDH8;eFf`L>py$MGtv^EL@r)(Tc|dFMuBiw(^hiuEI-b$e%Ue>PIyK z@^M-N&B)epdn_D{dNhc>r#<@AdKqI-%HWj$qg1y3H zt5^rB1=etiDp|3}!6t5=1JOvXQw6h#NN&%h2Y3Vff|DBidaHc>y-79BvxZS@$%;iT zN^x@;h(>A_TP`bh+^PEe`KkQ_$rZb7YbZrE4)$C~uDQ7hL?gLQHL+aN*m_-nH|GH? zNL9yDXAPlPl7u`!Fljd@BDvJ=+xlS}$mt)Zs z=QTRtcZI6XI*g)9*6C>axXR4|AR5Vas$m*~!C2OqFD+MyYOO;lqDiocB6;TK_z#Wb zI#KQ`RRP{y_s_}oj8f|miYMuk7s)a=hks}!*Li{`(oFiiJe|q@`c$I>D_6SU&G#T* z|GJ@OFh!bdut@&7IsQWg+&2afg>an)Wq)XPB!Rucsy2iU^uAF@W{e1jYV67H<)DEPPMyz>m z-v7`@uIsd&^yBZd{Cs_V0)xmt%V-UtNRuuPk^GP1v>Jd$a-FopERT!-KUb!DHvj); zFgG`_%kL#u%bu31B$48=qEg`tg17h|^R^P-<7cqD1V{h>!1;d?RfOc)y_Rmga68|R zMsmFf?TZ4DV8^1qBLscc?^HI)(Ft*%!fo9PjpTYZ>kfP9tGO&g2Y5GWHzm)SLZgZl zF1IBvG?MF7xh~Rh<`|$>t5xLv3Tv@7nW9P##7M5Wohe2mxlR=vN&)LMIb373fd$q?s&dH%R-~S|U5h{?xn8-UDRmFp)c2#!q#B^|4N&{k?dB&?T**nV zg+6X@J7JDSa-C~p*r;NC)LCx&nh0^XTGSqp65Aoxq&PSZ2z3 zeA?_2SfYQ)y)I^wnMA#r5YpWB&mG*YvO*VS^8#**KtR>R$bTz%ccp5&Ic zYKW&@g*mls2PH6DM^H*Yo{vXpaXToEMru}BB%1Ox#dQWWr@ou(_6az^;;mBqle6L? zYZOJBJc@-d;C450jSB|4J^tbK4&fvh5MfdVgKkJ_1Fi5G;_2h3 z_VM#0kL(z%krd(Q7<8W73u*}A!e$XpG(AbaMb-$4FH;3`dp!-|+l<%KK<5@xtbKxn z;rw4o%)^LzZmpE=ioRe4AVeB3Nfl>`o)sDdRs0%WE#`--a22e5+aECydq@@1cnB5H zY_;q#PRk@{B-fQ9+?Z1acf!d5AWW03FV=zWV)9>&Hi-r&Vpy7lzsf(zR|Q{801lw+ zQ!dhj0YW6)753qemwmWNQ_<+#YvBALM~e)8}WfdXMeC-1b#DT0e z&uaUSr=sTn`U1^3tA=V$6Jc`-r!^-Hw<{NDBo1XfTCb}x4@npm7YFp9{&H=IDJNea zud(Pt%gmrDna#jhFle%kV2o+}h$MHV3h)o`C670otPNmBx0;>D>wp^+XV{g50k zV=LD?MRwXoYZgVDTx&)c1i3;x$aUIqmlv$9m+MSsZuQKSuy25`w|7w8KH0MrWpa5A zq0H@81{%qA%HU?vlV)6L9ZNB;WN6ylZe}2in{zY6p@PGVMMY)B`kW_L+vV0V6nFAY zB|?MS{R}jc>$UAz)k)y0pgu=mqG|MrumEqadhW37QD%LHVouJG5fa=kY@m@`XC4A} zf~(AWGr5OE9u($qlYu+&K(#8+KaiXrl~^+=;^YB;WP^m;#SJvlVQv8&F37h*W{TrMck{K>wb%E&@Qs3Q>@8(5<-C6RSq=LV`I&!uA4^KVojq6 zlQ-j$ymPz9fktXRVQ9lW{yO$o2LuHMfKvk#tVZi-iZ^MdAQZegnJH+b$HV)v*0KX- zy>%2tnLONr|uE-A4%7^CJ(Pa9a;XBRvMjA!aj}wQ;!{;KOzK-+^^$ zjol{-jr15;M}Qjdt2F1<^n@ zl2&t#-PZ^?-$itu+Zr+&=`j=_aG+7B%QqUd99m1$^~P;9W;>ff6(PcaxqmYW#G(57!aPp#w71P>us@o`cnn7pAZO+Q0ltB@ zip8YU6g6g%xxl)#hVq5V*rvH1`axJX!xyUE zjtbM1fISrhhx6nvkT%v({v~V3S;h!@N5<{+4;tw)R5jP*1TIjXSY!7nNseAf?zx=< zLL)r}%HYC=l_SPM#$>G+vUEpl2u{#wc8#iM7b2}@7MtThOoLFYb zF%~s?RLF%%60l0>o_!H3li9{c12vVR6VJW@EF>mKi9J{qUWB=wmwhWcD|;yKAor6e z%0gsgWEGM#;XT;_>*9=svEbe@?vT@fn#ST;+1Nc_2CtfEqU zO(K=_k}i^Nl>R6@$oJ;Q@^krC{#*PF`~!;Ficb`~6z8PZWinZB$up92@RH$h$w!i% ziarXt{D%Cne3Seg`4o8p|9k!#{#^cezJ?#kf12Ndcbj*Nx0Sbq_ad*Dm%R`j z1@T&FVmA0AE?}J)SH7^*pg>tfXFBrK1aqvj?4on*qF>oX=h;OU*+m!FMZd9&F0qTQ zvWu>;i!QT^erFfmR6N22N$m1J*hPP_i|(_F{$>|FU>7}P7d>JX;TWq3`;J|-n_aYr zUGzP>XfLY>cVic|U>CJy7d^!;YQ-*U%`R%gD#CtY7oB1kon#lCU>E(&E;`OGI>s(K z$}akeU37$9beLWABfIDjyXYXh=m5KDKf7ojyXXg25w2tvVb|D2*V#ok*hQz=MZ4HV z-?EE#vWs@Gi?*|izF`-A%`Wg})o{7q7>(Mz0jBO^3 z7AP|Ujnvfjocbf#q4Dvf^=1ycEGn+94Z(#}c)BOI#*5;a3Tqh2GQ39E_`_>xq-ODq z*J+9y^YkCUnWitevjN>bPO$1~JSnEh3{2x(VH(#grV))_Mdi#><)`ukZ#Y1rg*5{x zqND>3q;_ImAsX8(qH%hT8%Lb!`hXiL;7T5(n^*HRMVGuMg3yg|g>Fo<=)&VSjouu0 zg=&6He~K!3$rzy;?F!ZCW>HPmfW6?q?!7=5`qpjnpif)U7q(id3J|cx&ZK z*x{B#eoaq`GuaO#+2?ls6^+y^&fHIYa<5=po3+&RptzF9-hJu)F!Oy+)DT7^xy}`A zQ(IE2N_6n075Lu?n#T8UIaBuW4h#wivbm$lukoOGlXZ+x;P&1Z8p(CuQ3fM$ZEk8* zoqaf8>2=^bzJ_}8s}}ZD7(LtB-0q*EkzD6$Ka)Vap$2_ia5;y!RuHfAZVJvf%Adin;^*+=`D%W5@eksS;w9qg;!1J0 zI8LmV92R#M%f#m-`I2PGV97+;FS74sYh`cCUX)p6S+W?JpRB7)Ed4|Jvvh}amGn*N zWYKM@QJRU5lgz;n@J{e{@>cT}@TTyLybN9#&yz0^?G=3{S}b~1R4MsVlr4%A1&G{5 zQsFJ(Ny%m5w{j2R8sS^QslpP)3`q+`wL+&zQVde`RzF{U zAHgT!*N}9pBn&B}<3S8)8Xm}ij>gpt=qNmZ0ZqmI8PF8mPjn7zl}9fI7;rQV(qv#8 z8PIg>a|T}3QV1exhCa>kc?~|80nNk*F`yZEFhr3o1~d;R7|>iChp495 zvC4Fr_$CH411C!X37d|8&JZ>Y|BL}0jcZwnP7oz|+- z%}k)F4NNtSUKbYp2L{xP?`1$u`1cHGDZYmREx~t_Xr5!~=Ie>RFt>;e6`98XM&vSp z;X0V;=nBU~3rY!6c}JH!R#~nIze|Q4=@?dDL3ooWtr|31Y%2qrgMGn(W@B3zPz|G0}N<6wx0nl!}c+t7L2T*96GyP{3Z;WL#s?}IX;sCEyG`9KrQ$T2GopC zXFyH(s|;u<{t5$Hg1-zaE{9eQ8AT%)KtmLapG{|0f&WdSwD{QuT*QDD;zCJptYx8N zDZpS^mDRe4cxsHvi6@K@MP7Ri!WJ>0Uf4S@r54y^=tZLRZY7y;BT>4J#uEcz7BXlhkTEit0ZbytGlW0S(38V?aZ&#Ux7q zS{m^zL^X7DG%;36U~MxDd8vi*Md4l{;BTZZofr?p=484qdagw2g6CXiu` zw6L*6vg{6)UK~wBBZxSF4k)0bA;bunLLm(;2qeNGYNVq9L@2BZ#Jus#WB`3LVEin4 zf8|RIBT>5EdlRHBl|`%doP0ct3`)-_l9v}(A z_mwz?Vfi*G0w6(<78Uc9D3KCHQlcc=kwIb!f&>8y2PsNnTmrNmC(i90&ef!C(%kpe zBu(4Djhmxw(p>$U9!YcePn)Yvn>5$|W){2HnVkU!z=DJt(_awb&4GDu-psst^Nt4@ z!1?DefODG+VDQ-t;OPqt;HmQr;K>a%Q0jO*Cw&n@j@=t4272mf0JW!pM|z;9hw}Y7 zZ^1GR1>LY*fqsjEp0ixefUa9EV?fs|molJf%OwnG%Hl-BjgixR_6i1Y^>Q#FSXm*k zJv|gcH7VfWJOel|X9S))6NEmmrQ-6>N?1OopeLjcqw!PF8824Cu7<0S0tR zdOrhtOnM(0Zj_+Q>{6T0Cz2hP+NwoVvDj+y z!%@v!;B0EwtrQarj*`G}5!4_eWw6b;~@kDedOXwg1dc#3(DQ+QSo?ekDP z5~~WH%NZ?-E4B%shRpW8r*5DlbfXI9GXfE*AlyJo_ErU5IYWjW50mUG=2%EKDj!|3 z?7V)jsB4`rK|qEKJ5G&R%$tyIR0*PB(;}465xtQLZM=TS%+rMf5uMFwVaIW-18Ue} zaYyJzmEbxS12@qXITQgtHW}%j&hB0mYZi=o)R5yD*1{DFF+(lfSS3iqs!gQK#TGKg zbp^U{fJix`MHR;fEH!d5Pf@y2CFoAZ<3+P}qCD?HysV25xRlZ2h-32>YRqi^&>|ah zv=T%i7ABZqh~&o;M%NE!dfo86zPYuS(X!6s$5i?PFJ$;ZH!2_7LxKr*g)!BO6p4(M zb`}S%poT4$c9w2bKCWYs#ROd0CzEnI6vszy(GyoR39TOMvl%T7E#90d1jN$N(v8Z; z8igcTgGd#lNYD@o6NeH!2(4i~(#x59)OTaNIaA{oOG!&NDj(_GR96k%g^ZS=2jBCk zi;P%|4!TkK=;rQu>6H1`pT&%pfS0vji6!8rCN@+)rs(=pty#tP|I#ld=hbcPpaGa_ zxxaZ{`X$`{pV#4OKG!C&_R~I+beXQu7EgGcQ+YOhDO^DT~#U9788sjA5VzI~RM&%)Pd-I&B%_5M$F`@`;Kf3Z(~T;@SU6#A8OWZ^Xi>-UX-u)GSk!U4QTfPX!Lp=; zwZb^-6V_(5aN{hb#lnqKNc&AdS~y`X$}S=#gXj|0hBI2EaqRs-jbAL%INhjxq-W$L zWL`-Y4XGoJs>c`T?#9;R@r)K*97hqNMlBXwoNiP;s-@=UEeGYLj22oP-x8_Oi-i`a z8<~Q#X$MkQeu5V>T1as$bx{Ks3n@-FDj!=dbFgW+`n$XRy?*Q+5XorK#PM-N4O=Xl zINhicT#@8aEooydqs7xsA(4@~1F-#tX)%j#R1vZ|5vv5nhv@#CSA3k!Xi1FlnM5HW zmSvi5WESQ#K>-&Z(FZa}lIIVg493XQQp-2ZdLVm~6vDpTx9j&4*wJvAQ_)mu!= zUce`O1gOc)*0Wl?&ox9u3I(wjI=YdGc;iQ`g<$c7xuv7Nk<}6fV7Hnip=1b&J=oEW z%tjr2$OOVFl#cvbR?7{6WgZF-v4=alk%`EQMy2HTO(T&QV^-{Bx3L~uB&0<-by14P<2sL^!<43wt`6!o|rL+u;9VaD4 zwW_A(p^qWv{!Le6VYs!HwW_qlVi46x%o>7j#QG(%6g~P=v4k9;KGE$muN;7MM@kwG zg{E8StVJaRerlv}5;KsX84nbmzo~4 zGywsQM>76Dg#cS3qAQh(Wuf^0obhiqxBg6e(%RPS{H621oj+;)^VScyzTNrH&cAnl z$@w|wXPlpO{;Bh0&JQ`?>wJgv4_ja3e4X=Et&ccg=zP?<-TEfyd1u|AJlgY!P; ztm8I^+wpYARgOy>%??}ZuUlW<`jggwYyDE|W3BIL{dnu&w0^4f>#bh}Km66!)2+j8 z&u;Cgdw=USt=5)*YxzpcpSHZM{zHN`$Pud6VcR5bmud+)`{|~YRe4^_>IQDa^BYXp~g3~bu>P&G1d62#)FOC#-}$nH2kRH zs||nA@UDhe)xFNq0l5sK4JR7zX}AO2Fuqp*>-z82f1&>4^>1!_Y1?r9iyfb;zfiwW zf2@9A{VnyE*#5`%E!*EX{@L~s+wa+4U^}NqLa?>e{nWALcz@fqZFSDe+J4#gowm=n zebhNn_gu(k@T|JAx~{q#>YA-TwSL|DS?hISXpVu5)x<#U=L;aYtJiw0sZs zV1Ry?3H=Te`fVokTL`rSB)&Zluz+V+KCKSgdFpMF@tUJ$yKEQ;YVL~zA7=G=3X5IUk(0iHC(@f|o zCiEl|I?IHfU_y^Gq0>z06cakhgdSx=k1(MVOz1chdYB14#DtD9q1eaVFmKqG+W^HL z%LZr{vtJ(*>SaPbOlT()+QEdjGog1ep?5N&cqcI6c004~txV`GOepp#H}rcGv+j*d zsEY}`mI=Lv3B|6*hB08rVFMIpKsN2A-ThD~rn9w>V z)XIcfm{5rYwfu$&{WTN%D<%|25}`4+{DN8cf0)ppA!rAAW(AdCKnCbl%(_>$+Ug|B zP4#t>)wl_o>%!KZByhFOw zf;zKq!5Bs1 z6E!_XhH_Z4UdI~OGnnI=VgB}|ZEulUEfetBpaj{XdCYnnt2ZSgkwK~%a0aEzr0=3J zOW(ntSlBcS`vxX5c-)4%m}Ukjro93BG}c(H$6!?W2gyJ-)7G02$1b3cpmSBK#|(S| zeI0Q=DAf<6e+{CK9_P!X`fl{E4)k$5`nbjUds6*P=wCOWkEc1mDb?d;a2fh~Df+ks zeK^ra8~Sjd54;Ro(7&3|haG)1p^rvTMmQVLzv|J44Sm$14{KeWWN)_oP20~G z#nJrV&HvK;+2#*IuD?f{lg;-xA87V8Kdrgm{zLoU+yC7DPWvnETlQu9ar-mvx7#mo z`c>0+oBp=xV@+>rdQsDc^`tds-L}5k`ks1w(>&xb>_O288-LpPwZ>03zQ6HxjgK^* zZM?T}q;YTKwT*QR|K9L-4S&|~_J)@?JlGIvm~QBAxV7O@$Y%KM`p?z>k@YU?RaVLN zAGUw8{iW@_w%6Dmvc+wuY(utoh|hO=M0zpe0{V_Dz2r*tPNMxW>+o8#`gbZ){+3@{(!`YMGhs73|SAD1s^>ID89%V zpg4|<0gA;z0~7}XGeFyzBg3Mjp)M934NxpP(ohL&KMc_Kv3^a7?_#L?0cKqsH^xvG z$CxodaXcCW^dqc(l>l&bT?-ap4Nxq;8lYHwH9)cWYJg(#)d0ofs{xA7Ng66)@znsu z;;R9Q#a9Cqi?0SK7GDieEWR3`SaW88VxiUm{cjf4rT=0=f69dZClmS~Oz2OT&>u6Q zKVm|E$b|lY3H^5_^xv4!?=zwQj|u%(CiHtu=)W+bUuQzU#)SSe6Z%g~=sz-{|Gw^`Y9&#FPYFMnb1!%p?|@I{y7u+f0)oeV?zIw3H=i$^b<_zA2XpJXF@;5gnpC> z{Uavyy-etPn9z4Kq3>cs-^ql&g9&{*6Z$qL^sP+jTbR&4WJ2G}guaOh{R1ZS_nFY& zV?y7^gua0Z{aq&X^-SpNn9$cUp|4>=U(JL*!Gykw34J9K`U)oWg-qxRn9#?V(C0Iu z&tpO#WkR3Jgg(NAKFowZgfu0zq=3Un(m)(Wk_O^1k~9#9k)(k*j3f=jVI*nb28ix= z(7c{cUykLRd-cUaH+? z3;$#5!R(beqmOI@sv0038$)6qUv#5V%^~vX^E6|*fz?$=3KK*o-$U_eG&mQBoK7P4 z-=YrZy#Zfm7f$JPK6|xl_wsB+f+3OwVjg~UBXdb0Y6IRSnjw{_?8SUJ zDeS%GVvju^#LWLoCqTmi$+mSi`!tmWu=gK@kC<~d-N*zYh{wk)9dU5-Ze#+|Q}Sv;PRcPc-#BFEE#!-@*#}?9UZvuV&7&z4#A1oijZDCs*z#6Z<1rvX zF&}`^r@iqtl8n(;O-LzB*wao|DuV9Ta`tkS#yH>-)n3fAlx|eyN8=$mdLkmPC;N{a zA0G#qwag3)wQ57Uxa3ieIXh>#jN+rN~qR4RG}jR@JR0^-SJFI6W7n@rD>hn<*T zDBY;kkuxR+#okE39$$>%OP-spmFy)d#@OYB8oZc)DBZ{ejKNeplomj^WJktyRrTBI6ojEQWUI@8#InZiLV>>1t2M8r`lyrTSF#&kPW ztXb177Sx-^tDob|UgiROL_GK#Wcx}^LD$^Z;zHZTtOu!wb#*W0oMJJoR zOWPMB(J0({;tBlW>2KF$myPUoD#F-PcZl4+#X{@QjZ8pTC%XtP@6sigtqa*}RphbY zM&ThAWQT5KF7m=o+NGnf#Q$58oR_ve&2e+<9%-q?-+ahE)pV-ySq*aiDckY7Y3uzK zEN-ETT={=nt641rJ9e5pOmLYjmVupaWCo!VsR($$7Znn^MC1JCvnv8~1rT%H4W}kv zSwRx#+1yq#EH4Dp(bRY(CS#8rdNZM$>9D4ox-K-^qtMT+90@O``n?_b%R5Jmor0iU z@V|IEQT+JqLY`2ld%TDAx97v5GHy$oTZwFsiawrl3Xc=zp?^XgeNS=pkFEuahIppY z_W61`J3VZl;mxh*Wc@j;m3*pa$w@yhh&A0z9BY9|M_$4ckyvOVxGLf>OcMa+z1!2p ziCDi0DMhbLD2Gixy zVA@m~41qEr5d^6qHZQNHDx*bDkJrQYliURFN1wV6VCQLyAEwHq#gsTL1oi>Q7rqgW z7tO!XMR7sltzbRtRT0NxG==!F@(@2}D&kX+C?^;T7r#Z6hI%^dQBlWpPMzG7f~eEY zOhp~JlgEo^&nXS@RJIc#-UDYo)__tN9L*sPd*}W>>IDR9A!jW?DK2kp3qAAnM!gVRzq2h`ob5giYl!NO;`M7EiTn7^I^s2xe zQ5Y6SC+Pu?#Ujk-bx$Zma{M za5+>C0S=i!fLVwPKN*}~4u*@WfVzY;9CUd*15g=B?{^f!daN9*$4tO_SdK>4*eh2D%SYcOU?Dca#$Pu6 zOXHJ`Z*P2YW4iHl<1-ugG};?}(D22Ek2Jgv{Pe>O;|-pMtH4VC>-C?ke_Q>F>QnWn z>i5^*RNrL#ciR_iAGW>Lwq;we9kz7>ickGLMS-U%AVPub>UylqZO-yqe$i|AMX%-; zJ;5(}6~E|}{GwOzi(bwzdYoVMGJerZ`9&|`7rmHY^df%I3;9Ja;1@l{FM2+|=z092 zNBKq1*`Y<|%Ne$jb;(FVWh z9KUFtU$n+AO7n|S{GuekD8Vl}%P(5x7sdHSF@DhszbMKtTILtY{Gt%QXr5m*$1e)< ziyq(?o#7Wfi(hmFPh{R z9px7t;TKKti^lmyhxtW^_(fy?%@|blV7x- zU)0Yp+Q%=tn_tw&FY4tN1^7ih{31WUsGDEZ#V_*li@f|I55K6BU$mEB)WI)m=NH|@ zFIwUkMfgRF{Gu?wXu;9&c?i?cCRqm>eo;43|3+J~?W>M=w?5i(y4i1OYnrzW)m?7+ zf%Hk~)s~luTpbG6$=sO58I9mQJUfc2%A_VyHMSUu$}6@frFS7k%-vv8iX&=Ik#$w` zX{aknP1xT6b$bMLyGT}54OmdO@ZvQJR)I{V`(kEq7N>nc9bwZSFWHf5)>o_}x|vS> zLpMeG`*~!Q!+1<59_$xj)JK9Va=#m5S4QL53<$xdBj@FQ5BMDDEK>(3Ce)02pd$t2 zRCwP@6w@AcqdxFULT-%c*9M}Ia10TxKW|4c5{jgd@~wXc6iAt-EY2;DNQU1zS4fhn zfstvvX%h#!nIOr$e!t>z!FmKKg=DjlguD=quM53~vn{MPGwv+TUyW#S5b+^}lp6cK zL|Uu}(!$?EzQLBwJ`hV9r_U|MFPm`y}&ZSSoPB*OzWp$2BlIX^q09Qi}P!vQ~VGDOp#l@Klfl*jGT0{ohB!&&l8cPfX_e5 zI$c0q=WJuvS4%e`u4`| z^^3gEO1>sKr>xkHvc3JrtP3$5Mafb1RGLah<(Z9DnT}l#nh!aFG#^R2WuH4==I*2W zLB|3^P72A%`9x$Dg^TESqu)%rQj5WqYd#@E5>i*twHlGULkgS(O_`BC zH&vlx@}v@xa9B>blJONFlA>6M0PWJT5Q47C^O1$fylXxl1FaGaEm@44xTJAqu?u>8 z`%T$>4AKl2BMn?k!Im%>iKS?=4EMQph2@cC8Uhbs?PHE@AQ%CVWq|gO^U12B$ zNNyydwkw`+MN&YkButfSCAi^Ql@o}E%B2yQ^o11mxjKUl87cM{Dn=t@Oq`?}^|>+F z9J&M(vI{IafhKccnT@G4mrlZ+Hd&lAID2x|lAT9bKT~o%gcl8kz#xq^Qc(aO$O*b4 z+G4qt(Y`UX7>S1ZZ)>*O_Ziw!fT8_&xtR5+-D+5{-iTnmQNel#_BY#ahmD)D6&AWO za+l`~**P=`=+qlT%abCw$A5e*eRS)L~0ZZ->Bof_hr-?L;clatX(kpXetrtGs+O5s}#MX5k}lnU%Lr69$xSZJRz$#h%xew9o!X!EAX)Kear zda6$*boIywh5?_?2ncx~K^=*wifYM=(2DIxvI*27HM#UXjYBKCS`pfmcr16bBYL49KVBQ)*&zs%*?Rm34T zN>9t)BVAs9v*mi_>y4oEzuac)nLIo_(77^jd|(Jd<}b`mr{HcDPrcsD z5OHpn_GYkq^bncjEqp)**)uYaMU7c`4*$Ql5z>|W+=eRdK79{}Tnx+#2yua4cGmaJ zEq6AFM(%?bAne;XPmX+Hc653k?v{y2TpKT41@SebS~;WStiY{jWD{tVdtsFLmNP+) zQXU>0kH?qOtJ)ap3TTXmN<~MQ-J4y;zuSKOLkAJlpC&|;g~R0bGZPF`qW-~QxD6xS z6y31Tt(L(3gV@8M6ErU1>?qiQ%*65C<3cz2!{dGK!N~)__v^t8w2%^@jleO>P*XdL zIqdcV>;Wbhz~gE=J(t_FayrlK%_j^&B(zsX|rqV_~$W7f+%v_oc zqbYkz$)q>wc}mH|yTxXG*%f7pU;WStw8Tfrl{RTuo%9kPSwj|RRI5HW28%6jsxbru z7@Wj504s7R0*gG?l?lrn?XTr7bBK^q#xn0JXPI-30o^j+_GF{VwB7Uw7DuQJa-!(8 z>9U2>ZTsB1La`~Nx&SZt!O6*ZJX-b58LOP=;OhyL!8APCt>_U} z_-p`S_wn3up1oyfk8|GX8OZL*E-7QW@}WM)n8u1S@=P$fOotcxea*mLGOjy;~2adF3RZPa6TAyq4%FOY;EXq zC>RaL6Oq*7O7XW5jsgt%|1UP)Dmnk3^GnW8IN#!Ysq@*+1?QymZs#o!6Yv*p-){R{ z+aI<4e%lM$*4u(@han=s4Q=+ump9$pwAb;Uj;}TTS>vq`9pL?r*Et?>oORsm7;$tu zu5;L0f6)4WTmMhv-?hH8^;MAfFV=dhb-3~0n_k!2(RyvGt>uR;Uv2q|mUp$hswLAB zZ8_0$Pve74BQ1BdT-hQue;=X-{7Lg$n_mXe3Bt|Cn(uDxZ@#tZk)~^#FSY-|{%!l` z>>stisj1HXBKwAY-acXPvESGjv9~n+wCQV2pKf|TL<^X1I*b0}Yb%~Ad5Qv0QQ#>G zJVk-uVhX^icU5}g#MH=ys+NuftZP7!yHW?w>Y+(%5@r5LuEc}06DtP>&JL~*9E(m^ zGYGn#JgZY|FE3cb2zq{kfXdbd1l@=e&W+mLY=OW4+-Zjzrj$V)A^&8P6qUd1uwKUvhIWhFEk1|ZfR%qaM*Ge z1A54ECj&ZWxdS1wMoigB-;E5Q*Tn#OZeRdA@j_1%Q!aN}zJjWz3A|3v;%s9S@WeW! z=5d@PnW{OHX4ITcF@RHeYfcfr9!yGqgJ?oQ6B15SNkPv_f5oV~Dt(p#jZ2?FLr4)+ zo$a{{RZS9P3B@fq3mpZGS#TCQ3c6y!S?DNe)Pl3nQP5=z&O%2)mn;u4#t^Y=qv0kA z;+$F@WdN5(Q2PW?b56G4ti2R8q-5=-p!3qN89mHNzhXdx(k~g%(-O|wOZ9t7!dZK% zxVgtIA3{A)&>71I8PI9V2N=*P%ljG7W0v9r2Wf>duAk(`TdPqw)% zBi37fizUKxQQx{hn?mX+^q`Nua_BdD{d2tGwVtjl^q?QsnFt``_kM;IfTpD+9Kj1{ z#RI(@$M#q3%cc>6H%d3XqZz54{p3Nom^aQy$Y;~wN{>7j=t_NVT_J7IkqUyDcnH5r zLrQ~4Ofd%Uzi^cNr3g}o!lSpbuBJdm`Z=8;uAS~;3Dn*4xfG`x+}du3;lMERX!Y-- zvDpvgg+HFE9t=^GM{8V%vPA(HGJWY+-qE2CzG+IY2fw313x>`SparJ07iTEYTI%1x z0l2w|AA{@{WRk+m;2kl%%fzWEf`CJJE;$C9@pg)13KPZSR`{`6T+%^u3B;sWhV&7I z`Na4}0(@teW9b!$-iw?)@N!RLn-wTw#qSm7OkJp*{XEALw(dxo|;DY`@41_*r|S=gA6!Me?4`VYi{(T!vznJ4tH zyrOu;pxMfU$71Mhf`rY0LyNom(}4|vU}AS^ItIyQ06|9*5%hG*Jd$!dL#fN)AY|^z z(|Q7|I?^lo@8j|H9UwD)Q{O!@FOp;ir`sgF)}@o?5*jRVSK~=JlqW7^981L4^pGie z2{>I30l7d>8tTo^J(YYif>jT5%>MxV-+;One%LFjPyD@7M zEVvhATO-Cw+1!N9y{M37*!m0a>6kiC zoOkEEaFF~F@RU{uc{CA*yqxE;KpF zp4|@C9da0wxWqz4JU}EhhXxXf_&N^vm$Q>fqA?Sfd(?qGB%s}%Tnw(t<1*+ALjC)? zNv1p7w?tw!xQ8OqkaEkNlf#i1{qu8>ctjbhml`X73Hv%bm9Z-n$R#OMvUAxX4kA!5 zky4``;An@rtlLPs=U$Sb*W4x9a1JO0q2nfUF4F~$nXa5blt)_2p9=HIIJeaM^@Wop ziNU-`m~n7wUxhPkoo^^CN6qIOMOR`r-{h_nHOMzUl5dcaW^PyHZ8+occ_p~S#lbQZ zf(OlK86=pgo2_|UO>QUHQI_!pIJ*WX3%1!Ccopxp(RLEn}eD29z%yyJ}e4fr;1)D+#)c|Rg0qN+9Z8+2Mg_Mch zLk(d3V&)zX3T|LN_h9!3rlyk>>sZ|_C=szlF(=^j`Z}>&tJ)v=l8{qXURWpj2fRv( z@ehho4Pk&nCi2iRau7!@Y96YJsO-tT6zuE{6bPV8GF}sf_MkCx`oOoX7!PR|F1S3b zpaTqoOI31&Q6reVs2K<=)pEB@qW}aq@F_=Kztjjfa_4o;QRxQzyBa&B?>99!EY$vdZ*uK5!b{8u>MAQPtdijLwi4 zQj(I$*X!YgI@mt4eFauOw0A!jN2>222O88cp|8m*4?+q?m-l9(K z3Tk8YxQ#>S>$D5Ti@BkD+GaB6cta1h&(M%I!4z(Ik|a;492cJ4Y^*o?JN%L|%uaTnn(`sed1(EE?WJ^%Pb%Pi^)Y3Md*y zr3GWf=QLT0t&0{+UL7bNCq7*Y=$?8##SfqXQYE?A=hjjx_f3nEf$AhubuwsUtc(Oo z=!S(z6oRv0WKo8XlDA)u4bj%%_SMQ!a(xCVe;~wjaE|0ks(XlR zo!q`$!NHfg3gO@-m(FPh4)k$20U}CRQ5M6J2Y>zW2Hi`an^CE{m_fSdnQfdz$Jf3$ za~Z;o-gz0g(epDU!vm+Hu~+O9=sx<~hAP#@3o!XBJZF;loH5A1lXKMR<2)&D^=)6K z@ZXh6PNV}Q|D9sY5zT*7V6Q+ogK5E542+ z#S%);|B13rO{$aGsuQ7vQ?n2Wlv6YRRA?0D>B;J&??F77+|ZC- zxWWzT?JFnDS9;bXx@h8EQQ_WzPR-E4sFT>-n%j0Ndu_k+T78OS@+rn{*jcnUM7Lh{YRUBw|Toc(tM=Z*L;orSN3n%|I+>r z`%CO=_IvI3*l)HsH~p~bpPK%l>G7uRrm^}jG$opztpC^gKd=8l{hR7vQU6H&x%x=` z>H5R<`|8{4pHc6umux?_eZ%%e+h5o|XnV8mmA2>FHf&3_du`*kep`p_2HPbzOWjZE zzFGIBx=+@9sO}HzURC#K-TAuZy8G%T>h{;|t#j2~T4%NXhxJ?5FI%6qe%SgJ>l4=J zSua?l*88nTtk1M|T5q&o*3{K>U6a)KoyNavd|%_M8lTe`YCP1~*?3jMFB`tm@TrD( zH9X#MzTts}(T2MkF021p)2XHppo7Qo_cY*LWal*+iAM2M;Fx=sMX1Oritvk;v?9ar zAONSsN`K2R_+|cYAu|rnFjm^?Zm?t6C}2l=&~{CXGp^-l8Z9pu;B$*;GOUvDM9-a>xeLw>!9{OTsZ-bj9RkzcPRzg|Or zy@LFD$yIfGtp;NzYa3b1acy09ew9ORf@OIz9tE2uYb&>;g!=v zNjme$*;I2zvPzuf?M)G+>)PjOMb>J`R^<0?#%O! z5=qtaU(UK4f$h|wzLuX}Q|GfX!n|7kkox|EOY3g6%uWxF zYxaGYT~+6?U|*8yTs{%3U-6@g>cNgPuPpF0A-{)T^lpC9yZA-#jSQr3GNztwB` zMX%u(y_#S21i$E2{GwO#i(bJmdO5%7aemRu_(d<}7rlgE^kRO|i}*z^ZRl;Ia`@r!n~)~!h`U#?rT|4-u! zAr-)0`!fK@`)m54qQX7!{A*B^Au>czNV_@mRJb}>Gq1Cyd&%o;nbk{F()!6U%DVSW z)ihsJQA>5TP+UhzqgJA#R(;@923k~C>s8FojOr}S-}}M}NsVxyTW2>cN(ZWw#j4Xm z8)Ic8Fy)046WK`O&FAjlzC~FaXI_Mp$&8Ssp4Aq|i|^fbD>aY30l&3zJz==ZNPTAm zAvot5lQSBiyV9*CZkrMp)D-zh4ryF;$y~)>JJahxzUQIakw&U8G6GGL2ShU)RaPEsa6UNdOpA!&24tVd(2 zld-CkL;TUW;5J%aLFCr$8x`?Fei1fPS|LasKCcNPJn=#mJ6-6+NV*`DfonJs0b9jn zUTCK~%?lbLtxFU+yd(ylVDW{=Q^Lxjy6_Zd6&gdOg|KmAZiGeGihx;Snnd4Qro=^c zI4vzxC)|f%2t7YfpKR+_y0P}u+;qK#;|3$ajapv z{xx+!ulqUg`d>Tnhwt8QS2nqOpAQKN!J3SWVSJ+KCZ{{|A;3WHD9-P1bbtB%jcWMV z4ci^cNJd_X&A{ns%0)*qBhN3!zyc(^k^gzRll;%KYL~d3o+W8DSC$fh>SVt7Vxn;> zaYHRZ36P7Buo4f+QN7K6UJv3YNf1K5C?!g%R2Op936L9M(G$g69Q_p%eK7hzBB$2l z35aDSd~2cl5HRTlkSsD= z`GuD1@nms+p%3N~PZ8bet)2R&Y$wwsZBCW7e5g)NSDhRe!}59FiS4@-3G2Y)SYLjM zB=tm52@A452VFD4L|8^aq;jfqx|h6&#jIZ9QW+t~h>|?2ZgofJkg;hArwi5B(c)Y| z<5uD#QHPovX=PihqAov9(qppnt%K_ESkcSp%Ktap^n~R6zVj>2KXbm_`Euuj&WLl` z+3&nn%m4S$wl}rCxb1vfsO?Bwpv~RZ>i93m*Bzg6e8BN~$8#MC$9;}bob|81^+&B= zZT*YZcR|j-Ol!1twso+zz4hu=OUw6LzTEOBEpKgkS<7ZixaoGJVk-0DDV^o3RB>!NP6((^2Ew;#{m2ti_ciI(BP`b z@>owE8XK@~p(IApuvedlvD=zvK>gMfg2u`GTZ5K)26VtOXN1n5u>={=UdtH(5U4v8PH|RlNfqRpW|}*xb;3XuoZ%0r-woe;NUz1I51}fo;rhhhJGQo-iUrb zN@m_%wf15t8J%;$+KQoMrqEMX%t=vVtif67Be*UJJt2LV0X;6^+-Ot}GZM~?MnR_~ zoEwdTPDwa78U;Nj;oN9ZV$NsR8W3$LV7i_GOxe(2m&tUgOV(u!CDMh6PdF1V<;I#J8i)!>S*6@ zs{_|1r#EDkF_akB@__Xqh7#kN8(c6m(d^x!@@1kn}A^zk|{@8PEag z8weU9Q`C-Ir!kbI`5DU_8PHzK?=qkP3(iLuA$#bsyaCrGmc)YBYDH5KAuv95cANoR zJdoN?w0+{ zgZ7E0(~U8(1h`;(Da8K&xaIS<>uuK;KG(M*886b%_Ov@Pr%}}fVodYLm`+!-M5WUs zbR(4bfZ31}l_sCRV{l?ZQNDoD5>oE-!-9GJoJSiw1jkT<0pN%L9td*p@dSGAhEPe# zj88>2#z1z8Ip!kBg3hl3WN}6;NZ+)znAxum?Iar78G^*~^Fl+T8GgRK zwxP^E728P$(*=dFrB+z5d~AmY(L0KHc=mL80${eVxg}@rR`JBiG^rt2Q$4n ze6u)~EH$ww%fa_#`S>1y*n36U7tN}64$LHikoXSlLSpk9{hm(bYb7${fgW$5TRAuu zGXZtV@$O8KV743*z#DwoQ$8`3j>@CKl}L0$h!i5|s?#0M^r*NlFxdMkgHrRYru&niK`8Y)S zH;u7%o7qaHQ^gvm>02YOPe+BYrW;j+^<*59WTYa&=#&g5sUg#l?hZhp=1oW2s$`X% zpaf|9spHM9uf0FJhVZ{rYX8U)w3*WmLYnQA68A^@>QcVb)%)CZ4V@8{(!_N^pJ&e) zJo5ypZAO&wgXGKd30}R^WW8Bly>7DJNnX7uS??6Do`m>VIE-&qu52cYhW*;ple3A#*>w@tSf-*7 z*eD0<4HK}YB0d&G8xUa#t&H6}k9Hz+gUa7{vVFv%Jl89PHr>bsw8>B@1+iu)>@;Ex zW<35tH#T&LXP%*AjaM~=K%g9~1Lk2}bXAvu@>1q{6=iH}NTJ+Q4$2TYx8jXVAHTtr zX~xEetC^>(*kZYa+P3{d*wT$mz;+;!iYx>nb^@%_g4nX}I|Z3~GxM|@&RHwtWbQ5p z=WY{l2AhUN5b|E8=Tqr~tP4+SHUZ9Ou2U!d*$e`7l|ulC(N{5xkFBgmW$hk3vIaL| z)8^l!Ua#O%d98{)>r&|}2Ya6h*v~>xuF2s1axh%fTv7Pk*04tQ|8>#>lJr2s+w5OL zlWy+cW24)95mj$!pLivvD*eo&sak0Lik2chxa!iy-Ea+nannXJlB7Gz2X6sMmf1q5 z3UV1#Ey;YS=3H9z4&q@ZvO>n>$cGLR4~<3j7%Lu>gGRE%C@wm><;M#}6N~)G9FiKJ&ZKOcu91tacW34vu zR~8rJ<>294wy|m64ej?oUwJto$G=|mB+=duK#ForM8XLrI=$A8e%a5TD8*Wqc(NQJ zM}Dr)t!g90&l0MSjpDOMqo=fByd&7{_%NK=Se5(TEQLvty%V`|6+S*fBmvID(Fzg9 z52a)CDWpyorvlYcXVs~ojj{MCT8Iqh93kiz7%Szm+qSXk?hWmyUbzQ}bF?Xn#_@$@ zE)??}iJq>U?3oXnM|YQBCrI+*w<~d#ERjqCG0#h1B~%{*0ncgVc5#)=kOY96RGF*f zJlT;z)bk3dVA3j4WX*AM^nQ>vK~*ijM^Np1itiB>VxQBbSG-Hkk%)tSOursWpa9iT zZ`CP4U0Exp#6gl09c5iNVq_<0s!oLxt{b~{R>0|SI22ik$f23Yirnw%@%9Efy@7zY zy9=IS;TUHh+c-Wo=I%Q=Jv<#jx*H@)per}}TU{9kW!6Mo z`PF{6`jfp~zAg_^>nN25(y7IG0*bx9Ja8x>!>bKMR+RB*wYGS;YBi=rQ-}r2$MsO3 z8-*P3cMV2j!2~3H`d^RnVZa!!mvRuKw2KE>h!%j^$|x)$a89WKtUN=q@;D&70Zzg@ zi>bd7MlKW6i9UA-xkK+PrahHlir(tbU$HqoPtGZXVMdsu{o}U)+oOOj`1G#?qrU~n zf_Gsko<^}6E+RHY?^GgeJWjIlF~BvgC@^*y+dw6YwoGgxHqJsc9)yVLJ9_5q2CCrw z9Uczuv?#F~n1YXgcp@H4EnZBsiVO!tmTQ7st`NjQ!FA`Swzrb?S|+*>rXzex4kmVZ zW_JTsh`xeR-3?CO4SXTs&Z2y7SMEEzfiA>TilF?gJ9_R^f@rt$>{nbap2Is7QV*{T z93L1uI}knzQL+G8ISesFb`;_6&I1v0U_HJMu?sKpH)=f2JrA&e*e1~O_?%kN*2%!4g!po3cGqvM7 z$Zl^Xf|g>qRa~+>NbXh3fN6YL-r)y>T|qV4=T66xk#I~74et2E!LDEoRoRyy?fW!*E`mI9q~kXueY<)v-jl0`1Jguyb{EF z_vWVFLK0bWiTM9_ccIPO_*Ay(X#BoptN)?Y^ql%1I$qrJ!p860K3exm>yl*vX$GG9 zD@p+%*t@{Lp{M=&Y=?BY&32gZ|2uVF7mij=48hA|IG)%@l9iUG;o4E6%+jqr8v%b@>d?wC>B zYi`VX8HCzk;ztu|A{YaG4RQsdNClpv`LZ&Jg%RHgVzGVZH}%AFO)JE@I(r*~Sm%U@ zHI_`KX_f+8V+{UZKqBvyLZaKVeTYOG6B|V5sxo)pd*p!t>3-x;LODM{(XZ- zhfnR_x9U>-U+#0Sz-b$awWs2%eXh>?-22P=xqW+A_wU=QbiEh<4jKS&14b5Y*m$kP zxyO&OrOrLu-&HsFFNCA)W%#7Z?I{$uuL;fl!QfmZMYrs8V{m~P=aA@O$9Rq%pLY(i zBc1t4Xh<{i{9+6oslpp{b1+QT$_fmQV4z%-CHKst>`H*4n=8KHf_PK8U$_gLkmjT5 z5Mt9vD(MQzYjQNciVmbCwtSC9Rw7Ecrlji|zw#YRd_ zV#ZEGNGsw8?j~D6ziQ+waC(lc0qvFLksp#vj-hx%Nwhc;GSZ(waI6Xz#zl^J$xAeV zms^QT6kD#DzeKYS9?hL;56>{R=akTT7&*5Jk$WO3*NGrxL7=wi6htH=%1d1r1FoTX zVl@t?N3!w*E;-j9c<3eN6k=;|SVUeRV0jjWWGSHvn6aE+E13goX_MYwIihgD4bR0= z4K;m9Ar8=Hh;H5I){07*a@LUpnLKZZ0h{qAAN zv=9#?u@1qe;eD;&gD$uE)Pi}B$V5B@F*#7(0(WCSHc(hWnB<0serO;HT4E$N^mA^` zThGqo>|j8x3=YN-B+^96YId+;c_EmNrpCcDoJlRZnT}d?Q$#J~VLmHI!izAlj{H59 zAXc6f)9JZ!Bms@ZMx*hfx!}5xaXR_|?6uzC-rEI%4SPA4maWY!P6LPVe-2_i3K2C8 z9E}9cEp)T0;D0oo5+VSySr;Wh=1>-=O9KLIU&A1Pnl7zG0)YLN7LSE)D#`!|1~E8B z7GQ0aQLDnpL77{!Ln=jaR#U3QVtEt=qlq1$C|b68o*RPGJQ0M9!LfOHHB}02+3S&_ zEwI}OOeu8-qbSAOsOV}WWir<6fJ*-+21hUC=uaON^f62Q3fL!U^rxGOo-%pL&PEb4 z_fZJRfP(s zW1q2SpQ-Y|Rfq>DG(zQJ4>pOSJOHu+EG33MCC>xH`cUXYpoNUdsoeh+6&)zCE8y$y z?(uLQM1d7>0&OIBvRFY)piOf%y&xzWf>o+0F$Co9QVx3xc@HgdkPBfwi&JVN>=O)D zP*ZA`h`m0kHr=%J?O<|bYGwxFT$MWSumg1aJt&qs>#1@pk;VD75$ZVPB{hR;er4{Vk*5&gZcG46^^7l$=+#xg3Gkqb;HOZ%HRD`>nUzKV5gV zt+D9~jZZfGwe4q6t)#!Lxy%CEQ&2eIan!Pl*il1b@!RP}x7hhzEX@W}U$q#+ac!z3{Y-qg#hFVHL|03@pV$@>5ujmXGDgX{lYhHbwUSD@7PCpRMEUDN& zz`%B_9Bd&nhIR&!WGc$OFtJAyM^_=WL@J&zjgLKDJ+LQ&R%UZ+C9|yJi}RjR6LqK@ zd?7kU1^AvkI#or4n?EZ3n~Lxhn&1&~e-cadN;fJW;mL_4ln~2_Y_~8#U5yJNPR%exKdE5(!Y`tP^OHgF?-oIL zK|Rm$q3-Q(*H~ESNY-uL$xKvb0-T6|LhEojw1BWT70{y8#MQ!_@9}s#y*=F^@Sz<% zqN2^(!4H;$_Q8tKhG=zF+`)m(--ZzeeMpMI^Xy%XVuq4a<&+^mZf=D$A$4l7lz56f zYs3=X(2dHUnkh)12A;1FC#BfJEL|X$GxI8{_*jjTs16EoA>F8aREL7mC|HXXMKrH| z&|im*=W70_31#L~M6uqI8uLIohz^vGXbI{@FHee}sFlC1ecOIC2fp^Jx6Y$M9U}7( zuZ#?!x3bkZL@WU6z||;x3#+CYNc3?kB%RaT*ld zp^S-UlH@ocR@iua9;*yWi1AEya-w*2V;U``1w)I@&Ih245#+Bz(RFi2B-;m5%_kEe zNdQ5$hUK-$Je<Ts}6KM)mo>htZ zjiuVaUmr7o5SkoqA<1fazf|`{%lq3xjlqT&)xXpBxw_xf?X}+ToNRmC@rBl3x87k5 zSzahT3IEmTU(>hhaOTPzq@m1ZXpBqbOs6!_Pt7W*%L?oQuY6?lPq)d7d5p@Gh{uqc z3anP2ho>}{+Qv30KB+(BLU_rka*WMYd$8nV2*I3!RAYAMw6 zd41@9@&w>CpojqOjUjmfbaKe1PRSuf?80N@IN?o2%{A{jI=2K$=@O(Js;}|l%Z$cO zX~CE{wz#VfH8;}YXC2a=^EPC2&N{Yse)Hvy?K>3y7<&u$oEQ$DogU~^179wBi}D9V z@=;t{AXG)3J?L)o?7^;IB6rM?qlC<SCno#1Pgw72jCTkm!Te>GVc2 zC9k-q;|r;E@Y^rp%%%D|P<1*eL)AuV20ILp(kYm}Xo?N-)j@SKR&_#XW2}q>RTW4j z$?{q(kV*$K*uUfyN$LqrAXRT?_`ads#q;tf-6}7CGOJVKCqvLLa6|KUB41^t4RK$F z>(=KLTn=XnU%m)j2G!)<8mjblgu=$yphA4uMunRW>$KD=%}TcCH$KwvX#HbtzmjGx zCmr>zO)ZY*tL#s=_16tsr`uYfS}A{9U_*h(1m^!)D{8nz1e%%?GmNJjm2W|z`RwOk zY~a!Y=G02UVVG+^GkEDt(M?9Z zDPaxd=01Zh5ywf?r$O*Tw|&wCp7s==8<~JQ{H{p6299T#(HP9%?e~E#)#g@uE2$!k z&5qBL2u}$iOgAzCVfCh@lPC+$HG7XJfOujnp&}kdOitl&tR%!?&rnV3n0tnpNgcIk zRA5qv+|0&s2d7^M(TeQ*( zhi+6pAF*66hZDi|;x>1fB*xP-PbF;RjZ6#!U7lXWe);^CW+aQ_oltm)8OhR(%tc<% z-&7d;Zf|$5&kNq)a9VC@cC*;xkU~VvZkBFTKK7z6mcpn8dc1+|05Vi>vr=~3)Tr6Z zoUT+VYK8Va4icMNYg?*UMFv}#Q^&EGR|Vau)RE_1pfw>z-PiR>r9ub_%P-oAmfRwJ zC@3Vvd?@HfCSq=`?4qH)zNLA=v4l1;FE|SA3cTR73D;?d%*DJn;Op$lojsbvBR+d5 zEW{ih=|(2ZxDIuYCPa*&g}GgiyyiQ@LSD>whC;pq-x+P*^S2eVanIjWKy3R37UH&I zTWM9A3n6Ka62WJLq&d2g2`qq2{n1UWnDu+zJTBFN51#mw^ilYX!^`y-J53^Y${cK z3~&f1cvJQYM=*2CWngkAxuRGIiEn_0V1X#!Z{(U zqtpc_v)jS1cOa37uj5#P=!ylDz($M|CGxSX6y>eXP_*A@w;Ui5oZb^50W*r~aZZM) z*YwZl2?~Ce#8~-K1UOitxDqfMm;ywMKsy9kTq%=_yt#DuJIY1fzTPfRkAe^5nqpVY zQa4DNf>~;bT%@UIcZi2d4qc@|ihsujl&5f)0gUkZSY+#?KGTVXpnw*G1L_669A_p3D$J9!U ztx1E`=C*WV6~0 zL6BAt!oMITZEfyD1}>s7_L|Q{$c2idNhE7g=@}> z$2{$jr?bEfzXJZLWvS;J$v=TS|4hfDO8PE%^+3rBh|{aq_ntu#E&rY=63}D*-c#U4 zRsrwq#uZES3V(>CDFic9_nv~hQ@cBkfomuXdrjvWY?omEiG|Zw)~MWbn&6s6Fvb+( z8ofv54n3UF`kTTJX$IyY5e=U)pLwbwG(+@Qxc?uow#d_^{6PNI8G`!?KEQU93^XLj zK#&LwGK54STW)QNI|lxt@EkOsf2#2q2H}Tyfp`3VU!b?R1;{ALIwOLtqq8^D`Hj|~ z0f>QzD1?X2=b@@xxvFnQ#MpmS(?7UD7J5;Qk~{?IDum82Jr50mWlTI)vln**7f~pW zn$JbmP&a!#Rlj(Z&qW@Riy#e%5Es?fJD7n{D69@Dj6%y%Cf?XR1#VqCWjo~YR9#Wc z;Iray@&`#4gVYTwi=i8s>z4d8yi3bGOkDD7Sw$Tpkvp`9!uGJ~dz25kZJB;m^H%+; z#^4=MN&6&8P_3(p3|vHEJYhZ;Rprj+tGWSN1za>qa?xbTTvWRXBLn|XxE?j1 zf2yLQ_7PTPaQ{C6rtFZoJ10P)1Kb4D{R(*K49P=NCG${?o17UKX@NxenE8xUKyoTy zU+vosQAqSS8zZ9IEb9F~G~Ey(0M)w6=opF6^qzGRV7kADr>iO|qpsaJz64c9og_&i z47VypYtQu9y5uM#bVV(<~ZsO&w3k69qU83%)`jZ*s923+XB}p1X zJo8eRNee|*gPKPJ_fV+jLeHDXJ>6B2q`RtaGQ{8>&GoW~>M=mF55$5mg?(yEcVu7~ z3b|aE{wnH@P)sJ?_OoNUqwd{!Eh(-$@{^plkmod=!8CEwX{X`9JW5AglTWlmBvzq4 z6q>T>QntS;n^gC1Y*J$WW-BC#7mG8FmNVw!U>OR*u=y-gU|TBxV&*SlpMm@TEZ!QG zXE4eoeRX9#m`qK?Ly?7u90DytkGD6_>4oQ4Ul-$S^8`9`i=fb>+EJ2imh)_bw-d#T zTH9inZmu=F@63|eMfOnW<`P1fC>;5#VUh3g=jOM1ey$7#65Dq=ND{A=1uzZ=&xF&~657n-(y@7uyY-6VLPft}I%>1=0`y3+qCz0nL z?c~xz_~LL*DTsK=4cnju^{UCe=p2dY>K+R7v*zU-Dc*i~+fX>>ob#*ra1tnB^S@&c zCxH?an&l}o8C+NV;e^gKnBT9l$oD`^fSWyPch#Du+ zX&D6=N7E|Qu&ThoI~1PXrt?m3RfMNN)$Ozyydx%!)A=h);hfr53>cV)Le+dP{@$uQ zzV+^gge1m1bf(Wzn5U-I00!QnFg4$oKj(jHZVV$&FJYQp4YTaBH=dJ(a2?Tk@^fXK zi{{dAU>_3MMf1J+dr@{l)2$(U%XqSd`~Rts94+D9pTR(QXMt%es7%O1)=!dH&hJbdj;ZBG4giJMJq#se1nZ+yv_y2oW296I5ogD~A zbQyy=Y;#e(j2YNRK~+ODmp<6c6RH|MX26s+yyJMu9Y+_%fx|krB{Ca$gu*8mrlE== zv$qyRX76s?&x(u89VBz<5(Xa#uDbO1_<>k3x{-_|;dw(3u5nwTG>Kny4~1|psj!JV zl&>l>v~M?LXhBWUB1z-bybxW0hiYq+GO!7SQ@rZ;dS3xiddKedzTJ?#i*HirNCwk| zfGEIVgYnd&D-v^QPy4}G$Tbs8gk|z2e?A_KC&uNl91HdD>s~uNJ!%$-|T%0^qmACz_ z-4L5#|Mz%$eail?u@T(=?@I;eqH_NXa!J_Syvqguci{**hZ}j}i3nyi5eX-PsYpCV z=&y4d60r{{!orRmMTJv0o**$>-$S8#&UAHTS5Iay;N2K$6a zB6pU=J_8^T9ZJXM5no*-JVfDp-h3Xaih`+YHxx{S99oEpmPjV@<(UW_XGm_I1r4@q z5^R@(Vfo_OfqF^2JbNfay{2W5EfNz{Tn(0P)`-6b$j?e9MZ4w@mc?J}Q( zsv-wfKOj1TgM{~=agwM#C9n`|P_=n-890YR(r-TJRK-NCdp9f_AtO#_E*?&yb8C*| zo8A)mMt`7PBn(7h8!(@Nsv) zG_VI_oX6I5k9@DcDq@m~_^%hdjb%)mMnnukokkogN3u2sM~ zyYa3ncp;0EoHHT9Ikj~YGjIuo(sz1@@%2;&8RnPengcn1z6F_@@iQz8QkQKL}fE?k@}RKS$B{1dHbH!k*U zQz8ZzB}pzikr$kFP9oSiEpNtO+upC8Bt|oPC=`#IE^hZ!Mcm$%j6-7iVFM(Ibs--3 zOjFDHAOp)#2$~OCe3~WN7G+%XnP@sTC>yEw52X@5@1S_!$-QxWue=UgcSDE@Cxc^I(bD4oRsNu-D zE##uSg;gbE5a?!h!BbzJk%Hc?i_N&eZ-StvV*wJ7zH4zU*79w(JCbA;;dwRURflhBA;PZK^@o?|+P;q^E^&?|vMvR+jz4rn;H$BjJ{(x$sB`n=UJV)X4w z#75CgYLX~nJ}nuZgy z1z_Ryz;-Xjsa?Uz@%QN44eb*zaUl!`Neq{@*`Z?<%^W>2FbbmlXgqXHN6KHsd zY`7xa@HE*lCfu-_Y#0}A7$qC73OA%VQMe(!7KIz8$e||pm$TFL;%L!p5qW(z4kBA_ zvw$t);$w=(AK3OPi|+7S+-T9!_A%Nz;4M0itq$E!e$8kX+EkB?L0)%WhlO~8jr!f0&Wqal%d_Pc9Jsr z@tQ#!+DQhT;A@e2mJACxHbKWYV$WtARRULUeJ~L3K9TxiB zl-GqQ38;>8IR>k^O`vh+!p|sogbMcu+9~|NcwbZ+*=2r|AEkqiqw8&DQs#|B&!0?Z=!|@eR0=u*Th)I2;%;nit)Z>lP)3WzSm)mT|$R6jXVOx{qDUdUB5f$hPeePTV zQX;E$@dbBfT=yQ-?^Yj!db@l*I5L3Y(PnjJC?SIw3mNld{C=dh3BVf?e(GWDt8>9* zP7Xevl!xF8I@9=j4(f?bU60onzV3Y)_}>dN*Jk4iS#HdZBC_;M>Sgni6&!mFkupBxOjHcybq#TK$V2a893yb70fLn*VZ-!MD@gi`$oIo6C&udlebQd#y z?s0idj&l0J&DrOY-7d${E3y(m6c1JP`?I^J(<>{%#D?nrXGeG@^53S@a|>#ONOUjD zIR@GdlU?x6<_&Z!3T9|mV8L|f!f)7ts6fp8r1bBj=R?`-bJLFYkYxXn2?sXiWG&(nB94n@){`R@n8WfMDL z{x%UCJXV17;B6W2O~F(;X)eW&1XpD2e3z&57+S2sXdZw<#pk~%bDz>dfG6byC_#5% za&oSZyR{O|kt<=g&rQ9>g0x`z6iv@B%As@==$rFJhTSO@Or-RHN%#(P2JzU9(_@6> zYwzIHQwL5xlL>h~9s^kvolJ#SmGH(Zu&pxB2)s2bZ`MW5f}Fb@XNxZ+ zEvaXXQ6_-1LEG$CNjjYZI>nQz_KT2GIg6sIQL3Ay6nOj$q*IIW#4fW^VNoI%AEjzU z86}Al1fnF9>6O)sYmw!wsm-Sn$YD5y1Vg|tc+*kVE@S0xZh~xAbk{M6rG=RUqt6&( z$rm&{Y~!dmb$1X4Tz*@mk4Vn0wmHXhERVOor{yzEAF^5N{MK^-uGzn>liLI6?&NFt zWv)V_JT^u|5$k3=xzh$M6L9u~6(cT)Jpy;-@CMxr=p>AlOnQ3n#a2>`>DhW9XHJlN zdKWP#px?GRRs-~-Znez|lvgnpj(ywrDD!va);TnP1LXX53C!PAB)LpC>vJP$)o1A7 z_A`~y-;`-Uqd!AFUHb$^KP)Hb6A`>K)2-3lmsVJ9TpsP*-j8s(p?&!!_?4MnCYmmc z_sT42;70eGe{~k@K&KYOdNIQA13%*`I{Tc`pSE(u3bwqVrs#VL)lFw{g)WV#(t@#} zvmc*9^`edvD-QTVrBB&H*y> zer3-ZdVVw7e`zE8qI(v@bAaw6zd!wd_PzwLt>Ri+-Yu_`EkIf#3@LH39ZRyj5kurH zcH%8w;y4A2Y+c(*WJ%Ft#|{Q$D+x=>_PWsJwLllT0&OX6DSP(q?fB(8?`IJo@fv&Y3fFznM964hNjzT!gQMz-vm{A8>f7A9(^U z4yc})_>&QqD#6J}-ONIUO^wI}f?Re7Gt&I29mM##RK!C&BHZ^JOWu zI|^ed)vm$VS#eDqhs7)yIoay4x2Bdp8zXVrp{snf+rV|r>$Z(g;hLb!_`o&qv7S)9 z++*d7MZ_+#E2{<>BLtBi6X6QLn}M`5(dw`5(dw`5(dw`5(dw`5(dw`QIEXuaN&CoRI$^oRI$^oRI$^oRI(R zVC4|heZoFRIANb7oUqRkPRRKYPRRKYPRRKKth_?bk8ncHk8ncH zk8ncHk8ncHk8ncHFR}6pIX}V)IX}V?&JXKrwxM>rwx zM>rwxM>rwx_povZc|XDlc|XDlc|XDldH)`^eL~)ka6;aXa6;bC;%q|Rk8ncXk8ncX zZ(-!M33)%l33)%l33)%l33)%l2{|Cb2{|Cb2{~Xps}~^$L^vS_L^vS_L^vS_L^vS_ zL^vS_bh7daIUvFbIUvFbIUvFbIUvFbIUvFbIUvFbIp8i_cFQ}6LLU=6LLU=6LLU=6LLU=6LLU=6LP>oR$d_oL^vS_L^vS_ zL^vS_L^vS_L^vS_L^vS_oM-hSP5%_5l+Yf5l+YfJJ|0PazKO=azKO=azKO=azGc` zJ|PE0I3Wi_I3Wi_I3Wi_I3Wi_I3Wi_I3Wkz&FV$S0TE8f0TE8f0TE8f0TE8f0TE8f z0TE8f0nMylgd7mzgd7mzgd7mzgd7mzFb9nAKNdGGPa8ZSD z!bKIr2^UoeCtOrjv34L_R3V&jQH5~AMHRvc7gY!+TvRo)atIey2q#=rA)Ihgg>b?} z6~YM@RR||sR3V&jQH5~AMHRvc7gY!+TvSc5{UKabA)Ihgg>b?}6~YM@RR||sR3V&j zQH5~AMb&mzFTzC?!U-2u2q#=rA)Ihgg>b?}m4}r>xTr!n;i3xRgo`SK6E3Ruu1`E?4HX#Q@I3Wi_I3WjYXTMj-0TE8f0TE8f0TE8f0TE8f z0TE8f0iCS891bY+KZFzVKZFzVKZFzVKZFzVKZFzVKZFzVzg?_eg!~WTg!~WTg!~WT zg!~WTg!~WTg!~WTg!~UVI0*S4!U_2w!U_2w!U_3b58H1-{)ccv{)ccv{)ccv{)ccv z{)ccv{^w`q74koX6Y@WV6Y@WV6Y@WV6Y@VhD~FK(A)Ju^A)Ju^A)Ju^A)Ju^Ax8rt z|3f$-|3f$-|3f$-|3f$-|C4dB{-2z-$~(X|AqPZt3OQga+s8r3C z5l+Yf5l+Yf5l+Yf5l+YfyI47d91!7z91!7z91!7z91!7z91!7z9MH?kE98I(C**(# zC**(#C**(#C**(#C**(#C**)*tX_m15aEOz5aEOz5aEOz5aEOz5aEOz5aEOz5II5! zIUvFbIUvFbIba9dA3_d@a6%4>f$N>>f$N>>f$o~*d$o~*d$o~*d$p2VJgE1lhLpUM-LpUM-LpUM- zLpUM-V{vK63WfjmG4sK=kpIoFI3fQ-I3fQ-I3fQ-I3fQ-I3fQ-I3fQ-I3fR=VD%#8 ze+Vb!e+Vb!e+Vb!e+Vb!e+Vb!e+Vb!e+Vb!e+Vb!e+Vb!e+Vb!e+Vb!f1_;w3i%(x z3Hcww0sn*b|CE6n003cy91!7z91!7z91!7z9MH-HJQ){qK!g)=K!g)=K!g)=K!g)= zK!g)=z)4nKAqPY_AqPY_AqU*aey@-N&ayZm2Shj_2Shj_2Shj_2Shj_2Shj_2Shj_ z2Shj_2kd0^C**(#C**(#C**(#C**(#C**(#C**(#C**(#C**)^;L>p+2Shj_2Shj_ z2Shj_2V`;Sz^V!dM1fz091!7z91!7z91!7z91!7z955YNmCqygG4q;T$N>>f$N|%V zRrz{Gfm($e5aEP-fCwk#f9b%g{QmHaY7D=>JxH6 zgcEW=gcEW=6y#LM0TE8P4~TF*BE2A-a32uig!_Q|nK2>>_W==3xDSYM10p#PPRIcf zPRIdmtQ@;U--~dmD2q)YFL^$Cd;4~|Ta1RjSgnNJpC**(#C**(#C***`tQ6s^;?lBvriBQ5OFgYWdVngPenA3WQe!ym* z=&?;pO=YbPo6|j6#(oqVjUhI{r(SMOd%RY}#A<-AV$y7=({d~nmzL;Cb#7hB`r>yK znF==-RO?Oo#ynH5C1-1PkItPnm@%3;Ms^8O@)L9}W{}j0b(O`7my#NhN96?MDJJPG zSt*f7ZTO+ava&|*gCtEjr(?%#K51~y1HEDOj!!wdZGNc-@_>*|St*@}kz`cnbW9|f z2<=8=Q>EEdS6go}onNpJykapcEbkIc6pxxd#cg&Rd8bk!Z>MX*YlAf7fpLGpD|Nd3 zl6S&3z9uSgEoLiSZs&BlBN-JqQlNq^_qfgPaJy30?Z*1*T1YOl5S&@eR3!FuB%Vx0 z;>i?9JTT|;OVb1H3ID9kyGDJjQzWN-jUCA~Nsb>%f#j{yjAL!Adw=i>MdH1ruTkUe z$w+KZg~T?$P0sim*S`6wVWT;clxeM@-dtTn4SX(mxgzvDN9gfngdR_U(2)Gt>5xbD zfaKNG<%tV_Fu0%ye>q3^v1EiFORezQ=kvtHUkF|n7Jn&|Bfc#e@oj4$z73LMYna>< zSHOJmpwj=BaTKs883pV~tpeHuuCU~pcMo@f0d$w)tvTIpNd(;l}=a{1R_=DQ*| zr&vGbbNB|CCh_q@sTSYqw2isF+Q?1f_U{iKP%OYh>>o)poQw*FQ=o!=$>WuL(Cyj; z2YRlF%-33K%?*UrO$TQcx#@xk$-OHXxp$>NZaL?DytRu~aV_SC8e<*oIW7d-5|6Lpj3*=j7d%`&4dj=4+(C(?4kq2sH3rGD^&q8x|=A9I@^nuvRN! zBqrT$)?E&1*5h`#{4iiVlGi`ClZEUZfLWTJX5eQV%OW3@HF7F498{)l@*TdWo}sR; z73V&4gAt~0&Q!mk)8%a>upiW^FfA8d|-M8Odvi z;BWdVp<3D}O}U+R$y?S) zPmbgVNNsw(&p+psnznRJsM|f+dJd{*mTXb#^)pIuHEqF?He!+FCpepG@TF5W58hXU z&WtpZewTR04tJEE(^Y!?!a@acUprXKD&jz6ncN2n=m1qQw-!1$Tpl`2Hm#9s-%iHR z%qY_nQl$5>!WDzr<_61h*<9n2VL;iYiy9iPE^25iKbN4{O|Y$=Xe?_E_`phiK109T zDJ7tERMTX9rDG8jG(4rDw4JH2JS%H?unD^jvQc{o5z#*WP$iBvS3{(Yt5ZRNz8orm zjc(W{rjrewr#Q1f+~FO&f4&fG4y}{lCvRJ%@0;DM+1WX-fhrbaYYoWj9sDTF58+Qz z_BN>pP4J}H6*^Ux!nk-c5yQ(iaa@BG!&7d91ICu*g9WV5G3JzTC5>gVn6;Md+TEek z<;m>A_nk>3!!Pr=lUbkF;Tm^%oRXmhwk6^G3)c{xzha;XPFb_;Fx}T!7O63Taf)hj z#vi9xq6DX_Xd_oQQ02Fzn^nSeQgaom#I@!+Na;02kY4f{b8r2RJ;r##5251a7Z%WjisUK zE}NWOb(eA8T4ep7ubb87TJm#B8Z)bk%JolX{R0Zt_Gif)vdOQMhC_SER~ft2OUQkD zgs&7h+VHyVaBS`N&PDk!e!Q`ak3%mLyX13BlD#AqooTZ>{5E*=(jvPw?yxJLvx_ur z|0^*cGn|@*IRgIhvN?zY3(q}yz4x9t*k z8&Dc|zzZUD+dR>3!;d$X@o~qh+p6Pr8}%RYgTo3qQ9$ni2bCu03^teD;3wx#R zwA=5PiEK%0=p!4mXrEA=Y?JQGezv}ba9@V%LYK;YIdY_#^re&S%MoE;c1{D6n^rd3 zskGgWNtu5~`xaLRLsHXosIOz^EPbj5Wn#TcMx)zBrS-Vslo{StxN{R8jveeUQ~b=6 z?&@u9S1W$kG4*w^->dk`$Kb|T+^jMUbcOcFrqgsdpP0^$5oY!t5SmVl&0`yLI34~u zb|SzPG?s~w$UKhL3~q|85x@vc3R&p>`TrZj-PETVzF77g|KjY5!3rAffV{zk3b{b-SZ=Fmm5L2NrjJs+ppm&TCLAbJD- zard+Y+nhG1W1dpuXwTzX8p~FMBSSfU=zwzmQ0ewMfGSIN130GyoPIh99Y3ppf{ah< zuFtUR@;&)`@>}z(@=wdp%==y5|I2$Q?=yMt$-6vnDz86pOWxb_PRRX7?*HcgAor`e zx8=SocP97J-0itFS-Dwn%`#u@40@ytVip#U~fNQS?I5Q$_b>pOf8}eOdOWvY*a8IrANvTZ=wfbVJd6k-ey=sJ^JI zsHpI-g}*BNe&OAPA1S=5;DUm|g1rS-7J5q`D1Ey0rHuKE8wxKfY%i=XJfkqX;QtE# zyWo+6&*?v|zfONZKc?@}*Xj+~CE1PH6WKRqKcFuVf0F+fGE0)5Q?e>Eu}go(UT*0J zxuqY^=)Xgn*aZByo z(s6F-7`N2MExnXmI?64*gj+hqEgj^R4sc8RxurX~rG4DeUT$d*x3r5}x`SJ~om<+; zE$!fzZsV4|pIdq}xAX(#{68wo=E) zcg(q&6|gx* zd^*ShE9}<8?jW2nAAnQB3WHU_Jf)EgR+ zt;Trx3}Q6{?0##%&}!g#PWDTPAn>E)IswKUE4zt%&>Cr~U7C@cZV&N9Acmk}Q?-gc zQ&A$<#GI8JB^QjP`Ot2;OD%_;q)S`aF5MaFFx)F2E1NVI2o`+;(fi=jRD~ zTcr8`#l%{Z61@)hRbzm~)hP}*r-p{*-rsqIdQptCz27J7{eEeGz~QAXIK)|;bBcni zB92w@o;g;Q5%s4h0&`vz|9+OSGqg*#4C_@TWM1fIEu&Xx8Qa`8C*LA)72pys#J)K! zVcOv%9$6Ks^1GX3hp7?-GiEra`sJYYymqzIO;>10HmW+=sD@ah>Jb{%K-B9r`nJJO zGdB{Wus4+{QRhBim32`B7rx!*X<&_mx8C2?wTix|O_&2R7#Kbub1gfjrP1UJ>kZ7#!Q z+q;=Io=D}H?t);65Omow;gIZ2WyU&FLw&WWzM-b3x>^QU1O6$u7d|qX<$@OQiSsW(~bEd;{Z91-6kfrn}%cEWj5|p7F&+`0u(yXGyZ1o__TvVy9>X zwQ>!MHO7(A!70*k{3u+|q~%A+I$ef<>tDb?*G7y)ZPZ+AOu|NM*TzPJf7&-u0+Z>v zx^tKQ*Gpao$kf`DmjT>tvXS^9G#)Jd1tTMlqcEWZHW~z${%SY~(~&e`1E)LKYIMOR z9k-XnP8Y=C?Si-lD~451Ct2YqkV45$(n(grVX{&3l+-6#k*O%q$gpiQ>?wSaHfG46 z)YHP$Gzce5O@q=k3sch|oG>*F!U?s8aKh9y2q#QUgK)y62?!@lO=D$JLZs7EE9qV* zS-mJX=40#>;gk#VF}R&Qk-^ z#;Z@5ng-P;Oik0t>QA}067#(Xr(9c!hZClzLG>xSa`Ea@Zq3HSDOV)p;grq&csOBd z8aDm&agm-HxYrn2|L5e?=<+VesVV++;XC!Ygpz6d$$yNjHrDIb-&Rdl8$X!{q0rB3$ z!G^Yg)Yh#8;2Z0MyViE1SBTsln0Cou$x*Fd@047V{;4J-xl5-9fsu*;pj!9Rb*!{I}CzIcs0|`bam@*bAgRc-c+swHV3D zo7Ss@g|pRGsTBa>l-nI%A2otR^kA~cB022aBGgh+u!3$J3Kdgtu4ypSy@g1;Jh!i3tr!ThPE<+;$1%}M zjmcQ2*qTT$HKrOf9o8zVS*2bq@U?Q4iowjbdDMD=$ad{E*ktwcG=t4BlpAu$JKyIY zrZKQbe2o9j6zMq{{Su!YbwOkZ-#A1`WN*LY=Se4VfpPZ0Rk2DmY=LV%4nM%2iz!La zuxyQcSe%jsEe7XgaFa?BG#pQbGevMFBY7XL-rQg&fvjO#4aZY~Q*nDZ(f}Of*j%?O2_MHU)In}E7)GjZD6h>K3hMAy)rm=k0b3epRgYp-vn&|PH^48gh&=5C5nu;N>Go-%9OGw zDTE1e#$t4+F|AKWNtsZhq=dGI_Q^(NxvGd5)jrm!_6m(E5)9B6of7cFsS5zW5l048mCpiIVq9}|XwPS{;^dl|8wb${^y zy(;Ge*`I~Te1_txB2(eEf{XO-%*XN`*R^KUW|n6e_>>@f1In7{V|+#I+A_T3hmv>i z9|(-W4i==(@cK*N*CEw(}?g6;(K~5)d zOPiv8LFv^C)aIUK1npUkpsIICN@O)xo6MGKIJbv{ zrHe{x>ct7tsnu+!YD-OxA4*XOsWlVl1I{KroQyhY4t6CGyQQwS zp}rQ3fpqWwmAbbtneGMmk*F)R^4-*d#c)t*AdxAu%|8aTe2};&l=XG@OXCupn5N8> z>+0*wrUsgIe($1Rk(D0O?PI%lK$EQaq2y(4ZHLPpwsxm`Hmr1Lwa`KqEC_b5@O7#;r+=-+n>C&&3)ZKR^gO7r2^NP%ylL@Pf3ejMO@y5yi=37 zXmZ<`ytutBLvT|oWgTm3sB5UV5G&6AmX3x^uG19<{iI(}oB1OagZP34{fi5V5@~8~ zG?$HOQX+nc|6LGIJ??Cvo&YHsTBBJIwD=h+x1v)d0)OJiphV?d@$JQ*$`^u;#e+%@ z(Y!}P>>Rd7QxD;X5^Z^OzHV(EfVdFkZeUzf=SvhjhnZ{4HKuxS@>&Q^F3u~$?joj+ z+C7qtup`L}EBo{*A;;qi9Cdt%Gil4B&aEWs?qo#WoxG^wxjJ<+s$NV777r+*9^mxq za5AC}CogKN`ciBQ`1!abKiuWow{<*c($fA#4IfNK+QHeYnt3(4ap#@3&-Vr+?BKNNXUifz@kZv22OP zyga|Mc&UR_*UJ!JX)Zjow#k_V$vthlE}aU{Hw%!-Wd%(vPLR<`x1?nMpV{E3@gB@tXiYW@MFh7 zWxZo0)PaW0GYeUoByLUa3!E`%&37?oH_f`g;QiX|GmlqiWV43M;@9tMkAafA<>;1iXE<`SARfE| zo&lP9iqS37lZcIBSRB1@t_`iUX-YX$?D^LMwDugPwV2*OuP)Xs^-~P=JiUpBFtZwa z9zPaG!nNR+3S)w_?&^^i*AmFYldvTa|Nnelt4{xP-Vbtql=VL)7iFHVYb~mUV$DBG zJ3~8(?l)BKkh8*9vymXTM;!F9gCB@WLp71O@9<8C2=FA2dIXN^q1PZ+dSFHOJ@zt` zhI^1&Gpjn73#}6-IleR583zhHFa_6r>3#NuMuWKl#fXfmhg@Oh#fJ>|ATxj+jwI>5 zDo0ec6%bHA5^A4*Cbx<0ga>2T5 zat>c>#Z`cRrVyLju6%P`X*H1$f6!OqJIs-tU7Bh>!7HsxGoc>2|E3RDkfA)&srI_v zw@ui8oC~PX5+w*^AA}esgEl%!am6r7N&1FJph{|SE7pMenjNUIwwbD{tyJBdQ5o%l z=%9nxmo}A~BE;ULT9Bi)$^lrVxo`kh5`WbfpbXv)H?l2v>X13?sg*~tGY>ZCF_-WQJF`}VF`;c|5#&e~ZCcwlP4TMP~iFl!? zx(zzSN5X=KUnr#W3=ltq1|8;gBQ;Udiw?g!h_0{`<;fK~mrm>{?9$bRC0+<+hPvdg zZ#nEDgWknupk+-`W~pzPeZCe{|Xk06U+``&u7q;-CYG3E*y z*%cG{#+e!B61fr^Fa{@>hn5VXUU?p}9I7W)Vr8wQLue(cWkCdkA7&O05frkCRn9i6 zdmXQOc3_tS1O7-rBcC)L@Y3{X>V+T~<34{RUjUF4Rfr+MGLNkPOLfocivOm2wm7fo zBtBTy#gv)NcZ(2*0 z5Z7_u{zh;vlq0L8eDPAE5}byI*HCN~oh^eZJ>VKZ56tJsKzROzk%izDp=??B@Q}bc zjkE}_Tp)#5b|kzS+_qu&!D>`@9TmtiP=Tob1EDNg1sfOX`4vvrqeTU(VeP}uGYOH7 zBg0?Rhcacs8y2aPINrY0A~?(ik$u?c=*Bg%`?XQr@nZ#`3>~8ky!WC-8R~75sF1iO zcBvG_9Y4wlE-YOkE2DCeZX99$r$rfX&O$P|MkWPZ2hG{QAdZ0o1jk~F8B3ST3NS8C zk#~ZbCBSouD4h%a zS&zaS3@X&oS44d@<19m(f`KJ^ozPMlenX70)-bC@5pewD4O2=VejeTss!xw2!QD&r zl8U8r!y>)6(ZvcrqebvGnm0<4eE8wUvdBlrk;v0a^s0)b@@I@P*Gr93!Ul^<`^hJuq*-^oGZ`wVH%86 zY-&+Lga*sE-TXdWiHZg*kfX1H2Ej_8xVTnVoN9i8hOW0B=JO6lZ-^wups`=}k*n4^=3%zC>2%416puw4tUbWr3#Sg8v zGg?%;*wKzjt>803qarxHhuh9tA^#pOb`--8tx9l}&=A5RJh_s6yA`&4YBl$FZLP^@ zq1Q6^2dfpy_mZ)UgwPiI0zZ^0$p>xmJyxsv{5{sjjYeZFBv~LgyQJV|MQD1z9JOCt z91Q%>YJ`Rm|8XzfY8F%#CBYS}QUs-oIMilsxmNK*s}XciI^eguTyDQG8jCu{iFT1A zp#vs@m5RiayP?K+!APPx1ew=DoRQqM8i}_-($862-20fCMKwX>7aHwD3RWnR@{D*# zGLr6Cjie+3#sFkVNu4E|VKqiZ>v@cz7It#pu1Qe*&}s$kba?`CLqcfoR9Vo8;5!sS zsqLaRcP1lf=V}G*4fx|rYH8rFn`38TMN%3ClCVCWq#emf+OcX$>6M!}@7P2obpLu=U zrBq-@`dn=`1HT53^vv%o0@H~Y2^`5`yW%ScKa{+{&3!byO3Lgw8kT1&xKR<5h7Ut+ zZcV0VTUR3}WEzh|EM0*YYd7QC`UXo4wc`Cjdd+~$P?Q(%VP85enqGWH(t}F56y#;-gm zX~9l5@aaHgLlS!;D50`jY@V=}P}D&mR}u}2%|om9Cdt+r>#7nP0(+KiAp|>#R+>O) z<4(4kq4>dBu~hOCoSi> zx3qDD6?RvOE)0=Y&VWZe4HynDD>z;AgY#e$Nlco2t707~7fNfh3JELNpc`I%J2BH? zR-kAuBE>9W6VL6HFH1!B%OkdopN`t+ijN^f<@CImADE3Kd?wE?=j zY%Q#8_DHjFKP$4ToI;{w5Z4lwkqbw%#T$gRY#Sx@kpt0u0s|3MH4%RxV$l*Dh>AVX zz9tNI6=RY5u^yaewJ{0lG~MI!=9Bi|*{G5!fgY}@2%SxbLZ$Q{24XIDtNNPNl=$wW zVlFg2*V_$|oNtCml#r_7xjSS8N0fjCqm5i$|EDJ2JpYJhA=n(E8wzG{v>?-^4s)S4YvctR zrZ97uKPe}I_)!?C${}tery9a$6C()?l=yK75VV`_|7_5;EuKuIz)g(Epv>}7x*46- z@k7yBorgxVcw&+m%>oyQ;+&u8GPBRt<(~n6R1;C+{gggI-goPD>)wC4?xgJOF4&le zrk)@7w>A%wJn#K(_p}dx)>uZ1N#=11iuQ=w@d`Q#Qj|+xqQg#mQyHp-UWV~RQpJ;d zeQ^27;i5^+`)qy^cB-k2Oaw9M?AyKW=>Z41oXp&`k_obN($pUn#9?Vf1+|SmbGuZC zz1uF3ugxGF=RsF>+kt4+dv}KUK8K!?{Pq@8ZGAn>2qDZJ512X&%^j~c1H$tUP7X2s z0SRY_9?Kf3F9i7~QM#U7I`f0lByZD}{R34ytkuf9c%LsiQSo&Tx#jVi=U~5oRBZ(Z z8p}E$sE)JKo=BE?qrA+D={7DQB$}$JX|P!8$#pC}bhaR$yb%u18tREXsPf6T(_huf z3tzZ^iXx^(FK3XNyTBene~t-<1omjGqu*^Yn(7RHF8@yYFI(W`i6$^b6laEl55gG)fCpS!0>7y)kHl#zhc(9OXd(wAJ)aE(OhSVUVT>2qU4NXt2|Se-@c2?)Ps|IRoWQu2v5R& zPTM%#WViaKoRVL{AmBdC=Lyc;sJd-LYtaF=!rVRRUd2T1@7S-Js2x7d6ZL%keAmA2 z>DDSM{Ool2=|p|wNXQjd|)Xux`#a+&#U`y1#kWx^sFm{JxHv zkyptl8m8TN$kc0?!CD_`yYBHMD>?ta-G+ z+u-v?$J0IsTnJhnBk=hHcCro!Er?iw8A8=tjPxd?kQD%?)&jG#T#qZ@bP~?mv}#rW z^+J}9`UYCB!V20tyy|%umXm}PtWpt1Q@HWmSA!Y&em%%XE)WZq02XC3R~spf)JBcq z&X)ucYDwSsSLthdFB4o>!S^8+7h3R#|&?(C6S&KU0RecQ;)3(Ll9UaJltS} zoIY|#Ftmyo+@So;gi!1C<>AhXWt-tz>Sczf*j1goPHk6k@)CYkgHu)v;glP#CJ6A2 z4!fKZ19pg`TqmmGm2IrL1{Nt6bC}SGsi~>1p}{EYPRl@}RLiJv`dD3%uQi*iEp@a? zMHj=pF10Qooy3sKLy5~#Qii!6I;n2uSqBE3xvtifz<`UZ4ES1bgRGaAH_EzvctME37Oq>#OrG$lH>;J!df6p5@Lwkg*6K z9nGJhdnw{OMN_!Vv7vXh`A*@7lJ~)g92dgS@=LY=F*?qS8$KyC)z)au^ku3y*4I|k z%vau}i1QS^Z#Te-tj&1}Ka>KIqjP-9q_&tFfX2Y!UI_Y@-cCq0akin6s*nKMJgD$P zDUiA!@*zQv5xUzSue13_h_MckDzW!3Mf|C#j}ekUn?DtPCutGOORen2e#O!TrO$IYecq6a#0@Es znC)}wIXYpBpVqHNs{&M=KC^VD(&>JV3hI+lL468TFfa$lM$-fC2|tAKk9#8}8OfbX zZ&M_{lt|vf4){7vlH-R`Ai0*jn#suPT6(J@FP+j+(`%EFw>AaxLfi}pY8aQ6^3R}S z`B~JqVblDNio}$kA&D)?NNh=k#Bk9{&JU9^sT=Ce)x;M3%vwnd!``dL z7wC|tAo^3XNu(o-E>&Qia3IJv5dPrO>5A}|bA(rty(A>OIkm!TpUt&ee5CJ-i`sN~ zy1R8Huap!O=jiS(yrf_@0;|^ zJqLY3cn5k$F|DRpk7}$(dC!`=T`cC|uwP7cz~3rXwmYq(>cFg%a9NqKo)ij?zMwnm z6GF$;F%^C%D|`^RA&J=>4u?ZrII=0M}@h?=bYcop3NTKr+(E zbE!Nfie^Am)3&3g4BAdQ39fRUG_$&Z>*A4(0qtr)m2|GT8X|36oeJdP5_w_4%4OvX zLHPC6IKs{|{bB!vmMMqRF1S>rv5tk{c&JFGa3?KpCrrl4_EgjfSVg%oscGr##g73C z=)U>3H|pF?M>ar#RAfs zm{9Y?R8wq>*Gj-S+)6xSkV85cQL%h=VKFPDm#xt(-~8@pyQzWKe%wuwS(YweA?c6b zhpSOd#Zl04WUW#tUsl5@i(RA}t5`MEYf(eXfnFbe4$KuwkAa~4v#N!~yilGjXq|lc z7+?jh(;}$qpwJgtN#csY*C%?O7=;}_swmF8Q(f6m z8VHrs+}w4Q>y9)MH_#nSc!-e$kQy8|;lXd10AE!Z%#X}hHI;4Y80_x4U`umv>&OLLJdjk2td=h-o3?o; z9j;2h+tX;MzNqYi)VF2JX3qs%Hp}0;nKpv7F4nh2_PuDR0dF=Lpg4$y-IsWtNs7OQ zrM{Xxlh|tn9*R7pcBrCmHD`Qraq^5WUKi@7d1&h@-*)6Oj;+jdI~vvju?Ba*52hnU)7FsmX)Xh}T}oc? z-S$Zp2Fd4vyj>7AbB-V#Uj6=n%?ZIXS7AVF-n8S`p7>{Qj6LPhd`oqe<%cgN_B6*% zE3=yHi9I63RnTDlssta&*cJp;b&SK-8zfM1Qd@$IA=A>V+q;iUOcRogdhk0Yh;e`ELgLFXhj>9BkH;m00 zW*lC>oFmIUOI|=z4i81UeXxZEZ!>svF*DC9tYwWGmatVFPj4%oF5~Oep4KgG;@H!g zG8@qgz1|dlIVU#o*64*!?ke9*RaCx2$se9QH4V9xO~6s5Ej7{9+dxVWjd5NKGn(4f z0U?9@NTM0I!byq~odB$c@qo_{*|NNIFzVqf1`g`Um-(CSrG}v^hj>F zjGfA9-fB4NjZM`4%r*4tPGa*~9d+?fkWgr_zv7${onE(5r|-~h%(v%Vnft|@$BI9k z`8VCGFyjS#LdxGQgm9QE%NL8ty10f(D7&|g6K%oGLTV%1W7LFj1*)Af`gvKZ0yuz& zJ#WWvX(6-Uaon5H2}H24s}Mxo1YXqB8K?iaZl>%&!nWCG+`Pu;=op>|oyjdCCPSShPCNU1hv z{5XU=QeB{XQ)8I`cobx8Wn|pP%2=;K zM%nij%ux;^37(-|w{3h1*92xsBf7@`*ILHIu23_PaYN<)chRtsnEyoP2>ixVB1A<_ z1YwH|JT+|gX`9C|N;`xVJ8Nb2o;z$}{9CLAo5V z5?Ml*hC1XqrQxa?A|a+1!a0S{I`HEf*~#&k2-Y-wyvs|D-jL)<9YVX$`!oG!QztgHQ!< zIJs&!IY)4?=LjB6=LiD<4{Yj7Ui>gzFA0B=_}PIMe9jFXr)^F?@rC1D2RI$gIPBmt zLe7Pv8;P>N(l{U{0$!KHHzgk&y8#O|MD`!O1_=B_u7COrem6Zu@CE3aPgT{bPMVHQ zixWOYkfV$xc#1$>84_Bym@K00CK5$Rad+BDchkWk;VK=+`rMkVuV0!BK$IOI=g9ut z#NkQ#EMW^IK5^iW0v06s#=VZQh#f}QqQMs!pCYbtHp8SFHoRP9AKWnJw$Bj@B+eO*Yjhdp6={;fzN9APH;2 z6BgX+AwEsu7`IQ}n}Vro0?uM*9sVi7^kmosb_I@^HlNQ8Zgg-3b44^vbM#AMzM~vA z;>T@pvJT%v{5*Yz>3|>RRXCF!lUx!kl)y)CHFKfb>kqyI+)0mnX%n^inra%@FTr^< zCiZqX5a0^84>ZlAZo1&Ft33NE>SZ#{+WfR8n{RW0Ta}wmV)%KuDjEGSQQIdTnzqSF zuLL_NaF9O%)27$!hBJQRGz#9tcIvYQCxl)@)DIerd}0FbLJ$m@Nu>i02+{%Pj|8SV zc1-2GdXyWQsKr6ZX0j8JpvA?6b=6{VB8NZw{q{y{Xp(g?sV>Ot~K|(+*5Lv zb6(8(QO^B2x98kg`cmoBr4N*Ts`RGP%StEmC-WEb|0Dm?ISo0zrG2H1rRS8El>Dva znUcp!?kTyY+Dx^inAZh z{&Mk-;@aY~ii?U~EqbQt@uII5eXQuZqPZe_QEyRW(Z-?^3jbO7eBqOY_Z8k=cw^zg zLaDH~u%Ynm!s3Eg3w~YjSix5cZYy|q!GVJDf}Vngf^!N=_5aX6r+-5Kb^RyxH|j6b zPwM;iP5Mpxlk(rle=+~*{0GVZ-c;m2-Pp7S-s~F4epPoW3f)_q83L&)VoOiSs?3Zj zJ4V(T2e_s8b4%~zmVTXEdM~&1YuwVWa!bF$Exm_Z`eknE-Q3bI zaZA6*E&T$w^e%4co!rvTaZ5kTE&U9)^wZqZPjO3c=aznwTlxgI^hs{%Q{2)Yot#yf zG0T$Vu3Az!Q>TuQvfEh3D?E!=Xds37D%KFMaFACxz$@(M74GB}_VEgPd4)Z^!fsw+ z7q4&!uW&oBu#;EV!7JRxD{Lo)``JFKzKB=&PF~?2Uf~F@a5t}TnAnYn3DY;xk@0(O z>F>CuzvY&`L`v}qedac9X*;*Hja%BvEo~v9xmg|dSb2q8d4(793NPRlHt`C#@Cwi8 z6*lq;8+e8Fq|n6Ma|2h3AmMQ5IRhiC1_oku!!4J;N>i zHMjIv+|pliOMk&F{W-VvXWY`Ca!Y^0E&U&E>3?%ef6OiYf85d^a!Y@}Eq$C@`WUzL zQEut?xuxGD=l@yR!@9x;@^6K|(m!bpq&1M%z-l#cReOl$@z_u~eEk@y4CiTUez5ANHm*JR&`X>zW6c3u)^dgI7hb-!IHF`q+V<) zqYl8`us^TdQjr@9+rZoeMd3IY=7ts163SWCt5|I~RoYPe$`gn!hiaQXY6^+8H5EFU zVs+wD=_J8ed#EP&QPYRESbHnlM`{vA3xZ%AK0QR!<3P;YYpG*>3#)T`+?hlbS}l45 z2iFqyq36O^beE5vIcnK9N-DcZbml-+O~f}0EZQ2+9K@x0&3IB2Tbw(o{?z{DLb?CjkFp5Ab^9CANukKBoB9Eoo;SlR@~j;g`Y_QrqF z#2-RFRyTXdB{iA?LAx?g6}B~3Ml?x79PSZc{CZaWvBt7(;CbKyr-B5m0aY@-<_d_k zadj53rZWgx|L5hOpewB}@f5$O=pHypKLdVE|D-jL)<9YVX$_<`kk-Jzkp>Ruh79tZ z)23@KBXaMs!cElbY3q=+WxsWDG7wo9;2Vp|#+{sQF}i@j6+{;h7@6RDVL#h42w0|C zx+lO3Q9ZNqc_9`l!Bv8~nQ^J1k;D)aEiUDqxms2c2Vijk;T9n~y7t8Zs$y=vXs*H5(0V!2!G^_5B3lhBn@59e{j}jWr-YvcD^xyO zW2qK`ts$B-(OempV}zB%tw9cW4?w(OSzv*8c^0&*@5sN`{N?D%Ka} z6?PTesNa@AgzJ42GSZxYv9eRfnfD{gmbO0JUi$jQXtpU=DzN}DF`xW zWjs=MkG4T_5EAwo&I9oiaFI0nA>?_MDV0b2ru;c5g85FKjGY_6knrQ@kqB|J4HIZgUtOO%uYYHncfuca`;C0YIh4`9U2PDkFXh_5XrKF#fr;@R!Xkv9Hie@o1 zFF(IcSDIClUwlH*y27&xHtFl2ApMipKw1N74Wu=Y)<9YVX$`ETfuJiGAcUu`vUt%> zfL+W^!q_0hI^PRHpxPZyXN%kE_IA7Nk`rGS#Sc*i$a_#ge;^kmz6C>gBgsKl250Ci z>_XHU`H7KL( zy`+oh*)HzaBrtv`1p+Hx=mT<4(9{d=4SE&9ogBe;CL{RH6bi0f;91eW`MYc@*moef zUy+*E-F?YO-IqeC;rmJQrMTUlu;BinM-kk^>F(ZS1n*6u;BtPG)XO~^bSrYxeK#~z zdyAgzI;sezyrq$iSOOQD~9v4tUJ zwl+jhRFG~ae*e-UVRcA8SnIJjwLU1Zb4<3o2yE%fkCL?I;Y6NX_ z+1qBwMeCI}O|;8eTi;-*fgP5G;Qk;zy(F?yuZ}%zr?zO46+g5ZS?Q``TC$TM{3#Z? zuG-Q7hi(hOeL;E_N`$_IbTDdvb236VuSRI_JNEjuNy|Sqj5TL-gSn>OLhV@!(!z>gh1l=P$0`bG3+gc>F%Fnnyk*4CPg7VwxL(-gfI7MZ5lZrxLrjI`jE1IOA)N!!-f zGB5|31g2Bgv$b`#)eUuYnwkpIn?E918@Nrz+u2A#;K!4!tUa(>-VIrkx@{iv&y-0_ zteC9-b@F}x50?J3^sl9VEd3oRO8=xakk-Jzhz72|D60gH=ho}a{m53``t0mdN1%E4 zzV7MPDl7c#bPu*R50WhJR{xX}vZ;;^c-&q;#y~h8^~Yt6;fKhJ$v5X3r&qlA&UNsr zvB6yJC3lBA?M-E<>H#vNdAyEkn|E%9GzW)vJ~*{=xcoh~X{pcVhbLW4Wdt|UGg`_UY{lL1|`>|f2zqyY(lR}ccao4_wH{*8@1$AmOQzF#?19ZV|u+S-~@+s zr_|I=e^sk6oG3@Hhv-(4W75T#m~1_uV-qXwFnL|KHn(#gkww<)z0!oNgQhJ*^HXYd z*PqkS7LeMym0R;;eX{qcEL+!s`(v%$@I~JJo40TU$v+i%6 zweFm1Kd1MAM_sTz#ikoGnQAdzMOFXerYldu@r-;SJb_MDUi)46?`eBzeI|LmZ>%gn zQbk|y_)Vvt$I$Dp7GtsTklBtiz5Ctt<Cwr z2|3o0!CD6%fh$=D#vTRh*v|IPo;9+Lni^8EnkP`Ig}&XkI_p5SQCWD_fhXZLv5q=e z&Af-?`}<@*{PBq#_~XVbvi{G?{<*GbTmF0Cuk=q^18EJUHSn*Yfg?5R3Mw~N0yomV zd#a;u&Ndt&y3;lf@DaSOv78&*4&H z;^;>`ZrJSbHI-EwE8t3*$y81LBCjXETaAN6&#(bPg8jDuzmmLkc{NUU6Wrcbhi%ep zo0hWxwDpI7rLQ=`Lg-Vm+X9VUa10b(r;gKo0{EJCzx9CW{&VF)jIR zl-sm9X$%`J%T}yb@|v51CHa&eb_vKf!K}j$I|k-zvhW|Xjqg+G(`YhLjhd?KM=&}bMQ;}QCTnu6fV~r7Fzk$2ZXsvfkGrI z2ieFN3}eAGVE@bJ9HzRdG#P8^YU<6kHTCH84q1_EK)9iP*=RW3KRCHp-Tm80hm1Pm zg1Sm15EEpU+YQ@tE}sYTox8^8B89Wz9;{MOiRl<34-ELd?tMgJ+TevF)u%>=?WKNC zw`$lr53Dq7+ga=^es+z9t*N%50uISw^umtS@i%OV!5(Nb(b#awj9RQ!!KgJhknPPk z>8OQE9kPYbHJQTyI!=ddpVU1NeT_{v94AAz_LRtwb$X}W>LI&(r6JqEVu$gwYcyny z)y4{#oZ+o=)Lyl`xmNh9rEd{3Y%SyhLo%ZlD^@*fYoqU4`Mvul9krFln#i!Ntf@P` z2ktOy={t{)flKxS$oYTik4r~NzEJwRk`I?|F8OxJk zQ`-8ku_#DOk=8(318EJUHIUXoS_5efq&1M%Kw1N74Wu=23^j0aR%Hf09XN#);?2jC zNg>|bIEfUZjj^gyQivAa{U?$_AG;FoehVq|ckJ(vo`g7jCy+w4XVXzg3elN~zkn3Z z*UxuFJ!&0(Jt=JHZyk#kI_L9Ap<`cXU9`|;%_D`_JtUVDVpp9UQixpzvT2>H&%|IB zDa4*VnI~mc>ajxyIsZQ;^LAayb;X56PZa*J@D}}j`i1;g^6$(0ZQciRFU>tW=W{vr z*+0sbvYyY{oB0QTrhn2JINBO$H{`AxF=y)F7L0Vjx8LaiFLhhM59g-v`)HSSU~qJ3 zpsjzjvvst+x4+vuIBMh+>TZ}jId9#CPx<%>dFw3jZCT8>Da|3>8~*oOxL>6PGT)>A zpxj#uBAu&}#P%ceQAE7X*786}-nu6E&XcHM3`}K)OnK=FUn&EM zK8TpiV~pXRU!1$Hw>(2I_Rw%JvcH!s))wWhD=*IoolAYZ*-zQuioSy|&AZ81TW;v-9W)TX^@?z-sSGnVF9p=rr~!TbZS9@A4g3!WhT6p+wsvmo92|f_ zKiIadtzY$>+lHVmV{oZdvbj{nbiU~s>Tc`rY#H5U?HVEz27Y#6&^kCY5SD~(XJ@yy zf5fn(ZN#t%`ntTYFn8T~=VgpgwS{LqpR_+f{N>TFMU3Lmhnt8OL-u{v3zY3X}qUDB7VJJ*cF;W@&`lD^P4h{Bp_CPgcR;w`VfH{*R zt+i#a6KqcIP_-KPz1-6_tQsPU8I;%QbJy+IC^F2x{@(3vErX-&on39CM)hw6!JPcO zbsINk1iPsw)Ss#Ut!K2M{)CLm!4898I^b7XKua(5ch8_<%;_GhFtA-+!Dxv-US8gm zm%DD~c_IOn`9_&mjHn=g$(EZ(Y~=796$5>Ye$8WqK_3#6;|;HY4r^ZN*T*vv#WZq*muKg#TfaVI3GVoV6H&Ov@LxGR6A*R1(wLRzR++QNvNFBf zW9@Fkqa)dVL9c#BV=-zjZ^+7B*L|)?UkrZK$o!hUq|3}(cka0vhc2YLV?Jbl$zt@# zd?eCl_)VuCMHP`(oGhWrgykyZYo4$33WHeH-JSjYz5SyDy+i#iat~D)V9M_3?T<7K zQggt_kVPD|4jPF6*`x$7-fAeOFF9yl%m*uvExx@onxodf=+2-M^P#htiMg|_)pZcBC+B~|et$!f$LaJAPs8k*w0dItsj?tc8wZfRmM}8eO z4|R66MwD$dslRNn&DuTO+rNXuF2r5h-`hLLPLczoDl~aVfknv6jhIi$i?b?q1)0z3 zO1@KaP02~cAB7lzj}>(nK3TXc^Ev+ij`q?o{e48@u6 z5(gm~Py88*kQ_|6fe6L0Y+{dUa$R9ibL#Lc!==)(w5qkUy_imjo_h;)YmdwMxsJII02s0omF)Gtt z6Du@=h>VucW+Rg$OHi4Y6Z_FoajpB!z+yYr=dOFFWkq{IeHbtV`thoH7o))|eNhjv7VF$1C9!j$NiVmpTch`J~h zEIQJi8p$*4F|8G6PIz!@rO`SaY%_1(oN?&9XrCyPFX7L$OVkCY#de7LV^M#kSvB3n zk7d>AV+J^uQ6^MnYe)G#vemB~ex#2XqNg{8$UYQ#52cS8lp{X&s9-dG%#fmE26FyS z{Qq-bB>zbNq&1M%Kw1N74Wu>jFQ$Q;PR_`$+@NdwSbZsu_7Dk|&<0Vf{Bs6%G$unh zl7bOG)L6C>x~wr$so@|*w<6IjA+DthlHj?$gHsSDVsfg>HYPdY+CN;m_mQ9uG{C&C zDIAc`E(dgIW}_g$(FMJy%=ufs><=*@Q|{S5sL?hl^?+Nz zKqR06`Jh#rumzm{@aHs;A`MItX*UFhA9T04ry&4LcMd zqPn2%XgdJ04!H76dL4E-76XlJ$qVskYN)R^*VHuBG?+*@fboFO@16$9?E?^3HEdAf zuo<0pIRa%_-yjo0vaXEwa~bkL-4-rJKB&HMakqD*D(b{)?+6!H?Ph#i{o!KdO4=4K z_FH=gqYkPQ+rz~!*26UrE=E4CbK&Az*2}dyTpSZFO_mY`ksAo3W5Q?2HcoAA(7g>h zf*Qpr1e}0Sq)~J6wK{wrr)@6W+a#KZ%D7036xlT8z$?)hpJ4+hmC=ehrUhSFW?_S? z(zvgJuxut{ow1>s7{Qdo4pH%9J3l0_nU3BhRPIGGUDqe55LMlo&GDtz@bo^G6d2lBp7O$R~Me02`u!8Mk9x zBBLX$AQi4hiSg&`) zB{J&h+nUS?;ix|JRYQJCx z)c=1m!kZQ+t%0-#(i%u>AgzJ42GSZxYap$GvV>T*bXGs{g6ark6 zprz2l!G^I~{}sor z5}zNU`kRmQ7~#k3ux-gKtXxmiaa>naieD_@bfTD`AXq#4y)B&Bk4Z;LGZaMqEjlEd zUGjFx=_qT+D{6GY;dDliQno_s3_J0ZP`nE0sq|KEwgYnb8OhZE2hVP=QBEge3MZt{ z8|&qR8NHISLQjumXwnFBE`x$?E6*v9DNjYtal-FBm^$E4HEy;KepU)4HG?W^15GDk zgj!``l{_5E%Sp~jp%{AVlTt`WH(N*StcDD!oy=L2pJk}XElq4*aVxhr9jwHiFha5sK z*pKYUh>YU5;!MH=f>DfSq(SuiKqR-UoO}3Re>Brvz$qWiwMq>9f4k9)42q_qT;*ss zSCc$PiHzn3`ffR1Mze*u7Q~EZSl-`W2!DKpBmulBJ97S?1CjohO1u#9e{*RoMEw77 z=@}6J|Hq}jgS-IWhRgtul)PMWq~zs)r`>_HtZ5CTHIUXoS_5efq&1M%Kw1N74Wu=Y z)<9YV+BI;YG-cco%~$D|q5=GIKIKzMyn39imB#-^QT-cetbUv%lGeGOjq2Y+lLDal z|2t{?e|#6An0!0F$WTNI@ofoS{C^*f|Bvr!(D?uOG6RkOk8du}`2YCY2#x=b4{>Px ze|*qP5M0Q8H!%{@omQ2^i?w+-)6@&TrBi$_IbxUrzg!-9@pfCYsoeP`N`OwdHd^E_w{Tm zE;xg1Iuv(ywD!Z_CzAj2bK%cjKe%pKr_0>X*=ij;aLM?k4`rVG*K<9$Tzg~DUw(Mb z|7^PRm5*Lu)pKI?y*KyYa!=*|e(C9=+rQNO%D4Y)-F?f$AK!Y{!>xH2SMK`N%MS*> z^_Pj~y^r7jmgVP8oquhe>&suQ+U@?+hSLk5{?PAEow}=U>yNL^d~CyWZ7;m_-LK#A z)u(>*;O;vgzv9;UlZuvZ`P-K+UAnRK-pfzEo&;R&X?yW~YTYL2z!~0DC_`}naFE9UI`hUyU{`8d6Q@5RQt>HsK-PWut ztFE@5y65NTUh&L#E1J(KgH z+dCe7{qk#ny?nd_zGxxDZ8`PcKVeth5HFM@ZRdG79?ZvOL2zYW}Cz4rcx zbASH8WzQ`C{o?;ywvK&i?@-AtpZ$)$r1Hd(H-2UK&hq;6zqaiDVA(6nujRh6{LwqB zUwiPL|NPAle>VS#BL6G(4}bQvMOz;I$#bLkH9h*52)Jp5LtXKQQ0&P(^a z`?h~v)AP0EKm5>meqg0YI|n+Md`8|U-(n&(z{>3X?gTa>2J%wJK;ympMLH$zkTAlt8@1q{P+V8 z)_?cqEB>5)_403q|78EzqbC)A|Lk}FW?gTZE888uk{tK0Tc zgYEfd`=>tl%Ga+W27BKPPv3FR#=kxIm#*L3zWB=9|C#er_e|D{-&-thzo4kNq~e8_ zj8}f+pP3oY?tAe=mf0iA?|UXs=Qhv&Ze!dtI< zhO{&d2JK7ZLO?eBQP^Uu8=}oararjU0z-u_Shc$*|(m2Vg9bnM_+jH z+BaGrero(H%LiYb&ihgIE&un^x>EqV^`xb{GQL=J+Xt`BJz}l;wC@{Nz65#5@BdZj z1BQUk{m7vYykWZ6uC|ChU%agSYZ=5M7F+Uj4~9-o#v+W!B7Uzsaan^!=iM$IoE|Fum8Ij6^54Aw?tQ-)9jorBy!Z0Y=yd=2diUv{I{hafR%`Lp z_dfKl-$Mb6t8?>UTwRom7ORmKpUkMzG_G!rXwfp2|6k94;F4S4_oc74I9_?C_PKZe z^L^V7-1^zG3O@JJe|+@Me?IfsKm4-v^f#_}5GJdKPWo9wF~bW zT)wcwId}VOBcz_k-tk}Ef7on#efhHYX5=h=bK=MExU+5e`jg&s_=DR&_reVi{`HN_ zXP2*k|7j1M_RUK!-1(2o4<0_8dGGvvx0HXc?}|(Af9ly+e{%yPrb@guD@`b+N zZy_`D%qO0DZrk~%FJJgSkH37y{0F|@08d(b@0s}B9p#VIl|KIb@&k8Wa>v^){>V9f zr${wlx}fulg{7se!h7G^t<#x4|AUeD-4%jZjL{kRhTw}=JxRygk}EfN~CZEQ7Ix8D_?wtl5Q1QWPTX6s1H$Dv3zFTP%f0g;b<$ z^S^h-I??ief0pn6^W*)vd7C-+o^zh(wcT@Gim8TY56KY2q-y&TL|r zzehjjR#o~y0d~yR_BP|NoJ~H)MwyFD&Xm%{UujT!cV#VFVmL5~Q`|JR4NT z6~ue!2-}VgL+ih%UiCK2{%qQq6FR1Lx})>TTPh@-us=pcc_%uOvFX%Es!dmWPkZEMZTiP0Vzg4O)yF z9~x9x(lYqBUp2W>(Rana(a=y*|6zb}vw^t2Sfk{XvbKB7q>zdfFKI)(bc!GcMgS=N zRYqWCVrgV(fkw=wf580t2x#c2$H!@e^^L|Qg-FhcT_X%2*wy0=VE|!dl-5x~s}6t= z7O&^)2jqW1{0#s;0lkWhJ`}$%DWWG1%wC5D0=X}ZI;~5P&7`E1=JDHq(YqM}?0s?S z&4)UWIZ)=fk5jBiO2VF}id@~OS}wqApV{?T%u7O)%DwjDC!VnT5+Rc>6|jfom`r$i zr<+sWo+NAge%XA8J0#e;vU(;jvUwvZq5cOcFS!dsgs-#+ucM)drQl34 zIXTY#LSI)73ib?73KA7PHk!$3V_#9`^D9oV8Es?ru+|>CcwtEY5LOUg zjO7h=Kz`mLyxmCADq7GX4g0LO=gJ4KP8Wu<8tcoHruBzEVf9T}Jdfpx=ODN8H>){0 zE9afPSTUe3ALH4%zrvX&#XT#gmOJ+AH8tzuAR4NO@PsbvcHJ48#M0#N@zSr#Zlj;K zW6k<^UI1^I@uQK1~VU+xJLG=%Wkl$D@tu3d zAUWA5x^-MX-N2H4?30*byZwQ&$2|Iaw0k|JQ;)yCt1coobdK%4TCVb;!LCE8x&^Hf z6&zREx@4lCRM+|)xshFXW*RN#cyn8NYgGTxNV4q0P22l~e~a{W^GjdIYa+ zu2kBYRc*qyOMr4h>x>Ua($2@(I6r}hH`hn!e1#ko(kR4P2bxT120}*qUetW&Lfn#i z-bRL3&@v>Ht_h64AOa0Q63;OrkU(OQ7=|sIkR4FwstHl@?hX+(+VaT4+XwpUw9Kil zeI}8)VU}RRua=?xWkNv9Gy~C4%#C50kiA)^WD+=4(bKpN+f;bJ?P(UP08c`p;Sv8mMb)1=BEoo+bVPfc;>gh|o2xuz72$Vc zlpV*YUcX4t?JV#WfY1Dua&2_LE{asGtFfAqOzWAWol#{SSB20+25-K2l<4i~&$F-* zMH!yS#6i2Jfm$t0&{LsxU5P&DtI_f0M=I~cZ|b7&uu~Tp_f&L6-#lzKqUw+9VcB}t zsrUlriK(st8E?-`5e{4F)C<4Xi4>(J8IFmkD9{FFX-AqWdMIu@L}t0CK+-4GXSdXq zb+PuLFuTayENYg4EBbdySn{!#Y>kd0cN$3c`fs(~a^+ikL&U*`Z1S98LqQ4A-7VaP zPKfCfQ;i#NpyJM@2mZ;Voj?BvGXLLWoMzg_)W#ISbe74S;Thv?##lyOMzGo1&l&=2 z2&^HnhQJyEYY40%u!g`I0&57YA+UzPzZ-#VWacDu2d_&KoJtaBpk!bo+e(5$1DRQo z2#H`{A9@)wUy|QCvUNjX;a)x%@FqGXvasK~>BnY8y@7;?(oT2`E_u`Kv zs6@zYNq%pWno^X^o@ABHMdIyEil4M4-iRa@CbM4cxy$zq$v{e2Wdwwlg#A5I2{Koj zpSD}R1vG#D&ouq-Cgru~uOYC8z#0N;2&^HnhQJyEYY40%u!g`I0&57YA+UzPe**zh z5>o2<_y7M!|7(4&A+UzP8UkwwtRb+5z#0N;2&^HnhQJyEYY40%u!g{Y27!71|Nl&H zYrU)?u!g`I0&57YA+UzP8UkwwtRb+5z#0N;2&^HnhQNOV0r32vjI1BR&`Wm*__g-4 zhQJyE|7!@O?IvRshd{U>+fJxLxX8(gtM*vTRqav3dio%+2to}WqD-L{KP%CL2|>DA zfQ7N}1yFp!bYEI-URbz`4+3B5$jKKDBmzTQc_D)I+*J689&OGC7AiplQDx{514M`h z3W)(qZvlD2b^$rUOyF4HPNWJS*vJB9?&a&}gD^w*z_CCA8;qxy9|m83OWDT*W~OE2 zt7fUD;jiZ5CA*#I1G()#6sf}(zWR+Df2c}Hi?8M7=c^Wg^+cgn_%PT2Hz3U!I6@y_ zqCmPcFLy75n}wGzP%2DbS_%r(d6JWn!q@!q^VI-rcp)@_3*UfmzJ)AI7N!V3!wC-{ z2o_;(Vg3Q?Hr__Qni6Wjk15J>J0JKZ-*$XnHSm9V!f0t|Xn?v>KrkPWWlKewI6W&^ z+=_-K5NNtG`ZVF;gh^?5dil8F5e>6m-mBFD0qD7b^_hV3X#u`SLeGQ|FI#dN8XrQz zHLz+F(D#aH0gYC}3qS*3O$)s9Cx}TafQZr1AOn1S@Z_eA|8psXyDSY2@gIWqfV@1A z%SeoXFbz!@Z24@hi7P=aQYB%^G&E?0I{^a~Wy?@c12yP8@p&uoD{2KG7OBz2gn<95 zDA3?5j}gYE@*5QS11aO@_baII#06lrjKCJq`N>+$)9&KEL`#h)9~wMY0E1ZIWIXRL zo!c^o4g&y0pbGFVT6wftL*1%xP)F*7FY)ypgg`wcsQP` z!(^8)r^{TK!2cBK%F5tZRmvbAzlKn-igJ-(u%mm zYLU1tG4X)XZUym52N-WzY6@%|5HElGUQ7Ni4(8ZQpO-QsEHYa_}-Nm z<@f7Rf`Y@u3yFWF!dHm(LjkWt7{K6>mJ*YfRRU`SL;o|C#ED2#3na}|D~ZEETR&I@ z7$Ggqj}>=`RL=^pXvC<3oz0gr#TTcYtA#8Dfj*4&Hz z|9-`AKy>_$R9IQ*%xjVmV275lK69EBc%anK0$OHxi5;RMh2OFKlZxRAc0H7ZVv07DRuWFYGN7&K~~vxfy>J@M|6ahukbD|NkmC6A=`C8|oi&vous1 z5D9<6&5HQrum3CDEDKt5zv5>6`9DMl0@0zpOYQQvU;fiK#`-bfj~F+eG=s2^lN)LU zE;#^k#m>nEGZe}fL;T%#KK#ean0|#VN1{VSqNiX$yL$2HVez+P7|vzB9Dab4S3mc zzR2c0Vc^;$*RY%800Fkcq;2=1e$!{&x(f+;1`Q0#=mna`-5y)c>Kx-*m6)A zd1)CKeqn*mmhMIW`czg9DklY%2hB(DX9aNydd~w}ql#Dho4O1?&|i6hQVcDS0UcIsD^RKkZSFl~%;dsNZ8e zEa<8N1JxtA_A8#Y!C>-Iii88&1)j6@SVBFn(CvI0a6h=K7dGTiu$gm*_ysh-=0vEX zlr(6ctSXN{PE=4-#2<6~9xN+EAtx&%s~}By%)FP#N-gKKi2_K^;lTJk#3iUbq;Ai| zI>%x`(?CsJAb}Y)4T!dZ;tgUbCItUV}HR$7W+6wGTL1qH9Au$#tbIYHnx*2JUau$dt(2ZPFh`)8{g-)q~gK)B4>b}JY(w6@*)(|E2QUVQPk_o{Dfz^m`t zcI#Y}+NwMJYul|WhVRMA{-4`!1+|HSl&loEF}twcDxPvNAXb!S-rs*0J{p8rM=jka zCEi6PZcBXL!V@;XE3_;E4287xa{~ez=Xd!RqC+e^_AEW8(gjakh|Y15%T;Iqxbd{O zNA~N`N;x?>1z8yQ;=PJe1+U^7&_3JjjyyOh}u}Azbgi6Lwrb+Bt53M|E zmUm73P1zIr;xhH|yI<67@@flJOKUZ$9K@|&kJdyrjJXe>o2%F1`q@IKHzKcIm#{&7 z-oiomJ*8y8ifWjZH~&M1Cj>eN5iBGUu2KrpkS+dF2wV z+UTTuOgd${n(AJ=((ZDH(ryKfGu`F3=UTq4*WFcB`wbOz@^N#KLy|O?`qhxuW)iYC zN^_dL-Wk=sNAqi=C?;WS-+u z5LL2Bi9|IvyRK~!z4sjAa5u9iak$Z$_J|KOYB*~o7Ka;_>%%2B9Aim;+Dmb~Shr?o zUvdxbQV|DE?RC?m5}bE&=nPe2v$sWe)Ftk1HXV{*-hT+lQ%kO{rR=)3w-@)_VFah< zQntsEG4K36Ks2nkoqf%7567i+1BW`sH;$X8oW-3iflk+4%YFN(Gqi{vJFZZB{ye>M z)60IRDwU=&T%Q&tl=5;^+$JACRZUt`XS>vb$)sI3a33E@MSkjK+wXDRH3jlqM(;DO zqn#e-bkc2lXR(#n#!BTj=RVCwT!}Gs`V~y87xxaaH)HU#W=!hLL7Wpe;u~&=xgB@5 z|J;Yx{zOXeu)Y3OO zDAh_$sz2?miW9y_SDum63z37kq<;$M>0)~GmRgS88uD&jb()J`vekKa%%v?9335mE zAse_UIX^QWzqof?Tcp)*ibMvFnYCl~Wayh=T->na?Ar@_Kffw3 zd0XS~F&npAz`CU1LoIFT4c+{A0~^m)aye<9YYFccs}ALMV6sZ@F6aG#!{My`;5D5M zZG)kuq)mhGl4mt)AG=oI!X|vF+M#(P9r7E1wyG>Kr6gDA3yvjI#;Zx3#neZ>$N0gk zU+dlC34oyL_Giz+D&3Y+gx!_B+BZl*iip;rrVNW^{W}zaFEP7>B8DOBalb(kkn(wo z$fIx;zcGFC)Y$uoKpuCpo`a$|+x(+N?9tiDJV(!tK90c7_}z94?Z?ehIpI)Mv+r;P zWgl_IJ3bFYe7KZ_Ym!sOoxD8Vh`WD-2^VI3YvR@EFLJGUO&X0ncc@SWp`WqK{E zTPOTBtK7TW$pxw_Ub*ia1d=;r#Bqk>WzJF**)ngZ3E$oW)dNx2m2nKr+bV`Lk>^Yco=oyVnoMqAD#GTaf7rO)S$3C z$hd#z6-s*ANvW|H_+}?A=61{e6S$pD9+Nc%20hG`p*hZ8@pX+Q^6axamBeRp_fMb0 z-L$rx-dSpa+o|glQao)7KIfsxQ=^ZPuo>LmOcIKiJMPa!O0=xgSPsV>)4wp7Uh{R9 zv=5h-#eSRpj^j?#$$epQaio=@Re8dVCJ~O+kNYOxM#e!tJ(l}kviXJG%fa^vqy~2V zk7`t!N4LagU3=i9nYE2m%qwFjZh*W#g878Q#VRs~6P~5lZD*&?pQ6X91;eZBOtB#a zwY}QkzeqAlO;h#UkWHcjg=@RM1#)Kxm7%e!@@11@Wl%B)7Cr9QQR2Yue9=4_5t{u# z5x7&$_?r9BCE+@Grse_Mty0HJn;lN@n`}VHlxX2BVNy0MM65fj?7VKL zvBX`vYiBmG%ip6PbE_(Spa45&YkQk)|Ugp4y4}CHj|yo?X5Ytx1BdCzC-#Ar?r`+ z8>3{vWztZ(G~Q^2`xlzVHunuTaygKqyYOv;j@;UMT_r|D2!k%_A@M$BY4Hl4mckVx zofOR3rMdgqxnrC6Jbl4w)5qoh(rSu#+;c-wqIhbFTcMSqn_lWTZ-9|0vz=a*ui-xH z$D(JqyiBD`r3&IbbcAikhN1P}Q?Gg(W`8zq%n2P+JKfQFEx7Syr46N>p}Es)@aPK2@E6G^GSLv*Ci$l*v94vI2>ZiR7SY zh=Nd1+DAzM3ywzZ0es?3&?sQ(v0ey_wwDhABS~B!dvV3fE|=VIHWe}u7ioF;sLT@f zMB2nmx7nb@xbdMug(WS6fBRLFD;0fL{2L7oCG{T$7&jY;>x(r?UMXw4$4m;TNb!<3 z#7n0La$p32(qCl+#AUbtd;~Of)Z^nc!um$zl0qcs#I6wr5bWylhA@CIGD_TC8acv-~Nl<3H8Aj`))qefy{w2 z$9YrZlZT{0XaX%Hnw}Pdo>?mA_fd$yqt??8S-! zb@>?2&ixh6G%4;`F}2*WU$3cI4+qguMT94GQMc>P&?J^7e~*`bRdyTwyd8rUKmJwH z!ewWS`j~Uz=h`C2>bDQGCZ1nb%+krWNH>`Iz{EAOPhEC{RV7!{z>e?SGX}}YKGCh? z`soIi>|>wA4BPDwj6LSj*Q4F*DV=)!^<8xlv7vKp@6~dZ4-Ix5O4TiBji}(b($*yt z{iM3q@5qhp!ZXuoF~^(R(p#hY_ZGAj=UO+MLJw`Wjj5zMnCaKSb? zp>$1P`~?v#FaEwr48xX9$POrT)r2T{cZY}?ZFywj?E`&vTIN*OK9k7YFiSAuSIf}; zG9jR4nt^C2=Eks0$lfedG6|fj=xJPsZ7RIq_B4xCfG45Q@QGrm$g`6*r#gDguUX!u z=+vX#sTO&6Hq+!xY5#yc+tmiyH-j5@xLCNgF&|8Nc-+{xQO%XK|9rG>z&-ztf%_zY zu>0XkBQDsjbHSgC z5?lTZ?ly`s(L-CnyGiv=keIiMdM3Jyl*g`TIMG~Y(@`fJ7L}lNlQysYwu2Bxa*rUS z-2UGFSlPbO!ZY5Va`X7OqUui_5n;SZI-)&JapY)~%~c+*r^MQdn&r3Zyq)qQT505uxvf+RD6N*#8g*+jJM~e z2#2k7>V;qHM2gaq49CP%6ljC8v?EOwJrp+{BD366AnB9pvs>!Qx>);Am|bLU7B$Pj z75%#;Ecw_=wnj&hI}Idz{kK|gx$-T&A>v>|HhIplp`e85?iOxCC&cuLsm2XBAk1Is z4IdRqHsJd|3FIUMa+1=V;yF_k6A8n5@IMj`P`m%ve@-~Ar!cPyWODO@d!XUICTIkh z!wSfq1(%dHmspx}3A;$lB-~6rqbu0y<-l}y;kOzR?P89Zw?9=@xQwwg~iTHpFhNqzb@^l zQicfl$&JPKkhLn8wAqyMQgA8xehohSW+&S_>qjz`yAllZIQUP&HLlOrq;lx)I`L}9 z78QjTvs3Oyw7XDOPoECX=Z~Y2iIHJum^pKegXOa`ce#axI_~UW`AqWK&KT0qs&>ae zH%e}Mrh3b3X46>PXN(QaipeB(F2%kjb9b<7b3X zjCL@LvfakMq+R|Y`Cd01gm-+)arO4dAAac-%$YXrxM3tEiEUQ{dH(5=qDJy#YOsXH zp7r_lgn;E9qTeUfbocX>XBc)d4(M{A{_-CbOZ=z>nP#2_ni0)J=RI|R;?A?B> z+5YV@8I_}rwax)pxh9fxpKmXNV{et~-wbAJ2&^|>oHTwLJc6dA9v zA*{DrXlq1Iw=Y|p@B4r=wj9B#d7rHMvl)77TE{I&)g7LWU>*8-9!|v=kW}eD8t2@f zmK!G7IjC$9^0_OW4tqRwbKv0K0Y}L+TrRRoHUt~syxGB6fTty>e9PvP)Mr5`;C(0A1ZykM(st5V1dUpB*G18+oSJoqvvRy@TxqZ522Q!zn*sOTi)d3;!m%q zs$|%v_8sS9ZnNYeCs*D5oRwFEU7el_?e0|2afc_xLm{-{bTyl1-go8no;1GVGtG<% zJW2$H-yEkGu zrmmBOFU~Npp;nNbbFb0+n##n3Umfo5+a|7KE|qxlLGH_jLD80JPsK|1nTN?Qdk#fx zYS~uPGuafjF@HdX@>t&lU)&Z}?U!*3;w(Pud1~$JR8O49k9?7MvC&beGd$K=RnuC6 z)OlwX`re)EGzq-zt-a2NNX55(mmpQebdujmrzux>9;;e^%04%oguy6H#@pL%= zqG4Vbbzo8Gy%EQuij$5;uXbNL;J0t5famV5h1l#Ho!Pw(x8&T{e~S?UTSDXnLtEZI zK)p6=+?}INuJDPquO>Xk<9YwZxWUnnO#A`Y8Czn!BL}K3J4q(jeBAE-ni^PKwVbpV zCWp5t?y%h8JqZ$;kiodEj(m>sQI8pyFtG!W_(zq{XZks3r&=59KjnxVMkQc0 zICys*tT@+7u1MJ$U_tA+r4x6xq^bAgisf6c%bv}al1smI z>R>v@cKG`i)|2R$ZUlhXzxT$)wC-@UZOi+&gI~wCN2(rLH*GdaofCZnB1oxF z5)&Bb%KU}02L9=&WY9x-&KdPL_a1x-x%xC?v&`gEht18Ki|DZOeKeDh7~N5d$?kh` zmeW1$7X$Aq40$@9%Z}?+#JKj}-*}mZ zvx`R%|pVeQM3%>GUc0B++q#;AuPQ|Vn zjY4mF5J6cCl{P*2X1{t@+^I3>amx)*olv^^_T2 z8D0>+O^o-ilH;l7q2s2L6($@v*mPaqj#zpP4!(UgeV55U|AVK-pz#)G=0xk05$9gr z8heMBYM-guakMAGfVP4^^jZ~{^mlvRcQ8zd8=^I{>uk5z?##*7fO1|T^mj`8Sfg)f zWpZeg6{)(0#@i>)p1m4;RfF@aOi^P!+L%v%!M4m@b=R(4>$1XgBwU#(zM7rk8JkSV zjEBhi7V|)(u5B8sPl~=x{t{iKy2ZJa`>3it<3LU!_zis;6(wa04K=m1c@S-+kyvp@ zGyB&MB{ki`Vq#AoQ|Oa@v#ijI6g=Gyl=%m+j5Xiw*h*R#w_jvEX- zu4$vt*YLG65g+b#PTGPxpl*GQV|s6b5;@HavTaw7hrOIQ{O&VUphgEB{nwP5I7E4>oTSy;Cnr8rYueWuzIF`nBML5S5xn5&C6P zNp7XxsHq4SMq@`&2S0^T2nJa{^Ik;e+pU2S>Gl`1F!Zo^3`M0($gvYgutlW`ZKsk( z485a=qY;pGgGxq}L9UpI>`&oeHca0MG_8r8I6_hzXTkDXsHq!vk@IEgr-8E?!xSEL zbw&r|cps>cowgtfG;W(CmA>I z*>>b@#UmXiyZSG>y4<5|l9ER@lTY4kA8wgJGR7DZ9+xT7y7$=m+{%|TB7i}$_W=G0 zih_!d96kCf|Fy%1uiXa>D9I#!Qf>=tD%oC%kzgB)W9SJ@ zM~17FX56t?SJZxec^cY~y$QRy$m{?(9IMf7g7;7p_RyZ(cN)8dk~fCDX1=+5#37G& z8@m98Y;1%VaE>*k*>tbkyjk0}r$s>q6*5R}aZe@Jd0ntjiA`@jr@%ub^EEHe09R&i z-wC^ljVzr0W1cK79$T5&KF8^lJzsamf?)dQ6)z)b^7W1uKU%V!H$|l}jXkp?9Ao+e9@l%Iz0P+F&bJBPY0>6M z>1O(@p_QguL@VPr_Oi+I$rbZK9uKt4K%Db1>#)@N+#bhUv6Hm!(VySm%=dg`dL4Cp zAa38whYs6{P=)E+S_^6hTXGcJWtEhs1SF<5d3xTw6Oms?Rxui0`!$|~-aK_ob%2HP zs)=HiQ-;Nv&fS4f#m~>)=D$xq$*EUu@j!|+(+92U)c@9<>*ko?&5RxMmrlDn_e^VU)h{uhP^Yoy+EO=J}qKVW;!z}v%K zEycfkD|WX?<{phN6O*^hvJ-rr9_#S;8#j>Tf8;5eqTJ`y@5pmpG5>Vao70``f%>k+ zoRy&sDRRa_P{r46)M=e{7Zf$+7MY$zCudCImuq25^WfbjED1HYUvm@rq zYxc3WBbvrTH{tK-G8D^c7{vKo-yn)^zST0iyp3AsBsL;L;E`wGJ@8B6C@VgIwN)|= z^DY_+wthZHQ=ZvKZs!P#x(3S>Z0+iQjVrxRQ_fEnk*Y17ZZNC5FCu-*Btz%Ndm@`F z9lb_z-_MTMuirG4e{KfVt#Uy_UPNi1MKtF1-p^A5`!4OyyY=SQn@+CISJ7d(;Ol+k z%{y8KtL##(;uUqy9B`u;E=CowT3w_T>Ki}*w9SFnhABDIptycArXV9HXXsq}yXhM; z2U$i!!mMIH7^9x%A8N3}R++@_c;UtTI4md6p)+6O2Fmx-9}NHWu4b&6 z-d}&u&54{u#j#h?4FYg;+CkUcwkI>ZXDY>extKr74qW8NT{dkq*SRYiWs>#W>(t#Z zlj%{lV$)lYGshH~$O}%N^T}#1Au{{076c72|}+%%Sv{M;T>r{X+H4L z|J5Ic03|8K#B^Km6B2mAcJ&^|moV4CEghW1@x zC?IJjg!U=Mt%qzNC%0Z6>1Z|=+BcuO-oyt8$whk1{Yl(-G0)8McFThQek+WR$cu@n zBU8e%{}_h@_~9sk5zY7j`9(J;AO#$naLY;%&)p=ikm9nRgaC%XQ5z5p6NHiZVx9;O zi8(Mdd=PLXfC89TgSZJ0w!GxqWfT8#C5WB1h#rOy=lm_W{!!A6A7WJJ>2W^k#yos0 z20bnfBVE}=42ZXrSCp57;TPox7cou>zhj5cXv` zE{Ht|`H9n`{Fvinkr4hg!Nm`Jh$n;9aUx(j7X><>qyns0fthy{1!wb9rX?hjn7?{Cw#3v7((nocU)6({n7~)?AjU4w$)rzEr1QGrH#~?JQmL%0 z9>A!1X?ZExmDK}L??65xa9#gyaTcPd;peiT9+r3z6UEN!{kuJg@etutdn{BRh}jPY z5Jx-22H-7n$hKIa6)bYu)zf>Rmsas1q9fVue9ON6I|)6YgrpM$LA}VUf5Qe}$nv$4 zbvD<{pXIh#xCs!UKeEF@ZVPd#OyE^a2hWWVhL~W`<|9t^v6LH$zgy(KSeE^y^Gq!S zK885e$kN9UEruL%+r`HcJl0oX>V+@>BJ0=;q}E>)iSS=;=I>h0)bl!Q6)6cu+CgEU zDYG(1&l%Km__wnk3_hZ+jsF=(6Fm(-k(D_5-&!F8oG>WG@ZtXiS${hlko6blUi5i^ z-=}~p54gb3&I8va;3@$wcHr6%Tp7Ss1YDo9N~1Fjh0N(8P1-~#;t4+7T-;3@{L zi@=oxT&chXQZcxzkPBR(hiM9M9RRL4;ED&Xbl^&Z`-EV;FmoxRfEr)^0bXc?FA%b1 zfe6MDT&Ps|NI*gWT+BdEGh;I&!p9gVtzbVC8mocw#kWU+9s(|K3?cdOTx)e7l&iNU z!rcq$1=bFmb4#0l0PqDozz2(OWQ~UV0gnQ5Ct~NjR{`rv%{_?dPBpZvrbYK03U=x0<)N(0c6Pxh#qB$L;|U{-1Lxch~ULKAWNzvIfW4yMOt}G z;26w-RN@E}m_h=Bx4nM^Z64~mQGkhP07$L9Lg8q)W%m#b(;N%T7VN?V4mf21;U{Q} zvAZ6ax*Q4jQFFz51p){Iy@Hte0(Pv0Cmbm?_l%zaX%1A8Q(LTg0;V^y_QHBD`A7rc zcc2QwPY^T@@bd#Rfan2b;(!utQbxdBFXq?SqjRy+!xza*<0EOA+X>9>_giC;j5inY~2jV9K z!q3{u3*+VDKbG`b%62QY>drx04fQBhZw=p-T;N*Cjbn5bw*kWd=Oa1Zb{Qs zkOYi86hSBJfm{tN0Z5v9Nc^vPiUZT>ugoUuCYsuD0OfGsC2J)jOD9EmkU1Omff zSUe55k81!>eh@)eMIV4$K)BS9Ze|Gh{9j9l{#$a#1dv{TCU!uY!vGx{0fswb7eHe` z&M7b@HSiHWC-oee{ESzCspGj7KLHGY8p0ne$M$R7=6RhkHG*#z2;|(I+MrZeDsza5 zgg|V%7Dk4eC|7MD-J26(w5!wAFGw0cAa}Uy+$t?!N21=rfm&h^8UU4Q1!ECN5X8kS z-YXLdc#jz>NC)lZ2J!?bmb{RlWXJR7JYY-cb%|;M#hL|5Llclaph){E=bB?teim?G zL9rnFftiGjk#jaD0w{`!3YnJ{e59*uktKX&0Z9LOK3^)kh#;A}L(>c6=K~K>!OqY!ly6BNqF5ROF5J=+-VH7`VdxjJfq_c*Ya3mS9j zT$ca~EaLpY3G(+RBnOZro;Bb;MhGn0%k^jKZSJAV$kQtnDCG$TnXXJ9nrL_sXr-tj zk*Ik|i9nhG>?r2tE*tgSpKkZ1u4N5g?_4WPxGQ~pwrR*|Y^bFvMnP>O~F`~k`o05(q) zU==K(aUvr6agc=Vl%Fp5N_?#zfC2RmMmqqBU$c1vUMk9#kO6_ew9GUK-GMx29^mfo z6-=lZ>xOa-0IfK@kOTQ)IRjei5gw0m(gv2u*d54Q4OChJ#3Bj}aJu(W<+oI`FX$odjQz+g5hNj zykNqy0qCD0v}~&s2{0F4n$Me!2seN(enPe@t7mW!bMyO^Hd_f}O|%zaH2en2YHn_z z$ppxKz{&!cRSPJb2-?mTC_ul1Zw`PdrKzo{LXh_;v=?AU!hHZ%Lj$taBLFlUeNub^_my7Y4`MCWaL9FmLIX@G;Z2AqNTEa-000rQM=qellymv#+UZz$spNSZ6#LpW z>5YBe_5-(B_53KKn9+eyp^?UdfCpxXa-Vu620<%+bsep$Po|1W#4d)OD6;INhVDrJM4cZfLy|NR z&!*$RbCh3MGlVLdS65Wt@#|Me7MJCdulHkKK!wy;-w2v1Z=j^~-vLj2dPO?fwWGy< zQwv16q0Jew_7QxTJ&%X>y-zIcIJ5jk2v!8^7VCf@{g30M~5gIAKg5>JzaEj zhN%kjUCT6d$kDF(^XZ#v2dL@}47OX;?^9_>ewTTFX7HB9$(bm|CguBDds!m{D+Sub zYs2GJjmgQ(Me0j~+4d{(!A+R^%_k+kbc>~(J;PNo=CH5w#&~y=dkftg9jxOXc(uO2 zqu+?m+oH)KCahy=I@>2V9viIpi5h!MBu(SfUBe||PYnx^g-D09$&aX!cHjEZ?is~) z5*$~{>mtY2bKRgOcR;DM zuyJA7_Y`M4Ozl;&U36Ee`D7EP4v+5XI~{aYpT+Cy)vqNbJ;|a6w%d6Kupc}6B%wd? znjHCV$Yd1cdxt{Iw$kkxa!O_P%|yK7~|$^96PC^&4vwV3p4&pk6}7s+ykR z)~qgJCY>3FujkT>RhYM(yQpxu*JS(keAcFmB2LKtdVK4pdC1W6{Z?s%#v?X7ht1)< z+vVwp{E{!`h&)tzc<0<1eyIk&9%deyw#~2UVnQpoi*A$nF1%m-!v)4*Hy<0shC9*2 zCr)xh&G%TlZV+RP)Am1;rl9PZ4K-Nj9>9Di=JiJbN?ZC>h_$P<_L(Y9xFJT=}tN^RSB5nEZ&)l@rF0#jJ0 za)i_7Jj}z!Z(RbTL4y`gD_o79LA|}}@UG3J{7-IYD&BVM-c#K0toj?jnY>xWr6*ce zaXCA7ph!!y3b1|h2zVfE;}b10Pj*%p53-hqpJC|1?i5_-EoNLZZ|!d`AduFf04$Gllkw6srcy`_6L zHRAmx7=K0mg=TxJxHo~Y((M+z8`{`)TsNg&_WZ!X=4+b47EdMTlB}w9Yc%TVa&}0awG}PILH8dGqL$y9UhflX&B8^p3Wq!rN<|7_fwp+x#Loqdm zoxMNPo0nc_=IpRq=^I5>?~Ci=4(q_rBtn&a4(Fv(Uy-9W(f<^BVSJlvnekDD@*zX7 z06Qw)7ZV%2d=C$%jPi2kiM-2!951sx@`aNmLA&??DKk4vLn%6aGo&H?yX`hQm7!B^ zjCbs^$WAz0nS|_<+aSk9emFl^zvfP0UgziY=>BdJj&mvYPY++(FcqKwwI?%YOmOC1 zA4Zay&7xD_EWi1l59zOmN=h}*qX0+iz`jH=zdU(ne}}1_)wA306mCyv@9`*js?sD) zSkVT-kK7*x#nH;N91nbKhb`6PU1elcU>D^`-X4CNI4X~s+qWrzk z)6lMG1GKv!>OvLBFp_gIsxQ8od!I*yKaM-%>l(v$ojF|1Jli5B&{>wMXqRhYgTVXb z+=5G!vC$MCk{`6~qe|T{d7xHRB!}0TT2D!cUHCMAT?>Y$jEh%*=P-hgN0jtw)FySP zi<$XQSh`#0AvQ1U`@f1d?s%19CULuaFUb@=wBk^$rG$~SNr4tQXodI_vCwwDQhj3^i-?6?6VOV-Kb*fvZin zj2kE~o`OEnX6L@9myk+bCeN&Ilc;L+@Fk1x&8g68a=sDaqu8{^)%(Z&lgoUZqj)wJ z(433>>qXOXf#?Qa&iw6(8a9Th&)JQg?(Ne%+j1R}@1i^N@Jli`)@5L}!7hzlu~yLr z#o{GT|6uD2YddL+3`QKAZF9Wnr1$g@`K}jaMOJFc362I751({TAC@I$o;kdSPBq;F zR>9ZG(YQ+!*OxuDh3aUu`LNry%C`yH@3r6mm08(feT;spi_2r`ZeQD}w}FM4Zv*e2 z)@w<)sJ`A7D#}S6$KC;L+We&K*f+zc+)h$$igGp^CFv4(*jU-auO4s_4w8-Y6~taf zlE&!k6?EqJPc>{8I{f*37Hu7a6l{a9VA+24OsLuE$L9*T|)}vnUXFF`#`~2Eh`XFn&`VW_!W==Sm-spU* zV9{ris&VyAK4*Kr=t;)Z#$q?skG%D)s+qj?QC;f_71%W*b8d;=MN`+Qg3P`ZA)n@R zF>uU4%{E4LzrJky5jN5b&0?_;h6ZQc9(x{Izk&XA&-pZHVU#nomvCCp_xiLTjz;4| zzwlc_&F&u*w!HslQ-ORs6#D$+_!fOby1x3rN5M>)(o=exFKr93*F9T>xMVX^AyfO0 z9#pN5jVj`^bxr>3WR%g)qRht)mWBmYC}hz-_CU#t_Eq~YM-L_3J$IM(tfA}vWNjI% zfXvj}?3H_>Lt;rX#HQ@{6;(>J!D-2&5Bt^|#DBP) zxa;VPXyZ%F7*6uo=bg|mn;)M)cimp9QCLt>rH}G_pATb>#q|^u z4bE2zpHe-P>MlNXlj3mbY`lG9M0j_JQuV&JT*FE$=|)X%JtyPdv~I_s;+Y%PH68a} zvd16YWrhftzT$FFI8#>~({`x$NZjt^Oly?JnV7zJ2W`dfiJ3XGiD%g72uLI<8Xb1l zhWRRN9qA`eSKIyW4hA{AVfK!OiK_Ay(FcwCXSY>+WNK-8BgcOWYfQzzQUBcq!y7Rq zQWNUFm-zek3G03+6z~$EmNiTIZkEcQq0eQMxbX-D4x{7Sv0E_q{u7g)?x@;Qx~NW) zA!_O>I&$4@NoEqM8}!aH__|gLQ~QMF@&rLSBa_#eMeiaXEj$q8YBca>@7D*jzK0b# z1QhiBx}HoSQ$pyWf$N=3c4bL5yx1FGdXSXb;g?@uQG9vjrJtn4VL?$iF?&4< zCVH-4VH>jA?Xn3buD_3BD#P!*-4Rq`A^Y?E&z`6r(yM}7Pj-9i#OsM^oXPu32wHZ; zK9+T3F$0pGq~rSKqVy=i2U4a1tS74*wgf#XMuza`$GShcLH*9uqd&)x{_?(9QxQ>) z(oTceakN>%g|faTb%m=jC#6MhOqh4tjU_->qr}*nAjoiTKKfI3-Us9<8a4*fl0^sY zSIf}ka&?dw40%5zaKTzNxJ@aRueeltWizo(NC%RI*N9-KnH)XODI1i)MCv&I zv|ad_5B2Q+A8x)p^#rOVTd%w&OaiXYg-9r^LeOLOLYUuA@ED0BI0O4fSkcl!+lC!( zR9Ivv1+7z~zq7HLM(EAam?XKlR<=N~1k-UYpm5Eu0vnyn`xxVRv_)i-EG~>qrdxlr z-qdpPUg8zL4X3AFIcm=7UfY`Dqrvj zZTE$c;G9lJ{sG;ik*5Bi%LbYY)Q}ey*5&--5(xmb6ts@ zIdAZk6NM~C==+obE9BRyhC6d!r+ zupWAQ7#=_HxKn$?lXvhMB0U`)v{~?mRyptEF136f0cUIIG0M{717rw!5`)77Ld^kI zQ&OR4-@kluIsS6ISo76{ick*h@m#MB>*=J=@MUIDTFaw+DJFTh6`DHYm8$ zqPZbI?rHDLPG8jypH8gK*T42%zdn19h9h?x`}lj`oA*0kst0bHkti6Mvfk?5#wBem zmOSYl^o{HCWZOjjut~A=MkOEa&y^qd_TRMmE>ZUJ(lgsWEwM4iWVb1uJ{J9;nE0VB zMva;*N_C$fC!UEjWPSuqueG=z-H1oNM z?Q__U@3J=zz3QH@e^An--x6^5wq{!erbEx zxaC#2()Ujy;pNklcdBptS4iVh&F-EgZ5xqsJ%OI8GnebR(=ysAS?k7IyEE->ml6&4 z?6=^L^2Md!F0m$t&2-Ox`gT<}Fy<{y>tQ3=%c3$`FLERNS+@F_)i+0^bQwMtWc z78WkAb*wpamlJNMW}FxK+;C~YV z?hT+H)cg+P1ye_$3r z+hwVe_5PXH;Y!FaFw2rK6SN`*y;x1v+v^{PnJjU)Ud6Q^%ttIQ3xq%cB4agwd9aO~ ztd#t}p}rPSfk{eXdBsal_t2$Ts&_3!iT%T1lR0u(9ft+!x+)Gp6-S@~@1Inabq7uo z30}F2{Dr}v+0oF1S$oMXRaHRU*guFhA@)$^SJVnvf}4xUkFh2T2>fZN$qzh?CzjP= z0@RQkY_3WrKvhe*YoYS!YU?mxn{ciR!o7bQY69xYAM5mL>7th)-gIS`bs69xP^mwtnfg<*a`SdsS_b9M$ci|^<2OQ>mI;|ZC9NN%{Le`XSXVH? z{2Ww&NLq6@6V_t>-oHUw_yq2RK&tuhIC+%(Qqr@ebRvJdA zK)jlD2#}e);#?iw->(BGHBY;S@WpZrDtv%C0OAuB0BHy%7@UAYBSdsr8zYxuVZEKt z5(#*+0fE5(Aus^%dMTi`-%nKCSS@0{ zCBaM;f94^cg2CtiBZqt@rPrqpCohJ4o_{U+-~AmAW2F@r5C>lYQ{9MzGnT%(`7ci} zh#@wyiSH%Wr95G@_yXb{XjA~;@b?R^88EiX#0!acPy>0&$q(fPIHCbm50w&=l2TNX zf#-f(C48R}&bJ-K_htL3A*8sO^(4z=1vKiZby`x0_gaF3qhd4=Q$`8}0d9mUI-NA_o?<3RaN?M-2o6!0`cJT0Z#5jo&Go zPK+zqnI~Yvcw$umjtBk-@^Zs^ssQr`{@(@gNLvD^6by!!05GUL;kS$|;kT?TAx7K@ zD31Yp|A9`%_$5$9;(c%dBz#aFd`kG%s;&!uO>>S-M8EL9O*F!Dtuc6KP^tO9@Q!id z*o1-0$rbJgx=UK>5lVf4tF9WXGT%5vMOuFDKEkYE(78Y7W<38V1_+N@xGNC!{Rdp< zE#}$+gn^uyVd;rpG)=+PZ~`2z5KHC* z%n@+EB0vYYmm+~w{Aj=}IAr0&ptAdRDzP9e$ zQfXDaqv?pE5M~WoG@W%(SZOQ7=RV2x^rEs88L3i#D5^w7}fYNK8ybZ-sHbhmLWp_ z3|R)A`adem82rQs?tgz%mW839F#HKw78d~*^*=_IA%ft3fgwHL3$q}_x?OFH31jdx zyBZTQ0<-Nu%dQp_0_}f3E|G$6!`zdgNf}B9FT$l1sCRFGk7ySH#gbGrqgbH}>@@zm($HcXS z3clLZ%JhME0&Na*eGxd37;V>e&qwiuXDEbQpQ-_udN=kJ#_XVImh5x)3$S-IXFfX9 z&bb5cQPArEg_x*nf~34kk*L=Fmmm=O5rgLQ{gM`x%X{j)J2QNnUI4ii=4vio@wYuS z{h=^^{ONcf%>}i@1NV=@2m*=(J=^fr2N`|+RhzFG;>%PJ$VXm!Og6q6=M7K!Lx$-gJPN#6rBPv8>A&O zt>TUrJ*TDz0BnBCE8P{3CLZ@Jfgbji0Qo%&#|Je&>%4SM3^<`@syqVVG6~@lrJFo{ z81mAq;SMIXX^E3NvHQMy9CLBF`iQOrgko=}#sLIm`9d^$MhU=~5!s3yn=~q-O zcbD#6@(g4XcS%*1{~F-*C|fD(ylEGsCJEJSpi}a>x)-!6({J9j#z!U+FO@Y{-|w;i z+Wragxv7EOU7c$Bj$>`>2~>64EIN^Uakfuf-_miFi;^(CiUUH?zyu}y(WbAYA$i;Am>Nxn*9W}Z;J?v(KXfJ}z3em;WD;MvGHX#r;2C%5b+=nnrv>}-qZXRXyXjxODunM2ba^M|Zf#i8lrK1PsrR~r z*fb;g*9;j$#urQtc(vAwTHK6Idku6ine0+3w)IcY=BIse(a`Y$z6%5Y>(gIO3x=O1 z%-UOb>(JdC7jqgdK8|-U)3oHjc77uq{j%!;2W_c~o9qV#(&hWjDXRJ}jye+OQcJoq zj8-t~&JS0A7JKi7H9h6uG-{MP8d65iXMd4%?AE0jRf8w^+>8dd+oR|;4|;Y5XvhGW9ZrZ*e_QN_M9%@NH{h|6E-|N{E(HE^@LcR6izjx zql44wU|o0FV?dblRLs)S5-w04BHVumQ3jKhtnDe!Ae@>hj|{c&5pk4>k0W)fX`eA0 z82TpGP)5c#W~-!{{mOla02v8S-EmSTFRL(~&S@g#&WL2wt5@bwR{Co%k{j>`JH%X4 zeQ93h^U8Tobq;>o|LLt!B7;HjW9RnQA+EL;jG4_pxMx}lNDD268W|H}F&z8o*?RJ` z`kji{c}O~gHx~aM;5j;p3_aX}vdg{^M_Rben<347w&2t}CK9&a~Y=u~Dcan&JT_nkCa>LW=#&tH+y zF4RQKyxgx{?R#XeP$_di^lr|li?Ig;B2u9(du5bykCenVarO2$2gW^0!2be$P#d^2 z&O<2Cwn8x{va0&EMmb$j_$j|Rw;tFF?Qhfg$kgS;hTNc6(non9RSYsy?)DM4Buf?4($bZ2-%C4-E=Y1}Sx)+9jDoEZz*CpMw* zCIees_aN!+lle;ZygDt1_QrpviBrGp;BItJP%NbBlvpfXp9k60Ziw=jjPG^j`(i|& z4ttz*$rL=v*?&vIK!5lIV?!2emG|`F{LIYPAFbo1p3+W_xDi!^yQ+mnMoL$Det0Tp zIYV3%-^2TIT7TsO^g1tTml?8)HO(fk? zu0&xE77N(zoxb#hVBk#=_5o2^JFS7CtO)rqX*SL?xEPLs>E&@(OQs$Jxgkm})Oel)3v2HRL6R9@uN}sR&qW#@5jA!@ z$E#1wYM$TICzli>K}hlqaq6DySI5x?|M9C984q$}3UxWq2b97!xjR3 zFPtD~KUV#wl1b*R`Q6IbuACRi^?-e1>563Y>;#uXkfVBr$HI>C6PNO{OqshrSTNW< z+uKfDXTD(jnmiX+h{47aj>Nt@r^>xt^0h>-WZpEWN*^c{Z`*?fm%A8>&wDYMWFTwV zxKQsIVKUshGmeuFQv^Byl-X0_$d6rV90*EsiV{!EDqj^&WrNgi!rCW0xU-KlR?eSPh0 z=CMjFikn4}IwGzsb@hC>8*|BxGJ!u`)N=9KKCa>Aw1v!Pribn|EEdf&yOqZ7NwHg~tc#iGDe>oX^EMMXuJxw$#lLEBh~oF^KoZ%_4S)60hDvX36- zD9ilvku-|}Yv_@(o`X;M;Zh|I8v3dE_d1KF?74hrchcj>dW)q?bj#hOKWHhi$EvNZ z?Na~Q9Y%xvi-%MTR-)@t85%=(T3CfLu-~5(D6cCQE^poWgvjsX;$zjwQr1~I*>L@D z9hses+<86xk8_2}DTj|&5{gqF6h|UvyUTuUpfsfMOql>%8j$|3bWK0TYP(c2sf5`Cb7*l&e};Xv#H%-YM?S9(CL+4 zk3TLc`MY5M()|aN4Y(foRG!2pXAR8XF;v}#7kO;lfXlw93s=PVT&A$~_?;|wY$^NW zuwXG4t|unK9{MBhcNg+=AkTIYwI7z@YV>o=9WM?zj(y_NsCHC4_Pb?OB%PFn35kgl z+tHrWndb`(y4*BnqEA(-nz;KqlvJ?u-^6R|J^po%xcMW)S$W49lEAWgiRmBO(a=Xv1<=WsO3@QA$X4^}=NrMC<`{4HwD-91rGy&WyUno# zJm3$j?zws{B>Zs82l=U7~)-OdLA9*;;g16!)!`>fQ zSoP_4Pe6|gmvK$5(R6yo)?y;pH*L&f%~q{HVvuF^|PRo=LK*ot9hD&NyR{bnm2eh4O)B<~BZ3 zW?>@R%l8F)oH{F7<>d#=E-fB>7%$A&aY|}5WAgJ=cH5=OHlc?*;WbY5kq(o7mpd*h zeBqg!Z(eXEcO%&=YSjIiD2|=zMEW)L>hwofxDN^(H;eH$@yqi!P-h!;&{ATdogL!+Mg&tldE*7-x(P$C04`d((-($%EQN}!qeJCsP>_0 z6g&1j|4VIv8rGgA>ZAlNZ=sZwUT!w4ZbTlS&yfc|rr!mhmzxK_4d4jm;Owz=P?KiI zJo?3oPf6D|a@0;-KSwuAkv!t;o7$cecc?nC{ZiTtH1{_3G0EaLXU}(ZtbD@_I>(!R zYzKQHl#bQb`Rvl^h$@CLf-dsI$i>T|BUkvF#+`*Kr6v>DCmG4%{QFa`^xu5^@IGZ> zyyv@V{*@04?L#L8=pUIM3X~QtR~{)Zzr0^LrRha80wL-hf2!tU{M(Ts*gJcKZ(r-9 zh>7xmT?aOqpvVJTSeV5oi^tE}Wy|uY}&JE!y zB|Rzd=EfJ8(9(#%&v>A6%8ZlVqL5y@y7Wb_o;U9<(_Th$Hkco}Y(_a1@mA8TyZxlQ zhhRnRNx_RJ>m;j;E|E>$Ql>3gvA2ETsW&5E)w^88CyJC0v^PY&F+3F}OQl!!-f=$B zQ`PZQ_{ta`tC?IVrPU?vFYQHqL+$d2C`5g^R7c4Tb;QT4fqfl4kE(>sm?BDgmnp=_ zUb-a_GIt!ddXV;xtnkfeZL=GL)1HwHHfG5YOa#u%J0d9dnJJ}2c4JSSDwHHsLZp!$ z4)ecvgG|rtYKrpHH`kYIzjT=$sk%VGe2?16Gn^sz-RmOV(d>2(F&@f__wM8rh9*y` zuLrsvWR|T80WK%>8mdAV%AVK$mJ^@3hc>E|Q&o5W>4XD7`WOc`eeSUHhmv}C-?DGCZ%NCRvp;(Rcj!$B znNoxMp)S?S47<6c2xY~e38@;6%R8E?YsVQn;NjE-Fo&@0^T1PpMX_qk%j9z9z6tUB z*p3@>mVR`f!W(V21jefzMK5KmW&;mAz4yxG*_%PTo5eN`Bcfb$%|3{CrO&PxSn9;@ zOv{OwNt@M5-TfseDCr1EYC-c!iHeH>=^Ahi-xgJIEn1}E;r^>Ot+&eZw65Gf;cuJx zY3%dZ#9+qs5y=Q_yYpwf6&{O*^-NFbP1P+N%e>56_ge7S@^cDn$(YHH-IH!2myeuc zXiQG6Q-76{E8-K62s|Tuj!xQ)$%1UEBlC)f5Yr$x{grR8GT4|itCQa^C6L$^wv+73!=U3- zL_H-t=?6`DuN^+^b*AV+wEPQ(hAnH2IH6#^ILOy`AaLxG7XwUCXWB=l03G z=S#^^TEqJDHrJt7IDAi8WW3?HbDQq|)uAeZ`%AQsB2%s`L=Ih^xl*~{+2`wT98MIs zB2*C8Z~G}l2kX5fRd}&6rvbr&&7rgigz>@GS}mU$1Ly~0S|VQYD~Eo%SDN!;O!}!+ zg~J1B8qE@_X2CO}fyu>$CIZli2}iMI232G=x95Z6JcioxVMrpIPs_$3S?Vzm2O$7VbZjlVI~l5;%48`sa^8zB3AnhOrW-cNdswXKY85G zjr#P}YcIH|#DXH8-Yf1kXG=e;@0P}zDHe3g8p~y+UJ&_;syRbC#$0TtlNqIt{22w~ z+H9etT>Ey<%QtGrJ<#*xEW^2(qA-EOJd!m_SS`V+P1P;yQ0IB0SGM6Oiv(w?%A>FM?&z>2@;HnYoohaxI=ur=ZcHk-yg09OnS*JuNxAddo;tE?)e8r; zcXwMj)ZM<(YXLmv+d=Rtf%p)i(=#|a-HGA|Edmdo5Yyd6Y%i&MtwrX=Kc@c2vs7 zP|mura8`-Ds&LZtorT}TxpbKiGBFWJ34inr{^(`>@=&M4yOn$X|6tNowrod+ga}DaxL!ULURh+OT1kts^WVD>I8+uupc*G1~A> zL%gHcW54BZs(nw}4GSL~{vzFbkq*EiI1z*|a=$@NiCylKu5yAyx7w{q7gnkMG{&Z}Jv5 z+LBY{goXHkfrY^V(&CxLwu$7%fP_w~`xBEaZ>3$MW?7oMt7;~XE3#Zao!&*D`P})8 zKs%K!j74n*Pn5?Ae%F1T`cmkaL~2u9bnTU9<9xb_<35>W*+ULGdz8YH37>`8`}Sp% zSmN5z*4dpTkZ?=hpWLx~5bGB$(8< zX!(k!4NSbwk-=6tkgJ${UG4z>v#_z8Qbp><3+Eeeu$X#_W*>CFdyD8jG^~=DN->A| zVjLA2j;!Be+slZHqs36k{cvWR$3`QCOCEAS)%V(nf&4}Yd5e%Cb9*6zt2DNA8@ zQTOtKf#w5WL)>qjeUk?>*A%x^8uWkIZ)>`*g=9ZA>wY03yh-PTW{T^2>WA`dMGI1$ z_mVoF2@Q`?>=3{SI}3RoCx1R5l8^UM`dgwlgvPzA+PX(OU~@u*FRq06bIg@u(Otnp z^c=WuX2kcXLe|LjxbZ^lT_VMEwq)nuJll&aD>A!dPvc|8P~yqjPFjOYBvY_(wv$*a z`{eHG5w&F@Si}{qW$uKQ-biQH?=+QjIP0jP($+wiIB<#jZjWlPlPQI_bK-5y7LgbE zAkKd_`2HUcYY~e~l*kdU6!_zR=OnE=!m}#QzyCOE!^$gzJK9MJeK>D!LKD>?-#&!FAYLR~EDFKS^*Q zBBDIPP)PwEAXMgGBDdnY3RW95arOll?#FTq#@GN3iPzdmvY zA_7L3{-Yyzz^ATq^#5Gs4hBE@fvW3odiw)_Ilx2ygttG+yZ+xUplg9U5Ga^(^ADW; zZ6cNM*M)f}C8oytfiPp@M_@Kv7v}$ZIbPig|Iu;`KJ|Z8jxky5A0fw3@D%fBOs`>=$_pOc*@2_t;+l!AcI!z}p~gcOW_$$j^Yvn&Az1ciMO- zRiLk<)hIx9YTl41z#vS~Z9myA$eu*Y)7jH7NhSGb$EuF>T1=aXQhoGP^>8VCHeFr) z((@$p=-BIB&beLpthzp&!P1CMgZlEkOewjkGN8rRLRyx`xJUFp*{n@XQJWYv-Prgp z#iWQ)mWR~}V}hnt4eorCUeWZtI$_ zybxz^ExfsjAUP)Ld#3s=UU%@tbKb{a4U}Ka@DMUef`-RL@rB;$rM{pwGMtjgyaAgCqL|N9hf9`E4lpJ#XXqk;b!zkUz+8pWQn$*~(ys z<35P0>z!P;uR`l@u>bQ%lH@uU%_Y}`auQL^c(4W9iP0QHyUBE?K4

WQ5Tv3Hy_ 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 w=c34#nW)VjEwi=4wg^Zu}zZC!h`Tzg` literal 0 HcmV?d00001