diff --git a/csharp/05-array/Array.cs b/csharp/05-array/Array.cs index ecdc35f..3ceeaee 100644 --- a/csharp/05-array/Array.cs +++ b/csharp/05-array/Array.cs @@ -1,6 +1,6 @@ using System; -namespace _05_array +namespace algo05_array { public sealed class Array where T : IComparable { diff --git a/csharp/05-array/_05_array.csproj b/csharp/05-array/algo05_array.csproj similarity index 99% rename from csharp/05-array/_05_array.csproj rename to csharp/05-array/algo05_array.csproj index 68495a7..70e59c9 100644 --- a/csharp/05-array/_05_array.csproj +++ b/csharp/05-array/algo05_array.csproj @@ -2,7 +2,6 @@ netcoreapp2.2 - false diff --git a/csharp/06-linkedlist/LRUWithArray.cs b/csharp/06-linkedlist/LRUWithArray.cs index 69603ed..cc733a7 100644 --- a/csharp/06-linkedlist/LRUWithArray.cs +++ b/csharp/06-linkedlist/LRUWithArray.cs @@ -1,7 +1,6 @@ -using System.Text.RegularExpressions; -using _05_array; +using algo05_array; -namespace _06_linked_list +namespace algo06_linked_list { /// /// 使用数组实现LRU缓存淘汰算法 diff --git a/csharp/06-linkedlist/LRUWithLinkedList.cs b/csharp/06-linkedlist/LRUWithLinkedList.cs index a96d427..2812352 100644 --- a/csharp/06-linkedlist/LRUWithLinkedList.cs +++ b/csharp/06-linkedlist/LRUWithLinkedList.cs @@ -1,4 +1,4 @@ -namespace _06_linked_list +namespace algo06_linked_list { /// /// 使用单链表实现LRU缓存淘汰算法 diff --git a/csharp/06-linkedlist/SingleLinkedList.cs b/csharp/06-linkedlist/SingleLinkedList.cs index 6b7bd83..cb0537d 100644 --- a/csharp/06-linkedlist/SingleLinkedList.cs +++ b/csharp/06-linkedlist/SingleLinkedList.cs @@ -1,6 +1,6 @@ using System; -namespace _06_linked_list +namespace algo06_linked_list { /// /// 单链表的插入、删除、清空、查找 diff --git a/csharp/06-linkedlist/_06_linked_list.csproj b/csharp/06-linkedlist/algo06_linked_list.csproj similarity index 75% rename from csharp/06-linkedlist/_06_linked_list.csproj rename to csharp/06-linkedlist/algo06_linked_list.csproj index 66e10c4..0b68f2f 100644 --- a/csharp/06-linkedlist/_06_linked_list.csproj +++ b/csharp/06-linkedlist/algo06_linked_list.csproj @@ -7,7 +7,7 @@ - + diff --git a/csharp/07-linkedlist/_07_linkedlist/SingleLinkedListAlgo.cs b/csharp/07-linkedlist/_07_linkedlist/SingleLinkedListAlgo.cs index 061a9a1..f0d3e49 100644 --- a/csharp/07-linkedlist/_07_linkedlist/SingleLinkedListAlgo.cs +++ b/csharp/07-linkedlist/_07_linkedlist/SingleLinkedListAlgo.cs @@ -1,7 +1,7 @@ using System; -using _06_linked_list; +using algo06_linked_list; -namespace _07_linkedlist +namespace algo07_linkedlist { /// /// 单链表常用算法操作 diff --git a/csharp/07-linkedlist/_07_linkedlist/_07_linkedlist.csproj b/csharp/07-linkedlist/_07_linkedlist/algo07_linkedlist.csproj similarity index 68% rename from csharp/07-linkedlist/_07_linkedlist/_07_linkedlist.csproj rename to csharp/07-linkedlist/_07_linkedlist/algo07_linkedlist.csproj index 0080a55..0e988e2 100644 --- a/csharp/07-linkedlist/_07_linkedlist/_07_linkedlist.csproj +++ b/csharp/07-linkedlist/_07_linkedlist/algo07_linkedlist.csproj @@ -5,7 +5,7 @@ - + diff --git a/csharp/08-stack/algo08_stack/ArrayStack.cs b/csharp/08-stack/algo08_stack/ArrayStack.cs new file mode 100644 index 0000000..c8b1e9f --- /dev/null +++ b/csharp/08-stack/algo08_stack/ArrayStack.cs @@ -0,0 +1,41 @@ +using System; + +namespace algo08_stack +{ + public class ArrayStack + { + private readonly int _capacity; + + private readonly T[] _data; + + private int _top = -1; // 指向栈顶元素,当为-1时表示栈为空 + + public ArrayStack(int capacity) + { + _capacity = capacity; + + _data = new T[capacity]; + } + + public int Count => _top + 1; + + public void Push(T val) + { + if (Count == _capacity) throw new InvalidOperationException("Stack full."); + + _top++; + + _data[_top] = val; + } + + public T Pop() + { + if (_top == -1) throw new InvalidOperationException("Stack empty."); + + T val = _data[_top]; + _top--; + + return val; + } + } +} \ No newline at end of file diff --git a/csharp/08-stack/algo08_stack/LinkedStack.cs b/csharp/08-stack/algo08_stack/LinkedStack.cs new file mode 100644 index 0000000..f001770 --- /dev/null +++ b/csharp/08-stack/algo08_stack/LinkedStack.cs @@ -0,0 +1,51 @@ +using System; + +namespace algo08_stack +{ + public class LinkedStack + { + private StackListNode _top; + + public int Count { get; private set; } + + public void Push(T val) + { + var newNode = new StackListNode(val); + newNode.Next = _top; + _top = newNode; + + Count++; + } + + public T Pop() + { + if (_top == null) throw new InvalidOperationException("Stack empty"); + + T val = _top.Value; + _top = _top.Next; + + Count--; + + return val; + } + + public void Clear() + { + while (Count > 0) + { + Pop(); + } + } + } + + public class StackListNode + { + public StackListNode(T nodeValue) + { + Value = nodeValue; + } + + public T Value { get; set; } + public StackListNode Next { get; set; } + } +} \ No newline at end of file diff --git a/csharp/08-stack/algo08_stack/LinkedStackBrowser.cs b/csharp/08-stack/algo08_stack/LinkedStackBrowser.cs new file mode 100644 index 0000000..ad06ad0 --- /dev/null +++ b/csharp/08-stack/algo08_stack/LinkedStackBrowser.cs @@ -0,0 +1,39 @@ +namespace algo08_stack +{ + /// + /// 利用链栈实现浏览器怎么进后退 + /// + public class LinkedStackBrowser + { + private readonly LinkedStack _backStack = new LinkedStack(); + private readonly LinkedStack _forwardStack = new LinkedStack(); + + public void Open(string url) + { + _backStack.Push(url); + + _forwardStack.Clear(); + } + + public string Backward() + { + if (_backStack.Count == 0) return string.Empty; + + string url = _backStack.Pop(); + + _forwardStack.Push(url); + + return url; + } + + public string Forward() + { + if (_forwardStack.Count == 0) return string.Empty; + + string url = _forwardStack.Pop(); + _backStack.Push(url); + + return url; + } + } +} \ No newline at end of file diff --git a/csharp/08-stack/algo08_stack/algo08_stack.csproj b/csharp/08-stack/algo08_stack/algo08_stack.csproj new file mode 100644 index 0000000..ec0b0b9 --- /dev/null +++ b/csharp/08-stack/algo08_stack/algo08_stack.csproj @@ -0,0 +1,7 @@ + + + + netcoreapp2.2 + + + diff --git a/csharp/Tests/_05_array_tests/Array.Tests.cs b/csharp/Tests/_05_array_tests/Array.Tests.cs index f5cae7c..5e4f88f 100644 --- a/csharp/Tests/_05_array_tests/Array.Tests.cs +++ b/csharp/Tests/_05_array_tests/Array.Tests.cs @@ -1,7 +1,7 @@ using System; +using algo05_array; using Xunit; using Xunit.Abstractions; -using _05_array; namespace _05_array_tests { diff --git a/csharp/Tests/_05_array_tests/_05_array_tests.csproj b/csharp/Tests/_05_array_tests/algo05_array_tests.csproj similarity index 87% rename from csharp/Tests/_05_array_tests/_05_array_tests.csproj rename to csharp/Tests/_05_array_tests/algo05_array_tests.csproj index d0fa21a..2e90daa 100644 --- a/csharp/Tests/_05_array_tests/_05_array_tests.csproj +++ b/csharp/Tests/_05_array_tests/algo05_array_tests.csproj @@ -15,7 +15,7 @@ - + diff --git a/csharp/Tests/_06_linkedlist_tests/BaseLinkedListTests.cs b/csharp/Tests/_06_linkedlist_tests/BaseLinkedListTests.cs index e36298c..2a6a72d 100644 --- a/csharp/Tests/_06_linkedlist_tests/BaseLinkedListTests.cs +++ b/csharp/Tests/_06_linkedlist_tests/BaseLinkedListTests.cs @@ -1,7 +1,7 @@ using System; -using _06_linked_list; +using algo06_linked_list; -namespace _06_linkedlist_tests +namespace algo06_linkedlist_tests { public class BaseLinkedListTests { diff --git a/csharp/Tests/_06_linkedlist_tests/LRUWithArray.Tests.cs b/csharp/Tests/_06_linkedlist_tests/LRUWithArray.Tests.cs index 449e8d7..88fcec5 100644 --- a/csharp/Tests/_06_linkedlist_tests/LRUWithArray.Tests.cs +++ b/csharp/Tests/_06_linkedlist_tests/LRUWithArray.Tests.cs @@ -1,9 +1,9 @@ +using algo05_array; +using algo06_linked_list; using Xunit; using Xunit.Abstractions; -using _05_array; -using _06_linked_list; -namespace _06_linkedlist_tests +namespace algo06_linkedlist_tests { public class LRUWithArrayTests { diff --git a/csharp/Tests/_06_linkedlist_tests/LRUWithLinkedList.Tests.cs b/csharp/Tests/_06_linkedlist_tests/LRUWithLinkedList.Tests.cs index 11a343d..3136d92 100644 --- a/csharp/Tests/_06_linkedlist_tests/LRUWithLinkedList.Tests.cs +++ b/csharp/Tests/_06_linkedlist_tests/LRUWithLinkedList.Tests.cs @@ -1,8 +1,8 @@ using Xunit; using Xunit.Abstractions; -using _06_linked_list; +using algo06_linked_list; -namespace _06_linkedlist_tests +namespace algo06_linkedlist_tests { public class LRUWithLinkedListTests : BaseLinkedListTests { diff --git a/csharp/Tests/_06_linkedlist_tests/SingleLinkedList.Tests.cs b/csharp/Tests/_06_linkedlist_tests/SingleLinkedList.Tests.cs index 525665e..8f577b7 100644 --- a/csharp/Tests/_06_linkedlist_tests/SingleLinkedList.Tests.cs +++ b/csharp/Tests/_06_linkedlist_tests/SingleLinkedList.Tests.cs @@ -1,9 +1,9 @@ using System; using Xunit; using Xunit.Abstractions; -using _06_linked_list; +using algo06_linked_list; -namespace _06_linkedlist_tests +namespace algo06_linkedlist_tests { public class SingleLinkedListTests : BaseLinkedListTests { diff --git a/csharp/Tests/_06_linkedlist_tests/_06_linkedlist_tests.csproj b/csharp/Tests/_06_linkedlist_tests/algo06_linkedlist_tests.csproj similarity index 68% rename from csharp/Tests/_06_linkedlist_tests/_06_linkedlist_tests.csproj rename to csharp/Tests/_06_linkedlist_tests/algo06_linkedlist_tests.csproj index dc95495..fad3825 100644 --- a/csharp/Tests/_06_linkedlist_tests/_06_linkedlist_tests.csproj +++ b/csharp/Tests/_06_linkedlist_tests/algo06_linkedlist_tests.csproj @@ -2,7 +2,6 @@ netcoreapp2.2 - _06_linkedlist_tests false @@ -14,8 +13,8 @@ - - + + diff --git a/csharp/Tests/_07_linkedlist_tests/SingleLinkedListAlgo.Tests.cs b/csharp/Tests/_07_linkedlist_tests/SingleLinkedListAlgo.Tests.cs index aa5f093..9527f6a 100644 --- a/csharp/Tests/_07_linkedlist_tests/SingleLinkedListAlgo.Tests.cs +++ b/csharp/Tests/_07_linkedlist_tests/SingleLinkedListAlgo.Tests.cs @@ -1,10 +1,10 @@ using System; using Xunit; -using _06_linkedlist_tests; -using _06_linked_list; -using _07_linkedlist; +using algo06_linkedlist_tests; +using algo06_linked_list; +using algo07_linkedlist; -namespace _07_linkedlist_tests +namespace algo07_linkedlist_tests { public class SingleLinkedListAlgoTests : BaseLinkedListTests { diff --git a/csharp/Tests/_07_linkedlist_tests/_07_linkedlist_tests.csproj b/csharp/Tests/_07_linkedlist_tests/algo07_linkedlist_tests.csproj similarity index 72% rename from csharp/Tests/_07_linkedlist_tests/_07_linkedlist_tests.csproj rename to csharp/Tests/_07_linkedlist_tests/algo07_linkedlist_tests.csproj index 53f9120..2e55887 100644 --- a/csharp/Tests/_07_linkedlist_tests/_07_linkedlist_tests.csproj +++ b/csharp/Tests/_07_linkedlist_tests/algo07_linkedlist_tests.csproj @@ -13,9 +13,9 @@ - - - + + + diff --git a/csharp/Tests/algo08_stack_tests/ArrayStack.Tests.cs b/csharp/Tests/algo08_stack_tests/ArrayStack.Tests.cs new file mode 100644 index 0000000..ec28a54 --- /dev/null +++ b/csharp/Tests/algo08_stack_tests/ArrayStack.Tests.cs @@ -0,0 +1,81 @@ +using System; +using algo08_stack; +using Xunit; +using Xunit.Abstractions; + +namespace algo08_stack_tests +{ + public class ArrayStackTests + { + private readonly ITestOutputHelper _output; + + public ArrayStackTests(ITestOutputHelper output) + { + _output = output; + } + + private void PrintStackArray(ArrayStack list) + { + if (list.Count == 0) return; + + while (list.Count > 0) + { + T item = list.Pop(); + _output.WriteLine(item.ToString()); + } + } + + [Fact] + public void Push_3_Elements_Then_Length_Equal_3() + { + var stack = new ArrayStack(5); + stack.Push(2); + stack.Push(4); + stack.Push(6); + + Assert.Equal(3, stack.Count); + + PrintStackArray(stack); + } + + [Fact] + public void Push_Throw_InvalidOperationException_When_Stack_Full() + { + var stack = new ArrayStack(5); + stack.Push(2); + stack.Push(4); + stack.Push(6); + stack.Push(8); + stack.Push(10); + + Exception ex = Assert.Throws(() => stack.Push(11)); + Assert.IsType(ex); + + PrintStackArray(stack); + } + + [Fact] + public void Pop_Throw_InvalidOperationException_When_Stack_Empty() + { + var stack = new ArrayStack(5); + + Exception ex = Assert.Throws(() => stack.Pop()); + Assert.IsType(ex); + + PrintStackArray(stack); + } + + [Fact] + public void Pop_Valid_When_Stack_Not_Empty() + { + var stack = new ArrayStack(5); + stack.Push(2); + stack.Push(4); + + int val = stack.Pop(); + Assert.Equal(4, val); + + PrintStackArray(stack); + } + } +} \ No newline at end of file diff --git a/csharp/Tests/algo08_stack_tests/LinkedStack.Tests.cs b/csharp/Tests/algo08_stack_tests/LinkedStack.Tests.cs new file mode 100644 index 0000000..8191692 --- /dev/null +++ b/csharp/Tests/algo08_stack_tests/LinkedStack.Tests.cs @@ -0,0 +1,65 @@ +using System; +using algo08_stack; +using Xunit; +using Xunit.Abstractions; + +namespace algo08_stack_tests +{ + public class LinkedStackTests + { + private readonly ITestOutputHelper _output; + + public LinkedStackTests(ITestOutputHelper output) + { + _output = output; + } + + private void PrintStackLinkedList(LinkedStack list) + { + if (list.Count == 0) return; + + while (list.Count > 0) + { + var val = list.Pop(); + _output.WriteLine(val.ToString()); + } + } + + [Fact] + public void Push_3_Elements_Then_Length_Equal_3() + { + var stack = new LinkedStack(); + stack.Push(2); + stack.Push(4); + stack.Push(6); + + Assert.Equal(3, stack.Count); + + PrintStackLinkedList(stack); + } + + [Fact] + public void Pop_Throw_InvalidOperationException_When_Stack_Empty() + { + var stack = new LinkedStack(); + + Exception ex = Assert.Throws(() => stack.Pop()); + Assert.IsType(ex); + + PrintStackLinkedList(stack); + } + + [Fact] + public void Pop_Valid_When_Stack_Not_Empty() + { + var stack = new LinkedStack(); + stack.Push(2); + stack.Push(4); + + var nodeVal = stack.Pop(); + Assert.Equal(4, nodeVal); + + PrintStackLinkedList(stack); + } + } +} \ No newline at end of file diff --git a/csharp/Tests/algo08_stack_tests/LinkedStackBrowser.Tests.cs b/csharp/Tests/algo08_stack_tests/LinkedStackBrowser.Tests.cs new file mode 100644 index 0000000..5d0a113 --- /dev/null +++ b/csharp/Tests/algo08_stack_tests/LinkedStackBrowser.Tests.cs @@ -0,0 +1,107 @@ +using algo08_stack; +using Xunit; +using Xunit.Abstractions; + +namespace algo08_stack_tests +{ + public class LinkedStackBrowserTests + { + private readonly ITestOutputHelper _output; + + public LinkedStackBrowserTests(ITestOutputHelper output) + { + _output = output; + } + + [Fact] + public void Browser_Open_4_Links_Back_2_Return_Right_Link() + { + var browser = new LinkedStackBrowser(); + browser.Open("www.google.com"); + browser.Open("www.baidu.com"); + browser.Open("www.qq.com"); + browser.Open("www.dadu.com"); + + string url = browser.Backward(); + url = browser.Backward(); + + Assert.Equal("www.qq.com", url); + } + + [Fact] + public void Browser_Open_4_Links_Back_4_Return_Empty() + { + var browser = new LinkedStackBrowser(); + browser.Open("www.google.com"); + browser.Open("www.baidu.com"); + browser.Open("www.qq.com"); + browser.Open("www.dadu.com"); + + browser.Backward(); + browser.Backward(); + browser.Backward(); + browser.Backward(); + string url = browser.Backward(); + + Assert.Equal(string.Empty, url); + } + + [Fact] + public void Browser_Forward_Before_End() + { + var browser = new LinkedStackBrowser(); + browser.Open("www.google.com"); + browser.Open("www.baidu.com"); + browser.Open("www.qq.com"); + browser.Open("www.dadu.com"); + + browser.Backward(); + browser.Backward(); + browser.Backward(); + + browser.Forward(); + string url = browser.Forward(); + + Assert.Equal("www.qq.com", url); + } + + [Fact] + public void Browser_Forward_Until_End() + { + var browser = new LinkedStackBrowser(); + browser.Open("www.google.com"); + browser.Open("www.baidu.com"); + browser.Open("www.qq.com"); + browser.Open("www.dadu.com"); + + browser.Backward(); + browser.Backward(); + browser.Backward(); + + browser.Forward(); + browser.Forward(); + browser.Forward(); + string url = browser.Forward(); + + Assert.Equal(string.Empty, url); + } + + [Fact] + public void Browser_Backward_And_Open_New_Then_Cannot_Forward() + { + var browser = new LinkedStackBrowser(); + browser.Open("www.google.com"); + browser.Open("www.baidu.com"); + browser.Open("www.qq.com"); + + browser.Backward(); + browser.Backward(); + + browser.Open("www.dadu.com"); + + string url = browser.Forward(); + + Assert.Equal(string.Empty, url); + } + } +} \ No newline at end of file diff --git a/csharp/Tests/algo08_stack_tests/algo08_stack_tests.csproj b/csharp/Tests/algo08_stack_tests/algo08_stack_tests.csproj new file mode 100644 index 0000000..0c4d1a4 --- /dev/null +++ b/csharp/Tests/algo08_stack_tests/algo08_stack_tests.csproj @@ -0,0 +1,19 @@ + + + + netcoreapp2.2 + + false + + + + + + + + + + + + + diff --git a/csharp/csharp.sln b/csharp/csharp.sln index 402e969..1f4b949 100644 --- a/csharp/csharp.sln +++ b/csharp/csharp.sln @@ -3,19 +3,23 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.26124.0 MinimumVisualStudioVersion = 15.0.26124.0 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "_05_array", "05-array\_05_array.csproj", "{B88033F6-FF08-434A-AED7-91F5CDB73402}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "algo05_array", "05-array\algo05_array.csproj", "{B88033F6-FF08-434A-AED7-91F5CDB73402}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "_06_linked_list", "06-linkedlist\_06_linked_list.csproj", "{29CABAFB-2581-42D1-ABD9-F0D9E0BB8DC2}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "algo06_linked_list", "06-linkedlist\algo06_linked_list.csproj", "{29CABAFB-2581-42D1-ABD9-F0D9E0BB8DC2}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{B0248987-EEDF-4D93-8E12-C00B1EB5B6CB}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "_05_array_tests", "Tests\_05_array_tests\_05_array_tests.csproj", "{14982212-49E4-4409-8BFD-2D8A2945BD83}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "algo05_array_tests", "Tests\_05_array_tests\algo05_array_tests.csproj", "{14982212-49E4-4409-8BFD-2D8A2945BD83}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "_06_linkedlist_tests", "Tests\_06_linkedlist_tests\_06_linkedlist_tests.csproj", "{1B93D9C6-D6C1-4619-BFB9-D84C29099223}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "algo06_linkedlist_tests", "Tests\_06_linkedlist_tests\algo06_linkedlist_tests.csproj", "{1B93D9C6-D6C1-4619-BFB9-D84C29099223}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "_07_linkedlist", "07-linkedlist\_07_linkedlist\_07_linkedlist.csproj", "{5A4CCBB9-F683-4436-AAEE-4B3ABA76936B}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "algo07_linkedlist", "07-linkedlist\_07_linkedlist\algo07_linkedlist.csproj", "{5A4CCBB9-F683-4436-AAEE-4B3ABA76936B}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "_07_linkedlist_tests", "Tests\_07_linkedlist_tests\_07_linkedlist_tests.csproj", "{66C3BC00-C135-4279-A666-A330A86F20D5}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "algo07_linkedlist_tests", "Tests\_07_linkedlist_tests\algo07_linkedlist_tests.csproj", "{66C3BC00-C135-4279-A666-A330A86F20D5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "algo08_stack", "08-stack\algo08_stack\algo08_stack.csproj", "{E080D481-C98E-43F3-B1D1-51DCF4CF7146}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "algo08_stack_tests", "Tests\algo08_stack_tests\algo08_stack_tests.csproj", "{6A249475-54EA-4039-9B0C-DC0E0A884C07}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -102,10 +106,35 @@ Global {66C3BC00-C135-4279-A666-A330A86F20D5}.Release|x64.Build.0 = Release|Any CPU {66C3BC00-C135-4279-A666-A330A86F20D5}.Release|x86.ActiveCfg = Release|Any CPU {66C3BC00-C135-4279-A666-A330A86F20D5}.Release|x86.Build.0 = Release|Any CPU + {E080D481-C98E-43F3-B1D1-51DCF4CF7146}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E080D481-C98E-43F3-B1D1-51DCF4CF7146}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E080D481-C98E-43F3-B1D1-51DCF4CF7146}.Debug|x64.ActiveCfg = Debug|Any CPU + {E080D481-C98E-43F3-B1D1-51DCF4CF7146}.Debug|x64.Build.0 = Debug|Any CPU + {E080D481-C98E-43F3-B1D1-51DCF4CF7146}.Debug|x86.ActiveCfg = Debug|Any CPU + {E080D481-C98E-43F3-B1D1-51DCF4CF7146}.Debug|x86.Build.0 = Debug|Any CPU + {E080D481-C98E-43F3-B1D1-51DCF4CF7146}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E080D481-C98E-43F3-B1D1-51DCF4CF7146}.Release|Any CPU.Build.0 = Release|Any CPU + {E080D481-C98E-43F3-B1D1-51DCF4CF7146}.Release|x64.ActiveCfg = Release|Any CPU + {E080D481-C98E-43F3-B1D1-51DCF4CF7146}.Release|x64.Build.0 = Release|Any CPU + {E080D481-C98E-43F3-B1D1-51DCF4CF7146}.Release|x86.ActiveCfg = Release|Any CPU + {E080D481-C98E-43F3-B1D1-51DCF4CF7146}.Release|x86.Build.0 = Release|Any CPU + {6A249475-54EA-4039-9B0C-DC0E0A884C07}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6A249475-54EA-4039-9B0C-DC0E0A884C07}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6A249475-54EA-4039-9B0C-DC0E0A884C07}.Debug|x64.ActiveCfg = Debug|Any CPU + {6A249475-54EA-4039-9B0C-DC0E0A884C07}.Debug|x64.Build.0 = Debug|Any CPU + {6A249475-54EA-4039-9B0C-DC0E0A884C07}.Debug|x86.ActiveCfg = Debug|Any CPU + {6A249475-54EA-4039-9B0C-DC0E0A884C07}.Debug|x86.Build.0 = Debug|Any CPU + {6A249475-54EA-4039-9B0C-DC0E0A884C07}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6A249475-54EA-4039-9B0C-DC0E0A884C07}.Release|Any CPU.Build.0 = Release|Any CPU + {6A249475-54EA-4039-9B0C-DC0E0A884C07}.Release|x64.ActiveCfg = Release|Any CPU + {6A249475-54EA-4039-9B0C-DC0E0A884C07}.Release|x64.Build.0 = Release|Any CPU + {6A249475-54EA-4039-9B0C-DC0E0A884C07}.Release|x86.ActiveCfg = Release|Any CPU + {6A249475-54EA-4039-9B0C-DC0E0A884C07}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution {14982212-49E4-4409-8BFD-2D8A2945BD83} = {B0248987-EEDF-4D93-8E12-C00B1EB5B6CB} {1B93D9C6-D6C1-4619-BFB9-D84C29099223} = {B0248987-EEDF-4D93-8E12-C00B1EB5B6CB} {66C3BC00-C135-4279-A666-A330A86F20D5} = {B0248987-EEDF-4D93-8E12-C00B1EB5B6CB} + {6A249475-54EA-4039-9B0C-DC0E0A884C07} = {B0248987-EEDF-4D93-8E12-C00B1EB5B6CB} EndGlobalSection EndGlobal