From fd1b192f5ed9b4808babe02ee5ad5991e363eb77 Mon Sep 17 00:00:00 2001 From: Kangho Hur Date: Thu, 20 Sep 2018 16:48:22 +0900 Subject: [PATCH 1/8] Add Xamarin.Forms.Core.Tizen.UITests - Update ControlGallery and Tests for supporting Tizen - Update version of NUnit --- .../ControlGallery.Tizen.cs | 2 + .../Xamarin.Forms.ControlGallery.Tizen.csproj | 1 + .../TestPages/TestPages.cs | 21 + .../BaseViewContainerRemoteTizen.cs | 65 + .../Properties/AssemblyInfo.cs | 36 + .../TizenDriverApp.cs | 994 ++++++++++ .../TizenQuery.cs | 69 + .../TizenTestBase.cs | 66 + .../TizenTestServer.cs | 44 + .../Xamarin.Forms.Core.Tizen.UITests.csproj | 118 ++ Xamarin.Forms.Core.Tizen.UITests/app.config | 11 + .../packages.config | 12 + .../BaseTestFixture.cs | 9 +- .../PlatformQueries.cs | 6 +- Xamarin.Forms.Core.UITests.Shared/Queries.cs | 2 + .../Remotes/BaseViewContainerRemote.cs | 18 + .../Tests/ActionSheetUITests.cs | 2 +- .../Tests/MapUITests.cs | 2 +- .../Tests/ViewUITests.cs | 9 +- Xamarin.Forms.Core/Properties/AssemblyInfo.cs | 1 + Xamarin.Forms.Tizen.UITest.sln | 1692 +++++++++++++++++ 21 files changed, 3169 insertions(+), 11 deletions(-) create mode 100644 Xamarin.Forms.Core.Tizen.UITests/BaseViewContainerRemoteTizen.cs create mode 100644 Xamarin.Forms.Core.Tizen.UITests/Properties/AssemblyInfo.cs create mode 100644 Xamarin.Forms.Core.Tizen.UITests/TizenDriverApp.cs create mode 100644 Xamarin.Forms.Core.Tizen.UITests/TizenQuery.cs create mode 100644 Xamarin.Forms.Core.Tizen.UITests/TizenTestBase.cs create mode 100644 Xamarin.Forms.Core.Tizen.UITests/TizenTestServer.cs create mode 100644 Xamarin.Forms.Core.Tizen.UITests/Xamarin.Forms.Core.Tizen.UITests.csproj create mode 100644 Xamarin.Forms.Core.Tizen.UITests/app.config create mode 100644 Xamarin.Forms.Core.Tizen.UITests/packages.config create mode 100644 Xamarin.Forms.Tizen.UITest.sln diff --git a/Xamarin.Forms.ControlGallery.Tizen/ControlGallery.Tizen.cs b/Xamarin.Forms.ControlGallery.Tizen/ControlGallery.Tizen.cs index 0ae8ae600f3..5702b2ca824 100644 --- a/Xamarin.Forms.ControlGallery.Tizen/ControlGallery.Tizen.cs +++ b/Xamarin.Forms.ControlGallery.Tizen/ControlGallery.Tizen.cs @@ -1,6 +1,7 @@ using Xamarin.Forms.Platform.Tizen; using Xamarin.Forms.Controls; using ElmSharp; +using Tizen.Appium; namespace Xamarin.Forms.ControlGallery.Tizen { @@ -19,6 +20,7 @@ static void Main(string[] args) var app = new MainApplication(); FormsMaps.Init("HERE", "write-your-API-key-here"); global::Xamarin.Forms.Platform.Tizen.Forms.Init(app); + TizenAppium.StartService(app); app.Run(args); } } diff --git a/Xamarin.Forms.ControlGallery.Tizen/Xamarin.Forms.ControlGallery.Tizen.csproj b/Xamarin.Forms.ControlGallery.Tizen/Xamarin.Forms.ControlGallery.Tizen.csproj index a10073284d7..57e25d10bd0 100644 --- a/Xamarin.Forms.ControlGallery.Tizen/Xamarin.Forms.ControlGallery.Tizen.csproj +++ b/Xamarin.Forms.ControlGallery.Tizen/Xamarin.Forms.ControlGallery.Tizen.csproj @@ -13,6 +13,7 @@ + diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/TestPages/TestPages.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/TestPages/TestPages.cs index ba89bee1181..6d964fbb825 100644 --- a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/TestPages/TestPages.cs +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/TestPages/TestPages.cs @@ -1,6 +1,7 @@ using System; using System.Reflection; using Xamarin.Forms.CustomAttributes; +using System.Diagnostics; #if UITEST using Xamarin.Forms.Core.UITests; @@ -49,7 +50,11 @@ static IApp InitializeApp() #elif __WINDOWS__ app = InitializeUWPApp(); + +#elif __TIZEN__ + app = InitializeTizenApp(); #endif + if (app == null) throw new NullReferenceException("App was not initialized."); @@ -120,8 +125,16 @@ static IApp InitializeUWPApp() } #endif +#if __TIZEN__ + static IApp InitializeTizenApp() + { + return TizenTestBase.ConfigureApp(); + } +#endif + public static void NavigateToIssue(Type type, IApp app) { + Debug.WriteLine("@@@@@@@@@@ NavigateToIssue @@@@@@@@@"); var typeIssueAttribute = type.GetTypeInfo().GetCustomAttribute(); string cellName = ""; @@ -166,6 +179,14 @@ public static void NavigateToIssue(Type type, IApp app) // and then fall back to the old manual navigation WindowsTestBase.Reset(); #endif + +#if __TIZEN__ + // Tizen doens't have an 'invoke' option right now for us to do the more direct navigation + // we're using for Android/iOS + // So we're just going to use the 'Reset' method to bounce the app to the opening screen + // and then fall back to the old manual navigation + TizenTestBase.Reset(); +#endif } catch (Exception ex) { diff --git a/Xamarin.Forms.Core.Tizen.UITests/BaseViewContainerRemoteTizen.cs b/Xamarin.Forms.Core.Tizen.UITests/BaseViewContainerRemoteTizen.cs new file mode 100644 index 00000000000..0437cc2880d --- /dev/null +++ b/Xamarin.Forms.Core.Tizen.UITests/BaseViewContainerRemoteTizen.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Xamarin.Forms.Core.UITests +{ + internal abstract partial class BaseViewContainerRemote + { + bool TryConvertFloat(object prop, out T result) + { + result = default(T); + + if (prop.GetType() == typeof(string) && typeof(T) == typeof(float)) + { + float val; + if (float.TryParse((string)prop, out val)) + { + result = (T)((object) val); + return true; + } + } + return false; + } + + bool TryConvertDouble(object prop, out T result) + { + result = default(T); + + if (prop.GetType() == typeof(string) && typeof(T) == typeof(double)) + { + double val; + if (double.TryParse((string)prop, out val)) + { + result = (T)((object)val); + return true; + } + } + return false; + } + + bool TryConvertFont(object prop, out T result) + { + result = default(T); + if (prop.GetType() == typeof(string) && typeof(T) == typeof(Font)) + { + FontAttributes fontAttrs = FontAttributes.None; + string str = (string)prop; + if (str.Contains("FontAttributes: Bold")) + { + fontAttrs = FontAttributes.Bold; + } + else if (str.Contains("FontAttributes: Italic")) + { + fontAttrs = FontAttributes.None; + } + result = (T)((object)new Font().WithAttributes(fontAttrs)); + return true; + } + + return false; + } + } +} diff --git a/Xamarin.Forms.Core.Tizen.UITests/Properties/AssemblyInfo.cs b/Xamarin.Forms.Core.Tizen.UITests/Properties/AssemblyInfo.cs new file mode 100644 index 00000000000..56296262460 --- /dev/null +++ b/Xamarin.Forms.Core.Tizen.UITests/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Xamarin.Forms.Core.Tizen.UITests")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Xamarin.Forms.Core.Tizen.UITests")] +[assembly: AssemblyCopyright("Copyright © 2018")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("c4d726e7-6277-48d3-96c1-8ea8ad46c6f0")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Xamarin.Forms.Core.Tizen.UITests/TizenDriverApp.cs b/Xamarin.Forms.Core.Tizen.UITests/TizenDriverApp.cs new file mode 100644 index 00000000000..cda42043ae1 --- /dev/null +++ b/Xamarin.Forms.Core.Tizen.UITests/TizenDriverApp.cs @@ -0,0 +1,994 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Threading.Tasks; +using OpenQA.Selenium; +using OpenQA.Selenium.Appium.Tizen; +using Xamarin.UITest; +using Xamarin.UITest.Queries; +using Xamarin.UITest.Queries.Tokens; + +namespace Xamarin.Forms.Core.UITests +{ + public class TizenDriverApp : IApp + { + public const string AppMainPageId = "ControlGalleryMainPage"; + + readonly Dictionary _controlNameToTag = new Dictionary + { + { "button", "ControlType.Button" } + }; + + readonly TizenDriver _session; + + readonly Dictionary _translatePropertyAccessor = new Dictionary + { + { "getAlpha", "Opacity" }, + { "isIndeterminate", "IsRunning" }, + { "getRotation", "Rotation" }, + { "getRotationX", "RotationX" }, + { "getRotationY", "RotationY" }, + { "getScaleX", "Scale" }, + { "getScaleY", "Scale" }, + { "isEnabled", "IsEnabled" }, + { "getBackground", "BorderColor" }, + { "getTypeface", "Font" }, + { "isBold", "Font" }, + { "getText", "Text" }, + }; + + int _scrollBarOffset = 5; + + TizenElement _viewPort; + + TizenElement _window; + + public TizenDriverApp(TizenDriver session) + { + _session = session; + TestServer = new TizenTestServer(_session); + } + + public void Back() + { + _session.Navigate().Back(); + //QueryTizen("Back").First().Click(); + } + + public void ClearText(Func query) + { + QueryTizen(query).First().Clear(); + } + + public void ClearText(Func query) + { + throw new NotImplementedException(); + } + + public void ClearText(string marked) + { + QueryTizen(marked).First().Clear(); + } + + public void ClearText() + { + throw new NotImplementedException(); + } + + public IDevice Device { get; } + + public void DismissKeyboard() + { + // No-op for Desktop, which is all we're doing right now + } + + public void DoubleTap(Func query) + { + DoubleTap(TizenQuery.FromQuery(query)); + } + + public void DoubleTap(string marked) + { + DoubleTap(TizenQuery.FromMarked(marked)); + } + + public void DoubleTapCoordinates(float x, float y) + { + throw new NotImplementedException(); + } + + public void DragAndDrop(Func from, Func to) + { + throw new NotImplementedException(); + } + + public void DragAndDrop(string from, string to) + { + throw new NotImplementedException(); + } + + public void DragCoordinates(float fromX, float fromY, float toX, float toY) + { + throw new NotImplementedException(); + } + + public void EnterText(string text) + { + _session.Keyboard.SendKeys(text); + } + + public void EnterText(Func query, string text) + { + TizenElement element = QueryTizen(query).First(); + element.SendKeys(text); + } + + public void EnterText(string marked, string text) + { + TizenElement element = QueryTizen(marked).First(); + element.SendKeys(text); + } + + public void EnterText(Func query, string text) + { + throw new NotImplementedException(); + } + + public AppResult[] Flash(Func query = null) + { + throw new NotImplementedException(); + } + + public AppResult[] Flash(string marked) + { + throw new NotImplementedException(); + } + + public object Invoke(string methodName, object argument = null) + { + return Invoke(methodName, new[] { argument }); + } + + public object Invoke(string methodName, object[] arguments) + { + if (methodName == "ContextClick") + { + // The IApp interface doesn't have a context click concept, and mapping TouchAndHold to + // context clicking would box us in if we have the option of running these tests on touch + // devices later. So we're going to use the back door. + ContextClick(arguments[0].ToString()); + return null; + } + + return null; + } + + public void PinchToZoomIn(Func query, TimeSpan? duration = null) + { + throw new NotImplementedException(); + } + + public void PinchToZoomIn(string marked, TimeSpan? duration = null) + { + throw new NotImplementedException(); + } + + public void PinchToZoomInCoordinates(float x, float y, TimeSpan? duration) + { + throw new NotImplementedException(); + } + + public void PinchToZoomOut(Func query, TimeSpan? duration = null) + { + throw new NotImplementedException(); + } + + public void PinchToZoomOut(string marked, TimeSpan? duration = null) + { + throw new NotImplementedException(); + } + + public void PinchToZoomOutCoordinates(float x, float y, TimeSpan? duration) + { + throw new NotImplementedException(); + } + + public void PressEnter() + { + _session.Keyboard.PressKey(Keys.Enter); + } + + public void PressVolumeDown() + { + throw new NotImplementedException(); + } + + public void PressVolumeUp() + { + throw new NotImplementedException(); + } + + public AppPrintHelper Print { get; } + + public AppResult[] Query(Func query = null) + { + ReadOnlyCollection elements = QueryTizen(TizenQuery.FromQuery(query)); + return elements.Select(ToAppResult).ToArray(); + } + + public AppResult[] Query(string marked) + { + ReadOnlyCollection elements = QueryTizen(marked); + return elements.Select(ToAppResult).ToArray(); + } + + public AppWebResult[] Query(Func query) + { + throw new NotImplementedException(); + } + + public T[] Query(Func> query) + { + AppTypedSelector appTypedSelector = query(new AppQuery(QueryPlatform.iOS)); + + // Swiss-Army Chainsaw time + // We'll use reflection to dig into the query and get the element selector + // and the property value invocation in text form + BindingFlags bindingFlags = BindingFlags.Instance | BindingFlags.NonPublic; + Type selectorType = appTypedSelector.GetType(); + PropertyInfo tokensProperty = selectorType.GetProperties(bindingFlags) + .First(t => t.PropertyType == typeof(IQueryToken[])); + + var tokens = (IQueryToken[])tokensProperty.GetValue(appTypedSelector); + + string selector = tokens[0].ToQueryString(QueryPlatform.iOS); + string invoke = tokens[1].ToCodeString(); + + // Now that we have them in text form, we can reinterpret them for Tizen + TizenQuery tizenQuery = TizenQuery.FromRaw(selector); + // TODO hartez 2017/07/19 17:08:44 Make this a bit more resilient if the translation isn't there + string attribute = _translatePropertyAccessor[invoke.Substring(8).Replace("\")", "")]; + + ReadOnlyCollection elements = QueryTizen(tizenQuery); + + foreach (TizenElement e in elements) + { + string x = e.GetAttribute(attribute); + Debug.WriteLine($">>>>> TizenDriverApp Query 261: {x}"); + } + + // TODO hartez 2017/07/19 17:09:14 Alas, for now this simply doesn't work. Waiting for TizenAppDriver to implement it + return elements.Select(e => (T)Convert.ChangeType(e.GetAttribute(attribute), typeof(T))).ToArray(); + } + + public string[] Query(Func query) + { + throw new NotImplementedException(); + } + + public void Repl() + { + throw new NotImplementedException(); + } + + public FileInfo Screenshot(string title) + { + // TODO hartez 2017/07/18 10:16:56 Verify that this is working; seems a bit too simple + string filename = $"{title}.png"; + + Screenshot screenshot = _session.GetScreenshot(); + screenshot.SaveAsFile(filename, ScreenshotImageFormat.Png); + return new FileInfo(filename); + } + + public void ScrollDown(Func withinQuery = null, ScrollStrategy strategy = ScrollStrategy.Auto, + double swipePercentage = 0.67, + int swipeSpeed = 500, bool withInertia = true) + { + if (withinQuery == null) + { + Scroll(null, true); + return; + } + + TizenQuery tizenQuery = TizenQuery.FromQuery(withinQuery); + Scroll(tizenQuery, true); + } + + public void ScrollDown(string withinMarked, ScrollStrategy strategy = ScrollStrategy.Auto, + double swipePercentage = 0.67, + int swipeSpeed = 500, bool withInertia = true) + { + TizenQuery tizenQuery = TizenQuery.FromMarked(withinMarked); + Scroll(tizenQuery, true); + } + + public void ScrollDownTo(string toMarked, string withinMarked = null, ScrollStrategy strategy = ScrollStrategy.Auto, + double swipePercentage = 0.67, int swipeSpeed = 500, bool withInertia = true, TimeSpan? timeout = null) + { + ScrollTo(TizenQuery.FromMarked(toMarked), withinMarked == null ? null : TizenQuery.FromMarked(withinMarked), timeout); + } + + public void ScrollDownTo(Func toQuery, string withinMarked, + ScrollStrategy strategy = ScrollStrategy.Auto, double swipePercentage = 0.67, + int swipeSpeed = 500, bool withInertia = true, TimeSpan? timeout = null) + { + throw new NotImplementedException(); + } + + public void ScrollDownTo(Func toQuery, Func withinQuery = null, + ScrollStrategy strategy = ScrollStrategy.Auto, double swipePercentage = 0.67, + int swipeSpeed = 500, bool withInertia = true, TimeSpan? timeout = null) + { + ScrollTo(TizenQuery.FromQuery(toQuery), withinQuery == null ? null : TizenQuery.FromQuery(withinQuery), timeout); + } + + public void ScrollDownTo(Func toQuery, Func withinQuery = null, + ScrollStrategy strategy = ScrollStrategy.Auto, double swipePercentage = 0.67, + int swipeSpeed = 500, bool withInertia = true, TimeSpan? timeout = null) + { + throw new NotImplementedException(); + } + + public void ScrollTo(string toMarked, string withinMarked = null, ScrollStrategy strategy = ScrollStrategy.Auto, + double swipePercentage = 0.67, int swipeSpeed = 500, bool withInertia = true, TimeSpan? timeout = null) + { + throw new NotImplementedException(); + } + + public void ScrollUp(Func query = null, ScrollStrategy strategy = ScrollStrategy.Auto, + double swipePercentage = 0.67, int swipeSpeed = 500, + bool withInertia = true) + { + if (query == null) + { + Scroll(null, false); + return; + } + + TizenQuery tizenQuery = TizenQuery.FromQuery(query); + Scroll(tizenQuery, false); + } + + public void ScrollUp(string withinMarked, ScrollStrategy strategy = ScrollStrategy.Auto, + double swipePercentage = 0.67, int swipeSpeed = 500, + bool withInertia = true) + { + TizenQuery tizenQuery = TizenQuery.FromMarked(withinMarked); + Scroll(tizenQuery, false); + } + + public void ScrollUpTo(string toMarked, string withinMarked = null, ScrollStrategy strategy = ScrollStrategy.Auto, + double swipePercentage = 0.67, int swipeSpeed = 500, bool withInertia = true, TimeSpan? timeout = null) + { + ScrollTo(TizenQuery.FromMarked(toMarked), withinMarked == null ? null : TizenQuery.FromMarked(withinMarked), timeout, + down: false); + } + + public void ScrollUpTo(Func toQuery, string withinMarked, + ScrollStrategy strategy = ScrollStrategy.Auto, double swipePercentage = 0.67, + int swipeSpeed = 500, bool withInertia = true, TimeSpan? timeout = null) + { + throw new NotImplementedException(); + } + + public void ScrollUpTo(Func toQuery, Func withinQuery = null, + ScrollStrategy strategy = ScrollStrategy.Auto, double swipePercentage = 0.67, + int swipeSpeed = 500, bool withInertia = true, TimeSpan? timeout = null) + { + ScrollTo(TizenQuery.FromQuery(toQuery), withinQuery == null ? null : TizenQuery.FromQuery(withinQuery), timeout, + down: false); + } + + public void ScrollUpTo(Func toQuery, Func withinQuery = null, + ScrollStrategy strategy = ScrollStrategy.Auto, double swipePercentage = 0.67, + int swipeSpeed = 500, bool withInertia = true, TimeSpan? timeout = null) + { + throw new NotImplementedException(); + } + + public void SetOrientationLandscape() + { + // Deliberately leaving this as a no-op for now + // Trying to set the orientation on the Desktop (the only version of UWP we're testing for the moment) + // gives us a 405 Method Not Allowed, which makes sense. Haven't figured out how to determine + // whether we're in a mode which allows orientation, but if we were, the next line is probably how to set it. + //_session.Orientation = ScreenOrientation.Landscape; + } + + public void SetOrientationPortrait() + { + // Deliberately leaving this as a no-op for now + // Trying to set the orientation on the Desktop (the only version of UWP we're testing for the moment) + // gives us a 405 Method Not Allowed, which makes sense. Haven't figured out how to determine + // whether we're in a mode which allows orientation, but if we were, the next line is probably how to set it. + //_session.Orientation = ScreenOrientation.Portrait; + } + + public void SetSliderValue(string marked, double value) + { + throw new NotImplementedException(); + } + + public void SetSliderValue(Func query, double value) + { + throw new NotImplementedException(); + } + + public void SwipeLeft() + { + throw new NotImplementedException(); + } + + public void SwipeLeftToRight(double swipePercentage = 0.67, int swipeSpeed = 500, bool withInertia = true) + { + throw new NotImplementedException(); + } + + public void SwipeLeftToRight(string marked, double swipePercentage = 0.67, int swipeSpeed = 500, + bool withInertia = true) + { + throw new NotImplementedException(); + } + + public void SwipeLeftToRight(Func query, double swipePercentage = 0.67, int swipeSpeed = 500, + bool withInertia = true) + { + throw new NotImplementedException(); + } + + public void SwipeLeftToRight(Func query, double swipePercentage = 0.67, int swipeSpeed = 500, + bool withInertia = true) + { + throw new NotImplementedException(); + } + + public void SwipeRight() + { + throw new NotImplementedException(); + } + + public void SwipeRightToLeft(double swipePercentage = 0.67, int swipeSpeed = 500, bool withInertia = true) + { + throw new NotImplementedException(); + } + + public void SwipeRightToLeft(string marked, double swipePercentage = 0.67, int swipeSpeed = 500, + bool withInertia = true) + { + throw new NotImplementedException(); + } + + public void SwipeRightToLeft(Func query, double swipePercentage = 0.67, int swipeSpeed = 500, + bool withInertia = true) + { + throw new NotImplementedException(); + } + + public void SwipeRightToLeft(Func query, double swipePercentage = 0.67, int swipeSpeed = 500, + bool withInertia = true) + { + throw new NotImplementedException(); + } + + public void Tap(Func query) + { + TizenQuery tizenQuery = TizenQuery.FromQuery(query); + Tap(tizenQuery); + } + + public void Tap(string marked) + { + TizenQuery tizenQuery = TizenQuery.FromMarked(marked); + Tap(tizenQuery); + } + + public void Tap(Func query) + { + throw new NotImplementedException(); + } + + public void TapCoordinates(float x, float y) + { + // Okay, this one's a bit complicated. For some reason, _session.Tap() with coordinates does not work + // (Filed https://github.com/Microsoft/WinAppDriver/issues/229 for that) + // But we can do the equivalent by manipulating the mouse. The mouse methods all take an ICoordinates + // object, and you'd think that the "coordinates" part of ICoordinates would have something do with + // where the mouse clicks. You'd be wrong. The coordinates parts of that object are ignored and it just + // clicks the center of whatever TizenElement the ICoordinates refers to in 'AuxiliaryLocator' + + // If we could just use the element, we wouldn't be tapping at specific coordinates, so that's not + // very helpful. + + // Instead, we'll use MouseClickAt + + MouseClickAt(x, y); + } + + public ITestServer TestServer { get; } + + public void TouchAndHold(Func query) + { + throw new NotImplementedException(); + } + + public void TouchAndHold(string marked) + { + throw new NotImplementedException(); + } + + public void TouchAndHoldCoordinates(float x, float y) + { + throw new NotImplementedException(); + } + + public void WaitFor(Func predicate, string timeoutMessage = "Timed out waiting...", TimeSpan? timeout = null, + TimeSpan? retryFrequency = null, TimeSpan? postTimeout = null) + { + throw new NotImplementedException(); + } + + public AppResult[] WaitForElement(Func query, + string timeoutMessage = "Timed out waiting for element...", + TimeSpan? timeout = null, TimeSpan? retryFrequency = null, TimeSpan? postTimeout = null) + { + Func> result = () => QueryTizen(query); + return WaitForAtLeastOne(result, timeoutMessage, timeout, retryFrequency).Select(ToAppResult).ToArray(); + } + + public AppResult[] WaitForElement(string marked, string timeoutMessage = "Timed out waiting for element...", + TimeSpan? timeout = null, TimeSpan? retryFrequency = null, TimeSpan? postTimeout = null) + { + Func> result = () => QueryTizen(marked); + return WaitForAtLeastOne(result, timeoutMessage, timeout, retryFrequency).Select(ToAppResult).ToArray(); + } + + public AppWebResult[] WaitForElement(Func query, + string timeoutMessage = "Timed out waiting for element...", + TimeSpan? timeout = null, TimeSpan? retryFrequency = null, TimeSpan? postTimeout = null) + { + throw new NotImplementedException(); + } + + public void WaitForNoElement(Func query, + string timeoutMessage = "Timed out waiting for no element...", + TimeSpan? timeout = null, TimeSpan? retryFrequency = null, TimeSpan? postTimeout = null) + { + Func> result = () => QueryTizen(query); + WaitForNone(result, timeoutMessage, timeout, retryFrequency); + } + + public void WaitForNoElement(string marked, string timeoutMessage = "Timed out waiting for no element...", + TimeSpan? timeout = null, TimeSpan? retryFrequency = null, TimeSpan? postTimeout = null) + { + Func> result = () => QueryTizen(marked); + WaitForNone(result, timeoutMessage, timeout, retryFrequency); + } + + public void WaitForNoElement(Func query, + string timeoutMessage = "Timed out waiting for no element...", + TimeSpan? timeout = null, TimeSpan? retryFrequency = null, TimeSpan? postTimeout = null) + { + throw new NotImplementedException(); + } + + public void ContextClick(string marked) + { + TizenElement element = QueryTizen(marked).First(); + PointF point = ElementToClickablePoint(element); + + MouseClickAt(point.X, point.Y, ClickType.ContextClick); + } + + internal void MouseClickAt(float x, float y, ClickType clickType = ClickType.SingleClick) + { + // Mouse clicking with ICoordinates doesn't work the way we'd like (see TapCoordinates comments), + // so we have to do some math on our own to get the mouse in the right spot + + // So here's how we're working around it for the moment: + // 1. Get the Window viewport (which is a known-to-exist element) + // 2. Using the Window's ICoordinates and the MouseMove() overload with x/y offsets, move the pointer + // to the location we care about + // 3. Use the (undocumented, except in https://github.com/Microsoft/WinAppDriver/issues/118#issuecomment-269404335) + // null parameter for Mouse.Click() to click at the current pointer location + + TizenElement viewPort = GetViewPort(); + int xOffset = viewPort.Coordinates.LocationInViewport.X; + int yOffset = viewPort.Coordinates.LocationInViewport.Y; + _session.Mouse.MouseMove(viewPort.Coordinates, (int)x - xOffset, (int)y - yOffset); + + switch (clickType) + { + case ClickType.DoubleClick: + _session.Mouse.DoubleClick(null); + break; + case ClickType.ContextClick: + _session.Mouse.ContextClick(null); + break; + case ClickType.SingleClick: + default: + _session.Mouse.Click(null); + break; + } + } + + void ClickOrTapElement(TizenElement element) + { + try + { + // For most stuff, a simple click will work + element.Click(); + } + catch (InvalidOperationException) + { + // Some elements aren't "clickable" from an automation perspective (e.g., Frame renders as a Border + // with content in it; if the content is just a TextBlock, we'll end up here) + + // All is not lost; we can figure out the location of the element in in the application window + // and Tap in that spot + PointF p = ElementToClickablePoint(element); + TapCoordinates(p.X, p.Y); + } + } + + void DoubleClickElement(TizenElement element) + { + PointF point = ElementToClickablePoint(element); + + MouseClickAt(point.X, point.Y, clickType: ClickType.DoubleClick); + } + + void DoubleTap(TizenQuery query) + { + TizenElement element = FindFirstElement(query); + + if (element == null) + { + return; + } + + DoubleClickElement(element); + } + + PointF ElementToClickablePoint(TizenElement element) + { + PointF clickablePoint = GetClickablePoint(element); + + TizenElement window = GetWindow(); + PointF origin = GetOriginOfBoundingRectangle(window); + + // Use the coordinates in the app window's viewport relative to the window's origin + return new PointF(clickablePoint.X - origin.X, clickablePoint.Y - origin.Y); + } + + ReadOnlyCollection FilterControlType(IEnumerable elements, string controlType) + { + string tag = controlType; + + if (tag == "*") + { + return new ReadOnlyCollection(elements.ToList()); + } + + if (_controlNameToTag.ContainsKey(controlType)) + { + tag = _controlNameToTag[controlType]; + } + + return new ReadOnlyCollection(elements.Where(element => element.TagName == tag).ToList()); + } + + TizenElement FindFirstElement(TizenQuery query) + { + Func> fquery = () => QueryTizen(query); + + string timeoutMessage = $"Timed out waiting for element: {query.Raw}"; + + ReadOnlyCollection results = WaitForAtLeastOne(fquery, timeoutMessage); + + TizenElement element = results.FirstOrDefault(); + + return element; + } + + static PointF GetBottomRightOfBoundingRectangle(TizenElement element) + { + string vpcpString = element.GetAttribute("BoundingRectangle"); + + // returned string format looks like: + // Left:-1868 Top:382 Width:1013 Height:680 + + string[] vpparts = vpcpString.Split(new[] { ':', ' ' }, StringSplitOptions.RemoveEmptyEntries); + float vpx = float.Parse(vpparts[1]); + float vpy = float.Parse(vpparts[3]); + + float vpw = float.Parse(vpparts[5]); + float vph = float.Parse(vpparts[7]); + + return new PointF(vpx + vpw, vpy + vph); + } + + static PointF GetClickablePoint(TizenElement element) + { + string cpString = element.GetAttribute("ClickablePoint"); + string[] parts = cpString.Split(','); + float x = float.Parse(parts[0]); + float y = float.Parse(parts[1]); + + return new PointF(x, y); + } + + static PointF GetOriginOfBoundingRectangle(TizenElement element) + { + string vpcpString = element.GetAttribute("BoundingRectangle"); + + // returned string format looks like: + // Left:-1868 Top:382 Width:1013 Height:680 + + string[] vpparts = vpcpString.Split(new[] { ':', ' ' }, StringSplitOptions.RemoveEmptyEntries); + float vpx = float.Parse(vpparts[1]); + float vpy = float.Parse(vpparts[3]); + + return new PointF(vpx, vpy); + } + + static PointF GetTopRightOfBoundingRectangle(TizenElement element) + { + string vpcpString = element.GetAttribute("BoundingRectangle"); + + // returned string format looks like: + // Left:-1868 Top:382 Width:1013 Height:680 + + string[] vpparts = vpcpString.Split(new[] { ':', ' ' }, StringSplitOptions.RemoveEmptyEntries); + float vpx = float.Parse(vpparts[1]); + float vpy = float.Parse(vpparts[3]); + + float vpw = float.Parse(vpparts[5]); + + return new PointF(vpx + vpw, vpy); + } + + TizenElement GetViewPort() + { + if (_viewPort != null) + { + return _viewPort; + } + + ReadOnlyCollection candidates = QueryTizen(AppMainPageId); + _viewPort = candidates[3]; // We really just want the viewport; skip the full window, title bar, min/max buttons... + + int xOffset = _viewPort.Coordinates.LocationInViewport.X; + + if (xOffset > 1) // Everything having to do with scrolling right now is a horrid kludge + { + // This makes the scrolling stuff work correctly on a higher density screen (e.g. MBP running Windows) + _scrollBarOffset = -70; + } + + return _viewPort; + } + + TizenElement GetWindow() + { + if (_window != null) + { + return _window; + } + + _window = QueryTizen(AppMainPageId)[0]; + return _window; + } + + void OriginMouse() + { + TizenElement viewPort = GetViewPort(); + int xOffset = viewPort.Coordinates.LocationInViewport.X; + int yOffset = viewPort.Coordinates.LocationInViewport.Y; + _session.Mouse.MouseMove(viewPort.Coordinates, xOffset, yOffset); + } + + ReadOnlyCollection QueryTizen(TizenQuery query) + { + ReadOnlyCollection resultByAccessibilityId = _session.FindElementsByAccessibilityId(query.Marked); + ReadOnlyCollection resultByName = _session.FindElementsByName(query.Marked); + IEnumerable result = resultByAccessibilityId.Concat(resultByName); + + return FilterControlType(result, query.ControlType); + } + + ReadOnlyCollection QueryTizen(string marked) + { + TizenQuery tizenQuery = TizenQuery.FromMarked(marked); + return QueryTizen(tizenQuery); + } + + ReadOnlyCollection QueryTizen(Func query) + { + TizenQuery tizenQuery = TizenQuery.FromQuery(query); + return QueryTizen(tizenQuery); + } + + void Scroll(TizenQuery query, bool down) + { + if (query == null) + { + ScrollClick(GetWindow(), down); + return; + } + + TizenElement element = FindFirstElement(query); + + ScrollClick(element, down); + } + + void ScrollClick(TizenElement element, bool down = true) + { + PointF point = down ? GetBottomRightOfBoundingRectangle(element) : GetTopRightOfBoundingRectangle(element); + + PointF origin = GetOriginOfBoundingRectangle(GetWindow()); + + var realPoint = new PointF(point.X - origin.X, point.Y - origin.Y); + + int xOffset = _scrollBarOffset; + if (origin.X < 0) + { + // The scrollbar's in a slightly different place relative to the window bounds + // if we're running on the left monitor (which I like to do) + xOffset = xOffset * 3; + } + + float finalX = realPoint.X - xOffset; + float finalY = realPoint.Y - (down ? 15 : -15); + + OriginMouse(); + MouseClickAt(finalX, finalY, ClickType.SingleClick); + } + + void ScrollTo(TizenQuery toQuery, TizenQuery withinQuery, TimeSpan? timeout = null, bool down = true) + { + timeout = timeout ?? TimeSpan.FromSeconds(5); + DateTime start = DateTime.Now; + + while (true) + { + Func> result = () => QueryTizen(toQuery); + TimeSpan iterationTimeout = TimeSpan.FromMilliseconds(0); + TimeSpan retryFrequency = TimeSpan.FromMilliseconds(0); + + try + { + ReadOnlyCollection found = WaitForAtLeastOne(result, timeoutMessage: null, + timeout: iterationTimeout, retryFrequency: retryFrequency); + + if (found.Count > 0) + { + // Success + return; + } + } + catch (TimeoutException ex) + { + // Haven't found it yet, keep scrolling + } + + long elapsed = DateTime.Now.Subtract(start).Ticks; + if (elapsed >= timeout.Value.Ticks) + { + Debug.WriteLine($">>>>> {elapsed} ticks elapsed, timeout value is {timeout.Value.Ticks}"); + throw new TimeoutException($"Timed out scrolling to {toQuery}"); + } + + Scroll(withinQuery, down); + } + } + + void Tap(TizenQuery query) + { + TizenElement element = FindFirstElement(query); + + if (element == null) + { + return; + } + + ClickOrTapElement(element); + } + + static AppRect ToAppRect(TizenElement TizenElement) + { + try + { + var result = new AppRect + { + X = TizenElement.Location.X, + Y = TizenElement.Location.Y, + Height = TizenElement.Size.Height, + Width = TizenElement.Size.Width + }; + + result.CenterX = result.X + result.Width / 2; + result.CenterY = result.Y + result.Height / 2; + + return result; + } + catch (Exception ex) + { + Debug.WriteLine( + $"Warning: error determining AppRect for {TizenElement}; " + + $"if this is a Label with a modified Text value, it might be confusing Windows automation. " + + $"{ex}"); + } + + return null; + } + + static AppResult ToAppResult(TizenElement TizenElement) + { + return new AppResult + { + Rect = ToAppRect(TizenElement), + Label = TizenElement.Id, // Not entirely sure about this one + Description = TizenElement.Text, // or this one, + Text = TizenElement.Text, // or this one, + Enabled = TizenElement.Enabled, + Id = TizenElement.Id + }; + } + + static ReadOnlyCollection Wait(Func> query, + Func satisfactory, + string timeoutMessage = null, + TimeSpan? timeout = null, TimeSpan? retryFrequency = null) + { + timeout = timeout ?? TimeSpan.FromSeconds(5); + retryFrequency = retryFrequency ?? TimeSpan.FromMilliseconds(500); + timeoutMessage = timeoutMessage ?? "Timed out on query."; + + DateTime start = DateTime.Now; + ReadOnlyCollection result = query(); + + while (!satisfactory(result.Count)) + { + long elapsed = DateTime.Now.Subtract(start).Ticks; + if (elapsed >= timeout.Value.Ticks) + { + Debug.WriteLine($">>>>> {elapsed} ticks elapsed, timeout value is {timeout.Value.Ticks}"); + + throw new TimeoutException(timeoutMessage); + } + + Task.Delay(retryFrequency.Value.Milliseconds).Wait(); + result = query(); + } + + return result; + } + + static ReadOnlyCollection WaitForAtLeastOne(Func> query, + string timeoutMessage = null, + TimeSpan? timeout = null, TimeSpan? retryFrequency = null) + { + return Wait(query, i => i > 0, timeoutMessage, timeout, retryFrequency); + } + + void WaitForNone(Func> query, + string timeoutMessage = null, + TimeSpan? timeout = null, TimeSpan? retryFrequency = null) + { + Wait(query, i => i == 0, timeoutMessage, timeout, retryFrequency); + } + + internal enum ClickType + { + SingleClick, + DoubleClick, + ContextClick + } + } +} \ No newline at end of file diff --git a/Xamarin.Forms.Core.Tizen.UITests/TizenQuery.cs b/Xamarin.Forms.Core.Tizen.UITests/TizenQuery.cs new file mode 100644 index 00000000000..ad1b19c93f6 --- /dev/null +++ b/Xamarin.Forms.Core.Tizen.UITests/TizenQuery.cs @@ -0,0 +1,69 @@ +using System; +using System.Diagnostics; +using System.Text.RegularExpressions; +using Xamarin.UITest.Queries; + +namespace Xamarin.Forms.Core.UITests +{ + internal class TizenQuery + { + public static TizenQuery FromQuery(Func query) + { + var raw = GetRawQuery(query); + return FromRaw(raw); + } + + public static TizenQuery FromMarked(string marked) + { + Debug.WriteLine($"@@@@@@@ FromMarked() - '{marked}'"); + return new TizenQuery("*", marked, $"* '{marked}'"); + } + + public static TizenQuery FromRaw(string raw) + { + Debug.WriteLine($">>>>> Converting raw query '{raw}' to {nameof(TizenQuery)}"); + + var match = Regex.Match(raw, @"(.*)\s(marked|text):'((.|\n)*)'"); + + var controlType = match.Groups[1].Captures[0].Value; + var marked = match.Groups[3].Captures[0].Value; + + // Just ignoring everything else for now (parent, index statements, etc) + var result = new TizenQuery(controlType, marked, raw); + + Debug.WriteLine($">>>>> TizenQuery is: {result}"); + + return result; + } + + static string GetRawQuery(Func query = null) + { + if (query == null) + { + return string.Empty; + } + + // When we pull out the iOS query it's got any instances of "'" escaped with "\", need to fix that up + return query(new AppQuery(QueryPlatform.iOS)).ToString().Replace("\\'", "'"); + } + + TizenQuery(string controlType, string marked, string raw) + { + ControlType = controlType; + Marked = marked; + Raw = raw; + Debug.WriteLine($"@@@@@@@ TizenQuery() - cotrolType :'{controlType}' ,marked :'{marked}', raw :'{raw}' "); + } + + public string ControlType { get; } + + public string Marked { get; } + + public string Raw { get; } + + public override string ToString() + { + return $"{nameof(ControlType)}: {ControlType}, {nameof(Marked)}: {Marked}"; + } + } +} \ No newline at end of file diff --git a/Xamarin.Forms.Core.Tizen.UITests/TizenTestBase.cs b/Xamarin.Forms.Core.Tizen.UITests/TizenTestBase.cs new file mode 100644 index 00000000000..abed9021754 --- /dev/null +++ b/Xamarin.Forms.Core.Tizen.UITests/TizenTestBase.cs @@ -0,0 +1,66 @@ +using System; +using System.Diagnostics; +using NUnit.Framework; +using OpenQA.Selenium; +using OpenQA.Selenium.Appium.Tizen; +using OpenQA.Selenium.Remote; +using Xamarin.UITest; + +namespace Xamarin.Forms.Core.UITests +{ + public class TizenTestBase + { + //protected const string TizenApplicationDriverUrl = "http://127.0.0.1:4723/wd/hub"; + protected const string TizenApplicationDriverUrl = "http://10.113.111.156:4723/wd/hub"; + protected static TizenDriver Session; + + public static IApp ConfigureApp() + { + if (Session == null) + { + //TODO + DesiredCapabilities appCapabilities = new DesiredCapabilities(); + + appCapabilities.SetCapability("platformName", "Tizen"); + //TM1 + //appCapabilities.SetCapability("deviceName", "0000d84200006200"); + //For Emul + appCapabilities.SetCapability("deviceName", "emulator-26101"); + + appCapabilities.SetCapability("appPackage", "ControlGallery.Tizen"); + //appCapabilities.SetCapability("app", "ControlGallery.Tizen-1.0.0.tpk"); + //appCapabilities.SetCapability("reboot", "true"); + + Session = new TizenDriver(new Uri(TizenApplicationDriverUrl), appCapabilities); + Assert.IsNotNull(Session); + //Session.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(1); + Reset(); + } + + return new TizenDriverApp(Session); + } + + internal static void HandleAppClosed(Exception ex) + { + if (ex is InvalidOperationException && ex.Message == "Currently selected window has been closed") + { + Session = null; + } + } + + public static void Reset() + { + try + { + Debug.WriteLine($">>>>> TizenTestBase Reset"); + Session?.Keyboard?.PressKey(Keys.Escape); + } + catch (Exception ex) + { + HandleAppClosed(ex); + Debug.WriteLine($">>>>> TizenTestBase ConfigureApp 49: {ex}"); + throw; + } + } + } +} diff --git a/Xamarin.Forms.Core.Tizen.UITests/TizenTestServer.cs b/Xamarin.Forms.Core.Tizen.UITests/TizenTestServer.cs new file mode 100644 index 00000000000..11c2f2c547f --- /dev/null +++ b/Xamarin.Forms.Core.Tizen.UITests/TizenTestServer.cs @@ -0,0 +1,44 @@ +using System; +using OpenQA.Selenium.Appium.Tizen; +using Xamarin.UITest; + +namespace Xamarin.Forms.Core.UITests +{ + internal class TizenTestServer : ITestServer + { + readonly TizenDriver _session; + + public TizenTestServer(TizenDriver session) + { + _session = session; + } + + public string Post(string endpoint, object arguments = null) + { + throw new NotImplementedException(); + } + + public string Put(string endpoint, byte[] data) + { + throw new NotImplementedException(); + } + + public string Get(string endpoint) + { + if (endpoint == "version") + { + try + { + return _session.CurrentWindowHandle; + } + catch (Exception exception) + { + TizenTestBase.HandleAppClosed(exception); + throw; + } + } + + return endpoint; + } + } +} \ No newline at end of file diff --git a/Xamarin.Forms.Core.Tizen.UITests/Xamarin.Forms.Core.Tizen.UITests.csproj b/Xamarin.Forms.Core.Tizen.UITests/Xamarin.Forms.Core.Tizen.UITests.csproj new file mode 100644 index 00000000000..caad00ba61d --- /dev/null +++ b/Xamarin.Forms.Core.Tizen.UITests/Xamarin.Forms.Core.Tizen.UITests.csproj @@ -0,0 +1,118 @@ + + + + + + + Debug + AnyCPU + {C4D726E7-6277-48D3-96C1-8EA8AD46C6F0} + Library + Properties + Xamarin.Forms.Core.Tizen.UITests + Xamarin.Forms.Core.Tizen.UITests + v4.7 + 512 + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE;__TIZEN__;UITEST + prompt + 4 + true + 0114;0108;4014;0649;0169;0168;0219 + + + pdbonly + true + bin\Release\ + TRACE;__TIZEN__;UITEST + prompt + 4 + true + 0114;0108;4014;0649;0169;0168;0219 + + + + ..\packages\Appium.WebDriver.Tizen.4.0.0.5-beta\lib\net45\appium-dotnet-driver.dll + + + ..\packages\Castle.Core.4.2.1\lib\net45\Castle.Core.dll + + + ..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll + + + ..\packages\NUnit.3.10.1\lib\net45\nunit.framework.dll + + + ..\packages\Xam.Plugin.DeviceInfo.4.0.0.13\lib\net45\Plugin.DeviceInfo.dll + + + + + + + + + + + + + ..\packages\Selenium.WebDriver.3.13.0\lib\net45\WebDriver.dll + + + ..\packages\Selenium.Support.3.13.0\lib\net45\WebDriver.Support.dll + + + ..\packages\Xamarin.UITest.2.2.5\lib\net45\Xamarin.UITest.dll + + + + + + + + + + + + + + Designer + + + + + {57b8b73d-c3b5-4c42-869e-7b2f17d354ac} + Xamarin.Forms.Core + + + {4dcd0420-1168-4b77-86db-6196ee4bd491} + Xamarin.Forms.CustomAttributes + + + {7d13bac2-c6a4-416a-b07e-c169b199e52b} + Xamarin.Forms.Maps + + + {d31a6537-ed9c-4ebd-b231-a8d4fe44126a} + Xamarin.Forms.Platform + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + \ No newline at end of file diff --git a/Xamarin.Forms.Core.Tizen.UITests/app.config b/Xamarin.Forms.Core.Tizen.UITests/app.config new file mode 100644 index 00000000000..dde2c3cc64e --- /dev/null +++ b/Xamarin.Forms.Core.Tizen.UITests/app.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Xamarin.Forms.Core.Tizen.UITests/packages.config b/Xamarin.Forms.Core.Tizen.UITests/packages.config new file mode 100644 index 00000000000..9ef55fae946 --- /dev/null +++ b/Xamarin.Forms.Core.Tizen.UITests/packages.config @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/Xamarin.Forms.Core.UITests.Shared/BaseTestFixture.cs b/Xamarin.Forms.Core.UITests.Shared/BaseTestFixture.cs index 6abf117f484..7f775881865 100644 --- a/Xamarin.Forms.Core.UITests.Shared/BaseTestFixture.cs +++ b/Xamarin.Forms.Core.UITests.Shared/BaseTestFixture.cs @@ -17,7 +17,7 @@ internal abstract class BaseTestFixture public static AppRect ScreenBounds { get; set; } - [TestFixtureTearDown] + [OneTimeTearDown] protected virtual void FixtureTeardown() { } @@ -56,7 +56,7 @@ protected virtual void TestTearDown() protected abstract void NavigateToGallery(); #pragma warning disable 618 - [TestFixtureSetUp] + [OneTimeSetUp] #pragma warning restore 618 protected virtual void FixtureSetup() { @@ -107,6 +107,9 @@ protected void ResetApp() #endif #if __WINDOWS__ WindowsTestBase.Reset(); +#endif +#if __TIZEN__ + TizenTestBase.Reset(); #endif } } @@ -121,7 +124,7 @@ namespace Xamarin.Forms.Core.UITests [SetUpFixture] public class CoreUITestsSetup { - [SetUp] + [OneTimeSetUp] public void RunBeforeAnyTests() { LaunchApp(); diff --git a/Xamarin.Forms.Core.UITests.Shared/PlatformQueries.cs b/Xamarin.Forms.Core.UITests.Shared/PlatformQueries.cs index 10eafb46e62..34f767ea363 100644 --- a/Xamarin.Forms.Core.UITests.Shared/PlatformQueries.cs +++ b/Xamarin.Forms.Core.UITests.Shared/PlatformQueries.cs @@ -28,7 +28,7 @@ internal static class PlatformMethodQueries { View.ScaleProperty, Tuple.Create (new[] { "layer", "transform" }, true) }, }; -#elif __ANDROID__ || __WINDOWS__ +#elif __ANDROID__ || __WINDOWS__ || __TIZEN__ public static readonly Dictionary> PropertyPlatformMethodDictionary = new Dictionary > { @@ -83,7 +83,7 @@ internal static class PlatformViews public static readonly string TableView = "UITableView"; public static readonly string TimePicker = "UITextField"; public static readonly string WebView = "UIWebView"; -#elif __ANDROID__ || __WINDOWS__ +#elif __ANDROID__ || __WINDOWS__ || __TIZEN__ public static readonly string ActivityIndicator = "android.widget.ProgressBar"; public static readonly string BoxView = "xamarin.forms.platform.android.BoxRenderer"; public static readonly string Button = "android.widget.Button"; @@ -119,7 +119,7 @@ internal static class PlatformQueries public static readonly Func PageWithoutNavigationBar = q => q.Raw("*").Index(7); public static readonly Func NavigationBarBackButton = q => q.Class("UINavigationItemButtonView"); -#elif __ANDROID__ || __WINDOWS__ +#elif __ANDROID__ || __WINDOWS__ || __TIZEN__ public static readonly Func Root = q => q.Id("content"); public static readonly Func RootPageListView = q => q.Raw("ListViewRenderer index:0"); public static readonly Func GalleryListView = q => q.Raw("ListViewRenderer index:1"); diff --git a/Xamarin.Forms.Core.UITests.Shared/Queries.cs b/Xamarin.Forms.Core.UITests.Shared/Queries.cs index d20596c7933..7dc9bdb82b4 100644 --- a/Xamarin.Forms.Core.UITests.Shared/Queries.cs +++ b/Xamarin.Forms.Core.UITests.Shared/Queries.cs @@ -108,6 +108,8 @@ public static AppRect RootViewRect(this IApp app) { #if __WINDOWS__ return app.Query(WinDriverApp.AppName)[0].Rect; +#elif __TIZEN__ + return app.Query(TizenDriverApp.AppMainPageId)[0].Rect; #else return app.Query(q => q.Raw("* index:0"))[0].Rect; #endif diff --git a/Xamarin.Forms.Core.UITests.Shared/Remotes/BaseViewContainerRemote.cs b/Xamarin.Forms.Core.UITests.Shared/Remotes/BaseViewContainerRemote.cs index ed6f67fbf28..0ff455226e4 100644 --- a/Xamarin.Forms.Core.UITests.Shared/Remotes/BaseViewContainerRemote.cs +++ b/Xamarin.Forms.Core.UITests.Shared/Remotes/BaseViewContainerRemote.cs @@ -197,6 +197,24 @@ public T GetProperty(BindableProperty formProperty) { return result; } + +#elif __TIZEN__ + + if (TryConvertFloat(prop, out result)) + { + return result; + } + + if (TryConvertDouble(prop, out result)) + { + return result; + } + + if (TryConvertFont(prop, out result)) + { + return result; + } + #endif if (TryConvertBool(prop, out result)) diff --git a/Xamarin.Forms.Core.UITests.Shared/Tests/ActionSheetUITests.cs b/Xamarin.Forms.Core.UITests.Shared/Tests/ActionSheetUITests.cs index 854c166d41f..4822da8a611 100644 --- a/Xamarin.Forms.Core.UITests.Shared/Tests/ActionSheetUITests.cs +++ b/Xamarin.Forms.Core.UITests.Shared/Tests/ActionSheetUITests.cs @@ -159,7 +159,7 @@ void ScrollAndTap(string actionSheet) { var queryString = $"* text:'{actionSheet}'"; Func actionSheetQuery = q => q.Raw (queryString); -#if __WINDOWS__ +#if __WINDOWS__ || __TIZEN__ App.ScrollDownTo(actionSheetQuery); #elif __MACOS__ App.Tap(actionSheetQuery); diff --git a/Xamarin.Forms.Core.UITests.Shared/Tests/MapUITests.cs b/Xamarin.Forms.Core.UITests.Shared/Tests/MapUITests.cs index ad86ca640f1..bc4c27159b6 100644 --- a/Xamarin.Forms.Core.UITests.Shared/Tests/MapUITests.cs +++ b/Xamarin.Forms.Core.UITests.Shared/Tests/MapUITests.cs @@ -5,7 +5,7 @@ namespace Xamarin.Forms.Core.UITests { -#if __ANDROID__ || __WINDOWS__ +#if __ANDROID__ || __WINDOWS__ || __TIZEN__ [Ignore("Test only meant for Mac and iOS, besides needing API keys for Android and Windows")] #endif [TestFixture] diff --git a/Xamarin.Forms.Core.UITests.Shared/Tests/ViewUITests.cs b/Xamarin.Forms.Core.UITests.Shared/Tests/ViewUITests.cs index 9b53c160dad..646fb153cc6 100644 --- a/Xamarin.Forms.Core.UITests.Shared/Tests/ViewUITests.cs +++ b/Xamarin.Forms.Core.UITests.Shared/Tests/ViewUITests.cs @@ -164,7 +164,7 @@ public virtual void _Rotation () var remote = new ViewContainerRemote (App, Test.VisualElement.Rotation, PlatformViewType); remote.GoTo (); -#if __ANDROID__ +#if __ANDROID__ || __TIZEN__ var rotation = remote.GetProperty (View.RotationProperty); Assert.AreEqual (10.0f, rotation); #endif @@ -185,7 +185,7 @@ public virtual void _RotationX () var remote = new ViewContainerRemote (App, Test.VisualElement.RotationX, PlatformViewType); remote.GoTo (); -#if __ANDROID__ +#if __ANDROID__ || __TIZEN__ var rotationX = remote.GetProperty (View.RotationXProperty); Assert.AreEqual (33.0f, rotationX); #endif @@ -206,7 +206,7 @@ public virtual void _RotationY () var remote = new ViewContainerRemote (App, Test.VisualElement.RotationY, PlatformViewType); remote.GoTo (); -#if __ANDROID__ +#if __ANDROID__ || __TIZEN__ var rotationY = remote.GetProperty (View.RotationYProperty); Assert.AreEqual (10.0f, rotationY); #endif @@ -228,6 +228,9 @@ public virtual void _Scale () remote.GoTo(); #if __MACOS__ Assert.Inconclusive("needs testing"); +#elif __TIZEN__ + var scale = remote.GetProperty (View.ScaleProperty); + Assert.AreEqual (0.5d, scale); #else #if __WINDOWS__ Assert.Inconclusive(PleaseInspect); diff --git a/Xamarin.Forms.Core/Properties/AssemblyInfo.cs b/Xamarin.Forms.Core/Properties/AssemblyInfo.cs index d12c5db67de..b17b601a92d 100644 --- a/Xamarin.Forms.Core/Properties/AssemblyInfo.cs +++ b/Xamarin.Forms.Core/Properties/AssemblyInfo.cs @@ -25,6 +25,7 @@ [assembly: InternalsVisibleTo("Xamarin.Forms.Core.Android.UITests")] [assembly: InternalsVisibleTo("Xamarin.Forms.Core.Windows.UITests")] [assembly: InternalsVisibleTo("Xamarin.Forms.Core.macOS.UITests")] +[assembly: InternalsVisibleTo("Xamarin.Forms.Core.Tizen.UITests")] [assembly: InternalsVisibleTo("Xamarin.Forms.iOS.UITests")] [assembly: InternalsVisibleTo("Xamarin.Forms.Android.UITests")] [assembly: InternalsVisibleTo("Xamarin.Forms.Loader")] diff --git a/Xamarin.Forms.Tizen.UITest.sln b/Xamarin.Forms.Tizen.UITest.sln new file mode 100644 index 00000000000..5087c1d4921 --- /dev/null +++ b/Xamarin.Forms.Tizen.UITest.sln @@ -0,0 +1,1692 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.27130.2027 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Xamarin.Forms", "Xamarin.Forms", "{9AD757F5-E57A-459D-A0A7-E0675E045B84}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Platforms", "Platforms", "{29AC50BF-B4FB-450B-9386-0C5AD4B84226}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UnitTests", "UnitTests", "{33A20844-7EF4-441D-83DA-2ACAF5E1CDFA}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Control Gallery", "Control Gallery", "{4F5E2D21-17F6-4A42-B8FB-D03D82E24EC8}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Xamarin.Forms.Xaml", "Xamarin.Forms.Xaml", "{32F608E2-6406-4DCF-9105-E2A7CB7085CF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Platform.iOS", "Xamarin.Forms.Platform.iOS\Xamarin.Forms.Platform.iOS.csproj", "{271193C1-6E7C-429C-A36D-3F1BE5267231}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Platform.Android", "Xamarin.Forms.Platform.Android\Xamarin.Forms.Platform.Android.csproj", "{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Core.UnitTests", "Xamarin.Forms.Core.UnitTests\Xamarin.Forms.Core.UnitTests.csproj", "{00259593-A283-47A5-ACB7-9C3819B16364}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.ControlGallery.Android", "Xamarin.Forms.ControlGallery.Android\Xamarin.Forms.ControlGallery.Android.csproj", "{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Xaml.UnitTests", "Xamarin.Forms.Xaml.UnitTests\Xamarin.Forms.Xaml.UnitTests.csproj", "{4B14D295-C09B-4C38-B880-7CC768E50585}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuspec", ".nuspec", "{7E12C50D-A570-4DF1-94E1-8599843FA87C}" + ProjectSection(SolutionItems) = preProject + .nuspec\Xamarin.Forms.AppLinks.nuspec = .nuspec\Xamarin.Forms.AppLinks.nuspec + .nuspec\Xamarin.Forms.Debug.targets = .nuspec\Xamarin.Forms.Debug.targets + .nuspec\Xamarin.Forms.DefaultItems.props = .nuspec\Xamarin.Forms.DefaultItems.props + .nuspec\Xamarin.Forms.DefaultItems.targets = .nuspec\Xamarin.Forms.DefaultItems.targets + .nuspec\Xamarin.Forms.Maps.GTK.nuspec = .nuspec\Xamarin.Forms.Maps.GTK.nuspec + .nuspec\Xamarin.Forms.Maps.nuspec = .nuspec\Xamarin.Forms.Maps.nuspec + .nuspec\Xamarin.Forms.Maps.WPF.nuspec = .nuspec\Xamarin.Forms.Maps.WPF.nuspec + .nuspec\Xamarin.Forms.nuspec = .nuspec\Xamarin.Forms.nuspec + .nuspec\Xamarin.Forms.Pages.Azure.nuspec = .nuspec\Xamarin.Forms.Pages.Azure.nuspec + .nuspec\Xamarin.Forms.Pages.nuspec = .nuspec\Xamarin.Forms.Pages.nuspec + .nuspec\Xamarin.Forms.Platform.GTK.nuspec = .nuspec\Xamarin.Forms.Platform.GTK.nuspec + .nuspec\Xamarin.Forms.Platform.WPF.nuspec = .nuspec\Xamarin.Forms.Platform.WPF.nuspec + .nuspec\Xamarin.Forms.props = .nuspec\Xamarin.Forms.props + .nuspec\Xamarin.Forms.targets = .nuspec\Xamarin.Forms.targets + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Core", "Xamarin.Forms.Core\Xamarin.Forms.Core.csproj", "{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Xaml", "Xamarin.Forms.Xaml\Xamarin.Forms.Xaml.csproj", "{9DB2F292-8034-4E06-89AD-98BBDA4306B9}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Controls", "Xamarin.Forms.Controls\Xamarin.Forms.Controls.csproj", "{CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}" + ProjectSection(ProjectDependencies) = postProject + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7} = {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7} + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Build.Tasks", "Xamarin.Forms.Build.Tasks\Xamarin.Forms.Build.Tasks.csproj", "{96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Xamarin.Forms.Maps", "Xamarin.Forms.Maps", "{132FB9A4-613F-44CE-95D5-758D32D231DD}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Maps", "Xamarin.Forms.Maps\Xamarin.Forms.Maps.csproj", "{7D13BAC2-C6A4-416A-B07E-C169B199E52B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Maps.iOS", "Xamarin.Forms.Maps.iOS\Xamarin.Forms.Maps.iOS.csproj", "{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Maps.Android", "Xamarin.Forms.Maps.Android\Xamarin.Forms.Maps.Android.csproj", "{BD50B39A-EBC5-408F-9C5E-923A8EBAE473}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UITests", "UITests", "{D4D57221-71D6-4031-A6F4-EC66AF0929D9}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{DDDFBCAF-93DE-4868-8296-FD909EF32EF7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Platform.Android.FormsViewGroup", "Xamarin.Forms.Platform.Android.FormsViewGroup\Xamarin.Forms.Platform.Android.FormsViewGroup.csproj", "{3B72465B-ACAE-43AE-9327-10F372FE5F80}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Core.iOS.UITests", "Xamarin.Forms.Core.iOS.UITests\Xamarin.Forms.Core.iOS.UITests.csproj", "{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Core.Android.UITests", "Xamarin.Forms.Core.Android.UITests\Xamarin.Forms.Core.Android.UITests.csproj", "{A34EBE01-25BF-4E69-A2DC-2288DC625541}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.CustomAttributes", "Xamarin.Forms.CustomAttributes\Xamarin.Forms.CustomAttributes.csproj", "{4DCD0420-1168-4B77-86DB-6196EE4BD491}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.ControlGallery.iOS", "Xamarin.Forms.ControlGallery.iOS\Xamarin.Forms.ControlGallery.iOS.csproj", "{C7131F14-274F-4B55-ACA9-E81731AD012F}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Forwarders", "Forwarders", "{5A2DADBC-9510-4DD1-BE58-01501F2DF65D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Platform.Android (Forwarders)", "Stubs\Xamarin.Forms.Platform.Android\Xamarin.Forms.Platform.Android (Forwarders).csproj", "{6E53FEB1-1100-46AE-8013-17BBA35CC197}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Platform.iOS (Forwarders)", "Stubs\Xamarin.Forms.Platform.iOS\Xamarin.Forms.Platform.iOS (Forwarders).csproj", "{39B3457F-01D8-43D0-8E84-D8C4F73CF48D}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Xamarin.Forms.Controls.Issues", "Xamarin.Forms.Controls.Issues", "{B2927DF0-F98E-45C8-A917-27941B2B6838}" +EndProject +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Xamarin.Forms.Controls.Issues.Shared", "Xamarin.Forms.Controls.Issues\Xamarin.Forms.Controls.Issues.Shared\Xamarin.Forms.Controls.Issues.Shared.shproj", "{0F0DB9CC-EA65-429C-9363-38624BF8F49C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.ControlGallery.WindowsUniversal", "Xamarin.Forms.ControlGallery.WindowsUniversal\Xamarin.Forms.ControlGallery.WindowsUniversal.csproj", "{AC257966-9368-478A-9DF4-F0D28E320FE3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Platform.UAP", "Xamarin.Forms.Platform.UAP\Xamarin.Forms.Platform.UAP.csproj", "{00D8D049-FFAA-4759-8FC9-1ECA30777F72}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Maps.UWP", "Xamarin.Forms.Maps.UWP\Xamarin.Forms.Maps.UWP.csproj", "{04D89A60-78EF-4A32-AE17-87E47E0233A5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Core.Windows.UITests", "Xamarin.Forms.Core.Windows.UITests\Xamarin.Forms.Core.Windows.UITests.csproj", "{0A39A74B-6F7A-4D41-84F2-B0CCDCE899DF}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Pages", "Xamarin.Forms.Pages\Xamarin.Forms.Pages.csproj", "{D6133DBD-6C60-4BD5-BEA2-07E0A3927C31}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Pages.UnitTests", "Xamarin.Forms.Pages.UnitTests\Xamarin.Forms.Pages.UnitTests.csproj", "{447DC60E-C485-4427-8CF7-50074C6B61DE}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Pages Gallery", "Pages Gallery", "{80BAC3FB-357A-4D05-A050-9F234DF49C97}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PagesGallery", "PagesGallery\PagesGallery\PagesGallery.csproj", "{7B5F9E6A-6334-4C74-9B77-A55B3DA60E41}" + ProjectSection(ProjectDependencies) = postProject + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7} = {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PagesGallery.Droid", "PagesGallery\PagesGallery.Droid\PagesGallery.Droid.csproj", "{5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PagesGallery.UWP", "PagesGallery\PagesGallery.UWP\PagesGallery.UWP.csproj", "{95FEB8D4-D57E-4B96-A8D8-59D241C0501B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Platform.Android.AppLinks", "Xamarin.Forms.Platform.Android.AppLinks\Xamarin.Forms.Platform.Android.AppLinks.csproj", "{42DB052E-0909-45D2-8240-187F99F393FB}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Pages.Azure", "Xamarin.Forms.Pages.Azure\Xamarin.Forms.Pages.Azure.csproj", "{C9696465-7657-4843-872E-3C01891C4A9B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PagesGallery.iOS", "PagesGallery\PagesGallery.iOS\PagesGallery.iOS.csproj", "{392156B2-760A-4EE3-A822-CABD3238A21D}" +EndProject +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Xamarin.Forms.Core.UITests.Shared", "Xamarin.Forms.Core.UITests.Shared\Xamarin.Forms.Core.UITests.Shared.shproj", "{E175485B-3C8C-47D7-8DD5-F7FED627EB25}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "EmbeddingTestBeds", "EmbeddingTestBeds", "{406DE4B0-F541-4092-B0EE-F0A20E9A89F5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Embedding.Droid", "EmbeddingTestBeds\Embedding.Droid\Embedding.Droid.csproj", "{0C902203-D56E-4F7E-9CE6-E23C701B628D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Embedding.XF", "EmbeddingTestBeds\Embedding.XF\Embedding.XF.csproj", "{02EAC00F-0425-4959-AC64-E921627265CA}" + ProjectSection(ProjectDependencies) = postProject + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7} = {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Platform.MacOS", "Xamarin.Forms.Platform.MacOS\Xamarin.Forms.Platform.MacOS.csproj", "{C0059C45-EA1E-42F3-8A0E-794BB547EC3C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.ControlGallery.MacOS", "Xamarin.Forms.ControlGallery.MacOS\Xamarin.Forms.ControlGallery.MacOS.csproj", "{8D3DFCB7-DB10-40E5-ACFE-411AAA85520D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Maps.MacOS", "Xamarin.Forms.Maps.MacOS\Xamarin.Forms.Maps.MacOS.csproj", "{C3C24A6D-2D0C-4053-9FCC-E54FF9CA1884}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Core.macOS.UITests", "Xamarin.Forms.Core.macOS.UITests\Xamarin.Forms.Core.macOS.UITests.csproj", "{9DB0CABB-24CC-4538-88EC-6E0A0FE40248}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Embedding.iOS", "EmbeddingTestBeds\Embedding.iOS\Embedding.iOS.csproj", "{29DDE791-5608-4072-8E1C-D37D72992A83}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Embedding.UWP", "EmbeddingTestBeds\Embedding.UWP\Embedding.UWP.csproj", "{73A22D45-2350-457D-A191-F888148E4280}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Platform.GTK", "Xamarin.Forms.Platform.GTK\Xamarin.Forms.Platform.GTK.csproj", "{0D497738-2598-431D-8CAF-8FBF3D9F99EC}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Maps.Tizen", "Xamarin.Forms.Maps.Tizen\Xamarin.Forms.Maps.Tizen.csproj", "{699C79F6-1D91-4DBF-B817-E8CFFD6263BB}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Platform.Tizen", "Xamarin.Forms.Platform.Tizen\Xamarin.Forms.Platform.Tizen.csproj", "{83790029-272E-45AF-A41D-E7716684E5B8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.ControlGallery.GTK", "Xamarin.Forms.ControlGallery.GTK\Xamarin.Forms.ControlGallery.GTK.csproj", "{03A51E5B-0A1E-41F0-AAE3-4B19406F7340}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Maps.GTK", "Xamarin.Forms.Maps.GTK\Xamarin.Forms.Maps.GTK.csproj", "{A9772BB1-0E17-42F5-A6DB-60BFCCBFDB9D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Platform.WPF", "Xamarin.Forms.Platform.WPF\Xamarin.Forms.Platform.WPF.csproj", "{140BC260-8B15-4D3A-B1B0-DDD8072918CC}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Maps.WPF", "Xamarin.Forms.Maps.WPF\Xamarin.Forms.Maps.WPF.csproj", "{89B0DB73-A32E-447C-9390-A2A59D89B2E4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.ControlGallery.WPF", "Xamarin.Forms.ControlGallery.WPF\Xamarin.Forms.ControlGallery.WPF.csproj", "{411B960D-6D30-4079-83B2-ABB9987D2EDF}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PagesGallery.Tizen", "PagesGallery\PagesGallery.Tizen\PagesGallery.Tizen.csproj", "{AFF3AD0D-7181-4551-A29C-8701FE3E6753}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.ControlGallery.Tizen", "Xamarin.Forms.ControlGallery.Tizen\Xamarin.Forms.ControlGallery.Tizen.csproj", "{8C7F0087-4031-4297-A651-6ED55F7B88BA}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Embedding.Tizen", "EmbeddingTestBeds\Embedding.Tizen\Embedding.Tizen.csproj", "{C5C1D2BE-DB01-4B2E-BCA5-2C9A9691E3F1}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Platform", "Xamarin.Forms.Platform\Xamarin.Forms.Platform.csproj", "{D31A6537-ED9C-4EBD-B231-A8D4FE44126A}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Xamarin.Flex", "Xamarin.Flex", "{CA1DF598-3650-4A7B-A065-492C26009295}" +EndProject +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Xamarin.Flex", "Xamarin.Flex\Xamarin.Flex.shproj", "{A6703C7D-D362-452A-A7A5-73771194D38C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Core.Design", "Xamarin.Forms.Core.Design\Xamarin.Forms.Core.Design.csproj", "{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Maps.Design", "Xamarin.Forms.Maps.Design\Xamarin.Forms.Maps.Design.csproj", "{C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Xaml.Design", "Xamarin.Forms.Xaml.Design\Xamarin.Forms.Xaml.Design.csproj", "{65BC4888-CC59-428A-9B75-540CF1C09480}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "XFCorePostProcessor.Tasks", "XFCorePostProcessor.Tasks\XFCorePostProcessor.Tasks.csproj", "{5BBF4A3F-4AD1-47FD-B250-05EA793F939D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Platform.Tizen (Forwarders)", "Stubs\Xamarin.Forms.Platform.Tizen\Xamarin.Forms.Platform.Tizen (Forwarders).csproj", "{39B3457F-01D8-43D0-8E84-D8C4F73CF48E}" + ProjectSection(ProjectDependencies) = postProject + {83790029-272E-45AF-A41D-E7716684E5B8} = {83790029-272E-45AF-A41D-E7716684E5B8} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Core.Tizen.UITests", "Xamarin.Forms.Core.Tizen.UITests\Xamarin.Forms.Core.Tizen.UITests.csproj", "{C4D726E7-6277-48D3-96C1-8EA8AD46C6F0}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Appium", "Appium", "{8C294502-69DF-478B-BDA3-B40A8E9AA03E}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Appium", "..\samsung\Tizen.Appium\Tizen.Appium.csproj", "{0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556}" +EndProject +Global + GlobalSection(SharedMSBuildProjectFiles) = preSolution + Xamarin.Forms.Controls.Issues\Xamarin.Forms.Controls.Issues.Shared\Xamarin.Forms.Controls.Issues.Shared.projitems*{0a39a74b-6f7a-4d41-84f2-b0ccdce899df}*SharedItemsImports = 4 + Xamarin.Forms.Core.UITests.Shared\Xamarin.Forms.Core.UITests.projitems*{0a39a74b-6f7a-4d41-84f2-b0ccdce899df}*SharedItemsImports = 4 + Xamarin.Forms.Controls.Issues\Xamarin.Forms.Controls.Issues.Shared\Xamarin.Forms.Controls.Issues.Shared.projitems*{0f0db9cc-ea65-429c-9363-38624bf8f49c}*SharedItemsImports = 13 + Xamarin.Forms.Controls.Issues\Xamarin.Forms.Controls.Issues.Shared\Xamarin.Forms.Controls.Issues.Shared.projitems*{9db0cabb-24cc-4538-88ec-6e0a0fe40248}*SharedItemsImports = 4 + Xamarin.Forms.Core.UITests.Shared\Xamarin.Forms.Core.UITests.projitems*{9db0cabb-24cc-4538-88ec-6e0a0fe40248}*SharedItemsImports = 4 + Xamarin.Forms.Controls.Issues\Xamarin.Forms.Controls.Issues.Shared\Xamarin.Forms.Controls.Issues.Shared.projitems*{a34ebe01-25bf-4e69-a2dc-2288dc625541}*SharedItemsImports = 4 + Xamarin.Forms.Core.UITests.Shared\Xamarin.Forms.Core.UITests.projitems*{a34ebe01-25bf-4e69-a2dc-2288dc625541}*SharedItemsImports = 4 + Xamarin.Flex\Xamarin.Flex.projitems*{a6703c7d-d362-452a-a7a5-73771194d38c}*SharedItemsImports = 13 + Xamarin.Forms.Controls.Issues\Xamarin.Forms.Controls.Issues.Shared\Xamarin.Forms.Controls.Issues.Shared.projitems*{c4d726e7-6277-48d3-96c1-8ea8ad46c6f0}*SharedItemsImports = 4 + Xamarin.Forms.Core.UITests.Shared\Xamarin.Forms.Core.UITests.projitems*{c4d726e7-6277-48d3-96c1-8ea8ad46c6f0}*SharedItemsImports = 4 + Xamarin.Forms.Controls.Issues\Xamarin.Forms.Controls.Issues.Shared\Xamarin.Forms.Controls.Issues.Shared.projitems*{cb9c96ce-125c-4a68-b6a1-c3ff1fbf93e1}*SharedItemsImports = 4 + Xamarin.Forms.Core.UITests.Shared\Xamarin.Forms.Core.UITests.projitems*{e175485b-3c8c-47d7-8dd5-f7fed627eb25}*SharedItemsImports = 13 + Xamarin.Forms.Controls.Issues\Xamarin.Forms.Controls.Issues.Shared\Xamarin.Forms.Controls.Issues.Shared.projitems*{eadd8100-b3ae-4a31-92c4-267a64a1c6eb}*SharedItemsImports = 4 + Xamarin.Forms.Core.UITests.Shared\Xamarin.Forms.Core.UITests.projitems*{eadd8100-b3ae-4a31-92c4-267a64a1c6eb}*SharedItemsImports = 4 + EndGlobalSection + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|ARM = Debug|ARM + 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|iPhone = Release|iPhone + Release|iPhoneSimulator = Release|iPhoneSimulator + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|Any CPU.Build.0 = Debug|Any CPU + {271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|ARM.ActiveCfg = Debug|Any CPU + {271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|ARM.Build.0 = Debug|Any CPU + {271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|iPhone.Build.0 = Debug|Any CPU + {271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|x64.ActiveCfg = Debug|Any CPU + {271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|x64.Build.0 = Debug|Any CPU + {271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|x86.ActiveCfg = Debug|Any CPU + {271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|x86.Build.0 = Debug|Any CPU + {271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|Any CPU.ActiveCfg = Release|Any CPU + {271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|Any CPU.Build.0 = Release|Any CPU + {271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|ARM.ActiveCfg = Release|Any CPU + {271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|ARM.Build.0 = Release|Any CPU + {271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|iPhone.ActiveCfg = Release|Any CPU + {271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|iPhone.Build.0 = Release|Any CPU + {271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|x64.ActiveCfg = Release|Any CPU + {271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|x64.Build.0 = Release|Any CPU + {271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|x86.ActiveCfg = Release|Any CPU + {271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|x86.Build.0 = Release|Any CPU + {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|ARM.ActiveCfg = Debug|Any CPU + {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|ARM.Build.0 = Debug|Any CPU + {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|iPhone.Build.0 = Debug|Any CPU + {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|x64.ActiveCfg = Debug|Any CPU + {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|x64.Build.0 = Debug|Any CPU + {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|x86.ActiveCfg = Debug|Any CPU + {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|x86.Build.0 = Debug|Any CPU + {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|Any CPU.Build.0 = Release|Any CPU + {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|ARM.ActiveCfg = Release|Any CPU + {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|ARM.Build.0 = Release|Any CPU + {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|iPhone.ActiveCfg = Release|Any CPU + {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|iPhone.Build.0 = Release|Any CPU + {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|x64.ActiveCfg = Release|Any CPU + {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|x64.Build.0 = Release|Any CPU + {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|x86.ActiveCfg = Release|Any CPU + {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|x86.Build.0 = Release|Any CPU + {00259593-A283-47A5-ACB7-9C3819B16364}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {00259593-A283-47A5-ACB7-9C3819B16364}.Debug|Any CPU.Build.0 = Debug|Any CPU + {00259593-A283-47A5-ACB7-9C3819B16364}.Debug|ARM.ActiveCfg = Debug|Any CPU + {00259593-A283-47A5-ACB7-9C3819B16364}.Debug|ARM.Build.0 = Debug|Any CPU + {00259593-A283-47A5-ACB7-9C3819B16364}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {00259593-A283-47A5-ACB7-9C3819B16364}.Debug|iPhone.Build.0 = Debug|Any CPU + {00259593-A283-47A5-ACB7-9C3819B16364}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {00259593-A283-47A5-ACB7-9C3819B16364}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {00259593-A283-47A5-ACB7-9C3819B16364}.Debug|x64.ActiveCfg = Debug|Any CPU + {00259593-A283-47A5-ACB7-9C3819B16364}.Debug|x64.Build.0 = Debug|Any CPU + {00259593-A283-47A5-ACB7-9C3819B16364}.Debug|x86.ActiveCfg = Debug|Any CPU + {00259593-A283-47A5-ACB7-9C3819B16364}.Debug|x86.Build.0 = Debug|Any CPU + {00259593-A283-47A5-ACB7-9C3819B16364}.Release|Any CPU.ActiveCfg = Release|Any CPU + {00259593-A283-47A5-ACB7-9C3819B16364}.Release|Any CPU.Build.0 = Release|Any CPU + {00259593-A283-47A5-ACB7-9C3819B16364}.Release|ARM.ActiveCfg = Release|Any CPU + {00259593-A283-47A5-ACB7-9C3819B16364}.Release|ARM.Build.0 = Release|Any CPU + {00259593-A283-47A5-ACB7-9C3819B16364}.Release|iPhone.ActiveCfg = Release|Any CPU + {00259593-A283-47A5-ACB7-9C3819B16364}.Release|iPhone.Build.0 = Release|Any CPU + {00259593-A283-47A5-ACB7-9C3819B16364}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {00259593-A283-47A5-ACB7-9C3819B16364}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {00259593-A283-47A5-ACB7-9C3819B16364}.Release|x64.ActiveCfg = Release|Any CPU + {00259593-A283-47A5-ACB7-9C3819B16364}.Release|x64.Build.0 = Release|Any CPU + {00259593-A283-47A5-ACB7-9C3819B16364}.Release|x86.ActiveCfg = Release|Any CPU + {00259593-A283-47A5-ACB7-9C3819B16364}.Release|x86.Build.0 = Release|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|ARM.ActiveCfg = Debug|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|ARM.Build.0 = Debug|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|ARM.Deploy.0 = Debug|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|iPhone.Build.0 = Debug|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|iPhone.Deploy.0 = Debug|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|x64.ActiveCfg = Debug|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|x64.Build.0 = Debug|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|x64.Deploy.0 = Debug|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|x86.ActiveCfg = Debug|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|x86.Build.0 = Debug|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|x86.Deploy.0 = Debug|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|Any CPU.Build.0 = Release|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|Any CPU.Deploy.0 = Release|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|ARM.ActiveCfg = Release|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|ARM.Build.0 = Release|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|ARM.Deploy.0 = Release|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|iPhone.ActiveCfg = Release|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|iPhone.Build.0 = Release|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|iPhone.Deploy.0 = Release|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|x64.ActiveCfg = Release|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|x64.Build.0 = Release|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|x64.Deploy.0 = Release|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|x86.ActiveCfg = Release|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|x86.Build.0 = Release|Any CPU + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|x86.Deploy.0 = Release|Any CPU + {4B14D295-C09B-4C38-B880-7CC768E50585}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4B14D295-C09B-4C38-B880-7CC768E50585}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4B14D295-C09B-4C38-B880-7CC768E50585}.Debug|ARM.ActiveCfg = Debug|Any CPU + {4B14D295-C09B-4C38-B880-7CC768E50585}.Debug|ARM.Build.0 = Debug|Any CPU + {4B14D295-C09B-4C38-B880-7CC768E50585}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {4B14D295-C09B-4C38-B880-7CC768E50585}.Debug|iPhone.Build.0 = Debug|Any CPU + {4B14D295-C09B-4C38-B880-7CC768E50585}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {4B14D295-C09B-4C38-B880-7CC768E50585}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {4B14D295-C09B-4C38-B880-7CC768E50585}.Debug|x64.ActiveCfg = Debug|Any CPU + {4B14D295-C09B-4C38-B880-7CC768E50585}.Debug|x64.Build.0 = Debug|Any CPU + {4B14D295-C09B-4C38-B880-7CC768E50585}.Debug|x86.ActiveCfg = Debug|Any CPU + {4B14D295-C09B-4C38-B880-7CC768E50585}.Debug|x86.Build.0 = Debug|Any CPU + {4B14D295-C09B-4C38-B880-7CC768E50585}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4B14D295-C09B-4C38-B880-7CC768E50585}.Release|ARM.ActiveCfg = Release|Any CPU + {4B14D295-C09B-4C38-B880-7CC768E50585}.Release|ARM.Build.0 = Release|Any CPU + {4B14D295-C09B-4C38-B880-7CC768E50585}.Release|iPhone.ActiveCfg = Release|Any CPU + {4B14D295-C09B-4C38-B880-7CC768E50585}.Release|iPhone.Build.0 = Release|Any CPU + {4B14D295-C09B-4C38-B880-7CC768E50585}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {4B14D295-C09B-4C38-B880-7CC768E50585}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {4B14D295-C09B-4C38-B880-7CC768E50585}.Release|x64.ActiveCfg = Release|Any CPU + {4B14D295-C09B-4C38-B880-7CC768E50585}.Release|x64.Build.0 = Release|Any CPU + {4B14D295-C09B-4C38-B880-7CC768E50585}.Release|x86.ActiveCfg = Release|Any CPU + {4B14D295-C09B-4C38-B880-7CC768E50585}.Release|x86.Build.0 = Release|Any CPU + {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|ARM.ActiveCfg = Debug|Any CPU + {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|ARM.Build.0 = Debug|Any CPU + {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|iPhone.Build.0 = Debug|Any CPU + {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|x64.ActiveCfg = Debug|Any CPU + {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|x64.Build.0 = Debug|Any CPU + {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|x86.ActiveCfg = Debug|Any CPU + {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|x86.Build.0 = Debug|Any CPU + {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|Any CPU.Build.0 = Release|Any CPU + {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|ARM.ActiveCfg = Release|Any CPU + {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|ARM.Build.0 = Release|Any CPU + {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|iPhone.ActiveCfg = Release|Any CPU + {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|iPhone.Build.0 = Release|Any CPU + {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|x64.ActiveCfg = Release|Any CPU + {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|x64.Build.0 = Release|Any CPU + {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|x86.ActiveCfg = Release|Any CPU + {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|x86.Build.0 = Release|Any CPU + {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Debug|ARM.ActiveCfg = Debug|Any CPU + {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Debug|ARM.Build.0 = Debug|Any CPU + {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Debug|iPhone.Build.0 = Debug|Any CPU + {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Debug|x64.ActiveCfg = Debug|Any CPU + {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Debug|x64.Build.0 = Debug|Any CPU + {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Debug|x86.ActiveCfg = Debug|Any CPU + {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Debug|x86.Build.0 = Debug|Any CPU + {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Release|Any CPU.Build.0 = Release|Any CPU + {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Release|ARM.ActiveCfg = Release|Any CPU + {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Release|ARM.Build.0 = Release|Any CPU + {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Release|iPhone.ActiveCfg = Release|Any CPU + {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Release|iPhone.Build.0 = Release|Any CPU + {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Release|x64.ActiveCfg = Release|Any CPU + {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Release|x64.Build.0 = Release|Any CPU + {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Release|x86.ActiveCfg = Release|Any CPU + {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Release|x86.Build.0 = Release|Any CPU + {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Debug|ARM.ActiveCfg = Debug|Any CPU + {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Debug|ARM.Build.0 = Debug|Any CPU + {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Debug|iPhone.Build.0 = Debug|Any CPU + {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Debug|x64.ActiveCfg = Debug|Any CPU + {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Debug|x64.Build.0 = Debug|Any CPU + {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Debug|x86.ActiveCfg = Debug|Any CPU + {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Debug|x86.Build.0 = Debug|Any CPU + {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Release|Any CPU.Build.0 = Release|Any CPU + {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Release|ARM.ActiveCfg = Release|Any CPU + {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Release|ARM.Build.0 = Release|Any CPU + {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Release|iPhone.ActiveCfg = Release|Any CPU + {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Release|iPhone.Build.0 = Release|Any CPU + {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Release|x64.ActiveCfg = Release|Any CPU + {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Release|x64.Build.0 = Release|Any CPU + {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Release|x86.ActiveCfg = Release|Any CPU + {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Release|x86.Build.0 = Release|Any CPU + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Debug|ARM.ActiveCfg = Debug|Any CPU + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Debug|ARM.Build.0 = Debug|Any CPU + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Debug|iPhone.Build.0 = Debug|Any CPU + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Debug|x64.ActiveCfg = Debug|Any CPU + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Debug|x64.Build.0 = Debug|Any CPU + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Debug|x86.ActiveCfg = Debug|Any CPU + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Debug|x86.Build.0 = Debug|Any CPU + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Release|Any CPU.Build.0 = Release|Any CPU + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Release|ARM.ActiveCfg = Release|Any CPU + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Release|ARM.Build.0 = Release|Any CPU + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Release|iPhone.ActiveCfg = Release|Any CPU + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Release|iPhone.Build.0 = Release|Any CPU + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Release|x64.ActiveCfg = Release|Any CPU + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Release|x64.Build.0 = Release|Any CPU + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Release|x86.ActiveCfg = Release|Any CPU + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Release|x86.Build.0 = Release|Any CPU + {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Debug|ARM.ActiveCfg = Debug|Any CPU + {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Debug|ARM.Build.0 = Debug|Any CPU + {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Debug|iPhone.Build.0 = Debug|Any CPU + {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Debug|x64.ActiveCfg = Debug|Any CPU + {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Debug|x64.Build.0 = Debug|Any CPU + {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Debug|x86.ActiveCfg = Debug|Any CPU + {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Debug|x86.Build.0 = Debug|Any CPU + {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Release|Any CPU.Build.0 = Release|Any CPU + {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Release|ARM.ActiveCfg = Release|Any CPU + {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Release|ARM.Build.0 = Release|Any CPU + {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Release|iPhone.ActiveCfg = Release|Any CPU + {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Release|iPhone.Build.0 = Release|Any CPU + {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Release|x64.ActiveCfg = Release|Any CPU + {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Release|x64.Build.0 = Release|Any CPU + {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Release|x86.ActiveCfg = Release|Any CPU + {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Release|x86.Build.0 = Release|Any CPU + {ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|ARM.ActiveCfg = Debug|Any CPU + {ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|ARM.Build.0 = Debug|Any CPU + {ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|iPhone.Build.0 = Debug|Any CPU + {ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|x64.ActiveCfg = Debug|Any CPU + {ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|x64.Build.0 = Debug|Any CPU + {ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|x86.ActiveCfg = Debug|Any CPU + {ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|x86.Build.0 = Debug|Any CPU + {ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|Any CPU.Build.0 = Release|Any CPU + {ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|ARM.ActiveCfg = Release|Any CPU + {ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|ARM.Build.0 = Release|Any CPU + {ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|iPhone.ActiveCfg = Release|Any CPU + {ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|iPhone.Build.0 = Release|Any CPU + {ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|x64.ActiveCfg = Release|Any CPU + {ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|x64.Build.0 = Release|Any CPU + {ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|x86.ActiveCfg = Release|Any CPU + {ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|x86.Build.0 = Release|Any CPU + {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Debug|ARM.ActiveCfg = Debug|Any CPU + {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Debug|ARM.Build.0 = Debug|Any CPU + {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Debug|iPhone.Build.0 = Debug|Any CPU + {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Debug|x64.ActiveCfg = Debug|Any CPU + {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Debug|x64.Build.0 = Debug|Any CPU + {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Debug|x86.ActiveCfg = Debug|Any CPU + {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Debug|x86.Build.0 = Debug|Any CPU + {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Release|Any CPU.Build.0 = Release|Any CPU + {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Release|ARM.ActiveCfg = Release|Any CPU + {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Release|ARM.Build.0 = Release|Any CPU + {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Release|iPhone.ActiveCfg = Release|Any CPU + {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Release|iPhone.Build.0 = Release|Any CPU + {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Release|x64.ActiveCfg = Release|Any CPU + {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Release|x64.Build.0 = Release|Any CPU + {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Release|x86.ActiveCfg = Release|Any CPU + {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Release|x86.Build.0 = Release|Any CPU + {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|ARM.ActiveCfg = Debug|Any CPU + {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|ARM.Build.0 = Debug|Any CPU + {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|iPhone.Build.0 = Debug|Any CPU + {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|x64.ActiveCfg = Debug|Any CPU + {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|x64.Build.0 = Debug|Any CPU + {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|x86.ActiveCfg = Debug|Any CPU + {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|x86.Build.0 = Debug|Any CPU + {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|Any CPU.Build.0 = Release|Any CPU + {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|ARM.ActiveCfg = Release|Any CPU + {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|ARM.Build.0 = Release|Any CPU + {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|iPhone.ActiveCfg = Release|Any CPU + {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|iPhone.Build.0 = Release|Any CPU + {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|x64.ActiveCfg = Release|Any CPU + {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|x64.Build.0 = Release|Any CPU + {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|x86.ActiveCfg = Release|Any CPU + {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|x86.Build.0 = Release|Any CPU + {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|ARM.ActiveCfg = Debug|Any CPU + {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|ARM.Build.0 = Debug|Any CPU + {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|iPhone.Build.0 = Debug|Any CPU + {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|x64.ActiveCfg = Debug|Any CPU + {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|x64.Build.0 = Debug|Any CPU + {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|x86.ActiveCfg = Debug|Any CPU + {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|x86.Build.0 = Debug|Any CPU + {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|Any CPU.Build.0 = Release|Any CPU + {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|ARM.ActiveCfg = Release|Any CPU + {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|ARM.Build.0 = Release|Any CPU + {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|iPhone.ActiveCfg = Release|Any CPU + {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|iPhone.Build.0 = Release|Any CPU + {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|x64.ActiveCfg = Release|Any CPU + {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|x64.Build.0 = Release|Any CPU + {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|x86.ActiveCfg = Release|Any CPU + {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|x86.Build.0 = Release|Any CPU + {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|ARM.ActiveCfg = Debug|Any CPU + {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|ARM.Build.0 = Debug|Any CPU + {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|iPhone.Build.0 = Debug|Any CPU + {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|x64.ActiveCfg = Debug|Any CPU + {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|x64.Build.0 = Debug|Any CPU + {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|x86.ActiveCfg = Debug|Any CPU + {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|x86.Build.0 = Debug|Any CPU + {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|Any CPU.Build.0 = Release|Any CPU + {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|ARM.ActiveCfg = Release|Any CPU + {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|ARM.Build.0 = Release|Any CPU + {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|iPhone.ActiveCfg = Release|Any CPU + {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|iPhone.Build.0 = Release|Any CPU + {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|x64.ActiveCfg = Release|Any CPU + {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|x64.Build.0 = Release|Any CPU + {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|x86.ActiveCfg = Release|Any CPU + {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|x86.Build.0 = Release|Any CPU + {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Debug|ARM.ActiveCfg = Debug|Any CPU + {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Debug|ARM.Build.0 = Debug|Any CPU + {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Debug|iPhone.Build.0 = Debug|Any CPU + {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Debug|x64.ActiveCfg = Debug|Any CPU + {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Debug|x64.Build.0 = Debug|Any CPU + {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Debug|x86.ActiveCfg = Debug|Any CPU + {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Debug|x86.Build.0 = Debug|Any CPU + {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Release|Any CPU.Build.0 = Release|Any CPU + {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Release|ARM.ActiveCfg = Release|Any CPU + {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Release|ARM.Build.0 = Release|Any CPU + {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Release|iPhone.ActiveCfg = Release|Any CPU + {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Release|iPhone.Build.0 = Release|Any CPU + {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Release|x64.ActiveCfg = Release|Any CPU + {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Release|x64.Build.0 = Release|Any CPU + {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Release|x86.ActiveCfg = Release|Any CPU + {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Release|x86.Build.0 = Release|Any CPU + {C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator + {C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator + {C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|ARM.ActiveCfg = Debug|iPhone + {C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|ARM.Build.0 = Debug|iPhone + {C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|iPhone.ActiveCfg = Debug|iPhone + {C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|iPhone.Build.0 = Debug|iPhone + {C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator + {C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator + {C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|x64.ActiveCfg = Debug|iPhoneSimulator + {C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|x64.Build.0 = Debug|iPhoneSimulator + {C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator + {C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|x86.Build.0 = Debug|iPhoneSimulator + {C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator + {C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|Any CPU.Build.0 = Release|iPhoneSimulator + {C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|ARM.ActiveCfg = Release|iPhone + {C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|ARM.Build.0 = Release|iPhone + {C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|iPhone.ActiveCfg = Release|iPhone + {C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|iPhone.Build.0 = Release|iPhone + {C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator + {C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator + {C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|x64.ActiveCfg = Release|iPhoneSimulator + {C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|x64.Build.0 = Release|iPhoneSimulator + {C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|x86.ActiveCfg = Release|iPhoneSimulator + {C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|x86.Build.0 = Release|iPhoneSimulator + {6E53FEB1-1100-46AE-8013-17BBA35CC197}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6E53FEB1-1100-46AE-8013-17BBA35CC197}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6E53FEB1-1100-46AE-8013-17BBA35CC197}.Debug|ARM.ActiveCfg = Debug|Any CPU + {6E53FEB1-1100-46AE-8013-17BBA35CC197}.Debug|ARM.Build.0 = Debug|Any CPU + {6E53FEB1-1100-46AE-8013-17BBA35CC197}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {6E53FEB1-1100-46AE-8013-17BBA35CC197}.Debug|iPhone.Build.0 = Debug|Any CPU + {6E53FEB1-1100-46AE-8013-17BBA35CC197}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {6E53FEB1-1100-46AE-8013-17BBA35CC197}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {6E53FEB1-1100-46AE-8013-17BBA35CC197}.Debug|x64.ActiveCfg = Debug|Any CPU + {6E53FEB1-1100-46AE-8013-17BBA35CC197}.Debug|x64.Build.0 = Debug|Any CPU + {6E53FEB1-1100-46AE-8013-17BBA35CC197}.Debug|x86.ActiveCfg = Debug|Any CPU + {6E53FEB1-1100-46AE-8013-17BBA35CC197}.Debug|x86.Build.0 = Debug|Any CPU + {6E53FEB1-1100-46AE-8013-17BBA35CC197}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6E53FEB1-1100-46AE-8013-17BBA35CC197}.Release|Any CPU.Build.0 = Release|Any CPU + {6E53FEB1-1100-46AE-8013-17BBA35CC197}.Release|ARM.ActiveCfg = Release|Any CPU + {6E53FEB1-1100-46AE-8013-17BBA35CC197}.Release|ARM.Build.0 = Release|Any CPU + {6E53FEB1-1100-46AE-8013-17BBA35CC197}.Release|iPhone.ActiveCfg = Release|Any CPU + {6E53FEB1-1100-46AE-8013-17BBA35CC197}.Release|iPhone.Build.0 = Release|Any CPU + {6E53FEB1-1100-46AE-8013-17BBA35CC197}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {6E53FEB1-1100-46AE-8013-17BBA35CC197}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {6E53FEB1-1100-46AE-8013-17BBA35CC197}.Release|x64.ActiveCfg = Release|Any CPU + {6E53FEB1-1100-46AE-8013-17BBA35CC197}.Release|x64.Build.0 = Release|Any CPU + {6E53FEB1-1100-46AE-8013-17BBA35CC197}.Release|x86.ActiveCfg = Release|Any CPU + {6E53FEB1-1100-46AE-8013-17BBA35CC197}.Release|x86.Build.0 = Release|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48D}.Debug|ARM.ActiveCfg = Debug|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48D}.Debug|ARM.Build.0 = Debug|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48D}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48D}.Debug|iPhone.Build.0 = Debug|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48D}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48D}.Debug|x64.ActiveCfg = Debug|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48D}.Debug|x64.Build.0 = Debug|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48D}.Debug|x86.ActiveCfg = Debug|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48D}.Debug|x86.Build.0 = Debug|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48D}.Release|Any CPU.Build.0 = Release|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48D}.Release|ARM.ActiveCfg = Release|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48D}.Release|ARM.Build.0 = Release|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48D}.Release|iPhone.ActiveCfg = Release|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48D}.Release|iPhone.Build.0 = Release|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48D}.Release|x64.ActiveCfg = Release|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48D}.Release|x64.Build.0 = Release|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48D}.Release|x86.ActiveCfg = Release|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48D}.Release|x86.Build.0 = Release|Any CPU + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|Any CPU.ActiveCfg = Debug|x86 + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|Any CPU.Build.0 = Debug|x86 + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|Any CPU.Deploy.0 = Debug|x86 + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|ARM.ActiveCfg = Debug|ARM + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|ARM.Build.0 = Debug|ARM + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|ARM.Deploy.0 = Debug|ARM + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|iPhone.ActiveCfg = Debug|ARM + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86 + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|x64.ActiveCfg = Debug|x64 + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|x64.Build.0 = Debug|x64 + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|x64.Deploy.0 = Debug|x64 + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|x86.ActiveCfg = Debug|x86 + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|x86.Build.0 = Debug|x86 + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|x86.Deploy.0 = Debug|x86 + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|Any CPU.ActiveCfg = Release|x86 + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|Any CPU.Build.0 = Release|x86 + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|Any CPU.Deploy.0 = Release|x86 + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|ARM.ActiveCfg = Release|ARM + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|ARM.Build.0 = Release|ARM + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|ARM.Deploy.0 = Release|ARM + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|iPhone.ActiveCfg = Release|ARM + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|iPhoneSimulator.ActiveCfg = Release|x86 + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|x64.ActiveCfg = Release|x64 + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|x64.Build.0 = Release|x64 + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|x64.Deploy.0 = Release|x64 + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|x86.ActiveCfg = Release|x86 + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|x86.Build.0 = Release|x86 + {AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|x86.Deploy.0 = Release|x86 + {00D8D049-FFAA-4759-8FC9-1ECA30777F72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {00D8D049-FFAA-4759-8FC9-1ECA30777F72}.Debug|Any CPU.Build.0 = Debug|Any CPU + {00D8D049-FFAA-4759-8FC9-1ECA30777F72}.Debug|ARM.ActiveCfg = Debug|Any CPU + {00D8D049-FFAA-4759-8FC9-1ECA30777F72}.Debug|ARM.Build.0 = Debug|Any CPU + {00D8D049-FFAA-4759-8FC9-1ECA30777F72}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {00D8D049-FFAA-4759-8FC9-1ECA30777F72}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {00D8D049-FFAA-4759-8FC9-1ECA30777F72}.Debug|x64.ActiveCfg = Debug|Any CPU + {00D8D049-FFAA-4759-8FC9-1ECA30777F72}.Debug|x64.Build.0 = Debug|Any CPU + {00D8D049-FFAA-4759-8FC9-1ECA30777F72}.Debug|x86.ActiveCfg = Debug|Any CPU + {00D8D049-FFAA-4759-8FC9-1ECA30777F72}.Debug|x86.Build.0 = Debug|Any CPU + {00D8D049-FFAA-4759-8FC9-1ECA30777F72}.Release|Any CPU.ActiveCfg = Release|Any CPU + {00D8D049-FFAA-4759-8FC9-1ECA30777F72}.Release|Any CPU.Build.0 = Release|Any CPU + {00D8D049-FFAA-4759-8FC9-1ECA30777F72}.Release|ARM.ActiveCfg = Release|Any CPU + {00D8D049-FFAA-4759-8FC9-1ECA30777F72}.Release|ARM.Build.0 = Release|Any CPU + {00D8D049-FFAA-4759-8FC9-1ECA30777F72}.Release|iPhone.ActiveCfg = Release|Any CPU + {00D8D049-FFAA-4759-8FC9-1ECA30777F72}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {00D8D049-FFAA-4759-8FC9-1ECA30777F72}.Release|x64.ActiveCfg = Release|Any CPU + {00D8D049-FFAA-4759-8FC9-1ECA30777F72}.Release|x64.Build.0 = Release|Any CPU + {00D8D049-FFAA-4759-8FC9-1ECA30777F72}.Release|x86.ActiveCfg = Release|Any CPU + {00D8D049-FFAA-4759-8FC9-1ECA30777F72}.Release|x86.Build.0 = Release|Any CPU + {04D89A60-78EF-4A32-AE17-87E47E0233A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {04D89A60-78EF-4A32-AE17-87E47E0233A5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {04D89A60-78EF-4A32-AE17-87E47E0233A5}.Debug|ARM.ActiveCfg = Debug|Any CPU + {04D89A60-78EF-4A32-AE17-87E47E0233A5}.Debug|ARM.Build.0 = Debug|Any CPU + {04D89A60-78EF-4A32-AE17-87E47E0233A5}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {04D89A60-78EF-4A32-AE17-87E47E0233A5}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {04D89A60-78EF-4A32-AE17-87E47E0233A5}.Debug|x64.ActiveCfg = Debug|Any CPU + {04D89A60-78EF-4A32-AE17-87E47E0233A5}.Debug|x64.Build.0 = Debug|Any CPU + {04D89A60-78EF-4A32-AE17-87E47E0233A5}.Debug|x86.ActiveCfg = Debug|Any CPU + {04D89A60-78EF-4A32-AE17-87E47E0233A5}.Debug|x86.Build.0 = Debug|Any CPU + {04D89A60-78EF-4A32-AE17-87E47E0233A5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {04D89A60-78EF-4A32-AE17-87E47E0233A5}.Release|Any CPU.Build.0 = Release|Any CPU + {04D89A60-78EF-4A32-AE17-87E47E0233A5}.Release|ARM.ActiveCfg = Release|Any CPU + {04D89A60-78EF-4A32-AE17-87E47E0233A5}.Release|ARM.Build.0 = Release|Any CPU + {04D89A60-78EF-4A32-AE17-87E47E0233A5}.Release|iPhone.ActiveCfg = Release|Any CPU + {04D89A60-78EF-4A32-AE17-87E47E0233A5}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {04D89A60-78EF-4A32-AE17-87E47E0233A5}.Release|x64.ActiveCfg = Release|Any CPU + {04D89A60-78EF-4A32-AE17-87E47E0233A5}.Release|x64.Build.0 = Release|Any CPU + {04D89A60-78EF-4A32-AE17-87E47E0233A5}.Release|x86.ActiveCfg = Release|Any CPU + {04D89A60-78EF-4A32-AE17-87E47E0233A5}.Release|x86.Build.0 = Release|Any CPU + {0A39A74B-6F7A-4D41-84F2-B0CCDCE899DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0A39A74B-6F7A-4D41-84F2-B0CCDCE899DF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0A39A74B-6F7A-4D41-84F2-B0CCDCE899DF}.Debug|ARM.ActiveCfg = Debug|Any CPU + {0A39A74B-6F7A-4D41-84F2-B0CCDCE899DF}.Debug|ARM.Build.0 = Debug|Any CPU + {0A39A74B-6F7A-4D41-84F2-B0CCDCE899DF}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {0A39A74B-6F7A-4D41-84F2-B0CCDCE899DF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {0A39A74B-6F7A-4D41-84F2-B0CCDCE899DF}.Debug|x64.ActiveCfg = Debug|Any CPU + {0A39A74B-6F7A-4D41-84F2-B0CCDCE899DF}.Debug|x64.Build.0 = Debug|Any CPU + {0A39A74B-6F7A-4D41-84F2-B0CCDCE899DF}.Debug|x86.ActiveCfg = Debug|Any CPU + {0A39A74B-6F7A-4D41-84F2-B0CCDCE899DF}.Debug|x86.Build.0 = Debug|Any CPU + {0A39A74B-6F7A-4D41-84F2-B0CCDCE899DF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0A39A74B-6F7A-4D41-84F2-B0CCDCE899DF}.Release|Any CPU.Build.0 = Release|Any CPU + {0A39A74B-6F7A-4D41-84F2-B0CCDCE899DF}.Release|ARM.ActiveCfg = Release|Any CPU + {0A39A74B-6F7A-4D41-84F2-B0CCDCE899DF}.Release|ARM.Build.0 = Release|Any CPU + {0A39A74B-6F7A-4D41-84F2-B0CCDCE899DF}.Release|iPhone.ActiveCfg = Release|Any CPU + {0A39A74B-6F7A-4D41-84F2-B0CCDCE899DF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {0A39A74B-6F7A-4D41-84F2-B0CCDCE899DF}.Release|x64.ActiveCfg = Release|Any CPU + {0A39A74B-6F7A-4D41-84F2-B0CCDCE899DF}.Release|x64.Build.0 = Release|Any CPU + {0A39A74B-6F7A-4D41-84F2-B0CCDCE899DF}.Release|x86.ActiveCfg = Release|Any CPU + {0A39A74B-6F7A-4D41-84F2-B0CCDCE899DF}.Release|x86.Build.0 = Release|Any CPU + {D6133DBD-6C60-4BD5-BEA2-07E0A3927C31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D6133DBD-6C60-4BD5-BEA2-07E0A3927C31}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D6133DBD-6C60-4BD5-BEA2-07E0A3927C31}.Debug|ARM.ActiveCfg = Debug|Any CPU + {D6133DBD-6C60-4BD5-BEA2-07E0A3927C31}.Debug|ARM.Build.0 = Debug|Any CPU + {D6133DBD-6C60-4BD5-BEA2-07E0A3927C31}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {D6133DBD-6C60-4BD5-BEA2-07E0A3927C31}.Debug|iPhone.Build.0 = Debug|Any CPU + {D6133DBD-6C60-4BD5-BEA2-07E0A3927C31}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {D6133DBD-6C60-4BD5-BEA2-07E0A3927C31}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {D6133DBD-6C60-4BD5-BEA2-07E0A3927C31}.Debug|x64.ActiveCfg = Debug|Any CPU + {D6133DBD-6C60-4BD5-BEA2-07E0A3927C31}.Debug|x64.Build.0 = Debug|Any CPU + {D6133DBD-6C60-4BD5-BEA2-07E0A3927C31}.Debug|x86.ActiveCfg = Debug|Any CPU + {D6133DBD-6C60-4BD5-BEA2-07E0A3927C31}.Debug|x86.Build.0 = Debug|Any CPU + {D6133DBD-6C60-4BD5-BEA2-07E0A3927C31}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D6133DBD-6C60-4BD5-BEA2-07E0A3927C31}.Release|Any CPU.Build.0 = Release|Any CPU + {D6133DBD-6C60-4BD5-BEA2-07E0A3927C31}.Release|ARM.ActiveCfg = Release|Any CPU + {D6133DBD-6C60-4BD5-BEA2-07E0A3927C31}.Release|ARM.Build.0 = Release|Any CPU + {D6133DBD-6C60-4BD5-BEA2-07E0A3927C31}.Release|iPhone.ActiveCfg = Release|Any CPU + {D6133DBD-6C60-4BD5-BEA2-07E0A3927C31}.Release|iPhone.Build.0 = Release|Any CPU + {D6133DBD-6C60-4BD5-BEA2-07E0A3927C31}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {D6133DBD-6C60-4BD5-BEA2-07E0A3927C31}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {D6133DBD-6C60-4BD5-BEA2-07E0A3927C31}.Release|x64.ActiveCfg = Release|Any CPU + {D6133DBD-6C60-4BD5-BEA2-07E0A3927C31}.Release|x64.Build.0 = Release|Any CPU + {D6133DBD-6C60-4BD5-BEA2-07E0A3927C31}.Release|x86.ActiveCfg = Release|Any CPU + {D6133DBD-6C60-4BD5-BEA2-07E0A3927C31}.Release|x86.Build.0 = Release|Any CPU + {447DC60E-C485-4427-8CF7-50074C6B61DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {447DC60E-C485-4427-8CF7-50074C6B61DE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {447DC60E-C485-4427-8CF7-50074C6B61DE}.Debug|ARM.ActiveCfg = Debug|Any CPU + {447DC60E-C485-4427-8CF7-50074C6B61DE}.Debug|ARM.Build.0 = Debug|Any CPU + {447DC60E-C485-4427-8CF7-50074C6B61DE}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {447DC60E-C485-4427-8CF7-50074C6B61DE}.Debug|iPhone.Build.0 = Debug|Any CPU + {447DC60E-C485-4427-8CF7-50074C6B61DE}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {447DC60E-C485-4427-8CF7-50074C6B61DE}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {447DC60E-C485-4427-8CF7-50074C6B61DE}.Debug|x64.ActiveCfg = Debug|Any CPU + {447DC60E-C485-4427-8CF7-50074C6B61DE}.Debug|x64.Build.0 = Debug|Any CPU + {447DC60E-C485-4427-8CF7-50074C6B61DE}.Debug|x86.ActiveCfg = Debug|Any CPU + {447DC60E-C485-4427-8CF7-50074C6B61DE}.Debug|x86.Build.0 = Debug|Any CPU + {447DC60E-C485-4427-8CF7-50074C6B61DE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {447DC60E-C485-4427-8CF7-50074C6B61DE}.Release|Any CPU.Build.0 = Release|Any CPU + {447DC60E-C485-4427-8CF7-50074C6B61DE}.Release|ARM.ActiveCfg = Release|Any CPU + {447DC60E-C485-4427-8CF7-50074C6B61DE}.Release|ARM.Build.0 = Release|Any CPU + {447DC60E-C485-4427-8CF7-50074C6B61DE}.Release|iPhone.ActiveCfg = Release|Any CPU + {447DC60E-C485-4427-8CF7-50074C6B61DE}.Release|iPhone.Build.0 = Release|Any CPU + {447DC60E-C485-4427-8CF7-50074C6B61DE}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {447DC60E-C485-4427-8CF7-50074C6B61DE}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {447DC60E-C485-4427-8CF7-50074C6B61DE}.Release|x64.ActiveCfg = Release|Any CPU + {447DC60E-C485-4427-8CF7-50074C6B61DE}.Release|x64.Build.0 = Release|Any CPU + {447DC60E-C485-4427-8CF7-50074C6B61DE}.Release|x86.ActiveCfg = Release|Any CPU + {447DC60E-C485-4427-8CF7-50074C6B61DE}.Release|x86.Build.0 = Release|Any CPU + {7B5F9E6A-6334-4C74-9B77-A55B3DA60E41}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7B5F9E6A-6334-4C74-9B77-A55B3DA60E41}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7B5F9E6A-6334-4C74-9B77-A55B3DA60E41}.Debug|ARM.ActiveCfg = Debug|Any CPU + {7B5F9E6A-6334-4C74-9B77-A55B3DA60E41}.Debug|ARM.Build.0 = Debug|Any CPU + {7B5F9E6A-6334-4C74-9B77-A55B3DA60E41}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {7B5F9E6A-6334-4C74-9B77-A55B3DA60E41}.Debug|iPhone.Build.0 = Debug|Any CPU + {7B5F9E6A-6334-4C74-9B77-A55B3DA60E41}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {7B5F9E6A-6334-4C74-9B77-A55B3DA60E41}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {7B5F9E6A-6334-4C74-9B77-A55B3DA60E41}.Debug|x64.ActiveCfg = Debug|Any CPU + {7B5F9E6A-6334-4C74-9B77-A55B3DA60E41}.Debug|x64.Build.0 = Debug|Any CPU + {7B5F9E6A-6334-4C74-9B77-A55B3DA60E41}.Debug|x86.ActiveCfg = Debug|Any CPU + {7B5F9E6A-6334-4C74-9B77-A55B3DA60E41}.Debug|x86.Build.0 = Debug|Any CPU + {7B5F9E6A-6334-4C74-9B77-A55B3DA60E41}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7B5F9E6A-6334-4C74-9B77-A55B3DA60E41}.Release|Any CPU.Build.0 = Release|Any CPU + {7B5F9E6A-6334-4C74-9B77-A55B3DA60E41}.Release|ARM.ActiveCfg = Release|Any CPU + {7B5F9E6A-6334-4C74-9B77-A55B3DA60E41}.Release|ARM.Build.0 = Release|Any CPU + {7B5F9E6A-6334-4C74-9B77-A55B3DA60E41}.Release|iPhone.ActiveCfg = Release|Any CPU + {7B5F9E6A-6334-4C74-9B77-A55B3DA60E41}.Release|iPhone.Build.0 = Release|Any CPU + {7B5F9E6A-6334-4C74-9B77-A55B3DA60E41}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {7B5F9E6A-6334-4C74-9B77-A55B3DA60E41}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {7B5F9E6A-6334-4C74-9B77-A55B3DA60E41}.Release|x64.ActiveCfg = Release|Any CPU + {7B5F9E6A-6334-4C74-9B77-A55B3DA60E41}.Release|x64.Build.0 = Release|Any CPU + {7B5F9E6A-6334-4C74-9B77-A55B3DA60E41}.Release|x86.ActiveCfg = Release|Any CPU + {7B5F9E6A-6334-4C74-9B77-A55B3DA60E41}.Release|x86.Build.0 = Release|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Debug|ARM.ActiveCfg = Debug|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Debug|ARM.Build.0 = Debug|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Debug|ARM.Deploy.0 = Debug|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Debug|iPhone.Build.0 = Debug|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Debug|iPhone.Deploy.0 = Debug|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Debug|x64.ActiveCfg = Debug|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Debug|x64.Build.0 = Debug|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Debug|x64.Deploy.0 = Debug|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Debug|x86.ActiveCfg = Debug|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Debug|x86.Build.0 = Debug|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Debug|x86.Deploy.0 = Debug|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Release|Any CPU.Build.0 = Release|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Release|Any CPU.Deploy.0 = Release|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Release|ARM.ActiveCfg = Release|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Release|ARM.Build.0 = Release|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Release|ARM.Deploy.0 = Release|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Release|iPhone.ActiveCfg = Release|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Release|iPhone.Build.0 = Release|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Release|iPhone.Deploy.0 = Release|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Release|x64.ActiveCfg = Release|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Release|x64.Build.0 = Release|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Release|x64.Deploy.0 = Release|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Release|x86.ActiveCfg = Release|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Release|x86.Build.0 = Release|Any CPU + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2}.Release|x86.Deploy.0 = Release|Any CPU + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Debug|Any CPU.ActiveCfg = Debug|x86 + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Debug|Any CPU.Build.0 = Debug|x86 + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Debug|Any CPU.Deploy.0 = Debug|x86 + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Debug|ARM.ActiveCfg = Debug|ARM + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Debug|ARM.Build.0 = Debug|ARM + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Debug|ARM.Deploy.0 = Debug|ARM + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Debug|iPhone.ActiveCfg = Debug|ARM + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86 + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Debug|x64.ActiveCfg = Debug|x64 + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Debug|x64.Build.0 = Debug|x64 + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Debug|x64.Deploy.0 = Debug|x64 + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Debug|x86.ActiveCfg = Debug|x86 + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Debug|x86.Build.0 = Debug|x86 + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Debug|x86.Deploy.0 = Debug|x86 + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Release|Any CPU.ActiveCfg = Release|x86 + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Release|Any CPU.Build.0 = Release|x86 + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Release|Any CPU.Deploy.0 = Release|x86 + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Release|ARM.ActiveCfg = Release|ARM + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Release|ARM.Build.0 = Release|ARM + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Release|ARM.Deploy.0 = Release|ARM + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Release|iPhone.ActiveCfg = Release|ARM + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Release|iPhoneSimulator.ActiveCfg = Release|x86 + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Release|x64.ActiveCfg = Release|x64 + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Release|x64.Build.0 = Release|x64 + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Release|x64.Deploy.0 = Release|x64 + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Release|x86.ActiveCfg = Release|x86 + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Release|x86.Build.0 = Release|x86 + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B}.Release|x86.Deploy.0 = Release|x86 + {42DB052E-0909-45D2-8240-187F99F393FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {42DB052E-0909-45D2-8240-187F99F393FB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {42DB052E-0909-45D2-8240-187F99F393FB}.Debug|ARM.ActiveCfg = Debug|Any CPU + {42DB052E-0909-45D2-8240-187F99F393FB}.Debug|ARM.Build.0 = Debug|Any CPU + {42DB052E-0909-45D2-8240-187F99F393FB}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {42DB052E-0909-45D2-8240-187F99F393FB}.Debug|iPhone.Build.0 = Debug|Any CPU + {42DB052E-0909-45D2-8240-187F99F393FB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {42DB052E-0909-45D2-8240-187F99F393FB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {42DB052E-0909-45D2-8240-187F99F393FB}.Debug|x64.ActiveCfg = Debug|Any CPU + {42DB052E-0909-45D2-8240-187F99F393FB}.Debug|x64.Build.0 = Debug|Any CPU + {42DB052E-0909-45D2-8240-187F99F393FB}.Debug|x86.ActiveCfg = Debug|Any CPU + {42DB052E-0909-45D2-8240-187F99F393FB}.Debug|x86.Build.0 = Debug|Any CPU + {42DB052E-0909-45D2-8240-187F99F393FB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {42DB052E-0909-45D2-8240-187F99F393FB}.Release|Any CPU.Build.0 = Release|Any CPU + {42DB052E-0909-45D2-8240-187F99F393FB}.Release|ARM.ActiveCfg = Release|Any CPU + {42DB052E-0909-45D2-8240-187F99F393FB}.Release|ARM.Build.0 = Release|Any CPU + {42DB052E-0909-45D2-8240-187F99F393FB}.Release|iPhone.ActiveCfg = Release|Any CPU + {42DB052E-0909-45D2-8240-187F99F393FB}.Release|iPhone.Build.0 = Release|Any CPU + {42DB052E-0909-45D2-8240-187F99F393FB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {42DB052E-0909-45D2-8240-187F99F393FB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {42DB052E-0909-45D2-8240-187F99F393FB}.Release|x64.ActiveCfg = Release|Any CPU + {42DB052E-0909-45D2-8240-187F99F393FB}.Release|x64.Build.0 = Release|Any CPU + {42DB052E-0909-45D2-8240-187F99F393FB}.Release|x86.ActiveCfg = Release|Any CPU + {42DB052E-0909-45D2-8240-187F99F393FB}.Release|x86.Build.0 = Release|Any CPU + {C9696465-7657-4843-872E-3C01891C4A9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C9696465-7657-4843-872E-3C01891C4A9B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C9696465-7657-4843-872E-3C01891C4A9B}.Debug|ARM.ActiveCfg = Debug|Any CPU + {C9696465-7657-4843-872E-3C01891C4A9B}.Debug|ARM.Build.0 = Debug|Any CPU + {C9696465-7657-4843-872E-3C01891C4A9B}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {C9696465-7657-4843-872E-3C01891C4A9B}.Debug|iPhone.Build.0 = Debug|Any CPU + {C9696465-7657-4843-872E-3C01891C4A9B}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {C9696465-7657-4843-872E-3C01891C4A9B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {C9696465-7657-4843-872E-3C01891C4A9B}.Debug|x64.ActiveCfg = Debug|Any CPU + {C9696465-7657-4843-872E-3C01891C4A9B}.Debug|x64.Build.0 = Debug|Any CPU + {C9696465-7657-4843-872E-3C01891C4A9B}.Debug|x86.ActiveCfg = Debug|Any CPU + {C9696465-7657-4843-872E-3C01891C4A9B}.Debug|x86.Build.0 = Debug|Any CPU + {C9696465-7657-4843-872E-3C01891C4A9B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C9696465-7657-4843-872E-3C01891C4A9B}.Release|Any CPU.Build.0 = Release|Any CPU + {C9696465-7657-4843-872E-3C01891C4A9B}.Release|ARM.ActiveCfg = Release|Any CPU + {C9696465-7657-4843-872E-3C01891C4A9B}.Release|ARM.Build.0 = Release|Any CPU + {C9696465-7657-4843-872E-3C01891C4A9B}.Release|iPhone.ActiveCfg = Release|Any CPU + {C9696465-7657-4843-872E-3C01891C4A9B}.Release|iPhone.Build.0 = Release|Any CPU + {C9696465-7657-4843-872E-3C01891C4A9B}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {C9696465-7657-4843-872E-3C01891C4A9B}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {C9696465-7657-4843-872E-3C01891C4A9B}.Release|x64.ActiveCfg = Release|Any CPU + {C9696465-7657-4843-872E-3C01891C4A9B}.Release|x64.Build.0 = Release|Any CPU + {C9696465-7657-4843-872E-3C01891C4A9B}.Release|x86.ActiveCfg = Release|Any CPU + {C9696465-7657-4843-872E-3C01891C4A9B}.Release|x86.Build.0 = Release|Any CPU + {392156B2-760A-4EE3-A822-CABD3238A21D}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator + {392156B2-760A-4EE3-A822-CABD3238A21D}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator + {392156B2-760A-4EE3-A822-CABD3238A21D}.Debug|ARM.ActiveCfg = Debug|iPhone + {392156B2-760A-4EE3-A822-CABD3238A21D}.Debug|ARM.Build.0 = Debug|iPhone + {392156B2-760A-4EE3-A822-CABD3238A21D}.Debug|iPhone.ActiveCfg = Debug|iPhone + {392156B2-760A-4EE3-A822-CABD3238A21D}.Debug|iPhone.Build.0 = Debug|iPhone + {392156B2-760A-4EE3-A822-CABD3238A21D}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator + {392156B2-760A-4EE3-A822-CABD3238A21D}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator + {392156B2-760A-4EE3-A822-CABD3238A21D}.Debug|x64.ActiveCfg = Debug|iPhoneSimulator + {392156B2-760A-4EE3-A822-CABD3238A21D}.Debug|x64.Build.0 = Debug|iPhoneSimulator + {392156B2-760A-4EE3-A822-CABD3238A21D}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator + {392156B2-760A-4EE3-A822-CABD3238A21D}.Debug|x86.Build.0 = Debug|iPhoneSimulator + {392156B2-760A-4EE3-A822-CABD3238A21D}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator + {392156B2-760A-4EE3-A822-CABD3238A21D}.Release|Any CPU.Build.0 = Release|iPhoneSimulator + {392156B2-760A-4EE3-A822-CABD3238A21D}.Release|ARM.ActiveCfg = Release|iPhone + {392156B2-760A-4EE3-A822-CABD3238A21D}.Release|ARM.Build.0 = Release|iPhone + {392156B2-760A-4EE3-A822-CABD3238A21D}.Release|iPhone.ActiveCfg = Release|iPhone + {392156B2-760A-4EE3-A822-CABD3238A21D}.Release|iPhone.Build.0 = Release|iPhone + {392156B2-760A-4EE3-A822-CABD3238A21D}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator + {392156B2-760A-4EE3-A822-CABD3238A21D}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator + {392156B2-760A-4EE3-A822-CABD3238A21D}.Release|x64.ActiveCfg = Release|iPhoneSimulator + {392156B2-760A-4EE3-A822-CABD3238A21D}.Release|x64.Build.0 = Release|iPhoneSimulator + {392156B2-760A-4EE3-A822-CABD3238A21D}.Release|x86.ActiveCfg = Release|iPhoneSimulator + {392156B2-760A-4EE3-A822-CABD3238A21D}.Release|x86.Build.0 = Release|iPhoneSimulator + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Debug|ARM.ActiveCfg = Debug|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Debug|ARM.Build.0 = Debug|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Debug|ARM.Deploy.0 = Debug|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Debug|iPhone.Build.0 = Debug|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Debug|iPhone.Deploy.0 = Debug|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Debug|x64.ActiveCfg = Debug|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Debug|x64.Build.0 = Debug|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Debug|x64.Deploy.0 = Debug|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Debug|x86.ActiveCfg = Debug|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Debug|x86.Build.0 = Debug|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Debug|x86.Deploy.0 = Debug|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Release|Any CPU.Build.0 = Release|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Release|Any CPU.Deploy.0 = Release|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Release|ARM.ActiveCfg = Release|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Release|ARM.Build.0 = Release|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Release|ARM.Deploy.0 = Release|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Release|iPhone.ActiveCfg = Release|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Release|iPhone.Build.0 = Release|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Release|iPhone.Deploy.0 = Release|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Release|x64.ActiveCfg = Release|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Release|x64.Build.0 = Release|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Release|x64.Deploy.0 = Release|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Release|x86.ActiveCfg = Release|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Release|x86.Build.0 = Release|Any CPU + {0C902203-D56E-4F7E-9CE6-E23C701B628D}.Release|x86.Deploy.0 = Release|Any CPU + {02EAC00F-0425-4959-AC64-E921627265CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {02EAC00F-0425-4959-AC64-E921627265CA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {02EAC00F-0425-4959-AC64-E921627265CA}.Debug|ARM.ActiveCfg = Debug|Any CPU + {02EAC00F-0425-4959-AC64-E921627265CA}.Debug|ARM.Build.0 = Debug|Any CPU + {02EAC00F-0425-4959-AC64-E921627265CA}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {02EAC00F-0425-4959-AC64-E921627265CA}.Debug|iPhone.Build.0 = Debug|Any CPU + {02EAC00F-0425-4959-AC64-E921627265CA}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {02EAC00F-0425-4959-AC64-E921627265CA}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {02EAC00F-0425-4959-AC64-E921627265CA}.Debug|x64.ActiveCfg = Debug|Any CPU + {02EAC00F-0425-4959-AC64-E921627265CA}.Debug|x64.Build.0 = Debug|Any CPU + {02EAC00F-0425-4959-AC64-E921627265CA}.Debug|x86.ActiveCfg = Debug|Any CPU + {02EAC00F-0425-4959-AC64-E921627265CA}.Debug|x86.Build.0 = Debug|Any CPU + {02EAC00F-0425-4959-AC64-E921627265CA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {02EAC00F-0425-4959-AC64-E921627265CA}.Release|Any CPU.Build.0 = Release|Any CPU + {02EAC00F-0425-4959-AC64-E921627265CA}.Release|ARM.ActiveCfg = Release|Any CPU + {02EAC00F-0425-4959-AC64-E921627265CA}.Release|ARM.Build.0 = Release|Any CPU + {02EAC00F-0425-4959-AC64-E921627265CA}.Release|iPhone.ActiveCfg = Release|Any CPU + {02EAC00F-0425-4959-AC64-E921627265CA}.Release|iPhone.Build.0 = Release|Any CPU + {02EAC00F-0425-4959-AC64-E921627265CA}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {02EAC00F-0425-4959-AC64-E921627265CA}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {02EAC00F-0425-4959-AC64-E921627265CA}.Release|x64.ActiveCfg = Release|Any CPU + {02EAC00F-0425-4959-AC64-E921627265CA}.Release|x64.Build.0 = Release|Any CPU + {02EAC00F-0425-4959-AC64-E921627265CA}.Release|x86.ActiveCfg = Release|Any CPU + {02EAC00F-0425-4959-AC64-E921627265CA}.Release|x86.Build.0 = Release|Any CPU + {C0059C45-EA1E-42F3-8A0E-794BB547EC3C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C0059C45-EA1E-42F3-8A0E-794BB547EC3C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C0059C45-EA1E-42F3-8A0E-794BB547EC3C}.Debug|ARM.ActiveCfg = Debug|Any CPU + {C0059C45-EA1E-42F3-8A0E-794BB547EC3C}.Debug|ARM.Build.0 = Debug|Any CPU + {C0059C45-EA1E-42F3-8A0E-794BB547EC3C}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {C0059C45-EA1E-42F3-8A0E-794BB547EC3C}.Debug|iPhone.Build.0 = Debug|Any CPU + {C0059C45-EA1E-42F3-8A0E-794BB547EC3C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {C0059C45-EA1E-42F3-8A0E-794BB547EC3C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {C0059C45-EA1E-42F3-8A0E-794BB547EC3C}.Debug|x64.ActiveCfg = Debug|Any CPU + {C0059C45-EA1E-42F3-8A0E-794BB547EC3C}.Debug|x64.Build.0 = Debug|Any CPU + {C0059C45-EA1E-42F3-8A0E-794BB547EC3C}.Debug|x86.ActiveCfg = Debug|Any CPU + {C0059C45-EA1E-42F3-8A0E-794BB547EC3C}.Debug|x86.Build.0 = Debug|Any CPU + {C0059C45-EA1E-42F3-8A0E-794BB547EC3C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C0059C45-EA1E-42F3-8A0E-794BB547EC3C}.Release|Any CPU.Build.0 = Release|Any CPU + {C0059C45-EA1E-42F3-8A0E-794BB547EC3C}.Release|ARM.ActiveCfg = Release|Any CPU + {C0059C45-EA1E-42F3-8A0E-794BB547EC3C}.Release|ARM.Build.0 = Release|Any CPU + {C0059C45-EA1E-42F3-8A0E-794BB547EC3C}.Release|iPhone.ActiveCfg = Release|Any CPU + {C0059C45-EA1E-42F3-8A0E-794BB547EC3C}.Release|iPhone.Build.0 = Release|Any CPU + {C0059C45-EA1E-42F3-8A0E-794BB547EC3C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {C0059C45-EA1E-42F3-8A0E-794BB547EC3C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {C0059C45-EA1E-42F3-8A0E-794BB547EC3C}.Release|x64.ActiveCfg = Release|Any CPU + {C0059C45-EA1E-42F3-8A0E-794BB547EC3C}.Release|x64.Build.0 = Release|Any CPU + {C0059C45-EA1E-42F3-8A0E-794BB547EC3C}.Release|x86.ActiveCfg = Release|Any CPU + {C0059C45-EA1E-42F3-8A0E-794BB547EC3C}.Release|x86.Build.0 = Release|Any CPU + {8D3DFCB7-DB10-40E5-ACFE-411AAA85520D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8D3DFCB7-DB10-40E5-ACFE-411AAA85520D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8D3DFCB7-DB10-40E5-ACFE-411AAA85520D}.Debug|ARM.ActiveCfg = Debug|Any CPU + {8D3DFCB7-DB10-40E5-ACFE-411AAA85520D}.Debug|ARM.Build.0 = Debug|Any CPU + {8D3DFCB7-DB10-40E5-ACFE-411AAA85520D}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {8D3DFCB7-DB10-40E5-ACFE-411AAA85520D}.Debug|iPhone.Build.0 = Debug|Any CPU + {8D3DFCB7-DB10-40E5-ACFE-411AAA85520D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {8D3DFCB7-DB10-40E5-ACFE-411AAA85520D}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {8D3DFCB7-DB10-40E5-ACFE-411AAA85520D}.Debug|x64.ActiveCfg = Debug|Any CPU + {8D3DFCB7-DB10-40E5-ACFE-411AAA85520D}.Debug|x64.Build.0 = Debug|Any CPU + {8D3DFCB7-DB10-40E5-ACFE-411AAA85520D}.Debug|x86.ActiveCfg = Debug|Any CPU + {8D3DFCB7-DB10-40E5-ACFE-411AAA85520D}.Debug|x86.Build.0 = Debug|Any CPU + {8D3DFCB7-DB10-40E5-ACFE-411AAA85520D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8D3DFCB7-DB10-40E5-ACFE-411AAA85520D}.Release|Any CPU.Build.0 = Release|Any CPU + {8D3DFCB7-DB10-40E5-ACFE-411AAA85520D}.Release|ARM.ActiveCfg = Release|Any CPU + {8D3DFCB7-DB10-40E5-ACFE-411AAA85520D}.Release|ARM.Build.0 = Release|Any CPU + {8D3DFCB7-DB10-40E5-ACFE-411AAA85520D}.Release|iPhone.ActiveCfg = Release|Any CPU + {8D3DFCB7-DB10-40E5-ACFE-411AAA85520D}.Release|iPhone.Build.0 = Release|Any CPU + {8D3DFCB7-DB10-40E5-ACFE-411AAA85520D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {8D3DFCB7-DB10-40E5-ACFE-411AAA85520D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {8D3DFCB7-DB10-40E5-ACFE-411AAA85520D}.Release|x64.ActiveCfg = Release|Any CPU + {8D3DFCB7-DB10-40E5-ACFE-411AAA85520D}.Release|x64.Build.0 = Release|Any CPU + {8D3DFCB7-DB10-40E5-ACFE-411AAA85520D}.Release|x86.ActiveCfg = Release|Any CPU + {8D3DFCB7-DB10-40E5-ACFE-411AAA85520D}.Release|x86.Build.0 = Release|Any CPU + {C3C24A6D-2D0C-4053-9FCC-E54FF9CA1884}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C3C24A6D-2D0C-4053-9FCC-E54FF9CA1884}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C3C24A6D-2D0C-4053-9FCC-E54FF9CA1884}.Debug|ARM.ActiveCfg = Debug|Any CPU + {C3C24A6D-2D0C-4053-9FCC-E54FF9CA1884}.Debug|ARM.Build.0 = Debug|Any CPU + {C3C24A6D-2D0C-4053-9FCC-E54FF9CA1884}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {C3C24A6D-2D0C-4053-9FCC-E54FF9CA1884}.Debug|iPhone.Build.0 = Debug|Any CPU + {C3C24A6D-2D0C-4053-9FCC-E54FF9CA1884}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {C3C24A6D-2D0C-4053-9FCC-E54FF9CA1884}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {C3C24A6D-2D0C-4053-9FCC-E54FF9CA1884}.Debug|x64.ActiveCfg = Debug|Any CPU + {C3C24A6D-2D0C-4053-9FCC-E54FF9CA1884}.Debug|x64.Build.0 = Debug|Any CPU + {C3C24A6D-2D0C-4053-9FCC-E54FF9CA1884}.Debug|x86.ActiveCfg = Debug|Any CPU + {C3C24A6D-2D0C-4053-9FCC-E54FF9CA1884}.Debug|x86.Build.0 = Debug|Any CPU + {C3C24A6D-2D0C-4053-9FCC-E54FF9CA1884}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C3C24A6D-2D0C-4053-9FCC-E54FF9CA1884}.Release|Any CPU.Build.0 = Release|Any CPU + {C3C24A6D-2D0C-4053-9FCC-E54FF9CA1884}.Release|ARM.ActiveCfg = Release|Any CPU + {C3C24A6D-2D0C-4053-9FCC-E54FF9CA1884}.Release|ARM.Build.0 = Release|Any CPU + {C3C24A6D-2D0C-4053-9FCC-E54FF9CA1884}.Release|iPhone.ActiveCfg = Release|Any CPU + {C3C24A6D-2D0C-4053-9FCC-E54FF9CA1884}.Release|iPhone.Build.0 = Release|Any CPU + {C3C24A6D-2D0C-4053-9FCC-E54FF9CA1884}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {C3C24A6D-2D0C-4053-9FCC-E54FF9CA1884}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {C3C24A6D-2D0C-4053-9FCC-E54FF9CA1884}.Release|x64.ActiveCfg = Release|Any CPU + {C3C24A6D-2D0C-4053-9FCC-E54FF9CA1884}.Release|x64.Build.0 = Release|Any CPU + {C3C24A6D-2D0C-4053-9FCC-E54FF9CA1884}.Release|x86.ActiveCfg = Release|Any CPU + {C3C24A6D-2D0C-4053-9FCC-E54FF9CA1884}.Release|x86.Build.0 = Release|Any CPU + {9DB0CABB-24CC-4538-88EC-6E0A0FE40248}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9DB0CABB-24CC-4538-88EC-6E0A0FE40248}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9DB0CABB-24CC-4538-88EC-6E0A0FE40248}.Debug|ARM.ActiveCfg = Debug|Any CPU + {9DB0CABB-24CC-4538-88EC-6E0A0FE40248}.Debug|ARM.Build.0 = Debug|Any CPU + {9DB0CABB-24CC-4538-88EC-6E0A0FE40248}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {9DB0CABB-24CC-4538-88EC-6E0A0FE40248}.Debug|iPhone.Build.0 = Debug|Any CPU + {9DB0CABB-24CC-4538-88EC-6E0A0FE40248}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {9DB0CABB-24CC-4538-88EC-6E0A0FE40248}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {9DB0CABB-24CC-4538-88EC-6E0A0FE40248}.Debug|x64.ActiveCfg = Debug|Any CPU + {9DB0CABB-24CC-4538-88EC-6E0A0FE40248}.Debug|x64.Build.0 = Debug|Any CPU + {9DB0CABB-24CC-4538-88EC-6E0A0FE40248}.Debug|x86.ActiveCfg = Debug|Any CPU + {9DB0CABB-24CC-4538-88EC-6E0A0FE40248}.Debug|x86.Build.0 = Debug|Any CPU + {9DB0CABB-24CC-4538-88EC-6E0A0FE40248}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9DB0CABB-24CC-4538-88EC-6E0A0FE40248}.Release|Any CPU.Build.0 = Release|Any CPU + {9DB0CABB-24CC-4538-88EC-6E0A0FE40248}.Release|ARM.ActiveCfg = Release|Any CPU + {9DB0CABB-24CC-4538-88EC-6E0A0FE40248}.Release|ARM.Build.0 = Release|Any CPU + {9DB0CABB-24CC-4538-88EC-6E0A0FE40248}.Release|iPhone.ActiveCfg = Release|Any CPU + {9DB0CABB-24CC-4538-88EC-6E0A0FE40248}.Release|iPhone.Build.0 = Release|Any CPU + {9DB0CABB-24CC-4538-88EC-6E0A0FE40248}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {9DB0CABB-24CC-4538-88EC-6E0A0FE40248}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {9DB0CABB-24CC-4538-88EC-6E0A0FE40248}.Release|x64.ActiveCfg = Release|Any CPU + {9DB0CABB-24CC-4538-88EC-6E0A0FE40248}.Release|x64.Build.0 = Release|Any CPU + {9DB0CABB-24CC-4538-88EC-6E0A0FE40248}.Release|x86.ActiveCfg = Release|Any CPU + {9DB0CABB-24CC-4538-88EC-6E0A0FE40248}.Release|x86.Build.0 = Release|Any CPU + {29DDE791-5608-4072-8E1C-D37D72992A83}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator + {29DDE791-5608-4072-8E1C-D37D72992A83}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator + {29DDE791-5608-4072-8E1C-D37D72992A83}.Debug|ARM.ActiveCfg = Debug|iPhone + {29DDE791-5608-4072-8E1C-D37D72992A83}.Debug|ARM.Build.0 = Debug|iPhone + {29DDE791-5608-4072-8E1C-D37D72992A83}.Debug|iPhone.ActiveCfg = Debug|iPhone + {29DDE791-5608-4072-8E1C-D37D72992A83}.Debug|iPhone.Build.0 = Debug|iPhone + {29DDE791-5608-4072-8E1C-D37D72992A83}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator + {29DDE791-5608-4072-8E1C-D37D72992A83}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator + {29DDE791-5608-4072-8E1C-D37D72992A83}.Debug|x64.ActiveCfg = Debug|iPhoneSimulator + {29DDE791-5608-4072-8E1C-D37D72992A83}.Debug|x64.Build.0 = Debug|iPhoneSimulator + {29DDE791-5608-4072-8E1C-D37D72992A83}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator + {29DDE791-5608-4072-8E1C-D37D72992A83}.Debug|x86.Build.0 = Debug|iPhoneSimulator + {29DDE791-5608-4072-8E1C-D37D72992A83}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator + {29DDE791-5608-4072-8E1C-D37D72992A83}.Release|Any CPU.Build.0 = Release|iPhoneSimulator + {29DDE791-5608-4072-8E1C-D37D72992A83}.Release|ARM.ActiveCfg = Release|iPhone + {29DDE791-5608-4072-8E1C-D37D72992A83}.Release|ARM.Build.0 = Release|iPhone + {29DDE791-5608-4072-8E1C-D37D72992A83}.Release|iPhone.ActiveCfg = Release|iPhone + {29DDE791-5608-4072-8E1C-D37D72992A83}.Release|iPhone.Build.0 = Release|iPhone + {29DDE791-5608-4072-8E1C-D37D72992A83}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator + {29DDE791-5608-4072-8E1C-D37D72992A83}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator + {29DDE791-5608-4072-8E1C-D37D72992A83}.Release|x64.ActiveCfg = Release|iPhoneSimulator + {29DDE791-5608-4072-8E1C-D37D72992A83}.Release|x64.Build.0 = Release|iPhoneSimulator + {29DDE791-5608-4072-8E1C-D37D72992A83}.Release|x86.ActiveCfg = Release|iPhoneSimulator + {29DDE791-5608-4072-8E1C-D37D72992A83}.Release|x86.Build.0 = Release|iPhoneSimulator + {73A22D45-2350-457D-A191-F888148E4280}.Debug|Any CPU.ActiveCfg = Debug|x86 + {73A22D45-2350-457D-A191-F888148E4280}.Debug|Any CPU.Build.0 = Debug|x86 + {73A22D45-2350-457D-A191-F888148E4280}.Debug|Any CPU.Deploy.0 = Debug|x86 + {73A22D45-2350-457D-A191-F888148E4280}.Debug|ARM.ActiveCfg = Debug|ARM + {73A22D45-2350-457D-A191-F888148E4280}.Debug|ARM.Build.0 = Debug|ARM + {73A22D45-2350-457D-A191-F888148E4280}.Debug|ARM.Deploy.0 = Debug|ARM + {73A22D45-2350-457D-A191-F888148E4280}.Debug|iPhone.ActiveCfg = Debug|ARM + {73A22D45-2350-457D-A191-F888148E4280}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86 + {73A22D45-2350-457D-A191-F888148E4280}.Debug|x64.ActiveCfg = Debug|x64 + {73A22D45-2350-457D-A191-F888148E4280}.Debug|x64.Build.0 = Debug|x64 + {73A22D45-2350-457D-A191-F888148E4280}.Debug|x64.Deploy.0 = Debug|x64 + {73A22D45-2350-457D-A191-F888148E4280}.Debug|x86.ActiveCfg = Debug|x86 + {73A22D45-2350-457D-A191-F888148E4280}.Debug|x86.Build.0 = Debug|x86 + {73A22D45-2350-457D-A191-F888148E4280}.Debug|x86.Deploy.0 = Debug|x86 + {73A22D45-2350-457D-A191-F888148E4280}.Release|Any CPU.ActiveCfg = Release|x86 + {73A22D45-2350-457D-A191-F888148E4280}.Release|Any CPU.Build.0 = Release|x86 + {73A22D45-2350-457D-A191-F888148E4280}.Release|Any CPU.Deploy.0 = Release|x86 + {73A22D45-2350-457D-A191-F888148E4280}.Release|ARM.ActiveCfg = Release|ARM + {73A22D45-2350-457D-A191-F888148E4280}.Release|ARM.Build.0 = Release|ARM + {73A22D45-2350-457D-A191-F888148E4280}.Release|ARM.Deploy.0 = Release|ARM + {73A22D45-2350-457D-A191-F888148E4280}.Release|iPhone.ActiveCfg = Release|ARM + {73A22D45-2350-457D-A191-F888148E4280}.Release|iPhoneSimulator.ActiveCfg = Release|x86 + {73A22D45-2350-457D-A191-F888148E4280}.Release|x64.ActiveCfg = Release|x64 + {73A22D45-2350-457D-A191-F888148E4280}.Release|x64.Build.0 = Release|x64 + {73A22D45-2350-457D-A191-F888148E4280}.Release|x64.Deploy.0 = Release|x64 + {73A22D45-2350-457D-A191-F888148E4280}.Release|x86.ActiveCfg = Release|x86 + {73A22D45-2350-457D-A191-F888148E4280}.Release|x86.Build.0 = Release|x86 + {73A22D45-2350-457D-A191-F888148E4280}.Release|x86.Deploy.0 = Release|x86 + {0D497738-2598-431D-8CAF-8FBF3D9F99EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0D497738-2598-431D-8CAF-8FBF3D9F99EC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0D497738-2598-431D-8CAF-8FBF3D9F99EC}.Debug|ARM.ActiveCfg = Debug|Any CPU + {0D497738-2598-431D-8CAF-8FBF3D9F99EC}.Debug|ARM.Build.0 = Debug|Any CPU + {0D497738-2598-431D-8CAF-8FBF3D9F99EC}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {0D497738-2598-431D-8CAF-8FBF3D9F99EC}.Debug|iPhone.Build.0 = Debug|Any CPU + {0D497738-2598-431D-8CAF-8FBF3D9F99EC}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {0D497738-2598-431D-8CAF-8FBF3D9F99EC}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {0D497738-2598-431D-8CAF-8FBF3D9F99EC}.Debug|x64.ActiveCfg = Debug|Any CPU + {0D497738-2598-431D-8CAF-8FBF3D9F99EC}.Debug|x64.Build.0 = Debug|Any CPU + {0D497738-2598-431D-8CAF-8FBF3D9F99EC}.Debug|x86.ActiveCfg = Debug|Any CPU + {0D497738-2598-431D-8CAF-8FBF3D9F99EC}.Debug|x86.Build.0 = Debug|Any CPU + {0D497738-2598-431D-8CAF-8FBF3D9F99EC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0D497738-2598-431D-8CAF-8FBF3D9F99EC}.Release|Any CPU.Build.0 = Release|Any CPU + {0D497738-2598-431D-8CAF-8FBF3D9F99EC}.Release|ARM.ActiveCfg = Release|Any CPU + {0D497738-2598-431D-8CAF-8FBF3D9F99EC}.Release|ARM.Build.0 = Release|Any CPU + {0D497738-2598-431D-8CAF-8FBF3D9F99EC}.Release|iPhone.ActiveCfg = Release|Any CPU + {0D497738-2598-431D-8CAF-8FBF3D9F99EC}.Release|iPhone.Build.0 = Release|Any CPU + {0D497738-2598-431D-8CAF-8FBF3D9F99EC}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {0D497738-2598-431D-8CAF-8FBF3D9F99EC}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {0D497738-2598-431D-8CAF-8FBF3D9F99EC}.Release|x64.ActiveCfg = Release|Any CPU + {0D497738-2598-431D-8CAF-8FBF3D9F99EC}.Release|x64.Build.0 = Release|Any CPU + {0D497738-2598-431D-8CAF-8FBF3D9F99EC}.Release|x86.ActiveCfg = Release|Any CPU + {0D497738-2598-431D-8CAF-8FBF3D9F99EC}.Release|x86.Build.0 = Release|Any CPU + {699C79F6-1D91-4DBF-B817-E8CFFD6263BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {699C79F6-1D91-4DBF-B817-E8CFFD6263BB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {699C79F6-1D91-4DBF-B817-E8CFFD6263BB}.Debug|ARM.ActiveCfg = Debug|Any CPU + {699C79F6-1D91-4DBF-B817-E8CFFD6263BB}.Debug|ARM.Build.0 = Debug|Any CPU + {699C79F6-1D91-4DBF-B817-E8CFFD6263BB}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {699C79F6-1D91-4DBF-B817-E8CFFD6263BB}.Debug|iPhone.Build.0 = Debug|Any CPU + {699C79F6-1D91-4DBF-B817-E8CFFD6263BB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {699C79F6-1D91-4DBF-B817-E8CFFD6263BB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {699C79F6-1D91-4DBF-B817-E8CFFD6263BB}.Debug|x64.ActiveCfg = Debug|Any CPU + {699C79F6-1D91-4DBF-B817-E8CFFD6263BB}.Debug|x64.Build.0 = Debug|Any CPU + {699C79F6-1D91-4DBF-B817-E8CFFD6263BB}.Debug|x86.ActiveCfg = Debug|Any CPU + {699C79F6-1D91-4DBF-B817-E8CFFD6263BB}.Debug|x86.Build.0 = Debug|Any CPU + {699C79F6-1D91-4DBF-B817-E8CFFD6263BB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {699C79F6-1D91-4DBF-B817-E8CFFD6263BB}.Release|Any CPU.Build.0 = Release|Any CPU + {699C79F6-1D91-4DBF-B817-E8CFFD6263BB}.Release|ARM.ActiveCfg = Release|Any CPU + {699C79F6-1D91-4DBF-B817-E8CFFD6263BB}.Release|ARM.Build.0 = Release|Any CPU + {699C79F6-1D91-4DBF-B817-E8CFFD6263BB}.Release|iPhone.ActiveCfg = Release|Any CPU + {699C79F6-1D91-4DBF-B817-E8CFFD6263BB}.Release|iPhone.Build.0 = Release|Any CPU + {699C79F6-1D91-4DBF-B817-E8CFFD6263BB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {699C79F6-1D91-4DBF-B817-E8CFFD6263BB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {699C79F6-1D91-4DBF-B817-E8CFFD6263BB}.Release|x64.ActiveCfg = Release|Any CPU + {699C79F6-1D91-4DBF-B817-E8CFFD6263BB}.Release|x64.Build.0 = Release|Any CPU + {699C79F6-1D91-4DBF-B817-E8CFFD6263BB}.Release|x86.ActiveCfg = Release|Any CPU + {699C79F6-1D91-4DBF-B817-E8CFFD6263BB}.Release|x86.Build.0 = Release|Any CPU + {83790029-272E-45AF-A41D-E7716684E5B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {83790029-272E-45AF-A41D-E7716684E5B8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {83790029-272E-45AF-A41D-E7716684E5B8}.Debug|ARM.ActiveCfg = Debug|Any CPU + {83790029-272E-45AF-A41D-E7716684E5B8}.Debug|ARM.Build.0 = Debug|Any CPU + {83790029-272E-45AF-A41D-E7716684E5B8}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {83790029-272E-45AF-A41D-E7716684E5B8}.Debug|iPhone.Build.0 = Debug|Any CPU + {83790029-272E-45AF-A41D-E7716684E5B8}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {83790029-272E-45AF-A41D-E7716684E5B8}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {83790029-272E-45AF-A41D-E7716684E5B8}.Debug|x64.ActiveCfg = Debug|Any CPU + {83790029-272E-45AF-A41D-E7716684E5B8}.Debug|x64.Build.0 = Debug|Any CPU + {83790029-272E-45AF-A41D-E7716684E5B8}.Debug|x86.ActiveCfg = Debug|Any CPU + {83790029-272E-45AF-A41D-E7716684E5B8}.Debug|x86.Build.0 = Debug|Any CPU + {83790029-272E-45AF-A41D-E7716684E5B8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {83790029-272E-45AF-A41D-E7716684E5B8}.Release|Any CPU.Build.0 = Release|Any CPU + {83790029-272E-45AF-A41D-E7716684E5B8}.Release|ARM.ActiveCfg = Release|Any CPU + {83790029-272E-45AF-A41D-E7716684E5B8}.Release|ARM.Build.0 = Release|Any CPU + {83790029-272E-45AF-A41D-E7716684E5B8}.Release|iPhone.ActiveCfg = Release|Any CPU + {83790029-272E-45AF-A41D-E7716684E5B8}.Release|iPhone.Build.0 = Release|Any CPU + {83790029-272E-45AF-A41D-E7716684E5B8}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {83790029-272E-45AF-A41D-E7716684E5B8}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {83790029-272E-45AF-A41D-E7716684E5B8}.Release|x64.ActiveCfg = Release|Any CPU + {83790029-272E-45AF-A41D-E7716684E5B8}.Release|x64.Build.0 = Release|Any CPU + {83790029-272E-45AF-A41D-E7716684E5B8}.Release|x86.ActiveCfg = Release|Any CPU + {83790029-272E-45AF-A41D-E7716684E5B8}.Release|x86.Build.0 = Release|Any CPU + {03A51E5B-0A1E-41F0-AAE3-4B19406F7340}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {03A51E5B-0A1E-41F0-AAE3-4B19406F7340}.Debug|Any CPU.Build.0 = Debug|Any CPU + {03A51E5B-0A1E-41F0-AAE3-4B19406F7340}.Debug|ARM.ActiveCfg = Debug|Any CPU + {03A51E5B-0A1E-41F0-AAE3-4B19406F7340}.Debug|ARM.Build.0 = Debug|Any CPU + {03A51E5B-0A1E-41F0-AAE3-4B19406F7340}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {03A51E5B-0A1E-41F0-AAE3-4B19406F7340}.Debug|iPhone.Build.0 = Debug|Any CPU + {03A51E5B-0A1E-41F0-AAE3-4B19406F7340}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {03A51E5B-0A1E-41F0-AAE3-4B19406F7340}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {03A51E5B-0A1E-41F0-AAE3-4B19406F7340}.Debug|x64.ActiveCfg = Debug|Any CPU + {03A51E5B-0A1E-41F0-AAE3-4B19406F7340}.Debug|x64.Build.0 = Debug|Any CPU + {03A51E5B-0A1E-41F0-AAE3-4B19406F7340}.Debug|x86.ActiveCfg = Debug|Any CPU + {03A51E5B-0A1E-41F0-AAE3-4B19406F7340}.Debug|x86.Build.0 = Debug|Any CPU + {03A51E5B-0A1E-41F0-AAE3-4B19406F7340}.Release|Any CPU.ActiveCfg = Release|Any CPU + {03A51E5B-0A1E-41F0-AAE3-4B19406F7340}.Release|Any CPU.Build.0 = Release|Any CPU + {03A51E5B-0A1E-41F0-AAE3-4B19406F7340}.Release|ARM.ActiveCfg = Release|Any CPU + {03A51E5B-0A1E-41F0-AAE3-4B19406F7340}.Release|ARM.Build.0 = Release|Any CPU + {03A51E5B-0A1E-41F0-AAE3-4B19406F7340}.Release|iPhone.ActiveCfg = Release|Any CPU + {03A51E5B-0A1E-41F0-AAE3-4B19406F7340}.Release|iPhone.Build.0 = Release|Any CPU + {03A51E5B-0A1E-41F0-AAE3-4B19406F7340}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {03A51E5B-0A1E-41F0-AAE3-4B19406F7340}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {03A51E5B-0A1E-41F0-AAE3-4B19406F7340}.Release|x64.ActiveCfg = Release|Any CPU + {03A51E5B-0A1E-41F0-AAE3-4B19406F7340}.Release|x64.Build.0 = Release|Any CPU + {03A51E5B-0A1E-41F0-AAE3-4B19406F7340}.Release|x86.ActiveCfg = Release|Any CPU + {03A51E5B-0A1E-41F0-AAE3-4B19406F7340}.Release|x86.Build.0 = Release|Any CPU + {A9772BB1-0E17-42F5-A6DB-60BFCCBFDB9D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A9772BB1-0E17-42F5-A6DB-60BFCCBFDB9D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A9772BB1-0E17-42F5-A6DB-60BFCCBFDB9D}.Debug|ARM.ActiveCfg = Debug|Any CPU + {A9772BB1-0E17-42F5-A6DB-60BFCCBFDB9D}.Debug|ARM.Build.0 = Debug|Any CPU + {A9772BB1-0E17-42F5-A6DB-60BFCCBFDB9D}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {A9772BB1-0E17-42F5-A6DB-60BFCCBFDB9D}.Debug|iPhone.Build.0 = Debug|Any CPU + {A9772BB1-0E17-42F5-A6DB-60BFCCBFDB9D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {A9772BB1-0E17-42F5-A6DB-60BFCCBFDB9D}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {A9772BB1-0E17-42F5-A6DB-60BFCCBFDB9D}.Debug|x64.ActiveCfg = Debug|Any CPU + {A9772BB1-0E17-42F5-A6DB-60BFCCBFDB9D}.Debug|x64.Build.0 = Debug|Any CPU + {A9772BB1-0E17-42F5-A6DB-60BFCCBFDB9D}.Debug|x86.ActiveCfg = Debug|Any CPU + {A9772BB1-0E17-42F5-A6DB-60BFCCBFDB9D}.Debug|x86.Build.0 = Debug|Any CPU + {A9772BB1-0E17-42F5-A6DB-60BFCCBFDB9D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A9772BB1-0E17-42F5-A6DB-60BFCCBFDB9D}.Release|Any CPU.Build.0 = Release|Any CPU + {A9772BB1-0E17-42F5-A6DB-60BFCCBFDB9D}.Release|ARM.ActiveCfg = Release|Any CPU + {A9772BB1-0E17-42F5-A6DB-60BFCCBFDB9D}.Release|ARM.Build.0 = Release|Any CPU + {A9772BB1-0E17-42F5-A6DB-60BFCCBFDB9D}.Release|iPhone.ActiveCfg = Release|Any CPU + {A9772BB1-0E17-42F5-A6DB-60BFCCBFDB9D}.Release|iPhone.Build.0 = Release|Any CPU + {A9772BB1-0E17-42F5-A6DB-60BFCCBFDB9D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {A9772BB1-0E17-42F5-A6DB-60BFCCBFDB9D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {A9772BB1-0E17-42F5-A6DB-60BFCCBFDB9D}.Release|x64.ActiveCfg = Release|Any CPU + {A9772BB1-0E17-42F5-A6DB-60BFCCBFDB9D}.Release|x64.Build.0 = Release|Any CPU + {A9772BB1-0E17-42F5-A6DB-60BFCCBFDB9D}.Release|x86.ActiveCfg = Release|Any CPU + {A9772BB1-0E17-42F5-A6DB-60BFCCBFDB9D}.Release|x86.Build.0 = Release|Any CPU + {140BC260-8B15-4D3A-B1B0-DDD8072918CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {140BC260-8B15-4D3A-B1B0-DDD8072918CC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {140BC260-8B15-4D3A-B1B0-DDD8072918CC}.Debug|ARM.ActiveCfg = Debug|Any CPU + {140BC260-8B15-4D3A-B1B0-DDD8072918CC}.Debug|ARM.Build.0 = Debug|Any CPU + {140BC260-8B15-4D3A-B1B0-DDD8072918CC}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {140BC260-8B15-4D3A-B1B0-DDD8072918CC}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {140BC260-8B15-4D3A-B1B0-DDD8072918CC}.Debug|x64.ActiveCfg = Debug|Any CPU + {140BC260-8B15-4D3A-B1B0-DDD8072918CC}.Debug|x64.Build.0 = Debug|Any CPU + {140BC260-8B15-4D3A-B1B0-DDD8072918CC}.Debug|x86.ActiveCfg = Debug|Any CPU + {140BC260-8B15-4D3A-B1B0-DDD8072918CC}.Debug|x86.Build.0 = Debug|Any CPU + {140BC260-8B15-4D3A-B1B0-DDD8072918CC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {140BC260-8B15-4D3A-B1B0-DDD8072918CC}.Release|Any CPU.Build.0 = Release|Any CPU + {140BC260-8B15-4D3A-B1B0-DDD8072918CC}.Release|ARM.ActiveCfg = Release|Any CPU + {140BC260-8B15-4D3A-B1B0-DDD8072918CC}.Release|ARM.Build.0 = Release|Any CPU + {140BC260-8B15-4D3A-B1B0-DDD8072918CC}.Release|iPhone.ActiveCfg = Release|Any CPU + {140BC260-8B15-4D3A-B1B0-DDD8072918CC}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {140BC260-8B15-4D3A-B1B0-DDD8072918CC}.Release|x64.ActiveCfg = Release|Any CPU + {140BC260-8B15-4D3A-B1B0-DDD8072918CC}.Release|x64.Build.0 = Release|Any CPU + {140BC260-8B15-4D3A-B1B0-DDD8072918CC}.Release|x86.ActiveCfg = Release|Any CPU + {140BC260-8B15-4D3A-B1B0-DDD8072918CC}.Release|x86.Build.0 = Release|Any CPU + {89B0DB73-A32E-447C-9390-A2A59D89B2E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {89B0DB73-A32E-447C-9390-A2A59D89B2E4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {89B0DB73-A32E-447C-9390-A2A59D89B2E4}.Debug|ARM.ActiveCfg = Debug|Any CPU + {89B0DB73-A32E-447C-9390-A2A59D89B2E4}.Debug|ARM.Build.0 = Debug|Any CPU + {89B0DB73-A32E-447C-9390-A2A59D89B2E4}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {89B0DB73-A32E-447C-9390-A2A59D89B2E4}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {89B0DB73-A32E-447C-9390-A2A59D89B2E4}.Debug|x64.ActiveCfg = Debug|Any CPU + {89B0DB73-A32E-447C-9390-A2A59D89B2E4}.Debug|x64.Build.0 = Debug|Any CPU + {89B0DB73-A32E-447C-9390-A2A59D89B2E4}.Debug|x86.ActiveCfg = Debug|Any CPU + {89B0DB73-A32E-447C-9390-A2A59D89B2E4}.Debug|x86.Build.0 = Debug|Any CPU + {89B0DB73-A32E-447C-9390-A2A59D89B2E4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {89B0DB73-A32E-447C-9390-A2A59D89B2E4}.Release|Any CPU.Build.0 = Release|Any CPU + {89B0DB73-A32E-447C-9390-A2A59D89B2E4}.Release|ARM.ActiveCfg = Release|Any CPU + {89B0DB73-A32E-447C-9390-A2A59D89B2E4}.Release|ARM.Build.0 = Release|Any CPU + {89B0DB73-A32E-447C-9390-A2A59D89B2E4}.Release|iPhone.ActiveCfg = Release|Any CPU + {89B0DB73-A32E-447C-9390-A2A59D89B2E4}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {89B0DB73-A32E-447C-9390-A2A59D89B2E4}.Release|x64.ActiveCfg = Release|Any CPU + {89B0DB73-A32E-447C-9390-A2A59D89B2E4}.Release|x64.Build.0 = Release|Any CPU + {89B0DB73-A32E-447C-9390-A2A59D89B2E4}.Release|x86.ActiveCfg = Release|Any CPU + {89B0DB73-A32E-447C-9390-A2A59D89B2E4}.Release|x86.Build.0 = Release|Any CPU + {411B960D-6D30-4079-83B2-ABB9987D2EDF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {411B960D-6D30-4079-83B2-ABB9987D2EDF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {411B960D-6D30-4079-83B2-ABB9987D2EDF}.Debug|ARM.ActiveCfg = Debug|Any CPU + {411B960D-6D30-4079-83B2-ABB9987D2EDF}.Debug|ARM.Build.0 = Debug|Any CPU + {411B960D-6D30-4079-83B2-ABB9987D2EDF}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {411B960D-6D30-4079-83B2-ABB9987D2EDF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {411B960D-6D30-4079-83B2-ABB9987D2EDF}.Debug|x64.ActiveCfg = Debug|Any CPU + {411B960D-6D30-4079-83B2-ABB9987D2EDF}.Debug|x64.Build.0 = Debug|Any CPU + {411B960D-6D30-4079-83B2-ABB9987D2EDF}.Debug|x86.ActiveCfg = Debug|Any CPU + {411B960D-6D30-4079-83B2-ABB9987D2EDF}.Debug|x86.Build.0 = Debug|Any CPU + {411B960D-6D30-4079-83B2-ABB9987D2EDF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {411B960D-6D30-4079-83B2-ABB9987D2EDF}.Release|Any CPU.Build.0 = Release|Any CPU + {411B960D-6D30-4079-83B2-ABB9987D2EDF}.Release|ARM.ActiveCfg = Release|Any CPU + {411B960D-6D30-4079-83B2-ABB9987D2EDF}.Release|ARM.Build.0 = Release|Any CPU + {411B960D-6D30-4079-83B2-ABB9987D2EDF}.Release|iPhone.ActiveCfg = Release|Any CPU + {411B960D-6D30-4079-83B2-ABB9987D2EDF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {411B960D-6D30-4079-83B2-ABB9987D2EDF}.Release|x64.ActiveCfg = Release|Any CPU + {411B960D-6D30-4079-83B2-ABB9987D2EDF}.Release|x64.Build.0 = Release|Any CPU + {411B960D-6D30-4079-83B2-ABB9987D2EDF}.Release|x86.ActiveCfg = Release|Any CPU + {411B960D-6D30-4079-83B2-ABB9987D2EDF}.Release|x86.Build.0 = Release|Any CPU + {AFF3AD0D-7181-4551-A29C-8701FE3E6753}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AFF3AD0D-7181-4551-A29C-8701FE3E6753}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AFF3AD0D-7181-4551-A29C-8701FE3E6753}.Debug|ARM.ActiveCfg = Debug|Any CPU + {AFF3AD0D-7181-4551-A29C-8701FE3E6753}.Debug|ARM.Build.0 = Debug|Any CPU + {AFF3AD0D-7181-4551-A29C-8701FE3E6753}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {AFF3AD0D-7181-4551-A29C-8701FE3E6753}.Debug|iPhone.Build.0 = Debug|Any CPU + {AFF3AD0D-7181-4551-A29C-8701FE3E6753}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {AFF3AD0D-7181-4551-A29C-8701FE3E6753}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {AFF3AD0D-7181-4551-A29C-8701FE3E6753}.Debug|x64.ActiveCfg = Debug|Any CPU + {AFF3AD0D-7181-4551-A29C-8701FE3E6753}.Debug|x64.Build.0 = Debug|Any CPU + {AFF3AD0D-7181-4551-A29C-8701FE3E6753}.Debug|x86.ActiveCfg = Debug|Any CPU + {AFF3AD0D-7181-4551-A29C-8701FE3E6753}.Debug|x86.Build.0 = Debug|Any CPU + {AFF3AD0D-7181-4551-A29C-8701FE3E6753}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AFF3AD0D-7181-4551-A29C-8701FE3E6753}.Release|Any CPU.Build.0 = Release|Any CPU + {AFF3AD0D-7181-4551-A29C-8701FE3E6753}.Release|ARM.ActiveCfg = Release|Any CPU + {AFF3AD0D-7181-4551-A29C-8701FE3E6753}.Release|ARM.Build.0 = Release|Any CPU + {AFF3AD0D-7181-4551-A29C-8701FE3E6753}.Release|iPhone.ActiveCfg = Release|Any CPU + {AFF3AD0D-7181-4551-A29C-8701FE3E6753}.Release|iPhone.Build.0 = Release|Any CPU + {AFF3AD0D-7181-4551-A29C-8701FE3E6753}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {AFF3AD0D-7181-4551-A29C-8701FE3E6753}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {AFF3AD0D-7181-4551-A29C-8701FE3E6753}.Release|x64.ActiveCfg = Release|Any CPU + {AFF3AD0D-7181-4551-A29C-8701FE3E6753}.Release|x64.Build.0 = Release|Any CPU + {AFF3AD0D-7181-4551-A29C-8701FE3E6753}.Release|x86.ActiveCfg = Release|Any CPU + {AFF3AD0D-7181-4551-A29C-8701FE3E6753}.Release|x86.Build.0 = Release|Any CPU + {8C7F0087-4031-4297-A651-6ED55F7B88BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8C7F0087-4031-4297-A651-6ED55F7B88BA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8C7F0087-4031-4297-A651-6ED55F7B88BA}.Debug|ARM.ActiveCfg = Debug|Any CPU + {8C7F0087-4031-4297-A651-6ED55F7B88BA}.Debug|ARM.Build.0 = Debug|Any CPU + {8C7F0087-4031-4297-A651-6ED55F7B88BA}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {8C7F0087-4031-4297-A651-6ED55F7B88BA}.Debug|iPhone.Build.0 = Debug|Any CPU + {8C7F0087-4031-4297-A651-6ED55F7B88BA}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {8C7F0087-4031-4297-A651-6ED55F7B88BA}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {8C7F0087-4031-4297-A651-6ED55F7B88BA}.Debug|x64.ActiveCfg = Debug|Any CPU + {8C7F0087-4031-4297-A651-6ED55F7B88BA}.Debug|x64.Build.0 = Debug|Any CPU + {8C7F0087-4031-4297-A651-6ED55F7B88BA}.Debug|x86.ActiveCfg = Debug|Any CPU + {8C7F0087-4031-4297-A651-6ED55F7B88BA}.Debug|x86.Build.0 = Debug|Any CPU + {8C7F0087-4031-4297-A651-6ED55F7B88BA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8C7F0087-4031-4297-A651-6ED55F7B88BA}.Release|Any CPU.Build.0 = Release|Any CPU + {8C7F0087-4031-4297-A651-6ED55F7B88BA}.Release|ARM.ActiveCfg = Release|Any CPU + {8C7F0087-4031-4297-A651-6ED55F7B88BA}.Release|ARM.Build.0 = Release|Any CPU + {8C7F0087-4031-4297-A651-6ED55F7B88BA}.Release|iPhone.ActiveCfg = Release|Any CPU + {8C7F0087-4031-4297-A651-6ED55F7B88BA}.Release|iPhone.Build.0 = Release|Any CPU + {8C7F0087-4031-4297-A651-6ED55F7B88BA}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {8C7F0087-4031-4297-A651-6ED55F7B88BA}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {8C7F0087-4031-4297-A651-6ED55F7B88BA}.Release|x64.ActiveCfg = Release|Any CPU + {8C7F0087-4031-4297-A651-6ED55F7B88BA}.Release|x64.Build.0 = Release|Any CPU + {8C7F0087-4031-4297-A651-6ED55F7B88BA}.Release|x86.ActiveCfg = Release|Any CPU + {8C7F0087-4031-4297-A651-6ED55F7B88BA}.Release|x86.Build.0 = Release|Any CPU + {C5C1D2BE-DB01-4B2E-BCA5-2C9A9691E3F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C5C1D2BE-DB01-4B2E-BCA5-2C9A9691E3F1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C5C1D2BE-DB01-4B2E-BCA5-2C9A9691E3F1}.Debug|ARM.ActiveCfg = Debug|Any CPU + {C5C1D2BE-DB01-4B2E-BCA5-2C9A9691E3F1}.Debug|ARM.Build.0 = Debug|Any CPU + {C5C1D2BE-DB01-4B2E-BCA5-2C9A9691E3F1}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {C5C1D2BE-DB01-4B2E-BCA5-2C9A9691E3F1}.Debug|iPhone.Build.0 = Debug|Any CPU + {C5C1D2BE-DB01-4B2E-BCA5-2C9A9691E3F1}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {C5C1D2BE-DB01-4B2E-BCA5-2C9A9691E3F1}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {C5C1D2BE-DB01-4B2E-BCA5-2C9A9691E3F1}.Debug|x64.ActiveCfg = Debug|Any CPU + {C5C1D2BE-DB01-4B2E-BCA5-2C9A9691E3F1}.Debug|x64.Build.0 = Debug|Any CPU + {C5C1D2BE-DB01-4B2E-BCA5-2C9A9691E3F1}.Debug|x86.ActiveCfg = Debug|Any CPU + {C5C1D2BE-DB01-4B2E-BCA5-2C9A9691E3F1}.Debug|x86.Build.0 = Debug|Any CPU + {C5C1D2BE-DB01-4B2E-BCA5-2C9A9691E3F1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C5C1D2BE-DB01-4B2E-BCA5-2C9A9691E3F1}.Release|Any CPU.Build.0 = Release|Any CPU + {C5C1D2BE-DB01-4B2E-BCA5-2C9A9691E3F1}.Release|ARM.ActiveCfg = Release|Any CPU + {C5C1D2BE-DB01-4B2E-BCA5-2C9A9691E3F1}.Release|ARM.Build.0 = Release|Any CPU + {C5C1D2BE-DB01-4B2E-BCA5-2C9A9691E3F1}.Release|iPhone.ActiveCfg = Release|Any CPU + {C5C1D2BE-DB01-4B2E-BCA5-2C9A9691E3F1}.Release|iPhone.Build.0 = Release|Any CPU + {C5C1D2BE-DB01-4B2E-BCA5-2C9A9691E3F1}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {C5C1D2BE-DB01-4B2E-BCA5-2C9A9691E3F1}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {C5C1D2BE-DB01-4B2E-BCA5-2C9A9691E3F1}.Release|x64.ActiveCfg = Release|Any CPU + {C5C1D2BE-DB01-4B2E-BCA5-2C9A9691E3F1}.Release|x64.Build.0 = Release|Any CPU + {C5C1D2BE-DB01-4B2E-BCA5-2C9A9691E3F1}.Release|x86.ActiveCfg = Release|Any CPU + {C5C1D2BE-DB01-4B2E-BCA5-2C9A9691E3F1}.Release|x86.Build.0 = Release|Any CPU + {D31A6537-ED9C-4EBD-B231-A8D4FE44126A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D31A6537-ED9C-4EBD-B231-A8D4FE44126A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D31A6537-ED9C-4EBD-B231-A8D4FE44126A}.Debug|ARM.ActiveCfg = Debug|Any CPU + {D31A6537-ED9C-4EBD-B231-A8D4FE44126A}.Debug|ARM.Build.0 = Debug|Any CPU + {D31A6537-ED9C-4EBD-B231-A8D4FE44126A}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {D31A6537-ED9C-4EBD-B231-A8D4FE44126A}.Debug|iPhone.Build.0 = Debug|Any CPU + {D31A6537-ED9C-4EBD-B231-A8D4FE44126A}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {D31A6537-ED9C-4EBD-B231-A8D4FE44126A}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {D31A6537-ED9C-4EBD-B231-A8D4FE44126A}.Debug|x64.ActiveCfg = Debug|Any CPU + {D31A6537-ED9C-4EBD-B231-A8D4FE44126A}.Debug|x64.Build.0 = Debug|Any CPU + {D31A6537-ED9C-4EBD-B231-A8D4FE44126A}.Debug|x86.ActiveCfg = Debug|Any CPU + {D31A6537-ED9C-4EBD-B231-A8D4FE44126A}.Debug|x86.Build.0 = Debug|Any CPU + {D31A6537-ED9C-4EBD-B231-A8D4FE44126A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D31A6537-ED9C-4EBD-B231-A8D4FE44126A}.Release|Any CPU.Build.0 = Release|Any CPU + {D31A6537-ED9C-4EBD-B231-A8D4FE44126A}.Release|ARM.ActiveCfg = Release|Any CPU + {D31A6537-ED9C-4EBD-B231-A8D4FE44126A}.Release|ARM.Build.0 = Release|Any CPU + {D31A6537-ED9C-4EBD-B231-A8D4FE44126A}.Release|iPhone.ActiveCfg = Release|Any CPU + {D31A6537-ED9C-4EBD-B231-A8D4FE44126A}.Release|iPhone.Build.0 = Release|Any CPU + {D31A6537-ED9C-4EBD-B231-A8D4FE44126A}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {D31A6537-ED9C-4EBD-B231-A8D4FE44126A}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {D31A6537-ED9C-4EBD-B231-A8D4FE44126A}.Release|x64.ActiveCfg = Release|Any CPU + {D31A6537-ED9C-4EBD-B231-A8D4FE44126A}.Release|x64.Build.0 = Release|Any CPU + {D31A6537-ED9C-4EBD-B231-A8D4FE44126A}.Release|x86.ActiveCfg = Release|Any CPU + {D31A6537-ED9C-4EBD-B231-A8D4FE44126A}.Release|x86.Build.0 = Release|Any CPU + {98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|ARM.ActiveCfg = Debug|Any CPU + {98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|ARM.Build.0 = Debug|Any CPU + {98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|iPhone.Build.0 = Debug|Any CPU + {98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|x64.ActiveCfg = Debug|Any CPU + {98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|x64.Build.0 = Debug|Any CPU + {98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|x86.ActiveCfg = Debug|Any CPU + {98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|x86.Build.0 = Debug|Any CPU + {98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|Any CPU.Build.0 = Release|Any CPU + {98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|ARM.ActiveCfg = Release|Any CPU + {98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|ARM.Build.0 = Release|Any CPU + {98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|iPhone.ActiveCfg = Release|Any CPU + {98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|iPhone.Build.0 = Release|Any CPU + {98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|x64.ActiveCfg = Release|Any CPU + {98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|x64.Build.0 = Release|Any CPU + {98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|x86.ActiveCfg = Release|Any CPU + {98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|x86.Build.0 = Release|Any CPU + {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Debug|ARM.ActiveCfg = Debug|Any CPU + {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Debug|ARM.Build.0 = Debug|Any CPU + {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Debug|iPhone.Build.0 = Debug|Any CPU + {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Debug|x64.ActiveCfg = Debug|Any CPU + {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Debug|x64.Build.0 = Debug|Any CPU + {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Debug|x86.ActiveCfg = Debug|Any CPU + {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Debug|x86.Build.0 = Debug|Any CPU + {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Release|Any CPU.Build.0 = Release|Any CPU + {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Release|ARM.ActiveCfg = Release|Any CPU + {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Release|ARM.Build.0 = Release|Any CPU + {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Release|iPhone.ActiveCfg = Release|Any CPU + {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Release|iPhone.Build.0 = Release|Any CPU + {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Release|x64.ActiveCfg = Release|Any CPU + {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Release|x64.Build.0 = Release|Any CPU + {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Release|x86.ActiveCfg = Release|Any CPU + {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Release|x86.Build.0 = Release|Any CPU + {65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|Any CPU.Build.0 = Debug|Any CPU + {65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|ARM.ActiveCfg = Debug|Any CPU + {65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|ARM.Build.0 = Debug|Any CPU + {65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|iPhone.Build.0 = Debug|Any CPU + {65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|x64.ActiveCfg = Debug|Any CPU + {65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|x64.Build.0 = Debug|Any CPU + {65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|x86.ActiveCfg = Debug|Any CPU + {65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|x86.Build.0 = Debug|Any CPU + {65BC4888-CC59-428A-9B75-540CF1C09480}.Release|Any CPU.ActiveCfg = Release|Any CPU + {65BC4888-CC59-428A-9B75-540CF1C09480}.Release|Any CPU.Build.0 = Release|Any CPU + {65BC4888-CC59-428A-9B75-540CF1C09480}.Release|ARM.ActiveCfg = Release|Any CPU + {65BC4888-CC59-428A-9B75-540CF1C09480}.Release|ARM.Build.0 = Release|Any CPU + {65BC4888-CC59-428A-9B75-540CF1C09480}.Release|iPhone.ActiveCfg = Release|Any CPU + {65BC4888-CC59-428A-9B75-540CF1C09480}.Release|iPhone.Build.0 = Release|Any CPU + {65BC4888-CC59-428A-9B75-540CF1C09480}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {65BC4888-CC59-428A-9B75-540CF1C09480}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {65BC4888-CC59-428A-9B75-540CF1C09480}.Release|x64.ActiveCfg = Release|Any CPU + {65BC4888-CC59-428A-9B75-540CF1C09480}.Release|x64.Build.0 = Release|Any CPU + {65BC4888-CC59-428A-9B75-540CF1C09480}.Release|x86.ActiveCfg = Release|Any CPU + {65BC4888-CC59-428A-9B75-540CF1C09480}.Release|x86.Build.0 = Release|Any CPU + {5BBF4A3F-4AD1-47FD-B250-05EA793F939D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5BBF4A3F-4AD1-47FD-B250-05EA793F939D}.Debug|ARM.ActiveCfg = Debug|Any CPU + {5BBF4A3F-4AD1-47FD-B250-05EA793F939D}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {5BBF4A3F-4AD1-47FD-B250-05EA793F939D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {5BBF4A3F-4AD1-47FD-B250-05EA793F939D}.Debug|x64.ActiveCfg = Debug|Any CPU + {5BBF4A3F-4AD1-47FD-B250-05EA793F939D}.Debug|x86.ActiveCfg = Debug|Any CPU + {5BBF4A3F-4AD1-47FD-B250-05EA793F939D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5BBF4A3F-4AD1-47FD-B250-05EA793F939D}.Release|ARM.ActiveCfg = Release|Any CPU + {5BBF4A3F-4AD1-47FD-B250-05EA793F939D}.Release|iPhone.ActiveCfg = Release|Any CPU + {5BBF4A3F-4AD1-47FD-B250-05EA793F939D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {5BBF4A3F-4AD1-47FD-B250-05EA793F939D}.Release|x64.ActiveCfg = Release|Any CPU + {5BBF4A3F-4AD1-47FD-B250-05EA793F939D}.Release|x86.ActiveCfg = Release|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48E}.Debug|ARM.ActiveCfg = Debug|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48E}.Debug|ARM.Build.0 = Debug|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48E}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48E}.Debug|iPhone.Build.0 = Debug|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48E}.Debug|x64.ActiveCfg = Debug|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48E}.Debug|x64.Build.0 = Debug|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48E}.Debug|x86.ActiveCfg = Debug|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48E}.Debug|x86.Build.0 = Debug|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48E}.Release|Any CPU.Build.0 = Release|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48E}.Release|ARM.ActiveCfg = Release|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48E}.Release|ARM.Build.0 = Release|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48E}.Release|iPhone.ActiveCfg = Release|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48E}.Release|iPhone.Build.0 = Release|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48E}.Release|x64.ActiveCfg = Release|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48E}.Release|x64.Build.0 = Release|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48E}.Release|x86.ActiveCfg = Release|Any CPU + {39B3457F-01D8-43D0-8E84-D8C4F73CF48E}.Release|x86.Build.0 = Release|Any CPU + {C4D726E7-6277-48D3-96C1-8EA8AD46C6F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C4D726E7-6277-48D3-96C1-8EA8AD46C6F0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C4D726E7-6277-48D3-96C1-8EA8AD46C6F0}.Debug|ARM.ActiveCfg = Debug|Any CPU + {C4D726E7-6277-48D3-96C1-8EA8AD46C6F0}.Debug|ARM.Build.0 = Debug|Any CPU + {C4D726E7-6277-48D3-96C1-8EA8AD46C6F0}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {C4D726E7-6277-48D3-96C1-8EA8AD46C6F0}.Debug|iPhone.Build.0 = Debug|Any CPU + {C4D726E7-6277-48D3-96C1-8EA8AD46C6F0}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {C4D726E7-6277-48D3-96C1-8EA8AD46C6F0}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {C4D726E7-6277-48D3-96C1-8EA8AD46C6F0}.Debug|x64.ActiveCfg = Debug|Any CPU + {C4D726E7-6277-48D3-96C1-8EA8AD46C6F0}.Debug|x64.Build.0 = Debug|Any CPU + {C4D726E7-6277-48D3-96C1-8EA8AD46C6F0}.Debug|x86.ActiveCfg = Debug|Any CPU + {C4D726E7-6277-48D3-96C1-8EA8AD46C6F0}.Debug|x86.Build.0 = Debug|Any CPU + {C4D726E7-6277-48D3-96C1-8EA8AD46C6F0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C4D726E7-6277-48D3-96C1-8EA8AD46C6F0}.Release|Any CPU.Build.0 = Release|Any CPU + {C4D726E7-6277-48D3-96C1-8EA8AD46C6F0}.Release|ARM.ActiveCfg = Release|Any CPU + {C4D726E7-6277-48D3-96C1-8EA8AD46C6F0}.Release|ARM.Build.0 = Release|Any CPU + {C4D726E7-6277-48D3-96C1-8EA8AD46C6F0}.Release|iPhone.ActiveCfg = Release|Any CPU + {C4D726E7-6277-48D3-96C1-8EA8AD46C6F0}.Release|iPhone.Build.0 = Release|Any CPU + {C4D726E7-6277-48D3-96C1-8EA8AD46C6F0}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {C4D726E7-6277-48D3-96C1-8EA8AD46C6F0}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {C4D726E7-6277-48D3-96C1-8EA8AD46C6F0}.Release|x64.ActiveCfg = Release|Any CPU + {C4D726E7-6277-48D3-96C1-8EA8AD46C6F0}.Release|x64.Build.0 = Release|Any CPU + {C4D726E7-6277-48D3-96C1-8EA8AD46C6F0}.Release|x86.ActiveCfg = Release|Any CPU + {C4D726E7-6277-48D3-96C1-8EA8AD46C6F0}.Release|x86.Build.0 = Release|Any CPU + {0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556}.Debug|ARM.ActiveCfg = Debug|Any CPU + {0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556}.Debug|ARM.Build.0 = Debug|Any CPU + {0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556}.Debug|iPhone.Build.0 = Debug|Any CPU + {0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556}.Debug|x64.ActiveCfg = Debug|Any CPU + {0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556}.Debug|x64.Build.0 = Debug|Any CPU + {0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556}.Debug|x86.ActiveCfg = Debug|Any CPU + {0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556}.Debug|x86.Build.0 = Debug|Any CPU + {0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556}.Release|Any CPU.Build.0 = Release|Any CPU + {0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556}.Release|ARM.ActiveCfg = Release|Any CPU + {0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556}.Release|ARM.Build.0 = Release|Any CPU + {0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556}.Release|iPhone.ActiveCfg = Release|Any CPU + {0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556}.Release|iPhone.Build.0 = Release|Any CPU + {0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556}.Release|x64.ActiveCfg = Release|Any CPU + {0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556}.Release|x64.Build.0 = Release|Any CPU + {0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556}.Release|x86.ActiveCfg = Release|Any CPU + {0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {271193C1-6E7C-429C-A36D-3F1BE5267231} = {29AC50BF-B4FB-450B-9386-0C5AD4B84226} + {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A} = {29AC50BF-B4FB-450B-9386-0C5AD4B84226} + {00259593-A283-47A5-ACB7-9C3819B16364} = {33A20844-7EF4-441D-83DA-2ACAF5E1CDFA} + {1346A7F1-4457-4BB4-A371-2C8E28BBD53E} = {4F5E2D21-17F6-4A42-B8FB-D03D82E24EC8} + {4B14D295-C09B-4C38-B880-7CC768E50585} = {32F608E2-6406-4DCF-9105-E2A7CB7085CF} + {57B8B73D-C3B5-4C42-869E-7B2F17D354AC} = {9AD757F5-E57A-459D-A0A7-E0675E045B84} + {9DB2F292-8034-4E06-89AD-98BBDA4306B9} = {32F608E2-6406-4DCF-9105-E2A7CB7085CF} + {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1} = {4F5E2D21-17F6-4A42-B8FB-D03D82E24EC8} + {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7} = {32F608E2-6406-4DCF-9105-E2A7CB7085CF} + {7D13BAC2-C6A4-416A-B07E-C169B199E52B} = {132FB9A4-613F-44CE-95D5-758D32D231DD} + {ABA078C4-F9BB-4924-8B2B-10FE0D2F5491} = {132FB9A4-613F-44CE-95D5-758D32D231DD} + {BD50B39A-EBC5-408F-9C5E-923A8EBAE473} = {132FB9A4-613F-44CE-95D5-758D32D231DD} + {3B72465B-ACAE-43AE-9327-10F372FE5F80} = {29AC50BF-B4FB-450B-9386-0C5AD4B84226} + {EADD8100-B3AE-4A31-92C4-267A64A1C6EB} = {D4D57221-71D6-4031-A6F4-EC66AF0929D9} + {A34EBE01-25BF-4E69-A2DC-2288DC625541} = {D4D57221-71D6-4031-A6F4-EC66AF0929D9} + {4DCD0420-1168-4B77-86DB-6196EE4BD491} = {D4D57221-71D6-4031-A6F4-EC66AF0929D9} + {C7131F14-274F-4B55-ACA9-E81731AD012F} = {4F5E2D21-17F6-4A42-B8FB-D03D82E24EC8} + {5A2DADBC-9510-4DD1-BE58-01501F2DF65D} = {29AC50BF-B4FB-450B-9386-0C5AD4B84226} + {6E53FEB1-1100-46AE-8013-17BBA35CC197} = {5A2DADBC-9510-4DD1-BE58-01501F2DF65D} + {39B3457F-01D8-43D0-8E84-D8C4F73CF48D} = {5A2DADBC-9510-4DD1-BE58-01501F2DF65D} + {B2927DF0-F98E-45C8-A917-27941B2B6838} = {4F5E2D21-17F6-4A42-B8FB-D03D82E24EC8} + {0F0DB9CC-EA65-429C-9363-38624BF8F49C} = {B2927DF0-F98E-45C8-A917-27941B2B6838} + {AC257966-9368-478A-9DF4-F0D28E320FE3} = {4F5E2D21-17F6-4A42-B8FB-D03D82E24EC8} + {00D8D049-FFAA-4759-8FC9-1ECA30777F72} = {29AC50BF-B4FB-450B-9386-0C5AD4B84226} + {04D89A60-78EF-4A32-AE17-87E47E0233A5} = {132FB9A4-613F-44CE-95D5-758D32D231DD} + {0A39A74B-6F7A-4D41-84F2-B0CCDCE899DF} = {D4D57221-71D6-4031-A6F4-EC66AF0929D9} + {D6133DBD-6C60-4BD5-BEA2-07E0A3927C31} = {9AD757F5-E57A-459D-A0A7-E0675E045B84} + {447DC60E-C485-4427-8CF7-50074C6B61DE} = {33A20844-7EF4-441D-83DA-2ACAF5E1CDFA} + {7B5F9E6A-6334-4C74-9B77-A55B3DA60E41} = {80BAC3FB-357A-4D05-A050-9F234DF49C97} + {5EB6EB6B-A412-4F41-A89B-D7C9AAD237F2} = {80BAC3FB-357A-4D05-A050-9F234DF49C97} + {95FEB8D4-D57E-4B96-A8D8-59D241C0501B} = {80BAC3FB-357A-4D05-A050-9F234DF49C97} + {42DB052E-0909-45D2-8240-187F99F393FB} = {29AC50BF-B4FB-450B-9386-0C5AD4B84226} + {C9696465-7657-4843-872E-3C01891C4A9B} = {9AD757F5-E57A-459D-A0A7-E0675E045B84} + {392156B2-760A-4EE3-A822-CABD3238A21D} = {80BAC3FB-357A-4D05-A050-9F234DF49C97} + {E175485B-3C8C-47D7-8DD5-F7FED627EB25} = {D4D57221-71D6-4031-A6F4-EC66AF0929D9} + {0C902203-D56E-4F7E-9CE6-E23C701B628D} = {406DE4B0-F541-4092-B0EE-F0A20E9A89F5} + {02EAC00F-0425-4959-AC64-E921627265CA} = {406DE4B0-F541-4092-B0EE-F0A20E9A89F5} + {C0059C45-EA1E-42F3-8A0E-794BB547EC3C} = {29AC50BF-B4FB-450B-9386-0C5AD4B84226} + {8D3DFCB7-DB10-40E5-ACFE-411AAA85520D} = {4F5E2D21-17F6-4A42-B8FB-D03D82E24EC8} + {C3C24A6D-2D0C-4053-9FCC-E54FF9CA1884} = {132FB9A4-613F-44CE-95D5-758D32D231DD} + {9DB0CABB-24CC-4538-88EC-6E0A0FE40248} = {D4D57221-71D6-4031-A6F4-EC66AF0929D9} + {29DDE791-5608-4072-8E1C-D37D72992A83} = {406DE4B0-F541-4092-B0EE-F0A20E9A89F5} + {73A22D45-2350-457D-A191-F888148E4280} = {406DE4B0-F541-4092-B0EE-F0A20E9A89F5} + {0D497738-2598-431D-8CAF-8FBF3D9F99EC} = {29AC50BF-B4FB-450B-9386-0C5AD4B84226} + {699C79F6-1D91-4DBF-B817-E8CFFD6263BB} = {132FB9A4-613F-44CE-95D5-758D32D231DD} + {83790029-272E-45AF-A41D-E7716684E5B8} = {29AC50BF-B4FB-450B-9386-0C5AD4B84226} + {03A51E5B-0A1E-41F0-AAE3-4B19406F7340} = {4F5E2D21-17F6-4A42-B8FB-D03D82E24EC8} + {A9772BB1-0E17-42F5-A6DB-60BFCCBFDB9D} = {132FB9A4-613F-44CE-95D5-758D32D231DD} + {140BC260-8B15-4D3A-B1B0-DDD8072918CC} = {29AC50BF-B4FB-450B-9386-0C5AD4B84226} + {89B0DB73-A32E-447C-9390-A2A59D89B2E4} = {132FB9A4-613F-44CE-95D5-758D32D231DD} + {411B960D-6D30-4079-83B2-ABB9987D2EDF} = {4F5E2D21-17F6-4A42-B8FB-D03D82E24EC8} + {AFF3AD0D-7181-4551-A29C-8701FE3E6753} = {80BAC3FB-357A-4D05-A050-9F234DF49C97} + {8C7F0087-4031-4297-A651-6ED55F7B88BA} = {4F5E2D21-17F6-4A42-B8FB-D03D82E24EC8} + {C5C1D2BE-DB01-4B2E-BCA5-2C9A9691E3F1} = {406DE4B0-F541-4092-B0EE-F0A20E9A89F5} + {D31A6537-ED9C-4EBD-B231-A8D4FE44126A} = {29AC50BF-B4FB-450B-9386-0C5AD4B84226} + {A6703C7D-D362-452A-A7A5-73771194D38C} = {CA1DF598-3650-4A7B-A065-492C26009295} + {98637471-8E5C-4DDE-89CA-2EAA664FB0EF} = {9AD757F5-E57A-459D-A0A7-E0675E045B84} + {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87} = {132FB9A4-613F-44CE-95D5-758D32D231DD} + {65BC4888-CC59-428A-9B75-540CF1C09480} = {32F608E2-6406-4DCF-9105-E2A7CB7085CF} + {39B3457F-01D8-43D0-8E84-D8C4F73CF48E} = {5A2DADBC-9510-4DD1-BE58-01501F2DF65D} + {C4D726E7-6277-48D3-96C1-8EA8AD46C6F0} = {D4D57221-71D6-4031-A6F4-EC66AF0929D9} + {0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556} = {8C294502-69DF-478B-BDA3-B40A8E9AA03E} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {650AE971-2F29-46A8-822C-FB4FCDC6A9A0} + EndGlobalSection +EndGlobal From 84ee18642facec02cecb5a741521b73c68fe1428 Mon Sep 17 00:00:00 2001 From: "shyun.min" Date: Mon, 1 Oct 2018 16:05:22 +0900 Subject: [PATCH 2/8] Modify test methods for Tizen - TizenTestBase.Reset - Some methods for getting element's position in TizenDriverApp --- .../TizenDriverApp.cs | 40 +++++-------------- .../TizenTestBase.cs | 2 +- 2 files changed, 12 insertions(+), 30 deletions(-) diff --git a/Xamarin.Forms.Core.Tizen.UITests/TizenDriverApp.cs b/Xamarin.Forms.Core.Tizen.UITests/TizenDriverApp.cs index cda42043ae1..c5e777d9186 100644 --- a/Xamarin.Forms.Core.Tizen.UITests/TizenDriverApp.cs +++ b/Xamarin.Forms.Core.Tizen.UITests/TizenDriverApp.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; @@ -698,17 +698,11 @@ TizenElement FindFirstElement(TizenQuery query) static PointF GetBottomRightOfBoundingRectangle(TizenElement element) { - string vpcpString = element.GetAttribute("BoundingRectangle"); + float vpx = element.Location.X; + float vpy = element.Location.Y; - // returned string format looks like: - // Left:-1868 Top:382 Width:1013 Height:680 - - string[] vpparts = vpcpString.Split(new[] { ':', ' ' }, StringSplitOptions.RemoveEmptyEntries); - float vpx = float.Parse(vpparts[1]); - float vpy = float.Parse(vpparts[3]); - - float vpw = float.Parse(vpparts[5]); - float vph = float.Parse(vpparts[7]); + float vpw = element.Size.Width; + float vph = element.Size.Height; return new PointF(vpx + vpw, vpy + vph); } @@ -725,30 +719,18 @@ static PointF GetClickablePoint(TizenElement element) static PointF GetOriginOfBoundingRectangle(TizenElement element) { - string vpcpString = element.GetAttribute("BoundingRectangle"); - - // returned string format looks like: - // Left:-1868 Top:382 Width:1013 Height:680 - - string[] vpparts = vpcpString.Split(new[] { ':', ' ' }, StringSplitOptions.RemoveEmptyEntries); - float vpx = float.Parse(vpparts[1]); - float vpy = float.Parse(vpparts[3]); + float vpx = element.Location.X; + float vpy = element.Location.Y; return new PointF(vpx, vpy); } static PointF GetTopRightOfBoundingRectangle(TizenElement element) { - string vpcpString = element.GetAttribute("BoundingRectangle"); - - // returned string format looks like: - // Left:-1868 Top:382 Width:1013 Height:680 - - string[] vpparts = vpcpString.Split(new[] { ':', ' ' }, StringSplitOptions.RemoveEmptyEntries); - float vpx = float.Parse(vpparts[1]); - float vpy = float.Parse(vpparts[3]); + float vpx = element.Location.X; + float vpy = element.Location.Y; - float vpw = float.Parse(vpparts[5]); + float vpw = element.Size.Width; return new PointF(vpx + vpw, vpy); } @@ -761,7 +743,7 @@ TizenElement GetViewPort() } ReadOnlyCollection candidates = QueryTizen(AppMainPageId); - _viewPort = candidates[3]; // We really just want the viewport; skip the full window, title bar, min/max buttons... + _viewPort = candidates[0]; // We really just want the viewport; skip the full window, title bar, min/max buttons... int xOffset = _viewPort.Coordinates.LocationInViewport.X; diff --git a/Xamarin.Forms.Core.Tizen.UITests/TizenTestBase.cs b/Xamarin.Forms.Core.Tizen.UITests/TizenTestBase.cs index abed9021754..402901f8326 100644 --- a/Xamarin.Forms.Core.Tizen.UITests/TizenTestBase.cs +++ b/Xamarin.Forms.Core.Tizen.UITests/TizenTestBase.cs @@ -53,7 +53,7 @@ public static void Reset() try { Debug.WriteLine($">>>>> TizenTestBase Reset"); - Session?.Keyboard?.PressKey(Keys.Escape); + Session?.ResetApp(); } catch (Exception ex) { From c6bdab7b2c7adbf7f1e62ebae857d9ff921bef74 Mon Sep 17 00:00:00 2001 From: "shyun.min" Date: Thu, 4 Oct 2018 14:49:13 +0900 Subject: [PATCH 3/8] Fix return type of async test --- Xamarin.Forms.Core.UITests.Shared/Tests/AutomationIDUITests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Xamarin.Forms.Core.UITests.Shared/Tests/AutomationIDUITests.cs b/Xamarin.Forms.Core.UITests.Shared/Tests/AutomationIDUITests.cs index d8b1b0c2421..251bcb3e5e5 100644 --- a/Xamarin.Forms.Core.UITests.Shared/Tests/AutomationIDUITests.cs +++ b/Xamarin.Forms.Core.UITests.Shared/Tests/AutomationIDUITests.cs @@ -42,7 +42,7 @@ public void Test1 () [Test] - public async void Test2() + public async Task Test2() { await Task.Delay(1000); App.WaitForElement(c => c.Marked("btnTest2")); From a6c1786c2de9b8531851fd4a449ca64ae27c065f Mon Sep 17 00:00:00 2001 From: Seunghyun Choi Date: Fri, 9 Nov 2018 14:38:10 +0900 Subject: [PATCH 4/8] Update Tizen command and tag --- .../TizenDriverApp.cs | 238 ++++++------------ .../TizenTestBase.cs | 10 +- .../Tests/ActionSheetUITests.cs | 3 + .../Tests/ButtonUITests.cs | 2 + .../Tests/DisplayAlertUITests.cs | 3 + .../Tests/Legacy-CellsUITests.cs | 59 +++-- .../Tests/ToolbarItemTests.cs | 3 + .../Utilities/AppExtensions.cs | 2 +- 8 files changed, 128 insertions(+), 192 deletions(-) diff --git a/Xamarin.Forms.Core.Tizen.UITests/TizenDriverApp.cs b/Xamarin.Forms.Core.Tizen.UITests/TizenDriverApp.cs index c5e777d9186..33669dcfa94 100644 --- a/Xamarin.Forms.Core.Tizen.UITests/TizenDriverApp.cs +++ b/Xamarin.Forms.Core.Tizen.UITests/TizenDriverApp.cs @@ -6,9 +6,12 @@ using System.IO; using System.Linq; using System.Reflection; +using System.Threading; using System.Threading.Tasks; using OpenQA.Selenium; +using OpenQA.Selenium.Appium.MultiTouch; using OpenQA.Selenium.Appium.Tizen; +using OpenQA.Selenium.Remote; using Xamarin.UITest; using Xamarin.UITest.Queries; using Xamarin.UITest.Queries.Tokens; @@ -42,8 +45,6 @@ public class TizenDriverApp : IApp { "getText", "Text" }, }; - int _scrollBarOffset = 5; - TizenElement _viewPort; TizenElement _window; @@ -57,7 +58,7 @@ public TizenDriverApp(TizenDriver session) public void Back() { _session.Navigate().Back(); - //QueryTizen("Back").First().Click(); + Thread.Sleep(2000); } public void ClearText(Func query) @@ -114,24 +115,36 @@ public void DragAndDrop(string from, string to) public void DragCoordinates(float fromX, float fromY, float toX, float toY) { - throw new NotImplementedException(); + TouchAction action = new TouchAction(_session); + action.Press(fromX, fromY); + action.MoveTo(toX, toY); + action.Release(); + action.Perform(); + Thread.Sleep(2000); } public void EnterText(string text) { _session.Keyboard.SendKeys(text); + Thread.Sleep(1000); } - public void EnterText(Func query, string text) + public void EnterText(string marked, string text) { - TizenElement element = QueryTizen(query).First(); + TizenElement element = QueryTizen(marked).First(); + element.Clear(); + element.Click(); element.SendKeys(text); + Thread.Sleep(1000); } - public void EnterText(string marked, string text) + public void EnterText(Func query, string text) { - TizenElement element = QueryTizen(marked).First(); + TizenElement element = QueryTizen(query).First(); + element.Clear(); + element.Click(); element.SendKeys(text); + Thread.Sleep(1000); } public void EnterText(Func query, string text) @@ -200,7 +213,8 @@ public void PinchToZoomOutCoordinates(float x, float y, TimeSpan? duration) public void PressEnter() { - _session.Keyboard.PressKey(Keys.Enter); + _session.PressKeyCode("Return"); + _session.ReleaseKeyCode("Return"); } public void PressVolumeDown() @@ -256,12 +270,6 @@ public T[] Query(Func> query) ReadOnlyCollection elements = QueryTizen(tizenQuery); - foreach (TizenElement e in elements) - { - string x = e.GetAttribute(attribute); - Debug.WriteLine($">>>>> TizenDriverApp Query 261: {x}"); - } - // TODO hartez 2017/07/19 17:09:14 Alas, for now this simply doesn't work. Waiting for TizenAppDriver to implement it return elements.Select(e => (T)Convert.ChangeType(e.GetAttribute(attribute), typeof(T))).ToArray(); } @@ -495,19 +503,10 @@ public void Tap(Func query) public void TapCoordinates(float x, float y) { - // Okay, this one's a bit complicated. For some reason, _session.Tap() with coordinates does not work - // (Filed https://github.com/Microsoft/WinAppDriver/issues/229 for that) - // But we can do the equivalent by manipulating the mouse. The mouse methods all take an ICoordinates - // object, and you'd think that the "coordinates" part of ICoordinates would have something do with - // where the mouse clicks. You'd be wrong. The coordinates parts of that object are ignored and it just - // clicks the center of whatever TizenElement the ICoordinates refers to in 'AuxiliaryLocator' - - // If we could just use the element, we wouldn't be tapping at specific coordinates, so that's not - // very helpful. - - // Instead, we'll use MouseClickAt + var _touch = new TouchAction(_session); - MouseClickAt(x, y); + _touch.Tap(x, y); + _touch.Perform(); } public ITestServer TestServer { get; } @@ -580,41 +579,8 @@ public void WaitForNoElement(Func query, public void ContextClick(string marked) { TizenElement element = QueryTizen(marked).First(); - PointF point = ElementToClickablePoint(element); - - MouseClickAt(point.X, point.Y, ClickType.ContextClick); - } - - internal void MouseClickAt(float x, float y, ClickType clickType = ClickType.SingleClick) - { - // Mouse clicking with ICoordinates doesn't work the way we'd like (see TapCoordinates comments), - // so we have to do some math on our own to get the mouse in the right spot - - // So here's how we're working around it for the moment: - // 1. Get the Window viewport (which is a known-to-exist element) - // 2. Using the Window's ICoordinates and the MouseMove() overload with x/y offsets, move the pointer - // to the location we care about - // 3. Use the (undocumented, except in https://github.com/Microsoft/WinAppDriver/issues/118#issuecomment-269404335) - // null parameter for Mouse.Click() to click at the current pointer location - - TizenElement viewPort = GetViewPort(); - int xOffset = viewPort.Coordinates.LocationInViewport.X; - int yOffset = viewPort.Coordinates.LocationInViewport.Y; - _session.Mouse.MouseMove(viewPort.Coordinates, (int)x - xOffset, (int)y - yOffset); - - switch (clickType) - { - case ClickType.DoubleClick: - _session.Mouse.DoubleClick(null); - break; - case ClickType.ContextClick: - _session.Mouse.ContextClick(null); - break; - case ClickType.SingleClick: - default: - _session.Mouse.Click(null); - break; - } + element.Click(); + Thread.Sleep(1000); } void ClickOrTapElement(TizenElement element) @@ -631,18 +597,11 @@ void ClickOrTapElement(TizenElement element) // All is not lost; we can figure out the location of the element in in the application window // and Tap in that spot - PointF p = ElementToClickablePoint(element); + PointF p = GetClickablePoint(element); TapCoordinates(p.X, p.Y); } } - void DoubleClickElement(TizenElement element) - { - PointF point = ElementToClickablePoint(element); - - MouseClickAt(point.X, point.Y, clickType: ClickType.DoubleClick); - } - void DoubleTap(TizenQuery query) { TizenElement element = FindFirstElement(query); @@ -652,35 +611,11 @@ void DoubleTap(TizenQuery query) return; } - DoubleClickElement(element); - } - - PointF ElementToClickablePoint(TizenElement element) - { - PointF clickablePoint = GetClickablePoint(element); + TouchAction _touch = new TouchAction(_session); + var count = 1; - TizenElement window = GetWindow(); - PointF origin = GetOriginOfBoundingRectangle(window); - - // Use the coordinates in the app window's viewport relative to the window's origin - return new PointF(clickablePoint.X - origin.X, clickablePoint.Y - origin.Y); - } - - ReadOnlyCollection FilterControlType(IEnumerable elements, string controlType) - { - string tag = controlType; - - if (tag == "*") - { - return new ReadOnlyCollection(elements.ToList()); - } - - if (_controlNameToTag.ContainsKey(controlType)) - { - tag = _controlNameToTag[controlType]; - } - - return new ReadOnlyCollection(elements.Where(element => element.TagName == tag).ToList()); + _touch.Tap(element, null, null, 2); + _touch.Perform(); } TizenElement FindFirstElement(TizenQuery query) @@ -698,41 +633,27 @@ TizenElement FindFirstElement(TizenQuery query) static PointF GetBottomRightOfBoundingRectangle(TizenElement element) { - float vpx = element.Location.X; - float vpy = element.Location.Y; + var location = element.Location; + var size = element.Size; - float vpw = element.Size.Width; - float vph = element.Size.Height; - - return new PointF(vpx + vpw, vpy + vph); + return new PointF(location.X + size.Width, location.Y + size.Height); } static PointF GetClickablePoint(TizenElement element) { - string cpString = element.GetAttribute("ClickablePoint"); - string[] parts = cpString.Split(','); - float x = float.Parse(parts[0]); - float y = float.Parse(parts[1]); - - return new PointF(x, y); - } - - static PointF GetOriginOfBoundingRectangle(TizenElement element) - { - float vpx = element.Location.X; - float vpy = element.Location.Y; + var location = element.Location; + var size = element.Size; - return new PointF(vpx, vpy); + return new PointF (location.X + size.Width / 2, location.Y + size.Height / 2); } static PointF GetTopRightOfBoundingRectangle(TizenElement element) { - float vpx = element.Location.X; - float vpy = element.Location.Y; + var location = element.Location; - float vpw = element.Size.Width; + float width = element.Size.Width; - return new PointF(vpx + vpw, vpy); + return new PointF(location.X + width, location.Y); } TizenElement GetViewPort() @@ -750,7 +671,6 @@ TizenElement GetViewPort() if (xOffset > 1) // Everything having to do with scrolling right now is a horrid kludge { // This makes the scrolling stuff work correctly on a higher density screen (e.g. MBP running Windows) - _scrollBarOffset = -70; } return _viewPort; @@ -767,21 +687,22 @@ TizenElement GetWindow() return _window; } - void OriginMouse() - { - TizenElement viewPort = GetViewPort(); - int xOffset = viewPort.Coordinates.LocationInViewport.X; - int yOffset = viewPort.Coordinates.LocationInViewport.Y; - _session.Mouse.MouseMove(viewPort.Coordinates, xOffset, yOffset); - } - ReadOnlyCollection QueryTizen(TizenQuery query) { ReadOnlyCollection resultByAccessibilityId = _session.FindElementsByAccessibilityId(query.Marked); - ReadOnlyCollection resultByName = _session.FindElementsByName(query.Marked); - IEnumerable result = resultByAccessibilityId.Concat(resultByName); - return FilterControlType(result, query.ControlType); + IEnumerable result; + + if (resultByAccessibilityId.Count > 0) + { + result = resultByAccessibilityId; + } + else + { + result = _session.FindElementsByName(query.Marked); + } + + return new ReadOnlyCollection(result.ToList()); } ReadOnlyCollection QueryTizen(string marked) @@ -798,38 +719,14 @@ ReadOnlyCollection QueryTizen(Func query) void Scroll(TizenQuery query, bool down) { - if (query == null) - { - ScrollClick(GetWindow(), down); - return; - } - - TizenElement element = FindFirstElement(query); - - ScrollClick(element, down); - } - - void ScrollClick(TizenElement element, bool down = true) - { - PointF point = down ? GetBottomRightOfBoundingRectangle(element) : GetTopRightOfBoundingRectangle(element); - - PointF origin = GetOriginOfBoundingRectangle(GetWindow()); - - var realPoint = new PointF(point.X - origin.X, point.Y - origin.Y); - - int xOffset = _scrollBarOffset; - if (origin.X < 0) + var remoteTouchScreen = new RemoteTouchScreen(_session); + int ySpped = -200; + if (!down) { - // The scrollbar's in a slightly different place relative to the window bounds - // if we're running on the left monitor (which I like to do) - xOffset = xOffset * 3; + ySpped = 200; } - - float finalX = realPoint.X - xOffset; - float finalY = realPoint.Y - (down ? 15 : -15); - - OriginMouse(); - MouseClickAt(finalX, finalY, ClickType.SingleClick); + remoteTouchScreen.Flick(0, ySpped); + Thread.Sleep(2000); } void ScrollTo(TizenQuery toQuery, TizenQuery withinQuery, TimeSpan? timeout = null, bool down = true) @@ -879,19 +776,23 @@ void Tap(TizenQuery query) return; } - ClickOrTapElement(element); + element.Click(); + Thread.Sleep(1000); } static AppRect ToAppRect(TizenElement TizenElement) { try { + var location = TizenElement.Location; + var size = TizenElement.Size; + var result = new AppRect { - X = TizenElement.Location.X, - Y = TizenElement.Location.Y, - Height = TizenElement.Size.Height, - Width = TizenElement.Size.Width + X = location.X, + Y = location.Y, + Height = size.Height, + Width = size.Width }; result.CenterX = result.X + result.Width / 2; @@ -933,6 +834,7 @@ static ReadOnlyCollection Wait(Func result = query(); while (!satisfactory(result.Count)) diff --git a/Xamarin.Forms.Core.Tizen.UITests/TizenTestBase.cs b/Xamarin.Forms.Core.Tizen.UITests/TizenTestBase.cs index 402901f8326..1ec3f21a4fe 100644 --- a/Xamarin.Forms.Core.Tizen.UITests/TizenTestBase.cs +++ b/Xamarin.Forms.Core.Tizen.UITests/TizenTestBase.cs @@ -10,8 +10,7 @@ namespace Xamarin.Forms.Core.UITests { public class TizenTestBase { - //protected const string TizenApplicationDriverUrl = "http://127.0.0.1:4723/wd/hub"; - protected const string TizenApplicationDriverUrl = "http://10.113.111.156:4723/wd/hub"; + protected const string TizenApplicationDriverUrl = "http://192.168.0.49:4723:4723/wd/hub"; protected static TizenDriver Session; public static IApp ConfigureApp() @@ -23,18 +22,17 @@ public static IApp ConfigureApp() appCapabilities.SetCapability("platformName", "Tizen"); //TM1 - //appCapabilities.SetCapability("deviceName", "0000d84200006200"); + appCapabilities.SetCapability("deviceName", "0000d84200006200"); //For Emul - appCapabilities.SetCapability("deviceName", "emulator-26101"); + //appCapabilities.SetCapability("deviceName", "emulator-26101"); appCapabilities.SetCapability("appPackage", "ControlGallery.Tizen"); //appCapabilities.SetCapability("app", "ControlGallery.Tizen-1.0.0.tpk"); - //appCapabilities.SetCapability("reboot", "true"); Session = new TizenDriver(new Uri(TizenApplicationDriverUrl), appCapabilities); Assert.IsNotNull(Session); //Session.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(1); - Reset(); + //Reset(); } return new TizenDriverApp(Session); diff --git a/Xamarin.Forms.Core.UITests.Shared/Tests/ActionSheetUITests.cs b/Xamarin.Forms.Core.UITests.Shared/Tests/ActionSheetUITests.cs index 4822da8a611..08d237f6168 100644 --- a/Xamarin.Forms.Core.UITests.Shared/Tests/ActionSheetUITests.cs +++ b/Xamarin.Forms.Core.UITests.Shared/Tests/ActionSheetUITests.cs @@ -4,6 +4,9 @@ namespace Xamarin.Forms.Core.UITests { +#if __TIZEN__ + [Ignore("Will be supported.")] +#endif [TestFixture] [Category(UITestCategories.ActionSheet)] internal class ActionSheetUITests : BaseTestFixture diff --git a/Xamarin.Forms.Core.UITests.Shared/Tests/ButtonUITests.cs b/Xamarin.Forms.Core.UITests.Shared/Tests/ButtonUITests.cs index 56e34cb18ca..ca37ee612d3 100644 --- a/Xamarin.Forms.Core.UITests.Shared/Tests/ButtonUITests.cs +++ b/Xamarin.Forms.Core.UITests.Shared/Tests/ButtonUITests.cs @@ -99,6 +99,7 @@ public void Clicked() [UiTest(typeof(Button), "Command")] public void Command() { +#if !__TIZEN__ var remote = new ViewContainerRemote(App, Test.Button.Command, PlatformViewType); remote.GoTo(); @@ -106,6 +107,7 @@ public void Command() App.WaitForElement(q => q.Marked("Hello Command")); App.Tap(q => q.Marked("Destroy")); +#endif } [Test] diff --git a/Xamarin.Forms.Core.UITests.Shared/Tests/DisplayAlertUITests.cs b/Xamarin.Forms.Core.UITests.Shared/Tests/DisplayAlertUITests.cs index ce935dc9410..dfcd0a8598d 100644 --- a/Xamarin.Forms.Core.UITests.Shared/Tests/DisplayAlertUITests.cs +++ b/Xamarin.Forms.Core.UITests.Shared/Tests/DisplayAlertUITests.cs @@ -2,6 +2,9 @@ namespace Xamarin.Forms.Core.UITests { +#if __TIZEN__ + [Ignore("Will be supported.")] +#endif [TestFixture] [Category(UITestCategories.DisplayAlert)] internal class DisplayAlertUITests : BaseTestFixture diff --git a/Xamarin.Forms.Core.UITests.Shared/Tests/Legacy-CellsUITests.cs b/Xamarin.Forms.Core.UITests.Shared/Tests/Legacy-CellsUITests.cs index 821820f9d60..ca9088b51a4 100644 --- a/Xamarin.Forms.Core.UITests.Shared/Tests/Legacy-CellsUITests.cs +++ b/Xamarin.Forms.Core.UITests.Shared/Tests/Legacy-CellsUITests.cs @@ -48,10 +48,14 @@ public void CellsGalleryTextCellList() App.Screenshot("At TextCell List Gallery"); +#if __TIZEN__ + string target = "Text 99"; +#else string target = "Detail 99"; +#endif -#if __WINDOWS__ - App.ScrollDownTo(target, CellTestContainerId, timeout: TimeSpan.FromMinutes(1)); +#if __WINDOWS__ || __TIZEN__ + App.ScrollDownTo(target, CellTestContainerId, timeout: TimeSpan.FromMinutes(3)); #else App.ScrollForElement($"* marked:'{target}'", new Drag(ScreenBounds, Drag.Direction.BottomToTop, Drag.DragLength.Medium)); @@ -74,9 +78,13 @@ public void CellsGalleryTextCellTable() App.Screenshot("At TextCell Table Gallery"); +#if __TIZEN__ + string target = "Text 12"; +#else string target = "Detail 12"; +#endif -#if __WINDOWS__ +#if __WINDOWS__ || __TIZEN__ App.ScrollDownTo(target, CellTestContainerId, timeout: TimeSpan.FromMinutes(1)); #else App.ScrollForElement($"* marked:'{target}'", @@ -104,9 +112,13 @@ public void CellsGalleryImageCellList() App.Screenshot("At ImageCell List Gallery"); +#if __TIZEN__ + string target = "Text 99"; +#else string target = "Detail 99"; +#endif -#if __WINDOWS__ +#if __WINDOWS__ || __TIZEN__ App.ScrollDownTo(target, CellTestContainerId, timeout: TimeSpan.FromMinutes(3)); #else var scrollBounds = App.Query(q => q.Marked(CellTestContainerId)).First().Rect; @@ -118,7 +130,7 @@ public void CellsGalleryImageCellList() App.Screenshot("All ImageCells are present"); -#if !__WINDOWS__ +#if !__WINDOWS__ && !__TIZEN__ var numberOfImages = App.Query(q => q.Raw(PlatformViews.Image)).Length; // Check that there are images present. In Android, // have to make sure that there are more than 2 for navigation. @@ -138,6 +150,15 @@ public async Task CellsGalleryImageUrlCellList() App.WaitForElement(q => q.Marked("ImageUrlCellListView")); +#if __TIZEN__ + App.ScrollDownTo("Text 100", CellTestContainerId, timeout: TimeSpan.FromMinutes(3)); + App.WaitForElement(q => q.Marked("Text 100"), "Timeout : Text 100"); + + App.Screenshot("All ImageCells are present"); + + await Task.Delay(1000); +#else + var scollBounds = App.Query(q => q.Marked("ImageUrlCellListView")).First().Rect; App.ScrollForElement("* marked:'Detail 100'", new Drag(scollBounds, Drag.Direction.BottomToTop, Drag.DragLength.Medium)); App.WaitForElement(q => q.Marked("Detail 100"), "Timeout : Detail 100"); @@ -161,6 +182,7 @@ public async Task CellsGalleryImageUrlCellList() // Check that there are images present. In Android, // have to make sure that there are more than 2 for navigation. Assert.IsTrue(numberOfImages > 2); +#endif App.Screenshot("Images are present"); } @@ -176,10 +198,14 @@ public void CellsGalleryImageCellTable() App.WaitForElement(q => q.Marked("Text 1"), "Timeout : Text 1"); App.Screenshot("At ImageCell Table Gallery"); - +#if __TIZEN__ + string target = "Text 12"; +#else string target = "Detail 12"; +#endif -#if __WINDOWS__ + +#if __WINDOWS__ || __TIZEN__ App.ScrollDownTo(target, CellTestContainerId, timeout: TimeSpan.FromMinutes(1)); #else App.ScrollForElement($"* marked:'{target}'", @@ -190,7 +216,7 @@ public void CellsGalleryImageCellTable() App.Screenshot("All ImageCells are present"); -#if !__WINDOWS__ +#if !__WINDOWS__ && !__TIZEN__ var numberOfImages = App.Query(q => q.Raw(PlatformViews.Image)).Length; // Check that there are images present. In Android, // have to make sure that there are more than 2 for navigation. @@ -214,14 +240,13 @@ public void CellsGallerySwitchCellList() string target = "Label 99"; -#if __WINDOWS__ - App.ScrollDownTo(target, CellTestContainerId, timeout: TimeSpan.FromMinutes(1)); +#if __WINDOWS__ || __TIZEN__ + App.ScrollDownTo(target, CellTestContainerId, timeout: TimeSpan.FromMinutes(3)); #else App.ScrollForElement($"* marked:'{target}'", new Drag(ScreenBounds, Drag.Direction.BottomToTop, Drag.DragLength.Medium)); App.WaitForElement(q => q.Marked(target)); - var numberOfSwitches = App.Query(q => q.Raw(PlatformViews.Switch)).Length; Assert.IsTrue(numberOfSwitches > 2); #endif @@ -243,7 +268,7 @@ public void CellsGallerySwitchCellTable() string target = "text 32"; -#if __WINDOWS__ +#if __WINDOWS__ || __TIZEN__ App.ScrollDownTo(target, CellTestContainerId, timeout: TimeSpan.FromMinutes(1)); #else App.ScrollForElement($"* marked:'{target}'", @@ -272,7 +297,7 @@ public void CellsGalleryEntryCellList() string target = "Label 99"; -#if __WINDOWS__ +#if __WINDOWS__ || __TIZEN__ App.ScrollDownTo(target, CellTestContainerId, timeout: TimeSpan.FromMinutes(3)); #else App.ScrollForElement($"* marked:'{target}'", @@ -296,7 +321,7 @@ public void CellsGalleryEntryCellTable() string target = "Text 32"; -#if __WINDOWS__ +#if __WINDOWS__ || __TIZEN__ App.ScrollDownTo(target, CellTestContainerId, timeout: TimeSpan.FromMinutes(1)); #else App.ScrollForElement($"* marked:'{target}'", @@ -320,7 +345,7 @@ public void CellsGalleryEntryCellCompleted() string target = "Enter text"; -#if __WINDOWS__ +#if __WINDOWS__ || __TIZEN__ App.ScrollDownTo(target, CellTestContainerId, timeout: TimeSpan.FromMinutes(1)); #else App.ScrollForElement($"* marked:'{target}'", @@ -336,10 +361,10 @@ public void CellsGalleryEntryCellCompleted() App.EnterText(PlatformQueries.EntryCellWithPlaceholder("I am a placeholder"), "Hi"); App.Screenshot("Entered Text"); App.PressEnter(); - +#if !__TIZEN__ App.WaitForElement(q => q.Marked("Entered: 1")); App.Screenshot("Completed should have changed label's text"); - +#endif #endif } diff --git a/Xamarin.Forms.Core.UITests.Shared/Tests/ToolbarItemTests.cs b/Xamarin.Forms.Core.UITests.Shared/Tests/ToolbarItemTests.cs index 1045bf2d921..a976639b086 100644 --- a/Xamarin.Forms.Core.UITests.Shared/Tests/ToolbarItemTests.cs +++ b/Xamarin.Forms.Core.UITests.Shared/Tests/ToolbarItemTests.cs @@ -6,6 +6,9 @@ namespace Xamarin.Forms.Core.UITests { +#if __TIZEN__ + [Ignore("Will be supported.")] +#endif [TestFixture] [Category(UITestCategories.ToolbarItem)] internal class ToolbarItemTests : BaseTestFixture diff --git a/Xamarin.Forms.Core.UITests.Shared/Utilities/AppExtensions.cs b/Xamarin.Forms.Core.UITests.Shared/Utilities/AppExtensions.cs index 0e6a9f42cc4..bea4044cd0d 100644 --- a/Xamarin.Forms.Core.UITests.Shared/Utilities/AppExtensions.cs +++ b/Xamarin.Forms.Core.UITests.Shared/Utilities/AppExtensions.cs @@ -23,7 +23,7 @@ public static void NavigateToGallery (this IApp app, string page) { const string goToTestButtonQuery = "* marked:'GoToTestButton'"; - app.WaitForElement(q => q.Raw(goToTestButtonQuery), "Timed out waiting for Go To Test button to disappear", TimeSpan.FromSeconds(10)); + app.WaitForElement(q => q.Raw(goToTestButtonQuery), "Timed out waiting for Go To Test button.", TimeSpan.FromSeconds(10)); var text = Regex.Match (page, "'(?[^']*)'").Groups["text"].Value; From f80f9c79560a7d1179c4a37dc05d219545bf6971 Mon Sep 17 00:00:00 2001 From: Seunghyun Choi Date: Fri, 9 Nov 2018 17:34:26 +0900 Subject: [PATCH 5/8] sync appium.webdriver v4.0.0.0-beta --- .../Xamarin.Forms.ControlGallery.Tizen.csproj | 2 +- .../TizenDriverApp.cs | 7 +++---- .../TizenTestBase.cs | 19 ++++++++--------- .../Xamarin.Forms.Core.Tizen.UITests.csproj | 21 +++++++++++-------- .../packages.config | 11 +++++----- 5 files changed, 31 insertions(+), 29 deletions(-) diff --git a/Xamarin.Forms.ControlGallery.Tizen/Xamarin.Forms.ControlGallery.Tizen.csproj b/Xamarin.Forms.ControlGallery.Tizen/Xamarin.Forms.ControlGallery.Tizen.csproj index 57e25d10bd0..a901c0affd2 100644 --- a/Xamarin.Forms.ControlGallery.Tizen/Xamarin.Forms.ControlGallery.Tizen.csproj +++ b/Xamarin.Forms.ControlGallery.Tizen/Xamarin.Forms.ControlGallery.Tizen.csproj @@ -13,7 +13,7 @@ - + diff --git a/Xamarin.Forms.Core.Tizen.UITests/TizenDriverApp.cs b/Xamarin.Forms.Core.Tizen.UITests/TizenDriverApp.cs index 33669dcfa94..2c5ce8c7dea 100644 --- a/Xamarin.Forms.Core.Tizen.UITests/TizenDriverApp.cs +++ b/Xamarin.Forms.Core.Tizen.UITests/TizenDriverApp.cs @@ -125,8 +125,7 @@ public void DragCoordinates(float fromX, float fromY, float toX, float toY) public void EnterText(string text) { - _session.Keyboard.SendKeys(text); - Thread.Sleep(1000); + throw new NotImplementedException(); } public void EnterText(string marked, string text) @@ -213,8 +212,8 @@ public void PinchToZoomOutCoordinates(float x, float y, TimeSpan? duration) public void PressEnter() { - _session.PressKeyCode("Return"); - _session.ReleaseKeyCode("Return"); + //_session.PressKeyCode("Return"); + //_session.ReleaseKeyCode("Return"); } public void PressVolumeDown() diff --git a/Xamarin.Forms.Core.Tizen.UITests/TizenTestBase.cs b/Xamarin.Forms.Core.Tizen.UITests/TizenTestBase.cs index 1ec3f21a4fe..b7ea2cb09ef 100644 --- a/Xamarin.Forms.Core.Tizen.UITests/TizenTestBase.cs +++ b/Xamarin.Forms.Core.Tizen.UITests/TizenTestBase.cs @@ -1,35 +1,34 @@ using System; using System.Diagnostics; using NUnit.Framework; -using OpenQA.Selenium; +using OpenQA.Selenium.Appium; using OpenQA.Selenium.Appium.Tizen; -using OpenQA.Selenium.Remote; using Xamarin.UITest; namespace Xamarin.Forms.Core.UITests { public class TizenTestBase { - protected const string TizenApplicationDriverUrl = "http://192.168.0.49:4723:4723/wd/hub"; + protected const string TizenApplicationDriverUrl = "http://192.168.0.49:4723/wd/hub"; protected static TizenDriver Session; public static IApp ConfigureApp() { if (Session == null) { - //TODO - DesiredCapabilities appCapabilities = new DesiredCapabilities(); + AppiumOptions appiumOptions = new AppiumOptions(); - appCapabilities.SetCapability("platformName", "Tizen"); + appiumOptions.AddAdditionalCapability("platformName", "Tizen"); //TM1 - appCapabilities.SetCapability("deviceName", "0000d84200006200"); + appiumOptions.AddAdditionalCapability("deviceName", "0000d84200006200"); //For Emul - //appCapabilities.SetCapability("deviceName", "emulator-26101"); + //appiumOptions.AddAdditionalCapability("deviceName", "emulator-26101"); + + appiumOptions.AddAdditionalCapability("appPackage", "ControlGallery.Tizen"); - appCapabilities.SetCapability("appPackage", "ControlGallery.Tizen"); //appCapabilities.SetCapability("app", "ControlGallery.Tizen-1.0.0.tpk"); - Session = new TizenDriver(new Uri(TizenApplicationDriverUrl), appCapabilities); + Session = new TizenDriver(new Uri(TizenApplicationDriverUrl), appiumOptions); Assert.IsNotNull(Session); //Session.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(1); //Reset(); diff --git a/Xamarin.Forms.Core.Tizen.UITests/Xamarin.Forms.Core.Tizen.UITests.csproj b/Xamarin.Forms.Core.Tizen.UITests/Xamarin.Forms.Core.Tizen.UITests.csproj index caad00ba61d..24db251b0fd 100644 --- a/Xamarin.Forms.Core.Tizen.UITests/Xamarin.Forms.Core.Tizen.UITests.csproj +++ b/Xamarin.Forms.Core.Tizen.UITests/Xamarin.Forms.Core.Tizen.UITests.csproj @@ -38,14 +38,14 @@ 0114;0108;4014;0649;0169;0168;0219 - - ..\packages\Appium.WebDriver.Tizen.4.0.0.5-beta\lib\net45\appium-dotnet-driver.dll + + ..\packages\Appium.WebDriver.4.0.0.4-beta\lib\net45\appium-dotnet-driver.dll - ..\packages\Castle.Core.4.2.1\lib\net45\Castle.Core.dll + ..\packages\Castle.Core.4.3.1\lib\net45\Castle.Core.dll - - ..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll + + ..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll ..\packages\NUnit.3.10.1\lib\net45\nunit.framework.dll @@ -53,6 +53,9 @@ ..\packages\Xam.Plugin.DeviceInfo.4.0.0.13\lib\net45\Plugin.DeviceInfo.dll + + ..\packages\DotNetSeleniumExtras.PageObjects.3.11.0\lib\net45\SeleniumExtras.PageObjects.dll + @@ -63,11 +66,11 @@ - - ..\packages\Selenium.WebDriver.3.13.0\lib\net45\WebDriver.dll + + ..\packages\Selenium.WebDriver.3.14.0\lib\net45\WebDriver.dll - - ..\packages\Selenium.Support.3.13.0\lib\net45\WebDriver.Support.dll + + ..\packages\Selenium.Support.3.14.0\lib\net45\WebDriver.Support.dll ..\packages\Xamarin.UITest.2.2.5\lib\net45\Xamarin.UITest.dll diff --git a/Xamarin.Forms.Core.Tizen.UITests/packages.config b/Xamarin.Forms.Core.Tizen.UITests/packages.config index 9ef55fae946..d1b4b9b6c07 100644 --- a/Xamarin.Forms.Core.Tizen.UITests/packages.config +++ b/Xamarin.Forms.Core.Tizen.UITests/packages.config @@ -1,12 +1,13 @@  - - - + + + + - - + + \ No newline at end of file From 7e4ee57f12cd9784f04851e54388ea3ee2fbf770 Mon Sep 17 00:00:00 2001 From: Seunghyun Choi Date: Tue, 13 Nov 2018 18:40:07 +0900 Subject: [PATCH 6/8] Update TIZEN Tag and fix some control values --- .../ControlGallery.Tizen.cs | 2 +- Xamarin.Forms.Core.Tizen.UITests/TizenDriverApp.cs | 6 ++---- .../Tests/Legacy-CellsUITests.cs | 9 +++++---- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/Xamarin.Forms.ControlGallery.Tizen/ControlGallery.Tizen.cs b/Xamarin.Forms.ControlGallery.Tizen/ControlGallery.Tizen.cs index 5702b2ca824..b4072c9bec1 100644 --- a/Xamarin.Forms.ControlGallery.Tizen/ControlGallery.Tizen.cs +++ b/Xamarin.Forms.ControlGallery.Tizen/ControlGallery.Tizen.cs @@ -18,7 +18,7 @@ protected override void OnCreate() static void Main(string[] args) { var app = new MainApplication(); - FormsMaps.Init("HERE", "write-your-API-key-here"); + //FormsMaps.Init("HERE", "write-your-API-key-here"); global::Xamarin.Forms.Platform.Tizen.Forms.Init(app); TizenAppium.StartService(app); app.Run(args); diff --git a/Xamarin.Forms.Core.Tizen.UITests/TizenDriverApp.cs b/Xamarin.Forms.Core.Tizen.UITests/TizenDriverApp.cs index 2c5ce8c7dea..8635babf408 100644 --- a/Xamarin.Forms.Core.Tizen.UITests/TizenDriverApp.cs +++ b/Xamarin.Forms.Core.Tizen.UITests/TizenDriverApp.cs @@ -132,7 +132,6 @@ public void EnterText(string marked, string text) { TizenElement element = QueryTizen(marked).First(); element.Clear(); - element.Click(); element.SendKeys(text); Thread.Sleep(1000); } @@ -141,7 +140,6 @@ public void EnterText(Func query, string text) { TizenElement element = QueryTizen(query).First(); element.Clear(); - element.Click(); element.SendKeys(text); Thread.Sleep(1000); } @@ -719,10 +717,10 @@ ReadOnlyCollection QueryTizen(Func query) void Scroll(TizenQuery query, bool down) { var remoteTouchScreen = new RemoteTouchScreen(_session); - int ySpped = -200; + int ySpped = -50; if (!down) { - ySpped = 200; + ySpped = 50; } remoteTouchScreen.Flick(0, ySpped); Thread.Sleep(2000); diff --git a/Xamarin.Forms.Core.UITests.Shared/Tests/Legacy-CellsUITests.cs b/Xamarin.Forms.Core.UITests.Shared/Tests/Legacy-CellsUITests.cs index ca9088b51a4..5d36d5b60aa 100644 --- a/Xamarin.Forms.Core.UITests.Shared/Tests/Legacy-CellsUITests.cs +++ b/Xamarin.Forms.Core.UITests.Shared/Tests/Legacy-CellsUITests.cs @@ -297,13 +297,12 @@ public void CellsGalleryEntryCellList() string target = "Label 99"; -#if __WINDOWS__ || __TIZEN__ +#if __WINDOWS__ App.ScrollDownTo(target, CellTestContainerId, timeout: TimeSpan.FromMinutes(3)); #else App.ScrollForElement($"* marked:'{target}'", new Drag(ScreenBounds, Drag.Direction.BottomToTop, Drag.DragLength.Medium)); #endif - App.Screenshot("All EntryCells are present"); } @@ -345,7 +344,7 @@ public void CellsGalleryEntryCellCompleted() string target = "Enter text"; -#if __WINDOWS__ || __TIZEN__ +#if __WINDOWS__ App.ScrollDownTo(target, CellTestContainerId, timeout: TimeSpan.FromMinutes(1)); #else App.ScrollForElement($"* marked:'{target}'", @@ -361,7 +360,9 @@ public void CellsGalleryEntryCellCompleted() App.EnterText(PlatformQueries.EntryCellWithPlaceholder("I am a placeholder"), "Hi"); App.Screenshot("Entered Text"); App.PressEnter(); -#if !__TIZEN__ +#if __TIZEN__ + App.NavigateBack(); +#else App.WaitForElement(q => q.Marked("Entered: 1")); App.Screenshot("Completed should have changed label's text"); #endif From 8a91e5e47e27e7179203af3e880d3b0a046c6955 Mon Sep 17 00:00:00 2001 From: Seunghyun Choi Date: Thu, 15 Nov 2018 13:34:46 +0900 Subject: [PATCH 7/8] Update TizenAppium project path in sln --- Xamarin.Forms.Tizen.UITest.sln | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Xamarin.Forms.Tizen.UITest.sln b/Xamarin.Forms.Tizen.UITest.sln index 5087c1d4921..d2dc351f9d5 100644 --- a/Xamarin.Forms.Tizen.UITest.sln +++ b/Xamarin.Forms.Tizen.UITest.sln @@ -181,7 +181,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Core.Tizen.UI EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Appium", "Appium", "{8C294502-69DF-478B-BDA3-B40A8E9AA03E}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Appium", "..\samsung\Tizen.Appium\Tizen.Appium.csproj", "{0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Appium", "..\Tizen.Appium\Tizen.Appium.csproj", "{0FB6675A-CCFD-45FA-B9E0-8DA1B29AA556}" EndProject Global GlobalSection(SharedMSBuildProjectFiles) = preSolution From 52addfd3a5c3155b5e3cd4ac0d3ea30e0a6bbd33 Mon Sep 17 00:00:00 2001 From: flyofsky Date: Fri, 16 Nov 2018 15:29:22 +0900 Subject: [PATCH 8/8] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 43badd3bdf1..0addeafab78 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ + Xamarin.Forms banner # Xamarin.Forms #