diff --git a/SimpleBaseLib.Tests/Delphi.Tests/Mobile/MobileTestHostFormUnit.fmx b/SimpleBaseLib.Tests/Delphi.Tests/Mobile/MobileTestHostFormUnit.fmx new file mode 100644 index 0000000..0922a6b --- /dev/null +++ b/SimpleBaseLib.Tests/Delphi.Tests/Mobile/MobileTestHostFormUnit.fmx @@ -0,0 +1,80 @@ +object MobileTestHostForm: TMobileTestHostForm + Left = 0 + Top = 0 + Caption = 'SimpleBaseLib Tests (Mobile)' + ClientHeight = 606 + ClientWidth = 360 + FormFactor.Width = 320 + FormFactor.Height = 480 + FormFactor.Devices = [Desktop] + OnShow = FormShow + DesignerMasterStyle = 3 + object lblBaseUrl: TLabel + AutoSize = True + Position.X = 8.000000000000000000 + Position.Y = 26.000000000000000000 + Size.Width = 177.000000000000000000 + Size.Height = 22.000000000000000000 + Size.PlatformDefault = False + Text = 'TestInsight URL' + TabOrder = 4 + end + object edtBaseUrl: TEdit + Touch.InteractiveGestures = [LongTap, DoubleTap] + Anchors = [akLeft, akTop, akRight, akBottom] + TabOrder = 0 + Position.X = 8.000000000000000000 + Position.Y = 56.000000000000000000 + Size.Width = 344.000000000000000000 + Size.Height = 32.000000000000000000 + Size.PlatformDefault = False + TextPrompt = 'http://IP:PORT' + OnChange = edtBaseUrlChange + OnChangeTracking = edtBaseUrlChange + end + object btnSaveUrl: TButton + Enabled = False + Position.X = 8.000000000000000000 + Position.Y = 114.000000000000000000 + Size.Width = 89.000000000000000000 + Size.Height = 44.000000000000000000 + Size.PlatformDefault = False + TabOrder = 1 + Text = 'Save URL' + OnClick = btnSaveUrlClick + end + object lblConnection: TLabel + AutoSize = True + Position.X = 8.000000000000000000 + Position.Y = 222.000000000000000000 + Size.Width = 344.000000000000000000 + Size.Height = 22.000000000000000000 + Size.PlatformDefault = False + Text = 'IDE: (status)' + TabOrder = 5 + end + object btnRunTests: TButton + Enabled = False + Position.X = 8.000000000000000000 + Position.Y = 166.000000000000000000 + Size.Width = 89.000000000000000000 + Size.Height = 44.000000000000000000 + Size.PlatformDefault = False + TabOrder = 2 + Text = 'Run Tests' + OnClick = btnRunTestsClick + end + object memLog: TMemo + Touch.InteractiveGestures = [Pan, LongTap, DoubleTap] + DataDetectorTypes = [] + Anchors = [akLeft, akTop, akRight, akBottom] + Position.X = 8.000000000000000000 + Position.Y = 264.000000000000000000 + Size.Width = 344.000000000000000000 + Size.Height = 334.000000000000000000 + Size.PlatformDefault = False + TabOrder = 3 + Viewport.Width = 336.000000000000000000 + Viewport.Height = 326.000000000000000000 + end +end diff --git a/SimpleBaseLib.Tests/Delphi.Tests/Mobile/MobileTestHostFormUnit.pas b/SimpleBaseLib.Tests/Delphi.Tests/Mobile/MobileTestHostFormUnit.pas new file mode 100644 index 0000000..4e9ae3c --- /dev/null +++ b/SimpleBaseLib.Tests/Delphi.Tests/Mobile/MobileTestHostFormUnit.pas @@ -0,0 +1,113 @@ +unit MobileTestHostFormUnit; + +interface + +uses + System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, + FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls, + FMX.Controls.Presentation, FMX.Edit, FMX.Memo.Types, FMX.ScrollBox, FMX.Memo, + MobileTestRunner; + +type + TMobileTestHostForm = class(TForm) + lblBaseUrl: TLabel; + edtBaseUrl: TEdit; + btnSaveUrl: TButton; + lblConnection: TLabel; + btnRunTests: TButton; + memLog: TMemo; + procedure FormShow(Sender: TObject); + procedure edtBaseUrlChange(Sender: TObject); + procedure btnSaveUrlClick(Sender: TObject); + procedure btnRunTestsClick(Sender: TObject); + private + procedure InitializeLog; + procedure AppendLog(const ALine: string); + procedure UpdateConnectionLabel; + procedure UpdateActionButtons; + public + end; + +var + MobileTestHostForm: TMobileTestHostForm; + +implementation + +{$R *.fmx} + +procedure TMobileTestHostForm.AppendLog(const ALine: string); +begin + if ALine <> '' then + memLog.Lines.Add(ALine); +end; + +procedure TMobileTestHostForm.InitializeLog; +begin + memLog.Lines.Clear; + memLog.Lines.Add('=== Test log ==='); +end; + +procedure TMobileTestHostForm.UpdateConnectionLabel; +var + LUrl: string; +begin + LUrl := Trim(edtBaseUrl.Text); + if not ProbeTestInsightServer(LUrl) then + lblConnection.Text := 'IDE: enter TestInsight BaseUrl' + else + lblConnection.Text := 'IDE: URL set (open TestInsight Explorer)'; +end; + +procedure TMobileTestHostForm.UpdateActionButtons; +var + LUrlOk: Boolean; +begin + LUrlOk := ProbeTestInsightServer(edtBaseUrl.Text); + btnSaveUrl.Enabled := LUrlOk; + btnRunTests.Enabled := LUrlOk and not MobileTestsRunning; +end; + +procedure TMobileTestHostForm.edtBaseUrlChange(Sender: TObject); +begin + UpdateConnectionLabel; + UpdateActionButtons; +end; + +procedure TMobileTestHostForm.FormShow(Sender: TObject); +begin + edtBaseUrl.Text := LoadTestInsightBaseUrl; + UpdateConnectionLabel; + UpdateActionButtons; + InitializeLog; +end; + +procedure TMobileTestHostForm.btnSaveUrlClick(Sender: TObject); +begin + SaveTestInsightBaseUrl(edtBaseUrl.Text); + UpdateConnectionLabel; + AppendLog('Saved TestInsight BaseUrl.'); +end; + +procedure TMobileTestHostForm.btnRunTestsClick(Sender: TObject); +begin + if MobileTestsRunning then + Exit; + + SaveTestInsightBaseUrl(edtBaseUrl.Text); + UpdateConnectionLabel; + AppendLog('Running tests (TestInsight remote)...'); + + RunMobileTestsAsync(edtBaseUrl.Text, + procedure(const AMessage: string) + begin + AppendLog(AMessage); + end, + procedure + begin + UpdateActionButtons; + AppendLog('Tests finished.'); + end); + UpdateActionButtons; +end; + +end. diff --git a/SimpleBaseLib.Tests/Delphi.Tests/Mobile/MobileTestRunner.pas b/SimpleBaseLib.Tests/Delphi.Tests/Mobile/MobileTestRunner.pas new file mode 100644 index 0000000..e6011a5 --- /dev/null +++ b/SimpleBaseLib.Tests/Delphi.Tests/Mobile/MobileTestRunner.pas @@ -0,0 +1,201 @@ +unit MobileTestRunner; + +interface + +uses + System.SysUtils; + +type + TMobileTestStatusProc = reference to procedure(const AMessage: string); + TMobileTestFinishedProc = reference to procedure; + +function MobileTestsRunning: Boolean; +function LoadTestInsightBaseUrl: string; +procedure SaveTestInsightBaseUrl(const ABaseUrl: string); +function ProbeTestInsightServer(const ABaseUrl: string): Boolean; +procedure RunMobileTestsAsync(const ABaseUrl: string; + const AOnStatus: TMobileTestStatusProc; const AOnFinished: TMobileTestFinishedProc); + +implementation + +uses + System.Classes, + System.IniFiles, + System.IOUtils, + System.SyncObjs, + TestInsight.DUnit; + +const + TestInsightIniFileName = 'TestInsightSettings.ini'; + TestInsightIniSection = 'Config'; + TestInsightIniBaseUrlKey = 'BaseUrl'; + +type + TSyncStatusInvoker = class + private + FOnStatus: TMobileTestStatusProc; + FMessage: string; + public + constructor Create(const AOnStatus: TMobileTestStatusProc; const AMessage: string); + procedure Invoke; + end; + + TSyncFinishedInvoker = class + private + FOnFinished: TMobileTestFinishedProc; + public + constructor Create(const AOnFinished: TMobileTestFinishedProc); + procedure Invoke; + end; + + TMobileTestThread = class(TThread) + private + FBaseUrl: string; + FOnStatus: TMobileTestStatusProc; + FOnFinished: TMobileTestFinishedProc; + protected + procedure Execute; override; + public + constructor Create(const ABaseUrl: string; const AOnStatus: TMobileTestStatusProc; + const AOnFinished: TMobileTestFinishedProc); + end; + +var + GTestsRunning: Integer; + +function TestInsightSettingsIniPath: string; +begin + Result := TPath.Combine(TPath.GetDocumentsPath, TestInsightIniFileName); +end; + +function ReadBaseUrlFromIni(const AIniPath: string): string; +var + LIni: TIniFile; +begin + Result := ''; + if not FileExists(AIniPath) then + Exit; + LIni := TIniFile.Create(AIniPath); + try + Result := Trim(LIni.ReadString(TestInsightIniSection, TestInsightIniBaseUrlKey, '')); + finally + LIni.Free; + end; +end; + +function MobileTestsRunning: Boolean; +begin + Result := TInterlocked.CompareExchange(GTestsRunning, 0, 0) <> 0; +end; + +constructor TSyncStatusInvoker.Create(const AOnStatus: TMobileTestStatusProc; + const AMessage: string); +begin + inherited Create; + FOnStatus := AOnStatus; + FMessage := AMessage; +end; + +procedure TSyncStatusInvoker.Invoke; +begin + if Assigned(FOnStatus) then + FOnStatus(FMessage); +end; + +constructor TSyncFinishedInvoker.Create(const AOnFinished: TMobileTestFinishedProc); +begin + inherited Create; + FOnFinished := AOnFinished; +end; + +procedure TSyncFinishedInvoker.Invoke; +begin + if Assigned(FOnFinished) then + FOnFinished(); +end; + +constructor TMobileTestThread.Create(const ABaseUrl: string; + const AOnStatus: TMobileTestStatusProc; const AOnFinished: TMobileTestFinishedProc); +begin + inherited Create(True); + FreeOnTerminate := True; + FBaseUrl := Trim(ABaseUrl); + FOnStatus := AOnStatus; + FOnFinished := AOnFinished; +end; + +procedure TMobileTestThread.Execute; +var + LStatusInvoker: TSyncStatusInvoker; + LFinishedInvoker: TSyncFinishedInvoker; +begin + try + try + if FBaseUrl = '' then + raise Exception.Create('TestInsight BaseUrl is empty. Enter a URL in the app and tap Save URL.'); + TestInsight.DUnit.RunRegisteredTests(FBaseUrl); + except + on E: Exception do + begin + if Assigned(FOnStatus) then + begin + LStatusInvoker := TSyncStatusInvoker.Create(FOnStatus, 'Error: ' + E.Message); + try + Synchronize(LStatusInvoker.Invoke); + finally + LStatusInvoker.Free; + end; + end; + end; + end; + finally + TInterlocked.Exchange(GTestsRunning, 0); + if Assigned(FOnFinished) then + begin + LFinishedInvoker := TSyncFinishedInvoker.Create(FOnFinished); + try + Synchronize(LFinishedInvoker.Invoke); + finally + LFinishedInvoker.Free; + end; + end; + end; +end; + +function LoadTestInsightBaseUrl: string; +begin + Result := ReadBaseUrlFromIni(TestInsightSettingsIniPath); +end; + +procedure SaveTestInsightBaseUrl(const ABaseUrl: string); +var + LIni: TIniFile; + LPath: string; +begin + LPath := TestInsightSettingsIniPath; + ForceDirectories(TPath.GetDirectoryName(LPath)); + LIni := TIniFile.Create(LPath); + try + LIni.WriteString(TestInsightIniSection, TestInsightIniBaseUrlKey, Trim(ABaseUrl)); + finally + LIni.Free; + end; +end; + +function ProbeTestInsightServer(const ABaseUrl: string): Boolean; +begin + { TestInsight exposes no documented health URL; non-empty URL is the v1 check. } + Result := Trim(ABaseUrl) <> ''; +end; + +procedure RunMobileTestsAsync(const ABaseUrl: string; + const AOnStatus: TMobileTestStatusProc; const AOnFinished: TMobileTestFinishedProc); +begin + if TInterlocked.CompareExchange(GTestsRunning, 1, 0) <> 0 then + Exit; + + with TMobileTestThread.Create(ABaseUrl, AOnStatus, AOnFinished) do + Start; +end; + +end. diff --git a/SimpleBaseLib.Tests/Delphi.Tests/SimpleBaseLib.Tests.Mobile.dpr b/SimpleBaseLib.Tests/Delphi.Tests/SimpleBaseLib.Tests.Mobile.dpr new file mode 100644 index 0000000..45338e2 --- /dev/null +++ b/SimpleBaseLib.Tests/Delphi.Tests/SimpleBaseLib.Tests.Mobile.dpr @@ -0,0 +1,106 @@ +program SimpleBaseLib.Tests.Mobile; + +{ FMX host for running SimpleBaseLib DUnit tests on device with TestInsight on the dev PC. + Use this project for Android/iOS harness work. } + +{$WARN DUPLICATE_CTOR_DTOR OFF} + +uses + System.StartUpCopy, + FMX.Forms, + MobileTestHostFormUnit in 'Mobile\MobileTestHostFormUnit.pas' {MobileTestHostForm}, + MobileTestRunner in 'Mobile\MobileTestRunner.pas', + SbpBitOperations in '..\..\SimpleBaseLib\src\Misc\SbpBitOperations.pas', + SbpBinaryPrimitives in '..\..\SimpleBaseLib\src\Misc\SbpBinaryPrimitives.pas', + SbpSimpleBaseLibTypes in '..\..\SimpleBaseLib\src\Misc\SbpSimpleBaseLibTypes.pas', + SbpBits in '..\..\SimpleBaseLib\src\Misc\SbpBits.pas', + SbpCharUtilities in '..\..\SimpleBaseLib\src\Utilities\SbpCharUtilities.pas', + SbpStreamUtilities in '..\..\SimpleBaseLib\src\Utilities\SbpStreamUtilities.pas', + SbpArrayUtilities in '..\..\SimpleBaseLib\src\Utilities\SbpArrayUtilities.pas', + SbpBase16Alphabet in '..\..\SimpleBaseLib\src\Alphabets\SbpBase16Alphabet.pas', + SbpCodingAlphabet in '..\..\SimpleBaseLib\src\Alphabets\SbpCodingAlphabet.pas', + SbpBase16 in '..\..\SimpleBaseLib\src\Bases\SbpBase16.pas', + SbpIBase16Alphabet in '..\..\SimpleBaseLib\src\Interfaces\Alphabets\SbpIBase16Alphabet.pas', + SbpICodingAlphabet in '..\..\SimpleBaseLib\src\Interfaces\Alphabets\SbpICodingAlphabet.pas', + SbpIBase16 in '..\..\SimpleBaseLib\src\Interfaces\Bases\SbpIBase16.pas', + SbpIBaseCoder in '..\..\SimpleBaseLib\src\Interfaces\Coders\SbpIBaseCoder.pas', + SbpIBaseStreamCoder in '..\..\SimpleBaseLib\src\Interfaces\Coders\SbpIBaseStreamCoder.pas', + SbpINonAllocatingBaseCoder in '..\..\SimpleBaseLib\src\Interfaces\Coders\SbpINonAllocatingBaseCoder.pas', + SbpDividingCoder in '..\..\SimpleBaseLib\src\Coders\SbpDividingCoder.pas', + SbpIDividingCoder in '..\..\SimpleBaseLib\src\Interfaces\Coders\SbpIDividingCoder.pas', + SbpBase10Alphabet in '..\..\SimpleBaseLib\src\Alphabets\SbpBase10Alphabet.pas', + SbpBase36Alphabet in '..\..\SimpleBaseLib\src\Alphabets\SbpBase36Alphabet.pas', + SbpBase62Alphabet in '..\..\SimpleBaseLib\src\Alphabets\SbpBase62Alphabet.pas', + SbpBase2 in '..\..\SimpleBaseLib\src\Bases\SbpBase2.pas', + SbpBase8 in '..\..\SimpleBaseLib\src\Bases\SbpBase8.pas', + SbpBase10 in '..\..\SimpleBaseLib\src\Bases\SbpBase10.pas', + SbpBase36 in '..\..\SimpleBaseLib\src\Bases\SbpBase36.pas', + SbpBase62 in '..\..\SimpleBaseLib\src\Bases\SbpBase62.pas', + SbpIBase10Alphabet in '..\..\SimpleBaseLib\src\Interfaces\Alphabets\SbpIBase10Alphabet.pas', + SbpIBase36Alphabet in '..\..\SimpleBaseLib\src\Interfaces\Alphabets\SbpIBase36Alphabet.pas', + SbpIBase62Alphabet in '..\..\SimpleBaseLib\src\Interfaces\Alphabets\SbpIBase62Alphabet.pas', + SbpIBase2 in '..\..\SimpleBaseLib\src\Interfaces\Bases\SbpIBase2.pas', + SbpIBase8 in '..\..\SimpleBaseLib\src\Interfaces\Bases\SbpIBase8.pas', + SbpIBase10 in '..\..\SimpleBaseLib\src\Interfaces\Bases\SbpIBase10.pas', + SbpIBase36 in '..\..\SimpleBaseLib\src\Interfaces\Bases\SbpIBase36.pas', + SbpIBase62 in '..\..\SimpleBaseLib\src\Interfaces\Bases\SbpIBase62.pas', + SbpBase58Alphabet in '..\..\SimpleBaseLib\src\Alphabets\SbpBase58Alphabet.pas', + SbpBase58 in '..\..\SimpleBaseLib\src\Bases\SbpBase58.pas', + SbpMoneroBase58 in '..\..\SimpleBaseLib\src\Bases\SbpMoneroBase58.pas', + SbpIBase58Alphabet in '..\..\SimpleBaseLib\src\Interfaces\Alphabets\SbpIBase58Alphabet.pas', + SbpIBase58 in '..\..\SimpleBaseLib\src\Interfaces\Bases\SbpIBase58.pas', + SbpIMoneroBase58 in '..\..\SimpleBaseLib\src\Interfaces\Bases\SbpIMoneroBase58.pas', + SbpSimpleBaseLibConstants in '..\..\SimpleBaseLib\src\Misc\SbpSimpleBaseLibConstants.pas', + SbpBase45Alphabet in '..\..\SimpleBaseLib\src\Alphabets\SbpBase45Alphabet.pas', + SbpBase45 in '..\..\SimpleBaseLib\src\Bases\SbpBase45.pas', + SbpIBase45Alphabet in '..\..\SimpleBaseLib\src\Interfaces\Alphabets\SbpIBase45Alphabet.pas', + SbpIBase45 in '..\..\SimpleBaseLib\src\Interfaces\Bases\SbpIBase45.pas', + SbpAliasedBase32Alphabet in '..\..\SimpleBaseLib\src\Alphabets\SbpAliasedBase32Alphabet.pas', + SbpBase32Alphabet in '..\..\SimpleBaseLib\src\Alphabets\SbpBase32Alphabet.pas', + SbpBase32 in '..\..\SimpleBaseLib\src\Bases\SbpBase32.pas', + SbpIBase32 in '..\..\SimpleBaseLib\src\Interfaces\Bases\SbpIBase32.pas', + SbpIBase32Alphabet in '..\..\SimpleBaseLib\src\Interfaces\Alphabets\SbpIBase32Alphabet.pas', + SbpIAliasedBase32Alphabet in '..\..\SimpleBaseLib\src\Interfaces\Alphabets\SbpIAliasedBase32Alphabet.pas', + SbpCharMap in '..\..\SimpleBaseLib\src\Misc\SbpCharMap.pas', + SbpPaddingPosition in '..\..\SimpleBaseLib\src\Misc\SbpPaddingPosition.pas', + SbpINumericBaseCoder in '..\..\SimpleBaseLib\src\Interfaces\Coders\SbpINumericBaseCoder.pas', + SbpBase85Alphabet in '..\..\SimpleBaseLib\src\Alphabets\SbpBase85Alphabet.pas', + SbpBase85 in '..\..\SimpleBaseLib\src\Bases\SbpBase85.pas', + SbpIBase85Alphabet in '..\..\SimpleBaseLib\src\Interfaces\Alphabets\SbpIBase85Alphabet.pas', + SbpIBase85 in '..\..\SimpleBaseLib\src\Interfaces\Bases\SbpIBase85.pas', + SbpBase64Alphabet in '..\..\SimpleBaseLib\src\Alphabets\SbpBase64Alphabet.pas', + SbpIBase64Alphabet in '..\..\SimpleBaseLib\src\Interfaces\Alphabets\SbpIBase64Alphabet.pas', + SbpIBase64 in '..\..\SimpleBaseLib\src\Interfaces\Bases\SbpIBase64.pas', + SbpBase64 in '..\..\SimpleBaseLib\src\Bases\SbpBase64.pas', + SbpMultibase in '..\..\SimpleBaseLib\src\Bases\SbpMultibase.pas', + SbpMultibaseEncoding in '..\..\SimpleBaseLib\src\Misc\SbpMultibaseEncoding.pas', + SimpleBaseLibTestBase in '..\src\SimpleBaseLibTestBase.pas', + BitsTests in '..\src\Misc\BitsTests.pas', + CodingAlphabetTests in '..\src\Misc\CodingAlphabetTests.pas', + EncodingAlphabetTests in '..\src\Misc\EncodingAlphabetTests.pas', + MultibaseTests in '..\src\Multibase\MultibaseTests.pas', + Base10Tests in '..\src\Base10\Base10Tests.pas', + Base16Tests in '..\src\Base16\Base16Tests.pas', + Base32AlphabetTests in '..\src\Base32\Base32AlphabetTests.pas', + Base32StreamRegressionTests in '..\src\Base32\Base32StreamRegressionTests.pas', + Base32Tests in '..\src\Base32\Base32Tests.pas', + Base36Tests in '..\src\Base36\Base36Tests.pas', + Base62Tests in '..\src\Base62\Base62Tests.pas', + Base58Tests in '..\src\Base58\Base58Tests.pas', + Base2Tests in '..\src\Base2\Base2Tests.pas', + Base2StreamRegressionTests in '..\src\Base2\Base2StreamRegressionTests.pas', + Base16StreamRegressionTests in '..\src\Base16\Base16StreamRegressionTests.pas', + Base45Tests in '..\src\Base45\Base45Tests.pas', + Base45StreamRegressionTests in '..\src\Base45\Base45StreamRegressionTests.pas', + Base85Tests in '..\src\Base85\Base85Tests.pas', + Base85StreamRegressionTests in '..\src\Base85\Base85StreamRegressionTests.pas', + Base8Tests in '..\src\Base8\Base8Tests.pas', + Base8StreamRegressionTests in '..\src\Base8\Base8StreamRegressionTests.pas', + Base64Tests in '..\src\Base64\Base64Tests.pas', + Base64StreamRegressionTests in '..\src\Base64\Base64StreamRegressionTests.pas'; + +begin + Application.Initialize; + Application.CreateForm(TMobileTestHostForm, MobileTestHostForm); + Application.Run; +end. diff --git a/SimpleBaseLib.Tests/Delphi.Tests/SimpleBaseLib.Tests.Mobile.dproj b/SimpleBaseLib.Tests/Delphi.Tests/SimpleBaseLib.Tests.Mobile.dproj new file mode 100644 index 0000000..26af7c0 --- /dev/null +++ b/SimpleBaseLib.Tests/Delphi.Tests/SimpleBaseLib.Tests.Mobile.dproj @@ -0,0 +1,1697 @@ + + + {C4D5E6F7-A8B9-4C0D-9E1F-234567890ABC} + 20.4 + FMX + True + Release + Android64 + 2790419 + Application + SimpleBaseLib.Tests.Mobile.dpr + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Cfg_1 + true + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + true + Cfg_2 + true + true + + + true + Cfg_2 + true + true + + + true + Cfg_2 + true + true + + + .\$(Platform)\$(Config) + .\$(Platform)\$(Config) + false + false + false + false + false + System;Xml;Data;Datasnap;Web;Soap;DUnitX;$(DCC_Namespace) + true + true + true + true + true + true + $(BDS)\bin\delphi_PROJECTICON.ico + $(BDS)\bin\delphi_PROJECTICNS.icns + true + SimpleBaseLib_Tests_Mobile + + + fmx;emshosting;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;IndyIPClient;dbxcds;FmxTeeUI;emsedge;bindcompfmx;ibmonitor;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;CustomIPTransport;DBXInterBaseDriver;IndySystem;ibxbindings;bindcomp;FireDACCommon;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;ibxpress;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=36 + Debug + true + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png + true + true + $(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Monochrome.xml + $(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Foreground.xml + $(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Background.xml + $(BDS)\bin\Artwork\Android\FM_VectorizedSplash.xml + $(BDS)\bin\Artwork\Android\FM_VectorizedSplashDark.xml + $(BDS)\bin\Artwork\Android\FM_VectorizedSplashV31.xml + $(BDS)\bin\Artwork\Android\FM_VectorizedSplashV31Dark.xml + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_24x24.png + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_36x36.png + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_48x48.png + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_72x72.png + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_96x96.png + false + true + $(BDS)\bin\Artwork\Android\FM_VectorizedNotificationIcon.xml + activity-1.7.2.dex.jar;annotation-experimental-1.4.1.dex.jar;annotation-jvm-1.8.1.dex.jar;annotations-23.0.0.dex.jar;appcompat-1.2.0.dex.jar;appcompat-resources-1.2.0.dex.jar;billing-7.1.1.dex.jar;biometric-1.1.0.dex.jar;browser-1.4.0.dex.jar;cloud-messaging.dex.jar;collection-jvm-1.4.2.dex.jar;concurrent-futures-1.1.0.dex.jar;core-1.17.0.dex.jar;core-common-2.2.0.dex.jar;core-ktx-1.17.0.dex.jar;core-runtime-2.2.0.dex.jar;core-viewtree-1.0.0.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;error_prone_annotations-2.9.0.dex.jar;exifinterface-1.3.6.dex.jar;firebase-annotations-16.2.0.dex.jar;firebase-common-20.3.1.dex.jar;firebase-components-17.1.0.dex.jar;firebase-datatransport-18.1.7.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-encoders-proto-16.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.1.3.dex.jar;firebase-installations-interop-17.1.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-23.1.2.dex.jar;fmx.dex.jar;fragment-1.2.5.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;jspecify-1.0.0.dex.jar;kotlin-stdlib-2.1.21.dex.jar;kotlinx-coroutines-android-1.8.1.dex.jar;kotlinx-coroutines-core-jvm-1.8.1.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.6.2.dex.jar;lifecycle-livedata-2.6.2.dex.jar;lifecycle-livedata-core-2.6.2.dex.jar;lifecycle-runtime-2.6.2.dex.jar;lifecycle-service-2.6.2.dex.jar;lifecycle-viewmodel-2.6.2.dex.jar;lifecycle-viewmodel-savedstate-2.6.2.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;okio-jvm-3.4.0.dex.jar;play-services-ads-22.2.0.dex.jar;play-services-ads-base-22.2.0.dex.jar;play-services-ads-identifier-18.0.0.dex.jar;play-services-ads-lite-22.2.0.dex.jar;play-services-appset-16.0.1.dex.jar;play-services-base-18.5.0.dex.jar;play-services-basement-18.4.0.dex.jar;play-services-cloud-messaging-17.0.1.dex.jar;play-services-location-21.0.1.dex.jar;play-services-maps-18.1.0.dex.jar;play-services-measurement-base-20.1.2.dex.jar;play-services-measurement-sdk-api-20.1.2.dex.jar;play-services-stats-17.0.2.dex.jar;play-services-tasks-18.2.0.dex.jar;print-1.0.0.dex.jar;profileinstaller-1.3.0.dex.jar;room-common-2.2.5.dex.jar;room-runtime-2.2.5.dex.jar;savedstate-1.2.1.dex.jar;sqlite-2.1.0.dex.jar;sqlite-framework-2.1.0.dex.jar;startup-runtime-1.1.1.dex.jar;tracing-1.2.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.1.8.dex.jar;transport-runtime-3.1.8.dex.jar;user-messaging-platform-2.0.0.dex.jar;vectordrawable-1.1.0.dex.jar;vectordrawable-animated-1.1.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.7.0.dex.jar + + + fmx;emshosting;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;IndyIPClient;dbxcds;FmxTeeUI;emsedge;bindcompfmx;ibmonitor;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;dbrtl;FireDACDBXDriver;CustomIPTransport;DBXInterBaseDriver;IndySystem;ibxbindings;bindcomp;FireDACCommon;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;ibxpress;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=36 + Debug + true + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png + true + true + $(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Monochrome.xml + $(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Foreground.xml + $(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Background.xml + $(BDS)\bin\Artwork\Android\FM_VectorizedSplash.xml + $(BDS)\bin\Artwork\Android\FM_VectorizedSplashDark.xml + $(BDS)\bin\Artwork\Android\FM_VectorizedSplashV31.xml + $(BDS)\bin\Artwork\Android\FM_VectorizedSplashV31Dark.xml + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_24x24.png + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_36x36.png + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_48x48.png + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_72x72.png + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_96x96.png + false + true + $(BDS)\bin\Artwork\Android\FM_VectorizedNotificationIcon.xml + activity-1.7.2.dex.jar;annotation-experimental-1.4.1.dex.jar;annotation-jvm-1.8.1.dex.jar;annotations-23.0.0.dex.jar;appcompat-1.2.0.dex.jar;appcompat-resources-1.2.0.dex.jar;billing-7.1.1.dex.jar;biometric-1.1.0.dex.jar;browser-1.4.0.dex.jar;cloud-messaging.dex.jar;collection-jvm-1.4.2.dex.jar;concurrent-futures-1.1.0.dex.jar;core-1.17.0.dex.jar;core-common-2.2.0.dex.jar;core-ktx-1.17.0.dex.jar;core-runtime-2.2.0.dex.jar;core-viewtree-1.0.0.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;error_prone_annotations-2.9.0.dex.jar;exifinterface-1.3.6.dex.jar;firebase-annotations-16.2.0.dex.jar;firebase-common-20.3.1.dex.jar;firebase-components-17.1.0.dex.jar;firebase-datatransport-18.1.7.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-encoders-proto-16.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.1.3.dex.jar;firebase-installations-interop-17.1.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-23.1.2.dex.jar;fmx.dex.jar;fragment-1.2.5.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;jspecify-1.0.0.dex.jar;kotlin-stdlib-2.1.21.dex.jar;kotlinx-coroutines-android-1.8.1.dex.jar;kotlinx-coroutines-core-jvm-1.8.1.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.6.2.dex.jar;lifecycle-livedata-2.6.2.dex.jar;lifecycle-livedata-core-2.6.2.dex.jar;lifecycle-runtime-2.6.2.dex.jar;lifecycle-service-2.6.2.dex.jar;lifecycle-viewmodel-2.6.2.dex.jar;lifecycle-viewmodel-savedstate-2.6.2.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;okio-jvm-3.4.0.dex.jar;play-services-ads-22.2.0.dex.jar;play-services-ads-base-22.2.0.dex.jar;play-services-ads-identifier-18.0.0.dex.jar;play-services-ads-lite-22.2.0.dex.jar;play-services-appset-16.0.1.dex.jar;play-services-base-18.5.0.dex.jar;play-services-basement-18.4.0.dex.jar;play-services-cloud-messaging-17.0.1.dex.jar;play-services-location-21.0.1.dex.jar;play-services-maps-18.1.0.dex.jar;play-services-measurement-base-20.1.2.dex.jar;play-services-measurement-sdk-api-20.1.2.dex.jar;play-services-stats-17.0.2.dex.jar;play-services-tasks-18.2.0.dex.jar;print-1.0.0.dex.jar;profileinstaller-1.3.0.dex.jar;room-common-2.2.5.dex.jar;room-runtime-2.2.5.dex.jar;savedstate-1.2.1.dex.jar;sqlite-2.1.0.dex.jar;sqlite-framework-2.1.0.dex.jar;startup-runtime-1.1.1.dex.jar;tracing-1.2.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.1.8.dex.jar;transport-runtime-3.1.8.dex.jar;user-messaging-platform-2.0.0.dex.jar;vectordrawable-1.1.0.dex.jar;vectordrawable-animated-1.1.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.7.0.dex.jar + + + fmx;emshosting;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;IndyIPClient;dbxcds;FmxTeeUI;emsedge;bindcompfmx;ibmonitor;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;CustomIPTransport;DBXInterBaseDriver;IndySystem;ibxbindings;bindcomp;FireDACCommon;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;ibxpress;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing bluetooth;NSBluetoothPeripheralUsageDescription=The reason for accessing bluetooth peripherals;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSMotionUsageDescription=The reason for accessing the accelerometer;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers + iPhoneAndiPad + true + Debug + $(MSBuildProjectName) + $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_1024x1024.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_180x180.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2x.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_2x.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_3x.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_3x.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_120x120.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_58x58.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_87x87.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_40x40.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_60x60.png + $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png + $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_167x167.png + $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImage_2x.png + $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageDark_2x.png + $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png + $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png + $(BDS)\bin\Artwork\iOS\iPad\FM_NotificationIcon_40x40.png + + + fmx;emshosting;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;IndyIPClient;dbxcds;FmxTeeUI;emsedge;bindcompfmx;ibmonitor;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;CustomIPTransport;DBXInterBaseDriver;IndySystem;ibxbindings;bindcomp;FireDACCommon;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;ibxpress;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing bluetooth;NSBluetoothPeripheralUsageDescription=The reason for accessing bluetooth peripherals;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSMotionUsageDescription=The reason for accessing the accelerometer;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers + iPhoneAndiPad + true + $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_1024x1024.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_180x180.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2x.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_2x.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_3x.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_3x.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_120x120.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_58x58.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_87x87.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_40x40.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_60x60.png + $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png + $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_167x167.png + $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImage_2x.png + $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageDark_2x.png + $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png + $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png + $(BDS)\bin\Artwork\iOS\iPad\FM_NotificationIcon_40x40.png + + + DataSnapServer;fmx;emshosting;DbxCommonDriver;bindengine;IndyIPCommon;FireDACCommonODBC;emsclient;FireDACCommonDriver;IndyProtocols;IndyIPClient;dbxcds;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;ibmonitor;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;soapmidas;fmxFireDAC;dbexpress;DBXMySQLDriver;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;FireDACOracleDriver;fmxdae;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;ibxbindings;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;ibxpress;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;DBXInformixDriver;fmxobj;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface + Debug + true + + + DataSnapServer;fmx;emshosting;DbxCommonDriver;bindengine;IndyIPCommon;FireDACCommonODBC;emsclient;FireDACCommonDriver;IndyProtocols;IndyIPClient;dbxcds;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;ibmonitor;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;soapmidas;fmxFireDAC;dbexpress;DBXMySQLDriver;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;FireDACOracleDriver;fmxdae;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;ibxbindings;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;ibxpress;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;DBXInformixDriver;fmxobj;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface + Debug + true + + + vclwinx;DataSnapServer;fmx;emshosting;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;FireDACCommonDriver;IndyProtocols;vclx;Skia.Package.RTL;IndyIPClient;dbxcds;vcledge;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;ibmonitor;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;fmxase;vcltouch;DBXOdbcDriver;dbrtl;FireDACDBXDriver;Skia.Package.FMX;FireDACOracleDriver;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;Skia.Package.VCL;vcldb;ibxbindings;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;IndyIPServer;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;adortl;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;ibxpress;bindcompvcl;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;vclib;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTee;DatasnapConnectorsFreePascal;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + Debug + true + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + 1033 + $(BDS)\bin\default_app.manifest + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png + + + vclwinx;DataSnapServer;fmx;emshosting;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;FireDACCommonDriver;IndyProtocols;vclx;IndyIPClient;dbxcds;vcledge;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;ibmonitor;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;fmxase;vcltouch;DBXOdbcDriver;dbrtl;FireDACDBXDriver;FireDACOracleDriver;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;Skia.Package.VCL;vcldb;ibxbindings;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;IndyIPServer;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;adortl;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;ibxpress;bindcompvcl;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;vclib;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTee;DatasnapConnectorsFreePascal;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + Debug + true + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + 1033 + $(BDS)\bin\default_app.manifest + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png + + + vclwinx;DataSnapServer;fmx;emshosting;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;FireDACCommonDriver;IndyProtocols;vclx;IndyIPClient;dbxcds;vcledge;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;ibmonitor;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;fmxase;vcltouch;DBXOdbcDriver;dbrtl;FireDACDBXDriver;FireDACOracleDriver;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;Skia.Package.VCL;vcldb;ibxbindings;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;IndyIPServer;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;adortl;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;ibxpress;bindcompvcl;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;vclib;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTee;DatasnapConnectorsFreePascal;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + Debug + true + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + 1033 + $(BDS)\bin\default_app.manifest + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png + + + DEBUG;MOBILE_TEST_HOST;$(DCC_Define) + true + false + true + true + true + true + true + + + false + PerMonitorV2 + + + PerMonitorV2 + + + PerMonitorV2 + + + false + RELEASE;MOBILE_TEST_HOST;$(DCC_Define) + 0 + 0 + + + 1 + true + true + #FFFFFF + #000000 + false + #000000 + true + + + PerMonitorV2 + + + PerMonitorV2 + + + PerMonitorV2 + + + + MainSource + + +
MobileTestHostForm
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Base + + + Cfg_1 + Base + + + Cfg_2 + Base + +
+ + Delphi.Personality.12 + Application + + + + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + + + SimpleBaseLib.Tests.Mobile.dpr + + + + + + true + + + + + true + + + + + true + + + + + ic_launcher_background.xml + true + + + + + ic_launcher_foreground.xml + true + + + + + ic_launcher_monochrome.xml + true + + + + + ic_launcher.png + true + + + + + ic_launcher.png + true + + + + + ic_launcher.png + true + + + + + ic_launcher.png + true + + + + + ic_launcher.png + true + + + + + ic_launcher.png + true + + + + + ic_notification.png + true + + + + + ic_notification.png + true + + + + + ic_notification.png + true + + + + + ic_notification.png + true + + + + + ic_notification.png + true + + + + + splash_image.png + true + + + + + splash_image.png + true + + + + + splash_image.png + true + + + + + splash_image.png + true + + + + + ic_notification.xml + true + + + + + splash_vector.xml + true + + + + + splash_vector.xml + true + + + + + splash_vector.xml + true + + + + + splash_vector.xml + true + + + + + libSimpleBaseLib.Tests.Mobile.so + true + + + + + libSimpleBaseLib.Tests.Mobile.so + true + + + + + libSimpleBaseLib.Tests.Mobile.so + true + + + + + true + + + + + colors.xml + true + + + + + true + + + + + ic_launcher.xml + true + + + + + true + + + + + libCryptoLib_Tests_Mobile.so + true + + + + + splash_image_def.xml + true + + + + + true + + + + + true + + + + + styles.xml + true + + + + + styles.xml + true + + + + + styles.xml + true + + + + + true + + + + + SimpleBaseLib.Tests.Mobile.exe + true + + + + + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + res\xml + 1 + + + res\xml + 1 + + + + + library\lib\armeabi + 1 + + + library\lib\armeabi + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + library\lib\mips + 1 + + + library\lib\mips + 1 + + + + + library\lib\armeabi-v7a + 1 + + + library\lib\arm64-v8a + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-anydpi-v21 + 1 + + + res\drawable-anydpi-v21 + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\values-v21 + 1 + + + res\values-v21 + 1 + + + + + res\values-v31 + 1 + + + res\values-v31 + 1 + + + + + res\values-v35 + 1 + + + res\values-v35 + 1 + + + + + res\drawable-anydpi-v26 + 1 + + + res\drawable-anydpi-v26 + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-anydpi-v33 + 1 + + + res\drawable-anydpi-v33 + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\values-night-v21 + 1 + + + res\values-night-v21 + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-xxhdpi + 1 + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-xxxhdpi + 1 + + + res\drawable-xxxhdpi + 1 + + + + + res\drawable-ldpi + 1 + + + res\drawable-ldpi + 1 + + + + + res\drawable-mdpi + 1 + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + res\drawable-xhdpi + 1 + + + + + res\drawable-mdpi + 1 + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + res\drawable-xhdpi + 1 + + + + + res\drawable-xxhdpi + 1 + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-xxxhdpi + 1 + + + res\drawable-xxxhdpi + 1 + + + + + res\drawable-small + 1 + + + res\drawable-small + 1 + + + + + res\drawable-normal + 1 + + + res\drawable-normal + 1 + + + + + res\drawable-large + 1 + + + res\drawable-large + 1 + + + + + res\drawable-xlarge + 1 + + + res\drawable-xlarge + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\drawable-anydpi-v24 + 1 + + + res\drawable-anydpi-v24 + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-night-anydpi-v21 + 1 + + + res\drawable-night-anydpi-v21 + 1 + + + + + res\drawable-anydpi-v31 + 1 + + + res\drawable-anydpi-v31 + 1 + + + + + res\drawable-night-anydpi-v31 + 1 + + + res\drawable-night-anydpi-v31 + 1 + + + + + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + Contents\MacOS + 1 + .framework + + + Contents\MacOS + 1 + .framework + + + Contents\MacOS + 1 + .framework + + + 0 + + + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + 0 + .dll;.bpl + + + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + 0 + .bpl + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + Contents\Resources\StartUp\ + 0 + + + Contents\Resources\StartUp\ + 0 + + + Contents\Resources\StartUp\ + 0 + + + 0 + + + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + ..\ + 1 + + + ..\ + 1 + + + ..\ + 1 + + + + + Contents + 1 + + + Contents + 1 + + + Contents + 1 + + + + + Contents\Resources + 1 + + + Contents\Resources + 1 + + + Contents\Resources + 1 + + + + + library\lib\armeabi-v7a + 1 + + + library\lib\arm64-v8a + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + Contents\MacOS + 1 + + + Contents\MacOS + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + library\lib\armeabi-v7a + 1 + + + + + 1 + + + 1 + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + ..\ + 1 + + + ..\ + 1 + + + ..\ + 1 + + + + + 1 + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).launchscreen + 64 + + + ..\$(PROJECTNAME).launchscreen + 64 + + + + + 1 + + + 1 + + + 1 + + + + + Assets + 1 + + + Assets + 1 + + + Assets + 1 + + + + + Assets + 1 + + + Assets + 1 + + + Assets + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + + + + + + + + + + + + + + True + True + True + True + True + True + True + True + True + + + 12 + + + + + +