diff --git a/Directory.Build.props b/Directory.Build.props index 13444a0710..d7f4612cc6 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -27,7 +27,8 @@ true true true - true + true + false diff --git a/build/ci/templates/dotnet-install-windows.yml b/build/ci/templates/dotnet-install-windows.yml index 061da646e6..631dc0ebd7 100644 --- a/build/ci/templates/dotnet-install-windows.yml +++ b/build/ci/templates/dotnet-install-windows.yml @@ -32,3 +32,8 @@ steps: errorActionPreference: continue ignoreLASTEXITCODE: true retryCountOnTaskFailure: 3 + + - powershell: | + dotnet workload install maui --source https://api.nuget.org/v3/index.json + dotnet workload install android ios maccatalyst tvos macos maui wasm-tools --source https://api.nuget.org/v3/index.json + displayName: Maui workloads diff --git a/doc/Learn/Tutorials/Maui/HowTo-Use3rdPartLibs.md b/doc/Learn/Tutorials/Maui/HowTo-Use3rdPartLibs.md new file mode 100644 index 0000000000..e9500bae2d --- /dev/null +++ b/doc/Learn/Tutorials/Maui/HowTo-Use3rdPartLibs.md @@ -0,0 +1,92 @@ +--- +uid: Learn.Tutorials.Maui.HowToUse3rdPartLibs +--- + +# How-To: Install and use third part libraries on Uno apps with Maui Embedding + +When working in an application project, you may need to install a third party library. This guide will show you how to install and use a third party library in your Uno app with Maui Embedding. + +For this sample we will use the `CommunityToolkit.Maui` library. + +## Step-by-steps + +### 1. Installing the NuGet package + +On Visual Studio you can use the `Nuget Package Manager` to install the `CommunityToolkit.Maui` package. Install it on your class library project and mobile and Windows project (because this package support those platforms). + +To verify if the package is installed you can look on your csproj file and check if the package is there. It should be something like this: + +```xml + + + +``` + +### 2. Using the library + +In order to use the library we need to initialize it, we do that during the app initialization. So go to your `App.cs` file and add the following code: + +```csharp +using using CommunityToolkit.Maui; + +protected async override void OnLaunched(LaunchActivatedEventArgs args) +{ + var builder = this.CreateBuilder(args) + .UseMauiEmbedding(maui => + { + maui.UseMauiCommunityToolkit(); + }) + // the rest of your configuration +} +``` + +> [!INFO] +> If you are using other libraries that targets .NET MAUI and requires initialization, you can do it inside the lambda function on `UseMauiEmbedding` call. + +Now let's use it on our Page. For that you have to open your XAML page and add the necessary namespaces and the controls you want to use. In this sample we will use the `DrawingView` control. + +```xml + + + + + + + + + + + + + + +``` + +Let's take a moment and review this piece of code. First we added the `toolkit` namespace, this is the namespace that contains the controls from the `CommunityToolkit.Maui` library. In order to consume the `DrawingView` control. We need to use the `MauiContent` control, that lives on `uem` namespace, this control holds all the .NET MAUI types (layouts, controls, converters, etc), you can't use .NET MAUI types outside this control. + +Also, Uno Platform does not convert the `Color` type from .NET MAUI to the WinUI `Color`, so we need to use the `MauiColor` markup extension for the conversion, as you can see in the `LineColor` property. + +### 3. Conclusion + +At this point, running the app should show the `DrawingView` control and allow interactions with it. \ No newline at end of file diff --git a/doc/Overview/Maui/MauiOverview.md b/doc/Overview/Maui/MauiOverview.md new file mode 100644 index 0000000000..d17c9c1195 --- /dev/null +++ b/doc/Overview/Maui/MauiOverview.md @@ -0,0 +1,88 @@ +--- +uid: Overview.Maui +--- +# .NET Maui Embedding + +.NET Maui Embedding provides limited support for Uno Applications to make use of 3rd party control libraries when the required app platforms match one of those available from .NET MAUI. + +## Initialization + +After installing the `Uno.Extensions.Maui.WinUI` NuGet package you will need to update your App.cs in the core/shared project of your Uno Platform Project. + +```cs +protected override void OnLaunched(LaunchActivatedEventArgs args) +{ + this.UseMauiEmbedding(); +} +``` + +Similarly if you are using Uno.Extensions.Hosting for Dependency Injection you can call the `UseMauiEmbedding()` extension off of the `IApplicationBuilder` like: + +```cs +protected override void OnLaunched(LaunchActivatedEventArgs args) +{ + var builder = this.CreateBuilder(args) + .UseMauiEmbedding(); +} +``` + +In the event that your 3rd party control library requires initialization on the `MauiAppBuilder` you can initialize those libraries by simply providing a delegate for the `MauiAppBuilder` in the `UseMauiEmbedding()` extension method: + +```cs +protected override void OnLaunched(LaunchActivatedEventArgs args) +{ + var builder = this.CreateBuilder(args) + .UseMauiEmbedding(maui => maui + .UseTelerikControls()) +} +``` + +## Getting Started + +With Maui Initialized we are now able to make use of the MauiContent control provided by Uno.Extensions.Maui.WinUI. + +```xml + + + + + + +``` + +### Resources & Styles + +When the MauiContent is created it will walk the Visual Tree and look for any parents including `Application.Current` which have a ResourceDictionary which has Resources and/or Styles. It will then do it's best to bring these over to the available MAUI Resources. This includes being able to reuse Colors, Brushes, Thickness, and Converters as well as some limited support for Styles. + +### XAML Extensions + +There are several XAML Extensions that you may decide to make use of while building an app with .NET MAUI Embedding. + +- MauiBinding - As the name suggests this will allow you to create a binding to your DataContext. **NOTE** You can not use `x:Bind` or `Binding` on a MAUI Control. +- MauiColor: If you want to be able to directly apply a Hex string or `Color` name to a `Color` property on a MAUI Control you can use the `MauiColor` Extension to provide that value. +- MauiThickness: If you want to be able to directly apply a `Thickness`, you can use the `MauiThickness` extension to provide a value like `10`, `10,20`, or `10,20,10,5` +- MauiResource: As explained in the previous section, the `MauiContent` control will bring over the WinUI Resources automatically to make it easier to provide consistent styling even within the `MauiContent` of your View. This will allow you to provide a resource Key to apply to a given property. + +```xml + + + +``` + +### Limitations and Known issues + +- Some controls like the `ScrollView` from .NET MAUI will not have the `Content` property automatically recognized by the XAML compiler. As a result you will need to be more verbose with these controls like: + ```xml + + + + + + ``` +- Common type conversions such as hex string or color name to Maui Graphics Color will not work with the XAML Compiler. Similarly types like Thickness `10` or `10,20` will not be picked up and converted by the XAML Compiler. For these primitive types especially it is recommended to simply provide a WinUI Thickness or Color in your Resource Dictionary. These native types will be automatically converted to MAUI types and available to use with the `MauiResource` XAML Extension. +- .NET MAUI Hot Reload will throw an exception and cause the app the crash. You will need to disable this in Visual Studio for now. diff --git a/samples/MauiEmbedding/.vscode/launch.json b/samples/MauiEmbedding/.vscode/launch.json new file mode 100644 index 0000000000..84e4fa1a09 --- /dev/null +++ b/samples/MauiEmbedding/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Use IntelliSense to find out which attributes exist for C# debugging + // Use hover for the description of the existing attributes + // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md + "version": "0.2.0", + "configurations": [ + { + "name": "Uno Platform Mobile", + "type": "Uno", + "request": "launch", + // any Uno* task will do, this is simply to satisfy vscode requirement when a launch.json is present + "preLaunchTask": "Uno: android | Debug | android-x64" + }, + ] +} diff --git a/samples/MauiEmbedding/Directory.Build.props b/samples/MauiEmbedding/Directory.Build.props new file mode 100644 index 0000000000..6f66a3ed8a --- /dev/null +++ b/samples/MauiEmbedding/Directory.Build.props @@ -0,0 +1,56 @@ + + + enable + enable + + portable + True + + true + NU1009 + $(NoWarn);CA1416;NU1507;NU1009 + + en + + false + false + false + false + false + <_UseTelerik>false + + + + + + true + 21.0 + + + + + true + 14.2 + + + + + true + 10.14 + + + + + true + 14.0 + + + + + true + 10.0.18362.0 + 10.0.18362.0 + + + + diff --git a/samples/MauiEmbedding/Directory.Build.targets b/samples/MauiEmbedding/Directory.Build.targets new file mode 100644 index 0000000000..30332cf7d5 --- /dev/null +++ b/samples/MauiEmbedding/Directory.Build.targets @@ -0,0 +1,6 @@ + + + + + + diff --git a/samples/MauiEmbedding/Directory.Packages.props b/samples/MauiEmbedding/Directory.Packages.props new file mode 100644 index 0000000000..8a4a39df79 --- /dev/null +++ b/samples/MauiEmbedding/Directory.Packages.props @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/MauiEmbedding/MauiEmbedding-vsmac.slnf b/samples/MauiEmbedding/MauiEmbedding-vsmac.slnf new file mode 100644 index 0000000000..042903e074 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding-vsmac.slnf @@ -0,0 +1,36 @@ +{ + "solution": { + "path": "MauiEmbedding.sln", + "projects": [ + "..\\..\\src\\Uno.Extensions.Configuration\\Uno.Extensions.Configuration.csproj", + "..\\..\\src\\Uno.Extensions.Core.Generators\\Uno.Extensions.Core.Generators.csproj", + "..\\..\\src\\Uno.Extensions.Core.UI\\Uno.Extensions.Core.WinUI.csproj", + "..\\..\\src\\Uno.Extensions.Core\\Uno.Extensions.Core.csproj", + "..\\..\\src\\Uno.Extensions.Hosting.UI\\Uno.Extensions.Hosting.WinUI.Skia.csproj", + "..\\..\\src\\Uno.Extensions.Hosting.UI\\Uno.Extensions.Hosting.WinUI.Wasm.csproj", + "..\\..\\src\\Uno.Extensions.Hosting.UI\\Uno.Extensions.Hosting.WinUI.csproj", + "..\\..\\src\\Uno.Extensions.Hosting\\Uno.Extensions.Hosting.csproj", + "..\\..\\src\\Uno.Extensions.Localization.UI\\Uno.Extensions.Localization.WinUI.csproj", + "..\\..\\src\\Uno.Extensions.Localization\\Uno.Extensions.Localization.csproj", + "..\\..\\src\\Uno.Extensions.Logging.Serilog\\Uno.Extensions.Logging.Serilog.csproj", + "..\\..\\src\\Uno.Extensions.Logging\\Uno.Extensions.Logging.WinUI.Skia.csproj", + "..\\..\\src\\Uno.Extensions.Logging\\Uno.Extensions.Logging.WinUI.Wasm.csproj", + "..\\..\\src\\Uno.Extensions.Logging\\Uno.Extensions.Logging.WinUI.csproj", + "..\\..\\src\\Uno.Extensions.Maui.UI\\Uno.Extensions.Maui.WinUI.csproj", + "..\\..\\src\\Uno.Extensions.Navigation.Generators\\Uno.Extensions.Navigation.Generators.csproj", + "..\\..\\src\\Uno.Extensions.Navigation.Toolkit\\Uno.Extensions.Navigation.Toolkit.WinUI.csproj", + "..\\..\\src\\Uno.Extensions.Navigation.UI\\Uno.Extensions.Navigation.WinUI.csproj", + "..\\..\\src\\Uno.Extensions.Navigation\\Uno.Extensions.Navigation.csproj", + "..\\..\\src\\Uno.Extensions.Serialization\\Uno.Extensions.Serialization.csproj", + "..\\..\\src\\Uno.Extensions.Storage.UI\\Uno.Extensions.Storage.WinUI.csproj", + "..\\..\\src\\Uno.Extensions.Storage\\Uno.Extensions.Storage.csproj", + "..\\..\\src\\Uno.Extensions.Toolkit.UI\\Uno.Extensions.Toolkit.WinUI.csproj", + "..\\..\\src\\Uno.Extensions.Toolkit\\Uno.Extensions.Toolkit.csproj", + "..\\..\\src\\Uno.Extensions\\Uno.Extensions.csproj", + "..\\MauiProjects\\MauiApp1\\MauiApp1.csproj", + "..\\MauiProjects\\MauiControlsExternal\\MauiControlsExternal.csproj", + "MauiEmbedding.Mobile\\MauiEmbedding.Mobile.csproj", + "MauiEmbedding\\MauiEmbedding.csproj" + ] + } +} \ No newline at end of file diff --git a/samples/MauiEmbedding/MauiEmbedding.Base/AppHead.xaml b/samples/MauiEmbedding/MauiEmbedding.Base/AppHead.xaml new file mode 100644 index 0000000000..c54f963a95 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Base/AppHead.xaml @@ -0,0 +1,17 @@ + + + + + + + + + + + diff --git a/samples/MauiEmbedding/MauiEmbedding.Base/AppHead.xaml.cs b/samples/MauiEmbedding/MauiEmbedding.Base/AppHead.xaml.cs new file mode 100644 index 0000000000..7cb8fdbc70 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Base/AppHead.xaml.cs @@ -0,0 +1,28 @@ +using Microsoft.UI.Xaml; +using Uno.Resizetizer; + +namespace MauiEmbedding; + +public sealed partial class AppHead : App +{ + /// + /// Initializes the singleton application object. This is the first line of authored code + /// executed, and as such is the logical equivalent of main() or WinMain(). + /// + public AppHead() + { + this.InitializeComponent(); + } + + /// + /// Invoked when the application is launched normally by the end user. Other entry points + /// will be used such as when the application is launched to open a specific file. + /// + /// Details about the launch request and process. + protected override void OnLaunched(LaunchActivatedEventArgs args) + { + base.OnLaunched(args); + + MainWindow.SetWindowIcon(); + } +} diff --git a/samples/MauiEmbedding/MauiEmbedding.Base/Icons/appconfig.svg b/samples/MauiEmbedding/MauiEmbedding.Base/Icons/appconfig.svg new file mode 100644 index 0000000000..3106b1a8b0 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Base/Icons/appconfig.svg @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/MauiEmbedding/MauiEmbedding.Base/Icons/iconapp.svg b/samples/MauiEmbedding/MauiEmbedding.Base/Icons/iconapp.svg new file mode 100644 index 0000000000..f621ea597f --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Base/Icons/iconapp.svg @@ -0,0 +1,42 @@ + + + + + + diff --git a/samples/MauiEmbedding/MauiEmbedding.Base/Splash/splash_screen.svg b/samples/MauiEmbedding/MauiEmbedding.Base/Splash/splash_screen.svg new file mode 100644 index 0000000000..3106b1a8b0 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Base/Splash/splash_screen.svg @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/MauiEmbedding/MauiEmbedding.Base/base.props b/samples/MauiEmbedding/MauiEmbedding.Base/base.props new file mode 100644 index 0000000000..6c37f9c202 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Base/base.props @@ -0,0 +1,26 @@ + + + + + + + + + + + + + diff --git a/samples/MauiEmbedding/MauiEmbedding.Mobile/Android/AndroidManifest.xml b/samples/MauiEmbedding/MauiEmbedding.Mobile/Android/AndroidManifest.xml new file mode 100644 index 0000000000..95ae07533a --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Mobile/Android/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + diff --git a/samples/MauiEmbedding/MauiEmbedding.Mobile/Android/Assets/AboutAssets.txt b/samples/MauiEmbedding/MauiEmbedding.Mobile/Android/Assets/AboutAssets.txt new file mode 100644 index 0000000000..210a93b801 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Mobile/Android/Assets/AboutAssets.txt @@ -0,0 +1,22 @@ +To add cross-platform image assets for your Uno Platform app, use the Assets folder +in the shared project instead. Assets in this folder are Android-only assets. + +Any raw assets you want to be deployed with your application can be placed in +this directory (and child directories) and given a Build Action of "AndroidAsset". + +These files will be deployed with you package and will be accessible using Android's +AssetManager, like this: + +public class ReadAsset : Activity +{ + protected override void OnCreate (Bundle bundle) + { + base.OnCreate (bundle); + + InputStream input = Assets.Open ("my_asset.txt"); + } +} + +Additionally, some Android functions will automatically load asset files: + +Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf"); diff --git a/samples/MauiEmbedding/MauiEmbedding.Mobile/Android/Main.Android.cs b/samples/MauiEmbedding/MauiEmbedding.Mobile/Android/Main.Android.cs new file mode 100644 index 0000000000..289716925c --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Mobile/Android/Main.Android.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Android.App; +using Android.Content; +using Android.OS; +using Android.Runtime; +using Android.Views; +using Android.Widget; +using Com.Nostra13.Universalimageloader.Core; +using Microsoft.UI.Xaml.Media; + + +[assembly: Android.App.UsesPermission(Android.Manifest.Permission.BatteryStats)] +namespace MauiEmbedding.Droid; + +[global::Android.App.ApplicationAttribute( + Label = "@string/ApplicationName", + Icon = "@mipmap/iconapp", + LargeHeap = true, + HardwareAccelerated = true, + Theme = "@style/AppTheme" +)] +public class Application : Microsoft.UI.Xaml.NativeApplication +{ + public Application(IntPtr javaReference, JniHandleOwnership transfer) + : base(() => new AppHead(), javaReference, transfer) + { + ConfigureUniversalImageLoader(); + } + + private static void ConfigureUniversalImageLoader() + { + // Create global configuration and initialize ImageLoader with this config + ImageLoaderConfiguration config = new ImageLoaderConfiguration + .Builder(Context) + .Build(); + + ImageLoader.Instance.Init(config); + + ImageSource.DefaultImageLoader = ImageLoader.Instance.LoadImageAsync; + } +} + diff --git a/samples/MauiEmbedding/MauiEmbedding.Mobile/Android/MainActivity.Android.cs b/samples/MauiEmbedding/MauiEmbedding.Mobile/Android/MainActivity.Android.cs new file mode 100644 index 0000000000..20ccd18d35 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Mobile/Android/MainActivity.Android.cs @@ -0,0 +1,16 @@ +using Android.App; +using Android.Widget; +using Android.OS; +using Android.Content.PM; +using Android.Views; + +namespace MauiEmbedding.Droid; + +[Activity( + MainLauncher = true, + ConfigurationChanges = global::Uno.UI.ActivityHelper.AllConfigChanges, + WindowSoftInputMode = SoftInput.AdjustNothing | SoftInput.StateHidden +)] +public class MainActivity : Microsoft.UI.Xaml.ApplicationActivity +{ +} \ No newline at end of file diff --git a/samples/MauiEmbedding/MauiEmbedding.Mobile/Android/Resources/AboutResources.txt b/samples/MauiEmbedding/MauiEmbedding.Mobile/Android/Resources/AboutResources.txt new file mode 100644 index 0000000000..17e3b13335 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Mobile/Android/Resources/AboutResources.txt @@ -0,0 +1,47 @@ +To add cross-platform image assets for your Uno Platform app, use the Assets folder +in the shared project instead. Resources in this folder are Android-only. + +Images, layout descriptions, binary blobs and string dictionaries can be included +in your application as resource files. Various Android APIs are designed to +operate on the resource IDs instead of dealing with images, strings or binary blobs +directly. + +For example, a sample Android app that contains a user interface layout (main.axml), +an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png) +would keep its resources in the "Resources" directory of the application: + +Resources/ + drawable/ + icon.png + + layout/ + main.axml + + values/ + strings.xml + +In order to get the build system to recognize Android resources, set the build action to +"AndroidResource". The native Android APIs do not operate directly with filenames, but +instead operate on resource IDs. When you compile an Android application that uses resources, +the build system will package the resources for distribution and generate a class called "R" +(this is an Android convention) that contains the tokens for each one of the resources +included. For example, for the above Resources layout, this is what the R class would expose: + +public class R { + public class drawable { + public const int icon = 0x123; + } + + public class layout { + public const int main = 0x456; + } + + public class strings { + public const int first_string = 0xabc; + public const int second_string = 0xbcd; + } +} + +You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main +to reference the layout/main.axml file, or R.strings.first_string to reference the first +string in the dictionary file values/strings.xml. diff --git a/samples/MauiEmbedding/MauiEmbedding.Mobile/Android/Resources/values/Strings.xml b/samples/MauiEmbedding/MauiEmbedding.Mobile/Android/Resources/values/Strings.xml new file mode 100644 index 0000000000..abd7ff5a57 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Mobile/Android/Resources/values/Strings.xml @@ -0,0 +1,5 @@ + + + Hello World, Click Me! + MauiEmbedding + diff --git a/samples/MauiEmbedding/MauiEmbedding.Mobile/Android/Resources/values/Styles.xml b/samples/MauiEmbedding/MauiEmbedding.Mobile/Android/Resources/values/Styles.xml new file mode 100644 index 0000000000..c02bd06f71 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Mobile/Android/Resources/values/Styles.xml @@ -0,0 +1,22 @@ + + + + + + diff --git a/samples/MauiEmbedding/MauiEmbedding.Mobile/Android/environment.conf b/samples/MauiEmbedding/MauiEmbedding.Mobile/Android/environment.conf new file mode 100644 index 0000000000..fa6c2e32bf --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Mobile/Android/environment.conf @@ -0,0 +1,2 @@ +# See this for more details: http://developer.xamarin.com/guides/android/advanced_topics/garbage_collection/ +MONO_GC_PARAMS=bridge-implementation=tarjan,nursery-size=32m,soft-heap-limit=256m \ No newline at end of file diff --git a/samples/MauiEmbedding/MauiEmbedding.Mobile/MacCatalyst/Entitlements.plist b/samples/MauiEmbedding/MauiEmbedding.Mobile/MacCatalyst/Entitlements.plist new file mode 100644 index 0000000000..24c3103683 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Mobile/MacCatalyst/Entitlements.plist @@ -0,0 +1,6 @@ + + + + + + diff --git a/samples/MauiEmbedding/MauiEmbedding.Mobile/MacCatalyst/Info.plist b/samples/MauiEmbedding/MauiEmbedding.Mobile/MacCatalyst/Info.plist new file mode 100644 index 0000000000..5a4053db46 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Mobile/MacCatalyst/Info.plist @@ -0,0 +1,26 @@ + + + + + UIDeviceFamily + + 2 + + LSApplicationCategoryType + public.app-category.utilities + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + XSAppIconAssets + Assets.xcassets/iconapp.appiconset + + + + diff --git a/samples/MauiEmbedding/MauiEmbedding.Mobile/MacCatalyst/Main.maccatalyst.cs b/samples/MauiEmbedding/MauiEmbedding.Mobile/MacCatalyst/Main.maccatalyst.cs new file mode 100644 index 0000000000..b0ce2d59c1 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Mobile/MacCatalyst/Main.maccatalyst.cs @@ -0,0 +1,14 @@ +using UIKit; + +namespace MauiEmbedding.MacCatalyst; + +public class EntryPoint +{ + // This is the main entry point of the application. + public static void Main(string[] args) + { + // if you want to use a different Application Delegate class from "AppDelegate" + // you can specify it here. + UIApplication.Main(args, null, typeof(AppHead)); + } +} diff --git a/samples/MauiEmbedding/MauiEmbedding.Mobile/MacCatalyst/Media.xcassets/LaunchImages.launchimage/Contents.json b/samples/MauiEmbedding/MauiEmbedding.Mobile/MacCatalyst/Media.xcassets/LaunchImages.launchimage/Contents.json new file mode 100644 index 0000000000..69555e4406 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Mobile/MacCatalyst/Media.xcassets/LaunchImages.launchimage/Contents.json @@ -0,0 +1,58 @@ +{ + "images": [ + { + "orientation": "portrait", + "extent": "full-screen", + "minimum-system-version": "7.0", + "scale": "2x", + "size": "640x960", + "idiom": "iphone" + }, + { + "orientation": "portrait", + "extent": "full-screen", + "minimum-system-version": "7.0", + "subtype": "retina4", + "scale": "2x", + "size": "640x1136", + "idiom": "iphone" + }, + { + "orientation": "portrait", + "extent": "full-screen", + "minimum-system-version": "7.0", + "scale": "1x", + "size": "768x1024", + "idiom": "ipad" + }, + { + "orientation": "landscape", + "extent": "full-screen", + "minimum-system-version": "7.0", + "scale": "1x", + "size": "1024x768", + "idiom": "ipad" + }, + { + "orientation": "portrait", + "extent": "full-screen", + "minimum-system-version": "7.0", + "scale": "2x", + "size": "1536x2048", + "idiom": "ipad" + }, + { + "orientation": "landscape", + "extent": "full-screen", + "minimum-system-version": "7.0", + "scale": "2x", + "size": "2048x1536", + "idiom": "ipad" + } + ], + "properties": {}, + "info": { + "version": 1, + "author": "" + } +} \ No newline at end of file diff --git a/samples/MauiEmbedding/MauiEmbedding.Mobile/MauiEmbedding.Mobile.csproj b/samples/MauiEmbedding/MauiEmbedding.Mobile/MauiEmbedding.Mobile.csproj new file mode 100644 index 0000000000..00b520193e --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Mobile/MauiEmbedding.Mobile.csproj @@ -0,0 +1,87 @@ + + + + + + net7.0-ios;net7.0-android;net7.0-maccatalyst + true + Exe + + MauiEmbedding + + com.unoplatform.mauiembedding + 58504DCB-2B66-4AAF-AE19-C19BB1292EC9 + + 1.0 + 1 + + Android\AndroidManifest.xml + + + + + True + true + + + + + + + + + + + + + + + + + + + + + + + + + + + $(MtouchExtraArgs) --setenv=MONO_GC_PARAMS=soft-heap-limit=512m,nursery-size=64m,evacuation-threshold=66,major=marksweep,concurrent-sweep + + $(MtouchExtraArgs) --registrar:static + iossimulator-x64 + + + + $(MtouchExtraArgs) --marshal-objectivec-exceptions:disable + + + + + + + + + + + $(MtouchExtraArgs) --setenv=MONO_GC_PARAMS=soft-heap-limit=512m,nursery-size=64m,evacuation-threshold=66,major=marksweep,concurrent-sweep + + $(MtouchExtraArgs) --registrar:static + + false + maccatalyst-x64 + + + + $(MtouchExtraArgs) --marshal-objectivec-exceptions:disable + + + + + + + + + diff --git a/samples/MauiEmbedding/MauiEmbedding.Mobile/iOS/Entitlements.plist b/samples/MauiEmbedding/MauiEmbedding.Mobile/iOS/Entitlements.plist new file mode 100644 index 0000000000..24c3103683 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Mobile/iOS/Entitlements.plist @@ -0,0 +1,6 @@ + + + + + + diff --git a/samples/MauiEmbedding/MauiEmbedding.Mobile/iOS/Info.plist b/samples/MauiEmbedding/MauiEmbedding.Mobile/iOS/Info.plist new file mode 100644 index 0000000000..981d8e7287 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Mobile/iOS/Info.plist @@ -0,0 +1,43 @@ + + + + + LSRequiresIPhoneOS + + UIDeviceFamily + + 1 + 2 + + UIRequiredDeviceCapabilities + + armv7 + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + XSAppIconAssets + Assets.xcassets/iconapp.appiconset + UIApplicationSupportsIndirectInputEvents + + + + + diff --git a/samples/MauiEmbedding/MauiEmbedding.Mobile/iOS/Main.iOS.cs b/samples/MauiEmbedding/MauiEmbedding.Mobile/iOS/Main.iOS.cs new file mode 100644 index 0000000000..bbaec9ad55 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Mobile/iOS/Main.iOS.cs @@ -0,0 +1,14 @@ +using UIKit; + +namespace MauiEmbedding.iOS; + +public class EntryPoint +{ + // This is the main entry point of the application. + public static void Main(string[] args) + { + // if you want to use a different Application Delegate class from "AppDelegate" + // you can specify it here. + UIApplication.Main(args, null, typeof(AppHead)); + } +} diff --git a/samples/MauiEmbedding/MauiEmbedding.Mobile/iOS/Media.xcassets/LaunchImages.launchimage/Contents.json b/samples/MauiEmbedding/MauiEmbedding.Mobile/iOS/Media.xcassets/LaunchImages.launchimage/Contents.json new file mode 100644 index 0000000000..69555e4406 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Mobile/iOS/Media.xcassets/LaunchImages.launchimage/Contents.json @@ -0,0 +1,58 @@ +{ + "images": [ + { + "orientation": "portrait", + "extent": "full-screen", + "minimum-system-version": "7.0", + "scale": "2x", + "size": "640x960", + "idiom": "iphone" + }, + { + "orientation": "portrait", + "extent": "full-screen", + "minimum-system-version": "7.0", + "subtype": "retina4", + "scale": "2x", + "size": "640x1136", + "idiom": "iphone" + }, + { + "orientation": "portrait", + "extent": "full-screen", + "minimum-system-version": "7.0", + "scale": "1x", + "size": "768x1024", + "idiom": "ipad" + }, + { + "orientation": "landscape", + "extent": "full-screen", + "minimum-system-version": "7.0", + "scale": "1x", + "size": "1024x768", + "idiom": "ipad" + }, + { + "orientation": "portrait", + "extent": "full-screen", + "minimum-system-version": "7.0", + "scale": "2x", + "size": "1536x2048", + "idiom": "ipad" + }, + { + "orientation": "landscape", + "extent": "full-screen", + "minimum-system-version": "7.0", + "scale": "2x", + "size": "2048x1536", + "idiom": "ipad" + } + ], + "properties": {}, + "info": { + "version": 1, + "author": "" + } +} \ No newline at end of file diff --git a/samples/MauiEmbedding/MauiEmbedding.Windows/MauiEmbedding.Windows.csproj b/samples/MauiEmbedding/MauiEmbedding.Windows/MauiEmbedding.Windows.csproj new file mode 100644 index 0000000000..13da2145ca --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Windows/MauiEmbedding.Windows.csproj @@ -0,0 +1,83 @@ + + + + + + WinExe + net7.0-windows10.0.19041.0 + 10.0.18362.0 + MauiEmbedding.Windows + app.manifest + x86;x64;arm64 + win10-x86;win10-x64;win10-arm64 + win10-$(Platform).pubxml + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + diff --git a/samples/MauiEmbedding/MauiEmbedding.Windows/Package.appxmanifest b/samples/MauiEmbedding/MauiEmbedding.Windows/Package.appxmanifest new file mode 100644 index 0000000000..b6ab2f76c8 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Windows/Package.appxmanifest @@ -0,0 +1,43 @@ + + + + + + + + MauiEmbedding + Uno Platform + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/MauiEmbedding/MauiEmbedding.Windows/Properties/PublishProfiles/win10-arm64.pubxml b/samples/MauiEmbedding/MauiEmbedding.Windows/Properties/PublishProfiles/win10-arm64.pubxml new file mode 100644 index 0000000000..a132e44c64 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Windows/Properties/PublishProfiles/win10-arm64.pubxml @@ -0,0 +1,20 @@ + + + + + FileSystem + arm64 + win10-arm64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + + + \ No newline at end of file diff --git a/samples/MauiEmbedding/MauiEmbedding.Windows/Properties/PublishProfiles/win10-x64.pubxml b/samples/MauiEmbedding/MauiEmbedding.Windows/Properties/PublishProfiles/win10-x64.pubxml new file mode 100644 index 0000000000..26ea7e55c1 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Windows/Properties/PublishProfiles/win10-x64.pubxml @@ -0,0 +1,20 @@ + + + + + FileSystem + x64 + win10-x64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + + + \ No newline at end of file diff --git a/samples/MauiEmbedding/MauiEmbedding.Windows/Properties/PublishProfiles/win10-x86.pubxml b/samples/MauiEmbedding/MauiEmbedding.Windows/Properties/PublishProfiles/win10-x86.pubxml new file mode 100644 index 0000000000..34d14d4d4a --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Windows/Properties/PublishProfiles/win10-x86.pubxml @@ -0,0 +1,20 @@ + + + + + FileSystem + x86 + win10-x86 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + + + \ No newline at end of file diff --git a/samples/MauiEmbedding/MauiEmbedding.Windows/Properties/launchSettings.json b/samples/MauiEmbedding/MauiEmbedding.Windows/Properties/launchSettings.json new file mode 100644 index 0000000000..f714d39559 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Windows/Properties/launchSettings.json @@ -0,0 +1,7 @@ +{ + "profiles": { + "MauiEmbedding.Windows (Package)": { + "commandName": "MsixPackage" + } + } +} diff --git a/samples/MauiEmbedding/MauiEmbedding.Windows/Resources.lang-en-us.resw b/samples/MauiEmbedding/MauiEmbedding.Windows/Resources.lang-en-us.resw new file mode 100644 index 0000000000..fad04be560 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Windows/Resources.lang-en-us.resw @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Hello World! + + \ No newline at end of file diff --git a/samples/MauiEmbedding/MauiEmbedding.Windows/app.manifest b/samples/MauiEmbedding/MauiEmbedding.Windows/app.manifest new file mode 100644 index 0000000000..f91b021435 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.Windows/app.manifest @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + true/PM + PerMonitorV2, PerMonitor + + + diff --git a/samples/MauiEmbedding/MauiEmbedding.sln b/samples/MauiEmbedding/MauiEmbedding.sln new file mode 100644 index 0000000000..daf5cad880 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding.sln @@ -0,0 +1,916 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.2.32210.308 +MinimumVisualStudioVersion = 15.0.26124.0 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Source", "Source", "{D958D411-DCBD-4FBF-828F-FDD7059862EA}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Platforms", "Platforms", "{1C130CF4-EEF4-44D9-9DEF-C037FE1C221B}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MauiEmbedding", "MauiEmbedding\MauiEmbedding.csproj", "{9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MauiEmbedding.Mobile", "MauiEmbedding.Mobile\MauiEmbedding.Mobile.csproj", "{ECE58AAC-4F80-4C00-B700-232713088962}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MauiEmbedding.Windows", "MauiEmbedding.Windows\MauiEmbedding.Windows.csproj", "{DC95E667-9456-4F12-BE0C-2C7F601F7259}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{BADA71DC-7FFD-4EDC-9F28-FB74AEADC713}" + ProjectSection(SolutionItems) = preProject + MauiEmbedding.Base\base.props = MauiEmbedding.Base\base.props + Directory.Build.props = Directory.Build.props + Directory.Build.targets = Directory.Build.targets + Directory.Packages.props = Directory.Packages.props + global.json = global.json + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{9B9F35D5-E6DD-4FC7-9198-F8246D3CE366}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Uno.Extensions.Maui.WinUI", "..\..\src\Uno.Extensions.Maui.UI\Uno.Extensions.Maui.WinUI.csproj", "{E979B964-15B6-47A1-9ABC-7A2CAB2286E9}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Uno.Extensions.Hosting.WinUI", "..\..\src\Uno.Extensions.Hosting.UI\Uno.Extensions.Hosting.WinUI.csproj", "{73A0899C-7167-45A6-9A02-C258E731C63C}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Uno.Extensions.Storage.WinUI", "..\..\src\Uno.Extensions.Storage.UI\Uno.Extensions.Storage.WinUI.csproj", "{32584367-89CC-4AC8-A11B-11970D4ADC4D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Uno.Extensions.Configuration", "..\..\src\Uno.Extensions.Configuration\Uno.Extensions.Configuration.csproj", "{5983C05B-B8E4-4E52-A618-2F361162D29A}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Uno.Extensions.Hosting", "..\..\src\Uno.Extensions.Hosting\Uno.Extensions.Hosting.csproj", "{7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Uno.Extensions.Logging.WinUI", "..\..\src\Uno.Extensions.Logging\Uno.Extensions.Logging.WinUI.csproj", "{5A155E10-0360-41F9-8DEF-E4F94509B61A}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Uno.Extensions.Logging.Serilog", "..\..\src\Uno.Extensions.Logging.Serilog\Uno.Extensions.Logging.Serilog.csproj", "{F5906AA3-237C-4B44-8C74-D6417DD33850}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Uno.Extensions.Navigation", "..\..\src\Uno.Extensions.Navigation\Uno.Extensions.Navigation.csproj", "{AB41FC9C-859B-47F5-8FFC-741938F3C099}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Uno.Extensions.Navigation.Toolkit.WinUI", "..\..\src\Uno.Extensions.Navigation.Toolkit\Uno.Extensions.Navigation.Toolkit.WinUI.csproj", "{9AB773B0-3B62-42B2-9DB9-AD8297765374}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Uno.Extensions.Navigation.WinUI", "..\..\src\Uno.Extensions.Navigation.UI\Uno.Extensions.Navigation.WinUI.csproj", "{53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Uno.Extensions.Core", "..\..\src\Uno.Extensions.Core\Uno.Extensions.Core.csproj", "{7F48669D-C9E9-4C05-9DC0-94557E4642E2}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Uno.Extensions.Core.WinUI", "..\..\src\Uno.Extensions.Core.UI\Uno.Extensions.Core.WinUI.csproj", "{9C3744BE-A2E5-4106-B741-4A102932AF90}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Uno.Extensions.Localization", "..\..\src\Uno.Extensions.Localization\Uno.Extensions.Localization.csproj", "{87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Uno.Extensions.Localization.WinUI", "..\..\src\Uno.Extensions.Localization.UI\Uno.Extensions.Localization.WinUI.csproj", "{4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Uno.Extensions.Navigation.Generators", "..\..\src\Uno.Extensions.Navigation.Generators\Uno.Extensions.Navigation.Generators.csproj", "{9585696E-CAEF-4DC2-B612-7681C9B0FDDF}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Uno.Extensions.Core.Generators", "..\..\src\Uno.Extensions.Core.Generators\Uno.Extensions.Core.Generators.csproj", "{3E84B7A1-D829-46AE-9E95-55E691FA7328}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Uno.Extensions.Storage", "..\..\src\Uno.Extensions.Storage\Uno.Extensions.Storage.csproj", "{84B26485-ACDE-46A4-BA02-D50C51FA1C71}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Uno.Extensions.Serialization", "..\..\src\Uno.Extensions.Serialization\Uno.Extensions.Serialization.csproj", "{55DB6D52-3E70-465E-86C4-EDD45E84149D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Uno.Extensions.Logging.WinUI.Skia", "..\..\src\Uno.Extensions.Logging\Uno.Extensions.Logging.WinUI.Skia.csproj", "{521D1D95-8E04-4CE1-9941-31B8247CDFEF}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Uno.Extensions.Logging.WinUI.Wasm", "..\..\src\Uno.Extensions.Logging\Uno.Extensions.Logging.WinUI.Wasm.csproj", "{353174B7-F26F-455B-9B42-DC750037315D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Uno.Extensions.Hosting.WinUI.Skia", "..\..\src\Uno.Extensions.Hosting.UI\Uno.Extensions.Hosting.WinUI.Skia.csproj", "{32BD5829-65A9-406E-97D8-752556E23B2B}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Uno.Extensions.Hosting.WinUI.Wasm", "..\..\src\Uno.Extensions.Hosting.UI\Uno.Extensions.Hosting.WinUI.Wasm.csproj", "{8493BB1F-62E7-4E18-92A6-4DD5635DCA32}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Extensions Items", "Extensions Items", "{9F4A5914-3D10-4CDE-829C-BE53A9E441DB}" + ProjectSection(SolutionItems) = preProject + ..\..\src\Directory.Build.props = ..\..\src\Directory.Build.props + ..\..\src\Directory.Build.targets = ..\..\src\Directory.Build.targets + ..\..\src\Directory.Packages.props = ..\..\src\Directory.Packages.props + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "MauiProjects", "MauiProjects", "{24511BF4-9869-4773-AF84-CC8F79AF5085}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MauiControlsExternal", "MauiProjects\MauiControlsExternal\MauiControlsExternal.csproj", "{A158CC84-0219-4BE4-A3F2-7AB7F613855A}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MauiApp1", "MauiProjects\MauiApp1\MauiApp1.csproj", "{8577882E-DA52-4D27-A529-C70998034566}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|ARM = Debug|ARM + Debug|ARM64 = Debug|ARM64 + Debug|iPhone = Debug|iPhone + Debug|iPhoneSimulator = Debug|iPhoneSimulator + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|ARM = Release|ARM + Release|ARM64 = Release|ARM64 + Release|iPhone = Release|iPhone + Release|iPhoneSimulator = Release|iPhoneSimulator + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Debug|ARM.ActiveCfg = Debug|Any CPU + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Debug|ARM.Build.0 = Debug|Any CPU + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Debug|ARM64.Build.0 = Debug|Any CPU + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Debug|iPhone.Build.0 = Debug|Any CPU + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Debug|x64.ActiveCfg = Debug|Any CPU + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Debug|x64.Build.0 = Debug|Any CPU + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Debug|x86.ActiveCfg = Debug|Any CPU + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Debug|x86.Build.0 = Debug|Any CPU + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Release|Any CPU.Build.0 = Release|Any CPU + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Release|ARM.ActiveCfg = Release|Any CPU + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Release|ARM.Build.0 = Release|Any CPU + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Release|ARM64.ActiveCfg = Release|Any CPU + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Release|ARM64.Build.0 = Release|Any CPU + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Release|iPhone.ActiveCfg = Release|Any CPU + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Release|iPhone.Build.0 = Release|Any CPU + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Release|x64.ActiveCfg = Release|Any CPU + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Release|x64.Build.0 = Release|Any CPU + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Release|x86.ActiveCfg = Release|Any CPU + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5}.Release|x86.Build.0 = Release|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Debug|ARM.ActiveCfg = Debug|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Debug|ARM.Build.0 = Debug|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Debug|ARM.Deploy.0 = Debug|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Debug|ARM64.Build.0 = Debug|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Debug|ARM64.Deploy.0 = Debug|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Debug|iPhone.Build.0 = Debug|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Debug|iPhone.Deploy.0 = Debug|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Debug|x64.ActiveCfg = Debug|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Debug|x64.Build.0 = Debug|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Debug|x64.Deploy.0 = Debug|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Debug|x86.ActiveCfg = Debug|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Debug|x86.Build.0 = Debug|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Debug|x86.Deploy.0 = Debug|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Release|Any CPU.Build.0 = Release|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Release|Any CPU.Deploy.0 = Release|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Release|ARM.ActiveCfg = Release|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Release|ARM.Build.0 = Release|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Release|ARM.Deploy.0 = Release|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Release|ARM64.ActiveCfg = Release|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Release|ARM64.Build.0 = Release|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Release|ARM64.Deploy.0 = Release|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Release|iPhone.ActiveCfg = Release|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Release|iPhone.Build.0 = Release|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Release|iPhone.Deploy.0 = Release|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Release|x64.ActiveCfg = Release|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Release|x64.Build.0 = Release|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Release|x64.Deploy.0 = Release|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Release|x86.ActiveCfg = Release|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Release|x86.Build.0 = Release|Any CPU + {ECE58AAC-4F80-4C00-B700-232713088962}.Release|x86.Deploy.0 = Release|Any CPU + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Debug|Any CPU.ActiveCfg = Debug|x64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Debug|Any CPU.Build.0 = Debug|x64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Debug|Any CPU.Deploy.0 = Debug|x64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Debug|ARM.ActiveCfg = Debug|x64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Debug|ARM.Build.0 = Debug|x64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Debug|ARM.Deploy.0 = Debug|x64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Debug|ARM64.ActiveCfg = Debug|arm64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Debug|ARM64.Build.0 = Debug|arm64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Debug|ARM64.Deploy.0 = Debug|arm64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Debug|iPhone.ActiveCfg = Debug|x64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Debug|iPhone.Build.0 = Debug|x64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Debug|iPhone.Deploy.0 = Debug|x64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Debug|iPhoneSimulator.ActiveCfg = Debug|x64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Debug|iPhoneSimulator.Build.0 = Debug|x64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Debug|iPhoneSimulator.Deploy.0 = Debug|x64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Debug|x64.ActiveCfg = Debug|x64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Debug|x64.Build.0 = Debug|x64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Debug|x86.ActiveCfg = Debug|x86 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Debug|x86.Build.0 = Debug|x86 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Release|Any CPU.ActiveCfg = Release|x64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Release|Any CPU.Build.0 = Release|x64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Release|Any CPU.Deploy.0 = Release|x64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Release|ARM.ActiveCfg = Release|x64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Release|ARM.Build.0 = Release|x64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Release|ARM64.ActiveCfg = Release|arm64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Release|ARM64.Build.0 = Release|arm64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Release|iPhone.ActiveCfg = Release|x64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Release|iPhone.Build.0 = Release|x64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Release|iPhoneSimulator.ActiveCfg = Release|x64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Release|iPhoneSimulator.Build.0 = Release|x64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Release|x64.ActiveCfg = Release|x64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Release|x64.Build.0 = Release|x64 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Release|x86.ActiveCfg = Release|x86 + {DC95E667-9456-4F12-BE0C-2C7F601F7259}.Release|x86.Build.0 = Release|x86 + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Debug|ARM.ActiveCfg = Debug|Any CPU + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Debug|ARM.Build.0 = Debug|Any CPU + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Debug|ARM64.Build.0 = Debug|Any CPU + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Debug|iPhone.Build.0 = Debug|Any CPU + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Debug|x64.ActiveCfg = Debug|Any CPU + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Debug|x64.Build.0 = Debug|Any CPU + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Debug|x86.ActiveCfg = Debug|Any CPU + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Debug|x86.Build.0 = Debug|Any CPU + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Release|Any CPU.Build.0 = Release|Any CPU + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Release|ARM.ActiveCfg = Release|Any CPU + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Release|ARM.Build.0 = Release|Any CPU + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Release|ARM64.ActiveCfg = Release|Any CPU + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Release|ARM64.Build.0 = Release|Any CPU + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Release|iPhone.ActiveCfg = Release|Any CPU + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Release|iPhone.Build.0 = Release|Any CPU + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Release|x64.ActiveCfg = Release|Any CPU + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Release|x64.Build.0 = Release|Any CPU + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Release|x86.ActiveCfg = Release|Any CPU + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9}.Release|x86.Build.0 = Release|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Debug|ARM.ActiveCfg = Debug|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Debug|ARM.Build.0 = Debug|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Debug|ARM64.Build.0 = Debug|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Debug|iPhone.Build.0 = Debug|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Debug|x64.ActiveCfg = Debug|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Debug|x64.Build.0 = Debug|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Debug|x86.ActiveCfg = Debug|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Debug|x86.Build.0 = Debug|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Release|Any CPU.Build.0 = Release|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Release|ARM.ActiveCfg = Release|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Release|ARM.Build.0 = Release|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Release|ARM64.ActiveCfg = Release|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Release|ARM64.Build.0 = Release|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Release|iPhone.ActiveCfg = Release|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Release|iPhone.Build.0 = Release|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Release|x64.ActiveCfg = Release|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Release|x64.Build.0 = Release|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Release|x86.ActiveCfg = Release|Any CPU + {73A0899C-7167-45A6-9A02-C258E731C63C}.Release|x86.Build.0 = Release|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Debug|ARM.ActiveCfg = Debug|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Debug|ARM.Build.0 = Debug|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Debug|ARM64.Build.0 = Debug|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Debug|iPhone.Build.0 = Debug|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Debug|x64.ActiveCfg = Debug|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Debug|x64.Build.0 = Debug|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Debug|x86.ActiveCfg = Debug|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Debug|x86.Build.0 = Debug|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Release|Any CPU.Build.0 = Release|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Release|ARM.ActiveCfg = Release|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Release|ARM.Build.0 = Release|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Release|ARM64.ActiveCfg = Release|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Release|ARM64.Build.0 = Release|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Release|iPhone.ActiveCfg = Release|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Release|iPhone.Build.0 = Release|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Release|x64.ActiveCfg = Release|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Release|x64.Build.0 = Release|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Release|x86.ActiveCfg = Release|Any CPU + {32584367-89CC-4AC8-A11B-11970D4ADC4D}.Release|x86.Build.0 = Release|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Debug|ARM.ActiveCfg = Debug|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Debug|ARM.Build.0 = Debug|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Debug|ARM64.Build.0 = Debug|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Debug|iPhone.Build.0 = Debug|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Debug|x64.ActiveCfg = Debug|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Debug|x64.Build.0 = Debug|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Debug|x86.ActiveCfg = Debug|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Debug|x86.Build.0 = Debug|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Release|Any CPU.Build.0 = Release|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Release|ARM.ActiveCfg = Release|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Release|ARM.Build.0 = Release|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Release|ARM64.ActiveCfg = Release|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Release|ARM64.Build.0 = Release|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Release|iPhone.ActiveCfg = Release|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Release|iPhone.Build.0 = Release|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Release|x64.ActiveCfg = Release|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Release|x64.Build.0 = Release|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Release|x86.ActiveCfg = Release|Any CPU + {5983C05B-B8E4-4E52-A618-2F361162D29A}.Release|x86.Build.0 = Release|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Debug|ARM.ActiveCfg = Debug|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Debug|ARM.Build.0 = Debug|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Debug|ARM64.Build.0 = Debug|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Debug|iPhone.Build.0 = Debug|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Debug|x64.ActiveCfg = Debug|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Debug|x64.Build.0 = Debug|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Debug|x86.ActiveCfg = Debug|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Debug|x86.Build.0 = Debug|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Release|Any CPU.Build.0 = Release|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Release|ARM.ActiveCfg = Release|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Release|ARM.Build.0 = Release|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Release|ARM64.ActiveCfg = Release|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Release|ARM64.Build.0 = Release|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Release|iPhone.ActiveCfg = Release|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Release|iPhone.Build.0 = Release|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Release|x64.ActiveCfg = Release|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Release|x64.Build.0 = Release|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Release|x86.ActiveCfg = Release|Any CPU + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D}.Release|x86.Build.0 = Release|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Debug|ARM.ActiveCfg = Debug|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Debug|ARM.Build.0 = Debug|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Debug|ARM64.Build.0 = Debug|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Debug|iPhone.Build.0 = Debug|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Debug|x64.ActiveCfg = Debug|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Debug|x64.Build.0 = Debug|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Debug|x86.ActiveCfg = Debug|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Debug|x86.Build.0 = Debug|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Release|Any CPU.Build.0 = Release|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Release|ARM.ActiveCfg = Release|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Release|ARM.Build.0 = Release|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Release|ARM64.ActiveCfg = Release|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Release|ARM64.Build.0 = Release|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Release|iPhone.ActiveCfg = Release|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Release|iPhone.Build.0 = Release|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Release|x64.ActiveCfg = Release|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Release|x64.Build.0 = Release|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Release|x86.ActiveCfg = Release|Any CPU + {5A155E10-0360-41F9-8DEF-E4F94509B61A}.Release|x86.Build.0 = Release|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Debug|ARM.ActiveCfg = Debug|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Debug|ARM.Build.0 = Debug|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Debug|ARM64.Build.0 = Debug|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Debug|iPhone.Build.0 = Debug|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Debug|x64.ActiveCfg = Debug|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Debug|x64.Build.0 = Debug|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Debug|x86.ActiveCfg = Debug|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Debug|x86.Build.0 = Debug|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Release|Any CPU.Build.0 = Release|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Release|ARM.ActiveCfg = Release|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Release|ARM.Build.0 = Release|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Release|ARM64.ActiveCfg = Release|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Release|ARM64.Build.0 = Release|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Release|iPhone.ActiveCfg = Release|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Release|iPhone.Build.0 = Release|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Release|x64.ActiveCfg = Release|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Release|x64.Build.0 = Release|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Release|x86.ActiveCfg = Release|Any CPU + {F5906AA3-237C-4B44-8C74-D6417DD33850}.Release|x86.Build.0 = Release|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Debug|ARM.ActiveCfg = Debug|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Debug|ARM.Build.0 = Debug|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Debug|ARM64.Build.0 = Debug|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Debug|iPhone.Build.0 = Debug|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Debug|x64.ActiveCfg = Debug|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Debug|x64.Build.0 = Debug|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Debug|x86.ActiveCfg = Debug|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Debug|x86.Build.0 = Debug|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Release|Any CPU.Build.0 = Release|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Release|ARM.ActiveCfg = Release|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Release|ARM.Build.0 = Release|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Release|ARM64.ActiveCfg = Release|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Release|ARM64.Build.0 = Release|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Release|iPhone.ActiveCfg = Release|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Release|iPhone.Build.0 = Release|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Release|x64.ActiveCfg = Release|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Release|x64.Build.0 = Release|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Release|x86.ActiveCfg = Release|Any CPU + {AB41FC9C-859B-47F5-8FFC-741938F3C099}.Release|x86.Build.0 = Release|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Debug|ARM.ActiveCfg = Debug|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Debug|ARM.Build.0 = Debug|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Debug|ARM64.Build.0 = Debug|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Debug|iPhone.Build.0 = Debug|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Debug|x64.ActiveCfg = Debug|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Debug|x64.Build.0 = Debug|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Debug|x86.ActiveCfg = Debug|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Debug|x86.Build.0 = Debug|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Release|Any CPU.Build.0 = Release|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Release|ARM.ActiveCfg = Release|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Release|ARM.Build.0 = Release|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Release|ARM64.ActiveCfg = Release|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Release|ARM64.Build.0 = Release|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Release|iPhone.ActiveCfg = Release|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Release|iPhone.Build.0 = Release|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Release|x64.ActiveCfg = Release|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Release|x64.Build.0 = Release|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Release|x86.ActiveCfg = Release|Any CPU + {9AB773B0-3B62-42B2-9DB9-AD8297765374}.Release|x86.Build.0 = Release|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Debug|ARM.ActiveCfg = Debug|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Debug|ARM.Build.0 = Debug|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Debug|ARM64.Build.0 = Debug|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Debug|iPhone.Build.0 = Debug|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Debug|x64.ActiveCfg = Debug|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Debug|x64.Build.0 = Debug|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Debug|x86.ActiveCfg = Debug|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Debug|x86.Build.0 = Debug|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Release|Any CPU.Build.0 = Release|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Release|ARM.ActiveCfg = Release|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Release|ARM.Build.0 = Release|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Release|ARM64.ActiveCfg = Release|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Release|ARM64.Build.0 = Release|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Release|iPhone.ActiveCfg = Release|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Release|iPhone.Build.0 = Release|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Release|x64.ActiveCfg = Release|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Release|x64.Build.0 = Release|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Release|x86.ActiveCfg = Release|Any CPU + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E}.Release|x86.Build.0 = Release|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Debug|ARM.ActiveCfg = Debug|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Debug|ARM.Build.0 = Debug|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Debug|ARM64.Build.0 = Debug|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Debug|iPhone.Build.0 = Debug|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Debug|x64.ActiveCfg = Debug|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Debug|x64.Build.0 = Debug|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Debug|x86.ActiveCfg = Debug|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Debug|x86.Build.0 = Debug|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Release|Any CPU.Build.0 = Release|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Release|ARM.ActiveCfg = Release|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Release|ARM.Build.0 = Release|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Release|ARM64.ActiveCfg = Release|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Release|ARM64.Build.0 = Release|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Release|iPhone.ActiveCfg = Release|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Release|iPhone.Build.0 = Release|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Release|x64.ActiveCfg = Release|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Release|x64.Build.0 = Release|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Release|x86.ActiveCfg = Release|Any CPU + {7F48669D-C9E9-4C05-9DC0-94557E4642E2}.Release|x86.Build.0 = Release|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Debug|ARM.ActiveCfg = Debug|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Debug|ARM.Build.0 = Debug|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Debug|ARM64.Build.0 = Debug|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Debug|iPhone.Build.0 = Debug|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Debug|x64.ActiveCfg = Debug|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Debug|x64.Build.0 = Debug|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Debug|x86.ActiveCfg = Debug|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Debug|x86.Build.0 = Debug|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Release|Any CPU.Build.0 = Release|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Release|ARM.ActiveCfg = Release|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Release|ARM.Build.0 = Release|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Release|ARM64.ActiveCfg = Release|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Release|ARM64.Build.0 = Release|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Release|iPhone.ActiveCfg = Release|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Release|iPhone.Build.0 = Release|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Release|x64.ActiveCfg = Release|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Release|x64.Build.0 = Release|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Release|x86.ActiveCfg = Release|Any CPU + {9C3744BE-A2E5-4106-B741-4A102932AF90}.Release|x86.Build.0 = Release|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Debug|ARM.ActiveCfg = Debug|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Debug|ARM.Build.0 = Debug|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Debug|ARM64.Build.0 = Debug|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Debug|iPhone.Build.0 = Debug|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Debug|x64.ActiveCfg = Debug|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Debug|x64.Build.0 = Debug|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Debug|x86.ActiveCfg = Debug|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Debug|x86.Build.0 = Debug|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Release|Any CPU.Build.0 = Release|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Release|ARM.ActiveCfg = Release|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Release|ARM.Build.0 = Release|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Release|ARM64.ActiveCfg = Release|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Release|ARM64.Build.0 = Release|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Release|iPhone.ActiveCfg = Release|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Release|iPhone.Build.0 = Release|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Release|x64.ActiveCfg = Release|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Release|x64.Build.0 = Release|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Release|x86.ActiveCfg = Release|Any CPU + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D}.Release|x86.Build.0 = Release|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Debug|ARM.ActiveCfg = Debug|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Debug|ARM.Build.0 = Debug|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Debug|ARM64.Build.0 = Debug|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Debug|iPhone.Build.0 = Debug|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Debug|x64.ActiveCfg = Debug|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Debug|x64.Build.0 = Debug|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Debug|x86.ActiveCfg = Debug|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Debug|x86.Build.0 = Debug|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Release|Any CPU.Build.0 = Release|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Release|ARM.ActiveCfg = Release|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Release|ARM.Build.0 = Release|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Release|ARM64.ActiveCfg = Release|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Release|ARM64.Build.0 = Release|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Release|iPhone.ActiveCfg = Release|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Release|iPhone.Build.0 = Release|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Release|x64.ActiveCfg = Release|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Release|x64.Build.0 = Release|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Release|x86.ActiveCfg = Release|Any CPU + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD}.Release|x86.Build.0 = Release|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Debug|ARM.ActiveCfg = Debug|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Debug|ARM.Build.0 = Debug|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Debug|ARM64.Build.0 = Debug|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Debug|iPhone.Build.0 = Debug|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Debug|x64.ActiveCfg = Debug|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Debug|x64.Build.0 = Debug|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Debug|x86.ActiveCfg = Debug|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Debug|x86.Build.0 = Debug|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Release|Any CPU.Build.0 = Release|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Release|ARM.ActiveCfg = Release|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Release|ARM.Build.0 = Release|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Release|ARM64.ActiveCfg = Release|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Release|ARM64.Build.0 = Release|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Release|iPhone.ActiveCfg = Release|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Release|iPhone.Build.0 = Release|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Release|x64.ActiveCfg = Release|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Release|x64.Build.0 = Release|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Release|x86.ActiveCfg = Release|Any CPU + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF}.Release|x86.Build.0 = Release|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Debug|ARM.ActiveCfg = Debug|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Debug|ARM.Build.0 = Debug|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Debug|ARM64.Build.0 = Debug|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Debug|iPhone.Build.0 = Debug|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Debug|x64.ActiveCfg = Debug|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Debug|x64.Build.0 = Debug|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Debug|x86.ActiveCfg = Debug|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Debug|x86.Build.0 = Debug|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Release|Any CPU.Build.0 = Release|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Release|ARM.ActiveCfg = Release|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Release|ARM.Build.0 = Release|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Release|ARM64.ActiveCfg = Release|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Release|ARM64.Build.0 = Release|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Release|iPhone.ActiveCfg = Release|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Release|iPhone.Build.0 = Release|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Release|x64.ActiveCfg = Release|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Release|x64.Build.0 = Release|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Release|x86.ActiveCfg = Release|Any CPU + {3E84B7A1-D829-46AE-9E95-55E691FA7328}.Release|x86.Build.0 = Release|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Debug|Any CPU.Build.0 = Debug|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Debug|ARM.ActiveCfg = Debug|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Debug|ARM.Build.0 = Debug|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Debug|ARM64.Build.0 = Debug|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Debug|iPhone.Build.0 = Debug|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Debug|x64.ActiveCfg = Debug|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Debug|x64.Build.0 = Debug|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Debug|x86.ActiveCfg = Debug|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Debug|x86.Build.0 = Debug|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Release|Any CPU.ActiveCfg = Release|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Release|Any CPU.Build.0 = Release|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Release|ARM.ActiveCfg = Release|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Release|ARM.Build.0 = Release|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Release|ARM64.ActiveCfg = Release|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Release|ARM64.Build.0 = Release|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Release|iPhone.ActiveCfg = Release|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Release|iPhone.Build.0 = Release|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Release|x64.ActiveCfg = Release|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Release|x64.Build.0 = Release|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Release|x86.ActiveCfg = Release|Any CPU + {84B26485-ACDE-46A4-BA02-D50C51FA1C71}.Release|x86.Build.0 = Release|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Debug|ARM.ActiveCfg = Debug|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Debug|ARM.Build.0 = Debug|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Debug|ARM64.Build.0 = Debug|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Debug|iPhone.Build.0 = Debug|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Debug|x64.ActiveCfg = Debug|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Debug|x64.Build.0 = Debug|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Debug|x86.ActiveCfg = Debug|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Debug|x86.Build.0 = Debug|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Release|Any CPU.Build.0 = Release|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Release|ARM.ActiveCfg = Release|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Release|ARM.Build.0 = Release|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Release|ARM64.ActiveCfg = Release|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Release|ARM64.Build.0 = Release|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Release|iPhone.ActiveCfg = Release|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Release|iPhone.Build.0 = Release|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Release|x64.ActiveCfg = Release|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Release|x64.Build.0 = Release|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Release|x86.ActiveCfg = Release|Any CPU + {55DB6D52-3E70-465E-86C4-EDD45E84149D}.Release|x86.Build.0 = Release|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Debug|ARM.ActiveCfg = Debug|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Debug|ARM.Build.0 = Debug|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Debug|ARM64.Build.0 = Debug|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Debug|iPhone.Build.0 = Debug|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Debug|x64.ActiveCfg = Debug|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Debug|x64.Build.0 = Debug|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Debug|x86.ActiveCfg = Debug|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Debug|x86.Build.0 = Debug|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Release|Any CPU.Build.0 = Release|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Release|ARM.ActiveCfg = Release|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Release|ARM.Build.0 = Release|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Release|ARM64.ActiveCfg = Release|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Release|ARM64.Build.0 = Release|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Release|iPhone.ActiveCfg = Release|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Release|iPhone.Build.0 = Release|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Release|x64.ActiveCfg = Release|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Release|x64.Build.0 = Release|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Release|x86.ActiveCfg = Release|Any CPU + {521D1D95-8E04-4CE1-9941-31B8247CDFEF}.Release|x86.Build.0 = Release|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Debug|ARM.ActiveCfg = Debug|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Debug|ARM.Build.0 = Debug|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Debug|ARM64.Build.0 = Debug|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Debug|iPhone.Build.0 = Debug|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Debug|x64.ActiveCfg = Debug|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Debug|x64.Build.0 = Debug|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Debug|x86.ActiveCfg = Debug|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Debug|x86.Build.0 = Debug|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Release|Any CPU.Build.0 = Release|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Release|ARM.ActiveCfg = Release|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Release|ARM.Build.0 = Release|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Release|ARM64.ActiveCfg = Release|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Release|ARM64.Build.0 = Release|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Release|iPhone.ActiveCfg = Release|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Release|iPhone.Build.0 = Release|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Release|x64.ActiveCfg = Release|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Release|x64.Build.0 = Release|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Release|x86.ActiveCfg = Release|Any CPU + {353174B7-F26F-455B-9B42-DC750037315D}.Release|x86.Build.0 = Release|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Debug|ARM.ActiveCfg = Debug|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Debug|ARM.Build.0 = Debug|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Debug|ARM64.Build.0 = Debug|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Debug|iPhone.Build.0 = Debug|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Debug|x64.ActiveCfg = Debug|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Debug|x64.Build.0 = Debug|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Debug|x86.ActiveCfg = Debug|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Debug|x86.Build.0 = Debug|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Release|Any CPU.Build.0 = Release|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Release|ARM.ActiveCfg = Release|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Release|ARM.Build.0 = Release|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Release|ARM64.ActiveCfg = Release|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Release|ARM64.Build.0 = Release|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Release|iPhone.ActiveCfg = Release|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Release|iPhone.Build.0 = Release|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Release|x64.ActiveCfg = Release|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Release|x64.Build.0 = Release|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Release|x86.ActiveCfg = Release|Any CPU + {32BD5829-65A9-406E-97D8-752556E23B2B}.Release|x86.Build.0 = Release|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Debug|ARM.ActiveCfg = Debug|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Debug|ARM.Build.0 = Debug|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Debug|ARM64.Build.0 = Debug|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Debug|iPhone.Build.0 = Debug|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Debug|x64.ActiveCfg = Debug|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Debug|x64.Build.0 = Debug|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Debug|x86.ActiveCfg = Debug|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Debug|x86.Build.0 = Debug|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Release|Any CPU.Build.0 = Release|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Release|ARM.ActiveCfg = Release|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Release|ARM.Build.0 = Release|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Release|ARM64.ActiveCfg = Release|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Release|ARM64.Build.0 = Release|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Release|iPhone.ActiveCfg = Release|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Release|iPhone.Build.0 = Release|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Release|x64.ActiveCfg = Release|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Release|x64.Build.0 = Release|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Release|x86.ActiveCfg = Release|Any CPU + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32}.Release|x86.Build.0 = Release|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Debug|ARM.ActiveCfg = Debug|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Debug|ARM.Build.0 = Debug|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Debug|ARM64.Build.0 = Debug|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Debug|iPhone.Build.0 = Debug|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Debug|x64.ActiveCfg = Debug|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Debug|x64.Build.0 = Debug|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Debug|x86.ActiveCfg = Debug|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Debug|x86.Build.0 = Debug|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Release|Any CPU.Build.0 = Release|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Release|ARM.ActiveCfg = Release|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Release|ARM.Build.0 = Release|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Release|ARM64.ActiveCfg = Release|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Release|ARM64.Build.0 = Release|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Release|iPhone.ActiveCfg = Release|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Release|iPhone.Build.0 = Release|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Release|x64.ActiveCfg = Release|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Release|x64.Build.0 = Release|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Release|x86.ActiveCfg = Release|Any CPU + {A158CC84-0219-4BE4-A3F2-7AB7F613855A}.Release|x86.Build.0 = Release|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Debug|ARM.ActiveCfg = Debug|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Debug|ARM.Build.0 = Debug|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Debug|ARM64.Build.0 = Debug|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Debug|iPhone.Build.0 = Debug|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Debug|x64.ActiveCfg = Debug|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Debug|x64.Build.0 = Debug|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Debug|x86.ActiveCfg = Debug|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Debug|x86.Build.0 = Debug|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Release|Any CPU.Build.0 = Release|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Release|ARM.ActiveCfg = Release|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Release|ARM.Build.0 = Release|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Release|ARM64.ActiveCfg = Release|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Release|ARM64.Build.0 = Release|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Release|iPhone.ActiveCfg = Release|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Release|iPhone.Build.0 = Release|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Release|x64.ActiveCfg = Release|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Release|x64.Build.0 = Release|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Release|x86.ActiveCfg = Release|Any CPU + {8577882E-DA52-4D27-A529-C70998034566}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {1C130CF4-EEF4-44D9-9DEF-C037FE1C221B} = {D958D411-DCBD-4FBF-828F-FDD7059862EA} + {9A77D6D1-608D-4409-A0D9-FDD8AEF3BCC5} = {D958D411-DCBD-4FBF-828F-FDD7059862EA} + {ECE58AAC-4F80-4C00-B700-232713088962} = {1C130CF4-EEF4-44D9-9DEF-C037FE1C221B} + {DC95E667-9456-4F12-BE0C-2C7F601F7259} = {1C130CF4-EEF4-44D9-9DEF-C037FE1C221B} + {E979B964-15B6-47A1-9ABC-7A2CAB2286E9} = {9B9F35D5-E6DD-4FC7-9198-F8246D3CE366} + {73A0899C-7167-45A6-9A02-C258E731C63C} = {9B9F35D5-E6DD-4FC7-9198-F8246D3CE366} + {32584367-89CC-4AC8-A11B-11970D4ADC4D} = {9B9F35D5-E6DD-4FC7-9198-F8246D3CE366} + {5983C05B-B8E4-4E52-A618-2F361162D29A} = {9B9F35D5-E6DD-4FC7-9198-F8246D3CE366} + {7C62EA57-BBDF-4ED2-85DD-A6F5D9BA9E9D} = {9B9F35D5-E6DD-4FC7-9198-F8246D3CE366} + {5A155E10-0360-41F9-8DEF-E4F94509B61A} = {9B9F35D5-E6DD-4FC7-9198-F8246D3CE366} + {F5906AA3-237C-4B44-8C74-D6417DD33850} = {9B9F35D5-E6DD-4FC7-9198-F8246D3CE366} + {AB41FC9C-859B-47F5-8FFC-741938F3C099} = {9B9F35D5-E6DD-4FC7-9198-F8246D3CE366} + {9AB773B0-3B62-42B2-9DB9-AD8297765374} = {9B9F35D5-E6DD-4FC7-9198-F8246D3CE366} + {53C1726A-8DD8-44C8-8A0B-FD21FFC03A6E} = {9B9F35D5-E6DD-4FC7-9198-F8246D3CE366} + {7F48669D-C9E9-4C05-9DC0-94557E4642E2} = {9B9F35D5-E6DD-4FC7-9198-F8246D3CE366} + {9C3744BE-A2E5-4106-B741-4A102932AF90} = {9B9F35D5-E6DD-4FC7-9198-F8246D3CE366} + {87FD59DC-30CC-4E9D-AF91-6420BF3E8E8D} = {9B9F35D5-E6DD-4FC7-9198-F8246D3CE366} + {4054EC53-5C82-4D2A-8FE8-A8BBFA9AA4AD} = {9B9F35D5-E6DD-4FC7-9198-F8246D3CE366} + {9585696E-CAEF-4DC2-B612-7681C9B0FDDF} = {9B9F35D5-E6DD-4FC7-9198-F8246D3CE366} + {3E84B7A1-D829-46AE-9E95-55E691FA7328} = {9B9F35D5-E6DD-4FC7-9198-F8246D3CE366} + {84B26485-ACDE-46A4-BA02-D50C51FA1C71} = {9B9F35D5-E6DD-4FC7-9198-F8246D3CE366} + {55DB6D52-3E70-465E-86C4-EDD45E84149D} = {9B9F35D5-E6DD-4FC7-9198-F8246D3CE366} + {521D1D95-8E04-4CE1-9941-31B8247CDFEF} = {9B9F35D5-E6DD-4FC7-9198-F8246D3CE366} + {353174B7-F26F-455B-9B42-DC750037315D} = {9B9F35D5-E6DD-4FC7-9198-F8246D3CE366} + {32BD5829-65A9-406E-97D8-752556E23B2B} = {9B9F35D5-E6DD-4FC7-9198-F8246D3CE366} + {8493BB1F-62E7-4E18-92A6-4DD5635DCA32} = {9B9F35D5-E6DD-4FC7-9198-F8246D3CE366} + {9F4A5914-3D10-4CDE-829C-BE53A9E441DB} = {9B9F35D5-E6DD-4FC7-9198-F8246D3CE366} + {A158CC84-0219-4BE4-A3F2-7AB7F613855A} = {24511BF4-9869-4773-AF84-CC8F79AF5085} + {8577882E-DA52-4D27-A529-C70998034566} = {24511BF4-9869-4773-AF84-CC8F79AF5085} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {584E156C-C094-4968-8A1F-3FB06081E34D} + EndGlobalSection +EndGlobal diff --git a/samples/MauiEmbedding/MauiEmbedding/App.cs b/samples/MauiEmbedding/MauiEmbedding/App.cs new file mode 100644 index 0000000000..4f89478676 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding/App.cs @@ -0,0 +1,132 @@ +using CommunityToolkit.Maui; +using Microsoft.Maui; +//using Telerik.Maui.Controls; +//using Telerik.Maui.Controls.Compatibility; +using MControls = Microsoft.Maui.Controls; +using MauiControlsExternal; +using Esri.ArcGISRuntime.Maui; + +namespace MauiEmbedding; + +public class App : Application +{ + protected Window? MainWindow { get; private set; } + protected IHost? Host { get; private set; } + + public App() + { + UnoMusicApp.Helpers.ThreadHelpers.Init(SynchronizationContext.Current!); + } + + protected async override void OnLaunched(LaunchActivatedEventArgs args) + { + var builder = this.CreateBuilder(args) + .UseMauiEmbedding(maui => + { + + maui + .UseMauiCommunityToolkit() + .UseArcGISRuntime() + //.UseTelerik() + //.UseTelerikControls() + .UseCustomLibrary(); + + Microsoft.Maui.Handlers.ShapeViewHandler.Mapper.AppendToMapping("BackgroundColor", (h, v) => + { + if (v is MControls.BoxView boxview) + { + boxview.Background = MControls.Brush.Fuchsia; + Microsoft.Maui.Handlers.ShapeViewHandler.MapBackground(h, boxview); + } + }); + }) + // Add navigation support for toolkit controls such as TabBar and NavigationView + .UseToolkitNavigation() + .Configure(host => host +#if DEBUG + // Switch to Development environment when running in DEBUG + .UseEnvironment(Environments.Development) +#endif + .UseLogging(configure: (context, logBuilder) => + { + // Configure log levels for different categories of logging + logBuilder + .SetMinimumLevel( + context.HostingEnvironment.IsDevelopment() ? + LogLevel.Information : + LogLevel.Warning) + + // Default filters for core Uno Platform namespaces + .CoreLogLevel(LogLevel.Warning); + + // Uno Platform namespace filter groups + // Uncomment individual methods to see more detailed logging + //// Generic Xaml events + //logBuilder.XamlLogLevel(LogLevel.Debug); + //// Layouter specific messages + //logBuilder.XamlLayoutLogLevel(LogLevel.Debug); + //// Storage messages + //logBuilder.StorageLogLevel(LogLevel.Debug); + //// Binding related messages + //logBuilder.XamlBindingLogLevel(LogLevel.Debug); + //// Binder memory references tracking + //logBuilder.BinderMemoryReferenceLogLevel(LogLevel.Debug); + //// RemoteControl and HotReload related + //logBuilder.HotReloadCoreLogLevel(LogLevel.Information); + //// Debug JS interop + //logBuilder.WebAssemblyLogLevel(LogLevel.Debug); + + }, enableUnoLogging: true) + .UseSerilog(consoleLoggingEnabled: true, fileLoggingEnabled: true) + .UseConfiguration(configure: configBuilder => + configBuilder + .EmbeddedSource() + .Section() + ) + // Enable localization (see appsettings.json for supported languages) + .UseLocalization() + .ConfigureServices((context, services) => + { + // TODO: Register your services + //services.AddSingleton(); + }) + .UseNavigation(RegisterRoutes) + ); + MainWindow = builder.Window; + + Host = await builder.NavigateAsync(); + + //MainWindow.Content = new MainPage(); + } + + private static void RegisterRoutes(IViewRegistry views, IRouteRegistry routes) + { + views.Register( + new ViewMap(ViewModel: typeof(ShellViewModel)), + new ViewMap(), + new ViewMap(), + new ViewMap(), + //new ViewMap(), + new ViewMap(), + new ViewMap(), + new ViewMap(), + new ViewMap() + ); + + routes.Register( + new RouteMap("", View: views.FindByViewModel(), + Nested: new RouteMap[] + { + new RouteMap("Main", View: views.FindByViewModel()), + new RouteMap(nameof(MauiControlsViewModel), View: views.FindByViewModel()), + new RouteMap(nameof(MCTControlsViewModel), View: views.FindByViewModel()), + new RouteMap(nameof(MauiEssentialsViewModel), View: views.FindByViewModel()), + new RouteMap(nameof(MauiColorsViewModel), View: views.FindByViewModel()), + new RouteMap(nameof(EsriMapsViewModel), View: views.FindByViewModel()), + new RouteMap(nameof(ExternalLibPage), View: views.FindByViewModel()), + //new RouteMap(nameof(TelerikControlsViewModel), View: views.FindByViewModel()), + } + ) + ); + } +} diff --git a/samples/MauiEmbedding/MauiEmbedding/AppResources.xaml b/samples/MauiEmbedding/MauiEmbedding/AppResources.xaml new file mode 100644 index 0000000000..d063d90612 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding/AppResources.xaml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/samples/MauiEmbedding/MauiEmbedding/Assets/Icons/back.svg b/samples/MauiEmbedding/MauiEmbedding/Assets/Icons/back.svg new file mode 100644 index 0000000000..bcd7851b9c --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding/Assets/Icons/back.svg @@ -0,0 +1,3 @@ + + + diff --git a/samples/MauiEmbedding/MauiEmbedding/Assets/SharedAssets.md b/samples/MauiEmbedding/MauiEmbedding/Assets/SharedAssets.md new file mode 100644 index 0000000000..6d84997f12 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding/Assets/SharedAssets.md @@ -0,0 +1,34 @@ +See documentation about assets here : https://github.com/unoplatform/uno/blob/master/doc/articles/features/working-with-assets.md + +# Here is a cheat sheet: + +1. Add the image file to the `Assets` directory of a shared project. +2. Set the build action to `Content`. +3. (Recommended) Provide an asset for various scales/dpi + +## Examples + +``` +\Assets\Images\logo.scale-100.png +\Assets\Images\logo.scale-200.png +\Assets\Images\logo.scale-400.png + +\Assets\Images\scale-100\logo.png +\Assets\Images\scale-200\logo.png +\Assets\Images\scale-400\logo.png +``` + +## Table of scales + +| Scale | UWP | iOS | Android | +|-------|:-----------:|:--------:|:-------:| +| `100` | scale-100 | @1x | mdpi | +| `125` | scale-125 | N/A | N/A | +| `150` | scale-150 | N/A | hdpi | +| `200` | scale-200 | @2x | xhdpi | +| `300` | scale-300 | @3x | xxhdpi | +| `400` | scale-400 | N/A | xxxhdpi | + + + + diff --git a/samples/MauiEmbedding/MauiEmbedding/Business/Models/AppConfig.cs b/samples/MauiEmbedding/MauiEmbedding/Business/Models/AppConfig.cs new file mode 100644 index 0000000000..0140825680 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding/Business/Models/AppConfig.cs @@ -0,0 +1,6 @@ +namespace MauiEmbedding.Business.Models; + +public record AppConfig +{ + public string? Environment { get; init; } +} diff --git a/samples/MauiEmbedding/MauiEmbedding/Business/Models/Entity.cs b/samples/MauiEmbedding/MauiEmbedding/Business/Models/Entity.cs new file mode 100644 index 0000000000..4a5db16300 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding/Business/Models/Entity.cs @@ -0,0 +1,3 @@ +namespace MauiEmbedding.Business.Models; + +public record Entity(string Name); diff --git a/samples/MauiEmbedding/MauiEmbedding/GlobalUsings.cs b/samples/MauiEmbedding/MauiEmbedding/GlobalUsings.cs new file mode 100644 index 0000000000..a02c9e4e6c --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding/GlobalUsings.cs @@ -0,0 +1,21 @@ +global using System.Collections.Immutable; +global using System.Windows.Input; +global using Microsoft.Extensions.DependencyInjection; +global using Windows.Networking.Connectivity; +global using Windows.Storage; +global using Microsoft.Extensions.Hosting; +global using Microsoft.Extensions.Localization; +global using Microsoft.Extensions.Logging; +global using Microsoft.UI.Xaml; +global using Microsoft.UI.Xaml.Controls; +global using Microsoft.UI.Xaml.Media; +global using Microsoft.UI.Xaml.Navigation; +global using Microsoft.Extensions.Options; +global using MauiEmbedding.Business.Models; +global using MauiEmbedding.Presentation; +global using Uno.Extensions; +global using Uno.Extensions.Logging; +global using Windows.ApplicationModel; +global using ApplicationExecutionState = Windows.ApplicationModel.Activation.ApplicationExecutionState; +global using CommunityToolkit.Mvvm.ComponentModel; +global using CommunityToolkit.Mvvm.Input; diff --git a/samples/MauiEmbedding/MauiEmbedding/MauiEmbedding.csproj b/samples/MauiEmbedding/MauiEmbedding/MauiEmbedding.csproj new file mode 100644 index 0000000000..be5ace9d76 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding/MauiEmbedding.csproj @@ -0,0 +1,93 @@ + + + + + + $(TargetFrameworks);net7.0-windows10.0.19041 + $(TargetFrameworks);net7.0-ios;net7.0-android;net7.0-maccatalyst + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %(Filename) + + + + + + + + + + + + + + + + + + + + + + + + + + + false + Analyzer + + + + + + + + + + + + + diff --git a/samples/MauiEmbedding/MauiEmbedding/Presentation/EsriMapsPage.xaml b/samples/MauiEmbedding/MauiEmbedding/Presentation/EsriMapsPage.xaml new file mode 100644 index 0000000000..b363c6c518 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding/Presentation/EsriMapsPage.xaml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + diff --git a/samples/MauiEmbedding/MauiEmbedding/Presentation/EsriMapsPage.xaml.cs b/samples/MauiEmbedding/MauiEmbedding/Presentation/EsriMapsPage.xaml.cs new file mode 100644 index 0000000000..e6d78ea05a --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding/Presentation/EsriMapsPage.xaml.cs @@ -0,0 +1,63 @@ +using Esri.ArcGISRuntime.Mapping; +using Esri.ArcGISRuntime.Mapping.Floor; +using Esri.ArcGISRuntime.Maui; +using Microsoft.Maui; + +namespace MauiEmbedding.Presentation +{ + partial class EsriMapsPage : Page + { + + private FloorManager _floorManager; + + MapView mapView = new(); + // Collection of floors. + private readonly Dictionary _floorOptions = new Dictionary(); + public EsriMapsPage() + { + InitializeComponent(); + this.grid.Add((IView)mapView); + + _ = Initialize(); + } + + + private async Task Initialize() + { + try + { + // Gets the floor data from ArcGIS Online and creates a map with it. + Map map = new Map(new Uri("https://ess.maps.arcgis.com/home/item.html?id=f133a698536f44c8884ad81f80b6cfc7")); + + mapView.Map = map; + + // Map needs to be loaded in order for floormanager to be used. + await mapView.Map.LoadAsync(); + List floorName = new List(); + + // Checks to see if the layer is floor aware. + if (mapView.Map.FloorDefinition == null) + { + System.Diagnostics.Debug.WriteLine("The layer is not floor aware."); + return; + } + + await mapView.Map.FloorManager.LoadAsync(); + _floorManager = mapView.Map.FloorManager; + + // Use the dictionary to add the level's name as the key and the FloorLevel object with the associated level's name. + foreach (FloorLevel level in _floorManager.Facilities[0].Levels) + { + _floorOptions.Add(level.ShortName, level); + floorName.Add(level.ShortName); + } + + //FloorChooser.ItemsSource = floorName; + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine(ex.Message); + } + } + } +} diff --git a/samples/MauiEmbedding/MauiEmbedding/Presentation/EsriMapsViewModel.cs b/samples/MauiEmbedding/MauiEmbedding/Presentation/EsriMapsViewModel.cs new file mode 100644 index 0000000000..17b605df33 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding/Presentation/EsriMapsViewModel.cs @@ -0,0 +1,6 @@ +namespace MauiEmbedding.Presentation +{ + partial class EsriMapsViewModel : ObservableObject + { + } +} diff --git a/samples/MauiEmbedding/MauiEmbedding/Presentation/ExternalLibPage.xaml b/samples/MauiEmbedding/MauiEmbedding/Presentation/ExternalLibPage.xaml new file mode 100644 index 0000000000..f50b1263ea --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding/Presentation/ExternalLibPage.xaml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + diff --git a/samples/MauiEmbedding/MauiEmbedding/Presentation/ExternalLibPage.xaml.cs b/samples/MauiEmbedding/MauiEmbedding/Presentation/ExternalLibPage.xaml.cs new file mode 100644 index 0000000000..10efb2c863 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding/Presentation/ExternalLibPage.xaml.cs @@ -0,0 +1,11 @@ +namespace MauiEmbedding.Presentation; + +public sealed partial class ExternalLibPage : Page +{ + public MainViewModel? Vm => DataContext as MainViewModel; + + public ExternalLibPage() + { + this.InitializeComponent(); + } +} diff --git a/samples/MauiEmbedding/MauiEmbedding/Presentation/ExternalLibViewModel.cs b/samples/MauiEmbedding/MauiEmbedding/Presentation/ExternalLibViewModel.cs new file mode 100644 index 0000000000..20109488cc --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding/Presentation/ExternalLibViewModel.cs @@ -0,0 +1,6 @@ +namespace MauiEmbedding.Presentation; + +public partial class ExternalLibViewModel : ObservableObject +{ + public string Title { get; set; } = "External lib controls with Maui"; +} diff --git a/samples/MauiEmbedding/MauiEmbedding/Presentation/MCTControlsPage.xaml b/samples/MauiEmbedding/MauiEmbedding/Presentation/MCTControlsPage.xaml new file mode 100644 index 0000000000..39845a9cd6 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding/Presentation/MCTControlsPage.xaml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/MauiEmbedding/MauiEmbedding/Presentation/MCTControlsPage.xaml.cs b/samples/MauiEmbedding/MauiEmbedding/Presentation/MCTControlsPage.xaml.cs new file mode 100644 index 0000000000..5576b575f7 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding/Presentation/MCTControlsPage.xaml.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using Microsoft.UI.Xaml.Controls.Primitives; +using Microsoft.UI.Xaml.Data; +using Microsoft.UI.Xaml.Input; +using Microsoft.UI.Xaml.Media; +using Microsoft.UI.Xaml.Navigation; +using Windows.Foundation; +using Windows.Foundation.Collections; + +// The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=234238 + +namespace MauiEmbedding.Presentation; +/// +/// An empty page that can be used on its own or navigated to within a Frame. +/// +public sealed partial class MCTControlsPage : Page +{ + public MCTControlsPage() + { + this.InitializeComponent(); + + var drawing = new CommunityToolkit.Maui.Views.DrawingView() + { + HeightRequest = 300, + WidthRequest = 300, + LineColor = Microsoft.Maui.Graphics.Colors.Fuchsia, + BackgroundColor = Microsoft.Maui.Graphics.Colors.Black, + IsMultiLineModeEnabled = true + }; + + this.layout.Add(drawing); + + } +} diff --git a/samples/MauiEmbedding/MauiEmbedding/Presentation/MCTControlsViewModel.cs b/samples/MauiEmbedding/MauiEmbedding/Presentation/MCTControlsViewModel.cs new file mode 100644 index 0000000000..c2df388aaa --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding/Presentation/MCTControlsViewModel.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MauiEmbedding.Presentation; +partial class MCTControlsViewModel : ObservableObject +{ + public string Title => "CommunityToolkit.Maui controls"; +} diff --git a/samples/MauiEmbedding/MauiEmbedding/Presentation/MainPage.xaml b/samples/MauiEmbedding/MauiEmbedding/Presentation/MainPage.xaml new file mode 100644 index 0000000000..e29f9bdc96 --- /dev/null +++ b/samples/MauiEmbedding/MauiEmbedding/Presentation/MainPage.xaml @@ -0,0 +1,23 @@ + + + +