ToFix(2DAnimations) : add board and need to merge louis

pull/25/head^2
Johan LACHENAL 10 months ago
commit 27aaa6eedc

BIN
.DS_Store vendored

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -7,12 +7,19 @@
objects = {
/* Begin PBXBuildFile section */
16038A272C197B800074346E /* FlagManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16038A262C197B800074346E /* FlagManager.swift */; };
161A8E932C2055EA00D1ADFE /* Placeholder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 161A8E922C2055EA00D1ADFE /* Placeholder.swift */; };
165725EA2C1984CC0052D7EF /* FontManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 165725E92C1984CC0052D7EF /* FontManager.swift */; };
165725F22C1985920052D7EF /* nuku1.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 165725F02C1985920052D7EF /* nuku1.ttf */; };
16FA058C2C1C14F50042D688 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 16FA058A2C1C14F50042D688 /* Localizable.strings */; };
16FA05902C1C14FD0042D688 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 16FA058E2C1C14FD0042D688 /* Localizable.strings */; };
16FA05922C1C154A0042D688 /* LanguagePickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16FA05912C1C154A0042D688 /* LanguagePickerView.swift */; };
16FA05942C1C1A380042D688 /* Rules.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16FA05932C1C1A380042D688 /* Rules.swift */; };
16FA05962C1C1A5F0042D688 /* GameType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16FA05952C1C1A5F0042D688 /* GameType.swift */; };
82CE59E92C045D1100ADEE24 /* GameScene.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82CE59E82C045D1100ADEE24 /* GameScene.swift */; };
82CE59EB2C045E3800ADEE24 /* GameView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82CE59EA2C045E3800ADEE24 /* GameView.swift */; };
82CE59EF2C0460E500ADEE24 /* SpriteMoople.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82CE59EE2C0460E500ADEE24 /* SpriteMoople.swift */; };
C20310D82BFCC2410031657D /* GeneralParametersMenuView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C20310D72BFCC2410031657D /* GeneralParametersMenuView.swift */; };
C205A2B72BF373360097BD93 /* ArkitDoushiQiApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = C205A2B62BF373360097BD93 /* ArkitDoushiQiApp.swift */; };
C205A2B92BF373360097BD93 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C205A2B82BF373360097BD93 /* ContentView.swift */; };
C205A2BB2BF373380097BD93 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C205A2BA2BF373380097BD93 /* Assets.xcassets */; };
C205A2BE2BF373380097BD93 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C205A2BD2BF373380097BD93 /* Preview Assets.xcassets */; };
C205A2C82BF373380097BD93 /* WtaTennisTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C205A2C72BF373380097BD93 /* WtaTennisTests.swift */; };
@ -43,8 +50,6 @@
C2F015262C09D3E7000F7221 /* ProfileEdit.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2F0151D2C09D3E7000F7221 /* ProfileEdit.swift */; };
C2F0152A2C09D420000F7221 /* Stub.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2F015282C09D420000F7221 /* Stub.swift */; };
C2F0152B2C09D420000F7221 /* PartyEnregistery.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2F015292C09D420000F7221 /* PartyEnregistery.swift */; };
C2F015392C09D5A5000F7221 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = C2F015372C09D5A5000F7221 /* Localizable.strings */; };
C2F0153D2C09D5C0000F7221 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = C2F0153B2C09D5C0000F7221 /* Localizable.strings */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@ -65,13 +70,21 @@
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
16038A262C197B800074346E /* FlagManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlagManager.swift; sourceTree = "<group>"; };
16038A2A2C197DEC0074346E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
161A8E922C2055EA00D1ADFE /* Placeholder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Placeholder.swift; sourceTree = "<group>"; };
165725E92C1984CC0052D7EF /* FontManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FontManager.swift; sourceTree = "<group>"; };
165725F02C1985920052D7EF /* nuku1.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = nuku1.ttf; sourceTree = "<group>"; };
16FA058B2C1C14F50042D688 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = Localizable.strings; sourceTree = "<group>"; };
16FA058F2C1C14FD0042D688 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = Localizable.strings; sourceTree = "<group>"; };
16FA05912C1C154A0042D688 /* LanguagePickerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LanguagePickerView.swift; sourceTree = "<group>"; };
16FA05932C1C1A380042D688 /* Rules.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Rules.swift; sourceTree = "<group>"; };
16FA05952C1C1A5F0042D688 /* GameType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameType.swift; sourceTree = "<group>"; };
82CE59E82C045D1100ADEE24 /* GameScene.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameScene.swift; sourceTree = "<group>"; };
82CE59EA2C045E3800ADEE24 /* GameView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameView.swift; sourceTree = "<group>"; };
82CE59EE2C0460E500ADEE24 /* SpriteMoople.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpriteMoople.swift; sourceTree = "<group>"; };
C20310D72BFCC2410031657D /* GeneralParametersMenuView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GeneralParametersMenuView.swift; sourceTree = "<group>"; };
C205A2B32BF373360097BD93 /* ArkitDoushiQi.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ArkitDoushiQi.app; sourceTree = BUILT_PRODUCTS_DIR; };
C205A2B62BF373360097BD93 /* ArkitDoushiQiApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArkitDoushiQiApp.swift; sourceTree = "<group>"; };
C205A2B82BF373360097BD93 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
C205A2BA2BF373380097BD93 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
C205A2BD2BF373380097BD93 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
C205A2C32BF373380097BD93 /* ArkitDoushiQiTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ArkitDoushiQiTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
@ -79,7 +92,7 @@
C205A2CD2BF373380097BD93 /* ArkitDoushiQiUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ArkitDoushiQiUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
C205A2D12BF373380097BD93 /* WtaTennisUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WtaTennisUITests.swift; sourceTree = "<group>"; };
C205A2D32BF373380097BD93 /* WtaTennisUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WtaTennisUITestsLaunchTests.swift; sourceTree = "<group>"; };
C24659E42BF5FE09004E80D5 /* MainMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainMenu.swift; sourceTree = "<group>"; };
C24659E42BF5FE09004E80D5 /* MainMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainMenu.swift; sourceTree = "<group>"; usesTabs = 0; };
C25220ED2C00AC7E0026B71F /* GameParametersMenuView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameParametersMenuView.swift; sourceTree = "<group>"; };
C2A535D82C0F56A700503472 /* DSQ.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = DSQ.xcframework; path = ../NEPASTOUCHER/DSQ.xcframework; sourceTree = "<group>"; };
C2DCC2B32C197BEC008AB78F /* ActionRemove.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionRemove.swift; sourceTree = "<group>"; };
@ -104,8 +117,6 @@
C2F0151D2C09D3E7000F7221 /* ProfileEdit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProfileEdit.swift; sourceTree = "<group>"; };
C2F015282C09D420000F7221 /* Stub.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Stub.swift; sourceTree = "<group>"; };
C2F015292C09D420000F7221 /* PartyEnregistery.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PartyEnregistery.swift; sourceTree = "<group>"; };
C2F015382C09D5A5000F7221 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = Localizable.strings; sourceTree = "<group>"; };
C2F0153C2C09D5C0000F7221 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = Localizable.strings; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -134,6 +145,48 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
161A8E912C2055EA00D1ADFE /* Extension */ = {
isa = PBXGroup;
children = (
161A8E922C2055EA00D1ADFE /* Placeholder.swift */,
);
path = Extension;
sourceTree = "<group>";
};
165725EB2C1985920052D7EF /* Ressources */ = {
isa = PBXGroup;
children = (
16FA058D2C1C14FD0042D688 /* fr.lproj */,
16FA05892C1C14F50042D688 /* en.lproj */,
165725EF2C1985920052D7EF /* Font */,
);
path = Ressources;
sourceTree = "<group>";
};
165725EF2C1985920052D7EF /* Font */ = {
isa = PBXGroup;
children = (
165725F02C1985920052D7EF /* nuku1.ttf */,
);
path = Font;
sourceTree = "<group>";
};
16FA05892C1C14F50042D688 /* en.lproj */ = {
isa = PBXGroup;
children = (
16FA058A2C1C14F50042D688 /* Localizable.strings */,
);
path = en.lproj;
sourceTree = "<group>";
};
16FA058D2C1C14FD0042D688 /* fr.lproj */ = {
isa = PBXGroup;
children = (
16FA058E2C1C14FD0042D688 /* Localizable.strings */,
);
path = fr.lproj;
sourceTree = "<group>";
};
8203E9052BF60117005F5C4A /* Frameworks */ = {
isa = PBXGroup;
children = (
@ -165,6 +218,7 @@
C205A2AA2BF373360097BD93 = {
isa = PBXGroup;
children = (
165725EB2C1985920052D7EF /* Ressources */,
C205A2B52BF373360097BD93 /* ArkitDoushiQi */,
C205A2C62BF373380097BD93 /* ArkitDoushiQiTests */,
C205A2D02BF373380097BD93 /* ArkitDoushiQiUITests */,
@ -186,11 +240,11 @@
C205A2B52BF373360097BD93 /* ArkitDoushiQi */ = {
isa = PBXGroup;
children = (
C2F015352C09D592000F7221 /* Resources */,
16038A2A2C197DEC0074346E /* Info.plist */,
C2F015072C09D366000F7221 /* Utils */,
82CE59E52C045C7500ADEE24 /* Game */,
C205A2B62BF373360097BD93 /* ArkitDoushiQiApp.swift */,
C205A2B82BF373360097BD93 /* ContentView.swift */,
C24659E42BF5FE09004E80D5 /* MainMenu.swift */,
C205A2BA2BF373380097BD93 /* Assets.xcassets */,
C205A2BC2BF373380097BD93 /* Views */,
);
@ -200,13 +254,13 @@
C205A2BC2BF373380097BD93 /* Views */ = {
isa = PBXGroup;
children = (
C2F015272C09D420000F7221 /* PartyEnregistery */,
161A8E912C2055EA00D1ADFE /* Extension */,
C2F015292C09D420000F7221 /* PartyEnregistery.swift */,
C25220ED2C00AC7E0026B71F /* GameParametersMenuView.swift */,
C2F015122C09D3E7000F7221 /* Components */,
C2F0150D2C09D3C3000F7221 /* Enum */,
C2F0150A2C09D3A4000F7221 /* EventTriggers */,
C25220EC2C00AC530026B71F /* GameParametersMenu */,
C25220EB2C00A9230026B71F /* GeneralParametersMenu */,
C25220EA2C00A9010026B71F /* MainMenu */,
C25220EC2C00AC530026B71F /* Data */,
C205A2BD2BF373380097BD93 /* Preview Assets.xcassets */,
);
path = Views;
@ -229,28 +283,12 @@
path = ArkitDoushiQiUITests;
sourceTree = "<group>";
};
C25220EA2C00A9010026B71F /* MainMenu */ = {
isa = PBXGroup;
children = (
C24659E42BF5FE09004E80D5 /* MainMenu.swift */,
);
path = MainMenu;
sourceTree = "<group>";
};
C25220EB2C00A9230026B71F /* GeneralParametersMenu */ = {
C25220EC2C00AC530026B71F /* Data */ = {
isa = PBXGroup;
children = (
C20310D72BFCC2410031657D /* GeneralParametersMenuView.swift */,
);
path = GeneralParametersMenu;
sourceTree = "<group>";
};
C25220EC2C00AC530026B71F /* GameParametersMenu */ = {
isa = PBXGroup;
children = (
C25220ED2C00AC7E0026B71F /* GameParametersMenuView.swift */,
C2F015282C09D420000F7221 /* Stub.swift */,
);
path = GameParametersMenu;
path = Data;
sourceTree = "<group>";
};
C2DCC2B22C197446008AB78F /* SKActions */ = {
@ -278,6 +316,8 @@
isa = PBXGroup;
children = (
C2F015082C09D366000F7221 /* LanguageSettings.swift */,
16038A262C197B800074346E /* FlagManager.swift */,
165725E92C1984CC0052D7EF /* FontManager.swift */,
);
path = Utils;
sourceTree = "<group>";
@ -295,6 +335,8 @@
children = (
C2F0150E2C09D3C3000F7221 /* Language.swift */,
C2F0150F2C09D3C3000F7221 /* AI.swift */,
16FA05932C1C1A380042D688 /* Rules.swift */,
16FA05952C1C1A5F0042D688 /* GameType.swift */,
);
path = Enum;
sourceTree = "<group>";
@ -315,8 +357,9 @@
C2F015152C09D3E7000F7221 /* ToggleComponent.swift */,
C2F015162C09D3E7000F7221 /* ButtonComponent.swift */,
C2F015172C09D3E7000F7221 /* EditImageComponent.swift */,
C2F015182C09D3E7000F7221 /* PhotoButtonComponent.swift */,
C2F015192C09D3E7000F7221 /* EditTextComponent.swift */,
16FA05912C1C154A0042D688 /* LanguagePickerView.swift */,
C2F015182C09D3E7000F7221 /* PhotoButtonComponent.swift */,
);
path = Controls;
sourceTree = "<group>";
@ -331,40 +374,6 @@
path = Visuals;
sourceTree = "<group>";
};
C2F015272C09D420000F7221 /* PartyEnregistery */ = {
isa = PBXGroup;
children = (
C2F015282C09D420000F7221 /* Stub.swift */,
C2F015292C09D420000F7221 /* PartyEnregistery.swift */,
);
path = PartyEnregistery;
sourceTree = "<group>";
};
C2F015352C09D592000F7221 /* Resources */ = {
isa = PBXGroup;
children = (
C2F0153A2C09D5C0000F7221 /* fr.lproj */,
C2F015362C09D5A5000F7221 /* en.lproj */,
);
path = Resources;
sourceTree = "<group>";
};
C2F015362C09D5A5000F7221 /* en.lproj */ = {
isa = PBXGroup;
children = (
C2F015372C09D5A5000F7221 /* Localizable.strings */,
);
path = en.lproj;
sourceTree = SOURCE_ROOT;
};
C2F0153A2C09D5C0000F7221 /* fr.lproj */ = {
isa = PBXGroup;
children = (
C2F0153B2C09D5C0000F7221 /* Localizable.strings */,
);
path = fr.lproj;
sourceTree = SOURCE_ROOT;
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@ -470,6 +479,7 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
<<<<<<< HEAD
C2DCC2BD2C19869B008AB78F /* Fireworks.sks in Resources */,
C2E32ED52C1C24A800DD37B6 /* FireworkLaunch.sks in Resources */,
C205A2BE2BF373380097BD93 /* Preview Assets.xcassets in Resources */,
@ -478,6 +488,12 @@
C2F0153D2C09D5C0000F7221 /* Localizable.strings in Resources */,
C2DCC2BB2C19849A008AB78F /* Assets.xcassets in Resources */,
C2F015392C09D5A5000F7221 /* Localizable.strings in Resources */,
=======
16FA05902C1C14FD0042D688 /* Localizable.strings in Resources */,
C205A2BE2BF373380097BD93 /* Preview Assets.xcassets in Resources */,
16FA058C2C1C14F50042D688 /* Localizable.strings in Resources */,
165725F22C1985920052D7EF /* nuku1.ttf in Resources */,
>>>>>>> ec9aee411b941e5133a65628d66010fa2e87618b
C205A2BB2BF373380097BD93 /* Assets.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
@ -507,27 +523,31 @@
C2F0152A2C09D420000F7221 /* Stub.swift in Sources */,
C2DCC2BF2C198702008AB78F /* actionEndGame.swift in Sources */,
C2F015252C09D3E7000F7221 /* ItemCollectionParty.swift in Sources */,
C205A2B92BF373360097BD93 /* ContentView.swift in Sources */,
82CE59EF2C0460E500ADEE24 /* SpriteMoople.swift in Sources */,
C2F0150C2C09D3A4000F7221 /* KeyboardReadable.swift in Sources */,
82CE59E92C045D1100ADEE24 /* GameScene.swift in Sources */,
C2F015242C09D3E7000F7221 /* ProfileComponent.swift in Sources */,
16038A272C197B800074346E /* FlagManager.swift in Sources */,
C2F0151E2C09D3E7000F7221 /* PickerComponent.swift in Sources */,
C2DCC2B42C197BEC008AB78F /* ActionRemove.swift in Sources */,
C2F015212C09D3E7000F7221 /* EditImageComponent.swift in Sources */,
C24659E52BF5FE09004E80D5 /* MainMenu.swift in Sources */,
C20310D82BFCC2410031657D /* GeneralParametersMenuView.swift in Sources */,
16FA05962C1C1A5F0042D688 /* GameType.swift in Sources */,
C2F0151F2C09D3E7000F7221 /* ToggleComponent.swift in Sources */,
C2F015202C09D3E7000F7221 /* ButtonComponent.swift in Sources */,
C2F015262C09D3E7000F7221 /* ProfileEdit.swift in Sources */,
16FA05942C1C1A380042D688 /* Rules.swift in Sources */,
C205A2B72BF373360097BD93 /* ArkitDoushiQiApp.swift in Sources */,
C2F015232C09D3E7000F7221 /* EditTextComponent.swift in Sources */,
C2F015222C09D3E7000F7221 /* PhotoButtonComponent.swift in Sources */,
C2F015092C09D366000F7221 /* LanguageSettings.swift in Sources */,
16FA05922C1C154A0042D688 /* LanguagePickerView.swift in Sources */,
82CE59EB2C045E3800ADEE24 /* GameView.swift in Sources */,
C2F0152B2C09D420000F7221 /* PartyEnregistery.swift in Sources */,
C2F015102C09D3C3000F7221 /* Language.swift in Sources */,
165725EA2C1984CC0052D7EF /* FontManager.swift in Sources */,
C25220EE2C00AC7E0026B71F /* GameParametersMenuView.swift in Sources */,
161A8E932C2055EA00D1ADFE /* Placeholder.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -564,18 +584,18 @@
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
C2F015372C09D5A5000F7221 /* Localizable.strings */ = {
16FA058A2C1C14F50042D688 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
C2F015382C09D5A5000F7221 /* en */,
16FA058B2C1C14F50042D688 /* en */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
C2F0153B2C09D5C0000F7221 /* Localizable.strings */ = {
16FA058E2C1C14FD0042D688 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
C2F0153C2C09D5C0000F7221 /* fr */,
16FA058F2C1C14FD0042D688 /* fr */,
);
name = Localizable.strings;
sourceTree = "<group>";
@ -707,6 +727,7 @@
DEVELOPMENT_ASSET_PATHS = "\"ArkitDoushiQi/Views\"";
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = ArkitDoushiQi/Info.plist;
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
@ -735,6 +756,7 @@
DEVELOPMENT_ASSET_PATHS = "\"ArkitDoushiQi/Views\"";
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = ArkitDoushiQi/Info.plist;
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchScreen_Generation = YES;

@ -21,10 +21,8 @@ struct ArkitDoushiQiApp: App {
@StateObject private var languageSettings = LanguageSettings(selectedLanguage: .English)
var body: some Scene {
WindowGroup {
MainMenu(
playButtonText: "Play",
registeredGamesButtonText: "Registered Games",
parametersButtonText: "Parameters"
MainMenu(playButtonText: "Play", registeredGamesButtonText: "Registered Games")
.environmentObject(LanguageSettings(selectedLanguage: .French)
)
.environmentObject(languageSettings)
.preferredColorScheme(isDarkMode ? .dark : .light)

@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "background_dark.svg",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,296 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="433.000000pt" height="577.000000pt" viewBox="0 0 433.000000 577.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,577.000000) scale(0.100000,-0.100000)"
fill="#ffffff" stroke="none">
<path d="M1603 5348 c-74 -11 -139 -44 -198 -101 l-50 -48 -55 21 c-69 27
-187 36 -263 21 -188 -40 -350 -207 -387 -400 -63 -334 130 -843 443 -1168
l40 -42 -45 -52 -44 -51 -70 -3 c-221 -8 -371 -221 -308 -436 19 -66 64 -138
110 -179 38 -33 125 -80 148 -80 25 0 26 -15 6 -95 -11 -43 -20 -98 -20 -122
0 -68 29 -167 66 -225 l33 -53 -35 -3 c-33 -3 -35 -5 -29 -32 4 -16 1 -54 -5
-85 -18 -86 -15 -108 21 -178 l33 -66 -13 -68 c-8 -37 -16 -93 -18 -123 -4
-56 -5 -54 64 -183 14 -26 14 -34 -2 -83 -12 -39 -15 -69 -10 -107 8 -66 25
-131 31 -124 3 3 0 23 -6 44 -10 32 -9 46 4 76 8 20 20 37 25 37 17 0 41 56
41 95 0 47 -28 100 -79 150 -54 51 -65 93 -46 165 23 86 19 137 -15 195 -40
68 -38 89 5 41 61 -69 73 -169 30 -251 -27 -49 -29 -73 -3 -33 48 75 51 167 7
257 -35 71 -35 98 0 175 17 39 24 46 48 46 34 -1 63 -21 63 -44 0 -47 38 -163
85 -261 53 -109 54 -111 192 -239 113 -106 142 -138 159 -180 23 -56 98 -207
137 -275 30 -53 24 -87 -33 -171 -43 -64 -73 -120 -67 -126 2 -2 12 14 22 36
24 53 53 80 65 60 7 -12 12 -11 29 4 43 39 19 -4 -34 -59 -30 -32 -62 -77 -72
-101 -10 -24 -21 -44 -26 -44 -11 0 18 -54 38 -70 9 -8 27 -34 40 -59 13 -25
55 -77 94 -116 73 -71 95 -83 41 -21 -37 42 -90 139 -90 164 0 23 -78 114 -90
107 -5 -3 -5 9 0 26 10 34 38 73 95 133 20 21 44 54 52 74 l15 37 41 -50 c175
-211 369 -352 529 -386 29 -6 59 -16 67 -22 49 -40 97 -58 127 -47 21 8 31 6
57 -14 98 -74 290 -87 417 -29 36 17 76 42 90 57 14 15 54 44 90 63 36 20 80
50 99 67 34 31 102 157 100 186 0 8 -5 2 -11 -15 -23 -63 -69 -116 -122 -141
-30 -14 -52 -19 -54 -13 -3 6 -10 5 -20 -3 -12 -10 -14 -10 -8 0 4 6 2 12 -3
12 -6 0 -11 -4 -11 -9 0 -5 -6 -11 -14 -14 -9 -4 -6 9 10 36 13 23 24 49 24
57 -1 10 -4 9 -12 -5 -6 -11 -22 -33 -37 -50 -17 -19 -19 -24 -6 -15 18 13 19
13 8 0 -22 -28 -71 -22 -162 20 -72 33 -99 40 -148 40 -72 0 -141 -19 -195
-55 -36 -24 -41 -25 -57 -11 -23 21 -118 22 -140 2 -14 -13 -25 -12 -84 9
-163 57 -345 207 -505 416 -7 9 -21 50 -31 92 -22 85 -55 155 -76 164 -8 3
-13 9 -10 13 3 5 -9 20 -26 34 -28 24 -67 111 -55 123 11 12 59 -35 88 -86
158 -280 405 -471 708 -547 102 -26 336 -26 430 -1 188 50 345 146 455 277 75
89 96 110 110 110 18 0 55 48 55 70 0 13 11 20 38 25 51 9 122 41 150 68 33
31 66 90 92 167 12 36 28 71 34 78 7 7 33 14 59 15 40 2 44 4 30 14 -9 7 -15
14 -12 16 10 8 89 27 115 28 29 0 29 0 5 10 -14 5 -45 7 -70 3 -43 -6 -45 -5
-30 10 24 25 115 32 163 12 22 -9 41 -14 44 -11 7 7 -60 33 -116 46 -34 7 -61
7 -93 -1 -24 -6 -66 -16 -94 -21 -27 -5 -72 -14 -100 -20 -73 -14 -143 -50
-203 -104 -63 -57 -97 -113 -113 -183 -7 -36 -18 -58 -34 -68 -14 -9 -30 -37
-41 -71 -31 -99 -162 -227 -301 -293 -253 -121 -579 -100 -838 52 -88 52 -287
229 -273 243 4 4 47 -10 97 -30 137 -55 255 -78 396 -78 66 0 149 5 185 12
133 25 285 122 363 231 120 168 169 275 171 373 1 58 1 58 -51 107 l-51 48 48
124 c105 265 149 476 157 748 7 207 -7 352 -44 460 -14 41 -26 80 -27 85 -1 6
-12 28 -23 51 l-22 41 44 89 c97 195 151 463 102 499 -44 32 -158 -36 -314
-188 -94 -92 -127 -118 -140 -112 -15 5 0 24 80 101 152 145 314 244 375 229
15 -4 25 -15 29 -35 3 -17 9 -30 14 -30 24 0 -16 68 -44 75 -53 14 -196 -66
-331 -184 -38 -33 -73 -58 -78 -55 -5 3 -7 2 -6 -3 2 -4 1 -8 -2 -8 -12 0 -37
-31 -32 -39 3 -5 -3 -6 -12 -3 -13 5 -17 3 -13 -6 8 -20 -53 -12 -73 9 -14 15
-13 16 4 10 19 -7 56 18 56 37 0 6 -8 0 -19 -12 -12 -14 -25 -19 -36 -15 -10
4 -20 1 -25 -6 -6 -9 -12 -10 -26 -1 -18 10 -18 10 0 11 20 0 20 0 0 15 -10 8
-14 15 -7 15 7 0 10 7 7 15 -5 11 -2 13 12 8 13 -5 15 -3 9 7 -6 10 -4 12 8 7
11 -4 14 -2 11 8 -12 31 180 155 336 217 146 58 231 46 266 -37 20 -49 19 -86
-3 -79 -15 5 -16 4 -3 -5 13 -10 13 -12 0 -21 -8 -5 -10 -10 -3 -10 19 0 -22
-166 -113 -452 -37 -116 -41 -137 -20 -98 32 58 148 456 167 570 22 134 -60
211 -196 183 -118 -25 -308 -126 -417 -222 -25 -23 -48 -41 -51 -41 -2 0 13
77 35 172 62 277 61 348 -3 403 -24 19 -42 25 -80 25 -117 0 -349 -68 -512
-150 l-98 -49 -9 25 c-22 56 -30 162 -27 355 2 191 0 208 -20 259 -13 30 -36
71 -52 90 -60 73 -180 114 -288 98z m136 -149 c86 -52 102 -107 111 -393 7
-215 19 -294 49 -330 8 -10 0 -21 -36 -46 -149 -107 -323 -322 -428 -531 -24
-46 -29 -51 -36 -34 -4 11 -8 55 -8 98 -1 78 0 80 68 215 109 217 151 364 151
523 0 149 -39 280 -110 376 l-40 52 33 27 c76 65 181 83 246 43z m-516 -90
c21 -5 40 -16 43 -24 3 -7 -10 -47 -30 -89 -87 -182 -127 -361 -132 -590 l-3
-158 -43 -56 c-60 -78 -67 -92 -68 -132 l0 -35 -20 25 c-37 46 -118 214 -149
308 -144 433 -18 760 294 762 39 0 87 -5 108 -11z m230 -208 c31 -63 32 -70
32 -186 0 -131 -17 -210 -77 -353 l-31 -75 -36 39 c-20 22 -51 58 -70 80 l-34
39 11 100 c12 110 65 307 107 398 26 56 28 58 46 41 11 -10 34 -47 52 -83z
m1220 -221 c59 -47 60 -123 1 -375 -20 -88 -42 -186 -48 -218 -6 -32 -15 -55
-19 -51 -4 4 -18 8 -31 9 -20 0 -24 -4 -21 -25 1 -14 6 -23 11 -20 5 3 8 8 6
13 -3 11 27 9 65 -5 18 -7 33 -18 33 -25 0 -7 5 -13 11 -13 5 0 7 5 3 11 -12
20 40 2 106 -37 33 -19 60 -39 60 -44 0 -6 6 -10 14 -10 42 0 196 -179 255
-297 60 -120 72 -187 78 -418 7 -256 -8 -426 -40 -456 -12 -10 -27 -19 -34
-19 -7 0 -13 -6 -13 -12 0 -7 -24 -30 -54 -51 -88 -64 -146 -129 -167 -189
-11 -33 -14 -57 -8 -62 5 -6 9 -21 9 -34 0 -45 63 -145 137 -218 63 -61 73
-76 73 -106 0 -33 -3 -36 -45 -48 -40 -11 -52 -10 -111 9 -51 18 -68 20 -80
11 -21 -19 -17 -38 15 -71 27 -27 70 -42 56 -19 -11 18 11 11 30 -10 9 -10 15
-26 12 -34 -3 -8 -1 -17 6 -20 9 -3 8 -7 -2 -14 -9 -7 -10 -12 -2 -16 18 -12
13 -26 -21 -58 -49 -46 -95 -72 -178 -103 -143 -53 -421 -44 -547 16 -73 35
-147 145 -213 315 -40 105 -75 160 -118 189 -82 54 -147 39 -177 -40 -38 -97
-1 -200 109 -310 81 -81 162 -127 307 -176 83 -28 112 -33 258 -40 258 -12
411 21 541 116 43 31 50 34 50 18 0 -25 -36 -73 -113 -151 -165 -169 -443
-222 -736 -140 -351 97 -679 355 -851 670 -22 40 -40 76 -40 80 0 4 28 6 63 4
34 -1 67 1 73 6 11 8 15 -1 29 -52 10 -40 30 -93 46 -120 4 -8 19 -35 31 -60
13 -25 31 -54 41 -65 10 -10 15 -25 13 -31 -3 -7 4 -14 15 -17 11 -3 19 -14
19 -26 0 -13 6 -21 16 -21 10 0 14 -6 10 -15 -3 -9 0 -15 10 -15 18 0 44 -23
44 -39 0 -6 7 -11 16 -11 9 0 18 -9 21 -20 3 -11 12 -20 19 -20 8 0 17 -6 20
-14 3 -8 14 -16 25 -19 11 -3 19 -14 19 -27 0 -18 3 -20 14 -11 11 9 16 9 23
-1 4 -7 25 -22 46 -32 20 -11 37 -23 37 -28 0 -4 9 -8 19 -8 11 0 26 -7 34
-15 8 -8 17 -12 20 -9 3 3 22 -4 43 -15 21 -12 44 -21 51 -21 6 0 24 -5 40
-12 15 -6 39 -13 53 -15 14 -2 26 -8 28 -12 1 -4 16 -5 32 -3 17 2 30 0 30 -4
0 -5 46 -10 103 -10 56 -1 89 0 72 2 -16 2 -73 9 -125 15 -241 28 -451 130
-626 304 -117 116 -190 231 -240 379 -24 70 -24 86 2 86 8 0 42 13 77 29 232
106 382 356 349 583 -15 101 -52 176 -120 240 -48 45 -54 55 -51 87 1 20 3 83
3 141 1 93 -2 111 -25 161 -15 31 -43 75 -64 97 -31 35 -35 44 -25 61 6 12 13
21 15 21 3 0 34 -12 69 -26 80 -32 131 -30 158 6 20 28 22 53 12 147 -12 117
-7 122 187 177 161 46 347 77 335 57 -4 -5 -2 -12 4 -16 5 -3 10 1 10 9 0 19
16 21 24 4 5 -10 7 -10 12 0 3 6 10 12 15 12 6 0 7 -4 4 -10 -3 -5 -1 -10 4
-10 6 0 11 5 11 10 0 6 9 10 20 10 11 0 20 -5 20 -11 0 -6 5 -9 12 -7 11 4 18
23 22 66 1 12 8 28 16 35 10 10 11 7 6 -15 -3 -14 -9 -34 -13 -44 -4 -11 -3
-15 4 -11 17 11 91 205 113 297 23 98 26 188 7 214 -11 16 -24 18 -70 14 -170
-14 -511 -275 -662 -506 l-60 -93 -5 38 c-3 21 -9 43 -13 50 -5 8 43 63 135
156 212 213 414 356 557 392 94 25 139 7 155 -59 4 -15 9 -26 12 -23 14 13
-19 78 -46 92 -39 20 -75 19 -146 -5 -147 -50 -314 -171 -524 -378 -94 -92
-170 -160 -178 -157 -7 2 -34 -3 -60 -13 -32 -12 -59 -16 -86 -11 -28 4 -44 2
-54 -7 -7 -8 -18 -14 -23 -14 -5 0 -9 -5 -9 -12 0 -7 -15 -36 -32 -66 -24 -38
-38 -52 -50 -48 -25 6 -32 -10 -11 -24 17 -10 16 -10 -2 -8 -14 2 -20 -2 -19
-14 1 -10 -5 -18 -13 -18 -10 0 -13 -6 -8 -17 4 -14 3 -15 -5 -7 -31 31 152
325 292 470 183 189 470 344 748 404 116 25 171 25 203 0z m-35 -172 c2 -21 0
-26 -11 -23 -7 3 -26 1 -40 -4 -41 -16 -32 2 11 21 20 10 29 16 20 13 -10 -2
-18 1 -19 8 0 9 -2 9 -6 0 -7 -18 -23 -16 -23 3 0 11 8 14 33 12 27 -2 33 -8
35 -30z m-3 -95 c-11 -77 -37 -173 -46 -173 -5 0 -8 -3 -8 -7 3 -20 -2 -41
-16 -59 -12 -17 -12 -13 1 30 8 28 12 58 8 68 -3 11 0 18 7 18 7 0 9 3 6 7 -4
3 -16 -2 -27 -12 -11 -10 -20 -15 -20 -11 0 11 34 42 55 50 l20 8 -20 8 c-11
4 -27 5 -35 3 -10 -3 -9 0 4 11 10 8 15 20 10 27 -5 8 -2 11 8 7 11 -5 15 1
14 20 -1 18 4 26 13 24 8 -2 11 3 8 13 -4 9 -1 15 9 15 14 0 15 -8 9 -47z
m-241 0 c42 -63 56 -118 56 -217 0 -50 -5 -107 -10 -128 l-10 -36 -92 -1 c-64
-1 -94 3 -100 11 -5 9 -8 7 -8 -6 0 -15 -6 -17 -30 -14 -16 2 -31 0 -34 -6 -2
-6 -11 -2 -21 9 -15 18 -16 18 -11 1 5 -15 2 -17 -14 -13 -11 3 -20 1 -20 -5
0 -5 -9 -6 -20 -3 -11 4 -20 2 -20 -4 0 -6 -7 -7 -17 -4 -11 5 -14 3 -8 -6 5
-10 2 -11 -14 -6 -13 4 -21 2 -21 -5 0 -7 -8 -9 -20 -5 -11 4 -20 2 -20 -4 0
-17 -17 -13 -24 6 -5 11 0 22 11 31 10 7 17 21 16 30 -1 9 0 11 3 5 7 -15 34
-17 34 -3 0 6 -9 19 -20 30 -19 19 -19 19 0 33 11 8 17 17 13 21 -4 4 1 4 12
0 15 -6 17 -4 12 10 -5 14 -3 17 8 12 8 -3 15 -1 15 5 0 6 6 9 13 6 10 -4 13
2 10 21 -3 24 -2 24 6 7 8 -17 10 -16 10 12 1 27 7 34 53 57 29 14 47 26 40
26 -7 0 -12 5 -12 11 0 5 4 8 9 5 5 -3 11 4 15 17 3 13 9 18 13 12 12 -15 34
-17 32 -3 -3 26 1 39 11 33 6 -3 10 1 10 9 0 19 16 21 24 4 3 -8 4 -6 3 4 -2
14 65 75 85 77 4 1 19 -16 32 -36z m-1115 -33 l16 -24 -33 19 c-31 18 -35 19
-45 4 -10 -13 -15 -14 -24 -4 -9 10 -9 15 0 24 19 19 68 9 86 -19z m95 -114
c9 -19 16 -42 15 -53 0 -10 -7 0 -15 21 -8 21 -19 45 -25 52 -7 9 -8 14 -1 14
5 0 17 -15 26 -34z m-61 -22 c16 -45 11 -84 -12 -84 -9 0 -21 58 -21 103 0 40
14 33 33 -19z m1917 12 c0 -3 -4 -8 -10 -11 -5 -3 -10 -1 -10 4 0 6 5 11 10
11 6 0 10 -2 10 -4z m13 -97 c-2 -80 -22 -163 -38 -157 -5 1 -8 8 -6 13 2 6 5
24 6 42 0 17 7 39 15 48 12 14 10 17 -9 22 -14 4 -18 8 -11 13 6 4 12 13 13
21 2 8 6 19 10 26 4 6 0 18 -8 26 -11 12 -12 17 -2 20 27 11 32 -2 30 -74z
m-1884 -39 c-1 -95 -6 -80 -12 30 -2 47 0 76 4 65 4 -11 8 -54 8 -95z m1731
28 c43 -71 18 -228 -51 -311 l-31 -38 -24 22 c-13 12 -21 26 -17 32 3 6 1 7
-5 3 -7 -4 -12 -2 -12 3 0 6 -6 11 -13 11 -21 0 -70 59 -63 77 5 13 4 14 -8 4
-8 -7 -17 -8 -20 -3 -8 13 18 34 29 24 5 -4 5 1 2 11 -5 13 0 21 18 29 13 6
22 14 20 18 -4 6 141 150 151 150 2 0 13 -15 24 -32z m-1954 -76 c8 -39 23
-95 34 -126 10 -31 15 -56 10 -56 -5 0 -12 5 -15 10 -4 6 -10 8 -15 5 -5 -3
-11 -1 -15 5 -3 5 -11 10 -17 10 -6 0 -5 -7 3 -17 8 -10 -4 -3 -26 15 -22 17
-45 32 -51 32 -15 0 -26 28 -14 35 6 4 10 0 10 -7 0 -7 14 -21 30 -30 17 -9
30 -16 30 -14 0 2 -16 21 -35 42 -59 65 -38 63 25 -3 75 -77 79 -68 5 12 -30
33 -55 62 -55 65 0 16 70 103 77 96 3 -2 11 -36 19 -74z m674 -59 c0 -53 -11
-113 -20 -108 -8 5 -6 -149 4 -190 6 -29 6 -29 -5 -5 -20 47 -24 174 -5 220
14 35 20 110 9 110 -2 0 -15 -7 -28 -16 -22 -14 -25 -15 -25 -1 0 17 14 25 48
26 19 1 22 -4 22 -36z m-155 7 c-3 -5 -13 -10 -21 -10 -8 0 -14 -5 -14 -10 0
-11 -22 -36 -54 -60 -20 -15 -20 -15 0 19 10 18 30 42 43 52 25 20 57 26 46 9z
m182 -22 c-3 -7 -5 -2 -5 12 0 14 2 19 5 13 2 -7 2 -19 0 -25z m-209 -56 c-23
-22 -45 -38 -48 -35 -3 2 9 17 27 33 17 16 28 32 25 36 -4 4 -2 4 5 0 6 -3 15
-1 18 5 4 5 9 8 12 6 2 -3 -15 -23 -39 -45z m138 -23 c-15 -53 -16 -72 -5
-151 11 -79 10 -91 -4 -105 -14 -15 -21 -14 -76 7 -34 12 -61 28 -61 34 0 6 9
26 21 45 11 18 18 35 16 37 -2 3 -15 -16 -28 -41 -14 -27 -31 -45 -41 -45 -24
0 -58 35 -58 59 0 10 -8 22 -17 26 -16 6 -15 8 7 25 14 11 31 20 38 20 8 0 10
5 6 12 -5 8 -2 9 9 5 13 -5 17 -1 17 14 0 11 5 17 10 14 6 -3 10 -1 10 5 0 21
29 42 50 35 12 -4 20 -2 20 5 0 6 5 10 11 8 7 -2 28 11 47 29 19 18 37 31 40
28 3 -2 -3 -32 -12 -66z m-46 56 c0 -2 -10 -9 -22 -15 -22 -11 -22 -10 -4 4
21 17 26 19 26 11z m1483 -10 c-3 -9 -8 -14 -10 -11 -3 3 -2 9 2 15 9 16 15
13 8 -4z m-1273 -5 c0 -5 -4 -10 -10 -10 -5 0 -10 5 -10 10 0 6 5 10 10 10 6
0 10 -4 10 -10z m1270 -24 c0 -3 -4 -8 -10 -11 -5 -3 -10 -1 -10 4 0 6 5 11
10 11 6 0 10 -2 10 -4z m-30 -85 c-13 -24 -31 -37 -28 -19 3 11 27 37 36 38 1
0 -2 -9 -8 -19z m-33 -77 c-9 -9 -28 6 -21 18 4 6 10 6 17 -1 6 -6 8 -13 4
-17z m-1681 -3 c-4 -5 2 -7 13 -4 11 3 27 -4 40 -18 25 -27 26 -36 7 -36 -8 0
-12 6 -9 12 2 7 -3 15 -12 19 -22 8 -60 -35 -79 -90 -16 -46 -12 -62 4 -19 5
14 16 25 24 25 21 0 120 -70 150 -106 63 -77 103 -208 90 -296 -11 -71 -19
-76 -45 -30 -13 23 -30 42 -36 42 -7 0 -13 6 -13 13 0 7 -9 19 -19 27 -11 7
-18 17 -15 22 3 4 -4 8 -15 8 -11 0 -24 7 -29 16 -5 9 -11 15 -13 13 -2 -1
-41 16 -86 38 -102 51 -210 77 -303 71 -39 -2 -70 -1 -70 3 0 14 60 88 101
122 38 33 143 77 184 77 7 0 22 16 34 36 13 21 26 32 33 28 7 -4 8 -3 4 4 -12
19 3 32 35 32 17 0 28 -4 25 -9z m1658 -43 c-22 -44 -24 -45 -34 -28 -13 20
-12 33 0 25 9 -6 14 8 11 28 0 4 8 7 19 7 20 0 20 -1 4 -32z m-1624 -8 c0 -5
-7 -10 -16 -10 -8 0 -12 5 -9 10 3 6 10 10 16 10 5 0 9 -4 9 -10z m337 -32
c-3 -8 -6 -5 -6 6 -1 11 2 17 5 13 3 -3 4 -12 1 -19z m-302 -28 c-3 -5 -10
-10 -16 -10 -5 0 -9 5 -9 10 0 6 7 10 16 10 8 0 12 -4 9 -10z m55 -7 c0 -5 -5
-15 -10 -23 -8 -12 -10 -11 -10 8 0 12 5 22 10 22 6 0 10 -3 10 -7z m-550
-151 c0 -4 -20 -30 -45 -57 -29 -32 -44 -57 -41 -68 2 -10 -16 -60 -40 -112
-41 -86 -48 -95 -73 -95 -18 0 -46 17 -87 52 l-59 51 66 -69 c85 -88 92 -102
79 -156 -5 -24 -9 -68 -8 -98 1 -54 1 -54 8 18 11 98 17 120 38 126 21 7 206
-57 195 -67 -4 -4 7 -13 25 -19 17 -7 33 -21 36 -31 3 -13 10 -17 20 -14 9 4
21 -2 30 -15 8 -11 19 -17 25 -14 5 4 12 2 16 -4 7 -11 -73 -64 -122 -81 -55
-18 -170 -7 -228 21 -111 54 -185 166 -193 294 -5 85 7 133 50 205 35 57 105
114 162 130 39 12 146 14 146 3z m244 -58 c84 -22 202 -85 268 -144 96 -86
150 -175 118 -195 -5 -3 -17 9 -26 27 -26 51 -113 137 -184 183 -96 62 -191
97 -280 103 -52 3 -79 10 -87 21 -12 14 -12 14 -7 -1 4 -12 1 -18 -8 -18 -7 0
-14 9 -14 20 0 18 7 20 79 20 44 0 107 -7 141 -16z m-234 -14 c0 -11 -2 -20
-4 -20 -2 0 -6 9 -9 20 -3 11 -1 20 4 20 5 0 9 -9 9 -20z m-30 -10 c0 -5 -2
-10 -4 -10 -3 0 -8 5 -11 10 -3 6 -1 10 4 10 6 0 11 -4 11 -10z m282 -44 c62
-22 153 -71 188 -102 73 -63 122 -122 114 -135 -4 -8 -3 -9 4 -5 6 3 16 -3 22
-15 10 -17 7 -27 -15 -59 -34 -50 -116 -106 -178 -122 l-49 -13 -30 34 -30 33
51 29 c28 16 57 38 63 49 9 13 24 20 45 20 43 0 61 31 38 66 -8 13 -24 24 -35
24 -25 0 -51 -38 -44 -65 7 -29 -62 -91 -112 -101 -68 -13 -131 41 -164 139
-9 29 -9 42 -1 50 15 15 14 50 -1 65 -18 18 -46 14 -58 -7 -14 -27 -13 -29 13
-54 13 -12 31 -44 41 -71 10 -26 31 -63 47 -81 16 -18 29 -35 29 -38 0 -10
-72 -16 -94 -7 -32 12 -94 107 -117 179 -21 68 -25 145 -9 185 9 26 11 26 112
26 82 0 116 -5 170 -24z m-315 -84 c3 -103 6 -122 19 -122 7 0 16 -18 20 -45
4 -28 11 -45 20 -45 8 0 14 -5 14 -10 0 -21 -111 18 -147 52 -13 12 -23 32
-23 44 0 38 70 184 88 184 4 0 8 -26 9 -58z m688 -316 c48 -48 75 -117 75
-192 0 -58 -31 -154 -69 -213 -54 -83 -57 -83 -77 6 -15 71 -21 81 -63 118
-70 62 -102 96 -133 144 -33 53 -35 71 -8 71 37 0 127 41 166 75 21 19 45 34
52 35 7 0 32 -20 57 -44z m-451 12 c-6 -10 -4 -10 7 -2 15 12 89 15 89 4 0 -4
12 -20 28 -35 l27 -28 -56 5 c-30 2 -77 15 -104 28 -47 23 -48 25 -25 31 38
11 42 10 34 -3z m111 -90 c6 -5 10 -67 10 -143 l0 -134 -27 26 c-16 15 -28 23
-28 18 0 -4 -14 6 -30 24 -17 17 -35 31 -40 31 -6 0 -10 4 -10 8 0 5 -8 17
-18 28 -10 10 -24 34 -32 53 -13 32 -12 35 5 45 10 6 32 23 49 38 27 24 37 27
71 22 22 -3 45 -10 50 -16z m127 -223 c31 -44 70 -108 87 -143 27 -54 29 -63
16 -69 -17 -6 -186 5 -194 13 -2 2 -6 84 -8 181 l-4 178 23 -40 c13 -22 49
-76 80 -120z m-330 -41 c4 -44 11 -101 16 -128 7 -35 6 -59 -2 -84 l-12 -34
-32 32 c-58 57 -67 85 -67 195 0 65 5 108 13 123 l13 23 32 -24 c30 -23 33
-30 39 -103z m318 115 c0 -5 17 -36 38 -67 39 -57 71 -112 58 -101 -8 7 -116
171 -116 176 0 2 5 3 10 3 6 0 10 -5 10 -11z m122 -107 c9 -24 9 -44 0 -38 -5
3 -28 33 -52 68 l-44 63 44 -38 c25 -21 48 -46 52 -55z m-266 -59 c22 -14 27
-14 36 -2 8 11 9 10 4 -4 -3 -10 -6 -25 -6 -33 0 -8 -5 -14 -11 -14 -5 0 -8 4
-5 9 3 5 -7 17 -22 27 -37 24 -152 135 -152 147 0 5 29 -18 65 -52 36 -34 77
-69 91 -78z m-66 -4 c0 -3 -11 -16 -24 -29 -23 -20 -26 -21 -40 -7 -18 18 -21
37 -6 37 6 0 10 7 10 15 0 9 -6 12 -15 9 -10 -4 -15 0 -15 11 0 9 5 13 10 10
6 -3 10 1 10 9 0 9 -4 16 -10 16 -5 0 -10 7 -10 16 0 10 17 -3 45 -33 24 -26
44 -51 45 -54z m1871 -6 c-5 -10 -17 -27 -26 -38 -16 -19 -17 -19 -3 5 26 46
29 50 34 50 3 0 0 -8 -5 -17z m-11 -157 c-22 -69 -45 -128 -50 -131 -6 -4 -10
-14 -10 -24 0 -10 -6 -24 -14 -31 -8 -6 -12 -18 -9 -26 19 -50 -52 34 -86 103
-14 28 -14 33 3 33 22 0 126 100 166 158 19 28 36 49 38 48 2 -2 -15 -60 -38
-130z m-1740 94 c0 -11 -7 -20 -15 -20 -9 0 -12 -6 -8 -16 5 -13 2 -15 -15 -9
-12 3 -22 3 -22 -2 0 -5 -23 -26 -51 -47 -47 -35 -50 -36 -44 -14 13 43 41 73
95 100 30 15 56 28 58 28 1 0 2 -9 2 -20z m-180 0 c0 -5 -2 -10 -4 -10 -3 0
-8 5 -11 10 -3 6 -1 10 4 10 6 0 11 -4 11 -10z m1870 -33 c0 -2 -17 -19 -37
-38 l-38 -34 34 38 c33 34 41 42 41 34z m-1710 -81 c0 -2 -9 -6 -20 -9 -11 -3
-18 -1 -14 4 5 9 34 13 34 5z m-165 -16 c3 -6 -1 -7 -9 -4 -18 7 -21 14 -7 14
6 0 13 -4 16 -10z m205 -13 c0 -9 -17 -13 -52 -15 -69 -2 -42 23 30 27 12 0
22 -5 22 -12z m50 3 c-20 -13 -40 -13 -40 0 0 6 12 10 28 10 21 0 24 -2 12
-10z m-160 -4 c0 -7 -66 -46 -76 -46 -5 0 9 12 31 25 42 26 45 28 45 21z
m-153 -60 c2 -2 -14 -6 -37 -10 -26 -4 -51 -1 -72 9 -32 14 -31 14 36 10 38
-3 71 -7 73 -9z m99 -84 c6 -4 26 -36 44 -72 40 -79 95 -162 167 -253 38 -48
58 -84 69 -124 8 -31 13 -60 12 -65 -2 -5 -19 15 -38 44 -26 39 -50 61 -92 83
-107 57 -142 109 -172 257 -24 116 -21 151 10 130z m1810 -444 c-9 -12 -16
-19 -16 -15 0 11 24 47 28 42 2 -2 -3 -14 -12 -27z m-1550 -55 c-7 -7 -26 7
-26 19 0 6 6 6 15 -2 9 -7 13 -15 11 -17z m2005 -159 c35 -37 19 -36 -24 1
-26 22 -32 32 -19 28 11 -3 30 -16 43 -29z m-21 -19 c16 -17 21 -33 18 -61 -2
-20 -9 -39 -16 -42 -9 -3 -12 3 -10 14 2 12 -2 18 -10 16 -8 -1 -11 2 -7 8 9
14 -25 41 -42 35 -7 -2 -13 3 -13 12 0 13 -2 13 -16 2 -14 -12 -16 -11 -13 6
5 23 43 45 69 38 10 -3 28 -15 40 -28z m-2383 -45 c5 -23 6 -22 18 15 13 40
13 40 14 9 1 -21 -8 -42 -29 -65 -16 -19 -30 -37 -30 -41 0 -5 -5 -8 -11 -8
-13 0 -5 79 14 125 10 25 12 27 15 10 1 -11 5 -31 9 -45z m649 2 c1 -9 5 -28
9 -42 4 -17 0 -13 -15 13 -11 21 -18 42 -14 48 8 13 17 4 20 -19z m1653 -27
c29 -14 47 -50 31 -60 -5 -3 -14 3 -19 14 -6 10 -25 24 -43 30 -26 9 -30 14
-18 21 19 12 16 13 49 -5z m-809 -675 c29 -29 27 -84 -5 -115 -32 -33 -59 -34
-49 -2 4 12 7 29 8 37 1 8 6 19 11 23 6 6 5 10 -4 14 -10 4 -11 7 -1 13 8 5
10 15 6 26 -5 14 -9 15 -15 5 -7 -10 -10 -9 -14 3 -9 24 38 21 63 -4z m-82
-30 c3 -38 -18 -77 -37 -66 -8 5 -8 13 0 28 6 11 8 34 5 50 -5 24 -3 29 12 26
11 -2 18 -14 20 -38z m142 -42 c0 -9 -4 -20 -10 -23 -6 -4 -10 9 -10 32 0 28
3 34 10 23 5 -8 10 -23 10 -32z m-888 -53 c10 -19 10 -19 -8 -3 -10 9 -27 32
-37 50 l-18 33 26 -30 c14 -16 31 -39 37 -50z"/>
<path d="M1515 3970 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
-7 -4 -4 -10z"/>
<path d="M1500 3940 c0 -5 5 -10 10 -10 6 0 10 5 10 10 0 6 -4 10 -10 10 -5 0
-10 -4 -10 -10z"/>
<path d="M1485 3910 c4 -6 11 -8 16 -5 14 9 11 15 -7 15 -8 0 -12 -5 -9 -10z"/>
<path d="M1897 3483 c-44 -47 -70 -119 -75 -211 -8 -148 32 -279 125 -410 102
-143 147 -180 371 -304 70 -39 146 -86 170 -105 l42 -34 0 63 c0 78 -18 147
-60 229 -48 96 -100 160 -250 309 -201 201 -265 298 -277 425 -3 36 -9 65 -13
65 -3 0 -18 -12 -33 -27z m30 -325 c-3 -8 -6 -5 -6 6 -1 11 2 17 5 13 3 -3 4
-12 1 -19z m72 -185 c12 -24 19 -43 16 -43 -13 0 -86 176 -84 204 0 6 11 -18
23 -54 13 -36 33 -84 45 -107z m130 -173 c36 -36 82 -78 101 -94 25 -20 22
-18 -12 5 -56 38 -169 153 -187 189 -10 20 -8 19 10 -5 13 -16 52 -59 88 -95z
m226 -175 c33 -24 71 -56 85 -71 17 -20 12 -17 -17 8 -23 21 -67 54 -98 74
-30 20 -55 39 -55 41 0 6 17 -5 85 -52z"/>
<path d="M2890 3455 c0 -8 -20 -37 -44 -64 -60 -68 -64 -102 -32 -316 35 -241
39 -285 28 -332 -22 -99 29 -4 87 161 46 130 63 211 64 311 1 82 -1 94 -27
140 -16 28 -36 64 -45 82 -17 34 -31 43 -31 18z"/>
<path d="M2520 2992 c-62 -63 -65 -190 -5 -259 26 -31 43 -27 26 5 -22 41 -14
52 37 52 40 0 53 5 77 30 50 52 36 154 -27 186 -42 22 -76 17 -108 -14z"/>
<path d="M3006 2820 c-34 -41 -36 -102 -4 -125 20 -13 21 -18 10 -36 -24 -39
-3 -32 42 12 52 52 68 106 45 148 -22 39 -60 39 -93 1z"/>
<path d="M2760 2411 c41 -4 82 -11 90 -15 12 -7 13 -7 2 5 -8 9 -39 14 -90 15
l-77 2 75 -7z"/>
<path d="M2375 2179 c-20 -31 168 -160 255 -175 29 -5 25 -1 -26 24 -34 17
-92 59 -131 96 -71 66 -86 75 -98 55z"/>
<path d="M3055 2070 c-3 -6 1 -7 9 -4 18 7 21 14 7 14 -6 0 -13 -4 -16 -10z"/>
<path d="M2275 2010 c-11 -18 14 -38 71 -60 63 -23 203 -41 242 -31 23 6 18 9
-29 13 -30 4 -104 25 -164 47 -125 47 -112 44 -120 31z"/>
<path d="M2535 1843 c-32 -12 -66 -14 -162 -9 -122 6 -163 -3 -108 -24 59 -22
205 -7 289 31 50 21 36 23 -19 2z"/>
<path d="M2681 1504 c-35 -14 -100 -31 -145 -38 -57 -10 -71 -15 -46 -16 39
-3 35 -3 108 16 29 8 61 14 72 14 10 0 20 5 22 11 2 6 16 12 31 12 15 1 27 8
27 15 0 6 -1 12 -2 11 -2 0 -32 -11 -67 -25z"/>
<path d="M1985 4090 c-3 -5 -2 -10 3 -10 5 0 13 -10 19 -22 6 -15 12 -18 17
-10 4 7 2 12 -3 12 -6 0 -11 9 -11 20 0 21 -15 27 -25 10z"/>
<path d="M1945 3990 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
-8 -4 -11 -10z"/>
<path d="M1581 954 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z"/>
<path d="M3291 912 c-8 -19 -31 -40 -62 -56 -27 -15 -49 -29 -49 -31 0 -9 49
4 74 20 26 17 63 81 53 91 -2 3 -10 -8 -16 -24z"/>
<path d="M1571 914 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 21 KiB

@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "background_light.svg",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,296 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="433.000000pt" height="577.000000pt" viewBox="0 0 433.000000 577.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,577.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M1603 5348 c-74 -11 -139 -44 -198 -101 l-50 -48 -55 21 c-69 27
-187 36 -263 21 -188 -40 -350 -207 -387 -400 -63 -334 130 -843 443 -1168
l40 -42 -45 -52 -44 -51 -70 -3 c-221 -8 -371 -221 -308 -436 19 -66 64 -138
110 -179 38 -33 125 -80 148 -80 25 0 26 -15 6 -95 -11 -43 -20 -98 -20 -122
0 -68 29 -167 66 -225 l33 -53 -35 -3 c-33 -3 -35 -5 -29 -32 4 -16 1 -54 -5
-85 -18 -86 -15 -108 21 -178 l33 -66 -13 -68 c-8 -37 -16 -93 -18 -123 -4
-56 -5 -54 64 -183 14 -26 14 -34 -2 -83 -12 -39 -15 -69 -10 -107 8 -66 25
-131 31 -124 3 3 0 23 -6 44 -10 32 -9 46 4 76 8 20 20 37 25 37 17 0 41 56
41 95 0 47 -28 100 -79 150 -54 51 -65 93 -46 165 23 86 19 137 -15 195 -40
68 -38 89 5 41 61 -69 73 -169 30 -251 -27 -49 -29 -73 -3 -33 48 75 51 167 7
257 -35 71 -35 98 0 175 17 39 24 46 48 46 34 -1 63 -21 63 -44 0 -47 38 -163
85 -261 53 -109 54 -111 192 -239 113 -106 142 -138 159 -180 23 -56 98 -207
137 -275 30 -53 24 -87 -33 -171 -43 -64 -73 -120 -67 -126 2 -2 12 14 22 36
24 53 53 80 65 60 7 -12 12 -11 29 4 43 39 19 -4 -34 -59 -30 -32 -62 -77 -72
-101 -10 -24 -21 -44 -26 -44 -11 0 18 -54 38 -70 9 -8 27 -34 40 -59 13 -25
55 -77 94 -116 73 -71 95 -83 41 -21 -37 42 -90 139 -90 164 0 23 -78 114 -90
107 -5 -3 -5 9 0 26 10 34 38 73 95 133 20 21 44 54 52 74 l15 37 41 -50 c175
-211 369 -352 529 -386 29 -6 59 -16 67 -22 49 -40 97 -58 127 -47 21 8 31 6
57 -14 98 -74 290 -87 417 -29 36 17 76 42 90 57 14 15 54 44 90 63 36 20 80
50 99 67 34 31 102 157 100 186 0 8 -5 2 -11 -15 -23 -63 -69 -116 -122 -141
-30 -14 -52 -19 -54 -13 -3 6 -10 5 -20 -3 -12 -10 -14 -10 -8 0 4 6 2 12 -3
12 -6 0 -11 -4 -11 -9 0 -5 -6 -11 -14 -14 -9 -4 -6 9 10 36 13 23 24 49 24
57 -1 10 -4 9 -12 -5 -6 -11 -22 -33 -37 -50 -17 -19 -19 -24 -6 -15 18 13 19
13 8 0 -22 -28 -71 -22 -162 20 -72 33 -99 40 -148 40 -72 0 -141 -19 -195
-55 -36 -24 -41 -25 -57 -11 -23 21 -118 22 -140 2 -14 -13 -25 -12 -84 9
-163 57 -345 207 -505 416 -7 9 -21 50 -31 92 -22 85 -55 155 -76 164 -8 3
-13 9 -10 13 3 5 -9 20 -26 34 -28 24 -67 111 -55 123 11 12 59 -35 88 -86
158 -280 405 -471 708 -547 102 -26 336 -26 430 -1 188 50 345 146 455 277 75
89 96 110 110 110 18 0 55 48 55 70 0 13 11 20 38 25 51 9 122 41 150 68 33
31 66 90 92 167 12 36 28 71 34 78 7 7 33 14 59 15 40 2 44 4 30 14 -9 7 -15
14 -12 16 10 8 89 27 115 28 29 0 29 0 5 10 -14 5 -45 7 -70 3 -43 -6 -45 -5
-30 10 24 25 115 32 163 12 22 -9 41 -14 44 -11 7 7 -60 33 -116 46 -34 7 -61
7 -93 -1 -24 -6 -66 -16 -94 -21 -27 -5 -72 -14 -100 -20 -73 -14 -143 -50
-203 -104 -63 -57 -97 -113 -113 -183 -7 -36 -18 -58 -34 -68 -14 -9 -30 -37
-41 -71 -31 -99 -162 -227 -301 -293 -253 -121 -579 -100 -838 52 -88 52 -287
229 -273 243 4 4 47 -10 97 -30 137 -55 255 -78 396 -78 66 0 149 5 185 12
133 25 285 122 363 231 120 168 169 275 171 373 1 58 1 58 -51 107 l-51 48 48
124 c105 265 149 476 157 748 7 207 -7 352 -44 460 -14 41 -26 80 -27 85 -1 6
-12 28 -23 51 l-22 41 44 89 c97 195 151 463 102 499 -44 32 -158 -36 -314
-188 -94 -92 -127 -118 -140 -112 -15 5 0 24 80 101 152 145 314 244 375 229
15 -4 25 -15 29 -35 3 -17 9 -30 14 -30 24 0 -16 68 -44 75 -53 14 -196 -66
-331 -184 -38 -33 -73 -58 -78 -55 -5 3 -7 2 -6 -3 2 -4 1 -8 -2 -8 -12 0 -37
-31 -32 -39 3 -5 -3 -6 -12 -3 -13 5 -17 3 -13 -6 8 -20 -53 -12 -73 9 -14 15
-13 16 4 10 19 -7 56 18 56 37 0 6 -8 0 -19 -12 -12 -14 -25 -19 -36 -15 -10
4 -20 1 -25 -6 -6 -9 -12 -10 -26 -1 -18 10 -18 10 0 11 20 0 20 0 0 15 -10 8
-14 15 -7 15 7 0 10 7 7 15 -5 11 -2 13 12 8 13 -5 15 -3 9 7 -6 10 -4 12 8 7
11 -4 14 -2 11 8 -12 31 180 155 336 217 146 58 231 46 266 -37 20 -49 19 -86
-3 -79 -15 5 -16 4 -3 -5 13 -10 13 -12 0 -21 -8 -5 -10 -10 -3 -10 19 0 -22
-166 -113 -452 -37 -116 -41 -137 -20 -98 32 58 148 456 167 570 22 134 -60
211 -196 183 -118 -25 -308 -126 -417 -222 -25 -23 -48 -41 -51 -41 -2 0 13
77 35 172 62 277 61 348 -3 403 -24 19 -42 25 -80 25 -117 0 -349 -68 -512
-150 l-98 -49 -9 25 c-22 56 -30 162 -27 355 2 191 0 208 -20 259 -13 30 -36
71 -52 90 -60 73 -180 114 -288 98z m136 -149 c86 -52 102 -107 111 -393 7
-215 19 -294 49 -330 8 -10 0 -21 -36 -46 -149 -107 -323 -322 -428 -531 -24
-46 -29 -51 -36 -34 -4 11 -8 55 -8 98 -1 78 0 80 68 215 109 217 151 364 151
523 0 149 -39 280 -110 376 l-40 52 33 27 c76 65 181 83 246 43z m-516 -90
c21 -5 40 -16 43 -24 3 -7 -10 -47 -30 -89 -87 -182 -127 -361 -132 -590 l-3
-158 -43 -56 c-60 -78 -67 -92 -68 -132 l0 -35 -20 25 c-37 46 -118 214 -149
308 -144 433 -18 760 294 762 39 0 87 -5 108 -11z m230 -208 c31 -63 32 -70
32 -186 0 -131 -17 -210 -77 -353 l-31 -75 -36 39 c-20 22 -51 58 -70 80 l-34
39 11 100 c12 110 65 307 107 398 26 56 28 58 46 41 11 -10 34 -47 52 -83z
m1220 -221 c59 -47 60 -123 1 -375 -20 -88 -42 -186 -48 -218 -6 -32 -15 -55
-19 -51 -4 4 -18 8 -31 9 -20 0 -24 -4 -21 -25 1 -14 6 -23 11 -20 5 3 8 8 6
13 -3 11 27 9 65 -5 18 -7 33 -18 33 -25 0 -7 5 -13 11 -13 5 0 7 5 3 11 -12
20 40 2 106 -37 33 -19 60 -39 60 -44 0 -6 6 -10 14 -10 42 0 196 -179 255
-297 60 -120 72 -187 78 -418 7 -256 -8 -426 -40 -456 -12 -10 -27 -19 -34
-19 -7 0 -13 -6 -13 -12 0 -7 -24 -30 -54 -51 -88 -64 -146 -129 -167 -189
-11 -33 -14 -57 -8 -62 5 -6 9 -21 9 -34 0 -45 63 -145 137 -218 63 -61 73
-76 73 -106 0 -33 -3 -36 -45 -48 -40 -11 -52 -10 -111 9 -51 18 -68 20 -80
11 -21 -19 -17 -38 15 -71 27 -27 70 -42 56 -19 -11 18 11 11 30 -10 9 -10 15
-26 12 -34 -3 -8 -1 -17 6 -20 9 -3 8 -7 -2 -14 -9 -7 -10 -12 -2 -16 18 -12
13 -26 -21 -58 -49 -46 -95 -72 -178 -103 -143 -53 -421 -44 -547 16 -73 35
-147 145 -213 315 -40 105 -75 160 -118 189 -82 54 -147 39 -177 -40 -38 -97
-1 -200 109 -310 81 -81 162 -127 307 -176 83 -28 112 -33 258 -40 258 -12
411 21 541 116 43 31 50 34 50 18 0 -25 -36 -73 -113 -151 -165 -169 -443
-222 -736 -140 -351 97 -679 355 -851 670 -22 40 -40 76 -40 80 0 4 28 6 63 4
34 -1 67 1 73 6 11 8 15 -1 29 -52 10 -40 30 -93 46 -120 4 -8 19 -35 31 -60
13 -25 31 -54 41 -65 10 -10 15 -25 13 -31 -3 -7 4 -14 15 -17 11 -3 19 -14
19 -26 0 -13 6 -21 16 -21 10 0 14 -6 10 -15 -3 -9 0 -15 10 -15 18 0 44 -23
44 -39 0 -6 7 -11 16 -11 9 0 18 -9 21 -20 3 -11 12 -20 19 -20 8 0 17 -6 20
-14 3 -8 14 -16 25 -19 11 -3 19 -14 19 -27 0 -18 3 -20 14 -11 11 9 16 9 23
-1 4 -7 25 -22 46 -32 20 -11 37 -23 37 -28 0 -4 9 -8 19 -8 11 0 26 -7 34
-15 8 -8 17 -12 20 -9 3 3 22 -4 43 -15 21 -12 44 -21 51 -21 6 0 24 -5 40
-12 15 -6 39 -13 53 -15 14 -2 26 -8 28 -12 1 -4 16 -5 32 -3 17 2 30 0 30 -4
0 -5 46 -10 103 -10 56 -1 89 0 72 2 -16 2 -73 9 -125 15 -241 28 -451 130
-626 304 -117 116 -190 231 -240 379 -24 70 -24 86 2 86 8 0 42 13 77 29 232
106 382 356 349 583 -15 101 -52 176 -120 240 -48 45 -54 55 -51 87 1 20 3 83
3 141 1 93 -2 111 -25 161 -15 31 -43 75 -64 97 -31 35 -35 44 -25 61 6 12 13
21 15 21 3 0 34 -12 69 -26 80 -32 131 -30 158 6 20 28 22 53 12 147 -12 117
-7 122 187 177 161 46 347 77 335 57 -4 -5 -2 -12 4 -16 5 -3 10 1 10 9 0 19
16 21 24 4 5 -10 7 -10 12 0 3 6 10 12 15 12 6 0 7 -4 4 -10 -3 -5 -1 -10 4
-10 6 0 11 5 11 10 0 6 9 10 20 10 11 0 20 -5 20 -11 0 -6 5 -9 12 -7 11 4 18
23 22 66 1 12 8 28 16 35 10 10 11 7 6 -15 -3 -14 -9 -34 -13 -44 -4 -11 -3
-15 4 -11 17 11 91 205 113 297 23 98 26 188 7 214 -11 16 -24 18 -70 14 -170
-14 -511 -275 -662 -506 l-60 -93 -5 38 c-3 21 -9 43 -13 50 -5 8 43 63 135
156 212 213 414 356 557 392 94 25 139 7 155 -59 4 -15 9 -26 12 -23 14 13
-19 78 -46 92 -39 20 -75 19 -146 -5 -147 -50 -314 -171 -524 -378 -94 -92
-170 -160 -178 -157 -7 2 -34 -3 -60 -13 -32 -12 -59 -16 -86 -11 -28 4 -44 2
-54 -7 -7 -8 -18 -14 -23 -14 -5 0 -9 -5 -9 -12 0 -7 -15 -36 -32 -66 -24 -38
-38 -52 -50 -48 -25 6 -32 -10 -11 -24 17 -10 16 -10 -2 -8 -14 2 -20 -2 -19
-14 1 -10 -5 -18 -13 -18 -10 0 -13 -6 -8 -17 4 -14 3 -15 -5 -7 -31 31 152
325 292 470 183 189 470 344 748 404 116 25 171 25 203 0z m-35 -172 c2 -21 0
-26 -11 -23 -7 3 -26 1 -40 -4 -41 -16 -32 2 11 21 20 10 29 16 20 13 -10 -2
-18 1 -19 8 0 9 -2 9 -6 0 -7 -18 -23 -16 -23 3 0 11 8 14 33 12 27 -2 33 -8
35 -30z m-3 -95 c-11 -77 -37 -173 -46 -173 -5 0 -8 -3 -8 -7 3 -20 -2 -41
-16 -59 -12 -17 -12 -13 1 30 8 28 12 58 8 68 -3 11 0 18 7 18 7 0 9 3 6 7 -4
3 -16 -2 -27 -12 -11 -10 -20 -15 -20 -11 0 11 34 42 55 50 l20 8 -20 8 c-11
4 -27 5 -35 3 -10 -3 -9 0 4 11 10 8 15 20 10 27 -5 8 -2 11 8 7 11 -5 15 1
14 20 -1 18 4 26 13 24 8 -2 11 3 8 13 -4 9 -1 15 9 15 14 0 15 -8 9 -47z
m-241 0 c42 -63 56 -118 56 -217 0 -50 -5 -107 -10 -128 l-10 -36 -92 -1 c-64
-1 -94 3 -100 11 -5 9 -8 7 -8 -6 0 -15 -6 -17 -30 -14 -16 2 -31 0 -34 -6 -2
-6 -11 -2 -21 9 -15 18 -16 18 -11 1 5 -15 2 -17 -14 -13 -11 3 -20 1 -20 -5
0 -5 -9 -6 -20 -3 -11 4 -20 2 -20 -4 0 -6 -7 -7 -17 -4 -11 5 -14 3 -8 -6 5
-10 2 -11 -14 -6 -13 4 -21 2 -21 -5 0 -7 -8 -9 -20 -5 -11 4 -20 2 -20 -4 0
-17 -17 -13 -24 6 -5 11 0 22 11 31 10 7 17 21 16 30 -1 9 0 11 3 5 7 -15 34
-17 34 -3 0 6 -9 19 -20 30 -19 19 -19 19 0 33 11 8 17 17 13 21 -4 4 1 4 12
0 15 -6 17 -4 12 10 -5 14 -3 17 8 12 8 -3 15 -1 15 5 0 6 6 9 13 6 10 -4 13
2 10 21 -3 24 -2 24 6 7 8 -17 10 -16 10 12 1 27 7 34 53 57 29 14 47 26 40
26 -7 0 -12 5 -12 11 0 5 4 8 9 5 5 -3 11 4 15 17 3 13 9 18 13 12 12 -15 34
-17 32 -3 -3 26 1 39 11 33 6 -3 10 1 10 9 0 19 16 21 24 4 3 -8 4 -6 3 4 -2
14 65 75 85 77 4 1 19 -16 32 -36z m-1115 -33 l16 -24 -33 19 c-31 18 -35 19
-45 4 -10 -13 -15 -14 -24 -4 -9 10 -9 15 0 24 19 19 68 9 86 -19z m95 -114
c9 -19 16 -42 15 -53 0 -10 -7 0 -15 21 -8 21 -19 45 -25 52 -7 9 -8 14 -1 14
5 0 17 -15 26 -34z m-61 -22 c16 -45 11 -84 -12 -84 -9 0 -21 58 -21 103 0 40
14 33 33 -19z m1917 12 c0 -3 -4 -8 -10 -11 -5 -3 -10 -1 -10 4 0 6 5 11 10
11 6 0 10 -2 10 -4z m13 -97 c-2 -80 -22 -163 -38 -157 -5 1 -8 8 -6 13 2 6 5
24 6 42 0 17 7 39 15 48 12 14 10 17 -9 22 -14 4 -18 8 -11 13 6 4 12 13 13
21 2 8 6 19 10 26 4 6 0 18 -8 26 -11 12 -12 17 -2 20 27 11 32 -2 30 -74z
m-1884 -39 c-1 -95 -6 -80 -12 30 -2 47 0 76 4 65 4 -11 8 -54 8 -95z m1731
28 c43 -71 18 -228 -51 -311 l-31 -38 -24 22 c-13 12 -21 26 -17 32 3 6 1 7
-5 3 -7 -4 -12 -2 -12 3 0 6 -6 11 -13 11 -21 0 -70 59 -63 77 5 13 4 14 -8 4
-8 -7 -17 -8 -20 -3 -8 13 18 34 29 24 5 -4 5 1 2 11 -5 13 0 21 18 29 13 6
22 14 20 18 -4 6 141 150 151 150 2 0 13 -15 24 -32z m-1954 -76 c8 -39 23
-95 34 -126 10 -31 15 -56 10 -56 -5 0 -12 5 -15 10 -4 6 -10 8 -15 5 -5 -3
-11 -1 -15 5 -3 5 -11 10 -17 10 -6 0 -5 -7 3 -17 8 -10 -4 -3 -26 15 -22 17
-45 32 -51 32 -15 0 -26 28 -14 35 6 4 10 0 10 -7 0 -7 14 -21 30 -30 17 -9
30 -16 30 -14 0 2 -16 21 -35 42 -59 65 -38 63 25 -3 75 -77 79 -68 5 12 -30
33 -55 62 -55 65 0 16 70 103 77 96 3 -2 11 -36 19 -74z m674 -59 c0 -53 -11
-113 -20 -108 -8 5 -6 -149 4 -190 6 -29 6 -29 -5 -5 -20 47 -24 174 -5 220
14 35 20 110 9 110 -2 0 -15 -7 -28 -16 -22 -14 -25 -15 -25 -1 0 17 14 25 48
26 19 1 22 -4 22 -36z m-155 7 c-3 -5 -13 -10 -21 -10 -8 0 -14 -5 -14 -10 0
-11 -22 -36 -54 -60 -20 -15 -20 -15 0 19 10 18 30 42 43 52 25 20 57 26 46 9z
m182 -22 c-3 -7 -5 -2 -5 12 0 14 2 19 5 13 2 -7 2 -19 0 -25z m-209 -56 c-23
-22 -45 -38 -48 -35 -3 2 9 17 27 33 17 16 28 32 25 36 -4 4 -2 4 5 0 6 -3 15
-1 18 5 4 5 9 8 12 6 2 -3 -15 -23 -39 -45z m138 -23 c-15 -53 -16 -72 -5
-151 11 -79 10 -91 -4 -105 -14 -15 -21 -14 -76 7 -34 12 -61 28 -61 34 0 6 9
26 21 45 11 18 18 35 16 37 -2 3 -15 -16 -28 -41 -14 -27 -31 -45 -41 -45 -24
0 -58 35 -58 59 0 10 -8 22 -17 26 -16 6 -15 8 7 25 14 11 31 20 38 20 8 0 10
5 6 12 -5 8 -2 9 9 5 13 -5 17 -1 17 14 0 11 5 17 10 14 6 -3 10 -1 10 5 0 21
29 42 50 35 12 -4 20 -2 20 5 0 6 5 10 11 8 7 -2 28 11 47 29 19 18 37 31 40
28 3 -2 -3 -32 -12 -66z m-46 56 c0 -2 -10 -9 -22 -15 -22 -11 -22 -10 -4 4
21 17 26 19 26 11z m1483 -10 c-3 -9 -8 -14 -10 -11 -3 3 -2 9 2 15 9 16 15
13 8 -4z m-1273 -5 c0 -5 -4 -10 -10 -10 -5 0 -10 5 -10 10 0 6 5 10 10 10 6
0 10 -4 10 -10z m1270 -24 c0 -3 -4 -8 -10 -11 -5 -3 -10 -1 -10 4 0 6 5 11
10 11 6 0 10 -2 10 -4z m-30 -85 c-13 -24 -31 -37 -28 -19 3 11 27 37 36 38 1
0 -2 -9 -8 -19z m-33 -77 c-9 -9 -28 6 -21 18 4 6 10 6 17 -1 6 -6 8 -13 4
-17z m-1681 -3 c-4 -5 2 -7 13 -4 11 3 27 -4 40 -18 25 -27 26 -36 7 -36 -8 0
-12 6 -9 12 2 7 -3 15 -12 19 -22 8 -60 -35 -79 -90 -16 -46 -12 -62 4 -19 5
14 16 25 24 25 21 0 120 -70 150 -106 63 -77 103 -208 90 -296 -11 -71 -19
-76 -45 -30 -13 23 -30 42 -36 42 -7 0 -13 6 -13 13 0 7 -9 19 -19 27 -11 7
-18 17 -15 22 3 4 -4 8 -15 8 -11 0 -24 7 -29 16 -5 9 -11 15 -13 13 -2 -1
-41 16 -86 38 -102 51 -210 77 -303 71 -39 -2 -70 -1 -70 3 0 14 60 88 101
122 38 33 143 77 184 77 7 0 22 16 34 36 13 21 26 32 33 28 7 -4 8 -3 4 4 -12
19 3 32 35 32 17 0 28 -4 25 -9z m1658 -43 c-22 -44 -24 -45 -34 -28 -13 20
-12 33 0 25 9 -6 14 8 11 28 0 4 8 7 19 7 20 0 20 -1 4 -32z m-1624 -8 c0 -5
-7 -10 -16 -10 -8 0 -12 5 -9 10 3 6 10 10 16 10 5 0 9 -4 9 -10z m337 -32
c-3 -8 -6 -5 -6 6 -1 11 2 17 5 13 3 -3 4 -12 1 -19z m-302 -28 c-3 -5 -10
-10 -16 -10 -5 0 -9 5 -9 10 0 6 7 10 16 10 8 0 12 -4 9 -10z m55 -7 c0 -5 -5
-15 -10 -23 -8 -12 -10 -11 -10 8 0 12 5 22 10 22 6 0 10 -3 10 -7z m-550
-151 c0 -4 -20 -30 -45 -57 -29 -32 -44 -57 -41 -68 2 -10 -16 -60 -40 -112
-41 -86 -48 -95 -73 -95 -18 0 -46 17 -87 52 l-59 51 66 -69 c85 -88 92 -102
79 -156 -5 -24 -9 -68 -8 -98 1 -54 1 -54 8 18 11 98 17 120 38 126 21 7 206
-57 195 -67 -4 -4 7 -13 25 -19 17 -7 33 -21 36 -31 3 -13 10 -17 20 -14 9 4
21 -2 30 -15 8 -11 19 -17 25 -14 5 4 12 2 16 -4 7 -11 -73 -64 -122 -81 -55
-18 -170 -7 -228 21 -111 54 -185 166 -193 294 -5 85 7 133 50 205 35 57 105
114 162 130 39 12 146 14 146 3z m244 -58 c84 -22 202 -85 268 -144 96 -86
150 -175 118 -195 -5 -3 -17 9 -26 27 -26 51 -113 137 -184 183 -96 62 -191
97 -280 103 -52 3 -79 10 -87 21 -12 14 -12 14 -7 -1 4 -12 1 -18 -8 -18 -7 0
-14 9 -14 20 0 18 7 20 79 20 44 0 107 -7 141 -16z m-234 -14 c0 -11 -2 -20
-4 -20 -2 0 -6 9 -9 20 -3 11 -1 20 4 20 5 0 9 -9 9 -20z m-30 -10 c0 -5 -2
-10 -4 -10 -3 0 -8 5 -11 10 -3 6 -1 10 4 10 6 0 11 -4 11 -10z m282 -44 c62
-22 153 -71 188 -102 73 -63 122 -122 114 -135 -4 -8 -3 -9 4 -5 6 3 16 -3 22
-15 10 -17 7 -27 -15 -59 -34 -50 -116 -106 -178 -122 l-49 -13 -30 34 -30 33
51 29 c28 16 57 38 63 49 9 13 24 20 45 20 43 0 61 31 38 66 -8 13 -24 24 -35
24 -25 0 -51 -38 -44 -65 7 -29 -62 -91 -112 -101 -68 -13 -131 41 -164 139
-9 29 -9 42 -1 50 15 15 14 50 -1 65 -18 18 -46 14 -58 -7 -14 -27 -13 -29 13
-54 13 -12 31 -44 41 -71 10 -26 31 -63 47 -81 16 -18 29 -35 29 -38 0 -10
-72 -16 -94 -7 -32 12 -94 107 -117 179 -21 68 -25 145 -9 185 9 26 11 26 112
26 82 0 116 -5 170 -24z m-315 -84 c3 -103 6 -122 19 -122 7 0 16 -18 20 -45
4 -28 11 -45 20 -45 8 0 14 -5 14 -10 0 -21 -111 18 -147 52 -13 12 -23 32
-23 44 0 38 70 184 88 184 4 0 8 -26 9 -58z m688 -316 c48 -48 75 -117 75
-192 0 -58 -31 -154 -69 -213 -54 -83 -57 -83 -77 6 -15 71 -21 81 -63 118
-70 62 -102 96 -133 144 -33 53 -35 71 -8 71 37 0 127 41 166 75 21 19 45 34
52 35 7 0 32 -20 57 -44z m-451 12 c-6 -10 -4 -10 7 -2 15 12 89 15 89 4 0 -4
12 -20 28 -35 l27 -28 -56 5 c-30 2 -77 15 -104 28 -47 23 -48 25 -25 31 38
11 42 10 34 -3z m111 -90 c6 -5 10 -67 10 -143 l0 -134 -27 26 c-16 15 -28 23
-28 18 0 -4 -14 6 -30 24 -17 17 -35 31 -40 31 -6 0 -10 4 -10 8 0 5 -8 17
-18 28 -10 10 -24 34 -32 53 -13 32 -12 35 5 45 10 6 32 23 49 38 27 24 37 27
71 22 22 -3 45 -10 50 -16z m127 -223 c31 -44 70 -108 87 -143 27 -54 29 -63
16 -69 -17 -6 -186 5 -194 13 -2 2 -6 84 -8 181 l-4 178 23 -40 c13 -22 49
-76 80 -120z m-330 -41 c4 -44 11 -101 16 -128 7 -35 6 -59 -2 -84 l-12 -34
-32 32 c-58 57 -67 85 -67 195 0 65 5 108 13 123 l13 23 32 -24 c30 -23 33
-30 39 -103z m318 115 c0 -5 17 -36 38 -67 39 -57 71 -112 58 -101 -8 7 -116
171 -116 176 0 2 5 3 10 3 6 0 10 -5 10 -11z m122 -107 c9 -24 9 -44 0 -38 -5
3 -28 33 -52 68 l-44 63 44 -38 c25 -21 48 -46 52 -55z m-266 -59 c22 -14 27
-14 36 -2 8 11 9 10 4 -4 -3 -10 -6 -25 -6 -33 0 -8 -5 -14 -11 -14 -5 0 -8 4
-5 9 3 5 -7 17 -22 27 -37 24 -152 135 -152 147 0 5 29 -18 65 -52 36 -34 77
-69 91 -78z m-66 -4 c0 -3 -11 -16 -24 -29 -23 -20 -26 -21 -40 -7 -18 18 -21
37 -6 37 6 0 10 7 10 15 0 9 -6 12 -15 9 -10 -4 -15 0 -15 11 0 9 5 13 10 10
6 -3 10 1 10 9 0 9 -4 16 -10 16 -5 0 -10 7 -10 16 0 10 17 -3 45 -33 24 -26
44 -51 45 -54z m1871 -6 c-5 -10 -17 -27 -26 -38 -16 -19 -17 -19 -3 5 26 46
29 50 34 50 3 0 0 -8 -5 -17z m-11 -157 c-22 -69 -45 -128 -50 -131 -6 -4 -10
-14 -10 -24 0 -10 -6 -24 -14 -31 -8 -6 -12 -18 -9 -26 19 -50 -52 34 -86 103
-14 28 -14 33 3 33 22 0 126 100 166 158 19 28 36 49 38 48 2 -2 -15 -60 -38
-130z m-1740 94 c0 -11 -7 -20 -15 -20 -9 0 -12 -6 -8 -16 5 -13 2 -15 -15 -9
-12 3 -22 3 -22 -2 0 -5 -23 -26 -51 -47 -47 -35 -50 -36 -44 -14 13 43 41 73
95 100 30 15 56 28 58 28 1 0 2 -9 2 -20z m-180 0 c0 -5 -2 -10 -4 -10 -3 0
-8 5 -11 10 -3 6 -1 10 4 10 6 0 11 -4 11 -10z m1870 -33 c0 -2 -17 -19 -37
-38 l-38 -34 34 38 c33 34 41 42 41 34z m-1710 -81 c0 -2 -9 -6 -20 -9 -11 -3
-18 -1 -14 4 5 9 34 13 34 5z m-165 -16 c3 -6 -1 -7 -9 -4 -18 7 -21 14 -7 14
6 0 13 -4 16 -10z m205 -13 c0 -9 -17 -13 -52 -15 -69 -2 -42 23 30 27 12 0
22 -5 22 -12z m50 3 c-20 -13 -40 -13 -40 0 0 6 12 10 28 10 21 0 24 -2 12
-10z m-160 -4 c0 -7 -66 -46 -76 -46 -5 0 9 12 31 25 42 26 45 28 45 21z
m-153 -60 c2 -2 -14 -6 -37 -10 -26 -4 -51 -1 -72 9 -32 14 -31 14 36 10 38
-3 71 -7 73 -9z m99 -84 c6 -4 26 -36 44 -72 40 -79 95 -162 167 -253 38 -48
58 -84 69 -124 8 -31 13 -60 12 -65 -2 -5 -19 15 -38 44 -26 39 -50 61 -92 83
-107 57 -142 109 -172 257 -24 116 -21 151 10 130z m1810 -444 c-9 -12 -16
-19 -16 -15 0 11 24 47 28 42 2 -2 -3 -14 -12 -27z m-1550 -55 c-7 -7 -26 7
-26 19 0 6 6 6 15 -2 9 -7 13 -15 11 -17z m2005 -159 c35 -37 19 -36 -24 1
-26 22 -32 32 -19 28 11 -3 30 -16 43 -29z m-21 -19 c16 -17 21 -33 18 -61 -2
-20 -9 -39 -16 -42 -9 -3 -12 3 -10 14 2 12 -2 18 -10 16 -8 -1 -11 2 -7 8 9
14 -25 41 -42 35 -7 -2 -13 3 -13 12 0 13 -2 13 -16 2 -14 -12 -16 -11 -13 6
5 23 43 45 69 38 10 -3 28 -15 40 -28z m-2383 -45 c5 -23 6 -22 18 15 13 40
13 40 14 9 1 -21 -8 -42 -29 -65 -16 -19 -30 -37 -30 -41 0 -5 -5 -8 -11 -8
-13 0 -5 79 14 125 10 25 12 27 15 10 1 -11 5 -31 9 -45z m649 2 c1 -9 5 -28
9 -42 4 -17 0 -13 -15 13 -11 21 -18 42 -14 48 8 13 17 4 20 -19z m1653 -27
c29 -14 47 -50 31 -60 -5 -3 -14 3 -19 14 -6 10 -25 24 -43 30 -26 9 -30 14
-18 21 19 12 16 13 49 -5z m-809 -675 c29 -29 27 -84 -5 -115 -32 -33 -59 -34
-49 -2 4 12 7 29 8 37 1 8 6 19 11 23 6 6 5 10 -4 14 -10 4 -11 7 -1 13 8 5
10 15 6 26 -5 14 -9 15 -15 5 -7 -10 -10 -9 -14 3 -9 24 38 21 63 -4z m-82
-30 c3 -38 -18 -77 -37 -66 -8 5 -8 13 0 28 6 11 8 34 5 50 -5 24 -3 29 12 26
11 -2 18 -14 20 -38z m142 -42 c0 -9 -4 -20 -10 -23 -6 -4 -10 9 -10 32 0 28
3 34 10 23 5 -8 10 -23 10 -32z m-888 -53 c10 -19 10 -19 -8 -3 -10 9 -27 32
-37 50 l-18 33 26 -30 c14 -16 31 -39 37 -50z"/>
<path d="M1515 3970 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
-7 -4 -4 -10z"/>
<path d="M1500 3940 c0 -5 5 -10 10 -10 6 0 10 5 10 10 0 6 -4 10 -10 10 -5 0
-10 -4 -10 -10z"/>
<path d="M1485 3910 c4 -6 11 -8 16 -5 14 9 11 15 -7 15 -8 0 -12 -5 -9 -10z"/>
<path d="M1897 3483 c-44 -47 -70 -119 -75 -211 -8 -148 32 -279 125 -410 102
-143 147 -180 371 -304 70 -39 146 -86 170 -105 l42 -34 0 63 c0 78 -18 147
-60 229 -48 96 -100 160 -250 309 -201 201 -265 298 -277 425 -3 36 -9 65 -13
65 -3 0 -18 -12 -33 -27z m30 -325 c-3 -8 -6 -5 -6 6 -1 11 2 17 5 13 3 -3 4
-12 1 -19z m72 -185 c12 -24 19 -43 16 -43 -13 0 -86 176 -84 204 0 6 11 -18
23 -54 13 -36 33 -84 45 -107z m130 -173 c36 -36 82 -78 101 -94 25 -20 22
-18 -12 5 -56 38 -169 153 -187 189 -10 20 -8 19 10 -5 13 -16 52 -59 88 -95z
m226 -175 c33 -24 71 -56 85 -71 17 -20 12 -17 -17 8 -23 21 -67 54 -98 74
-30 20 -55 39 -55 41 0 6 17 -5 85 -52z"/>
<path d="M2890 3455 c0 -8 -20 -37 -44 -64 -60 -68 -64 -102 -32 -316 35 -241
39 -285 28 -332 -22 -99 29 -4 87 161 46 130 63 211 64 311 1 82 -1 94 -27
140 -16 28 -36 64 -45 82 -17 34 -31 43 -31 18z"/>
<path d="M2520 2992 c-62 -63 -65 -190 -5 -259 26 -31 43 -27 26 5 -22 41 -14
52 37 52 40 0 53 5 77 30 50 52 36 154 -27 186 -42 22 -76 17 -108 -14z"/>
<path d="M3006 2820 c-34 -41 -36 -102 -4 -125 20 -13 21 -18 10 -36 -24 -39
-3 -32 42 12 52 52 68 106 45 148 -22 39 -60 39 -93 1z"/>
<path d="M2760 2411 c41 -4 82 -11 90 -15 12 -7 13 -7 2 5 -8 9 -39 14 -90 15
l-77 2 75 -7z"/>
<path d="M2375 2179 c-20 -31 168 -160 255 -175 29 -5 25 -1 -26 24 -34 17
-92 59 -131 96 -71 66 -86 75 -98 55z"/>
<path d="M3055 2070 c-3 -6 1 -7 9 -4 18 7 21 14 7 14 -6 0 -13 -4 -16 -10z"/>
<path d="M2275 2010 c-11 -18 14 -38 71 -60 63 -23 203 -41 242 -31 23 6 18 9
-29 13 -30 4 -104 25 -164 47 -125 47 -112 44 -120 31z"/>
<path d="M2535 1843 c-32 -12 -66 -14 -162 -9 -122 6 -163 -3 -108 -24 59 -22
205 -7 289 31 50 21 36 23 -19 2z"/>
<path d="M2681 1504 c-35 -14 -100 -31 -145 -38 -57 -10 -71 -15 -46 -16 39
-3 35 -3 108 16 29 8 61 14 72 14 10 0 20 5 22 11 2 6 16 12 31 12 15 1 27 8
27 15 0 6 -1 12 -2 11 -2 0 -32 -11 -67 -25z"/>
<path d="M1985 4090 c-3 -5 -2 -10 3 -10 5 0 13 -10 19 -22 6 -15 12 -18 17
-10 4 7 2 12 -3 12 -6 0 -11 9 -11 20 0 21 -15 27 -25 10z"/>
<path d="M1945 3990 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
-8 -4 -11 -10z"/>
<path d="M1581 954 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z"/>
<path d="M3291 912 c-8 -19 -31 -40 -62 -56 -27 -15 -49 -29 -49 -31 0 -9 49
4 74 20 26 17 63 81 53 91 -2 3 -10 -8 -16 -24z"/>
<path d="M1571 914 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 21 KiB

@ -1,20 +0,0 @@
//
// AvatarView.swift
// WtaTennis
//
// Created by Johan LACHENAL on 14/05/2024.
//
import SwiftUI
struct AvatarView: View {
var body: some View {
Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/)
}
}
struct AvatarView_Previews: PreviewProvider {
static var previews: some View {
AvatarView()
}
}

@ -1,26 +0,0 @@
//
// ContentView.swift
// WtaTennis
//
// Created by Johan LACHENAL on 14/05/2024.
//
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundColor(.accentColor)
Text("Hello, world!")
}
.padding()
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}

@ -1,8 +1,8 @@
//
// MyScene.swift
// GameScene.swift
// ArkitDoushiQi
//
// Created by Enzo JOLYS on 27/05/2024.
// Created by Enzo JOLYS, Louis DUFOUR on 27/05/2024.
//
import Foundation
@ -11,66 +11,74 @@ import DouShouQiModel
class GameScene : SKScene {
var isGameOver = false
let imageBoard:SKSpriteNode = SKSpriteNode(imageNamed: "board")
var game:Game = try! Game(withRules: ClassicRules(), andPlayer1: HumanPlayer(withName: "Bot1", andId: .player1)!, andPlayer2: RandomPlayer(withName: "Bot2", andId: .player2)!)
var pieces: [Owner : [ Animal : SpriteMoople]] = [ .player1 : [ .cat : SpriteMoople(nameImage: "catMeeple", couleur: .red),
.dog : SpriteMoople(nameImage: "dogMeeple", couleur: .red),
.leopard : SpriteMoople(nameImage: "leopardMeeple", couleur: .red),
.lion : SpriteMoople(nameImage: "lionMeeple", couleur: .red),
.rat : SpriteMoople(nameImage: "ratMeeple", couleur: .red),
.wolf : SpriteMoople(nameImage: "wolfMeeple", couleur: .red),
.elephant : SpriteMoople(nameImage: "elephantMeeple", couleur: .red),
.tiger : SpriteMoople(nameImage: "tigerMeeple", couleur: .red)],
.player2 : [ .cat : SpriteMoople(nameImage: "catMeeple", couleur: .blue),
.dog : SpriteMoople(nameImage: "dogMeeple", couleur: .blue),
.leopard : SpriteMoople(nameImage: "leopardMeeple", couleur: .blue),
.lion : SpriteMoople(nameImage: "lionMeeple", couleur: .blue),
.rat : SpriteMoople(nameImage: "ratMeeple", couleur: .blue),
.wolf : SpriteMoople(nameImage: "wolfMeeple", couleur: .blue),
.elephant : SpriteMoople(nameImage: "elephantMeeple", couleur: .blue),
.tiger : SpriteMoople(nameImage: "tigerMeeple", couleur: .blue)]]
var player1Name: String
var player1Image: UIImage
var player2Name: String
var player2Image: UIImage
var pieces: [Owner: [Animal: SpriteMoople]] = [
.player1: [.cat: SpriteMoople(nameImage: "catMeeple", couleur: .red),
.dog: SpriteMoople(nameImage: "dogMeeple", couleur: .red),
.leopard: SpriteMoople(nameImage: "leopardMeeple", couleur: .red),
.lion: SpriteMoople(nameImage: "lionMeeple", couleur: .red),
.rat: SpriteMoople(nameImage: "ratMeeple", couleur: .red),
.wolf: SpriteMoople(nameImage: "wolfMeeple", couleur: .red),
.elephant: SpriteMoople(nameImage: "elephantMeeple", couleur: .red),
.tiger: SpriteMoople(nameImage: "tigerMeeple", couleur: .red)],
.player2: [.cat: SpriteMoople(nameImage: "catMeeple", couleur: .blue),
.dog: SpriteMoople(nameImage: "dogMeeple", couleur: .blue),
.leopard: SpriteMoople(nameImage: "leopardMeeple", couleur: .blue),
.lion: SpriteMoople(nameImage: "lionMeeple", couleur: .blue),
.rat: SpriteMoople(nameImage: "ratMeeple", couleur: .blue),
.wolf: SpriteMoople(nameImage: "wolfMeeple", couleur: .blue),
.elephant: SpriteMoople(nameImage: "elephantMeeple", couleur: .blue),
.tiger: SpriteMoople(nameImage: "tigerMeeple", couleur: .blue)]
]
var deplacementPossible: [SKShapeNode] = []
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override init(size: CGSize) {
init(size: CGSize, player1Name: String, player1Image: UIImage, player2Name: String, player2Image: UIImage) {
self.player1Name = player1Name
self.player1Image = player1Image
self.player2Name = player2Name
self.player2Image = player2Image
super.init(size: size)
// -- -- //
scaleMode = .aspectFit
anchorPoint = CGPoint(x: 0.5, y: 0.5)
imageBoard.zPosition = 0
self.addChild(imageBoard)
// -- -- //
for c in pieces.flatMap({ _,values in return values })
{
c.self.value.refGameScene = self
c.self.value.zPosition = 2
self.addChild(c.self.value)
for c in pieces.flatMap({ $0.value }) {
c.value.refGameScene = self
c.value.zPosition = 2
self.addChild(c.value)
}
displayBoard(board: game.board)
}
func displayBoard(board:Board){
required init?(coder aDecoder: NSCoder) {
self.player1Name = ""
self.player1Image = UIImage()
self.player2Name = ""
self.player2Image = UIImage()
super.init(coder: aDecoder)
}
func displayBoard(board: Board) {
for ligne in 0..<board.grid.count {
for col in 0..<board.grid[ligne].count {
if let piece = board.grid[ligne][col].piece {
if let element = pieces[piece.owner]![piece.animal]{
if let element = pieces[piece.owner]?[piece.animal] {
element.cellPosition = CGPoint(x: ligne, y: col)
}
}
}
}
}
}

@ -2,7 +2,7 @@
// GameView.swift
// ArkitDoushiQi
//
// Created by Enzo JOLYS on 27/05/2024.
// Created by Enzo JOLYS, Louis DUFOUR on 27/05/2024.
//
import SwiftUI
@ -10,13 +10,33 @@ import SpriteKit
import DouShouQiModel
struct GameView: View {
var gameScene:GameScene = GameScene(size: CGSize(width: 940, height: 740))
var player1Name: String
var player1Image: UIImage
var player2Name: String
var player2Image: UIImage
var gameScene: GameScene {
let scene = GameScene(size: CGSize(width: 940, height: 740),
player1Name: player1Name,
player1Image: player1Image,
player2Name: player2Name,
player2Image: player2Image)
return scene
}
@State var msg: String = "Msg"
@State var msg:String = "Msg"
var body: some View {
ZStack {
SpriteView(scene: gameScene)
.edgesIgnoringSafeArea(.all)
.task {
gameScene.game.addGameStartedListener { board in startGame() }
gameScene.game.addGameOverListener { board, result, player in gameOver() }
gameScene.game.addGameChangedListener { game in gameChange() }
gameScene.game.addBoardChangedListener { board in boardChange() }
<<<<<<< HEAD
VStack(){
Text(msg)
SpriteView(scene: gameScene).task {
@ -25,31 +45,70 @@ struct GameView: View {
gameScene.game.addGameOverListener { board, result, player in gameOver(result: result) }
gameScene.game.addGameChangedListener { game in gameChange() }
gameScene.game.addBoardChangedListener { board in boardChange() }
=======
gameScene.game.addMoveChosenCallbacksListener { board, move, player in moveChose(board: board, move: move, player: player) }
gameScene.game.addInvalidMoveCallbacksListener { board, move, player, bool in invalidMove(board: board, move: move, player: player, bool: bool) }
>>>>>>> ec9aee411b941e5133a65628d66010fa2e87618b
gameScene.game.addPieceRemovedListener { _, _, piece in removePiece(piece: piece) }
gameScene.game.addPlayerNotifiedListener { board, player in
print("Player notif : \(player.id) à toi de jouer ")
msg = "Player notif : \(player.id) à toi de jouer !"
if player is IAPlayer {
try! await player.chooseMove(in: board, with: gameScene.game.rules)
}
}
gameScene.game.addMoveChosenCallbacksListener { board, move, player in moveChose(board: board, move: move, player: player) }
gameScene.game.addInvalidMoveCallbacksListener { board,move,player,bool in invalidMove(board: board, move: move, player:player, bool:bool)}
gameScene.game.addPieceRemovedListener { _,_,piece in removePiece(piece: piece) }
gameScene.game.addPlayerNotifiedListener { board, player in
print("Player notif : \(player.id) à toi de jouer ")
msg = "Player notif : \(player.id) à toi de jouer !"
if (player is IAPlayer ){
try! await player.chooseMove(in: board, with: gameScene.game.rules)
try! await gameScene.game.start()
}
}
try! await gameScene.game.start()
VStack {
HStack {
VStack {
Image(uiImage: player1Image)
.resizable()
.aspectRatio(contentMode: .fill)
.frame(width: 125, height: 125)
.clipShape(Circle())
.overlay(Circle().stroke(Color.red, lineWidth: 2))
Text(player1Name)
.font(.headline)
.foregroundColor(.white)
}
Spacer()
VStack {
Image(uiImage: player2Image)
.resizable()
.aspectRatio(contentMode: .fill)
.frame(width: 125, height: 125)
.clipShape(Circle())
.overlay(Circle().stroke(Color.blue, lineWidth: 2))
Text(player2Name)
.font(.headline)
.foregroundColor(.white)
}
}
.padding()
Spacer()
Text(msg)
.font(.title)
.foregroundColor(.white)
.padding()
}
}
}
// ------ Listener -------- //
func startGame() { print("Start game !")
func startGame() {
print("Start game !")
msg = "Start !!"
}
<<<<<<< HEAD
func gameOver(result : Result) { print("Game over !")
msg = "Game over ! "
@ -73,13 +132,26 @@ struct GameView: View {
}
func gameChange() { print("Game change !") }
=======
func gameOver() {
print("Game over !")
msg = "Game over !!"
}
func gameChange() {
print("Game change !")
}
>>>>>>> ec9aee411b941e5133a65628d66010fa2e87618b
func boardChange() {
print("Board change !")
gameScene.displayBoard(board: gameScene.game.board)
}
func moveChose(board:Board,move:Move,player:Player) {
func moveChose(board: Board, move: Move, player: Player) {
}
<<<<<<< HEAD
func invalidMove(board:Board,move:Move,player:Player,bool:Bool) {
@ -89,27 +161,43 @@ struct GameView: View {
}
else { // Invalid
print("Invalid move of \(player.id)")
=======
func invalidMove(board: Board, move: Move, player: Player, bool: Bool) {
if bool {
print("Move valid de \(player.id)")
print("Move : \(move.description)")
} else {
print("Move invalid de \(player.id)")
>>>>>>> ec9aee411b941e5133a65628d66010fa2e87618b
print("Move : \(move.description)")
gameScene.displayBoard(board: gameScene.game.board)
}
print("------------")
}
func removePiece(piece:Piece){
func removePiece(piece: Piece) {
print("Remove piece")
<<<<<<< HEAD
if let node = gameScene.pieces[piece.owner]![piece.animal] {
actionRemove(size: gameScene.size, node: node, scene: gameScene)
=======
if let node = gameScene.pieces[piece.owner]?[piece.animal] {
>>>>>>> ec9aee411b941e5133a65628d66010fa2e87618b
print("Remove piece from parent")
}
}
// ------------------------- //
}
struct GameView_Previews: PreviewProvider {
static var previews: some View {
GameView()
GameView(
player1Name: "Player 1",
player1Image: UIImage(named: "profil")!,
player2Name: "Player 2",
player2Image: UIImage(named: "profil")!
)
}
}

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>UTImportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeIconFiles</key>
<array/>
<key>UTTypeTagSpecification</key>
<dict/>
</dict>
</array>
<key>UIAppFonts</key>
<array>
<string>nuku1.ttf</string>
</array>
</dict>
</plist>

@ -1,42 +0,0 @@
//
// InfoDetailView.swift
// WtaTennis
//
// Created by Johan LACHENAL on 14/05/2024.
//
import SwiftUI
struct InfoDetailView: View {
var body: some View {
ZStack {
Color.purple.edgesIgnoringSafeArea(.all)
VStack(alignment: .leading, spacing: 20) {
Text("Iga Swiatek")
.font(.largeTitle)
.fontWeight(.bold)
.foregroundColor(.white)
HStack {
Image(systemName: "flag.fill")
.foregroundColor(.white)
Text("POLAND")
.foregroundColor(.white)
}
InfoTextView(title: "Height", value: "5' 9\"")
InfoTextView(title: "Age", value: "22")
InfoTextView(title: "Plays", value: "Right-Handed")
InfoTextView(title: "Birthplace", value: "Warsaw, Poland")
}
.padding()
}
}
}
struct InfoDetailView_Previews: PreviewProvider {
static var previews: some View {
InfoDetailView()
}
}

@ -0,0 +1,131 @@
//
// MainMenu.swift
// ArkitDoushiQi
//
// Created by Johan LACHENAL, Louis DUFOUR on 16/05/2024.
//
import SwiftUI
struct MainMenu: View {
@EnvironmentObject var languageSettings: LanguageSettings
let playButtonText: LocalizedStringKey
let registeredGamesButtonText: LocalizedStringKey
@State private var action: Int? = 0
@AppStorage("isDarkMode") private var isDarkMode = false
@State private var reloadView = false
@State private var showLanguagePicker = false
@ScaledMetric(relativeTo: .body) var scaledPadding: CGFloat = 10
@Environment(\.colorScheme) var colorScheme
var body: some View {
GeometryReader { geometry in
let isLandscape = geometry.size.width > geometry.size.height
NavigationStack {
ZStack(alignment: isLandscape ? .leading : .center) {
Image(uiImage: UIImage(named: colorScheme == .dark ? "background_dark" : "background_light")!)
.resizable()
.scaledToFit()
.frame(width: isLandscape ? geometry.size.width / 2 : geometry.size.width)
.edgesIgnoringSafeArea(.all)
VStack {
Spacer().frame(height: 50)
Text("DOUSHIQI")
.font(.custom("Nuku Nuku", size: 48, relativeTo: .largeTitle))
.padding()
.background(colorScheme == .dark ? Color.black.opacity(0.6) : Color.white.opacity(0.6))
.cornerRadius(8)
.foregroundColor(colorScheme == .dark ? .white : .black)
Text("GAME")
.font(.custom("Nuku Nuku", size: 48, relativeTo: .largeTitle))
.padding()
.background(colorScheme == .dark ? Color.black.opacity(0.6) : Color.white.opacity(0.6))
.cornerRadius(8)
.foregroundColor(colorScheme == .dark ? .white : .black)
Spacer()
NavigationLink(destination: GameParametersMenuView()) {
Text(playButtonText)
.font(.custom("Nuku Nuku", size: 32, relativeTo: .title))
.bold()
.frame(maxWidth: .infinity)
.padding()
.background(colorScheme == .dark ? Color.black.opacity(0.6) : Color.white.opacity(0.6))
.foregroundColor(colorScheme == .dark ? .white : .black)
.cornerRadius(8)
.overlay(
RoundedRectangle(cornerRadius: 8)
.stroke(colorScheme == .dark ? Color.white : Color.black, lineWidth: 1)
)
.shadow(radius: 5)
.padding(scaledPadding)
}
.padding(.horizontal, 50)
Spacer().frame(height: 40)
NavigationLink(destination: PartyListView()) {
Text(registeredGamesButtonText)
.font(.custom("Nuku Nuku", size: 18, relativeTo: .body))
.padding()
.background(colorScheme == .dark ? Color.black.opacity(0.6) : Color.white.opacity(0.6))
.foregroundColor(colorScheme == .dark ? .white : .black)
.cornerRadius(8)
.shadow(radius: 5)
.padding(scaledPadding)
}
.padding(.horizontal, 50)
Spacer().frame(height: 20)
HStack {
Button(action: {
isDarkMode.toggle()
}) {
Image(systemName: isDarkMode ? "sun.max.fill" : "moon.fill")
.foregroundColor(colorScheme == .dark ? .white : .black)
.padding()
.scaleEffect(1.2)
}
Button(action: {
showLanguagePicker.toggle()
}) {
Image(systemName: "globe")
.foregroundColor(colorScheme == .dark ? .white : .black)
.padding()
.scaleEffect(1.2)
}
.sheet(isPresented: $showLanguagePicker) {
LanguagePickerView(showLanguagePicker: $showLanguagePicker)
.environmentObject(languageSettings)
}
}
.padding(scaledPadding)
.background(colorScheme == .dark ? Color.black.opacity(0.6) : Color.white.opacity(0.6))
.cornerRadius(8)
Spacer()
}
.padding(EdgeInsets(top: 10, leading: isLandscape ? geometry.size.width / 2 + 32 : 32, bottom: 10, trailing: 32))
}
.environmentObject(languageSettings)
.onReceive(NotificationCenter.default.publisher(for: NSNotification.Name("LanguageChanged"))) { _ in
self.reloadView.toggle()
}
}
}
}
}
struct MainMenu_Previews: PreviewProvider {
static var previews: some View {
MainMenu(playButtonText: "Play", registeredGamesButtonText: "Registered Games")
.environmentObject(LanguageSettings(selectedLanguage: .French))
}
}

@ -1,29 +0,0 @@
//
// PlayerListView.swift
// WtaTennis
//
// Created by Johan LACHENAL on 14/05/2024.
//
import SwiftUI
struct PlayerListView: View {
@ObservedObject var viewModel: PlayerViewModel
var body: some View {
NavigationStack {
List(viewModel.players, id: \.id) { player in
PlayerProfileView(player: player)
.padding(.vertical, 5)
}
.navigationTitle("Top Players")
}
}
}
struct PlayerListView_Previews: PreviewProvider {
static var previews: some View {
PlayerListView(viewModel: PlayerViewModel())
}
}

@ -1,43 +0,0 @@
//
// ItemCollectionPlayer.swift
// WtaTennis
//
// Created by Johan LACHENAL on 14/05/2024.
//
import SwiftUI
struct PlayerProfileView: View {
var body: some View {
HStack(spacing: 15) {
Text("1") // \(player.rank)
.font(.largeTitle)
.fontWeight(.bold)
.foregroundColor(.purple)
Image("Image")
.resizable()
.aspectRatio(contentMode: .fill)
.frame(width: 50, height: 50)
.clipShape(Circle())
Text("Iga Swiatek")
.font(.title2)
.fontWeight(.semibold)
Spacer()
Label(" France ", systemImage: "flag.fill")
.labelStyle(.titleAndIcon)
.foregroundColor(.red)
}
.padding(.horizontal)
}
}
struct PlayerProfileView_Previews: PreviewProvider {
static var previews: some View {
PlayerProfileView()
}
}

@ -1,40 +0,0 @@
//
// RankingView.swift
// WtaTennis
//
// Created by Johan LACHENAL on 14/05/2024.
//
import SwiftUI
struct RankingView: View {
var body : some View {
ZStack()
{
Rectangle()
.fill(Color.purple) // Rectangle violet
.frame(height: 200) // Ajustez la hauteur du rectangle comme nécessaire
VStack(alignment: .leading, spacing: 20) {
Text("RANKING") // TODO : penser à créer un style pour les textes
.font(.title)
.foregroundColor(.white)
Text("1")
.font(.largeTitle)
.fontWeight(.bold)
.foregroundColor(.white)
Text("Singles")
.font(.title2)
.foregroundColor(.white)
}
.padding() // Ajoutez un padding pour éloigner le texte des bords du rectangle
}
}
}
struct RankingView_Previews: PreviewProvider {
static var previews: some View {
RankingView()
}
}

@ -0,0 +1,17 @@
//
// FlagManager.swift
// ArkitDoushiQi
//
// Created by Louis DUFOUR on 12/06/2024.
//
import SwiftUI
func flag(country: String) -> String {
let base = 127397
var usv = String.UnicodeScalarView()
for i in country.utf16 {
usv.append(UnicodeScalar(base + Int(i))!)
}
return String(usv)
}

@ -0,0 +1,24 @@
//
// FontManager.swift
// ArkitDoushiQi
//
// Created by Louis DUFOUR on 12/06/2024.
//
import Foundation
import UIKit
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
for family in UIFont.familyNames.sorted() {
let names = UIFont.fontNames(forFamilyName: family)
print("Family: \(family) Font names: \(names)")
}
return true
}
}

@ -7,21 +7,20 @@
import SwiftUI
struct ButtonComponent<Content : View>: View {
struct ButtonComponent<Content: View>: View {
let content: Content
let title: String
let title: LocalizedStringKey
init(title: String, @ViewBuilder content: () -> Content) {
self.title = title
self.content = content()
}
init(title: LocalizedStringKey, @ViewBuilder content: () -> Content) {
self.title = title
self.content = content()
}
var body: some View {
NavigationLink {
// ici mettre la vue sur les parties enregistrées à la place du texte n'hésite pas à tester sur la preview la navigation ça marche, faire pareil pour les autres
content
} label: {
Text(title)
Text(title)
.frame(maxWidth: .infinity)
.padding(EdgeInsets(top: 10, leading: 32, bottom: 10, trailing: 32))
.controlSize(.large)
@ -35,12 +34,12 @@ struct ButtonComponent<Content : View>: View {
struct ButtonComponent_Previews: PreviewProvider {
static var previews: some View {
NavigationView {
VStack {
ButtonComponent(title: "Parties enregistrées") {
Text("Je suis un test")
}
NavigationView {
VStack {
ButtonComponent(title: LocalizedStringKey("Parties enregistrées")) {
Text("Je suis un test")
}
}
}
}
}

@ -9,48 +9,33 @@ import SwiftUI
import PhotosUI
struct EditImageComponent: View {
@State private var avatarItem: PhotosPickerItem?
@State private var avatarImage: Image?
let color: Color
let profileWidth: CGFloat
let profileHeight: CGFloat
let defaultImage: Image
let imageTextChange: String
let imageTextChange: LocalizedStringKey
@Binding var playerImage: UIImage
@State private var selectedImageItem: PhotosPickerItem? = nil
var body: some View {
HStack {
Image(uiImage: playerImage)
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: profileWidth, height: profileHeight)
.clipShape(Circle())
.overlay(Circle().stroke(color, lineWidth: 2))
VStack {
HStack {
GeometryReader { geometry in
ZStack {
// Background color
color
// Profile Image
ProfileComponent(color: color, profileWidth: profileWidth, profileHeight: profileHeight, image: avatarImage ?? defaultImage
)
}
// Ensure the ZStack takes the size of the GeometryReader
.frame(width: geometry.size.width, height: geometry.size.height)
.clipShape(Circle())
}
.aspectRatio(1, contentMode: .fit)
.frame(width: profileWidth, height: profileHeight) // Optional fixed size
PhotosPicker(selection: $avatarItem, matching: .images) {
Text(imageTextChange)
}
.onChange(of: avatarItem) { newValue in
if let newItem = newValue {
Task {
if let data = try? await newItem.loadTransferable(type: Data.self),
let uiImage = UIImage(data: data) {
avatarImage = Image(uiImage: uiImage)
} else {
print("Failed to load image")
}
}
}
PhotosPicker(selection: $selectedImageItem, matching: .images) {
Text(imageTextChange)
.foregroundColor(.blue)
.padding(.leading)
}
.onChange(of: selectedImageItem) { newItem in
Task {
if let data = try? await newItem?.loadTransferable(type: Data.self),
let uiImage = UIImage(data: data) {
playerImage = uiImage
}
}
}
@ -65,10 +50,8 @@ struct EditImageComponent_Previews: PreviewProvider {
profileWidth: 100,
profileHeight: 100,
defaultImage: Image("profil"),
imageTextChange: "Changer d'avatar"
imageTextChange: "Changer l'avatar",
playerImage: .constant(UIImage(named: "profil")!)
)
.previewLayout(.sizeThatFits)
.padding()
}
}

@ -8,23 +8,29 @@
import SwiftUI
struct EditTextComponent: View {
let explanation : String
@State private var name : String
init(explanation: String, value: String) {
self.explanation = explanation
self.name = value
}
let explanation: LocalizedStringKey
@Binding var name: String
var body: some View {
Form {
Section(header : Text(explanation)) {
TextField(name, text : $name)
}
VStack(alignment: .leading) {
Text(explanation)
.font(.caption)
.foregroundColor(.gray)
TextField("", text: $name)
.padding(10)
.background(Color(.systemGray6))
.cornerRadius(5)
.placeholder(when: name.isEmpty) {
Text(explanation).foregroundColor(.gray)
}
}
}
}
struct EditTextComponent_Previews: PreviewProvider {
static var previews: some View {
EditTextComponent(explanation: "Nom du Joueur 1", value: "Joueur 1")
EditTextComponent(explanation: "Nom du Joueur 1", name: .constant("Joueur 1"))
}
}

@ -0,0 +1,64 @@
//
// LanguagePickerView.swift
// ArkitDoushiQi
//
// Created by Louis DUFOUR on 14/06/2024.
//
import SwiftUI
struct LanguagePickerView: View {
@Binding var showLanguagePicker: Bool
@EnvironmentObject var languageSettings: LanguageSettings
@Environment(\.colorScheme) var colorScheme
var body: some View {
VStack(spacing: 30) {
Text(LocalizedStringKey("Choose Language"))
.font(.custom("Nuku Nuku", size: 38, relativeTo: .headline))
.padding()
.foregroundColor(colorScheme == .dark ? .white : .black)
HStack(spacing: 50) {
Button(action: {
languageSettings.selectedLanguage = .French
showLanguagePicker = false
}) {
VStack {
Text(flag(country: "FR"))
.font(.system(size: 50))
Text(LocalizedStringKey("French"))
.font(.custom("Nuku Nuku", size: 28, relativeTo: .title2))
.foregroundColor(colorScheme == .dark ? .white : .black)
}
}
Button(action: {
languageSettings.selectedLanguage = .English
showLanguagePicker = false
}) {
VStack {
Text(flag(country: "GB"))
.font(.system(size: 50))
Text(LocalizedStringKey("English"))
.font(.custom("Nuku Nuku", size: 28, relativeTo: .title2))
.foregroundColor(colorScheme == .dark ? .white : .black)
}
}
}
Button(action: {
showLanguagePicker = false
}) {
Text(LocalizedStringKey("Cancel"))
.font(.custom("Nuku Nuku", size: 28, relativeTo: .title2))
.padding()
.background(Color.red.opacity(0.7))
.foregroundColor(.white)
.cornerRadius(10)
}
.padding(.top, 20)
}
.padding()
}
}

@ -24,7 +24,7 @@ struct PickerComponent<EnumType: RawRepresentable & Identifiable & Hashable>: Vi
Menu {
Picker(title, selection: $selectedOption) {
ForEach(options) { option in
Text(option.rawValue.description)
Text(LocalizedStringKey(option.rawValue.description))
.tag(option)
.padding()
}
@ -37,7 +37,7 @@ struct PickerComponent<EnumType: RawRepresentable & Identifiable & Hashable>: Vi
.padding()
.foregroundColor(.primary)
Spacer()
Text(selectedOption.rawValue.description)
Text(LocalizedStringKey(selectedOption.rawValue.description))
.padding()
.foregroundColor(.primary)
}
@ -48,14 +48,3 @@ struct PickerComponent<EnumType: RawRepresentable & Identifiable & Hashable>: Vi
}
}
}
struct PickerComponent_Previews: PreviewProvider {
@State static var selectedItem = Language.English
static var previews: some View {
PickerComponent(
title: "Select Language:",
selectedOption: $selectedItem,
options: Language.allCases
)
}
}

@ -9,75 +9,65 @@ import SwiftUI
struct ItemCollectionParty: View {
var party: Party
@Environment(\.colorScheme) var colorScheme
var body: some View {
VStack {
HStack {
Text(party.date)
Text(party.formattedDate)
.font(.headline)
.foregroundColor(.gray)
Spacer()
}
.padding(.bottom, 5)
GeometryReader { geometry in
HStack(spacing: 10) {
HStack {
Image(party.player1Image)
.resizable()
.aspectRatio(contentMode: .fill)
.frame(width: geometry.size.width * 0.15, height: geometry.size.width * 0.15)
.clipShape(Circle())
.overlay(Circle().stroke(Color.purple, lineWidth: 2))
HStack(spacing: 10) {
HStack {
ProfileComponent(color: Color.white, profileWidth: 60, profileHeight: 60, image: Image(party.player1Image))
VStack(alignment: .leading) {
Text(party.player1Name)
.fontWeight(.bold)
.foregroundColor(colorScheme == .dark ? .white : .primary)
.lineLimit(1)
.minimumScaleFactor(0.5)
.frame(maxWidth: .infinity, alignment: .leading)
VStack(alignment: .leading) {
Text(party.player1Name)
.fontWeight(.bold)
.foregroundColor(.purple)
.lineLimit(1)
.minimumScaleFactor(0.5)
.frame(maxWidth: geometry.size.width * 0.25, alignment: .leading)
Text("\(party.player1Score)")
.font(.largeTitle)
.fontWeight(.bold)
.foregroundColor(.green) // Gagnant en vert
}
Text(LocalizedStringKey(party.player1Score))
.fontWeight(.bold)
.foregroundColor(party.player1Score == "Défaite" ? .red : .green)
.lineLimit(1)
.minimumScaleFactor(0.5)
}
Text("vs")
.font(.headline)
.foregroundColor(.gray)
HStack {
VStack(alignment: .trailing) {
Text(party.player2Name)
.fontWeight(.bold)
.foregroundColor(.purple)
.lineLimit(1)
.minimumScaleFactor(0.5)
.frame(maxWidth: geometry.size.width * 0.25, alignment: .trailing)
Text("\(party.player2Score)")
.font(.largeTitle)
.fontWeight(.bold)
.foregroundColor(.red) // Perdant en rouge
}
}
Text("vs")
.font(.headline)
.foregroundColor(.gray)
HStack {
VStack(alignment: .trailing) {
Text(party.player2Name)
.fontWeight(.bold)
.foregroundColor(colorScheme == .dark ? .white : .primary)
.lineLimit(1)
.minimumScaleFactor(0.5)
.frame(maxWidth: .infinity, alignment: .trailing)
Image(party.player2Image)
.resizable()
.aspectRatio(contentMode: .fill)
.frame(width: geometry.size.width * 0.15, height: geometry.size.width * 0.15)
.clipShape(Circle())
.overlay(Circle().stroke(Color.purple, lineWidth: 2))
Text(LocalizedStringKey(party.player2Score))
.fontWeight(.bold)
.foregroundColor(party.player2Score == "Victoire" ? .green : .red)
.lineLimit(1)
.minimumScaleFactor(0.5)
}
ProfileComponent(color: Color.white, profileWidth: 60, profileHeight: 60, image: Image(party.player2Image))
}
.padding()
.background(Color.white)
.cornerRadius(15)
.shadow(radius: 3) // Réduction de l'ombre pour un effet plus léger
}
.frame(height: 120) // Ajustez la hauteur en fonction de votre contenu
.padding()
.background(Color(UIColor.systemBackground))
.cornerRadius(15)
.shadow(radius: 3)
}
.padding(.horizontal)
}
@ -85,7 +75,7 @@ struct ItemCollectionParty: View {
struct ItemCollectionParty_Previews: PreviewProvider {
static var previews: some View {
ItemCollectionParty(party: Party(player1Name: "L'invaincu du samedi", player1Score: 2, player1Image: "Perceval", player2Name: "Le gars du dimanche", player2Score: 1, player2Image: "Perceval", date: "Samedi soir"))
ItemCollectionParty(party: Party(player1Name: "L'invaincu du samedi", player1Score: "Défaite", player1Image: "Perceval", player2Name: "Le gars du dimanche", player2Score: "Victoire", player2Image: "Perceval", date: Date()))
.previewLayout(.sizeThatFits)
.padding()
}

@ -12,6 +12,7 @@ struct ProfileComponent: View {
let profileWidth : CGFloat
let profileHeight : CGFloat
let image : Image
var body: some View {
GeometryReader { geometry in
ZStack {

@ -2,31 +2,61 @@
// ProfileEdit.swift
// ArkitDoushiQi
//
// Created by Johan LACHENAL on 28/05/2024.
// Created by Johan LACHENAL, Louis DUFOUR on 28/05/2024.
//
import SwiftUI
import PhotosUI
struct ProfileEdit: View {
let color : Color
let profileWidth : CGFloat
let profileHeight : CGFloat
struct ProfileEdit: View, KeyboardReadable {
let color: Color
let profileWidth: CGFloat
let profileHeight: CGFloat
let defaultImage: Image
let imageTextChange : String
let imageTextChange: LocalizedStringKey
let playerNameKey: LocalizedStringKey
@Binding var playerName: String
@Binding var playerImage: UIImage
@State private var selectedImageItem: PhotosPickerItem? = nil
@State private var keyboardHeight: CGFloat = 0
@State private var isKeyboardVisible: Bool = false
var body: some View {
VStack(alignment: .leading) {
EditImageComponent(
color: color,
profileWidth: profileWidth,
profileHeight: profileHeight,
defaultImage: defaultImage,
imageTextChange: imageTextChange
).padding(EdgeInsets(top: 0, leading: 32, bottom: 0, trailing: 32))
VStack(alignment: .trailing) {
HStack {
EditTextComponent(explanation: "Nom du Joueur 1", value: "Joueur 1")
HStack {
Image(uiImage: playerImage)
.resizable()
.aspectRatio(contentMode: .fill)
.frame(width: profileWidth, height: profileHeight)
.clipShape(Circle())
.overlay(Circle().stroke(color, lineWidth: 2))
PhotosPicker(selection: $selectedImageItem, matching: .images) {
Text(imageTextChange)
.foregroundColor(.blue)
.padding(.leading)
}
.onChange(of: selectedImageItem) { newItem in
Task {
if let data = try? await newItem?.loadTransferable(type: Data.self),
let uiImage = UIImage(data: data) {
playerImage = uiImage
}
}
}
}
.padding(.horizontal)
EditTextComponent(explanation: playerNameKey, name: $playerName)
.padding(.horizontal)
}
.padding(.bottom, isKeyboardVisible ? keyboardHeight : 0)
.animation(.easeOut(duration: 0.3), value: keyboardHeight)
.onReceive(keyboardPublisher) { height in
withAnimation {
self.keyboardHeight = height
self.isKeyboardVisible = height > 0
}
}
}
}
@ -37,7 +67,10 @@ struct ProfileEdit_Previews: PreviewProvider {
profileWidth: 100,
profileHeight: 100,
defaultImage: Image("profil"),
imageTextChange: "Changer d'avatar"
imageTextChange: "Changer l'avatar",
playerNameKey: "Nom du Joueur 1",
playerName: .constant("Joueur 1"),
playerImage: .constant(UIImage(named: "profil")!)
)
}
}

@ -0,0 +1,36 @@
//
// Stub.swift
// ArkitDoushiQi
//
// Created by Louis DUFOUR on 31/05/2024.
//
import SwiftUI
import Foundation
struct Party: Identifiable {
let id = UUID()
let player1Name: String
let player1Score: String
let player1Image: String
let player2Name: String
let player2Score: String
let player2Image: String
let date: Date
var localizedPlayer1Score: LocalizedStringKey {
LocalizedStringKey(player1Score)
}
var localizedPlayer2Score: LocalizedStringKey {
LocalizedStringKey(player2Score)
}
var formattedDate: String {
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .full
dateFormatter.timeStyle = .none
dateFormatter.locale = Locale.current
return dateFormatter.string(from: date)
}
}

@ -6,6 +6,7 @@
//
import Foundation
import SwiftUI
enum AI: String, CaseIterable, Identifiable, Hashable {
case RandomAction = "IA Random"
@ -13,4 +14,8 @@ enum AI: String, CaseIterable, Identifiable, Hashable {
case MediumTrainedAI = "IA Intermédiaire"
var id: String { self.rawValue }
var localized: LocalizedStringKey {
LocalizedStringKey(self.rawValue)
}
}

@ -0,0 +1,20 @@
//
// GameType.swift
// ArkitDoushiQi
//
// Created by Louis DUFOUR on 14/06/2024.
//
import Foundation
import SwiftUI
enum GameType: String, CaseIterable, Identifiable, Hashable {
case PvP = "Joueur contre Joueur"
case PvAI = "Joueur contre IA"
var id: String { self.rawValue }
var localized: LocalizedStringKey {
LocalizedStringKey(self.rawValue)
}
}

@ -0,0 +1,20 @@
//
// Rules.swift
// ArkitDoushiQi
//
// Created by Louis DUFOUR on 14/06/2024.
//
import Foundation
import SwiftUI
enum Rules: String, CaseIterable, Identifiable, Hashable {
case Easy = "Simplifié"
case Regular = "Normal"
var id: String { self.rawValue }
var localized: LocalizedStringKey {
LocalizedStringKey(self.rawValue)
}
}

@ -2,29 +2,28 @@
// KeyboardReadable.swift
// ArkitDoushiQi
//
// Created by Johan LACHENAL on 31/05/2024.
// Created by Johan LACHENAL, Louis DUFOUR on 31/05/2024.
//
import Foundation
import Combine
import UIKit
// Publisher to read keyboard changes.
protocol KeyboardReadable {
var keyboardPublisher: AnyPublisher<Bool, Never> { get }
var keyboardPublisher: AnyPublisher<CGFloat, Never> { get }
}
extension KeyboardReadable {
var keyboardPublisher: AnyPublisher<Bool, Never> {
var keyboardPublisher: AnyPublisher<CGFloat, Never> {
Publishers.Merge(
NotificationCenter.default
.publisher(for: UIResponder.keyboardWillShowNotification)
.map { _ in true },
.compactMap { notification in
(notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? CGRect)?.height
},
NotificationCenter.default
.publisher(for: UIResponder.keyboardWillHideNotification)
.map { _ in false }
.map { _ in CGFloat(0) }
)
.eraseToAnyPublisher()
}

@ -0,0 +1,22 @@
//
// Placeholder.swift
// ArkitDoushiQi
//
// Created by Louis DUFOUR on 14/06/2024.
//
import Foundation
import SwiftUI
extension View {
func placeholder<Content: View>(
when shouldShow: Bool,
alignment: Alignment = .leading,
@ViewBuilder placeholder: () -> Content) -> some View {
ZStack(alignment: alignment) {
placeholder().opacity(shouldShow ? 1 : 0)
self
}
}
}

@ -1,61 +0,0 @@
//
// GameParametersMenuView.swift
// ArkitDoushiQi
//
// Created by Johan LACHENAL on 24/05/2024.
//
import SwiftUI
import PhotosUI
enum AIT: String, CaseIterable, Identifiable, Hashable {
case RandomAction = "IA Random"
case EasyTrainedAI = "IA Facile"
case MediumTrainedAI = "IA Intermédiaire"
var id: String { self.rawValue }
}
enum Rules: String, CaseIterable, Identifiable, Hashable {
case Easy = "Simplifié"
case Regular = "Normal"
var id: String { self.rawValue }
}
struct GameParametersMenuView: View, KeyboardReadable {
@State private var selectedAIOption: AIT = .RandomAction
@State private var selectedRulesOption: Rules = .Regular
@State private var isKeyboardVisible = false
var body: some View {
NavigationView {
VStack(alignment: .leading) {
HStack(alignment: .center) {
Text("Paramètres de partie").bold().font(.title)
}.frame(maxWidth: .infinity)
PickerComponent(title: "Sélectionne les règles :",
selectedOption: $selectedRulesOption,
options: Rules.allCases)
PickerComponent(title: "Sélectionne une IA :",
selectedOption: $selectedAIOption,
options: AIT.allCases)
ProfileEdit(color: Color(.red), profileWidth: 100, profileHeight: 100, defaultImage: Image("profil"), imageTextChange: "changer l'avatar du joueur 1")
ProfileEdit(color: Color(.blue), profileWidth: 100, profileHeight: 100, defaultImage: Image("profil"), imageTextChange: "changer l'avatar du joueur 2")
if !isKeyboardVisible
{
ButtonComponent(title: "Lancer la partie") {
GameView()
}.padding(EdgeInsets(top: 10, leading: 32, bottom: 10, trailing: 32))
}
}
.onReceive(keyboardPublisher) { value in isKeyboardVisible = value }
.frame(maxHeight: .infinity, alignment: .top)
}
}
}
struct GameParametersMenuView_Previews: PreviewProvider {
static var previews: some View {
GameParametersMenuView()
}
}

@ -0,0 +1,68 @@
//
// GameParametersMenuView.swift
// ArkitDoushiQi
//
// Created by Johan LACHENAL, Louis DUFOUR on 24/05/2024.
//
import SwiftUI
struct GameParametersMenuView: View, KeyboardReadable {
@State private var selectedAIOption: AI = .RandomAction
@State private var selectedRulesOption: Rules = .Regular
@State private var selectedGameType: GameType = .PvP
@State private var isKeyboardVisible = false
@State private var playerName1 = NSLocalizedString("Nom du Joueur 1", comment: "")
@State private var playerName2 = NSLocalizedString("Nom du Joueur 2", comment: "")
@State private var playerImage1: UIImage = UIImage(named: "profil")!
@State private var playerImage2: UIImage = UIImage(named: "profil")!
@State private var keyboardHeight: CGFloat = 0
var body: some View {
GeometryReader { geometry in
ScrollView {
VStack(alignment: .leading) {
Text("Paramètres de partie")
.bold()
.font(.title)
.padding()
PickerComponent(title: "Sélectionne le type de partie :", selectedOption: $selectedGameType, options: GameType.allCases)
PickerComponent(title: "Sélectionne les règles :", selectedOption: $selectedRulesOption, options: Rules.allCases)
if selectedGameType == .PvAI {
PickerComponent(title: "Sélectionne une IA :", selectedOption: $selectedAIOption, options: AI.allCases)
}
ProfileEdit(color: Color(.red), profileWidth: 100, profileHeight: 100, defaultImage: Image("profil"), imageTextChange: "Changer l'avatar du joueur 1", playerNameKey: "Nom du Joueur 1", playerName: $playerName1, playerImage: $playerImage1)
if selectedGameType == .PvP {
ProfileEdit(color: Color(.blue), profileWidth: 100, profileHeight: 100, defaultImage: Image("profil"), imageTextChange: "Changer l'avatar du joueur 2", playerNameKey: "Nom du Joueur 2", playerName: $playerName2, playerImage: $playerImage2)
}
if !isKeyboardVisible {
ButtonComponent(title: "Lancer la partie") {
GameView(player1Name: playerName1, player1Image: playerImage1, player2Name: playerName2, player2Image: playerImage2)
}
.padding(EdgeInsets(top: 10, leading: 32, bottom: 10, trailing: 32))
}
}
.padding(.bottom, isKeyboardVisible ? keyboardHeight : 0)
.animation(.easeOut(duration: 0.3), value: keyboardHeight)
.onReceive(keyboardPublisher) { height in
withAnimation {
self.keyboardHeight = height - geometry.safeAreaInsets.bottom
self.isKeyboardVisible = height > 0
}
}
.frame(minHeight: geometry.size.height)
}
}
}
}
struct GameParametersMenuView_Previews: PreviewProvider {
static var previews: some View {
GameParametersMenuView()
}
}

@ -1,53 +0,0 @@
//
// ParametersMenuView.swift
// ArkitDoushiQi
//
// Created by Johan LACHENAL on 21/05/2024.
//
import SwiftUI
struct GeneralParametersMenuView: View {
@EnvironmentObject var languageSettings: LanguageSettings
@State private var selectedAIOption: AI
@State private var selectedRulesOption: Rules
let parametersTitle = LocalizedStringKey("ParametersTitle")
let darkModeDescription = LocalizedStringKey("DarkModeDescription")
let darkModeBooleanName: String = "isDarkMode"
let darkModeDefaultValue: Bool = false
let languagePickerTitle = LocalizedStringKey("LanguagePickerTitle")
init(selectedAIOption: AI, selectedRulesOption: Rules) {
self._selectedAIOption = State(initialValue: selectedAIOption)
self._selectedRulesOption = State(initialValue: selectedRulesOption)
}
var body: some View {
VStack(alignment: .leading) {
HStack(alignment: .center) {
Text(parametersTitle).bold().font(.title)
}.frame(maxWidth: .infinity)
Spacer().frame(maxHeight: 30)
ToggleComponent(description: darkModeDescription, booleanName: darkModeBooleanName, booleanDefaultValue: darkModeDefaultValue)
PickerComponent(title: languagePickerTitle,
selectedOption: $languageSettings.selectedLanguage,
options: Language.allCases)
.onChange(of: languageSettings.selectedLanguage) { newLanguage in
languageSettings.changeLanguage(to: newLanguage)
}
}
.frame(maxHeight: .infinity, alignment: .top)
}
}
struct GeneralParametersMenuView_Previews: PreviewProvider {
static var previews: some View {
let languageSettings = LanguageSettings(selectedLanguage: .French)
GeneralParametersMenuView(
selectedAIOption: .RandomAction,
selectedRulesOption: .Regular
)
.environmentObject(languageSettings)
}
}

@ -1,61 +0,0 @@
//
// MainMenu.swift
// ArkitDoushiQi
//
// Created by Johan LACHENAL on 16/05/2024.
//
import SwiftUI
struct MainMenu: View {
@EnvironmentObject var languageSettings: LanguageSettings
let playButtonText: String
let registeredGamesButtonText: String
let parametersButtonText: String
@State private var action: Int? = 0
@AppStorage("isDarkMode") private var isDarkMode = false
@State private var reloadView = false // Déclarer reloadView ici
var body: some View {
ZStack {
NavigationView {
VStack {
Spacer()
HStack() {
Text("DouShiQi")
.bold()
.font(.title).padding()
}
Spacer().frame(height: 40)
VStack(alignment: .leading) {
ButtonComponent(title: playButtonText)
{ GameParametersMenuView() }
Spacer().frame(height: 30)
ButtonComponent(title: registeredGamesButtonText)
{ PartyListView() }
Spacer().frame(height: 30)
ButtonComponent(title: parametersButtonText)
{ GeneralParametersMenuView(
selectedAIOption: .RandomAction,
selectedRulesOption: .Regular
).id(reloadView) // Utilisez l'ID pour forcer le rechargement de la vue
}
}
Spacer()
}
.padding(EdgeInsets(top: 10, leading: 32, bottom: 10, trailing: 32))
}
.environmentObject(languageSettings)
.onReceive(NotificationCenter.default.publisher(for: NSNotification.Name("LanguageChanged"))) { _ in
self.reloadView.toggle() // Changez la valeur pour forcer le rechargement
}
}
}
}
struct MainMenu_Previews: PreviewProvider {
static var previews: some View {
MainMenu(playButtonText: "Jouer", registeredGamesButtonText: "Parties enregistrées", parametersButtonText: "Paramètres")
.environmentObject(LanguageSettings(selectedLanguage: .French))
}
}

@ -0,0 +1,41 @@
//
// PartyEnregistery.swift
// ArkitDoushiQi
//
// Created by Louis DUFOUR on 31/05/2024.
//
import SwiftUI
struct PartyListView: View {
let parties: [Party] = [
Party(player1Name: "Jack", player1Score: "Défaite", player1Image: "Perceval", player2Name: "Le gars du dimanche", player2Score: "Victoire", player2Image: "Perceval", date: Date()),
Party(player1Name: "Le gars du dimanche", player1Score: "Victoire", player1Image: "Perceval", player2Name: "Jack", player2Score: "Défaite", player2Image: "Perceval", date: Date().addingTimeInterval(-86400))
// Ajoutez plus de parties ici
]
var body: some View {
NavigationStack {
List(parties) { party in
ItemCollectionParty(party: party)
.padding(.vertical, 5)
.listRowInsets(EdgeInsets()) // Supprimer le padding
}
.navigationTitle("")
.toolbar {
ToolbarItem(placement: .principal) {
Text("Liste des Parties")
.font(.custom("Nuku Nuku", size: 24)) // Appliquer la police personnalisée ici
.foregroundColor(.primary) // Ajustez la couleur selon vos besoins
}
}
.frame(maxWidth: .infinity) // Utiliser toute la largeur disponible
}
}
}
struct PartyListView_Previews: PreviewProvider {
static var previews: some View {
PartyListView()
}
}

@ -1,34 +0,0 @@
//
// PartyEnregistery.swift
// ArkitDoushiQi
//
// Created by Louis DUFOUR on 31/05/2024.
//
import SwiftUI
import SwiftUI
struct PartyListView: View {
let parties: [Party] = [
Party(player1Name: "L'invaincu du samedi", player1Score: 2, player1Image: "Perceval", player2Name: "Le gars du dimanche", player2Score: 1, player2Image: "Perceval", date: "Samedi soir"),
Party(player1Name: "Le champion du vendredi", player1Score: 3, player1Image: "Perceval", player2Name: "Le perdant du lundi", player2Score: 0, player2Image: "Perceval", date: "Vendredi soir")
// Ajoutez plus de parties ici
]
var body: some View {
NavigationView {
List(parties) { party in
ItemCollectionParty(party: party)
.padding(.vertical, 5)
}
.navigationTitle("Liste des Parties")
}
}
}
struct PartyListView_Previews: PreviewProvider {
static var previews: some View {
PartyListView()
}
}

@ -1,19 +0,0 @@
//
// Stub.swift
// ArkitDoushiQi
//
// Created by Louis DUFOUR on 31/05/2024.
//
import SwiftUI
struct Party: Identifiable {
let id = UUID()
let player1Name: String
let player1Score: Int
let player1Image: String
let player2Name: String
let player2Score: Int
let player2Image: String
let date: String
}

@ -1,20 +0,0 @@
/
// Picker.swift
// ArkitDoushiQi
//
// Created by Johan LACHENAL on 21/05/2024.
//
import SwiftUI
struct Picker: View {
var body: some View {
Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/)
}
}
struct Picker_Previews: PreviewProvider {
static var previews: some View {
Picker()
}
}

@ -0,0 +1,40 @@
/*
Localizable.strings
ArkitDoushiQi
Created by Louis DUFOUR on 28/05/2024.
*/
"ParametersTitle" = "Parameters";
"DarkModeDescription" = "Dark Mode";
"LanguagePickerTitle" = "Language";
"DOUSHIQI" = "DOUSHIQI";
"GAME" = "GAME";
"Play" = "Play";
"Registered Games" = "Registered Games";
"Choose Language" = "Choose Language";
"French" = "French";
"English" = "English";
"Cancel" = "Cancel";
"Paramètres de partie" = "Game Settings";
"Sélectionne le type de partie :" = "Select Game Type:";
"Joueur contre Joueur" = "Player vs Player";
"Joueur contre IA" = "Player vs AI";
"Sélectionne les règles :" = "Select Rules:";
"Simplifié" = "Easy";
"Normal" = "Regular";
"Sélectionne une IA :" = "Select AI:";
"IA Random" = "Random AI";
"IA Facile" = "Easy AI";
"IA Intermédiaire" = "Medium AI";
"changer l'avatar du joueur 1" = "Change Player 1 Avatar";
"changer l'avatar du joueur 2" = "Change Player 2 Avatar";
"Nom du Joueur 1" = "Player 1 Name";
"Nom du Joueur 2" = "Player 2 Name";
"Lancer la partie" = "Start Game";
"Changer d'avatar" = "Change Avatar";
"Liste des Parties" = "Party List";
"Victoire" = "Victory";
"Défaite" = "Defeat";

@ -0,0 +1,40 @@
/*
Localizable.strings
ArkitDoushiQi
Created by Louis DUFOUR on 28/05/2024.
*/
"ParametersTitle" = "Paramètres";
"DarkModeDescription" = "Mode sombre";
"LanguagePickerTitle" = "Langue";
"DOUSHIQI" = "DOUSHIQI";
"GAME" = "JEU";
"Play" = "Jouer";
"Registered Games" = "Parties Enregistrees";
"Choose Language" = "Choisissez la Langue";
"French" = "Francais";
"English" = "Anglais";
"Cancel" = "Annuler";
"Paramètres de partie" = "Paramètres de partie";
"Sélectionne le type de partie :" = "Sélectionne le type de partie :";
"Joueur contre Joueur" = "Joueur contre Joueur";
"Joueur contre IA" = "Joueur contre IA";
"Sélectionne les règles :" = "Sélectionne les règles :";
"Simplifié" = "Simplifié";
"Normal" = "Normal";
"Sélectionne une IA :" = "Sélectionne une IA :";
"IA Random" = "IA Random";
"IA Facile" = "IA Facile";
"IA Intermédiaire" = "IA Intermédiaire";
"changer l'avatar du joueur 1" = "changer l'avatar du joueur 1";
"changer l'avatar du joueur 2" = "changer l'avatar du joueur 2";
"Nom du Joueur 1" = "Nom du Joueur 1";
"Nom du Joueur 2" = "Nom du Joueur 2";
"Lancer la partie" = "Lancer la partie";
"Changer d'avatar" = "Changer d'avatar";
"Liste des Parties" = "Liste des Parties";
"Liste des Parties" = "Liste des Parties";
"Victoire" = "Victoire";
"Défaite" = "Défaite";

@ -0,0 +1,296 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="433.000000pt" height="577.000000pt" viewBox="0 0 433.000000 577.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,577.000000) scale(0.100000,-0.100000)"
fill="#ffffff" stroke="none">
<path d="M1603 5348 c-74 -11 -139 -44 -198 -101 l-50 -48 -55 21 c-69 27
-187 36 -263 21 -188 -40 -350 -207 -387 -400 -63 -334 130 -843 443 -1168
l40 -42 -45 -52 -44 -51 -70 -3 c-221 -8 -371 -221 -308 -436 19 -66 64 -138
110 -179 38 -33 125 -80 148 -80 25 0 26 -15 6 -95 -11 -43 -20 -98 -20 -122
0 -68 29 -167 66 -225 l33 -53 -35 -3 c-33 -3 -35 -5 -29 -32 4 -16 1 -54 -5
-85 -18 -86 -15 -108 21 -178 l33 -66 -13 -68 c-8 -37 -16 -93 -18 -123 -4
-56 -5 -54 64 -183 14 -26 14 -34 -2 -83 -12 -39 -15 -69 -10 -107 8 -66 25
-131 31 -124 3 3 0 23 -6 44 -10 32 -9 46 4 76 8 20 20 37 25 37 17 0 41 56
41 95 0 47 -28 100 -79 150 -54 51 -65 93 -46 165 23 86 19 137 -15 195 -40
68 -38 89 5 41 61 -69 73 -169 30 -251 -27 -49 -29 -73 -3 -33 48 75 51 167 7
257 -35 71 -35 98 0 175 17 39 24 46 48 46 34 -1 63 -21 63 -44 0 -47 38 -163
85 -261 53 -109 54 -111 192 -239 113 -106 142 -138 159 -180 23 -56 98 -207
137 -275 30 -53 24 -87 -33 -171 -43 -64 -73 -120 -67 -126 2 -2 12 14 22 36
24 53 53 80 65 60 7 -12 12 -11 29 4 43 39 19 -4 -34 -59 -30 -32 -62 -77 -72
-101 -10 -24 -21 -44 -26 -44 -11 0 18 -54 38 -70 9 -8 27 -34 40 -59 13 -25
55 -77 94 -116 73 -71 95 -83 41 -21 -37 42 -90 139 -90 164 0 23 -78 114 -90
107 -5 -3 -5 9 0 26 10 34 38 73 95 133 20 21 44 54 52 74 l15 37 41 -50 c175
-211 369 -352 529 -386 29 -6 59 -16 67 -22 49 -40 97 -58 127 -47 21 8 31 6
57 -14 98 -74 290 -87 417 -29 36 17 76 42 90 57 14 15 54 44 90 63 36 20 80
50 99 67 34 31 102 157 100 186 0 8 -5 2 -11 -15 -23 -63 -69 -116 -122 -141
-30 -14 -52 -19 -54 -13 -3 6 -10 5 -20 -3 -12 -10 -14 -10 -8 0 4 6 2 12 -3
12 -6 0 -11 -4 -11 -9 0 -5 -6 -11 -14 -14 -9 -4 -6 9 10 36 13 23 24 49 24
57 -1 10 -4 9 -12 -5 -6 -11 -22 -33 -37 -50 -17 -19 -19 -24 -6 -15 18 13 19
13 8 0 -22 -28 -71 -22 -162 20 -72 33 -99 40 -148 40 -72 0 -141 -19 -195
-55 -36 -24 -41 -25 -57 -11 -23 21 -118 22 -140 2 -14 -13 -25 -12 -84 9
-163 57 -345 207 -505 416 -7 9 -21 50 -31 92 -22 85 -55 155 -76 164 -8 3
-13 9 -10 13 3 5 -9 20 -26 34 -28 24 -67 111 -55 123 11 12 59 -35 88 -86
158 -280 405 -471 708 -547 102 -26 336 -26 430 -1 188 50 345 146 455 277 75
89 96 110 110 110 18 0 55 48 55 70 0 13 11 20 38 25 51 9 122 41 150 68 33
31 66 90 92 167 12 36 28 71 34 78 7 7 33 14 59 15 40 2 44 4 30 14 -9 7 -15
14 -12 16 10 8 89 27 115 28 29 0 29 0 5 10 -14 5 -45 7 -70 3 -43 -6 -45 -5
-30 10 24 25 115 32 163 12 22 -9 41 -14 44 -11 7 7 -60 33 -116 46 -34 7 -61
7 -93 -1 -24 -6 -66 -16 -94 -21 -27 -5 -72 -14 -100 -20 -73 -14 -143 -50
-203 -104 -63 -57 -97 -113 -113 -183 -7 -36 -18 -58 -34 -68 -14 -9 -30 -37
-41 -71 -31 -99 -162 -227 -301 -293 -253 -121 -579 -100 -838 52 -88 52 -287
229 -273 243 4 4 47 -10 97 -30 137 -55 255 -78 396 -78 66 0 149 5 185 12
133 25 285 122 363 231 120 168 169 275 171 373 1 58 1 58 -51 107 l-51 48 48
124 c105 265 149 476 157 748 7 207 -7 352 -44 460 -14 41 -26 80 -27 85 -1 6
-12 28 -23 51 l-22 41 44 89 c97 195 151 463 102 499 -44 32 -158 -36 -314
-188 -94 -92 -127 -118 -140 -112 -15 5 0 24 80 101 152 145 314 244 375 229
15 -4 25 -15 29 -35 3 -17 9 -30 14 -30 24 0 -16 68 -44 75 -53 14 -196 -66
-331 -184 -38 -33 -73 -58 -78 -55 -5 3 -7 2 -6 -3 2 -4 1 -8 -2 -8 -12 0 -37
-31 -32 -39 3 -5 -3 -6 -12 -3 -13 5 -17 3 -13 -6 8 -20 -53 -12 -73 9 -14 15
-13 16 4 10 19 -7 56 18 56 37 0 6 -8 0 -19 -12 -12 -14 -25 -19 -36 -15 -10
4 -20 1 -25 -6 -6 -9 -12 -10 -26 -1 -18 10 -18 10 0 11 20 0 20 0 0 15 -10 8
-14 15 -7 15 7 0 10 7 7 15 -5 11 -2 13 12 8 13 -5 15 -3 9 7 -6 10 -4 12 8 7
11 -4 14 -2 11 8 -12 31 180 155 336 217 146 58 231 46 266 -37 20 -49 19 -86
-3 -79 -15 5 -16 4 -3 -5 13 -10 13 -12 0 -21 -8 -5 -10 -10 -3 -10 19 0 -22
-166 -113 -452 -37 -116 -41 -137 -20 -98 32 58 148 456 167 570 22 134 -60
211 -196 183 -118 -25 -308 -126 -417 -222 -25 -23 -48 -41 -51 -41 -2 0 13
77 35 172 62 277 61 348 -3 403 -24 19 -42 25 -80 25 -117 0 -349 -68 -512
-150 l-98 -49 -9 25 c-22 56 -30 162 -27 355 2 191 0 208 -20 259 -13 30 -36
71 -52 90 -60 73 -180 114 -288 98z m136 -149 c86 -52 102 -107 111 -393 7
-215 19 -294 49 -330 8 -10 0 -21 -36 -46 -149 -107 -323 -322 -428 -531 -24
-46 -29 -51 -36 -34 -4 11 -8 55 -8 98 -1 78 0 80 68 215 109 217 151 364 151
523 0 149 -39 280 -110 376 l-40 52 33 27 c76 65 181 83 246 43z m-516 -90
c21 -5 40 -16 43 -24 3 -7 -10 -47 -30 -89 -87 -182 -127 -361 -132 -590 l-3
-158 -43 -56 c-60 -78 -67 -92 -68 -132 l0 -35 -20 25 c-37 46 -118 214 -149
308 -144 433 -18 760 294 762 39 0 87 -5 108 -11z m230 -208 c31 -63 32 -70
32 -186 0 -131 -17 -210 -77 -353 l-31 -75 -36 39 c-20 22 -51 58 -70 80 l-34
39 11 100 c12 110 65 307 107 398 26 56 28 58 46 41 11 -10 34 -47 52 -83z
m1220 -221 c59 -47 60 -123 1 -375 -20 -88 -42 -186 -48 -218 -6 -32 -15 -55
-19 -51 -4 4 -18 8 -31 9 -20 0 -24 -4 -21 -25 1 -14 6 -23 11 -20 5 3 8 8 6
13 -3 11 27 9 65 -5 18 -7 33 -18 33 -25 0 -7 5 -13 11 -13 5 0 7 5 3 11 -12
20 40 2 106 -37 33 -19 60 -39 60 -44 0 -6 6 -10 14 -10 42 0 196 -179 255
-297 60 -120 72 -187 78 -418 7 -256 -8 -426 -40 -456 -12 -10 -27 -19 -34
-19 -7 0 -13 -6 -13 -12 0 -7 -24 -30 -54 -51 -88 -64 -146 -129 -167 -189
-11 -33 -14 -57 -8 -62 5 -6 9 -21 9 -34 0 -45 63 -145 137 -218 63 -61 73
-76 73 -106 0 -33 -3 -36 -45 -48 -40 -11 -52 -10 -111 9 -51 18 -68 20 -80
11 -21 -19 -17 -38 15 -71 27 -27 70 -42 56 -19 -11 18 11 11 30 -10 9 -10 15
-26 12 -34 -3 -8 -1 -17 6 -20 9 -3 8 -7 -2 -14 -9 -7 -10 -12 -2 -16 18 -12
13 -26 -21 -58 -49 -46 -95 -72 -178 -103 -143 -53 -421 -44 -547 16 -73 35
-147 145 -213 315 -40 105 -75 160 -118 189 -82 54 -147 39 -177 -40 -38 -97
-1 -200 109 -310 81 -81 162 -127 307 -176 83 -28 112 -33 258 -40 258 -12
411 21 541 116 43 31 50 34 50 18 0 -25 -36 -73 -113 -151 -165 -169 -443
-222 -736 -140 -351 97 -679 355 -851 670 -22 40 -40 76 -40 80 0 4 28 6 63 4
34 -1 67 1 73 6 11 8 15 -1 29 -52 10 -40 30 -93 46 -120 4 -8 19 -35 31 -60
13 -25 31 -54 41 -65 10 -10 15 -25 13 -31 -3 -7 4 -14 15 -17 11 -3 19 -14
19 -26 0 -13 6 -21 16 -21 10 0 14 -6 10 -15 -3 -9 0 -15 10 -15 18 0 44 -23
44 -39 0 -6 7 -11 16 -11 9 0 18 -9 21 -20 3 -11 12 -20 19 -20 8 0 17 -6 20
-14 3 -8 14 -16 25 -19 11 -3 19 -14 19 -27 0 -18 3 -20 14 -11 11 9 16 9 23
-1 4 -7 25 -22 46 -32 20 -11 37 -23 37 -28 0 -4 9 -8 19 -8 11 0 26 -7 34
-15 8 -8 17 -12 20 -9 3 3 22 -4 43 -15 21 -12 44 -21 51 -21 6 0 24 -5 40
-12 15 -6 39 -13 53 -15 14 -2 26 -8 28 -12 1 -4 16 -5 32 -3 17 2 30 0 30 -4
0 -5 46 -10 103 -10 56 -1 89 0 72 2 -16 2 -73 9 -125 15 -241 28 -451 130
-626 304 -117 116 -190 231 -240 379 -24 70 -24 86 2 86 8 0 42 13 77 29 232
106 382 356 349 583 -15 101 -52 176 -120 240 -48 45 -54 55 -51 87 1 20 3 83
3 141 1 93 -2 111 -25 161 -15 31 -43 75 -64 97 -31 35 -35 44 -25 61 6 12 13
21 15 21 3 0 34 -12 69 -26 80 -32 131 -30 158 6 20 28 22 53 12 147 -12 117
-7 122 187 177 161 46 347 77 335 57 -4 -5 -2 -12 4 -16 5 -3 10 1 10 9 0 19
16 21 24 4 5 -10 7 -10 12 0 3 6 10 12 15 12 6 0 7 -4 4 -10 -3 -5 -1 -10 4
-10 6 0 11 5 11 10 0 6 9 10 20 10 11 0 20 -5 20 -11 0 -6 5 -9 12 -7 11 4 18
23 22 66 1 12 8 28 16 35 10 10 11 7 6 -15 -3 -14 -9 -34 -13 -44 -4 -11 -3
-15 4 -11 17 11 91 205 113 297 23 98 26 188 7 214 -11 16 -24 18 -70 14 -170
-14 -511 -275 -662 -506 l-60 -93 -5 38 c-3 21 -9 43 -13 50 -5 8 43 63 135
156 212 213 414 356 557 392 94 25 139 7 155 -59 4 -15 9 -26 12 -23 14 13
-19 78 -46 92 -39 20 -75 19 -146 -5 -147 -50 -314 -171 -524 -378 -94 -92
-170 -160 -178 -157 -7 2 -34 -3 -60 -13 -32 -12 -59 -16 -86 -11 -28 4 -44 2
-54 -7 -7 -8 -18 -14 -23 -14 -5 0 -9 -5 -9 -12 0 -7 -15 -36 -32 -66 -24 -38
-38 -52 -50 -48 -25 6 -32 -10 -11 -24 17 -10 16 -10 -2 -8 -14 2 -20 -2 -19
-14 1 -10 -5 -18 -13 -18 -10 0 -13 -6 -8 -17 4 -14 3 -15 -5 -7 -31 31 152
325 292 470 183 189 470 344 748 404 116 25 171 25 203 0z m-35 -172 c2 -21 0
-26 -11 -23 -7 3 -26 1 -40 -4 -41 -16 -32 2 11 21 20 10 29 16 20 13 -10 -2
-18 1 -19 8 0 9 -2 9 -6 0 -7 -18 -23 -16 -23 3 0 11 8 14 33 12 27 -2 33 -8
35 -30z m-3 -95 c-11 -77 -37 -173 -46 -173 -5 0 -8 -3 -8 -7 3 -20 -2 -41
-16 -59 -12 -17 -12 -13 1 30 8 28 12 58 8 68 -3 11 0 18 7 18 7 0 9 3 6 7 -4
3 -16 -2 -27 -12 -11 -10 -20 -15 -20 -11 0 11 34 42 55 50 l20 8 -20 8 c-11
4 -27 5 -35 3 -10 -3 -9 0 4 11 10 8 15 20 10 27 -5 8 -2 11 8 7 11 -5 15 1
14 20 -1 18 4 26 13 24 8 -2 11 3 8 13 -4 9 -1 15 9 15 14 0 15 -8 9 -47z
m-241 0 c42 -63 56 -118 56 -217 0 -50 -5 -107 -10 -128 l-10 -36 -92 -1 c-64
-1 -94 3 -100 11 -5 9 -8 7 -8 -6 0 -15 -6 -17 -30 -14 -16 2 -31 0 -34 -6 -2
-6 -11 -2 -21 9 -15 18 -16 18 -11 1 5 -15 2 -17 -14 -13 -11 3 -20 1 -20 -5
0 -5 -9 -6 -20 -3 -11 4 -20 2 -20 -4 0 -6 -7 -7 -17 -4 -11 5 -14 3 -8 -6 5
-10 2 -11 -14 -6 -13 4 -21 2 -21 -5 0 -7 -8 -9 -20 -5 -11 4 -20 2 -20 -4 0
-17 -17 -13 -24 6 -5 11 0 22 11 31 10 7 17 21 16 30 -1 9 0 11 3 5 7 -15 34
-17 34 -3 0 6 -9 19 -20 30 -19 19 -19 19 0 33 11 8 17 17 13 21 -4 4 1 4 12
0 15 -6 17 -4 12 10 -5 14 -3 17 8 12 8 -3 15 -1 15 5 0 6 6 9 13 6 10 -4 13
2 10 21 -3 24 -2 24 6 7 8 -17 10 -16 10 12 1 27 7 34 53 57 29 14 47 26 40
26 -7 0 -12 5 -12 11 0 5 4 8 9 5 5 -3 11 4 15 17 3 13 9 18 13 12 12 -15 34
-17 32 -3 -3 26 1 39 11 33 6 -3 10 1 10 9 0 19 16 21 24 4 3 -8 4 -6 3 4 -2
14 65 75 85 77 4 1 19 -16 32 -36z m-1115 -33 l16 -24 -33 19 c-31 18 -35 19
-45 4 -10 -13 -15 -14 -24 -4 -9 10 -9 15 0 24 19 19 68 9 86 -19z m95 -114
c9 -19 16 -42 15 -53 0 -10 -7 0 -15 21 -8 21 -19 45 -25 52 -7 9 -8 14 -1 14
5 0 17 -15 26 -34z m-61 -22 c16 -45 11 -84 -12 -84 -9 0 -21 58 -21 103 0 40
14 33 33 -19z m1917 12 c0 -3 -4 -8 -10 -11 -5 -3 -10 -1 -10 4 0 6 5 11 10
11 6 0 10 -2 10 -4z m13 -97 c-2 -80 -22 -163 -38 -157 -5 1 -8 8 -6 13 2 6 5
24 6 42 0 17 7 39 15 48 12 14 10 17 -9 22 -14 4 -18 8 -11 13 6 4 12 13 13
21 2 8 6 19 10 26 4 6 0 18 -8 26 -11 12 -12 17 -2 20 27 11 32 -2 30 -74z
m-1884 -39 c-1 -95 -6 -80 -12 30 -2 47 0 76 4 65 4 -11 8 -54 8 -95z m1731
28 c43 -71 18 -228 -51 -311 l-31 -38 -24 22 c-13 12 -21 26 -17 32 3 6 1 7
-5 3 -7 -4 -12 -2 -12 3 0 6 -6 11 -13 11 -21 0 -70 59 -63 77 5 13 4 14 -8 4
-8 -7 -17 -8 -20 -3 -8 13 18 34 29 24 5 -4 5 1 2 11 -5 13 0 21 18 29 13 6
22 14 20 18 -4 6 141 150 151 150 2 0 13 -15 24 -32z m-1954 -76 c8 -39 23
-95 34 -126 10 -31 15 -56 10 -56 -5 0 -12 5 -15 10 -4 6 -10 8 -15 5 -5 -3
-11 -1 -15 5 -3 5 -11 10 -17 10 -6 0 -5 -7 3 -17 8 -10 -4 -3 -26 15 -22 17
-45 32 -51 32 -15 0 -26 28 -14 35 6 4 10 0 10 -7 0 -7 14 -21 30 -30 17 -9
30 -16 30 -14 0 2 -16 21 -35 42 -59 65 -38 63 25 -3 75 -77 79 -68 5 12 -30
33 -55 62 -55 65 0 16 70 103 77 96 3 -2 11 -36 19 -74z m674 -59 c0 -53 -11
-113 -20 -108 -8 5 -6 -149 4 -190 6 -29 6 -29 -5 -5 -20 47 -24 174 -5 220
14 35 20 110 9 110 -2 0 -15 -7 -28 -16 -22 -14 -25 -15 -25 -1 0 17 14 25 48
26 19 1 22 -4 22 -36z m-155 7 c-3 -5 -13 -10 -21 -10 -8 0 -14 -5 -14 -10 0
-11 -22 -36 -54 -60 -20 -15 -20 -15 0 19 10 18 30 42 43 52 25 20 57 26 46 9z
m182 -22 c-3 -7 -5 -2 -5 12 0 14 2 19 5 13 2 -7 2 -19 0 -25z m-209 -56 c-23
-22 -45 -38 -48 -35 -3 2 9 17 27 33 17 16 28 32 25 36 -4 4 -2 4 5 0 6 -3 15
-1 18 5 4 5 9 8 12 6 2 -3 -15 -23 -39 -45z m138 -23 c-15 -53 -16 -72 -5
-151 11 -79 10 -91 -4 -105 -14 -15 -21 -14 -76 7 -34 12 -61 28 -61 34 0 6 9
26 21 45 11 18 18 35 16 37 -2 3 -15 -16 -28 -41 -14 -27 -31 -45 -41 -45 -24
0 -58 35 -58 59 0 10 -8 22 -17 26 -16 6 -15 8 7 25 14 11 31 20 38 20 8 0 10
5 6 12 -5 8 -2 9 9 5 13 -5 17 -1 17 14 0 11 5 17 10 14 6 -3 10 -1 10 5 0 21
29 42 50 35 12 -4 20 -2 20 5 0 6 5 10 11 8 7 -2 28 11 47 29 19 18 37 31 40
28 3 -2 -3 -32 -12 -66z m-46 56 c0 -2 -10 -9 -22 -15 -22 -11 -22 -10 -4 4
21 17 26 19 26 11z m1483 -10 c-3 -9 -8 -14 -10 -11 -3 3 -2 9 2 15 9 16 15
13 8 -4z m-1273 -5 c0 -5 -4 -10 -10 -10 -5 0 -10 5 -10 10 0 6 5 10 10 10 6
0 10 -4 10 -10z m1270 -24 c0 -3 -4 -8 -10 -11 -5 -3 -10 -1 -10 4 0 6 5 11
10 11 6 0 10 -2 10 -4z m-30 -85 c-13 -24 -31 -37 -28 -19 3 11 27 37 36 38 1
0 -2 -9 -8 -19z m-33 -77 c-9 -9 -28 6 -21 18 4 6 10 6 17 -1 6 -6 8 -13 4
-17z m-1681 -3 c-4 -5 2 -7 13 -4 11 3 27 -4 40 -18 25 -27 26 -36 7 -36 -8 0
-12 6 -9 12 2 7 -3 15 -12 19 -22 8 -60 -35 -79 -90 -16 -46 -12 -62 4 -19 5
14 16 25 24 25 21 0 120 -70 150 -106 63 -77 103 -208 90 -296 -11 -71 -19
-76 -45 -30 -13 23 -30 42 -36 42 -7 0 -13 6 -13 13 0 7 -9 19 -19 27 -11 7
-18 17 -15 22 3 4 -4 8 -15 8 -11 0 -24 7 -29 16 -5 9 -11 15 -13 13 -2 -1
-41 16 -86 38 -102 51 -210 77 -303 71 -39 -2 -70 -1 -70 3 0 14 60 88 101
122 38 33 143 77 184 77 7 0 22 16 34 36 13 21 26 32 33 28 7 -4 8 -3 4 4 -12
19 3 32 35 32 17 0 28 -4 25 -9z m1658 -43 c-22 -44 -24 -45 -34 -28 -13 20
-12 33 0 25 9 -6 14 8 11 28 0 4 8 7 19 7 20 0 20 -1 4 -32z m-1624 -8 c0 -5
-7 -10 -16 -10 -8 0 -12 5 -9 10 3 6 10 10 16 10 5 0 9 -4 9 -10z m337 -32
c-3 -8 -6 -5 -6 6 -1 11 2 17 5 13 3 -3 4 -12 1 -19z m-302 -28 c-3 -5 -10
-10 -16 -10 -5 0 -9 5 -9 10 0 6 7 10 16 10 8 0 12 -4 9 -10z m55 -7 c0 -5 -5
-15 -10 -23 -8 -12 -10 -11 -10 8 0 12 5 22 10 22 6 0 10 -3 10 -7z m-550
-151 c0 -4 -20 -30 -45 -57 -29 -32 -44 -57 -41 -68 2 -10 -16 -60 -40 -112
-41 -86 -48 -95 -73 -95 -18 0 -46 17 -87 52 l-59 51 66 -69 c85 -88 92 -102
79 -156 -5 -24 -9 -68 -8 -98 1 -54 1 -54 8 18 11 98 17 120 38 126 21 7 206
-57 195 -67 -4 -4 7 -13 25 -19 17 -7 33 -21 36 -31 3 -13 10 -17 20 -14 9 4
21 -2 30 -15 8 -11 19 -17 25 -14 5 4 12 2 16 -4 7 -11 -73 -64 -122 -81 -55
-18 -170 -7 -228 21 -111 54 -185 166 -193 294 -5 85 7 133 50 205 35 57 105
114 162 130 39 12 146 14 146 3z m244 -58 c84 -22 202 -85 268 -144 96 -86
150 -175 118 -195 -5 -3 -17 9 -26 27 -26 51 -113 137 -184 183 -96 62 -191
97 -280 103 -52 3 -79 10 -87 21 -12 14 -12 14 -7 -1 4 -12 1 -18 -8 -18 -7 0
-14 9 -14 20 0 18 7 20 79 20 44 0 107 -7 141 -16z m-234 -14 c0 -11 -2 -20
-4 -20 -2 0 -6 9 -9 20 -3 11 -1 20 4 20 5 0 9 -9 9 -20z m-30 -10 c0 -5 -2
-10 -4 -10 -3 0 -8 5 -11 10 -3 6 -1 10 4 10 6 0 11 -4 11 -10z m282 -44 c62
-22 153 -71 188 -102 73 -63 122 -122 114 -135 -4 -8 -3 -9 4 -5 6 3 16 -3 22
-15 10 -17 7 -27 -15 -59 -34 -50 -116 -106 -178 -122 l-49 -13 -30 34 -30 33
51 29 c28 16 57 38 63 49 9 13 24 20 45 20 43 0 61 31 38 66 -8 13 -24 24 -35
24 -25 0 -51 -38 -44 -65 7 -29 -62 -91 -112 -101 -68 -13 -131 41 -164 139
-9 29 -9 42 -1 50 15 15 14 50 -1 65 -18 18 -46 14 -58 -7 -14 -27 -13 -29 13
-54 13 -12 31 -44 41 -71 10 -26 31 -63 47 -81 16 -18 29 -35 29 -38 0 -10
-72 -16 -94 -7 -32 12 -94 107 -117 179 -21 68 -25 145 -9 185 9 26 11 26 112
26 82 0 116 -5 170 -24z m-315 -84 c3 -103 6 -122 19 -122 7 0 16 -18 20 -45
4 -28 11 -45 20 -45 8 0 14 -5 14 -10 0 -21 -111 18 -147 52 -13 12 -23 32
-23 44 0 38 70 184 88 184 4 0 8 -26 9 -58z m688 -316 c48 -48 75 -117 75
-192 0 -58 -31 -154 -69 -213 -54 -83 -57 -83 -77 6 -15 71 -21 81 -63 118
-70 62 -102 96 -133 144 -33 53 -35 71 -8 71 37 0 127 41 166 75 21 19 45 34
52 35 7 0 32 -20 57 -44z m-451 12 c-6 -10 -4 -10 7 -2 15 12 89 15 89 4 0 -4
12 -20 28 -35 l27 -28 -56 5 c-30 2 -77 15 -104 28 -47 23 -48 25 -25 31 38
11 42 10 34 -3z m111 -90 c6 -5 10 -67 10 -143 l0 -134 -27 26 c-16 15 -28 23
-28 18 0 -4 -14 6 -30 24 -17 17 -35 31 -40 31 -6 0 -10 4 -10 8 0 5 -8 17
-18 28 -10 10 -24 34 -32 53 -13 32 -12 35 5 45 10 6 32 23 49 38 27 24 37 27
71 22 22 -3 45 -10 50 -16z m127 -223 c31 -44 70 -108 87 -143 27 -54 29 -63
16 -69 -17 -6 -186 5 -194 13 -2 2 -6 84 -8 181 l-4 178 23 -40 c13 -22 49
-76 80 -120z m-330 -41 c4 -44 11 -101 16 -128 7 -35 6 -59 -2 -84 l-12 -34
-32 32 c-58 57 -67 85 -67 195 0 65 5 108 13 123 l13 23 32 -24 c30 -23 33
-30 39 -103z m318 115 c0 -5 17 -36 38 -67 39 -57 71 -112 58 -101 -8 7 -116
171 -116 176 0 2 5 3 10 3 6 0 10 -5 10 -11z m122 -107 c9 -24 9 -44 0 -38 -5
3 -28 33 -52 68 l-44 63 44 -38 c25 -21 48 -46 52 -55z m-266 -59 c22 -14 27
-14 36 -2 8 11 9 10 4 -4 -3 -10 -6 -25 -6 -33 0 -8 -5 -14 -11 -14 -5 0 -8 4
-5 9 3 5 -7 17 -22 27 -37 24 -152 135 -152 147 0 5 29 -18 65 -52 36 -34 77
-69 91 -78z m-66 -4 c0 -3 -11 -16 -24 -29 -23 -20 -26 -21 -40 -7 -18 18 -21
37 -6 37 6 0 10 7 10 15 0 9 -6 12 -15 9 -10 -4 -15 0 -15 11 0 9 5 13 10 10
6 -3 10 1 10 9 0 9 -4 16 -10 16 -5 0 -10 7 -10 16 0 10 17 -3 45 -33 24 -26
44 -51 45 -54z m1871 -6 c-5 -10 -17 -27 -26 -38 -16 -19 -17 -19 -3 5 26 46
29 50 34 50 3 0 0 -8 -5 -17z m-11 -157 c-22 -69 -45 -128 -50 -131 -6 -4 -10
-14 -10 -24 0 -10 -6 -24 -14 -31 -8 -6 -12 -18 -9 -26 19 -50 -52 34 -86 103
-14 28 -14 33 3 33 22 0 126 100 166 158 19 28 36 49 38 48 2 -2 -15 -60 -38
-130z m-1740 94 c0 -11 -7 -20 -15 -20 -9 0 -12 -6 -8 -16 5 -13 2 -15 -15 -9
-12 3 -22 3 -22 -2 0 -5 -23 -26 -51 -47 -47 -35 -50 -36 -44 -14 13 43 41 73
95 100 30 15 56 28 58 28 1 0 2 -9 2 -20z m-180 0 c0 -5 -2 -10 -4 -10 -3 0
-8 5 -11 10 -3 6 -1 10 4 10 6 0 11 -4 11 -10z m1870 -33 c0 -2 -17 -19 -37
-38 l-38 -34 34 38 c33 34 41 42 41 34z m-1710 -81 c0 -2 -9 -6 -20 -9 -11 -3
-18 -1 -14 4 5 9 34 13 34 5z m-165 -16 c3 -6 -1 -7 -9 -4 -18 7 -21 14 -7 14
6 0 13 -4 16 -10z m205 -13 c0 -9 -17 -13 -52 -15 -69 -2 -42 23 30 27 12 0
22 -5 22 -12z m50 3 c-20 -13 -40 -13 -40 0 0 6 12 10 28 10 21 0 24 -2 12
-10z m-160 -4 c0 -7 -66 -46 -76 -46 -5 0 9 12 31 25 42 26 45 28 45 21z
m-153 -60 c2 -2 -14 -6 -37 -10 -26 -4 -51 -1 -72 9 -32 14 -31 14 36 10 38
-3 71 -7 73 -9z m99 -84 c6 -4 26 -36 44 -72 40 -79 95 -162 167 -253 38 -48
58 -84 69 -124 8 -31 13 -60 12 -65 -2 -5 -19 15 -38 44 -26 39 -50 61 -92 83
-107 57 -142 109 -172 257 -24 116 -21 151 10 130z m1810 -444 c-9 -12 -16
-19 -16 -15 0 11 24 47 28 42 2 -2 -3 -14 -12 -27z m-1550 -55 c-7 -7 -26 7
-26 19 0 6 6 6 15 -2 9 -7 13 -15 11 -17z m2005 -159 c35 -37 19 -36 -24 1
-26 22 -32 32 -19 28 11 -3 30 -16 43 -29z m-21 -19 c16 -17 21 -33 18 -61 -2
-20 -9 -39 -16 -42 -9 -3 -12 3 -10 14 2 12 -2 18 -10 16 -8 -1 -11 2 -7 8 9
14 -25 41 -42 35 -7 -2 -13 3 -13 12 0 13 -2 13 -16 2 -14 -12 -16 -11 -13 6
5 23 43 45 69 38 10 -3 28 -15 40 -28z m-2383 -45 c5 -23 6 -22 18 15 13 40
13 40 14 9 1 -21 -8 -42 -29 -65 -16 -19 -30 -37 -30 -41 0 -5 -5 -8 -11 -8
-13 0 -5 79 14 125 10 25 12 27 15 10 1 -11 5 -31 9 -45z m649 2 c1 -9 5 -28
9 -42 4 -17 0 -13 -15 13 -11 21 -18 42 -14 48 8 13 17 4 20 -19z m1653 -27
c29 -14 47 -50 31 -60 -5 -3 -14 3 -19 14 -6 10 -25 24 -43 30 -26 9 -30 14
-18 21 19 12 16 13 49 -5z m-809 -675 c29 -29 27 -84 -5 -115 -32 -33 -59 -34
-49 -2 4 12 7 29 8 37 1 8 6 19 11 23 6 6 5 10 -4 14 -10 4 -11 7 -1 13 8 5
10 15 6 26 -5 14 -9 15 -15 5 -7 -10 -10 -9 -14 3 -9 24 38 21 63 -4z m-82
-30 c3 -38 -18 -77 -37 -66 -8 5 -8 13 0 28 6 11 8 34 5 50 -5 24 -3 29 12 26
11 -2 18 -14 20 -38z m142 -42 c0 -9 -4 -20 -10 -23 -6 -4 -10 9 -10 32 0 28
3 34 10 23 5 -8 10 -23 10 -32z m-888 -53 c10 -19 10 -19 -8 -3 -10 9 -27 32
-37 50 l-18 33 26 -30 c14 -16 31 -39 37 -50z"/>
<path d="M1515 3970 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
-7 -4 -4 -10z"/>
<path d="M1500 3940 c0 -5 5 -10 10 -10 6 0 10 5 10 10 0 6 -4 10 -10 10 -5 0
-10 -4 -10 -10z"/>
<path d="M1485 3910 c4 -6 11 -8 16 -5 14 9 11 15 -7 15 -8 0 -12 -5 -9 -10z"/>
<path d="M1897 3483 c-44 -47 -70 -119 -75 -211 -8 -148 32 -279 125 -410 102
-143 147 -180 371 -304 70 -39 146 -86 170 -105 l42 -34 0 63 c0 78 -18 147
-60 229 -48 96 -100 160 -250 309 -201 201 -265 298 -277 425 -3 36 -9 65 -13
65 -3 0 -18 -12 -33 -27z m30 -325 c-3 -8 -6 -5 -6 6 -1 11 2 17 5 13 3 -3 4
-12 1 -19z m72 -185 c12 -24 19 -43 16 -43 -13 0 -86 176 -84 204 0 6 11 -18
23 -54 13 -36 33 -84 45 -107z m130 -173 c36 -36 82 -78 101 -94 25 -20 22
-18 -12 5 -56 38 -169 153 -187 189 -10 20 -8 19 10 -5 13 -16 52 -59 88 -95z
m226 -175 c33 -24 71 -56 85 -71 17 -20 12 -17 -17 8 -23 21 -67 54 -98 74
-30 20 -55 39 -55 41 0 6 17 -5 85 -52z"/>
<path d="M2890 3455 c0 -8 -20 -37 -44 -64 -60 -68 -64 -102 -32 -316 35 -241
39 -285 28 -332 -22 -99 29 -4 87 161 46 130 63 211 64 311 1 82 -1 94 -27
140 -16 28 -36 64 -45 82 -17 34 -31 43 -31 18z"/>
<path d="M2520 2992 c-62 -63 -65 -190 -5 -259 26 -31 43 -27 26 5 -22 41 -14
52 37 52 40 0 53 5 77 30 50 52 36 154 -27 186 -42 22 -76 17 -108 -14z"/>
<path d="M3006 2820 c-34 -41 -36 -102 -4 -125 20 -13 21 -18 10 -36 -24 -39
-3 -32 42 12 52 52 68 106 45 148 -22 39 -60 39 -93 1z"/>
<path d="M2760 2411 c41 -4 82 -11 90 -15 12 -7 13 -7 2 5 -8 9 -39 14 -90 15
l-77 2 75 -7z"/>
<path d="M2375 2179 c-20 -31 168 -160 255 -175 29 -5 25 -1 -26 24 -34 17
-92 59 -131 96 -71 66 -86 75 -98 55z"/>
<path d="M3055 2070 c-3 -6 1 -7 9 -4 18 7 21 14 7 14 -6 0 -13 -4 -16 -10z"/>
<path d="M2275 2010 c-11 -18 14 -38 71 -60 63 -23 203 -41 242 -31 23 6 18 9
-29 13 -30 4 -104 25 -164 47 -125 47 -112 44 -120 31z"/>
<path d="M2535 1843 c-32 -12 -66 -14 -162 -9 -122 6 -163 -3 -108 -24 59 -22
205 -7 289 31 50 21 36 23 -19 2z"/>
<path d="M2681 1504 c-35 -14 -100 -31 -145 -38 -57 -10 -71 -15 -46 -16 39
-3 35 -3 108 16 29 8 61 14 72 14 10 0 20 5 22 11 2 6 16 12 31 12 15 1 27 8
27 15 0 6 -1 12 -2 11 -2 0 -32 -11 -67 -25z"/>
<path d="M1985 4090 c-3 -5 -2 -10 3 -10 5 0 13 -10 19 -22 6 -15 12 -18 17
-10 4 7 2 12 -3 12 -6 0 -11 9 -11 20 0 21 -15 27 -25 10z"/>
<path d="M1945 3990 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
-8 -4 -11 -10z"/>
<path d="M1581 954 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z"/>
<path d="M3291 912 c-8 -19 -31 -40 -62 -56 -27 -15 -49 -29 -49 -31 0 -9 49
4 74 20 26 17 63 81 53 91 -2 3 -10 -8 -16 -24z"/>
<path d="M1571 914 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 21 KiB

@ -0,0 +1,296 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="433.000000pt" height="577.000000pt" viewBox="0 0 433.000000 577.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,577.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M1603 5348 c-74 -11 -139 -44 -198 -101 l-50 -48 -55 21 c-69 27
-187 36 -263 21 -188 -40 -350 -207 -387 -400 -63 -334 130 -843 443 -1168
l40 -42 -45 -52 -44 -51 -70 -3 c-221 -8 -371 -221 -308 -436 19 -66 64 -138
110 -179 38 -33 125 -80 148 -80 25 0 26 -15 6 -95 -11 -43 -20 -98 -20 -122
0 -68 29 -167 66 -225 l33 -53 -35 -3 c-33 -3 -35 -5 -29 -32 4 -16 1 -54 -5
-85 -18 -86 -15 -108 21 -178 l33 -66 -13 -68 c-8 -37 -16 -93 -18 -123 -4
-56 -5 -54 64 -183 14 -26 14 -34 -2 -83 -12 -39 -15 -69 -10 -107 8 -66 25
-131 31 -124 3 3 0 23 -6 44 -10 32 -9 46 4 76 8 20 20 37 25 37 17 0 41 56
41 95 0 47 -28 100 -79 150 -54 51 -65 93 -46 165 23 86 19 137 -15 195 -40
68 -38 89 5 41 61 -69 73 -169 30 -251 -27 -49 -29 -73 -3 -33 48 75 51 167 7
257 -35 71 -35 98 0 175 17 39 24 46 48 46 34 -1 63 -21 63 -44 0 -47 38 -163
85 -261 53 -109 54 -111 192 -239 113 -106 142 -138 159 -180 23 -56 98 -207
137 -275 30 -53 24 -87 -33 -171 -43 -64 -73 -120 -67 -126 2 -2 12 14 22 36
24 53 53 80 65 60 7 -12 12 -11 29 4 43 39 19 -4 -34 -59 -30 -32 -62 -77 -72
-101 -10 -24 -21 -44 -26 -44 -11 0 18 -54 38 -70 9 -8 27 -34 40 -59 13 -25
55 -77 94 -116 73 -71 95 -83 41 -21 -37 42 -90 139 -90 164 0 23 -78 114 -90
107 -5 -3 -5 9 0 26 10 34 38 73 95 133 20 21 44 54 52 74 l15 37 41 -50 c175
-211 369 -352 529 -386 29 -6 59 -16 67 -22 49 -40 97 -58 127 -47 21 8 31 6
57 -14 98 -74 290 -87 417 -29 36 17 76 42 90 57 14 15 54 44 90 63 36 20 80
50 99 67 34 31 102 157 100 186 0 8 -5 2 -11 -15 -23 -63 -69 -116 -122 -141
-30 -14 -52 -19 -54 -13 -3 6 -10 5 -20 -3 -12 -10 -14 -10 -8 0 4 6 2 12 -3
12 -6 0 -11 -4 -11 -9 0 -5 -6 -11 -14 -14 -9 -4 -6 9 10 36 13 23 24 49 24
57 -1 10 -4 9 -12 -5 -6 -11 -22 -33 -37 -50 -17 -19 -19 -24 -6 -15 18 13 19
13 8 0 -22 -28 -71 -22 -162 20 -72 33 -99 40 -148 40 -72 0 -141 -19 -195
-55 -36 -24 -41 -25 -57 -11 -23 21 -118 22 -140 2 -14 -13 -25 -12 -84 9
-163 57 -345 207 -505 416 -7 9 -21 50 -31 92 -22 85 -55 155 -76 164 -8 3
-13 9 -10 13 3 5 -9 20 -26 34 -28 24 -67 111 -55 123 11 12 59 -35 88 -86
158 -280 405 -471 708 -547 102 -26 336 -26 430 -1 188 50 345 146 455 277 75
89 96 110 110 110 18 0 55 48 55 70 0 13 11 20 38 25 51 9 122 41 150 68 33
31 66 90 92 167 12 36 28 71 34 78 7 7 33 14 59 15 40 2 44 4 30 14 -9 7 -15
14 -12 16 10 8 89 27 115 28 29 0 29 0 5 10 -14 5 -45 7 -70 3 -43 -6 -45 -5
-30 10 24 25 115 32 163 12 22 -9 41 -14 44 -11 7 7 -60 33 -116 46 -34 7 -61
7 -93 -1 -24 -6 -66 -16 -94 -21 -27 -5 -72 -14 -100 -20 -73 -14 -143 -50
-203 -104 -63 -57 -97 -113 -113 -183 -7 -36 -18 -58 -34 -68 -14 -9 -30 -37
-41 -71 -31 -99 -162 -227 -301 -293 -253 -121 -579 -100 -838 52 -88 52 -287
229 -273 243 4 4 47 -10 97 -30 137 -55 255 -78 396 -78 66 0 149 5 185 12
133 25 285 122 363 231 120 168 169 275 171 373 1 58 1 58 -51 107 l-51 48 48
124 c105 265 149 476 157 748 7 207 -7 352 -44 460 -14 41 -26 80 -27 85 -1 6
-12 28 -23 51 l-22 41 44 89 c97 195 151 463 102 499 -44 32 -158 -36 -314
-188 -94 -92 -127 -118 -140 -112 -15 5 0 24 80 101 152 145 314 244 375 229
15 -4 25 -15 29 -35 3 -17 9 -30 14 -30 24 0 -16 68 -44 75 -53 14 -196 -66
-331 -184 -38 -33 -73 -58 -78 -55 -5 3 -7 2 -6 -3 2 -4 1 -8 -2 -8 -12 0 -37
-31 -32 -39 3 -5 -3 -6 -12 -3 -13 5 -17 3 -13 -6 8 -20 -53 -12 -73 9 -14 15
-13 16 4 10 19 -7 56 18 56 37 0 6 -8 0 -19 -12 -12 -14 -25 -19 -36 -15 -10
4 -20 1 -25 -6 -6 -9 -12 -10 -26 -1 -18 10 -18 10 0 11 20 0 20 0 0 15 -10 8
-14 15 -7 15 7 0 10 7 7 15 -5 11 -2 13 12 8 13 -5 15 -3 9 7 -6 10 -4 12 8 7
11 -4 14 -2 11 8 -12 31 180 155 336 217 146 58 231 46 266 -37 20 -49 19 -86
-3 -79 -15 5 -16 4 -3 -5 13 -10 13 -12 0 -21 -8 -5 -10 -10 -3 -10 19 0 -22
-166 -113 -452 -37 -116 -41 -137 -20 -98 32 58 148 456 167 570 22 134 -60
211 -196 183 -118 -25 -308 -126 -417 -222 -25 -23 -48 -41 -51 -41 -2 0 13
77 35 172 62 277 61 348 -3 403 -24 19 -42 25 -80 25 -117 0 -349 -68 -512
-150 l-98 -49 -9 25 c-22 56 -30 162 -27 355 2 191 0 208 -20 259 -13 30 -36
71 -52 90 -60 73 -180 114 -288 98z m136 -149 c86 -52 102 -107 111 -393 7
-215 19 -294 49 -330 8 -10 0 -21 -36 -46 -149 -107 -323 -322 -428 -531 -24
-46 -29 -51 -36 -34 -4 11 -8 55 -8 98 -1 78 0 80 68 215 109 217 151 364 151
523 0 149 -39 280 -110 376 l-40 52 33 27 c76 65 181 83 246 43z m-516 -90
c21 -5 40 -16 43 -24 3 -7 -10 -47 -30 -89 -87 -182 -127 -361 -132 -590 l-3
-158 -43 -56 c-60 -78 -67 -92 -68 -132 l0 -35 -20 25 c-37 46 -118 214 -149
308 -144 433 -18 760 294 762 39 0 87 -5 108 -11z m230 -208 c31 -63 32 -70
32 -186 0 -131 -17 -210 -77 -353 l-31 -75 -36 39 c-20 22 -51 58 -70 80 l-34
39 11 100 c12 110 65 307 107 398 26 56 28 58 46 41 11 -10 34 -47 52 -83z
m1220 -221 c59 -47 60 -123 1 -375 -20 -88 -42 -186 -48 -218 -6 -32 -15 -55
-19 -51 -4 4 -18 8 -31 9 -20 0 -24 -4 -21 -25 1 -14 6 -23 11 -20 5 3 8 8 6
13 -3 11 27 9 65 -5 18 -7 33 -18 33 -25 0 -7 5 -13 11 -13 5 0 7 5 3 11 -12
20 40 2 106 -37 33 -19 60 -39 60 -44 0 -6 6 -10 14 -10 42 0 196 -179 255
-297 60 -120 72 -187 78 -418 7 -256 -8 -426 -40 -456 -12 -10 -27 -19 -34
-19 -7 0 -13 -6 -13 -12 0 -7 -24 -30 -54 -51 -88 -64 -146 -129 -167 -189
-11 -33 -14 -57 -8 -62 5 -6 9 -21 9 -34 0 -45 63 -145 137 -218 63 -61 73
-76 73 -106 0 -33 -3 -36 -45 -48 -40 -11 -52 -10 -111 9 -51 18 -68 20 -80
11 -21 -19 -17 -38 15 -71 27 -27 70 -42 56 -19 -11 18 11 11 30 -10 9 -10 15
-26 12 -34 -3 -8 -1 -17 6 -20 9 -3 8 -7 -2 -14 -9 -7 -10 -12 -2 -16 18 -12
13 -26 -21 -58 -49 -46 -95 -72 -178 -103 -143 -53 -421 -44 -547 16 -73 35
-147 145 -213 315 -40 105 -75 160 -118 189 -82 54 -147 39 -177 -40 -38 -97
-1 -200 109 -310 81 -81 162 -127 307 -176 83 -28 112 -33 258 -40 258 -12
411 21 541 116 43 31 50 34 50 18 0 -25 -36 -73 -113 -151 -165 -169 -443
-222 -736 -140 -351 97 -679 355 -851 670 -22 40 -40 76 -40 80 0 4 28 6 63 4
34 -1 67 1 73 6 11 8 15 -1 29 -52 10 -40 30 -93 46 -120 4 -8 19 -35 31 -60
13 -25 31 -54 41 -65 10 -10 15 -25 13 -31 -3 -7 4 -14 15 -17 11 -3 19 -14
19 -26 0 -13 6 -21 16 -21 10 0 14 -6 10 -15 -3 -9 0 -15 10 -15 18 0 44 -23
44 -39 0 -6 7 -11 16 -11 9 0 18 -9 21 -20 3 -11 12 -20 19 -20 8 0 17 -6 20
-14 3 -8 14 -16 25 -19 11 -3 19 -14 19 -27 0 -18 3 -20 14 -11 11 9 16 9 23
-1 4 -7 25 -22 46 -32 20 -11 37 -23 37 -28 0 -4 9 -8 19 -8 11 0 26 -7 34
-15 8 -8 17 -12 20 -9 3 3 22 -4 43 -15 21 -12 44 -21 51 -21 6 0 24 -5 40
-12 15 -6 39 -13 53 -15 14 -2 26 -8 28 -12 1 -4 16 -5 32 -3 17 2 30 0 30 -4
0 -5 46 -10 103 -10 56 -1 89 0 72 2 -16 2 -73 9 -125 15 -241 28 -451 130
-626 304 -117 116 -190 231 -240 379 -24 70 -24 86 2 86 8 0 42 13 77 29 232
106 382 356 349 583 -15 101 -52 176 -120 240 -48 45 -54 55 -51 87 1 20 3 83
3 141 1 93 -2 111 -25 161 -15 31 -43 75 -64 97 -31 35 -35 44 -25 61 6 12 13
21 15 21 3 0 34 -12 69 -26 80 -32 131 -30 158 6 20 28 22 53 12 147 -12 117
-7 122 187 177 161 46 347 77 335 57 -4 -5 -2 -12 4 -16 5 -3 10 1 10 9 0 19
16 21 24 4 5 -10 7 -10 12 0 3 6 10 12 15 12 6 0 7 -4 4 -10 -3 -5 -1 -10 4
-10 6 0 11 5 11 10 0 6 9 10 20 10 11 0 20 -5 20 -11 0 -6 5 -9 12 -7 11 4 18
23 22 66 1 12 8 28 16 35 10 10 11 7 6 -15 -3 -14 -9 -34 -13 -44 -4 -11 -3
-15 4 -11 17 11 91 205 113 297 23 98 26 188 7 214 -11 16 -24 18 -70 14 -170
-14 -511 -275 -662 -506 l-60 -93 -5 38 c-3 21 -9 43 -13 50 -5 8 43 63 135
156 212 213 414 356 557 392 94 25 139 7 155 -59 4 -15 9 -26 12 -23 14 13
-19 78 -46 92 -39 20 -75 19 -146 -5 -147 -50 -314 -171 -524 -378 -94 -92
-170 -160 -178 -157 -7 2 -34 -3 -60 -13 -32 -12 -59 -16 -86 -11 -28 4 -44 2
-54 -7 -7 -8 -18 -14 -23 -14 -5 0 -9 -5 -9 -12 0 -7 -15 -36 -32 -66 -24 -38
-38 -52 -50 -48 -25 6 -32 -10 -11 -24 17 -10 16 -10 -2 -8 -14 2 -20 -2 -19
-14 1 -10 -5 -18 -13 -18 -10 0 -13 -6 -8 -17 4 -14 3 -15 -5 -7 -31 31 152
325 292 470 183 189 470 344 748 404 116 25 171 25 203 0z m-35 -172 c2 -21 0
-26 -11 -23 -7 3 -26 1 -40 -4 -41 -16 -32 2 11 21 20 10 29 16 20 13 -10 -2
-18 1 -19 8 0 9 -2 9 -6 0 -7 -18 -23 -16 -23 3 0 11 8 14 33 12 27 -2 33 -8
35 -30z m-3 -95 c-11 -77 -37 -173 -46 -173 -5 0 -8 -3 -8 -7 3 -20 -2 -41
-16 -59 -12 -17 -12 -13 1 30 8 28 12 58 8 68 -3 11 0 18 7 18 7 0 9 3 6 7 -4
3 -16 -2 -27 -12 -11 -10 -20 -15 -20 -11 0 11 34 42 55 50 l20 8 -20 8 c-11
4 -27 5 -35 3 -10 -3 -9 0 4 11 10 8 15 20 10 27 -5 8 -2 11 8 7 11 -5 15 1
14 20 -1 18 4 26 13 24 8 -2 11 3 8 13 -4 9 -1 15 9 15 14 0 15 -8 9 -47z
m-241 0 c42 -63 56 -118 56 -217 0 -50 -5 -107 -10 -128 l-10 -36 -92 -1 c-64
-1 -94 3 -100 11 -5 9 -8 7 -8 -6 0 -15 -6 -17 -30 -14 -16 2 -31 0 -34 -6 -2
-6 -11 -2 -21 9 -15 18 -16 18 -11 1 5 -15 2 -17 -14 -13 -11 3 -20 1 -20 -5
0 -5 -9 -6 -20 -3 -11 4 -20 2 -20 -4 0 -6 -7 -7 -17 -4 -11 5 -14 3 -8 -6 5
-10 2 -11 -14 -6 -13 4 -21 2 -21 -5 0 -7 -8 -9 -20 -5 -11 4 -20 2 -20 -4 0
-17 -17 -13 -24 6 -5 11 0 22 11 31 10 7 17 21 16 30 -1 9 0 11 3 5 7 -15 34
-17 34 -3 0 6 -9 19 -20 30 -19 19 -19 19 0 33 11 8 17 17 13 21 -4 4 1 4 12
0 15 -6 17 -4 12 10 -5 14 -3 17 8 12 8 -3 15 -1 15 5 0 6 6 9 13 6 10 -4 13
2 10 21 -3 24 -2 24 6 7 8 -17 10 -16 10 12 1 27 7 34 53 57 29 14 47 26 40
26 -7 0 -12 5 -12 11 0 5 4 8 9 5 5 -3 11 4 15 17 3 13 9 18 13 12 12 -15 34
-17 32 -3 -3 26 1 39 11 33 6 -3 10 1 10 9 0 19 16 21 24 4 3 -8 4 -6 3 4 -2
14 65 75 85 77 4 1 19 -16 32 -36z m-1115 -33 l16 -24 -33 19 c-31 18 -35 19
-45 4 -10 -13 -15 -14 -24 -4 -9 10 -9 15 0 24 19 19 68 9 86 -19z m95 -114
c9 -19 16 -42 15 -53 0 -10 -7 0 -15 21 -8 21 -19 45 -25 52 -7 9 -8 14 -1 14
5 0 17 -15 26 -34z m-61 -22 c16 -45 11 -84 -12 -84 -9 0 -21 58 -21 103 0 40
14 33 33 -19z m1917 12 c0 -3 -4 -8 -10 -11 -5 -3 -10 -1 -10 4 0 6 5 11 10
11 6 0 10 -2 10 -4z m13 -97 c-2 -80 -22 -163 -38 -157 -5 1 -8 8 -6 13 2 6 5
24 6 42 0 17 7 39 15 48 12 14 10 17 -9 22 -14 4 -18 8 -11 13 6 4 12 13 13
21 2 8 6 19 10 26 4 6 0 18 -8 26 -11 12 -12 17 -2 20 27 11 32 -2 30 -74z
m-1884 -39 c-1 -95 -6 -80 -12 30 -2 47 0 76 4 65 4 -11 8 -54 8 -95z m1731
28 c43 -71 18 -228 -51 -311 l-31 -38 -24 22 c-13 12 -21 26 -17 32 3 6 1 7
-5 3 -7 -4 -12 -2 -12 3 0 6 -6 11 -13 11 -21 0 -70 59 -63 77 5 13 4 14 -8 4
-8 -7 -17 -8 -20 -3 -8 13 18 34 29 24 5 -4 5 1 2 11 -5 13 0 21 18 29 13 6
22 14 20 18 -4 6 141 150 151 150 2 0 13 -15 24 -32z m-1954 -76 c8 -39 23
-95 34 -126 10 -31 15 -56 10 -56 -5 0 -12 5 -15 10 -4 6 -10 8 -15 5 -5 -3
-11 -1 -15 5 -3 5 -11 10 -17 10 -6 0 -5 -7 3 -17 8 -10 -4 -3 -26 15 -22 17
-45 32 -51 32 -15 0 -26 28 -14 35 6 4 10 0 10 -7 0 -7 14 -21 30 -30 17 -9
30 -16 30 -14 0 2 -16 21 -35 42 -59 65 -38 63 25 -3 75 -77 79 -68 5 12 -30
33 -55 62 -55 65 0 16 70 103 77 96 3 -2 11 -36 19 -74z m674 -59 c0 -53 -11
-113 -20 -108 -8 5 -6 -149 4 -190 6 -29 6 -29 -5 -5 -20 47 -24 174 -5 220
14 35 20 110 9 110 -2 0 -15 -7 -28 -16 -22 -14 -25 -15 -25 -1 0 17 14 25 48
26 19 1 22 -4 22 -36z m-155 7 c-3 -5 -13 -10 -21 -10 -8 0 -14 -5 -14 -10 0
-11 -22 -36 -54 -60 -20 -15 -20 -15 0 19 10 18 30 42 43 52 25 20 57 26 46 9z
m182 -22 c-3 -7 -5 -2 -5 12 0 14 2 19 5 13 2 -7 2 -19 0 -25z m-209 -56 c-23
-22 -45 -38 -48 -35 -3 2 9 17 27 33 17 16 28 32 25 36 -4 4 -2 4 5 0 6 -3 15
-1 18 5 4 5 9 8 12 6 2 -3 -15 -23 -39 -45z m138 -23 c-15 -53 -16 -72 -5
-151 11 -79 10 -91 -4 -105 -14 -15 -21 -14 -76 7 -34 12 -61 28 -61 34 0 6 9
26 21 45 11 18 18 35 16 37 -2 3 -15 -16 -28 -41 -14 -27 -31 -45 -41 -45 -24
0 -58 35 -58 59 0 10 -8 22 -17 26 -16 6 -15 8 7 25 14 11 31 20 38 20 8 0 10
5 6 12 -5 8 -2 9 9 5 13 -5 17 -1 17 14 0 11 5 17 10 14 6 -3 10 -1 10 5 0 21
29 42 50 35 12 -4 20 -2 20 5 0 6 5 10 11 8 7 -2 28 11 47 29 19 18 37 31 40
28 3 -2 -3 -32 -12 -66z m-46 56 c0 -2 -10 -9 -22 -15 -22 -11 -22 -10 -4 4
21 17 26 19 26 11z m1483 -10 c-3 -9 -8 -14 -10 -11 -3 3 -2 9 2 15 9 16 15
13 8 -4z m-1273 -5 c0 -5 -4 -10 -10 -10 -5 0 -10 5 -10 10 0 6 5 10 10 10 6
0 10 -4 10 -10z m1270 -24 c0 -3 -4 -8 -10 -11 -5 -3 -10 -1 -10 4 0 6 5 11
10 11 6 0 10 -2 10 -4z m-30 -85 c-13 -24 -31 -37 -28 -19 3 11 27 37 36 38 1
0 -2 -9 -8 -19z m-33 -77 c-9 -9 -28 6 -21 18 4 6 10 6 17 -1 6 -6 8 -13 4
-17z m-1681 -3 c-4 -5 2 -7 13 -4 11 3 27 -4 40 -18 25 -27 26 -36 7 -36 -8 0
-12 6 -9 12 2 7 -3 15 -12 19 -22 8 -60 -35 -79 -90 -16 -46 -12 -62 4 -19 5
14 16 25 24 25 21 0 120 -70 150 -106 63 -77 103 -208 90 -296 -11 -71 -19
-76 -45 -30 -13 23 -30 42 -36 42 -7 0 -13 6 -13 13 0 7 -9 19 -19 27 -11 7
-18 17 -15 22 3 4 -4 8 -15 8 -11 0 -24 7 -29 16 -5 9 -11 15 -13 13 -2 -1
-41 16 -86 38 -102 51 -210 77 -303 71 -39 -2 -70 -1 -70 3 0 14 60 88 101
122 38 33 143 77 184 77 7 0 22 16 34 36 13 21 26 32 33 28 7 -4 8 -3 4 4 -12
19 3 32 35 32 17 0 28 -4 25 -9z m1658 -43 c-22 -44 -24 -45 -34 -28 -13 20
-12 33 0 25 9 -6 14 8 11 28 0 4 8 7 19 7 20 0 20 -1 4 -32z m-1624 -8 c0 -5
-7 -10 -16 -10 -8 0 -12 5 -9 10 3 6 10 10 16 10 5 0 9 -4 9 -10z m337 -32
c-3 -8 -6 -5 -6 6 -1 11 2 17 5 13 3 -3 4 -12 1 -19z m-302 -28 c-3 -5 -10
-10 -16 -10 -5 0 -9 5 -9 10 0 6 7 10 16 10 8 0 12 -4 9 -10z m55 -7 c0 -5 -5
-15 -10 -23 -8 -12 -10 -11 -10 8 0 12 5 22 10 22 6 0 10 -3 10 -7z m-550
-151 c0 -4 -20 -30 -45 -57 -29 -32 -44 -57 -41 -68 2 -10 -16 -60 -40 -112
-41 -86 -48 -95 -73 -95 -18 0 -46 17 -87 52 l-59 51 66 -69 c85 -88 92 -102
79 -156 -5 -24 -9 -68 -8 -98 1 -54 1 -54 8 18 11 98 17 120 38 126 21 7 206
-57 195 -67 -4 -4 7 -13 25 -19 17 -7 33 -21 36 -31 3 -13 10 -17 20 -14 9 4
21 -2 30 -15 8 -11 19 -17 25 -14 5 4 12 2 16 -4 7 -11 -73 -64 -122 -81 -55
-18 -170 -7 -228 21 -111 54 -185 166 -193 294 -5 85 7 133 50 205 35 57 105
114 162 130 39 12 146 14 146 3z m244 -58 c84 -22 202 -85 268 -144 96 -86
150 -175 118 -195 -5 -3 -17 9 -26 27 -26 51 -113 137 -184 183 -96 62 -191
97 -280 103 -52 3 -79 10 -87 21 -12 14 -12 14 -7 -1 4 -12 1 -18 -8 -18 -7 0
-14 9 -14 20 0 18 7 20 79 20 44 0 107 -7 141 -16z m-234 -14 c0 -11 -2 -20
-4 -20 -2 0 -6 9 -9 20 -3 11 -1 20 4 20 5 0 9 -9 9 -20z m-30 -10 c0 -5 -2
-10 -4 -10 -3 0 -8 5 -11 10 -3 6 -1 10 4 10 6 0 11 -4 11 -10z m282 -44 c62
-22 153 -71 188 -102 73 -63 122 -122 114 -135 -4 -8 -3 -9 4 -5 6 3 16 -3 22
-15 10 -17 7 -27 -15 -59 -34 -50 -116 -106 -178 -122 l-49 -13 -30 34 -30 33
51 29 c28 16 57 38 63 49 9 13 24 20 45 20 43 0 61 31 38 66 -8 13 -24 24 -35
24 -25 0 -51 -38 -44 -65 7 -29 -62 -91 -112 -101 -68 -13 -131 41 -164 139
-9 29 -9 42 -1 50 15 15 14 50 -1 65 -18 18 -46 14 -58 -7 -14 -27 -13 -29 13
-54 13 -12 31 -44 41 -71 10 -26 31 -63 47 -81 16 -18 29 -35 29 -38 0 -10
-72 -16 -94 -7 -32 12 -94 107 -117 179 -21 68 -25 145 -9 185 9 26 11 26 112
26 82 0 116 -5 170 -24z m-315 -84 c3 -103 6 -122 19 -122 7 0 16 -18 20 -45
4 -28 11 -45 20 -45 8 0 14 -5 14 -10 0 -21 -111 18 -147 52 -13 12 -23 32
-23 44 0 38 70 184 88 184 4 0 8 -26 9 -58z m688 -316 c48 -48 75 -117 75
-192 0 -58 -31 -154 -69 -213 -54 -83 -57 -83 -77 6 -15 71 -21 81 -63 118
-70 62 -102 96 -133 144 -33 53 -35 71 -8 71 37 0 127 41 166 75 21 19 45 34
52 35 7 0 32 -20 57 -44z m-451 12 c-6 -10 -4 -10 7 -2 15 12 89 15 89 4 0 -4
12 -20 28 -35 l27 -28 -56 5 c-30 2 -77 15 -104 28 -47 23 -48 25 -25 31 38
11 42 10 34 -3z m111 -90 c6 -5 10 -67 10 -143 l0 -134 -27 26 c-16 15 -28 23
-28 18 0 -4 -14 6 -30 24 -17 17 -35 31 -40 31 -6 0 -10 4 -10 8 0 5 -8 17
-18 28 -10 10 -24 34 -32 53 -13 32 -12 35 5 45 10 6 32 23 49 38 27 24 37 27
71 22 22 -3 45 -10 50 -16z m127 -223 c31 -44 70 -108 87 -143 27 -54 29 -63
16 -69 -17 -6 -186 5 -194 13 -2 2 -6 84 -8 181 l-4 178 23 -40 c13 -22 49
-76 80 -120z m-330 -41 c4 -44 11 -101 16 -128 7 -35 6 -59 -2 -84 l-12 -34
-32 32 c-58 57 -67 85 -67 195 0 65 5 108 13 123 l13 23 32 -24 c30 -23 33
-30 39 -103z m318 115 c0 -5 17 -36 38 -67 39 -57 71 -112 58 -101 -8 7 -116
171 -116 176 0 2 5 3 10 3 6 0 10 -5 10 -11z m122 -107 c9 -24 9 -44 0 -38 -5
3 -28 33 -52 68 l-44 63 44 -38 c25 -21 48 -46 52 -55z m-266 -59 c22 -14 27
-14 36 -2 8 11 9 10 4 -4 -3 -10 -6 -25 -6 -33 0 -8 -5 -14 -11 -14 -5 0 -8 4
-5 9 3 5 -7 17 -22 27 -37 24 -152 135 -152 147 0 5 29 -18 65 -52 36 -34 77
-69 91 -78z m-66 -4 c0 -3 -11 -16 -24 -29 -23 -20 -26 -21 -40 -7 -18 18 -21
37 -6 37 6 0 10 7 10 15 0 9 -6 12 -15 9 -10 -4 -15 0 -15 11 0 9 5 13 10 10
6 -3 10 1 10 9 0 9 -4 16 -10 16 -5 0 -10 7 -10 16 0 10 17 -3 45 -33 24 -26
44 -51 45 -54z m1871 -6 c-5 -10 -17 -27 -26 -38 -16 -19 -17 -19 -3 5 26 46
29 50 34 50 3 0 0 -8 -5 -17z m-11 -157 c-22 -69 -45 -128 -50 -131 -6 -4 -10
-14 -10 -24 0 -10 -6 -24 -14 -31 -8 -6 -12 -18 -9 -26 19 -50 -52 34 -86 103
-14 28 -14 33 3 33 22 0 126 100 166 158 19 28 36 49 38 48 2 -2 -15 -60 -38
-130z m-1740 94 c0 -11 -7 -20 -15 -20 -9 0 -12 -6 -8 -16 5 -13 2 -15 -15 -9
-12 3 -22 3 -22 -2 0 -5 -23 -26 -51 -47 -47 -35 -50 -36 -44 -14 13 43 41 73
95 100 30 15 56 28 58 28 1 0 2 -9 2 -20z m-180 0 c0 -5 -2 -10 -4 -10 -3 0
-8 5 -11 10 -3 6 -1 10 4 10 6 0 11 -4 11 -10z m1870 -33 c0 -2 -17 -19 -37
-38 l-38 -34 34 38 c33 34 41 42 41 34z m-1710 -81 c0 -2 -9 -6 -20 -9 -11 -3
-18 -1 -14 4 5 9 34 13 34 5z m-165 -16 c3 -6 -1 -7 -9 -4 -18 7 -21 14 -7 14
6 0 13 -4 16 -10z m205 -13 c0 -9 -17 -13 -52 -15 -69 -2 -42 23 30 27 12 0
22 -5 22 -12z m50 3 c-20 -13 -40 -13 -40 0 0 6 12 10 28 10 21 0 24 -2 12
-10z m-160 -4 c0 -7 -66 -46 -76 -46 -5 0 9 12 31 25 42 26 45 28 45 21z
m-153 -60 c2 -2 -14 -6 -37 -10 -26 -4 -51 -1 -72 9 -32 14 -31 14 36 10 38
-3 71 -7 73 -9z m99 -84 c6 -4 26 -36 44 -72 40 -79 95 -162 167 -253 38 -48
58 -84 69 -124 8 -31 13 -60 12 -65 -2 -5 -19 15 -38 44 -26 39 -50 61 -92 83
-107 57 -142 109 -172 257 -24 116 -21 151 10 130z m1810 -444 c-9 -12 -16
-19 -16 -15 0 11 24 47 28 42 2 -2 -3 -14 -12 -27z m-1550 -55 c-7 -7 -26 7
-26 19 0 6 6 6 15 -2 9 -7 13 -15 11 -17z m2005 -159 c35 -37 19 -36 -24 1
-26 22 -32 32 -19 28 11 -3 30 -16 43 -29z m-21 -19 c16 -17 21 -33 18 -61 -2
-20 -9 -39 -16 -42 -9 -3 -12 3 -10 14 2 12 -2 18 -10 16 -8 -1 -11 2 -7 8 9
14 -25 41 -42 35 -7 -2 -13 3 -13 12 0 13 -2 13 -16 2 -14 -12 -16 -11 -13 6
5 23 43 45 69 38 10 -3 28 -15 40 -28z m-2383 -45 c5 -23 6 -22 18 15 13 40
13 40 14 9 1 -21 -8 -42 -29 -65 -16 -19 -30 -37 -30 -41 0 -5 -5 -8 -11 -8
-13 0 -5 79 14 125 10 25 12 27 15 10 1 -11 5 -31 9 -45z m649 2 c1 -9 5 -28
9 -42 4 -17 0 -13 -15 13 -11 21 -18 42 -14 48 8 13 17 4 20 -19z m1653 -27
c29 -14 47 -50 31 -60 -5 -3 -14 3 -19 14 -6 10 -25 24 -43 30 -26 9 -30 14
-18 21 19 12 16 13 49 -5z m-809 -675 c29 -29 27 -84 -5 -115 -32 -33 -59 -34
-49 -2 4 12 7 29 8 37 1 8 6 19 11 23 6 6 5 10 -4 14 -10 4 -11 7 -1 13 8 5
10 15 6 26 -5 14 -9 15 -15 5 -7 -10 -10 -9 -14 3 -9 24 38 21 63 -4z m-82
-30 c3 -38 -18 -77 -37 -66 -8 5 -8 13 0 28 6 11 8 34 5 50 -5 24 -3 29 12 26
11 -2 18 -14 20 -38z m142 -42 c0 -9 -4 -20 -10 -23 -6 -4 -10 9 -10 32 0 28
3 34 10 23 5 -8 10 -23 10 -32z m-888 -53 c10 -19 10 -19 -8 -3 -10 9 -27 32
-37 50 l-18 33 26 -30 c14 -16 31 -39 37 -50z"/>
<path d="M1515 3970 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
-7 -4 -4 -10z"/>
<path d="M1500 3940 c0 -5 5 -10 10 -10 6 0 10 5 10 10 0 6 -4 10 -10 10 -5 0
-10 -4 -10 -10z"/>
<path d="M1485 3910 c4 -6 11 -8 16 -5 14 9 11 15 -7 15 -8 0 -12 -5 -9 -10z"/>
<path d="M1897 3483 c-44 -47 -70 -119 -75 -211 -8 -148 32 -279 125 -410 102
-143 147 -180 371 -304 70 -39 146 -86 170 -105 l42 -34 0 63 c0 78 -18 147
-60 229 -48 96 -100 160 -250 309 -201 201 -265 298 -277 425 -3 36 -9 65 -13
65 -3 0 -18 -12 -33 -27z m30 -325 c-3 -8 -6 -5 -6 6 -1 11 2 17 5 13 3 -3 4
-12 1 -19z m72 -185 c12 -24 19 -43 16 -43 -13 0 -86 176 -84 204 0 6 11 -18
23 -54 13 -36 33 -84 45 -107z m130 -173 c36 -36 82 -78 101 -94 25 -20 22
-18 -12 5 -56 38 -169 153 -187 189 -10 20 -8 19 10 -5 13 -16 52 -59 88 -95z
m226 -175 c33 -24 71 -56 85 -71 17 -20 12 -17 -17 8 -23 21 -67 54 -98 74
-30 20 -55 39 -55 41 0 6 17 -5 85 -52z"/>
<path d="M2890 3455 c0 -8 -20 -37 -44 -64 -60 -68 -64 -102 -32 -316 35 -241
39 -285 28 -332 -22 -99 29 -4 87 161 46 130 63 211 64 311 1 82 -1 94 -27
140 -16 28 -36 64 -45 82 -17 34 -31 43 -31 18z"/>
<path d="M2520 2992 c-62 -63 -65 -190 -5 -259 26 -31 43 -27 26 5 -22 41 -14
52 37 52 40 0 53 5 77 30 50 52 36 154 -27 186 -42 22 -76 17 -108 -14z"/>
<path d="M3006 2820 c-34 -41 -36 -102 -4 -125 20 -13 21 -18 10 -36 -24 -39
-3 -32 42 12 52 52 68 106 45 148 -22 39 -60 39 -93 1z"/>
<path d="M2760 2411 c41 -4 82 -11 90 -15 12 -7 13 -7 2 5 -8 9 -39 14 -90 15
l-77 2 75 -7z"/>
<path d="M2375 2179 c-20 -31 168 -160 255 -175 29 -5 25 -1 -26 24 -34 17
-92 59 -131 96 -71 66 -86 75 -98 55z"/>
<path d="M3055 2070 c-3 -6 1 -7 9 -4 18 7 21 14 7 14 -6 0 -13 -4 -16 -10z"/>
<path d="M2275 2010 c-11 -18 14 -38 71 -60 63 -23 203 -41 242 -31 23 6 18 9
-29 13 -30 4 -104 25 -164 47 -125 47 -112 44 -120 31z"/>
<path d="M2535 1843 c-32 -12 -66 -14 -162 -9 -122 6 -163 -3 -108 -24 59 -22
205 -7 289 31 50 21 36 23 -19 2z"/>
<path d="M2681 1504 c-35 -14 -100 -31 -145 -38 -57 -10 -71 -15 -46 -16 39
-3 35 -3 108 16 29 8 61 14 72 14 10 0 20 5 22 11 2 6 16 12 31 12 15 1 27 8
27 15 0 6 -1 12 -2 11 -2 0 -32 -11 -67 -25z"/>
<path d="M1985 4090 c-3 -5 -2 -10 3 -10 5 0 13 -10 19 -22 6 -15 12 -18 17
-10 4 7 2 12 -3 12 -6 0 -11 9 -11 20 0 21 -15 27 -25 10z"/>
<path d="M1945 3990 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
-8 -4 -11 -10z"/>
<path d="M1581 954 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z"/>
<path d="M3291 912 c-8 -19 -31 -40 -62 -56 -27 -15 -49 -29 -49 -31 0 -9 49
4 74 20 26 17 63 81 53 91 -2 3 -10 -8 -16 -24z"/>
<path d="M1571 914 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 21 KiB

@ -1,11 +0,0 @@
/*
Localizable.strings
ArkitDoushiQi
Created by Louis DUFOUR on 28/05/2024.
*/
"ParametersTitle" = "Parameters";
"DarkModeDescription" = "Dark Mode";
"LanguagePickerTitle" = "Language";

@ -1,11 +0,0 @@
/*
Localizable.strings
ArkitDoushiQi
Created by Louis DUFOUR on 28/05/2024.
*/
"ParametersTitle" = "Paramètres";
"DarkModeDescription" = "Mode sombre";
"LanguagePickerTitle" = "Langue";
Loading…
Cancel
Save