From 2987b3008d967c1084e4d450a9a85b37236030b1 Mon Sep 17 00:00:00 2001 From: NaggaDIM Date: Mon, 16 Dec 2024 00:38:18 +0300 Subject: [PATCH] Initial commit --- .gitignore | 43 ++ .metadata | 33 + README.md | 16 + analysis_options.yaml | 28 + android/.gitignore | 13 + android/app/build.gradle | 82 +++ android/app/src/debug/AndroidManifest.xml | 7 + android/app/src/main/AndroidManifest.xml | 44 ++ .../reverse_nn/reverse_nn/MainActivity.kt | 5 + .../res/drawable-v21/launch_background.xml | 12 + .../main/res/drawable/launch_background.xml | 12 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 544 bytes .../main/res/mipmap-hdpi/launcher_icon.png | Bin 0 -> 2028 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 442 bytes .../main/res/mipmap-mdpi/launcher_icon.png | Bin 0 -> 1207 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 721 bytes .../main/res/mipmap-xhdpi/launcher_icon.png | Bin 0 -> 3133 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 1031 bytes .../main/res/mipmap-xxhdpi/launcher_icon.png | Bin 0 -> 5422 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 1443 bytes .../main/res/mipmap-xxxhdpi/launcher_icon.png | Bin 0 -> 7867 bytes .../app/src/main/res/values-night/styles.xml | 18 + android/app/src/main/res/values/styles.xml | 18 + android/app/src/profile/AndroidManifest.xml | 7 + android/build.gradle | 18 + android/gradle.properties | 3 + .../gradle/wrapper/gradle-wrapper.properties | 5 + android/settings.gradle | 26 + assets/icon/icon.png | Bin 0 -> 2911 bytes assets/schedule.json | 67 ++ ios/.gitignore | 34 + ios/Flutter/AppFrameworkInfo.plist | 26 + ios/Flutter/Debug.xcconfig | 1 + ios/Flutter/Release.xcconfig | 1 + ios/Runner.xcodeproj/project.pbxproj | 616 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 98 +++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 122 ++++ .../Icon-App-1024x1024@1x.png | Bin 0 -> 76761 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 463 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 948 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 1605 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 683 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 1537 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 2692 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 948 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 2382 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 4224 bytes .../AppIcon.appiconset/Icon-App-50x50@1x.png | Bin 0 -> 1260 bytes .../AppIcon.appiconset/Icon-App-50x50@2x.png | Bin 0 -> 3324 bytes .../AppIcon.appiconset/Icon-App-57x57@1x.png | Bin 0 -> 1517 bytes .../AppIcon.appiconset/Icon-App-57x57@2x.png | Bin 0 -> 3947 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 4224 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 7315 bytes .../AppIcon.appiconset/Icon-App-72x72@1x.png | Bin 0 -> 2028 bytes .../AppIcon.appiconset/Icon-App-72x72@2x.png | Bin 0 -> 5422 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 2220 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 5821 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 6581 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + ios/Runner/Base.lproj/LaunchScreen.storyboard | 37 ++ ios/Runner/Base.lproj/Main.storyboard | 26 + ios/Runner/Info.plist | 49 ++ ios/Runner/Runner-Bridging-Header.h | 1 + ios/RunnerTests/RunnerTests.swift | 12 + lib/application.dart | 27 + .../controllers/application_controller.dart | 19 + .../controllers/home_controller.dart | 5 + .../controllers/schedule_controller.dart | 14 + lib/application/services/schedule.dart | 132 ++++ lib/enums/direction.dart | 11 + lib/enums/schedule.dart | 67 ++ lib/main.dart | 6 + lib/pages/home_page.dart | 18 + .../components/current_status_component.dart | 47 ++ lib/ui/components/grid_menu_item.dart | 33 + lib/ui/layouts/application_layout.dart | 26 + lib/ui/screens/home_screen.dart | 48 ++ lib/utils/scheduler.dart | 36 + lib/widgets/loader_widget.dart | 16 + lib/widgets/schedule_element_widget.dart | 94 +++ lib/widgets/schedule_widget.dart | 45 ++ pubspec.lock | 357 ++++++++++ pubspec.yaml | 101 +++ test/widget_test.dart | 30 + 95 files changed, 2699 insertions(+) create mode 100644 .gitignore create mode 100644 .metadata create mode 100644 README.md create mode 100644 analysis_options.yaml create mode 100644 android/.gitignore create mode 100644 android/app/build.gradle create mode 100644 android/app/src/debug/AndroidManifest.xml create mode 100644 android/app/src/main/AndroidManifest.xml create mode 100644 android/app/src/main/kotlin/ru/naggadim/reverse_nn/reverse_nn/MainActivity.kt create mode 100644 android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 android/app/src/main/res/drawable/launch_background.xml create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-hdpi/launcher_icon.png create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-mdpi/launcher_icon.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/launcher_icon.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png create mode 100644 android/app/src/main/res/values-night/styles.xml create mode 100644 android/app/src/main/res/values/styles.xml create mode 100644 android/app/src/profile/AndroidManifest.xml create mode 100644 android/build.gradle create mode 100644 android/gradle.properties create mode 100644 android/gradle/wrapper/gradle-wrapper.properties create mode 100644 android/settings.gradle create mode 100644 assets/icon/icon.png create mode 100644 assets/schedule.json create mode 100644 ios/.gitignore create mode 100644 ios/Flutter/AppFrameworkInfo.plist create mode 100644 ios/Flutter/Debug.xcconfig create mode 100644 ios/Flutter/Release.xcconfig create mode 100644 ios/Runner.xcodeproj/project.pbxproj create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner/AppDelegate.swift create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 ios/Runner/Base.lproj/Main.storyboard create mode 100644 ios/Runner/Info.plist create mode 100644 ios/Runner/Runner-Bridging-Header.h create mode 100644 ios/RunnerTests/RunnerTests.swift create mode 100644 lib/application.dart create mode 100644 lib/application/controllers/application_controller.dart create mode 100644 lib/application/controllers/home_controller.dart create mode 100644 lib/application/controllers/schedule_controller.dart create mode 100644 lib/application/services/schedule.dart create mode 100644 lib/enums/direction.dart create mode 100644 lib/enums/schedule.dart create mode 100644 lib/main.dart create mode 100644 lib/pages/home_page.dart create mode 100644 lib/ui/components/current_status_component.dart create mode 100644 lib/ui/components/grid_menu_item.dart create mode 100644 lib/ui/layouts/application_layout.dart create mode 100644 lib/ui/screens/home_screen.dart create mode 100644 lib/utils/scheduler.dart create mode 100644 lib/widgets/loader_widget.dart create mode 100644 lib/widgets/schedule_element_widget.dart create mode 100644 lib/widgets/schedule_widget.dart create mode 100644 pubspec.lock create mode 100644 pubspec.yaml create mode 100644 test/widget_test.dart diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..29a3a50 --- /dev/null +++ b/.gitignore @@ -0,0 +1,43 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.pub-cache/ +.pub/ +/build/ + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/.metadata b/.metadata new file mode 100644 index 0000000..d545b0b --- /dev/null +++ b/.metadata @@ -0,0 +1,33 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: "300451adae589accbece3490f4396f10bdf15e6e" + channel: "stable" + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 300451adae589accbece3490f4396f10bdf15e6e + base_revision: 300451adae589accbece3490f4396f10bdf15e6e + - platform: android + create_revision: 300451adae589accbece3490f4396f10bdf15e6e + base_revision: 300451adae589accbece3490f4396f10bdf15e6e + - platform: ios + create_revision: 300451adae589accbece3490f4396f10bdf15e6e + base_revision: 300451adae589accbece3490f4396f10bdf15e6e + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/README.md b/README.md new file mode 100644 index 0000000..23024ea --- /dev/null +++ b/README.md @@ -0,0 +1,16 @@ +# reverse_nn + +A new Flutter project. + +## Getting Started + +This project is a starting point for a Flutter application. + +A few resources to get you started if this is your first Flutter project: + +- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) +- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) + +For help getting started with Flutter development, view the +[online documentation](https://docs.flutter.dev/), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/analysis_options.yaml b/analysis_options.yaml new file mode 100644 index 0000000..0d29021 --- /dev/null +++ b/analysis_options.yaml @@ -0,0 +1,28 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at https://dart.dev/lints. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/android/.gitignore b/android/.gitignore new file mode 100644 index 0000000..6f56801 --- /dev/null +++ b/android/.gitignore @@ -0,0 +1,13 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +key.properties +**/*.keystore +**/*.jks diff --git a/android/app/build.gradle b/android/app/build.gradle new file mode 100644 index 0000000..23a8d9d --- /dev/null +++ b/android/app/build.gradle @@ -0,0 +1,82 @@ +plugins { + id "com.android.application" + id "kotlin-android" + id "dev.flutter.flutter-gradle-plugin" +} + +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +def keystoreProperties = new Properties() +def keystorePropertiesFile = rootProject.file('key.properties') +if (keystorePropertiesFile.exists()) { + keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) +} + +android { + namespace "ru.naggadim.reverse_nn.reverse_nn" + compileSdk flutter.compileSdkVersion + ndkVersion flutter.ndkVersion + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId "ru.naggadim.reverse_nn.reverse_nn" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. + minSdkVersion flutter.minSdkVersion + targetSdkVersion flutter.targetSdkVersion + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + } + + signingConfigs { + release { + keyAlias keystoreProperties['keyAlias'] + keyPassword keystoreProperties['keyPassword'] + storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null + storePassword keystoreProperties['storePassword'] + } + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig signingConfigs.release + } + } +} + +flutter { + source '../..' +} + +dependencies {} diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..399f698 --- /dev/null +++ b/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..fbe2d04 --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/kotlin/ru/naggadim/reverse_nn/reverse_nn/MainActivity.kt b/android/app/src/main/kotlin/ru/naggadim/reverse_nn/reverse_nn/MainActivity.kt new file mode 100644 index 0000000..641b963 --- /dev/null +++ b/android/app/src/main/kotlin/ru/naggadim/reverse_nn/reverse_nn/MainActivity.kt @@ -0,0 +1,5 @@ +package ru.naggadim.reverse_nn.reverse_nn + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 0000000..f74085f --- /dev/null +++ b/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 0000000..304732f --- /dev/null +++ b/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..db77bb4b7b0906d62b1847e87f15cdcacf6a4f29 GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-hdpi/launcher_icon.png b/android/app/src/main/res/mipmap-hdpi/launcher_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4f9ad065d76eb7895edfc34fc0d03ac461822aaf GIT binary patch literal 2028 zcmV-P)3(R6#mZKd0j-QqDWnW)P+J!2x9!9i4ja(K&les4^0%6RYSlf7_Fd* zq9}rKjD0w@GTD!4BMBqmxUP-)B7_vSduy|=Fq1f(;xkN7ot>wPnG z?m6?#*(zBvga2+&yLJgkk|;VbKxCiT{85iel$Nptp>Yo~B~h;`Hs9;-^b@oDK}Rq8 z7@?P{*Gh`b!W$czw2t&sCPQUqMvTU0Oqqi(zs12U6^m2?$T4?4m2Vr!chyiPgNh1j zXn?G*M^%*;mF6$zho)0glU8P`tIn@9wvXDxuxu60Tg(flp;sj<1zD1zNKivFCeFa# z98@Mx5@VAcwBTb!x>}=+b>GvCBe8igiHIc$v#F-dK|`aKs;!bbyHthX2)}H>=NmDg z8qzWf)_w!k$&Kz95n+2hF7KlWUJJ^svX(JB|DHM`*ccyYbLO=ig53(w01MkT?8(TFDBpjR=P0-QJz!ZZa99=^5f&FW*`X@C{Y{^YL(gN znYFZaJAbyx#DDg_x?g%)1IOnW!Ph;r66hd_4&aGV^wa~!$)Q+biE1oqL;`QWfT3gX z^;Rg69O3@9Tq`TGmqBfyLoIyi#Z)`S=!o)1WpWX^evTqkp2@4<78eiU9s4Mk^Due- zG9;zicZX&>ZGp|!s_uzT-r$TxTd^p$isVyKR)#4LV#Fk-GEa9lflRGCUc~VaZZ?XR zO6|sT&r@YL7UFPMQR}^P`n>06UQ;LLeZX9D+*2P0(%*hH3W*e+dKg2lHmg>O^G(sw z2DxOBom44nmMmsY!ta05ryH2b-yZWJ6$>V1+%xLi6W3merRyLCa*FhEJfOFuK~QTB z%mq$Zy@~c7F#divi@}3<>1v`b-n?)x8Y3HhYkJ2w+xVK{?lVmx7qfEBIlKaIy;)E_~=HNGFoz;G>04MTL{y6i+_u@G2}ME_ zB-r8%zWwn09yTkisCge=n-5vWS$_>(eoT?ll4M3~{t44&^W?Fv-dE_*xCFk-;71WD zg+F(5&HYs0%q)C%ezaFG!M1JA`Yc8^O%|niZZ2-Uj{9AtMI)!8y!g_+wk^C$2_c@H zg}SY2=Z9~N9rt+7b~uUWT*)%aGu^+cTLM!I**=N9203DsX`j}}XR5X7HMm`Bs%S`9?SKOER#Vc>4Y9dki zVH*z}M{C|fhFr-nHbRHy{iuC~M7fdBy!U#D71nvYjp~*tY2$a8It!EUC#^(nZ*k&C z;g6lTc`WbTLn>{mqPD+nHzd60_Y${*wJ@c4elBVTp?@D&S2BjEEpzH@s@rCFWvhQt@{=0e}-~WvERn2!=P=JD&#HH5}K}3hww=w8UK$`d;5(#3(})YT6ZR3 zTfzxK+Mg9yjyQIyPVK^putg{yx4zI`L6YokSB~rzustSA{j}oK9UmezDR?{VB3#OnXvTe z9j2Q(r*%c+M&jj(#=p@Xfb4!2?`c9sSM=A@EB{4+@^Y%a0R5|t z5vm-Qlt7l3oA%t@yIp4*U(tuI=!;^ixW@?;gQiCFUPliV75E3}O!iZ;>lWGo0000< KMNUMnLSTYWQqx!f literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..17987b79bb8a35cc66c3c1fd44f5a5526c1b78be GIT binary patch literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx&nMcT!A!W`0S9QKQy;}1Cl^CgaH=;G9cpY;r$Q>i*pfB zP2drbID<_#qf;rPZx^FqH)F_D#*k@@q03KywUtLX8Ua?`H+NMzkczFPK3lFz@i_kW%1NOn0|D2I9n9wzH8m|-tHjsw|9>@K=iMBhxvkv6m8Y-l zytQ?X=U+MF$@3 zt`~i=@j|6y)RWMK--}M|=T`o&^Ni>IoWKHEbBXz7?A@mgWoL>!*SXo`SZH-*HSdS+ yn*9;$7;m`l>wYBC5bq;=U}IMqLzqbYCidGC!)_gkIk_C@Up{yhsZiJg=ScnO`TI?Sh zSm`cB!um%_M&;%|T9kk6f?|J^AVgY!w5%eoKhluIKZLe?SKJ@(&T(e$eQ)0`E9}gy z&pqs$y>s84xt}?6&Y3gwgp@Ly<=g-TDFT?F%2EoOk{BH2s64|W3^Cy$3MQiK0(YJV zOID9iDXAFKDr9Xn34vQ7L|-4u%J@JBz1xC;NW&WHk`bAAF{qJ-81$$4EUkCdA#=b?; znU5KpjwtUiZbB3fhy@pP`f%K4S9F07w1UVODTZo7JW# z=15XlPR;}!Se&ON2|k&GN;>`rzC8*~4Ijg3fgIN|<3?>Ac>Y&Y5y*{t_oT z4TLMr7yv2jyPn0KL#STBpR_>+z6+xF(qZg*_d$IA9m!y%O_38&;poD?1JmSYFBMna zBp!y!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..60c2fe49d2cabaf92a874c6519c93a9bb8ceb494 GIT binary patch literal 3133 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..db7157c49da1b220e02bc5e24efee3faa1e543b2 GIT binary patch literal 5422 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 YKNZLD%5ULS4FCWD07*qoM6N<$g1pC9?*IS* literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6372eebdb28e45604e46eeda8dd24651419bc0 GIT binary patch literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..eabcb0235022e99f91f2c9f53321030c238df768 GIT binary patch literal 7867 zcmV;s9z@}ZP)Y3YDulO4Q;YWdcSH+ACkIT`t^6e@3Xkg zIXEOL6|An#<*(_^mK}!L-oP2>hFIdjj z9HkPwaX8{yjvFL<{O{y)l!xC%BeviT?khObflC4v*RZlGL=37nHw`AZ zpcE5HptT}OMX@2vSjc2ySuiAZY%Y(%qT~#B|6|-Qp_F7}OiQNtgL^WH_>jxP%Ai;j z9Ac|$s8msC0W)C<*;6Tt$1IycCd0E?artRSE@fAhW3`CIB`mFCc@@>FAfWS-`z{)B zg(n#to5X;@U>dxTLwkX>xAN8&qK+XYjbW175>iI|E0swURWhW%thF_v!eAL>9Az@{ zaPoLcGm7n|W^wg4Zr#J^10vH}$>osx3}Nx4WlwD2T|8TA5kV9|fYvM@*p35(IJyt} z23bB!FL75F2?ZsXBs7}f0BJ2@11&8H16#0%3w|+HW5(ujT!xHPy0 zPXy0+NvShQpssFuO4&W!x&B)3R{>FI!>B94rwDP;&aY4UT6eeb#+l4 zhfBx?12*07?!~^n__treI)y@B5=ibMI3y&FFlLrlAnYG9qD@13Wzql^$C+DXlaKMo zkMKX|aAOS1LdWG`NaNUX?V_Qn6FbyhGG2ROwT$}@@rS=+avHxni-UvM-tAb{$}qC4 zq{}SE+{d=#LJ9VKc?}vgl|@?;M#5c{x4)TlU}rlK(_04HT1c>kD>?-#`5?@);c6i(D2N)7d~p3N6JZ<VS z0)*X@B_-#N`e>vFDn%-s_KJpa6Fkh3ALnanEAt!bp8U~`nKGN2QL6;6lxwqSlwPe%$<48;U0UJd6! zgA$0~Ng$Q`V%m;QHJm)WiX1Z37kW7as(E7mAQN-{OD$3_fLSef9-WJ*lR(}!t|zaN zVtD4TP)Cezbz4LbC;*mj4y9G_M4-NQP$G&zkrhAd=fYx*&@UwPH4RyWpdnFbLq`$F z+s3n?Q!9od)}f>o{t%BJ9)WaCY7pFsggFLeN>54SukEhbu}ih^W?#ksdiHEQ`+!l_g9G91%SYHMCXM*%}SX$hvmFgDI7=fE<;9`b%&k>@34 zER$c?;{HeLZklvBAupm(1wAe7)KPSIQO(qcpJIB7iZi(mt9o#&fWk&JZ{V$^1Dscx z&{v(^c zSFw9LOonT>*xiS?@*URZrAZVHbEKM0=^)T1!I_XZ-5q%MG=B60^mHO4D}GPCLUk|; zE0|qEWyA9Dl)=)c!dX#JWy16s+{KR{CdM4uiLrGl6{52#*>?4eZ4 zof^Uth^4cH-T;JsvxZj>;Fs^<<%4n!6r(i-0v)Z`KZqZnMx~6YNfb+NfH8$9st#7@ zBqTHY-uN3Sza2&NwDDa-IQ=S4zkEk4X)LJHkIUTmD!m_q-V2G8P2M4euGV6hY{a=Pp`+S_nsKTf{F-a1ZgZV<6v9LhNC>cEMYFfoIXF@EI+mLH-f zfYM5#^=hIM49E20)LCnwAOCcglvh4aac3S;w@FaU5{~_`{rJ~k&|16k8I)|;JhBI1 zS`ap((*P!GdwCUElkMGwlP`1Ox9{1_O#>cz{3K#-f|+*Y=8pOFt$7L&ojJkR*6?H=a|<%R zk=8Vs6;fa|mCh4UM^;yDNR8O46!qEJ!w(PR2g2<-h_(VVm7k?G(N z69l?9j%;B%I7BL>1M$H4ZEp9CA=gw!>zEKzsV}gA+LQG7b(q>*Wkt zLgp_|sJEt>YURc;*iX%J?oMEF8MBX35e!nzOnkcs_VqqQvQQU^_J7rciDmg~uuEvm zp|cBby@6l7L-}@i^7bk9cUu8(zfO%NC#EnuPL4eZbR+ttCAF^Fa)ql?j_8gz@Ee73 zHj4tbu;aJ)cJX5eaq3kjeDbX9F2UG(2~u8@N&yo)pJRvjU}=R6YN5#HZ_>fJ;q4av zG2$MycFuYTzP}Nt zhPmBpRSdSPowztQj+^&z`yR$0yG|LT6&V?4Oa!qchnQyr1;0(qzgq}Q8pzcO`r7f6 z)A+~NF}zbgW5eq)8pOs|SeZ=X2-%E`4821ANq_&}7@wdbM&YMbk&4P8i~HNobLYl< zk79;8znw%&g$fIYc2U0K%n9Lkam#=+CMH@{2bB=>p7rF3vJ;7gTpEr8+xeN-Fm|89 zLJwvrO=hSX>WGgO_sF#p*lL|KuZu)G7E=7bqSI+qI_EaaTR5_h{PvSCV@HqEbYf%6 zhrz-we-+E*j+@uXd<#iQP1zXO!QXhYq=ty1dZv0K#=N+d{PqgA_wfCLl&?5`2;H5vNf7IXomt&o zCnR6X$p67()36JdLF*Y&9#>V-BNz5$L z#3SAyO%`iJ8PN@+BQb!g`4YePt`@v@6mPypMX07bZO_p*t~Pm!*}z^|YaRTKy3&l? z<{ho9s~wMKAlUQqIr7Vp@ogK^lN*Hu8PTfFumZzIX9o@+z%Sm$i6iv9oY6_Eb85ET zx(S@8hOePEy@O1s+BSqSB#ieb%a~fg{1S>~w`M3oh%WiLOiHkW}TahM&w=xApnqtu&0c=gi@oY(Cfcf^@M z^{CQV;ht`4tnu?R*xBbqeVlmoM!}zT5$XE7Pa0vJuOyvtaa;3v=M5?vSz5)?Ev(2% z$9Q%_{)K}TAARim-SVI$P*TNasL%l6;oTV6NfGC{CsZy7Wf-}_L#Q*$qztIIwE1jU z*lgmxrF`){E?0;aYb91HkqNJ|9o+j1E=at42ZnZIVun3D&tr9pu9K5*mn0MHsn|4wxT_7j`#?j{pW+RppIj?pa+bzv3BC$yQkcLU zlckFATk_O~&Ee8@%uJ)b;LIj+9eBCqqKaw> z+k4rbVf^qE`nvp?QU~>-C~{zkx8v*r|MDuXjj&s{xtW#jx?AAj6rGtAkA65qwf7Y! zr-&v+{2*2mD8gj+?$H&IGhip@`P3{fmSq~%-9pJKTJ}|ey^6g zb{%*5|J))j-@r$o;>&X|3RGGz*b|s@q$>6^vUcWavbeE8j0m(5ys)BRQZ|slR9B58 zkSTkw=H%rxn|n9+?PzGaMH51i2g@^e(5x37Vv+gS#2`jS^rqlMd7|nJWsq8Sg_P5% z{XKqyLLpoYzmDh6+_D&E%K5XFT&ig+S;hTH_#~+>$w-t0S`VR=@fMF1uGPCHoG*2-5+HguMqLPcBN6meC#4qEba<2|4ka$R*AO*R zm~Bub_{={kwsEE{aY&5{dv4%qR9rPA&5hUio}ndBv)D)>CL9TJ<2C+2pe2w-Q_uuz z7HPJip^fM*L7F+FCD0Z?8_`Jd8E6)1W)HLk(r6NzKpIU!6G)>eSP5=j69$jC_goI2 zCM3O_qfvLP=kcwReI^?qtt#w!h>KK;pfnMvZZXhSUGp>tLefN_=L202q@nTb&;-(G z3Obdc(GVm6}Rej0JvOPK$|zfz|$QecFM;uFB3psYLoz z*z-VQ#r4L}1lj_mm_M388qGlyNTVre0%Kfi#+e zCXhx`&;-(G3YtI~O+gb#qbX5PSG8W$jq4V;Z^J~@FD98lq3cNxWm_QT ztlxI}0H_z6dnZoo!)5ZB{x|5Ts>Y#KACu5@Ymx}$ULx+6nEI|6Q*{Nl*Ou4ejVzjL zx~YadCX+Y1WBa;OB$PKEl0+Z@TZsT(cDo(8>Ozo;3&BtYFTpOMS~hsq*=JL&TN*>W zQMJs(F;N6Joo7&2Vr5t)|Lg=QFNH)9h&exfZnN$V^mOu`HsrIcDk;L;)*N(4TRl-WQpfBhIgb&T!m!)j4pKf}>lhP<4DRh{kV@4;Zd-1}L@k5@3>*Nro;j}SX`hFfJ|~sqPP(#RC4QonlYiI7FIAl#|tgk zH-L;qm(x%yl$c``*&MkH3VF1(Hv3r=_r#%w`qA5sV#%@4mHorydkJk;F5~_r=9d#F zeh@zb)q}f>*bE_UFg=f3_u0}4T3fgfLb)s>Z9>Qz9!4MH{uCDk;s#HWA0K}LL0UiZe`cao;xjY&%crob?AK=@IApp`b-;Vy z(rXyfM;>*Awi06LlA^y5KLYtl?i(HZc}h-4v2So?XP< zql#x%*7)NET)d8t&f)F^)~cjlg#eV>B#J_DB~YV_z@o>QEuSbZ%=PsgZan=IcPG-M~m=LIu?a|nlsDf8)eD?tF zeF)1yZx?SX2nU`yNd_f|>Ly^+J6!%ZsBQ0)V_u?Ey;!x`+!K6zhZN}LTPWI;D0|wk z8zaPoK=o^6T^{h@Gb-fcSjrZ^H-$%!*76ak_uU1LXMnXsO@48{YSC~Dc9 z3A?9U!NVzB93f9|Viw3s{sg*6CyGz8AyD{IM=6BxGbZCzl#2N33JNXw-C499q%kY( zdCVkWq#LU?X6Et17x?>^SXdNlOPW4O)Lb57LZHn|eUBQ#L}rhT8+V0x;0Jb-BJ1x% z&VU>@6Yu$3ao9kQE4`+FKK5t1lkRz}TSjCpGX zE)!rz9*avD9mR*|k;&j^XOQi5Vvk!jl*ox3a&o)g{{+`>QXGMsbSCYn5eP9quK|Qx z+->HU_o5@1FB3obvW@u_T)GZnM-T79;XUZ-q!&rWctOQlT2_x4^QfZo)v1FQmq%TYx~~v0>DHb&1K^P+Cd` z`o?GRw=a;*@PX~P^`v=H1Q=ws2Q$~TW?h6am z4$Zw}seF2QjgOAA^H=fyr@SP1YRR%g&r)tse-d{%3X0dMFzyD#5~#nWKrNRratHtM zC;axTaLQnro0)wX5wBF@xm?BFhxo$>`06T(s-$(RCuzRmh;H*6?}>$tVu13J3)AHO z1pDxF4DG<4-PqZS_JUXJvH5qPnx1lnk5A*uO-i=k9Aj1PR`YZJXGmrS!$Z{A@9+Op zd@pcfKUpjnasNI(y?{aiKR<)^AxGRc=1|}Tj~+|QbdV3f!025pt-#DVxiJ4eDl(qf za~d5;Oy;+B!_UI2=ag^|iY%AKKp)y#m~hInR(K^B>N9UXw{&_|#tbju(g@YjmdS4q zWXRw%gaQXzH%SsZ#3T~kG`v+>woJ&g0>&n>vO=ZPT^%@i3|W(2A_pQo&AE2Lxf?nX z|L#1*XP5BBMcllLYKE+zz}VD;E3O(G0tI}9xc@SuKEFTbssw{Dh89=x`8UXCv8@w( zccH!2_3FLqFkehjsX2oQw~H-2!581)Z|5j3P>y(y2GS*ooN6F};?AK+c(#bjW0+Lu zb@4i-T#xKSYYRHsWJaI!U;xZtBu_8RFS1+rxM1EV7v(Aoi#@f+nxNC$fIvz7t%M=% zp;8576L{}`De*bjPhP!YL_1})^30~CURQ79KmUsBw^6D1{Pr}Qu_!nM3K)3_J{Q3% zFewe&^l_qmGkvy_p<9TI`kI%4+-%_FK^nxt%@fZ1TC|43Bcs!)V zh^~iXg^{7;!_*WmT*ZHN<7aPCbdmFb5aQCG66W=z8T{!JeEK!U$5F9hWCMPCI+0!i zDX27ArHZ@b_~3JF@8&ytXti=7&wNfhE0-}dhs!td@p+7lVztVc=@uMqQv4(osV9(h z%8Wc7EnwF1(qy*nL>I-aRH8Cx;kTc^fT<@G1)vr1s(C|t?H@wg38cWK zJyd1*<`(iT^{0R5P=~eRES=#L$KT=Gf`kWN0Ccd(Y%OmJ4uvZUZ#}bL0FR!w5m#96Itpbgk zJX$)CVgl9Kzrt!ZEfP61v$%SbT55E45`ivV!{ihtyo8Rkwc!&)stM%4Cp=VWvBGIh z;Aa<+&(rqM@#Qt=8R4CwB~YT7a@XCD6ccEjx_8N& zl9ze)=PSZ@*FReFQMWG40SiBuvJ=GRg0k8&OYX~hrR-F!kGiqnS~UCMFK*T+CK4N| zFn!t-(k*q?VL=^%>f0D-4r#E4KOrkb5EkyOl=dH=#`>^$t)iuFQG$ks1mg`Akza** zQL=_>yEPJvjaCG3cr9kRZwF=tcXE0LAgZtX7JX8U7Z2;3xn3N{AJuSKRNtM$=_^$i zJkv-cys<+DqqUc2sF_k-cMfDMZmIDk+##IiP)gx9i8*z;ZOPKAmEb~xpae1vaWC&meF_$FmL=B@u9nodP~YNj}Dv$Q`KsXA{}k)*a51g>gnMt z6|9wI|3JnxhtdLHGF`T6)g6-SF+gr9R7eGmlv=y*_5Qp}${d;J^ z@7f#Y+$~JZm@?mSB2OkG|;X-{PG>V`6`*nMy*G??27)34&4lVku{GI8p5 zRi{QJhAG^8!|9l;h+%VTVk)@yn|IOQhxh)DD`1w;Sx#Vsx zf}_xh-TnCW4{`P+UOP;zP(ek5(MS;6DH4a3k#o+AMPzf%cu~vbmdOqd(r_fx!odMP zc8^wu&o5CklycSWk?cT|DE8oP5<(EbGSS{bKG)D74(!ES$MMo$*4<9gLGJXXWkR)a zn`h+sPAi+GS)Qv!m>C*-uJRaS)7~!X+jVFd_a&vcXpEY z)M5>?W-`d-&|1K7KaLFHjhAqAKMlRNGHz7b-MAu~0tjBdrCPt%LP+D%lkxh*n-ngTEL|7&$hl zl$ILeNt(+RB;kTXf*e9w3CSd$CpTUQE^%*lmBv0)In5#wH#PG>Beh_%d7p|z3;80f z + + + + + + diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..cb1ef88 --- /dev/null +++ b/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 0000000..399f698 --- /dev/null +++ b/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 0000000..bc157bd --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,18 @@ +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +tasks.register("clean", Delete) { + delete rootProject.buildDir +} diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 0000000..598d13f --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx4G +android.useAndroidX=true +android.enableJetifier=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..e1ca574 --- /dev/null +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip diff --git a/android/settings.gradle b/android/settings.gradle new file mode 100644 index 0000000..1d6d19b --- /dev/null +++ b/android/settings.gradle @@ -0,0 +1,26 @@ +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + } + settings.ext.flutterSdkPath = flutterSdkPath() + + includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle") + + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "7.3.0" apply false + id "org.jetbrains.kotlin.android" version "1.7.10" apply false +} + +include ":app" diff --git a/assets/icon/icon.png b/assets/icon/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f46c9a712534a3d6a394c17c7f9d64b21b1138a3 GIT binary patch literal 2911 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 + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 12.0 + + diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig new file mode 100644 index 0000000..592ceee --- /dev/null +++ b/ios/Flutter/Debug.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig new file mode 100644 index 0000000..592ceee --- /dev/null +++ b/ios/Flutter/Release.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..aad59ad --- /dev/null +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,616 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C8082294A63A400263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + 331C8082294A63A400263BE5 /* RunnerTests */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + 331C8081294A63A400263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 331C807D294A63A400263BE5 /* Sources */, + 331C807F294A63A400263BE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 331C8086294A63A400263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C8080294A63A400263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 97C146ED1CF9000F007C117D; + }; + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + 331C8080294A63A400263BE5 /* RunnerTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C807F294A63A400263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C807D294A63A400263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = ru.naggadim.reversenn.reverseNn; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 331C8088294A63A400263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = ru.naggadim.reversenn.reverseNn.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Debug; + }; + 331C8089294A63A400263BE5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = ru.naggadim.reversenn.reverseNn.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Release; + }; + 331C808A294A63A400263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = ru.naggadim.reversenn.reverseNn.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = ru.naggadim.reversenn.reverseNn; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = ru.naggadim.reversenn.reverseNn; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C8088294A63A400263BE5 /* Debug */, + 331C8089294A63A400263BE5 /* Release */, + 331C808A294A63A400263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..8e3ca5d --- /dev/null +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..1d526a1 --- /dev/null +++ b/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift new file mode 100644 index 0000000..70693e4 --- /dev/null +++ b/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d36b1fa --- /dev/null +++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..f995caa25035651af6c5892af0f9a1ec1bcf235e GIT binary patch literal 76761 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%0A8Y?{AS7REVl;h{_wk(+gkq9zS`AW>)BD3|!ii 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 FV1gw3z`Ote literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d2a91bcdbc2e0c57b3743f8047867db9bec74a5e GIT binary patch literal 948 zcmV;l155mgP)-}- zaV1jh1EQn|dfkq5%}XM#cSCni+To`DWgVq2Prsp4RSmRTl||(NpOlkq!yBkoA@AE{ z*vy`@1wfLVabh3JHlrp^PGGsEz;;kcT|{XiT4Kn{!Iy8`*pWW2KZ1h=!a;Kst8+=X zM%`IF?&0x?z&BA~VzpYDGIQmA?A;-Mh*iqX#_bpmUtq^eKU!vI1$HmjT4iG1y_Igo zWS%1h7LyO`!leo{b+GSnTEq6C|C}II*;#__Ru)>4%TREO=vozj{)(r4U_EXsoHQ68+Nmf$al=4EIhnHBS(37R0|Ak=aM$f38U(!OnOK5(76ghB^8Q1GKN$2 zV2h__bgBAaX_A>aym=3cxUATdhE$@RPVnHc2+UydWDriNw4NqWpcLeTSD-xn8Ela0 zm#Sxwu>)%C3Av~`uu-)z(Rkt2%!c(TpmQl^D74^!a5cvSZqu@R4>O%j8-ZmHuMse8 zeU<}WN!b4fW{7^&5_^F~?j#pU^j%5Sx>*70u@+G{z?y9Iw)4jI$Xk^{$~v)a3&wld zad0e#SHrqW=z&#cn)*qN_xVYatcPw8N}mLWL$qNXuD0^)A;8iN5DjqZR*cSm#2@kb zNjD%GkG)Nt`anhf#D5u-L0-_Sp+@Q6bvvq|$aIf~jKuKwHr0000>kEGI479gDMMnz?iDPhuQr~~Gw zh+yfEQn$OCDS$Y6k}E4A1n>Tu8n*E9PBkA&P91pRm5z!>NrtCQ#`;Bcb2+-YSX{V( zjKH1)cxn+-hB){9fk#$2`k zX=N+i{ujw2Gvv#F_(%utuYn-#oZ15ehAb|b`@>o|MD_p|hv!`pildHgBL1W3D!ru- z+KHKkj3{s(?Glh3U+CO|BxraMnph3DU^>lu40GS$?kF4gJv~M;Hth##bfPi0a$`M) zmf_ucys#D=dd^qEo5slq!-zj?#IV82`e^=>`1T+-?M*VRCy3CnCQm{r8-8Xc-E*fY z7ff(nzZg3|=Zoyq#YGg4ZXGjU*qH~Y8q6!}kX2RLMRf(1&BwZJV1G`jY+4(f4%Otq z+guk!{80mqx`lN;X0%pmOZ}`|NZ!vrhWJBm1`SWn4o{)(g0c-f0eQN5p2E|{P}dJ-cmv122qzl5Gp zA97)ALtaiHdd;Jmt0Y!DPpe*Vg;TI;p1@iufawcyu+jpK{@xDt)c6wnQ9a&1PQno;lEij~i+Bqe$(V; zPrrh;BWys(xK?K3>Ze={QbprX^9xi-o(5y{LTadM)*-9fOnQpd9!SR^AlIDxYUwp2 zdK{}@5QQoH{l3cO?TFU~zc&!B`6(BS!t{BBAI@olDnx&(K<44urn8lY6Ovi?iNiK8 z!n;lPxoiGlU4;%Rz2sP0hFseIKL-U$F638fpMw<&S<=j2Uzo2e z1jijFRl>8pL3rQT=5Zt8e@xm&G>W@0mpy}R>t1gpJBC14(jdKK=NdV4dkD7nP_(%Dwbm*3Ie1DG)dVc7SfCk8`7KvJp`@OlG!1A=raE%PFsZKT7nDQ9asq=(yS{4DHi;+i`UWc!blT_4svOEzHF ze&UehMvnt?kb!tCOR04y4;^emgyCi5MI?E9Gn)2*!{lxbj44~1x)!{I zNaDA4Uc7;}uCw0_*v^>t#luISjw_Az5|VSh$5v@CuPufjHSNZO<7wVZ1c8YiOv;q! zyoU2qcYf0^1>mHTaJxJO+jt6cV{J?$m+%oPs=iK`52j8TPq*2K8meZ&z{O~L3 zMk#sjQ;6hVZcB1m*ci>!-i6~`h#A8tVMQ^X>I&Cs-ZgyNKyKbO(eRWU?PaUW0TixoF5wBfDhyFloTikmq z9`F<}+s?s;jvB94c<&uePD(M;txDwy97=#DTIhnlg@W9|={Imt-Ky z%5-ghs!LZ3wKY_GH}~s(4k+SJ1N0i?>C>8Ic{%i56OzPApPL1kpkfMS>z&2*D<%@XuvW?{jua4LnKSXR#qR9PZ@%~T zy*I1M<*M()^RQAzB9(%wRB-1ZisLBzdQg_h6hXclBZE*{X>nXW%`cmYNY;%>9?wDP zhXtQ@s>75;xOQDRuV8M!OiuF$VVketQq`oGW`_HA?Z)kEygGr46HYQzeQB~aujj2H zq|BS0D7~5 zWL-;7UgGpBwcw4~le zb%0rQLf7=VHx*Y4`pya?WA1-33wL#zd)p<`T90Y-Mr1qq?jvUBOnw@<#6kt94zsT- zEQv55`g+ij!JdJC)*DJB<>)2u+K#PTBFTEE{&Sf7V&^8f6Ayp>D*XjMx`|ck;IS}* zXEXLg#_78~osq&QhX-+g3S;-2GRQR_uHQxH4xAa*LYHi+OL1N5LgNOCwv+HrE=->3QCB&h=iUmFIokuJrt& z_Z;8zoZtK0-}CvZ$Rh$u#Ocq!P&o*>C4_*U{HCgE%+DtU2(vR#Ug5;@_-}Nj@hugG zgly578A1nCJWdrApcEZBj@<)v_E+8s`ipV^DCEVcu>m?;@v1VInj&@aBE%GY_$h2@ zC5&Nc-Ybq(i*NzoI7|~?!|0GeQ;O-}V0S-Y9(bu-!Kp<3k>Ok=p5XHv?HQKYSW%46vbE=Fxe9QP96evd*$TL&5Sg!;C#WoGz zU`3F>AzWJuwKXvI6_JYzJ22BLKL`{BFR`K1S2geLdCGa_5xC(#jQ`<>MN5L3yCQ~u zmS!qKT`lh10?LJ#pQGI!2rgJ8vI=n8_^wz=kcNApq(}nhjtAhxNqYOJHiab@Gd-lPtH(?lHu(u7yPScr5Bui0JQJM`VB;z;;w7m&-JtP+-Q3kkPDk-MnUTAoX zW;g-aurL>4;=G*Lbh?PBk&BPI8aUW4k89KVb%{`-?t18Lqunn7IsPu9^Oz%}@_c4_ z+Cb5;0u>_;_h4zU56IV@4msj^C&ppuD0*f-Clwin5m>)>`P%pq4}05b-Hm>F47Y$j zVx2Kb7L0vKXU>}Xh=R<}usp0ncYdO|33fghTxMy&v?-`KAKrZh8y=@Q&&a?k(!;)A z3fh1UywLO z(U{EMK(xPVTk?%kw_IOS7D48jy)?JXST6w8XOEp7obdmp6)W0vu zB~g)+*U-UUk>hC+(FPym}=Booa}pH47O>E(AA6^U=H5}*%>Rd z;ISntFo20$>!haB+?5Qp~ABx@MKWt7!r-u-tu(oiJf+DZqPy9VgvFSrpkdR-*A!8}Q@Fe4Ll)Z7lo`oMKDY<4jyfAuvl{N!`& z8f2`daXo}f%Nc2gQv?Vg;mA02_0#^RK?a2AXGqzOuQ+iIp4iEa(EE%v>XiE*#422k z$wTZv0s|k2rGv0#z4;--lb>vn^x@B(ZI}CMVd%QzBbZ1+Sy?Ga6R{ZO;wUnGL`hIo zppUSVNkQ4zfPIH;9WB}u|9r!Nf;`%^UXDIx0_mlwqZKEs7BM&Vqzn;E5W2JrhiydLDck1 zQ`1<~(#D8FTWc(|NfQN01vGqEskWt9Nm{D(4+DjMNvRQ&)@@l>K6jU8XYT1ecV^z3 zx3Eg=yYrTHf17OP&6_uK&$;L8o^$SKHq2lm>U_ua^$|2_j8KpvR_qR$0K+XUG_D2A ztU>a3wA&P$)zlA_e`3G0tf|p>eZT;!;&ViYx^ViCnLOD|y#3Hnr<$7)MNG<)&WP!^ zVnXuc5y25Veol|b*hAteQ|$Dso*venoowkZ7ReYs*hw3=ry1Su!dogt?g<<%1XE1#(TWQcu#3toie2)tr zoKj(BIylgU7yrQf-@?-mi}+jq=sGPLptaue3L<;ZgfOhULs^tAT!=#3sVz;YF48Y{ z;P?`ZYa$h}CY4x$-|a$O5d#Am#>KecSs>s_qU=l`>%+!vxT8b3qmi1uH~)pm)Mkh^ zfo02<9l`}tHav(=F`pg~)fg-YBN)V8ClFJcgh)b9N3YT3V$u7Y34Ne{?{{m;g^Me?4I0xaRA<$U0o=tsXsVjz<1Bi8L;`7jg01#hrObNi=^v(TKSg7MoPPKlym%?8Mi_I}rT$Ttg*+6Y z^i++g8_QQ<@TC7qw#J57m_&yzk!#qw>U9oQ~kWhf*b z3#sFC+}vmd0fDLz`Z%d)VZZ8_gC&o1ueFgX8Jdgbd>KqxS-VKl$tL@egIL%sCHZNWunVs8GOy8)?F0hjIR%NV@ zSU8VYt)XBnhn~ZG4O7m~R`t%V;$_W2h}L>6yVpj9tlSEk)VUr+WucT}8M9I}<5Fx~ zg|9t?!>3@hN7JBv-I`stCPK?t>|Bd!AAzEC2wJJ$Q!WKT_!M7kzq@%3W=^Boi_mqf zloP2ws$P_IOJ3BC__IS1^bat6~xjDC?05aysMxlY=CQ{i1o>g+s8u7l6 ze@Rde!)jFiqwy9m{2!=^EDSr;L>7jfM&u98c{VJ$T*3J;J!g}hmqx_2)A`bOmP7T6 z;b<2|J!NfBuFCkGft()mK9SLgTm)jMTvN8Ov?iW1FE}ZvAEHlT(5fMCA5oqG-?Exi zB;OlR_}+?tc zGcjrx1fyIKjB-IR$_2qF7X*25L3&h@?k9fQZiKLbjvfq6uifMhf|CXduL6Yq8;_xDU-^FH5yS<^5NdvNMXl{e4{ChPkt) zonl_U zIk|NXp3*+dUqigT^WlEn{B_#>0xtikG=Zi~eS>@4tRPsky7mPuegLW%uP>|Lg_(sN zKsoyw1j%9bvkdOGp;eOt)^6n|zU8{X%Pl;ai(F6Ge~$1yD?p7%TY>!6joiC9${+kL z>{+_Ic=K=Qk-JfBOr;=J2aapTVkrVeo3>L=4^)9U^)$Yd9vQokvY`6BC^fZ4)Oifo z-ip=BFmpP&{!TfchRJf-?!Vy&PqHdVD|GVnie@-3(4}#Dq&N zqPLf+AYw9@1wJ`agO#<71ymFEy+JFUM=ek|Qi0SD_X>qGprp6*aejl2PuIgp2 zqh-nAZcLs;-}- zaV1jh1EQn|dfkq5%}XM#cSCni+To`DWgVq2Prsp4RSmRTl||(NpOlkq!yBkoA@AE{ z*vy`@1wfLVabh3JHlrp^PGGsEz;;kcT|{XiT4Kn{!Iy8`*pWW2KZ1h=!a;Kst8+=X zM%`IF?&0x?z&BA~VzpYDGIQmA?A;-Mh*iqX#_bpmUtq^eKU!vI1$HmjT4iG1y_Igo zWS%1h7LyO`!leo{b+GSnTEq6C|C}II*;#__Ru)>4%TREO=vozj{)(r4U_EXsoHQ68+Nmf$al=4EIhnHBS(37R0|Ak=aM$f38U(!OnOK5(76ghB^8Q1GKN$2 zV2h__bgBAaX_A>aym=3cxUATdhE$@RPVnHc2+UydWDriNw4NqWpcLeTSD-xn8Ela0 zm#Sxwu>)%C3Av~`uu-)z(Rkt2%!c(TpmQl^D74^!a5cvSZqu@R4>O%j8-ZmHuMse8 zeU<}WN!b4fW{7^&5_^F~?j#pU^j%5Sx>*70u@+G{z?y9Iw)4jI$Xk^{$~v)a3&wld zad0e#SHrqW=z&#cn)*qN_xVYatcPw8N}mLWL$qNXuD0^)A;8iN5DjqZR*cSm#2@kb zNjD%GkG)Nt`anhf#D5u-L0-_Sp+@Q6bvvq|$aIf~jKuKwHr0000j33Ifh#PeyCWr(uanr@=h*8AVWR68562xhVvy&-(UDvMf-t+Z)&i(OT zUmtF;dvDjWPqX&z-q&}|=X`&h@ArGYx0($z_{1>(^RNQ5(xfm6zP1wu-el@U$`BmeufHvi$dKP z@Advn(rJDA+gj_IWq11{X+7yc~@8gijZvgrugB@8h9vY+g%Bu~y1@ zt^F_KKmUa{4Q9f#t%Wi03V6Q9z7}!nPAEKV*psGaa(CstkB6 zMn1lC%LE(>(m_X;+;=1UkfEF;oTDmH zo&wtX2;aEarflpo?2xqbY!ZI!_3C$jeFMrj+?hs1r(9WmneF3gr@RSxRLeg-TrK6e=82 z(iVk|8T9Bq{H3+b4HQ;dT-hRZH%8jTPD?nOR6jlx*7O2B`duu%#G39Xd9jTw6-Ab$ zh&z|yw>{XgOFTAN;dA;#;m5^}Bo zI-c5t!4aFQrZ99UL27^PJGg{(FuaU&hm_%}P~*1PGY z*V$ylSy!bEsSFTjAZ1)~0oE)>AP&(pCXny--Wm@o`fZ#OTW}G6{X@*Zn%*3il}ewp zPT4I-`w)snJo7M$jbV(TFq&;#_cpORHX>iosfH+aYZE#@kBvVdDmb-E6*@iFpJ)op zS6eeSK8~RgtEi&S9c{E}joosU3gv3QGe?#zlHC6aZ~7kTX1f%^x&N43lQgDP1D)PR zm!#7YKB4a|e&QF=4bP+bv#<%Z;vy%~FcLX@lzzMidaC?Kc4Z}3sUdywVob#&HHdip zu%O}G(wO2##X(Y-C<}~4AY^!qt)~hN$~c-M$L8ciP#k1s99pLAwCaKC9L&{T;J3M+ zI#P66r-j^RkfPH%E#y?-$;)NQM|F^~N+&h%Q`igA zuea30nPS8FIj!1!c(P;E>0$ava^1IC(xhD|PcI!IE9d3bve;1nW_1jflhaBT_*CNE zcY~ym^M4WeS&Ur=XNuFx4QB~Yc8ux($fCkzsw^zc8A*9>g2};>YfB793k__?GHth1m80(3*|lBC(I?S-K3w92fDN zwFK$f4BKa93e&OeN&3nSSa6{@VN?q?Dc-sBR6PD14!kaF6#lZkkvdx$GpcDRl|k{) zeOOtx))v0wLG0XOpMIo>D#a}g6rLXcs)twJ57)jOtw9zkvU}JvdX+&DFPS`O?>?;B zfNkG~iD*_Dqzoj)pgTpG8^OL+V|E=6>CPoVmZ4?R3?-Zz(ET(9O4!b4Cy@Heu(4x!OjcQj{Y!`UHm3tlsx-i^yY%&Ts2yR{8Rc*N&xR?prF1KHJVRf-31JB3gLc1wg9lM)r*b)`Y2=zM`9Ajl70bTC-RscO zL~kDDyB-EjBY(u*&ZW4NdwQtx>~6Yh5x%$-i&xNJ{=wFCbF8D~M>vck#H1Tq`HAP~ zPls^u08~3wTDWpK#>|g!5=D&owC^?ayb4UWkxAvWJYSWrY?^sIfGDC43jvhhQFw?k zO)Zo3Y&=<3om9Xl+@EqdIjTe%v*aX}w(cZ;!gW$muQC;(RtPPKRdm!cd!~&8@@Qeo z4OLV`oO90!U$QQj?VV3tM)NPkYrU+dQ0jHF@rC51{xM$i>1Zd2ymUeHmM*$>1^Hzz zG*tf`j|qvev=$~_{vaAPExVc}wk1Wn*u(<^Xla2&Kd=7G_U%8vk4r-?#hK8?OsqA{ zZs+T+!cB{5-nlO4mwb5kd35C8_FhvH=5+ApyIqZmb9v@8V}zNv?@Bqsc3^-T8{PTv z%yUpG@$sRs)RvSQCbD>|3MR(cryp=zD;gT{KcBjOx!n=hyZ`_I07*qoM6N<$f~*{s AuK)l5 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..efa9ec6014d153bb6b9cf28d55de7e54c43938fa GIT binary patch literal 4224 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 T?Qw+g00000NkvXXu0mjfPx#hb literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..90d70118368c98aa17c73441165baafde2d87705 GIT binary patch literal 3947 zcmV-x50vnUP)l)A@RF^4*$}`&_$luL@4G{dsEbE0=X!t!DC4LpZUZ&dVeOkZb_@?afD6X6>mn~7 zt*z`hjx?K=WjD3r(WkNfQ?w)??1IwMuxe^kd!{2GL0SW{xG9d!yYSdk_~U~p%!goB z7*fZw^tH5U8{XT3R?VsFeL@IlI;R<|pHw~zP3?H^L%hF(W=~be7>-au)yd<79jL2^ zX#Kf{-vh$*3c7?6R@KUWUePK$cxeK(6+T#r4q=hc)DG#JKoHoLz@bX-zd}u=JD|EJ z7UL?`HzKF4rwuudYHWqyqX{FBJS88*fklo)zCH})D|xJW&Z~BuJP%hLh(fS#5ws!m zMAL&LN|DS-JFi^`6YYSBY-)Ilm?~h1Ry8Uh4la)NmvmB33PyfLB2^Wg@Ig~mLUpDT zN642p1-?K5uVUQF-Y}I_fC?PBl6qjjQ+ji_tAN;N~9+M;lvr z(c^2-!pX3Qk=<+RxYay}9yFhD)y4S50_4Tyk)@09=>guf4ecNk>Ga{4G92vm_2NJb zeEw+Me^XuC@^#j{?lx%zjJo-PDk0g(V%&WzuDKX4*p^8- z#1nkYCG^u<@$g^xXagmZ0b!F!l}5lQIu-OFYG6KYm`RK0%0AWdS+i{^?_Klo*#SKJ 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 FV1n>Wp9BB^ literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..efa9ec6014d153bb6b9cf28d55de7e54c43938fa GIT binary patch literal 4224 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 W#TnVpn5`240000P)5$`AR` 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 tE}3Dwy=WvM$Ly? literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..4f9ad065d76eb7895edfc34fc0d03ac461822aaf GIT binary patch literal 2028 zcmV-P)3(R6#mZKd0j-QqDWnW)P+J!2x9!9i4ja(K&les4^0%6RYSlf7_Fd* zq9}rKjD0w@GTD!4BMBqmxUP-)B7_vSduy|=Fq1f(;xkN7ot>wPnG z?m6?#*(zBvga2+&yLJgkk|;VbKxCiT{85iel$Nptp>Yo~B~h;`Hs9;-^b@oDK}Rq8 z7@?P{*Gh`b!W$czw2t&sCPQUqMvTU0Oqqi(zs12U6^m2?$T4?4m2Vr!chyiPgNh1j zXn?G*M^%*;mF6$zho)0glU8P`tIn@9wvXDxuxu60Tg(flp;sj<1zD1zNKivFCeFa# z98@Mx5@VAcwBTb!x>}=+b>GvCBe8igiHIc$v#F-dK|`aKs;!bbyHthX2)}H>=NmDg z8qzWf)_w!k$&Kz95n+2hF7KlWUJJ^svX(JB|DHM`*ccyYbLO=ig53(w01MkT?8(TFDBpjR=P0-QJz!ZZa99=^5f&FW*`X@C{Y{^YL(gN znYFZaJAbyx#DDg_x?g%)1IOnW!Ph;r66hd_4&aGV^wa~!$)Q+biE1oqL;`QWfT3gX z^;Rg69O3@9Tq`TGmqBfyLoIyi#Z)`S=!o)1WpWX^evTqkp2@4<78eiU9s4Mk^Due- zG9;zicZX&>ZGp|!s_uzT-r$TxTd^p$isVyKR)#4LV#Fk-GEa9lflRGCUc~VaZZ?XR zO6|sT&r@YL7UFPMQR}^P`n>06UQ;LLeZX9D+*2P0(%*hH3W*e+dKg2lHmg>O^G(sw z2DxOBom44nmMmsY!ta05ryH2b-yZWJ6$>V1+%xLi6W3merRyLCa*FhEJfOFuK~QTB z%mq$Zy@~c7F#divi@}3<>1v`b-n?)x8Y3HhYkJ2w+xVK{?lVmx7qfEBIlKaIy;)E_~=HNGFoz;G>04MTL{y6i+_u@G2}ME_ zB-r8%zWwn09yTkisCge=n-5vWS$_>(eoT?ll4M3~{t44&^W?Fv-dE_*xCFk-;71WD zg+F(5&HYs0%q)C%ezaFG!M1JA`Yc8^O%|niZZ2-Uj{9AtMI)!8y!g_+wk^C$2_c@H zg}SY2=Z9~N9rt+7b~uUWT*)%aGu^+cTLM!I**=N9203DsX`j}}XR5X7HMm`Bs%S`9?SKOER#Vc>4Y9dki zVH*z}M{C|fhFr-nHbRHy{iuC~M7fdBy!U#D71nvYjp~*tY2$a8It!EUC#^(nZ*k&C z;g6lTc`WbTLn>{mqPD+nHzd60_Y${*wJ@c4elBVTp?@D&S2BjEEpzH@s@rCFWvhQt@{=0e}-~WvERn2!=P=JD&#HH5}K}3hww=w8UK$`d;5(#3(})YT6ZR3 zTfzxK+Mg9yjyQIyPVK^putg{yx4zI`L6YokSB~rzustSA{j}oK9UmezDR?{VB3#OnXvTe z9j2Q(r*%c+M&jj(#=p@Xfb4!2?`c9sSM=A@EB{4+@^Y%a0R5|t z5vm-Qlt7l3oA%t@yIp4*U(tuI=!;^ixW@?;gQiCFUPliV75E3}O!iZ;>lWGo0000< KMNUMnLSTYWQqx!f literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..db7157c49da1b220e02bc5e24efee3faa1e543b2 GIT binary patch literal 5422 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 YKNZLD%5ULS4FCWD07*qoM6N<$g1pC9?*IS* literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..a55ce3aa86e31e79029282a8592991142185afc4 GIT binary patch literal 2220 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 Hu0mjfW3w@4 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..43a43fdfa5a2ecaf890b73994d050014683ec4c0 GIT binary patch literal 6581 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 Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 0000000..89c2725 --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..f2e259c --- /dev/null +++ b/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 0000000..f3c2851 --- /dev/null +++ b/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist new file mode 100644 index 0000000..d246db5 --- /dev/null +++ b/ios/Runner/Info.plist @@ -0,0 +1,49 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Реверс НН + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + reverse_nn + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + + + diff --git a/ios/Runner/Runner-Bridging-Header.h b/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 0000000..308a2a5 --- /dev/null +++ b/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/ios/RunnerTests/RunnerTests.swift b/ios/RunnerTests/RunnerTests.swift new file mode 100644 index 0000000..86a7c3b --- /dev/null +++ b/ios/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Flutter +import UIKit +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/lib/application.dart b/lib/application.dart new file mode 100644 index 0000000..7d2c1e7 --- /dev/null +++ b/lib/application.dart @@ -0,0 +1,27 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:reverse_nn/pages/home_page.dart'; +import 'package:reverse_nn/ui/screens/home_screen.dart'; + +class ReversNNApplication extends StatelessWidget { + const ReversNNApplication({super.key}); + + @override + Widget build(BuildContext context) { + return GetMaterialApp( + title: 'Реверс НН', + theme: ThemeData( + colorScheme: ColorScheme.fromSeed(seedColor: Colors.teal, brightness: Brightness.light), + useMaterial3: true, + ), + darkTheme: ThemeData( + colorScheme: ColorScheme.fromSeed(seedColor: Colors.teal, brightness: Brightness.dark), + useMaterial3: true, + ), + home: const HomeScreen(), + + defaultTransition: Transition.noTransition, + transitionDuration: const Duration(seconds: 0), + ); + } +} \ No newline at end of file diff --git a/lib/application/controllers/application_controller.dart b/lib/application/controllers/application_controller.dart new file mode 100644 index 0000000..8597bb8 --- /dev/null +++ b/lib/application/controllers/application_controller.dart @@ -0,0 +1,19 @@ +import 'dart:developer'; + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +class ApplicationController extends GetxController { + IconData getThemeIcon() => Get.isDarkMode + ? Icons.light_mode + : Icons.dark_mode; + + void toggleTheme() { + Get.changeThemeMode( + Get.isDarkMode + ? ThemeMode.light + : ThemeMode.dark + ); + update(); + } +} \ No newline at end of file diff --git a/lib/application/controllers/home_controller.dart b/lib/application/controllers/home_controller.dart new file mode 100644 index 0000000..f824ee4 --- /dev/null +++ b/lib/application/controllers/home_controller.dart @@ -0,0 +1,5 @@ +import 'package:get/get.dart'; + +class HomeController extends GetxController { + +} \ No newline at end of file diff --git a/lib/application/controllers/schedule_controller.dart b/lib/application/controllers/schedule_controller.dart new file mode 100644 index 0000000..8462e68 --- /dev/null +++ b/lib/application/controllers/schedule_controller.dart @@ -0,0 +1,14 @@ +import 'package:get/get.dart'; +import 'package:reverse_nn/application/services/schedule.dart'; + +class ScheduleController extends GetxController { + Rx?> currentSchedule = null.obs; + + @override void onReady() { + super.onReady(); + ScheduleService().getCurrentStatus().then((currentSchedule) { + this.currentSchedule = currentSchedule.obs; + update(); + }); + } +} \ No newline at end of file diff --git a/lib/application/services/schedule.dart b/lib/application/services/schedule.dart new file mode 100644 index 0000000..15fbf82 --- /dev/null +++ b/lib/application/services/schedule.dart @@ -0,0 +1,132 @@ +import 'dart:core'; +import 'dart:convert'; +import 'dart:developer'; +import 'package:intl/intl.dart' show DateFormat; + +import 'package:flutter/services.dart'; + +class ScheduleService { + static const Duration dayOffset = Duration(hours: 4); + + Future> getSchema() async { + final source = await rootBundle + .loadString('assets/schedule.json'); + return jsonDecode(source); + } + + Future?> getRule(DateTime day) async { + final Map schema = await getSchema(); + if(!schema.containsKey('rules')) return null; + + for(final Map rule in (schema['rules'] as List)) { + final DateTime after = DateTime.parse(rule['after']); + final DateTime? before = rule['before'] != null + ? DateTime.parse(rule['before']) + : null; + + if(day.isAfter(after) && (before == null || day.isBefore(before))) + { return rule; } + } + + return null; + } + + Future?> getDataset(DateTime day) async { + final Map? rule = await getRule(day); + + if(rule == null || !rule.containsKey('dataset')) return null; + + return (rule['dataset'] as Map).map((key, value) { + return MapEntry(key, value.toString()); + }); + } + + String datetimeWeekdayToDatasetKey(int weekday) { + switch(weekday){ + case DateTime.monday: return 'monday'; + case DateTime.tuesday: return 'tuesday'; + case DateTime.wednesday:return 'wednesday'; + case DateTime.thursday: return 'thursday'; + case DateTime.friday: return 'friday'; + case DateTime.saturday: return 'saturday'; + case DateTime.sunday: return 'sunday'; + } + + return 'monday'; + } + + Future>?> getScheduleByKey(String key) async { + final Map schema = await getSchema(); + if(!schema.containsKey('schedules')) return null; + if(!(schema['schedules'] as Map).containsKey(key)) return null; + + return (schema['schedules'][key] as List).map((element) { + return element as Map; + }).toList(); + } + + Future>?> getScheduleByDate(DateTime datetime) async { + final datetimeStartWithOffset = datetime.copyWith(hour: 0, minute: 0, second: 0, microsecond: 0, millisecond: 0) + .add(dayOffset); + + final DateTime usedScheduleDatetime = datetime.isAfter(datetimeStartWithOffset) + ? datetime + : datetime.copyWith().subtract(const Duration(days: 1)); + + final Map? dataset = await getDataset(usedScheduleDatetime); + if(dataset == null) return null; + + final String dayKey = DateFormat('y-M-d').format(usedScheduleDatetime); + final String weekdayKey = datetimeWeekdayToDatasetKey(usedScheduleDatetime.weekday); + + String? scheduleKey; + if(dataset.containsKey(dayKey)) { scheduleKey = dataset[dayKey]; } + else if(dataset.containsKey(weekdayKey)) { scheduleKey = dataset[weekdayKey]; } + + if(scheduleKey == null) return null; + + return await getScheduleByKey(scheduleKey); + } + + Future?> getCurrentStatus() async { + final DateTime now = DateTime.now(); + final List>? schedule = await getScheduleByDate(now); + if(schedule == null) return null; + + DateTime datetimeStartWithOffset = now.copyWith(hour: 0, minute: 0, second: 0, microsecond: 0, millisecond: 0) + .add(dayOffset); + + if(now.isBefore(datetimeStartWithOffset)) { + datetimeStartWithOffset = datetimeStartWithOffset.subtract(const Duration(days: 1)); + } + + int durationOffset = 0; + for (final Map scheduleItem in schedule) { + final int duration = (scheduleItem['duration'] as int); + final DateTime start = datetimeStartWithOffset.copyWith().add(Duration(minutes: durationOffset)); + final DateTime end = datetimeStartWithOffset.copyWith().add(Duration(minutes: durationOffset + duration)); + durationOffset += duration; + + if(now.isAfter(start) && now.isBefore(end)) { + return { + "direction": scheduleItem['direction'] as String, + "start": start, + "end": end + }; + } + } + + return null; + + + + // final datetimeStartWithOffset = now.copyWith(hour: 0, minute: 0, second: 0, microsecond: 0, millisecond: 0) + // .add(dayOffset); + // + // final DateTime usedScheduleDatetime = now.isAfter(datetimeStartWithOffset) + // ? now + // : now.copyWith().subtract(const Duration(days: 1)); + + + } +} \ No newline at end of file diff --git a/lib/enums/direction.dart b/lib/enums/direction.dart new file mode 100644 index 0000000..185158d --- /dev/null +++ b/lib/enums/direction.dart @@ -0,0 +1,11 @@ +enum Direction { + inCity(displayName: 'В город'), + change(displayName: 'Переключение'), + outCity(displayName: 'Из города'); + + const Direction({ + required this.displayName + }); + + final String displayName; +} \ No newline at end of file diff --git a/lib/enums/schedule.dart b/lib/enums/schedule.dart new file mode 100644 index 0000000..5bfb4f7 --- /dev/null +++ b/lib/enums/schedule.dart @@ -0,0 +1,67 @@ +import 'package:reverse_nn/enums/direction.dart'; +import 'package:sprintf/sprintf.dart'; + +enum Schedule { + daily(elements: [ + ScheduleElement(startHours: 4, startMinutes: 0, duration: 415, direction: Direction.inCity), + ScheduleElement(startHours: 10, startMinutes: 55, duration: 5, direction: Direction.change), + ScheduleElement(startHours: 11, startMinutes: 0, duration: 115, direction: Direction.outCity), + ScheduleElement(startHours: 12, startMinutes: 55, duration: 5, direction: Direction.change), + ScheduleElement(startHours: 13, startMinutes: 0, duration: 145, direction: Direction.inCity), + ScheduleElement(startHours: 15, startMinutes: 25, duration: 5, direction: Direction.change), + ScheduleElement(startHours: 15, startMinutes: 30, duration: 205, direction: Direction.outCity), + ScheduleElement(startHours: 18, startMinutes: 55, duration: 5, direction: Direction.change), + ScheduleElement(startHours: 19, startMinutes: 0, duration: 55, direction: Direction.inCity), + ScheduleElement(startHours: 19, startMinutes: 55, duration: 5, direction: Direction.change), + ScheduleElement(startHours: 20, startMinutes: 0, duration: 475, direction: Direction.outCity), + ScheduleElement(startHours: 3, startMinutes: 55, duration: 5, direction: Direction.change), + ]), + friday(elements: [ + ScheduleElement(startHours: 4, startMinutes: 0, duration: 415, direction: Direction.inCity), + ScheduleElement(startHours: 10, startMinutes: 55, duration: 5, direction: Direction.change), + ScheduleElement(startHours: 11, startMinutes: 0, duration: 115, direction: Direction.outCity), + ScheduleElement(startHours: 12, startMinutes: 55, duration: 5, direction: Direction.change), + ScheduleElement(startHours: 13, startMinutes: 0, duration: 55, direction: Direction.inCity), + ScheduleElement(startHours: 13, startMinutes: 55, duration: 5, direction: Direction.change), + ScheduleElement(startHours: 14, startMinutes: 0, duration: 840, direction: Direction.outCity), + ]), + saturday(elements: [ + ScheduleElement(startHours: 4, startMinutes: 0, duration: 655, direction: Direction.outCity), + ScheduleElement(startHours: 14, startMinutes: 55, duration: 5, direction: Direction.change), + ScheduleElement(startHours: 15, startMinutes: 0, duration: 175, direction: Direction.inCity), + ScheduleElement(startHours: 17, startMinutes: 55, duration: 5, direction: Direction.change), + ScheduleElement(startHours: 18, startMinutes: 0, duration: 115, direction: Direction.outCity), + ScheduleElement(startHours: 19, startMinutes: 55, duration: 5, direction: Direction.change), + ScheduleElement(startHours: 20, startMinutes: 0, duration: 115, direction: Direction.inCity), + ScheduleElement(startHours: 21, startMinutes: 55, duration: 5, direction: Direction.change), + ScheduleElement(startHours: 22, startMinutes: 0, duration: 355, direction: Direction.outCity), + ScheduleElement(startHours: 3, startMinutes: 55, duration: 5, direction: Direction.change), + ]), + sunday(elements: [ + ScheduleElement(startHours: 4, startMinutes: 0, duration: 235, direction: Direction.inCity), + ScheduleElement(startHours: 7, startMinutes: 55, duration: 5, direction: Direction.change), + ScheduleElement(startHours: 8, startMinutes: 0, duration: 175, direction: Direction.outCity), + ScheduleElement(startHours: 10, startMinutes: 55, duration: 5, direction: Direction.change), + ScheduleElement(startHours: 11, startMinutes: 0, duration: 1020, direction: Direction.inCity), + ]); + + const Schedule({required this.elements}); + + final List elements; +} + +class ScheduleElement { + final int startHours; + final int startMinutes; + + final int duration; + final Direction direction; + + const ScheduleElement({required this.startHours, required this.startMinutes, required this.duration, required this.direction}); + + String getStartedTimeString() { return sprintf('%02i:%02i', [startHours, startMinutes]); } + String getEndedTimeString() { + DateTime e = DateTime(2024, 8, 1, startHours, startMinutes).add(Duration(minutes: duration)).subtract(const Duration(microseconds: 1)); + return sprintf('%02i:%02i', [e.hour, e.minute]); + } +} \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart new file mode 100644 index 0000000..e528b7d --- /dev/null +++ b/lib/main.dart @@ -0,0 +1,6 @@ +import 'package:flutter/material.dart'; +import 'package:reverse_nn/application.dart'; + +void main() => runApp(const ReversNNApplication()); + + diff --git a/lib/pages/home_page.dart b/lib/pages/home_page.dart new file mode 100644 index 0000000..2dc1661 --- /dev/null +++ b/lib/pages/home_page.dart @@ -0,0 +1,18 @@ +import 'package:flutter/material.dart'; +import 'package:reverse_nn/widgets/schedule_widget.dart'; + +class HomePage extends StatelessWidget { + const HomePage({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + backgroundColor: Theme.of(context).colorScheme.inversePrimary, + title: const Text('Реверс НН'), + ), + body: const ScheduleWidget() + ); + } + +} \ No newline at end of file diff --git a/lib/ui/components/current_status_component.dart b/lib/ui/components/current_status_component.dart new file mode 100644 index 0000000..559f36c --- /dev/null +++ b/lib/ui/components/current_status_component.dart @@ -0,0 +1,47 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:intl/intl.dart' show DateFormat; +import 'package:reverse_nn/application/controllers/schedule_controller.dart'; + +class CurrentStatusComponent extends StatelessWidget { + const CurrentStatusComponent({super.key}); + + @override + Widget build(BuildContext context) { + final ScheduleController controller = Get.put(ScheduleController()); + return Container( + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.primaryContainer, + borderRadius: BorderRadius.circular(10), + ), + child: Padding( + padding: const EdgeInsets.all(10), + child: GetBuilder( + builder: (scheduleController) { + return Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const Icon(Icons.exit_to_app, size: 96), + const SizedBox(width: 16), + Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if(scheduleController.currentSchedule.value != null) ...[ + Text(scheduleController.currentSchedule.value?['direction'] ?? '', style: Theme.of(context).textTheme.headlineLarge), + Text('C ${formatDate(scheduleController.currentSchedule.value?['start'])} До ${formatDate(scheduleController.currentSchedule.value!['end'])}', style: Theme.of(context).textTheme.titleMedium) + ] + ], + ) + ], + ); + } + ), + ), + ); + } + + String formatDate(DateTime date) => DateFormat('hh:mm').format(date); + +} \ No newline at end of file diff --git a/lib/ui/components/grid_menu_item.dart b/lib/ui/components/grid_menu_item.dart new file mode 100644 index 0000000..596b3aa --- /dev/null +++ b/lib/ui/components/grid_menu_item.dart @@ -0,0 +1,33 @@ +import 'package:flutter/material.dart'; + +class GridMenuItem extends StatelessWidget { + final IconData icon; + final String label; + final void Function()? onTap; + + const GridMenuItem({super.key, required this.icon, required this.label, this.onTap}); + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: onTap, + child: Container( + padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 10), + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.secondaryContainer, + borderRadius: BorderRadius.circular(10), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Icon(icon, size: 64), + const SizedBox(height: 6), + Text(label, style: Theme.of(context).textTheme.titleMedium, textAlign: TextAlign.center) + ], + ), + ), + ); + } + +} \ No newline at end of file diff --git a/lib/ui/layouts/application_layout.dart b/lib/ui/layouts/application_layout.dart new file mode 100644 index 0000000..59f225b --- /dev/null +++ b/lib/ui/layouts/application_layout.dart @@ -0,0 +1,26 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:reverse_nn/application/controllers/application_controller.dart'; + +class ApplicationLayout extends StatelessWidget { + final Widget body; + const ApplicationLayout({super.key, required this.body}); + + @override + Widget build(BuildContext context) { + final ApplicationController applicationController = Get.put(ApplicationController()); + return Scaffold( + appBar: AppBar( + backgroundColor: Theme.of(context).colorScheme.inversePrimary, + title: const Text('Реверс НН'), + actions: [ + IconButton(icon: Icon( + applicationController.getThemeIcon()), + onPressed: applicationController.toggleTheme + ), + ], + ), + body: body, + ); + } +} diff --git a/lib/ui/screens/home_screen.dart b/lib/ui/screens/home_screen.dart new file mode 100644 index 0000000..56bbd10 --- /dev/null +++ b/lib/ui/screens/home_screen.dart @@ -0,0 +1,48 @@ +import 'dart:developer'; + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:reverse_nn/application/controllers/home_controller.dart'; +import 'package:reverse_nn/application/services/schedule.dart'; +import 'package:reverse_nn/ui/components/current_status_component.dart'; +import 'package:reverse_nn/ui/components/grid_menu_item.dart'; +import 'package:reverse_nn/ui/layouts/application_layout.dart'; + +class HomeScreen extends GetWidget { + const HomeScreen({super.key}); + + @override + Widget build(BuildContext context) { + return ApplicationLayout(body: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + const CurrentStatusComponent(), + const SizedBox(height: 16), + Expanded( + child: GridView( + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + mainAxisSpacing: 10, + crossAxisSpacing: 10, + ), + children: [ + GridMenuItem(icon: Icons.calendar_month, label: 'Расписание', onTap: () { + // log(DateTime(2024, 8, 1, 0, 0, 0).toIso8601String()); + ScheduleService().getCurrentStatus().then((val) { + log(val.toString()); + }); + }), + const GridMenuItem(icon: Icons.monetization_on, label: 'Поддержать автора'), + // GridMenuItem(), + // GridMenuItem(), + ] + ), + ) + ], + ), + )); + } +} \ No newline at end of file diff --git a/lib/utils/scheduler.dart b/lib/utils/scheduler.dart new file mode 100644 index 0000000..502e126 --- /dev/null +++ b/lib/utils/scheduler.dart @@ -0,0 +1,36 @@ +import 'package:reverse_nn/enums/schedule.dart'; + +class Scheduler { + static Schedule getSchedule(DateTime date) { + switch(date.weekday) { + case DateTime.friday: return Schedule.friday; + case DateTime.saturday: return Schedule.saturday; + case DateTime.sunday: return Schedule.sunday; + + default: return Schedule.daily; + } + } + + static List getScheduleList() { + List result = List.empty(growable: true); + + DateTime now = DateTime.now(); + DateTime startSchedule = now.hour < 4 ? now.subtract(const Duration(days: 1)) : now; + + bool currentReached = false; + for (ScheduleElement element in [...Scheduler.getSchedule(startSchedule).elements, ...Scheduler.getSchedule(startSchedule.add(const Duration(days: 1))).elements]) { + if(!currentReached) { + DateTime s = DateTime(now.year, now.month, now.day, element.startHours, element.startMinutes, 0); + if(now.compareTo(startSchedule) != 0 && element.startHours >= 4) { s = s.subtract(const Duration(days: 1)); } + DateTime e = s.add(Duration(minutes: element.duration)).subtract(const Duration(microseconds: 1)); + + if(now.isAfter(s) && now.isBefore(e)) { currentReached = true; } + else { continue; } + } + + result.add(element); + } + + return result; + } +} \ No newline at end of file diff --git a/lib/widgets/loader_widget.dart b/lib/widgets/loader_widget.dart new file mode 100644 index 0000000..1311b4b --- /dev/null +++ b/lib/widgets/loader_widget.dart @@ -0,0 +1,16 @@ +import 'package:flutter/material.dart'; + +class LoaderWidget extends StatelessWidget { + const LoaderWidget({super.key}); + + @override + Widget build(BuildContext context) { + return const Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + CircularProgressIndicator() + ], + ); + } +} \ No newline at end of file diff --git a/lib/widgets/schedule_element_widget.dart b/lib/widgets/schedule_element_widget.dart new file mode 100644 index 0000000..2656015 --- /dev/null +++ b/lib/widgets/schedule_element_widget.dart @@ -0,0 +1,94 @@ +import 'package:flutter/material.dart'; +import 'package:reverse_nn/enums/direction.dart'; +import 'package:reverse_nn/enums/schedule.dart'; +import 'package:sprintf/sprintf.dart'; + +class CurrentReversWidget extends StatelessWidget { + const CurrentReversWidget({super.key, required this.scheduleElement}); + + final ScheduleElement scheduleElement; + + IconData _getIconData() { + switch(scheduleElement.direction) { + case Direction.inCity: return Icons.arrow_upward; + case Direction.outCity: return Icons.arrow_downward; + case Direction.change: return Icons.cancel_outlined; + } + } + + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.all(16.0), + + decoration: BoxDecoration( + borderRadius: const BorderRadius.all(Radius.circular(8.0)), + color: Theme.of(context).colorScheme.primaryContainer + ), + + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + + children: [ + Icon(_getIconData(), size: 56.0), + const SizedBox(width: 10), + Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('Реверс: ${scheduleElement.direction.displayName}', style: const TextStyle(fontSize: 20)), + Text('${scheduleElement.getStartedTimeString()} - ${scheduleElement.getEndedTimeString()}', style: const TextStyle(fontSize: 36)), + ], + ) + ], + ), + + // child: Column( + // mainAxisAlignment: MainAxisAlignment.start, + // crossAxisAlignment: CrossAxisAlignment.center, + // children: [ + // const Text('Текущий статус реверса:', style: TextStyle( + // color: Colors.black87, + // fontSize: 14.0 + // )), + // Text(scheduleElement.direction.displayName, style: const TextStyle( + // color: Colors.black, + // fontSize: 32.0 + // ),), + // ], + // ), + ); + } +} + +class ScheduledReversWidget extends StatelessWidget { + const ScheduledReversWidget({super.key, required this.scheduleElement}); + + final ScheduleElement scheduleElement; + + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.all(8), + margin: const EdgeInsets.symmetric(horizontal: 8), + + decoration: BoxDecoration( + borderRadius: const BorderRadius.all(Radius.circular(8.0)), + color: Theme.of(context).colorScheme.secondaryContainer + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text(sprintf('Следующий статус в %02i:%02i - %s', [ + scheduleElement.startHours, + scheduleElement.startMinutes, + scheduleElement.direction.displayName + ])), + ], + ), + ); + } + +} \ No newline at end of file diff --git a/lib/widgets/schedule_widget.dart b/lib/widgets/schedule_widget.dart new file mode 100644 index 0000000..fb51c48 --- /dev/null +++ b/lib/widgets/schedule_widget.dart @@ -0,0 +1,45 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:reverse_nn/enums/schedule.dart'; +import 'package:reverse_nn/utils/scheduler.dart'; +import 'package:reverse_nn/widgets/loader_widget.dart'; +import 'package:reverse_nn/widgets/schedule_element_widget.dart'; + +class ScheduleWidget extends StatefulWidget { + const ScheduleWidget({super.key}); + + @override + State createState() => _ScheduleWidgetState(); +} + +class _ScheduleWidgetState extends State { + bool _loading = true; + List _schedule = List.empty(); + + void loadScheduleData() async { + setState(() { _loading = true; }); + setState(() { _schedule = Scheduler.getScheduleList(); }); + setState(() { _loading = false; }); + } + + @override + Widget build(BuildContext context) { + loadScheduleData(); + + Future.delayed(const Duration(seconds: 15), () => loadScheduleData()); + + return _loading && _schedule.isNotEmpty ? const LoaderWidget() : ListView.separated( + scrollDirection: Axis.vertical, + shrinkWrap: true, + padding: const EdgeInsets.all(10), + separatorBuilder: (BuildContext context, int index) { + return SizedBox(height: index == 0 ? 10 : 4); + }, + itemCount: _schedule.length, + itemBuilder: (ctx, i) { + if(i == 0) { return CurrentReversWidget(scheduleElement: _schedule[i]); } + return ScheduledReversWidget(scheduleElement: _schedule[i]); + }, + ); + } +} \ No newline at end of file diff --git a/pubspec.lock b/pubspec.lock new file mode 100644 index 0000000..9090701 --- /dev/null +++ b/pubspec.lock @@ -0,0 +1,357 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + archive: + dependency: transitive + description: + name: archive + sha256: cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d + url: "https://pub.dev" + source: hosted + version: "3.6.1" + args: + dependency: transitive + description: + name: args + sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6 + url: "https://pub.dev" + source: hosted + version: "2.6.0" + async: + dependency: transitive + description: + name: async + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" + source: hosted + version: "2.11.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + characters: + dependency: transitive + description: + name: characters + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" + source: hosted + version: "1.3.0" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff + url: "https://pub.dev" + source: hosted + version: "2.0.3" + cli_util: + dependency: transitive + description: + name: cli_util + sha256: ff6785f7e9e3c38ac98b2fb035701789de90154024a75b6cb926445e83197d1c + url: "https://pub.dev" + source: hosted + version: "0.4.2" + clock: + dependency: transitive + description: + name: clock + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" + source: hosted + version: "1.1.1" + collection: + dependency: transitive + description: + name: collection + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + url: "https://pub.dev" + source: hosted + version: "1.18.0" + crypto: + dependency: transitive + description: + name: crypto + sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" + url: "https://pub.dev" + source: hosted + version: "3.0.6" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 + url: "https://pub.dev" + source: hosted + version: "1.0.8" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" + source: hosted + version: "1.3.1" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_launcher_icons: + dependency: "direct dev" + description: + name: flutter_launcher_icons + sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea" + url: "https://pub.dev" + source: hosted + version: "0.13.1" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: "9e8c3858111da373efc5aa341de011d9bd23e2c5c5e0c62bccf32438e192d7b1" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + get: + dependency: "direct main" + description: + name: get + sha256: e4e7335ede17452b391ed3b2ede016545706c01a02292a6c97619705e7d2a85e + url: "https://pub.dev" + source: hosted + version: "4.6.6" + http: + dependency: transitive + description: + name: http + sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010 + url: "https://pub.dev" + source: hosted + version: "1.2.2" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + url: "https://pub.dev" + source: hosted + version: "4.0.2" + image: + dependency: transitive + description: + name: image + sha256: f31d52537dc417fdcde36088fdf11d191026fd5e4fae742491ebd40e5a8bea7d + url: "https://pub.dev" + source: hosted + version: "4.3.0" + intl: + dependency: "direct main" + description: + name: intl + sha256: "99f282cb0e02edcbbf8c6b3bbc7c90b65635156c412e58f3975a7e55284ce685" + url: "https://pub.dev" + source: hosted + version: "0.20.0" + json_annotation: + dependency: transitive + description: + name: json_annotation + sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" + url: "https://pub.dev" + source: hosted + version: "4.9.0" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" + url: "https://pub.dev" + source: hosted + version: "10.0.5" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" + url: "https://pub.dev" + source: hosted + version: "3.0.5" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.dev" + source: hosted + version: "3.0.1" + lints: + dependency: transitive + description: + name: lints + sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290 + url: "https://pub.dev" + source: hosted + version: "3.0.0" + matcher: + dependency: transitive + description: + name: matcher + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + url: "https://pub.dev" + source: hosted + version: "0.12.16+1" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + url: "https://pub.dev" + source: hosted + version: "0.11.1" + meta: + dependency: transitive + description: + name: meta + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + url: "https://pub.dev" + source: hosted + version: "1.15.0" + path: + dependency: transitive + description: + name: path + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + url: "https://pub.dev" + source: hosted + version: "1.9.0" + petitparser: + dependency: transitive + description: + name: petitparser + sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 + url: "https://pub.dev" + source: hosted + version: "6.0.2" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" + source: hosted + version: "1.10.0" + sprintf: + dependency: "direct main" + description: + name: sprintf + sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" + url: "https://pub.dev" + source: hosted + version: "7.0.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + url: "https://pub.dev" + source: hosted + version: "1.11.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + url: "https://pub.dev" + source: hosted + version: "2.1.2" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + test_api: + dependency: transitive + description: + name: test_api + sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" + url: "https://pub.dev" + source: hosted + version: "0.7.2" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 + url: "https://pub.dev" + source: hosted + version: "1.4.0" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" + url: "https://pub.dev" + source: hosted + version: "14.2.5" + web: + dependency: transitive + description: + name: web + sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" + url: "https://pub.dev" + source: hosted + version: "0.5.1" + xml: + dependency: transitive + description: + name: xml + sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 + url: "https://pub.dev" + source: hosted + version: "6.5.0" + yaml: + dependency: transitive + description: + name: yaml + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + url: "https://pub.dev" + source: hosted + version: "3.1.2" +sdks: + dart: ">=3.5.0 <4.0.0" + flutter: ">=3.18.0-18.0.pre.54" diff --git a/pubspec.yaml b/pubspec.yaml new file mode 100644 index 0000000..e4e4ca8 --- /dev/null +++ b/pubspec.yaml @@ -0,0 +1,101 @@ +name: reverse_nn +description: "Реверсивное движение на Борском мосту" +# The following line prevents the package from being accidentally published to +# pub.dev using `flutter pub publish`. This is preferred for private packages. +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +# The following defines the version and build number for your application. +# A version number is three numbers separated by dots, like 1.2.43 +# followed by an optional build number separated by a +. +# Both the version and the builder number may be overridden in flutter +# build by specifying --build-name and --build-number, respectively. +# In Android, build-name is used as versionName while build-number used as versionCode. +# Read more about Android versioning at https://developer.android.com/studio/publish/versioning +# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion. +# Read more about iOS versioning at +# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html +# In Windows, build-name is used as the major, minor, and patch parts +# of the product and file versions while build-number is used as the build suffix. +version: 1.0.0+2 + +environment: + sdk: '>=3.3.3 <4.0.0' + +# Dependencies specify other packages that your package needs in order to work. +# To automatically upgrade your package dependencies to the latest versions +# consider running `flutter pub upgrade --major-versions`. Alternatively, +# dependencies can be manually updated by changing the version numbers below to +# the latest version available on pub.dev. To see which dependencies have newer +# versions available, run `flutter pub outdated`. +dependencies: + flutter: + sdk: flutter + sprintf: "^7.0.0" + + + # The following adds the Cupertino Icons font to your application. + # Use with the CupertinoIcons class for iOS style icons. + cupertino_icons: ^1.0.6 + get: ^4.6.6 + intl: ^0.20.0 + +dev_dependencies: + flutter_test: + sdk: flutter + + # The "flutter_lints" package below contains a set of recommended lints to + # encourage good coding practices. The lint set provided by the package is + # activated in the `analysis_options.yaml` file located at the root of your + # package. See that file for information about deactivating specific lint + # rules and activating additional ones. + flutter_lints: ^3.0.0 + flutter_launcher_icons: "^0.13.1" + +flutter_launcher_icons: + android: "launcher_icon" + ios: true + image_path: "assets/icon/icon.png" + min_sdk_android: 21 # android min sdk min:16, default 21 + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter packages. +flutter: + + # The following line ensures that the Material Icons font is + # included with your application, so that you can use the icons in + # the material Icons class. + uses-material-design: true + + # To add assets to your application, add an assets section, like this: + assets: + - assets/schedule.json + # - images/a_dot_burr.jpeg + # - images/a_dot_ham.jpeg + + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/assets-and-images/#resolution-aware + + # For details regarding adding assets from package dependencies, see + # https://flutter.dev/assets-and-images/#from-packages + + # To add custom fonts to your application, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts from package dependencies, + # see https://flutter.dev/custom-fonts/#from-packages diff --git a/test/widget_test.dart b/test/widget_test.dart new file mode 100644 index 0000000..644a2c5 --- /dev/null +++ b/test/widget_test.dart @@ -0,0 +1,30 @@ +// This is a basic Flutter widget test. +// +// To perform an interaction with a widget in your test, use the WidgetTester +// utility in the flutter_test package. For example, you can send tap and scroll +// gestures. You can also use WidgetTester to find child widgets in the widget +// tree, read text, and verify that the values of widget properties are correct. + +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'package:reverse_nn/main.dart'; + +void main() { + // testWidgets('Counter increments smoke test', (WidgetTester tester) async { + // // Build our app and trigger a frame. + // await tester.pumpWidget(const MyApp()); + // + // // Verify that our counter starts at 0. + // expect(find.text('0'), findsOneWidget); + // expect(find.text('1'), findsNothing); + // + // // Tap the '+' icon and trigger a frame. + // await tester.tap(find.byIcon(Icons.add)); + // await tester.pump(); + // + // // Verify that our counter has incremented. + // expect(find.text('0'), findsNothing); + // expect(find.text('1'), findsOneWidget); + // }); +}