From b4d47671d1ce5792cc2463ca9e24a2178608c04e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kim=20Br=C3=A4nnlund?= Date: Fri, 4 Nov 2016 01:02:23 +0100 Subject: [PATCH] Added a checkbox to show both input and output devices in switcher. Needs more work. --- AudioSwitch.csproj | 2 + Classes/Settings.cs | 5 + Forms/FormSettings.Designer.cs | 262 +++++++++++++++++---------------- Forms/FormSettings.cs | 7 + Forms/FormSwitcher.Designer.cs | 8 +- Forms/FormSwitcher.cs | 33 ++++- Resources/Thumbs.db | Bin 0 -> 17920 bytes gh-pages/Thumbs.db | Bin 0 -> 35840 bytes packages.config | 4 + 9 files changed, 191 insertions(+), 130 deletions(-) create mode 100644 Resources/Thumbs.db create mode 100644 gh-pages/Thumbs.db create mode 100644 packages.config diff --git a/AudioSwitch.csproj b/AudioSwitch.csproj index 25f63f2..bbfea1f 100644 --- a/AudioSwitch.csproj +++ b/AudioSwitch.csproj @@ -98,6 +98,7 @@ + @@ -286,6 +287,7 @@ + Always diff --git a/Classes/Settings.cs b/Classes/Settings.cs index e1eebd5..ec7f0ca 100644 --- a/Classes/Settings.cs +++ b/Classes/Settings.cs @@ -30,6 +30,8 @@ public static Settings newSettings() Transparency = 255 }, + ShowBothDataFlow = false, + VolumeScroll = new CVolScroll { Key = VolumeScrollKey.LWin, @@ -53,6 +55,9 @@ public static Settings newSettings() [XmlElement] public bool ColorVU; + [XmlElement] + public bool ShowBothDataFlow; + [XmlElement] public bool ShowHardwareName; diff --git a/Forms/FormSettings.Designer.cs b/Forms/FormSettings.Designer.cs index 49d4c29..ffafcc8 100644 --- a/Forms/FormSettings.Designer.cs +++ b/Forms/FormSettings.Designer.cs @@ -31,9 +31,14 @@ protected override void Dispose(bool disposing) /// private void InitializeComponent() { - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); this.tabSettings = new System.Windows.Forms.TabControl(); this.tabGeneral = new System.Windows.Forms.TabPage(); + this.groupBox4 = new System.Windows.Forms.GroupBox(); + this.checkVolScroll = new System.Windows.Forms.CheckBox(); + this.comboScrollKey = new System.Windows.Forms.ComboBox(); + this.labelVolScroll = new System.Windows.Forms.Label(); + this.checkScrShowOSD = new System.Windows.Forms.CheckBox(); this.checkCustomOSD = new System.Windows.Forms.CheckBox(); this.groupOSD = new System.Windows.Forms.GroupBox(); this.groupBox3 = new System.Windows.Forms.GroupBox(); @@ -56,18 +61,12 @@ private void InitializeComponent() this.checkColorVU = new System.Windows.Forms.CheckBox(); this.label6 = new System.Windows.Forms.Label(); this.checkDefaultMultiAndComm = new System.Windows.Forms.CheckBox(); - this.groupBox4 = new System.Windows.Forms.GroupBox(); - this.comboScrollKey = new System.Windows.Forms.ComboBox(); - this.checkVolScroll = new System.Windows.Forms.CheckBox(); - this.checkScrShowOSD = new System.Windows.Forms.CheckBox(); - this.labelVolScroll = new System.Windows.Forms.Label(); this.tabDevices = new System.Windows.Forms.TabPage(); - this.listDevices = new AudioSwitch.Controls.CustomListView(); this.label2 = new System.Windows.Forms.Label(); this.groupDevice = new System.Windows.Forms.GroupBox(); + this.checkCustomName = new System.Windows.Forms.CheckBox(); this.pictureModded = new System.Windows.Forms.PictureBox(); this.textCustomName = new System.Windows.Forms.TextBox(); - this.checkCustomName = new System.Windows.Forms.CheckBox(); this.label7 = new System.Windows.Forms.Label(); this.checkHideDevice = new System.Windows.Forms.CheckBox(); this.label9 = new System.Windows.Forms.Label(); @@ -90,14 +89,16 @@ private void InitializeComponent() this.HotKey = new System.Windows.Forms.DataGridViewComboBoxColumn(); this.labelTips = new System.Windows.Forms.Label(); this.buttonClose = new System.Windows.Forms.Button(); + this.listDevices = new AudioSwitch.Controls.CustomListView(); + this.checkShowBoth = new System.Windows.Forms.CheckBox(); this.tabSettings.SuspendLayout(); this.tabGeneral.SuspendLayout(); + this.groupBox4.SuspendLayout(); this.groupOSD.SuspendLayout(); this.groupBox3.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numTimeout)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.trackTransparency)).BeginInit(); this.groupBox2.SuspendLayout(); - this.groupBox4.SuspendLayout(); this.tabDevices.SuspendLayout(); this.groupDevice.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureModded)).BeginInit(); @@ -118,11 +119,12 @@ private void InitializeComponent() this.tabSettings.Margin = new System.Windows.Forms.Padding(2); this.tabSettings.Name = "tabSettings"; this.tabSettings.SelectedIndex = 0; - this.tabSettings.Size = new System.Drawing.Size(536, 323); + this.tabSettings.Size = new System.Drawing.Size(536, 342); this.tabSettings.TabIndex = 0; // // tabGeneral // + this.tabGeneral.Controls.Add(this.buttonClose); this.tabGeneral.Controls.Add(this.groupBox4); this.tabGeneral.Controls.Add(this.checkCustomOSD); this.tabGeneral.Controls.Add(this.groupOSD); @@ -130,13 +132,85 @@ private void InitializeComponent() this.tabGeneral.Location = new System.Drawing.Point(4, 22); this.tabGeneral.Margin = new System.Windows.Forms.Padding(2); this.tabGeneral.Name = "tabGeneral"; - this.tabGeneral.Size = new System.Drawing.Size(528, 297); + this.tabGeneral.Size = new System.Drawing.Size(528, 316); this.tabGeneral.TabIndex = 2; this.tabGeneral.Text = "General"; this.tabGeneral.UseVisualStyleBackColor = true; this.tabGeneral.Enter += new System.EventHandler(this.tabOSD_Enter); this.tabGeneral.Leave += new System.EventHandler(this.tabOSD_Leave); // + // groupBox4 + // + this.groupBox4.Controls.Add(this.checkVolScroll); + this.groupBox4.Controls.Add(this.comboScrollKey); + this.groupBox4.Controls.Add(this.labelVolScroll); + this.groupBox4.Controls.Add(this.checkScrShowOSD); + this.groupBox4.Location = new System.Drawing.Point(355, 6); + this.groupBox4.Margin = new System.Windows.Forms.Padding(2); + this.groupBox4.Name = "groupBox4"; + this.groupBox4.Padding = new System.Windows.Forms.Padding(2); + this.groupBox4.Size = new System.Drawing.Size(169, 115); + this.groupBox4.TabIndex = 1; + this.groupBox4.TabStop = false; + this.groupBox4.Text = "Volume Scrolling"; + // + // checkVolScroll + // + this.checkVolScroll.Location = new System.Drawing.Point(11, 19); + this.checkVolScroll.Margin = new System.Windows.Forms.Padding(2); + this.checkVolScroll.Name = "checkVolScroll"; + this.checkVolScroll.Size = new System.Drawing.Size(61, 21); + this.checkVolScroll.TabIndex = 0; + this.checkVolScroll.Text = "Enabled"; + this.checkVolScroll.UseVisualStyleBackColor = true; + this.checkVolScroll.CheckedChanged += new System.EventHandler(this.checkVolScroll_CheckedChanged); + // + // comboScrollKey + // + this.comboScrollKey.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboScrollKey.FormattingEnabled = true; + this.comboScrollKey.Items.AddRange(new object[] { + "LeftMouseButton", + "RightMouseButton", + "Control", + "Alt", + "LWin", + "RWin", + "Shift", + "LeftMouseButton", + "RightMouseButton", + "Control", + "Alt", + "LWin", + "RWin", + "Shift"}); + this.comboScrollKey.Location = new System.Drawing.Point(11, 42); + this.comboScrollKey.Margin = new System.Windows.Forms.Padding(2); + this.comboScrollKey.Name = "comboScrollKey"; + this.comboScrollKey.Size = new System.Drawing.Size(149, 21); + this.comboScrollKey.TabIndex = 1; + this.comboScrollKey.SelectedIndexChanged += new System.EventHandler(this.comboScrollKey_SelectedIndexChanged); + // + // labelVolScroll + // + this.labelVolScroll.Location = new System.Drawing.Point(202, 20); + this.labelVolScroll.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.labelVolScroll.Name = "labelVolScroll"; + this.labelVolScroll.Size = new System.Drawing.Size(100, 19); + this.labelVolScroll.TabIndex = 23; + this.labelVolScroll.Text = " + Mouse Wheel"; + // + // checkScrShowOSD + // + this.checkScrShowOSD.Location = new System.Drawing.Point(11, 69); + this.checkScrShowOSD.Margin = new System.Windows.Forms.Padding(2); + this.checkScrShowOSD.Name = "checkScrShowOSD"; + this.checkScrShowOSD.Size = new System.Drawing.Size(90, 20); + this.checkScrShowOSD.TabIndex = 2; + this.checkScrShowOSD.Text = "Show OSD"; + this.checkScrShowOSD.UseVisualStyleBackColor = true; + this.checkScrShowOSD.CheckedChanged += new System.EventHandler(this.checkScrShowOSD_CheckedChanged); + // // checkCustomOSD // this.checkCustomOSD.AutoSize = true; @@ -301,6 +375,7 @@ private void InitializeComponent() // // groupBox2 // + this.groupBox2.Controls.Add(this.checkShowBoth); this.groupBox2.Controls.Add(this.comboDefMode); this.groupBox2.Controls.Add(this.checkQSShowOSD); this.groupBox2.Controls.Add(this.radioQuickSwitch); @@ -314,7 +389,7 @@ private void InitializeComponent() this.groupBox2.Margin = new System.Windows.Forms.Padding(2); this.groupBox2.Name = "groupBox2"; this.groupBox2.Padding = new System.Windows.Forms.Padding(2); - this.groupBox2.Size = new System.Drawing.Size(517, 126); + this.groupBox2.Size = new System.Drawing.Size(517, 150); this.groupBox2.TabIndex = 2; this.groupBox2.TabStop = false; this.groupBox2.Text = "General Behavior"; @@ -328,6 +403,7 @@ private void InitializeComponent() this.comboDefMode.Name = "comboDefMode"; this.comboDefMode.Size = new System.Drawing.Size(120, 21); this.comboDefMode.TabIndex = 0; + this.comboDefMode.SelectedIndexChanged += new System.EventHandler(this.comboDefMode_SelectedIndexChanged); // // checkQSShowOSD // @@ -414,78 +490,6 @@ private void InitializeComponent() this.checkDefaultMultiAndComm.UseVisualStyleBackColor = true; this.checkDefaultMultiAndComm.CheckedChanged += new System.EventHandler(this.checkDefaultMultiAndComm_CheckedChanged); // - // groupBox4 - // - this.groupBox4.Controls.Add(this.checkVolScroll); - this.groupBox4.Controls.Add(this.comboScrollKey); - this.groupBox4.Controls.Add(this.labelVolScroll); - this.groupBox4.Controls.Add(this.checkScrShowOSD); - this.groupBox4.Location = new System.Drawing.Point(355, 6); - this.groupBox4.Margin = new System.Windows.Forms.Padding(2); - this.groupBox4.Name = "groupBox4"; - this.groupBox4.Padding = new System.Windows.Forms.Padding(2); - this.groupBox4.Size = new System.Drawing.Size(169, 115); - this.groupBox4.TabIndex = 1; - this.groupBox4.TabStop = false; - this.groupBox4.Text = "Volume Scrolling"; - // - // comboScrollKey - // - this.comboScrollKey.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.comboScrollKey.FormattingEnabled = true; - this.comboScrollKey.Items.AddRange(new object[] { - "LeftMouseButton", - "RightMouseButton", - "Control", - "Alt", - "LWin", - "RWin", - "Shift", - "LeftMouseButton", - "RightMouseButton", - "Control", - "Alt", - "LWin", - "RWin", - "Shift"}); - this.comboScrollKey.Location = new System.Drawing.Point(11, 42); - this.comboScrollKey.Margin = new System.Windows.Forms.Padding(2); - this.comboScrollKey.Name = "comboScrollKey"; - this.comboScrollKey.Size = new System.Drawing.Size(149, 21); - this.comboScrollKey.TabIndex = 1; - this.comboScrollKey.SelectedIndexChanged += new System.EventHandler(this.comboScrollKey_SelectedIndexChanged); - // - // checkVolScroll - // - this.checkVolScroll.Location = new System.Drawing.Point(11, 19); - this.checkVolScroll.Margin = new System.Windows.Forms.Padding(2); - this.checkVolScroll.Name = "checkVolScroll"; - this.checkVolScroll.Size = new System.Drawing.Size(61, 21); - this.checkVolScroll.TabIndex = 0; - this.checkVolScroll.Text = "Enabled"; - this.checkVolScroll.UseVisualStyleBackColor = true; - this.checkVolScroll.CheckedChanged += new System.EventHandler(this.checkVolScroll_CheckedChanged); - // - // checkScrShowOSD - // - this.checkScrShowOSD.Location = new System.Drawing.Point(11, 69); - this.checkScrShowOSD.Margin = new System.Windows.Forms.Padding(2); - this.checkScrShowOSD.Name = "checkScrShowOSD"; - this.checkScrShowOSD.Size = new System.Drawing.Size(90, 20); - this.checkScrShowOSD.TabIndex = 2; - this.checkScrShowOSD.Text = "Show OSD"; - this.checkScrShowOSD.UseVisualStyleBackColor = true; - this.checkScrShowOSD.CheckedChanged += new System.EventHandler(this.checkScrShowOSD_CheckedChanged); - // - // labelVolScroll - // - this.labelVolScroll.Location = new System.Drawing.Point(202, 20); - this.labelVolScroll.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.labelVolScroll.Name = "labelVolScroll"; - this.labelVolScroll.Size = new System.Drawing.Size(100, 19); - this.labelVolScroll.TabIndex = 23; - this.labelVolScroll.Text = " + Mouse Wheel"; - // // tabDevices // this.tabDevices.Controls.Add(this.listDevices); @@ -501,25 +505,6 @@ private void InitializeComponent() this.tabDevices.UseVisualStyleBackColor = true; this.tabDevices.Enter += new System.EventHandler(this.tabDevices_Enter); // - // listDevices - // - this.listDevices.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.listDevices.BackColor = System.Drawing.SystemColors.Window; - this.listDevices.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.listDevices.FullRowSelect = true; - this.listDevices.HideSelection = false; - this.listDevices.Location = new System.Drawing.Point(5, 20); - this.listDevices.Margin = new System.Windows.Forms.Padding(2); - this.listDevices.MultiSelect = false; - this.listDevices.Name = "listDevices"; - this.listDevices.Size = new System.Drawing.Size(194, 275); - this.listDevices.TabIndex = 1; - this.listDevices.TileSize = new System.Drawing.Size(238, 40); - this.listDevices.UseCompatibleStateImageBehavior = false; - this.listDevices.View = System.Windows.Forms.View.Tile; - this.listDevices.SelectedIndexChanged += new System.EventHandler(this.listDevices_SelectedIndexChanged); - // // label2 // this.label2.Location = new System.Drawing.Point(5, 5); @@ -553,6 +538,17 @@ private void InitializeComponent() this.groupDevice.TabStop = false; this.groupDevice.Text = "Selected Device Settings"; // + // checkCustomName + // + this.checkCustomName.Location = new System.Drawing.Point(14, 109); + this.checkCustomName.Margin = new System.Windows.Forms.Padding(2); + this.checkCustomName.Name = "checkCustomName"; + this.checkCustomName.Size = new System.Drawing.Size(149, 18); + this.checkCustomName.TabIndex = 3; + this.checkCustomName.Text = "Customize display name"; + this.checkCustomName.UseVisualStyleBackColor = true; + this.checkCustomName.CheckedChanged += new System.EventHandler(this.checkCustomName_CheckedChanged); + // // pictureModded // this.pictureModded.Location = new System.Drawing.Point(288, 15); @@ -572,17 +568,6 @@ private void InitializeComponent() this.textCustomName.Size = new System.Drawing.Size(190, 20); this.textCustomName.TabIndex = 4; // - // checkCustomName - // - this.checkCustomName.Location = new System.Drawing.Point(14, 109); - this.checkCustomName.Margin = new System.Windows.Forms.Padding(2); - this.checkCustomName.Name = "checkCustomName"; - this.checkCustomName.Size = new System.Drawing.Size(149, 18); - this.checkCustomName.TabIndex = 3; - this.checkCustomName.Text = "Customize display name"; - this.checkCustomName.UseVisualStyleBackColor = true; - this.checkCustomName.CheckedChanged += new System.EventHandler(this.checkCustomName_CheckedChanged); - // // label7 // this.label7.Location = new System.Drawing.Point(233, 19); @@ -726,12 +711,12 @@ private void InitializeComponent() this.gridHotkeys.Name = "gridHotkeys"; this.gridHotkeys.RowHeadersWidth = 25; this.gridHotkeys.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing; - dataGridViewCellStyle5.BackColor = System.Drawing.SystemColors.Window; - dataGridViewCellStyle5.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(186))); - dataGridViewCellStyle5.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle5.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle5.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - this.gridHotkeys.RowsDefaultCellStyle = dataGridViewCellStyle5; + dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(186))); + dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + this.gridHotkeys.RowsDefaultCellStyle = dataGridViewCellStyle1; this.gridHotkeys.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; this.gridHotkeys.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; this.gridHotkeys.Size = new System.Drawing.Size(520, 246); @@ -809,7 +794,7 @@ private void InitializeComponent() // // buttonClose // - this.buttonClose.Location = new System.Drawing.Point(371, 285); + this.buttonClose.Location = new System.Drawing.Point(364, 279); this.buttonClose.Margin = new System.Windows.Forms.Padding(2); this.buttonClose.Name = "buttonClose"; this.buttonClose.Size = new System.Drawing.Size(160, 32); @@ -817,12 +802,40 @@ private void InitializeComponent() this.buttonClose.Text = "Close"; this.buttonClose.UseVisualStyleBackColor = true; // + // listDevices + // + this.listDevices.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.listDevices.BackColor = System.Drawing.SystemColors.Window; + this.listDevices.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.listDevices.FullRowSelect = true; + this.listDevices.HideSelection = false; + this.listDevices.Location = new System.Drawing.Point(5, 20); + this.listDevices.Margin = new System.Windows.Forms.Padding(2); + this.listDevices.MultiSelect = false; + this.listDevices.Name = "listDevices"; + this.listDevices.Size = new System.Drawing.Size(194, 275); + this.listDevices.TabIndex = 1; + this.listDevices.TileSize = new System.Drawing.Size(238, 40); + this.listDevices.UseCompatibleStateImageBehavior = false; + this.listDevices.View = System.Windows.Forms.View.Tile; + this.listDevices.SelectedIndexChanged += new System.EventHandler(this.listDevices_SelectedIndexChanged); + // + // checkShowBoth + // + this.checkShowBoth.Location = new System.Drawing.Point(12, 124); + this.checkShowBoth.Margin = new System.Windows.Forms.Padding(2); + this.checkShowBoth.Name = "checkShowBoth"; + this.checkShowBoth.Size = new System.Drawing.Size(164, 17); + this.checkShowBoth.TabIndex = 8; + this.checkShowBoth.Text = "Show both Input and Output"; + this.checkShowBoth.UseVisualStyleBackColor = true; + // // FormSettings // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; - this.ClientSize = new System.Drawing.Size(537, 326); - this.Controls.Add(this.buttonClose); + this.ClientSize = new System.Drawing.Size(537, 347); this.Controls.Add(this.labelTips); this.Controls.Add(this.tabSettings); this.DoubleBuffered = true; @@ -841,6 +854,7 @@ private void InitializeComponent() this.tabSettings.ResumeLayout(false); this.tabGeneral.ResumeLayout(false); this.tabGeneral.PerformLayout(); + this.groupBox4.ResumeLayout(false); this.groupOSD.ResumeLayout(false); this.groupBox3.ResumeLayout(false); this.groupBox3.PerformLayout(); @@ -848,7 +862,6 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.trackTransparency)).EndInit(); this.groupBox2.ResumeLayout(false); this.groupBox2.PerformLayout(); - this.groupBox4.ResumeLayout(false); this.tabDevices.ResumeLayout(false); this.groupDevice.ResumeLayout(false); this.groupDevice.PerformLayout(); @@ -922,5 +935,6 @@ private void InitializeComponent() private System.Windows.Forms.NumericUpDown numTimeout; private System.Windows.Forms.CheckBox checkCustomOSD; private System.Windows.Forms.Button buttonClose; + private System.Windows.Forms.CheckBox checkShowBoth; } } \ No newline at end of file diff --git a/Forms/FormSettings.cs b/Forms/FormSettings.cs index 18e5347..2cecd7b 100644 --- a/Forms/FormSettings.cs +++ b/Forms/FormSettings.cs @@ -78,6 +78,7 @@ private void FormSettings_Load(object sender, EventArgs e) comboDefMode.Text = Program.settings.DefaultDataFlow == EDataFlow.eCapture ? "Recording" : "Playback"; checkDefaultMultiAndComm.Checked = Program.settings.DefaultMultimediaAndComm; checkColorVU.Checked = Program.settings.ColorVU; + checkShowBoth.Checked = Program.settings.ShowBothDataFlow; checkVolScroll.Checked = Program.settings.VolumeScroll.Enabled; comboScrollKey.Text = Program.settings.VolumeScroll.Key.ToString(); checkScrShowOSD.Checked = Program.settings.VolumeScroll.ShowOSD; @@ -156,6 +157,7 @@ private void FormSettings_FormClosing(object sender, FormClosingEventArgs e) Program.settings.DefaultMultimediaAndComm = checkDefaultMultiAndComm.Checked; Program.settings.ColorVU = checkColorVU.Checked; + Program.settings.ShowBothDataFlow = checkShowBoth.Checked; Program.settings.ShowHardwareName = checkShowHWName.Checked; Program.settings.QuickSwitchEnabled = radioQuickSwitch.Checked; Program.settings.QuickSwitchShowOSD = checkQSShowOSD.Checked; @@ -345,5 +347,10 @@ private void checkCustomName_CheckedChanged(object sender, EventArgs e) { textCustomName.Enabled = checkCustomName.Checked; } + + private void comboDefMode_SelectedIndexChanged(object sender, EventArgs e) + { + + } } } diff --git a/Forms/FormSwitcher.Designer.cs b/Forms/FormSwitcher.Designer.cs index b2fec3f..ae49a5d 100644 --- a/Forms/FormSwitcher.Designer.cs +++ b/Forms/FormSwitcher.Designer.cs @@ -111,7 +111,7 @@ private void InitializeComponent() // this.pictureShadow.BackgroundImage = global::AudioSwitch.Properties.Resources.shadow; this.pictureShadow.Location = new System.Drawing.Point(0, 154); - this.pictureShadow.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.pictureShadow.Margin = new System.Windows.Forms.Padding(2); this.pictureShadow.Name = "pictureShadow"; this.pictureShadow.Size = new System.Drawing.Size(222, 5); this.pictureShadow.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; @@ -122,7 +122,7 @@ private void InitializeComponent() // this.pictureItemsBack.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.pictureItemsBack.Location = new System.Drawing.Point(-1, 157); - this.pictureItemsBack.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.pictureItemsBack.Margin = new System.Windows.Forms.Padding(2); this.pictureItemsBack.Name = "pictureItemsBack"; this.pictureItemsBack.Size = new System.Drawing.Size(286, 41); this.pictureItemsBack.TabIndex = 2; @@ -137,6 +137,7 @@ private void InitializeComponent() this.VolBar.Size = new System.Drawing.Size(196, 9); this.VolBar.TabIndex = 7; this.VolBar.TabStop = false; + this.VolBar.Load += new System.EventHandler(this.VolBar_Load); // // ledRight // @@ -178,6 +179,7 @@ private void InitializeComponent() this.listDevices.TileSize = new System.Drawing.Size(222, 40); this.listDevices.UseCompatibleStateImageBehavior = false; this.listDevices.View = System.Windows.Forms.View.Tile; + this.listDevices.SelectedIndexChanged += new System.EventHandler(this.listDevices_SelectedIndexChanged); this.listDevices.Click += new System.EventHandler(this.listDevices_Click); // // FormSwitcher @@ -193,7 +195,7 @@ private void InitializeComponent() this.Controls.Add(this.pictureItemsBack); this.Controls.Add(this.listDevices); this.DoubleBuffered = true; - this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.Margin = new System.Windows.Forms.Padding(2); this.MaximizeBox = false; this.MinimizeBox = false; this.Name = "FormSwitcher"; diff --git a/Forms/FormSwitcher.cs b/Forms/FormSwitcher.cs index 5da03fe..8f41737 100644 --- a/Forms/FormSwitcher.cs +++ b/Forms/FormSwitcher.cs @@ -453,11 +453,28 @@ private void RefreshDevices(EDataFlow renderType) DeviceIcons.Clear(); listDevices.BeginUpdate(); + + if (Program.settings.ShowBothDataFlow) + renderType = EDataFlow.eAll; var pDevices = EndPoints.DeviceEnumerator.EnumerateAudioEndPoints(renderType, EDeviceState.Active); + + if (pDevices.Count > 0) { - var defaultDev = EndPoints.DeviceEnumerator.GetDefaultAudioEndpoint(renderType, ERole.eMultimedia).ID; + var defaultDevcies = new List(); + + if (renderType == EDataFlow.eAll) + { + defaultDevcies.Add(EndPoints.DeviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia).ID); + defaultDevcies.Add(EndPoints.DeviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eCapture, ERole.eMultimedia).ID); + } + else + { + defaultDevcies.Add(EndPoints.DeviceEnumerator.GetDefaultAudioEndpoint(renderType, ERole.eMultimedia).ID); + } + + var devCount = pDevices.Count; for (var i = 0; i < devCount; i++) @@ -473,13 +490,13 @@ private void RefreshDevices(EDataFlow renderType) { ImageIndex = i, Text = (devSettings != null && devSettings.UseCustomName) ? devSettings.CustomName : device.FriendlyName, - Selected = devID == defaultDev, + Selected = defaultDevcies.Contains(devID), Tag = devID, }; listDevices.Items.Add(item); - if (devID == defaultDev) + if (defaultDevcies.Contains(devID)) { SetDeviceIcon(i, true); SetTrayIcons(); @@ -564,5 +581,15 @@ private void audioDevicesToolStripMenuItem_Click(object sender, EventArgs e) { Process.Start("control", "mmsys.cpl sounds"); } + + private void listDevices_SelectedIndexChanged(object sender, EventArgs e) + { + + } + + private void VolBar_Load(object sender, EventArgs e) + { + + } } } diff --git a/Resources/Thumbs.db b/Resources/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..a4ad63d563cf10be17b5a82a388dd73ce9154fbe GIT binary patch literal 17920 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 XhBLMHHiKK@{O-e^)YAXRp49&VJ%og^ literal 0 HcmV?d00001 diff --git a/gh-pages/Thumbs.db b/gh-pages/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..84d482b87454b063909c4251c3cbe7252e6679ea GIT binary patch literal 35840 zcmeFZ2RK~a-Z#7%j4l$L7($3%qcbGYA_!4~jHp5MUPrk@^e%!RK|}=6Yjg(DC3^2A zqIWaC?Y_@BPww-c^StMIzVEx<>$%>u=K9UvYn#2+`j_=z|Nkob`^abC7SqiEf0twc z2!OdD0Puc!js@Od;`ej~0IxML~%P0Op`P1;N~H@M8g( z08hc^mlFNQi4(L!f35%W`j3D0zdj}UyZS}Jy2QYG#KBs{!8VA4Iezde20niZ;-97e zPW@1@FqTWj1k+#XHwEhu{yk>_n1XE(13%*6GZC=%ORoI01lEuBS3CT#($5MOwk-Qc ziCEy}^8HJh{M!F7+xY)Q|NpTvpv%r=6 z3d#xq7S^SbfaziaG?O?G2o3}Xih~0sfZ{?4hzP($L`r;_NXdV{5dY=!N9OOpFAKrK z!NViQC#E7MrlKGvC8fChBBl7_HS&L{kVb$UAG8ai5Ud*jHaQlA9P6U>a!kR(1zY>K z27`HQ2o5eD6rX^Q2>e0$6|lEJAlNt%TwEMb+p&DXzXLerxL274r?`nyb6}fQ$iyj-fRKushL-Lo8~ZH|PT|`kqGI9_ckjt7C@Lx6f25_YqpPR? z*woD2!t$AwwX=(>o4bdnSI}=SfB0gae~|Sz%KnZn z@=Gg#b19cgy0Ea_F9|2d!DSY}yDFyved>7ahF}0b#huu<#Z3e(LYmu@CQbu{RII{t zH+L>c`<=3Xjj+J~7G-}U>_6xl2Z$k9pzt8%;9z`y0lW)yVo_?ka7Qo%~EYQl1$sWo-r#D4LdWGU#~d_h?c`5TQ0P6tCs8SIW1q+>z4 z4Um7-Y3@kO<;eQHSiHFy2h#3w8Wr+(g|-Q$YC9)pzwhX2{p0ASis`#JGOmbgv4L0} zor`a>O)Xpcpf81;E&1uQ5Ip|t0E~rrB@L?+!{i{KZSu*phw^4CiH%Sb`%Gk5noEZm z{KLEKc;}WUbn%F5&)ZE$J>xB>SzQR&)W2eSp;AF8^*MFi_A65eTc;AG0Nofjk(R3T ziG-Dw+fic-W@9lN4sy$*Vkjg!jfA6JRV zUyicbgNk07sHJ2>sPeR@dn$_MrZ%1$5mo1t*Sr+_cy-Ht26e?@9;Qy3^8yt9rB0bw zvI1qcXbz1+1j=6Sn~D9H3sm6hmE?-EEI&WJ(ybNM>fA%wV>qeoE;RYTU73a2w6W7P z&Ve6K`G8y|RD2=u%5I3-7I7{4W;s@1Or4;=o_!NAwqelmT5~oRAq?`9ER&@4g%t|2_VL ze$D^*@&DLmTf9dg+EL9X_wIOVgfZ+%LvJ?jq%K5^HlMSE-*!SP5hu>e7=wJFZ6dTw z*7~jSmBrC)3Sb%&vLso&*?3Oo^&mzW#gejajT`Bm+x$hN70CBxd`$rgObwhw(C`iM1x_bX~DA~0Q zAk|Hae(*@feJ#Vw@m5xp9wy`dLxZn&UNLG&Iaw_2Rp$WIw+kR%)ihCuJx%~sNzpGR z&Jw+%Hc{=^2pK981`Z?e1PYb3npRHHR>=?5=3>i?`PSmq;B|e{#XkhlRK9PjrlXbXYczpb&mht}%5Un@gD!yY3W9jcjXyYL2}n;E!kics)Swl< z*8J2qaF!vEH!sNfA-OCWZ{frK3|+cY(eV4^ca!YG#Ar~$qgl9g3ak+r-}PsU@(;7k zZcWOG!Coy*`!nu(a&~>p+$6-J75{0?PX9SPNs3VoDz(3%7N)vc>(*4sy3p`Ms7H~- zp1A9+EWMM&S=#Bm|CMSQjeuT`d%w*os_oAtFpm>7LDzaYzB2ZAPkN^S5oZyH`{-vK zbBcD>ioG+*i$gReP97a7SZ^{wUz73ZL^H6vRyQL4{EJmKO~*=c<4@Q z>;YSBl-mb(NI4ViyNn(5>6UUWLsS(lypLkDR*RI(`N2)O4OxOWy+UakO(=>Nr9&Vy zRR*ftaRF%>votf)9EH@Ey-?b74q0M>2=a8RE-jyrGLMFn$rqTeBI&#V2g$P`B`cwR zQpY8Gd23zALcmb-IW=$OHQ7##W)Z1yVI17qAri@;bALGdW{1L(c6S z1NHOSPvxNO*UwC62K}#>LKyr#gb#s2cSqD?`N(P=W;IcAGzkvx_dXUF+FF)PkUu1- zGq046ZSqalK^tOwQb4spZ=&OEmiNoMd9=ht{&LVj{B<(ChKC_d(ZQWGaYj&8ARx|m z0XCQnOXOjS^$^1${{cT;PA|!Ss;yPJjVDRUb)bl$gf{P?4%ref0KXd-03m$tp$~sA zvRJqd^tbUFn!~Y9%;v2|OP_kQ2(;sgHJ*AA2HP2_<9c(Rl2)INtY@5afO>h3Y>mIa zko)t-!hY6eiI|4blqblI-w<>1{^y@g(tvJCH8p9al^h`%tI3`?58C~MHouP-Ky&)B z(FGtY%@uw6l=}Fg44Dt_bzx~P%(*;~*1IWb|VN`pKR6t-%Iu z?*)*__#Z7+Kj#A<{EYzyliNW{!=anmdLFF2u-IbJ#pMb#33bWcM$C26E&JFzZKk z0sJiw_-V%FA4TIZ3`CgiL*o(o@W1;3batzGsIz}R>jHRwDKcX}twK?(?@@|#ZOmtN z>8R+Of7p0~p|ihM$pq)PvpFu*xv~F#v$63UDS5c%wvjTpH*SOvx|AQ88Y#kXtUt$OLg_nY~)-$R!k?k+r{ zk@7l?+Ha4MGKEIzj*_;XjZ7oT?OPDgW8Jy#)8LS7{l`y;US3fl#*d;*jiCYcVB3>H zw<)uvsHcw>RdsNXjSbbzvJNy@gk1mPS5~n6KtXm@jy)g%wGxJvP`Eb|C@>1!$#DgK z5IX7E_Pxb;VzhwSu0;kQ`{*afQgT{{Y!iSr>YB^mRU3}|_CE3H>8USAc(p7F_mx!i zeOVh1rJ$nG&UDp9mXYJ(27_{a#_NL0EGC7Yt976_$MH9k|@=FaJ{UXy)ECYXhSW6l<)WoruYcOH4 zy#CEA(~bzH?*;kmhYfdC&IDmwsuuuq=>nMlfawl78$!;UAdf$$3@+Kt>FY)uTzBw} zf+x>LDN^3H>OFhybaTMB-G1!3ThdY@ANtJYqF#FU{Be-0Cu#7at(qBpBSMs_m(`jHJ)%$RTDeFd3Tc9qQgo-ZPYZ|siW`AwvcTWm^43NddF zTh(P(DXpEtesEUw^Nw6!B0Y-Kr1Z<3Pkp@oJl{tZD>t#4rl%BYF{u-$XZ1WdA95!! zw20HQ!*7Sx+&oW>c9l7c^3orQ&pJJMTM@1Hh1I}NILGTpb!_oLOPVfZ2Y0KSL{us4 zL~(1-Em6b3)R0J=@#gp(!VcXVwqEe%8j~1ymC6|(r3dWCk&feN!M7TxY@xBoDskPkzp^(lzOndO4QBpZX(+X_4`wQKg0K1b(_DTb%e zGeN9#=RcI|-cZ5f!>-*#7N*c8rs#+6BZ1S$7eM=fe2yaP+gyiw&%0--$%|Fbv|1UP z*iy7Z-Mb%--g%o9$FzE;3u&ooi14|cNhB??HqUdrA^AxDse#KG4hbELZ`9F}`*iX% zns{>hfv?n0zHiiLgnwx;zyuus2@kR*ONm}-jccNF>Mtap%n!vM zHRV|75o)6*_sA*h+*~O3ppX*O|H?gh0c80%(`tIeD#LDdU!ALFuHV#^EI$~>q#}(r zElspz>p&K6Vc{HPAI5>a6hY9F*~kqDrO-P~n?>z52(QoPn%NGACH3)g4?fHtAJ2-e*W6b}Q%KqO_2>K5@Ww#dXn+oR&d zA3s!-AQDM|wbe*XzG9o%8@`W25`qrMp`DfvJ_qb zycN=wznaHm1L)csSY7}|<`=-A{#u?W^$P8?^Z3W- z1F3-#i3QnNpv!ahB%S=s%zuVxd8+Zus1g%`NHeb8Vq&<4Dw59McRuW5_2Eg2YOt;Z zU4o6hh{)U}$*?ryoxVp;IQC7b8Xr1gF+{kaV4*oeCfYug43?wBgm>^e9;FeJsd)|6 zwL}RWVb3}rWa8R$-|A#7lK!mb%b`Moa^Rly_aak+X68&|X=@T)k&~Hjj`xgH9b@)< zsJNev*Y{!oKF2f^&f?F0jStxXMp2RMwEUFt>keaO_A@s@)lZX(_RqBf zdq)=-7OLTLj~$6yv(T~U`5jW~XOdP=_^Z4l5qjU3Elgzh-VtVk9!)e?=BlXKLf-AQ z`{>(JFAWNVU(B?6OOrhMaZk-c+lP^w6v8{{yl2VerkNiRWP}WsLfFpJT9kAVZ5Y+N zJevqiqHXt8yd!x<(Rz2&a;^szlBLAW&3LM!m&k2L*=T$RKcM>23uhV)*5?6ECpcJP ztC%Yucq`2&%ct8JWs@&RNu8T|m8I2`JGT&gA^9((SmJaY+{YeM%+|xaI=eL82Den| zYaAsKud7I#{QQ}iU{X(C%hjcxGnMqkB}qLzN#qG{P5%~q`5A-KSGx9z!g~WaRz9u7 zYVG>PjO0rE_w|znU-a)FThGYI#t}DDIvw*KbGLNqy>5IqudGr(*ifS(C6~s(v`s44 z_69MR6klLPl->t;DwT!BWJl+oy*bO*_CW>7Vb#8-e90<{Yu4kjbv0J1 zZT&XpNm?ml^Kn!}cFcNXw(~4sU$E*Je)1QB?022P8*1I$_jTj8%qlJ4{+zx5LUK>W zd?vnxi(CNY`_gt(+^+aX=$v$dL{lr~hZf#u*MvA+UA~V(xxdtapSGUE!b0cPQAUu83LD7@%bd8)bdbPK^4;D^V&dm z?+xrQ5t76RPwnL|Cu9DbCaTmUi_6 z0T74Fb+C6n!Z+80lzAj-myU3Ka{(|SVk_k-w6ETEwzBv7_zJ&-v!*7PwuO1}lTd#? zAh(X6_u-vC;jKR)@P0e#h2uxw%G(KKdGAFgg{{qK=oM&o`AMOf1u3^OvBUm?;_|J7 z3gp2s0(~>R!iN6O{dwOn?y_I=xne;7cui?LV}c!{?21DBOk4n~+9$0+OkFF1l8nxq zYly6d3UO5PNgr(Iz&J5l5#XOxVawDYFgoz}v6EnD#g zX!^4~Rwk^Y)TMTQfWZ&>7~d1$!dN15s^fYCC*X87&Zp{8gr&?E`2A;&M{=w9IHc-% z=T@@H?h=92;s`@t%b^3FC)Yfj}ejhiVRcdmp z_;*E=PgIc7=#+0SCUMw1e-K3BHa_=<-836ldQOS!&lMY+=8RDEkeF5~`<`T#{d&=YwPUF` zm-=TIe^OQ5NbAhiI{7&xwavnadKae-p8e$#E|P8* zMgxO&Qj>rce4jODn`i+IHbz-|nrBm(fobxx?}fq-OI6(MHc30o%G^B@UU=x>R*7y;A8 zBO*(kagDk*t4MN(TwpJ2kfAQ&Jr-R=zm=EjP7mF9Zx-pUas}&kWpiU2udK$6&k7Dg zcZ-CJx;Kk-%ZyU@$4+m18xcIstF+U*0A{(|3o2$@*E1}@81^?Z`3oSo=$zyq=;+S! z@!R=Zg+E!U>#L&HIe4zpungVwR)$-6+tj!e

0Mrr3^sW~G%I0fX-}qIMM^B)b9B}XxqKoq{6~)esdUEh6*nC-Y_qXe{T0g==sg^bgLzY z28$@X^7Q%ZyT#_a(^@V~p2N4=Po>LM#&;X?_fMt@cp79+%i&AWlV7}DY8vcv!5Ovx zM48MzhERgXI?{Bz9=t5UhpY0AIBtVRlborZ=A$=CsY!cFZiMiMQUEAN^^|JgYYRTQ z?z%Cl24D012ANCBR36zov&~-s94aFfyIrh;N*J$3N@~f`k^;tYWH;vUjQ7pYPcWU_ z^J1`1YYsix$a!;iee0abiw`Z0oV6Xf0Ip~KiCrV)bI3@j-Zyq?I@fip9#4Dg_yqr( zwY{+)00Ne_#texa?==xHj%xHSQNcpzELQO7yYpKH}61Z0tl4 zM)Ha3Jbc_#IfbJvgH)0Aba*is&TGIfW96!^C3mw+?LAK~#88fc_v>ygc1}$sd_nd7 zf~BLCw@?dvqN7Xfy_nX=%LZZ*{=G)wDt2A>h?p0}_4;E%M^bc`eUpk1s=hKizK=6@ zQ5OK#W3RQ{Eti4O|5Q|-eZd&%NQJ4b+w>d@Axs7z6=}WWb_}Fc=)yxqq)LoFepI^S zzgB;5f|=gg$9`ybFG-dC(N+DoNoWy+k8ev`!}-6h2etW7d!8&q@$9>|@f@ddqAUJ0htc z>=;AP<_0X9>Da$SE>eS|kKuUEaOyzignQ`}$`8sI3!oe}f)pi7ZdcG(&QHxUy=j-?OwMkne zAUOH#Bx-E7hcd)cztvQiBTM`nyb7AvlwpZr1QFjA4R}#5rI;#Sa9~&+NFbU zVVj1uyPKuU{)B>a^(iV&tyfSiOuK^K8Ba$ahTV@(YU(w}+&CG!pXtD2r^pUBbesVF z;+fz(7l8fRw80`#vTVl++GOMh>1%LM70EalfG7IFkME1n9fShJMsjgV>@p@RJEty1 zqa;EY8C&?qJ0z#E4|2y@y=Fkl)mOM*lhf&%~% zXZ*gD&W=tKHnOTz#t~w}AKxid7F+T1d@c|rW>?-M{yqFyD{G)#C$Yx6L_@dY@U=`c z&$Ay>^*3`yEK-pt9J`3-wYi2Jc!&nU3`sMteO)$xf-RB1vLRW5z^o}l5aJyp5f}mB zW{y*n2l%H7L_s^8w01gJW4z*=Y}(Zu`G`F3joZ{{QB#eGT$2+pT5N5F@haSMF58Tq zDbje-GsiKo-(eCV+EI10`er~2tgS?`GWY&IRqGuQv9lQh5202s^l*r)v%5$Zg~j58 z@ZO1o=h!1|TJ-pR$_^O=>d>3C+WHSGf^)aenol3-N)+r(=0unmE=BhxG#6$ovo=$* z($Xf>#$=ZYG1!?J!opPS-+dtBxa~hS;vNZy0zcwCcinIM^ZcY^NkQK zmUD!~ab?pJ-W@})#P7@DQimfYMnv8OyahomtVzQIa?YS)(`(FCYvyrB)jxApm~2x* z_we|<87kST`EK-tr(WC7C}Zx_2C15%`sS6;@s~S%A?eh^SLfHqmc3OfW4j$Em6(W=dA)oh=+&3W+)z;beV zI%HOwx+O`M&hHKV&78q`rLUzNH{D9-LR&hIvh7O5xyMXYUCK1q?A`=BJ=XOXK9ie1cB?8vyWPVsfFs2%raz1#K@M{kAx;W*aFwB!ubUaWjof` zhy*lhZcD0&$hJ_i#(O_L_RQX>$yy)bb1L~t;h@U!s79XKv9yG>IFE3a79qY)6V&FK z@TlSBeAB-3=4u?-#=-f)!MFK|Is1^FmaccMFP8Q&-K8BB8@zMOu}^WBELjtpqR;W&|{92rpgdWtEN_1uTyp0nE$ zR7P?9=1qRZbL*^>PM%K6Qe2tB;7${&=L^J@U33;yiB(%Z9@?8R)>m$S8S3OJi_4;7 zEsd}BoL2Z*)wqi5ruC=_prQFRbL9f);9bB}ms|Z}^f)qM$KTP>Rf;W$&%zQTw`vv8ubMYL+1}qnRA)z6 zQet++gDL16`8Q32b&;gvm&Pv!Z_jdO0=__@6AYB+T-e<_{aRcLW;+&k>%eXY`gb3= zQJD{w8}Y!kpWjwMwcDq>^rw;=jz0qH7eK|+3n1MIIRi&~!GF15CX1*ODdt9LmXZrm z>YUy4R=I`iFZua?u%_%Ho~Bn=H0D|cXzBZPKnDcd@3dIFDNf&L_w@;%tewy&INa`|~%~jDd zneD_uHE%(3e=XA&7P zbuQQwcQjqoDzPy2$8EhA=LLv5sgi*Y+uIDZN{C7EMai-8*YT%@{UtIslaVWF8ApAf zI}rWLeYNXOM(~vW$fMF*$=vd-X2fa4Zzj#sh>zyMfuEr71sLmdnS#-$0CGnQ>pQpx z*Kz?!EnWci$kTn~FPVd{4H4&}S9E;UdhSMcskWLrbkf2^S(qZC1o78NxMhU4r@F(5 zB@$D+eo$)Lv2b^*fk!ly+5Mrc+y6yY#dv&eiM*zEn@i|wNj`j>Wt=vEGy7*FH)U8* zCt<6L7_jzFRbvT0C%)Z)#(j?5X5+(fW`nY2s5FkZ)_K;Z?GK7}yiqWXYPIVw$EsGK zAbuuk#+e1|WQ85Q2hO->{c>MuJ<>J}t4}rGou=@N(R5^NaKwGp=l2Yi#!$`Q2Y!vec%3 zC*K@FCAD{qk>&s*U=GlTII_GI7I<=wYV)0Htk23UX{JMz^!ZFg{ymkIQY+GMI(p7e z9kQlTX$w1>4+ydhDa{``#_xf_8lma}b6Ozi3gY*%@6X3a*iL&nql!j~q&b>WN^Yd669TI=Tsb)cS@jdEXYtXLz&2F6gZRcl>2rp{Up52oQ6jV>HE*hnW z9SqNG@$J5c8a;8IhX=_}@3%{)R8I}d)VXjm!?mdY#)G6IjZ(BafPc&%NwDM-t>-J(F5cBZOD*onj@_2r9GD)BZtJ^=aq`klM zoaIg7sB{$BZFLOoMw1NUP0fadsAbP}iItxgH6-u_Xu#I>f=#|7eq{@m&SanBd{yR7 zSs5*z=dNPSfl7Eq=e!Le)9SJ4tX5>?&6!C!NHhr^*$vl2!-_|^N=WFN`Z=t~Mw!4C~M<2s*4!HWn2eBH7GnhjB zs18VBN3fX&Lx}}hm}a9gV^^P59JkHdWJq|}A9-qo#GD8bGZ|Me3uL_h1_l>t##aG; z-9z_ngE)#Qb2YLp#U~9@NBKfN(CrsXW&Fj}y9F&DO=L-llAfQ}ows5rU1dbi;dk0x z8TA%1^L|wzlMeG{7RUl@c@|=~b|~gvlf{d75Nk)1FZwh_Ic~NACKEnb+qPLZf7rU7 zm6Twc(abKI+4gdPlPi{6cs*Q(_w9m|7SrwvB#C3T@(Psv1ds7n%+tJrRpxIqK3HJg z#(RLw%QZZ=+P*3tYj#!-)5ZaW-%O5up(gE`N3x6kW#(d$7$jNtx;h|~QKWbIoa zORX8>aDJK#Km)FRb|gz-=ZAfK=fEVOr|(qQ@A16ckxE(GdEJ}dnP6PW`^RK+*F{e0 zH%y%@DiT?Z2C+q%i3LR>A_CIA+zZ6(1&*nP%yzBm<(uvAF7`UTeJvCKg9(0aYFZF$ z!YO>S6W%y7qA@m(*s7|E)u8T7HlKW<5l;hQ4TzJy-a&!2QqOWMKl_EyhU?kWx~inp zy9~x^AFy!2)x~u^()4ocy*ZKi?6vr@iVUa2U1f&8l2xjys~!2#Q=|eyi|%4;QMMkh z=J^6#Yr~21jm+eDetWMyW#cdx$~hSs-k-VE|9zt`?6F0bDbF{ra}C+3Sm97hC&Idb zF#u;JmLi1dipVZFXUYJ5QHM2WPo3YHyH>d#TdUA>v+KiTE-~H>Y5b~~vU>Phky(uj>MPyEUm>fTQKnJA-94l;>II8luKuf=Fg`((a- zidWvP03gw*(}D7L^jc8>PW+J6{^6F=hx{@-$!PW{vIR}NzTle^MS3?fH4Z=EDbd2~ zo*bNEnPO@t&`TKY;|pNUE!MS1f*()jJDxYV&q3B}WMff5UN1Yse=V3kSW#{E3i7eB zn|9B7ISeXZS|M({F&{8 z>&ZQ+zL!ln6ADQb_CmxSwt9cQ2SpEPAe-~I5oqj!hOMwlbkPTJj{@xMaOT_yHhvm? z^cLJY0T$iXk0Xj8@nP|noSd|(*bdbi>pk_UcJcR`1_GTv<#H-kF_Aw)+N{H;Lon#d3xHbj zus#dDirkt&?zmt*`c-~f`P&oC%65nO?oa^SE~N)R@(_yo4Fo$JxlnJk)n(=;$!& z@OH@gj(S(gKj-CiWqI(x{pPn6X))5)^`N`Lcnw))!~P4q!{#xk>ukXa;ikk43S+1W zaH5?>7AEaCrdm2@+q8m_DL^r9B2s^JjbJ3C|g$~lLImf{|^x|9nlS9&drQE!hFJQgkO z<$DYJ?iH?AQpKB~znNP|y1ewo|KR94{Pf@y+=D|{)Ht(`1Mc+PrsKn~CHhf&FnbtL zt3$@e;TX0U*qh;3g8Gw+j+Qm-FIw`X{5zZodgYo>G)za7>yX3D{j+`%5ihWI704w;Mjt4!)KLv?_Toyb8S!74&Vz`|v z4PMbe*=XR5u|v>JxgBF%`^`=@MRhi;KJ;19XT|0%NRcYFI_&~R`Y*+3AJZ^g047!^ z7eLXohT|0A_}uRsl8RcgJWm~65_ADX4n~iM%y(d=8YGaNE|I}cNb4KG&3yW^&sRXg z`u-qn@X}=Pp|OOw&hfw%iO@{481+r%9a9Una(3y~hu}`D8ZxjsPaD2(#BB>YQ^3yc zelNvf7I}&dt_dEKz%GDmiszht5M=)~bua>b20l!Y_3=Ym!@{xLuR9s8#$k)y{MuC!FDfHf_Q6;PjklTdXVcnmU9Q9G9M*IihF0sOKyL;w4>F zr7R11E;;rLvIsl2>I=Um#8%7Ke;3cUdUq9cf8HEdzG;|niU;SX!R-cMS=-0jvle2Q z)*+CuxtDyUp0f{lIVr3PPe(3XYLmZ=90H_dNTh9ek=xfKD8l>11->b{^IT-0pflri z1qv>mBM`{uPurp(TQ7ifJaE1#G#li+_AKHQYi;J3gc@X-EQ~pKQ*`IKVA2T8s_(oc zD9xAUea3ju{1}aq^&Q7f^1IP!Y6JodbUtkhTmZ>z87TGr-+2q4(>|uB0b95OhN}a} z9bv59tA0aBDpc?IWUW#MqZR`i>8^AElpVF@NNp4fjmi@oVU~P-{HTr@79@BxP!Keo z3>3Ym4C-`#W5YgVsNwfs0}=)@B;&ZO?z)}Pl={!icKFsbsIR%;wzJ9cAFri>U^0y8 zrAGVV+SRb7Avedtz7~C~?FZWbOg3;K-v6>S{wGijUC?~JGTmaUX~1IBu}f591E?wC zyfbW-f*;l&JVfr)oSyhmdC+8t$mn;2r!&Y}03u61Ja>rN)+S^z8r}1bLEl!aC4@gdp9;=0Y&1a<**pD(~{|M##bETT$2N`2E zhC`q9cr{A>QPwMj4ti-=aq42dB(9<>XnV95*!$kfKXxBK3XxLYKE$*%ZZd$HW?lT0 zE&wMWAoRg+X+H1dof}yBSYy*PAu-#pT9tg1Kk{ZATD<6EN+Rjs#cxEx5IJ`5-*PrR z|BU*wq|N$f^r71au}Jg8uafUL6|WUrG5`b&7H^Qb*08I@;}*l=#=5b1RLa`2N!koP zC1Mr~q-6Iug|!f(_hW+>tqPvHNa5+5N0PA+=ctV+=-@~MrI|g%;Xe*AxS{=m#`bB= z;UH7z4eny4aOc}~6Re>F-|CcF+=jJX&FLHrJsX$YKDR3@I(87_dyFj@cXc(zjwvw( z={+X-Hd4c7v&IusZgnH{o9|~&^(9;-DzP7nH%+3hr^e>UmE!5JUh`HC|8clMW4j(o z2pwOg{~9dzI~zIhAdP4_R7Fm!T25>hn{g_bRvTUb$N0mROUqPCt)*N1#Wq z5;rlXuuFu??zrf$E|y7bd#PcXayTQJ_?Zfx;3OYwMkYf)_RoSoqDcwEuXGDG6TM_W z`VG@2sVJ}6h@+mT=yW8{`_bvgZ$6ER;T*DO%6wZYsqr8gY+c5kt$I}Ewz$9k3{tp# zE}Ap~=?wFjb-Bx|K%AC$@*Z_w!nBxA9+2+DY5Pp6hB>lyF*nB48B@?pLk`Vye$B7u z;2gyjnl$Y}!}_5MJV_Qv0DTJ_N`J9N9V%okpTI0%^>EeNwf9O`()0?oKf|tH7k%_1 zafm(nhEr;VrB(aFfHV3h*>#WXnzE`AB=53FWJfQ<6~~RBasO+s^dGqgQUD9^m1mhy zyDV3cFu?79lffUOQm%iRC?G+;Q5~}Yt`dKu@uOXJx;oILx*w zpbisXOBqiSpNhzp(RS`BLqgYNuGdkE#3Up;#&wUoCWN`ja44g!I9u8eVu1XU6%ceInLd3~Sy zHqJ@NF=dr>6z5s8)yDueCeU`#lx3pQPI;J1OW(_}WyU&Hub=AYZlQ2e`VIEbd!@*$ zR34CYwes-$@z^?PNa%+gr`_{e+m2q};^C6jOp*^pSJsXkgp+4DDKtH#DwJSJs?Tq> z6+~unq>Juu=2kM(OTL*{;v^+_a@VdMZ^lrUULJ6v_P(wE*1qfpMWA%|59c(0S*fL9 zCnrT9ZMb==IaWD0)a0Ia#GPer+oqc{%odt=N-Z58MN!=9q-+_Gy{+yMsqZ#AuClI7);xbnhy5CF{@Lg(N3}_Ma_ye-#+n zfAd`I|DofY|K)1`dj9k8&+q>G{O7;_|HD80#}@zp{Qrl4c>a^1z;?N|Dr$JrLf=S( zn#nwQPC*UmWHO6^dL8_RPQh@Ci4WYQ_wU?$Dos{;s+)R@uo@{tXJMXXUanG6hoUe-|mclA)=^0eHYxY z#C4#8A@?;HoWWqgz=l5S*9>^#$K$f<{4FCw+g4MV=TgYU`%lrYWw@}ap2gd-XH2)8 zpLd}jfy+DyoqaHhZUFt`cF-69HM@p&qBm0tZ}V9>BQ!y7e3GsPXMYp6j=`4I24I>~ z#rsZ2k;hAZA3*<@FW<`moL)hJ?z;=}PdTg;oy$VvGmc|>z~e8*;4cym(J3-qi&$?} z%E(UE$iQKQ=kn;=KO-iStgHA;=v;4nX6HsKJ0_(CB%Y(?(DL|GCbBim4!)KRKX+=- zYM7(`{)OiP*aFMjse%6~2cAKLmx{KTW*o=#Y@UrGVJB7(;H7+R;7NsKhRJlKHyAK5 z6n#e?%OBXQAkV=0r*pgLUo-x2&W1UVeXxX8XJh1$o+lWqCW!v%+-n1v;W5ag%`gGC-a0Esc$5XIBUW`Cqd`klk#*ZX{*k2TV&UOVJk7rAR^!O^*xd-47{H zu>D~&j5q?^8~>-e|Gp)UkSzk|`e4vOF>`bXzMuvxg|$WIN>Ge}2Sq<4ce>EJe^#fz z)2>y>?%M_nL^ymOl8V7JUCI;=a+rq{FGPe4F@5=f>%jC^rTD-n%%j#0txC9~fwxeh zzz*rBfWTj7Ll-N-lF9{%FlG_TA>{tN+`n;08tb zUstY#T*upRwvC&pVgLUZ$AgEri^=Bcu_b&z!q7D3XSnZ?sGeN3i~15GI{g|E zy4qwidjA7(gq}UmKO}nqhR3Pur>hxV$&9W$rEN8bMGHjg*sHJljM=>P-0w{ob~>5G zDJwISOiajbGI-+eDb*XB8|9Ylgfw}q3>43OP5te=?ZOG&{JcKSqH~3g#UyQ?@|ApM zaRvaI;iFeJBqgvj)RNBo?FRX%Z`i`7uAO=!d8nSkPcJUu3=1Xczs^-%ivEbXia;$J zY$$!L$|YCnysmU2&N!dUF!Ez#CwQfGWbYWR6T4I$262AA$8VKLe*SuM*^cN-T@?{C zR(9mK&y#fZVMXC^%j=SNz&)1F?CEVJgt9AQ6dEi&l7-ET_~Udm1^Ii^OatP$HYI>P zWsK0;p_8PM)lsp2c=eC0Y8g3YOaF=kZT%E;nlJ?t)@Rvlg0u;uu8u`(B5w2R^FQ$m zx-Ad_OY#WrD?~q8N&HI!$Hs|n_1&mb+nQC&arJfN7O<-5yM6F|Vy4w_s*hr+YvO@a zHuh~nuB#RacEM6iVrH+jj)mq`oyOa{b`8ub2Mbi|80Eir^EscbnlV0)Wpy&Z{%m~0 z$A!m&>(BJ20agu84sUaD=}Wr}{(MukG_+N60d%_74)y;0`t99u=$w8bFV8E@@}5su zCcBok$Ui+wB8Mld^?Z5=u1vkf-0oRBH^_YaN%c1RWBAL6{$;c7;*VQ`3PO9C5A{kG zZCAvKSOzde>*Em5VHK0nGpXr&rBnBV^>V8cvpfrB283Vgtiq(D9t`}X8py&`-t;53 z{>&}X$CE0@TC6UW?0dL*{oAW_)pwgsFCwNDjOLjsDq3ny@@#XxeQHlORtg&GLNQ-_ z>KbMzvLqWwd>(BVg)K$#$Q<6VjN;%q>Ik#cf7H#WNj2T3aJR5uBLK&Y?#n!aZq(!P zVSCrkO^f?X`DA8Tr=#n`{VF9r4|;fq`DDC5u)I_l z+_IwJZDo>Nj1l25rY(KJimf2;JkHk&TD%P%XKN033K0i!g%m3my{MaUxaRSWcM7-b zTWVvY1RbOf;V)!(tD`#kX4KgqR6Ls}+%1_Duc@qQ?J`AhvYiP;2A;IqlLQ66=MkMn zy>vMXy?w`J%`QcQZ%nWA(B!eousP3C(g_v%f#p|mk5S5pO@ZF-zI8=r7#jrdTeKe? zx=&puDDTDW@v05xz2z}Mc2VWf3kSrq=yd-fb0X8o_5drJi; z%3|L}$;-#_WDX4;t`%fpAodN@Gin9-)^@cr4UuTu_u)@Qq~H2zzm@E}Iy3&7N2_j~ zEn0vxjy9XNi!(-!#~+_5oy6PhpZzr@x#S^VUc#S6ho+-#bS? z+Ew~)n^lG#o=#5#TU8PTZ!2s{{5nBmMB&ibDf^;pADxQeCbCb_>SpMew0h6 z9S^mr2u{3F>wd6Hqb)PQxEy0D5Kw!weW?qp%8tQ_!>-OCt0~uT-CJ3_g}~*VEgEj$E>51%HzfUjFLp-29t< zi`%W4Lb^^q)aLu{`5;A#mO_g|OIlouyA&^0ihHqAtZ48cMT>jU zqM>NfV8x|)@j`I7;1VS1=6}wabNbue|JgnJVrO>e_aZY%X7c3L=egv2eQx=fL->qP zk0qvJl+1IH&LKD~b(=X!19GtpZZg|SQ=kJ^!u)UiGUxKAt9ng{?eicDxDD-!9*xkf zzBq>nj5CPXAP0AocoW4hB@dFcYP-l57b^hg_>Q5QcS)?dQB}fL$S%fy`5Fl z9*j}X>0{?XP#iMan!37K8+CfQG=sq>M`Z7KuoPS681Z#r*?)?6(~;6(RBd zZ18RL29cmQ@lvVTJ&~TJw|XgB_r7RAmY9aouTfasd^SP#SWmyco>yOknBHK?Yr?L= z&^`6gK0a)Z!ahQYtj|zsz>_z9$iY)!936xtJeuve%pq<~(PjEzdfe+G;>&A1%3b>wnf-Vf!p5r)PW8Hma5 z5?!;=jw54Z(nvxq(mjH!-Oo}j@B;l?^WswCRP`_>~Ak({9ocJ?7j3*a?RkhpNrBO z$U8%1$fVTz)+DN#`LwEknE)UFm%wG%<#~v<5AXe1S)`4HHoKgWQm^ZejeUx9fu9`3 zt6`?4(ZQdZ)`1tsyynuYH7~B@{h-IOv&wC=4(Gn#sGm4)m9m8yPyjp?uq)xi{XQEw zefVrV;5T=2tBdTtJ`VGe_0DwDpSNaSx9#D_?;DycV+2r{ zoOw9hwIji8g9lW>37yzbD%@Dspr3bm$GW+znZ8G)uzBR?!ym89LI;_Li;^AX`_?G5 zv~)fIj!Z`^{ps`YG8j8a)H?pbLAff2vvswFco}e4bZe{tB!XdF#zQ3&U(E z!RkDJemuoM)=?`+9a}3fJ)ZjR^W>X)4bDiT9!k$@*++P(nopK4E2tmoFMUO9-{PPg z4X=9jMBQ!ZbR2sO8!-o!^6K=0mu#dMx3*MEUVc2xkk!%;e7y5YN7%hZiQ8t1NewE5 zPp#6C#S`b*r6&d=+IW1QF716S#moB@MXeQQ&2~i_NhTnWv#s6?3UpyuoO!*h{?!nc z%WWq`fexS(>_S}(7Ut%^d~eYCr2Bc=eIGQrl1f?Ry~%}L)%29h^6Z&%x)X@4#Rt+C zM{77&aod(;>2L-l;@tjBND7@}Z0a6)(FIaDYwn37*Qn=_@r$}qC4XDdf*b(N5276B z?iLqs&}G`;XKn55LXgDjbxAS=q+&nkY4yYr^|(!=&e=I)LdJ#MW=i9-Yl7UxX_Dc| z%hd7gVe)VBG9Rl$sjtDU-gbNk?d0H`u#V$l>bc4bBnuA@-ME!j=bk8qG*ybZV{5P_(s zraXtSu_XaXJ0eb>#3~264(n)eulxo?%{K(CA}pfTW+lce0qIfCK zoW7<-?rTZI{uXj`erl=;DFK@{LqS_dl{Xg_^5mKrf4&Ubo}lIWCjCga_Y;4}ashsy zZmrf)6z;dNxbqe0OpCwXHjNTJZ%9A;0q$G>{d4EbA#~00KU5oN{|&9$VB{z}bL(?C zl<>C$1WlF9e@VRt^gEkXuzM#xh!-VQUNLvMUJJBlZ@pNF_QbujGm#d<%u1zk+X3f* zQvkwzO}GG7iQ6b|8)iOI9%+Clo!!7`k!Gdwp^9Bhnl>d)?-W)@zhIXjQf{- zwn^T27btjo%y$8b67ACjV7A^_N6yug*y<9| z0^_tGCJu~W_gbyuNvMG9JM1}A;u3ai_|#%QnTX5tt?mOHtY}HrjGcsy`EYQv^fcJ2 zL+9W*k4{kG>yJDptog`q=K$t6^y3Jm^$yh zOoSD3bli(SQiHW0C%$X9jXi=lEZcm(Yb-oVvTSpyrx7!#!JEey!M2PVL(?E`ZyqE4 zVaP>a`(IP}O^Zf-H_sEAsMka)nNnGD@Jy)R@cpP}wOY7eV*9%16jxduqn$b8{GC2W zTEpH5YamVv246@B<-nG-(mlyzpp_Ofz-+7S7}Z|Yl;N(ce3V7C=vsI4I@3gL{W6te!D6=L(&)bCcl}gLqWnI6To+o4=$e-iR$_y-HGO5|VTu|_ z-pGJ2?sd8vVRtglYmR~v>PsR|^%kf_WWyC?b;cWBRQ!JiFea$K9Zs3Gv@Wsl{y{81w231FX_W)L`s>oKPdw5Z+VjIWe=Pf_gd2}WIQUZ z(ctHS$;#*K-W?Ce(FSk895HBo2E<(%#5%c zq|>RAuB@^!n5CWoNwF+}ZvzEb%G*iyFWZ3Ck7x2yK&?)3F*_&KiVE`vuH__b!{t1K z!-WsO{wvSY1`&>u0Wn;Rl&RGEq2qRpEpaznQy8b*@I)*>?o1FC+;jPcF2E)Ds5S6| z27T*g)%X~UCE>WiRTNpe{2L%wHOeQLn|#Rj;YGiM8sLe;JzT~IKl)#}ATqQCpXm*` z^!W#N6f#DKiga|GZ&!#73$IIk;KG$M1n8c2MJKA9!LYX{lD{p0Fh_piemP(9xo@&U zp~F~>{Sbb@D)bq+nD{sa8>}MjfG~N8A|n!}O}Z>``w0L=yKl9d*Zun@FFU#FB8;r~ zb^PKoT{JrPBIGY6$(p$L)-r!_`T3UZe%xApMONtDX>sY*4G>L4mvjp=M}3=D4`sM} zRZj?<8RsQ7NzqbzGM7w>j}c)U>`SavF&1f7dzrmnVbCgX>njmk4kHlF{?SYRG|Sq6 zlC5Nrht}#VFypMkb_LRd_koK`s{W})%k3mA?-v65Hc_cEd6LI2pCri8ZEwB};x!kG z`<<**XbBb<&){bXS~t_48%*qo{>Z}yi7WDA?rJCS3Q@k*X>D+obK!`>8oZwmXynp3 zSmmJ*b(0~EMF0Gaw4nR4EfFfB+a1}KCQ{DXj=FY`X3*qXTWjzHh70Wj zd@>{JV56|OgO;V|QFG7jHfYwY$fSP0(Ph_2&E;H9Z7_0du66u=g!HR8t6xIJ?gHDq zW&*GgNyamVYkOWFaaNj|Rd4H3^3D?0BRO?>iE6va1I%*ix<}YqQWi~qMGE8w&iCcn zJ3^pyPMim88G~fb+?*Ie>HK;x`fZqm9v=%D6^|gWvB#Z#GK0?LmFd|5ZZ-LCNk_gKp1jxXpx|E)x!FV;=5#& z3FkJr9a5a>fBWqWRky#7baF*KIBwqgDbN26nYba%X#b9zxv^eeJ6_9LU-QSJsdH^% zxiaBMq6Rwz!PIj(WLcbGo@ywPp(+xcIC$353w%(1i85v*MU3CS3+T`H#tK$PE9W< z!OAb$Zo`-+rpO`1I%(67FdGL!S2@4<9`uN;=Xui$hsH$IMPZJ};cM?F?|#_(lD^f0 zKJ26z{!*hs8oJJcx|Nq2=l{;227*@{T~;z|<&Jou+H`$##S!)^TulXwG4GYljbNZy zReOcj#-;{FH8Ew{Qw>UQ%1*Zin$*amFs&v%n~Ow$f)zS=*jKvVpHQzaDf%PN;G07W zRr9Y`KN+bu%uEH*3qIA@5_w(IQ8L8bJ}!T71k>5SK8HCj!M`EFRT@*9ez-*oc9+mJ zA+2=Nn;YM}hk*M`q-b0GZUgJoh;8J6X*g8Ob#C%<1UlUreQcY97Vh zTA|}^T>tQ$GXKSQinpRNK323G_5aR(4!Z0YMwp4LqeX7$=fZchEHTPWD=H2QhV@=X z3Tw5}sDilcIOALG_-gjX6dHA}&g~5G0X%^J*0oDC0GAhI&56P)ug^;-ROk(}fofHKX4S&kHA zaQ|YX$X~{}X&e{hxrc`r;~JuDi8X{iB&( zp)00*bew$cPRYWK1A7p|iVK#;#Ka^*OX^LBC%`YsF^BslL|WtN!`$@cOclN>y>Kp3`ex*?}nImj%2u_T3FsTzEZk1Zv;ksHUfA`;3(P zc^{93=gE~R3KY#{=v&w4sOoQi8hit?Sr(3x*&HD#g$?mn)^Pop3n~4SR)ea$qenLX zl0czFhD2`ioBp+zE&U2)EM!KtBAPwW8gkvRLNa-%>G zPqbUs3XS1de=gz9qf4kyuo~gxprX(s-*=y2!Mv{3L*lOdPBgABBWA6zGR;2_7+2-P zk)HeQw&T3M$mI)U0DGBYIXVj_Uj=rZ{S9~uj$t@XuwP!NM`ww0*Gn&$i5BD)=ZKx`;S?C_m^oo-Ur8u zI)`ymUED@;>8gIVY_PM8>a&R@mwTalZ+$MASM_-({j#J?eL>_b2bWjwdTO?{_`G^n zvGP zRzTbzE3AqpWPK^d-oB{2Lcvi$O=X^S{(0&zZ&@4Oo?b&RpM1&`{L#Kx{>pH*O|wRr zsZ@A>#;eDqHXv0mwUJ?8@whtv_ouQSdEcHK-n-0;!9N|kF4;*=HknS%km{9cDw7gS zJxJZEZ$Z1Xu%kt9`|6!PhhOmyXn1wS2|i^;%zj+Dvrp_BC*bU8iaOJZ1vyHtNWZPW zRhFSWtTs|Xgo#HS3h@&1;W@U@Gb1`L9~t>e_MN$z$kDoyhZZ!-w?xgXGHS7=1=#$G z;m~>_Vt%Wzmof;?pLNc?6Vb>555;svYMh&eGzB5RSQ}C4aop*JvZL zFgqq<$osH(i||3HDvH5^3sf5rpj&e{Z+1*#@|Vf~%bw&`L@Zyz%0^!6a~Zu9;x#hh zaFN~8oY@uJuu5;cw8MBRf1l}H$MxM}=3_9W6>6q#0)7rlZcJRQIQ)_>vn8$bNNsas zHQ%B}X#sCuRwqI@-l1UepydvFml2?+_YH|UIzqM1mexqP{j;@rnv9q$lz~(rr|V%x z1Tta^{bb$>8nvGqpgL!UW?}e{8gzTwm{upQfonWGirtrAFu$G(TQ!;4GFWIqr*Y}}r5zhlM1 zr^5E;Qo!GxjP@ne#O^1FJ{%AaS|CAv=TF^?coM51vte~5+5Ih#JcXGvBnv7tdsdtx zy`r!Xs~*s}4&7BEY9|auEl;*We>~<1N*KH8t(wWUMal4?cPPHpxsl#R`^N%{D*bps z?-Ug<*lmjo%m7hAzMBDWJmf}xNcs(suXj{kGc7ygtvHrayr%uWxY2Dm_2gqvgOaLk zgLxe8N#|W@k7z*svnh~n@q%<|pMv?zCN^0%bJ8~rGa`(^FGgHY{1blmd0xd}(w$3t z|6=1pRUqR=ivBpBHKn!rph~k7z++F|<~;+shjM|vs;?dYHJxX5N~8yFuqBNi(JztF zr98J_(IT4KjI1=ab7q9C>%7ir-RL8B1Lt&hGE5##xr0$57KcCu=_;?us){4{jFFzf zL#z~mGslt7Jc@h^y>y}FN@qRF2G|xj%Nz_BIqsidRjM?Jh5Nu!_f73HiY^OE_6#1? zVxMXfK6PAwA1588*hb`u}2ara8 z71hrM2SP?1Z}C0z2w2`E`4kEsg*RFu=g^!4TSP$@JTAql3amR%(C)!g?6PvfzG z8`x@9s0VABc2IFDgTx^juUNXSB}<}${#jt3_0UN+END-jD|5w}U|;vEf6@0YBQcdX zX!Cs4;Edy*q+Tp9Tf+{X8Ru2yvb@(-Hobw1Dkf zwYr3-5fie42k{D}_~*_5ImYVd7Hg}h!<(%&3UiqUt>N~L!c4=R$(R^DA>v!5QXW;# zNy^|A;7&N%w71rd~#7;-zw9Y*$^L9Oo#0&_}f}u z51_RVRxH~nWM$t(TbDX|Tsv(^Tab-+R3Kwt$Jgsgm^zS}H$8axakHS&qN};Q7j_vz52W=a!H*wvIxH^*xNp24Xz9g=hG^C^zyQWPDINxJ6 zGP*GG2Ahbv6WiK@(2vhMQ{+uLl%9Oj$sP9nSxRsHy3z#Pm4+{?NtgEP7!#eCu92Vc zc;Uyw7}r_Jw}V_6AR)FN<)0cHjx@=XNm+#F4|&h1_e=7JZcbr`#I{K9qpPe)gyZU^ zj&7_1Omtzh$o17HYFWxeWhtN%9&jUA132z|43lY_%G7mFai+HraZgFxzMqhT(KnIs zwC0>ivbcGV1$ymQXO^hC5qxxmY8|C&dw{UWyJd|stM$fQ9z4sn!IrXJh6oV(`6%+AZ4k;LsHt|weeZj($BB$`rv?TYOVy6neoegKVmw1s!o zjH0-1=jg44GH>?zpaZ-6Rpd8M{%?a5+*|AI_oZt3yN6>aB}3y&m}ysRvplPQEEAA5 zUjzDh4krH}u5BB$dU?zxo}OQb{YolV)| zF6e5%VXtpS=N#mT`Y>x}@VJfrr~BOe%$a6=n0w#OMh?G4LPClSwiT&@B4fzUS-lws zYqWgobN_|TB8p+d<+T?MeljpaCzDYuxGs?b7n#Cq;p2(fP=1bl-Svd1zNpnDHc*xM zH-M_b%g=gsD2$c3$mW0|J+v`8yOe;p!zt=ZEq#y-Gl2Skz#^1V7>O0pv^C5uK^xmj zp)KwH+}Grn_PJ+AxJV@WnHD`>i!P1I^^!U|K=-BYze-&wMSZ*F?!WuDj%d$Sg2!4J zt}ZoDFBC@5AbNC8qP+%ulJWEZl)rG(ebCNuMp9aNbc`xs1i3hm_;|cF5 zu>9qkPs9Ffr{Et0Gre&F4YM+jEH!w++kv_ER9ON*)AT$X{iWsGic$j{Tx^<%AZ!n8 zr+vkLoz8TB9S}JDn%wh`i~MDDtE!^!1ouXpvp>J=M3W{MtyZiK*MTdx?c`$!bwBRk z02w2OJA8CyM^wQ+NzEO2ShBRGz56c8_m7^w`(udp{?W+@c1eg$Uf<^PHQq+6=(x;; zcm+i&Y!94N1}cQpmV6kU%E+eY{Zi zT=~oJ{uid~O%fUjk$OPps4_xX`i;niQcNF5J9v>w$y(xmyn@XCc9V{z@P8@Z>TXg{Nqyzh$A`e+$`y23&+O)QQ#P~({T!7RTgO17aDoRo8&vE#= zJoi2+9nu`dvKBb-gypd3Fia`1TOrVm5qP*GN;_*yexfe)a&W~Z1uYF^D=P>0e_TGK zmi%_h>ApX!I9q!!H0H?jU~;z^WW=>|4Za*0yJOq!*mJ7rhv-&~DjS%0=yLQY`r1Mm zUg_=3!cz(SxUvXs;hu}&<*HF#53OdPF-xcAm{i>QMC0fxrQ`}a@x!1!ssQFy$^01V zie;XtDBNGnCZsF<7$ei!$$Qi%fL~C@AU?34PNaW*KK-FWBirDYb>^*o6nSQ!oCtO( z>OqdiZZ9(>to3|5&aBGRM>~W+@`mN$GN97KqE@`8*QT~c!N;8P!n`K9HJ>l*t9GY^_x96tN<*`b zIK17{`rhg$4$BOz&loh;F?mS{MKP0azO?l3bMIcv2K%*(dCUwujb(^>j4h0~Q-k|R zu$IJ(=FJYx6NeR(c&;sVGvpEj{YuJz?YV?v#}k<$Ou!_qxlFf;8!#yHC6YJpdRv;p z2Jv9^p#?>B*oF*w6&vc<*1e10A^STonPn`o_jXjptr&t6kI<>6AM2{1@&$5P#%R*d z;+VHK_D~fKu<-_3DV*ADuHhZ<)-qu#jVb{SJAffkM<*?-w>8yM-r5Pbkw{*&oCZk* z(4InJAry7mQ%_eGuCItszZn3iEK~ajKk#``RlbL7K>L|>z zvfRgZa7)q3wS=3X<-q?L3&K9V0THwchF8d$PSmG&4G}u>NfdQEzL_I6mzE89+X~Pa znFPdR^m##6$HK&!-d#0^W&4;%TW5%+IFM+khf_3J9M>wI(C5A%f|w{`zw>M7+hMo( z)wFn9FshFtU#37mrle1-qnq8Ao|ATp@+m#7ZK6pDqf&S4#10k6`N z5wyD}T$yon8F1_{QQuR%!yl{MQ$S^zdw7#EG%oJFGKNqpp04yr$?vK$n#^Kj}OOtcd2d*(Z6D(mNZb}_!$2?8mKWCW;KfK=Qr4miyOU; zP1X!T&#{?_qOBdcZEa2drP*_fG*=3RSLTF?ILZJJqb3d}YK)%1dWm}9S^T;HYPMRY ze9YcOx?3|B)^y81A^(Db$JSkCFa6q!^7AS0K>sT@j{w0tsh6jH1*chPG64Q9+ConC zsLewwfT5A_O%tyD(I}!%%!ixC&I{T{rAfJ*&9;==R8)ZVWi&g)(9)%uN|@n0oyHwb z#hw|aI8(_2Fb!vW_%uJ%g%Qhvw_Np(IXj|BVpO9Z;1k7?7X;21JeVORF_ zGq4*#=~poxrs%X11z2-u2o9h)-YTL)er~*d_5N1w2VVEr=nY4@^!1!ZftfhM-Qivt zzseV5Rjaz%hLhH5t^;ZJ!J*A0>6hp_X1%}p4uA6<{^mRUpYk1aQ&U#PNOnFwwVToG zs7c{^;L=#>xxL#|eIbDR2NdE@ScEk7@~;_&vtB7Sw_QOl*Kt;1EQmRe6eFM<{7>;1 zf)ACeHNEBbo%Wq`# z_FDDHyOT8Hp{Kz@gwSVhO2m)57#^6P2o|SeF6O@#!fNDMIVHiO^|$vBz}F?P4wE=y z`wBel3aOXrvFE5XSbXqWIQx_E3P9;}EZog#Y+a5s;{a-t+*fFMU;T|`mbqn9)thlG zzeP3$nuOx|(4WUt)~WpB(R?XlCRF;Qd&DjY(xlyM_Z%X1$t~)`_F+mPz=)dOr<}tx zXAX(Ximy+Yh+qaf)5&(7F56fs^W9W53H^*bPu6W?LfF}H6s;M9i7eg;X`Aj;R24SJ zP8UWoYh8A3N+nY;>aW+vr$h;RIw_>!3{&aHtHGah*TTvzprt?-2Kz70T$F1z1WyYC zA1U;mD==Y~i~#s<4H|3Dto142tHN)A-MKkSFY52ZnLQ5lhf1DU0i%g#pEoDY^D+%V z23KIMudAyFxzh&DP0RuZ^D;!TJbGxn6I* zhDD_=Kc170BZ^C>=QWY~a(S7aRasmOlti)DfE zOYggeOiSkl&^Tcz zC7&x~E0f{$M@VA10*?2OQla_m4N+0UA@RhD?xZl+L8jU z7oz`^d-TC;zxUa6QE$>Uh_}v3;RE^*b7T4`KxWCJmQD0eEFrDt%zqFKXuj5IVxfEg zpMFsIQKNQ7_%-rpoXK!F0|IU?e>^0U>7wchxaf(+HC_jt|Ja3_Fj5Kp+7Z+e_uDSE zfB#|IlP~L9XH0PXj-e3Yd2Bo{``V&U^@X`@mJ>5Yp5y&b`l~MS6pCwr&P&GVkSTh3 zcOQ7UOT*@j@OHyX|~2R{bi1FzVD5Y1K`s| ztGCs5rADvDsja0d~`SjIVYD0Kl3JPp``J5F?J-!_-S%5Z4=t|GvYPg)r;y;R}8>eD%HRMEvB0h z0qDN`^PFdq4|I76KI=fS)BHj|E8ic$KX~KV z^I4)HIw6raIyObS$E};OUVjc$C}t@9OO$z7>Hb1ei&(6|4`!McLTVNaSjnPVexTI< O=Lm=YGV|fjAN)61Q5wSl literal 0 HcmV?d00001 diff --git a/packages.config b/packages.config new file mode 100644 index 0000000..46c6156 --- /dev/null +++ b/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file