From 4b4cc4a87d263560fe1289cf6546c1ee8d10d45e Mon Sep 17 00:00:00 2001 From: Thorsten Jung Date: Sun, 29 Mar 2026 07:39:35 +0200 Subject: [PATCH 01/22] Initial drop of Template Studios created project --- .editorconfig | 202 ++ .vsconfig | 16 + WinClassicSamplesCS.sln | 2076 ----------------- .../Contracts/Services/IFileService.cs | 10 + .../Helpers/Json.cs | 22 + WinUIClassicSamplesBrowser.Core/README.md | 5 + .../Services/FileService.cs | 41 + .../WinUIClassicSamplesBrowser.Core.csproj | 17 + .../Activation/ActivationHandler.cs | 17 + .../AppNotificationActivationHandler.cs | 51 + .../Activation/DefaultActivationHandler.cs | 29 + .../Activation/IActivationHandler.cs | 8 + WinUIClassicSamplesBrowser/App.xaml | 15 + WinUIClassicSamplesBrowser/App.xaml.cs | 109 + .../Assets/LockScreenLogo.scale-200.png | Bin 0 -> 1430 bytes .../Assets/SplashScreen.scale-200.png | Bin 0 -> 7700 bytes .../Assets/Square150x150Logo.scale-200.png | Bin 0 -> 2937 bytes .../Assets/Square44x44Logo.scale-200.png | Bin 0 -> 1647 bytes ...x44Logo.targetsize-24_altform-unplated.png | Bin 0 -> 1255 bytes .../Assets/StoreLogo.png | Bin 0 -> 1451 bytes .../Assets/Wide310x150Logo.scale-200.png | Bin 0 -> 3204 bytes .../Assets/WindowIcon.ico | Bin 0 -> 66971 bytes .../Behaviors/NavigationViewHeaderBehavior.cs | 122 + .../Behaviors/NavigationViewHeaderMode.cs | 8 + .../Contracts/Services/IActivationService.cs | 6 + .../Services/IAppNotificationService.cs | 14 + .../Services/ILocalSettingsService.cs | 8 + .../Contracts/Services/INavigationService.cs | 23 + .../Services/INavigationViewService.cs | 22 + .../Contracts/Services/IPageService.cs | 6 + .../Services/IThemeSelectorService.cs | 17 + .../Contracts/Services/IWebViewService.cs | 34 + .../Contracts/ViewModels/INavigationAware.cs | 8 + .../Helpers/EnumToBooleanConverter.cs | 38 + .../Helpers/FrameExtensions.cs | 8 + .../Helpers/NavigationHelper.cs | 21 + .../Helpers/ResourceExtensions.cs | 10 + .../Helpers/RuntimeHelper.cs | 20 + .../Helpers/SettingsStorageExtensions.cs | 112 + .../Helpers/TitleBarHelper.cs | 96 + WinUIClassicSamplesBrowser/MainWindow.xaml | 16 + WinUIClassicSamplesBrowser/MainWindow.xaml.cs | 37 + .../Models/LocalSettingsOptions.cs | 14 + .../Package.appinstaller | 17 + .../Package.appxmanifest | 76 + .../PublishProfiles/win10-arm64.pubxml | 13 + .../PublishProfiles/win10-x64.pubxml | 13 + .../PublishProfiles/win10-x86.pubxml | 13 + WinUIClassicSamplesBrowser/README.md | 27 + .../Services/ActivationService.cs | 72 + .../Services/AppNotificationService.cs | 71 + .../Services/LocalSettingsService.cs | 88 + .../Services/NavigationService.cs | 126 + .../Services/NavigationViewService.cs | 103 + .../Services/PageService.cs | 57 + .../Services/ThemeSelectorService.cs | 63 + .../Services/WebViewService.cs | 50 + .../Strings/en-us/Resources.resw | 147 ++ .../Styles/FontSizes.xaml | 9 + .../Styles/TextBlock.xaml | 20 + .../Styles/Thickness.xaml | 36 + WinUIClassicSamplesBrowser/TemplateStudio.xml | 11 + WinUIClassicSamplesBrowser/Usings.cs | 1 + .../ViewModels/MainViewModel.cs | 10 + .../ViewModels/SettingsViewModel.cs | 65 + .../ViewModels/ShellViewModel.cs | 51 + .../ViewModels/WebBrowserViewModel.cs | 110 + .../Views/MainPage.xaml | 12 + .../Views/MainPage.xaml.cs | 19 + .../Views/SettingsPage.xaml | 67 + .../Views/SettingsPage.xaml.cs | 20 + .../Views/ShellPage.xaml | 85 + .../Views/ShellPage.xaml.cs | 85 + .../Views/WebBrowserPage.xaml | 56 + .../Views/WebBrowserPage.xaml.cs | 22 + .../WinUIClassicSamplesBrowser.csproj | 46 + .../WinUIClassicSamplesBrowser.slnx | 18 + WinUIClassicSamplesBrowser/app.manifest | 15 + WinUIClassicSamplesBrowser/appsettings.json | 6 + 79 files changed, 2882 insertions(+), 2076 deletions(-) create mode 100644 .editorconfig create mode 100644 .vsconfig delete mode 100644 WinClassicSamplesCS.sln create mode 100644 WinUIClassicSamplesBrowser.Core/Contracts/Services/IFileService.cs create mode 100644 WinUIClassicSamplesBrowser.Core/Helpers/Json.cs create mode 100644 WinUIClassicSamplesBrowser.Core/README.md create mode 100644 WinUIClassicSamplesBrowser.Core/Services/FileService.cs create mode 100644 WinUIClassicSamplesBrowser.Core/WinUIClassicSamplesBrowser.Core.csproj create mode 100644 WinUIClassicSamplesBrowser/Activation/ActivationHandler.cs create mode 100644 WinUIClassicSamplesBrowser/Activation/AppNotificationActivationHandler.cs create mode 100644 WinUIClassicSamplesBrowser/Activation/DefaultActivationHandler.cs create mode 100644 WinUIClassicSamplesBrowser/Activation/IActivationHandler.cs create mode 100644 WinUIClassicSamplesBrowser/App.xaml create mode 100644 WinUIClassicSamplesBrowser/App.xaml.cs create mode 100644 WinUIClassicSamplesBrowser/Assets/LockScreenLogo.scale-200.png create mode 100644 WinUIClassicSamplesBrowser/Assets/SplashScreen.scale-200.png create mode 100644 WinUIClassicSamplesBrowser/Assets/Square150x150Logo.scale-200.png create mode 100644 WinUIClassicSamplesBrowser/Assets/Square44x44Logo.scale-200.png create mode 100644 WinUIClassicSamplesBrowser/Assets/Square44x44Logo.targetsize-24_altform-unplated.png create mode 100644 WinUIClassicSamplesBrowser/Assets/StoreLogo.png create mode 100644 WinUIClassicSamplesBrowser/Assets/Wide310x150Logo.scale-200.png create mode 100644 WinUIClassicSamplesBrowser/Assets/WindowIcon.ico create mode 100644 WinUIClassicSamplesBrowser/Behaviors/NavigationViewHeaderBehavior.cs create mode 100644 WinUIClassicSamplesBrowser/Behaviors/NavigationViewHeaderMode.cs create mode 100644 WinUIClassicSamplesBrowser/Contracts/Services/IActivationService.cs create mode 100644 WinUIClassicSamplesBrowser/Contracts/Services/IAppNotificationService.cs create mode 100644 WinUIClassicSamplesBrowser/Contracts/Services/ILocalSettingsService.cs create mode 100644 WinUIClassicSamplesBrowser/Contracts/Services/INavigationService.cs create mode 100644 WinUIClassicSamplesBrowser/Contracts/Services/INavigationViewService.cs create mode 100644 WinUIClassicSamplesBrowser/Contracts/Services/IPageService.cs create mode 100644 WinUIClassicSamplesBrowser/Contracts/Services/IThemeSelectorService.cs create mode 100644 WinUIClassicSamplesBrowser/Contracts/Services/IWebViewService.cs create mode 100644 WinUIClassicSamplesBrowser/Contracts/ViewModels/INavigationAware.cs create mode 100644 WinUIClassicSamplesBrowser/Helpers/EnumToBooleanConverter.cs create mode 100644 WinUIClassicSamplesBrowser/Helpers/FrameExtensions.cs create mode 100644 WinUIClassicSamplesBrowser/Helpers/NavigationHelper.cs create mode 100644 WinUIClassicSamplesBrowser/Helpers/ResourceExtensions.cs create mode 100644 WinUIClassicSamplesBrowser/Helpers/RuntimeHelper.cs create mode 100644 WinUIClassicSamplesBrowser/Helpers/SettingsStorageExtensions.cs create mode 100644 WinUIClassicSamplesBrowser/Helpers/TitleBarHelper.cs create mode 100644 WinUIClassicSamplesBrowser/MainWindow.xaml create mode 100644 WinUIClassicSamplesBrowser/MainWindow.xaml.cs create mode 100644 WinUIClassicSamplesBrowser/Models/LocalSettingsOptions.cs create mode 100644 WinUIClassicSamplesBrowser/Package.appinstaller create mode 100644 WinUIClassicSamplesBrowser/Package.appxmanifest create mode 100644 WinUIClassicSamplesBrowser/Properties/PublishProfiles/win10-arm64.pubxml create mode 100644 WinUIClassicSamplesBrowser/Properties/PublishProfiles/win10-x64.pubxml create mode 100644 WinUIClassicSamplesBrowser/Properties/PublishProfiles/win10-x86.pubxml create mode 100644 WinUIClassicSamplesBrowser/README.md create mode 100644 WinUIClassicSamplesBrowser/Services/ActivationService.cs create mode 100644 WinUIClassicSamplesBrowser/Services/AppNotificationService.cs create mode 100644 WinUIClassicSamplesBrowser/Services/LocalSettingsService.cs create mode 100644 WinUIClassicSamplesBrowser/Services/NavigationService.cs create mode 100644 WinUIClassicSamplesBrowser/Services/NavigationViewService.cs create mode 100644 WinUIClassicSamplesBrowser/Services/PageService.cs create mode 100644 WinUIClassicSamplesBrowser/Services/ThemeSelectorService.cs create mode 100644 WinUIClassicSamplesBrowser/Services/WebViewService.cs create mode 100644 WinUIClassicSamplesBrowser/Strings/en-us/Resources.resw create mode 100644 WinUIClassicSamplesBrowser/Styles/FontSizes.xaml create mode 100644 WinUIClassicSamplesBrowser/Styles/TextBlock.xaml create mode 100644 WinUIClassicSamplesBrowser/Styles/Thickness.xaml create mode 100644 WinUIClassicSamplesBrowser/TemplateStudio.xml create mode 100644 WinUIClassicSamplesBrowser/Usings.cs create mode 100644 WinUIClassicSamplesBrowser/ViewModels/MainViewModel.cs create mode 100644 WinUIClassicSamplesBrowser/ViewModels/SettingsViewModel.cs create mode 100644 WinUIClassicSamplesBrowser/ViewModels/ShellViewModel.cs create mode 100644 WinUIClassicSamplesBrowser/ViewModels/WebBrowserViewModel.cs create mode 100644 WinUIClassicSamplesBrowser/Views/MainPage.xaml create mode 100644 WinUIClassicSamplesBrowser/Views/MainPage.xaml.cs create mode 100644 WinUIClassicSamplesBrowser/Views/SettingsPage.xaml create mode 100644 WinUIClassicSamplesBrowser/Views/SettingsPage.xaml.cs create mode 100644 WinUIClassicSamplesBrowser/Views/ShellPage.xaml create mode 100644 WinUIClassicSamplesBrowser/Views/ShellPage.xaml.cs create mode 100644 WinUIClassicSamplesBrowser/Views/WebBrowserPage.xaml create mode 100644 WinUIClassicSamplesBrowser/Views/WebBrowserPage.xaml.cs create mode 100644 WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj create mode 100644 WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.slnx create mode 100644 WinUIClassicSamplesBrowser/app.manifest create mode 100644 WinUIClassicSamplesBrowser/appsettings.json diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..fd05618e --- /dev/null +++ b/.editorconfig @@ -0,0 +1,202 @@ +# Rules in this file were initially inferred by Visual Studio IntelliCode from the Template Studio codebase. +# You can modify the rules from these initially generated values to suit your own policies. +# You can learn more about editorconfig here: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference. + +[*.cs] + +#Core editorconfig formatting - indentation + +#use soft tabs (spaces) for indentation +indent_style = space + +#Formatting - new line options + +#place else statements on a new line +csharp_new_line_before_else = true +#require braces to be on a new line for lambdas, methods, control_blocks, types, properties, and accessors (also known as "Allman" style) +csharp_new_line_before_open_brace = all + +#Formatting - organize using options + +#sort System.* using directives alphabetically, and place them before other usings +dotnet_sort_system_directives_first = true + +#Formatting - spacing options + +#require NO space between a cast and the value +csharp_space_after_cast = false +#require a space before the colon for bases or interfaces in a type declaration +csharp_space_after_colon_in_inheritance_clause = true +#require a space after a keyword in a control flow statement such as a for loop +csharp_space_after_keywords_in_control_flow_statements = true +#require a space before the colon for bases or interfaces in a type declaration +csharp_space_before_colon_in_inheritance_clause = true +#remove space within empty argument list parentheses +csharp_space_between_method_call_empty_parameter_list_parentheses = false +#remove space between method call name and opening parenthesis +csharp_space_between_method_call_name_and_opening_parenthesis = false +#do not place space characters after the opening parenthesis and before the closing parenthesis of a method call +csharp_space_between_method_call_parameter_list_parentheses = false +#remove space within empty parameter list parentheses for a method declaration +csharp_space_between_method_declaration_empty_parameter_list_parentheses = false +#place a space character after the opening parenthesis and before the closing parenthesis of a method declaration parameter list. +csharp_space_between_method_declaration_parameter_list_parentheses = false + +#Formatting - wrapping options + +#leave code block on separate lines +csharp_preserve_single_line_blocks = false + +#Style - Code block preferences + +#prefer curly braces even for one line of code +csharp_prefer_braces = true:suggestion + +#Style - expression bodied member options + +#prefer expression bodies for accessors +csharp_style_expression_bodied_accessors = true:warning +#prefer block bodies for constructors +csharp_style_expression_bodied_constructors = false:suggestion +#prefer expression bodies for methods +csharp_style_expression_bodied_methods = when_on_single_line:silent +#prefer expression-bodied members for properties +csharp_style_expression_bodied_properties = true:warning + +#Style - expression level options + +#prefer out variables to be declared before the method call +csharp_style_inlined_variable_declaration = false:suggestion +#prefer the language keyword for member access expressions, instead of the type name, for types that have a keyword to represent them +dotnet_style_predefined_type_for_member_access = true:suggestion + +#Style - Expression-level preferences + +#prefer default over default(T) +csharp_prefer_simple_default_expression = true:suggestion +#prefer objects to be initialized using object initializers when possible +dotnet_style_object_initializer = true:suggestion + +#Style - implicit and explicit types + +#prefer var over explicit type in all cases, unless overridden by another code style rule +csharp_style_var_elsewhere = true:suggestion +#prefer var is used to declare variables with built-in system types such as int +csharp_style_var_for_built_in_types = true:suggestion +#prefer var when the type is already mentioned on the right-hand side of a declaration expression +csharp_style_var_when_type_is_apparent = true:suggestion + +#Style - language keyword and framework type options + +#prefer the language keyword for local variables, method parameters, and class members, instead of the type name, for types that have a keyword to represent them +dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion + +#Style - Language rules +csharp_style_implicit_object_creation_when_type_is_apparent = true:warning +csharp_style_var_for_built_in_types = true:warning + +#Style - modifier options + +#prefer accessibility modifiers to be declared except for public interface members. This will currently not differ from always and will act as future proofing for if C# adds default interface methods. +dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion + +#Style - Modifier preferences + +#when this rule is set to a list of modifiers, prefer the specified ordering. +csharp_preferred_modifier_order = public,private,protected,internal,static,async,readonly,override,sealed,abstract,virtual:warning +dotnet_style_readonly_field = true:warning + +#Style - Pattern matching + +#prefer pattern matching instead of is expression with type casts +csharp_style_pattern_matching_over_as_with_null_check = true:warning + +#Style - qualification options + +#prefer events not to be prefaced with this. or Me. in Visual Basic +dotnet_style_qualification_for_event = false:suggestion +#prefer fields not to be prefaced with this. or Me. in Visual Basic +dotnet_style_qualification_for_field = false:suggestion +#prefer methods not to be prefaced with this. or Me. in Visual Basic +dotnet_style_qualification_for_method = false:suggestion +#prefer properties not to be prefaced with this. or Me. in Visual Basic +dotnet_style_qualification_for_property = false:suggestion +csharp_indent_labels = one_less_than_current +csharp_using_directive_placement = outside_namespace:silent +csharp_prefer_simple_using_statement = true:warning +csharp_style_namespace_declarations = file_scoped:warning +csharp_style_expression_bodied_operators = false:silent +csharp_style_expression_bodied_indexers = true:silent +csharp_style_expression_bodied_lambdas = true:silent +csharp_style_expression_bodied_local_functions = false:silent + +[*.{cs,vb}] +dotnet_style_operator_placement_when_wrapping = beginning_of_line +tab_width = 4 +indent_size = 4 +end_of_line = crlf +dotnet_style_coalesce_expression = true:suggestion +dotnet_style_null_propagation = true:suggestion +dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion +dotnet_style_prefer_auto_properties = true:silent +dotnet_style_object_initializer = true:suggestion +dotnet_style_collection_initializer = true:suggestion +dotnet_style_prefer_simplified_boolean_expressions = true:suggestion +dotnet_style_prefer_conditional_expression_over_assignment = true:silent +dotnet_style_prefer_conditional_expression_over_return = true:silent +[*.{cs,vb}] + +#Style - Unnecessary code rules +csharp_style_unused_value_assignment_preference = discard_variable:warning + +#### Naming styles #### + +# Naming rules + +dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion +dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface +dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i + +dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.types_should_be_pascal_case.symbols = types +dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members +dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case + +# Symbol specifications + +dotnet_naming_symbols.interface.applicable_kinds = interface +dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.interface.required_modifiers = + +dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum +dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.types.required_modifiers = + +dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method +dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.non_field_members.required_modifiers = + +# Naming styles + +dotnet_naming_style.begins_with_i.required_prefix = I +dotnet_naming_style.begins_with_i.required_suffix = +dotnet_naming_style.begins_with_i.word_separator = +dotnet_naming_style.begins_with_i.capitalization = pascal_case + +dotnet_naming_style.pascal_case.required_prefix = +dotnet_naming_style.pascal_case.required_suffix = +dotnet_naming_style.pascal_case.word_separator = +dotnet_naming_style.pascal_case.capitalization = pascal_case + +dotnet_naming_style.pascal_case.required_prefix = +dotnet_naming_style.pascal_case.required_suffix = +dotnet_naming_style.pascal_case.word_separator = +dotnet_naming_style.pascal_case.capitalization = pascal_case +dotnet_style_explicit_tuple_names = true:suggestion +dotnet_style_prefer_inferred_tuple_names = true:suggestion +dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion +dotnet_style_prefer_compound_assignment = true:warning +dotnet_style_prefer_simplified_interpolation = true:suggestion diff --git a/.vsconfig b/.vsconfig new file mode 100644 index 00000000..65d1f73d --- /dev/null +++ b/.vsconfig @@ -0,0 +1,16 @@ +{ + "version": "1.0", + "components": [ + "Microsoft.Component.MSBuild", + "Microsoft.NetCore.Component.Runtime.7.0", + "Microsoft.NetCore.Component.SDK", + "Microsoft.VisualStudio.Component.ManagedDesktop.Core", + "Microsoft.VisualStudio.Component.ManagedDesktop.Prerequisites", + "Microsoft.VisualStudio.Component.NuGet", + "Microsoft.VisualStudio.Component.Windows10SDK.19041", + "Microsoft.VisualStudio.Component.Windows10SDK", + "Microsoft.VisualStudio.ComponentGroup.MSIX.Packaging", + "Microsoft.VisualStudio.ComponentGroup.WindowsAppSDK.Cs", + "Microsoft.VisualStudio.Workload.ManagedDesktop" + ] +} diff --git a/WinClassicSamplesCS.sln b/WinClassicSamplesCS.sln deleted file mode 100644 index 81553974..00000000 --- a/WinClassicSamplesCS.sln +++ /dev/null @@ -1,2076 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.1.32210.238 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExplorerBrowserSearch", "Win7Samples\winui\shell\appplatform\ExplorerBrowserSearch\ExplorerBrowserSearch.csproj", "{BF35499A-12D1-4BEE-90C1-9C74F5236741}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExplorerBrowserCustomContents", "Win7Samples\winui\shell\appplatform\ExplorerBrowserCustomContents\ExplorerBrowserCustomContents.csproj", "{DFE20AAB-EA60-4401-9FE5-C2D32F81BC11}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ChangeNotifyWatcher", "Win7Samples\winui\shell\appplatform\ChangeNotifyWatcher\ChangeNotifyWatcher.csproj", "{CBA2C308-CD96-407F-ACB3-B83AD7CA0B08}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Win7Samples", "Win7Samples", "{F64D0F04-967C-4AC2-92C0-C93C4C04AFAA}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "winui", "winui", "{A74C6952-488E-4926-BE04-E17684FDAA0C}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shell", "shell", "{49EF5E85-E0CD-47CA-9489-2434649CA6FD}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "appplatform", "appplatform", "{EC86EA97-FDE0-44A0-8A95-F0076988987F}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "searchfolder", "Win7Samples\winui\shell\appplatform\searchfolder\searchfolder.csproj", "{8C0538E7-6662-4508-960F-F0193A0E02E6}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExecInExplorer", "Win7Samples\winui\shell\appplatform\ExecInExplorer\ExecInExplorer.csproj", "{B3108BC1-2E87-4155-9B80-6D4DDD6C7D01}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "fileisinuse", "Win7Samples\winui\shell\appplatform\fileisinuse\fileisinuse.csproj", "{5419B69C-7DBE-4006-B62F-38BC06935A6A}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "appshellintegration", "appshellintegration", "{DF85BF81-EE96-41EF-AA3F-ED1EAE463619}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutomaticJumpList", "Win7Samples\winui\shell\appshellintegration\AutomaticJumpList\AutomaticJumpList.csproj", "{095A4A6A-6A1D-4493-AC12-527199274635}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CustomJumpList", "Win7Samples\winui\shell\appshellintegration\CustomJumpList\CustomJumpList.csproj", "{4BFC28A4-20D7-487E-AEFB-EAD48D7BB01C}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DropTargetVerb", "Win7Samples\winui\shell\appshellintegration\DropTargetVerb\DropTargetVerb.csproj", "{614B6038-7A52-407E-B48C-79817C1F7669}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PlaylistCreator", "Win7Samples\winui\shell\appshellintegration\PlaylistCreator\PlaylistCreator.csproj", "{1294BA2E-698E-4B71-9437-55088B620849}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "fileoperations", "Win7Samples\winui\shell\appplatform\fileoperations\fileoperations.csproj", "{C3176341-2229-42A7-A9DF-846CB8C360A9}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ParsingWithParameters", "Win7Samples\winui\shell\appplatform\ParsingWithParameters\ParsingWithParameters.csproj", "{4FBDBE52-2844-47F0-8D2E-CA06234E76A8}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sampler", "Sampler\Sampler.csproj", "{42D061DF-6C64-4907-B23B-38EAAE1EC701}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "security", "security", "{3F7A94C8-F84A-43A3-9276-B2F5F3047394}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "lsapolicy", "lsapolicy", "{057BB3A2-3548-4B4A-8D5E-B6E527D0BD3B}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "lsaprivs", "Win7Samples\security\lsapolicy\lsaprivs\lsaprivs.csproj", "{0BF5C2B5-0F01-48B5-BE4E-5E3E13D149A6}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "machacct", "Win7Samples\security\lsapolicy\machacct\machacct.csproj", "{9EC5AB81-93F6-4150-9F67-61A0C2207E27}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "authorization", "authorization", "{EF89CDDF-DD30-43FF-A14D-05EFA08FE508}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "aclapi", "Win7Samples\security\authorization\aclapi\aclapi.csproj", "{946AC805-126B-489D-BADF-D9823955E482}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "audit", "Win7Samples\security\authorization\audit\audit.csproj", "{B5CB45DC-4DED-4EE2-9242-3F7B0EAEAF58}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "authz", "Win7Samples\security\authorization\authz\authz.csproj", "{86EB6286-8842-4D4C-896B-BB7E5BB5D6D6}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "azman", "Win7Samples\security\authorization\azman\azman.csproj", "{69DA869D-1797-4417-8102-F02D3AD7C029}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "klist", "Win7Samples\security\authorization\klist\klist.csproj", "{DF8723BA-89E4-455F-8D0D-61859E6F4631}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "mytoken", "Win7Samples\security\authorization\mytoken\mytoken.csproj", "{50646A7D-3564-442A-A08C-CCAF3FAA64D4}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "secprint", "Win7Samples\security\authorization\secprint\secprint.csproj", "{D2EBE7E5-3679-471F-812D-77A3997C6BD3}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "securobj", "Win7Samples\security\authorization\securobj\securobj.csproj", "{8FE2DF3A-4675-4577-AC0C-77D8BF8841CB}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "textsid", "Win7Samples\security\authorization\textsid\textsid.csproj", "{DD455B6C-392A-4D04-A031-46D491722A9F}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WindowsSearch", "WindowsSearch", "{3B612B74-8DF0-4B45-8C49-4883022467C2}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StructuredQuerySample", "Win7Samples\winui\WindowsSearch\StructuredQuerySample\StructuredQuerySample.csproj", "{88514BF5-4E9B-4781-8F11-5A181E287BA2}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DSearch", "Win7Samples\winui\WindowsSearch\DSearch\DSearch.csproj", "{B0DAF5CC-6B09-48EE-9438-99BE81AC704C}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IFilterSample", "Win7Samples\winui\WindowsSearch\IFilterSample\IFilterSample.csproj", "{CC44E5B9-E246-44FE-81B3-82394BF84707}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SearchEvents", "Win7Samples\winui\WindowsSearch\SearchEvents\SearchEvents.csproj", "{A31CF827-F17B-48C1-9EB1-31D2EF87BD66}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "cryptoapi", "cryptoapi", "{5FFDBDCB-7524-438E-9C4F-4FA4A9CF13A8}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BuildChain", "Win7Samples\security\cryptoapi\BuildChain\BuildChain.csproj", "{1721B3E2-4CE8-4FAF-A00B-766478F60B54}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CertSelect", "Win7Samples\security\cryptoapi\CertSelect\CertSelect.csproj", "{6E4E4DF1-9A3E-4DB6-98BC-6784125A8FF5}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CertSign", "Win7Samples\security\cryptoapi\CertSign\CertSign.csproj", "{6B9F3B39-7CDA-46ED-BAFC-F54A57792597}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CreateCertificate", "Win7Samples\security\cryptoapi\CreateCertificate\CreateCertificate.csproj", "{17C03355-60EB-4A66-A62B-DF2A8407FF8F}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "encrypt", "Win7Samples\security\cryptoapi\encrypt\encrypt.csproj", "{38087D48-66EF-4379-9989-CA6F2CA7DAC9}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "encryptmessage", "Win7Samples\security\cryptoapi\encryptmessage\encryptmessage.csproj", "{ADECA52F-A04F-4A8F-812E-59A9FBE3EC68}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "enumalgs", "Win7Samples\security\cryptoapi\enumalgs\enumalgs.csproj", "{6AD1E7B2-B9A7-497C-A61D-21C6FCE9F3BC}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "signhash", "Win7Samples\security\cryptoapi\signhash\signhash.csproj", "{097E5E27-6233-45BC-9C76-81C9ECF34DE2}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WinsockBluetoothConnection", "WinsockBluetoothConnection\WinsockBluetoothConnection.csproj", "{5F006E2E-82A2-4696-81DF-DF7501622BFE}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BacgroundIntelligenceTransferServicePolicy", "BacgroundIntelligenceTransferServicePolicy\BacgroundIntelligenceTransferServicePolicy.csproj", "{302CEFC1-3011-4B2A-B443-EA6FA0C0B4FD}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BackgroundCopyFileProperties", "BackgroundCopyFileProperties\BackgroundCopyFileProperties.csproj", "{313955BB-513D-43BD-9367-938635B9AC9A}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ConnectionManagerCost", "ConnectionManagerCost\ConnectionManagerCost.csproj", "{17A3F4FC-4BE8-4865-BBD3-50116CE7599B}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DNSAsyncNetworkNameResolution", "DNSAsyncNetworkNameResolution\DNSAsyncNetworkNameResolution.csproj", "{782CFC81-0B0E-4722-B685-52B3CC137060}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DesktopToasts", "DesktopToasts\DesktopToasts.csproj", "{331269B7-C7F6-453F-98FB-D59516C6044E}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DNSAsyncQuery", "DNSAsyncQuery\DNSAsyncQuery.csproj", "{678455CA-F4F2-4285-B414-E220026C4AA7}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NetworkCost", "NetworkCost\NetworkCost.csproj", "{45B91ECD-3F16-401F-BA6F-DE4E42661EAC}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CloudMirror", "CloudMirror\CloudMirror.csproj", "{50300F25-6B64-4869-9684-CB14D44E468A}" -EndProject -Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "CloudMirrorPackage", "CloudMirrorPackage\CloudMirrorPackage.wapproj", "{1FAB5D02-237C-4B9C-B820-2EB7C3B6E63A}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProjectedFileSystem", "ProjectedFileSystem\ProjectedFileSystem.csproj", "{EB4659EE-9D90-4413-A9E2-301715CAF4EF}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AppVisibility", "AppVisibility\AppVisibility.csproj", "{E5A7F376-432F-44DB-94A7-A14A2D4E5C4B}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DesktopAutomationDismiss", "DesktopAutomationDismiss\DesktopAutomationDismiss.csproj", "{8CE621E6-B633-4957-8D64-508F54461DF0}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MagnificationWindowed", "MagnificationWindowed\MagnificationWindowed.csproj", "{4451ED6E-508F-4627-987A-699C19A48DE5}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MagnificationFullscreen", "MagnificationFullscreen\MagnificationFullscreen.csproj", "{C1BE10FD-E8E1-47C7-94A9-90A24443A3CE}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GroupChat", "Win7Samples\netds\peertopeer\GroupChat\GroupChat.csproj", "{934740D8-9853-4EF7-AD9E-1A090329E70E}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "netds", "netds", "{E40CF076-974B-4882-8B68-2FE71A7266E3}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "peertopeer", "peertopeer", "{2CF2BB74-B979-4610-9A38-CAF45EEC27BD}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DrtSdkSample", "Win7Samples\netds\peertopeer\DRT\DrtSdkSample.csproj", "{9CFD42DE-61AE-4FD0-BBAD-A85807025C19}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "rpc", "rpc", "{BF9294FF-74C6-4777-9B69-7867F161F582}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "hello", "hello", "{0B3E0C08-2F75-40A4-A35B-0C335F9C1D61}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "helloc", "Win7Samples\netds\rpc\hello\helloc\helloc.csproj", "{1521D741-3C9A-47D9-8CC2-062B881AA1D1}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "hellos", "Win7Samples\netds\rpc\hello\hellos\hellos.csproj", "{C746B9BF-0DE6-4D3A-B537-EC132486C76A}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ChooseFont", "Win7Samples\winui\ChooseFont\ChooseFont.csproj", "{8075BE2B-9D61-42D9-B099-F5854AEA4C86}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "sendto", "Win7Samples\winui\sendto\sendto.csproj", "{3046E8E0-2116-4FA2-B4EC-9BAAA181069C}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "winbase", "winbase", "{4A26BBA8-2CDF-47C2-9028-8197C45F5F2E}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ISCSICli", "Win7Samples\winbase\ISCSI\ISCSICli.csproj", "{B352F52C-5091-4857-9BA8-3CD1221FC447}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RmFilterApp", "Win7Samples\winbase\RmFilterApp\RmFilterApp.csproj", "{C403C0EA-AB5D-4769-8D6D-C507BCBD2684}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "io", "io", "{B6D6F885-55E8-4A2C-A873-54953586E387}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DLEdit", "Win7Samples\winbase\io\DLEdit\DLEdit.csproj", "{6ECDFE7A-CF7C-478B-922F-0CA23BE51A58}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EnumMountPoints", "Win7Samples\winbase\io\EnumMountPoints\EnumMountPoints.csproj", "{58C7C38B-63B8-485B-9051-7A804E7DC270}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtendedFileAPIs", "Win7Samples\winbase\io\ExtendedFileAPIs\ExtendedFileAPIs.csproj", "{5323002C-F5BF-40A2-9732-23F9E25EB8AA}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AsyncCreate", "Win7Samples\winbase\io\AsyncCreate\AsyncCreate.csproj", "{77A8D383-EFCA-44E2-BFF0-F179B245E4A9}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FCopy", "Win7Samples\winbase\io\FCopy\FCopy.csproj", "{E0B5CE9F-FB29-4873-A434-8D22F22EE84E}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Mount", "Win7Samples\winbase\io\Mount\Mount.csproj", "{824E112B-6FD9-4E73-BC0F-7E9FFA089CB2}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnBufCp2", "Win7Samples\winbase\io\UnBufCp2\UnBufCp2.csproj", "{B997EAFC-13A1-48EB-8581-B9E3074F7A26}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CrawlScopeCommandLine", "Win7Samples\winui\WindowsSearch\CrawlScopeCommandLine\CrawlScopeCommandLine.csproj", "{47736DBE-538F-4A65-8AD3-3DD803343C81}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dataaccess", "dataaccess", "{65BAA9ED-E48A-4868-9C6C-90DF2E00AA5D}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "OPC", "OPC", "{3F73FB3A-9E0D-4777-8306-AEA1BD9FBF06}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MusicBundle", "Win7Samples\dataaccess\OPC\MusicBundle\MusicBundle.csproj", "{956E7526-FD0A-4E38-AF31-B99D4B1FE17F}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WindowsConnectNow", "Win7Samples\netds\WindowsConnectNow\WindowsConnectNow.csproj", "{8B71A10A-B37F-447C-86DE-6460B5159BD0}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DeviceFoundation", "DeviceFoundation", "{28247C7F-D953-4148-B2B5-FFC566202651}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "FunctionDiscovery", "FunctionDiscovery", "{DBE71E97-BE9F-4B06-AADD-3D775BB9F5F3}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "fdsample", "Win7Samples\winbase\DeviceFoundation\FunctionDIscovery\fdsample\fdsample.csproj", "{92A58FFE-C27A-4C5E-B6EF-0CF4C5C86CD9}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IMAPI", "IMAPI", "{4DFB1EEE-D389-4FE1-8710-F1D364790715}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "imapi2sample", "Win7Samples\winbase\imapi\imapi2sample\imapi2sample.csproj", "{64DAD0ED-C4A5-4460-9559-69CD02BFE134}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IBurn", "Win7Samples\winbase\imapi\IBurn\IBurn.csproj", "{5DEBB03B-5502-444A-9E50-E943A18F50D1}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tsf", "tsf", "{0E0F6C16-9633-486B-A09B-64717AF3EA63}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "tsfapp", "Win7Samples\winui\tsf\tsfapp\tsfapp.csproj", "{70950A43-0516-4902-B37F-9DE9EDF96FC6}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "tsfcase", "Win7Samples\winui\tsf\tsfcase\tsfcase.csproj", "{E4A44DBD-9790-4C08-8AAF-C7215E514706}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "multimedia", "multimedia", "{C98EAE44-7B2D-4AC8-858C-D74C806225CA}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DuckingCaptureSample", "Win7Samples\multimedia\audio\DuckingCaptureSample\DuckingCaptureSample.csproj", "{F7051618-E80F-4B53-B97D-D58147224630}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "audio", "audio", "{9BDA35D4-07CE-4BE2-B3D6-F33CA456875A}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DuckingMediaPlayer", "Win7Samples\multimedia\audio\DuckingMediaPlayer\DuckingMediaPlayer.csproj", "{6C01471F-C35B-4390-9C76-F71CD8BD227F}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shellextensibility", "shellextensibility", "{87B5CB14-2AFF-40CA-B5B1-D9214D5A8ADF}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "deskbands", "Win7Samples\winui\shell\shellextensibility\deskbands\deskbands.csproj", "{D06AB451-D752-48A1-9A35-8AECCAE1AF61}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "explorerdataprovider", "Win7Samples\winui\shell\shellextensibility\explorerdataprovider\explorerdataprovider.csproj", "{C893DDA9-D185-4C60-AF13-3719474D638A}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "imapiv2", "imapiv2", "{B4781ABB-45AF-43A9-881B-BEAD004A98F3}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EraseSample", "Win7Samples\winbase\imapi\imapiv2\erasesample\EraseSample.csproj", "{3C69A73F-3C17-4963-9BAD-69BA7D2FC059}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "storage", "storage", "{909F9E92-42D8-4A67-8540-6AADD647102E}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EhStorEnumerator2", "Win7Samples\winbase\storage\EhStorEnumerator\EhStorEnumerator2.csproj", "{8AD99F31-1B31-45CF-A1A2-3BAD6F7BAC00}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "vss", "vss", "{0CFA4CE4-B4B8-48F0-9D2E-E7FD7EE79ABD}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "vshadow", "Win7Samples\winbase\vss\vshadow\vshadow.csproj", "{CE284858-D665-4B68-B921-419FEBC8159B}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WinhttpProxy", "WinhttpProxy\WinhttpProxy.csproj", "{F47EA32E-29D5-4D2A-849E-29ECDD2A0A83}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Hyper-V", "Hyper-V", "{3B9AF35F-45F6-4652-A197-99B939812205}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Storage", "Hyper-V\Storage\Storage.csproj", "{BA281A36-2842-48EC-B2A7-93C7C81C5BCC}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CimFSAPI", "CimFSAPI\CimFSAPI.csproj", "{21DF136E-EBE7-449D-8F30-4021AB21F927}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dhcp", "dhcp", "{16D9B8DC-6C57-47F7-BBCC-68E9927D7AFE}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dhcprequest", "Win7Samples\netds\dhcp\dhcprequest\dhcprequest.csproj", "{A9572C4A-7A90-4779-8BBE-35457C2CA601}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dhcpnotify", "Win7Samples\netds\dhcp\dhcpnotify\dhcpnotify.csproj", "{BE575FEA-FA7A-4196-AE0A-6834CE34CE59}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dhcppersist", "Win7Samples\netds\dhcp\dhcppersist\dhcppersist.csproj", "{F99B42FF-45A3-46E8-BE58-EC38C83E06E4}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "filehistory", "filehistory\filehistory.csproj", "{CE908E26-D36B-4849-BCCA-B98CBFD45B71}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "winsock", "winsock", "{87D52AC1-D713-4D70-BD09-6F8E1981FC9E}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "iphelp", "iphelp", "{231BEB1C-7F5A-4401-B2DE-1D21A7562924}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "iprenew", "Win7Samples\netds\iphelp\iprenew\iprenew.csproj", "{4DB8DFA1-82F0-4585-BC1C-32AB93A4F928}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "recvmsg", "Win7Samples\netds\winsock\recvmsg\recvmsg.csproj", "{E5BA6D7A-B104-48F2-B4ED-42DC6B4B7520}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WSAPollSample", "Win7Samples\netds\winsock\wsapoll\WSAPollSample.csproj", "{028EBB7D-C7D4-4EB1-AABD-3BF2D5BB8D4B}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IPChange", "Win7Samples\netds\iphelp\ipchange\IPChange.csproj", "{E791AE5F-7B7E-4CEF-897B-0A8D72CDE445}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "winnt", "winnt", "{6FBA50C2-1277-4EDA-BA07-03D4145B0732}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "perftool", "perftool", "{5284B03E-A850-4D19-A648-AC9B5AE6BAC0}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "pdh", "pdh", "{0ABCB063-EBB6-41D9-8515-AE3825C5F3C4}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StatList", "Win7Samples\winbase\winnt\perftool\pdh\StatList\StatList.csproj", "{52B5D05F-9F76-41A8-9334-2580ACE435C6}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PerMonitorDPIAware", "PerMonitorDPIAware\cs\WpfApplication\PerMonitorDPIAware.csproj", "{700F2674-4EA4-4CDB-B2CA-2FC2BD138E2B}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "uri", "Win7Samples\netds\uri\uri.csproj", "{99318E2F-805D-4AF7-8E51-BAF6FCC257CE}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "web", "web", "{44938E1F-6821-476A-A9C1-8D35839D25AF}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Wininet", "Wininet", "{16F97640-3694-4BA8-98E3-FF4A7C602BE1}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "httpauth", "Win7Samples\web\Wininet\httpauth\httpauth.csproj", "{E68F82B2-14C7-47C5-9747-62C262722D1E}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Security", "Security", "{BDA50AE4-E6AF-4861-A580-5A8ED29DBE37}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CodeSigning", "Security\CodeSigning\CodeSigning.csproj", "{4E4EFE27-E464-477E-81EC-25C7494F3576}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CacheEnumerate", "Win7Samples\web\Wininet\CacheEnumerate\CacheEnumerate.csproj", "{EBCA4B00-6277-46D6-AF36-E638CCC610E2}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "async", "Win7Samples\web\Wininet\async\async.csproj", "{C1A415DC-597E-4AD8-8A89-C6AF52F5026D}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "winhttp", "winhttp", "{AC7213D9-5A97-429C-B1A0-964B8A9C2F1B}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WinHttpPostSample", "Win7Samples\web\winhttp\WinHttpPostSample\WinHttpPostSample.csproj", "{211FD731-0F62-4910-8343-6AA5ADA9686E}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WinhttpAsyncSample", "Win7Samples\web\winhttp\WinhttpAsyncSample\WinhttpAsyncSample.csproj", "{7B2497DF-1016-4C40-B894-9EDE00B4CA56}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "bits", "bits", "{0C0F48CF-FEAB-482B-95CE-CCC9C626A7D5}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CONTROLS", "Win7Samples\web\bits\CONTROLS\CONTROLS.csproj", "{9BD06E47-C47D-455E-84AD-B9835BDA2943}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DOWNLOADS", "Win7Samples\web\bits\DOWNLOADS\DOWNLOADS.csproj", "{4B3CF3C7-EF23-4149-8024-963201BE5EB4}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PEERCACHING", "Win7Samples\web\bits\PEERCACHING\PEERCACHING.csproj", "{634B6143-B564-4FA9-BF7B-7D15F26045BA}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UPLOADS", "Win7Samples\web\bits\UPLOADS\UPLOADS.csproj", "{049C8D2C-B00E-4369-90A6-6043C393C2ED}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dns", "dns", "{68B2586F-5AE9-4754-AAB3-BB6512581CF3}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dnsquery", "Win7Samples\netds\dns\Dnsquery\Dnsquery.csproj", "{171A091E-0477-4CC6-AC83-F0FFF5594375}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ModifyRecords", "Win7Samples\netds\dns\ModifyRecords\ModifyRecords.csproj", "{014491C6-58A0-4DFA-ACFC-4988ADCD546A}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "http", "http", "{6D4E6E9C-39F7-44D9-95F2-BE8B5B07B279}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "server", "Win7Samples\netds\http\server\server.csproj", "{C94242B3-AF74-4966-9508-55CEA7B589E9}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HttpV2Server", "Win7Samples\netds\http\HttpV2Server\HttpV2Server.csproj", "{73162237-344C-4196-9754-F0D270649C0E}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ServiceConfig4", "Win7Samples\netds\http\ServiceConfig4\ServiceConfig4.csproj", "{5E2F6EFC-61EF-467E-85C8-17CDB62DE450}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Qos", "Qos", "{8A0F5048-C9A6-4206-971F-696C4695D3C9}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Qos2", "Win7Samples\netds\Qos\Qos2\Qos2.csproj", "{98776527-60A3-4346-8A3E-A74A6D9FEEB4}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TCSample", "Win7Samples\netds\Qos\TCSample\TCSample.csproj", "{028A8572-A183-43DC-BE68-622C36ED36DA}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "securitycenter", "Win7Samples\security\securitycenter\securitycenter.csproj", "{C3D5CA53-026A-4996-BC2F-9A3849536537}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WscApiSample", "WebSecurityCenter\WscApiSample.csproj", "{CB5BDADA-8032-4F68-A17D-CA18BA63F4F0}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WinhttpWebsocket", "WinhttpWebsocket\WinhttpWebsocket.csproj", "{E01C820C-E103-4387-B1E8-680ED4218600}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Websocket", "Websocket\Websocket.csproj", "{48D69FD8-942B-46A2-ADD4-068BC35D98C4}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CWMFEx", "CWMFEx", "{30DA959F-B00E-4649-BB59-5BB83B4FD516}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CWMFExSender", "Win7Samples\winui\CWMFEx\CWMFExSender\CWMFExSender.csproj", "{AB21D4DB-F483-4977-A75F-8763198B941B}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CWMFExReceiver", "Win7Samples\winui\CWMFEx\CWMFExReceiver\CWMFExReceiver.csproj", "{B31F1FBD-F505-42D9-9761-05A5E19F87B1}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RegisterHotKey", "Win7Samples\winui\RegisterHotKey\RegisterHotKey.csproj", "{4D20BE29-3DB1-479D-B4E8-BA900BBB48B1}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ClipboardChainImprovementAPIs", "Win7Samples\winui\ClipboardChainImprovementAPIs\ClipboardChainImprovementAPIs.csproj", "{ABD44B89-6B8C-4902-8EB4-DB6F4F19C9D3}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MagnifierSample", "Win7Samples\winui\magnificiation\MagnifierSample.csproj", "{45EAC490-1351-4FB5-9E16-AAFEEDDB36AD}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NamedNlsFunctions", "Win7Samples\winui\NamedNlsFunctions\NamedNlsFunctions.csproj", "{79338A1C-5A2B-42D4-AF30-BBAB98613880}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Obscure", "Win7Samples\winui\obscure\Obscure.csproj", "{6D91EB21-0E27-4F8A-9B65-397C831531C7}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "pictures", "pictures", "{D6B1DEF4-8447-45F7-9A80-5448EE354371}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TranscodeImage", "Win7Samples\winui\pictures\transcodeimage\TranscodeImage.csproj", "{C19499AE-568C-4FE4-8E4F-EA6E2219E0FF}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "legacysamples", "legacysamples", "{488267F7-B4B5-4A2E-9488-51E8472220BC}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "fakemenu", "Win7Samples\winui\shell\legacysamples\fakemenu\fakemenu.csproj", "{287DC56C-725C-4FCE-9AFB-D4F9F3E7481C}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EventTracingEnumerateProviders", "EventTracingEnumerateProviders\EventTracingEnumerateProviders.csproj", "{BDA5D50F-3ADA-41F5-8DE8-1C9E6CB64118}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WASAPIRendering", "WASAPIRendering\WASAPIRendering.csproj", "{850D52F8-D99D-468D-8A0D-8C42D3D16318}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SystemHandlePassing", "SystemHandlePassing", "{4E3A307F-6683-4806-8C92-374ECF37B434}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Client", "SystemHandlePassing\Client\Client.csproj", "{25339E9B-7AE9-4CA2-986C-0606B75DC344}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Server", "SystemHandlePassing\Server\Server.csproj", "{B48569C5-16E7-478F-9270-810994007CE6}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PackageManagerFindPackagesWithPackageTypes", "PackageManagerFindPackagesWithPackageTypes\PackageManagerFindPackagesWithPackageTypes.csproj", "{671862A9-4A85-45E6-9ED9-BF81AEA5141F}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {BF35499A-12D1-4BEE-90C1-9C74F5236741}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BF35499A-12D1-4BEE-90C1-9C74F5236741}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BF35499A-12D1-4BEE-90C1-9C74F5236741}.Debug|x64.ActiveCfg = Debug|Any CPU - {BF35499A-12D1-4BEE-90C1-9C74F5236741}.Debug|x64.Build.0 = Debug|Any CPU - {BF35499A-12D1-4BEE-90C1-9C74F5236741}.Debug|x86.ActiveCfg = Debug|Any CPU - {BF35499A-12D1-4BEE-90C1-9C74F5236741}.Debug|x86.Build.0 = Debug|Any CPU - {BF35499A-12D1-4BEE-90C1-9C74F5236741}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BF35499A-12D1-4BEE-90C1-9C74F5236741}.Release|Any CPU.Build.0 = Release|Any CPU - {BF35499A-12D1-4BEE-90C1-9C74F5236741}.Release|x64.ActiveCfg = Release|Any CPU - {BF35499A-12D1-4BEE-90C1-9C74F5236741}.Release|x64.Build.0 = Release|Any CPU - {BF35499A-12D1-4BEE-90C1-9C74F5236741}.Release|x86.ActiveCfg = Release|Any CPU - {BF35499A-12D1-4BEE-90C1-9C74F5236741}.Release|x86.Build.0 = Release|Any CPU - {DFE20AAB-EA60-4401-9FE5-C2D32F81BC11}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DFE20AAB-EA60-4401-9FE5-C2D32F81BC11}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DFE20AAB-EA60-4401-9FE5-C2D32F81BC11}.Debug|x64.ActiveCfg = Debug|Any CPU - {DFE20AAB-EA60-4401-9FE5-C2D32F81BC11}.Debug|x64.Build.0 = Debug|Any CPU - {DFE20AAB-EA60-4401-9FE5-C2D32F81BC11}.Debug|x86.ActiveCfg = Debug|Any CPU - {DFE20AAB-EA60-4401-9FE5-C2D32F81BC11}.Debug|x86.Build.0 = Debug|Any CPU - {DFE20AAB-EA60-4401-9FE5-C2D32F81BC11}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DFE20AAB-EA60-4401-9FE5-C2D32F81BC11}.Release|Any CPU.Build.0 = Release|Any CPU - {DFE20AAB-EA60-4401-9FE5-C2D32F81BC11}.Release|x64.ActiveCfg = Release|Any CPU - {DFE20AAB-EA60-4401-9FE5-C2D32F81BC11}.Release|x64.Build.0 = Release|Any CPU - {DFE20AAB-EA60-4401-9FE5-C2D32F81BC11}.Release|x86.ActiveCfg = Release|Any CPU - {DFE20AAB-EA60-4401-9FE5-C2D32F81BC11}.Release|x86.Build.0 = Release|Any CPU - {CBA2C308-CD96-407F-ACB3-B83AD7CA0B08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CBA2C308-CD96-407F-ACB3-B83AD7CA0B08}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CBA2C308-CD96-407F-ACB3-B83AD7CA0B08}.Debug|x64.ActiveCfg = Debug|Any CPU - {CBA2C308-CD96-407F-ACB3-B83AD7CA0B08}.Debug|x64.Build.0 = Debug|Any CPU - {CBA2C308-CD96-407F-ACB3-B83AD7CA0B08}.Debug|x86.ActiveCfg = Debug|Any CPU - {CBA2C308-CD96-407F-ACB3-B83AD7CA0B08}.Debug|x86.Build.0 = Debug|Any CPU - {CBA2C308-CD96-407F-ACB3-B83AD7CA0B08}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CBA2C308-CD96-407F-ACB3-B83AD7CA0B08}.Release|Any CPU.Build.0 = Release|Any CPU - {CBA2C308-CD96-407F-ACB3-B83AD7CA0B08}.Release|x64.ActiveCfg = Release|Any CPU - {CBA2C308-CD96-407F-ACB3-B83AD7CA0B08}.Release|x64.Build.0 = Release|Any CPU - {CBA2C308-CD96-407F-ACB3-B83AD7CA0B08}.Release|x86.ActiveCfg = Release|Any CPU - {CBA2C308-CD96-407F-ACB3-B83AD7CA0B08}.Release|x86.Build.0 = Release|Any CPU - {8C0538E7-6662-4508-960F-F0193A0E02E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8C0538E7-6662-4508-960F-F0193A0E02E6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8C0538E7-6662-4508-960F-F0193A0E02E6}.Debug|x64.ActiveCfg = Debug|Any CPU - {8C0538E7-6662-4508-960F-F0193A0E02E6}.Debug|x64.Build.0 = Debug|Any CPU - {8C0538E7-6662-4508-960F-F0193A0E02E6}.Debug|x86.ActiveCfg = Debug|Any CPU - {8C0538E7-6662-4508-960F-F0193A0E02E6}.Debug|x86.Build.0 = Debug|Any CPU - {8C0538E7-6662-4508-960F-F0193A0E02E6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8C0538E7-6662-4508-960F-F0193A0E02E6}.Release|Any CPU.Build.0 = Release|Any CPU - {8C0538E7-6662-4508-960F-F0193A0E02E6}.Release|x64.ActiveCfg = Release|Any CPU - {8C0538E7-6662-4508-960F-F0193A0E02E6}.Release|x64.Build.0 = Release|Any CPU - {8C0538E7-6662-4508-960F-F0193A0E02E6}.Release|x86.ActiveCfg = Release|Any CPU - {8C0538E7-6662-4508-960F-F0193A0E02E6}.Release|x86.Build.0 = Release|Any CPU - {B3108BC1-2E87-4155-9B80-6D4DDD6C7D01}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B3108BC1-2E87-4155-9B80-6D4DDD6C7D01}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B3108BC1-2E87-4155-9B80-6D4DDD6C7D01}.Debug|x64.ActiveCfg = Debug|Any CPU - {B3108BC1-2E87-4155-9B80-6D4DDD6C7D01}.Debug|x64.Build.0 = Debug|Any CPU - {B3108BC1-2E87-4155-9B80-6D4DDD6C7D01}.Debug|x86.ActiveCfg = Debug|Any CPU - {B3108BC1-2E87-4155-9B80-6D4DDD6C7D01}.Debug|x86.Build.0 = Debug|Any CPU - {B3108BC1-2E87-4155-9B80-6D4DDD6C7D01}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B3108BC1-2E87-4155-9B80-6D4DDD6C7D01}.Release|Any CPU.Build.0 = Release|Any CPU - {B3108BC1-2E87-4155-9B80-6D4DDD6C7D01}.Release|x64.ActiveCfg = Release|Any CPU - {B3108BC1-2E87-4155-9B80-6D4DDD6C7D01}.Release|x64.Build.0 = Release|Any CPU - {B3108BC1-2E87-4155-9B80-6D4DDD6C7D01}.Release|x86.ActiveCfg = Release|Any CPU - {B3108BC1-2E87-4155-9B80-6D4DDD6C7D01}.Release|x86.Build.0 = Release|Any CPU - {5419B69C-7DBE-4006-B62F-38BC06935A6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5419B69C-7DBE-4006-B62F-38BC06935A6A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5419B69C-7DBE-4006-B62F-38BC06935A6A}.Debug|x64.ActiveCfg = Debug|Any CPU - {5419B69C-7DBE-4006-B62F-38BC06935A6A}.Debug|x64.Build.0 = Debug|Any CPU - {5419B69C-7DBE-4006-B62F-38BC06935A6A}.Debug|x86.ActiveCfg = Debug|Any CPU - {5419B69C-7DBE-4006-B62F-38BC06935A6A}.Debug|x86.Build.0 = Debug|Any CPU - {5419B69C-7DBE-4006-B62F-38BC06935A6A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5419B69C-7DBE-4006-B62F-38BC06935A6A}.Release|Any CPU.Build.0 = Release|Any CPU - {5419B69C-7DBE-4006-B62F-38BC06935A6A}.Release|x64.ActiveCfg = Release|Any CPU - {5419B69C-7DBE-4006-B62F-38BC06935A6A}.Release|x64.Build.0 = Release|Any CPU - {5419B69C-7DBE-4006-B62F-38BC06935A6A}.Release|x86.ActiveCfg = Release|Any CPU - {5419B69C-7DBE-4006-B62F-38BC06935A6A}.Release|x86.Build.0 = Release|Any CPU - {095A4A6A-6A1D-4493-AC12-527199274635}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {095A4A6A-6A1D-4493-AC12-527199274635}.Debug|Any CPU.Build.0 = Debug|Any CPU - {095A4A6A-6A1D-4493-AC12-527199274635}.Debug|x64.ActiveCfg = Debug|Any CPU - {095A4A6A-6A1D-4493-AC12-527199274635}.Debug|x64.Build.0 = Debug|Any CPU - {095A4A6A-6A1D-4493-AC12-527199274635}.Debug|x86.ActiveCfg = Debug|Any CPU - {095A4A6A-6A1D-4493-AC12-527199274635}.Debug|x86.Build.0 = Debug|Any CPU - {095A4A6A-6A1D-4493-AC12-527199274635}.Release|Any CPU.ActiveCfg = Release|Any CPU - {095A4A6A-6A1D-4493-AC12-527199274635}.Release|Any CPU.Build.0 = Release|Any CPU - {095A4A6A-6A1D-4493-AC12-527199274635}.Release|x64.ActiveCfg = Release|Any CPU - {095A4A6A-6A1D-4493-AC12-527199274635}.Release|x64.Build.0 = Release|Any CPU - {095A4A6A-6A1D-4493-AC12-527199274635}.Release|x86.ActiveCfg = Release|Any CPU - {095A4A6A-6A1D-4493-AC12-527199274635}.Release|x86.Build.0 = Release|Any CPU - {4BFC28A4-20D7-487E-AEFB-EAD48D7BB01C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4BFC28A4-20D7-487E-AEFB-EAD48D7BB01C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4BFC28A4-20D7-487E-AEFB-EAD48D7BB01C}.Debug|x64.ActiveCfg = Debug|Any CPU - {4BFC28A4-20D7-487E-AEFB-EAD48D7BB01C}.Debug|x64.Build.0 = Debug|Any CPU - {4BFC28A4-20D7-487E-AEFB-EAD48D7BB01C}.Debug|x86.ActiveCfg = Debug|Any CPU - {4BFC28A4-20D7-487E-AEFB-EAD48D7BB01C}.Debug|x86.Build.0 = Debug|Any CPU - {4BFC28A4-20D7-487E-AEFB-EAD48D7BB01C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4BFC28A4-20D7-487E-AEFB-EAD48D7BB01C}.Release|Any CPU.Build.0 = Release|Any CPU - {4BFC28A4-20D7-487E-AEFB-EAD48D7BB01C}.Release|x64.ActiveCfg = Release|Any CPU - {4BFC28A4-20D7-487E-AEFB-EAD48D7BB01C}.Release|x64.Build.0 = Release|Any CPU - {4BFC28A4-20D7-487E-AEFB-EAD48D7BB01C}.Release|x86.ActiveCfg = Release|Any CPU - {4BFC28A4-20D7-487E-AEFB-EAD48D7BB01C}.Release|x86.Build.0 = Release|Any CPU - {614B6038-7A52-407E-B48C-79817C1F7669}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {614B6038-7A52-407E-B48C-79817C1F7669}.Debug|Any CPU.Build.0 = Debug|Any CPU - {614B6038-7A52-407E-B48C-79817C1F7669}.Debug|x64.ActiveCfg = Debug|Any CPU - {614B6038-7A52-407E-B48C-79817C1F7669}.Debug|x64.Build.0 = Debug|Any CPU - {614B6038-7A52-407E-B48C-79817C1F7669}.Debug|x86.ActiveCfg = Debug|Any CPU - {614B6038-7A52-407E-B48C-79817C1F7669}.Debug|x86.Build.0 = Debug|Any CPU - {614B6038-7A52-407E-B48C-79817C1F7669}.Release|Any CPU.ActiveCfg = Release|Any CPU - {614B6038-7A52-407E-B48C-79817C1F7669}.Release|Any CPU.Build.0 = Release|Any CPU - {614B6038-7A52-407E-B48C-79817C1F7669}.Release|x64.ActiveCfg = Release|Any CPU - {614B6038-7A52-407E-B48C-79817C1F7669}.Release|x64.Build.0 = Release|Any CPU - {614B6038-7A52-407E-B48C-79817C1F7669}.Release|x86.ActiveCfg = Release|Any CPU - {614B6038-7A52-407E-B48C-79817C1F7669}.Release|x86.Build.0 = Release|Any CPU - {1294BA2E-698E-4B71-9437-55088B620849}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1294BA2E-698E-4B71-9437-55088B620849}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1294BA2E-698E-4B71-9437-55088B620849}.Debug|x64.ActiveCfg = Debug|Any CPU - {1294BA2E-698E-4B71-9437-55088B620849}.Debug|x64.Build.0 = Debug|Any CPU - {1294BA2E-698E-4B71-9437-55088B620849}.Debug|x86.ActiveCfg = Debug|Any CPU - {1294BA2E-698E-4B71-9437-55088B620849}.Debug|x86.Build.0 = Debug|Any CPU - {1294BA2E-698E-4B71-9437-55088B620849}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1294BA2E-698E-4B71-9437-55088B620849}.Release|Any CPU.Build.0 = Release|Any CPU - {1294BA2E-698E-4B71-9437-55088B620849}.Release|x64.ActiveCfg = Release|Any CPU - {1294BA2E-698E-4B71-9437-55088B620849}.Release|x64.Build.0 = Release|Any CPU - {1294BA2E-698E-4B71-9437-55088B620849}.Release|x86.ActiveCfg = Release|Any CPU - {1294BA2E-698E-4B71-9437-55088B620849}.Release|x86.Build.0 = Release|Any CPU - {C3176341-2229-42A7-A9DF-846CB8C360A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C3176341-2229-42A7-A9DF-846CB8C360A9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C3176341-2229-42A7-A9DF-846CB8C360A9}.Debug|x64.ActiveCfg = Debug|Any CPU - {C3176341-2229-42A7-A9DF-846CB8C360A9}.Debug|x64.Build.0 = Debug|Any CPU - {C3176341-2229-42A7-A9DF-846CB8C360A9}.Debug|x86.ActiveCfg = Debug|Any CPU - {C3176341-2229-42A7-A9DF-846CB8C360A9}.Debug|x86.Build.0 = Debug|Any CPU - {C3176341-2229-42A7-A9DF-846CB8C360A9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C3176341-2229-42A7-A9DF-846CB8C360A9}.Release|Any CPU.Build.0 = Release|Any CPU - {C3176341-2229-42A7-A9DF-846CB8C360A9}.Release|x64.ActiveCfg = Release|Any CPU - {C3176341-2229-42A7-A9DF-846CB8C360A9}.Release|x64.Build.0 = Release|Any CPU - {C3176341-2229-42A7-A9DF-846CB8C360A9}.Release|x86.ActiveCfg = Release|Any CPU - {C3176341-2229-42A7-A9DF-846CB8C360A9}.Release|x86.Build.0 = Release|Any CPU - {4FBDBE52-2844-47F0-8D2E-CA06234E76A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4FBDBE52-2844-47F0-8D2E-CA06234E76A8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4FBDBE52-2844-47F0-8D2E-CA06234E76A8}.Debug|x64.ActiveCfg = Debug|Any CPU - {4FBDBE52-2844-47F0-8D2E-CA06234E76A8}.Debug|x64.Build.0 = Debug|Any CPU - {4FBDBE52-2844-47F0-8D2E-CA06234E76A8}.Debug|x86.ActiveCfg = Debug|Any CPU - {4FBDBE52-2844-47F0-8D2E-CA06234E76A8}.Debug|x86.Build.0 = Debug|Any CPU - {4FBDBE52-2844-47F0-8D2E-CA06234E76A8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4FBDBE52-2844-47F0-8D2E-CA06234E76A8}.Release|Any CPU.Build.0 = Release|Any CPU - {4FBDBE52-2844-47F0-8D2E-CA06234E76A8}.Release|x64.ActiveCfg = Release|Any CPU - {4FBDBE52-2844-47F0-8D2E-CA06234E76A8}.Release|x64.Build.0 = Release|Any CPU - {4FBDBE52-2844-47F0-8D2E-CA06234E76A8}.Release|x86.ActiveCfg = Release|Any CPU - {4FBDBE52-2844-47F0-8D2E-CA06234E76A8}.Release|x86.Build.0 = Release|Any CPU - {42D061DF-6C64-4907-B23B-38EAAE1EC701}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {42D061DF-6C64-4907-B23B-38EAAE1EC701}.Debug|x64.ActiveCfg = Debug|Any CPU - {42D061DF-6C64-4907-B23B-38EAAE1EC701}.Debug|x64.Build.0 = Debug|Any CPU - {42D061DF-6C64-4907-B23B-38EAAE1EC701}.Debug|x86.ActiveCfg = Debug|Any CPU - {42D061DF-6C64-4907-B23B-38EAAE1EC701}.Debug|x86.Build.0 = Debug|Any CPU - {42D061DF-6C64-4907-B23B-38EAAE1EC701}.Release|Any CPU.ActiveCfg = Release|Any CPU - {42D061DF-6C64-4907-B23B-38EAAE1EC701}.Release|x64.ActiveCfg = Release|Any CPU - {42D061DF-6C64-4907-B23B-38EAAE1EC701}.Release|x64.Build.0 = Release|Any CPU - {42D061DF-6C64-4907-B23B-38EAAE1EC701}.Release|x86.ActiveCfg = Release|Any CPU - {42D061DF-6C64-4907-B23B-38EAAE1EC701}.Release|x86.Build.0 = Release|Any CPU - {0BF5C2B5-0F01-48B5-BE4E-5E3E13D149A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0BF5C2B5-0F01-48B5-BE4E-5E3E13D149A6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0BF5C2B5-0F01-48B5-BE4E-5E3E13D149A6}.Debug|x64.ActiveCfg = Debug|Any CPU - {0BF5C2B5-0F01-48B5-BE4E-5E3E13D149A6}.Debug|x64.Build.0 = Debug|Any CPU - {0BF5C2B5-0F01-48B5-BE4E-5E3E13D149A6}.Debug|x86.ActiveCfg = Debug|Any CPU - {0BF5C2B5-0F01-48B5-BE4E-5E3E13D149A6}.Debug|x86.Build.0 = Debug|Any CPU - {0BF5C2B5-0F01-48B5-BE4E-5E3E13D149A6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0BF5C2B5-0F01-48B5-BE4E-5E3E13D149A6}.Release|Any CPU.Build.0 = Release|Any CPU - {0BF5C2B5-0F01-48B5-BE4E-5E3E13D149A6}.Release|x64.ActiveCfg = Release|Any CPU - {0BF5C2B5-0F01-48B5-BE4E-5E3E13D149A6}.Release|x64.Build.0 = Release|Any CPU - {0BF5C2B5-0F01-48B5-BE4E-5E3E13D149A6}.Release|x86.ActiveCfg = Release|Any CPU - {0BF5C2B5-0F01-48B5-BE4E-5E3E13D149A6}.Release|x86.Build.0 = Release|Any CPU - {9EC5AB81-93F6-4150-9F67-61A0C2207E27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9EC5AB81-93F6-4150-9F67-61A0C2207E27}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9EC5AB81-93F6-4150-9F67-61A0C2207E27}.Debug|x64.ActiveCfg = Debug|Any CPU - {9EC5AB81-93F6-4150-9F67-61A0C2207E27}.Debug|x64.Build.0 = Debug|Any CPU - {9EC5AB81-93F6-4150-9F67-61A0C2207E27}.Debug|x86.ActiveCfg = Debug|Any CPU - {9EC5AB81-93F6-4150-9F67-61A0C2207E27}.Debug|x86.Build.0 = Debug|Any CPU - {9EC5AB81-93F6-4150-9F67-61A0C2207E27}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9EC5AB81-93F6-4150-9F67-61A0C2207E27}.Release|Any CPU.Build.0 = Release|Any CPU - {9EC5AB81-93F6-4150-9F67-61A0C2207E27}.Release|x64.ActiveCfg = Release|Any CPU - {9EC5AB81-93F6-4150-9F67-61A0C2207E27}.Release|x64.Build.0 = Release|Any CPU - {9EC5AB81-93F6-4150-9F67-61A0C2207E27}.Release|x86.ActiveCfg = Release|Any CPU - {9EC5AB81-93F6-4150-9F67-61A0C2207E27}.Release|x86.Build.0 = Release|Any CPU - {946AC805-126B-489D-BADF-D9823955E482}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {946AC805-126B-489D-BADF-D9823955E482}.Debug|Any CPU.Build.0 = Debug|Any CPU - {946AC805-126B-489D-BADF-D9823955E482}.Debug|x64.ActiveCfg = Debug|Any CPU - {946AC805-126B-489D-BADF-D9823955E482}.Debug|x64.Build.0 = Debug|Any CPU - {946AC805-126B-489D-BADF-D9823955E482}.Debug|x86.ActiveCfg = Debug|Any CPU - {946AC805-126B-489D-BADF-D9823955E482}.Debug|x86.Build.0 = Debug|Any CPU - {946AC805-126B-489D-BADF-D9823955E482}.Release|Any CPU.ActiveCfg = Release|Any CPU - {946AC805-126B-489D-BADF-D9823955E482}.Release|Any CPU.Build.0 = Release|Any CPU - {946AC805-126B-489D-BADF-D9823955E482}.Release|x64.ActiveCfg = Release|Any CPU - {946AC805-126B-489D-BADF-D9823955E482}.Release|x64.Build.0 = Release|Any CPU - {946AC805-126B-489D-BADF-D9823955E482}.Release|x86.ActiveCfg = Release|Any CPU - {946AC805-126B-489D-BADF-D9823955E482}.Release|x86.Build.0 = Release|Any CPU - {B5CB45DC-4DED-4EE2-9242-3F7B0EAEAF58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B5CB45DC-4DED-4EE2-9242-3F7B0EAEAF58}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B5CB45DC-4DED-4EE2-9242-3F7B0EAEAF58}.Debug|x64.ActiveCfg = Debug|Any CPU - {B5CB45DC-4DED-4EE2-9242-3F7B0EAEAF58}.Debug|x64.Build.0 = Debug|Any CPU - {B5CB45DC-4DED-4EE2-9242-3F7B0EAEAF58}.Debug|x86.ActiveCfg = Debug|Any CPU - {B5CB45DC-4DED-4EE2-9242-3F7B0EAEAF58}.Debug|x86.Build.0 = Debug|Any CPU - {B5CB45DC-4DED-4EE2-9242-3F7B0EAEAF58}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B5CB45DC-4DED-4EE2-9242-3F7B0EAEAF58}.Release|Any CPU.Build.0 = Release|Any CPU - {B5CB45DC-4DED-4EE2-9242-3F7B0EAEAF58}.Release|x64.ActiveCfg = Release|Any CPU - {B5CB45DC-4DED-4EE2-9242-3F7B0EAEAF58}.Release|x64.Build.0 = Release|Any CPU - {B5CB45DC-4DED-4EE2-9242-3F7B0EAEAF58}.Release|x86.ActiveCfg = Release|Any CPU - {B5CB45DC-4DED-4EE2-9242-3F7B0EAEAF58}.Release|x86.Build.0 = Release|Any CPU - {86EB6286-8842-4D4C-896B-BB7E5BB5D6D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {86EB6286-8842-4D4C-896B-BB7E5BB5D6D6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {86EB6286-8842-4D4C-896B-BB7E5BB5D6D6}.Debug|x64.ActiveCfg = Debug|Any CPU - {86EB6286-8842-4D4C-896B-BB7E5BB5D6D6}.Debug|x64.Build.0 = Debug|Any CPU - {86EB6286-8842-4D4C-896B-BB7E5BB5D6D6}.Debug|x86.ActiveCfg = Debug|Any CPU - {86EB6286-8842-4D4C-896B-BB7E5BB5D6D6}.Debug|x86.Build.0 = Debug|Any CPU - {86EB6286-8842-4D4C-896B-BB7E5BB5D6D6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {86EB6286-8842-4D4C-896B-BB7E5BB5D6D6}.Release|Any CPU.Build.0 = Release|Any CPU - {86EB6286-8842-4D4C-896B-BB7E5BB5D6D6}.Release|x64.ActiveCfg = Release|Any CPU - {86EB6286-8842-4D4C-896B-BB7E5BB5D6D6}.Release|x64.Build.0 = Release|Any CPU - {86EB6286-8842-4D4C-896B-BB7E5BB5D6D6}.Release|x86.ActiveCfg = Release|Any CPU - {86EB6286-8842-4D4C-896B-BB7E5BB5D6D6}.Release|x86.Build.0 = Release|Any CPU - {69DA869D-1797-4417-8102-F02D3AD7C029}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {69DA869D-1797-4417-8102-F02D3AD7C029}.Debug|Any CPU.Build.0 = Debug|Any CPU - {69DA869D-1797-4417-8102-F02D3AD7C029}.Debug|x64.ActiveCfg = Debug|Any CPU - {69DA869D-1797-4417-8102-F02D3AD7C029}.Debug|x64.Build.0 = Debug|Any CPU - {69DA869D-1797-4417-8102-F02D3AD7C029}.Debug|x86.ActiveCfg = Debug|Any CPU - {69DA869D-1797-4417-8102-F02D3AD7C029}.Debug|x86.Build.0 = Debug|Any CPU - {69DA869D-1797-4417-8102-F02D3AD7C029}.Release|Any CPU.ActiveCfg = Release|Any CPU - {69DA869D-1797-4417-8102-F02D3AD7C029}.Release|Any CPU.Build.0 = Release|Any CPU - {69DA869D-1797-4417-8102-F02D3AD7C029}.Release|x64.ActiveCfg = Release|Any CPU - {69DA869D-1797-4417-8102-F02D3AD7C029}.Release|x64.Build.0 = Release|Any CPU - {69DA869D-1797-4417-8102-F02D3AD7C029}.Release|x86.ActiveCfg = Release|Any CPU - {69DA869D-1797-4417-8102-F02D3AD7C029}.Release|x86.Build.0 = Release|Any CPU - {DF8723BA-89E4-455F-8D0D-61859E6F4631}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DF8723BA-89E4-455F-8D0D-61859E6F4631}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DF8723BA-89E4-455F-8D0D-61859E6F4631}.Debug|x64.ActiveCfg = Debug|Any CPU - {DF8723BA-89E4-455F-8D0D-61859E6F4631}.Debug|x64.Build.0 = Debug|Any CPU - {DF8723BA-89E4-455F-8D0D-61859E6F4631}.Debug|x86.ActiveCfg = Debug|Any CPU - {DF8723BA-89E4-455F-8D0D-61859E6F4631}.Debug|x86.Build.0 = Debug|Any CPU - {DF8723BA-89E4-455F-8D0D-61859E6F4631}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DF8723BA-89E4-455F-8D0D-61859E6F4631}.Release|Any CPU.Build.0 = Release|Any CPU - {DF8723BA-89E4-455F-8D0D-61859E6F4631}.Release|x64.ActiveCfg = Release|Any CPU - {DF8723BA-89E4-455F-8D0D-61859E6F4631}.Release|x64.Build.0 = Release|Any CPU - {DF8723BA-89E4-455F-8D0D-61859E6F4631}.Release|x86.ActiveCfg = Release|Any CPU - {DF8723BA-89E4-455F-8D0D-61859E6F4631}.Release|x86.Build.0 = Release|Any CPU - {50646A7D-3564-442A-A08C-CCAF3FAA64D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {50646A7D-3564-442A-A08C-CCAF3FAA64D4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {50646A7D-3564-442A-A08C-CCAF3FAA64D4}.Debug|x64.ActiveCfg = Debug|Any CPU - {50646A7D-3564-442A-A08C-CCAF3FAA64D4}.Debug|x64.Build.0 = Debug|Any CPU - {50646A7D-3564-442A-A08C-CCAF3FAA64D4}.Debug|x86.ActiveCfg = Debug|Any CPU - {50646A7D-3564-442A-A08C-CCAF3FAA64D4}.Debug|x86.Build.0 = Debug|Any CPU - {50646A7D-3564-442A-A08C-CCAF3FAA64D4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {50646A7D-3564-442A-A08C-CCAF3FAA64D4}.Release|Any CPU.Build.0 = Release|Any CPU - {50646A7D-3564-442A-A08C-CCAF3FAA64D4}.Release|x64.ActiveCfg = Release|Any CPU - {50646A7D-3564-442A-A08C-CCAF3FAA64D4}.Release|x64.Build.0 = Release|Any CPU - {50646A7D-3564-442A-A08C-CCAF3FAA64D4}.Release|x86.ActiveCfg = Release|Any CPU - {50646A7D-3564-442A-A08C-CCAF3FAA64D4}.Release|x86.Build.0 = Release|Any CPU - {D2EBE7E5-3679-471F-812D-77A3997C6BD3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D2EBE7E5-3679-471F-812D-77A3997C6BD3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D2EBE7E5-3679-471F-812D-77A3997C6BD3}.Debug|x64.ActiveCfg = Debug|Any CPU - {D2EBE7E5-3679-471F-812D-77A3997C6BD3}.Debug|x64.Build.0 = Debug|Any CPU - {D2EBE7E5-3679-471F-812D-77A3997C6BD3}.Debug|x86.ActiveCfg = Debug|Any CPU - {D2EBE7E5-3679-471F-812D-77A3997C6BD3}.Debug|x86.Build.0 = Debug|Any CPU - {D2EBE7E5-3679-471F-812D-77A3997C6BD3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D2EBE7E5-3679-471F-812D-77A3997C6BD3}.Release|Any CPU.Build.0 = Release|Any CPU - {D2EBE7E5-3679-471F-812D-77A3997C6BD3}.Release|x64.ActiveCfg = Release|Any CPU - {D2EBE7E5-3679-471F-812D-77A3997C6BD3}.Release|x64.Build.0 = Release|Any CPU - {D2EBE7E5-3679-471F-812D-77A3997C6BD3}.Release|x86.ActiveCfg = Release|Any CPU - {D2EBE7E5-3679-471F-812D-77A3997C6BD3}.Release|x86.Build.0 = Release|Any CPU - {8FE2DF3A-4675-4577-AC0C-77D8BF8841CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8FE2DF3A-4675-4577-AC0C-77D8BF8841CB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8FE2DF3A-4675-4577-AC0C-77D8BF8841CB}.Debug|x64.ActiveCfg = Debug|Any CPU - {8FE2DF3A-4675-4577-AC0C-77D8BF8841CB}.Debug|x64.Build.0 = Debug|Any CPU - {8FE2DF3A-4675-4577-AC0C-77D8BF8841CB}.Debug|x86.ActiveCfg = Debug|Any CPU - {8FE2DF3A-4675-4577-AC0C-77D8BF8841CB}.Debug|x86.Build.0 = Debug|Any CPU - {8FE2DF3A-4675-4577-AC0C-77D8BF8841CB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8FE2DF3A-4675-4577-AC0C-77D8BF8841CB}.Release|Any CPU.Build.0 = Release|Any CPU - {8FE2DF3A-4675-4577-AC0C-77D8BF8841CB}.Release|x64.ActiveCfg = Release|Any CPU - {8FE2DF3A-4675-4577-AC0C-77D8BF8841CB}.Release|x64.Build.0 = Release|Any CPU - {8FE2DF3A-4675-4577-AC0C-77D8BF8841CB}.Release|x86.ActiveCfg = Release|Any CPU - {8FE2DF3A-4675-4577-AC0C-77D8BF8841CB}.Release|x86.Build.0 = Release|Any CPU - {DD455B6C-392A-4D04-A031-46D491722A9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DD455B6C-392A-4D04-A031-46D491722A9F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DD455B6C-392A-4D04-A031-46D491722A9F}.Debug|x64.ActiveCfg = Debug|Any CPU - {DD455B6C-392A-4D04-A031-46D491722A9F}.Debug|x64.Build.0 = Debug|Any CPU - {DD455B6C-392A-4D04-A031-46D491722A9F}.Debug|x86.ActiveCfg = Debug|Any CPU - {DD455B6C-392A-4D04-A031-46D491722A9F}.Debug|x86.Build.0 = Debug|Any CPU - {DD455B6C-392A-4D04-A031-46D491722A9F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DD455B6C-392A-4D04-A031-46D491722A9F}.Release|Any CPU.Build.0 = Release|Any CPU - {DD455B6C-392A-4D04-A031-46D491722A9F}.Release|x64.ActiveCfg = Release|Any CPU - {DD455B6C-392A-4D04-A031-46D491722A9F}.Release|x64.Build.0 = Release|Any CPU - {DD455B6C-392A-4D04-A031-46D491722A9F}.Release|x86.ActiveCfg = Release|Any CPU - {DD455B6C-392A-4D04-A031-46D491722A9F}.Release|x86.Build.0 = Release|Any CPU - {88514BF5-4E9B-4781-8F11-5A181E287BA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {88514BF5-4E9B-4781-8F11-5A181E287BA2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {88514BF5-4E9B-4781-8F11-5A181E287BA2}.Debug|x64.ActiveCfg = Debug|Any CPU - {88514BF5-4E9B-4781-8F11-5A181E287BA2}.Debug|x64.Build.0 = Debug|Any CPU - {88514BF5-4E9B-4781-8F11-5A181E287BA2}.Debug|x86.ActiveCfg = Debug|Any CPU - {88514BF5-4E9B-4781-8F11-5A181E287BA2}.Debug|x86.Build.0 = Debug|Any CPU - {88514BF5-4E9B-4781-8F11-5A181E287BA2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {88514BF5-4E9B-4781-8F11-5A181E287BA2}.Release|Any CPU.Build.0 = Release|Any CPU - {88514BF5-4E9B-4781-8F11-5A181E287BA2}.Release|x64.ActiveCfg = Release|Any CPU - {88514BF5-4E9B-4781-8F11-5A181E287BA2}.Release|x64.Build.0 = Release|Any CPU - {88514BF5-4E9B-4781-8F11-5A181E287BA2}.Release|x86.ActiveCfg = Release|Any CPU - {88514BF5-4E9B-4781-8F11-5A181E287BA2}.Release|x86.Build.0 = Release|Any CPU - {B0DAF5CC-6B09-48EE-9438-99BE81AC704C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0DAF5CC-6B09-48EE-9438-99BE81AC704C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0DAF5CC-6B09-48EE-9438-99BE81AC704C}.Debug|x64.ActiveCfg = Debug|Any CPU - {B0DAF5CC-6B09-48EE-9438-99BE81AC704C}.Debug|x64.Build.0 = Debug|Any CPU - {B0DAF5CC-6B09-48EE-9438-99BE81AC704C}.Debug|x86.ActiveCfg = Debug|Any CPU - {B0DAF5CC-6B09-48EE-9438-99BE81AC704C}.Debug|x86.Build.0 = Debug|Any CPU - {B0DAF5CC-6B09-48EE-9438-99BE81AC704C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0DAF5CC-6B09-48EE-9438-99BE81AC704C}.Release|Any CPU.Build.0 = Release|Any CPU - {B0DAF5CC-6B09-48EE-9438-99BE81AC704C}.Release|x64.ActiveCfg = Release|Any CPU - {B0DAF5CC-6B09-48EE-9438-99BE81AC704C}.Release|x64.Build.0 = Release|Any CPU - {B0DAF5CC-6B09-48EE-9438-99BE81AC704C}.Release|x86.ActiveCfg = Release|Any CPU - {B0DAF5CC-6B09-48EE-9438-99BE81AC704C}.Release|x86.Build.0 = Release|Any CPU - {CC44E5B9-E246-44FE-81B3-82394BF84707}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CC44E5B9-E246-44FE-81B3-82394BF84707}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CC44E5B9-E246-44FE-81B3-82394BF84707}.Debug|x64.ActiveCfg = Debug|Any CPU - {CC44E5B9-E246-44FE-81B3-82394BF84707}.Debug|x64.Build.0 = Debug|Any CPU - {CC44E5B9-E246-44FE-81B3-82394BF84707}.Debug|x86.ActiveCfg = Debug|Any CPU - {CC44E5B9-E246-44FE-81B3-82394BF84707}.Debug|x86.Build.0 = Debug|Any CPU - {CC44E5B9-E246-44FE-81B3-82394BF84707}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CC44E5B9-E246-44FE-81B3-82394BF84707}.Release|Any CPU.Build.0 = Release|Any CPU - {CC44E5B9-E246-44FE-81B3-82394BF84707}.Release|x64.ActiveCfg = Release|Any CPU - {CC44E5B9-E246-44FE-81B3-82394BF84707}.Release|x64.Build.0 = Release|Any CPU - {CC44E5B9-E246-44FE-81B3-82394BF84707}.Release|x86.ActiveCfg = Release|Any CPU - {CC44E5B9-E246-44FE-81B3-82394BF84707}.Release|x86.Build.0 = Release|Any CPU - {A31CF827-F17B-48C1-9EB1-31D2EF87BD66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A31CF827-F17B-48C1-9EB1-31D2EF87BD66}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A31CF827-F17B-48C1-9EB1-31D2EF87BD66}.Debug|x64.ActiveCfg = Debug|Any CPU - {A31CF827-F17B-48C1-9EB1-31D2EF87BD66}.Debug|x86.ActiveCfg = Debug|Any CPU - {A31CF827-F17B-48C1-9EB1-31D2EF87BD66}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A31CF827-F17B-48C1-9EB1-31D2EF87BD66}.Release|Any CPU.Build.0 = Release|Any CPU - {A31CF827-F17B-48C1-9EB1-31D2EF87BD66}.Release|x64.ActiveCfg = Release|Any CPU - {A31CF827-F17B-48C1-9EB1-31D2EF87BD66}.Release|x86.ActiveCfg = Release|Any CPU - {1721B3E2-4CE8-4FAF-A00B-766478F60B54}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1721B3E2-4CE8-4FAF-A00B-766478F60B54}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1721B3E2-4CE8-4FAF-A00B-766478F60B54}.Debug|x64.ActiveCfg = Debug|Any CPU - {1721B3E2-4CE8-4FAF-A00B-766478F60B54}.Debug|x64.Build.0 = Debug|Any CPU - {1721B3E2-4CE8-4FAF-A00B-766478F60B54}.Debug|x86.ActiveCfg = Debug|Any CPU - {1721B3E2-4CE8-4FAF-A00B-766478F60B54}.Debug|x86.Build.0 = Debug|Any CPU - {1721B3E2-4CE8-4FAF-A00B-766478F60B54}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1721B3E2-4CE8-4FAF-A00B-766478F60B54}.Release|Any CPU.Build.0 = Release|Any CPU - {1721B3E2-4CE8-4FAF-A00B-766478F60B54}.Release|x64.ActiveCfg = Release|Any CPU - {1721B3E2-4CE8-4FAF-A00B-766478F60B54}.Release|x64.Build.0 = Release|Any CPU - {1721B3E2-4CE8-4FAF-A00B-766478F60B54}.Release|x86.ActiveCfg = Release|Any CPU - {1721B3E2-4CE8-4FAF-A00B-766478F60B54}.Release|x86.Build.0 = Release|Any CPU - {6E4E4DF1-9A3E-4DB6-98BC-6784125A8FF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6E4E4DF1-9A3E-4DB6-98BC-6784125A8FF5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6E4E4DF1-9A3E-4DB6-98BC-6784125A8FF5}.Debug|x64.ActiveCfg = Debug|Any CPU - {6E4E4DF1-9A3E-4DB6-98BC-6784125A8FF5}.Debug|x64.Build.0 = Debug|Any CPU - {6E4E4DF1-9A3E-4DB6-98BC-6784125A8FF5}.Debug|x86.ActiveCfg = Debug|Any CPU - {6E4E4DF1-9A3E-4DB6-98BC-6784125A8FF5}.Debug|x86.Build.0 = Debug|Any CPU - {6E4E4DF1-9A3E-4DB6-98BC-6784125A8FF5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6E4E4DF1-9A3E-4DB6-98BC-6784125A8FF5}.Release|Any CPU.Build.0 = Release|Any CPU - {6E4E4DF1-9A3E-4DB6-98BC-6784125A8FF5}.Release|x64.ActiveCfg = Release|Any CPU - {6E4E4DF1-9A3E-4DB6-98BC-6784125A8FF5}.Release|x64.Build.0 = Release|Any CPU - {6E4E4DF1-9A3E-4DB6-98BC-6784125A8FF5}.Release|x86.ActiveCfg = Release|Any CPU - {6E4E4DF1-9A3E-4DB6-98BC-6784125A8FF5}.Release|x86.Build.0 = Release|Any CPU - {6B9F3B39-7CDA-46ED-BAFC-F54A57792597}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6B9F3B39-7CDA-46ED-BAFC-F54A57792597}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6B9F3B39-7CDA-46ED-BAFC-F54A57792597}.Debug|x64.ActiveCfg = Debug|Any CPU - {6B9F3B39-7CDA-46ED-BAFC-F54A57792597}.Debug|x64.Build.0 = Debug|Any CPU - {6B9F3B39-7CDA-46ED-BAFC-F54A57792597}.Debug|x86.ActiveCfg = Debug|Any CPU - {6B9F3B39-7CDA-46ED-BAFC-F54A57792597}.Debug|x86.Build.0 = Debug|Any CPU - {6B9F3B39-7CDA-46ED-BAFC-F54A57792597}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6B9F3B39-7CDA-46ED-BAFC-F54A57792597}.Release|Any CPU.Build.0 = Release|Any CPU - {6B9F3B39-7CDA-46ED-BAFC-F54A57792597}.Release|x64.ActiveCfg = Release|Any CPU - {6B9F3B39-7CDA-46ED-BAFC-F54A57792597}.Release|x64.Build.0 = Release|Any CPU - {6B9F3B39-7CDA-46ED-BAFC-F54A57792597}.Release|x86.ActiveCfg = Release|Any CPU - {6B9F3B39-7CDA-46ED-BAFC-F54A57792597}.Release|x86.Build.0 = Release|Any CPU - {17C03355-60EB-4A66-A62B-DF2A8407FF8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {17C03355-60EB-4A66-A62B-DF2A8407FF8F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {17C03355-60EB-4A66-A62B-DF2A8407FF8F}.Debug|x64.ActiveCfg = Debug|Any CPU - {17C03355-60EB-4A66-A62B-DF2A8407FF8F}.Debug|x64.Build.0 = Debug|Any CPU - {17C03355-60EB-4A66-A62B-DF2A8407FF8F}.Debug|x86.ActiveCfg = Debug|Any CPU - {17C03355-60EB-4A66-A62B-DF2A8407FF8F}.Debug|x86.Build.0 = Debug|Any CPU - {17C03355-60EB-4A66-A62B-DF2A8407FF8F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {17C03355-60EB-4A66-A62B-DF2A8407FF8F}.Release|Any CPU.Build.0 = Release|Any CPU - {17C03355-60EB-4A66-A62B-DF2A8407FF8F}.Release|x64.ActiveCfg = Release|Any CPU - {17C03355-60EB-4A66-A62B-DF2A8407FF8F}.Release|x64.Build.0 = Release|Any CPU - {17C03355-60EB-4A66-A62B-DF2A8407FF8F}.Release|x86.ActiveCfg = Release|Any CPU - {17C03355-60EB-4A66-A62B-DF2A8407FF8F}.Release|x86.Build.0 = Release|Any CPU - {38087D48-66EF-4379-9989-CA6F2CA7DAC9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {38087D48-66EF-4379-9989-CA6F2CA7DAC9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {38087D48-66EF-4379-9989-CA6F2CA7DAC9}.Debug|x64.ActiveCfg = Debug|Any CPU - {38087D48-66EF-4379-9989-CA6F2CA7DAC9}.Debug|x64.Build.0 = Debug|Any CPU - {38087D48-66EF-4379-9989-CA6F2CA7DAC9}.Debug|x86.ActiveCfg = Debug|Any CPU - {38087D48-66EF-4379-9989-CA6F2CA7DAC9}.Debug|x86.Build.0 = Debug|Any CPU - {38087D48-66EF-4379-9989-CA6F2CA7DAC9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {38087D48-66EF-4379-9989-CA6F2CA7DAC9}.Release|Any CPU.Build.0 = Release|Any CPU - {38087D48-66EF-4379-9989-CA6F2CA7DAC9}.Release|x64.ActiveCfg = Release|Any CPU - {38087D48-66EF-4379-9989-CA6F2CA7DAC9}.Release|x64.Build.0 = Release|Any CPU - {38087D48-66EF-4379-9989-CA6F2CA7DAC9}.Release|x86.ActiveCfg = Release|Any CPU - {38087D48-66EF-4379-9989-CA6F2CA7DAC9}.Release|x86.Build.0 = Release|Any CPU - {ADECA52F-A04F-4A8F-812E-59A9FBE3EC68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {ADECA52F-A04F-4A8F-812E-59A9FBE3EC68}.Debug|Any CPU.Build.0 = Debug|Any CPU - {ADECA52F-A04F-4A8F-812E-59A9FBE3EC68}.Debug|x64.ActiveCfg = Debug|Any CPU - {ADECA52F-A04F-4A8F-812E-59A9FBE3EC68}.Debug|x64.Build.0 = Debug|Any CPU - {ADECA52F-A04F-4A8F-812E-59A9FBE3EC68}.Debug|x86.ActiveCfg = Debug|Any CPU - {ADECA52F-A04F-4A8F-812E-59A9FBE3EC68}.Debug|x86.Build.0 = Debug|Any CPU - {ADECA52F-A04F-4A8F-812E-59A9FBE3EC68}.Release|Any CPU.ActiveCfg = Release|Any CPU - {ADECA52F-A04F-4A8F-812E-59A9FBE3EC68}.Release|Any CPU.Build.0 = Release|Any CPU - {ADECA52F-A04F-4A8F-812E-59A9FBE3EC68}.Release|x64.ActiveCfg = Release|Any CPU - {ADECA52F-A04F-4A8F-812E-59A9FBE3EC68}.Release|x64.Build.0 = Release|Any CPU - {ADECA52F-A04F-4A8F-812E-59A9FBE3EC68}.Release|x86.ActiveCfg = Release|Any CPU - {ADECA52F-A04F-4A8F-812E-59A9FBE3EC68}.Release|x86.Build.0 = Release|Any CPU - {6AD1E7B2-B9A7-497C-A61D-21C6FCE9F3BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6AD1E7B2-B9A7-497C-A61D-21C6FCE9F3BC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6AD1E7B2-B9A7-497C-A61D-21C6FCE9F3BC}.Debug|x64.ActiveCfg = Debug|Any CPU - {6AD1E7B2-B9A7-497C-A61D-21C6FCE9F3BC}.Debug|x64.Build.0 = Debug|Any CPU - {6AD1E7B2-B9A7-497C-A61D-21C6FCE9F3BC}.Debug|x86.ActiveCfg = Debug|Any CPU - {6AD1E7B2-B9A7-497C-A61D-21C6FCE9F3BC}.Debug|x86.Build.0 = Debug|Any CPU - {6AD1E7B2-B9A7-497C-A61D-21C6FCE9F3BC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6AD1E7B2-B9A7-497C-A61D-21C6FCE9F3BC}.Release|Any CPU.Build.0 = Release|Any CPU - {6AD1E7B2-B9A7-497C-A61D-21C6FCE9F3BC}.Release|x64.ActiveCfg = Release|Any CPU - {6AD1E7B2-B9A7-497C-A61D-21C6FCE9F3BC}.Release|x64.Build.0 = Release|Any CPU - {6AD1E7B2-B9A7-497C-A61D-21C6FCE9F3BC}.Release|x86.ActiveCfg = Release|Any CPU - {6AD1E7B2-B9A7-497C-A61D-21C6FCE9F3BC}.Release|x86.Build.0 = Release|Any CPU - {097E5E27-6233-45BC-9C76-81C9ECF34DE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {097E5E27-6233-45BC-9C76-81C9ECF34DE2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {097E5E27-6233-45BC-9C76-81C9ECF34DE2}.Debug|x64.ActiveCfg = Debug|Any CPU - {097E5E27-6233-45BC-9C76-81C9ECF34DE2}.Debug|x64.Build.0 = Debug|Any CPU - {097E5E27-6233-45BC-9C76-81C9ECF34DE2}.Debug|x86.ActiveCfg = Debug|Any CPU - {097E5E27-6233-45BC-9C76-81C9ECF34DE2}.Debug|x86.Build.0 = Debug|Any CPU - {097E5E27-6233-45BC-9C76-81C9ECF34DE2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {097E5E27-6233-45BC-9C76-81C9ECF34DE2}.Release|Any CPU.Build.0 = Release|Any CPU - {097E5E27-6233-45BC-9C76-81C9ECF34DE2}.Release|x64.ActiveCfg = Release|Any CPU - {097E5E27-6233-45BC-9C76-81C9ECF34DE2}.Release|x64.Build.0 = Release|Any CPU - {097E5E27-6233-45BC-9C76-81C9ECF34DE2}.Release|x86.ActiveCfg = Release|Any CPU - {097E5E27-6233-45BC-9C76-81C9ECF34DE2}.Release|x86.Build.0 = Release|Any CPU - {5F006E2E-82A2-4696-81DF-DF7501622BFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5F006E2E-82A2-4696-81DF-DF7501622BFE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5F006E2E-82A2-4696-81DF-DF7501622BFE}.Debug|x64.ActiveCfg = Debug|Any CPU - {5F006E2E-82A2-4696-81DF-DF7501622BFE}.Debug|x64.Build.0 = Debug|Any CPU - {5F006E2E-82A2-4696-81DF-DF7501622BFE}.Debug|x86.ActiveCfg = Debug|Any CPU - {5F006E2E-82A2-4696-81DF-DF7501622BFE}.Debug|x86.Build.0 = Debug|Any CPU - {5F006E2E-82A2-4696-81DF-DF7501622BFE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5F006E2E-82A2-4696-81DF-DF7501622BFE}.Release|Any CPU.Build.0 = Release|Any CPU - {5F006E2E-82A2-4696-81DF-DF7501622BFE}.Release|x64.ActiveCfg = Release|Any CPU - {5F006E2E-82A2-4696-81DF-DF7501622BFE}.Release|x64.Build.0 = Release|Any CPU - {5F006E2E-82A2-4696-81DF-DF7501622BFE}.Release|x86.ActiveCfg = Release|Any CPU - {5F006E2E-82A2-4696-81DF-DF7501622BFE}.Release|x86.Build.0 = Release|Any CPU - {302CEFC1-3011-4B2A-B443-EA6FA0C0B4FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {302CEFC1-3011-4B2A-B443-EA6FA0C0B4FD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {302CEFC1-3011-4B2A-B443-EA6FA0C0B4FD}.Debug|x64.ActiveCfg = Debug|Any CPU - {302CEFC1-3011-4B2A-B443-EA6FA0C0B4FD}.Debug|x64.Build.0 = Debug|Any CPU - {302CEFC1-3011-4B2A-B443-EA6FA0C0B4FD}.Debug|x86.ActiveCfg = Debug|Any CPU - {302CEFC1-3011-4B2A-B443-EA6FA0C0B4FD}.Debug|x86.Build.0 = Debug|Any CPU - {302CEFC1-3011-4B2A-B443-EA6FA0C0B4FD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {302CEFC1-3011-4B2A-B443-EA6FA0C0B4FD}.Release|Any CPU.Build.0 = Release|Any CPU - {302CEFC1-3011-4B2A-B443-EA6FA0C0B4FD}.Release|x64.ActiveCfg = Release|Any CPU - {302CEFC1-3011-4B2A-B443-EA6FA0C0B4FD}.Release|x64.Build.0 = Release|Any CPU - {302CEFC1-3011-4B2A-B443-EA6FA0C0B4FD}.Release|x86.ActiveCfg = Release|Any CPU - {302CEFC1-3011-4B2A-B443-EA6FA0C0B4FD}.Release|x86.Build.0 = Release|Any CPU - {313955BB-513D-43BD-9367-938635B9AC9A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {313955BB-513D-43BD-9367-938635B9AC9A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {313955BB-513D-43BD-9367-938635B9AC9A}.Debug|x64.ActiveCfg = Debug|Any CPU - {313955BB-513D-43BD-9367-938635B9AC9A}.Debug|x64.Build.0 = Debug|Any CPU - {313955BB-513D-43BD-9367-938635B9AC9A}.Debug|x86.ActiveCfg = Debug|Any CPU - {313955BB-513D-43BD-9367-938635B9AC9A}.Debug|x86.Build.0 = Debug|Any CPU - {313955BB-513D-43BD-9367-938635B9AC9A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {313955BB-513D-43BD-9367-938635B9AC9A}.Release|Any CPU.Build.0 = Release|Any CPU - {313955BB-513D-43BD-9367-938635B9AC9A}.Release|x64.ActiveCfg = Release|Any CPU - {313955BB-513D-43BD-9367-938635B9AC9A}.Release|x64.Build.0 = Release|Any CPU - {313955BB-513D-43BD-9367-938635B9AC9A}.Release|x86.ActiveCfg = Release|Any CPU - {313955BB-513D-43BD-9367-938635B9AC9A}.Release|x86.Build.0 = Release|Any CPU - {17A3F4FC-4BE8-4865-BBD3-50116CE7599B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {17A3F4FC-4BE8-4865-BBD3-50116CE7599B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {17A3F4FC-4BE8-4865-BBD3-50116CE7599B}.Debug|x64.ActiveCfg = Debug|Any CPU - {17A3F4FC-4BE8-4865-BBD3-50116CE7599B}.Debug|x64.Build.0 = Debug|Any CPU - {17A3F4FC-4BE8-4865-BBD3-50116CE7599B}.Debug|x86.ActiveCfg = Debug|Any CPU - {17A3F4FC-4BE8-4865-BBD3-50116CE7599B}.Debug|x86.Build.0 = Debug|Any CPU - {17A3F4FC-4BE8-4865-BBD3-50116CE7599B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {17A3F4FC-4BE8-4865-BBD3-50116CE7599B}.Release|Any CPU.Build.0 = Release|Any CPU - {17A3F4FC-4BE8-4865-BBD3-50116CE7599B}.Release|x64.ActiveCfg = Release|Any CPU - {17A3F4FC-4BE8-4865-BBD3-50116CE7599B}.Release|x64.Build.0 = Release|Any CPU - {17A3F4FC-4BE8-4865-BBD3-50116CE7599B}.Release|x86.ActiveCfg = Release|Any CPU - {17A3F4FC-4BE8-4865-BBD3-50116CE7599B}.Release|x86.Build.0 = Release|Any CPU - {782CFC81-0B0E-4722-B685-52B3CC137060}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {782CFC81-0B0E-4722-B685-52B3CC137060}.Debug|Any CPU.Build.0 = Debug|Any CPU - {782CFC81-0B0E-4722-B685-52B3CC137060}.Debug|x64.ActiveCfg = Debug|Any CPU - {782CFC81-0B0E-4722-B685-52B3CC137060}.Debug|x64.Build.0 = Debug|Any CPU - {782CFC81-0B0E-4722-B685-52B3CC137060}.Debug|x86.ActiveCfg = Debug|Any CPU - {782CFC81-0B0E-4722-B685-52B3CC137060}.Debug|x86.Build.0 = Debug|Any CPU - {782CFC81-0B0E-4722-B685-52B3CC137060}.Release|Any CPU.ActiveCfg = Release|Any CPU - {782CFC81-0B0E-4722-B685-52B3CC137060}.Release|Any CPU.Build.0 = Release|Any CPU - {782CFC81-0B0E-4722-B685-52B3CC137060}.Release|x64.ActiveCfg = Release|Any CPU - {782CFC81-0B0E-4722-B685-52B3CC137060}.Release|x64.Build.0 = Release|Any CPU - {782CFC81-0B0E-4722-B685-52B3CC137060}.Release|x86.ActiveCfg = Release|Any CPU - {782CFC81-0B0E-4722-B685-52B3CC137060}.Release|x86.Build.0 = Release|Any CPU - {331269B7-C7F6-453F-98FB-D59516C6044E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {331269B7-C7F6-453F-98FB-D59516C6044E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {331269B7-C7F6-453F-98FB-D59516C6044E}.Debug|x64.ActiveCfg = Debug|Any CPU - {331269B7-C7F6-453F-98FB-D59516C6044E}.Debug|x64.Build.0 = Debug|Any CPU - {331269B7-C7F6-453F-98FB-D59516C6044E}.Debug|x86.ActiveCfg = Debug|Any CPU - {331269B7-C7F6-453F-98FB-D59516C6044E}.Debug|x86.Build.0 = Debug|Any CPU - {331269B7-C7F6-453F-98FB-D59516C6044E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {331269B7-C7F6-453F-98FB-D59516C6044E}.Release|Any CPU.Build.0 = Release|Any CPU - {331269B7-C7F6-453F-98FB-D59516C6044E}.Release|x64.ActiveCfg = Release|Any CPU - {331269B7-C7F6-453F-98FB-D59516C6044E}.Release|x64.Build.0 = Release|Any CPU - {331269B7-C7F6-453F-98FB-D59516C6044E}.Release|x86.ActiveCfg = Release|Any CPU - {331269B7-C7F6-453F-98FB-D59516C6044E}.Release|x86.Build.0 = Release|Any CPU - {678455CA-F4F2-4285-B414-E220026C4AA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {678455CA-F4F2-4285-B414-E220026C4AA7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {678455CA-F4F2-4285-B414-E220026C4AA7}.Debug|x64.ActiveCfg = Debug|Any CPU - {678455CA-F4F2-4285-B414-E220026C4AA7}.Debug|x64.Build.0 = Debug|Any CPU - {678455CA-F4F2-4285-B414-E220026C4AA7}.Debug|x86.ActiveCfg = Debug|Any CPU - {678455CA-F4F2-4285-B414-E220026C4AA7}.Debug|x86.Build.0 = Debug|Any CPU - {678455CA-F4F2-4285-B414-E220026C4AA7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {678455CA-F4F2-4285-B414-E220026C4AA7}.Release|Any CPU.Build.0 = Release|Any CPU - {678455CA-F4F2-4285-B414-E220026C4AA7}.Release|x64.ActiveCfg = Release|Any CPU - {678455CA-F4F2-4285-B414-E220026C4AA7}.Release|x64.Build.0 = Release|Any CPU - {678455CA-F4F2-4285-B414-E220026C4AA7}.Release|x86.ActiveCfg = Release|Any CPU - {678455CA-F4F2-4285-B414-E220026C4AA7}.Release|x86.Build.0 = Release|Any CPU - {45B91ECD-3F16-401F-BA6F-DE4E42661EAC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {45B91ECD-3F16-401F-BA6F-DE4E42661EAC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {45B91ECD-3F16-401F-BA6F-DE4E42661EAC}.Debug|x64.ActiveCfg = Debug|Any CPU - {45B91ECD-3F16-401F-BA6F-DE4E42661EAC}.Debug|x64.Build.0 = Debug|Any CPU - {45B91ECD-3F16-401F-BA6F-DE4E42661EAC}.Debug|x86.ActiveCfg = Debug|Any CPU - {45B91ECD-3F16-401F-BA6F-DE4E42661EAC}.Debug|x86.Build.0 = Debug|Any CPU - {45B91ECD-3F16-401F-BA6F-DE4E42661EAC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {45B91ECD-3F16-401F-BA6F-DE4E42661EAC}.Release|Any CPU.Build.0 = Release|Any CPU - {45B91ECD-3F16-401F-BA6F-DE4E42661EAC}.Release|x64.ActiveCfg = Release|Any CPU - {45B91ECD-3F16-401F-BA6F-DE4E42661EAC}.Release|x64.Build.0 = Release|Any CPU - {45B91ECD-3F16-401F-BA6F-DE4E42661EAC}.Release|x86.ActiveCfg = Release|Any CPU - {45B91ECD-3F16-401F-BA6F-DE4E42661EAC}.Release|x86.Build.0 = Release|Any CPU - {50300F25-6B64-4869-9684-CB14D44E468A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {50300F25-6B64-4869-9684-CB14D44E468A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {50300F25-6B64-4869-9684-CB14D44E468A}.Debug|x64.ActiveCfg = Debug|Any CPU - {50300F25-6B64-4869-9684-CB14D44E468A}.Debug|x64.Build.0 = Debug|Any CPU - {50300F25-6B64-4869-9684-CB14D44E468A}.Debug|x86.ActiveCfg = Debug|Any CPU - {50300F25-6B64-4869-9684-CB14D44E468A}.Debug|x86.Build.0 = Debug|Any CPU - {50300F25-6B64-4869-9684-CB14D44E468A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {50300F25-6B64-4869-9684-CB14D44E468A}.Release|Any CPU.Build.0 = Release|Any CPU - {50300F25-6B64-4869-9684-CB14D44E468A}.Release|x64.ActiveCfg = Release|Any CPU - {50300F25-6B64-4869-9684-CB14D44E468A}.Release|x64.Build.0 = Release|Any CPU - {50300F25-6B64-4869-9684-CB14D44E468A}.Release|x86.ActiveCfg = Release|Any CPU - {50300F25-6B64-4869-9684-CB14D44E468A}.Release|x86.Build.0 = Release|Any CPU - {1FAB5D02-237C-4B9C-B820-2EB7C3B6E63A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1FAB5D02-237C-4B9C-B820-2EB7C3B6E63A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1FAB5D02-237C-4B9C-B820-2EB7C3B6E63A}.Debug|Any CPU.Deploy.0 = Debug|Any CPU - {1FAB5D02-237C-4B9C-B820-2EB7C3B6E63A}.Debug|x64.ActiveCfg = Debug|x64 - {1FAB5D02-237C-4B9C-B820-2EB7C3B6E63A}.Debug|x64.Build.0 = Debug|x64 - {1FAB5D02-237C-4B9C-B820-2EB7C3B6E63A}.Debug|x64.Deploy.0 = Debug|x64 - {1FAB5D02-237C-4B9C-B820-2EB7C3B6E63A}.Debug|x86.ActiveCfg = Debug|x86 - {1FAB5D02-237C-4B9C-B820-2EB7C3B6E63A}.Debug|x86.Build.0 = Debug|x86 - {1FAB5D02-237C-4B9C-B820-2EB7C3B6E63A}.Debug|x86.Deploy.0 = Debug|x86 - {1FAB5D02-237C-4B9C-B820-2EB7C3B6E63A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1FAB5D02-237C-4B9C-B820-2EB7C3B6E63A}.Release|Any CPU.Build.0 = Release|Any CPU - {1FAB5D02-237C-4B9C-B820-2EB7C3B6E63A}.Release|Any CPU.Deploy.0 = Release|Any CPU - {1FAB5D02-237C-4B9C-B820-2EB7C3B6E63A}.Release|x64.ActiveCfg = Release|x64 - {1FAB5D02-237C-4B9C-B820-2EB7C3B6E63A}.Release|x64.Build.0 = Release|x64 - {1FAB5D02-237C-4B9C-B820-2EB7C3B6E63A}.Release|x64.Deploy.0 = Release|x64 - {1FAB5D02-237C-4B9C-B820-2EB7C3B6E63A}.Release|x86.ActiveCfg = Release|x86 - {1FAB5D02-237C-4B9C-B820-2EB7C3B6E63A}.Release|x86.Build.0 = Release|x86 - {1FAB5D02-237C-4B9C-B820-2EB7C3B6E63A}.Release|x86.Deploy.0 = Release|x86 - {EB4659EE-9D90-4413-A9E2-301715CAF4EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EB4659EE-9D90-4413-A9E2-301715CAF4EF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EB4659EE-9D90-4413-A9E2-301715CAF4EF}.Debug|x64.ActiveCfg = Debug|Any CPU - {EB4659EE-9D90-4413-A9E2-301715CAF4EF}.Debug|x64.Build.0 = Debug|Any CPU - {EB4659EE-9D90-4413-A9E2-301715CAF4EF}.Debug|x86.ActiveCfg = Debug|Any CPU - {EB4659EE-9D90-4413-A9E2-301715CAF4EF}.Debug|x86.Build.0 = Debug|Any CPU - {EB4659EE-9D90-4413-A9E2-301715CAF4EF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EB4659EE-9D90-4413-A9E2-301715CAF4EF}.Release|Any CPU.Build.0 = Release|Any CPU - {EB4659EE-9D90-4413-A9E2-301715CAF4EF}.Release|x64.ActiveCfg = Release|Any CPU - {EB4659EE-9D90-4413-A9E2-301715CAF4EF}.Release|x64.Build.0 = Release|Any CPU - {EB4659EE-9D90-4413-A9E2-301715CAF4EF}.Release|x86.ActiveCfg = Release|Any CPU - {EB4659EE-9D90-4413-A9E2-301715CAF4EF}.Release|x86.Build.0 = Release|Any CPU - {E5A7F376-432F-44DB-94A7-A14A2D4E5C4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E5A7F376-432F-44DB-94A7-A14A2D4E5C4B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E5A7F376-432F-44DB-94A7-A14A2D4E5C4B}.Debug|x64.ActiveCfg = Debug|Any CPU - {E5A7F376-432F-44DB-94A7-A14A2D4E5C4B}.Debug|x64.Build.0 = Debug|Any CPU - {E5A7F376-432F-44DB-94A7-A14A2D4E5C4B}.Debug|x86.ActiveCfg = Debug|Any CPU - {E5A7F376-432F-44DB-94A7-A14A2D4E5C4B}.Debug|x86.Build.0 = Debug|Any CPU - {E5A7F376-432F-44DB-94A7-A14A2D4E5C4B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E5A7F376-432F-44DB-94A7-A14A2D4E5C4B}.Release|Any CPU.Build.0 = Release|Any CPU - {E5A7F376-432F-44DB-94A7-A14A2D4E5C4B}.Release|x64.ActiveCfg = Release|Any CPU - {E5A7F376-432F-44DB-94A7-A14A2D4E5C4B}.Release|x64.Build.0 = Release|Any CPU - {E5A7F376-432F-44DB-94A7-A14A2D4E5C4B}.Release|x86.ActiveCfg = Release|Any CPU - {E5A7F376-432F-44DB-94A7-A14A2D4E5C4B}.Release|x86.Build.0 = Release|Any CPU - {8CE621E6-B633-4957-8D64-508F54461DF0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8CE621E6-B633-4957-8D64-508F54461DF0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8CE621E6-B633-4957-8D64-508F54461DF0}.Debug|x64.ActiveCfg = Debug|Any CPU - {8CE621E6-B633-4957-8D64-508F54461DF0}.Debug|x64.Build.0 = Debug|Any CPU - {8CE621E6-B633-4957-8D64-508F54461DF0}.Debug|x86.ActiveCfg = Debug|Any CPU - {8CE621E6-B633-4957-8D64-508F54461DF0}.Debug|x86.Build.0 = Debug|Any CPU - {8CE621E6-B633-4957-8D64-508F54461DF0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8CE621E6-B633-4957-8D64-508F54461DF0}.Release|Any CPU.Build.0 = Release|Any CPU - {8CE621E6-B633-4957-8D64-508F54461DF0}.Release|x64.ActiveCfg = Release|Any CPU - {8CE621E6-B633-4957-8D64-508F54461DF0}.Release|x64.Build.0 = Release|Any CPU - {8CE621E6-B633-4957-8D64-508F54461DF0}.Release|x86.ActiveCfg = Release|Any CPU - {8CE621E6-B633-4957-8D64-508F54461DF0}.Release|x86.Build.0 = Release|Any CPU - {4451ED6E-508F-4627-987A-699C19A48DE5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4451ED6E-508F-4627-987A-699C19A48DE5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4451ED6E-508F-4627-987A-699C19A48DE5}.Debug|x64.ActiveCfg = Debug|Any CPU - {4451ED6E-508F-4627-987A-699C19A48DE5}.Debug|x64.Build.0 = Debug|Any CPU - {4451ED6E-508F-4627-987A-699C19A48DE5}.Debug|x86.ActiveCfg = Debug|Any CPU - {4451ED6E-508F-4627-987A-699C19A48DE5}.Debug|x86.Build.0 = Debug|Any CPU - {4451ED6E-508F-4627-987A-699C19A48DE5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4451ED6E-508F-4627-987A-699C19A48DE5}.Release|Any CPU.Build.0 = Release|Any CPU - {4451ED6E-508F-4627-987A-699C19A48DE5}.Release|x64.ActiveCfg = Release|Any CPU - {4451ED6E-508F-4627-987A-699C19A48DE5}.Release|x64.Build.0 = Release|Any CPU - {4451ED6E-508F-4627-987A-699C19A48DE5}.Release|x86.ActiveCfg = Release|Any CPU - {4451ED6E-508F-4627-987A-699C19A48DE5}.Release|x86.Build.0 = Release|Any CPU - {C1BE10FD-E8E1-47C7-94A9-90A24443A3CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C1BE10FD-E8E1-47C7-94A9-90A24443A3CE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C1BE10FD-E8E1-47C7-94A9-90A24443A3CE}.Debug|x64.ActiveCfg = Debug|Any CPU - {C1BE10FD-E8E1-47C7-94A9-90A24443A3CE}.Debug|x64.Build.0 = Debug|Any CPU - {C1BE10FD-E8E1-47C7-94A9-90A24443A3CE}.Debug|x86.ActiveCfg = Debug|Any CPU - {C1BE10FD-E8E1-47C7-94A9-90A24443A3CE}.Debug|x86.Build.0 = Debug|Any CPU - {C1BE10FD-E8E1-47C7-94A9-90A24443A3CE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C1BE10FD-E8E1-47C7-94A9-90A24443A3CE}.Release|Any CPU.Build.0 = Release|Any CPU - {C1BE10FD-E8E1-47C7-94A9-90A24443A3CE}.Release|x64.ActiveCfg = Release|Any CPU - {C1BE10FD-E8E1-47C7-94A9-90A24443A3CE}.Release|x64.Build.0 = Release|Any CPU - {C1BE10FD-E8E1-47C7-94A9-90A24443A3CE}.Release|x86.ActiveCfg = Release|Any CPU - {C1BE10FD-E8E1-47C7-94A9-90A24443A3CE}.Release|x86.Build.0 = Release|Any CPU - {934740D8-9853-4EF7-AD9E-1A090329E70E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {934740D8-9853-4EF7-AD9E-1A090329E70E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {934740D8-9853-4EF7-AD9E-1A090329E70E}.Debug|x64.ActiveCfg = Debug|Any CPU - {934740D8-9853-4EF7-AD9E-1A090329E70E}.Debug|x64.Build.0 = Debug|Any CPU - {934740D8-9853-4EF7-AD9E-1A090329E70E}.Debug|x86.ActiveCfg = Debug|Any CPU - {934740D8-9853-4EF7-AD9E-1A090329E70E}.Debug|x86.Build.0 = Debug|Any CPU - {934740D8-9853-4EF7-AD9E-1A090329E70E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {934740D8-9853-4EF7-AD9E-1A090329E70E}.Release|Any CPU.Build.0 = Release|Any CPU - {934740D8-9853-4EF7-AD9E-1A090329E70E}.Release|x64.ActiveCfg = Release|Any CPU - {934740D8-9853-4EF7-AD9E-1A090329E70E}.Release|x64.Build.0 = Release|Any CPU - {934740D8-9853-4EF7-AD9E-1A090329E70E}.Release|x86.ActiveCfg = Release|Any CPU - {934740D8-9853-4EF7-AD9E-1A090329E70E}.Release|x86.Build.0 = Release|Any CPU - {9CFD42DE-61AE-4FD0-BBAD-A85807025C19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9CFD42DE-61AE-4FD0-BBAD-A85807025C19}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9CFD42DE-61AE-4FD0-BBAD-A85807025C19}.Debug|x64.ActiveCfg = Debug|Any CPU - {9CFD42DE-61AE-4FD0-BBAD-A85807025C19}.Debug|x64.Build.0 = Debug|Any CPU - {9CFD42DE-61AE-4FD0-BBAD-A85807025C19}.Debug|x86.ActiveCfg = Debug|Any CPU - {9CFD42DE-61AE-4FD0-BBAD-A85807025C19}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9CFD42DE-61AE-4FD0-BBAD-A85807025C19}.Release|Any CPU.Build.0 = Release|Any CPU - {9CFD42DE-61AE-4FD0-BBAD-A85807025C19}.Release|x64.ActiveCfg = Release|Any CPU - {9CFD42DE-61AE-4FD0-BBAD-A85807025C19}.Release|x64.Build.0 = Release|Any CPU - {9CFD42DE-61AE-4FD0-BBAD-A85807025C19}.Release|x86.ActiveCfg = Release|Any CPU - {9CFD42DE-61AE-4FD0-BBAD-A85807025C19}.Release|x86.Build.0 = Release|Any CPU - {1521D741-3C9A-47D9-8CC2-062B881AA1D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1521D741-3C9A-47D9-8CC2-062B881AA1D1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1521D741-3C9A-47D9-8CC2-062B881AA1D1}.Debug|x64.ActiveCfg = Debug|Any CPU - {1521D741-3C9A-47D9-8CC2-062B881AA1D1}.Debug|x64.Build.0 = Debug|Any CPU - {1521D741-3C9A-47D9-8CC2-062B881AA1D1}.Debug|x86.ActiveCfg = Debug|Any CPU - {1521D741-3C9A-47D9-8CC2-062B881AA1D1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1521D741-3C9A-47D9-8CC2-062B881AA1D1}.Release|Any CPU.Build.0 = Release|Any CPU - {1521D741-3C9A-47D9-8CC2-062B881AA1D1}.Release|x64.ActiveCfg = Release|Any CPU - {1521D741-3C9A-47D9-8CC2-062B881AA1D1}.Release|x64.Build.0 = Release|Any CPU - {1521D741-3C9A-47D9-8CC2-062B881AA1D1}.Release|x86.ActiveCfg = Release|Any CPU - {1521D741-3C9A-47D9-8CC2-062B881AA1D1}.Release|x86.Build.0 = Release|Any CPU - {C746B9BF-0DE6-4D3A-B537-EC132486C76A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C746B9BF-0DE6-4D3A-B537-EC132486C76A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C746B9BF-0DE6-4D3A-B537-EC132486C76A}.Debug|x64.ActiveCfg = Debug|Any CPU - {C746B9BF-0DE6-4D3A-B537-EC132486C76A}.Debug|x64.Build.0 = Debug|Any CPU - {C746B9BF-0DE6-4D3A-B537-EC132486C76A}.Debug|x86.ActiveCfg = Debug|Any CPU - {C746B9BF-0DE6-4D3A-B537-EC132486C76A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C746B9BF-0DE6-4D3A-B537-EC132486C76A}.Release|Any CPU.Build.0 = Release|Any CPU - {C746B9BF-0DE6-4D3A-B537-EC132486C76A}.Release|x64.ActiveCfg = Release|Any CPU - {C746B9BF-0DE6-4D3A-B537-EC132486C76A}.Release|x64.Build.0 = Release|Any CPU - {C746B9BF-0DE6-4D3A-B537-EC132486C76A}.Release|x86.ActiveCfg = Release|Any CPU - {C746B9BF-0DE6-4D3A-B537-EC132486C76A}.Release|x86.Build.0 = Release|Any CPU - {8075BE2B-9D61-42D9-B099-F5854AEA4C86}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8075BE2B-9D61-42D9-B099-F5854AEA4C86}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8075BE2B-9D61-42D9-B099-F5854AEA4C86}.Debug|x64.ActiveCfg = Debug|Any CPU - {8075BE2B-9D61-42D9-B099-F5854AEA4C86}.Debug|x64.Build.0 = Debug|Any CPU - {8075BE2B-9D61-42D9-B099-F5854AEA4C86}.Debug|x86.ActiveCfg = Debug|Any CPU - {8075BE2B-9D61-42D9-B099-F5854AEA4C86}.Debug|x86.Build.0 = Debug|Any CPU - {8075BE2B-9D61-42D9-B099-F5854AEA4C86}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8075BE2B-9D61-42D9-B099-F5854AEA4C86}.Release|Any CPU.Build.0 = Release|Any CPU - {8075BE2B-9D61-42D9-B099-F5854AEA4C86}.Release|x64.ActiveCfg = Release|Any CPU - {8075BE2B-9D61-42D9-B099-F5854AEA4C86}.Release|x64.Build.0 = Release|Any CPU - {8075BE2B-9D61-42D9-B099-F5854AEA4C86}.Release|x86.ActiveCfg = Release|Any CPU - {8075BE2B-9D61-42D9-B099-F5854AEA4C86}.Release|x86.Build.0 = Release|Any CPU - {3046E8E0-2116-4FA2-B4EC-9BAAA181069C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3046E8E0-2116-4FA2-B4EC-9BAAA181069C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3046E8E0-2116-4FA2-B4EC-9BAAA181069C}.Debug|x64.ActiveCfg = Debug|Any CPU - {3046E8E0-2116-4FA2-B4EC-9BAAA181069C}.Debug|x64.Build.0 = Debug|Any CPU - {3046E8E0-2116-4FA2-B4EC-9BAAA181069C}.Debug|x86.ActiveCfg = Debug|Any CPU - {3046E8E0-2116-4FA2-B4EC-9BAAA181069C}.Debug|x86.Build.0 = Debug|Any CPU - {3046E8E0-2116-4FA2-B4EC-9BAAA181069C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3046E8E0-2116-4FA2-B4EC-9BAAA181069C}.Release|Any CPU.Build.0 = Release|Any CPU - {3046E8E0-2116-4FA2-B4EC-9BAAA181069C}.Release|x64.ActiveCfg = Release|Any CPU - {3046E8E0-2116-4FA2-B4EC-9BAAA181069C}.Release|x64.Build.0 = Release|Any CPU - {3046E8E0-2116-4FA2-B4EC-9BAAA181069C}.Release|x86.ActiveCfg = Release|Any CPU - {3046E8E0-2116-4FA2-B4EC-9BAAA181069C}.Release|x86.Build.0 = Release|Any CPU - {B352F52C-5091-4857-9BA8-3CD1221FC447}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B352F52C-5091-4857-9BA8-3CD1221FC447}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B352F52C-5091-4857-9BA8-3CD1221FC447}.Debug|x64.ActiveCfg = Debug|Any CPU - {B352F52C-5091-4857-9BA8-3CD1221FC447}.Debug|x64.Build.0 = Debug|Any CPU - {B352F52C-5091-4857-9BA8-3CD1221FC447}.Debug|x86.ActiveCfg = Debug|Any CPU - {B352F52C-5091-4857-9BA8-3CD1221FC447}.Debug|x86.Build.0 = Debug|Any CPU - {B352F52C-5091-4857-9BA8-3CD1221FC447}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B352F52C-5091-4857-9BA8-3CD1221FC447}.Release|Any CPU.Build.0 = Release|Any CPU - {B352F52C-5091-4857-9BA8-3CD1221FC447}.Release|x64.ActiveCfg = Release|Any CPU - {B352F52C-5091-4857-9BA8-3CD1221FC447}.Release|x64.Build.0 = Release|Any CPU - {B352F52C-5091-4857-9BA8-3CD1221FC447}.Release|x86.ActiveCfg = Release|Any CPU - {B352F52C-5091-4857-9BA8-3CD1221FC447}.Release|x86.Build.0 = Release|Any CPU - {C403C0EA-AB5D-4769-8D6D-C507BCBD2684}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C403C0EA-AB5D-4769-8D6D-C507BCBD2684}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C403C0EA-AB5D-4769-8D6D-C507BCBD2684}.Debug|x64.ActiveCfg = Debug|Any CPU - {C403C0EA-AB5D-4769-8D6D-C507BCBD2684}.Debug|x64.Build.0 = Debug|Any CPU - {C403C0EA-AB5D-4769-8D6D-C507BCBD2684}.Debug|x86.ActiveCfg = Debug|Any CPU - {C403C0EA-AB5D-4769-8D6D-C507BCBD2684}.Debug|x86.Build.0 = Debug|Any CPU - {C403C0EA-AB5D-4769-8D6D-C507BCBD2684}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C403C0EA-AB5D-4769-8D6D-C507BCBD2684}.Release|Any CPU.Build.0 = Release|Any CPU - {C403C0EA-AB5D-4769-8D6D-C507BCBD2684}.Release|x64.ActiveCfg = Release|Any CPU - {C403C0EA-AB5D-4769-8D6D-C507BCBD2684}.Release|x64.Build.0 = Release|Any CPU - {C403C0EA-AB5D-4769-8D6D-C507BCBD2684}.Release|x86.ActiveCfg = Release|Any CPU - {C403C0EA-AB5D-4769-8D6D-C507BCBD2684}.Release|x86.Build.0 = Release|Any CPU - {6ECDFE7A-CF7C-478B-922F-0CA23BE51A58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6ECDFE7A-CF7C-478B-922F-0CA23BE51A58}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6ECDFE7A-CF7C-478B-922F-0CA23BE51A58}.Debug|x64.ActiveCfg = Debug|Any CPU - {6ECDFE7A-CF7C-478B-922F-0CA23BE51A58}.Debug|x64.Build.0 = Debug|Any CPU - {6ECDFE7A-CF7C-478B-922F-0CA23BE51A58}.Debug|x86.ActiveCfg = Debug|Any CPU - {6ECDFE7A-CF7C-478B-922F-0CA23BE51A58}.Debug|x86.Build.0 = Debug|Any CPU - {6ECDFE7A-CF7C-478B-922F-0CA23BE51A58}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6ECDFE7A-CF7C-478B-922F-0CA23BE51A58}.Release|Any CPU.Build.0 = Release|Any CPU - {6ECDFE7A-CF7C-478B-922F-0CA23BE51A58}.Release|x64.ActiveCfg = Release|Any CPU - {6ECDFE7A-CF7C-478B-922F-0CA23BE51A58}.Release|x64.Build.0 = Release|Any CPU - {6ECDFE7A-CF7C-478B-922F-0CA23BE51A58}.Release|x86.ActiveCfg = Release|Any CPU - {6ECDFE7A-CF7C-478B-922F-0CA23BE51A58}.Release|x86.Build.0 = Release|Any CPU - {58C7C38B-63B8-485B-9051-7A804E7DC270}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {58C7C38B-63B8-485B-9051-7A804E7DC270}.Debug|Any CPU.Build.0 = Debug|Any CPU - {58C7C38B-63B8-485B-9051-7A804E7DC270}.Debug|x64.ActiveCfg = Debug|Any CPU - {58C7C38B-63B8-485B-9051-7A804E7DC270}.Debug|x64.Build.0 = Debug|Any CPU - {58C7C38B-63B8-485B-9051-7A804E7DC270}.Debug|x86.ActiveCfg = Debug|Any CPU - {58C7C38B-63B8-485B-9051-7A804E7DC270}.Debug|x86.Build.0 = Debug|Any CPU - {58C7C38B-63B8-485B-9051-7A804E7DC270}.Release|Any CPU.ActiveCfg = Release|Any CPU - {58C7C38B-63B8-485B-9051-7A804E7DC270}.Release|Any CPU.Build.0 = Release|Any CPU - {58C7C38B-63B8-485B-9051-7A804E7DC270}.Release|x64.ActiveCfg = Release|Any CPU - {58C7C38B-63B8-485B-9051-7A804E7DC270}.Release|x64.Build.0 = Release|Any CPU - {58C7C38B-63B8-485B-9051-7A804E7DC270}.Release|x86.ActiveCfg = Release|Any CPU - {58C7C38B-63B8-485B-9051-7A804E7DC270}.Release|x86.Build.0 = Release|Any CPU - {5323002C-F5BF-40A2-9732-23F9E25EB8AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5323002C-F5BF-40A2-9732-23F9E25EB8AA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5323002C-F5BF-40A2-9732-23F9E25EB8AA}.Debug|x64.ActiveCfg = Debug|Any CPU - {5323002C-F5BF-40A2-9732-23F9E25EB8AA}.Debug|x64.Build.0 = Debug|Any CPU - {5323002C-F5BF-40A2-9732-23F9E25EB8AA}.Debug|x86.ActiveCfg = Debug|Any CPU - {5323002C-F5BF-40A2-9732-23F9E25EB8AA}.Debug|x86.Build.0 = Debug|Any CPU - {5323002C-F5BF-40A2-9732-23F9E25EB8AA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5323002C-F5BF-40A2-9732-23F9E25EB8AA}.Release|Any CPU.Build.0 = Release|Any CPU - {5323002C-F5BF-40A2-9732-23F9E25EB8AA}.Release|x64.ActiveCfg = Release|Any CPU - {5323002C-F5BF-40A2-9732-23F9E25EB8AA}.Release|x64.Build.0 = Release|Any CPU - {5323002C-F5BF-40A2-9732-23F9E25EB8AA}.Release|x86.ActiveCfg = Release|Any CPU - {5323002C-F5BF-40A2-9732-23F9E25EB8AA}.Release|x86.Build.0 = Release|Any CPU - {77A8D383-EFCA-44E2-BFF0-F179B245E4A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {77A8D383-EFCA-44E2-BFF0-F179B245E4A9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {77A8D383-EFCA-44E2-BFF0-F179B245E4A9}.Debug|x64.ActiveCfg = Debug|Any CPU - {77A8D383-EFCA-44E2-BFF0-F179B245E4A9}.Debug|x64.Build.0 = Debug|Any CPU - {77A8D383-EFCA-44E2-BFF0-F179B245E4A9}.Debug|x86.ActiveCfg = Debug|Any CPU - {77A8D383-EFCA-44E2-BFF0-F179B245E4A9}.Debug|x86.Build.0 = Debug|Any CPU - {77A8D383-EFCA-44E2-BFF0-F179B245E4A9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {77A8D383-EFCA-44E2-BFF0-F179B245E4A9}.Release|Any CPU.Build.0 = Release|Any CPU - {77A8D383-EFCA-44E2-BFF0-F179B245E4A9}.Release|x64.ActiveCfg = Release|Any CPU - {77A8D383-EFCA-44E2-BFF0-F179B245E4A9}.Release|x64.Build.0 = Release|Any CPU - {77A8D383-EFCA-44E2-BFF0-F179B245E4A9}.Release|x86.ActiveCfg = Release|Any CPU - {77A8D383-EFCA-44E2-BFF0-F179B245E4A9}.Release|x86.Build.0 = Release|Any CPU - {E0B5CE9F-FB29-4873-A434-8D22F22EE84E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E0B5CE9F-FB29-4873-A434-8D22F22EE84E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E0B5CE9F-FB29-4873-A434-8D22F22EE84E}.Debug|x64.ActiveCfg = Debug|Any CPU - {E0B5CE9F-FB29-4873-A434-8D22F22EE84E}.Debug|x64.Build.0 = Debug|Any CPU - {E0B5CE9F-FB29-4873-A434-8D22F22EE84E}.Debug|x86.ActiveCfg = Debug|Any CPU - {E0B5CE9F-FB29-4873-A434-8D22F22EE84E}.Debug|x86.Build.0 = Debug|Any CPU - {E0B5CE9F-FB29-4873-A434-8D22F22EE84E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E0B5CE9F-FB29-4873-A434-8D22F22EE84E}.Release|Any CPU.Build.0 = Release|Any CPU - {E0B5CE9F-FB29-4873-A434-8D22F22EE84E}.Release|x64.ActiveCfg = Release|Any CPU - {E0B5CE9F-FB29-4873-A434-8D22F22EE84E}.Release|x64.Build.0 = Release|Any CPU - {E0B5CE9F-FB29-4873-A434-8D22F22EE84E}.Release|x86.ActiveCfg = Release|Any CPU - {E0B5CE9F-FB29-4873-A434-8D22F22EE84E}.Release|x86.Build.0 = Release|Any CPU - {824E112B-6FD9-4E73-BC0F-7E9FFA089CB2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {824E112B-6FD9-4E73-BC0F-7E9FFA089CB2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {824E112B-6FD9-4E73-BC0F-7E9FFA089CB2}.Debug|x64.ActiveCfg = Debug|Any CPU - {824E112B-6FD9-4E73-BC0F-7E9FFA089CB2}.Debug|x64.Build.0 = Debug|Any CPU - {824E112B-6FD9-4E73-BC0F-7E9FFA089CB2}.Debug|x86.ActiveCfg = Debug|Any CPU - {824E112B-6FD9-4E73-BC0F-7E9FFA089CB2}.Debug|x86.Build.0 = Debug|Any CPU - {824E112B-6FD9-4E73-BC0F-7E9FFA089CB2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {824E112B-6FD9-4E73-BC0F-7E9FFA089CB2}.Release|Any CPU.Build.0 = Release|Any CPU - {824E112B-6FD9-4E73-BC0F-7E9FFA089CB2}.Release|x64.ActiveCfg = Release|Any CPU - {824E112B-6FD9-4E73-BC0F-7E9FFA089CB2}.Release|x64.Build.0 = Release|Any CPU - {824E112B-6FD9-4E73-BC0F-7E9FFA089CB2}.Release|x86.ActiveCfg = Release|Any CPU - {824E112B-6FD9-4E73-BC0F-7E9FFA089CB2}.Release|x86.Build.0 = Release|Any CPU - {B997EAFC-13A1-48EB-8581-B9E3074F7A26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B997EAFC-13A1-48EB-8581-B9E3074F7A26}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B997EAFC-13A1-48EB-8581-B9E3074F7A26}.Debug|x64.ActiveCfg = Debug|Any CPU - {B997EAFC-13A1-48EB-8581-B9E3074F7A26}.Debug|x64.Build.0 = Debug|Any CPU - {B997EAFC-13A1-48EB-8581-B9E3074F7A26}.Debug|x86.ActiveCfg = Debug|Any CPU - {B997EAFC-13A1-48EB-8581-B9E3074F7A26}.Debug|x86.Build.0 = Debug|Any CPU - {B997EAFC-13A1-48EB-8581-B9E3074F7A26}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B997EAFC-13A1-48EB-8581-B9E3074F7A26}.Release|Any CPU.Build.0 = Release|Any CPU - {B997EAFC-13A1-48EB-8581-B9E3074F7A26}.Release|x64.ActiveCfg = Release|Any CPU - {B997EAFC-13A1-48EB-8581-B9E3074F7A26}.Release|x64.Build.0 = Release|Any CPU - {B997EAFC-13A1-48EB-8581-B9E3074F7A26}.Release|x86.ActiveCfg = Release|Any CPU - {B997EAFC-13A1-48EB-8581-B9E3074F7A26}.Release|x86.Build.0 = Release|Any CPU - {47736DBE-538F-4A65-8AD3-3DD803343C81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {47736DBE-538F-4A65-8AD3-3DD803343C81}.Debug|Any CPU.Build.0 = Debug|Any CPU - {47736DBE-538F-4A65-8AD3-3DD803343C81}.Debug|x64.ActiveCfg = Debug|Any CPU - {47736DBE-538F-4A65-8AD3-3DD803343C81}.Debug|x64.Build.0 = Debug|Any CPU - {47736DBE-538F-4A65-8AD3-3DD803343C81}.Debug|x86.ActiveCfg = Debug|Any CPU - {47736DBE-538F-4A65-8AD3-3DD803343C81}.Debug|x86.Build.0 = Debug|Any CPU - {47736DBE-538F-4A65-8AD3-3DD803343C81}.Release|Any CPU.ActiveCfg = Release|Any CPU - {47736DBE-538F-4A65-8AD3-3DD803343C81}.Release|Any CPU.Build.0 = Release|Any CPU - {47736DBE-538F-4A65-8AD3-3DD803343C81}.Release|x64.ActiveCfg = Release|Any CPU - {47736DBE-538F-4A65-8AD3-3DD803343C81}.Release|x64.Build.0 = Release|Any CPU - {47736DBE-538F-4A65-8AD3-3DD803343C81}.Release|x86.ActiveCfg = Release|Any CPU - {47736DBE-538F-4A65-8AD3-3DD803343C81}.Release|x86.Build.0 = Release|Any CPU - {956E7526-FD0A-4E38-AF31-B99D4B1FE17F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {956E7526-FD0A-4E38-AF31-B99D4B1FE17F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {956E7526-FD0A-4E38-AF31-B99D4B1FE17F}.Debug|x64.ActiveCfg = Debug|Any CPU - {956E7526-FD0A-4E38-AF31-B99D4B1FE17F}.Debug|x64.Build.0 = Debug|Any CPU - {956E7526-FD0A-4E38-AF31-B99D4B1FE17F}.Debug|x86.ActiveCfg = Debug|Any CPU - {956E7526-FD0A-4E38-AF31-B99D4B1FE17F}.Debug|x86.Build.0 = Debug|Any CPU - {956E7526-FD0A-4E38-AF31-B99D4B1FE17F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {956E7526-FD0A-4E38-AF31-B99D4B1FE17F}.Release|Any CPU.Build.0 = Release|Any CPU - {956E7526-FD0A-4E38-AF31-B99D4B1FE17F}.Release|x64.ActiveCfg = Release|Any CPU - {956E7526-FD0A-4E38-AF31-B99D4B1FE17F}.Release|x64.Build.0 = Release|Any CPU - {956E7526-FD0A-4E38-AF31-B99D4B1FE17F}.Release|x86.ActiveCfg = Release|Any CPU - {956E7526-FD0A-4E38-AF31-B99D4B1FE17F}.Release|x86.Build.0 = Release|Any CPU - {8B71A10A-B37F-447C-86DE-6460B5159BD0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8B71A10A-B37F-447C-86DE-6460B5159BD0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8B71A10A-B37F-447C-86DE-6460B5159BD0}.Debug|x64.ActiveCfg = Debug|Any CPU - {8B71A10A-B37F-447C-86DE-6460B5159BD0}.Debug|x64.Build.0 = Debug|Any CPU - {8B71A10A-B37F-447C-86DE-6460B5159BD0}.Debug|x86.ActiveCfg = Debug|Any CPU - {8B71A10A-B37F-447C-86DE-6460B5159BD0}.Debug|x86.Build.0 = Debug|Any CPU - {8B71A10A-B37F-447C-86DE-6460B5159BD0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8B71A10A-B37F-447C-86DE-6460B5159BD0}.Release|Any CPU.Build.0 = Release|Any CPU - {8B71A10A-B37F-447C-86DE-6460B5159BD0}.Release|x64.ActiveCfg = Release|Any CPU - {8B71A10A-B37F-447C-86DE-6460B5159BD0}.Release|x64.Build.0 = Release|Any CPU - {8B71A10A-B37F-447C-86DE-6460B5159BD0}.Release|x86.ActiveCfg = Release|Any CPU - {8B71A10A-B37F-447C-86DE-6460B5159BD0}.Release|x86.Build.0 = Release|Any CPU - {92A58FFE-C27A-4C5E-B6EF-0CF4C5C86CD9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {92A58FFE-C27A-4C5E-B6EF-0CF4C5C86CD9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {92A58FFE-C27A-4C5E-B6EF-0CF4C5C86CD9}.Debug|x64.ActiveCfg = Debug|Any CPU - {92A58FFE-C27A-4C5E-B6EF-0CF4C5C86CD9}.Debug|x64.Build.0 = Debug|Any CPU - {92A58FFE-C27A-4C5E-B6EF-0CF4C5C86CD9}.Debug|x86.ActiveCfg = Debug|Any CPU - {92A58FFE-C27A-4C5E-B6EF-0CF4C5C86CD9}.Debug|x86.Build.0 = Debug|Any CPU - {92A58FFE-C27A-4C5E-B6EF-0CF4C5C86CD9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {92A58FFE-C27A-4C5E-B6EF-0CF4C5C86CD9}.Release|Any CPU.Build.0 = Release|Any CPU - {92A58FFE-C27A-4C5E-B6EF-0CF4C5C86CD9}.Release|x64.ActiveCfg = Release|Any CPU - {92A58FFE-C27A-4C5E-B6EF-0CF4C5C86CD9}.Release|x64.Build.0 = Release|Any CPU - {92A58FFE-C27A-4C5E-B6EF-0CF4C5C86CD9}.Release|x86.ActiveCfg = Release|Any CPU - {92A58FFE-C27A-4C5E-B6EF-0CF4C5C86CD9}.Release|x86.Build.0 = Release|Any CPU - {64DAD0ED-C4A5-4460-9559-69CD02BFE134}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {64DAD0ED-C4A5-4460-9559-69CD02BFE134}.Debug|Any CPU.Build.0 = Debug|Any CPU - {64DAD0ED-C4A5-4460-9559-69CD02BFE134}.Debug|x64.ActiveCfg = Debug|Any CPU - {64DAD0ED-C4A5-4460-9559-69CD02BFE134}.Debug|x64.Build.0 = Debug|Any CPU - {64DAD0ED-C4A5-4460-9559-69CD02BFE134}.Debug|x86.ActiveCfg = Debug|Any CPU - {64DAD0ED-C4A5-4460-9559-69CD02BFE134}.Debug|x86.Build.0 = Debug|Any CPU - {64DAD0ED-C4A5-4460-9559-69CD02BFE134}.Release|Any CPU.ActiveCfg = Release|Any CPU - {64DAD0ED-C4A5-4460-9559-69CD02BFE134}.Release|Any CPU.Build.0 = Release|Any CPU - {64DAD0ED-C4A5-4460-9559-69CD02BFE134}.Release|x64.ActiveCfg = Release|Any CPU - {64DAD0ED-C4A5-4460-9559-69CD02BFE134}.Release|x64.Build.0 = Release|Any CPU - {64DAD0ED-C4A5-4460-9559-69CD02BFE134}.Release|x86.ActiveCfg = Release|Any CPU - {64DAD0ED-C4A5-4460-9559-69CD02BFE134}.Release|x86.Build.0 = Release|Any CPU - {5DEBB03B-5502-444A-9E50-E943A18F50D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5DEBB03B-5502-444A-9E50-E943A18F50D1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5DEBB03B-5502-444A-9E50-E943A18F50D1}.Debug|x64.ActiveCfg = Debug|x64 - {5DEBB03B-5502-444A-9E50-E943A18F50D1}.Debug|x64.Build.0 = Debug|x64 - {5DEBB03B-5502-444A-9E50-E943A18F50D1}.Debug|x86.ActiveCfg = Debug|Any CPU - {5DEBB03B-5502-444A-9E50-E943A18F50D1}.Debug|x86.Build.0 = Debug|Any CPU - {5DEBB03B-5502-444A-9E50-E943A18F50D1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5DEBB03B-5502-444A-9E50-E943A18F50D1}.Release|Any CPU.Build.0 = Release|Any CPU - {5DEBB03B-5502-444A-9E50-E943A18F50D1}.Release|x64.ActiveCfg = Release|x64 - {5DEBB03B-5502-444A-9E50-E943A18F50D1}.Release|x64.Build.0 = Release|x64 - {5DEBB03B-5502-444A-9E50-E943A18F50D1}.Release|x86.ActiveCfg = Release|Any CPU - {5DEBB03B-5502-444A-9E50-E943A18F50D1}.Release|x86.Build.0 = Release|Any CPU - {70950A43-0516-4902-B37F-9DE9EDF96FC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {70950A43-0516-4902-B37F-9DE9EDF96FC6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {70950A43-0516-4902-B37F-9DE9EDF96FC6}.Debug|x64.ActiveCfg = Debug|Any CPU - {70950A43-0516-4902-B37F-9DE9EDF96FC6}.Debug|x64.Build.0 = Debug|Any CPU - {70950A43-0516-4902-B37F-9DE9EDF96FC6}.Debug|x86.ActiveCfg = Debug|Any CPU - {70950A43-0516-4902-B37F-9DE9EDF96FC6}.Debug|x86.Build.0 = Debug|Any CPU - {70950A43-0516-4902-B37F-9DE9EDF96FC6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {70950A43-0516-4902-B37F-9DE9EDF96FC6}.Release|Any CPU.Build.0 = Release|Any CPU - {70950A43-0516-4902-B37F-9DE9EDF96FC6}.Release|x64.ActiveCfg = Release|Any CPU - {70950A43-0516-4902-B37F-9DE9EDF96FC6}.Release|x64.Build.0 = Release|Any CPU - {70950A43-0516-4902-B37F-9DE9EDF96FC6}.Release|x86.ActiveCfg = Release|Any CPU - {70950A43-0516-4902-B37F-9DE9EDF96FC6}.Release|x86.Build.0 = Release|Any CPU - {E4A44DBD-9790-4C08-8AAF-C7215E514706}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E4A44DBD-9790-4C08-8AAF-C7215E514706}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E4A44DBD-9790-4C08-8AAF-C7215E514706}.Debug|x64.ActiveCfg = Debug|Any CPU - {E4A44DBD-9790-4C08-8AAF-C7215E514706}.Debug|x64.Build.0 = Debug|Any CPU - {E4A44DBD-9790-4C08-8AAF-C7215E514706}.Debug|x86.ActiveCfg = Debug|Any CPU - {E4A44DBD-9790-4C08-8AAF-C7215E514706}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E4A44DBD-9790-4C08-8AAF-C7215E514706}.Release|Any CPU.Build.0 = Release|Any CPU - {E4A44DBD-9790-4C08-8AAF-C7215E514706}.Release|x64.ActiveCfg = Release|Any CPU - {E4A44DBD-9790-4C08-8AAF-C7215E514706}.Release|x64.Build.0 = Release|Any CPU - {E4A44DBD-9790-4C08-8AAF-C7215E514706}.Release|x86.ActiveCfg = Release|Any CPU - {E4A44DBD-9790-4C08-8AAF-C7215E514706}.Release|x86.Build.0 = Release|Any CPU - {F7051618-E80F-4B53-B97D-D58147224630}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F7051618-E80F-4B53-B97D-D58147224630}.Debug|x64.ActiveCfg = Debug|Any CPU - {F7051618-E80F-4B53-B97D-D58147224630}.Debug|x64.Build.0 = Debug|Any CPU - {F7051618-E80F-4B53-B97D-D58147224630}.Debug|x86.ActiveCfg = Debug|Any CPU - {F7051618-E80F-4B53-B97D-D58147224630}.Debug|x86.Build.0 = Debug|Any CPU - {F7051618-E80F-4B53-B97D-D58147224630}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F7051618-E80F-4B53-B97D-D58147224630}.Release|x64.ActiveCfg = Release|Any CPU - {F7051618-E80F-4B53-B97D-D58147224630}.Release|x64.Build.0 = Release|Any CPU - {F7051618-E80F-4B53-B97D-D58147224630}.Release|x86.ActiveCfg = Release|Any CPU - {F7051618-E80F-4B53-B97D-D58147224630}.Release|x86.Build.0 = Release|Any CPU - {6C01471F-C35B-4390-9C76-F71CD8BD227F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6C01471F-C35B-4390-9C76-F71CD8BD227F}.Debug|x64.ActiveCfg = Debug|Any CPU - {6C01471F-C35B-4390-9C76-F71CD8BD227F}.Debug|x64.Build.0 = Debug|Any CPU - {6C01471F-C35B-4390-9C76-F71CD8BD227F}.Debug|x86.ActiveCfg = Debug|Any CPU - {6C01471F-C35B-4390-9C76-F71CD8BD227F}.Debug|x86.Build.0 = Debug|Any CPU - {6C01471F-C35B-4390-9C76-F71CD8BD227F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6C01471F-C35B-4390-9C76-F71CD8BD227F}.Release|x64.ActiveCfg = Release|Any CPU - {6C01471F-C35B-4390-9C76-F71CD8BD227F}.Release|x64.Build.0 = Release|Any CPU - {6C01471F-C35B-4390-9C76-F71CD8BD227F}.Release|x86.ActiveCfg = Release|Any CPU - {6C01471F-C35B-4390-9C76-F71CD8BD227F}.Release|x86.Build.0 = Release|Any CPU - {D06AB451-D752-48A1-9A35-8AECCAE1AF61}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D06AB451-D752-48A1-9A35-8AECCAE1AF61}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D06AB451-D752-48A1-9A35-8AECCAE1AF61}.Debug|x64.ActiveCfg = Debug|Any CPU - {D06AB451-D752-48A1-9A35-8AECCAE1AF61}.Debug|x64.Build.0 = Debug|Any CPU - {D06AB451-D752-48A1-9A35-8AECCAE1AF61}.Debug|x86.ActiveCfg = Debug|Any CPU - {D06AB451-D752-48A1-9A35-8AECCAE1AF61}.Debug|x86.Build.0 = Debug|Any CPU - {D06AB451-D752-48A1-9A35-8AECCAE1AF61}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D06AB451-D752-48A1-9A35-8AECCAE1AF61}.Release|Any CPU.Build.0 = Release|Any CPU - {D06AB451-D752-48A1-9A35-8AECCAE1AF61}.Release|x64.ActiveCfg = Release|Any CPU - {D06AB451-D752-48A1-9A35-8AECCAE1AF61}.Release|x64.Build.0 = Release|Any CPU - {D06AB451-D752-48A1-9A35-8AECCAE1AF61}.Release|x86.ActiveCfg = Release|Any CPU - {D06AB451-D752-48A1-9A35-8AECCAE1AF61}.Release|x86.Build.0 = Release|Any CPU - {C893DDA9-D185-4C60-AF13-3719474D638A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C893DDA9-D185-4C60-AF13-3719474D638A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C893DDA9-D185-4C60-AF13-3719474D638A}.Debug|x64.ActiveCfg = Debug|Any CPU - {C893DDA9-D185-4C60-AF13-3719474D638A}.Debug|x64.Build.0 = Debug|Any CPU - {C893DDA9-D185-4C60-AF13-3719474D638A}.Debug|x86.ActiveCfg = Debug|Any CPU - {C893DDA9-D185-4C60-AF13-3719474D638A}.Debug|x86.Build.0 = Debug|Any CPU - {C893DDA9-D185-4C60-AF13-3719474D638A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C893DDA9-D185-4C60-AF13-3719474D638A}.Release|Any CPU.Build.0 = Release|Any CPU - {C893DDA9-D185-4C60-AF13-3719474D638A}.Release|x64.ActiveCfg = Release|Any CPU - {C893DDA9-D185-4C60-AF13-3719474D638A}.Release|x64.Build.0 = Release|Any CPU - {C893DDA9-D185-4C60-AF13-3719474D638A}.Release|x86.ActiveCfg = Release|Any CPU - {C893DDA9-D185-4C60-AF13-3719474D638A}.Release|x86.Build.0 = Release|Any CPU - {3C69A73F-3C17-4963-9BAD-69BA7D2FC059}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3C69A73F-3C17-4963-9BAD-69BA7D2FC059}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3C69A73F-3C17-4963-9BAD-69BA7D2FC059}.Debug|x64.ActiveCfg = Debug|Any CPU - {3C69A73F-3C17-4963-9BAD-69BA7D2FC059}.Debug|x64.Build.0 = Debug|Any CPU - {3C69A73F-3C17-4963-9BAD-69BA7D2FC059}.Debug|x86.ActiveCfg = Debug|Any CPU - {3C69A73F-3C17-4963-9BAD-69BA7D2FC059}.Debug|x86.Build.0 = Debug|Any CPU - {3C69A73F-3C17-4963-9BAD-69BA7D2FC059}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3C69A73F-3C17-4963-9BAD-69BA7D2FC059}.Release|Any CPU.Build.0 = Release|Any CPU - {3C69A73F-3C17-4963-9BAD-69BA7D2FC059}.Release|x64.ActiveCfg = Release|Any CPU - {3C69A73F-3C17-4963-9BAD-69BA7D2FC059}.Release|x64.Build.0 = Release|Any CPU - {3C69A73F-3C17-4963-9BAD-69BA7D2FC059}.Release|x86.ActiveCfg = Release|Any CPU - {3C69A73F-3C17-4963-9BAD-69BA7D2FC059}.Release|x86.Build.0 = Release|Any CPU - {8AD99F31-1B31-45CF-A1A2-3BAD6F7BAC00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8AD99F31-1B31-45CF-A1A2-3BAD6F7BAC00}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8AD99F31-1B31-45CF-A1A2-3BAD6F7BAC00}.Debug|x64.ActiveCfg = Debug|Any CPU - {8AD99F31-1B31-45CF-A1A2-3BAD6F7BAC00}.Debug|x64.Build.0 = Debug|Any CPU - {8AD99F31-1B31-45CF-A1A2-3BAD6F7BAC00}.Debug|x86.ActiveCfg = Debug|Any CPU - {8AD99F31-1B31-45CF-A1A2-3BAD6F7BAC00}.Debug|x86.Build.0 = Debug|Any CPU - {8AD99F31-1B31-45CF-A1A2-3BAD6F7BAC00}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8AD99F31-1B31-45CF-A1A2-3BAD6F7BAC00}.Release|Any CPU.Build.0 = Release|Any CPU - {8AD99F31-1B31-45CF-A1A2-3BAD6F7BAC00}.Release|x64.ActiveCfg = Release|Any CPU - {8AD99F31-1B31-45CF-A1A2-3BAD6F7BAC00}.Release|x64.Build.0 = Release|Any CPU - {8AD99F31-1B31-45CF-A1A2-3BAD6F7BAC00}.Release|x86.ActiveCfg = Release|Any CPU - {8AD99F31-1B31-45CF-A1A2-3BAD6F7BAC00}.Release|x86.Build.0 = Release|Any CPU - {CE284858-D665-4B68-B921-419FEBC8159B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CE284858-D665-4B68-B921-419FEBC8159B}.Debug|x64.ActiveCfg = Debug|Any CPU - {CE284858-D665-4B68-B921-419FEBC8159B}.Debug|x64.Build.0 = Debug|Any CPU - {CE284858-D665-4B68-B921-419FEBC8159B}.Debug|x86.ActiveCfg = Debug|Any CPU - {CE284858-D665-4B68-B921-419FEBC8159B}.Debug|x86.Build.0 = Debug|Any CPU - {CE284858-D665-4B68-B921-419FEBC8159B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CE284858-D665-4B68-B921-419FEBC8159B}.Release|x64.ActiveCfg = Release|Any CPU - {CE284858-D665-4B68-B921-419FEBC8159B}.Release|x64.Build.0 = Release|Any CPU - {CE284858-D665-4B68-B921-419FEBC8159B}.Release|x86.ActiveCfg = Release|Any CPU - {CE284858-D665-4B68-B921-419FEBC8159B}.Release|x86.Build.0 = Release|Any CPU - {F47EA32E-29D5-4D2A-849E-29ECDD2A0A83}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F47EA32E-29D5-4D2A-849E-29ECDD2A0A83}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F47EA32E-29D5-4D2A-849E-29ECDD2A0A83}.Debug|x64.ActiveCfg = Debug|Any CPU - {F47EA32E-29D5-4D2A-849E-29ECDD2A0A83}.Debug|x64.Build.0 = Debug|Any CPU - {F47EA32E-29D5-4D2A-849E-29ECDD2A0A83}.Debug|x86.ActiveCfg = Debug|Any CPU - {F47EA32E-29D5-4D2A-849E-29ECDD2A0A83}.Debug|x86.Build.0 = Debug|Any CPU - {F47EA32E-29D5-4D2A-849E-29ECDD2A0A83}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F47EA32E-29D5-4D2A-849E-29ECDD2A0A83}.Release|Any CPU.Build.0 = Release|Any CPU - {F47EA32E-29D5-4D2A-849E-29ECDD2A0A83}.Release|x64.ActiveCfg = Release|Any CPU - {F47EA32E-29D5-4D2A-849E-29ECDD2A0A83}.Release|x64.Build.0 = Release|Any CPU - {F47EA32E-29D5-4D2A-849E-29ECDD2A0A83}.Release|x86.ActiveCfg = Release|Any CPU - {F47EA32E-29D5-4D2A-849E-29ECDD2A0A83}.Release|x86.Build.0 = Release|Any CPU - {BA281A36-2842-48EC-B2A7-93C7C81C5BCC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BA281A36-2842-48EC-B2A7-93C7C81C5BCC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BA281A36-2842-48EC-B2A7-93C7C81C5BCC}.Debug|x64.ActiveCfg = Debug|Any CPU - {BA281A36-2842-48EC-B2A7-93C7C81C5BCC}.Debug|x64.Build.0 = Debug|Any CPU - {BA281A36-2842-48EC-B2A7-93C7C81C5BCC}.Debug|x86.ActiveCfg = Debug|Any CPU - {BA281A36-2842-48EC-B2A7-93C7C81C5BCC}.Debug|x86.Build.0 = Debug|Any CPU - {BA281A36-2842-48EC-B2A7-93C7C81C5BCC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BA281A36-2842-48EC-B2A7-93C7C81C5BCC}.Release|Any CPU.Build.0 = Release|Any CPU - {BA281A36-2842-48EC-B2A7-93C7C81C5BCC}.Release|x64.ActiveCfg = Release|Any CPU - {BA281A36-2842-48EC-B2A7-93C7C81C5BCC}.Release|x64.Build.0 = Release|Any CPU - {BA281A36-2842-48EC-B2A7-93C7C81C5BCC}.Release|x86.ActiveCfg = Release|Any CPU - {BA281A36-2842-48EC-B2A7-93C7C81C5BCC}.Release|x86.Build.0 = Release|Any CPU - {21DF136E-EBE7-449D-8F30-4021AB21F927}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {21DF136E-EBE7-449D-8F30-4021AB21F927}.Debug|Any CPU.Build.0 = Debug|Any CPU - {21DF136E-EBE7-449D-8F30-4021AB21F927}.Debug|x64.ActiveCfg = Debug|Any CPU - {21DF136E-EBE7-449D-8F30-4021AB21F927}.Debug|x64.Build.0 = Debug|Any CPU - {21DF136E-EBE7-449D-8F30-4021AB21F927}.Debug|x86.ActiveCfg = Debug|Any CPU - {21DF136E-EBE7-449D-8F30-4021AB21F927}.Debug|x86.Build.0 = Debug|Any CPU - {21DF136E-EBE7-449D-8F30-4021AB21F927}.Release|Any CPU.ActiveCfg = Release|Any CPU - {21DF136E-EBE7-449D-8F30-4021AB21F927}.Release|Any CPU.Build.0 = Release|Any CPU - {21DF136E-EBE7-449D-8F30-4021AB21F927}.Release|x64.ActiveCfg = Release|Any CPU - {21DF136E-EBE7-449D-8F30-4021AB21F927}.Release|x64.Build.0 = Release|Any CPU - {21DF136E-EBE7-449D-8F30-4021AB21F927}.Release|x86.ActiveCfg = Release|Any CPU - {21DF136E-EBE7-449D-8F30-4021AB21F927}.Release|x86.Build.0 = Release|Any CPU - {A9572C4A-7A90-4779-8BBE-35457C2CA601}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A9572C4A-7A90-4779-8BBE-35457C2CA601}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A9572C4A-7A90-4779-8BBE-35457C2CA601}.Debug|x64.ActiveCfg = Debug|Any CPU - {A9572C4A-7A90-4779-8BBE-35457C2CA601}.Debug|x64.Build.0 = Debug|Any CPU - {A9572C4A-7A90-4779-8BBE-35457C2CA601}.Debug|x86.ActiveCfg = Debug|Any CPU - {A9572C4A-7A90-4779-8BBE-35457C2CA601}.Debug|x86.Build.0 = Debug|Any CPU - {A9572C4A-7A90-4779-8BBE-35457C2CA601}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A9572C4A-7A90-4779-8BBE-35457C2CA601}.Release|Any CPU.Build.0 = Release|Any CPU - {A9572C4A-7A90-4779-8BBE-35457C2CA601}.Release|x64.ActiveCfg = Release|Any CPU - {A9572C4A-7A90-4779-8BBE-35457C2CA601}.Release|x64.Build.0 = Release|Any CPU - {A9572C4A-7A90-4779-8BBE-35457C2CA601}.Release|x86.ActiveCfg = Release|Any CPU - {A9572C4A-7A90-4779-8BBE-35457C2CA601}.Release|x86.Build.0 = Release|Any CPU - {BE575FEA-FA7A-4196-AE0A-6834CE34CE59}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BE575FEA-FA7A-4196-AE0A-6834CE34CE59}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BE575FEA-FA7A-4196-AE0A-6834CE34CE59}.Debug|x64.ActiveCfg = Debug|Any CPU - {BE575FEA-FA7A-4196-AE0A-6834CE34CE59}.Debug|x64.Build.0 = Debug|Any CPU - {BE575FEA-FA7A-4196-AE0A-6834CE34CE59}.Debug|x86.ActiveCfg = Debug|Any CPU - {BE575FEA-FA7A-4196-AE0A-6834CE34CE59}.Debug|x86.Build.0 = Debug|Any CPU - {BE575FEA-FA7A-4196-AE0A-6834CE34CE59}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BE575FEA-FA7A-4196-AE0A-6834CE34CE59}.Release|Any CPU.Build.0 = Release|Any CPU - {BE575FEA-FA7A-4196-AE0A-6834CE34CE59}.Release|x64.ActiveCfg = Release|Any CPU - {BE575FEA-FA7A-4196-AE0A-6834CE34CE59}.Release|x64.Build.0 = Release|Any CPU - {BE575FEA-FA7A-4196-AE0A-6834CE34CE59}.Release|x86.ActiveCfg = Release|Any CPU - {BE575FEA-FA7A-4196-AE0A-6834CE34CE59}.Release|x86.Build.0 = Release|Any CPU - {F99B42FF-45A3-46E8-BE58-EC38C83E06E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F99B42FF-45A3-46E8-BE58-EC38C83E06E4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F99B42FF-45A3-46E8-BE58-EC38C83E06E4}.Debug|x64.ActiveCfg = Debug|Any CPU - {F99B42FF-45A3-46E8-BE58-EC38C83E06E4}.Debug|x64.Build.0 = Debug|Any CPU - {F99B42FF-45A3-46E8-BE58-EC38C83E06E4}.Debug|x86.ActiveCfg = Debug|Any CPU - {F99B42FF-45A3-46E8-BE58-EC38C83E06E4}.Debug|x86.Build.0 = Debug|Any CPU - {F99B42FF-45A3-46E8-BE58-EC38C83E06E4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F99B42FF-45A3-46E8-BE58-EC38C83E06E4}.Release|Any CPU.Build.0 = Release|Any CPU - {F99B42FF-45A3-46E8-BE58-EC38C83E06E4}.Release|x64.ActiveCfg = Release|Any CPU - {F99B42FF-45A3-46E8-BE58-EC38C83E06E4}.Release|x64.Build.0 = Release|Any CPU - {F99B42FF-45A3-46E8-BE58-EC38C83E06E4}.Release|x86.ActiveCfg = Release|Any CPU - {F99B42FF-45A3-46E8-BE58-EC38C83E06E4}.Release|x86.Build.0 = Release|Any CPU - {CE908E26-D36B-4849-BCCA-B98CBFD45B71}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CE908E26-D36B-4849-BCCA-B98CBFD45B71}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CE908E26-D36B-4849-BCCA-B98CBFD45B71}.Debug|x64.ActiveCfg = Debug|Any CPU - {CE908E26-D36B-4849-BCCA-B98CBFD45B71}.Debug|x64.Build.0 = Debug|Any CPU - {CE908E26-D36B-4849-BCCA-B98CBFD45B71}.Debug|x86.ActiveCfg = Debug|Any CPU - {CE908E26-D36B-4849-BCCA-B98CBFD45B71}.Debug|x86.Build.0 = Debug|Any CPU - {CE908E26-D36B-4849-BCCA-B98CBFD45B71}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CE908E26-D36B-4849-BCCA-B98CBFD45B71}.Release|Any CPU.Build.0 = Release|Any CPU - {CE908E26-D36B-4849-BCCA-B98CBFD45B71}.Release|x64.ActiveCfg = Release|Any CPU - {CE908E26-D36B-4849-BCCA-B98CBFD45B71}.Release|x64.Build.0 = Release|Any CPU - {CE908E26-D36B-4849-BCCA-B98CBFD45B71}.Release|x86.ActiveCfg = Release|Any CPU - {CE908E26-D36B-4849-BCCA-B98CBFD45B71}.Release|x86.Build.0 = Release|Any CPU - {4DB8DFA1-82F0-4585-BC1C-32AB93A4F928}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4DB8DFA1-82F0-4585-BC1C-32AB93A4F928}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4DB8DFA1-82F0-4585-BC1C-32AB93A4F928}.Debug|x64.ActiveCfg = Debug|Any CPU - {4DB8DFA1-82F0-4585-BC1C-32AB93A4F928}.Debug|x64.Build.0 = Debug|Any CPU - {4DB8DFA1-82F0-4585-BC1C-32AB93A4F928}.Debug|x86.ActiveCfg = Debug|Any CPU - {4DB8DFA1-82F0-4585-BC1C-32AB93A4F928}.Debug|x86.Build.0 = Debug|Any CPU - {4DB8DFA1-82F0-4585-BC1C-32AB93A4F928}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4DB8DFA1-82F0-4585-BC1C-32AB93A4F928}.Release|Any CPU.Build.0 = Release|Any CPU - {4DB8DFA1-82F0-4585-BC1C-32AB93A4F928}.Release|x64.ActiveCfg = Release|Any CPU - {4DB8DFA1-82F0-4585-BC1C-32AB93A4F928}.Release|x64.Build.0 = Release|Any CPU - {4DB8DFA1-82F0-4585-BC1C-32AB93A4F928}.Release|x86.ActiveCfg = Release|Any CPU - {4DB8DFA1-82F0-4585-BC1C-32AB93A4F928}.Release|x86.Build.0 = Release|Any CPU - {E5BA6D7A-B104-48F2-B4ED-42DC6B4B7520}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E5BA6D7A-B104-48F2-B4ED-42DC6B4B7520}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E5BA6D7A-B104-48F2-B4ED-42DC6B4B7520}.Debug|x64.ActiveCfg = Debug|Any CPU - {E5BA6D7A-B104-48F2-B4ED-42DC6B4B7520}.Debug|x64.Build.0 = Debug|Any CPU - {E5BA6D7A-B104-48F2-B4ED-42DC6B4B7520}.Debug|x86.ActiveCfg = Debug|Any CPU - {E5BA6D7A-B104-48F2-B4ED-42DC6B4B7520}.Debug|x86.Build.0 = Debug|Any CPU - {E5BA6D7A-B104-48F2-B4ED-42DC6B4B7520}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E5BA6D7A-B104-48F2-B4ED-42DC6B4B7520}.Release|Any CPU.Build.0 = Release|Any CPU - {E5BA6D7A-B104-48F2-B4ED-42DC6B4B7520}.Release|x64.ActiveCfg = Release|Any CPU - {E5BA6D7A-B104-48F2-B4ED-42DC6B4B7520}.Release|x64.Build.0 = Release|Any CPU - {E5BA6D7A-B104-48F2-B4ED-42DC6B4B7520}.Release|x86.ActiveCfg = Release|Any CPU - {E5BA6D7A-B104-48F2-B4ED-42DC6B4B7520}.Release|x86.Build.0 = Release|Any CPU - {028EBB7D-C7D4-4EB1-AABD-3BF2D5BB8D4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {028EBB7D-C7D4-4EB1-AABD-3BF2D5BB8D4B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {028EBB7D-C7D4-4EB1-AABD-3BF2D5BB8D4B}.Debug|x64.ActiveCfg = Debug|Any CPU - {028EBB7D-C7D4-4EB1-AABD-3BF2D5BB8D4B}.Debug|x64.Build.0 = Debug|Any CPU - {028EBB7D-C7D4-4EB1-AABD-3BF2D5BB8D4B}.Debug|x86.ActiveCfg = Debug|Any CPU - {028EBB7D-C7D4-4EB1-AABD-3BF2D5BB8D4B}.Debug|x86.Build.0 = Debug|Any CPU - {028EBB7D-C7D4-4EB1-AABD-3BF2D5BB8D4B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {028EBB7D-C7D4-4EB1-AABD-3BF2D5BB8D4B}.Release|Any CPU.Build.0 = Release|Any CPU - {028EBB7D-C7D4-4EB1-AABD-3BF2D5BB8D4B}.Release|x64.ActiveCfg = Release|Any CPU - {028EBB7D-C7D4-4EB1-AABD-3BF2D5BB8D4B}.Release|x64.Build.0 = Release|Any CPU - {028EBB7D-C7D4-4EB1-AABD-3BF2D5BB8D4B}.Release|x86.ActiveCfg = Release|Any CPU - {028EBB7D-C7D4-4EB1-AABD-3BF2D5BB8D4B}.Release|x86.Build.0 = Release|Any CPU - {E791AE5F-7B7E-4CEF-897B-0A8D72CDE445}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E791AE5F-7B7E-4CEF-897B-0A8D72CDE445}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E791AE5F-7B7E-4CEF-897B-0A8D72CDE445}.Debug|x64.ActiveCfg = Debug|Any CPU - {E791AE5F-7B7E-4CEF-897B-0A8D72CDE445}.Debug|x64.Build.0 = Debug|Any CPU - {E791AE5F-7B7E-4CEF-897B-0A8D72CDE445}.Debug|x86.ActiveCfg = Debug|Any CPU - {E791AE5F-7B7E-4CEF-897B-0A8D72CDE445}.Debug|x86.Build.0 = Debug|Any CPU - {E791AE5F-7B7E-4CEF-897B-0A8D72CDE445}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E791AE5F-7B7E-4CEF-897B-0A8D72CDE445}.Release|Any CPU.Build.0 = Release|Any CPU - {E791AE5F-7B7E-4CEF-897B-0A8D72CDE445}.Release|x64.ActiveCfg = Release|Any CPU - {E791AE5F-7B7E-4CEF-897B-0A8D72CDE445}.Release|x64.Build.0 = Release|Any CPU - {E791AE5F-7B7E-4CEF-897B-0A8D72CDE445}.Release|x86.ActiveCfg = Release|Any CPU - {E791AE5F-7B7E-4CEF-897B-0A8D72CDE445}.Release|x86.Build.0 = Release|Any CPU - {52B5D05F-9F76-41A8-9334-2580ACE435C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {52B5D05F-9F76-41A8-9334-2580ACE435C6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {52B5D05F-9F76-41A8-9334-2580ACE435C6}.Debug|x64.ActiveCfg = Debug|Any CPU - {52B5D05F-9F76-41A8-9334-2580ACE435C6}.Debug|x64.Build.0 = Debug|Any CPU - {52B5D05F-9F76-41A8-9334-2580ACE435C6}.Debug|x86.ActiveCfg = Debug|Any CPU - {52B5D05F-9F76-41A8-9334-2580ACE435C6}.Debug|x86.Build.0 = Debug|Any CPU - {52B5D05F-9F76-41A8-9334-2580ACE435C6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {52B5D05F-9F76-41A8-9334-2580ACE435C6}.Release|Any CPU.Build.0 = Release|Any CPU - {52B5D05F-9F76-41A8-9334-2580ACE435C6}.Release|x64.ActiveCfg = Release|Any CPU - {52B5D05F-9F76-41A8-9334-2580ACE435C6}.Release|x64.Build.0 = Release|Any CPU - {52B5D05F-9F76-41A8-9334-2580ACE435C6}.Release|x86.ActiveCfg = Release|Any CPU - {52B5D05F-9F76-41A8-9334-2580ACE435C6}.Release|x86.Build.0 = Release|Any CPU - {700F2674-4EA4-4CDB-B2CA-2FC2BD138E2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {700F2674-4EA4-4CDB-B2CA-2FC2BD138E2B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {700F2674-4EA4-4CDB-B2CA-2FC2BD138E2B}.Debug|x64.ActiveCfg = Debug|Any CPU - {700F2674-4EA4-4CDB-B2CA-2FC2BD138E2B}.Debug|x64.Build.0 = Debug|Any CPU - {700F2674-4EA4-4CDB-B2CA-2FC2BD138E2B}.Debug|x86.ActiveCfg = Debug|x86 - {700F2674-4EA4-4CDB-B2CA-2FC2BD138E2B}.Debug|x86.Build.0 = Debug|x86 - {700F2674-4EA4-4CDB-B2CA-2FC2BD138E2B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {700F2674-4EA4-4CDB-B2CA-2FC2BD138E2B}.Release|Any CPU.Build.0 = Release|Any CPU - {700F2674-4EA4-4CDB-B2CA-2FC2BD138E2B}.Release|x64.ActiveCfg = Release|Any CPU - {700F2674-4EA4-4CDB-B2CA-2FC2BD138E2B}.Release|x64.Build.0 = Release|Any CPU - {700F2674-4EA4-4CDB-B2CA-2FC2BD138E2B}.Release|x86.ActiveCfg = Release|x86 - {700F2674-4EA4-4CDB-B2CA-2FC2BD138E2B}.Release|x86.Build.0 = Release|x86 - {99318E2F-805D-4AF7-8E51-BAF6FCC257CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {99318E2F-805D-4AF7-8E51-BAF6FCC257CE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {99318E2F-805D-4AF7-8E51-BAF6FCC257CE}.Debug|x64.ActiveCfg = Debug|Any CPU - {99318E2F-805D-4AF7-8E51-BAF6FCC257CE}.Debug|x64.Build.0 = Debug|Any CPU - {99318E2F-805D-4AF7-8E51-BAF6FCC257CE}.Debug|x86.ActiveCfg = Debug|Any CPU - {99318E2F-805D-4AF7-8E51-BAF6FCC257CE}.Debug|x86.Build.0 = Debug|Any CPU - {99318E2F-805D-4AF7-8E51-BAF6FCC257CE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {99318E2F-805D-4AF7-8E51-BAF6FCC257CE}.Release|Any CPU.Build.0 = Release|Any CPU - {99318E2F-805D-4AF7-8E51-BAF6FCC257CE}.Release|x64.ActiveCfg = Release|Any CPU - {99318E2F-805D-4AF7-8E51-BAF6FCC257CE}.Release|x64.Build.0 = Release|Any CPU - {99318E2F-805D-4AF7-8E51-BAF6FCC257CE}.Release|x86.ActiveCfg = Release|Any CPU - {99318E2F-805D-4AF7-8E51-BAF6FCC257CE}.Release|x86.Build.0 = Release|Any CPU - {E68F82B2-14C7-47C5-9747-62C262722D1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E68F82B2-14C7-47C5-9747-62C262722D1E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E68F82B2-14C7-47C5-9747-62C262722D1E}.Debug|x64.ActiveCfg = Debug|Any CPU - {E68F82B2-14C7-47C5-9747-62C262722D1E}.Debug|x64.Build.0 = Debug|Any CPU - {E68F82B2-14C7-47C5-9747-62C262722D1E}.Debug|x86.ActiveCfg = Debug|Any CPU - {E68F82B2-14C7-47C5-9747-62C262722D1E}.Debug|x86.Build.0 = Debug|Any CPU - {E68F82B2-14C7-47C5-9747-62C262722D1E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E68F82B2-14C7-47C5-9747-62C262722D1E}.Release|Any CPU.Build.0 = Release|Any CPU - {E68F82B2-14C7-47C5-9747-62C262722D1E}.Release|x64.ActiveCfg = Release|Any CPU - {E68F82B2-14C7-47C5-9747-62C262722D1E}.Release|x64.Build.0 = Release|Any CPU - {E68F82B2-14C7-47C5-9747-62C262722D1E}.Release|x86.ActiveCfg = Release|Any CPU - {E68F82B2-14C7-47C5-9747-62C262722D1E}.Release|x86.Build.0 = Release|Any CPU - {4E4EFE27-E464-477E-81EC-25C7494F3576}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4E4EFE27-E464-477E-81EC-25C7494F3576}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4E4EFE27-E464-477E-81EC-25C7494F3576}.Debug|x64.ActiveCfg = Debug|Any CPU - {4E4EFE27-E464-477E-81EC-25C7494F3576}.Debug|x64.Build.0 = Debug|Any CPU - {4E4EFE27-E464-477E-81EC-25C7494F3576}.Debug|x86.ActiveCfg = Debug|Any CPU - {4E4EFE27-E464-477E-81EC-25C7494F3576}.Debug|x86.Build.0 = Debug|Any CPU - {4E4EFE27-E464-477E-81EC-25C7494F3576}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4E4EFE27-E464-477E-81EC-25C7494F3576}.Release|Any CPU.Build.0 = Release|Any CPU - {4E4EFE27-E464-477E-81EC-25C7494F3576}.Release|x64.ActiveCfg = Release|Any CPU - {4E4EFE27-E464-477E-81EC-25C7494F3576}.Release|x64.Build.0 = Release|Any CPU - {4E4EFE27-E464-477E-81EC-25C7494F3576}.Release|x86.ActiveCfg = Release|Any CPU - {4E4EFE27-E464-477E-81EC-25C7494F3576}.Release|x86.Build.0 = Release|Any CPU - {EBCA4B00-6277-46D6-AF36-E638CCC610E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EBCA4B00-6277-46D6-AF36-E638CCC610E2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EBCA4B00-6277-46D6-AF36-E638CCC610E2}.Debug|x64.ActiveCfg = Debug|Any CPU - {EBCA4B00-6277-46D6-AF36-E638CCC610E2}.Debug|x64.Build.0 = Debug|Any CPU - {EBCA4B00-6277-46D6-AF36-E638CCC610E2}.Debug|x86.ActiveCfg = Debug|Any CPU - {EBCA4B00-6277-46D6-AF36-E638CCC610E2}.Debug|x86.Build.0 = Debug|Any CPU - {EBCA4B00-6277-46D6-AF36-E638CCC610E2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EBCA4B00-6277-46D6-AF36-E638CCC610E2}.Release|Any CPU.Build.0 = Release|Any CPU - {EBCA4B00-6277-46D6-AF36-E638CCC610E2}.Release|x64.ActiveCfg = Release|Any CPU - {EBCA4B00-6277-46D6-AF36-E638CCC610E2}.Release|x64.Build.0 = Release|Any CPU - {EBCA4B00-6277-46D6-AF36-E638CCC610E2}.Release|x86.ActiveCfg = Release|Any CPU - {EBCA4B00-6277-46D6-AF36-E638CCC610E2}.Release|x86.Build.0 = Release|Any CPU - {C1A415DC-597E-4AD8-8A89-C6AF52F5026D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C1A415DC-597E-4AD8-8A89-C6AF52F5026D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C1A415DC-597E-4AD8-8A89-C6AF52F5026D}.Debug|x64.ActiveCfg = Debug|Any CPU - {C1A415DC-597E-4AD8-8A89-C6AF52F5026D}.Debug|x64.Build.0 = Debug|Any CPU - {C1A415DC-597E-4AD8-8A89-C6AF52F5026D}.Debug|x86.ActiveCfg = Debug|Any CPU - {C1A415DC-597E-4AD8-8A89-C6AF52F5026D}.Debug|x86.Build.0 = Debug|Any CPU - {C1A415DC-597E-4AD8-8A89-C6AF52F5026D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C1A415DC-597E-4AD8-8A89-C6AF52F5026D}.Release|Any CPU.Build.0 = Release|Any CPU - {C1A415DC-597E-4AD8-8A89-C6AF52F5026D}.Release|x64.ActiveCfg = Release|Any CPU - {C1A415DC-597E-4AD8-8A89-C6AF52F5026D}.Release|x64.Build.0 = Release|Any CPU - {C1A415DC-597E-4AD8-8A89-C6AF52F5026D}.Release|x86.ActiveCfg = Release|Any CPU - {C1A415DC-597E-4AD8-8A89-C6AF52F5026D}.Release|x86.Build.0 = Release|Any CPU - {211FD731-0F62-4910-8343-6AA5ADA9686E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {211FD731-0F62-4910-8343-6AA5ADA9686E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {211FD731-0F62-4910-8343-6AA5ADA9686E}.Debug|x64.ActiveCfg = Debug|Any CPU - {211FD731-0F62-4910-8343-6AA5ADA9686E}.Debug|x64.Build.0 = Debug|Any CPU - {211FD731-0F62-4910-8343-6AA5ADA9686E}.Debug|x86.ActiveCfg = Debug|Any CPU - {211FD731-0F62-4910-8343-6AA5ADA9686E}.Debug|x86.Build.0 = Debug|Any CPU - {211FD731-0F62-4910-8343-6AA5ADA9686E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {211FD731-0F62-4910-8343-6AA5ADA9686E}.Release|Any CPU.Build.0 = Release|Any CPU - {211FD731-0F62-4910-8343-6AA5ADA9686E}.Release|x64.ActiveCfg = Release|Any CPU - {211FD731-0F62-4910-8343-6AA5ADA9686E}.Release|x64.Build.0 = Release|Any CPU - {211FD731-0F62-4910-8343-6AA5ADA9686E}.Release|x86.ActiveCfg = Release|Any CPU - {211FD731-0F62-4910-8343-6AA5ADA9686E}.Release|x86.Build.0 = Release|Any CPU - {7B2497DF-1016-4C40-B894-9EDE00B4CA56}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7B2497DF-1016-4C40-B894-9EDE00B4CA56}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7B2497DF-1016-4C40-B894-9EDE00B4CA56}.Debug|x64.ActiveCfg = Debug|Any CPU - {7B2497DF-1016-4C40-B894-9EDE00B4CA56}.Debug|x64.Build.0 = Debug|Any CPU - {7B2497DF-1016-4C40-B894-9EDE00B4CA56}.Debug|x86.ActiveCfg = Debug|Any CPU - {7B2497DF-1016-4C40-B894-9EDE00B4CA56}.Debug|x86.Build.0 = Debug|Any CPU - {7B2497DF-1016-4C40-B894-9EDE00B4CA56}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7B2497DF-1016-4C40-B894-9EDE00B4CA56}.Release|Any CPU.Build.0 = Release|Any CPU - {7B2497DF-1016-4C40-B894-9EDE00B4CA56}.Release|x64.ActiveCfg = Release|Any CPU - {7B2497DF-1016-4C40-B894-9EDE00B4CA56}.Release|x64.Build.0 = Release|Any CPU - {7B2497DF-1016-4C40-B894-9EDE00B4CA56}.Release|x86.ActiveCfg = Release|Any CPU - {7B2497DF-1016-4C40-B894-9EDE00B4CA56}.Release|x86.Build.0 = Release|Any CPU - {9BD06E47-C47D-455E-84AD-B9835BDA2943}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9BD06E47-C47D-455E-84AD-B9835BDA2943}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9BD06E47-C47D-455E-84AD-B9835BDA2943}.Debug|x64.ActiveCfg = Debug|Any CPU - {9BD06E47-C47D-455E-84AD-B9835BDA2943}.Debug|x64.Build.0 = Debug|Any CPU - {9BD06E47-C47D-455E-84AD-B9835BDA2943}.Debug|x86.ActiveCfg = Debug|Any CPU - {9BD06E47-C47D-455E-84AD-B9835BDA2943}.Debug|x86.Build.0 = Debug|Any CPU - {9BD06E47-C47D-455E-84AD-B9835BDA2943}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9BD06E47-C47D-455E-84AD-B9835BDA2943}.Release|Any CPU.Build.0 = Release|Any CPU - {9BD06E47-C47D-455E-84AD-B9835BDA2943}.Release|x64.ActiveCfg = Release|Any CPU - {9BD06E47-C47D-455E-84AD-B9835BDA2943}.Release|x64.Build.0 = Release|Any CPU - {9BD06E47-C47D-455E-84AD-B9835BDA2943}.Release|x86.ActiveCfg = Release|Any CPU - {9BD06E47-C47D-455E-84AD-B9835BDA2943}.Release|x86.Build.0 = Release|Any CPU - {4B3CF3C7-EF23-4149-8024-963201BE5EB4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4B3CF3C7-EF23-4149-8024-963201BE5EB4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4B3CF3C7-EF23-4149-8024-963201BE5EB4}.Debug|x64.ActiveCfg = Debug|Any CPU - {4B3CF3C7-EF23-4149-8024-963201BE5EB4}.Debug|x64.Build.0 = Debug|Any CPU - {4B3CF3C7-EF23-4149-8024-963201BE5EB4}.Debug|x86.ActiveCfg = Debug|Any CPU - {4B3CF3C7-EF23-4149-8024-963201BE5EB4}.Debug|x86.Build.0 = Debug|Any CPU - {4B3CF3C7-EF23-4149-8024-963201BE5EB4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4B3CF3C7-EF23-4149-8024-963201BE5EB4}.Release|Any CPU.Build.0 = Release|Any CPU - {4B3CF3C7-EF23-4149-8024-963201BE5EB4}.Release|x64.ActiveCfg = Release|Any CPU - {4B3CF3C7-EF23-4149-8024-963201BE5EB4}.Release|x64.Build.0 = Release|Any CPU - {4B3CF3C7-EF23-4149-8024-963201BE5EB4}.Release|x86.ActiveCfg = Release|Any CPU - {4B3CF3C7-EF23-4149-8024-963201BE5EB4}.Release|x86.Build.0 = Release|Any CPU - {634B6143-B564-4FA9-BF7B-7D15F26045BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {634B6143-B564-4FA9-BF7B-7D15F26045BA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {634B6143-B564-4FA9-BF7B-7D15F26045BA}.Debug|x64.ActiveCfg = Debug|Any CPU - {634B6143-B564-4FA9-BF7B-7D15F26045BA}.Debug|x64.Build.0 = Debug|Any CPU - {634B6143-B564-4FA9-BF7B-7D15F26045BA}.Debug|x86.ActiveCfg = Debug|Any CPU - {634B6143-B564-4FA9-BF7B-7D15F26045BA}.Debug|x86.Build.0 = Debug|Any CPU - {634B6143-B564-4FA9-BF7B-7D15F26045BA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {634B6143-B564-4FA9-BF7B-7D15F26045BA}.Release|Any CPU.Build.0 = Release|Any CPU - {634B6143-B564-4FA9-BF7B-7D15F26045BA}.Release|x64.ActiveCfg = Release|Any CPU - {634B6143-B564-4FA9-BF7B-7D15F26045BA}.Release|x64.Build.0 = Release|Any CPU - {634B6143-B564-4FA9-BF7B-7D15F26045BA}.Release|x86.ActiveCfg = Release|Any CPU - {634B6143-B564-4FA9-BF7B-7D15F26045BA}.Release|x86.Build.0 = Release|Any CPU - {049C8D2C-B00E-4369-90A6-6043C393C2ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {049C8D2C-B00E-4369-90A6-6043C393C2ED}.Debug|Any CPU.Build.0 = Debug|Any CPU - {049C8D2C-B00E-4369-90A6-6043C393C2ED}.Debug|x64.ActiveCfg = Debug|Any CPU - {049C8D2C-B00E-4369-90A6-6043C393C2ED}.Debug|x64.Build.0 = Debug|Any CPU - {049C8D2C-B00E-4369-90A6-6043C393C2ED}.Debug|x86.ActiveCfg = Debug|Any CPU - {049C8D2C-B00E-4369-90A6-6043C393C2ED}.Debug|x86.Build.0 = Debug|Any CPU - {049C8D2C-B00E-4369-90A6-6043C393C2ED}.Release|Any CPU.ActiveCfg = Release|Any CPU - {049C8D2C-B00E-4369-90A6-6043C393C2ED}.Release|Any CPU.Build.0 = Release|Any CPU - {049C8D2C-B00E-4369-90A6-6043C393C2ED}.Release|x64.ActiveCfg = Release|Any CPU - {049C8D2C-B00E-4369-90A6-6043C393C2ED}.Release|x64.Build.0 = Release|Any CPU - {049C8D2C-B00E-4369-90A6-6043C393C2ED}.Release|x86.ActiveCfg = Release|Any CPU - {049C8D2C-B00E-4369-90A6-6043C393C2ED}.Release|x86.Build.0 = Release|Any CPU - {171A091E-0477-4CC6-AC83-F0FFF5594375}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {171A091E-0477-4CC6-AC83-F0FFF5594375}.Debug|Any CPU.Build.0 = Debug|Any CPU - {171A091E-0477-4CC6-AC83-F0FFF5594375}.Debug|x64.ActiveCfg = Debug|Any CPU - {171A091E-0477-4CC6-AC83-F0FFF5594375}.Debug|x64.Build.0 = Debug|Any CPU - {171A091E-0477-4CC6-AC83-F0FFF5594375}.Debug|x86.ActiveCfg = Debug|Any CPU - {171A091E-0477-4CC6-AC83-F0FFF5594375}.Debug|x86.Build.0 = Debug|Any CPU - {171A091E-0477-4CC6-AC83-F0FFF5594375}.Release|Any CPU.ActiveCfg = Release|Any CPU - {171A091E-0477-4CC6-AC83-F0FFF5594375}.Release|Any CPU.Build.0 = Release|Any CPU - {171A091E-0477-4CC6-AC83-F0FFF5594375}.Release|x64.ActiveCfg = Release|Any CPU - {171A091E-0477-4CC6-AC83-F0FFF5594375}.Release|x64.Build.0 = Release|Any CPU - {171A091E-0477-4CC6-AC83-F0FFF5594375}.Release|x86.ActiveCfg = Release|Any CPU - {171A091E-0477-4CC6-AC83-F0FFF5594375}.Release|x86.Build.0 = Release|Any CPU - {014491C6-58A0-4DFA-ACFC-4988ADCD546A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {014491C6-58A0-4DFA-ACFC-4988ADCD546A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {014491C6-58A0-4DFA-ACFC-4988ADCD546A}.Debug|x64.ActiveCfg = Debug|Any CPU - {014491C6-58A0-4DFA-ACFC-4988ADCD546A}.Debug|x64.Build.0 = Debug|Any CPU - {014491C6-58A0-4DFA-ACFC-4988ADCD546A}.Debug|x86.ActiveCfg = Debug|Any CPU - {014491C6-58A0-4DFA-ACFC-4988ADCD546A}.Debug|x86.Build.0 = Debug|Any CPU - {014491C6-58A0-4DFA-ACFC-4988ADCD546A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {014491C6-58A0-4DFA-ACFC-4988ADCD546A}.Release|Any CPU.Build.0 = Release|Any CPU - {014491C6-58A0-4DFA-ACFC-4988ADCD546A}.Release|x64.ActiveCfg = Release|Any CPU - {014491C6-58A0-4DFA-ACFC-4988ADCD546A}.Release|x64.Build.0 = Release|Any CPU - {014491C6-58A0-4DFA-ACFC-4988ADCD546A}.Release|x86.ActiveCfg = Release|Any CPU - {014491C6-58A0-4DFA-ACFC-4988ADCD546A}.Release|x86.Build.0 = Release|Any CPU - {C94242B3-AF74-4966-9508-55CEA7B589E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C94242B3-AF74-4966-9508-55CEA7B589E9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C94242B3-AF74-4966-9508-55CEA7B589E9}.Debug|x64.ActiveCfg = Debug|Any CPU - {C94242B3-AF74-4966-9508-55CEA7B589E9}.Debug|x64.Build.0 = Debug|Any CPU - {C94242B3-AF74-4966-9508-55CEA7B589E9}.Debug|x86.ActiveCfg = Debug|Any CPU - {C94242B3-AF74-4966-9508-55CEA7B589E9}.Debug|x86.Build.0 = Debug|Any CPU - {C94242B3-AF74-4966-9508-55CEA7B589E9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C94242B3-AF74-4966-9508-55CEA7B589E9}.Release|Any CPU.Build.0 = Release|Any CPU - {C94242B3-AF74-4966-9508-55CEA7B589E9}.Release|x64.ActiveCfg = Release|Any CPU - {C94242B3-AF74-4966-9508-55CEA7B589E9}.Release|x64.Build.0 = Release|Any CPU - {C94242B3-AF74-4966-9508-55CEA7B589E9}.Release|x86.ActiveCfg = Release|Any CPU - {C94242B3-AF74-4966-9508-55CEA7B589E9}.Release|x86.Build.0 = Release|Any CPU - {73162237-344C-4196-9754-F0D270649C0E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {73162237-344C-4196-9754-F0D270649C0E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {73162237-344C-4196-9754-F0D270649C0E}.Debug|x64.ActiveCfg = Debug|Any CPU - {73162237-344C-4196-9754-F0D270649C0E}.Debug|x64.Build.0 = Debug|Any CPU - {73162237-344C-4196-9754-F0D270649C0E}.Debug|x86.ActiveCfg = Debug|Any CPU - {73162237-344C-4196-9754-F0D270649C0E}.Debug|x86.Build.0 = Debug|Any CPU - {73162237-344C-4196-9754-F0D270649C0E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {73162237-344C-4196-9754-F0D270649C0E}.Release|Any CPU.Build.0 = Release|Any CPU - {73162237-344C-4196-9754-F0D270649C0E}.Release|x64.ActiveCfg = Release|Any CPU - {73162237-344C-4196-9754-F0D270649C0E}.Release|x64.Build.0 = Release|Any CPU - {73162237-344C-4196-9754-F0D270649C0E}.Release|x86.ActiveCfg = Release|Any CPU - {73162237-344C-4196-9754-F0D270649C0E}.Release|x86.Build.0 = Release|Any CPU - {5E2F6EFC-61EF-467E-85C8-17CDB62DE450}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5E2F6EFC-61EF-467E-85C8-17CDB62DE450}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5E2F6EFC-61EF-467E-85C8-17CDB62DE450}.Debug|x64.ActiveCfg = Debug|Any CPU - {5E2F6EFC-61EF-467E-85C8-17CDB62DE450}.Debug|x64.Build.0 = Debug|Any CPU - {5E2F6EFC-61EF-467E-85C8-17CDB62DE450}.Debug|x86.ActiveCfg = Debug|Any CPU - {5E2F6EFC-61EF-467E-85C8-17CDB62DE450}.Debug|x86.Build.0 = Debug|Any CPU - {5E2F6EFC-61EF-467E-85C8-17CDB62DE450}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5E2F6EFC-61EF-467E-85C8-17CDB62DE450}.Release|Any CPU.Build.0 = Release|Any CPU - {5E2F6EFC-61EF-467E-85C8-17CDB62DE450}.Release|x64.ActiveCfg = Release|Any CPU - {5E2F6EFC-61EF-467E-85C8-17CDB62DE450}.Release|x64.Build.0 = Release|Any CPU - {5E2F6EFC-61EF-467E-85C8-17CDB62DE450}.Release|x86.ActiveCfg = Release|Any CPU - {5E2F6EFC-61EF-467E-85C8-17CDB62DE450}.Release|x86.Build.0 = Release|Any CPU - {98776527-60A3-4346-8A3E-A74A6D9FEEB4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {98776527-60A3-4346-8A3E-A74A6D9FEEB4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {98776527-60A3-4346-8A3E-A74A6D9FEEB4}.Debug|x64.ActiveCfg = Debug|Any CPU - {98776527-60A3-4346-8A3E-A74A6D9FEEB4}.Debug|x64.Build.0 = Debug|Any CPU - {98776527-60A3-4346-8A3E-A74A6D9FEEB4}.Debug|x86.ActiveCfg = Debug|Any CPU - {98776527-60A3-4346-8A3E-A74A6D9FEEB4}.Debug|x86.Build.0 = Debug|Any CPU - {98776527-60A3-4346-8A3E-A74A6D9FEEB4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {98776527-60A3-4346-8A3E-A74A6D9FEEB4}.Release|Any CPU.Build.0 = Release|Any CPU - {98776527-60A3-4346-8A3E-A74A6D9FEEB4}.Release|x64.ActiveCfg = Release|Any CPU - {98776527-60A3-4346-8A3E-A74A6D9FEEB4}.Release|x64.Build.0 = Release|Any CPU - {98776527-60A3-4346-8A3E-A74A6D9FEEB4}.Release|x86.ActiveCfg = Release|Any CPU - {98776527-60A3-4346-8A3E-A74A6D9FEEB4}.Release|x86.Build.0 = Release|Any CPU - {028A8572-A183-43DC-BE68-622C36ED36DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {028A8572-A183-43DC-BE68-622C36ED36DA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {028A8572-A183-43DC-BE68-622C36ED36DA}.Debug|x64.ActiveCfg = Debug|Any CPU - {028A8572-A183-43DC-BE68-622C36ED36DA}.Debug|x64.Build.0 = Debug|Any CPU - {028A8572-A183-43DC-BE68-622C36ED36DA}.Debug|x86.ActiveCfg = Debug|Any CPU - {028A8572-A183-43DC-BE68-622C36ED36DA}.Debug|x86.Build.0 = Debug|Any CPU - {028A8572-A183-43DC-BE68-622C36ED36DA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {028A8572-A183-43DC-BE68-622C36ED36DA}.Release|Any CPU.Build.0 = Release|Any CPU - {028A8572-A183-43DC-BE68-622C36ED36DA}.Release|x64.ActiveCfg = Release|Any CPU - {028A8572-A183-43DC-BE68-622C36ED36DA}.Release|x64.Build.0 = Release|Any CPU - {028A8572-A183-43DC-BE68-622C36ED36DA}.Release|x86.ActiveCfg = Release|Any CPU - {028A8572-A183-43DC-BE68-622C36ED36DA}.Release|x86.Build.0 = Release|Any CPU - {C3D5CA53-026A-4996-BC2F-9A3849536537}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C3D5CA53-026A-4996-BC2F-9A3849536537}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C3D5CA53-026A-4996-BC2F-9A3849536537}.Debug|x64.ActiveCfg = Debug|Any CPU - {C3D5CA53-026A-4996-BC2F-9A3849536537}.Debug|x64.Build.0 = Debug|Any CPU - {C3D5CA53-026A-4996-BC2F-9A3849536537}.Debug|x86.ActiveCfg = Debug|Any CPU - {C3D5CA53-026A-4996-BC2F-9A3849536537}.Debug|x86.Build.0 = Debug|Any CPU - {C3D5CA53-026A-4996-BC2F-9A3849536537}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C3D5CA53-026A-4996-BC2F-9A3849536537}.Release|Any CPU.Build.0 = Release|Any CPU - {C3D5CA53-026A-4996-BC2F-9A3849536537}.Release|x64.ActiveCfg = Release|Any CPU - {C3D5CA53-026A-4996-BC2F-9A3849536537}.Release|x64.Build.0 = Release|Any CPU - {C3D5CA53-026A-4996-BC2F-9A3849536537}.Release|x86.ActiveCfg = Release|Any CPU - {C3D5CA53-026A-4996-BC2F-9A3849536537}.Release|x86.Build.0 = Release|Any CPU - {CB5BDADA-8032-4F68-A17D-CA18BA63F4F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CB5BDADA-8032-4F68-A17D-CA18BA63F4F0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CB5BDADA-8032-4F68-A17D-CA18BA63F4F0}.Debug|x64.ActiveCfg = Debug|Any CPU - {CB5BDADA-8032-4F68-A17D-CA18BA63F4F0}.Debug|x64.Build.0 = Debug|Any CPU - {CB5BDADA-8032-4F68-A17D-CA18BA63F4F0}.Debug|x86.ActiveCfg = Debug|Any CPU - {CB5BDADA-8032-4F68-A17D-CA18BA63F4F0}.Debug|x86.Build.0 = Debug|Any CPU - {CB5BDADA-8032-4F68-A17D-CA18BA63F4F0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CB5BDADA-8032-4F68-A17D-CA18BA63F4F0}.Release|Any CPU.Build.0 = Release|Any CPU - {CB5BDADA-8032-4F68-A17D-CA18BA63F4F0}.Release|x64.ActiveCfg = Release|Any CPU - {CB5BDADA-8032-4F68-A17D-CA18BA63F4F0}.Release|x64.Build.0 = Release|Any CPU - {CB5BDADA-8032-4F68-A17D-CA18BA63F4F0}.Release|x86.ActiveCfg = Release|Any CPU - {CB5BDADA-8032-4F68-A17D-CA18BA63F4F0}.Release|x86.Build.0 = Release|Any CPU - {E01C820C-E103-4387-B1E8-680ED4218600}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E01C820C-E103-4387-B1E8-680ED4218600}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E01C820C-E103-4387-B1E8-680ED4218600}.Debug|x64.ActiveCfg = Debug|Any CPU - {E01C820C-E103-4387-B1E8-680ED4218600}.Debug|x64.Build.0 = Debug|Any CPU - {E01C820C-E103-4387-B1E8-680ED4218600}.Debug|x86.ActiveCfg = Debug|Any CPU - {E01C820C-E103-4387-B1E8-680ED4218600}.Debug|x86.Build.0 = Debug|Any CPU - {E01C820C-E103-4387-B1E8-680ED4218600}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E01C820C-E103-4387-B1E8-680ED4218600}.Release|Any CPU.Build.0 = Release|Any CPU - {E01C820C-E103-4387-B1E8-680ED4218600}.Release|x64.ActiveCfg = Release|Any CPU - {E01C820C-E103-4387-B1E8-680ED4218600}.Release|x64.Build.0 = Release|Any CPU - {E01C820C-E103-4387-B1E8-680ED4218600}.Release|x86.ActiveCfg = Release|Any CPU - {E01C820C-E103-4387-B1E8-680ED4218600}.Release|x86.Build.0 = Release|Any CPU - {48D69FD8-942B-46A2-ADD4-068BC35D98C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {48D69FD8-942B-46A2-ADD4-068BC35D98C4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {48D69FD8-942B-46A2-ADD4-068BC35D98C4}.Debug|x64.ActiveCfg = Debug|Any CPU - {48D69FD8-942B-46A2-ADD4-068BC35D98C4}.Debug|x64.Build.0 = Debug|Any CPU - {48D69FD8-942B-46A2-ADD4-068BC35D98C4}.Debug|x86.ActiveCfg = Debug|Any CPU - {48D69FD8-942B-46A2-ADD4-068BC35D98C4}.Debug|x86.Build.0 = Debug|Any CPU - {48D69FD8-942B-46A2-ADD4-068BC35D98C4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {48D69FD8-942B-46A2-ADD4-068BC35D98C4}.Release|Any CPU.Build.0 = Release|Any CPU - {48D69FD8-942B-46A2-ADD4-068BC35D98C4}.Release|x64.ActiveCfg = Release|Any CPU - {48D69FD8-942B-46A2-ADD4-068BC35D98C4}.Release|x64.Build.0 = Release|Any CPU - {48D69FD8-942B-46A2-ADD4-068BC35D98C4}.Release|x86.ActiveCfg = Release|Any CPU - {48D69FD8-942B-46A2-ADD4-068BC35D98C4}.Release|x86.Build.0 = Release|Any CPU - {AB21D4DB-F483-4977-A75F-8763198B941B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AB21D4DB-F483-4977-A75F-8763198B941B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AB21D4DB-F483-4977-A75F-8763198B941B}.Debug|x64.ActiveCfg = Debug|Any CPU - {AB21D4DB-F483-4977-A75F-8763198B941B}.Debug|x64.Build.0 = Debug|Any CPU - {AB21D4DB-F483-4977-A75F-8763198B941B}.Debug|x86.ActiveCfg = Debug|Any CPU - {AB21D4DB-F483-4977-A75F-8763198B941B}.Debug|x86.Build.0 = Debug|Any CPU - {AB21D4DB-F483-4977-A75F-8763198B941B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AB21D4DB-F483-4977-A75F-8763198B941B}.Release|Any CPU.Build.0 = Release|Any CPU - {AB21D4DB-F483-4977-A75F-8763198B941B}.Release|x64.ActiveCfg = Release|Any CPU - {AB21D4DB-F483-4977-A75F-8763198B941B}.Release|x64.Build.0 = Release|Any CPU - {AB21D4DB-F483-4977-A75F-8763198B941B}.Release|x86.ActiveCfg = Release|Any CPU - {AB21D4DB-F483-4977-A75F-8763198B941B}.Release|x86.Build.0 = Release|Any CPU - {B31F1FBD-F505-42D9-9761-05A5E19F87B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B31F1FBD-F505-42D9-9761-05A5E19F87B1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B31F1FBD-F505-42D9-9761-05A5E19F87B1}.Debug|x64.ActiveCfg = Debug|Any CPU - {B31F1FBD-F505-42D9-9761-05A5E19F87B1}.Debug|x64.Build.0 = Debug|Any CPU - {B31F1FBD-F505-42D9-9761-05A5E19F87B1}.Debug|x86.ActiveCfg = Debug|Any CPU - {B31F1FBD-F505-42D9-9761-05A5E19F87B1}.Debug|x86.Build.0 = Debug|Any CPU - {B31F1FBD-F505-42D9-9761-05A5E19F87B1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B31F1FBD-F505-42D9-9761-05A5E19F87B1}.Release|Any CPU.Build.0 = Release|Any CPU - {B31F1FBD-F505-42D9-9761-05A5E19F87B1}.Release|x64.ActiveCfg = Release|Any CPU - {B31F1FBD-F505-42D9-9761-05A5E19F87B1}.Release|x64.Build.0 = Release|Any CPU - {B31F1FBD-F505-42D9-9761-05A5E19F87B1}.Release|x86.ActiveCfg = Release|Any CPU - {B31F1FBD-F505-42D9-9761-05A5E19F87B1}.Release|x86.Build.0 = Release|Any CPU - {4D20BE29-3DB1-479D-B4E8-BA900BBB48B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4D20BE29-3DB1-479D-B4E8-BA900BBB48B1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4D20BE29-3DB1-479D-B4E8-BA900BBB48B1}.Debug|x64.ActiveCfg = Debug|Any CPU - {4D20BE29-3DB1-479D-B4E8-BA900BBB48B1}.Debug|x64.Build.0 = Debug|Any CPU - {4D20BE29-3DB1-479D-B4E8-BA900BBB48B1}.Debug|x86.ActiveCfg = Debug|Any CPU - {4D20BE29-3DB1-479D-B4E8-BA900BBB48B1}.Debug|x86.Build.0 = Debug|Any CPU - {4D20BE29-3DB1-479D-B4E8-BA900BBB48B1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4D20BE29-3DB1-479D-B4E8-BA900BBB48B1}.Release|Any CPU.Build.0 = Release|Any CPU - {4D20BE29-3DB1-479D-B4E8-BA900BBB48B1}.Release|x64.ActiveCfg = Release|Any CPU - {4D20BE29-3DB1-479D-B4E8-BA900BBB48B1}.Release|x64.Build.0 = Release|Any CPU - {4D20BE29-3DB1-479D-B4E8-BA900BBB48B1}.Release|x86.ActiveCfg = Release|Any CPU - {4D20BE29-3DB1-479D-B4E8-BA900BBB48B1}.Release|x86.Build.0 = Release|Any CPU - {ABD44B89-6B8C-4902-8EB4-DB6F4F19C9D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {ABD44B89-6B8C-4902-8EB4-DB6F4F19C9D3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {ABD44B89-6B8C-4902-8EB4-DB6F4F19C9D3}.Debug|x64.ActiveCfg = Debug|Any CPU - {ABD44B89-6B8C-4902-8EB4-DB6F4F19C9D3}.Debug|x64.Build.0 = Debug|Any CPU - {ABD44B89-6B8C-4902-8EB4-DB6F4F19C9D3}.Debug|x86.ActiveCfg = Debug|Any CPU - {ABD44B89-6B8C-4902-8EB4-DB6F4F19C9D3}.Debug|x86.Build.0 = Debug|Any CPU - {ABD44B89-6B8C-4902-8EB4-DB6F4F19C9D3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {ABD44B89-6B8C-4902-8EB4-DB6F4F19C9D3}.Release|Any CPU.Build.0 = Release|Any CPU - {ABD44B89-6B8C-4902-8EB4-DB6F4F19C9D3}.Release|x64.ActiveCfg = Release|Any CPU - {ABD44B89-6B8C-4902-8EB4-DB6F4F19C9D3}.Release|x64.Build.0 = Release|Any CPU - {ABD44B89-6B8C-4902-8EB4-DB6F4F19C9D3}.Release|x86.ActiveCfg = Release|Any CPU - {ABD44B89-6B8C-4902-8EB4-DB6F4F19C9D3}.Release|x86.Build.0 = Release|Any CPU - {45EAC490-1351-4FB5-9E16-AAFEEDDB36AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {45EAC490-1351-4FB5-9E16-AAFEEDDB36AD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {45EAC490-1351-4FB5-9E16-AAFEEDDB36AD}.Debug|x64.ActiveCfg = Debug|Any CPU - {45EAC490-1351-4FB5-9E16-AAFEEDDB36AD}.Debug|x64.Build.0 = Debug|Any CPU - {45EAC490-1351-4FB5-9E16-AAFEEDDB36AD}.Debug|x86.ActiveCfg = Debug|Any CPU - {45EAC490-1351-4FB5-9E16-AAFEEDDB36AD}.Debug|x86.Build.0 = Debug|Any CPU - {45EAC490-1351-4FB5-9E16-AAFEEDDB36AD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {45EAC490-1351-4FB5-9E16-AAFEEDDB36AD}.Release|Any CPU.Build.0 = Release|Any CPU - {45EAC490-1351-4FB5-9E16-AAFEEDDB36AD}.Release|x64.ActiveCfg = Release|Any CPU - {45EAC490-1351-4FB5-9E16-AAFEEDDB36AD}.Release|x64.Build.0 = Release|Any CPU - {45EAC490-1351-4FB5-9E16-AAFEEDDB36AD}.Release|x86.ActiveCfg = Release|Any CPU - {45EAC490-1351-4FB5-9E16-AAFEEDDB36AD}.Release|x86.Build.0 = Release|Any CPU - {79338A1C-5A2B-42D4-AF30-BBAB98613880}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {79338A1C-5A2B-42D4-AF30-BBAB98613880}.Debug|Any CPU.Build.0 = Debug|Any CPU - {79338A1C-5A2B-42D4-AF30-BBAB98613880}.Debug|x64.ActiveCfg = Debug|Any CPU - {79338A1C-5A2B-42D4-AF30-BBAB98613880}.Debug|x64.Build.0 = Debug|Any CPU - {79338A1C-5A2B-42D4-AF30-BBAB98613880}.Debug|x86.ActiveCfg = Debug|Any CPU - {79338A1C-5A2B-42D4-AF30-BBAB98613880}.Debug|x86.Build.0 = Debug|Any CPU - {79338A1C-5A2B-42D4-AF30-BBAB98613880}.Release|Any CPU.ActiveCfg = Release|Any CPU - {79338A1C-5A2B-42D4-AF30-BBAB98613880}.Release|Any CPU.Build.0 = Release|Any CPU - {79338A1C-5A2B-42D4-AF30-BBAB98613880}.Release|x64.ActiveCfg = Release|Any CPU - {79338A1C-5A2B-42D4-AF30-BBAB98613880}.Release|x64.Build.0 = Release|Any CPU - {79338A1C-5A2B-42D4-AF30-BBAB98613880}.Release|x86.ActiveCfg = Release|Any CPU - {79338A1C-5A2B-42D4-AF30-BBAB98613880}.Release|x86.Build.0 = Release|Any CPU - {6D91EB21-0E27-4F8A-9B65-397C831531C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6D91EB21-0E27-4F8A-9B65-397C831531C7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6D91EB21-0E27-4F8A-9B65-397C831531C7}.Debug|x64.ActiveCfg = Debug|Any CPU - {6D91EB21-0E27-4F8A-9B65-397C831531C7}.Debug|x64.Build.0 = Debug|Any CPU - {6D91EB21-0E27-4F8A-9B65-397C831531C7}.Debug|x86.ActiveCfg = Debug|Any CPU - {6D91EB21-0E27-4F8A-9B65-397C831531C7}.Debug|x86.Build.0 = Debug|Any CPU - {6D91EB21-0E27-4F8A-9B65-397C831531C7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6D91EB21-0E27-4F8A-9B65-397C831531C7}.Release|Any CPU.Build.0 = Release|Any CPU - {6D91EB21-0E27-4F8A-9B65-397C831531C7}.Release|x64.ActiveCfg = Release|Any CPU - {6D91EB21-0E27-4F8A-9B65-397C831531C7}.Release|x64.Build.0 = Release|Any CPU - {6D91EB21-0E27-4F8A-9B65-397C831531C7}.Release|x86.ActiveCfg = Release|Any CPU - {6D91EB21-0E27-4F8A-9B65-397C831531C7}.Release|x86.Build.0 = Release|Any CPU - {C19499AE-568C-4FE4-8E4F-EA6E2219E0FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C19499AE-568C-4FE4-8E4F-EA6E2219E0FF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C19499AE-568C-4FE4-8E4F-EA6E2219E0FF}.Debug|x64.ActiveCfg = Debug|Any CPU - {C19499AE-568C-4FE4-8E4F-EA6E2219E0FF}.Debug|x64.Build.0 = Debug|Any CPU - {C19499AE-568C-4FE4-8E4F-EA6E2219E0FF}.Debug|x86.ActiveCfg = Debug|Any CPU - {C19499AE-568C-4FE4-8E4F-EA6E2219E0FF}.Debug|x86.Build.0 = Debug|Any CPU - {C19499AE-568C-4FE4-8E4F-EA6E2219E0FF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C19499AE-568C-4FE4-8E4F-EA6E2219E0FF}.Release|Any CPU.Build.0 = Release|Any CPU - {C19499AE-568C-4FE4-8E4F-EA6E2219E0FF}.Release|x64.ActiveCfg = Release|Any CPU - {C19499AE-568C-4FE4-8E4F-EA6E2219E0FF}.Release|x64.Build.0 = Release|Any CPU - {C19499AE-568C-4FE4-8E4F-EA6E2219E0FF}.Release|x86.ActiveCfg = Release|Any CPU - {C19499AE-568C-4FE4-8E4F-EA6E2219E0FF}.Release|x86.Build.0 = Release|Any CPU - {287DC56C-725C-4FCE-9AFB-D4F9F3E7481C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {287DC56C-725C-4FCE-9AFB-D4F9F3E7481C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {287DC56C-725C-4FCE-9AFB-D4F9F3E7481C}.Debug|x64.ActiveCfg = Debug|Any CPU - {287DC56C-725C-4FCE-9AFB-D4F9F3E7481C}.Debug|x64.Build.0 = Debug|Any CPU - {287DC56C-725C-4FCE-9AFB-D4F9F3E7481C}.Debug|x86.ActiveCfg = Debug|Any CPU - {287DC56C-725C-4FCE-9AFB-D4F9F3E7481C}.Debug|x86.Build.0 = Debug|Any CPU - {287DC56C-725C-4FCE-9AFB-D4F9F3E7481C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {287DC56C-725C-4FCE-9AFB-D4F9F3E7481C}.Release|Any CPU.Build.0 = Release|Any CPU - {287DC56C-725C-4FCE-9AFB-D4F9F3E7481C}.Release|x64.ActiveCfg = Release|Any CPU - {287DC56C-725C-4FCE-9AFB-D4F9F3E7481C}.Release|x64.Build.0 = Release|Any CPU - {287DC56C-725C-4FCE-9AFB-D4F9F3E7481C}.Release|x86.ActiveCfg = Release|Any CPU - {287DC56C-725C-4FCE-9AFB-D4F9F3E7481C}.Release|x86.Build.0 = Release|Any CPU - {BDA5D50F-3ADA-41F5-8DE8-1C9E6CB64118}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BDA5D50F-3ADA-41F5-8DE8-1C9E6CB64118}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BDA5D50F-3ADA-41F5-8DE8-1C9E6CB64118}.Debug|x64.ActiveCfg = Debug|Any CPU - {BDA5D50F-3ADA-41F5-8DE8-1C9E6CB64118}.Debug|x64.Build.0 = Debug|Any CPU - {BDA5D50F-3ADA-41F5-8DE8-1C9E6CB64118}.Debug|x86.ActiveCfg = Debug|Any CPU - {BDA5D50F-3ADA-41F5-8DE8-1C9E6CB64118}.Debug|x86.Build.0 = Debug|Any CPU - {BDA5D50F-3ADA-41F5-8DE8-1C9E6CB64118}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BDA5D50F-3ADA-41F5-8DE8-1C9E6CB64118}.Release|Any CPU.Build.0 = Release|Any CPU - {BDA5D50F-3ADA-41F5-8DE8-1C9E6CB64118}.Release|x64.ActiveCfg = Release|Any CPU - {BDA5D50F-3ADA-41F5-8DE8-1C9E6CB64118}.Release|x64.Build.0 = Release|Any CPU - {BDA5D50F-3ADA-41F5-8DE8-1C9E6CB64118}.Release|x86.ActiveCfg = Release|Any CPU - {BDA5D50F-3ADA-41F5-8DE8-1C9E6CB64118}.Release|x86.Build.0 = Release|Any CPU - {850D52F8-D99D-468D-8A0D-8C42D3D16318}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {850D52F8-D99D-468D-8A0D-8C42D3D16318}.Debug|Any CPU.Build.0 = Debug|Any CPU - {850D52F8-D99D-468D-8A0D-8C42D3D16318}.Debug|x64.ActiveCfg = Debug|Any CPU - {850D52F8-D99D-468D-8A0D-8C42D3D16318}.Debug|x64.Build.0 = Debug|Any CPU - {850D52F8-D99D-468D-8A0D-8C42D3D16318}.Debug|x86.ActiveCfg = Debug|Any CPU - {850D52F8-D99D-468D-8A0D-8C42D3D16318}.Debug|x86.Build.0 = Debug|Any CPU - {850D52F8-D99D-468D-8A0D-8C42D3D16318}.Release|Any CPU.ActiveCfg = Release|Any CPU - {850D52F8-D99D-468D-8A0D-8C42D3D16318}.Release|Any CPU.Build.0 = Release|Any CPU - {850D52F8-D99D-468D-8A0D-8C42D3D16318}.Release|x64.ActiveCfg = Release|Any CPU - {850D52F8-D99D-468D-8A0D-8C42D3D16318}.Release|x64.Build.0 = Release|Any CPU - {850D52F8-D99D-468D-8A0D-8C42D3D16318}.Release|x86.ActiveCfg = Release|Any CPU - {850D52F8-D99D-468D-8A0D-8C42D3D16318}.Release|x86.Build.0 = Release|Any CPU - {25339E9B-7AE9-4CA2-986C-0606B75DC344}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {25339E9B-7AE9-4CA2-986C-0606B75DC344}.Debug|Any CPU.Build.0 = Debug|Any CPU - {25339E9B-7AE9-4CA2-986C-0606B75DC344}.Debug|x64.ActiveCfg = Debug|Any CPU - {25339E9B-7AE9-4CA2-986C-0606B75DC344}.Debug|x64.Build.0 = Debug|Any CPU - {25339E9B-7AE9-4CA2-986C-0606B75DC344}.Debug|x86.ActiveCfg = Debug|Any CPU - {25339E9B-7AE9-4CA2-986C-0606B75DC344}.Debug|x86.Build.0 = Debug|Any CPU - {25339E9B-7AE9-4CA2-986C-0606B75DC344}.Release|Any CPU.ActiveCfg = Release|Any CPU - {25339E9B-7AE9-4CA2-986C-0606B75DC344}.Release|Any CPU.Build.0 = Release|Any CPU - {25339E9B-7AE9-4CA2-986C-0606B75DC344}.Release|x64.ActiveCfg = Release|Any CPU - {25339E9B-7AE9-4CA2-986C-0606B75DC344}.Release|x64.Build.0 = Release|Any CPU - {25339E9B-7AE9-4CA2-986C-0606B75DC344}.Release|x86.ActiveCfg = Release|Any CPU - {25339E9B-7AE9-4CA2-986C-0606B75DC344}.Release|x86.Build.0 = Release|Any CPU - {B48569C5-16E7-478F-9270-810994007CE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B48569C5-16E7-478F-9270-810994007CE6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B48569C5-16E7-478F-9270-810994007CE6}.Debug|x64.ActiveCfg = Debug|Any CPU - {B48569C5-16E7-478F-9270-810994007CE6}.Debug|x64.Build.0 = Debug|Any CPU - {B48569C5-16E7-478F-9270-810994007CE6}.Debug|x86.ActiveCfg = Debug|Any CPU - {B48569C5-16E7-478F-9270-810994007CE6}.Debug|x86.Build.0 = Debug|Any CPU - {B48569C5-16E7-478F-9270-810994007CE6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B48569C5-16E7-478F-9270-810994007CE6}.Release|Any CPU.Build.0 = Release|Any CPU - {B48569C5-16E7-478F-9270-810994007CE6}.Release|x64.ActiveCfg = Release|Any CPU - {B48569C5-16E7-478F-9270-810994007CE6}.Release|x64.Build.0 = Release|Any CPU - {B48569C5-16E7-478F-9270-810994007CE6}.Release|x86.ActiveCfg = Release|Any CPU - {B48569C5-16E7-478F-9270-810994007CE6}.Release|x86.Build.0 = Release|Any CPU - {671862A9-4A85-45E6-9ED9-BF81AEA5141F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {671862A9-4A85-45E6-9ED9-BF81AEA5141F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {671862A9-4A85-45E6-9ED9-BF81AEA5141F}.Debug|x64.ActiveCfg = Debug|Any CPU - {671862A9-4A85-45E6-9ED9-BF81AEA5141F}.Debug|x64.Build.0 = Debug|Any CPU - {671862A9-4A85-45E6-9ED9-BF81AEA5141F}.Debug|x86.ActiveCfg = Debug|Any CPU - {671862A9-4A85-45E6-9ED9-BF81AEA5141F}.Debug|x86.Build.0 = Debug|Any CPU - {671862A9-4A85-45E6-9ED9-BF81AEA5141F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {671862A9-4A85-45E6-9ED9-BF81AEA5141F}.Release|Any CPU.Build.0 = Release|Any CPU - {671862A9-4A85-45E6-9ED9-BF81AEA5141F}.Release|x64.ActiveCfg = Release|Any CPU - {671862A9-4A85-45E6-9ED9-BF81AEA5141F}.Release|x64.Build.0 = Release|Any CPU - {671862A9-4A85-45E6-9ED9-BF81AEA5141F}.Release|x86.ActiveCfg = Release|Any CPU - {671862A9-4A85-45E6-9ED9-BF81AEA5141F}.Release|x86.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {BF35499A-12D1-4BEE-90C1-9C74F5236741} = {EC86EA97-FDE0-44A0-8A95-F0076988987F} - {DFE20AAB-EA60-4401-9FE5-C2D32F81BC11} = {EC86EA97-FDE0-44A0-8A95-F0076988987F} - {CBA2C308-CD96-407F-ACB3-B83AD7CA0B08} = {EC86EA97-FDE0-44A0-8A95-F0076988987F} - {A74C6952-488E-4926-BE04-E17684FDAA0C} = {F64D0F04-967C-4AC2-92C0-C93C4C04AFAA} - {49EF5E85-E0CD-47CA-9489-2434649CA6FD} = {A74C6952-488E-4926-BE04-E17684FDAA0C} - {EC86EA97-FDE0-44A0-8A95-F0076988987F} = {49EF5E85-E0CD-47CA-9489-2434649CA6FD} - {8C0538E7-6662-4508-960F-F0193A0E02E6} = {EC86EA97-FDE0-44A0-8A95-F0076988987F} - {B3108BC1-2E87-4155-9B80-6D4DDD6C7D01} = {EC86EA97-FDE0-44A0-8A95-F0076988987F} - {5419B69C-7DBE-4006-B62F-38BC06935A6A} = {EC86EA97-FDE0-44A0-8A95-F0076988987F} - {DF85BF81-EE96-41EF-AA3F-ED1EAE463619} = {49EF5E85-E0CD-47CA-9489-2434649CA6FD} - {095A4A6A-6A1D-4493-AC12-527199274635} = {DF85BF81-EE96-41EF-AA3F-ED1EAE463619} - {4BFC28A4-20D7-487E-AEFB-EAD48D7BB01C} = {DF85BF81-EE96-41EF-AA3F-ED1EAE463619} - {614B6038-7A52-407E-B48C-79817C1F7669} = {DF85BF81-EE96-41EF-AA3F-ED1EAE463619} - {1294BA2E-698E-4B71-9437-55088B620849} = {DF85BF81-EE96-41EF-AA3F-ED1EAE463619} - {C3176341-2229-42A7-A9DF-846CB8C360A9} = {EC86EA97-FDE0-44A0-8A95-F0076988987F} - {4FBDBE52-2844-47F0-8D2E-CA06234E76A8} = {EC86EA97-FDE0-44A0-8A95-F0076988987F} - {3F7A94C8-F84A-43A3-9276-B2F5F3047394} = {F64D0F04-967C-4AC2-92C0-C93C4C04AFAA} - {057BB3A2-3548-4B4A-8D5E-B6E527D0BD3B} = {3F7A94C8-F84A-43A3-9276-B2F5F3047394} - {0BF5C2B5-0F01-48B5-BE4E-5E3E13D149A6} = {057BB3A2-3548-4B4A-8D5E-B6E527D0BD3B} - {9EC5AB81-93F6-4150-9F67-61A0C2207E27} = {057BB3A2-3548-4B4A-8D5E-B6E527D0BD3B} - {EF89CDDF-DD30-43FF-A14D-05EFA08FE508} = {3F7A94C8-F84A-43A3-9276-B2F5F3047394} - {946AC805-126B-489D-BADF-D9823955E482} = {EF89CDDF-DD30-43FF-A14D-05EFA08FE508} - {B5CB45DC-4DED-4EE2-9242-3F7B0EAEAF58} = {EF89CDDF-DD30-43FF-A14D-05EFA08FE508} - {86EB6286-8842-4D4C-896B-BB7E5BB5D6D6} = {EF89CDDF-DD30-43FF-A14D-05EFA08FE508} - {69DA869D-1797-4417-8102-F02D3AD7C029} = {EF89CDDF-DD30-43FF-A14D-05EFA08FE508} - {DF8723BA-89E4-455F-8D0D-61859E6F4631} = {EF89CDDF-DD30-43FF-A14D-05EFA08FE508} - {50646A7D-3564-442A-A08C-CCAF3FAA64D4} = {EF89CDDF-DD30-43FF-A14D-05EFA08FE508} - {D2EBE7E5-3679-471F-812D-77A3997C6BD3} = {EF89CDDF-DD30-43FF-A14D-05EFA08FE508} - {8FE2DF3A-4675-4577-AC0C-77D8BF8841CB} = {EF89CDDF-DD30-43FF-A14D-05EFA08FE508} - {DD455B6C-392A-4D04-A031-46D491722A9F} = {EF89CDDF-DD30-43FF-A14D-05EFA08FE508} - {3B612B74-8DF0-4B45-8C49-4883022467C2} = {A74C6952-488E-4926-BE04-E17684FDAA0C} - {88514BF5-4E9B-4781-8F11-5A181E287BA2} = {3B612B74-8DF0-4B45-8C49-4883022467C2} - {B0DAF5CC-6B09-48EE-9438-99BE81AC704C} = {3B612B74-8DF0-4B45-8C49-4883022467C2} - {CC44E5B9-E246-44FE-81B3-82394BF84707} = {3B612B74-8DF0-4B45-8C49-4883022467C2} - {A31CF827-F17B-48C1-9EB1-31D2EF87BD66} = {3B612B74-8DF0-4B45-8C49-4883022467C2} - {5FFDBDCB-7524-438E-9C4F-4FA4A9CF13A8} = {3F7A94C8-F84A-43A3-9276-B2F5F3047394} - {1721B3E2-4CE8-4FAF-A00B-766478F60B54} = {5FFDBDCB-7524-438E-9C4F-4FA4A9CF13A8} - {6E4E4DF1-9A3E-4DB6-98BC-6784125A8FF5} = {5FFDBDCB-7524-438E-9C4F-4FA4A9CF13A8} - {6B9F3B39-7CDA-46ED-BAFC-F54A57792597} = {5FFDBDCB-7524-438E-9C4F-4FA4A9CF13A8} - {17C03355-60EB-4A66-A62B-DF2A8407FF8F} = {5FFDBDCB-7524-438E-9C4F-4FA4A9CF13A8} - {38087D48-66EF-4379-9989-CA6F2CA7DAC9} = {5FFDBDCB-7524-438E-9C4F-4FA4A9CF13A8} - {ADECA52F-A04F-4A8F-812E-59A9FBE3EC68} = {5FFDBDCB-7524-438E-9C4F-4FA4A9CF13A8} - {6AD1E7B2-B9A7-497C-A61D-21C6FCE9F3BC} = {5FFDBDCB-7524-438E-9C4F-4FA4A9CF13A8} - {097E5E27-6233-45BC-9C76-81C9ECF34DE2} = {5FFDBDCB-7524-438E-9C4F-4FA4A9CF13A8} - {934740D8-9853-4EF7-AD9E-1A090329E70E} = {2CF2BB74-B979-4610-9A38-CAF45EEC27BD} - {E40CF076-974B-4882-8B68-2FE71A7266E3} = {F64D0F04-967C-4AC2-92C0-C93C4C04AFAA} - {2CF2BB74-B979-4610-9A38-CAF45EEC27BD} = {E40CF076-974B-4882-8B68-2FE71A7266E3} - {9CFD42DE-61AE-4FD0-BBAD-A85807025C19} = {2CF2BB74-B979-4610-9A38-CAF45EEC27BD} - {BF9294FF-74C6-4777-9B69-7867F161F582} = {E40CF076-974B-4882-8B68-2FE71A7266E3} - {0B3E0C08-2F75-40A4-A35B-0C335F9C1D61} = {BF9294FF-74C6-4777-9B69-7867F161F582} - {1521D741-3C9A-47D9-8CC2-062B881AA1D1} = {0B3E0C08-2F75-40A4-A35B-0C335F9C1D61} - {C746B9BF-0DE6-4D3A-B537-EC132486C76A} = {0B3E0C08-2F75-40A4-A35B-0C335F9C1D61} - {8075BE2B-9D61-42D9-B099-F5854AEA4C86} = {A74C6952-488E-4926-BE04-E17684FDAA0C} - {3046E8E0-2116-4FA2-B4EC-9BAAA181069C} = {A74C6952-488E-4926-BE04-E17684FDAA0C} - {4A26BBA8-2CDF-47C2-9028-8197C45F5F2E} = {F64D0F04-967C-4AC2-92C0-C93C4C04AFAA} - {B352F52C-5091-4857-9BA8-3CD1221FC447} = {4A26BBA8-2CDF-47C2-9028-8197C45F5F2E} - {C403C0EA-AB5D-4769-8D6D-C507BCBD2684} = {4A26BBA8-2CDF-47C2-9028-8197C45F5F2E} - {B6D6F885-55E8-4A2C-A873-54953586E387} = {4A26BBA8-2CDF-47C2-9028-8197C45F5F2E} - {6ECDFE7A-CF7C-478B-922F-0CA23BE51A58} = {B6D6F885-55E8-4A2C-A873-54953586E387} - {58C7C38B-63B8-485B-9051-7A804E7DC270} = {B6D6F885-55E8-4A2C-A873-54953586E387} - {5323002C-F5BF-40A2-9732-23F9E25EB8AA} = {B6D6F885-55E8-4A2C-A873-54953586E387} - {77A8D383-EFCA-44E2-BFF0-F179B245E4A9} = {B6D6F885-55E8-4A2C-A873-54953586E387} - {E0B5CE9F-FB29-4873-A434-8D22F22EE84E} = {B6D6F885-55E8-4A2C-A873-54953586E387} - {824E112B-6FD9-4E73-BC0F-7E9FFA089CB2} = {B6D6F885-55E8-4A2C-A873-54953586E387} - {B997EAFC-13A1-48EB-8581-B9E3074F7A26} = {B6D6F885-55E8-4A2C-A873-54953586E387} - {47736DBE-538F-4A65-8AD3-3DD803343C81} = {3B612B74-8DF0-4B45-8C49-4883022467C2} - {65BAA9ED-E48A-4868-9C6C-90DF2E00AA5D} = {F64D0F04-967C-4AC2-92C0-C93C4C04AFAA} - {3F73FB3A-9E0D-4777-8306-AEA1BD9FBF06} = {65BAA9ED-E48A-4868-9C6C-90DF2E00AA5D} - {956E7526-FD0A-4E38-AF31-B99D4B1FE17F} = {3F73FB3A-9E0D-4777-8306-AEA1BD9FBF06} - {8B71A10A-B37F-447C-86DE-6460B5159BD0} = {E40CF076-974B-4882-8B68-2FE71A7266E3} - {28247C7F-D953-4148-B2B5-FFC566202651} = {4A26BBA8-2CDF-47C2-9028-8197C45F5F2E} - {DBE71E97-BE9F-4B06-AADD-3D775BB9F5F3} = {28247C7F-D953-4148-B2B5-FFC566202651} - {92A58FFE-C27A-4C5E-B6EF-0CF4C5C86CD9} = {DBE71E97-BE9F-4B06-AADD-3D775BB9F5F3} - {4DFB1EEE-D389-4FE1-8710-F1D364790715} = {4A26BBA8-2CDF-47C2-9028-8197C45F5F2E} - {64DAD0ED-C4A5-4460-9559-69CD02BFE134} = {4DFB1EEE-D389-4FE1-8710-F1D364790715} - {5DEBB03B-5502-444A-9E50-E943A18F50D1} = {4DFB1EEE-D389-4FE1-8710-F1D364790715} - {0E0F6C16-9633-486B-A09B-64717AF3EA63} = {A74C6952-488E-4926-BE04-E17684FDAA0C} - {70950A43-0516-4902-B37F-9DE9EDF96FC6} = {0E0F6C16-9633-486B-A09B-64717AF3EA63} - {E4A44DBD-9790-4C08-8AAF-C7215E514706} = {0E0F6C16-9633-486B-A09B-64717AF3EA63} - {C98EAE44-7B2D-4AC8-858C-D74C806225CA} = {F64D0F04-967C-4AC2-92C0-C93C4C04AFAA} - {F7051618-E80F-4B53-B97D-D58147224630} = {9BDA35D4-07CE-4BE2-B3D6-F33CA456875A} - {9BDA35D4-07CE-4BE2-B3D6-F33CA456875A} = {C98EAE44-7B2D-4AC8-858C-D74C806225CA} - {6C01471F-C35B-4390-9C76-F71CD8BD227F} = {9BDA35D4-07CE-4BE2-B3D6-F33CA456875A} - {87B5CB14-2AFF-40CA-B5B1-D9214D5A8ADF} = {49EF5E85-E0CD-47CA-9489-2434649CA6FD} - {D06AB451-D752-48A1-9A35-8AECCAE1AF61} = {87B5CB14-2AFF-40CA-B5B1-D9214D5A8ADF} - {C893DDA9-D185-4C60-AF13-3719474D638A} = {87B5CB14-2AFF-40CA-B5B1-D9214D5A8ADF} - {B4781ABB-45AF-43A9-881B-BEAD004A98F3} = {4DFB1EEE-D389-4FE1-8710-F1D364790715} - {3C69A73F-3C17-4963-9BAD-69BA7D2FC059} = {B4781ABB-45AF-43A9-881B-BEAD004A98F3} - {909F9E92-42D8-4A67-8540-6AADD647102E} = {4A26BBA8-2CDF-47C2-9028-8197C45F5F2E} - {8AD99F31-1B31-45CF-A1A2-3BAD6F7BAC00} = {909F9E92-42D8-4A67-8540-6AADD647102E} - {0CFA4CE4-B4B8-48F0-9D2E-E7FD7EE79ABD} = {4A26BBA8-2CDF-47C2-9028-8197C45F5F2E} - {CE284858-D665-4B68-B921-419FEBC8159B} = {0CFA4CE4-B4B8-48F0-9D2E-E7FD7EE79ABD} - {BA281A36-2842-48EC-B2A7-93C7C81C5BCC} = {3B9AF35F-45F6-4652-A197-99B939812205} - {16D9B8DC-6C57-47F7-BBCC-68E9927D7AFE} = {E40CF076-974B-4882-8B68-2FE71A7266E3} - {A9572C4A-7A90-4779-8BBE-35457C2CA601} = {16D9B8DC-6C57-47F7-BBCC-68E9927D7AFE} - {BE575FEA-FA7A-4196-AE0A-6834CE34CE59} = {16D9B8DC-6C57-47F7-BBCC-68E9927D7AFE} - {F99B42FF-45A3-46E8-BE58-EC38C83E06E4} = {16D9B8DC-6C57-47F7-BBCC-68E9927D7AFE} - {87D52AC1-D713-4D70-BD09-6F8E1981FC9E} = {E40CF076-974B-4882-8B68-2FE71A7266E3} - {231BEB1C-7F5A-4401-B2DE-1D21A7562924} = {E40CF076-974B-4882-8B68-2FE71A7266E3} - {4DB8DFA1-82F0-4585-BC1C-32AB93A4F928} = {231BEB1C-7F5A-4401-B2DE-1D21A7562924} - {E5BA6D7A-B104-48F2-B4ED-42DC6B4B7520} = {87D52AC1-D713-4D70-BD09-6F8E1981FC9E} - {028EBB7D-C7D4-4EB1-AABD-3BF2D5BB8D4B} = {87D52AC1-D713-4D70-BD09-6F8E1981FC9E} - {E791AE5F-7B7E-4CEF-897B-0A8D72CDE445} = {231BEB1C-7F5A-4401-B2DE-1D21A7562924} - {6FBA50C2-1277-4EDA-BA07-03D4145B0732} = {4A26BBA8-2CDF-47C2-9028-8197C45F5F2E} - {5284B03E-A850-4D19-A648-AC9B5AE6BAC0} = {6FBA50C2-1277-4EDA-BA07-03D4145B0732} - {0ABCB063-EBB6-41D9-8515-AE3825C5F3C4} = {5284B03E-A850-4D19-A648-AC9B5AE6BAC0} - {52B5D05F-9F76-41A8-9334-2580ACE435C6} = {0ABCB063-EBB6-41D9-8515-AE3825C5F3C4} - {99318E2F-805D-4AF7-8E51-BAF6FCC257CE} = {E40CF076-974B-4882-8B68-2FE71A7266E3} - {44938E1F-6821-476A-A9C1-8D35839D25AF} = {F64D0F04-967C-4AC2-92C0-C93C4C04AFAA} - {16F97640-3694-4BA8-98E3-FF4A7C602BE1} = {44938E1F-6821-476A-A9C1-8D35839D25AF} - {E68F82B2-14C7-47C5-9747-62C262722D1E} = {16F97640-3694-4BA8-98E3-FF4A7C602BE1} - {4E4EFE27-E464-477E-81EC-25C7494F3576} = {BDA50AE4-E6AF-4861-A580-5A8ED29DBE37} - {EBCA4B00-6277-46D6-AF36-E638CCC610E2} = {16F97640-3694-4BA8-98E3-FF4A7C602BE1} - {C1A415DC-597E-4AD8-8A89-C6AF52F5026D} = {16F97640-3694-4BA8-98E3-FF4A7C602BE1} - {AC7213D9-5A97-429C-B1A0-964B8A9C2F1B} = {44938E1F-6821-476A-A9C1-8D35839D25AF} - {211FD731-0F62-4910-8343-6AA5ADA9686E} = {AC7213D9-5A97-429C-B1A0-964B8A9C2F1B} - {7B2497DF-1016-4C40-B894-9EDE00B4CA56} = {AC7213D9-5A97-429C-B1A0-964B8A9C2F1B} - {0C0F48CF-FEAB-482B-95CE-CCC9C626A7D5} = {44938E1F-6821-476A-A9C1-8D35839D25AF} - {9BD06E47-C47D-455E-84AD-B9835BDA2943} = {0C0F48CF-FEAB-482B-95CE-CCC9C626A7D5} - {4B3CF3C7-EF23-4149-8024-963201BE5EB4} = {0C0F48CF-FEAB-482B-95CE-CCC9C626A7D5} - {634B6143-B564-4FA9-BF7B-7D15F26045BA} = {0C0F48CF-FEAB-482B-95CE-CCC9C626A7D5} - {049C8D2C-B00E-4369-90A6-6043C393C2ED} = {0C0F48CF-FEAB-482B-95CE-CCC9C626A7D5} - {68B2586F-5AE9-4754-AAB3-BB6512581CF3} = {E40CF076-974B-4882-8B68-2FE71A7266E3} - {171A091E-0477-4CC6-AC83-F0FFF5594375} = {68B2586F-5AE9-4754-AAB3-BB6512581CF3} - {014491C6-58A0-4DFA-ACFC-4988ADCD546A} = {68B2586F-5AE9-4754-AAB3-BB6512581CF3} - {6D4E6E9C-39F7-44D9-95F2-BE8B5B07B279} = {E40CF076-974B-4882-8B68-2FE71A7266E3} - {C94242B3-AF74-4966-9508-55CEA7B589E9} = {6D4E6E9C-39F7-44D9-95F2-BE8B5B07B279} - {73162237-344C-4196-9754-F0D270649C0E} = {6D4E6E9C-39F7-44D9-95F2-BE8B5B07B279} - {5E2F6EFC-61EF-467E-85C8-17CDB62DE450} = {6D4E6E9C-39F7-44D9-95F2-BE8B5B07B279} - {8A0F5048-C9A6-4206-971F-696C4695D3C9} = {E40CF076-974B-4882-8B68-2FE71A7266E3} - {98776527-60A3-4346-8A3E-A74A6D9FEEB4} = {8A0F5048-C9A6-4206-971F-696C4695D3C9} - {028A8572-A183-43DC-BE68-622C36ED36DA} = {8A0F5048-C9A6-4206-971F-696C4695D3C9} - {C3D5CA53-026A-4996-BC2F-9A3849536537} = {3F7A94C8-F84A-43A3-9276-B2F5F3047394} - {30DA959F-B00E-4649-BB59-5BB83B4FD516} = {A74C6952-488E-4926-BE04-E17684FDAA0C} - {AB21D4DB-F483-4977-A75F-8763198B941B} = {30DA959F-B00E-4649-BB59-5BB83B4FD516} - {B31F1FBD-F505-42D9-9761-05A5E19F87B1} = {30DA959F-B00E-4649-BB59-5BB83B4FD516} - {4D20BE29-3DB1-479D-B4E8-BA900BBB48B1} = {A74C6952-488E-4926-BE04-E17684FDAA0C} - {ABD44B89-6B8C-4902-8EB4-DB6F4F19C9D3} = {A74C6952-488E-4926-BE04-E17684FDAA0C} - {45EAC490-1351-4FB5-9E16-AAFEEDDB36AD} = {A74C6952-488E-4926-BE04-E17684FDAA0C} - {79338A1C-5A2B-42D4-AF30-BBAB98613880} = {A74C6952-488E-4926-BE04-E17684FDAA0C} - {6D91EB21-0E27-4F8A-9B65-397C831531C7} = {A74C6952-488E-4926-BE04-E17684FDAA0C} - {D6B1DEF4-8447-45F7-9A80-5448EE354371} = {A74C6952-488E-4926-BE04-E17684FDAA0C} - {C19499AE-568C-4FE4-8E4F-EA6E2219E0FF} = {D6B1DEF4-8447-45F7-9A80-5448EE354371} - {488267F7-B4B5-4A2E-9488-51E8472220BC} = {49EF5E85-E0CD-47CA-9489-2434649CA6FD} - {287DC56C-725C-4FCE-9AFB-D4F9F3E7481C} = {488267F7-B4B5-4A2E-9488-51E8472220BC} - {25339E9B-7AE9-4CA2-986C-0606B75DC344} = {4E3A307F-6683-4806-8C92-374ECF37B434} - {B48569C5-16E7-478F-9270-810994007CE6} = {4E3A307F-6683-4806-8C92-374ECF37B434} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {82D57A23-9C32-4014-9AFB-25B38D08E1D1} - EndGlobalSection -EndGlobal diff --git a/WinUIClassicSamplesBrowser.Core/Contracts/Services/IFileService.cs b/WinUIClassicSamplesBrowser.Core/Contracts/Services/IFileService.cs new file mode 100644 index 00000000..b79bdc34 --- /dev/null +++ b/WinUIClassicSamplesBrowser.Core/Contracts/Services/IFileService.cs @@ -0,0 +1,10 @@ +namespace WinUIClassicSamplesBrowser.Core.Contracts.Services; + +public interface IFileService +{ + T Read(string folderPath, string fileName); + + void Save(string folderPath, string fileName, T content); + + void Delete(string folderPath, string fileName); +} diff --git a/WinUIClassicSamplesBrowser.Core/Helpers/Json.cs b/WinUIClassicSamplesBrowser.Core/Helpers/Json.cs new file mode 100644 index 00000000..2f80acde --- /dev/null +++ b/WinUIClassicSamplesBrowser.Core/Helpers/Json.cs @@ -0,0 +1,22 @@ +using Newtonsoft.Json; + +namespace WinUIClassicSamplesBrowser.Core.Helpers; + +public static class Json +{ + public static async Task ToObjectAsync(string value) + { + return await Task.Run(() => + { + return JsonConvert.DeserializeObject(value); + }); + } + + public static async Task StringifyAsync(object value) + { + return await Task.Run(() => + { + return JsonConvert.SerializeObject(value); + }); + } +} diff --git a/WinUIClassicSamplesBrowser.Core/README.md b/WinUIClassicSamplesBrowser.Core/README.md new file mode 100644 index 00000000..906c066e --- /dev/null +++ b/WinUIClassicSamplesBrowser.Core/README.md @@ -0,0 +1,5 @@ +*Recommended Markdown Viewer: [Markdown Editor](https://marketplace.visualstudio.com/items?itemName=MadsKristensen.MarkdownEditor2)* + +## Getting Started + +The Core project contains code that can be [reused across multiple application projects](https://docs.microsoft.com/dotnet/standard/net-standard#net-5-and-net-standard). diff --git a/WinUIClassicSamplesBrowser.Core/Services/FileService.cs b/WinUIClassicSamplesBrowser.Core/Services/FileService.cs new file mode 100644 index 00000000..9f300be9 --- /dev/null +++ b/WinUIClassicSamplesBrowser.Core/Services/FileService.cs @@ -0,0 +1,41 @@ +using System.Text; + +using Newtonsoft.Json; + +using WinUIClassicSamplesBrowser.Core.Contracts.Services; + +namespace WinUIClassicSamplesBrowser.Core.Services; + +public class FileService : IFileService +{ + public T Read(string folderPath, string fileName) + { + var path = Path.Combine(folderPath, fileName); + if (File.Exists(path)) + { + var json = File.ReadAllText(path); + return JsonConvert.DeserializeObject(json); + } + + return default; + } + + public void Save(string folderPath, string fileName, T content) + { + if (!Directory.Exists(folderPath)) + { + Directory.CreateDirectory(folderPath); + } + + var fileContent = JsonConvert.SerializeObject(content); + File.WriteAllText(Path.Combine(folderPath, fileName), fileContent, Encoding.UTF8); + } + + public void Delete(string folderPath, string fileName) + { + if (fileName != null && File.Exists(Path.Combine(folderPath, fileName))) + { + File.Delete(Path.Combine(folderPath, fileName)); + } + } +} diff --git a/WinUIClassicSamplesBrowser.Core/WinUIClassicSamplesBrowser.Core.csproj b/WinUIClassicSamplesBrowser.Core/WinUIClassicSamplesBrowser.Core.csproj new file mode 100644 index 00000000..ac5f582d --- /dev/null +++ b/WinUIClassicSamplesBrowser.Core/WinUIClassicSamplesBrowser.Core.csproj @@ -0,0 +1,17 @@ + + + net7.0 + WinUIClassicSamplesBrowser.Core + AnyCPU;x64;x86 + x86;x64;arm64;AnyCPU + enable + + + + + + + + + + diff --git a/WinUIClassicSamplesBrowser/Activation/ActivationHandler.cs b/WinUIClassicSamplesBrowser/Activation/ActivationHandler.cs new file mode 100644 index 00000000..4bbd4528 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Activation/ActivationHandler.cs @@ -0,0 +1,17 @@ +namespace WinUIClassicSamplesBrowser.Activation; + +// Extend this class to implement new ActivationHandlers. See DefaultActivationHandler for an example. +// https://github.com/microsoft/TemplateStudio/blob/main/docs/WinUI/activation.md +public abstract class ActivationHandler : IActivationHandler + where T : class +{ + // Override this method to add the logic for whether to handle the activation. + protected virtual bool CanHandleInternal(T args) => true; + + // Override this method to add the logic for your activation handler. + protected abstract Task HandleInternalAsync(T args); + + public bool CanHandle(object args) => args is T && CanHandleInternal((args as T)!); + + public async Task HandleAsync(object args) => await HandleInternalAsync((args as T)!); +} diff --git a/WinUIClassicSamplesBrowser/Activation/AppNotificationActivationHandler.cs b/WinUIClassicSamplesBrowser/Activation/AppNotificationActivationHandler.cs new file mode 100644 index 00000000..01101361 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Activation/AppNotificationActivationHandler.cs @@ -0,0 +1,51 @@ +using Microsoft.UI.Dispatching; +using Microsoft.UI.Xaml; +using Microsoft.Windows.AppLifecycle; +using Microsoft.Windows.AppNotifications; + +using WinUIClassicSamplesBrowser.Contracts.Services; +using WinUIClassicSamplesBrowser.ViewModels; + +namespace WinUIClassicSamplesBrowser.Activation; + +public class AppNotificationActivationHandler : ActivationHandler +{ + private readonly INavigationService _navigationService; + private readonly IAppNotificationService _notificationService; + + public AppNotificationActivationHandler(INavigationService navigationService, IAppNotificationService notificationService) + { + _navigationService = navigationService; + _notificationService = notificationService; + } + + protected override bool CanHandleInternal(LaunchActivatedEventArgs args) + { + return AppInstance.GetCurrent().GetActivatedEventArgs()?.Kind == ExtendedActivationKind.AppNotification; + } + + protected async override Task HandleInternalAsync(LaunchActivatedEventArgs args) + { + // TODO: Handle notification activations. + + //// // Access the AppNotificationActivatedEventArgs. + //// var activatedEventArgs = (AppNotificationActivatedEventArgs)AppInstance.GetCurrent().GetActivatedEventArgs().Data; + + //// // Navigate to a specific page based on the notification arguments. + //// if (_notificationService.ParseArguments(activatedEventArgs.Argument)["action"] == "Settings") + //// { + //// // Queue navigation with low priority to allow the UI to initialize. + //// App.MainWindow.DispatcherQueue.TryEnqueue(DispatcherQueuePriority.Low, () => + //// { + //// _navigationService.NavigateTo(typeof(SettingsViewModel).FullName!); + //// }); + //// } + + App.MainWindow.DispatcherQueue.TryEnqueue(DispatcherQueuePriority.Low, () => + { + App.MainWindow.ShowMessageDialogAsync("TODO: Handle notification activations.", "Notification Activation"); + }); + + await Task.CompletedTask; + } +} diff --git a/WinUIClassicSamplesBrowser/Activation/DefaultActivationHandler.cs b/WinUIClassicSamplesBrowser/Activation/DefaultActivationHandler.cs new file mode 100644 index 00000000..8cb8e2d9 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Activation/DefaultActivationHandler.cs @@ -0,0 +1,29 @@ +using Microsoft.UI.Xaml; + +using WinUIClassicSamplesBrowser.Contracts.Services; +using WinUIClassicSamplesBrowser.ViewModels; + +namespace WinUIClassicSamplesBrowser.Activation; + +public class DefaultActivationHandler : ActivationHandler +{ + private readonly INavigationService _navigationService; + + public DefaultActivationHandler(INavigationService navigationService) + { + _navigationService = navigationService; + } + + protected override bool CanHandleInternal(LaunchActivatedEventArgs args) + { + // None of the ActivationHandlers has handled the activation. + return _navigationService.Frame?.Content == null; + } + + protected async override Task HandleInternalAsync(LaunchActivatedEventArgs args) + { + _navigationService.NavigateTo(typeof(MainViewModel).FullName!, args.Arguments); + + await Task.CompletedTask; + } +} diff --git a/WinUIClassicSamplesBrowser/Activation/IActivationHandler.cs b/WinUIClassicSamplesBrowser/Activation/IActivationHandler.cs new file mode 100644 index 00000000..9d79dcc4 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Activation/IActivationHandler.cs @@ -0,0 +1,8 @@ +namespace WinUIClassicSamplesBrowser.Activation; + +public interface IActivationHandler +{ + bool CanHandle(object args); + + Task HandleAsync(object args); +} diff --git a/WinUIClassicSamplesBrowser/App.xaml b/WinUIClassicSamplesBrowser/App.xaml new file mode 100644 index 00000000..df0dd996 --- /dev/null +++ b/WinUIClassicSamplesBrowser/App.xaml @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/WinUIClassicSamplesBrowser/App.xaml.cs b/WinUIClassicSamplesBrowser/App.xaml.cs new file mode 100644 index 00000000..630571dc --- /dev/null +++ b/WinUIClassicSamplesBrowser/App.xaml.cs @@ -0,0 +1,109 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.UI.Xaml; + +using WinUIClassicSamplesBrowser.Activation; +using WinUIClassicSamplesBrowser.Contracts.Services; +using WinUIClassicSamplesBrowser.Core.Contracts.Services; +using WinUIClassicSamplesBrowser.Core.Services; +using WinUIClassicSamplesBrowser.Helpers; +using WinUIClassicSamplesBrowser.Models; +using WinUIClassicSamplesBrowser.Notifications; +using WinUIClassicSamplesBrowser.Services; +using WinUIClassicSamplesBrowser.ViewModels; +using WinUIClassicSamplesBrowser.Views; + +namespace WinUIClassicSamplesBrowser; + +// To learn more about WinUI 3, see https://docs.microsoft.com/windows/apps/winui/winui3/. +public partial class App : Application +{ + // The .NET Generic Host provides dependency injection, configuration, logging, and other services. + // https://docs.microsoft.com/dotnet/core/extensions/generic-host + // https://docs.microsoft.com/dotnet/core/extensions/dependency-injection + // https://docs.microsoft.com/dotnet/core/extensions/configuration + // https://docs.microsoft.com/dotnet/core/extensions/logging + public IHost Host + { + get; + } + + public static T GetService() + where T : class + { + if ((App.Current as App)!.Host.Services.GetService(typeof(T)) is not T service) + { + throw new ArgumentException($"{typeof(T)} needs to be registered in ConfigureServices within App.xaml.cs."); + } + + return service; + } + + public static WindowEx MainWindow { get; } = new MainWindow(); + + public static UIElement? AppTitlebar { get; set; } + + public App() + { + InitializeComponent(); + + Host = Microsoft.Extensions.Hosting.Host. + CreateDefaultBuilder(). + UseContentRoot(AppContext.BaseDirectory). + ConfigureServices((context, services) => + { + // Default Activation Handler + services.AddTransient, DefaultActivationHandler>(); + + // Other Activation Handlers + services.AddTransient(); + + // Services + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddTransient(); + services.AddTransient(); + + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + + // Core Services + services.AddSingleton(); + + // Views and ViewModels + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + + // Configuration + services.Configure(context.Configuration.GetSection(nameof(LocalSettingsOptions))); + }). + Build(); + + App.GetService().Initialize(); + + UnhandledException += App_UnhandledException; + } + + private void App_UnhandledException(object sender, Microsoft.UI.Xaml.UnhandledExceptionEventArgs e) + { + // TODO: Log and handle exceptions as appropriate. + // https://docs.microsoft.com/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.application.unhandledexception. + } + + protected async override void OnLaunched(LaunchActivatedEventArgs args) + { + base.OnLaunched(args); + + App.GetService().Show(string.Format("AppNotificationSamplePayload".GetLocalized(), AppContext.BaseDirectory)); + + await App.GetService().ActivateAsync(args); + } +} diff --git a/WinUIClassicSamplesBrowser/Assets/LockScreenLogo.scale-200.png b/WinUIClassicSamplesBrowser/Assets/LockScreenLogo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..735f57adb5dfc01886d137b4e493d7e97cf13af3 GIT binary patch literal 1430 zcmaJ>TTC2P7~aKltDttVHYH6u8Io4i*}3fO&d$gd*bA_<3j~&e7%8(eXJLfhS!M@! zKrliY>>6yT4+Kr95$!DoD(Qn-5TP|{V_KS`k~E6(LGS@#`v$hQo&^^BKsw3HIsZBT z_y6C2n`lK@apunKojRQ^(_P}Mgewt$(^BBKCTZ;*xa?J3wQ7~@S0lUvbcLeq1Bg4o zH-bvQi|wt~L7q$~a-gDFP!{&TQfc3fX*6=uHv* zT&1&U(-)L%Xp^djI2?~eBF2cxC@YOP$+9d?P&h?lPy-9M2UT9fg5jKm1t$m#iWE{M zIf%q9@;fyT?0UP>tcw-bLkz;s2LlKl2qeP0w zECS7Ate+Awk|KQ+DOk;fl}Xsy4o^CY=pwq%QAAKKl628_yNPsK>?A>%D8fQG6IgdJ ztnxttBz#NI_a@fk7SU`WtrpsfZsNs9^0(2a z@C3#YO3>k~w7?2hipBf{#b6`}Xw1hlG$yi?;1dDs7k~xDAw@jiI*+tc;t2Lflg&bM)0!Y;0_@=w%`LW^8DsYpS#-bLOklX9r?Ei}TScw|4DbpW%+7 zFgAI)f51s}{y-eWb|vrU-Ya!GuYKP)J7z#*V_k^Xo>4!1Yqj*m)x&0L^tg3GJbVAJ zJ-Pl$R=NAabouV=^z_t;^K*0AvFs!vYU>_<|I^#c?>>CR<(T?=%{;U=aI*SbZADLH z&(f2wz_Y0??Tf|g;?|1Znw6}6U43Q#qNRwv1vp9uFn1)V#*4p&%$mP9x&15^OaBiDS(XppT|z^>;B{PLVEbS3IFYV yGvCsSX*m literal 0 HcmV?d00001 diff --git a/WinUIClassicSamplesBrowser/Assets/SplashScreen.scale-200.png b/WinUIClassicSamplesBrowser/Assets/SplashScreen.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..023e7f1feda78d5100569825acedfd213a0d84e9 GIT binary patch literal 7700 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 literal 0 HcmV?d00001 diff --git a/WinUIClassicSamplesBrowser/Assets/Square150x150Logo.scale-200.png b/WinUIClassicSamplesBrowser/Assets/Square150x150Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..af49fec1a5484db1d52a7f9b5ec90a27c7030186 GIT binary patch literal 2937 zcma)84OCO-8BSud5)jwMLRVKgX(S?$n?Ld|vrsm<$CF7)&zTbyy1FE5bU`Q17MRv`9ue$;R(@8kR;#vJ*IM0>cJIAOte!d7oRgdH zd%ySjdB6L9=gX^A6)VzH7p2l@v~3zJAMw|DFy#^)F@@F*`mqUn=Il>l)8_+ab;nOW{%+iPx z+s{Eu|&pIs)Z7{La9~?xKfyl z#43?gjEL15d4WbOZo#SiP%>DB^+BcnJ=7dHEe;r#G=tuw|ka z%q@}##Uh7;tc%L_64m(kHtw74ty%BJMb)_1)#S0j`)F8_1jF7vScpsnH=0V19bO8y zR`0SjIdCUo&=>JwMQF8KHA<{ODHTiQh}0^@5QRmCA?gOH6_H3K^-_sNB^RrdNuK-R zOO*vOrKCVvDwgUck`kF(E7j{I#iiN;b*ZdCt4m@HPA`EuEqGGf4%!K<;(=I=&Vyrw z%TwcWtxa}8mCZ%Cyf&ActJ6_$ox5z6-D!0-dvnRx6t7y3d+h6QYpKWO;8OdnvERo7 zuEf>ih5`wqY)~o@OeVt-wM?Q!>QzdGRj!bz6fzYrfw$hZfAKzr2-M+D+R>}~oT574c;_3zquHcElqKIsryILt3g8n3jcMb+j?i?-L3FpZJ z2WRVBRdDPc+G5aaYg#5hpE+6nQ|(VSoxT3|biF;BUq#==-27Xi=gihDPYP$7?=9cP zYKE$jeQ|3~_L0VG-(F~2ZPyD0=k{J4Q~h(t__{-mz_w8{JDY9{`1ouzz!Vr5!ECdE z6U~O1k8c}24V7~zzXWTV-Pe4)y}wQJS&q%H5`Fo_f_JvIU489aCX$;P`u#!I-=^4ijC2{&9!O&h>mi?9oYD=GC#%)6{GzN6nQYw+Fal50!#x^asjBBR50i`+mho*ttoqV)ubM2KD9S~k7+FR4>{29?6 z{!l6kDdyTN0YJ9LgkPWeXm|gyi@zM3?0@{&pXT12w|78&W-q!RRF)&iLCEZVH<|fR zN0fr2^t8H(>L?>K#>^+jWROLral(Qy-xoBq1U7A&DV||wClb)Otd9?(gZ|8znMF}D zf<1haWz^s0qgecz;RFGt0C-B4g`jNGHsFU+;{<%t65v^sjk^h$lmWn#B0#_)9ij&d z-~lc`A)YYExi^7sBuPM^Y|wA2g*5?`K?#7tzELQYNxGo$UB$4J8RJp1k(8Jj+~hMT zlN~>M@KTTh^--8y3PK_NZ@AC!{PT=CziBzGd+wTJ^@icH!Bd}%)g8V)%K?|c&WTUk zy}qv1C%(fjRoZ4ozC3{O%@5?)XzH35zHns$pgU*Q?fj4v?fp1Qbm+j;3l;9jam9Da zXVcKjPlQ73x78QPu|Ffm6x?`~e3oD=gl=4kYK?={kD5j~QCXU)`HSdduNNENzA*2$ zOm3PzF!lN5e*06-f1Uot67wY#{o-S1!KZ7E=!~7ynnk9_iJR#kFoNbAOT#^2Gd17F zMmvU6>lndZQGd|ax9kUoXXO+$N?|j@6qpsF&_j7YXvwo_C{JpmLw5&#e6k>atv%es z5)7r*Wvv_JkUpT}M!_o!nVlEk1Zbl=a*2hQ*<|%*K1Glj^FcF`6kTzGQ3lz~2tCc@ z&x|tj;aH&1&9HwcJBcT`;{?a+pnej;M1HO(6Z{#J!cZA04hnFl;NXA+&`=7bjW_^o zfC40u3LMG?NdPtwGl>Tq6u}*QG)}-y;)lu-_>ee3kibW(69n0$0Zy!}9rQz%*v1iO zT9_H>99yIrSPYVy6^);rR}7Yo=J_T@hi+qhTZXnVWyf;JDYm5#eYLTxr*?kiNn!+Y zQ+LUkBafNJ#rH#C(?d5^;gw9o#%daEI{mA*LHPIHPU`#|H$hD zwm>0&+kahQ)E#%~k>&5@&#Vg82H?s%71=)(soi@174pi9--2{w{1$}Sz4zGn3Du&x bht0Iza^2ykEt4(epJ78uh5nDlX8(TxzDYwP literal 0 HcmV?d00001 diff --git a/WinUIClassicSamplesBrowser/Assets/Square44x44Logo.scale-200.png b/WinUIClassicSamplesBrowser/Assets/Square44x44Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..ce342a2ec8a61291ba76c54604aea7e9d20af11b GIT binary patch literal 1647 zcmaJ?eM}Q)7(e+G1Q(|`V9JhTI2>MkceK4;p;PR&$Pi?ejk3YQ_3o`S&|W_dsOZ8# zWPTt69g`t$ab`0cj-Y0yiBSOqmd)tG7G(}M5aP0_%&9TijB#&)I{zSE^4@#z^FF`l z`8{8`o%wlL(UI|y2!cdsuVamHH~H86F!*-15em4)NqUpCQM5?aoC_eCf@lV4wvF2a zjDQn1JBL69f&@2M3rvzJcfE!eZ8FZUBlFlC5RD)it33{mF9#B82AiyQE%w)`vlwa> zv{<1sm&kSKK$&%2jSFn7$t&P%%6Ue>R=EAnG8N7fqynWG8L3p!4801a;8{+nliO(qd(jNJ_?+9W3#hLIDLoT6~3fx9=`CC-D}-AMrpEO7HK zt3$GicGPc?GmDjy7K2P@La;eu4!$zWCZ`ym{Z$b zu-O6RM&K4JT|BIZB`E-gxqG%FzanI#+2FFmqHqXG7yxWB=w55RGOM)$xMb(>kSNR z2w=1AZi%z=AmG~yea~XaXJR!v7vLn(RUnELfiB1|6D84ICOS}^Zo2AdN}<&*h}G_u z{xZ!(%>tLT3J3<5XhWy-tg+6)0nmUUENLW8TWA{R6bgVd3X;anYFZ^IRis*_P-C-r z;i>%1^eL3UI2-{w8nuFFcs0e~7J{O2k^~Ce%+Ly4U?|=!0LH=t6()xi<^I-rs+9sF z*q{E-CxZbGPeu#a;XJwE;9S1?#R&uns>^0G3p`hEUF*v`M?@h%T%J%RChmD|EVydq zmHWh*_=S%emRC*mhxaVLzT@>Z2SX0u9v*DIJ@WC^kLVdlGV6LpK$KIrlJqc zpJ921)+3JJdTx|<`G&kXpKkjGJv=76R`yYIQ{#c-`%+`#V(7}Q;&@6U8!Td1`d;?N z_9mnI#?AA}4J!r)LN4!E-@H5eXauuB7TOawS>Y|{-P?NNx-lq+z1W-+y(;39P&&LP zL{N80?&=C*qKmdA^moMZRuPcD!B<*mq$ch=0Cnlitw#txRWhb3%TQvPqjkC`F69G4b! ze7z9MZ#+;_#l?H37UqUhDFb^l&s2{oM$3I0o^Q!yx;;V)QmCMo)Tb_ui|mit8MS?U zm##6$sZZ1$@|s%?l@>4Z<*Q}sRBSKMhb4I{e5LdEhsHIHTe8Bod5c>6QtT>$XgUBz z6MK`kO$=jmt@FqggOhJ5j~e@ygRbG;<{Vu)*+nn9aQeo0;$#j;|MS=S$&L?BeV25z xs3B`@=#`5TF{^6(A1rvdY@|-RtQ|iS5{tyX+wH?;n8E)G$kykv-D^wh{{!TZT%7;_ literal 0 HcmV?d00001 diff --git a/WinUIClassicSamplesBrowser/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/WinUIClassicSamplesBrowser/Assets/Square44x44Logo.targetsize-24_altform-unplated.png new file mode 100644 index 0000000000000000000000000000000000000000..f6c02ce97e0a802b85f6021e822c89f8bf57d5cd GIT binary patch literal 1255 zcmaJ>TWs4@7*5+{G#S+&C!qC#> zf>5N3P6jO*Cz>ug*(_DmW=)kea&m$gZ^+nyiF`;j%w@}y8)>p*SH}C`m?DXeieF2U zyQHecc_L%Gh!7GMt+hG06y;+|p4>m~}PjA}rKViGiEnn7G0ZO<>G|7q;2?NwGCM3s?eued6%hd$B+ z*kQJ{#~$S=DFE(%=E+UkmlEI*%3llUf~8Ja9YU1Vui0IbGBkW_gHB%Rd&!!ioX zs40O?i9I{};kle7GMvE7(rk`la=gTI)47=>%?q@^iL-nUo3}h4S}N-KHn8t5mVP8w z&bSErwp+37 zNJJ8?a|{r5Q3R0Z5s-LB1WHOwYC@7pCHWND#cL1cZ?{kJ368_*(UDWUDyb<}0y@o# zfMF016iMWPCb6obAxT$JlB6(2DrlXDTB&!0`!m??4F(qWMhjVZo?JXQmz`1*58Z=& zcDmB|S-E@j?BoFGix0flckqdS4jsPNzhfWyWIM98GxcLs89C(~dw%$_t;JjX-SD}E zfiGV;{8Q%8r}w9x>EEigW81>`kvnU@pK)4+xk9@+bNj9L!AAZ@SZ@q|)&BmY3+HZx zul~BeG4|}-;L%cHViQGQX?^zFfO0&#cHwel=d`lH9sJ-@Sl@n*(8J2>%Ac`IxyY?Q z{=GhWvC#gu-~Ia7*n{=+;qM?Ul_wy1+u7ho;=`>EwP^g~R@{unBds`!#@}tluZQpS zm)M~nYEifJWJGx?_6DcTy>#uh%>!H9=hb^(v`=m3F1{L>db=<5_tm+_&knAQ2EU$s Mu9UqpbNZeC0BbUo^Z)<= literal 0 HcmV?d00001 diff --git a/WinUIClassicSamplesBrowser/Assets/StoreLogo.png b/WinUIClassicSamplesBrowser/Assets/StoreLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..7385b56c0e4d3c6b0efe3324aa1194157d837826 GIT binary patch literal 1451 zcmaJ>eN5D57_Z|bH;{0+1#mbl)eTU3{h)Wf7EZV?;HD@XL@{B`Ui%(2aMxQ~xdXSv z5nzWi(LW)U2=Vc-cY@s7nPt{i0hc6!7xN4NNHI#EQl>YNBy8l4%x9gr_W-j zEZMQmmTIy(>;lblRfh`dIyTgc9W5d!VP$L4(kKrN1c5G~(O_#xG zAJCNTstD^5SeXFB+&$h=ToJP2H>xr$iqPs-#O*;4(!Fjw25-!gEb*)mU}=)J;Iu>w zxK(5XoD0wrPSKQ~rbL^Cw6O_03*l*}i=ydbu7adJ6y;%@tjFeXIXT+ms30pmbOP%Q zX}S;+LBh8Tea~TSkHzvX6$rYb)+n&{kSbIqh|c7hmlxmwSiq5iVhU#iEQ<>a18|O^Sln-8t&+t`*{qBWo5M?wFM(JuimAOb5!K#D}XbslM@#1ZVz_;!9U zpfEpLAOz=0g@bd6Xj_ILi-x^!M}73h^o@}hM$1jflTs|Yuj9AL@A3<-?MV4!^4q`e z)fO@A;{9K^?W?DbnesnPr6kK>$zaKo&;FhFd(GYFCIU^T+OIMb%Tqo+P%oq(IdX7S zf6+HLO?7o0m+p>~Tp5UrXWh!UH!wZ5kv!E`_w)PTpI(#Iw{AS`gH4^b(bm^ZCq^FZ zY9DD7bH}rq9mg88+KgA$Zp!iWncuU2n1AuIa@=sWvUR-s`Qb{R*kk(SPU^`$6BXz8 zn#7yaFOIK%qGxyi`dYtm#&qqox0$h=pNi#u=M8zUG@bpiZ=3sT=1}Trr}39cC)H|v zbL?W)=&s4zrh)7>L(|cc%$1#!zfL?HjpeP%T+x_a+jZ16b^iKOHxFEX$7d|8${H-* zIrOJ5w&i$>*D>AKaIoYg`;{L@jM((Kt?$N$5OnuPqVvq**Nm}(f0wwOF%iX_Pba;V z;m@wxX&NcV3?<1+u?A{y_DIj7#m3Af1rCE)o`D&Y3}0%7E;iX1yMDiS)sh0wKi!36 zL!Wmq?P^Ku&rK~HJd97KkLTRl>ScGFYZNlYytWnhmuu|)L&ND8_PmkayQb{HOY640 bno1(wj@u8DCVuFR|31B*4ek@pZJqxCDDe1x literal 0 HcmV?d00001 diff --git a/WinUIClassicSamplesBrowser/Assets/Wide310x150Logo.scale-200.png b/WinUIClassicSamplesBrowser/Assets/Wide310x150Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..288995b397fdbef1fb7e85afd71445d5de1952c5 GIT binary patch literal 3204 zcmbVPeQXow8NYmBd90>}0NP?GhXW~VaeThm=a0tV#EwJMI!)6M3}|c4_Bl3=Kd>G0 z(GHx1wl<7(tP?FsOQkTilSo*iIvF%uArExJ73~P zSv1xEy!U(Wd4A9D`FQV@W3@F^qJ@PEF$@z`Z!*BbFsS(^?B zyiAzJ+q})bkgiQHWqEb*jJD-coHYr1^iocg)l!Qa{Xqs-l~6J}p-|##ZHYofskQ3$ zI0;xzXyhazBeXhIsg5A=%ufo@f)1yy&ScKS0;HF^!r_2UE^lpZEom(+@duma3awTv zCrCL-%D_SvYWIcdHkmI}#50(fkUi)Qgx!80ju>g1za^}ff>JI8Z@^-iCiaCgg@TgF z+vtE?Q9{VQUX&MW9SYYmGcxA14%N2@7FwBTD4N<(2{nWgV8$e3?-F=L^&FrtWn~(U_Q~~^uYiyeY6-KoTnfh9AWz@ zIKje0)u!_Lw)E}G!#kEfwKVdNt(UAf9*f>tEL_(=xco-T%jTi@7YlC3hs2ik%Le0H ztj}RTeCF(5mwvi3_56>-yB?l;J>-1%!9~=fs|QcNG3J~a@JCu`4SB460s0ZO+##4fFUSGLcj_ja^fL4&BKALfb#$6$O?>P@qx2Agl^x0i&ugt zsy5Pyu=()`7HRMG3IB7F1@`_ z+-!J%#i6e^U$e#+C%Q>_qVRzWRsG^W_n+@OcX@vzI&z;mzHNb!GQ?LWA(wtpqHqTM z1OFw_{Zn?fD)p)`c`kOgv{de=v@suGRqY{N^U7gI1VF3*F=obwaXI6ob5__Yn zVTguS!%(NI09J8x#AO_aW!9W7k*UvB;IWDFC3srwftr{kHj%g)fvnAm;&h_dnl~

MY- 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 uP%O@+*Bs76h}X~NDhso;l*+SeDGRfulm&$ +{ + private static NavigationViewHeaderBehavior? _current; + + private Page? _currentPage; + + public DataTemplate? DefaultHeaderTemplate + { + get; set; + } + + public object DefaultHeader + { + get => GetValue(DefaultHeaderProperty); + set => SetValue(DefaultHeaderProperty, value); + } + + public static readonly DependencyProperty DefaultHeaderProperty = + DependencyProperty.Register("DefaultHeader", typeof(object), typeof(NavigationViewHeaderBehavior), new PropertyMetadata(null, (d, e) => _current!.UpdateHeader())); + + public static NavigationViewHeaderMode GetHeaderMode(Page item) => (NavigationViewHeaderMode)item.GetValue(HeaderModeProperty); + + public static void SetHeaderMode(Page item, NavigationViewHeaderMode value) => item.SetValue(HeaderModeProperty, value); + + public static readonly DependencyProperty HeaderModeProperty = + DependencyProperty.RegisterAttached("HeaderMode", typeof(bool), typeof(NavigationViewHeaderBehavior), new PropertyMetadata(NavigationViewHeaderMode.Always, (d, e) => _current!.UpdateHeader())); + + public static object GetHeaderContext(Page item) => item.GetValue(HeaderContextProperty); + + public static void SetHeaderContext(Page item, object value) => item.SetValue(HeaderContextProperty, value); + + public static readonly DependencyProperty HeaderContextProperty = + DependencyProperty.RegisterAttached("HeaderContext", typeof(object), typeof(NavigationViewHeaderBehavior), new PropertyMetadata(null, (d, e) => _current!.UpdateHeader())); + + public static DataTemplate GetHeaderTemplate(Page item) => (DataTemplate)item.GetValue(HeaderTemplateProperty); + + public static void SetHeaderTemplate(Page item, DataTemplate value) => item.SetValue(HeaderTemplateProperty, value); + + public static readonly DependencyProperty HeaderTemplateProperty = + DependencyProperty.RegisterAttached("HeaderTemplate", typeof(DataTemplate), typeof(NavigationViewHeaderBehavior), new PropertyMetadata(null, (d, e) => _current!.UpdateHeaderTemplate())); + + protected override void OnAttached() + { + base.OnAttached(); + + var navigationService = App.GetService(); + navigationService.Navigated += OnNavigated; + + _current = this; + } + + protected override void OnDetaching() + { + base.OnDetaching(); + + var navigationService = App.GetService(); + navigationService.Navigated -= OnNavigated; + } + + private void OnNavigated(object sender, NavigationEventArgs e) + { + if (sender is Frame frame && frame.Content is Page page) + { + _currentPage = page; + + UpdateHeader(); + UpdateHeaderTemplate(); + } + } + + private void UpdateHeader() + { + if (_currentPage != null) + { + var headerMode = GetHeaderMode(_currentPage); + if (headerMode == NavigationViewHeaderMode.Never) + { + AssociatedObject.Header = null; + AssociatedObject.AlwaysShowHeader = false; + } + else + { + var headerFromPage = GetHeaderContext(_currentPage); + if (headerFromPage != null) + { + AssociatedObject.Header = headerFromPage; + } + else + { + AssociatedObject.Header = DefaultHeader; + } + + if (headerMode == NavigationViewHeaderMode.Always) + { + AssociatedObject.AlwaysShowHeader = true; + } + else + { + AssociatedObject.AlwaysShowHeader = false; + } + } + } + } + + private void UpdateHeaderTemplate() + { + if (_currentPage != null) + { + var headerTemplate = GetHeaderTemplate(_currentPage); + AssociatedObject.HeaderTemplate = headerTemplate ?? DefaultHeaderTemplate; + } + } +} diff --git a/WinUIClassicSamplesBrowser/Behaviors/NavigationViewHeaderMode.cs b/WinUIClassicSamplesBrowser/Behaviors/NavigationViewHeaderMode.cs new file mode 100644 index 00000000..21d5fa8a --- /dev/null +++ b/WinUIClassicSamplesBrowser/Behaviors/NavigationViewHeaderMode.cs @@ -0,0 +1,8 @@ +namespace WinUIClassicSamplesBrowser.Behaviors; + +public enum NavigationViewHeaderMode +{ + Always, + Never, + Minimal +} diff --git a/WinUIClassicSamplesBrowser/Contracts/Services/IActivationService.cs b/WinUIClassicSamplesBrowser/Contracts/Services/IActivationService.cs new file mode 100644 index 00000000..83df7402 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Contracts/Services/IActivationService.cs @@ -0,0 +1,6 @@ +namespace WinUIClassicSamplesBrowser.Contracts.Services; + +public interface IActivationService +{ + Task ActivateAsync(object activationArgs); +} diff --git a/WinUIClassicSamplesBrowser/Contracts/Services/IAppNotificationService.cs b/WinUIClassicSamplesBrowser/Contracts/Services/IAppNotificationService.cs new file mode 100644 index 00000000..7ee73aee --- /dev/null +++ b/WinUIClassicSamplesBrowser/Contracts/Services/IAppNotificationService.cs @@ -0,0 +1,14 @@ +using System.Collections.Specialized; + +namespace WinUIClassicSamplesBrowser.Contracts.Services; + +public interface IAppNotificationService +{ + void Initialize(); + + bool Show(string payload); + + NameValueCollection ParseArguments(string arguments); + + void Unregister(); +} diff --git a/WinUIClassicSamplesBrowser/Contracts/Services/ILocalSettingsService.cs b/WinUIClassicSamplesBrowser/Contracts/Services/ILocalSettingsService.cs new file mode 100644 index 00000000..b5dc5f42 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Contracts/Services/ILocalSettingsService.cs @@ -0,0 +1,8 @@ +namespace WinUIClassicSamplesBrowser.Contracts.Services; + +public interface ILocalSettingsService +{ + Task ReadSettingAsync(string key); + + Task SaveSettingAsync(string key, T value); +} diff --git a/WinUIClassicSamplesBrowser/Contracts/Services/INavigationService.cs b/WinUIClassicSamplesBrowser/Contracts/Services/INavigationService.cs new file mode 100644 index 00000000..b91d5897 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Contracts/Services/INavigationService.cs @@ -0,0 +1,23 @@ +using Microsoft.UI.Xaml.Controls; +using Microsoft.UI.Xaml.Navigation; + +namespace WinUIClassicSamplesBrowser.Contracts.Services; + +public interface INavigationService +{ + event NavigatedEventHandler Navigated; + + bool CanGoBack + { + get; + } + + Frame? Frame + { + get; set; + } + + bool NavigateTo(string pageKey, object? parameter = null, bool clearNavigation = false); + + bool GoBack(); +} diff --git a/WinUIClassicSamplesBrowser/Contracts/Services/INavigationViewService.cs b/WinUIClassicSamplesBrowser/Contracts/Services/INavigationViewService.cs new file mode 100644 index 00000000..d39812bc --- /dev/null +++ b/WinUIClassicSamplesBrowser/Contracts/Services/INavigationViewService.cs @@ -0,0 +1,22 @@ +using Microsoft.UI.Xaml.Controls; + +namespace WinUIClassicSamplesBrowser.Contracts.Services; + +public interface INavigationViewService +{ + IList? MenuItems + { + get; + } + + object? SettingsItem + { + get; + } + + void Initialize(NavigationView navigationView); + + void UnregisterEvents(); + + NavigationViewItem? GetSelectedItem(Type pageType); +} diff --git a/WinUIClassicSamplesBrowser/Contracts/Services/IPageService.cs b/WinUIClassicSamplesBrowser/Contracts/Services/IPageService.cs new file mode 100644 index 00000000..2564bb52 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Contracts/Services/IPageService.cs @@ -0,0 +1,6 @@ +namespace WinUIClassicSamplesBrowser.Contracts.Services; + +public interface IPageService +{ + Type GetPageType(string key); +} diff --git a/WinUIClassicSamplesBrowser/Contracts/Services/IThemeSelectorService.cs b/WinUIClassicSamplesBrowser/Contracts/Services/IThemeSelectorService.cs new file mode 100644 index 00000000..fa44fe83 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Contracts/Services/IThemeSelectorService.cs @@ -0,0 +1,17 @@ +using Microsoft.UI.Xaml; + +namespace WinUIClassicSamplesBrowser.Contracts.Services; + +public interface IThemeSelectorService +{ + ElementTheme Theme + { + get; + } + + Task InitializeAsync(); + + Task SetThemeAsync(ElementTheme theme); + + Task SetRequestedThemeAsync(); +} diff --git a/WinUIClassicSamplesBrowser/Contracts/Services/IWebViewService.cs b/WinUIClassicSamplesBrowser/Contracts/Services/IWebViewService.cs new file mode 100644 index 00000000..846b639b --- /dev/null +++ b/WinUIClassicSamplesBrowser/Contracts/Services/IWebViewService.cs @@ -0,0 +1,34 @@ +using Microsoft.UI.Xaml.Controls; +using Microsoft.Web.WebView2.Core; + +namespace WinUIClassicSamplesBrowser.Contracts.Services; + +public interface IWebViewService +{ + Uri? Source + { + get; + } + + bool CanGoBack + { + get; + } + + bool CanGoForward + { + get; + } + + event EventHandler? NavigationCompleted; + + void Initialize(WebView2 webView); + + void GoBack(); + + void GoForward(); + + void Reload(); + + void UnregisterEvents(); +} diff --git a/WinUIClassicSamplesBrowser/Contracts/ViewModels/INavigationAware.cs b/WinUIClassicSamplesBrowser/Contracts/ViewModels/INavigationAware.cs new file mode 100644 index 00000000..7e8fe3df --- /dev/null +++ b/WinUIClassicSamplesBrowser/Contracts/ViewModels/INavigationAware.cs @@ -0,0 +1,8 @@ +namespace WinUIClassicSamplesBrowser.Contracts.ViewModels; + +public interface INavigationAware +{ + void OnNavigatedTo(object parameter); + + void OnNavigatedFrom(); +} diff --git a/WinUIClassicSamplesBrowser/Helpers/EnumToBooleanConverter.cs b/WinUIClassicSamplesBrowser/Helpers/EnumToBooleanConverter.cs new file mode 100644 index 00000000..b04375a4 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Helpers/EnumToBooleanConverter.cs @@ -0,0 +1,38 @@ +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Data; + +namespace WinUIClassicSamplesBrowser.Helpers; + +public class EnumToBooleanConverter : IValueConverter +{ + public EnumToBooleanConverter() + { + } + + public object Convert(object value, Type targetType, object parameter, string language) + { + if (parameter is string enumString) + { + if (!Enum.IsDefined(typeof(ElementTheme), value)) + { + throw new ArgumentException("ExceptionEnumToBooleanConverterValueMustBeAnEnum"); + } + + var enumValue = Enum.Parse(typeof(ElementTheme), enumString); + + return enumValue.Equals(value); + } + + throw new ArgumentException("ExceptionEnumToBooleanConverterParameterMustBeAnEnumName"); + } + + public object ConvertBack(object value, Type targetType, object parameter, string language) + { + if (parameter is string enumString) + { + return Enum.Parse(typeof(ElementTheme), enumString); + } + + throw new ArgumentException("ExceptionEnumToBooleanConverterParameterMustBeAnEnumName"); + } +} diff --git a/WinUIClassicSamplesBrowser/Helpers/FrameExtensions.cs b/WinUIClassicSamplesBrowser/Helpers/FrameExtensions.cs new file mode 100644 index 00000000..2f0af0c5 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Helpers/FrameExtensions.cs @@ -0,0 +1,8 @@ +using Microsoft.UI.Xaml.Controls; + +namespace WinUIClassicSamplesBrowser.Helpers; + +public static class FrameExtensions +{ + public static object? GetPageViewModel(this Frame frame) => frame?.Content?.GetType().GetProperty("ViewModel")?.GetValue(frame.Content, null); +} diff --git a/WinUIClassicSamplesBrowser/Helpers/NavigationHelper.cs b/WinUIClassicSamplesBrowser/Helpers/NavigationHelper.cs new file mode 100644 index 00000000..af660e01 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Helpers/NavigationHelper.cs @@ -0,0 +1,21 @@ +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; + +namespace WinUIClassicSamplesBrowser.Helpers; + +// Helper class to set the navigation target for a NavigationViewItem. +// +// Usage in XAML: +// +// +// Usage in code: +// NavigationHelper.SetNavigateTo(navigationViewItem, typeof(MainViewModel).FullName); +public class NavigationHelper +{ + public static string GetNavigateTo(NavigationViewItem item) => (string)item.GetValue(NavigateToProperty); + + public static void SetNavigateTo(NavigationViewItem item, string value) => item.SetValue(NavigateToProperty, value); + + public static readonly DependencyProperty NavigateToProperty = + DependencyProperty.RegisterAttached("NavigateTo", typeof(string), typeof(NavigationHelper), new PropertyMetadata(null)); +} diff --git a/WinUIClassicSamplesBrowser/Helpers/ResourceExtensions.cs b/WinUIClassicSamplesBrowser/Helpers/ResourceExtensions.cs new file mode 100644 index 00000000..d864cda1 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Helpers/ResourceExtensions.cs @@ -0,0 +1,10 @@ +using Microsoft.Windows.ApplicationModel.Resources; + +namespace WinUIClassicSamplesBrowser.Helpers; + +public static class ResourceExtensions +{ + private static readonly ResourceLoader _resourceLoader = new(); + + public static string GetLocalized(this string resourceKey) => _resourceLoader.GetString(resourceKey); +} diff --git a/WinUIClassicSamplesBrowser/Helpers/RuntimeHelper.cs b/WinUIClassicSamplesBrowser/Helpers/RuntimeHelper.cs new file mode 100644 index 00000000..468a1b8e --- /dev/null +++ b/WinUIClassicSamplesBrowser/Helpers/RuntimeHelper.cs @@ -0,0 +1,20 @@ +using System.Runtime.InteropServices; +using System.Text; + +namespace WinUIClassicSamplesBrowser.Helpers; + +public class RuntimeHelper +{ + [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)] + private static extern int GetCurrentPackageFullName(ref int packageFullNameLength, StringBuilder? packageFullName); + + public static bool IsMSIX + { + get + { + var length = 0; + + return GetCurrentPackageFullName(ref length, null) != 15700L; + } + } +} diff --git a/WinUIClassicSamplesBrowser/Helpers/SettingsStorageExtensions.cs b/WinUIClassicSamplesBrowser/Helpers/SettingsStorageExtensions.cs new file mode 100644 index 00000000..d17b3e6c --- /dev/null +++ b/WinUIClassicSamplesBrowser/Helpers/SettingsStorageExtensions.cs @@ -0,0 +1,112 @@ +using Windows.Storage; +using Windows.Storage.Streams; + +using WinUIClassicSamplesBrowser.Core.Helpers; + +namespace WinUIClassicSamplesBrowser.Helpers; + +// Use these extension methods to store and retrieve local and roaming app data +// More details regarding storing and retrieving app data at https://docs.microsoft.com/windows/apps/design/app-settings/store-and-retrieve-app-data +public static class SettingsStorageExtensions +{ + private const string FileExtension = ".json"; + + public static bool IsRoamingStorageAvailable(this ApplicationData appData) + { + return appData.RoamingStorageQuota == 0; + } + + public static async Task SaveAsync(this StorageFolder folder, string name, T content) + { + var file = await folder.CreateFileAsync(GetFileName(name), CreationCollisionOption.ReplaceExisting); + var fileContent = await Json.StringifyAsync(content); + + await FileIO.WriteTextAsync(file, fileContent); + } + + public static async Task ReadAsync(this StorageFolder folder, string name) + { + if (!File.Exists(Path.Combine(folder.Path, GetFileName(name)))) + { + return default; + } + + var file = await folder.GetFileAsync($"{name}.json"); + var fileContent = await FileIO.ReadTextAsync(file); + + return await Json.ToObjectAsync(fileContent); + } + + public static async Task SaveAsync(this ApplicationDataContainer settings, string key, T value) + { + settings.SaveString(key, await Json.StringifyAsync(value)); + } + + public static void SaveString(this ApplicationDataContainer settings, string key, string value) + { + settings.Values[key] = value; + } + + public static async Task ReadAsync(this ApplicationDataContainer settings, string key) + { + object? obj; + + if (settings.Values.TryGetValue(key, out obj)) + { + return await Json.ToObjectAsync((string)obj); + } + + return default; + } + + public static async Task SaveFileAsync(this StorageFolder folder, byte[] content, string fileName, CreationCollisionOption options = CreationCollisionOption.ReplaceExisting) + { + if (content == null) + { + throw new ArgumentNullException(nameof(content)); + } + + if (string.IsNullOrEmpty(fileName)) + { + throw new ArgumentException("File name is null or empty. Specify a valid file name", nameof(fileName)); + } + + var storageFile = await folder.CreateFileAsync(fileName, options); + await FileIO.WriteBytesAsync(storageFile, content); + return storageFile; + } + + public static async Task ReadFileAsync(this StorageFolder folder, string fileName) + { + var item = await folder.TryGetItemAsync(fileName).AsTask().ConfigureAwait(false); + + if ((item != null) && item.IsOfType(StorageItemTypes.File)) + { + var storageFile = await folder.GetFileAsync(fileName); + var content = await storageFile.ReadBytesAsync(); + return content; + } + + return null; + } + + public static async Task ReadBytesAsync(this StorageFile file) + { + if (file != null) + { + using IRandomAccessStream stream = await file.OpenReadAsync(); + using var reader = new DataReader(stream.GetInputStreamAt(0)); + await reader.LoadAsync((uint)stream.Size); + var bytes = new byte[stream.Size]; + reader.ReadBytes(bytes); + return bytes; + } + + return null; + } + + private static string GetFileName(string name) + { + return string.Concat(name, FileExtension); + } +} diff --git a/WinUIClassicSamplesBrowser/Helpers/TitleBarHelper.cs b/WinUIClassicSamplesBrowser/Helpers/TitleBarHelper.cs new file mode 100644 index 00000000..97935d3c --- /dev/null +++ b/WinUIClassicSamplesBrowser/Helpers/TitleBarHelper.cs @@ -0,0 +1,96 @@ +using System.Runtime.InteropServices; + +using Microsoft.UI; +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Media; + +using Windows.UI; +using Windows.UI.ViewManagement; + +namespace WinUIClassicSamplesBrowser.Helpers; + +// Helper class to workaround custom title bar bugs. +// DISCLAIMER: The resource key names and color values used below are subject to change. Do not depend on them. +// https://github.com/microsoft/TemplateStudio/issues/4516 +internal class TitleBarHelper +{ + private const int WAINACTIVE = 0x00; + private const int WAACTIVE = 0x01; + private const int WMACTIVATE = 0x0006; + + [DllImport("user32.dll")] + private static extern IntPtr GetActiveWindow(); + + [DllImport("user32.dll", CharSet = CharSet.Auto)] + private static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, IntPtr lParam); + + public static void UpdateTitleBar(ElementTheme theme) + { + if (App.MainWindow.ExtendsContentIntoTitleBar) + { + if (theme == ElementTheme.Default) + { + var uiSettings = new UISettings(); + var background = uiSettings.GetColorValue(UIColorType.Background); + + theme = background == Colors.White ? ElementTheme.Light : ElementTheme.Dark; + } + + if (theme == ElementTheme.Default) + { + theme = Application.Current.RequestedTheme == ApplicationTheme.Light ? ElementTheme.Light : ElementTheme.Dark; + } + + App.MainWindow.AppWindow.TitleBar.ButtonForegroundColor = theme switch + { + ElementTheme.Dark => Colors.White, + ElementTheme.Light => Colors.Black, + _ => Colors.Transparent + }; + + App.MainWindow.AppWindow.TitleBar.ButtonHoverForegroundColor = theme switch + { + ElementTheme.Dark => Colors.White, + ElementTheme.Light => Colors.Black, + _ => Colors.Transparent + }; + + App.MainWindow.AppWindow.TitleBar.ButtonHoverBackgroundColor = theme switch + { + ElementTheme.Dark => Color.FromArgb(0x33, 0xFF, 0xFF, 0xFF), + ElementTheme.Light => Color.FromArgb(0x33, 0x00, 0x00, 0x00), + _ => Colors.Transparent + }; + + App.MainWindow.AppWindow.TitleBar.ButtonPressedBackgroundColor = theme switch + { + ElementTheme.Dark => Color.FromArgb(0x66, 0xFF, 0xFF, 0xFF), + ElementTheme.Light => Color.FromArgb(0x66, 0x00, 0x00, 0x00), + _ => Colors.Transparent + }; + + App.MainWindow.AppWindow.TitleBar.BackgroundColor = Colors.Transparent; + + var hwnd = WinRT.Interop.WindowNative.GetWindowHandle(App.MainWindow); + if (hwnd == GetActiveWindow()) + { + SendMessage(hwnd, WMACTIVATE, WAINACTIVE, IntPtr.Zero); + SendMessage(hwnd, WMACTIVATE, WAACTIVE, IntPtr.Zero); + } + else + { + SendMessage(hwnd, WMACTIVATE, WAACTIVE, IntPtr.Zero); + SendMessage(hwnd, WMACTIVATE, WAINACTIVE, IntPtr.Zero); + } + } + } + + public static void ApplySystemThemeToCaptionButtons() + { + var frame = App.AppTitlebar as FrameworkElement; + if (frame != null) + { + UpdateTitleBar(frame.ActualTheme); + } + } +} diff --git a/WinUIClassicSamplesBrowser/MainWindow.xaml b/WinUIClassicSamplesBrowser/MainWindow.xaml new file mode 100644 index 00000000..673229e8 --- /dev/null +++ b/WinUIClassicSamplesBrowser/MainWindow.xaml @@ -0,0 +1,16 @@ + + + + + diff --git a/WinUIClassicSamplesBrowser/MainWindow.xaml.cs b/WinUIClassicSamplesBrowser/MainWindow.xaml.cs new file mode 100644 index 00000000..10313437 --- /dev/null +++ b/WinUIClassicSamplesBrowser/MainWindow.xaml.cs @@ -0,0 +1,37 @@ +using Windows.UI.ViewManagement; + +using WinUIClassicSamplesBrowser.Helpers; + +namespace WinUIClassicSamplesBrowser; + +public sealed partial class MainWindow : WindowEx +{ + private Microsoft.UI.Dispatching.DispatcherQueue dispatcherQueue; + + private UISettings settings; + + public MainWindow() + { + InitializeComponent(); + + AppWindow.SetIcon(Path.Combine(AppContext.BaseDirectory, "Assets/WindowIcon.ico")); + Content = null; + Title = "AppDisplayName".GetLocalized(); + + // Theme change code picked from https://github.com/microsoft/WinUI-Gallery/pull/1239 + dispatcherQueue = Microsoft.UI.Dispatching.DispatcherQueue.GetForCurrentThread(); + settings = new UISettings(); + settings.ColorValuesChanged += Settings_ColorValuesChanged; // cannot use FrameworkElement.ActualThemeChanged event + } + + // this handles updating the caption button colors correctly when indows system theme is changed + // while the app is open + private void Settings_ColorValuesChanged(UISettings sender, object args) + { + // This calls comes off-thread, hence we will need to dispatch it to current app's thread + dispatcherQueue.TryEnqueue(() => + { + TitleBarHelper.ApplySystemThemeToCaptionButtons(); + }); + } +} diff --git a/WinUIClassicSamplesBrowser/Models/LocalSettingsOptions.cs b/WinUIClassicSamplesBrowser/Models/LocalSettingsOptions.cs new file mode 100644 index 00000000..0f4c2e95 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Models/LocalSettingsOptions.cs @@ -0,0 +1,14 @@ +namespace WinUIClassicSamplesBrowser.Models; + +public class LocalSettingsOptions +{ + public string? ApplicationDataFolder + { + get; set; + } + + public string? LocalSettingsFile + { + get; set; + } +} diff --git a/WinUIClassicSamplesBrowser/Package.appinstaller b/WinUIClassicSamplesBrowser/Package.appinstaller new file mode 100644 index 00000000..c6194579 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Package.appinstaller @@ -0,0 +1,17 @@ + + + + + + + + + + + + diff --git a/WinUIClassicSamplesBrowser/Package.appxmanifest b/WinUIClassicSamplesBrowser/Package.appxmanifest new file mode 100644 index 00000000..df3957a7 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Package.appxmanifest @@ -0,0 +1,76 @@ + + + + + + + + + + WinUIClassicSamplesBrowser + tajbe + Assets\StoreLogo.png + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinUIClassicSamplesBrowser/Properties/PublishProfiles/win10-arm64.pubxml b/WinUIClassicSamplesBrowser/Properties/PublishProfiles/win10-arm64.pubxml new file mode 100644 index 00000000..b2f476e7 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Properties/PublishProfiles/win10-arm64.pubxml @@ -0,0 +1,13 @@ + + + + FileSystem + arm64 + win10-arm64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + True + False + False + True + + diff --git a/WinUIClassicSamplesBrowser/Properties/PublishProfiles/win10-x64.pubxml b/WinUIClassicSamplesBrowser/Properties/PublishProfiles/win10-x64.pubxml new file mode 100644 index 00000000..a8146b5c --- /dev/null +++ b/WinUIClassicSamplesBrowser/Properties/PublishProfiles/win10-x64.pubxml @@ -0,0 +1,13 @@ + + + + FileSystem + x64 + win10-x64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + True + False + False + True + + diff --git a/WinUIClassicSamplesBrowser/Properties/PublishProfiles/win10-x86.pubxml b/WinUIClassicSamplesBrowser/Properties/PublishProfiles/win10-x86.pubxml new file mode 100644 index 00000000..eae09480 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Properties/PublishProfiles/win10-x86.pubxml @@ -0,0 +1,13 @@ + + + + FileSystem + x86 + win10-x86 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + True + False + False + True + + diff --git a/WinUIClassicSamplesBrowser/README.md b/WinUIClassicSamplesBrowser/README.md new file mode 100644 index 00000000..e24ccedb --- /dev/null +++ b/WinUIClassicSamplesBrowser/README.md @@ -0,0 +1,27 @@ +*Recommended Markdown Viewer: [Markdown Editor](https://marketplace.visualstudio.com/items?itemName=MadsKristensen.MarkdownEditor2)* + +## Getting Started + +Browse and address `TODO:` comments in `View -> Task List` to learn the codebase and understand next steps for turning the generated code into production code. + +Explore the [WinUI Gallery](https://www.microsoft.com/store/productId/9P3JFPWWDZRC) to learn about available controls and design patterns. + +Relaunch Template Studio to modify the project by right-clicking on the project in `View -> Solution Explorer` then selecting `Add -> New Item (Template Studio)`. + +## Publishing + +For projects with MSIX packaging, right-click on the application project and select `Package and Publish -> Create App Packages...` to create an MSIX package. + +For projects without MSIX packaging, follow the [deployment guide](https://docs.microsoft.com/windows/apps/windows-app-sdk/deploy-unpackaged-apps) or add the `Self-Contained` Feature to enable xcopy deployment. + +## CI Pipelines + +See [README.md](https://github.com/microsoft/TemplateStudio/blob/main/docs/WinUI/pipelines/README.md) for guidance on building and testing projects in CI pipelines. + +## Changelog + +See [releases](https://github.com/microsoft/TemplateStudio/releases) and [milestones](https://github.com/microsoft/TemplateStudio/milestones). + +## Feedback + +Bugs and feature requests should be filed at https://aka.ms/templatestudio. diff --git a/WinUIClassicSamplesBrowser/Services/ActivationService.cs b/WinUIClassicSamplesBrowser/Services/ActivationService.cs new file mode 100644 index 00000000..38790565 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Services/ActivationService.cs @@ -0,0 +1,72 @@ +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; + +using WinUIClassicSamplesBrowser.Activation; +using WinUIClassicSamplesBrowser.Contracts.Services; +using WinUIClassicSamplesBrowser.Views; + +namespace WinUIClassicSamplesBrowser.Services; + +public class ActivationService : IActivationService +{ + private readonly ActivationHandler _defaultHandler; + private readonly IEnumerable _activationHandlers; + private readonly IThemeSelectorService _themeSelectorService; + private UIElement? _shell = null; + + public ActivationService(ActivationHandler defaultHandler, IEnumerable activationHandlers, IThemeSelectorService themeSelectorService) + { + _defaultHandler = defaultHandler; + _activationHandlers = activationHandlers; + _themeSelectorService = themeSelectorService; + } + + public async Task ActivateAsync(object activationArgs) + { + // Execute tasks before activation. + await InitializeAsync(); + + // Set the MainWindow Content. + if (App.MainWindow.Content == null) + { + _shell = App.GetService(); + App.MainWindow.Content = _shell ?? new Frame(); + } + + // Handle activation via ActivationHandlers. + await HandleActivationAsync(activationArgs); + + // Activate the MainWindow. + App.MainWindow.Activate(); + + // Execute tasks after activation. + await StartupAsync(); + } + + private async Task HandleActivationAsync(object activationArgs) + { + var activationHandler = _activationHandlers.FirstOrDefault(h => h.CanHandle(activationArgs)); + + if (activationHandler != null) + { + await activationHandler.HandleAsync(activationArgs); + } + + if (_defaultHandler.CanHandle(activationArgs)) + { + await _defaultHandler.HandleAsync(activationArgs); + } + } + + private async Task InitializeAsync() + { + await _themeSelectorService.InitializeAsync().ConfigureAwait(false); + await Task.CompletedTask; + } + + private async Task StartupAsync() + { + await _themeSelectorService.SetRequestedThemeAsync(); + await Task.CompletedTask; + } +} diff --git a/WinUIClassicSamplesBrowser/Services/AppNotificationService.cs b/WinUIClassicSamplesBrowser/Services/AppNotificationService.cs new file mode 100644 index 00000000..4b3d332b --- /dev/null +++ b/WinUIClassicSamplesBrowser/Services/AppNotificationService.cs @@ -0,0 +1,71 @@ +using System.Collections.Specialized; +using System.Web; + +using Microsoft.Windows.AppNotifications; + +using WinUIClassicSamplesBrowser.Contracts.Services; +using WinUIClassicSamplesBrowser.ViewModels; + +namespace WinUIClassicSamplesBrowser.Notifications; + +public class AppNotificationService : IAppNotificationService +{ + private readonly INavigationService _navigationService; + + public AppNotificationService(INavigationService navigationService) + { + _navigationService = navigationService; + } + + ~AppNotificationService() + { + Unregister(); + } + + public void Initialize() + { + AppNotificationManager.Default.NotificationInvoked += OnNotificationInvoked; + + AppNotificationManager.Default.Register(); + } + + public void OnNotificationInvoked(AppNotificationManager sender, AppNotificationActivatedEventArgs args) + { + // TODO: Handle notification invocations when your app is already running. + + //// // Navigate to a specific page based on the notification arguments. + //// if (ParseArguments(args.Argument)["action"] == "Settings") + //// { + //// App.MainWindow.DispatcherQueue.TryEnqueue(() => + //// { + //// _navigationService.NavigateTo(typeof(SettingsViewModel).FullName!); + //// }); + //// } + + App.MainWindow.DispatcherQueue.TryEnqueue(() => + { + App.MainWindow.ShowMessageDialogAsync("TODO: Handle notification invocations when your app is already running.", "Notification Invoked"); + + App.MainWindow.BringToFront(); + }); + } + + public bool Show(string payload) + { + var appNotification = new AppNotification(payload); + + AppNotificationManager.Default.Show(appNotification); + + return appNotification.Id != 0; + } + + public NameValueCollection ParseArguments(string arguments) + { + return HttpUtility.ParseQueryString(arguments); + } + + public void Unregister() + { + AppNotificationManager.Default.Unregister(); + } +} diff --git a/WinUIClassicSamplesBrowser/Services/LocalSettingsService.cs b/WinUIClassicSamplesBrowser/Services/LocalSettingsService.cs new file mode 100644 index 00000000..d4934033 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Services/LocalSettingsService.cs @@ -0,0 +1,88 @@ +using Microsoft.Extensions.Options; + +using Windows.ApplicationModel; +using Windows.Storage; + +using WinUIClassicSamplesBrowser.Contracts.Services; +using WinUIClassicSamplesBrowser.Core.Contracts.Services; +using WinUIClassicSamplesBrowser.Core.Helpers; +using WinUIClassicSamplesBrowser.Helpers; +using WinUIClassicSamplesBrowser.Models; + +namespace WinUIClassicSamplesBrowser.Services; + +public class LocalSettingsService : ILocalSettingsService +{ + private const string _defaultApplicationDataFolder = "WinUIClassicSamplesBrowser/ApplicationData"; + private const string _defaultLocalSettingsFile = "LocalSettings.json"; + + private readonly IFileService _fileService; + private readonly LocalSettingsOptions _options; + + private readonly string _localApplicationData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); + private readonly string _applicationDataFolder; + private readonly string _localsettingsFile; + + private IDictionary _settings; + + private bool _isInitialized; + + public LocalSettingsService(IFileService fileService, IOptions options) + { + _fileService = fileService; + _options = options.Value; + + _applicationDataFolder = Path.Combine(_localApplicationData, _options.ApplicationDataFolder ?? _defaultApplicationDataFolder); + _localsettingsFile = _options.LocalSettingsFile ?? _defaultLocalSettingsFile; + + _settings = new Dictionary(); + } + + private async Task InitializeAsync() + { + if (!_isInitialized) + { + _settings = await Task.Run(() => _fileService.Read>(_applicationDataFolder, _localsettingsFile)) ?? new Dictionary(); + + _isInitialized = true; + } + } + + public async Task ReadSettingAsync(string key) + { + if (RuntimeHelper.IsMSIX) + { + if (ApplicationData.Current.LocalSettings.Values.TryGetValue(key, out var obj)) + { + return await Json.ToObjectAsync((string)obj); + } + } + else + { + await InitializeAsync(); + + if (_settings != null && _settings.TryGetValue(key, out var obj)) + { + return await Json.ToObjectAsync((string)obj); + } + } + + return default; + } + + public async Task SaveSettingAsync(string key, T value) + { + if (RuntimeHelper.IsMSIX) + { + ApplicationData.Current.LocalSettings.Values[key] = await Json.StringifyAsync(value); + } + else + { + await InitializeAsync(); + + _settings[key] = await Json.StringifyAsync(value); + + await Task.Run(() => _fileService.Save(_applicationDataFolder, _localsettingsFile, _settings)); + } + } +} diff --git a/WinUIClassicSamplesBrowser/Services/NavigationService.cs b/WinUIClassicSamplesBrowser/Services/NavigationService.cs new file mode 100644 index 00000000..be526aca --- /dev/null +++ b/WinUIClassicSamplesBrowser/Services/NavigationService.cs @@ -0,0 +1,126 @@ +using System.Diagnostics.CodeAnalysis; + +using Microsoft.UI.Xaml.Controls; +using Microsoft.UI.Xaml.Navigation; + +using WinUIClassicSamplesBrowser.Contracts.Services; +using WinUIClassicSamplesBrowser.Contracts.ViewModels; +using WinUIClassicSamplesBrowser.Helpers; + +namespace WinUIClassicSamplesBrowser.Services; + +// For more information on navigation between pages see +// https://github.com/microsoft/TemplateStudio/blob/main/docs/WinUI/navigation.md +public class NavigationService : INavigationService +{ + private readonly IPageService _pageService; + private object? _lastParameterUsed; + private Frame? _frame; + + public event NavigatedEventHandler? Navigated; + + public Frame? Frame + { + get + { + if (_frame == null) + { + _frame = App.MainWindow.Content as Frame; + RegisterFrameEvents(); + } + + return _frame; + } + + set + { + UnregisterFrameEvents(); + _frame = value; + RegisterFrameEvents(); + } + } + + [MemberNotNullWhen(true, nameof(Frame), nameof(_frame))] + public bool CanGoBack => Frame != null && Frame.CanGoBack; + + public NavigationService(IPageService pageService) + { + _pageService = pageService; + } + + private void RegisterFrameEvents() + { + if (_frame != null) + { + _frame.Navigated += OnNavigated; + } + } + + private void UnregisterFrameEvents() + { + if (_frame != null) + { + _frame.Navigated -= OnNavigated; + } + } + + public bool GoBack() + { + if (CanGoBack) + { + var vmBeforeNavigation = _frame.GetPageViewModel(); + _frame.GoBack(); + if (vmBeforeNavigation is INavigationAware navigationAware) + { + navigationAware.OnNavigatedFrom(); + } + + return true; + } + + return false; + } + + public bool NavigateTo(string pageKey, object? parameter = null, bool clearNavigation = false) + { + var pageType = _pageService.GetPageType(pageKey); + + if (_frame != null && (_frame.Content?.GetType() != pageType || (parameter != null && !parameter.Equals(_lastParameterUsed)))) + { + _frame.Tag = clearNavigation; + var vmBeforeNavigation = _frame.GetPageViewModel(); + var navigated = _frame.Navigate(pageType, parameter); + if (navigated) + { + _lastParameterUsed = parameter; + if (vmBeforeNavigation is INavigationAware navigationAware) + { + navigationAware.OnNavigatedFrom(); + } + } + + return navigated; + } + + return false; + } + + private void OnNavigated(object sender, NavigationEventArgs e) + { + if (sender is Frame frame) + { + var clearNavigation = (bool)frame.Tag; + if (clearNavigation) + { + frame.BackStack.Clear(); + } + + if (frame.GetPageViewModel() is INavigationAware navigationAware) + { + navigationAware.OnNavigatedTo(e.Parameter); + } + + Navigated?.Invoke(sender, e); + } + } +} diff --git a/WinUIClassicSamplesBrowser/Services/NavigationViewService.cs b/WinUIClassicSamplesBrowser/Services/NavigationViewService.cs new file mode 100644 index 00000000..8f375250 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Services/NavigationViewService.cs @@ -0,0 +1,103 @@ +using System.Diagnostics.CodeAnalysis; + +using Microsoft.UI.Xaml.Controls; + +using WinUIClassicSamplesBrowser.Contracts.Services; +using WinUIClassicSamplesBrowser.Helpers; +using WinUIClassicSamplesBrowser.ViewModels; + +namespace WinUIClassicSamplesBrowser.Services; + +public class NavigationViewService : INavigationViewService +{ + private readonly INavigationService _navigationService; + + private readonly IPageService _pageService; + + private NavigationView? _navigationView; + + public IList? MenuItems => _navigationView?.MenuItems; + + public object? SettingsItem => _navigationView?.SettingsItem; + + public NavigationViewService(INavigationService navigationService, IPageService pageService) + { + _navigationService = navigationService; + _pageService = pageService; + } + + [MemberNotNull(nameof(_navigationView))] + public void Initialize(NavigationView navigationView) + { + _navigationView = navigationView; + _navigationView.BackRequested += OnBackRequested; + _navigationView.ItemInvoked += OnItemInvoked; + } + + public void UnregisterEvents() + { + if (_navigationView != null) + { + _navigationView.BackRequested -= OnBackRequested; + _navigationView.ItemInvoked -= OnItemInvoked; + } + } + + public NavigationViewItem? GetSelectedItem(Type pageType) + { + if (_navigationView != null) + { + return GetSelectedItem(_navigationView.MenuItems, pageType) ?? GetSelectedItem(_navigationView.FooterMenuItems, pageType); + } + + return null; + } + + private void OnBackRequested(NavigationView sender, NavigationViewBackRequestedEventArgs args) => _navigationService.GoBack(); + + private void OnItemInvoked(NavigationView sender, NavigationViewItemInvokedEventArgs args) + { + if (args.IsSettingsInvoked) + { + _navigationService.NavigateTo(typeof(SettingsViewModel).FullName!); + } + else + { + var selectedItem = args.InvokedItemContainer as NavigationViewItem; + + if (selectedItem?.GetValue(NavigationHelper.NavigateToProperty) is string pageKey) + { + _navigationService.NavigateTo(pageKey); + } + } + } + + private NavigationViewItem? GetSelectedItem(IEnumerable menuItems, Type pageType) + { + foreach (var item in menuItems.OfType()) + { + if (IsMenuItemForPageType(item, pageType)) + { + return item; + } + + var selectedChild = GetSelectedItem(item.MenuItems, pageType); + if (selectedChild != null) + { + return selectedChild; + } + } + + return null; + } + + private bool IsMenuItemForPageType(NavigationViewItem menuItem, Type sourcePageType) + { + if (menuItem.GetValue(NavigationHelper.NavigateToProperty) is string pageKey) + { + return _pageService.GetPageType(pageKey) == sourcePageType; + } + + return false; + } +} diff --git a/WinUIClassicSamplesBrowser/Services/PageService.cs b/WinUIClassicSamplesBrowser/Services/PageService.cs new file mode 100644 index 00000000..34c71223 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Services/PageService.cs @@ -0,0 +1,57 @@ +using CommunityToolkit.Mvvm.ComponentModel; + +using Microsoft.UI.Xaml.Controls; + +using WinUIClassicSamplesBrowser.Contracts.Services; +using WinUIClassicSamplesBrowser.ViewModels; +using WinUIClassicSamplesBrowser.Views; + +namespace WinUIClassicSamplesBrowser.Services; + +public class PageService : IPageService +{ + private readonly Dictionary _pages = new(); + + public PageService() + { + Configure(); + Configure(); + Configure(); + } + + public Type GetPageType(string key) + { + Type? pageType; + lock (_pages) + { + if (!_pages.TryGetValue(key, out pageType)) + { + throw new ArgumentException($"Page not found: {key}. Did you forget to call PageService.Configure?"); + } + } + + return pageType; + } + + private void Configure() + where VM : ObservableObject + where V : Page + { + lock (_pages) + { + var key = typeof(VM).FullName!; + if (_pages.ContainsKey(key)) + { + throw new ArgumentException($"The key {key} is already configured in PageService"); + } + + var type = typeof(V); + if (_pages.ContainsValue(type)) + { + throw new ArgumentException($"This type is already configured with key {_pages.First(p => p.Value == type).Key}"); + } + + _pages.Add(key, type); + } + } +} diff --git a/WinUIClassicSamplesBrowser/Services/ThemeSelectorService.cs b/WinUIClassicSamplesBrowser/Services/ThemeSelectorService.cs new file mode 100644 index 00000000..ce35583a --- /dev/null +++ b/WinUIClassicSamplesBrowser/Services/ThemeSelectorService.cs @@ -0,0 +1,63 @@ +using Microsoft.UI.Xaml; + +using WinUIClassicSamplesBrowser.Contracts.Services; +using WinUIClassicSamplesBrowser.Helpers; + +namespace WinUIClassicSamplesBrowser.Services; + +public class ThemeSelectorService : IThemeSelectorService +{ + private const string SettingsKey = "AppBackgroundRequestedTheme"; + + public ElementTheme Theme { get; set; } = ElementTheme.Default; + + private readonly ILocalSettingsService _localSettingsService; + + public ThemeSelectorService(ILocalSettingsService localSettingsService) + { + _localSettingsService = localSettingsService; + } + + public async Task InitializeAsync() + { + Theme = await LoadThemeFromSettingsAsync(); + await Task.CompletedTask; + } + + public async Task SetThemeAsync(ElementTheme theme) + { + Theme = theme; + + await SetRequestedThemeAsync(); + await SaveThemeInSettingsAsync(Theme); + } + + public async Task SetRequestedThemeAsync() + { + if (App.MainWindow.Content is FrameworkElement rootElement) + { + rootElement.RequestedTheme = Theme; + + TitleBarHelper.UpdateTitleBar(Theme); + } + + await Task.CompletedTask; + } + + private async Task LoadThemeFromSettingsAsync() + { + var themeName = await _localSettingsService.ReadSettingAsync(SettingsKey); + + if (Enum.TryParse(themeName, out ElementTheme cacheTheme)) + { + return cacheTheme; + } + + return ElementTheme.Default; + } + + private async Task SaveThemeInSettingsAsync(ElementTheme theme) + { + await _localSettingsService.SaveSettingAsync(SettingsKey, theme.ToString()); + } +} diff --git a/WinUIClassicSamplesBrowser/Services/WebViewService.cs b/WinUIClassicSamplesBrowser/Services/WebViewService.cs new file mode 100644 index 00000000..85eec343 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Services/WebViewService.cs @@ -0,0 +1,50 @@ +using System.Diagnostics.CodeAnalysis; + +using Microsoft.UI.Xaml.Controls; +using Microsoft.Web.WebView2.Core; + +using WinUIClassicSamplesBrowser.Contracts.Services; + +namespace WinUIClassicSamplesBrowser.Services; + +public class WebViewService : IWebViewService +{ + private WebView2? _webView; + + public Uri? Source => _webView?.Source; + + [MemberNotNullWhen(true, nameof(_webView))] + public bool CanGoBack => _webView != null && _webView.CanGoBack; + + [MemberNotNullWhen(true, nameof(_webView))] + public bool CanGoForward => _webView != null && _webView.CanGoForward; + + public event EventHandler? NavigationCompleted; + + public WebViewService() + { + } + + [MemberNotNull(nameof(_webView))] + public void Initialize(WebView2 webView) + { + _webView = webView; + _webView.NavigationCompleted += OnWebViewNavigationCompleted; + } + + public void GoBack() => _webView?.GoBack(); + + public void GoForward() => _webView?.GoForward(); + + public void Reload() => _webView?.Reload(); + + public void UnregisterEvents() + { + if (_webView != null) + { + _webView.NavigationCompleted -= OnWebViewNavigationCompleted; + } + } + + private void OnWebViewNavigationCompleted(WebView2 sender, CoreWebView2NavigationCompletedEventArgs args) => NavigationCompleted?.Invoke(this, args.WebErrorStatus); +} diff --git a/WinUIClassicSamplesBrowser/Strings/en-us/Resources.resw b/WinUIClassicSamplesBrowser/Strings/en-us/Resources.resw new file mode 100644 index 00000000..54436cbe --- /dev/null +++ b/WinUIClassicSamplesBrowser/Strings/en-us/Resources.resw @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + WinUIClassicSamplesBrowser + + + WinUIClassicSamplesBrowser + + + Main + + + Loading... + + + Page failed to load. Check connection and reload. + + + Browser back + + + Browser back + + + Browser forward + + + Browser forward + + + Reload + + + Reload + + + Reload + + + Open in browser + + + Open in browser + + + WebBrowser + + + Personalization + + + Theme + + + Light + + + Dark + + + Default + + + About this application + + + TODO: Replace with your app description. + + + Privacy Statement + + + https://YourPrivacyUrlGoesHere/ + + + <toast launch="action=ToastClick"> + <visual> + <binding template="ToastGeneric"> + <text>App Notification</text> + <text></text> + <image placement="appLogoOverride" hint-crop="circle" src="{0}Assets/WindowIcon.ico"/> + </binding> + </visual> + <actions> + <action content="Settings" arguments="action=Settings"/> + </actions> +</toast> + + diff --git a/WinUIClassicSamplesBrowser/Styles/FontSizes.xaml b/WinUIClassicSamplesBrowser/Styles/FontSizes.xaml new file mode 100644 index 00000000..44904b1c --- /dev/null +++ b/WinUIClassicSamplesBrowser/Styles/FontSizes.xaml @@ -0,0 +1,9 @@ + + + 24 + + 16 + + diff --git a/WinUIClassicSamplesBrowser/Styles/TextBlock.xaml b/WinUIClassicSamplesBrowser/Styles/TextBlock.xaml new file mode 100644 index 00000000..0f9eb84e --- /dev/null +++ b/WinUIClassicSamplesBrowser/Styles/TextBlock.xaml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/WinUIClassicSamplesBrowser/Styles/Thickness.xaml b/WinUIClassicSamplesBrowser/Styles/Thickness.xaml new file mode 100644 index 00000000..96ef0c9b --- /dev/null +++ b/WinUIClassicSamplesBrowser/Styles/Thickness.xaml @@ -0,0 +1,36 @@ + + + 0,36,0,0 + 0,36,0,36 + + 0,24,0,0 + 0,24,0,24 + 24,0,24,0 + 0,0,0,24 + + 12,0,0,0 + 12,0,12,0 + 0,12,0,0 + 0,0,12,0 + 0,12,0,12 + + 8,0,0,0 + 0,8,0,0 + 8,8,8,8 + + 0,4,0,0 + 4,4,4,4 + + 1,1,0,0 + 8,0,0,0 + 0,48,0,0 + 56,34,0,0 + 56,24,56,0 + + 36,24,36,0 + + -12,4,0,0 + + diff --git a/WinUIClassicSamplesBrowser/TemplateStudio.xml b/WinUIClassicSamplesBrowser/TemplateStudio.xml new file mode 100644 index 00000000..0c8e42db --- /dev/null +++ b/WinUIClassicSamplesBrowser/TemplateStudio.xml @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/WinUIClassicSamplesBrowser/Usings.cs b/WinUIClassicSamplesBrowser/Usings.cs new file mode 100644 index 00000000..4cc487e9 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Usings.cs @@ -0,0 +1 @@ +global using WinUIEx; diff --git a/WinUIClassicSamplesBrowser/ViewModels/MainViewModel.cs b/WinUIClassicSamplesBrowser/ViewModels/MainViewModel.cs new file mode 100644 index 00000000..acd12fac --- /dev/null +++ b/WinUIClassicSamplesBrowser/ViewModels/MainViewModel.cs @@ -0,0 +1,10 @@ +using CommunityToolkit.Mvvm.ComponentModel; + +namespace WinUIClassicSamplesBrowser.ViewModels; + +public partial class MainViewModel : ObservableRecipient +{ + public MainViewModel() + { + } +} diff --git a/WinUIClassicSamplesBrowser/ViewModels/SettingsViewModel.cs b/WinUIClassicSamplesBrowser/ViewModels/SettingsViewModel.cs new file mode 100644 index 00000000..29a4b9f8 --- /dev/null +++ b/WinUIClassicSamplesBrowser/ViewModels/SettingsViewModel.cs @@ -0,0 +1,65 @@ +using System.Reflection; +using System.Windows.Input; + +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; + +using Microsoft.UI.Xaml; + +using Windows.ApplicationModel; + +using WinUIClassicSamplesBrowser.Contracts.Services; +using WinUIClassicSamplesBrowser.Helpers; + +namespace WinUIClassicSamplesBrowser.ViewModels; + +public partial class SettingsViewModel : ObservableRecipient +{ + private readonly IThemeSelectorService _themeSelectorService; + + [ObservableProperty] + private ElementTheme _elementTheme; + + [ObservableProperty] + private string _versionDescription; + + public ICommand SwitchThemeCommand + { + get; + } + + public SettingsViewModel(IThemeSelectorService themeSelectorService) + { + _themeSelectorService = themeSelectorService; + _elementTheme = _themeSelectorService.Theme; + _versionDescription = GetVersionDescription(); + + SwitchThemeCommand = new RelayCommand( + async (param) => + { + if (ElementTheme != param) + { + ElementTheme = param; + await _themeSelectorService.SetThemeAsync(param); + } + }); + } + + private static string GetVersionDescription() + { + Version version; + + if (RuntimeHelper.IsMSIX) + { + var packageVersion = Package.Current.Id.Version; + + version = new(packageVersion.Major, packageVersion.Minor, packageVersion.Build, packageVersion.Revision); + } + else + { + version = Assembly.GetExecutingAssembly().GetName().Version!; + } + + return $"{"AppDisplayName".GetLocalized()} - {version.Major}.{version.Minor}.{version.Build}.{version.Revision}"; + } +} diff --git a/WinUIClassicSamplesBrowser/ViewModels/ShellViewModel.cs b/WinUIClassicSamplesBrowser/ViewModels/ShellViewModel.cs new file mode 100644 index 00000000..f47e2091 --- /dev/null +++ b/WinUIClassicSamplesBrowser/ViewModels/ShellViewModel.cs @@ -0,0 +1,51 @@ +using CommunityToolkit.Mvvm.ComponentModel; + +using Microsoft.UI.Xaml.Navigation; + +using WinUIClassicSamplesBrowser.Contracts.Services; +using WinUIClassicSamplesBrowser.Views; + +namespace WinUIClassicSamplesBrowser.ViewModels; + +public partial class ShellViewModel : ObservableRecipient +{ + [ObservableProperty] + private bool isBackEnabled; + + [ObservableProperty] + private object? selected; + + public INavigationService NavigationService + { + get; + } + + public INavigationViewService NavigationViewService + { + get; + } + + public ShellViewModel(INavigationService navigationService, INavigationViewService navigationViewService) + { + NavigationService = navigationService; + NavigationService.Navigated += OnNavigated; + NavigationViewService = navigationViewService; + } + + private void OnNavigated(object sender, NavigationEventArgs e) + { + IsBackEnabled = NavigationService.CanGoBack; + + if (e.SourcePageType == typeof(SettingsPage)) + { + Selected = NavigationViewService.SettingsItem; + return; + } + + var selectedItem = NavigationViewService.GetSelectedItem(e.SourcePageType); + if (selectedItem != null) + { + Selected = selectedItem; + } + } +} diff --git a/WinUIClassicSamplesBrowser/ViewModels/WebBrowserViewModel.cs b/WinUIClassicSamplesBrowser/ViewModels/WebBrowserViewModel.cs new file mode 100644 index 00000000..89fb000c --- /dev/null +++ b/WinUIClassicSamplesBrowser/ViewModels/WebBrowserViewModel.cs @@ -0,0 +1,110 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; + +using Microsoft.Web.WebView2.Core; + +using WinUIClassicSamplesBrowser.Contracts.Services; +using WinUIClassicSamplesBrowser.Contracts.ViewModels; + +namespace WinUIClassicSamplesBrowser.ViewModels; + +// TODO: Review best practices and distribution guidelines for WebView2. +// https://docs.microsoft.com/microsoft-edge/webview2/get-started/winui +// https://docs.microsoft.com/microsoft-edge/webview2/concepts/developer-guide +// https://docs.microsoft.com/microsoft-edge/webview2/concepts/distribution +public partial class WebBrowserViewModel : ObservableRecipient, INavigationAware +{ + // TODO: Set the default URL to display. + [ObservableProperty] + private Uri source = new("https://docs.microsoft.com/windows/apps/"); + + [ObservableProperty] + private bool isLoading = true; + + [ObservableProperty] + private bool hasFailures; + + public IWebViewService WebViewService + { + get; + } + + public WebBrowserViewModel(IWebViewService webViewService) + { + WebViewService = webViewService; + } + + [RelayCommand] + private async Task OpenInBrowser() + { + if (WebViewService.Source != null) + { + await Windows.System.Launcher.LaunchUriAsync(WebViewService.Source); + } + } + + [RelayCommand] + private void Reload() + { + WebViewService.Reload(); + } + + [RelayCommand(CanExecute = nameof(BrowserCanGoForward))] + private void BrowserForward() + { + if (WebViewService.CanGoForward) + { + WebViewService.GoForward(); + } + } + + private bool BrowserCanGoForward() + { + return WebViewService.CanGoForward; + } + + [RelayCommand(CanExecute = nameof(BrowserCanGoBack))] + private void BrowserBack() + { + if (WebViewService.CanGoBack) + { + WebViewService.GoBack(); + } + } + + private bool BrowserCanGoBack() + { + return WebViewService.CanGoBack; + } + + public void OnNavigatedTo(object parameter) + { + WebViewService.NavigationCompleted += OnNavigationCompleted; + } + + public void OnNavigatedFrom() + { + WebViewService.UnregisterEvents(); + WebViewService.NavigationCompleted -= OnNavigationCompleted; + } + + private void OnNavigationCompleted(object? sender, CoreWebView2WebErrorStatus webErrorStatus) + { + IsLoading = false; + BrowserBackCommand.NotifyCanExecuteChanged(); + BrowserForwardCommand.NotifyCanExecuteChanged(); + + if (webErrorStatus != default) + { + HasFailures = true; + } + } + + [RelayCommand] + private void OnRetry() + { + HasFailures = false; + IsLoading = true; + WebViewService?.Reload(); + } +} diff --git a/WinUIClassicSamplesBrowser/Views/MainPage.xaml b/WinUIClassicSamplesBrowser/Views/MainPage.xaml new file mode 100644 index 00000000..7659db8c --- /dev/null +++ b/WinUIClassicSamplesBrowser/Views/MainPage.xaml @@ -0,0 +1,12 @@ + + + + + + diff --git a/WinUIClassicSamplesBrowser/Views/MainPage.xaml.cs b/WinUIClassicSamplesBrowser/Views/MainPage.xaml.cs new file mode 100644 index 00000000..27f90b29 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Views/MainPage.xaml.cs @@ -0,0 +1,19 @@ +using Microsoft.UI.Xaml.Controls; + +using WinUIClassicSamplesBrowser.ViewModels; + +namespace WinUIClassicSamplesBrowser.Views; + +public sealed partial class MainPage : Page +{ + public MainViewModel ViewModel + { + get; + } + + public MainPage() + { + ViewModel = App.GetService(); + InitializeComponent(); + } +} diff --git a/WinUIClassicSamplesBrowser/Views/SettingsPage.xaml b/WinUIClassicSamplesBrowser/Views/SettingsPage.xaml new file mode 100644 index 00000000..604eafd0 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Views/SettingsPage.xaml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + Light + + + + + Dark + + + + + Default + + + + + + + + + + + + + + + + diff --git a/WinUIClassicSamplesBrowser/Views/SettingsPage.xaml.cs b/WinUIClassicSamplesBrowser/Views/SettingsPage.xaml.cs new file mode 100644 index 00000000..2f704dc7 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Views/SettingsPage.xaml.cs @@ -0,0 +1,20 @@ +using Microsoft.UI.Xaml.Controls; + +using WinUIClassicSamplesBrowser.ViewModels; + +namespace WinUIClassicSamplesBrowser.Views; + +// TODO: Set the URL for your privacy policy by updating SettingsPage_PrivacyTermsLink.NavigateUri in Resources.resw. +public sealed partial class SettingsPage : Page +{ + public SettingsViewModel ViewModel + { + get; + } + + public SettingsPage() + { + ViewModel = App.GetService(); + InitializeComponent(); + } +} diff --git a/WinUIClassicSamplesBrowser/Views/ShellPage.xaml b/WinUIClassicSamplesBrowser/Views/ShellPage.xaml new file mode 100644 index 00000000..0fe6a327 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Views/ShellPage.xaml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinUIClassicSamplesBrowser/Views/ShellPage.xaml.cs b/WinUIClassicSamplesBrowser/Views/ShellPage.xaml.cs new file mode 100644 index 00000000..5d85c478 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Views/ShellPage.xaml.cs @@ -0,0 +1,85 @@ +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using Microsoft.UI.Xaml.Input; +using Microsoft.UI.Xaml.Media; + +using Windows.System; + +using WinUIClassicSamplesBrowser.Contracts.Services; +using WinUIClassicSamplesBrowser.Helpers; +using WinUIClassicSamplesBrowser.ViewModels; + +namespace WinUIClassicSamplesBrowser.Views; + +// TODO: Update NavigationViewItem titles and icons in ShellPage.xaml. +public sealed partial class ShellPage : Page +{ + public ShellViewModel ViewModel + { + get; + } + + public ShellPage(ShellViewModel viewModel) + { + ViewModel = viewModel; + InitializeComponent(); + + ViewModel.NavigationService.Frame = NavigationFrame; + ViewModel.NavigationViewService.Initialize(NavigationViewControl); + + // TODO: Set the title bar icon by updating /Assets/WindowIcon.ico. + // A custom title bar is required for full window theme and Mica support. + // https://docs.microsoft.com/windows/apps/develop/title-bar?tabs=winui3#full-customization + App.MainWindow.ExtendsContentIntoTitleBar = true; + App.MainWindow.SetTitleBar(AppTitleBar); + App.MainWindow.Activated += MainWindow_Activated; + AppTitleBarText.Text = "AppDisplayName".GetLocalized(); + } + + private void OnLoaded(object sender, Microsoft.UI.Xaml.RoutedEventArgs e) + { + TitleBarHelper.UpdateTitleBar(RequestedTheme); + + KeyboardAccelerators.Add(BuildKeyboardAccelerator(VirtualKey.Left, VirtualKeyModifiers.Menu)); + KeyboardAccelerators.Add(BuildKeyboardAccelerator(VirtualKey.GoBack)); + } + + private void MainWindow_Activated(object sender, WindowActivatedEventArgs args) + { + App.AppTitlebar = AppTitleBarText as UIElement; + } + + private void NavigationViewControl_DisplayModeChanged(NavigationView sender, NavigationViewDisplayModeChangedEventArgs args) + { + AppTitleBar.Margin = new Thickness() + { + Left = sender.CompactPaneLength * (sender.DisplayMode == NavigationViewDisplayMode.Minimal ? 2 : 1), + Top = AppTitleBar.Margin.Top, + Right = AppTitleBar.Margin.Right, + Bottom = AppTitleBar.Margin.Bottom + }; + } + + private static KeyboardAccelerator BuildKeyboardAccelerator(VirtualKey key, VirtualKeyModifiers? modifiers = null) + { + var keyboardAccelerator = new KeyboardAccelerator() { Key = key }; + + if (modifiers.HasValue) + { + keyboardAccelerator.Modifiers = modifiers.Value; + } + + keyboardAccelerator.Invoked += OnKeyboardAcceleratorInvoked; + + return keyboardAccelerator; + } + + private static void OnKeyboardAcceleratorInvoked(KeyboardAccelerator sender, KeyboardAcceleratorInvokedEventArgs args) + { + var navigationService = App.GetService(); + + var result = navigationService.GoBack(); + + args.Handled = result; + } +} diff --git a/WinUIClassicSamplesBrowser/Views/WebBrowserPage.xaml b/WinUIClassicSamplesBrowser/Views/WebBrowserPage.xaml new file mode 100644 index 00000000..4675a3ef --- /dev/null +++ b/WinUIClassicSamplesBrowser/Views/WebBrowserPage.xaml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinUIClassicSamplesBrowser/Views/WebBrowserPage.xaml.cs b/WinUIClassicSamplesBrowser/Views/WebBrowserPage.xaml.cs new file mode 100644 index 00000000..09e25233 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Views/WebBrowserPage.xaml.cs @@ -0,0 +1,22 @@ +using Microsoft.UI.Xaml.Controls; + +using WinUIClassicSamplesBrowser.ViewModels; + +namespace WinUIClassicSamplesBrowser.Views; + +// To learn more about WebView2, see https://docs.microsoft.com/microsoft-edge/webview2/. +public sealed partial class WebBrowserPage : Page +{ + public WebBrowserViewModel ViewModel + { + get; + } + + public WebBrowserPage() + { + ViewModel = App.GetService(); + InitializeComponent(); + + ViewModel.WebViewService.Initialize(WebView); + } +} diff --git a/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj b/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj new file mode 100644 index 00000000..e8988444 --- /dev/null +++ b/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj @@ -0,0 +1,46 @@ + + + WinExe + net7.0-windows10.0.19041.0 + 10.0.17763.0 + WinUIClassicSamplesBrowser + Assets/WindowIcon.ico + app.manifest + x86;x64;arm64 + win10-x86;win10-x64;win10-arm64 + Properties\PublishProfiles\win10-$(Platform).pubxml + enable + enable + true + true + + + + + + + + + + + + + + + + + + + + Always + + + + + + + + + true + + diff --git a/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.slnx b/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.slnx new file mode 100644 index 00000000..a45ddccb --- /dev/null +++ b/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.slnx @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/WinUIClassicSamplesBrowser/app.manifest b/WinUIClassicSamplesBrowser/app.manifest new file mode 100644 index 00000000..45f4f56d --- /dev/null +++ b/WinUIClassicSamplesBrowser/app.manifest @@ -0,0 +1,15 @@ + + + + + + + + + + + true/PM + PerMonitorV2, PerMonitor + + + diff --git a/WinUIClassicSamplesBrowser/appsettings.json b/WinUIClassicSamplesBrowser/appsettings.json new file mode 100644 index 00000000..a3badf2d --- /dev/null +++ b/WinUIClassicSamplesBrowser/appsettings.json @@ -0,0 +1,6 @@ +{ + "LocalSettingsOptions": { + "ApplicationDataFolder": "WinUIClassicSamplesBrowser/ApplicationData", + "LocalSettingsFile": "LocalSettings.json" + } +} From 678b9322fbccaadb381e4f96c1e48c960571e676 Mon Sep 17 00:00:00 2001 From: Thorsten Jung Date: Sun, 29 Mar 2026 07:47:31 +0200 Subject: [PATCH 02/22] Move classes from .Core sub project to main project --- WinUIClassicSamplesBrowser/App.xaml.cs | 2 -- .../Contracts/Services/IFileService.cs | 2 +- .../Helpers/Json.cs | 2 +- .../Helpers/SettingsStorageExtensions.cs | 2 -- .../Services/FileService.cs | 5 ++--- WinUIClassicSamplesBrowser/Services/LocalSettingsService.cs | 2 -- 6 files changed, 4 insertions(+), 11 deletions(-) rename {WinUIClassicSamplesBrowser.Core => WinUIClassicSamplesBrowser}/Contracts/Services/IFileService.cs (76%) rename {WinUIClassicSamplesBrowser.Core => WinUIClassicSamplesBrowser}/Helpers/Json.cs (89%) rename {WinUIClassicSamplesBrowser.Core => WinUIClassicSamplesBrowser}/Services/FileService.cs (89%) diff --git a/WinUIClassicSamplesBrowser/App.xaml.cs b/WinUIClassicSamplesBrowser/App.xaml.cs index 630571dc..b6549d8e 100644 --- a/WinUIClassicSamplesBrowser/App.xaml.cs +++ b/WinUIClassicSamplesBrowser/App.xaml.cs @@ -4,8 +4,6 @@ using WinUIClassicSamplesBrowser.Activation; using WinUIClassicSamplesBrowser.Contracts.Services; -using WinUIClassicSamplesBrowser.Core.Contracts.Services; -using WinUIClassicSamplesBrowser.Core.Services; using WinUIClassicSamplesBrowser.Helpers; using WinUIClassicSamplesBrowser.Models; using WinUIClassicSamplesBrowser.Notifications; diff --git a/WinUIClassicSamplesBrowser.Core/Contracts/Services/IFileService.cs b/WinUIClassicSamplesBrowser/Contracts/Services/IFileService.cs similarity index 76% rename from WinUIClassicSamplesBrowser.Core/Contracts/Services/IFileService.cs rename to WinUIClassicSamplesBrowser/Contracts/Services/IFileService.cs index b79bdc34..661a3300 100644 --- a/WinUIClassicSamplesBrowser.Core/Contracts/Services/IFileService.cs +++ b/WinUIClassicSamplesBrowser/Contracts/Services/IFileService.cs @@ -1,4 +1,4 @@ -namespace WinUIClassicSamplesBrowser.Core.Contracts.Services; +namespace WinUIClassicSamplesBrowser.Contracts.Services; public interface IFileService { diff --git a/WinUIClassicSamplesBrowser.Core/Helpers/Json.cs b/WinUIClassicSamplesBrowser/Helpers/Json.cs similarity index 89% rename from WinUIClassicSamplesBrowser.Core/Helpers/Json.cs rename to WinUIClassicSamplesBrowser/Helpers/Json.cs index 2f80acde..c00eade5 100644 --- a/WinUIClassicSamplesBrowser.Core/Helpers/Json.cs +++ b/WinUIClassicSamplesBrowser/Helpers/Json.cs @@ -1,6 +1,6 @@ using Newtonsoft.Json; -namespace WinUIClassicSamplesBrowser.Core.Helpers; +namespace WinUIClassicSamplesBrowser.Helpers; public static class Json { diff --git a/WinUIClassicSamplesBrowser/Helpers/SettingsStorageExtensions.cs b/WinUIClassicSamplesBrowser/Helpers/SettingsStorageExtensions.cs index d17b3e6c..22eba7a7 100644 --- a/WinUIClassicSamplesBrowser/Helpers/SettingsStorageExtensions.cs +++ b/WinUIClassicSamplesBrowser/Helpers/SettingsStorageExtensions.cs @@ -1,8 +1,6 @@ using Windows.Storage; using Windows.Storage.Streams; -using WinUIClassicSamplesBrowser.Core.Helpers; - namespace WinUIClassicSamplesBrowser.Helpers; // Use these extension methods to store and retrieve local and roaming app data diff --git a/WinUIClassicSamplesBrowser.Core/Services/FileService.cs b/WinUIClassicSamplesBrowser/Services/FileService.cs similarity index 89% rename from WinUIClassicSamplesBrowser.Core/Services/FileService.cs rename to WinUIClassicSamplesBrowser/Services/FileService.cs index 9f300be9..06ca72a9 100644 --- a/WinUIClassicSamplesBrowser.Core/Services/FileService.cs +++ b/WinUIClassicSamplesBrowser/Services/FileService.cs @@ -1,10 +1,9 @@ using System.Text; using Newtonsoft.Json; +using WinUIClassicSamplesBrowser.Contracts.Services; -using WinUIClassicSamplesBrowser.Core.Contracts.Services; - -namespace WinUIClassicSamplesBrowser.Core.Services; +namespace WinUIClassicSamplesBrowser.Services; public class FileService : IFileService { diff --git a/WinUIClassicSamplesBrowser/Services/LocalSettingsService.cs b/WinUIClassicSamplesBrowser/Services/LocalSettingsService.cs index d4934033..7fd68693 100644 --- a/WinUIClassicSamplesBrowser/Services/LocalSettingsService.cs +++ b/WinUIClassicSamplesBrowser/Services/LocalSettingsService.cs @@ -4,8 +4,6 @@ using Windows.Storage; using WinUIClassicSamplesBrowser.Contracts.Services; -using WinUIClassicSamplesBrowser.Core.Contracts.Services; -using WinUIClassicSamplesBrowser.Core.Helpers; using WinUIClassicSamplesBrowser.Helpers; using WinUIClassicSamplesBrowser.Models; From 1871b93f9078e6317512d08cddc8334f8b829cc2 Mon Sep 17 00:00:00 2001 From: Thorsten Jung Date: Sun, 29 Mar 2026 07:55:59 +0200 Subject: [PATCH 03/22] Remove .Core project from Solution --- WinUIClassicSamplesBrowser.Core/README.md | 5 ----- .../WinUIClassicSamplesBrowser.Core.csproj | 17 ----------------- .../WinUIClassicSamplesBrowser.csproj | 5 +---- .../WinUIClassicSamplesBrowser.slnx | 5 ----- 4 files changed, 1 insertion(+), 31 deletions(-) delete mode 100644 WinUIClassicSamplesBrowser.Core/README.md delete mode 100644 WinUIClassicSamplesBrowser.Core/WinUIClassicSamplesBrowser.Core.csproj diff --git a/WinUIClassicSamplesBrowser.Core/README.md b/WinUIClassicSamplesBrowser.Core/README.md deleted file mode 100644 index 906c066e..00000000 --- a/WinUIClassicSamplesBrowser.Core/README.md +++ /dev/null @@ -1,5 +0,0 @@ -*Recommended Markdown Viewer: [Markdown Editor](https://marketplace.visualstudio.com/items?itemName=MadsKristensen.MarkdownEditor2)* - -## Getting Started - -The Core project contains code that can be [reused across multiple application projects](https://docs.microsoft.com/dotnet/standard/net-standard#net-5-and-net-standard). diff --git a/WinUIClassicSamplesBrowser.Core/WinUIClassicSamplesBrowser.Core.csproj b/WinUIClassicSamplesBrowser.Core/WinUIClassicSamplesBrowser.Core.csproj deleted file mode 100644 index ac5f582d..00000000 --- a/WinUIClassicSamplesBrowser.Core/WinUIClassicSamplesBrowser.Core.csproj +++ /dev/null @@ -1,17 +0,0 @@ - - - net7.0 - WinUIClassicSamplesBrowser.Core - AnyCPU;x64;x86 - x86;x64;arm64;AnyCPU - enable - - - - - - - - - - diff --git a/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj b/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj index e8988444..bfd1ba27 100644 --- a/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj +++ b/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj @@ -24,12 +24,9 @@ + - - - - Always diff --git a/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.slnx b/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.slnx index a45ddccb..010b3e82 100644 --- a/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.slnx +++ b/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.slnx @@ -4,11 +4,6 @@ - - - - - From 7cb17dce074c7ed7258f7df86eefd2fcc08b0a13 Mon Sep 17 00:00:00 2001 From: Thorsten Jung Date: Sun, 29 Mar 2026 09:13:59 +0200 Subject: [PATCH 04/22] Update `README.md` --- WinUIClassicSamplesBrowser/README.md | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/WinUIClassicSamplesBrowser/README.md b/WinUIClassicSamplesBrowser/README.md index e24ccedb..c00c05cf 100644 --- a/WinUIClassicSamplesBrowser/README.md +++ b/WinUIClassicSamplesBrowser/README.md @@ -1,6 +1,26 @@ -*Recommended Markdown Viewer: [Markdown Editor](https://marketplace.visualstudio.com/items?itemName=MadsKristensen.MarkdownEditor2)* +# WinUI Classic Samples Browser -## Getting Started +A Sample Application for browsing the [WinClassicSamplesCS](https://github.com/dahall/WinClassicSamplesCS) Gallery, built with Template Studio for WinUI. + +## Table of Contents +- [Prerequisites](#prerequisites) +- [Getting Started with Template Studio for WinUI](#getting-started-with-template-studio-for-winui) + +## Prerequisites +- [Visual Studio 2022](https://visualstudio.microsoft.com/vs/) with the following workloads: + - Universal Windows Platform development + - .NET desktop development + - Desktop development with C++ +- [Windows App SDK](https://docs.microsoft.com/windows/apps/windows-app-sdk/) version 1.4 or later + +The following libraries and tools are used in this project: +- [Vanara](https://github.com/dahall/Vanara) A set of .NET libraries for Windows implementing PInvoke calls to many native Windows APIs with supporting wrappers. +- [WinUI 3](https://docs.microsoft.com/windows/apps/winui/) for building the user interface, including the following Extensions: + - [Template Studio for WinUI](https://marketplace.visualstudio.com/items?itemName=VisualStudioClient.MicrosoftTemplateStudio) Visual Studio extension + - [WinUIEx](https://dotmorten.github.io/WinUIEx/) WinUI Extensions library + + +## Getting Started with Template Studio for WinUI Browse and address `TODO:` comments in `View -> Task List` to learn the codebase and understand next steps for turning the generated code into production code. From d88da5a451db82379cde1c66406d4d7e4bfdfe70 Mon Sep 17 00:00:00 2001 From: Thorsten Jung Date: Sun, 29 Mar 2026 10:11:31 +0200 Subject: [PATCH 05/22] Add assets --- .../Microsoft WinUI Logo.png | Bin 0 -> 83325 bytes .../Assets/Miscellaneous Debris/Vamara Icon.ico | Bin 0 -> 61770 bytes .../WinUIClassicSamplesBrowser.csproj | 10 ++++++++++ 3 files changed, 10 insertions(+) create mode 100644 WinUIClassicSamplesBrowser/Assets/Miscellaneous Debris/Microsoft WinUI Logo.png create mode 100644 WinUIClassicSamplesBrowser/Assets/Miscellaneous Debris/Vamara Icon.ico diff --git a/WinUIClassicSamplesBrowser/Assets/Miscellaneous Debris/Microsoft WinUI Logo.png b/WinUIClassicSamplesBrowser/Assets/Miscellaneous Debris/Microsoft WinUI Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ac9af493cee843eb47447a90e3fdbfd0a3ee8b7f GIT binary patch literal 83325 zcmd3sWm8?(PJ4x4|X2y9NuvouET-m%-hAaMzpnU)-v*>(uE_ z-K%!*)z3ctLq$m%4H+L93JMBMRz^Y%3JTiczd!{18ySb@C;#_Ca+c9`gMvcA{x6`R zvU9)w8-#XKlNN)jnIt^^_W@@mswfHtRiA+JY6=epE%`}SLR7;W`s~eT+F{6r1o8da z4+8{?2!laM_2~t+7k*7t&VaIcc<4MGhghC`-GM3IGe$*zV-7#1!F&*#jRX3zK$j3) zomGF9xQb%2Y#Tn5E~46C!Q_xQ_uZC)R`rvtOYa~K+!F`~Dmce&>RVb?&-ib*9t=tu z`_`a~b-xo0OG{15cXo!#$v+?=2>AcuDds`CKW0nmep0?0HOJU0#ULC?Lmka?e zX3HN_j^4uY2ipC`IA6V}^Vqm_iq`z8uVMAWgLz|9y<^S(V#Jk6-L%M+!>PJ!(5i_= zp&}{GT{uvByDJ^<&Z=}1yGPD}zrcW)-+Nn#5i(~~>e6tPvl>@_c2IS#`FJJN>~rO+ z-bLpJYnwplRsFiw^459Ri{LVLVDJCzRlsoZS4fb0mbi&z;5g@9!MJfA z1lG3{=<4zx@oZpLTQ{`w(+@wGuO;9eUqnHSTCcQhpMo}2nw>UphBRw{s>Tle8q5-_ zPy1CnGOYe@|PDjT<$8AK&byvcw=* z8&ywbF<7e~==zK-y0O9pLrp!Af!JU!DCT!v<#)}uSOgX<1V}goU6?yyQ~4;|zxvIt z&=%6lTUJ0&SB3gPaorfuPl>=Pe5B7C(r+ve=~e51uPM?s-Z!|Q&HGiB^n!jNLEHc2 zfIseeG#BieZ&-A&+U4Uc6hgi{yCp>sVGHmCiJSCEnV_Xc8vR)ZL;WmTWLnrmpSt`7 z*xr_*D6HNM4t{X($cSG4g{FmpV_^5OroXU(shzLYp*DC$d(A=U2L&t62ir#6r~E#7 zv*)l>F3kxMeZf-Le0J<|Bnb5H^TbuUKxK**ST9xS?kQVy51c2^m!0Pzn7_g7!-De8 zc<}yJ-pP<_27rRSFp3aK6~n~Ilr~~av>`lsLw_{Z*R7jb`X=20m8)d{9<|>K*VbJg zxUdGckhD5{ydm_w{q1^qlPUctGt6<$hfHmXc^mNMZceqgk@|j;QTJXJ zkC&5)D{+u`*JawNI9U9y0RyQv);eAcVScq{w{dLR-RNGg&D;{c;d_v@xy?;==;i2e z+w&dP&Y^*08$APA8|0()y!RzZ)^GY9zf9Yqk5s>?M-|PAtO;cQeIs~ZK-*+tGvC>d+PeS?nFKQ(DTdf)&9Urlv0ngbbg4Tg(vy~ea<>-@xJ!{BMc7p1IY{m$Y zs>9}JycB^IvJTFiiL3O3IN*XH41IrG zncaQ7{!INX-b*Q{dcuc&Kocy)39oT|a0XzgI!Hlish74)rr9%5vHrT{jJl+2<8Vo$ zHG3jxm%vSrJ*`6ES?e)m-cEEh+w5dLI=k2(IiHc=stNotbaEFDH6c!9I}e-sriWXb zb2>#61Q?VU?eutKe)_>;IOx`>qD5eA6n^&8>A~OL+x*Xgi@uH+6-nTxq3@>EMb5b) z&CnE(2DsN+GxXnNXBf|f1ot?77I{%VT=_xeR`AB3N0Uo}%c*)w4fD0M0lRfFYHD#- zTJ8IfWE&6JG$VQ6&b|_RmJ$*F@vD-)%#}7@xVuZdmfpS?gQyc7=It75GlUAoJ+qh8 zCx6xvYz$n=RXz@WAqFvhyeF`Ra_^L#98`O6$qUy#wD<7YT-XHS%;MH5pVkj_c!m#e zIJVU@jOGbcBq0E<3o)&-@I=0hbK86S35Vl z#*sI(#O_4$wwu5WLJxKv%LVg#E=)WoZSuwi_%4C}?f-+@QQ-xiov)4?^!>7EhVt^u zCA=u4jIE0IJi5!juc_*aRfbdTv)1rEB+cP1fXfuhrU->M`HIIF7LgANsFLtAE~YTz z7wF^?Aq(HHT%X!ujEOMh9p`A9ObXUW?$wCgE3v9?g6%ouCRa{EPw~1eWK>r`OU}dt zb$)6?$E+~TXn4~Z4Zm$SFV;iuAU%QQD479KZ$ENZ7CL=Mn0+4qo8;i_sMm3VgD}v( z+XP1qVRBEG!57mKWC2wrr_|&pGPfcB8(F98IH`Oz2r)W?T11i?c|=`5GzpnC^pT4I z^S-+h;b?#Ccad+EA<<4R8qr#zpYUwu0X@FmsmSL&j+>`Xr}LSHMb}`T7Tu zB23Ua{}ufAJ4c+pn>M=&-y{PXpZPtPQt8~v@^)C%B}~cz03VfdVd-`nHHNE71axQq z+%MCR&tf7Qa8)@Gz>TcuQy;$j4fUR<_RDPtt;^M3j0c~#ztFREDUO}>x%P7yT}>!##jEX-gWq<+zn!lqnq?K_8DfJZ1&N>6A<5wX}vWN`gM= zTV+qBN@DePZv59Pv!)zA>RO(12vqNA58RO{&34$BTuluWrEXKRJ*_3(CQ-d^?wdC# zw6!xqspaS>7}APq-^Wt71Gc8ic{_wqN2}5a($-xZI2Wv|TY4WHhyjZf_`oi52BJ8J zKf;eZfwT|61EV?K6*b1SyQ80nn<0(F-c0YCwSu7m&kf)W@H;a2>ew{v{;RL62Tahb z+K3g3H22;b2Yy}>!to+Q{c16_Ej6*Yw1CBSJ`cV#u85~3MhG1)#L~6+@9QG>&e zT%>a6AvXI!WBEw*hjQCUBYw{DU*PXajHfvLaHI za{3w|gw88cav4+t)kd0rZFh{x(y?tGJ)~sg-o3awQ;*Q``;mX8Cf}3qm|RfD6UyQV z?$(F|KGy51bbp+qxgJ;lpnlh`((W+R)aB$vH^T))`VM)ZnvB=?@8QUdd(iZm1_GrB zlKS{K7xn8FY;Iis7{Jj$H(@KekG@TKJZ`scM*SxnaZ}IuZQRA|X{*>HY;qcN2Ogkq zXEI`-qmgI5vll*X*T5C_bsyrC%{>T1i~5yU_G;9EXw9-ogSn|B44Z!1nc&^gs*KLC zSZ`Iy27a&I58~@?F(opo9C7wFbp9Txtxfqo+d%XJIw2M+gXk`f`=#C7J6qXbV`am5 zq_TJ|FVAP?s>n{Y%FW-{flO~1 z>f*U+*UjPD>ju}p5Z$y44qZOe?n`aZT#fDGNKlx62)?lIgR7fi z0lvesb;=lY4m`xl|3bLrswKf+fGIVyr^-Q1m)+^dya-ySjT?u zrVQc@yt(aiwsPg0&d5Twzl`T;3|(zM&R4(Nl%_lu>IB07Y(M5bk$)rf9j*)wz4NM8 z5vHG7yVxGIuHY}JWw=op`+4YO^BqLc{C3FGLxOEBE$LQ(){wTM@46M=p@JF@!JItG zAogc^U$%4V6(afu5rjl0mZgv*MCWi>%%;T$SL`ou8u;$M%ND@Bi@^KQqo|~nHnb)GiLUwZ4sxLzJZHr`FyIWByfz2gk=o*W4_l0D580${`dsL*kOW@Pm>9JX z-Kg(fjfXHOQl zfkwe5DK)2knArgLa1lA}!SR(f==KH2;)dtHzx!ru;*>Eri~Yu>y?je)GJ%rAHXMTV zZik*XGmO3dwk525UYd{i%QuCxC*kr++ui1i<^}P&_k{ud?hukA5B0`V+KmDw}J^Phqd(F!R(<2#Wvzv$l5(Lu?u(79DY3)sb@bpFS z3a616%HYn>d5Wt@fN?M_sQn9jh`w^atl?mw1J{4@#bE8#wB5V=? zj&3=`A(frt^1yX%0kcZ#4&WgTWmmvuG_@ER=P`s57dir;VJ<#gh?))!IGmxcNK@X| zGW!6(NK$VZ5z8CX%OsgR6b|r-c-{P>@-hwyL0jWiaCH{EKc04{vB6l|aFmj&gFYU_6`#Ln*v*RcL# zNy`V3u$F{?y-1uc*3uJ&!|9pEGZw<9dCo?a@w46v3k( z)@KXd>Ul3hUIp*(Jx}6Df1B+lP^`yUNV2Tq9o`X#CuKd{=HCU^I{q1@5amc{ThZ9s zb{_T9LQ@l00=v%y_#-ExjsOhXCf$%r%Qg&Mf*`3p?2 ztdpa{D$!Nvlbo5@XQ8Nn2M^DGWP2e4KG?nAMN8pyn9j4sAM(U95eRhjg_jo@kt?HI z+#$8SQ;0m!X&vAoFloOWbDdg+Q6pSmbuFc44e^cQht+#?d~Noxw1es^T!22-OTKg4 ziQInytVcO9>kH~AojF{;2F1=sl}-CNG6BMNrr+~cxRp21D0VVSE|JBKF|v4w`SE-< zgU+)%;Le%W@47oK!#jHFMC?v=0v;GKB8Z?3vUhfaR!9Y^nDxhI7?@fic^gi0=l_b> zMp~1DkXpQH%?Mqnvqmu|Or_99+|R_A2SQQ;V==4#>m0M|<8UDdLJ>miZ-atz{!S47 zhne2hS7w+JWI}OL#*OD+6UbU_MyKjbn|QIJo!Qp+g^X~%^Arfs9KIM!+K86L$*V2j zoPAeXd(x9l?FSoft(KH867D4Z#JyfF*2xB^t$DZr0g~Qx-h_-Y^QC{%j?q9Hs~dUu zg!v(2~ySg@4rGr_CbkU1EBOI;Y#ef*^o#Kr0EVUBLWYTZ2P&tBN# zOGH~-rJ(lW!BI zc6EH^4+NL~q~`8R#(GoNcX|PwfmxC6E94j7Ctr&@d7OHTmKzkV=AivYCJ0RD9TKmo z3o*S{X1ZaNlIAH_1Q}M=Y)AR{=nqy*@_B<5+aufQ!r2gmR}_t?7Flc@TZ5DZ9qJi0 zNoycz7mMu_?^Ty?7#Y9}1M(BSI-if$zi~0IqwT3JcXK#T?!fTE~*;M)F zlcm!FdBp<6xYekb{*~#zgN8+|GaS4a+K|nz_42NAK^fl#Zbo*Zs~DZ19s29$`?QXI zN`K{_Cdv%yuggl>ALWX&0?}wLHd+0$5{AzN=zj~`cK-4OunYdpf~21$3E$jW^iNr1 zC!mGyr4Rypyo=Ta4WZjr{oAVe)JQl50!=aew%{2C^WAu~7zQWf$_q(Q+NaD-2Q3lL zs)fc9l81G_9>qK8goQi7P1?yG0awj~$j#Q`NL?SyL#XzhvIIb~{`Dxz=h(#28JBRf zDH+v6S7bK|5&5?A{aV-!?j_ZJ1LUQ4}hF(`Uy zN^%MZJ{-D?^}J9#+F(tK*j-SuP{w{NIq&_b_sf^U%@^>6mLi_EyTYywV7MRoSF@O9 z6Sk!?%_3JB(D2lFC(oDRp=B6EX&9DVDhkzcT-!HF7NZBH?P&5Oj>eIA!?4k8%GIYI zW4_wo`7U$JZ;b6-7?hRy5aQ@`@cbToA{elJgo0IGA2r!BbQ`9?)24gZannP}m37S6_55~jlM_nap_P9s@zc@N;= zNjPe&Tx?cq)fF=IhQE0NuvV?|j&9pul|?PC{F*yXzNG`Jf9g~{loJDpCc+$9y0Hj4 zu;T#mpQfH#+}du+$ymi{{ciM}kP@}#s%NOSUs!oWs|~+Y&(hfZ;5=XD6#U&S@MIl+ z{l`9ie_s@K&`}X#v8$=L%VGU)+_E@-X35lS zcSPEz+^WbQs|KEE@MeI1T|Q7uK@D5vjgGD0o*IXdfO#wl9F_nHazg8kmw8g=P{lTT zSVtM6%oUC}y}zKUZ$f~i8$F_T8LhrZ8q7qKJ7j0rEh5$uPz2ev5^fR2q&fivVVjhS zzRj5y(f~uEMb{a=p}D!!yICSJeGlT@K=;lp4N1Vo|Iy^`e|psIb7wd7{0TGVVMN$w z@Me!RmbegGFfoaeh4*SLxl3G=xPu$GS1 zXEYmr85=xr4Zcm=>7bx5LK0e1pOUtuqm(KuE~VG0X#9!nhMp727@6dBAsXcD$a1l!ib#?t(8{RQS!|T>I@sI=s zHb!Q4Huc;C4nUB2U|HJ~_+87N zjgjd|CjzRDiw;G^E_jguckKIj$V>dEzD0h#MK zC-|h$M+1AB%W{cRGrKodG~-=_3^y8$pY(>{x#@~*&#=;GnsOfefHn_3P?~0)ePwF& z8WwAYsU~%Ii<;TzT-1ym@S}CRz8>GZ6;)3fdZ^eQVAhX)Xiin@yO+K`_&tb+`%-2DOmqJn|()>!!Kf6 zaZ>YVX*xq^%JM))a%)VB53q%@^)&GP;vXjc;7!YK!seq=OHb45#Dx{fs8`HI&Z?BQ zF2TC=3R^OUx&NUgIIs=T3xJ3Qb-spo#N8n3s@{H=us#$POPn7oR!K?#=ho95W^#ch zwP9s;(*{!nhYa_vcQxxN+|Azj5}{ei34UmjM!@zz_7>G#@)7w-$6UG8_2UVQQ|ds! zecy89fM@XVuiag>h}*m0z4(IyuE3(iJb33>E%1yrU*?Pnv5mGXy_7}?;LN(83Qq;d zbmUe%{Jl;)ZovB_7}xV&xwws#3#UBoev;>V-RXBV34zMZt_fHcHnf%?PUJx}d^gZh ztQm`=ugb^QAz1q9DAHm^7*gjeThCNQ_S8Pc;-HPcH&73FPM}xFK!AqhW~N8eTGP4x z`VCGI@bw5Q*hM-3HT|Q*ni^lhiYe)k8FVha>osk@u_RJ`pK~yy6}ZqnHfbvByUQAU zN7A#e%-ZvrKHk$?ysJ5uxL>O{n4#CzqNU6*G+8n{ti+Mg|w5Sh4K{PvCe9 z>BT6SrmDOP{)`9TM7hEzYFn0Epm#?lEQ7HrL;`VbC#+q%_4Nv%D*zdmM$|o!R^~j= zu4sQ9eADv3WhcGYyq@WDwh3Xs`D_{XOuP3+4xOHqvT#vYP+&wE>LKEo9nn|Ar5w$Z z{XBc503ja!iWo_%i<+w?P}IfNL5yki=0WKFU=Fk;wpXYUARuQFIL3nZn;Ya_e}C~B z2X*N*W3t6tt!`R>HvBaMH^E~2&0`rO8|F9hJRr}aolzPhvnA_)9!ztFCDMz{s+f~7 zgn99$;$h;HTe*RDg-}|FnB-UNZFKZy10ey%3elL`&axj-p3gyo%L}~3Z=P;fgX!zG zZWC6ibyeXIwS!PWF`>V0+~*<(;1iFYY@@E_6IJ3J2ytm_&7Je5I>#GaTbqZM_S%QI7b!|ff# z&*2qH(oj9_AM#fzfmd1ry|dV}V4m&DY5G;3!Nv znDZ#I)(h~-91lSs_>;92>DtR)ODFUJtW5oPi+nKzd~iL16SWc48wwuT6CYft^@MP5tN7oVQ$+D+SK4^N`MjkJk9sWPyf<9=q6Cj0KX=V_kZ zOn4Gs?a_k8Ma>)8VJQefS^kHX$3Z<>zC}rEILEy*26*l8!%qhPo%X}D{>$PP6PVzZ@2=J zuCz2TdY^}T9F%q=fe_Aolj9#pHXl0RWT;6xcv>r`$W)^k9$r1ehG|FCIT3a_B?VYG z8b?baP9$>J&Bo4hXHviYG%K{eVmx;-kLW9Fe~DcQ<>D@D=;3<5N?{p*9`_*HQse-* zZHV?+EW&1@K(~)*PPG0O3lygXGg#oa%srS4?Zq@}0&y)k^u-5Q%x_KGI>i}J(!|co zS@|TEof7PLlb8i14^={p(V!)Cy!L@w_nL-AjilDkq!-`jibm%B6XNka4m%}*sLFM> zVK5Lopxw6}o++V^El0qXHv`oOt}#bj8Y|HvWH&DP-Y+*klKAU6c`8=DGmNydq9Pi9 z1zKAp4CcEkpIU7=bA|EPs|`CyO}Ow|ra*&saMMSEZ$G$uBH_ikaY6YTJ74l^ zxeA281jV8PKWd#tt@2ND5}gT}kW|9CiB2LFf!=`E`CgK>!g9MS@sBH{W;#0WkPCXV!w>F?Qq@dg>kzbwNLu?+juysj0-{vSAGH=jsP?x61rJ+c8fjGeHA1-j0y!o`p zUmZnY?KAMupiY7iwhg%w?6Hhj%STMHtJ&y ztvEvBOXmr@0%6Q`+#o!3UR%sJyrZVi*f9RFqTGI)im%~tQoGCq2*j6^c1JXhm6$Yl zkFbkQJ@2&nP_mbBGXEITYB%&#{V)^^QWMm=vJ6=int%;46Li)9lVUxL#1?Wv{8d~h zAIH~{yxVw8BkmViyL%RfrskVaW$mY!FVGpe;wRcWY1LDL{hTb(Q-B5O%eDeOnA_*| zEPW&cZ2mrl9X6+AtSQLJ;yLvDVS;>Mu456Gz$C)`X3SxG<118@VohOJui{+=5r#+N znU0K{FNOD!3y3bS)lfCyB^=bT>BR%Qw%YunNQ046p%+Pcy|qj?#m%-{iEd+4P)d|s zwua}FGl(I#`R697pt1D{L%?|+dmC{Jo4o9wW0Kev9+F!<%toxbN@w?B-BB1nnr6;L z43b!9u=a{L_cz{4ARIqn$f&B9NTU}lE#A936N zLjdg=tGoEc+{UWv+xjA}BKzBwQD|nDW!AtSrT%4_u6l zKiSp}G*udBy$L%`5R2%E3~^S$qZA#t8nZM|XQ}(^W1Kfk$7D;RNR?np&>fKY<&@2vIsR(rlBXl??T!izz~9c z9GX%y@NfCntXq{LZ5{weI1WZH!z$eg`*&dRi_R01MRvFynws~TFk!M!%GmnLkhSIT z^57(dn1dVm!B?DW5qrrRl@NZ$C>}zP6Ny!Si@1`Wwh~&@+z|b zYO4`(y3~jO_=F+HyTR*VJzc0((ZRNTf-4cdOkR3sCF&yip!GU*Y2^NqG8yl6WP}n8eOdzJA7=&1t))jPVl0%nqd<46hV`EK%&BdzuGaRwFB$82tMo~`} z696xWG~y{hHI)PYcye72@nm@<@jyj~^gjb`O%y~VczN-`nL9Nf$eM&479UF6c7qA=V7klDjz+<^HZ)?Wa4|ap9F1 z(!HnI-{R!^lzqOZ9U0Z?(8+KY3|8J0%)?LOCUTIZ`l0qb1FOr1g}Tu9CsmZDEsny- zE1%2f{*xW#i1!CqhI{neWsA!oZK+XT+^t+@?bcAilCta_f#69rT#nf@sJFt+4TL z28gw6M;K=+aXg#zvIP}<^3V2U>TG8W6u=xUJme;_WfJ@V44CsEqnXNtTj9Z|uEJ3? z4$}|XEvxC1QsaUio#ob^6BTB!8e)Ag%`}Dg_dm7#c(!Uc6@zgcK?xBhX?L4N{ms>s zwvxQ@e)VSffG*#TDr;pzFN|HQyrOh}GX+6XUOdd_jd$`H7`XJh4!LImK%}Zx+P^ZC zo5DjvN$mtb?GMJaXM6w%8ct@5d!rIlZ``tmMG1)xGg*Hq7^-pc0-`_E3cn zrS#H^2*X3C8Uj#$I9tQ&iZ+|1F$IsPqi14mE?w)i<3(HL#(n;Tr7Ic%EoPJAD*Pr& zdJ)h|_Uo@vRS7H?|0&LeSE>JLhOO3k@F92UzgrK7URUP%J(Hq@P@J%>xc_MOkJ6jb zMY+&ep#Ydg%Ji}ml*=7l_U<$B19N4O`V|Ug4E1MxQ?R*g^TXDhs9lC%AFQHYA{_tv@Q;lLn8&2yhhXOw- zL$Yvjiw7|xf6oYm?JF1VEt@up5So69o3YZ)k`A zgA2WFd#4uSi=#>Y1B9{CWtJS=_Oq#SNL7qi(B`lF_kSNCFm$qt-gx4E5Ikqucof&=HCqON)Yve&2MyEMc}3jQka`4yy8BpC{q-LBq~2~y7*5XJ1?LVTiMa?mdVpS zKo|4O-g!C1h6egqM3Y|tF>%(y8P4)m@j0X3LOoeBbG?^290>&xEaEwZW_(<7-m7~z zFJ+?^I1rN}L8zK&CUg=nWOGNS1AJu4H1IC7vZugZGq<_qmf9QTn|FOUVSQn$+-c-9 z>Dr%Ao*>NN9r)lSfFifi@Mg!L@@P=)V zRKTIU+ivVDNNjcNg0Mo+dv}{Chu8+^O*6G1pu>iW!KEhv<(^M$|E&}85tWWm`u0K9 z>d8Qja5=`y3e3K4sZ;Ul{s*bMtZtZNlJ2#6G|JNqtf~TY`NzP$GJps3;8GSM?N9@V zK|&7m`3r?crM~LHn<(m!{9_zrmN9L|z~i>##_^Pz(YGe;u&;(6MC?7k1|&P#_)x1F z=Sr*e*LwG0^;cf8y}F@gWCwAP_{o3C6A1pWCD^<-A|J8t(6Sm8JluYdVh`NX#dZB7 zsYaG8FB(v}eAb1XS(}4yixU2xiXQ*=wWj0PrTJfu!a%IL6l*sp@8|*z)`K*xY5@#w zJC>lsreH_&?YDL2QpSGX`cNzpdj9 z(t`>2DuoQ5!jANzTTz1Oc6J=VyZ?vop-348a3!kt$G7d9*DEHL9=OBY0Mx$^C}^&o z3AyBmv%_42so`boI!76}*^z1GxaR?fXkHcEB;7%}D}3Rh*a?*sK?wxY`8*_P#3ibF zin0j|ijRhg$?U&aGBPCalV!e6M;Nqwm8rtmi>TRtX1pJbwg&XFLteNU$-xy#(ABpC zq;-S#YSPFmBseA>`yE$;^gU&_ee*I-ZF10ChW|K_wDi09-=4|sQqq~#F954}hDKDf zv8V+y;4fK#_|K;qPe*-}Y5B%Jb(uZg!}y{4c)t|cj3;cGc&9E1!%t}2&Q{L*y&|G` zdTx1J?Q1K>x5QX6ENPf)gYS;&VW~`y?4sy-alGK`{jIpR^9)VbQfnl-{>7g`aO5Kd$w|`V4JAm^8K*7%+(MkA1M10?Zs_>9V#~muTl?W#OvQ52 zYyz*>tM_a(E|2n`f5&S@rtr72$#wDIciiQw%S8gkBnC~RYjh5LcfWMtqa<9Yu6{IJZ}0wArg=_?qnY-)}QPVX|u$xZ=RX;meOe!c~JQw z>j}`j=V$+dQW|~3s6~H94T>G0c<=4EK{7qE;1pT3lO6L?bdk2Ip-U*KAH8TCo&)f$ zwXPf~IbFRxz6Ikn>FJ3n5{7E+8AlYM^-0YJVs6(JppK2XS}EH8@!YnGnA2;HlPi3w zw=Cn?f#z!I>f&o&Uu@gS-LZ@vRBk{m9v%(+bJsE;4Tj<`a6)sDfCPRA*|3beTQ#M; zs*w&*H^4OFLC-fi&GO(u>h|wi${sKbA0ByO9^0TG)eTJ2uT6AtW4RHnJ2+A~a!ofE z^|o@v1X>UN$ut;lyxf;w+19i(uCn!VH(QS@?%`MC=Yd1&I8yrhGFAeN?I> z&Pf$QpaT0_d~m#7(u`y0zeantt3` zsm3o58cs8u3><9^nH&oGqxo57;$Onsc9|m=Kog7=;Zg?yWS{Ar#C50uq5|4Sf{ahU zsLPN8XHmQ?ztiZTHz;6Wz=!pXCPpse#o&-1qwcl5D;B^A-BYO|2kNB3r8gCB9fXUK z^(P%xg!&;V;u&uK(r{7rIzwhUn&}n@3Dh2U5#Kt6s5r0vJ(gO!=G^s@I0RX1VP(K5ov2>$&7~* zI^dxq0T%|GWZcb_4K$?n)>epPt6@|!DY4F~eXh46lbdoKzu-(K)N-->qTO9sEThaQ zh20D5w`F$sGj}^fc!}etqwC))p}rJ^x{x2SPYK00v;91@Ek69SJWzA;+fFg`twIz} zYY%*qgrU1zt6e| zY>3SDUZ(>wMVA||_z14sY-8KQxn}hrZILgKtK-7bAe9B%`PPaTgYTyq-`(rczg5G; z-Uo<}MTk^U&++|~2y*rHzdW24DD%|M_c^9zv!7VX=sNUuZ}ONDxTu@mWCH_9`I2wGn-MD_ZH$wr%!*mzbEKa8OCbWAHQA?Ww^G1!2s`^UXCC$L)G?LlVX%8+rck4I2$GU0# z-cP`hAfr+uAQSN?#)~uDkb)i;*&(C|!gx>;y0Kly1|DD0nD>Raqd7>io6EH~vu1`E zi;S{fC9M9^?g0_FPkdEi!6E3Ct!SJU5s;36E{Unr`h7j7Y*l^+x#{b@v^1M_&QOTv z2KrpW1kFYMAO)&=()zJzHp8TpUijr&B&6a?-?7_MUbND7(jxFQ?FrD(nnzqRb5tkX zWxIa_&I1fM@0*MvzmuV5?>|{bgqv;12zZ|+_J8CCyqP~CZkaEFh3tSa#^@bf zqMMn75t}JuRHOTSFW)g~-W>N7m+64je|$0y71I=puA!e-_C|?9VZL6U-4t$KHC0if zdQU>pNqUN1o1@J0!>lu$)lkEZxudD89Y@h(q~fkf(Cl1kWJD|FBp{l%g)xs-#AL-M zXDz%EdrS=7_=kimXJ5+MMYi%&0WqRdYuHE=juJzIYGMz{X^;}{2qqH%e7^pQmJts} z9hjrtXH?2Vn%V|!h`+;(&)f{)WR5oFgky?5?{vPP#o9e>APkFXSh5jRde5rq{`vBk zXNN7DIOX3)UA(*V4Z84JS`E`?9}1=$FRFi_@m4%1rwBC&lpAaq7 zoZFg-vSGj;cldZJ$gj3>vb>Vg!=sY=%FY?EM^$x;%-D=sM^MqJ<{wv?09;dd8tN&^Oj!_XRSa@4HnW87U2joKpa{X&;speHf6}d|6NMKMD>+? zgZfs-03|$eS~HvYtVB|(-^OA7SmgF&RM#qVac=p#AdOyS9;0a;dZ+IBpS z+$wrwb8BlnRc9^a!R+d~8Ue0&o+cK`r*NX=c*2Z#xKo2$bw^;`cVc=w%g#teh(w z*YJ6KTI_y29?bA!-tiG|fOnR~(yY|RE+*lt=tD=m8rbh0EFh4W!{Ua=f3;KFcp8lJ zMlBm6v^KsveU5-Q7pU=n3L9fNH7LlhK-MlFW^E@5wS*43-i zM~rFe&KagGa6-Bi{q1}8-Vdngv$kbClQmCQ61$&$Zf2by=F=Fh4|CJziW1$m%YIVG ztz>crDVct*>{Jx?$WZ8c8)hiC&i{%@wu>P4iImLBnPh)e;J4KBtvTK>S=Bq7nmk~Z zaIB1#i6X6LTP9q^NNv(+ey7Q+$9_Qio?xS zgeRU6E|aY2s8iw0b!spr3h8VgS3ddKPCg>+_OL7n22^t<=AsE#@10UGyS)8fru)VQ zM0J?TjS7uVk1Cj2=G>xic_une<}*$%%XZB(NCUh5{OF@zR3dOIXmiP~TcZFg!dA)Q zv)prioVsbtRcw8;A>zeM4%}0#kk#=yorAhqARjMP`MQhT;^CI$ecx{2`0VK70=QZ^ zXnJ~NOhF)z;N<+Kul-nC0S+GoHPJo&);3r{sS&pkY`G5@&?WNSYzeT}Jl7>&e0z^B?ixzHrGVFKL18>+*2%udAC{51w9f!tXD`Cb2 zZ2kzZSl~OrIG13K-nkhvqypW8)0f8G6tO1)y~}xho^R{zA(!N2k*s;bv08*MajR>h zBkp!Qh8vu!A>UG?RcAdea$m^ak|oQHwS?vQe7~>Sw#>&&u}K40wJpP^;Z|sr^PyO9 zz{_?J^Ff=Z6SLnxa2(tta$xQZT2z%^@wz%S5*Kj2bmfh)d#SuomJSUPhE#mVgYG$i z-#%1oeSROz+tQLgvU$SF8J|b2afu<)qT9%%Y)t1G!n)uSxN_rHLrb-}q6|0wyy*cT z|63#WF_cL;WYZ5b-S^-$k(0jV{#I8tp$2qBYe9-dVI!i3^hLrPa-ls1)#^`-+Kq0D zAED|$+oj5PKlFlyoC>CX-*D4;)d$q#T0boajp)82vR*~7_EM(Xbj~(cp;pc30e?Mc z=z35s&k`3l8CWaxS4%`1J*C&Wwfr-kfI~Nef*qH^()jlM(Rphe?yc5iMjq@3kNUyo z$=E6rkZ|pex4%LvBWH4uLG!FXcFhaM;tpFfF-Kv*r0(j3^a%SA%$Gnhj8@92!M~qp z{g%YwGQ123y6lHD8nS)94or;fYTn!vP0thL_2gIy8}{7OC0_hA*7CyD>Z~ZK>y9ne z2v&Wjz~Q1prfmx3n#ZS5gh83wt&{Bo{cgUOjr*uf0N-LMLXOO#W%$dhMJHGX4h4ef zgM}tmJMqpSI$etP1`O?F#OQ$9clt+$WH!8T+s=18=A%Qn&{Hf}JqzB60O$o(mNNG8 z8i5}St$}@)Ar0A?4)dwT38!X@kQx=Pt>6R}>ZW zfuT+NtNPK1kE{fZ&}t6rCsl@4$0}F-&-r>-I_V3RG<(Q-8Ed#!oa-g#Yh{Azia%=c zm%aJmNtVK4Ur1)rRnvCz6dMHi%N@iQ8xhy&2et@esQz4@;SH^+jlNfeF}u*W;D*s@ z59N|nJ)6+4emB|iVi!hxy83Zi*_d18vmwO7)gN3^l5AqA7KxYpGM^zf%%DeD#17S+ zG|i9w(Nj_(M?DqG!C-_EKh^fNfHNxZtba)9)@OdfIs`MyCB@GU41`gMcT&bczD=)$^pkuNA6!TnlZnI-Sfiwc}no zvCwGLdVbOWRiShIdFvKaQ!42;%+?%Kl&Ot|K1}#LJuig8!{%^j^#s;`9UohWhilBz zW-kt5UU7&GBZ48y+0Hh4%U1sfH+_cqVx0!IScvLKicP!qHwPRHkj*wMk>4G|>i|<` z&TkqvJ4t9tihl_t=al*$)j?O%Z&)B{F6-8bAs%KmL#R(zd7_C_zEHq1p-85b@Bx&* z3>j5_gT@@_RUXk7;<390+#?yil`VRcn^u-c17CC`hdZ4yZ7tkbC{>lPXX_sb3vm*X z0J|J0(`GDDG#tte`U|jn!pD{RClEDpjY9lSjm20VBs7&RV&>>1<2_OV)4*R5dCY_O zc=wFud;1i`p;kUj<#w~GelS(X0xjKJ287wE@2C=axCtCwqjG)j5w|w+92s`cbEk{pa2xa{lW<>5kU7 zUjPVfR>GrUe?lqjfL~ezBYfT_TB)()p09OIJhL0+boPpMLDdID-nET16oJLvzh;qM zvDV;ivfQ#6k35_`{d16{F>Z8TP_^_VVL4ZynR|r%Q~ZtlLH; z;a`*RPHT1;`Se7dNt4g7lLTOa#XVF+kNHFq(W~=Ycc$d425#xc2qu%UnhF!EBxtu3 zw%_>4zXjjkp1Z2fjh;rwoVQ1?IUl&OPONhvE+nUA2_-vUl|Hi~F%ghz?y8w( z>p3lHLrz;Pt>~2tkB&3SNqE`{7@Y}P0jY*w8bh0^VsvwqAgCTB-TwiHKzP3@eQVQA zd2z->+8Y_U$&jR|todsNZP60N=*qVH$`_kd@c&>I_53NV)TrZY$MWI9^>*B-r_l8;)@ z-g?K+1Y1DLfe!U$e8Nbq60d)uJB!Ln)wm%M3X$F9E4X~_!R3e_<1j|?;TEQ{ z>rLoqc;D*BE0;NF^F$yZd~RRJ@6|HLiOHNP#+I`2*K)FnJZfJlkkc@V^}qZ{D?9+J zo-uQkj9$JKr#%!27oDEceGKkz(-l{qod3oPt+r{1o^doH~cd^m~N#pYT1u!0ssE4<Sg(F<;u}6{%ACf3|Ca0U zC`^w^(B4S<2{E`b+Ao%%d8Rz7!zUs0CSsfGHu(At_VKnrUt~AE!swb6Nhx4ngO&vE;A4QjAg(`L51p6Zy)e+W>{(lu$0u!@9O} zRvXNZ-3R>S$9Z>m73hLKuV@UY>SpAiU0aPQ-BVtjP4_oF4wdu6@pP^53=pe%4<=Hq z9L28f`?UG^{1ZdA3yJJ`rmm7F4bIn0*FP0KmB{@btI2f|flk|pTGIG&4|F9>?@}u&-B#%1Ke#Wop_1kef z1sl#y23%7V^9nfhpcRAI^Tq&F8x4ta{y1~z*=jzj=d@|#NirY4bhftb-t-e<-}Q84 zbvOATCJ#L-*SpB$;)9M?zXKyOYDUbEkv=lCjhkjImL4>wbmPav>WKOQ1E1gd7VSx> zu49_ES+V!Qv^K4)ZottDzK2ejU$SP&VL+Picrlfh@l^y$nVf=nA_szH<=N-7pAeI- zPwCV6wxM+(9C{784&Z&}TgmXJb~(Qg{>GPIhI7t7P9U6WI&FJ8DgkEPEI>}}t2&Ts z>DU4Qi}xI!oT5IpX~sc{v~!;UHW(C-oxdEM!sgL;1n^M>+Vke4;s%;r{^8vvY2e#@ zO+SF(iZWeniujk%$r=x?P)*S+(>_#@@!Yf$7#$fjL%^OHe)x*X%hu4kRADYrJ@vLTLFj_ zDkU8-Vr|qA3YsA?Y#=T5Bc|5c zBg5q~88LO2t9foB7M}P+35!&3_XX#z&mS+0))PVNZ%RasR_HD+KKR^`cCrlkJU7Hh4_4Wx@=_<_ z)f>xdq*%&YTS}j$KRRtbPDlK7W!$hMKgFO&(^vCkwdg`u$Mq5>QU|7wZ+Z2pRL&+Z z>u*`wN?wwh_z6a$C`~8C0k{JFJWa_EG(nI6@8#NlKBV>xF^LHMBmH_k{@P8a@hC}; zCQtiDuy@i{J zo({R@`~k5hB+Cj<2uRnH?zp3+%z9Z+=tNoK`-a-stpUM$1AW$XQsl;ui38zGK6}eP z-Dd2>ive8E%UX=N(QRZ~v%joa;bXzNKf(c}d;TPDTfw=k z*^`d~^dzc`A_HcX&zdxK(5G-L9|K|0e3^|zyT0Pei}38{JT2-F!Vmj|u$juA%%4V} zMVef)<#Rjbx>APU0h}Ee@wTGB>8&Z~rH}ZQrP8iqSA=V$HdUf-K&C==Le78mV7foWvFFW4rp0_?zByiw6@AZnI*Q$A@tS{wP7Xf*Qyp`X3lX8iD#?I*ac_Kf???v&uF^HYo4U#Xt+dHKRoM`)^B=7wrp)O)_H#~PJr#r?@u!gCu5C<50Kf5-mo?oe1D2cVTHu&BH37Gjbe(84`BILT`>j?_bKa1v z;t8@I1>I%xCY*XS907d9L0hL6LMcwMccVxSXEnA`m0(3iq6W(Xsit}4pk*^hEhfeD zpM#PBY)eh?hv2;wSU#p#uKw_qq_GlAfoV!twIexBf&q!66JVo3gpv^ix+fkh4Ix@q zcmA%iLp*ue{=zn+9qkGOrBdgbV8s4Fjvn)`)Sxq<2q%DK3{|eEPOQ*MU&+0)B z7}j0d(5@d2-1DSz`RpUtc=b#}BEPo903w-*kmbURn*>3FgR+iY7(9sw4jyrD`w<20 zlgkhFE`yL2ky9vB6Rvpz$s1xha|_wRU#y|72dv=seM1Hwp}2yi%;B*Nl&T57Nur;_ zodA1LAgP{ZJ|!|xnA*hXR7pCf;$Dj|PlGx=%2dr5DQ8qJC6s6mEyr@a@0UI)+;%+d zA^d(~eiR6G|sckmi;Kr?EO6U&5FmRys46fv$k9~xcr|UDFZq(3*Zfmu+w!k^a(*>KO^2PS zmbIJAn_z`_$+mJUeZ~qIremKke96VQ{ECy#sL7c9n)}Ezws)0~4Tgd2$U5YcRh=?5 z9aGkS_nH-ztU5sWN}8ZyAt2zD;{5Mf$8N+Um>x0E{<>xJ@w)k<8e#%&@=CS6dC$WV zPOOcmDN2nWPDvsJl79#|W>UJRFBzLSu4+)P6nEF`@tH#Ze_!AT#vhR0>{C}to;NZ; zV2nKCo=U+LX!%k>S?E&>YC@#L`{B#w2?hSeN4A@f_gOwXBsI@#!HYSwjyIAlbp4PL zF7fhA0I8n~O)-(l+G=2%JJk4A)JN3Sn4SMN{-m|r>2@twZTB_4o?c%dg)aj5+&`)? zx<4#0{g|y?uX*JoXJwVn_V1gf$J=LmL9lW_(*!%*YiaJQBF;BeQ$-q}cFhm*7+?eBX(!pERj&edz{g{2GdvYPxDk&~ zdPG2b>t(+Y)8->Ee4n)gxZNl3bp~qC6O-aoC}g;W>nO>ODX5t2&^!PcmxjEx;`J%K zWhXmUQPWA0|M3dlg{7;B@iB6k749g8N|$SA{~^67N4N-7rtzHh$F3?g<-hnprH;iru(yI^}JnzbnjXQI!IPWbiLZn^=FK>C`4_O$u9;mt=NgClL^$v{j9 z#CiVxiPffP$V(sOS8HNX>e)j!^IjEp;f0s0O7qJPUL?M(y*FG2Ty`$qYxKJQ48AV{ zB`c+l;1QJjEV5!+Jo2sxL{|yxh>P_!{e;+m_@u`={719->B@~_HB>*p5+L@3g3m^e zy;dtyS6OI7&_F`9Vh7D5!f+_j1-B35iDZC5e9jVYbC%<2^YQBA4-}>_V7}a2OFIe_ z+3(t6uv{f6ootWmXkY)tc2n|Yue`hswheNrBMg(htSkL-JG_ixF*T1osoGFT3qR7| z^I1dHJl?pP(!nG0(_~+B&_4DcZji;x9wwz&;TTkTpGX&WC*Clnv3xWC_EPfOZECVTZg*o`X zmK1|QN8hLa)1T-28wP+jhMm_6!sP%&pzJjm8|@!ao69B>Bm+W@lMEleNe~`J8QOz2 z|BRS`c#1eZP*!>`IuCO0Xar)r90@_sZ{>C5TWs^b z;T2cl!jtFHElog~pGDL}BH%J6+`=d}AzFCiooA=p3PfEmzSK9NsDf-(EuD5*xKR-< ze-d9hxE^2Q^fd+TcEs=dr|+Z>rd!J^MI;mf%MCYh^QDr~QY^F8WkZZsCg^Ea{`spA zw&o2ctzc{<*sHGhrq3U_5|Xr~D9&hUw;;gSdeQ;pndc?G@?2^UfCTs*Jx(JW9+gv?yj@1Q8=Cwz+^csM(x8C+& z_|E4e_>@F5J&q20O8^+PiEdtsSrHy^VHu+oy4LQN{tq{`%(@Q-%HB#B0;+HNT5n2z zO+owE1Gur%e4Z;UOI1!n3Svp~gEk4I42-o0FBYEiphgzfP0IJsh*lnLvvm9I_0LfJ zWmb3xU5-8|Kh{q50$XDiop=H zwmN_|1DWuv@o7&?*7?&STj0Gf0@qMu=gec-E|1O}ZJH_>7?Zugm!Q+y{I-h_V8whg zmo0-2;dJ9n1{BhRCx;!naDvd^APuEeXsp-fyxmXL+V$n9F2ZG3Uet;aw^|)^CHdEW zbxPhX8#|9bb#fgO9xD@54l5GZtNPG!7~Rd|^|k$JvacCvKlLs15x>*W{7A84;JKo0 z;N;2cUiQQH#LBeU>q2P?6uGf@DaZ*(8k?r`hH53tz~v)f+z#>_f;XrusJi|$e`SL^bzyroJw)@Q@_vzmSZO>rnt{pa_@}ri zbTVTXwr`*VIyJO1n99UIf7d}i!d=E_Do=mgbAn$gUoIQpZIcn9P<3M~)l=kSKVVE= z5mF7pCV;grx3lDDOBe#+b-$)Z0KaCSt|rYt--bbgu-HME=b(x8P%Iwxy#WODDI zRX}Oe%PXjfMd6ejilQ|Zwwbe(^qEg6Y(KyMQpKga-Y3DV*`a;9p;|qO_|Bh+nDia% zluol(-fGuN&L8w;W!w!<2p?RYH4Vhd)Ub>W z#*kNFENDadDu7+vNh{b+;Ntr0E`Bmzx{YsJo+vv5`TVUdjd>jG_Gm-X%J3)OtKYrf znweJb1ZdNWyJGjGqwQ%UH-4=)CBG)1{j^`u>$e}LrtfxCuMJsev}`_Qd$8)xzeK}TBC({G1s-fiNZyhwbo*;w1 z48+!iUseEmtel$KF*-qYX_)olpMN+Ck%0pPDuZGmqyL;Av3Pyzj@!1sKmP*oi+8z#W%iZMQ!AvLbzkx#cqrZ57u9)Q!kL4R75Y3OJ{iAR7F^ES zneU*}xM4?tiCCKws4~mQ{hzxJAGzgDS8DC5p!Zgh$I`i1?q2@vlC0m?Ln|YB>uJE4 zF46G;TmkrLV5UvUSH9-zMOg%>D4#dxH3PBQ#$N@7L0doqY<~$l)m^jT{Ih7mTb{Ud zppXE7`ua6F0{GSUw3lC2zX)~dHi{jB%AkxPd$;1ios=|zswpMy^s|y7ymSOh$jtDu zK2oZhrnmUL;c}W#dKWoUCFP!NG&VF;%Pk7!!!fNSXow@-2t^y? z0BO^!J}K%M{K%hfNX(VvitSAx=H0yVggY$|r&T@KX`(|8-d=MqI10oDg!J0m`^Y=* z#IO9uo%qx}_YLKn+8&Ruj)$idNuQN=housK7M9ux?nI~3bq`zC>+t7GUwH*CyW%3Z z*oh}AX#-p>8L(o#IbREoMm#Gu)95dK*W90y?A;puGZR_{R$F^GiTmZN{?lY%RnVTi zY&pOiG{$F1Wk$8gmv9**z?{EH-6UKp@%&}aC+J9NpPzg)0DviPLI=tE#moEu{Z-U7 z3smquNSg1pP8Tr28U+_c1xDKIpi`BpmX%6#mDNMj^bpNQ?(-^|tRe5)9SZj^|OxA~_5|8an}ndU9)vmeG}{%=dGH@J*mqc~T7Lk=TzP|0RYyGD`eO-%jG6>a3O1LU;DIv4ZZY z{ifWFkqVhoCS$HcpJ5n;c-VcSi!>_ynKr9@^eIe2YhM=*gGap%-}lwsl>DlK_7<>j zo;P{4gfdJBo0sA*yH`>GAymr(xeT!hFadD7Pvs0CM)wh9;-x{29(jpbGaJuS_FsMm zP`2px8vF+=+BcHr%_rfvo$_`1))^t+jpWoqAmbyY0%U4^m z#>zF}3D{t6mX(!|rwt&zGF2T)V?%i&%D)nWw(1J23lD4Z7-)oT(nx5b=W49}u#U;O z-uaGOee~Xc+h_2B+dqSD+!#?Y0KOvMIx44FCs49@h2`y2Ii(BLF};qr9qlnKYx}bK z2;ftUjhKq!Ni4uD&WLh(OrFW3q7ojXQo`z44k-(AwC&H57tMqWE zuNr7?z3l6@9Xqw?T>;Sf0{)|@kN`msaVVXKj!$-kGL|;lLY`Jz!l`gvyeXC-duKqD zNkTgiUY_8;^UU^ruw*+bfGg@UW2M2h`r0>|oC;v) zTzRg1wd(JemMBwnCZ7(O>TPIKIs9t}=L#~K^(gLcyuIa8kv0&ibN)0VcXpO7f&Z!w z_tE}7_2+lVecO08pLY0}t+%}jwl+MHZwZ6?K%i7Hl#2oByy9AsYia*z%2-L&QNT`h zNe1Y@{;n7Jdr6vs?c~h8T&B_Tx`!8O=Q9Y{8Ae%iVUbQa=kL;>pQPJ( zGXh)deH!2Qv)AFPl)fsUy#?$k7=OK8OJ0uh=@Gkj{V?Ha<7RUk@kUcxR_vvYKVT!s z;So9!Ai)xp6%;|t^@Zie6_aA**Ug)cy>JP#A|C~b)&HS9681z-b6Gz&*YeFtNJpHg zSxv}Lnsv}0EGK1fmPHpY`=8w@AY&Qfrs%^mwFZ!zSj8wP9N84Po3jEAHrI$1kqvcP z5TO|X%QLVuIZ-r;G63dPK<;KbV{YwjsE=QoHXq-0rwgQk!KcpLhqwRU$AW*F10MrL z0Ucy;q|S3$mJN#QM-?uM9$b~nm3q2TjtxMqm(oD&pM3IMyyTTvA{H&{VT-zYwUY*H zFN}(?a!dYn8Y{f^4%ae4{4`&RzG{Gm5Es$L_S?ZWw*C4Wzbc!OUmZ{TV7rSdIMuE^ z#6)9Okxr8KwozgwnTich3xGhJmcL03ctbJ-PO89~0=sT-hz7adwE1}56)4?6SA5*v zoY%cu+XO;Z<*ZW(2WV-(+F^awT~+mP!pyghiTy8kw6B`LlUwm|9gR`jAY6dej%04a zi{^K07a`JajI?ZiYVl%YMZExkh8Lesv(TFZ)%qrmWzj=gC46)X*b{J@_S%CRQ-xps zjXUs#`yNQ+R?`SLi{A9rC4-oKD*8-WpW0MOOI6EMmdk-Mr@SJ2+=pwoo02Em5x~?= zvtDZ6uZJQOASWWrkf!!1s^UTu>ZLoo&o*+!UZy^#9|vjomSLQ8PvXS+UzH<($M7(x zY4dT*@=f!_H1?BOh~6*Yn+>STi$t!X%9zw5>7IGVi4pt&8qB?JEDaPXYh<4soC+5N#$TKzXLs=CPI2 z13<_dwDETdp@|9O-RcSukCWSXxVOG|*)fz(SCAJWb%ia|J{o>led}LxAh!4K|J;3Y z$8UY08+$ACr3W^6@Il3MuR0kUix>~Kq9}kA&{zXaj8m#3gL(|sl6?m^dNgRMJhJkn z_9`Fk^Z4;&IQRUsaqIi;LQS$_StMyNwOcGU3zC&lXa}&y=m-kp-06}hE?yxPfPu3l z!AU-g99)YRy#C+f-9LK<4`cdjc-l9}qB!=8*HQsc{hyYy5IbBog=6p63%I~Z?^L9A zmK)aO@~P>MpPNmwaKsYbyta9sE?WcsErsd2Anw zaY@s&!$td_Zxy7lfr345JB_o6l(2RbWnv_Kv1a<4b~ z6#y;92=b7N`vBQ<@RDAqXuUUE26OVZ<(wPwFsFwVw9mguPjA_N11~>Kc~U`IYO1F3 zOUAENNs55 zS+a;HvszX^`W|H+d=x!ccU%Q>jTC*o7O)m`{Dn_Un~yLp^Vo1>B{uU`HWH`HjV6#5 z>KZYCJnwx-BLFG}n8@ZXn5PcbU)uZNW{oe6Un*L}^^GX@5U>U8?~;?)dUoU+oiDLRg>=I4~Z@ z7i)Hp^Iox@3^74aXg@x!m-BrIARi?WG8%Bz-fl|%yVH0W)58kd+gQtuow77A?7&-* z-bJC|z1T({n#Z05yuRRmD8z9>B$cy`P2d?m4lv<@y+cW5V2v9VW5#CT8VvH#f}$&EMTsG$7_c0Q7~ z+{RtnSlg)#9i7UM9+P3lAq;XZA2ih4mYDOD$l!#~lAJ_6@!o8_7Cts@K4J_IHGSZ= zd*;8vYQN9Wo*X-!tDuj=^V3Ar+;rY?0rfTKK!M#xWWdO!S3L#STzhG{#a=M@yV89Z z==e&Ak@|%)M!vbJI$&2)JKDZ6nfT0vrRin}NU$IW#~#)PZXPz!o{so!KTbiD6PaVl zd0O+)yeUne8+uZa&c*s!Z$)}bV5_D{h$V!&-E*%VWt9}%l>3`(M2x>TUQLq$n#7`@ zVYPSJW-6bAvNgs6=zL02ti0|=_R@&xK!&>{M<`?If4RN=P%mxrI;#|WE}NqHRjLMu z0f5px8VzD_?|mK;GVUW@o8|Q%J!tLr^UJbR<$?{i@u)GR)K~rZAKfYUf4)6YRJoD< z#gr3`fBOsX#~1E>paTLBeZ`<}Hje`^N}oEOLoJLj&~iLF(PLrXMUV25E+V%B{=U8O zEq~#;^QNSha77pmNxH!z-s^|vCfEa5;d4#q2}r$ zk&K0mz88ZWPL4Gtv8YgP-aKBExkXhBZ^pi8@)*@uYyOuExpM(o;T1l*(vQuTwwsSr zXvB6q$3rWqOYu+Lb1#1LcR#`q0t5q&Ijzg0Y4?4)Vt8_dHB#fyO=}Q>(FjL?c zQY)kX5fbybqEE!~Qt}tKn~yi&-Lf)J=ePEWYms4BHdOqbV%+t%$%5L2CJ;zov{j&= zkc&B_jYI3cnuon9&IG~>XUD^MnXbRI4T(%%_GnD)kNcpY<=-~ri`($XFSJcbH!cKD zAs2bf(rRn~?qJ{~0$R)2?c!bQT8A*Em)e(_kuSC0Yoa@O+yCWvy@(1g9W^kGeya`4Y%rrY~D2ErQWLs8~IgMURPV8D-VEb2Q`W>I_-zVByF;VVpEF=%h5un2GN z6~LARF>tR&fb_m=9UxrMbH7v0$Y$kGA82WV>Y$O%hsVkb&_0jmeGZBIl}iQ!P2?(* z>u}^^(>t;}J zRjc3~fGw_vHi!jK84b-iSHNm9?ErI0;}-@1jlZ%AW0{%R+4TJ0dh>hR;Po#wVq%(% zZ`hWJi9dMP$LCE+yRB;ij~GJ~P_M}X{Z>|WEQ>XUUCSx;b0V5zQEpTpm9WMImq zlR4(TD0Nd1U^*Aq#0rD$dXf&yggd3uiwhYY-RKaDXZid1AKyuW7=p!rrqk?o%zmM2 z0>Ka7eh>cOk3KQ5-h-sWuN?^1j<3<;rGKi2-E=r#weT{MMI}1Y)3wj1U3>vvH2*YN zp0Q;do5-|5<*{X@=BF0dyT35G=)0Do55Wqn4P^0)4%pG(n1g=h<@~5QPI4o@g7jsB z_60w$zWFE_3}a#15(8})^Ij%0=APn{35+$J=}us6b&3pjNejS$FC=}RLFR&EkZmlx zCrHQcItecgI_;>MmWdq?LX6gOQs@bgcQ4U}K-NMc*ugFaEdA5lms2BlduH2?#v$Zi z=rjh}idIGo3Ip#7z*2BT3)s>eX+By|e^n;wv;&06<|ZVR&;GltA=k6?@po-EA3uAq z$ARjSyFR$Fuqt_~HLbbu>sxR8-f2@(+<0)8)5Iu&7OX6R8%lW~iMuXrKI9wrA5fD z8wwzvxYK-+K-)c|||M`LQ6kM2T;EnKQzZLeB~)W0?2Y6Pazipu({)%+E(6gdb`>HwhAj6xC+A1WU!8Y3A!hs zHSZajT<}71QRlY(BYG0&o_9UIjP#H}yB+bnjzF$)g#2JbO$^o``Q;M^X~g00IyOL0 zBM@c0ZCh^7w@9d@#$T=RUb?;ho1WDpf|lz;lUZ?A@IiGMA!-wvk%BqzEI7k4ms)iv z*Q0xH`55rt&oAbtv6CRs^A-YPz+Ujh=B_?q1BCHbDZL;sa+ZGgiaaz(eACKG^O$Kc z5&6mEb7YRNkCw7u{L~ll=?{Fu6_1(pP6>-IHQdE*%7kz0-Fxo?_{CrSfCChfcVMeP zH=1$>^8%pESFK3n92JPgDuTl8pc3!Cj#%t6sz?8t?|O0E9_WXUuaAQwJ=&^3AEt_b zQEm%S?Sn@tFgbTG&_>jM+v0} zDYTb~n_8{ooK4{s)<;%ApHCjO{O2*zS3L#zE08_5Px|I(aPfB<@M29+NqUAb4qu6|DdB?CSN(krzU)PR~gb5f*Ik%Jq1N=^=sk$)BCyFLJH)K*BG; ziazraRLi}UHqa&UA>ohf((i5#6_P(No8Fy zSxd_%W9PJuXeT~;Ms#RVf-P2wpSW#~XDcFbY% zvHbt^8@DlAU27wdM0KS{fZfWmQ=s*}cJtXeAgV~lW)w@Fn-c6+GUi<|G$^lr-HQtC z&`TB`9#=IcB`kX`AEBx70Omev&#HenZ=yeeQgES4wgkW1e^29k{_X4W5Yj{Qv=4AS zDM|oy*+h~sNGZet_RLqNQb699(FY56$)~W4(X=Cl2`NmuBTSRV)V}|f%b>RT7)Zf3 z0Q6k}3_`0TjqzDVXb5@`W(%G+8GHO)O%7rvusf{C$Qz&1bW-G>-j@5VH0GOL6zx=E zo-bu>DwQOSm6T3&?*jqxFbh(FdO>o=!inHb>QZk0znvsu7F(TZ^HJ}5_noLI;bcL& zcy5m;w}!~FkeCvE@YZ|q+rRf=bj4OuH=Z43zm*V2M|36rI^|MoZd=kgnOD`K*1isbL{sUKHe+ z&pbY)pC&spXkYO2di_>WuOucCxHdFqgEsSKU`^bs=Tp*=cuH{$v$q_-yq!;p*h4hJ z8)K~emPZmk|2u*8k6xYMX5iKoYe~}*mW8s5#jPlf)cY;dbSU^Y?|l4p;~I}C0PK0K zytv*Z0zYw^7!bFe6S!A9>sSs+Wk96nw9qBTDh;Y)JXFRj-3X&Eshvf4b6h%J5!>>Z zo(4;(Kh|sSusQR=yXLp}^}uYrX&>jdp`ixi1OY4kAilj#|H+O3mi`atH=!4j5=t#r z0k@LU@qJxu6NI}(2dXg{w%6{}kOVjJf>)iw*(Z)WnG~2PKvH#%b(c4NWyDAVB-^M| zKS9ES!tK@5B1}{|XHUU08%egEJnzVF0X!0D&zp}M+)#nJahnvO1ou;D!p2xYibqKY z28)CtZ^cp>`|AwJAY7sdNYRMI&e!u1zw-)xAPLDRb=eG9k{jk843#9IK87tV@i*=6 z^y=T&Wgdr0z5Vju&jCOGQ7}Lz&&m`mEMm*HJ%{Ml@|3C~-Y=p~H_p{B2H2ixW$lQe zA9SpG;0_o2hW|( zo07l%jt`^SS_TXMlr#sZfLgM${BizheAn7-4C_Fax!_LlKU`qvboPm}@Y2^jD=HKs z=}~O394o5(o|oQzvhg?Lz+>B$(_VkvSkm!7@w*yzl=7S}dE-&vOL8R8-q>qbYgi=u z*nzhtAy1o?N|V?UnCAl#Q8(O&F8*o8L6ypsHbD0^v`AXxb4cU|PaPsbE0bLtvbuvnB>nfz zMfZwBmY3t6g7i`;1Nz3;a$Qz%zS>gM_hQehgbnF;?I@a*eezE}oCYZ!^V0C-y6OZ* z{NfT{X1kmUKx)mP|DWD|8}9kced)#_(g|X1JzsMfhmI95T#*&ECrFo}e+ltbu>!2v zne6rpUiHlFrsPwz(ep9`A_myJLZ`_4>BjC0;x|h#kndO6x zjDgSgpC5g;^XV1VFgo#Nv;od6J%~Ab z`EWu;&Q14XDedJU=a*24fRN9=>#HmOWCl0+$x|WY$U@#d z%}9B~NB65lh){~powdV?U5)gnfpRM^Da;n5uxySuS!kzAX1%}bowqJ62m`>P%%N;D z5NJEgtHZqx?hKu>x@LD&-Aq9 zS3a`w&!2YLuAg!0skq{rr+Wiw!@jFt#7ecOr7it}*S@Ptok4=O1$b99j^^DT)*)F9 zWRl>PNgX@f+ujM<(-FTdy;I(&=F?Djs=P{krE&)FyoprG*prZ!S81nll}-j0UJ8&? zIh(}{K&|}WeNNulAIM@abtC4A^e7>a0XQFZVJq%g&bwe&TG3HvX^>YQ3@A$T=8vZL zi&#E~Fj50fieI0q@V$bKg2zV6OPWF+EZ*E^$%e+-Px_fxQUO?XMPL;+RNnXiA)`2c zh>gRU58b7H#E;RbbtE2^sG}mmPrG)2_xjO|L|y^a-ch*eE$gpk*FP_d@W>O-0XFs)vD0YNk!{ zSXV9ih!%$IrgA(nU~j73oWOeWvNccQvLadJD`M11%DjAtIQ3u4W@6%tfmD2RkPUx+ z00)k3abL!vITTtB@YY`AIDy4B|4W~{4|l)&PRT^0hfBRKI+w~Rp{y%ztIuE&V6Jpd z7HM+tx#vE-wVmDWl7T(7ZsX5$>^r;+(m*dHCA)%c1@$@tWlkes$Gi{gBlF1e_@tBP z;rXw;%9Xg00m#_#xGuv`_7R8y_oh|piAL#}AYQyp=GlZ&x;qJ|JPzmWkM&(}u=5Du zDrj#G@P_TjsqTh_eC&JOI9yAlKs6L%bR1Bb4s9^CK6h;-db;~8xQ*`w2Gc87fAl$; zT$TQXOVkd6V0te|lM)7#(Zr(SK&vl83cNmoU@}LGxM!j1?vZ@{lMkg)_mdtpG;MUD zNd~+Ex7l@t=g`K(k7T0FD;q$~9=2hQcS#+yLx!rimKq1Dx5dW+J^Pb?awop@h5Hbb zyE=OQZ}RU}riB5Iq1@jT*g`6aM!Wu0d$#KVJ*UOc*u!C#xqRDOPS$!Dyush z8Q3T&RZ7OE-GBb8uELWpJOS1KesPV0bp)L-*xrJUVj^gB`WM&yq^Cm-<}$v4NO^BiXd^VNh;e&nwv5>6MkunME1-sJ9xd(`RN(4{h)a|8YnjAj1g z2}mTGqw&b?3v)Hyn?fS@+`9aP7<;~^{0;&(7^Do07DAT9Kbo{k5la8@*TSnSgDyt^ zZ+`o2>84P#)Di(n>u8$qULlQFRS)YtY}y^{x38%M5Z@K=fesEr4TBTXDl&dFh3F zxeD<69#}RV2wS5aIHzk(G6`=BalO&-&I)gdHUqlC&DU_+nbzeeAm4MjCVQy#g$LU@ z>l1@oi4Ib2()jd0kaOB-nJj}=4WD@DZC;s=ZO!~i z>}b03o7Yu_*y@a8Nc_@#L4XF+@qFsoe}2auxb?O(T|aBm(f2a;!C#g06;RVMuA?@} zeb(oW57LK~#RW#ICgb_?Yo38;T=`UDEHmv!Fa{DP>&a+}sY71*%w;t}a{JWmVbd(v z9|rcPDU;yWcX~G-28MF>wvUg!?GChCEc?5b&LaSJ`~QKsM-=^LF0|uG@)<~mi#DGU zo*XOJXk*^MBJn^#b3pGeM`lFp>46(w@8-Fw;_oZeEn zs5O$_dF_fx{pDqH>lgg~j!mMZ^o@ofd+$cW>LrDggRbDiUu>~#U5>puz^NB=Hakx%1A6x} zbM40H6p(!?&3(|+`~a5PC!g^qTFH~6jZ)%K`5xHIZahvU?*5ZIGlMAooy#r~%7ASJ z*!$u}QM^4WR)8scJc~ys$uqp|_IvQ5ThCyHCyKq_myN4}hI% zBm^$)<_hr8#z=ssBY@A_#A#MD#UL~N)NQwCYNVW_c{dXT|B&v zzaajmyubGx^|4(`#(*;KX(p*`5$Yt({oIZxtG2z~Tvv|2>zd{Q$R}fT3)sM&_qzDT zsSF_&BrP74e=xxFNuJY+Nf!^Byzt$eBy_Vw2w6i1Q`br!`(WiKz@9cA)5~0R%%k|HQ$Tt(cLGhP0%_PkuW~I^Mh$64RhzZgMmZK&o7TU3H-2eIe^~|4t%oS-A zZZZP#W;XLQ?8QPnZy|)$3#rHdcuAcsi}uQHSJO|E{pWYwnaa61lB_8ShayP;k4NWa zgUe}QKzGQcB(;csNuh^KBLT9KoJippNUO5xZ`zc6?klfi_F(b1jyY(IQQ}K`r>p3@ z$wls;M%~u93%Vc~%;mEEE69S)p0!sHZtG-yN-_XF&{RoEsqA3%hHm&pc%p?MF9r- zKB$&D)hAl2OI8-Y5g6kAo4)=(-WTj3iYfw2S;75;2j6G;FyU-%D}QR}(`d|$b^*yY zY~iWLE%m=}6_j2;W#uGcsLSI9@oPwT|H&Ql;FlhVO>sUkV%?D{UI1@cjesfYf|yKw zL*3Fs>3`-U=U(rZB*skEFcukZLKEe#eU-s?5O8VqdE~sLIVIf?U=;)s zZ?ev}3E?%bdM3_0d2Z@%KdJ+ZAGf-dlGNIoJy2E<(^+w1Q6}rM$xDE~K+!*_10PJH zaXpa=(4Ky*cU$yzwU1(6O<86(7Pb4%8$>`4pxRG`VF+*Q z^1`;0fg(DmN3cR4r->l3Yd zOwJ_zOTyaNVp%f~cSF9$qUs7((6})WJ4hIR8jel#EL|78KU}8Kn|>t0y!|O8^4Z(& zis6zdY;zU>i=@m#gR3TKHZY0^KQv~Q>Wc$cRR&G%JJmEOz)>H;Yzeg^N z#(3v_t8ZiLnK?;mtFClYdqAg<+BI6f>!4g~*Jw`O_BXxm+OEBMzJyN*Bg-u@qEsoZ zhLq-mI;V~Hd?}$U9t3kajXOpTNyZ%N{roq;a%LWjoaPP5@U+j~Za|Kb6xphPjx-M- z91O+n=ONdb#wCs%&?FLdF*hdA^mSFKstehkG$>AqERJf2N_ujg;Ks(I#lO?Ju36xtUlKQ zSbU@(4K(m+4O@v@-t{rue*2lOO(L6Ur|*KHkR>J7o`4SMIj*hAI^8qJp}XIBI@I$A zl0mSqPe1iEJbn6UGV@R+1Uf8=3>+$0RT z^u(gkUW_8GrkYU<02gN|8EXajw1~aadTFZygs#Yk^(|ydyLXFNpS@_}y;&Q`XK%f0 z>uJY}Ru;>^U2Q{GmIUsJ6;m=2^7xWB6$4N-7xi_2sH+)>#y1%c#oONYAb}fUw+_xY24oxvY%J#Iub56kS5L8UROse+-=*3tbkwxjxKMT)*$ zM|{PY^z(oO9Os`r56{_dN-kjAqrcSV=C&jil5rDMf`u}2gzk;NEXG37gF*9_#3eED zN>71ZYax;uw9mguPh;Ap95XE?Dq`D729$G!fvkt&k8CCMW;ogUi`$lbwwc zg$9m3e$({>C=CDr##S( z_$`$wbRn5R_N3erB_D(YPJ?+PmK3&ifaN1jp}_CuM>cG}v^21!U;EWRpJUv{jMhF7 zqe?sj=q5|cM6*208lurG)k)FrOKGq2ESU$EDPcNjj)-)cI2gkQl?OubI^c+#svSOKl(J zdIIbTxE&Un<&TvC8>SHd049*KI6hX4q(%&X|9vb0I}(- z;cX0>PSDTiwN-PC6c)oWf1ym7zRRI+NNU!9Ie5wRb@8+nFGX~cQ@8M zZ%{EPDAVM2WFor>1{`C8IXeMNIZz#l1Ll@B&{==i`%uoc>D zs7=o#PZK#J^Zn^4pGyUWlKlzJ?Zp@G`V2mITX~D00A1j`cp~x9FDdFKups=S99C-- zG(aQ$>I0~Mstz2MFVx=LMG3moTL6FYEq|6Kas-%&aT|&rIe4pp?RV#u1a&4#-eKWj6-AhZRXtxzbc+o3^j3lQq@Z;}~VjW28{KL&GBc9*T zwtq!xli?y{1nEfr1&>3$pNxo7-!yM-nAWjWhlmQc(l$y#3fk6lMwp^9) zqIKBK7(B+7P5pRN*jb%F7!RcM|{${ZNwobQECESa(?2 zxLK9KJv%jJSw`Z=KQPC$J#@-)T9(rmHucja8;8ARAVtG@FuUhq+h%7&*eawE9q3w} zMnigxjB<4dR+L0&4W=18@Y&n%LTo-ZG1B}g0}!ochRMc)JOiP8Qybmkc1q1y#v3lf z8uIK*ZmK-x{cpeazP$QEX^!V2<_`m%W#c%eV<=Pa0V%$#gZohsNKVOsj~%!OmMt&e zvS0D~mwBk7iS=M?1Tj~=$86=4q^ScxWxdr>UtB>nwHxEkM+$3*Onp#DDURv22gi=# z+Eyz8Wld%n6devK_rYj*H+6ZXD+Bz_(2Is)k}4JhW5RhB|DJxN_wpwh29Qul2%K7m zvE1&3z>OtRD;gY<#sb-kha$-+<&k7_AG&rZ_>V;ZKKupXA5G3B%NH3ui~r8^YBV?9 z*!u=0jbpspqV9df>feW1i^MWuC;F66im2(@SfDyeLp*ATAz1 zESl1qMkurZs)cDQ#ErW_K$|NCKS-fOlSj^$szx(Uu_iBgk<*ZGBlq!-eipyC-IOFz zNnIKlB`)YZW1MU*MKWC-luMIhI>q;^9BT%&+UDB*zTqXEf6;k(;dWEfyveyq650&g z@KYQ-t_JoAENN~B^w9XoI2P7-APwwWS~@JAU6f)JVB-j zI?gA^3Mc@bY{#IxBu7%}jR2eK&Ahcn|K4+#38-K}Bas-ZLb3?1xt?$)jISXh0`MlI z0$F*ul8(hs(bM(~6dw;hsZuJJk=+7zfZI|gt?=6~rpJr6+ApgYAWSQ)Sx^j`wZ4o(@7GWgs-ok%6ehSRgP# z>R_+~z_;2&@W~Nti-$xTk0B6Ky<;yq*b;lmh{;wl;?>B2UQ_EpC?&GurE5igYO>v9 z`u>1UtuKAP8;I@QAG~Th;ult<7VN$Y$jg=(c%69A!MOBR$2u^Sd<+Cm`ujWNHmWsk z4FN;Z+Tia`w;PXd{)h{Lt#uO6rWJ$TZ*${buOe^x>hi)R%a;-^bFg4gCfQZPMs+cS z0?KesE5^=C^!|`c8m|mWx->Q)@%zmCKkC-h4PP1Y@yyX^d))~7OCW0u4$3_gQ>DF)E$i^*~; zxw+_I`~5;;V_$%`{u;~>cd+Bo)nbHRGkCSse*w)JKfwc_!C{@aRTkL&ONK$BjF$-Y2TvrwDauv$_!E- z5Fmmg81XyT6Y9HE1;M`xzXP6ehT|; z5*~I1Y39Sfm#_?%|E8yv2Wcc*u%b zmwx_F13(MQiC-I7&46d03(!P49|r*j_?L)lZHtrSNq53rUy<4^GLdMF(v&@U+m~E( zag#?$#YI*~NKeQ97Woyd9{Hm&86^&hI87QvH|}&1pgy;J@?iV#h1ijL{R#Q2X#}JO z%7OyEgYO$ftT3hjT}KG=rdp~0O;5=|&gDas(AHpoQV59vtz~;TP(AjR%xdmJJxWqO zN5Y;ii$J>((s8xvG4&t+fMf&OhQSqdL-GPD7m8A?mLGoT=3jeUW7zHQ+>2I$sv@pcrV7_stuj znoumDK`LO=fPf4NsO{Tt{S@xF?b8c5mci7H$nKP_WsH!v`pWs5*zo+GXo#_vx~7vW zi`iUGv1*L$KVlcRUoRh_I_}$xzCAL&A9}MWA2W?t<{sq)YmWcMbC`=b>Uv=3ET ze)_DUz{aIXjM66NrqwKSrI z+&xVou7p78=iMmAksn0t7ASHRDt8MxuT5)e``AyggkWnVGx%G-+)9Xhl5PJXOPK7dycqE z(#r5;P2D+2;7s0B0_U~VD~kg;e@b;gYKWuItVRLFbBD!Ni!*b<*}!lV+GjFaQod_o zj1GjHFOOv9Us4z# zl*qiYBurMeAe@vD&4VqlV>3p?1-uEPg-gaeE|U27JKIY4ocSVt`|Tg>Z&C&8f=`3? zEkM@gHPzE(o7M{txhFcUO#{eL{nRc^ft34G{j;XukrY}vabvoQ9PO7^eY41TXosd^3`Jr`(@v71k@X?7yk)$mf!b*6 z52=l`k~YEfc7v2BWl>-i4E`{NohVhl-+QlK==$8o&<2F{Tw9}~6r(1ZtC^R(F@+PDj)&R}QSML5{SfR{9=rxk8r%DX)HMFKlLzb6sE+;*-#GPZb z)vSy4rg;D&^bY(cfR4;z04A^{p>Jml%xDqCfwNkF^WRo8!4(ZaNIG zb&%JUZIY!_-iJ^JbXGt$ls?W8`-rje8{pXKryJA{6~f1?@Xw2fVV&mmh#S>lL345R zVHCuE#RwxM9F<+bjLI{A`uEoM@e41Ay)spjM=wkH*^;<(LUYCsIT%96LQp957IVat zFt??Me6S&jHceT@@3U-bY>EaEFTWTl@%tBCcmm)2>Stmwc8SJl-gyGkqNCh%Af?Yr zMCel28rhLu+jY=b18lyx{rtk2FQgLMh-gQ9L6iP?m3E*%Vo(N*k4~gH9UFh-IpLEe zJonb;ZA@FwG{Pot5!V!A!;OoSj#zBX41_!E+K$i&gAf{IH?5Ibhc_+K!4N*TE&OD# ze=cP=V)SKdV|(MXU&4{o&c`y#y~Bhk-BTX2D3@Yn3Li73S&tVP75C1D?Y1~bi=Te) z6^iqZ_pG(Cok=Bd)O2EKm=xK#LehJ;Ge}4H!$DnmL^7i;e z7eG#&lLn3)2Pa~?{%Zo1 z@)(A;AK&oGD{x`^(c6?1nVzQXB)3?dEcD)}OciGjD)z_^5f;1>G%dLFkKQJ|i^u!A_DL6C9`I&~L&E#(ZaN}qk zN3xn{osCcf%|?}8qw3(@xM%5#Xe)uTJ1DK*67STu87a-TUO+y3#qPi8|MoE)Ijxc&?M> zDz<#KY0;GdNNXZR0tBX5Sb-2&_{^JzP%M__Bw>goZkP1rt(QH4_7D(}=E-Ht%4PM+ z_rdfe(_3{cWRR)(R+nV8N;l7|sm!u_RPWdOZ#=u06(uD%SZ9YX_@N=ud$p|ahT!R-)zLH268WS zl{IFO^cEUX>Y_?Uzr5US)#M#_Z@ujY@Q~6@fKKJ8&)N&lnjE=9&HWPFd+yt_~OsaUVi7upYFD(AFhOh-%Q z>G~t@DZl=q6n0$UT~Upp$$%sv9j0aoMg`oHN&MIcNtJRA)fH?#ZPi;_N7^InI`8;x zT5w}y!R+Rhf#TMSqo-0&0i+(2z?;3&`QbcTA50ZCPIp-yY&3?;*2wf0{HVGSQ-F!g zPkj*mK4W ztQ(Lyuc4|+EZJUFAHrNaqB%-_JTIiT6o|Gt&)VMN-8~1}FSpsO%&u7btc|t6C#?pg zJ0(E#3MB-v(;>bbH=sw1mwD}G1)Xz6fIu#R+B0bMUiK8({&~C60h1Zco?fSby3AAbZ}HOSd2jm& zi|1*lgRC6lh{Q4oHnZZpownB7#Qw*;ui?Kt(^}oMm7A@=Kr+ZOy1nN=kiiCH%0KUf zo^$y#hHw~tQ}?zJ{fI`AU}qvy@19Z(!6Y~ z9k#wOgW4Bi;8WvsVBut?p3^gsZtZ9h{shKMzFZ5_(-?-49w}9tV%dNC*7raM8YY!b z#BdZgowm(Y<~3kEo$+Tm4h0-AAYm{RIaGo?w(a*DKXibDgAWDiHoh}(o3gd6jl#Vw z&2d!I{pC;-Y)KtG*hCm)>tjn>UM^$r5pf#t<)~A5^~MK*j-jH3WUTf*_bdKy?;cE2 z-6|if_qbLgzkF96+_Q;_e@z`-!6cBz{(7%Crqiy~|7$dxcW0m%!mi#IRsd=B{;w}m zdGc{W?Y3bXMmfF+3xWE)JDUd58bDhBKjcOIs8Q2X+67GmYkinkcjat_TL0&BP4T`H zb1s^k&4niU+GMAK0sNe+E{7aD=5+goSGE;s72N^}kie1B$RUWKjC-*uMSasybmekD zw_95+m3cf?+2rbFgU!bTM1)M{xpFxp%iXGAYo0JQpHep>MaQ~@hETicRWk`wp{YF? zFL&E5x8sX#6LK)+Ix&PnO#QZ{ByQs*@8C!-hxZgbX_wo}e+ z+nBcADqL6=C7BzwlOVI()x^lkEX&Xk1Y(&PfuwIG0-JWX+*v zhYRWe7br;v4hiAE_*}vFoMM5JQnTeRZuG)x+HDqp0EQQZ3#c#O#p!^F*b42Qb75V zI=2?fwu$F@wajKkc2#>2CI2HEjFt9AiSK>>(_g@!ZM|$JE=sG?GB8qjQu}A%oVjBw zO#^x-WSJ`(Tazk_A~+?YAI;H*w98B*wmEjo!LbLv^e*qj;>~ueAu(43v!IB9G-&xu zOq0sP1TkbpC{${HF{rk9_HH!;qHRzmoHzgs#L|}YO=T+{Q={TQ@s?)Ta25RFv2^(gH>Cy;lNHIxe;$(aJVoI{F#o>0zv8cC-Le zYc@c|=9lN)Top8wYvC~Qy72IfoxevrDa4P|&mGw$Kfs0CIB#Jazn=e<+1VHG(>9%b z`6YVn$>&i`n}JG{4ZZ6Hk}+KY4=tZ5zW^bFl+g@Xi|LrhOo7!9pN-?T;5WVcnX{K& z^*8Y#Ij_nd^JqK_np{mh26BY9bcMiZ3>jEr{tyC8mHzate+HLck@fjf(8D21Mua=y zolv_INM91!XKe|MKt4ei@h7Q^#Ua20)Cv%>g={x@{;EmU) zBqB)=BsEGL^7It`vA z1rNG$QgQhRS(@@rJnO0qB-Rn-S&4q;_~JscENalh<1(}6{pPYhenBy9t}jEt56CDR zjDbv;dovyJd(pL*cs|RE4~%_k&l3|3wWM~KUd0jgnq&8u$J=9s2X$E`Ekl+|D!c0`T3 zID6o5B^Csv*n`9tvU!P~(u5Yz*?>QnZCo-x=9<#lC+dZF zujP6frqH^-beZ6#Pl=X68^KoA_6Z$eH!-IkCX1(E=f*ZLT-N}c#kz`zvz7rBkPpp9 z4rcs$Lz5n?nr*U08XDjBU{xD(|84`|;42kH7f37YyapR)j2jDBu0QmO3s185rwl zqN&lJVq?ZUSUK%*E55TTVcbWfHKpIX=?{p<@V2e~8W>B*ti&9H=XaT@w3;^OOd_<# zJoAa64pA!jBRdWuUphxcX3*9LH*af$w$R&XGDb=$r<<&Frrh>0jCthAb5jjZs^NOj zRrB$E_g|CcLG!-6FN=4t5%Z3uTXwGb0|dSp?|^pS>KlGBh)}wk!`Q_a{=l&Gh#rO!cNh=H>uQ~-`-Yw!HX}(6<1#5 zqay`KxqTm9pwA$%t}^N>?_z@FUs+*qTh`kmyB9z>C|}zyWJ!PG=B>Bf)*f5Wb@I#C z1s%qa5G3$J*bJpUF8NVj(geeGH)}t06trW&qKp~t(EpkAEz`Z`X>Z<&CM@k4NHb4H zSzG92XqGS zr4u2PY5X#ay+9+E$?%Z{*}^!zhb}`JcCTB;q6j1$=`yXtY%KW~hU|Lsv|s)8Afcl7 z#4N$^WoVi2jm<}s(~vM_zyZivXolN4R^mQ9Vt?4mj}mf!Hp%9Dm;nXJ)UslL@Q>=UVE@%MmI|(IFDmEXQ%*bxHej-mWB78J3&sPhdT5KJqyGSmn6b zFk)#2Gh~_$W3rgR<}b>t(-ogzXP4&2C^%LEz9~(_!I-N^C z7X{{xMDvtHO`pZ zvUq}z=?LJDzh^_7S{w0M1)wG^b(X=QV`51jbcKc{dfhP}y4M;gdE#^ucuRo!2>6-C z-+3P7{NsH~@Yf9F%{wnCSW} zd)|B;fup+qcQ>_W2?mIn%kRG+gHv9pLz|Zdw8DJ8cr%f-DO#syN=!2_>%J__7%M#mJi>SQ-dX zYk--D)~=U2v%DxhA3%Mb!XxKgePzeGVvHeTe*%_euS4Tlh5^V5V(l4ELKv*+9@Aj@ z=KW3gE@1MsvgRHD8hInRh%gBz|quXzr7v`fw?M6Fc(l*8DPHQXe>Di#R z$D>23)V;55`p2`ky^NB5VnwKO9wCFEx4u}XK?5Fi)Fv9?g=r5Sto{k4y9k0*CO5KiVPG5`v@pujw%u=FjKU#o z6Lk7pj#%1>A?G?h9uIdO+Q}pW@2Sq&7k@pDpS++b($buHP6m(eXOK3Iz#U+xHr7PF zR~Lpm0h`uRM3X!@lZDC4KIg=7dJrNH8`swX-PD$rPh`OHX^}x)4BA$Vy=OrXkL&r#9Gm&ZY#SsY;1#Oxn883w^iY;H7LMz<)+pN>Z1{dh(%redyxA@t zw2z&4;?3K#XHr3LN5MzH+=D_q*35fCOC9mJxIInh%GwRTYo$BNi$}H*I=+Rr-e@%7 zvC-*ov((J+|9N+SnmKM$Ak*Pm+uz5VB$QVNcz-7$~k~DNcWc3Sk3?c?*v=UwgNYC5>?%dXB z`cpaGaj&IY-+9}7#E<(ndwpV0AV$c*3=c2st&#|a80+lny2y6?Y2S&(NQ;k;5Edjq zr8n0s1LaGCLD$u8uT@3~Q(} zO}^s%b-TO#q@Z^z#X{o+SIgbDg^CVy zR9|Vhb)`I3NOpXdwhPqG?bzlcNsoW3+Q9}14^~&&b{#jMXZsU@SK)je3I^$Ao?Q-W zn)3jZeml?B#x^wa=D&KY-99Ld{ewL5E&M?Mo4hG9C!u8a@Wc8B@lwuLmYrfsQQ8%vRYfTTE@;sS6%Aox&&6mNP%nZMH@Dt)3x&at)_Hsm zW=}%hbKw1M>6UPCwd}P|D1M4e@3(zbCSpa`l+Ix?zcd zT#hD6ryWzd6IY))GjB?^`Ho{+G5T;3F6L1r4kvJV2je`Wn$VNo5y@bb+*(Bc+o()O z{O0$Iq)JrW|5>@0n8Hplw&od>2T+h`$qpTW_ z^7a4U-n&3=c3t&hzy1AZMo-&vY+1H3AVDl_;|CLW;`P0}W-k;|e4FvcWZN!qUB;gMww!5T}lEm_za8?Yr~qp_tK&GYVl z_n!Uu?Q`xol5EKuN#BwF^L^jF=dsT@d;j)6`|NwJ7D-cdokPwg4^O++=3Xk99Z{8F z<+sW)g85~paB3&bMDxf__k;wei4MlBe8-<9l3ZYbguddl!WtYY+9H|4KOuPnw zqgd|N$^QC6d(LG%oTFM;F04TFYsOu$j>IHoARE}StcucFMt?1;rGIAN{4n)PK zJ3_=*e^Up8nMNx+fmgy3%eDd-f#E8%N4EKOzfJH*zkFlru3Cx=dYYzFy4oB(ITo7a z!1qL2lkQ4u4?r2Jw))yYOY#zrUIVVmK{>za(%`X3zEBn(W78Z@!mh&y*BpM;E1X93 z2)5vmfR@=&r`^vZ4LpbRe4jakCu)E@kA3->Al~}E_^_9=vT6Erv4K)hfe~2gns()( z<)aee@<442;OvvAWASL021R$Yr)w8i(hS!3zxP+8k={kM%mJ-NLms=C88DItLgGp< zODKaI^AxDZY4F=(jn9JaFdh~$IgWR~ zCV|}?O5Kkqp_GA9>0iE5qdio)eL*$8vMybrEr-eo^t{9w|J7?Za`i!TCpawB4Vrc> zHuPdYf;W@7Ptm4^ob#*XJOV}Q{{Vdyi`h73{&zCn>rc++7^)4lCSO!nkFWTWr*bgo z-$%aeI@w%tnGXv9dh|t8A@(OlF3vk|9-O=ky0OtxCo9n%Uj`moULp1(+esFzF;V%= zU=_CwsD((=_2Si<_eovJ>jet<^!0>H0XvF=wVldE@@>R;�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�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 literal 0 HcmV?d00001 diff --git a/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj b/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj index bfd1ba27..775ef01e 100644 --- a/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj +++ b/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj @@ -13,6 +13,8 @@ enable true true + Assets\Miscellaneous Debris\Microsoft WinUI Logo.png + README.md @@ -31,6 +33,14 @@ Always + + True + \ + + + True + \ + From b086309f19c8ca504add7c5c2e39a789b7a9eb0b Mon Sep 17 00:00:00 2001 From: Thorsten Jung Date: Mon, 30 Mar 2026 08:06:15 +0200 Subject: [PATCH 06/22] Add `RuntimeInfoViewModel` for SettingsPage --- .../ViewModels/RuntimeInfoViewModel.cs | 167 ++++++++++++++++++ .../ViewModels/SettingsViewModel.cs | 16 ++ .../Views/SettingsPage.xaml | 49 ++++- .../WinUIClassicSamplesBrowser.csproj | 1 + 4 files changed, 231 insertions(+), 2 deletions(-) create mode 100644 WinUIClassicSamplesBrowser/ViewModels/RuntimeInfoViewModel.cs diff --git a/WinUIClassicSamplesBrowser/ViewModels/RuntimeInfoViewModel.cs b/WinUIClassicSamplesBrowser/ViewModels/RuntimeInfoViewModel.cs new file mode 100644 index 00000000..e5221b1d --- /dev/null +++ b/WinUIClassicSamplesBrowser/ViewModels/RuntimeInfoViewModel.cs @@ -0,0 +1,167 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Reflection; +using System.Text; +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using Microsoft.Extensions.DependencyModel; +using Windows.ApplicationModel.DataTransfer; + +namespace WinUIClassicSamplesBrowser.ViewModels; + +public partial class RuntimeInfoViewModel : ObservableObject +{ + public ObservableCollection LoadedAssemblies + { + get; + } + = new(); + + public ObservableCollection ReferencedLibraries + { + get; + } + = new(); + + public ObservableCollection TableItems + { + get; + } + = new(); + + public RuntimeInfoViewModel() + { + LoadLoadedAssemblies(); + LoadReferencedLibraries(); + } + + [RelayCommand] + private void CopyTableToClipboard() + { + var sb = new StringBuilder(); + + foreach (var item in TableItems) + sb.AppendLine($"{item.Key}: {item.Value}"); + + Clipboard.SetContent( + new DataPackage + { + RequestedOperation = DataPackageOperation.Copy, + // taj Text = sb.ToString() + }); + } + + [RelayCommand] + private void ExportMarkdown() + { + var sb = new StringBuilder(); + sb.AppendLine("| Key | Value |"); + sb.AppendLine("|-----|--------|"); + + foreach (var item in TableItems) + sb.AppendLine($"| {item.Key} | {item.Value} |"); + + Clipboard.SetContent( + new DataPackage + { + RequestedOperation = DataPackageOperation.Copy, + // taj Text = sb.ToString() + }); + } + + private void LoadLoadedAssemblies() + { + var assemblies = AppDomain.CurrentDomain + .GetAssemblies() + .OrderBy(a => a.GetName().Name); + + foreach (var asm in assemblies) + { + var name = asm.GetName(); + var info = asm.GetCustomAttribute()?.InformationalVersion; + + LoadedAssemblies.Add(new AssemblyInfoModel + { + Name = name.Name, + Version = name.Version?.ToString(), + InformationalVersion = info, + Location = SafeGetLocation(asm) + }); + } + } + + private void LoadReferencedLibraries() + { + var context = DependencyContext.Default; + + if (context == null) + return; + + foreach (var lib in context.RuntimeLibraries.OrderBy(l => l.Name)) + { + ReferencedLibraries.Add(new LibraryInfoModel + { + Name = lib.Name, + Version = lib.Version, + Type = lib.Type, + Path = string.Join(";", lib.RuntimeAssemblyGroups + .SelectMany(g => g.AssetPaths)) + }); + } + } + + private static string SafeGetLocation(Assembly asm) + { + try + { + return asm.Location; + } + catch + { + return "(dynamic / in-memory)"; + } + } +} + +public class AssemblyInfoModel +{ + public string Name + { + get; set; + } + public string Version + { + get; set; + } + public string InformationalVersion + { + get; set; + } + public string Location + { + get; set; + } +} + +public class LibraryInfoModel +{ + public string Name + { + get; set; + } + public string Version + { + get; set; + } + public string Type + { + get; set; + } + public string Path + { + get; set; + } +} + diff --git a/WinUIClassicSamplesBrowser/ViewModels/SettingsViewModel.cs b/WinUIClassicSamplesBrowser/ViewModels/SettingsViewModel.cs index 29a4b9f8..e12ada3c 100644 --- a/WinUIClassicSamplesBrowser/ViewModels/SettingsViewModel.cs +++ b/WinUIClassicSamplesBrowser/ViewModels/SettingsViewModel.cs @@ -23,6 +23,10 @@ public partial class SettingsViewModel : ObservableRecipient [ObservableProperty] private string _versionDescription; + [ObservableProperty] + private string _tableItems; + + public ICommand SwitchThemeCommand { get; @@ -63,3 +67,15 @@ private static string GetVersionDescription() return $"{"AppDisplayName".GetLocalized()} - {version.Major}.{version.Minor}.{version.Build}.{version.Revision}"; } } + +public class KeyValueItem +{ + public string Key + { + get; set; + } + public string Value + { + get; set; + } +} diff --git a/WinUIClassicSamplesBrowser/Views/SettingsPage.xaml b/WinUIClassicSamplesBrowser/Views/SettingsPage.xaml index 604eafd0..1bcb7660 100644 --- a/WinUIClassicSamplesBrowser/Views/SettingsPage.xaml +++ b/WinUIClassicSamplesBrowser/Views/SettingsPage.xaml @@ -6,13 +6,24 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:helpers="using:WinUIClassicSamplesBrowser.Helpers" xmlns:xaml="using:Microsoft.UI.Xaml" + xmlns:local="using:WinUIClassicSamplesBrowser.ViewModels" + d:DataContext="WinUIClassicSamplesBrowser.Views.SettingsViewModel" mc:Ignorable="d"> - + + + + + + + + + + + @@ -63,5 +74,39 @@ + + + + + + + + + + + + + + + + + + + + + + + From c1d1933f90a98956b5d0ab79dc4cbd44f489e8cb Mon Sep 17 00:00:00 2001 From: Thorsten Jung Date: Tue, 31 Mar 2026 08:32:32 +0200 Subject: [PATCH 11/22] Include Package `Markdig`, Version="1.1.2" Add some placeholder controls --- .../Strings/en-us/Resources.resw | 70 +++++++++++++++++-- .../Views/MainPage.xaml | 11 ++- .../Views/ShellPage.xaml | 7 +- .../WinUIClassicSamplesBrowser.csproj | 1 + 4 files changed, 83 insertions(+), 6 deletions(-) diff --git a/WinUIClassicSamplesBrowser/Strings/en-us/Resources.resw b/WinUIClassicSamplesBrowser/Strings/en-us/Resources.resw index 54436cbe..a57d20f6 100644 --- a/WinUIClassicSamplesBrowser/Strings/en-us/Resources.resw +++ b/WinUIClassicSamplesBrowser/Strings/en-us/Resources.resw @@ -1,5 +1,64 @@  + @@ -61,9 +120,9 @@ WinUIClassicSamplesBrowser - - WinUIClassicSamplesBrowser - + + WinUIClassicSamplesBrowser + Main @@ -144,4 +203,7 @@ </actions> </toast> - + + Markdown Viewer + + \ No newline at end of file diff --git a/WinUIClassicSamplesBrowser/Views/MainPage.xaml b/WinUIClassicSamplesBrowser/Views/MainPage.xaml index 7659db8c..01834aa3 100644 --- a/WinUIClassicSamplesBrowser/Views/MainPage.xaml +++ b/WinUIClassicSamplesBrowser/Views/MainPage.xaml @@ -4,9 +4,18 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:viewmodels="using:WinUIClassicSamplesBrowser.ViewModels" + d:DataContext="{d:DesignInstance Type=viewmodels:MainViewModel}" mc:Ignorable="d"> - + + + + + + + + diff --git a/WinUIClassicSamplesBrowser/Views/ShellPage.xaml b/WinUIClassicSamplesBrowser/Views/ShellPage.xaml index 0fe6a327..d75bc505 100644 --- a/WinUIClassicSamplesBrowser/Views/ShellPage.xaml +++ b/WinUIClassicSamplesBrowser/Views/ShellPage.xaml @@ -45,7 +45,7 @@ --> - + @@ -53,6 +53,11 @@ + + + + + diff --git a/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj b/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj index 252ee736..16b78e76 100644 --- a/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj +++ b/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj @@ -24,6 +24,7 @@ + From 3a56176ab46a13e76297c6adabc167be6c99d875 Mon Sep 17 00:00:00 2001 From: Thorsten Jung Date: Fri, 3 Apr 2026 08:50:54 +0200 Subject: [PATCH 12/22] Add `ClassicSamplesTestApp` --- .../Contracts/Services/IFileService.cs | 4 ++ .../Models/ClassicSamplesTestApp.cs | 41 +++++++++++++++++++ .../Services/FileService.cs | 36 ++++++++++++++++ .../ViewModels/MainViewModel.cs | 8 ++++ .../Views/MainPage.xaml | 21 ++++++---- 5 files changed, 101 insertions(+), 9 deletions(-) create mode 100644 WinUIClassicSamplesBrowser/Models/ClassicSamplesTestApp.cs diff --git a/WinUIClassicSamplesBrowser/Contracts/Services/IFileService.cs b/WinUIClassicSamplesBrowser/Contracts/Services/IFileService.cs index 661a3300..32a5c898 100644 --- a/WinUIClassicSamplesBrowser/Contracts/Services/IFileService.cs +++ b/WinUIClassicSamplesBrowser/Contracts/Services/IFileService.cs @@ -7,4 +7,8 @@ public interface IFileService void Save(string folderPath, string fileName, T content); void Delete(string folderPath, string fileName); + + bool IsExecutable(string filePath); + + bool IsPeExecutable(string filePath); } diff --git a/WinUIClassicSamplesBrowser/Models/ClassicSamplesTestApp.cs b/WinUIClassicSamplesBrowser/Models/ClassicSamplesTestApp.cs new file mode 100644 index 00000000..64712b50 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Models/ClassicSamplesTestApp.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using CommunityToolkit.Mvvm.ComponentModel; +using WinUIClassicSamplesBrowser.Contracts.Services; +using WinUIClassicSamplesBrowser.Services; + +namespace WinUIClassicSamplesBrowser.Models; + +public partial class ClassicSamplesTestApp : ObservableObject +{ + [ObservableProperty] + private string name; + + [ObservableProperty] + private string relativePath; + + [ObservableProperty] + private bool isAvailable; + + [ObservableProperty] + private bool isRunning; + + public ClassicSamplesTestApp(string relativePath) + { + this.relativePath = relativePath; + this.name = Path.GetFileName(relativePath); + } + + public async Task CheckAvailability(IFileService fileService) + { + // TODO: Test for file exists + + if (fileService.IsExecutable(RelativePath)) + { + IsAvailable = true; + } + } +} diff --git a/WinUIClassicSamplesBrowser/Services/FileService.cs b/WinUIClassicSamplesBrowser/Services/FileService.cs index 06ca72a9..bc82d8e1 100644 --- a/WinUIClassicSamplesBrowser/Services/FileService.cs +++ b/WinUIClassicSamplesBrowser/Services/FileService.cs @@ -37,4 +37,40 @@ public void Delete(string folderPath, string fileName) File.Delete(Path.Combine(folderPath, fileName)); } } + + public bool IsExecutable(string filePath) + { + if (File.Exists(filePath)) + { + var isExecutable = string.Equals(Path.GetExtension(filePath), ".exe", StringComparison.OrdinalIgnoreCase) + || string.Equals(Path.GetExtension(filePath), ".com", StringComparison.OrdinalIgnoreCase); + + if (isExecutable) + return true; + } + + return false; + } + + public bool IsPeExecutable(string filePath) + { + if (!File.Exists(filePath)) + return false; + + using var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read); + using var br = new BinaryReader(fs); + + // DOS-Header: "MZ" + if (br.ReadUInt16() != 0x5A4D) + return false; + + // PE-Header-Offset + fs.Seek(0x3C, SeekOrigin.Begin); + int peOffset = br.ReadInt32(); + + fs.Seek(peOffset, SeekOrigin.Begin); + + // PE-Signature: "PE\0\0" + return br.ReadUInt32() == 0x00004550; + } } diff --git a/WinUIClassicSamplesBrowser/ViewModels/MainViewModel.cs b/WinUIClassicSamplesBrowser/ViewModels/MainViewModel.cs index acd12fac..5dd6adc2 100644 --- a/WinUIClassicSamplesBrowser/ViewModels/MainViewModel.cs +++ b/WinUIClassicSamplesBrowser/ViewModels/MainViewModel.cs @@ -1,10 +1,18 @@ using CommunityToolkit.Mvvm.ComponentModel; +using WinUIClassicSamplesBrowser.Contracts.Services; +using WinUIClassicSamplesBrowser.Models; namespace WinUIClassicSamplesBrowser.ViewModels; public partial class MainViewModel : ObservableRecipient { + public ClassicSamplesTestApp[] SampleApps; + public IFileService FileService; + public MainViewModel() { + SampleApps = new ClassicSamplesTestApp[] { + new("*"), + }; } } diff --git a/WinUIClassicSamplesBrowser/Views/MainPage.xaml b/WinUIClassicSamplesBrowser/Views/MainPage.xaml index 01834aa3..3a409bba 100644 --- a/WinUIClassicSamplesBrowser/Views/MainPage.xaml +++ b/WinUIClassicSamplesBrowser/Views/MainPage.xaml @@ -8,14 +8,17 @@ d:DataContext="{d:DesignInstance Type=viewmodels:MainViewModel}" mc:Ignorable="d"> - - - - - - - - - + + + + + + + + + + + + From 8b8a4a4f856db06e34e96fe29713d54ef5416fd0 Mon Sep 17 00:00:00 2001 From: Thorsten Jung Date: Fri, 3 Apr 2026 10:58:17 +0200 Subject: [PATCH 13/22] Refactor --- WinUIClassicSamplesBrowser/App.xaml.cs | 8 ++++---- .../Helpers/ResourceExtensions.cs | 4 ++-- WinUIClassicSamplesBrowser/MainWindow.xaml.cs | 10 ++++------ .../Models/ClassicSamplesTestApp.cs | 12 ++++++------ .../Services/LocalSettingsService.cs | 12 +++++------- .../Services/PageService.cs | 10 +++++----- .../ViewModels/MainViewModel.cs | 15 +++++++-------- .../ViewModels/SettingsViewModel.cs | 3 +-- .../ViewModels/ShellViewModel.cs | 4 ++-- .../ViewModels/WebBrowserViewModel.cs | 6 +++--- WinUIClassicSamplesBrowser/Views/MainPage.xaml | 8 ++++---- .../Views/MainPage.xaml.cs | 17 +++++++++++++---- .../Views/SettingsPage.xaml.cs | 3 +-- .../Views/ShellPage.xaml.cs | 2 +- .../Views/WebBrowserPage.xaml.cs | 3 +-- 15 files changed, 59 insertions(+), 58 deletions(-) diff --git a/WinUIClassicSamplesBrowser/App.xaml.cs b/WinUIClassicSamplesBrowser/App.xaml.cs index b6549d8e..7d722dc6 100644 --- a/WinUIClassicSamplesBrowser/App.xaml.cs +++ b/WinUIClassicSamplesBrowser/App.xaml.cs @@ -29,7 +29,7 @@ public IHost Host public static T GetService() where T : class { - if ((App.Current as App)!.Host.Services.GetService(typeof(T)) is not T service) + if ((Current as App)!.Host.Services.GetService(typeof(T)) is not T service) { throw new ArgumentException($"{typeof(T)} needs to be registered in ConfigureServices within App.xaml.cs."); } @@ -85,7 +85,7 @@ public App() }). Build(); - App.GetService().Initialize(); + GetService().Initialize(); UnhandledException += App_UnhandledException; } @@ -100,8 +100,8 @@ protected async override void OnLaunched(LaunchActivatedEventArgs args) { base.OnLaunched(args); - App.GetService().Show(string.Format("AppNotificationSamplePayload".GetLocalized(), AppContext.BaseDirectory)); + GetService().Show(string.Format("AppNotificationSamplePayload".GetLocalized(), AppContext.BaseDirectory)); - await App.GetService().ActivateAsync(args); + await GetService().ActivateAsync(args); } } diff --git a/WinUIClassicSamplesBrowser/Helpers/ResourceExtensions.cs b/WinUIClassicSamplesBrowser/Helpers/ResourceExtensions.cs index d864cda1..8774dee7 100644 --- a/WinUIClassicSamplesBrowser/Helpers/ResourceExtensions.cs +++ b/WinUIClassicSamplesBrowser/Helpers/ResourceExtensions.cs @@ -4,7 +4,7 @@ namespace WinUIClassicSamplesBrowser.Helpers; public static class ResourceExtensions { - private static readonly ResourceLoader _resourceLoader = new(); + private static readonly ResourceLoader ResourceLoader = new(); - public static string GetLocalized(this string resourceKey) => _resourceLoader.GetString(resourceKey); + public static string GetLocalized(this string resourceKey) => ResourceLoader.GetString(resourceKey); } diff --git a/WinUIClassicSamplesBrowser/MainWindow.xaml.cs b/WinUIClassicSamplesBrowser/MainWindow.xaml.cs index 10313437..bb9e17d8 100644 --- a/WinUIClassicSamplesBrowser/MainWindow.xaml.cs +++ b/WinUIClassicSamplesBrowser/MainWindow.xaml.cs @@ -6,9 +6,9 @@ namespace WinUIClassicSamplesBrowser; public sealed partial class MainWindow : WindowEx { - private Microsoft.UI.Dispatching.DispatcherQueue dispatcherQueue; + private Microsoft.UI.Dispatching.DispatcherQueue _dispatcherQueue = Microsoft.UI.Dispatching.DispatcherQueue.GetForCurrentThread(); - private UISettings settings; + private UISettings _settings = new(); public MainWindow() { @@ -19,9 +19,7 @@ public MainWindow() Title = "AppDisplayName".GetLocalized(); // Theme change code picked from https://github.com/microsoft/WinUI-Gallery/pull/1239 - dispatcherQueue = Microsoft.UI.Dispatching.DispatcherQueue.GetForCurrentThread(); - settings = new UISettings(); - settings.ColorValuesChanged += Settings_ColorValuesChanged; // cannot use FrameworkElement.ActualThemeChanged event + _settings.ColorValuesChanged += Settings_ColorValuesChanged; // cannot use FrameworkElement.ActualThemeChanged event } // this handles updating the caption button colors correctly when indows system theme is changed @@ -29,7 +27,7 @@ public MainWindow() private void Settings_ColorValuesChanged(UISettings sender, object args) { // This calls comes off-thread, hence we will need to dispatch it to current app's thread - dispatcherQueue.TryEnqueue(() => + _dispatcherQueue.TryEnqueue(() => { TitleBarHelper.ApplySystemThemeToCaptionButtons(); }); diff --git a/WinUIClassicSamplesBrowser/Models/ClassicSamplesTestApp.cs b/WinUIClassicSamplesBrowser/Models/ClassicSamplesTestApp.cs index 64712b50..d0227f63 100644 --- a/WinUIClassicSamplesBrowser/Models/ClassicSamplesTestApp.cs +++ b/WinUIClassicSamplesBrowser/Models/ClassicSamplesTestApp.cs @@ -12,21 +12,21 @@ namespace WinUIClassicSamplesBrowser.Models; public partial class ClassicSamplesTestApp : ObservableObject { [ObservableProperty] - private string name; + private string _name; [ObservableProperty] - private string relativePath; + private string _relativePath; [ObservableProperty] - private bool isAvailable; + private bool _isAvailable; [ObservableProperty] - private bool isRunning; + private bool _isRunning; public ClassicSamplesTestApp(string relativePath) { - this.relativePath = relativePath; - this.name = Path.GetFileName(relativePath); + _relativePath = relativePath; + _name = Path.GetFileName(relativePath); } public async Task CheckAvailability(IFileService fileService) diff --git a/WinUIClassicSamplesBrowser/Services/LocalSettingsService.cs b/WinUIClassicSamplesBrowser/Services/LocalSettingsService.cs index 7fd68693..2cd702f5 100644 --- a/WinUIClassicSamplesBrowser/Services/LocalSettingsService.cs +++ b/WinUIClassicSamplesBrowser/Services/LocalSettingsService.cs @@ -11,8 +11,8 @@ namespace WinUIClassicSamplesBrowser.Services; public class LocalSettingsService : ILocalSettingsService { - private const string _defaultApplicationDataFolder = "WinUIClassicSamplesBrowser/ApplicationData"; - private const string _defaultLocalSettingsFile = "LocalSettings.json"; + private const string DefaultApplicationDataFolder = "WinUIClassicSamplesBrowser/ApplicationData"; + private const string DefaultLocalSettingsFile = "LocalSettings.json"; private readonly IFileService _fileService; private readonly LocalSettingsOptions _options; @@ -21,7 +21,7 @@ public class LocalSettingsService : ILocalSettingsService private readonly string _applicationDataFolder; private readonly string _localsettingsFile; - private IDictionary _settings; + private IDictionary _settings = new Dictionary(); private bool _isInitialized; @@ -30,10 +30,8 @@ public LocalSettingsService(IFileService fileService, IOptions(); + _applicationDataFolder = Path.Combine(_localApplicationData, _options.ApplicationDataFolder ?? DefaultApplicationDataFolder); + _localsettingsFile = _options.LocalSettingsFile ?? DefaultLocalSettingsFile; } private async Task InitializeAsync() diff --git a/WinUIClassicSamplesBrowser/Services/PageService.cs b/WinUIClassicSamplesBrowser/Services/PageService.cs index 34c71223..dbc8e667 100644 --- a/WinUIClassicSamplesBrowser/Services/PageService.cs +++ b/WinUIClassicSamplesBrowser/Services/PageService.cs @@ -33,19 +33,19 @@ public Type GetPageType(string key) return pageType; } - private void Configure() - where VM : ObservableObject - where V : Page + private void Configure() + where TVm : ObservableObject + where TV : Page { lock (_pages) { - var key = typeof(VM).FullName!; + var key = typeof(TVm).FullName!; if (_pages.ContainsKey(key)) { throw new ArgumentException($"The key {key} is already configured in PageService"); } - var type = typeof(V); + var type = typeof(TV); if (_pages.ContainsValue(type)) { throw new ArgumentException($"This type is already configured with key {_pages.First(p => p.Value == type).Key}"); diff --git a/WinUIClassicSamplesBrowser/ViewModels/MainViewModel.cs b/WinUIClassicSamplesBrowser/ViewModels/MainViewModel.cs index 5dd6adc2..d87e7e0c 100644 --- a/WinUIClassicSamplesBrowser/ViewModels/MainViewModel.cs +++ b/WinUIClassicSamplesBrowser/ViewModels/MainViewModel.cs @@ -6,13 +6,12 @@ namespace WinUIClassicSamplesBrowser.ViewModels; public partial class MainViewModel : ObservableRecipient { - public ClassicSamplesTestApp[] SampleApps; - public IFileService FileService; + [ObservableProperty] + private ClassicSamplesTestApp[] _sampleApps = new ClassicSamplesTestApp[] { + new(@"*.\TestExampleA\bin\UnitTest.exe"), + new(@"*.\TestExample2\bin\UnitTest.exe"), + new(@"*.\TestExample3\bin\UnitTest.exe"), + }; - public MainViewModel() - { - SampleApps = new ClassicSamplesTestApp[] { - new("*"), - }; - } + public IFileService FileService; } diff --git a/WinUIClassicSamplesBrowser/ViewModels/SettingsViewModel.cs b/WinUIClassicSamplesBrowser/ViewModels/SettingsViewModel.cs index e12ada3c..2d0be004 100644 --- a/WinUIClassicSamplesBrowser/ViewModels/SettingsViewModel.cs +++ b/WinUIClassicSamplesBrowser/ViewModels/SettingsViewModel.cs @@ -21,7 +21,7 @@ public partial class SettingsViewModel : ObservableRecipient private ElementTheme _elementTheme; [ObservableProperty] - private string _versionDescription; + private string _versionDescription = GetVersionDescription(); [ObservableProperty] private string _tableItems; @@ -36,7 +36,6 @@ public SettingsViewModel(IThemeSelectorService themeSelectorService) { _themeSelectorService = themeSelectorService; _elementTheme = _themeSelectorService.Theme; - _versionDescription = GetVersionDescription(); SwitchThemeCommand = new RelayCommand( async (param) => diff --git a/WinUIClassicSamplesBrowser/ViewModels/ShellViewModel.cs b/WinUIClassicSamplesBrowser/ViewModels/ShellViewModel.cs index f47e2091..98ddec49 100644 --- a/WinUIClassicSamplesBrowser/ViewModels/ShellViewModel.cs +++ b/WinUIClassicSamplesBrowser/ViewModels/ShellViewModel.cs @@ -10,10 +10,10 @@ namespace WinUIClassicSamplesBrowser.ViewModels; public partial class ShellViewModel : ObservableRecipient { [ObservableProperty] - private bool isBackEnabled; + private bool _isBackEnabled; [ObservableProperty] - private object? selected; + private object? _selected; public INavigationService NavigationService { diff --git a/WinUIClassicSamplesBrowser/ViewModels/WebBrowserViewModel.cs b/WinUIClassicSamplesBrowser/ViewModels/WebBrowserViewModel.cs index 252060b7..eaaed54c 100644 --- a/WinUIClassicSamplesBrowser/ViewModels/WebBrowserViewModel.cs +++ b/WinUIClassicSamplesBrowser/ViewModels/WebBrowserViewModel.cs @@ -16,13 +16,13 @@ public partial class WebBrowserViewModel : ObservableRecipient, INavigationAware { // TODO: Set the default URL to display. [ObservableProperty] - private Uri source = new("https://github.com/dahall/WinClassicSamplesCS?tab=readme-ov-file#winclassicsamplescs"); + private Uri _source = new("https://github.com/dahall/WinClassicSamplesCS?tab=readme-ov-file#winclassicsamplescs"); [ObservableProperty] - private bool isLoading = true; + private bool _isLoading = true; [ObservableProperty] - private bool hasFailures; + private bool _hasFailures; public IWebViewService WebViewService { diff --git a/WinUIClassicSamplesBrowser/Views/MainPage.xaml b/WinUIClassicSamplesBrowser/Views/MainPage.xaml index 3a409bba..70eb6ab7 100644 --- a/WinUIClassicSamplesBrowser/Views/MainPage.xaml +++ b/WinUIClassicSamplesBrowser/Views/MainPage.xaml @@ -14,11 +14,11 @@ - - + + - - + + diff --git a/WinUIClassicSamplesBrowser/Views/MainPage.xaml.cs b/WinUIClassicSamplesBrowser/Views/MainPage.xaml.cs index 27f90b29..31af1960 100644 --- a/WinUIClassicSamplesBrowser/Views/MainPage.xaml.cs +++ b/WinUIClassicSamplesBrowser/Views/MainPage.xaml.cs @@ -1,5 +1,6 @@ -using Microsoft.UI.Xaml.Controls; - +using CommunityToolkit.Mvvm.ComponentModel; +using Microsoft.UI.Xaml.Controls; +using WinUIClassicSamplesBrowser.Models; using WinUIClassicSamplesBrowser.ViewModels; namespace WinUIClassicSamplesBrowser.Views; @@ -9,11 +10,19 @@ public sealed partial class MainPage : Page public MainViewModel ViewModel { get; - } + } = App.GetService(); + + public ClassicSamplesTestApp[] SampleApps => ViewModel.SampleApps; + +// [ObservableProperty] +// private ClassicSamplesTestApp[] samples +// { +// get => ViewModel.SampleApps; +// set => ViewModel.SampleApps = value; +// } public MainPage() { - ViewModel = App.GetService(); InitializeComponent(); } } diff --git a/WinUIClassicSamplesBrowser/Views/SettingsPage.xaml.cs b/WinUIClassicSamplesBrowser/Views/SettingsPage.xaml.cs index f5d670f1..c2f9b515 100644 --- a/WinUIClassicSamplesBrowser/Views/SettingsPage.xaml.cs +++ b/WinUIClassicSamplesBrowser/Views/SettingsPage.xaml.cs @@ -10,11 +10,10 @@ public sealed partial class SettingsPage : Page public SettingsViewModel ViewModel { get; - } + } = App.GetService(); public SettingsPage() { - ViewModel = App.GetService(); InitializeComponent(); } diff --git a/WinUIClassicSamplesBrowser/Views/ShellPage.xaml.cs b/WinUIClassicSamplesBrowser/Views/ShellPage.xaml.cs index 5d85c478..34692667 100644 --- a/WinUIClassicSamplesBrowser/Views/ShellPage.xaml.cs +++ b/WinUIClassicSamplesBrowser/Views/ShellPage.xaml.cs @@ -36,7 +36,7 @@ public ShellPage(ShellViewModel viewModel) AppTitleBarText.Text = "AppDisplayName".GetLocalized(); } - private void OnLoaded(object sender, Microsoft.UI.Xaml.RoutedEventArgs e) + private void OnLoaded(object sender, RoutedEventArgs e) { TitleBarHelper.UpdateTitleBar(RequestedTheme); diff --git a/WinUIClassicSamplesBrowser/Views/WebBrowserPage.xaml.cs b/WinUIClassicSamplesBrowser/Views/WebBrowserPage.xaml.cs index 09e25233..c5267b89 100644 --- a/WinUIClassicSamplesBrowser/Views/WebBrowserPage.xaml.cs +++ b/WinUIClassicSamplesBrowser/Views/WebBrowserPage.xaml.cs @@ -10,11 +10,10 @@ public sealed partial class WebBrowserPage : Page public WebBrowserViewModel ViewModel { get; - } + } = App.GetService(); public WebBrowserPage() { - ViewModel = App.GetService(); InitializeComponent(); ViewModel.WebViewService.Initialize(WebView); From 0abd13f4d782a2749e926172673417d769b55cd3 Mon Sep 17 00:00:00 2001 From: Thorsten Jung Date: Fri, 3 Apr 2026 11:35:10 +0200 Subject: [PATCH 14/22] Add `WindowIcon.Dark.ico` --- .../Assets/WindowIcon.Dark.ico | Bin 0 -> 61600 bytes .../WinUIClassicSamplesBrowser.csproj | 4 ++++ 2 files changed, 4 insertions(+) create mode 100644 WinUIClassicSamplesBrowser/Assets/WindowIcon.Dark.ico diff --git a/WinUIClassicSamplesBrowser/Assets/WindowIcon.Dark.ico b/WinUIClassicSamplesBrowser/Assets/WindowIcon.Dark.ico new file mode 100644 index 0000000000000000000000000000000000000000..bc84cd7aff4578c7bd591f2973a8c4d3cff5d686 GIT binary patch literal 61600 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 gurnUbnKoIEv2Wp{+9smFU literal 0 HcmV?d00001 diff --git a/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj b/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj index 16b78e76..21943b9b 100644 --- a/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj +++ b/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj @@ -32,6 +32,10 @@ + + + + Always From 29dbc20887dc7c492659c924fe6b8fa9754f1cba Mon Sep 17 00:00:00 2001 From: Thorsten Jung Date: Fri, 3 Apr 2026 12:22:12 +0200 Subject: [PATCH 15/22] Overhaul `MainPage` - Add `FlipView` - Add `Sidebar` --- .../Models/ClassicSamplesTestApp.cs | 2 + .../Views/MainPage.xaml | 67 +++++++++++++++---- 2 files changed, 56 insertions(+), 13 deletions(-) diff --git a/WinUIClassicSamplesBrowser/Models/ClassicSamplesTestApp.cs b/WinUIClassicSamplesBrowser/Models/ClassicSamplesTestApp.cs index d0227f63..b80a5334 100644 --- a/WinUIClassicSamplesBrowser/Models/ClassicSamplesTestApp.cs +++ b/WinUIClassicSamplesBrowser/Models/ClassicSamplesTestApp.cs @@ -23,6 +23,8 @@ public partial class ClassicSamplesTestApp : ObservableObject [ObservableProperty] private bool _isRunning; +// private ImagePath _imageSource; + public ClassicSamplesTestApp(string relativePath) { _relativePath = relativePath; diff --git a/WinUIClassicSamplesBrowser/Views/MainPage.xaml b/WinUIClassicSamplesBrowser/Views/MainPage.xaml index 70eb6ab7..3dbc1bca 100644 --- a/WinUIClassicSamplesBrowser/Views/MainPage.xaml +++ b/WinUIClassicSamplesBrowser/Views/MainPage.xaml @@ -4,21 +4,62 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:viewmodels="using:WinUIClassicSamplesBrowser.ViewModels" + xmlns:viewmodels="using:WinUIClassicSamplesBrowser.ViewModels" + xmlns:data="using:WinUIClassicSamplesBrowser.Models" d:DataContext="{d:DesignInstance Type=viewmodels:MainViewModel}" mc:Ignorable="d"> - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 8b82aa929fb0a164699190e7305aa445db75aa0e Mon Sep 17 00:00:00 2001 From: Thorsten Jung Date: Fri, 3 Apr 2026 12:47:59 +0200 Subject: [PATCH 16/22] Add `Vanara` Packages, Shell, Shell32, WinUI.Extensions --- WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj b/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj index 21943b9b..802e4e78 100644 --- a/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj +++ b/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj @@ -30,6 +30,10 @@ + + + + From ed38e15765db10b97624e544811f0add6ba0ed76 Mon Sep 17 00:00:00 2001 From: Thorsten Jung Date: Fri, 3 Apr 2026 13:24:13 +0200 Subject: [PATCH 17/22] Revert "Add `Vanara` Packages, Shell, Shell32, WinUI.Extensions" This reverts commit 8b82aa929fb0a164699190e7305aa445db75aa0e. --- WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj | 4 ---- 1 file changed, 4 deletions(-) diff --git a/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj b/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj index 802e4e78..21943b9b 100644 --- a/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj +++ b/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj @@ -30,10 +30,6 @@ - - - - From 102359274c7cb21e4dd6bd95eca84622b1d032e2 Mon Sep 17 00:00:00 2001 From: Thorsten Jung Date: Fri, 3 Apr 2026 16:02:46 +0200 Subject: [PATCH 18/22] Add `RibbonConverter` to `NavigationView` --- .../Strings/en-us/Resources.resw | 11 +++++++---- WinUIClassicSamplesBrowser/Views/ShellPage.xaml | 6 ++++++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/WinUIClassicSamplesBrowser/Strings/en-us/Resources.resw b/WinUIClassicSamplesBrowser/Strings/en-us/Resources.resw index a57d20f6..baa31cab 100644 --- a/WinUIClassicSamplesBrowser/Strings/en-us/Resources.resw +++ b/WinUIClassicSamplesBrowser/Strings/en-us/Resources.resw @@ -124,7 +124,7 @@ WinUIClassicSamplesBrowser - Main + Classic Samples Browser Loading... @@ -160,7 +160,7 @@ Open in browser - WebBrowser + Web Browser Personalization @@ -181,13 +181,13 @@ About this application - TODO: Replace with your app description. + Vanara - WinUIClassicSamplesBrowser Privacy Statement - https://YourPrivacyUrlGoesHere/ + https://github.com/dahall/Vanara <toast launch="action=ToastClick"> @@ -206,4 +206,7 @@ Markdown Viewer + + Ribbon Converter + \ No newline at end of file diff --git a/WinUIClassicSamplesBrowser/Views/ShellPage.xaml b/WinUIClassicSamplesBrowser/Views/ShellPage.xaml index d75bc505..bce1f146 100644 --- a/WinUIClassicSamplesBrowser/Views/ShellPage.xaml +++ b/WinUIClassicSamplesBrowser/Views/ShellPage.xaml @@ -48,6 +48,7 @@ + @@ -58,6 +59,11 @@ + + + + + From eb0d63427cfd2a26e6774d6e588bee651bff63cf Mon Sep 17 00:00:00 2001 From: Thorsten Jung Date: Fri, 3 Apr 2026 16:56:54 +0200 Subject: [PATCH 19/22] Add `BreadcrumbBar` to `AppTitleBar` --- .../Views/ShellPage.xaml | 26 ++++++++++++++++--- .../Views/ShellPage.xaml.cs | 2 ++ 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/WinUIClassicSamplesBrowser/Views/ShellPage.xaml b/WinUIClassicSamplesBrowser/Views/ShellPage.xaml index bce1f146..af4672b1 100644 --- a/WinUIClassicSamplesBrowser/Views/ShellPage.xaml +++ b/WinUIClassicSamplesBrowser/Views/ShellPage.xaml @@ -15,15 +15,33 @@ Height="{Binding ElementName=NavigationViewControl, Path=CompactPaneLength}" IsHitTestVisible="True" VerticalAlignment="Top"> - + + + + + - + + + + Date: Fri, 3 Apr 2026 17:15:40 +0200 Subject: [PATCH 20/22] Refactor --- .../Views/ShellPage.xaml | 51 +++++++++++-------- .../Views/ShellPage.xaml.cs | 14 ++++- 2 files changed, 43 insertions(+), 22 deletions(-) diff --git a/WinUIClassicSamplesBrowser/Views/ShellPage.xaml b/WinUIClassicSamplesBrowser/Views/ShellPage.xaml index af4672b1..44a692c8 100644 --- a/WinUIClassicSamplesBrowser/Views/ShellPage.xaml +++ b/WinUIClassicSamplesBrowser/Views/ShellPage.xaml @@ -11,38 +11,47 @@ + Canvas.ZIndex="1"> + - - + 0,0,0,0 + + + + + + + + - - + TextWrapping="NoWrap" + Margin="0,0,16,0"/> + + + + /// Initializes a new instance of the ShellPage class with the specified view model and sets up navigation and + /// window customization. + /// + /// This constructor configures navigation services and customizes the window's title bar for + /// enhanced appearance and integration with the application's theme. Ensure that the provided view model is fully + /// initialized before passing it to this constructor. + /// The ShellViewModel instance that provides data binding and navigation services for the page. Cannot be null. public ShellPage(ShellViewModel viewModel) { ViewModel = viewModel; @@ -34,6 +44,8 @@ public ShellPage(ShellViewModel viewModel) App.MainWindow.SetTitleBar(AppTitleBar); App.MainWindow.Activated += MainWindow_Activated; AppTitleBarText.Text = "AppDisplayName".GetLocalized(); + + //AppTitleBar.PreferredHeightOption = TitleBarHeightOption.Tall; } private void OnLoaded(object sender, RoutedEventArgs e) From dacebf7bff3bae599677a179179989a3c21bbaea Mon Sep 17 00:00:00 2001 From: Thorsten Jung Date: Fri, 3 Apr 2026 17:31:16 +0200 Subject: [PATCH 21/22] More Breadcrumbs --- .../Views/ShellPage.xaml | 28 ++++++++++++++++++ .../Views/ShellPage.xaml.cs | 29 +++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/WinUIClassicSamplesBrowser/Views/ShellPage.xaml b/WinUIClassicSamplesBrowser/Views/ShellPage.xaml index 44a692c8..b83007db 100644 --- a/WinUIClassicSamplesBrowser/Views/ShellPage.xaml +++ b/WinUIClassicSamplesBrowser/Views/ShellPage.xaml @@ -7,6 +7,10 @@ xmlns:helpers="using:WinUIClassicSamplesBrowser.Helpers" xmlns:behaviors="using:WinUIClassicSamplesBrowser.Behaviors" xmlns:i="using:Microsoft.Xaml.Interactivity" + xmlns:viewmodels="using:WinUIClassicSamplesBrowser.ViewModels" + xmlns:data="using:WinUIClassicSamplesBrowser.Models" + d:DataContext="{d:DesignInstance Type=viewmodels:MainViewModel}" + mc:Ignorable="d" Loaded="OnLoaded"> @@ -49,6 +53,30 @@ Grid.Column="2" VerticalAlignment="Center" Margin="0,0,12,0" > + + + + diff --git a/WinUIClassicSamplesBrowser/Views/ShellPage.xaml.cs b/WinUIClassicSamplesBrowser/Views/ShellPage.xaml.cs index 70142483..55cb38b8 100644 --- a/WinUIClassicSamplesBrowser/Views/ShellPage.xaml.cs +++ b/WinUIClassicSamplesBrowser/Views/ShellPage.xaml.cs @@ -20,6 +20,35 @@ public ShellViewModel ViewModel get; } + public enum FolderType + { + Default, + Desktop, + Documents, + Downloads, + Pictures + } + + public class Folder + { + public string Name + { + get; set; + } + public FolderType Type + { + get; set; + } + + public string IconGlyph => Type switch + { + FolderType.Desktop => "\uE8FC", + FolderType.Documents => "\uE8A5", + FolderType.Downloads => "\uE896", + FolderType.Pictures => "\uEB9F", + _ => "\uE8B7" + }; + } /// /// Initializes a new instance of the ShellPage class with the specified view model and sets up navigation and From 39413830b46217b32e4c51becad0e966212e220f Mon Sep 17 00:00:00 2001 From: Thorsten Jung Date: Fri, 3 Apr 2026 18:19:46 +0200 Subject: [PATCH 22/22] Add `ExplorerBrowserControl` stub --- .../Controls/ExplorerBrowserControl.xaml | 15 ++++++++++++ .../Controls/ExplorerBrowserControl.xaml.cs | 23 +++++++++++++++++++ .../Strings/en-us/Resources.resw | 4 ++-- .../WinUIClassicSamplesBrowser.csproj | 3 +++ 4 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 WinUIClassicSamplesBrowser/Controls/ExplorerBrowserControl.xaml create mode 100644 WinUIClassicSamplesBrowser/Controls/ExplorerBrowserControl.xaml.cs diff --git a/WinUIClassicSamplesBrowser/Controls/ExplorerBrowserControl.xaml b/WinUIClassicSamplesBrowser/Controls/ExplorerBrowserControl.xaml new file mode 100644 index 00000000..21d69d55 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Controls/ExplorerBrowserControl.xaml @@ -0,0 +1,15 @@ + + + + + + + + diff --git a/WinUIClassicSamplesBrowser/Controls/ExplorerBrowserControl.xaml.cs b/WinUIClassicSamplesBrowser/Controls/ExplorerBrowserControl.xaml.cs new file mode 100644 index 00000000..a01a1289 --- /dev/null +++ b/WinUIClassicSamplesBrowser/Controls/ExplorerBrowserControl.xaml.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using Microsoft.UI.Xaml.Data; +using Microsoft.UI.Xaml.Documents; +using Microsoft.UI.Xaml.Input; +using Microsoft.UI.Xaml.Media; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace WinUIClassicSamplesBrowser.Controls; + + +public sealed partial class ExplorerBrowserControl : UserControl +{ + public ExplorerBrowserControl() + { + } +} diff --git a/WinUIClassicSamplesBrowser/Strings/en-us/Resources.resw b/WinUIClassicSamplesBrowser/Strings/en-us/Resources.resw index baa31cab..3c83b875 100644 --- a/WinUIClassicSamplesBrowser/Strings/en-us/Resources.resw +++ b/WinUIClassicSamplesBrowser/Strings/en-us/Resources.resw @@ -118,10 +118,10 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - WinUIClassicSamplesBrowser + ClassicSamplesBrowser - WinUIClassicSamplesBrowser + ClassicSamplesBrowser winUI 3 Classic Samples Browser diff --git a/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj b/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj index 21943b9b..2a498bce 100644 --- a/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj +++ b/WinUIClassicSamplesBrowser/WinUIClassicSamplesBrowser.csproj @@ -44,6 +44,9 @@ True \ + + MSBuild:Compile + True \