diff --git a/Ex0.HelloWorld/Ex0.HelloWorld.csproj b/Ex0.HelloWorld/Ex0.HelloWorld.csproj
new file mode 100644
index 0000000..2150e37
--- /dev/null
+++ b/Ex0.HelloWorld/Ex0.HelloWorld.csproj
@@ -0,0 +1,10 @@
+
+
+
+ Exe
+ net8.0
+ enable
+ enable
+
+
+
diff --git a/Ex0.HelloWorld/Program.cs b/Ex0.HelloWorld/Program.cs
new file mode 100644
index 0000000..3751555
--- /dev/null
+++ b/Ex0.HelloWorld/Program.cs
@@ -0,0 +1,2 @@
+// See https://aka.ms/new-console-template for more information
+Console.WriteLine("Hello, World!");
diff --git a/Ex2.Comment/Program.cs b/Ex2.Comment/Program.cs
index 68a5043..17ed88c 100644
--- a/Ex2.Comment/Program.cs
+++ b/Ex2.Comment/Program.cs
@@ -1,5 +1,9 @@
internal class Program
{
+ ///
+ /// 클래스나 함수에 대한 코멘트
+ ///
+ ///
private static void Main(string[] args)
{
// 코멘트: 한 라인 코멘트는 두개의 슬래시 사용함
diff --git a/ExR.Delegate2/ExR.Delegate2.csproj b/ExR.Delegate2/ExR.Delegate2.csproj
new file mode 100644
index 0000000..2150e37
--- /dev/null
+++ b/ExR.Delegate2/ExR.Delegate2.csproj
@@ -0,0 +1,10 @@
+
+
+
+ Exe
+ net8.0
+ enable
+ enable
+
+
+
diff --git a/ExR.Delegate2/Program.cs b/ExR.Delegate2/Program.cs
new file mode 100644
index 0000000..976714c
--- /dev/null
+++ b/ExR.Delegate2/Program.cs
@@ -0,0 +1,113 @@
+using System;
+
+class MyClass
+{
+ // 1. delegate 선언
+ private delegate void RunDelegate(int i);
+
+ private void RunThis(int val)
+ {
+ // 콘솔출력 : 1024
+ Console.WriteLine("{0}", val);
+ }
+
+ private void RunThat(int value)
+ {
+ // 콘솔출력 : 0x400
+ Console.WriteLine("0x{0:X}", value);
+ }
+
+ public void Perform()
+ {
+ // 2. delegate 인스턴스 생성
+ RunDelegate run = new RunDelegate(RunThis);
+ // 3. delegate 실행
+ run(1024);
+
+ //run = new RunDelegate(RunThat); 을 줄여서
+ //아래와 같이 쓸 수 있다.
+ run = RunThat;
+
+ run(1024);
+ }
+
+ public void PerformMultiCast(int val)
+ {
+ RunDelegate run = RunThis;
+ run += RunThat;
+ run(val);
+ }
+}
+
+class MySort
+{
+ // 델리게이트 CompareDelegate 선언
+ public delegate int CompareDelegate(int i1, int i2);
+
+ public static void Sort(int[] arr, CompareDelegate comp)
+ {
+ if (arr.Length < 2) return;
+ Console.WriteLine("함수 Prototype: " + comp.Method);
+
+ int ret;
+ for (int i = 0; i < arr.Length - 1; i++)
+ {
+ for (int j = i + 1; j < arr.Length; j++)
+ {
+ ret = comp(arr[i], arr[j]);
+ if (ret == -1)
+ {
+ // 교환
+ int tmp = arr[j];
+ arr[j] = arr[i];
+ arr[i] = tmp;
+ }
+ }
+ }
+ Display(arr);
+ }
+ static void Display(int[] arr)
+ {
+ foreach (var i in arr) Console.Write(i + " ");
+ Console.WriteLine();
+ }
+}
+
+internal class Program
+{
+
+ private static void Main(string[] args)
+ {
+ MyClass mc = new MyClass();
+ mc.Perform();
+
+ (new Program()).Run();
+ }
+
+ void Run()
+ {
+ int[] a = { 5, 53, 3, 7, 1 };
+
+ // 올림차순으로 소트
+ MySort.CompareDelegate compDelegate = AscendingCompare;
+ MySort.Sort(a, compDelegate);
+
+ // 내림차순으로 소트
+ compDelegate = DescendingCompare;
+ MySort.Sort(a, compDelegate);
+ }
+
+ // CompareDelegate 델리게이트와 동일한 Prototype
+ int AscendingCompare(int i1, int i2)
+ {
+ if (i1 == i2) return 0;
+ return (i2 - i1) > 0 ? 1 : -1;
+ }
+
+ // CompareDelegate 델리게이트와 동일한 Prototype
+ int DescendingCompare(int i1, int i2)
+ {
+ if (i1 == i2) return 0;
+ return (i1 - i2) > 0 ? 1 : -1;
+ }
+}
\ No newline at end of file
diff --git a/ExS.Delegate3/ExS.Delegate3.csproj b/ExS.Delegate3/ExS.Delegate3.csproj
new file mode 100644
index 0000000..2150e37
--- /dev/null
+++ b/ExS.Delegate3/ExS.Delegate3.csproj
@@ -0,0 +1,10 @@
+
+
+
+ Exe
+ net8.0
+ enable
+ enable
+
+
+
diff --git a/ExS.Delegate3/Program.cs b/ExS.Delegate3/Program.cs
new file mode 100644
index 0000000..731a1f6
--- /dev/null
+++ b/ExS.Delegate3/Program.cs
@@ -0,0 +1,43 @@
+using static MyClass;
+
+internal class Program
+{
+ private static void Main(string[] args)
+ {
+ MyClass cls = new();
+ cls.OnFinished += new OnFinishedEventHandler(Cls_OnFinished);
+ cls.OnFinished += Cls_OnFinished;
+
+ //Annonymous Method 사용
+ cls.OnFinished2 += delegate (object? sender, EventArgs eventArgs)
+ {
+ Console.WriteLine("Finished");
+ };
+
+ //Lambda 식 사용, 무명메서드를 대신할 수 있다.
+ //(입력 파라미터) => { 실행문장 블럭 };
+ cls.OnFinished += (sender, eventArgs) => { Console.WriteLine("Finished"); };
+
+ }
+
+ private static void Cls_OnFinished(object? sender, EventArgs eventArgs)
+ {
+ Console.WriteLine("Finished");
+ }
+}
+
+class MyClass
+{
+ //EventHandler를 delegate로 구현
+ public delegate void OnFinishedEventHandler(object? sender, EventArgs eventArgs);
+ public event OnFinishedEventHandler? OnFinished;
+
+ public EventHandler? OnFinished2;
+
+ public void Run(int complexity)
+ {
+ Thread.Sleep(complexity);
+ OnFinished?.Invoke(this, EventArgs.Empty);
+ OnFinished2?.Invoke(this, EventArgs.Empty);
+ }
+}
\ No newline at end of file
diff --git a/ExT.AnonymousType/ExT.AnonymousType.csproj b/ExT.AnonymousType/ExT.AnonymousType.csproj
new file mode 100644
index 0000000..2150e37
--- /dev/null
+++ b/ExT.AnonymousType/ExT.AnonymousType.csproj
@@ -0,0 +1,10 @@
+
+
+
+ Exe
+ net8.0
+ enable
+ enable
+
+
+
diff --git a/ExT.AnonymousType/Program.cs b/ExT.AnonymousType/Program.cs
new file mode 100644
index 0000000..70eb0d1
--- /dev/null
+++ b/ExT.AnonymousType/Program.cs
@@ -0,0 +1,31 @@
+using System.Diagnostics;
+
+internal class Program
+{
+ private static void Main(string[] args)
+ {
+ var t = new { Name = "홍길동", Age = 20 };
+ string s = t.Name;
+ }
+
+ private void RunTest()
+ {
+ var v = new[] {
+ new { Name="Lee", Age=33, Phone="02-111-1111" },
+ new { Name="Kim", Age=25, Phone="02-222-2222" },
+ new { Name="Park", Age=37, Phone="02-333-3333" },
+ };
+
+ // LINQ Select를 이용해 Name과 Age만 갖는 새 익명타입 객체들을 리턴.
+ var list = v.Where(p => p.Age >= 30).Select(p => new { p.Name, p.Age });
+ foreach (var a in list)
+ {
+ Debug.WriteLine(a.Name + a.Age);
+ }
+ }
+
+ private (string name, int age) Test()
+ {
+ return ("Stive", 45);
+ }
+}
\ No newline at end of file
diff --git a/ExU.ExtensionMethod/ExU.ExtensionMethod.csproj b/ExU.ExtensionMethod/ExU.ExtensionMethod.csproj
new file mode 100644
index 0000000..2150e37
--- /dev/null
+++ b/ExU.ExtensionMethod/ExU.ExtensionMethod.csproj
@@ -0,0 +1,10 @@
+
+
+
+ Exe
+ net8.0
+ enable
+ enable
+
+
+
diff --git a/ExU.ExtensionMethod/Program.cs b/ExU.ExtensionMethod/Program.cs
new file mode 100644
index 0000000..e0ff3a7
--- /dev/null
+++ b/ExU.ExtensionMethod/Program.cs
@@ -0,0 +1,47 @@
+using System.Text;
+
+public static class ExClass
+{
+ // static 확장메서드를 정의. 첫번째 파라미터는
+ // 어떤 클래스가 사용할 지만 지정.
+ public static string ToChangeCase(this String str)
+ {
+ StringBuilder sb = new StringBuilder();
+ foreach (var ch in str)
+ {
+ if (ch >= 'A' && ch <= 'Z')
+ sb.Append((char)('a' + ch - 'A'));
+ else if (ch >= 'a' && ch <= 'z')
+ sb.Append((char)('A' + ch - 'a'));
+ else
+ sb.Append(ch);
+ }
+ return sb.ToString();
+ }
+
+ // 이 확장메서드는 파라미터 ch가 필요함
+ public static bool Found(this String str, char ch)
+ {
+ int position = str.IndexOf(ch);
+ return position >= 0;
+ }
+}
+
+internal class Program
+{
+ private static void Main(string[] args)
+ {
+ string s = "This is a Test";
+
+ // s객체 즉 String객체가
+ // 확장메서드의 첫 파리미터임
+ // 실제 ToChangeCase() 메서드는
+ // 파라미터를 갖지 않는다.
+ string s2 = s.ToChangeCase();
+
+ // String 객체가 사용하는 확장메서드이며
+ // z 값을 파라미터로 사용
+ bool found = s.Found('z');
+ }
+
+}
\ No newline at end of file
diff --git a/ExV.DynamicType/ExV.DynamicType.csproj b/ExV.DynamicType/ExV.DynamicType.csproj
new file mode 100644
index 0000000..2150e37
--- /dev/null
+++ b/ExV.DynamicType/ExV.DynamicType.csproj
@@ -0,0 +1,10 @@
+
+
+
+ Exe
+ net8.0
+ enable
+ enable
+
+
+
diff --git a/ExV.DynamicType/Program.cs b/ExV.DynamicType/Program.cs
new file mode 100644
index 0000000..95275dd
--- /dev/null
+++ b/ExV.DynamicType/Program.cs
@@ -0,0 +1,53 @@
+internal class Program
+{
+ private static void Main(string[] args)
+ {
+ // 1. dynamic은 중간에 형을 변환할 수 있다.
+
+ dynamic v = 1;
+ // System.Int32 출력
+ Console.WriteLine(v.GetType());
+
+ v = "abc";
+ // System.String 출력
+ Console.WriteLine(v.GetType());
+
+
+ // 2. dynamic은 cast가 필요없다
+
+ object o = 10;
+ // 틀린표현
+ // (에러: Operator '+' cannot be applied to operands of type 'object' and 'int')
+ //o = o + 20;
+
+ // 맞는 표현: object 타입은 casting이 필요하다
+ o = (int)o + 20;
+
+ // dynamic 타입은 casting이 필요없다.
+ dynamic d = 10;
+ d = d + 20;
+ }
+
+}
+
+// 동일 어셈블리에서 익명타입에 dynamic 사용한 경우
+class Class1
+{
+ public void Run()
+ {
+ dynamic t = new { Name = "Kim", Age = 25 };
+
+ var c = new Class2();
+ c.Run(t);
+ }
+}
+
+class Class2
+{
+ public void Run(dynamic o)
+ {
+ // dynamic 타입의 속성 직접 사용
+ Console.WriteLine(o.Name);
+ Console.WriteLine(o.Age);
+ }
+}
\ No newline at end of file
diff --git a/ExW.PartialClass/ExW.PartialClass.csproj b/ExW.PartialClass/ExW.PartialClass.csproj
new file mode 100644
index 0000000..2150e37
--- /dev/null
+++ b/ExW.PartialClass/ExW.PartialClass.csproj
@@ -0,0 +1,10 @@
+
+
+
+ Exe
+ net8.0
+ enable
+ enable
+
+
+
diff --git a/ExW.PartialClass/Program.cs b/ExW.PartialClass/Program.cs
new file mode 100644
index 0000000..76c94cd
--- /dev/null
+++ b/ExW.PartialClass/Program.cs
@@ -0,0 +1,64 @@
+internal class Program
+{
+ private static void Main(string[] args)
+ {
+ var cls = new Class1();
+ cls.Run();
+ cls.Get();
+ cls.Put();
+ }
+}
+
+// 1. Partial Class - 3개로 분리한 경우
+partial class Class1
+{
+ public void Run() { }
+}
+
+partial class Class1
+{
+ public void Get() { }
+}
+
+partial class Class1
+{
+ public void Put() { }
+}
+
+// 2. Partial Struct
+partial struct Struct1
+{
+ public int ID;
+}
+
+partial struct Struct1
+{
+ public string Name;
+
+ public Struct1(int id, string name)
+ {
+ this.ID = id;
+ this.Name = name;
+ }
+}
+
+// 3. Partial Interface
+partial interface IDoable
+{
+ string Name { get; set; }
+}
+
+partial interface IDoable
+{
+ void Do();
+}
+
+// IDoable 인터페이스를 구현
+public class DoClass : IDoable
+{
+ public string Name { get; set; }
+
+ public void Do()
+ {
+ }
+}
\ No newline at end of file
diff --git a/ExX.ActionFunc/ExX.ActionFunc.csproj b/ExX.ActionFunc/ExX.ActionFunc.csproj
new file mode 100644
index 0000000..2150e37
--- /dev/null
+++ b/ExX.ActionFunc/ExX.ActionFunc.csproj
@@ -0,0 +1,10 @@
+
+
+
+ Exe
+ net8.0
+ enable
+ enable
+
+
+
diff --git a/ExX.ActionFunc/Program.cs b/ExX.ActionFunc/Program.cs
new file mode 100644
index 0000000..cc03f68
--- /dev/null
+++ b/ExX.ActionFunc/Program.cs
@@ -0,0 +1,131 @@
+internal class Program
+{
+ private static void Main(string[] args)
+ {
+ Console.WriteLine("Hello, World!");
+ }
+}
+
+class AClass
+{
+ public void Run()
+ {
+ // Action
+ // 입력 : T 타입
+ // 리턴갑 : 없음
+
+ // 기존 메서드 지정
+ System.Action act = Output;
+ act("Hello");
+
+ // 무명 메서드 지정
+ Action act2 = delegate (string msg, string title)
+ {
+ Console.WriteLine(msg, title);
+ };
+ act2("No data found", "Error");
+
+ // 람다식 사용
+ Action act3 = code => Console.WriteLine("Code: {0}", code);
+ act3(1033);
+ }
+
+ void Output(string s)
+ {
+ Console.WriteLine(s);
+ }
+}
+
+class BClass
+{
+ int _state;
+ //---------------------
+ // 예제 1
+ // Func
+ // 입력: 없음
+ // 리턴: TResult 타입
+ //---------------------
+ public void Run()
+ {
+ // 메서드 지정
+ System.Func f = IsValid;
+ bool result = f();
+
+ // 무명 메서드 지정
+ Func fa = delegate
+ {
+ return _state == 0;
+ };
+ result = fa();
+
+ // 람다식 이용
+ Func fb = () => _state == 0;
+ result = fb();
+ }
+
+ bool IsValid()
+ {
+ return _state == 0;
+ }
+
+ //---------------------
+ // 예제 2
+ // Func
+ // 입력: 1개
+ // 리턴: TResult 타입
+ //---------------------
+ public void Run1()
+ {
+ // 메서드 지정
+ System.Func f = IsValidRange;
+ bool result = f(10);
+
+ // 무명 메서드 지정
+ Func fa = delegate (int n)
+ {
+ return n > 0;
+ };
+ result = fa(-1);
+
+ // 람다식 이용
+ Func fb = n => n > 0;
+ result = fb(-2);
+ }
+
+ bool IsValidRange(int n)
+ {
+ return n > 0;
+ }
+
+ void Predicate()
+ {
+ // Predicate
+ Predicate p = delegate (int n)
+ {
+ return n >= 0;
+ };
+ bool res = p(-1);
+
+ Predicate p2 = s => s.StartsWith("A");
+ res = p2("Apple");
+ }
+
+ public void UsePredicate()
+ {
+ int[] arr = { -10, 20, -30, 4, -5 };
+
+ // Predicate의 사용
+ // Array.Find(int[], Predicate)
+ int pos = Array.Find(arr, IsPositive);
+
+ // LINQ에서 Func의 사용
+ // Where(Func predicate)
+ var v = arr.Where(n => n >= 0);
+ }
+
+ bool IsPositive(int i)
+ {
+ return i >= 0;
+ }
+
+}
\ No newline at end of file
diff --git a/ExY.Linq/ExY.Linq.csproj b/ExY.Linq/ExY.Linq.csproj
new file mode 100644
index 0000000..2150e37
--- /dev/null
+++ b/ExY.Linq/ExY.Linq.csproj
@@ -0,0 +1,10 @@
+
+
+
+ Exe
+ net8.0
+ enable
+ enable
+
+
+
diff --git a/ExY.Linq/Program.cs b/ExY.Linq/Program.cs
new file mode 100644
index 0000000..a0babde
--- /dev/null
+++ b/ExY.Linq/Program.cs
@@ -0,0 +1,45 @@
+internal class Program
+{
+ private static void Main(string[] args)
+ {
+ var db = new DataBase { DBName = "mydb"};
+
+ // 쿼리식 표현
+ var v = from ord in db.Orders
+ where ord.Customer_ID == "FRANS"
+ orderby ord.Order_Date ascending
+ select ord;
+
+ // 메서드식 표현1
+ var w = db.Orders.Where(order => order.Customer_ID == "FRANS").Select(o => o);
+
+ // 메서드식 표현2
+ // 위의 메서드식 표현1의 Select()메서드는 동일데이타를
+ // 변형없이 리턴하므로 생략가능
+ var x = db.Orders.Where(order => order.Customer_ID == "FRANS");
+
+ x.Select((item, index) => new { IDX = index, ITEM = item });
+
+ //기타 확장메서드
+ x.First();
+ x.FirstOrDefault();
+ x.Last();
+ var l = x.ToList();
+ l.ForEach(item => Console.WriteLine(item.Customer_ID));
+ x.Select(item => item.Order_Date).Distinct();
+
+ }
+}
+
+class DataBase
+{
+ public string DBName = string.Empty;
+ public List Orders = new();
+}
+
+class Order
+{
+ public string Customer_ID = string.Empty;
+ public DateTime Order_Date;
+ public List Items = new();
+}
\ No newline at end of file
diff --git a/ExZ.Task/ExZ.Task.csproj b/ExZ.Task/ExZ.Task.csproj
new file mode 100644
index 0000000..2150e37
--- /dev/null
+++ b/ExZ.Task/ExZ.Task.csproj
@@ -0,0 +1,10 @@
+
+
+
+ Exe
+ net8.0
+ enable
+ enable
+
+
+
diff --git a/ExZ.Task/Program.cs b/ExZ.Task/Program.cs
new file mode 100644
index 0000000..12447ea
--- /dev/null
+++ b/ExZ.Task/Program.cs
@@ -0,0 +1,47 @@
+internal class Program
+{
+ //비동기 Task 코드가 실행되는 메서드는 async 접두사 및 리턴형이 Task 이어야 함.
+ private static async Task Main(string[] args)
+ {
+ var cls = new AClass();
+ cls.ComplexCalc(3000); // 동기처리
+ cls.ComplexCalc(2000); // 동기처리
+
+ await cls.ComplexCalcAsync(3000); // 비동기 처리
+
+
+ var task1 = Task.Run(() => cls.ComplexCalc(3000));
+ var task2 = Task.Run(() => cls.ComplexCalc(2000));
+ Task[] tasks = { task1, task2 };
+
+ //먼저완료되는 타스크를 먼저처리
+ var anytask = Task.WhenAny(tasks);
+ Task finTask = await anytask;
+ var result = await finTask;
+
+ //모두가 완료되기를 기다리는 타스크.
+ Task alltask = Task.WhenAll(tasks);
+ await alltask;
+
+ }
+}
+
+public class AClass
+{
+
+ public int ComplexCalc(int complexity)
+ {
+ Thread.Sleep(complexity);
+ return complexity;
+ }
+
+ public async Task ComplexCalcAsync(int complexity)
+ {
+ var task = Task.Run(() => ComplexCalc(complexity));
+ // await 가 나오기 전까지 다른 동시작업 가능
+
+ var result = await task;
+ return result;
+ }
+
+}
\ No newline at end of file
diff --git a/Ojt.Lectures.sln b/Ojt.Lectures.sln
index 352c070..64afb95 100644
--- a/Ojt.Lectures.sln
+++ b/Ojt.Lectures.sln
@@ -55,6 +55,26 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExP.Interface", "ExP.Interf
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExQ.Delegate1", "ExQ.Delegate1\ExQ.Delegate1.csproj", "{52E7A86E-720F-4111-AA1B-8C5FADE7E207}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ex0.HelloWorld", "Ex0.HelloWorld\Ex0.HelloWorld.csproj", "{743A8755-9C77-4BCE-AA6B-F1DF00F036C3}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExR.Delegate2", "ExR.Delegate2\ExR.Delegate2.csproj", "{100ACD41-9CAA-4D35-9FAB-D69454108765}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExS.Delegate3", "ExS.Delegate3\ExS.Delegate3.csproj", "{4F17039D-2412-44C3-B9CA-353F334214CC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExT.AnonymousType", "ExT.AnonymousType\ExT.AnonymousType.csproj", "{228B0751-AE25-4A7E-B26C-4A71D3B48DB7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExU.ExtensionMethod", "ExU.ExtensionMethod\ExU.ExtensionMethod.csproj", "{16ED9B03-680A-4707-A5D8-13A9A0FF0323}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExV.DynamicType", "ExV.DynamicType\ExV.DynamicType.csproj", "{22B1AA8B-7648-4035-9977-4CD68E577FFF}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExW.PartialClass", "ExW.PartialClass\ExW.PartialClass.csproj", "{2D90677D-CB86-4DE5-912B-667157E8D848}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExX.ActionFunc", "ExX.ActionFunc\ExX.ActionFunc.csproj", "{2F93CBEC-DA70-4A02-B694-910CB5D2FDBA}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExY.Linq", "ExY.Linq\ExY.Linq.csproj", "{AFE0112F-E5CA-4EAE-A4FF-F41352E448F8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExZ.Task", "ExZ.Task\ExZ.Task.csproj", "{9755E0CD-EA75-4006-8657-08B0A465C884}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -165,6 +185,46 @@ Global
{52E7A86E-720F-4111-AA1B-8C5FADE7E207}.Debug|Any CPU.Build.0 = Debug|Any CPU
{52E7A86E-720F-4111-AA1B-8C5FADE7E207}.Release|Any CPU.ActiveCfg = Release|Any CPU
{52E7A86E-720F-4111-AA1B-8C5FADE7E207}.Release|Any CPU.Build.0 = Release|Any CPU
+ {743A8755-9C77-4BCE-AA6B-F1DF00F036C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {743A8755-9C77-4BCE-AA6B-F1DF00F036C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {743A8755-9C77-4BCE-AA6B-F1DF00F036C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {743A8755-9C77-4BCE-AA6B-F1DF00F036C3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {100ACD41-9CAA-4D35-9FAB-D69454108765}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {100ACD41-9CAA-4D35-9FAB-D69454108765}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {100ACD41-9CAA-4D35-9FAB-D69454108765}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {100ACD41-9CAA-4D35-9FAB-D69454108765}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4F17039D-2412-44C3-B9CA-353F334214CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4F17039D-2412-44C3-B9CA-353F334214CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4F17039D-2412-44C3-B9CA-353F334214CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4F17039D-2412-44C3-B9CA-353F334214CC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {228B0751-AE25-4A7E-B26C-4A71D3B48DB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {228B0751-AE25-4A7E-B26C-4A71D3B48DB7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {228B0751-AE25-4A7E-B26C-4A71D3B48DB7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {228B0751-AE25-4A7E-B26C-4A71D3B48DB7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {16ED9B03-680A-4707-A5D8-13A9A0FF0323}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {16ED9B03-680A-4707-A5D8-13A9A0FF0323}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {16ED9B03-680A-4707-A5D8-13A9A0FF0323}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {16ED9B03-680A-4707-A5D8-13A9A0FF0323}.Release|Any CPU.Build.0 = Release|Any CPU
+ {22B1AA8B-7648-4035-9977-4CD68E577FFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {22B1AA8B-7648-4035-9977-4CD68E577FFF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {22B1AA8B-7648-4035-9977-4CD68E577FFF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {22B1AA8B-7648-4035-9977-4CD68E577FFF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2D90677D-CB86-4DE5-912B-667157E8D848}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2D90677D-CB86-4DE5-912B-667157E8D848}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2D90677D-CB86-4DE5-912B-667157E8D848}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2D90677D-CB86-4DE5-912B-667157E8D848}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2F93CBEC-DA70-4A02-B694-910CB5D2FDBA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2F93CBEC-DA70-4A02-B694-910CB5D2FDBA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2F93CBEC-DA70-4A02-B694-910CB5D2FDBA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2F93CBEC-DA70-4A02-B694-910CB5D2FDBA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AFE0112F-E5CA-4EAE-A4FF-F41352E448F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {AFE0112F-E5CA-4EAE-A4FF-F41352E448F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AFE0112F-E5CA-4EAE-A4FF-F41352E448F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {AFE0112F-E5CA-4EAE-A4FF-F41352E448F8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9755E0CD-EA75-4006-8657-08B0A465C884}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9755E0CD-EA75-4006-8657-08B0A465C884}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9755E0CD-EA75-4006-8657-08B0A465C884}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9755E0CD-EA75-4006-8657-08B0A465C884}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE