From 1f24bdbaef90815ee5e09e3edad69469bf7fca1f Mon Sep 17 00:00:00 2001 From: iamr0s <271257581@qq.com> Date: Mon, 10 Apr 2023 15:08:10 +0800 Subject: [PATCH] first commit --- .gitignore | 11 + LICENSE | 674 ++++++++++++++++++ README.md | 21 + app/.gitignore | 3 + app/build.gradle.kts | 134 ++++ app/proguard-rules.pro | 81 +++ .../rosan/dhizuku/ExampleInstrumentedTest.kt | 24 + app/src/main/AndroidManifest.xml | 101 +++ .../aidl/android/content/IIntentReceiver.aidl | 9 + .../aidl/android/content/IIntentSender.aidl | 10 + .../content/pm/IOnChecksumsReadyListener.aidl | 6 + .../content/pm/IPackageDeleteObserver2.aidl | 7 + .../content/pm/IPackageInstallObserver2.aidl | 8 + .../android/content/pm/IPackageInstaller.aidl | 33 + .../content/pm/IPackageInstallerCallback.aidl | 9 + .../content/pm/IPackageInstallerSession.aidl | 33 + .../android/content/pm/IPackageManager.aidl | 231 ++++++ .../android/content/pm/PackageInstaller.aidl | 4 + app/src/main/java/com/rosan/dhizuku/App.kt | 40 ++ .../data/console/model/entity/ConsoleError.kt | 7 + .../console/model/impl/ConsoleRepoImpl.kt | 67 ++ .../impl/ShizukuConsoleBuilderRepoImpl.kt | 47 ++ .../data/console/repo/ConsoleBuilderRepo.kt | 35 + .../dhizuku/data/console/repo/ConsoleRepo.kt | 26 + .../data/console/util/ConsoleRepoUtil.kt | 15 + .../dhizuku/data/console/util/ConsoleUtil.kt | 30 + .../data/settings/model/room/DhizukuRoom.kt | 28 + .../data/settings/model/room/dao/AppDao.kt | 35 + .../settings/model/room/entity/AppEntity.kt | 24 + .../settings/model/room/impl/AppRepoImpl.kt | 35 + .../dhizuku/data/settings/repo/AppRepo.kt | 24 + .../com/rosan/dhizuku/di/dhizuku_module.kt | 16 + .../com/rosan/dhizuku/di/init/app_modules.kt | 11 + .../java/com/rosan/dhizuku/di/room_module.kt | 17 + .../com/rosan/dhizuku/di/viewmodel_module.kt | 11 + .../rosan/dhizuku/server/DhizukuConstants.kt | 5 + .../rosan/dhizuku/server/DhizukuDAReceiver.kt | 30 + .../rosan/dhizuku/server/DhizukuProvider.kt | 47 ++ .../rosan/dhizuku/server/impl/IDhizukuImpl.kt | 76 ++ .../server/impl/IDhizukuRemoteProcessImpl.kt | 96 +++ app/src/main/java/com/rosan/dhizuku/test.kt | 4 + .../ui/activity/RequestPermissionActivity.kt | 123 ++++ .../dhizuku/ui/activity/SettingsActivity.kt | 40 ++ .../dhizuku/ui/page/settings/SettingsPage.kt | 38 + .../ui/page/settings/SettingsScreen.kt | 5 + .../ui/page/settings/config/ConfigPage.kt | 105 +++ .../page/settings/config/ConfigViewAction.kt | 7 + .../page/settings/config/ConfigViewModel.kt | 113 +++ .../page/settings/config/ConfigViewState.kt | 13 + .../ui/page/settings/home/HomeCardItem.kt | 11 + .../dhizuku/ui/page/settings/home/HomePage.kt | 478 +++++++++++++ .../dhizuku/ui/page/settings/main/MainPage.kt | 160 +++++ .../ui/page/settings/main/NavigationData.kt | 10 + .../page/settings/preferred/PreferredPage.kt | 39 + .../java/com/rosan/dhizuku/ui/theme/Color.kt | 11 + .../rosan/dhizuku/ui/theme/DhizukuTheme.kt | 77 ++ .../java/com/rosan/dhizuku/ui/theme/Type.kt | 34 + .../dhizuku/ui/widget/dialog/AlertDialog.kt | 177 +++++ .../ui/widget/dialog/PositionDialog.kt | 205 ++++++ .../dhizuku/ui/widget/setting/BaseWidget.kt | 72 ++ .../ui/widget/setting/DropDownMenuWidget.kt | 119 ++++ .../dhizuku/ui/widget/setting/LabelWidget.kt | 28 + .../dhizuku/ui/widget/setting/SwitchWidget.kt | 31 + .../com/rosan/dhizuku/util/ContextUtil.kt | 21 + .../java/com/rosan/dhizuku/util/IOUtil.kt | 54 ++ .../round_hourglass_disabled_black_18.png | Bin 0 -> 313 bytes .../round_hourglass_disabled_black_20.png | Bin 0 -> 324 bytes .../round_hourglass_disabled_black_24.png | Bin 0 -> 365 bytes .../round_hourglass_disabled_black_36.png | Bin 0 -> 502 bytes .../round_hourglass_disabled_black_48.png | Bin 0 -> 631 bytes .../round_hourglass_empty_black_18.png | Bin 0 -> 230 bytes .../round_hourglass_empty_black_20.png | Bin 0 -> 237 bytes .../round_hourglass_empty_black_24.png | Bin 0 -> 257 bytes .../round_hourglass_empty_black_36.png | Bin 0 -> 356 bytes .../round_hourglass_empty_black_48.png | Bin 0 -> 442 bytes .../round_hourglass_disabled_black_18.png | Bin 0 -> 208 bytes .../round_hourglass_disabled_black_20.png | Bin 0 -> 198 bytes .../round_hourglass_disabled_black_24.png | Bin 0 -> 265 bytes .../round_hourglass_disabled_black_36.png | Bin 0 -> 365 bytes .../round_hourglass_disabled_black_48.png | Bin 0 -> 438 bytes .../round_hourglass_empty_black_18.png | Bin 0 -> 187 bytes .../round_hourglass_empty_black_20.png | Bin 0 -> 169 bytes .../round_hourglass_empty_black_24.png | Bin 0 -> 190 bytes .../round_hourglass_empty_black_36.png | Bin 0 -> 257 bytes .../round_hourglass_empty_black_48.png | Bin 0 -> 310 bytes .../drawable-v24/ic_launcher_foreground.xml | 30 + .../round_hourglass_disabled_black_18.png | Bin 0 -> 365 bytes .../round_hourglass_disabled_black_20.png | Bin 0 -> 301 bytes .../round_hourglass_disabled_black_24.png | Bin 0 -> 438 bytes .../round_hourglass_disabled_black_36.png | Bin 0 -> 631 bytes .../round_hourglass_disabled_black_48.png | Bin 0 -> 789 bytes .../round_hourglass_empty_black_18.png | Bin 0 -> 257 bytes .../round_hourglass_empty_black_20.png | Bin 0 -> 263 bytes .../round_hourglass_empty_black_24.png | Bin 0 -> 310 bytes .../round_hourglass_empty_black_36.png | Bin 0 -> 442 bytes .../round_hourglass_empty_black_48.png | Bin 0 -> 576 bytes .../round_hourglass_disabled_black_18.png | Bin 0 -> 502 bytes .../round_hourglass_disabled_black_20.png | Bin 0 -> 405 bytes .../round_hourglass_disabled_black_24.png | Bin 0 -> 631 bytes .../round_hourglass_disabled_black_36.png | Bin 0 -> 874 bytes .../round_hourglass_disabled_black_48.png | Bin 0 -> 1179 bytes .../round_hourglass_empty_black_18.png | Bin 0 -> 356 bytes .../round_hourglass_empty_black_20.png | Bin 0 -> 380 bytes .../round_hourglass_empty_black_24.png | Bin 0 -> 442 bytes .../round_hourglass_empty_black_36.png | Bin 0 -> 632 bytes .../round_hourglass_empty_black_48.png | Bin 0 -> 863 bytes .../round_hourglass_disabled_black_18.png | Bin 0 -> 631 bytes .../round_hourglass_disabled_black_20.png | Bin 0 -> 498 bytes .../round_hourglass_disabled_black_24.png | Bin 0 -> 789 bytes .../round_hourglass_disabled_black_36.png | Bin 0 -> 1179 bytes .../round_hourglass_disabled_black_48.png | Bin 0 -> 1617 bytes .../round_hourglass_empty_black_18.png | Bin 0 -> 442 bytes .../round_hourglass_empty_black_20.png | Bin 0 -> 451 bytes .../round_hourglass_empty_black_24.png | Bin 0 -> 576 bytes .../round_hourglass_empty_black_36.png | Bin 0 -> 863 bytes .../round_hourglass_empty_black_48.png | Bin 0 -> 1278 bytes .../res/drawable/ic_launcher_background.xml | 170 +++++ app/src/main/res/drawable/icon_background.xml | 9 + app/src/main/res/drawable/icon_foreground.xml | 21 + .../drawable/round_hourglass_disabled_20.xml | 13 + .../drawable/round_hourglass_disabled_24.xml | 13 + .../res/drawable/round_hourglass_empty_20.xml | 10 + .../res/drawable/round_hourglass_empty_24.xml | 10 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + app/src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 1404 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 2898 bytes app/src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 982 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 1772 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 1900 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 3918 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 2884 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 5914 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 3844 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 7778 bytes app/src/main/res/raw/empty_state.json | 1 + app/src/main/res/raw/loading.json | 1 + app/src/main/res/values/colors.xml | 10 + app/src/main/res/values/strings.xml | 51 ++ app/src/main/res/values/themes.xml | 12 + app/src/main/res/xml/device_admin.xml | 4 + .../java/com/rosan/dhizuku/ExampleUnitTest.kt | 17 + build.gradle.kts | 18 + dhizuku-aidl/.gitignore | 1 + dhizuku-aidl/build.gradle | 24 + dhizuku-aidl/src/main/AndroidManifest.xml | 2 + .../aidl/com/rosan/dhizuku/aidl/IDhizuku.aidl | 18 + .../dhizuku/aidl/IDhizukuRemoteProcess.aidl | 19 + .../IDhizukuRequestPermissionListener.aidl | 5 + dhizuku-shared/.gitignore | 1 + dhizuku-shared/build.gradle | 25 + dhizuku-shared/src/main/AndroidManifest.xml | 2 + .../dhizuku/shared/DhizukuVariables.java | 23 + gradle.properties | 25 + gradle/libs.versions.toml | 63 ++ gradle/wrapper/gradle-wrapper.jar | 0 gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 185 +++++ gradlew.bat | 89 +++ lib/.gitignore | 1 + lib/build.gradle.kts | 9 + lib/src/main/java/com/rosan/lib/MyClass.kt | 4 + settings.gradle.kts | 28 + 163 files changed, 5026 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 app/.gitignore create mode 100644 app/build.gradle.kts create mode 100644 app/proguard-rules.pro create mode 100644 app/src/androidTest/java/com/rosan/dhizuku/ExampleInstrumentedTest.kt create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/aidl/android/content/IIntentReceiver.aidl create mode 100644 app/src/main/aidl/android/content/IIntentSender.aidl create mode 100644 app/src/main/aidl/android/content/pm/IOnChecksumsReadyListener.aidl create mode 100644 app/src/main/aidl/android/content/pm/IPackageDeleteObserver2.aidl create mode 100644 app/src/main/aidl/android/content/pm/IPackageInstallObserver2.aidl create mode 100644 app/src/main/aidl/android/content/pm/IPackageInstaller.aidl create mode 100644 app/src/main/aidl/android/content/pm/IPackageInstallerCallback.aidl create mode 100644 app/src/main/aidl/android/content/pm/IPackageInstallerSession.aidl create mode 100644 app/src/main/aidl/android/content/pm/IPackageManager.aidl create mode 100644 app/src/main/aidl/android/content/pm/PackageInstaller.aidl create mode 100644 app/src/main/java/com/rosan/dhizuku/App.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/data/console/model/entity/ConsoleError.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/data/console/model/impl/ConsoleRepoImpl.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/data/console/model/impl/ShizukuConsoleBuilderRepoImpl.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/data/console/repo/ConsoleBuilderRepo.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/data/console/repo/ConsoleRepo.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/data/console/util/ConsoleRepoUtil.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/data/console/util/ConsoleUtil.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/data/settings/model/room/DhizukuRoom.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/data/settings/model/room/dao/AppDao.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/data/settings/model/room/entity/AppEntity.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/data/settings/model/room/impl/AppRepoImpl.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/data/settings/repo/AppRepo.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/di/dhizuku_module.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/di/init/app_modules.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/di/room_module.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/di/viewmodel_module.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/server/DhizukuConstants.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/server/DhizukuDAReceiver.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/server/DhizukuProvider.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/server/impl/IDhizukuImpl.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/server/impl/IDhizukuRemoteProcessImpl.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/test.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/ui/activity/RequestPermissionActivity.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/ui/activity/SettingsActivity.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/ui/page/settings/SettingsPage.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/ui/page/settings/SettingsScreen.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigPage.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigViewAction.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigViewModel.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigViewState.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/ui/page/settings/home/HomeCardItem.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/ui/page/settings/home/HomePage.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/ui/page/settings/main/MainPage.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/ui/page/settings/main/NavigationData.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/ui/page/settings/preferred/PreferredPage.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/ui/theme/Color.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/ui/theme/DhizukuTheme.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/ui/theme/Type.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/ui/widget/dialog/AlertDialog.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/ui/widget/dialog/PositionDialog.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/ui/widget/setting/BaseWidget.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/ui/widget/setting/DropDownMenuWidget.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/ui/widget/setting/LabelWidget.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/ui/widget/setting/SwitchWidget.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/util/ContextUtil.kt create mode 100644 app/src/main/java/com/rosan/dhizuku/util/IOUtil.kt create mode 100644 app/src/main/res/drawable-hdpi/round_hourglass_disabled_black_18.png create mode 100644 app/src/main/res/drawable-hdpi/round_hourglass_disabled_black_20.png create mode 100644 app/src/main/res/drawable-hdpi/round_hourglass_disabled_black_24.png create mode 100644 app/src/main/res/drawable-hdpi/round_hourglass_disabled_black_36.png create mode 100644 app/src/main/res/drawable-hdpi/round_hourglass_disabled_black_48.png create mode 100644 app/src/main/res/drawable-hdpi/round_hourglass_empty_black_18.png create mode 100644 app/src/main/res/drawable-hdpi/round_hourglass_empty_black_20.png create mode 100644 app/src/main/res/drawable-hdpi/round_hourglass_empty_black_24.png create mode 100644 app/src/main/res/drawable-hdpi/round_hourglass_empty_black_36.png create mode 100644 app/src/main/res/drawable-hdpi/round_hourglass_empty_black_48.png create mode 100644 app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_18.png create mode 100644 app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_20.png create mode 100644 app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_24.png create mode 100644 app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_36.png create mode 100644 app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_48.png create mode 100644 app/src/main/res/drawable-mdpi/round_hourglass_empty_black_18.png create mode 100644 app/src/main/res/drawable-mdpi/round_hourglass_empty_black_20.png create mode 100644 app/src/main/res/drawable-mdpi/round_hourglass_empty_black_24.png create mode 100644 app/src/main/res/drawable-mdpi/round_hourglass_empty_black_36.png create mode 100644 app/src/main/res/drawable-mdpi/round_hourglass_empty_black_48.png create mode 100644 app/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 app/src/main/res/drawable-xhdpi/round_hourglass_disabled_black_18.png create mode 100644 app/src/main/res/drawable-xhdpi/round_hourglass_disabled_black_20.png create mode 100644 app/src/main/res/drawable-xhdpi/round_hourglass_disabled_black_24.png create mode 100644 app/src/main/res/drawable-xhdpi/round_hourglass_disabled_black_36.png create mode 100644 app/src/main/res/drawable-xhdpi/round_hourglass_disabled_black_48.png create mode 100644 app/src/main/res/drawable-xhdpi/round_hourglass_empty_black_18.png create mode 100644 app/src/main/res/drawable-xhdpi/round_hourglass_empty_black_20.png create mode 100644 app/src/main/res/drawable-xhdpi/round_hourglass_empty_black_24.png create mode 100644 app/src/main/res/drawable-xhdpi/round_hourglass_empty_black_36.png create mode 100644 app/src/main/res/drawable-xhdpi/round_hourglass_empty_black_48.png create mode 100644 app/src/main/res/drawable-xxhdpi/round_hourglass_disabled_black_18.png create mode 100644 app/src/main/res/drawable-xxhdpi/round_hourglass_disabled_black_20.png create mode 100644 app/src/main/res/drawable-xxhdpi/round_hourglass_disabled_black_24.png create mode 100644 app/src/main/res/drawable-xxhdpi/round_hourglass_disabled_black_36.png create mode 100644 app/src/main/res/drawable-xxhdpi/round_hourglass_disabled_black_48.png create mode 100644 app/src/main/res/drawable-xxhdpi/round_hourglass_empty_black_18.png create mode 100644 app/src/main/res/drawable-xxhdpi/round_hourglass_empty_black_20.png create mode 100644 app/src/main/res/drawable-xxhdpi/round_hourglass_empty_black_24.png create mode 100644 app/src/main/res/drawable-xxhdpi/round_hourglass_empty_black_36.png create mode 100644 app/src/main/res/drawable-xxhdpi/round_hourglass_empty_black_48.png create mode 100644 app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_18.png create mode 100644 app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_20.png create mode 100644 app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_24.png create mode 100644 app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_36.png create mode 100644 app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_48.png create mode 100644 app/src/main/res/drawable-xxxhdpi/round_hourglass_empty_black_18.png create mode 100644 app/src/main/res/drawable-xxxhdpi/round_hourglass_empty_black_20.png create mode 100644 app/src/main/res/drawable-xxxhdpi/round_hourglass_empty_black_24.png create mode 100644 app/src/main/res/drawable-xxxhdpi/round_hourglass_empty_black_36.png create mode 100644 app/src/main/res/drawable-xxxhdpi/round_hourglass_empty_black_48.png create mode 100644 app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 app/src/main/res/drawable/icon_background.xml create mode 100644 app/src/main/res/drawable/icon_foreground.xml create mode 100644 app/src/main/res/drawable/round_hourglass_disabled_20.xml create mode 100644 app/src/main/res/drawable/round_hourglass_disabled_24.xml create mode 100644 app/src/main/res/drawable/round_hourglass_empty_20.xml create mode 100644 app/src/main/res/drawable/round_hourglass_empty_24.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/raw/empty_state.json create mode 100644 app/src/main/res/raw/loading.json create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/themes.xml create mode 100644 app/src/main/res/xml/device_admin.xml create mode 100644 app/src/test/java/com/rosan/dhizuku/ExampleUnitTest.kt create mode 100644 build.gradle.kts create mode 100644 dhizuku-aidl/.gitignore create mode 100644 dhizuku-aidl/build.gradle create mode 100644 dhizuku-aidl/src/main/AndroidManifest.xml create mode 100644 dhizuku-aidl/src/main/aidl/com/rosan/dhizuku/aidl/IDhizuku.aidl create mode 100644 dhizuku-aidl/src/main/aidl/com/rosan/dhizuku/aidl/IDhizukuRemoteProcess.aidl create mode 100644 dhizuku-aidl/src/main/aidl/com/rosan/dhizuku/aidl/IDhizukuRequestPermissionListener.aidl create mode 100644 dhizuku-shared/.gitignore create mode 100644 dhizuku-shared/build.gradle create mode 100644 dhizuku-shared/src/main/AndroidManifest.xml create mode 100644 dhizuku-shared/src/main/java/com/rosan/dhizuku/shared/DhizukuVariables.java create mode 100644 gradle.properties create mode 100644 gradle/libs.versions.toml create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 lib/.gitignore create mode 100644 lib/build.gradle.kts create mode 100644 lib/src/main/java/com/rosan/lib/MyClass.kt create mode 100644 settings.gradle.kts diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4efc3ac --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +*.iml +.gradle +/local.properties +/.idea +.DS_Store +/build +/captures +/keystore +.externalNativeBuild +.cxx +local.properties diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..2312774 --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +# Dhizuku + +## 介绍 + +参考Shizuku的设计思想,分享 DeviceOwner (设备所有者) 权限给其余应用 + +## 支持版本 + +Android 5.0 ~ 13 + +## 捐赠支持 + +- [支付宝](https://qr.alipay.com/fkx18580lfpydiop04dze47) +- [微信](https://missuo.ru/file/fee5df1381671c996b127.png) +- [币安](https://missuo.ru/file/fee5df1381671c996b127.png) + +## 开源协议 + +Dhizuku目前基于 [**GNU General Public License v3 (GPL-3)**](http://www.gnu.org/copyleft/gpl.html) 开源,但不保证未来依然继续遵循此协议或开源,有权更改开源协议或开源状态。 + +当您选择基于Dhizuku进行开发时,需遵循所当前依赖的上游源码所规定的开源协议,不受新上游源码的开源协议影响。 \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..2bdf0f6 --- /dev/null +++ b/app/.gitignore @@ -0,0 +1,3 @@ +/build +/debug +/release \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts new file mode 100644 index 0000000..658d6c1 --- /dev/null +++ b/app/build.gradle.kts @@ -0,0 +1,134 @@ +import java.io.FileInputStream +import java.util.* + +@Suppress("DSL_SCOPE_VIOLATION") +plugins { + alias(libs.plugins.agp.app) + alias(libs.plugins.kotlin) + id("kotlin-kapt") +} + +val keystoreProps = Properties().apply { + load(FileInputStream(rootProject.file("keystore/r0s.properties"))) +} + +@Suppress("UnstableApiUsage") +android { + compileSdk = 33 + + defaultConfig { + // 你如果根据InstallerX的源码进行打包成apk或其他安装包格式 + // 请换一个applicationId,不要和官方的任何发布版本产生冲突。 + // If you use InstallerX source code, package it into apk or other installation package format + // Please change the applicationId to one that does not conflict with any official release. + applicationId = "com.rosan.dhizuku" + minSdk = 21 + targetSdk = 33 + versionCode = 2 + versionName = "1.0.2" + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + vectorDrawables { + useSupportLibrary = true + } + } + + signingConfigs { + getByName("debug") { + keyAlias = keystoreProps.getProperty("keyAlias") + keyPassword = keystoreProps.getProperty("keyPassword") + storeFile = file(keystoreProps.getProperty("storeFile")) + storePassword = keystoreProps.getProperty("storePassword") + enableV1Signing = true + enableV2Signing = true + } + + create("release") { + keyAlias = keystoreProps.getProperty("keyAlias") + keyPassword = keystoreProps.getProperty("keyPassword") + storeFile = file(keystoreProps.getProperty("storeFile")) + storePassword = keystoreProps.getProperty("storePassword") + enableV1Signing = true + enableV2Signing = true + } + } + + buildTypes { + getByName("debug") { + signingConfig = signingConfigs.getByName("debug") + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + + getByName("release") { + signingConfig = signingConfigs.getByName("release") + isMinifyEnabled = true + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + + compileOptions { + targetCompatibility = JavaVersion.VERSION_11 + sourceCompatibility = JavaVersion.VERSION_11 + } + + kotlin { + jvmToolchain(11) + } + + buildFeatures { + compose = true + } + + composeOptions { +// kotlinCompilerExtensionVersion = libs.versions.compose.get() + kotlinCompilerExtensionVersion = "1.4.4" + } + + packagingOptions { + resources { + excludes.add("/META-INF/{AL2.0,LGPL2.1}") + } + } +} + +dependencies { + implementation(project(":dhizuku-aidl")) + implementation(project(":dhizuku-shared")) + + implementation(libs.androidx.core) + implementation(libs.androidx.lifecycle) + implementation(libs.androidx.activity.compose) + implementation(libs.compose.ui) + implementation(libs.compose.material) + implementation(libs.compose.material3) + implementation(libs.compose.uiToolingPreview) + + implementation(libs.compose.navigation) + implementation(libs.compose.materialIcons) + + implementation(libs.room.runtime) + kapt(libs.room.compiler) + implementation(libs.room.ktx) + + implementation(libs.koin.core) + implementation(libs.koin.android) + implementation(libs.koin.compose) + + implementation(libs.accompanist) + implementation(libs.accompanist.navigationAnimation) + implementation(libs.accompanist.flowlayout) + implementation(libs.accompanist.drawablepainter) + implementation(libs.accompanist.systemuicontroller) + + implementation(libs.xxpermissions) + + implementation(libs.rikka.shizuku.api) + implementation(libs.rikka.shizuku.provider) +} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..fac7f23 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,81 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle.kts. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile + +############################### +# kotlinx serialization rules # +############################### +# Keep `Companion` object fields of serializable classes. +# This avoids serializer lookup through `getDeclaredClasses` as done for named companion objects. +-if @kotlinx.serialization.Serializable class ** +-keepclassmembers class <1> { + static <1>$Companion Companion; +} + +# Keep `serializer()` on companion objects (both default and named) of serializable classes. +-if @kotlinx.serialization.Serializable class ** { + static **$* *; +} +-keepclassmembers class <2>$<3> { + kotlinx.serialization.KSerializer serializer(...); +} + +# Keep `INSTANCE.serializer()` of serializable objects. +-if @kotlinx.serialization.Serializable class ** { + public static ** INSTANCE; +} +-keepclassmembers class <1> { + public static <1> INSTANCE; + kotlinx.serialization.KSerializer serializer(...); +} + +# @Serializable and @Polymorphic are used at runtime for polymorphic serialization. +-keepattributes RuntimeVisibleAnnotations,AnnotationDefault + +# Serializer for classes with named companion objects are retrieved using `getDeclaredClasses`. +# If you have any, uncomment and replace classes with those containing named companion objects. +#-keepattributes InnerClasses # Needed for `getDeclaredClasses`. +#-if @kotlinx.serialization.Serializable class +#com.example.myapplication.HasNamedCompanion, # <-- List serializable classes with named companions. +#com.example.myapplication.HasNamedCompanion2 +#{ +# static **$* *; +#} +#-keepnames class <1>$$serializer { # -keepnames suffices; class is kept when serializer() is kept. +# static <1>$$serializer INSTANCE; +#} + +-keep public class android.** {*;} +-keep public class com.rosan.dhizuku.App {*;} +-keep public class com.rosan.dhizuku.ui.activity.** extends android.app.Activity +-keep public class com.rosan.dhizuku.data.process.model.impl.** { + public static void main(java.lang.String[]); +} +#-keep public class com.rosan.installer.data.process.model.impl.** extends com.rosan.installer.data.process.repo.ProcessRepo { +#public static void main(java.lang.String[]); +#} +#-keep public class com.rosan.installer.** extends android.app.Service +#-keep public class com.rosan.installer.** extends android.content.BroadcastReceiver +#-keep public class com.rosan.installer.** extends android.content.ContentProvider +#-keep class androidx.core.content.FileProvider {*;} +#-keep interface androidx.core.content.FileProvider$PathStrategy {*;} + +-keep class rikka.shizuku.ShizukuProvider diff --git a/app/src/androidTest/java/com/rosan/dhizuku/ExampleInstrumentedTest.kt b/app/src/androidTest/java/com/rosan/dhizuku/ExampleInstrumentedTest.kt new file mode 100644 index 0000000..1300147 --- /dev/null +++ b/app/src/androidTest/java/com/rosan/dhizuku/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package com.rosan.dhizuku + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("com.rosan.installer", appContext.packageName) + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..c869a9e --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/aidl/android/content/IIntentReceiver.aidl b/app/src/main/aidl/android/content/IIntentReceiver.aidl new file mode 100644 index 0000000..5d9895e --- /dev/null +++ b/app/src/main/aidl/android/content/IIntentReceiver.aidl @@ -0,0 +1,9 @@ +package android.content; + +import android.content.Intent; +import android.os.Bundle; + +oneway interface IIntentReceiver { + void performReceive(in Intent intent, int resultCode, String data, + in Bundle extras, boolean ordered, boolean sticky, int sendingUser); +} diff --git a/app/src/main/aidl/android/content/IIntentSender.aidl b/app/src/main/aidl/android/content/IIntentSender.aidl new file mode 100644 index 0000000..2736b61 --- /dev/null +++ b/app/src/main/aidl/android/content/IIntentSender.aidl @@ -0,0 +1,10 @@ +package android.content; + +import android.content.IIntentReceiver; +import android.content.Intent; +import android.os.Bundle; + +oneway interface IIntentSender { + void send(int code, in Intent intent, String resolvedType, in IBinder whitelistToken, + IIntentReceiver finishedReceiver, String requiredPermission, in Bundle options); +} \ No newline at end of file diff --git a/app/src/main/aidl/android/content/pm/IOnChecksumsReadyListener.aidl b/app/src/main/aidl/android/content/pm/IOnChecksumsReadyListener.aidl new file mode 100644 index 0000000..9963a87 --- /dev/null +++ b/app/src/main/aidl/android/content/pm/IOnChecksumsReadyListener.aidl @@ -0,0 +1,6 @@ +package android.content.pm; +import android.content.pm.ApkChecksum; + +oneway interface IOnChecksumsReadyListener { + void onChecksumsReady(in List checksums); +} \ No newline at end of file diff --git a/app/src/main/aidl/android/content/pm/IPackageDeleteObserver2.aidl b/app/src/main/aidl/android/content/pm/IPackageDeleteObserver2.aidl new file mode 100644 index 0000000..cc2406b --- /dev/null +++ b/app/src/main/aidl/android/content/pm/IPackageDeleteObserver2.aidl @@ -0,0 +1,7 @@ +package android.content.pm; +import android.content.Intent; + +oneway interface IPackageDeleteObserver2 { + void onUserActionRequired(in Intent intent); + void onPackageDeleted(String packageName, int returnCode, String msg); +} \ No newline at end of file diff --git a/app/src/main/aidl/android/content/pm/IPackageInstallObserver2.aidl b/app/src/main/aidl/android/content/pm/IPackageInstallObserver2.aidl new file mode 100644 index 0000000..a1c9ec3 --- /dev/null +++ b/app/src/main/aidl/android/content/pm/IPackageInstallObserver2.aidl @@ -0,0 +1,8 @@ +package android.content.pm; +import android.content.Intent; +import android.os.Bundle; + +oneway interface IPackageInstallObserver2 { + void onUserActionRequired(in Intent intent); + void onPackageInstalled(String basePackageName, int returnCode, String msg, in Bundle extras); +} \ No newline at end of file diff --git a/app/src/main/aidl/android/content/pm/IPackageInstaller.aidl b/app/src/main/aidl/android/content/pm/IPackageInstaller.aidl new file mode 100644 index 0000000..14aab7c --- /dev/null +++ b/app/src/main/aidl/android/content/pm/IPackageInstaller.aidl @@ -0,0 +1,33 @@ +package android.content.pm; + +import android.content.pm.IPackageDeleteObserver2; +import android.content.pm.IPackageInstallerCallback; +import android.content.pm.IPackageInstallerSession; +import android.content.pm.PackageInstaller; +import android.content.pm.VersionedPackage; +import android.content.IntentSender; +import android.graphics.Bitmap; + +interface IPackageInstaller { + int createSession(in PackageInstaller.SessionParams params, String installerPackageName, String installerAttributionTag, int userId); +// @RequiresApi(Build.VERSION_CODES.S) +// int createSession(in PackageInstaller.SessionParams params, String installerPackageName, int userId); + void updateSessionAppIcon(int sessionId, in Bitmap appIcon); + void updateSessionAppLabel(int sessionId, String appLabel); + void abandonSession(int sessionId); + IPackageInstallerSession openSession(int sessionId); + PackageInstaller.SessionInfo getSessionInfo(int sessionId); + void registerCallback(IPackageInstallerCallback callback, int userId); + void unregisterCallback(IPackageInstallerCallback callback); + void uninstall(in VersionedPackage versionedPackage, String callerPackageName, int flags, + in IntentSender statusReceiver, int userId); + void uninstallExistingPackage(in VersionedPackage versionedPackage, String callerPackageName, + in IntentSender statusReceiver, int userId); + void installExistingPackage(String packageName, int installFlags, int installReason, + in IntentSender statusReceiver, int userId, in List whiteListedPermissions); + void setPermissionsResult(int sessionId, boolean accepted); + void bypassNextStagedInstallerCheck(boolean value); + void bypassNextAllowedApexUpdateCheck(boolean value); + void setAllowUnlimitedSilentUpdates(String installerPackageName); + void setSilentUpdatesThrottleTime(long throttleTimeInSeconds); +} \ No newline at end of file diff --git a/app/src/main/aidl/android/content/pm/IPackageInstallerCallback.aidl b/app/src/main/aidl/android/content/pm/IPackageInstallerCallback.aidl new file mode 100644 index 0000000..42e11bc --- /dev/null +++ b/app/src/main/aidl/android/content/pm/IPackageInstallerCallback.aidl @@ -0,0 +1,9 @@ +package android.content.pm; + +oneway interface IPackageInstallerCallback { + void onSessionCreated(int sessionId); + void onSessionBadgingChanged(int sessionId); + void onSessionActiveChanged(int sessionId, boolean active); + void onSessionProgressChanged(int sessionId, float progress); + void onSessionFinished(int sessionId, boolean success); +} \ No newline at end of file diff --git a/app/src/main/aidl/android/content/pm/IPackageInstallerSession.aidl b/app/src/main/aidl/android/content/pm/IPackageInstallerSession.aidl new file mode 100644 index 0000000..0204d42 --- /dev/null +++ b/app/src/main/aidl/android/content/pm/IPackageInstallerSession.aidl @@ -0,0 +1,33 @@ +package android.content.pm; + +import android.content.pm.Checksum; +import android.content.pm.IOnChecksumsReadyListener; +import android.content.pm.IPackageInstallObserver2; +import android.content.IntentSender; +import android.os.ParcelFileDescriptor; + +interface IPackageInstallerSession { + void setClientProgress(float progress); + void addClientProgress(float progress); + String[] getNames(); + ParcelFileDescriptor openWrite(String name, long offsetBytes, long lengthBytes); + ParcelFileDescriptor openRead(String name); + void write(String name, long offsetBytes, long lengthBytes, in ParcelFileDescriptor fd); + void stageViaHardLink(String target); + void setChecksums(String name, in Checksum[] checksums, in byte[] signature); + void requestChecksums(in String name, int optional, int required, in List trustedInstallers, in IOnChecksumsReadyListener onChecksumsReadyListener); + void removeSplit(String splitName); + void close(); + void commit(in IntentSender statusReceiver, boolean forTransferred); + void transfer(in String packageName); + void abandon(); + void addFile(int location, String name, long lengthBytes, in byte[] metadata, in byte[] signature); + void removeFile(int location, String name); + boolean isMultiPackage(); + int[] getChildSessionIds(); + void addChildSessionId(in int sessionId); + void removeChildSessionId(in int sessionId); + int getParentSessionId(); + boolean isStaged(); + int getInstallFlags(); +} \ No newline at end of file diff --git a/app/src/main/aidl/android/content/pm/IPackageManager.aidl b/app/src/main/aidl/android/content/pm/IPackageManager.aidl new file mode 100644 index 0000000..86ce213 --- /dev/null +++ b/app/src/main/aidl/android/content/pm/IPackageManager.aidl @@ -0,0 +1,231 @@ +package android.content.pm; + +import android.content.ComponentName; +import android.content.Intent; +import android.content.IntentFilter; +import android.content.pm.ActivityInfo; +import android.content.pm.ApplicationInfo; +import android.content.pm.ChangedPackages; +import android.content.pm.InstantAppInfo; +import android.content.pm.FeatureInfo; +import android.content.pm.InstallSourceInfo; +import android.content.pm.IOnChecksumsReadyListener; +import android.content.pm.IPackageInstaller; +import android.content.pm.IntentFilterVerificationInfo; +import android.content.pm.InstrumentationInfo; +import android.content.pm.ModuleInfo; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager.ComponentEnabledSetting; +import android.content.pm.ProviderInfo; +import android.content.pm.PermissionGroupInfo; +import android.content.pm.PermissionInfo; +import android.content.pm.ResolveInfo; +import android.content.pm.ServiceInfo; +import android.content.pm.UserInfo; +import android.content.pm.VersionedPackage; +import android.graphics.Bitmap; +import android.net.Uri; +import android.os.Bundle; +import android.os.ParcelFileDescriptor; +import android.os.PersistableBundle; +import android.content.IntentSender; + +interface IPackageManager { + void checkPackageStartable(String packageName, int userId); + boolean isPackageAvailable(String packageName, int userId); + PackageInfo getPackageInfo(String packageName, long flags, int userId); + PackageInfo getPackageInfoVersioned(in VersionedPackage versionedPackage, + long flags, int userId); + int getPackageUid(String packageName, long flags, int userId); + int[] getPackageGids(String packageName, long flags, int userId); + String[] currentToCanonicalPackageNames(in String[] names); + String[] canonicalToCurrentPackageNames(in String[] names); + ApplicationInfo getApplicationInfo(String packageName, long flags, int userId); + int getTargetSdkVersion(String packageName); + ActivityInfo getActivityInfo(in ComponentName className, long flags, int userId); + boolean activitySupportsIntent(in ComponentName className, in Intent intent, + String resolvedType); + ActivityInfo getReceiverInfo(in ComponentName className, long flags, int userId); + ServiceInfo getServiceInfo(in ComponentName className, long flags, int userId); + ProviderInfo getProviderInfo(in ComponentName className, long flags, int userId); + boolean isProtectedBroadcast(String actionName); + int checkSignatures(String pkg1, String pkg2); + int checkUidSignatures(int uid1, int uid2); + List getAllPackages(); + String[] getPackagesForUid(int uid); + String getNameForUid(int uid); + String[] getNamesForUids(in int[] uids); + int getUidForSharedUser(String sharedUserName); + int getFlagsForUid(int uid); + int getPrivateFlagsForUid(int uid); + boolean isUidPrivileged(int uid); + ResolveInfo resolveIntent(in Intent intent, String resolvedType, long flags, int userId); + ResolveInfo findPersistentPreferredActivity(in Intent intent, int userId); + boolean canForwardTo(in Intent intent, String resolvedType, int sourceUserId, int targetUserId); + ResolveInfo resolveService(in Intent intent, + String resolvedType, long flags, int userId); + ProviderInfo resolveContentProvider(String name, long flags, int userId); + void querySyncProviders(inout List outNames, + inout List outInfo); + InstrumentationInfo getInstrumentationInfo( + in ComponentName className, int flags); + void finishPackageInstall(int token, boolean didLaunch); + void setInstallerPackageName(in String targetPackage, in String installerPackageName); + void setApplicationCategoryHint(String packageName, int categoryHint, String callerPackageName); + String getInstallerPackageName(in String packageName); + InstallSourceInfo getInstallSourceInfo(in String packageName); + void resetApplicationPreferences(int userId); + ResolveInfo getLastChosenActivity(in Intent intent, + String resolvedType, int flags); + void setLastChosenActivity(in Intent intent, String resolvedType, int flags, + in IntentFilter filter, int match, in ComponentName activity); + void addPreferredActivity(in IntentFilter filter, int match, + in ComponentName[] set, in ComponentName activity, int userId, boolean removeExisting); + void replacePreferredActivity(in IntentFilter filter, int match, + in ComponentName[] set, in ComponentName activity, int userId); + void clearPackagePreferredActivities(String packageName); + int getPreferredActivities(out List outFilters, + out List outActivities, String packageName); + void addPersistentPreferredActivity(in IntentFilter filter, in ComponentName activity, int userId); + void clearPackagePersistentPreferredActivities(String packageName, int userId); + void addCrossProfileIntentFilter(in IntentFilter intentFilter, String ownerPackage, + int sourceUserId, int targetUserId, int flags); + void clearCrossProfileIntentFilters(int sourceUserId, String ownerPackage); + String[] setDistractingPackageRestrictionsAsUser(in String[] packageNames, int restrictionFlags, + int userId); + String[] getUnsuspendablePackagesForUser(in String[] packageNames, int userId); + boolean isPackageSuspendedForUser(String packageName, int userId); + Bundle getSuspendedPackageAppExtras(String packageName, int userId); + byte[] getPreferredActivityBackup(int userId); + void restorePreferredActivities(in byte[] backup, int userId); + byte[] getDefaultAppsBackup(int userId); + void restoreDefaultApps(in byte[] backup, int userId); + byte[] getDomainVerificationBackup(int userId); + void restoreDomainVerification(in byte[] backup, int userId); + + ComponentName getHomeActivities(out List outHomeCandidates); + void setHomeActivity(in ComponentName className, int userId); + void overrideLabelAndIcon(in ComponentName componentName, String nonLocalizedLabel, + int icon, int userId); + void restoreLabelAndIcon(in ComponentName componentName, int userId); + + void setComponentEnabledSetting(in ComponentName componentName, + in int newState, in int flags, int userId); + void setComponentEnabledSettings(in List settings, int userId); + + int getComponentEnabledSetting(in ComponentName componentName, int userId); + + void setApplicationEnabledSetting(in String packageName, in int newState, int flags, + int userId, String callingPackage); + + int getApplicationEnabledSetting(in String packageName, int userId); + void logAppProcessStartIfNeeded(String packageName, String processName, int uid, String seinfo, String apkFile, int pid); + void flushPackageRestrictionsAsUser(in int userId); + + void setPackageStoppedState(String packageName, boolean stopped, int userId); + void freeStorage(in String volumeUuid, in long freeStorageSize, + int storageFlags, in IntentSender pi); + void clearApplicationProfileData(in String packageName); + + String[] getSystemSharedLibraryNames(); + boolean hasSystemFeature(String name, int version); + void enterSafeMode(); + boolean isSafeMode(); + boolean hasSystemUidErrors(); + oneway void notifyPackageUse(String packageName, int reason); + oneway void notifyDexLoad(String loadingPackageName, + in Map classLoaderContextMap, String loaderIsa); + boolean performDexOptMode(String packageName, boolean checkProfiles, + String targetCompilerFilter, boolean force, boolean bootComplete, String splitName); + boolean performDexOptSecondary(String packageName, + String targetCompilerFilter, boolean force); + void dumpProfiles(String packageName, boolean dumpClassesAndMethods); + void forceDexOpt(String packageName); + void reconcileSecondaryDexFiles(String packageName); + int getMoveStatus(int moveId); + int movePackage(in String packageName, in String volumeUuid); + int movePrimaryStorage(in String volumeUuid); + boolean setInstallLocation(int loc); + int getInstallLocation(); + int installExistingPackageAsUser(String packageName, int userId, int installFlags, + int installReason, in List whiteListedPermissions); + void verifyPendingInstall(int id, int verificationCode); + void extendVerificationTimeout(int id, int verificationCodeAtTimeout, long millisecondsToDelay); + void verifyIntentFilter(int id, int verificationCode, in List failedDomains); + int getIntentVerificationStatus(String packageName, int userId); + boolean updateIntentVerificationStatus(String packageName, int status, int userId); + boolean isFirstBoot(); + boolean isOnlyCoreApps(); + boolean isDeviceUpgrading(); + + boolean isStorageLow(); + boolean setApplicationHiddenSettingAsUser(String packageName, boolean hidden, int userId); + boolean getApplicationHiddenSettingAsUser(String packageName, int userId); + void setSystemAppHiddenUntilInstalled(String packageName, boolean hidden); + boolean setSystemAppInstallState(String packageName, boolean installed, int userId); + IPackageInstaller getPackageInstaller(); + boolean setBlockUninstallForUser(String packageName, boolean blockUninstall, int userId); + boolean getBlockUninstallForUser(String packageName, int userId); + String getPermissionControllerPackageName(); + String getSdkSandboxPackageName(); + byte[] getInstantAppCookie(String packageName, int userId); + boolean setInstantAppCookie(String packageName, in byte[] cookie, int userId); + Bitmap getInstantAppIcon(String packageName, int userId); + boolean isInstantApp(String packageName, int userId); + boolean setRequiredForSystemUser(String packageName, boolean systemUserApp); + void setUpdateAvailable(String packageName, boolean updateAvaialble); + String getServicesSystemSharedLibraryPackageName(); + String getSharedSystemSharedLibraryPackageName(); + ChangedPackages getChangedPackages(int sequenceNumber, int userId); + boolean isPackageDeviceAdminOnAnyUser(String packageName); + int getInstallReason(String packageName, int userId); + boolean canRequestPackageInstalls(String packageName, int userId); + void deletePreloadsFileCache(); + ComponentName getInstantAppResolverComponent(); + ComponentName getInstantAppResolverSettingsComponent(); + ComponentName getInstantAppInstallerComponent(); + String getInstantAppAndroidId(String packageName, int userId); + void setHarmfulAppWarning(String packageName, CharSequence warning, int userId); + CharSequence getHarmfulAppWarning(String packageName, int userId); + boolean hasSigningCertificate(String packageName, in byte[] signingCertificate, int flags); + boolean hasUidSigningCertificate(int uid, in byte[] signingCertificate, int flags); + String getDefaultTextClassifierPackageName(); + String getSystemTextClassifierPackageName(); + String getAttentionServicePackageName(); + String getRotationResolverPackageName(); + String getWellbeingPackageName(); + String getAppPredictionServicePackageName(); + String getSystemCaptionsServicePackageName(); + String getSetupWizardPackageName(); + String getIncidentReportApproverPackageName(); + String getContentCaptureServicePackageName(); + boolean isPackageStateProtected(String packageName, int userId); + void sendDeviceCustomizationReadyBroadcast(); + List getInstalledModules(int flags); + ModuleInfo getModuleInfo(String packageName, int flags); + int getRuntimePermissionsVersion(int userId); + void setRuntimePermissionsVersion(int version, int userId); + void notifyPackagesReplacedReceived(in String[] packages); + void requestPackageChecksums(in String packageName, boolean includeSplits, int optional, int required, in List trustedInstallers, in IOnChecksumsReadyListener onChecksumsReadyListener, int userId); + IntentSender getLaunchIntentSenderForPackage(String packageName, String callingPackage, + String featureId, int userId); + String[] getAppOpPermissionPackages(String permissionName); + PermissionGroupInfo getPermissionGroupInfo(String name, int flags); + boolean addPermission(in PermissionInfo info); + boolean addPermissionAsync(in PermissionInfo info); + void removePermission(String name); + int checkPermission(String permName, String pkgName, int userId); + void grantRuntimePermission(String packageName, String permissionName, int userId); + int checkUidPermission(String permName, int uid); + void setMimeGroup(String packageName, String group, in List mimeTypes); + String getSplashScreenTheme(String packageName, int userId); + void setSplashScreenTheme(String packageName, String themeName, int userId); + List getMimeGroup(String packageName, String group); + boolean isAutoRevokeWhitelisted(String packageName); + void makeProviderVisible(int recipientAppId, String visibleAuthority); + void makeUidVisible(int recipientAppId, int visibleUid); + IBinder getHoldLockToken(); + void holdLock(in IBinder token, in int durationMs); + void setKeepUninstalledPackages(in List packageList); + boolean canPackageQuery(String sourcePackageName, String targetPackageName, int userId); +} \ No newline at end of file diff --git a/app/src/main/aidl/android/content/pm/PackageInstaller.aidl b/app/src/main/aidl/android/content/pm/PackageInstaller.aidl new file mode 100644 index 0000000..dfca396 --- /dev/null +++ b/app/src/main/aidl/android/content/pm/PackageInstaller.aidl @@ -0,0 +1,4 @@ +package android.content.pm; + +parcelable PackageInstaller.SessionParams; +parcelable PackageInstaller.SessionInfo; \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/App.kt b/app/src/main/java/com/rosan/dhizuku/App.kt new file mode 100644 index 0000000..bce417f --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/App.kt @@ -0,0 +1,40 @@ +package com.rosan.dhizuku + +import android.app.Application +import android.app.admin.DevicePolicyManager +import android.content.ComponentName +import android.content.Context +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue +import com.rosan.dhizuku.di.init.appModules +import com.rosan.dhizuku.server.DhizukuDAReceiver +import org.koin.android.ext.koin.androidContext +import org.koin.android.ext.koin.androidLogger +import org.koin.core.context.startKoin +import rikka.sui.Sui + +class App : Application() { + var isDeviceAdminer by mutableStateOf(false) + private set + + var isDeviceOwner by mutableStateOf(false) + private set + + override fun onCreate() { + super.onCreate() + syncDeviceOwnerStatus() + startKoin { + androidLogger() + androidContext(this@App) + modules(appModules) + } + Sui.init(packageName) + } + + fun syncDeviceOwnerStatus() { + val manager = getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager + isDeviceAdminer = manager.isAdminActive(ComponentName(this, DhizukuDAReceiver::class.java)) + isDeviceOwner = manager.isDeviceOwnerApp(this.packageName) + } +} diff --git a/app/src/main/java/com/rosan/dhizuku/data/console/model/entity/ConsoleError.kt b/app/src/main/java/com/rosan/dhizuku/data/console/model/entity/ConsoleError.kt new file mode 100644 index 0000000..9ae7304 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/data/console/model/entity/ConsoleError.kt @@ -0,0 +1,7 @@ +package com.rosan.dhizuku.data.console.model.entity + +data class ConsoleError( + val code: Int, + val read: String, + val error: String +) : Exception("code: $code, read: $read, error: $error") \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/data/console/model/impl/ConsoleRepoImpl.kt b/app/src/main/java/com/rosan/dhizuku/data/console/model/impl/ConsoleRepoImpl.kt new file mode 100644 index 0000000..cf37af6 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/data/console/model/impl/ConsoleRepoImpl.kt @@ -0,0 +1,67 @@ +package com.rosan.dhizuku.data.console.model.impl + +import android.os.Build +import com.rosan.dhizuku.data.console.repo.ConsoleRepo +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import java.io.InputStream +import java.io.OutputStream +import java.util.concurrent.TimeUnit + +class ConsoleRepoImpl( + private val process: Process +) : ConsoleRepo { + override val inputStream: InputStream = process.inputStream + + override val errorStream: InputStream = process.errorStream + + override val outputStream: OutputStream = process.outputStream + + override suspend fun waitIt() { + withContext(Dispatchers.IO) { + kotlin.runCatching { + process.waitFor() + } + } + } + + override suspend fun waitIt(timeout: Long, unit: TimeUnit): Boolean { + return withContext(Dispatchers.IO) { + val startTime = System.nanoTime() + var rem = unit.toNanos(timeout) + do { + kotlin.runCatching { + exitValue() + return@withContext true + }.getOrElse { + if (rem > 0) Thread.sleep( + Math.min(TimeUnit.NANOSECONDS.toMillis(rem) + 1, 100) + ) + } + rem = unit.toNanos(timeout) - (System.nanoTime() - startTime) + } while (rem > 0) + return@withContext false + } + } + + override fun exitValue(): Int { + return process.exitValue() + } + + override fun isAlive(): Boolean { + return kotlin.runCatching { + exitValue() + false + }.getOrElse { true } + } + + override fun close() { + process.destroy() + } + + override fun closeForcibly() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) + process.destroyForcibly() + else close() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/data/console/model/impl/ShizukuConsoleBuilderRepoImpl.kt b/app/src/main/java/com/rosan/dhizuku/data/console/model/impl/ShizukuConsoleBuilderRepoImpl.kt new file mode 100644 index 0000000..834c17a --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/data/console/model/impl/ShizukuConsoleBuilderRepoImpl.kt @@ -0,0 +1,47 @@ +package com.rosan.dhizuku.data.console.model.impl + +import android.content.pm.PackageManager +import com.rosan.dhizuku.data.console.repo.ConsoleBuilderRepo +import com.rosan.dhizuku.data.console.repo.ConsoleRepo +import kotlinx.coroutines.channels.awaitClose +import kotlinx.coroutines.flow.callbackFlow +import kotlinx.coroutines.flow.first +import rikka.shizuku.Shizuku + +class ShizukuConsoleBuilderRepoImpl : ConsoleBuilderRepo() { + private fun _open(): ConsoleRepoImpl { + return ConsoleRepoImpl( + Shizuku.newProcess( + command.toTypedArray(), + environment?.toTypedArray(), + directory + ) + ) + } + + override suspend fun open(): ConsoleRepo { + return callbackFlow { + if (Shizuku.checkSelfPermission() == PackageManager.PERMISSION_GRANTED) { + send(_open()) + awaitClose { } + } else { + val listener = + Shizuku.OnRequestPermissionResultListener { requestCode, grantResult -> + if (requestCode != 0) return@OnRequestPermissionResultListener + kotlin.runCatching { _open() } + .onSuccess { + trySend(it) + } + .onFailure { + close(it) + } + } + Shizuku.addRequestPermissionResultListener(listener) + Shizuku.requestPermission(0) + awaitClose { + Shizuku.removeRequestPermissionResultListener(listener) + } + } + }.first() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/data/console/repo/ConsoleBuilderRepo.kt b/app/src/main/java/com/rosan/dhizuku/data/console/repo/ConsoleBuilderRepo.kt new file mode 100644 index 0000000..ff386fa --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/data/console/repo/ConsoleBuilderRepo.kt @@ -0,0 +1,35 @@ +package com.rosan.dhizuku.data.console.repo + +abstract class ConsoleBuilderRepo { + companion object { + fun strings2environment(envp: List): Map { + val environment = mutableMapOf() + for (envstring in envp) { + var envstring = envstring + if (envstring.indexOf('\u0000'.code.toChar()) != -1) + envstring = envstring.replaceFirst("\u0000.*".toRegex(), "") + + val eqlsign = envstring.indexOf('=', 0) + if (eqlsign != -1) + environment[envstring.substring(0, eqlsign)] = envstring.substring(eqlsign + 1) + } + return environment + } + } + + var command: List = emptyList() + + var directory: String? = null + + var environment: List? = null + + fun command(vararg command: String) { + this.command = command.toList() + } + + fun environment(vararg environment: String) { + this.environment = environment.toList() + } + + abstract suspend fun open(): ConsoleRepo +} diff --git a/app/src/main/java/com/rosan/dhizuku/data/console/repo/ConsoleRepo.kt b/app/src/main/java/com/rosan/dhizuku/data/console/repo/ConsoleRepo.kt new file mode 100644 index 0000000..2989b5d --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/data/console/repo/ConsoleRepo.kt @@ -0,0 +1,26 @@ +package com.rosan.dhizuku.data.console.repo + +import java.io.Closeable +import java.io.InputStream +import java.io.OutputStream +import java.util.concurrent.TimeUnit + +interface ConsoleRepo : Closeable { + val inputStream: InputStream + + val errorStream: InputStream + + val outputStream: OutputStream + + suspend fun waitIt() + + suspend fun waitIt(timeout: Long, unit: TimeUnit): Boolean + + fun exitValue(): Int + + fun isAlive(): Boolean + + override fun close() + + fun closeForcibly() +} diff --git a/app/src/main/java/com/rosan/dhizuku/data/console/util/ConsoleRepoUtil.kt b/app/src/main/java/com/rosan/dhizuku/data/console/util/ConsoleRepoUtil.kt new file mode 100644 index 0000000..eb89c52 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/data/console/util/ConsoleRepoUtil.kt @@ -0,0 +1,15 @@ +package com.rosan.dhizuku.data.console.util + +import com.rosan.dhizuku.data.console.model.impl.ShizukuConsoleBuilderRepoImpl +import com.rosan.dhizuku.data.console.repo.ConsoleRepo + +class ConsoleRepoUtil { + companion object { + suspend fun shizuku(action: ShizukuConsoleBuilderRepoImpl.() -> Unit): ConsoleRepo { + val repo = ShizukuConsoleBuilderRepoImpl() + repo.command("sh") + repo.action() + return repo.open() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/data/console/util/ConsoleUtil.kt b/app/src/main/java/com/rosan/dhizuku/data/console/util/ConsoleUtil.kt new file mode 100644 index 0000000..5a4fdfe --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/data/console/util/ConsoleUtil.kt @@ -0,0 +1,30 @@ +package com.rosan.dhizuku.data.console.util + +import com.rosan.dhizuku.data.console.repo.ConsoleRepo +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import java.io.InputStream + +class ConsoleUtil( + private val repo: ConsoleRepo +) { + private suspend fun readBytes(input: InputStream): ByteArray = withContext(Dispatchers.IO) { + var bytes = ByteArray(0) + while (repo.isAlive()) + if (input.available() > 0) + bytes += ByteArray(input.available()).let { + it.sliceArray(0 until input.read(it)) + } + return@withContext bytes + } + + suspend fun inputBytes(): ByteArray = readBytes(repo.inputStream) + + suspend fun errorBytes(): ByteArray = readBytes(repo.errorStream) + + suspend fun appendLine(any: Any?) = withContext(Dispatchers.IO) { + val writer = repo.outputStream.writer() + writer.appendLine(any.toString()) + writer.flush() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/data/settings/model/room/DhizukuRoom.kt b/app/src/main/java/com/rosan/dhizuku/data/settings/model/room/DhizukuRoom.kt new file mode 100644 index 0000000..3dc9e5a --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/data/settings/model/room/DhizukuRoom.kt @@ -0,0 +1,28 @@ +package com.rosan.dhizuku.data.settings.model.room + +import androidx.room.Database +import androidx.room.Room +import androidx.room.RoomDatabase +import com.rosan.dhizuku.data.settings.model.room.dao.AppDao +import com.rosan.dhizuku.data.settings.model.room.entity.AppEntity +import org.koin.core.component.KoinComponent +import org.koin.core.component.get + +@Database( + entities = [AppEntity::class], + version = 1, + exportSchema = false +) +abstract class DhizukuRoom : RoomDatabase() { + companion object : KoinComponent { + fun createInstance(): DhizukuRoom { + return Room.databaseBuilder( + get(), + DhizukuRoom::class.java, + "dhizuku.db", + ).build() + } + } + + abstract val appDao: AppDao +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/data/settings/model/room/dao/AppDao.kt b/app/src/main/java/com/rosan/dhizuku/data/settings/model/room/dao/AppDao.kt new file mode 100644 index 0000000..2d01b07 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/data/settings/model/room/dao/AppDao.kt @@ -0,0 +1,35 @@ +package com.rosan.dhizuku.data.settings.model.room.dao + +import androidx.room.* +import com.rosan.dhizuku.data.settings.model.room.entity.AppEntity +import kotlinx.coroutines.flow.Flow + +@Dao +interface AppDao { + @Query("select * from app") + fun all(): List + + @Query("select * from app") + fun flowAll(): Flow> + + @Query("select * from app where id = :id limit 1") + fun find(id: Long): AppEntity? + + @Query("select * from app where id = :id limit 1") + fun flowFind(id: Long): Flow + + @Query("select * from app where uid = :uid limit 1") + fun findByUID(uid: Int): AppEntity? + + @Query("select * from app where uid = :uid limit 1") + fun flowFindByUID(uid: Int): Flow + + @Update + suspend fun update(entity: AppEntity) + + @Insert + suspend fun insert(entity: AppEntity) + + @Delete + suspend fun delete(entity: AppEntity) +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/data/settings/model/room/entity/AppEntity.kt b/app/src/main/java/com/rosan/dhizuku/data/settings/model/room/entity/AppEntity.kt new file mode 100644 index 0000000..6a0dfdc --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/data/settings/model/room/entity/AppEntity.kt @@ -0,0 +1,24 @@ +package com.rosan.dhizuku.data.settings.model.room.entity + +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.Index +import androidx.room.PrimaryKey + +@Entity( + tableName = "app", + indices = [ + Index(value = ["uid"], unique = true), + Index(value = ["allow_api"]) + ] +) +data class AppEntity( + @PrimaryKey(autoGenerate = true) + @ColumnInfo(name = "id") + var id: Long = 0L, + @ColumnInfo(name = "uid") var uid: Int, + @ColumnInfo(name = "allow_api") var allowApi: Boolean, + @ColumnInfo(name = "created_at") var createdAt: Long = System.currentTimeMillis(), + @ColumnInfo(name = "modified_at") var modifiedAt: Long = System.currentTimeMillis(), +) { +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/data/settings/model/room/impl/AppRepoImpl.kt b/app/src/main/java/com/rosan/dhizuku/data/settings/model/room/impl/AppRepoImpl.kt new file mode 100644 index 0000000..97e2b15 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/data/settings/model/room/impl/AppRepoImpl.kt @@ -0,0 +1,35 @@ +package com.rosan.dhizuku.data.settings.model.room.impl + +import com.rosan.dhizuku.data.settings.model.room.dao.AppDao +import com.rosan.dhizuku.data.settings.model.room.entity.AppEntity +import com.rosan.dhizuku.data.settings.repo.AppRepo +import kotlinx.coroutines.flow.Flow + +class AppRepoImpl( + private val dao: AppDao +) : AppRepo { + override fun all(): List = dao.all() + + override fun flowAll(): Flow> = dao.flowAll() + + override fun find(id: Long): AppEntity? = dao.find(id) + + override fun flowFind(id: Long): Flow = dao.flowFind(id) + + override fun findByUID(uid: Int): AppEntity? = dao.findByUID(uid) + + override fun flowFindByUID(uid: Int): Flow = dao.flowFindByUID(uid) + + override suspend fun update(entity: AppEntity) { + entity.modifiedAt = System.currentTimeMillis() + dao.update(entity) + } + + override suspend fun insert(entity: AppEntity) { + entity.createdAt = System.currentTimeMillis() + entity.modifiedAt = System.currentTimeMillis() + dao.insert(entity) + } + + override suspend fun delete(entity: AppEntity) = dao.delete(entity) +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/data/settings/repo/AppRepo.kt b/app/src/main/java/com/rosan/dhizuku/data/settings/repo/AppRepo.kt new file mode 100644 index 0000000..76011fe --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/data/settings/repo/AppRepo.kt @@ -0,0 +1,24 @@ +package com.rosan.dhizuku.data.settings.repo + +import com.rosan.dhizuku.data.settings.model.room.entity.AppEntity +import kotlinx.coroutines.flow.Flow + +interface AppRepo { + fun all(): List + + fun flowAll(): Flow> + + fun find(id: Long): AppEntity? + + fun flowFind(id: Long): Flow + + fun findByUID(uid: Int): AppEntity? + + fun flowFindByUID(uid: Int): Flow + + suspend fun update(entity: AppEntity) + + suspend fun insert(entity: AppEntity) + + suspend fun delete(entity: AppEntity) +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/di/dhizuku_module.kt b/app/src/main/java/com/rosan/dhizuku/di/dhizuku_module.kt new file mode 100644 index 0000000..f2864b3 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/di/dhizuku_module.kt @@ -0,0 +1,16 @@ +package com.rosan.dhizuku.di + +import com.rosan.dhizuku.aidl.IDhizuku +import com.rosan.dhizuku.server.impl.IDhizukuImpl +import org.koin.dsl.module + +private var iDhizuku: IDhizukuImpl? = null + +val dhizukuModule = module { + factory { + if (iDhizuku?.pingBinder() == true) return@factory iDhizuku!! + IDhizukuImpl().apply { + iDhizuku = this + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/di/init/app_modules.kt b/app/src/main/java/com/rosan/dhizuku/di/init/app_modules.kt new file mode 100644 index 0000000..0d5a62e --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/di/init/app_modules.kt @@ -0,0 +1,11 @@ +package com.rosan.dhizuku.di.init + +import com.rosan.dhizuku.di.dhizukuModule +import com.rosan.dhizuku.di.roomModule +import com.rosan.dhizuku.di.viewModelModule + +val appModules = listOf( + roomModule, + viewModelModule, + dhizukuModule +) \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/di/room_module.kt b/app/src/main/java/com/rosan/dhizuku/di/room_module.kt new file mode 100644 index 0000000..76023b1 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/di/room_module.kt @@ -0,0 +1,17 @@ +package com.rosan.dhizuku.di + +import com.rosan.dhizuku.data.settings.model.room.DhizukuRoom +import com.rosan.dhizuku.data.settings.model.room.impl.AppRepoImpl +import com.rosan.dhizuku.data.settings.repo.AppRepo +import org.koin.dsl.module + +val roomModule = module { + single { + DhizukuRoom.createInstance() + } + + single { + val room = get() + AppRepoImpl(room.appDao) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/di/viewmodel_module.kt b/app/src/main/java/com/rosan/dhizuku/di/viewmodel_module.kt new file mode 100644 index 0000000..ae36d9d --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/di/viewmodel_module.kt @@ -0,0 +1,11 @@ +package com.rosan.dhizuku.di + +import com.rosan.dhizuku.ui.page.settings.config.ConfigViewModel +import org.koin.androidx.viewmodel.dsl.viewModel +import org.koin.dsl.module + +val viewModelModule = module { + viewModel { + ConfigViewModel(get()) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/server/DhizukuConstants.kt b/app/src/main/java/com/rosan/dhizuku/server/DhizukuConstants.kt new file mode 100644 index 0000000..67064e1 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/server/DhizukuConstants.kt @@ -0,0 +1,5 @@ +package com.rosan.dhizuku.server + +val DHIZUKU_SERVRE_VERSION_CODE = 1 + +val DHIZUKU_SERVER_VERSION_NAME = "1.0" \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/server/DhizukuDAReceiver.kt b/app/src/main/java/com/rosan/dhizuku/server/DhizukuDAReceiver.kt new file mode 100644 index 0000000..157d490 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/server/DhizukuDAReceiver.kt @@ -0,0 +1,30 @@ +package com.rosan.dhizuku.server + +import android.app.admin.DeviceAdminReceiver +import android.content.Context +import android.content.Intent +import com.rosan.dhizuku.App +import org.koin.core.component.KoinComponent +import org.koin.core.component.get + +class DhizukuDAReceiver : DeviceAdminReceiver(), KoinComponent { + private val app = get().applicationContext as App + + override fun onEnabled(context: Context, intent: Intent) { + super.onEnabled(context, intent) + app.syncDeviceOwnerStatus() + } + + override fun onReceive(context: Context, intent: Intent) { + super.onReceive(context, intent) + } + + override fun onDisableRequested(context: Context, intent: Intent): CharSequence? { + return super.onDisableRequested(context, intent) + } + + override fun onDisabled(context: Context, intent: Intent) { + super.onDisabled(context, intent) + app.syncDeviceOwnerStatus() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/server/DhizukuProvider.kt b/app/src/main/java/com/rosan/dhizuku/server/DhizukuProvider.kt new file mode 100644 index 0000000..91f3131 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/server/DhizukuProvider.kt @@ -0,0 +1,47 @@ +package com.rosan.dhizuku.server + +import android.content.ContentProvider +import android.content.ContentValues +import android.database.Cursor +import android.net.Uri +import android.os.Bundle +import com.rosan.dhizuku.aidl.IDhizuku +import com.rosan.dhizuku.shared.DhizukuVariables +import org.koin.core.component.KoinComponent +import org.koin.core.component.inject + +class DhizukuProvider : ContentProvider(), KoinComponent { + private val iDhizuku: IDhizuku by inject() + + override fun call(method: String, arg: String?, extras: Bundle?): Bundle? { + return when (method) { + DhizukuVariables.PROVIDER_METHOD_CLIENT -> Bundle().apply { + putBinder(DhizukuVariables.PARAM_DHIZUKU_BINDER, iDhizuku.asBinder()) + } + else -> null; + } + } + + override fun onCreate(): Boolean = true + + override fun query( + uri: Uri, + projection: Array?, + selection: String?, + selectionArgs: Array?, + sortOrder: String? + ): Cursor? = null + + override fun getType(uri: Uri): String? = null + + override fun insert(uri: Uri, values: ContentValues?): Uri? = null + + override fun delete(uri: Uri, selection: String?, selectionArgs: Array?): Int = 0 + + override fun update( + uri: Uri, + values: ContentValues?, + selection: String?, + selectionArgs: Array? + ): Int = 0 +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/server/impl/IDhizukuImpl.kt b/app/src/main/java/com/rosan/dhizuku/server/impl/IDhizukuImpl.kt new file mode 100644 index 0000000..fd0b979 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/server/impl/IDhizukuImpl.kt @@ -0,0 +1,76 @@ +package com.rosan.dhizuku.server.impl + +import android.content.Context +import android.os.Binder +import android.os.IBinder +import android.os.Parcel +import com.rosan.dhizuku.aidl.IDhizuku +import com.rosan.dhizuku.aidl.IDhizukuRemoteProcess +import com.rosan.dhizuku.data.settings.repo.AppRepo +import com.rosan.dhizuku.server.DHIZUKU_SERVER_VERSION_NAME +import com.rosan.dhizuku.server.DHIZUKU_SERVRE_VERSION_CODE +import com.rosan.dhizuku.shared.DhizukuVariables +import org.koin.core.component.KoinComponent +import org.koin.core.component.inject +import java.io.File + +class IDhizukuImpl : IDhizuku.Stub(), KoinComponent { + private val context by inject() + + private val appRepo by inject() + + override fun getVersionCode(): Int = DHIZUKU_SERVRE_VERSION_CODE + + override fun getVersionName(): String = DHIZUKU_SERVER_VERSION_NAME + + override fun isPermissionGranted(): Boolean { + return appRepo.findByUID(Binder.getCallingUid())?.allowApi ?: false + } + + private fun requireCallingPermission(name: String) { + if (isPermissionGranted) return + throw IllegalStateException(SecurityException("uid '${Binder.getCallingUid()}' not allow use dhizuku api")) + } + + private fun targetTransact( + iBinder: IBinder, + code: Int, + data: Parcel, + reply: Parcel?, + flags: Int + ): Boolean { + requireCallingPermission("target_transact") + val id = clearCallingIdentity() + val result = iBinder.transact(code, data, reply, flags) + restoreCallingIdentity(id) + return result + } + + override fun remoteProcess( + cmd: Array?, + env: Array?, + dir: String? + ): IDhizukuRemoteProcess { + requireCallingPermission("remote_process") + val file = if (dir != null) File(dir) else null + val process = Runtime.getRuntime().exec(cmd, env, file) + return IDhizukuRemoteProcessImpl(process, this) + } + + override fun onTransact(code: Int, data: Parcel, reply: Parcel?, flags: Int): Boolean { + if (code == DhizukuVariables.TRANSACT_CODE_REMOTE_BINDER) { + val targetData = Parcel.obtain() + try { + data.enforceInterface(DhizukuVariables.BINDER_DESCRIPTOR) + val iBinder = data.readStrongBinder() + val targtCode = data.readInt() + val targetFlags = data.readInt() + targetData.appendFrom(data, data.dataPosition(), data.dataAvail()) + return targetTransact(iBinder, targtCode, targetData, reply, targetFlags) + } finally { + targetData.recycle() + } + } + return super.onTransact(code, data, reply, flags) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/server/impl/IDhizukuRemoteProcessImpl.kt b/app/src/main/java/com/rosan/dhizuku/server/impl/IDhizukuRemoteProcessImpl.kt new file mode 100644 index 0000000..60fb8d0 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/server/impl/IDhizukuRemoteProcessImpl.kt @@ -0,0 +1,96 @@ +package com.rosan.dhizuku.server.impl + +import android.os.IBinder +import android.os.ParcelFileDescriptor +import com.rosan.dhizuku.aidl.IDhizukuRemoteProcess +import com.rosan.dhizuku.util.parcelable +import java.io.IOException +import java.util.concurrent.TimeUnit + +class IDhizukuRemoteProcessImpl(private val process: Process, private val iBinder: IBinder) : + IDhizukuRemoteProcess.Stub() { + init { + iBinder.linkToDeath({ + kotlin.runCatching { if (alive()) destroy() } + }, 0) + } + + private var output: ParcelFileDescriptor? = null + + private var input: ParcelFileDescriptor? = null + + private var error: ParcelFileDescriptor? = null + + override fun getOutputStream(): ParcelFileDescriptor { + if (output != null) return output!! + try { + output = process.outputStream.parcelable() + } catch (e: IOException) { + throw IllegalStateException(e) + } + return output!! + } + + override fun getInputStream(): ParcelFileDescriptor { + if (input != null) return input!! + try { + input = process.inputStream.parcelable() + } catch (e: IOException) { + throw IllegalStateException(e) + } + return input!! + } + + override fun getErrorStream(): ParcelFileDescriptor { + if (error != null) return error!! + try { + error = process.errorStream.parcelable() + } catch (e: IOException) { + throw IllegalStateException(e) + } + return error!! + } + + override fun exitValue(): Int = process.exitValue() + + override fun destroy() = process.destroy() + + override fun alive(): Boolean { + return try { + exitValue() + false + } catch (e: IllegalThreadStateException) { + true + } + } + + override fun waitFor(): Int { + try { + return process.waitFor() + } catch (e: InterruptedException) { + throw IllegalStateException(e) + } + } + + override fun waitForTimeout(timeout: Long, unitName: String): Boolean { + val unit = TimeUnit.valueOf(unitName) + val start = System.nanoTime() + var rem = unit.toNanos(timeout) + do { + try { + exitValue() + return true + } catch (e: IllegalThreadStateException) { + if (rem > 0) { + try { + Thread.sleep(Math.min(TimeUnit.NANOSECONDS.toMillis(rem) + 1, 100)) + } catch (e: InterruptedException) { + throw IllegalStateException(e) + } + } + } + rem = unit.toNanos(timeout) - (System.nanoTime() - start) + } while (rem > 0) + return false + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/test.kt b/app/src/main/java/com/rosan/dhizuku/test.kt new file mode 100644 index 0000000..ce9b9b1 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/test.kt @@ -0,0 +1,4 @@ +package com.rosan.dhizuku + +fun main(args: Array) { +} diff --git a/app/src/main/java/com/rosan/dhizuku/ui/activity/RequestPermissionActivity.kt b/app/src/main/java/com/rosan/dhizuku/ui/activity/RequestPermissionActivity.kt new file mode 100644 index 0000000..07bec70 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/activity/RequestPermissionActivity.kt @@ -0,0 +1,123 @@ +package com.rosan.dhizuku.ui.activity + +import android.content.pm.PackageManager +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.imePadding +import androidx.compose.material.Text +import androidx.compose.material3.AlertDialog +import androidx.compose.material3.TextButton +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import com.google.accompanist.drawablepainter.rememberDrawablePainter +import com.rosan.dhizuku.R +import com.rosan.dhizuku.aidl.IDhizukuRequestPermissionListener +import com.rosan.dhizuku.data.settings.model.room.entity.AppEntity +import com.rosan.dhizuku.data.settings.repo.AppRepo +import com.rosan.dhizuku.shared.DhizukuVariables +import com.rosan.dhizuku.ui.theme.InstallerTheme +import com.rosan.dhizuku.util.toast +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import org.koin.core.component.KoinComponent +import org.koin.core.component.inject + +class RequestPermissionActivity : ComponentActivity(), KoinComponent { + private val appRepo by inject() + + private var grantResult: Int = PackageManager.PERMISSION_DENIED + + private var listener: IDhizukuRequestPermissionListener? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + val bundle = intent.getBundleExtra("bundle") + val clientUID = bundle?.getInt(DhizukuVariables.PARAM_CLIENT_UID) + if (clientUID == null) { + toast("please send client UID") + finish() + return + } + val packageName = packageManager.getPackagesForUid(clientUID)?.first() + if (packageName == null) { + toast("can not get package name for $clientUID") + finish() + return + } + val applicationInfo = packageManager.getPackageInfo(packageName, 0)?.applicationInfo + if (applicationInfo == null) { + toast("can not get application for $clientUID") + finish() + return + } + val label = applicationInfo.loadLabel(packageManager) + val icon = applicationInfo.loadIcon(packageManager) + bundle.getBinder(DhizukuVariables.PARAM_CLIENT_REQUEST_PERMISSION_BINDER)?.let { + listener = IDhizukuRequestPermissionListener.Stub.asInterface(it) + } + fun updateAppEntity() { + val allowApi = grantResult == PackageManager.PERMISSION_GRANTED + CoroutineScope(Dispatchers.IO).launch { + val entity = appRepo.findByUID(clientUID) + if (entity == null) + appRepo.insert(AppEntity(uid = clientUID, allowApi = allowApi)) + else appRepo.update(entity.copy(allowApi = allowApi)) + } + } + setContent { + // A surface based on material design theme. + InstallerTheme { + Box( + modifier = Modifier + .fillMaxSize() + .imePadding() + ) { + AlertDialog(onDismissRequest = { + finish() + }, icon = { + Image( + painter = rememberDrawablePainter(drawable = icon), + contentDescription = null + ) + }, title = { + Text(text = stringResource(id = R.string.request_permission_title)) + }, text = { + Text( + text = stringResource( + id = R.string.request_permission_text, + label + ) + ) + }, confirmButton = { + TextButton(onClick = { + grantResult = PackageManager.PERMISSION_GRANTED + updateAppEntity() + finish() + }) { + Text(text = stringResource(id = R.string.agree)) + } + }, dismissButton = { + TextButton(onClick = { + grantResult = PackageManager.PERMISSION_DENIED + updateAppEntity() + finish() + }) { + Text(text = stringResource(id = R.string.refuse)) + } + }) + } + } + } + } + + override fun onPause() { + super.onPause() + finish() + listener?.onRequestPermission(grantResult) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/ui/activity/SettingsActivity.kt b/app/src/main/java/com/rosan/dhizuku/ui/activity/SettingsActivity.kt new file mode 100644 index 0000000..ea2f633 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/activity/SettingsActivity.kt @@ -0,0 +1,40 @@ +package com.rosan.dhizuku.ui.activity + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.imePadding +import androidx.compose.material3.Surface +import androidx.compose.ui.Modifier +import com.hjq.permissions.Permission +import com.hjq.permissions.XXPermissions +import com.rosan.dhizuku.ui.page.settings.SettingsPage +import com.rosan.dhizuku.ui.theme.InstallerTheme +import org.koin.core.component.KoinComponent + +class SettingsActivity : ComponentActivity(), KoinComponent { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContent { + // A surface based on material design theme. + InstallerTheme { + Surface( + modifier = Modifier + .fillMaxSize() + .imePadding() + ) { + SettingsPage() + } + } + } + if (!XXPermissions.isGranted( + this, + Permission.MANAGE_EXTERNAL_STORAGE + ) + ) + XXPermissions.with(this) + .permission(Permission.MANAGE_EXTERNAL_STORAGE) + .request { permissions, allGranted -> } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/ui/page/settings/SettingsPage.kt b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/SettingsPage.kt new file mode 100644 index 0000000..2b35122 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/SettingsPage.kt @@ -0,0 +1,38 @@ +package com.rosan.dhizuku.ui.page.settings + +import androidx.compose.animation.ExperimentalAnimationApi +import androidx.compose.runtime.Composable +import androidx.compose.ui.ExperimentalComposeUiApi +import com.google.accompanist.navigation.animation.AnimatedNavHost +import com.google.accompanist.navigation.animation.composable +import com.google.accompanist.navigation.animation.rememberAnimatedNavController +import com.rosan.dhizuku.ui.page.settings.main.MainPage + +@OptIn(ExperimentalAnimationApi::class, ExperimentalComposeUiApi::class) +@Composable +fun SettingsPage() { + val navController = rememberAnimatedNavController() + + AnimatedNavHost( + navController = navController, + startDestination = SettingsScreen.Main.route, + ) { + composable( + route = SettingsScreen.Main.route, + enterTransition = { + null + }, + exitTransition = { + null + }, + popEnterTransition = { + null + }, + popExitTransition = { + null + } + ) { + MainPage(navController = navController) + } + } +} diff --git a/app/src/main/java/com/rosan/dhizuku/ui/page/settings/SettingsScreen.kt b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/SettingsScreen.kt new file mode 100644 index 0000000..1eb6e68 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/SettingsScreen.kt @@ -0,0 +1,5 @@ +package com.rosan.dhizuku.ui.page.settings + +sealed class SettingsScreen(val route: String) { + object Main : SettingsScreen("main") +} diff --git a/app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigPage.kt b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigPage.kt new file mode 100644 index 0000000..e489858 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigPage.kt @@ -0,0 +1,105 @@ +package com.rosan.dhizuku.ui.page.settings.config + +import androidx.compose.foundation.Image +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.material3.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import androidx.navigation.NavController +import com.google.accompanist.drawablepainter.rememberDrawablePainter +import com.rosan.dhizuku.R +import org.koin.androidx.compose.getViewModel + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun ConfigPage( + navController: NavController, + viewModel: ConfigViewModel = getViewModel() +) { + LaunchedEffect(true) { + viewModel.dispatch(ConfigViewAction.Init) + } + + Scaffold( + modifier = Modifier + .fillMaxSize(), + topBar = { + TopAppBar( + title = { + Text(text = stringResource(id = R.string.config)) + } + ) + }, + ) { + Box(modifier = Modifier.padding(it)) { + DataWidget(viewModel = viewModel) + } + } +} + +@Composable +fun DataWidget(viewModel: ConfigViewModel) { + LazyColumn( + modifier = Modifier.fillMaxSize(), + verticalArrangement = Arrangement.spacedBy(4.dp) + ) { + items(viewModel.state.data) { + DataItemWidget(viewModel, it) + } + } +} + +@Composable +fun DataItemWidget(viewModel: ConfigViewModel, data: ConfigViewState.Data) { + Box( + modifier = Modifier + .fillMaxWidth(), + ) { + Row( + modifier = Modifier + .fillMaxWidth() + .clickable { + viewModel.dispatch(ConfigViewAction.UpdateConfigByUID(data.uid, !data.allowApi)) + } + .padding(horizontal = 16.dp, vertical = 8.dp), + horizontalArrangement = Arrangement.spacedBy(16.dp), + ) { + Image( + painter = rememberDrawablePainter(drawable = data.icon), + modifier = Modifier + .size(32.dp) + .align(Alignment.CenterVertically), + contentDescription = data.label + ) + Column( + modifier = Modifier + .align(Alignment.CenterVertically) + .weight(1f) + ) { + Text( + text = data.label, + style = MaterialTheme.typography.titleMedium + ) + Text( + text = data.packageName, + style = MaterialTheme.typography.bodyMedium + ) + } + Switch( + modifier = Modifier + .align(Alignment.CenterVertically), + checked = data.allowApi, + onCheckedChange = { + viewModel.dispatch(ConfigViewAction.UpdateConfigByUID(data.uid, it)) + } + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigViewAction.kt b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigViewAction.kt new file mode 100644 index 0000000..6289f08 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigViewAction.kt @@ -0,0 +1,7 @@ +package com.rosan.dhizuku.ui.page.settings.config + +sealed class ConfigViewAction { + object Init : ConfigViewAction() + + data class UpdateConfigByUID(val uid: Int, val allowApi: Boolean) : ConfigViewAction() +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigViewModel.kt b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigViewModel.kt new file mode 100644 index 0000000..11296a3 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigViewModel.kt @@ -0,0 +1,113 @@ +package com.rosan.dhizuku.ui.page.settings.config + +import android.content.Context +import android.content.pm.PackageManager +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue +import androidx.core.content.ContextCompat +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.rosan.dhizuku.data.settings.model.room.entity.AppEntity +import com.rosan.dhizuku.data.settings.repo.AppRepo +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.launch +import org.koin.core.component.KoinComponent +import org.koin.core.component.inject + +class ConfigViewModel( + private var repo: AppRepo +) : ViewModel(), KoinComponent { + private val context by inject() + + var state by mutableStateOf(ConfigViewState(emptyList())) + private set + + fun dispatch(action: ConfigViewAction) { + when (action) { + ConfigViewAction.Init -> init() + is ConfigViewAction.UpdateConfigByUID -> updateConfigByUID(action.uid, action.allowApi) + } + } + + private fun init() { + collectRepo(repo) + } + + private var collectRepoJob: Job? = null + + private fun collectRepo(repo: AppRepo) { + this.repo = repo + collectRepoJob?.cancel() + collectRepoJob = viewModelScope.launch(Dispatchers.IO) { + repo.flowAll().collect { apps -> + val packageManager = context.packageManager + val map = mutableMapOf() + apps.forEach { + val packageName = packageManager.getPackagesForUid(it.uid)?.first() + map[it.uid] = if (packageName != null) { + val packageInfo = packageManager.getPackageInfo(packageName, 0) + val applicationInfo = packageInfo.applicationInfo + val uid = applicationInfo.uid + ConfigViewState.Data( + uid = uid, + packageName = packageInfo.packageName, + label = applicationInfo.loadLabel(packageManager).toString(), + icon = applicationInfo.loadIcon(packageManager), + allowApi = it.allowApi + ) + } else { + ConfigViewState.Data( + uid = it.uid, + packageName = it.uid.toString(), + label = it.uid.toString(), + icon = ContextCompat.getDrawable( + context, android.R.drawable.sym_def_app_icon + )!!, + allowApi = it.allowApi + ) + } + } + val packages = + packageManager.getInstalledPackages(PackageManager.GET_PERMISSIONS or PackageManager.GET_ACTIVITIES) + packages.forEach { packageInfo -> + packageInfo.requestedPermissions?.forEach { + if (it == "com.rosan.dhizuku.permission.API") { + val applicationInfo = packageInfo.applicationInfo + val uid = applicationInfo.uid + val data = map[uid] + map[uid] = ConfigViewState.Data( + uid = uid, + packageName = packageInfo.packageName, + label = applicationInfo.loadLabel(packageManager).toString(), + icon = applicationInfo.loadIcon(packageManager), + allowApi = data?.allowApi ?: false + ) + } + } + } + state = ConfigViewState(data = map.values.sortedBy { + it.uid + }) + } + } + } + + private fun updateConfigByUID(uid: Int, allowApi: Boolean) { + viewModelScope.launch(Dispatchers.IO) { + val entity = repo.findByUID(uid) + if (entity == null) { + repo.insert( + AppEntity( + uid = uid, + allowApi = allowApi + ) + ) + return@launch + } + entity.allowApi = allowApi + repo.update(entity) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigViewState.kt b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigViewState.kt new file mode 100644 index 0000000..7188e4a --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigViewState.kt @@ -0,0 +1,13 @@ +package com.rosan.dhizuku.ui.page.settings.config + +import android.graphics.drawable.Drawable + +data class ConfigViewState(val data: List) { + data class Data( + val uid: Int, + val packageName: String, + val label: String, + val icon: Drawable, + val allowApi: Boolean + ) +} diff --git a/app/src/main/java/com/rosan/dhizuku/ui/page/settings/home/HomeCardItem.kt b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/home/HomeCardItem.kt new file mode 100644 index 0000000..5b6c973 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/home/HomeCardItem.kt @@ -0,0 +1,11 @@ +package com.rosan.dhizuku.ui.page.settings.home + +import androidx.compose.ui.graphics.vector.ImageVector + +data class HomeCardItem( + val icon: ImageVector? = null, + val label: String, + val content: String? = null, + val onClick: (() -> Unit)? = null +) { +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/ui/page/settings/home/HomePage.kt b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/home/HomePage.kt new file mode 100644 index 0000000..46535a2 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/home/HomePage.kt @@ -0,0 +1,478 @@ +package com.rosan.dhizuku.ui.page.settings.home + +import android.app.admin.DevicePolicyManager +import android.content.* +import android.net.Uri +import android.os.Bundle +import android.text.method.LinkMovementMethod +import android.widget.TextView +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.ExperimentalAnimationApi +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.text.selection.SelectionContainer +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.twotone.* +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.toArgb +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import androidx.compose.ui.viewinterop.AndroidView +import androidx.core.text.HtmlCompat +import androidx.navigation.NavController +import com.rosan.dhizuku.App +import com.rosan.dhizuku.R +import com.rosan.dhizuku.data.console.model.entity.ConsoleError +import com.rosan.dhizuku.data.console.repo.ConsoleRepo +import com.rosan.dhizuku.data.console.util.ConsoleRepoUtil +import com.rosan.dhizuku.data.console.util.ConsoleUtil +import com.rosan.dhizuku.server.DhizukuDAReceiver +import com.rosan.dhizuku.ui.activity.RequestPermissionActivity +import com.rosan.dhizuku.ui.widget.dialog.PositionDialog +import com.rosan.dhizuku.util.toast +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import kotlinx.coroutines.launch +import java.io.ByteArrayOutputStream +import java.io.PrintStream +import kotlin.system.exitProcess + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun HomePage(navController: NavController) { + Scaffold(modifier = Modifier.fillMaxSize(), topBar = { + TopAppBar( + title = { + Text(text = stringResource(id = R.string.home)) + }, + ) + }) { + LazyColumn( + contentPadding = PaddingValues(16.dp), + modifier = Modifier + .fillMaxSize() + .padding(it), + verticalArrangement = Arrangement.spacedBy(16.dp), + ) { + item { + StatusWidget() + } + item { + ActiveWidget() + } + item { + DonateWidget() + } + } + } +} + +@Composable +fun StatusWidget() { + val context = LocalContext.current + val app = context.applicationContext as App + val isDeviceAdminer = app.isDeviceAdminer + val isDeviceOwner = app.isDeviceOwner + + val containerColor = if (isDeviceOwner) MaterialTheme.colorScheme.primaryContainer + else if (isDeviceAdminer) MaterialTheme.colorScheme.tertiaryContainer + else MaterialTheme.colorScheme.errorContainer + + val onContainerColor = if (isDeviceOwner) MaterialTheme.colorScheme.onPrimaryContainer + else if (isDeviceAdminer) MaterialTheme.colorScheme.onTertiaryContainer + else MaterialTheme.colorScheme.onErrorContainer + + val icon = if (isDeviceOwner) Icons.TwoTone.SentimentVerySatisfied + else if (isDeviceAdminer) Icons.TwoTone.SentimentNeutral + else Icons.TwoTone.SentimentVeryDissatisfied + + val text = stringResource( + id = if (isDeviceOwner) R.string.device_owner_granted + else if (isDeviceAdminer) R.string.device_admin_granted + else R.string.device_admin_denied + ) + + CardWidget(colors = CardDefaults.elevatedCardColors( + containerColor = containerColor, contentColor = onContainerColor + ), content = { + Row(modifier = Modifier.padding(horizontal = 24.dp)) { + Icon( + modifier = Modifier.align(Alignment.CenterVertically), + imageVector = icon, + contentDescription = null + ) + Spacer(modifier = Modifier.size(24.dp)) + Text(text = text, style = MaterialTheme.typography.titleMedium) + } + }, onClick = { + context.startActivity( + Intent(context, RequestPermissionActivity::class.java).putExtra( + "bundle", + Bundle().apply { + putInt("uid", 10330) + }).addFlags( + Intent.FLAG_ACTIVITY_NEW_TASK + ) + ) + }) +} + +@OptIn(ExperimentalAnimationApi::class) +@Composable +fun ShizukuButton() { + val context = LocalContext.current + val scope = rememberCoroutineScope() + var console: ConsoleRepo? = null + var showDialog by remember { + mutableStateOf(false) + } + var inProgress by remember { + mutableStateOf(false) + } + var exception: Throwable? by remember { + mutableStateOf(null) + } + + Button(onClick = { + scope.launch(Dispatchers.IO) { + inProgress = true + exception = null + showDialog = true + exception = kotlin.runCatching { + val letConsole = ConsoleRepoUtil.shizuku { + command( + "dpm", + "set-device-owner", + "${context.packageName}/${DhizukuDAReceiver::class.qualifiedName}" + ) + } + console = letConsole + val util = ConsoleUtil(letConsole) + val inputJob = async { util.inputBytes() } + val errorJob = async { util.errorBytes() } + val input = inputJob.await().decodeToString() + val error = errorJob.await().decodeToString() + val code = letConsole.exitValue() + if (code != 0) throw ConsoleError(code, input, error) + }.exceptionOrNull() + inProgress = false + } + }) { + Icon( + modifier = Modifier.size(16.dp), + imageVector = Icons.TwoTone.Key, + contentDescription = null + ) + Spacer(modifier = Modifier.size(ButtonDefaults.IconSpacing)) + Text(text = stringResource(id = R.string.active_by_shizuku)) + } + + if (!showDialog) return + PositionDialog(onDismissRequest = {}, centerTitle = { + Text(stringResource(R.string.active_by_shizuku)) + }, leftText = { + AnimatedContent(targetState = inProgress) { + if (it) LinearProgressIndicator(modifier = Modifier.fillMaxWidth()) + else if (exception == null) Text(stringResource(R.string.execution_end)) + else { + val text = when { + exception is IllegalStateException && exception?.message == "binder haven't been received" -> stringResource( + R.string.shizuku_binder_not_received + ) + else -> ByteArrayOutputStream().also { + exception?.printStackTrace(PrintStream(it)) + }.toByteArray().decodeToString() + } + SelectionContainer { + LazyColumn { + item { + Text(text) + } + } + } + } + } + }, rightButton = { + TextButton(onClick = { + console?.closeForcibly() + showDialog = false + }) { + Text( + stringResource( + if (inProgress) R.string.cancel + else R.string.finish + ) + ) + } + }) +} + +@Composable +fun ADBButton() { + val context = LocalContext.current + var showDialog by remember { + mutableStateOf(false) + } + val command = + "adb shell dpm set-device-owner ${context.packageName}/${DhizukuDAReceiver::class.qualifiedName}" + + Button(onClick = { + showDialog = true + }) { + Icon( + modifier = Modifier.size(16.dp), + imageVector = Icons.TwoTone.Adb, + contentDescription = null + ) + Spacer(modifier = Modifier.size(ButtonDefaults.IconSpacing)) + Text(text = stringResource(id = R.string.active_by_adb)) + } + if (showDialog) { + AlertDialog(onDismissRequest = { + showDialog = false + }, title = { + Text(text = stringResource(id = R.string.active_by_adb)) + }, text = { + val textColor = AlertDialogDefaults.textContentColor.toArgb() + AndroidView(factory = { + val view = TextView(it) + view.movementMethod = LinkMovementMethod.getInstance() + view.setTextColor(textColor) + view.text = HtmlCompat.fromHtml( + it.getString(R.string.active_by_adb_dsp, command), + HtmlCompat.FROM_HTML_MODE_COMPACT + ) + return@AndroidView view + }) + }, confirmButton = { + TextButton(onClick = { + val manager = + context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager + manager.setPrimaryClip(ClipData.newPlainText("Label", command)) + context.toast(R.string.copy_success) + showDialog = false + }) { + Text(text = stringResource(id = R.string.copy)) + } + }, dismissButton = { + TextButton(onClick = { showDialog = false }) { + Text(text = stringResource(id = R.string.cancel)) + } + }) + } +} + +@Composable +fun DeactivateButton() { + val context = LocalContext.current + Button(onClick = { + val e = runCatching { + val manager = + context.getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager + manager.clearDeviceOwnerApp(context.packageName) + }.exceptionOrNull() + context.toast(if (e == null) R.string.deactivate_success else R.string.deactivate_failed) + }) { + Icon( + modifier = Modifier.size(16.dp), + imageVector = Icons.TwoTone.Outlet, + contentDescription = null + ) + Spacer(modifier = Modifier.size(ButtonDefaults.IconSpacing)) + Text(text = stringResource(id = R.string.deactivate)) + } +} + +@Composable +fun ForceStopButton() { + val context = LocalContext.current + var showDialog by remember { + mutableStateOf(false) + } + + Button(onClick = { + showDialog = true + }) { + Icon( + modifier = Modifier.size(16.dp), + imageVector = Icons.TwoTone.Close, + contentDescription = null + ) + Spacer(modifier = Modifier.size(ButtonDefaults.IconSpacing)) + Text(text = stringResource(id = R.string.force_stop)) + } + if (!showDialog) return + AlertDialog(onDismissRequest = { + showDialog = false + }, title = { + Text(text = stringResource(id = R.string.force_stop)) + }, text = { + Text(stringResource(R.string.force_stop_dsp)) + }, confirmButton = { + TextButton(onClick = { + exitProcess(0) + }) { + Text(text = stringResource(id = R.string.confirm)) + } + }, dismissButton = { + TextButton(onClick = { showDialog = false }) { + Text(text = stringResource(id = R.string.cancel)) + } + }) +} + +@Composable +fun ActiveWidget() { + CardWidget(title = { + Text(text = stringResource(id = R.string.active)) + }, text = { + Text(text = stringResource(id = R.string.active_func_dsp)) + }, buttons = { + ShizukuButton() + ADBButton() + DeactivateButton() + ForceStopButton() + }) +} + +fun openUrl(context: Context, url: String) { + val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url)).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + context.startActivity(intent) +} + +@Composable +fun DonateWidget() { + val context = LocalContext.current + ItemsCardWidget( + title = { + Text(text = stringResource(id = R.string.donate)) + }, items = listOf( + HomeCardItem(label = stringResource(id = R.string.alipay), onClick = { + openUrl(context, "https://qr.alipay.com/fkx18580lfpydiop04dze47") + }), + HomeCardItem(label = stringResource(id = R.string.wechat), onClick = { + openUrl(context, "https://missuo.ru/file/fee5df1381671c996b127.png") + }), + HomeCardItem(label = stringResource(id = R.string.binance), onClick = { + openUrl(context, "https://missuo.ru/file/28368c28d4ff28d59ed4b.jpg") + }), + ) + ) +} + +@Composable +fun ItemsCardWidget( + colors: CardColors = CardDefaults.elevatedCardColors(), + onClick: (() -> Unit)? = null, + showItemIcon: Boolean = false, + icon: (@Composable () -> Unit)? = null, + title: (@Composable () -> Unit)? = null, + items: List, + buttons: (@Composable () -> Unit)? = null +) { + CardWidget( + colors = colors, onClick = onClick, icon = icon, title = title, content = { + @Composable + fun ItemWidget(item: HomeCardItem) { + Row( + modifier = Modifier + .clickable(enabled = item.onClick != null, onClick = item.onClick ?: {}) + .padding(horizontal = 24.dp, vertical = 12.dp), + horizontalArrangement = Arrangement.spacedBy(24.dp) + ) { + if (showItemIcon) { + if (item.icon != null) { + Icon(imageVector = item.icon, contentDescription = item.label) + } else { + Spacer(modifier = Modifier.size(32.dp)) + } + } + Column( + modifier = Modifier.weight(1f) + ) { + Text(text = item.label, style = MaterialTheme.typography.bodyLarge) + if (item.content != null) { + Text(text = item.content, style = MaterialTheme.typography.bodyMedium) + } + } + } + } + Column { + items.forEach { + ItemWidget(it) + } + } + }, buttons = buttons + ) +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +fun CardWidget( + colors: CardColors = CardDefaults.elevatedCardColors(), + onClick: (() -> Unit)? = null, + icon: (@Composable () -> Unit)? = null, + title: (@Composable () -> Unit)? = null, + content: (@Composable () -> Unit)? = null, + text: (@Composable () -> Unit)? = null, + buttons: (@Composable () -> Unit)? = null +) { + ElevatedCard( + colors = colors + ) { + Column( + modifier = Modifier + .fillMaxWidth() + .clickable(enabled = onClick != null, onClick = onClick ?: {}) + .padding(vertical = 24.dp), verticalArrangement = Arrangement.spacedBy(12.dp) + ) { + if (icon != null || title != null) { + Row( + modifier = Modifier + .padding(horizontal = 24.dp) + .align(Alignment.CenterHorizontally) + ) { + if (icon != null) { + Box(modifier = Modifier.align(Alignment.CenterVertically)) { + icon() + } + } + if (icon != null && title != null) { + Spacer(modifier = Modifier.size(24.dp)) + } + if (title != null) { + ProvideTextStyle(value = MaterialTheme.typography.titleLarge) { + Box(modifier = Modifier.align(Alignment.CenterVertically)) { + title() + } + } + } + } + } + if (content != null || text != null) { + if (content != null) Box { + content() + } + else Box(modifier = Modifier.padding(horizontal = 24.dp)) { + ProvideTextStyle(value = MaterialTheme.typography.bodyMedium) { + text?.invoke() + } + } + } + if (buttons != null) { + FlowRow( + modifier = Modifier + .padding(horizontal = 12.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp) + ) { + buttons() + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/ui/page/settings/main/MainPage.kt b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/main/MainPage.kt new file mode 100644 index 0000000..cf180d1 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/main/MainPage.kt @@ -0,0 +1,160 @@ +package com.rosan.dhizuku.ui.page.settings.main + +import androidx.compose.foundation.layout.* +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.twotone.Home +import androidx.compose.material.icons.twotone.RoomPreferences +import androidx.compose.material.icons.twotone.SettingsSuggest +import androidx.compose.material3.* +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.navigation.NavController +import com.google.accompanist.pager.ExperimentalPagerApi +import com.google.accompanist.pager.HorizontalPager +import com.google.accompanist.pager.rememberPagerState +import com.rosan.dhizuku.R +import com.rosan.dhizuku.ui.page.settings.config.ConfigPage +import com.rosan.dhizuku.ui.page.settings.home.HomePage +import com.rosan.dhizuku.ui.page.settings.preferred.PreferredPage +import kotlinx.coroutines.DelicateCoroutinesApi +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch + +@OptIn(ExperimentalPagerApi::class, DelicateCoroutinesApi::class) +@Composable +fun MainPage(navController: NavController) { + val pagerState = rememberPagerState() + val currentPage = pagerState.currentPage + fun onPageChanged(page: Int) { + GlobalScope.launch(Dispatchers.Main) { + pagerState.scrollToPage(page = page) + } + } + + val data = arrayOf( + NavigationData( + icon = Icons.TwoTone.Home, + label = stringResource(id = R.string.home) + ) { + HomePage(navController = navController) + }, + NavigationData( + icon = Icons.TwoTone.RoomPreferences, + label = stringResource(id = R.string.config) + ) { + ConfigPage(navController = navController) + }, + NavigationData( + icon = Icons.TwoTone.SettingsSuggest, + label = stringResource(id = R.string.preferred) + ) { + PreferredPage(navController = navController) + } + ) + + BoxWithConstraints( + modifier = Modifier + .fillMaxSize() + ) { + val isLandscapeScreen = maxHeight / maxWidth > 1.4 + Row(modifier = Modifier.fillMaxSize()) { + if (!isLandscapeScreen) { + ColumnNavigation( + data = data, + currentPage = currentPage, + onPageChanged = { onPageChanged(it) } + ) + } + + Column( + modifier = Modifier + .weight(1f) + .fillMaxSize() + ) { + HorizontalPager( + count = data.size, + state = pagerState, + userScrollEnabled = false, + modifier = Modifier + .weight(1f) + .fillMaxSize() + ) { + data[it].content.invoke() + } + if (isLandscapeScreen) { + RowNavigation( + data = data, + currentPage = currentPage, + onPageChanged = { onPageChanged(it) } + ) + } + } + } + } +} + +@Composable +fun RowNavigation( + data: Array, + currentPage: Int, + onPageChanged: (Int) -> Unit +) { + NavigationBar( + modifier = Modifier + .fillMaxWidth() + .wrapContentSize() + ) { + data.forEachIndexed { index, navigationData -> + NavigationBarItem( + selected = currentPage == index, + onClick = { onPageChanged(index) }, + icon = { + Icon( + imageVector = navigationData.icon, + contentDescription = navigationData.label + ) + }, + label = { + Text(text = navigationData.label) + }, + alwaysShowLabel = false + ) + } + } +} + +@Composable +fun ColumnNavigation( + data: Array, + currentPage: Int, + onPageChanged: (Int) -> Unit +) { + NavigationRail( + modifier = Modifier + .fillMaxHeight() + .wrapContentSize() + ) { + Spacer( + modifier = Modifier + .weight(1f) + ) + data.forEachIndexed { index, navigationData -> + NavigationRailItem( + selected = currentPage == index, + onClick = { onPageChanged(index) }, + icon = { + Icon( + imageVector = navigationData.icon, + contentDescription = navigationData.label + ) + }, + label = { + Text(text = navigationData.label) + }, + alwaysShowLabel = false + ) + } + } +} diff --git a/app/src/main/java/com/rosan/dhizuku/ui/page/settings/main/NavigationData.kt b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/main/NavigationData.kt new file mode 100644 index 0000000..d9beed5 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/main/NavigationData.kt @@ -0,0 +1,10 @@ +package com.rosan.dhizuku.ui.page.settings.main + +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.vector.ImageVector + +data class NavigationData( + val icon: ImageVector, + val label: String, + val content: @Composable () -> Unit +) diff --git a/app/src/main/java/com/rosan/dhizuku/ui/page/settings/preferred/PreferredPage.kt b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/preferred/PreferredPage.kt new file mode 100644 index 0000000..b7523af --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/preferred/PreferredPage.kt @@ -0,0 +1,39 @@ +package com.rosan.dhizuku.ui.page.settings.preferred + +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.material.icons.twotone.* +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.navigation.NavController +import com.rosan.dhizuku.R + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun PreferredPage(navController: NavController) { + val snackBarHostState = remember { + SnackbarHostState() + } + Scaffold( + modifier = Modifier + .fillMaxSize(), + topBar = { + TopAppBar( + title = { + Text(text = stringResource(id = R.string.preferred)) + } + ) + }, + snackbarHost = { SnackbarHost(hostState = snackBarHostState) }, + ) { + LazyColumn( + modifier = Modifier + .fillMaxSize() + .padding(it) + ) { + } + } +} diff --git a/app/src/main/java/com/rosan/dhizuku/ui/theme/Color.kt b/app/src/main/java/com/rosan/dhizuku/ui/theme/Color.kt new file mode 100644 index 0000000..521608d --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/theme/Color.kt @@ -0,0 +1,11 @@ +package com.rosan.dhizuku.ui.theme + +import androidx.compose.ui.graphics.Color + +val Purple80 = Color(0xFFD0BCFF) +val PurpleGrey80 = Color(0xFFCCC2DC) +val Pink80 = Color(0xFFEFB8C8) + +val Purple40 = Color(0xFF6650a4) +val PurpleGrey40 = Color(0xFF625b71) +val Pink40 = Color(0xFF7D5260) \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/ui/theme/DhizukuTheme.kt b/app/src/main/java/com/rosan/dhizuku/ui/theme/DhizukuTheme.kt new file mode 100644 index 0000000..1ee46fe --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/theme/DhizukuTheme.kt @@ -0,0 +1,77 @@ +package com.rosan.dhizuku.ui.theme + +import android.os.Build +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.dynamicDarkColorScheme +import androidx.compose.material3.dynamicLightColorScheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.runtime.Composable +import androidx.compose.runtime.SideEffect +import androidx.compose.ui.platform.LocalContext +import com.google.accompanist.systemuicontroller.rememberSystemUiController + +private val DarkColorScheme = darkColorScheme( + primary = Purple80, + secondary = PurpleGrey80, + tertiary = Pink80 +) + +private val LightColorScheme = lightColorScheme( + primary = Purple40, + secondary = PurpleGrey40, + tertiary = Pink40 + + /* Other default colors to override + background = Color(0xFFFFFBFE), + surface = Color(0xFFFFFBFE), + onPrimary = Color.White, + onSecondary = Color.White, + onTertiary = Color.White, + onBackground = Color(0xFF1C1B1F), + onSurface = Color(0xFF1C1B1F), + */ +) + +@Composable +fun InstallerTheme( + darkTheme: Boolean = isSystemInDarkTheme(), + // Dynamic color is available on Android 12+ + dynamicColor: Boolean = true, + content: @Composable () -> Unit +) { + val colorScheme = when { + dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { + val context = LocalContext.current + if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) + } + darkTheme -> DarkColorScheme + else -> LightColorScheme + } + val systemUiController = rememberSystemUiController() + SideEffect { + systemUiController.setStatusBarColor( + color = colorScheme.surface, + darkIcons = !darkTheme + ) + systemUiController.setNavigationBarColor( + color = colorScheme.surface, + darkIcons = !darkTheme + ) + } + /*val view = LocalView.current + if (!view.isInEditMode) { + SideEffect { + (view.context as Activity).window.setStatusBarColor() + (view.context as Activity).window.navigationBarColor = colorScheme.primary.toArgb() + ViewCompat.getWindowInsetsController(view)?.isAppearanceLightStatusBars = darkTheme + } + }*/ + + MaterialTheme( + colorScheme = colorScheme, + typography = Typography, + content = content + ) +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/ui/theme/Type.kt b/app/src/main/java/com/rosan/dhizuku/ui/theme/Type.kt new file mode 100644 index 0000000..9b4140d --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/theme/Type.kt @@ -0,0 +1,34 @@ +package com.rosan.dhizuku.ui.theme + +import androidx.compose.material3.Typography +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.sp + +// Set of Material typography styles to start with +val Typography = Typography( + bodyLarge = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 16.sp, + lineHeight = 24.sp, + letterSpacing = 0.5.sp + ) + /* Other default text styles to override + titleLarge = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 22.sp, + lineHeight = 28.sp, + letterSpacing = 0.sp + ), + labelSmall = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Medium, + fontSize = 11.sp, + lineHeight = 16.sp, + letterSpacing = 0.5.sp + ) + */ +) \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/ui/widget/dialog/AlertDialog.kt b/app/src/main/java/com/rosan/dhizuku/ui/widget/dialog/AlertDialog.kt new file mode 100644 index 0000000..3ecc58a --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/widget/dialog/AlertDialog.kt @@ -0,0 +1,177 @@ +//package com.rosan.installer.ui.widget.dialog +// +//import androidx.compose.foundation.layout.Box +//import androidx.compose.foundation.layout.Column +//import androidx.compose.foundation.layout.PaddingValues +//import androidx.compose.foundation.layout.padding +//import androidx.compose.foundation.layout.sizeIn +//import androidx.compose.material3.AlertDialogDefaults +//import androidx.compose.material3.LocalContentColor +//import androidx.compose.material3.MaterialTheme +//import androidx.compose.material3.ProvideTextStyle +//import androidx.compose.material3.Surface +//import androidx.compose.runtime.Composable +//import androidx.compose.runtime.CompositionLocalProvider +//import androidx.compose.ui.Alignment +//import androidx.compose.ui.Modifier +//import androidx.compose.ui.graphics.Color +//import androidx.compose.ui.graphics.Shape +//import androidx.compose.ui.unit.Dp +//import androidx.compose.ui.unit.dp +//import androidx.compose.ui.window.Dialog +//import androidx.compose.ui.window.DialogProperties +//import com.google.accompanist.flowlayout.FlowRow +// +//@Composable +//fun AlertDialog( +// onDismissRequest: () -> Unit, +// confirmButton: @Composable () -> Unit, +// modifier: Modifier = Modifier, +// dismissButton: @Composable (() -> Unit)? = null, +// icon: @Composable (() -> Unit)? = null, +// title: @Composable (() -> Unit)? = null, +// text: @Composable (() -> Unit)? = null, +// view: @Composable (() -> Unit)? = null, +// shape: Shape = AlertDialogDefaults.shape, +// containerColor: Color = AlertDialogDefaults.containerColor, +// iconContentColor: Color = AlertDialogDefaults.iconContentColor, +// titleContentColor: Color = AlertDialogDefaults.titleContentColor, +// textContentColor: Color = AlertDialogDefaults.textContentColor, +// tonalElevation: Dp = AlertDialogDefaults.TonalElevation, +// properties: DialogProperties = DialogProperties() +//) { +// val realView: @Composable (() -> Unit)? = when { +// view != null -> view +// text != null -> { +// @Composable { +// Box(modifier = Modifier.padding(DialogWidgetPadding)) { +// text() +// } +// } +// } +// else -> null +// } +// Dialog(onDismissRequest = onDismissRequest, properties = properties) { +// AlertDialogContent( +// buttons = { +// FlowRow( +// mainAxisSpacing = ButtonsMainAxisSpacing, +// crossAxisSpacing = ButtonsCrossAxisSpacing +// ) { +// dismissButton?.invoke() +// confirmButton() +// } +// }, +// modifier = modifier, +// icon = icon, +// title = title, +// view = realView, +// shape = shape, +// containerColor = containerColor, +// tonalElevation = tonalElevation, +// buttonContentColor = MaterialTheme.colorScheme.primary, +// iconContentColor = iconContentColor, +// titleContentColor = titleContentColor, +// textContentColor = textContentColor +// ) +// } +//} +// +//@Composable +//private fun AlertDialogContent( +// buttons: @Composable () -> Unit, +// modifier: Modifier = Modifier, +// icon: (@Composable () -> Unit)?, +// title: (@Composable () -> Unit)?, +// view: @Composable (() -> Unit)?, +// shape: Shape, +// containerColor: Color, +// tonalElevation: Dp, +// buttonContentColor: Color, +// iconContentColor: Color, +// titleContentColor: Color, +// textContentColor: Color, +//) { +// Surface( +// modifier = modifier, +// shape = shape, +// color = containerColor, +// tonalElevation = tonalElevation +// ) { +// Column( +// modifier = Modifier +// .sizeIn(minWidth = MinWidth, maxHeight = MaxWidth) +// .padding(vertical = DialogPadding) +// ) { +// icon?.let { icon -> +// CompositionLocalProvider(LocalContentColor provides iconContentColor) { +// Box( +// modifier = Modifier +// .padding(DialogWidgetPadding) +// .padding(IconPadding) +// .align(Alignment.CenterHorizontally) +// ) { +// icon() +// } +// } +// } +// title?.let { title -> +// CompositionLocalProvider(LocalContentColor provides titleContentColor) { +// val textStyle = MaterialTheme.typography.headlineSmall +// ProvideTextStyle(textStyle) { +// Box( +// modifier = Modifier +// .padding(DialogWidgetPadding) +// .padding(TitlePadding) +// .align( +// if (icon == null) Alignment.Start +// else Alignment.CenterHorizontally +// ) +// ) { +// title() +// } +// } +// } +// } +// view?.let { view -> +// CompositionLocalProvider(LocalContentColor provides textContentColor) { +// val textStyle = MaterialTheme.typography.bodyMedium +// ProvideTextStyle(textStyle) { +// Box( +// modifier = Modifier +// .weight(weight = 1f, fill = false) +// .padding(TextPadding) +// .align(Alignment.Start) +// ) { +// view() +// } +// } +// } +// } +// Box( +// modifier = Modifier +// .padding(DialogWidgetPadding) +// .align(Alignment.End) +// ) { +// CompositionLocalProvider(LocalContentColor provides buttonContentColor) { +// val textStyle = MaterialTheme.typography.labelLarge +// ProvideTextStyle(value = textStyle, content = buttons) +// } +// } +// } +// } +//} +// +// +//private val ButtonsMainAxisSpacing = 8.dp +//private val ButtonsCrossAxisSpacing = 12.dp +// +//// Paddings for each of the dialog's parts. +//private val DialogPadding = 24.dp +//private val DialogWidgetPadding = PaddingValues(horizontal = DialogPadding) +//private val IconPadding = PaddingValues(bottom = 16.dp) +//private val TitlePadding = PaddingValues(bottom = 16.dp) +//private val TextPadding = PaddingValues(bottom = 24.dp) +// +//private val MinWidth = 280.dp +//private val MaxWidth = 560.dp diff --git a/app/src/main/java/com/rosan/dhizuku/ui/widget/dialog/PositionDialog.kt b/app/src/main/java/com/rosan/dhizuku/ui/widget/dialog/PositionDialog.kt new file mode 100644 index 0000000..f9fbe2f --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/widget/dialog/PositionDialog.kt @@ -0,0 +1,205 @@ +package com.rosan.dhizuku.ui.widget.dialog + +import androidx.compose.animation.core.animateDpAsState +import androidx.compose.foundation.clickable +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.sizeIn +import androidx.compose.material3.AlertDialogDefaults +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.ProvideTextStyle +import androidx.compose.material3.Surface +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Shape +import androidx.compose.ui.layout.onSizeChanged +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp +import androidx.compose.ui.window.Dialog +import androidx.compose.ui.window.DialogProperties + +@Composable +fun PositionDialog( + properties: DialogProperties = DialogProperties(), + onDismissRequest: () -> Unit, + modifier: Modifier = Modifier, + shape: Shape = AlertDialogDefaults.shape, + containerColor: Color = AlertDialogDefaults.containerColor, + iconContentColor: Color = AlertDialogDefaults.iconContentColor, + titleContentColor: Color = AlertDialogDefaults.titleContentColor, + textContentColor: Color = AlertDialogDefaults.textContentColor, + tonalElevation: Dp = AlertDialogDefaults.TonalElevation, + leftIcon: @Composable (() -> Unit)? = null, + centerIcon: @Composable (() -> Unit)? = null, + rightIcon: @Composable (() -> Unit)? = null, + leftTitle: @Composable (() -> Unit)? = null, + centerTitle: @Composable (() -> Unit)? = null, + rightTitle: @Composable (() -> Unit)? = null, + leftText: @Composable (() -> Unit)? = null, + centerText: @Composable (() -> Unit)? = null, + rightText: @Composable (() -> Unit)? = null, + leftButton: @Composable (() -> Unit)? = null, + centerButton: @Composable (() -> Unit)? = null, + rightButton: @Composable (() -> Unit)? = null +) { + Dialog(onDismissRequest = onDismissRequest, properties = properties) { + Box( + modifier = Modifier + .fillMaxSize() + .clickable( + onClick = onDismissRequest, + indication = null, + interactionSource = remember { + MutableInteractionSource() + }) + ) { + Box( + modifier = Modifier + .align(Alignment.Center) + .clickable( + onClick = {}, + indication = null, + interactionSource = remember { + MutableInteractionSource() + }) + ) { + Surface( + modifier = modifier, + shape = shape, + color = containerColor, + tonalElevation = tonalElevation + ) { + Box( + modifier = Modifier + .sizeIn(minWidth = MinWidth, maxHeight = MaxWidth) + .padding(DialogPadding) + ) { + var buttonHeightPx by remember { + mutableStateOf(0) + } + val buttonHeight = (buttonHeightPx / LocalDensity.current.density).dp + Box(modifier = Modifier + .align(Alignment.BottomCenter) + .onSizeChanged { + buttonHeightPx = it.height + }) { + PositionChildWidget( + leftButton, + centerButton, + rightButton + ) { button -> + CompositionLocalProvider(LocalContentColor provides MaterialTheme.colorScheme.primary) { + val textStyle = MaterialTheme.typography.labelLarge + ProvideTextStyle(value = textStyle) { + button?.invoke() + } + } + } + } + Column( + modifier = Modifier.padding(bottom = animateDpAsState(targetValue = buttonHeight).value) + ) { + PositionChildWidget( + leftIcon, + centerIcon, + rightIcon + ) { icon -> + CompositionLocalProvider(LocalContentColor provides iconContentColor) { + Box( + modifier = Modifier + .padding(IconPadding) + .align(Alignment.CenterHorizontally) + ) { + icon?.invoke() + } + } + } + PositionChildWidget( + leftTitle, + centerTitle, + rightTitle + ) { title -> + CompositionLocalProvider(LocalContentColor provides titleContentColor) { + val textStyle = MaterialTheme.typography.headlineSmall + ProvideTextStyle(textStyle) { + Box( + modifier = Modifier + .padding(TitlePadding) + .align(Alignment.CenterHorizontally) + ) { + title?.invoke() + } + } + } + } + PositionChildWidget( + leftText, + centerText, + rightText + ) { text -> + CompositionLocalProvider(LocalContentColor provides textContentColor) { + val textStyle = MaterialTheme.typography.bodyMedium + ProvideTextStyle(textStyle) { + Box( + modifier = Modifier + .weight(weight = 1f, fill = false) + .padding(TextPadding) + ) { + text?.invoke() + } + } + } + } + } + } + } + } + } + } +} + +@Composable +private fun PositionChildWidget( + left: @Composable (() -> Unit)? = null, + center: @Composable (() -> Unit)? = null, + right: @Composable (() -> Unit)? = null, + parent: @Composable ((child: @Composable (() -> Unit)?) -> Unit) +) { + if (left == null && center == null && right == null) return + Box(modifier = Modifier.fillMaxWidth()) { + Box(modifier = Modifier.align(Alignment.TopStart)) { + parent.invoke(left) + } + Box(modifier = Modifier.align(Alignment.TopCenter)) { + parent.invoke(center) + } + Box(modifier = Modifier.align(Alignment.TopEnd)) { + parent.invoke(right) + } + } +} + +private val ButtonsMainAxisSpacing = 8.dp +private val ButtonsCrossAxisSpacing = 12.dp + +private val DialogPadding = 24.dp +private val IconPadding = PaddingValues(bottom = 16.dp) +private val TitlePadding = PaddingValues(bottom = 16.dp) +private val TextPadding = PaddingValues(bottom = 24.dp) + +private val MinWidth = 280.dp +private val MaxWidth = 560.dp \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/ui/widget/setting/BaseWidget.kt b/app/src/main/java/com/rosan/dhizuku/ui/widget/setting/BaseWidget.kt new file mode 100644 index 0000000..7b8a648 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/widget/setting/BaseWidget.kt @@ -0,0 +1,72 @@ +package com.rosan.dhizuku.ui.widget.setting + +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.* +import androidx.compose.material.icons.materialIcon +import androidx.compose.material.icons.materialPath +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.unit.dp + +@Composable +fun BaseWidget( + icon: ImageVector? = null, + title: String, + description: String? = null, + enabled: Boolean = true, + onClick: () -> Unit = {}, + foreContent: @Composable BoxScope.() -> Unit = {}, + content: @Composable BoxScope.() -> Unit, +) { + Row( + modifier = Modifier + .fillMaxWidth() + .clickable( + enabled = enabled, + onClick = onClick + ) + .padding(16.dp), + horizontalArrangement = Arrangement.spacedBy(16.dp), + ) { + Icon( + modifier = Modifier + .size(24.dp) + .align(Alignment.CenterVertically), + imageVector = icon ?: materialIcon("") { materialPath {} }, + contentDescription = null, + ) + Box( + modifier = Modifier + .weight(1f) + .fillMaxHeight() + .align(Alignment.CenterVertically) + ) { + Column { + Text( + text = title, + color = MaterialTheme.colorScheme.onSurface, + style = MaterialTheme.typography.titleMedium + ) + description?.let { + Text( + text = it, + color = MaterialTheme.colorScheme.onSurface, + style = MaterialTheme.typography.bodyMedium + ) + } + } + foreContent() + } + Box( + modifier = Modifier + .align(Alignment.CenterVertically) + ) { + content() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/ui/widget/setting/DropDownMenuWidget.kt b/app/src/main/java/com/rosan/dhizuku/ui/widget/setting/DropDownMenuWidget.kt new file mode 100644 index 0000000..aa44792 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/widget/setting/DropDownMenuWidget.kt @@ -0,0 +1,119 @@ +package com.rosan.dhizuku.ui.widget.setting + +import androidx.compose.animation.core.animateIntAsState +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.* +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.layout.layout +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.unit.DpOffset +import androidx.compose.ui.unit.dp + + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun DropDownMenuWidget( + icon: ImageVector? = null, + title: String, + description: String? = null, + enabled: Boolean = true, + choice: Int, + data: List, + onChoiceChange: (Int) -> Unit +) { + var expanded by remember { + mutableStateOf(false) + } + + val heights by remember { + mutableStateOf(Array(data.size) { 0 }) + } + + fun updateHeights(index: Int, height: Int) { + heights[index] = height + } + + var containerHeight by remember { + mutableStateOf(0) + } + + val containerHeightApply by animateIntAsState(targetValue = if (expanded) containerHeight else 0) + + val offsetY by animateIntAsState(targetValue = run { + val sumHeights = heights.sum() + var y = 0 + if (sumHeights < containerHeight) { + if (choice > 0) { + for (i in 0 until choice) { + y -= heights[i] + } + } + y -= heights[choice] / 2 + y -= (containerHeight - sumHeights) / 2 + } + y + }) + + BaseWidget( + icon = icon, + title = title, + description = description, + enabled = enabled, + onClick = { + expanded = !expanded + }, + foreContent = { + Box( + modifier = Modifier + .align(Alignment.CenterStart) + ) { + DropdownMenu( + modifier = Modifier + .layout { measurable, constraints -> + val placeable = measurable.measure(constraints) + containerHeight = placeable.height + layout(placeable.width, containerHeightApply) { + placeable.placeRelative(0, 0) + } + }, + expanded = expanded, + onDismissRequest = { expanded = false }, + offset = DpOffset( + x = 0.dp, + y = with(LocalDensity.current) { + offsetY.toDp() + } + ) + ) { + data.forEachIndexed { index, item -> + val backgroundColor = + if (index == choice) MaterialTheme.colorScheme.surfaceVariant else Color.Transparent + DropdownMenuItem( + modifier = Modifier + .background(backgroundColor) + .layout { measurable, constraints -> + val placeable = measurable.measure(constraints) + val height = placeable.height + updateHeights(index, height) + layout(placeable.width, height) { + placeable.placeRelative(0, 0) + } + }, + text = { Text(text = item) }, + onClick = { + onChoiceChange(index) + expanded = false + } + ) + } + } + } + } + ) { + } +} diff --git a/app/src/main/java/com/rosan/dhizuku/ui/widget/setting/LabelWidget.kt b/app/src/main/java/com/rosan/dhizuku/ui/widget/setting/LabelWidget.kt new file mode 100644 index 0000000..ee68d4e --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/widget/setting/LabelWidget.kt @@ -0,0 +1,28 @@ +package com.rosan.dhizuku.ui.widget.setting + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp + +@Composable +fun LabelWidget(label: String) { + Box( + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 8.dp, horizontal = 56.dp) +// .padding(vertical = 8.dp, horizontal = 16.dp) + .padding(top = 8.dp) + ) { + Text( + modifier = Modifier, + text = label, + style = MaterialTheme.typography.titleSmall, + color = MaterialTheme.colorScheme.primary, + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/ui/widget/setting/SwitchWidget.kt b/app/src/main/java/com/rosan/dhizuku/ui/widget/setting/SwitchWidget.kt new file mode 100644 index 0000000..69a9d46 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/widget/setting/SwitchWidget.kt @@ -0,0 +1,31 @@ +package com.rosan.dhizuku.ui.widget.setting + +import androidx.compose.material3.Switch +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.vector.ImageVector + +@Composable +fun SwitchWidget( + icon: ImageVector? = null, + title: String, + description: String? = null, + enabled: Boolean = true, + checked: Boolean, + onCheckedChange: (Boolean) -> Unit +) { + BaseWidget( + icon = icon, + title = title, + description = description, + enabled = enabled, + onClick = { + onCheckedChange(!checked) + } + ) { + Switch( + enabled = enabled, + checked = checked, + onCheckedChange = { onCheckedChange(!checked) } + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/util/ContextUtil.kt b/app/src/main/java/com/rosan/dhizuku/util/ContextUtil.kt new file mode 100644 index 0000000..964ae3a --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/util/ContextUtil.kt @@ -0,0 +1,21 @@ +package com.rosan.dhizuku.util + +import android.content.Context +import android.content.Intent +import android.net.Uri +import android.widget.Toast +import androidx.annotation.StringRes + +fun Context.openUrlInBrowser(url: String) { + val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url)) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + startActivity(intent) +} + +fun Context.toast(text: CharSequence, duration: Int = Toast.LENGTH_SHORT) { + Toast.makeText(this, text, duration).show() +} + +fun Context.toast(@StringRes resId: Int, duration: Int = Toast.LENGTH_SHORT) { + Toast.makeText(this, resId, duration).show() +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/util/IOUtil.kt b/app/src/main/java/com/rosan/dhizuku/util/IOUtil.kt new file mode 100644 index 0000000..2db030a --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/util/IOUtil.kt @@ -0,0 +1,54 @@ +package com.rosan.dhizuku.util + +import android.os.ParcelFileDescriptor +import java.io.IOException +import java.io.InputStream +import java.io.OutputStream +import kotlin.concurrent.thread + +private fun transferThread(input: InputStream, output: OutputStream) { + thread( + isDaemon = true + ) { + val buf = ByteArray(DEFAULT_BUFFER_SIZE) + var len = 0; + try { + while (run { + len = input.read(buf) + return@run len + } > 0) { + output.write(buf, 0, len) + output.flush() + } + } catch (e: IOException) { + e.printStackTrace() + } finally { + try { + input.close() + } catch (e: IOException) { + e.printStackTrace() + } + try { + output.close() + } catch (e: IOException) { + e.printStackTrace() + } + } + } +} + +fun InputStream.parcelable(): ParcelFileDescriptor { + val pipe = ParcelFileDescriptor.createPipe() + val read = pipe[0] + val write = pipe[1] + transferThread(this, ParcelFileDescriptor.AutoCloseOutputStream(write)) + return read +} + +fun OutputStream.parcelable(): ParcelFileDescriptor { + val pipe = ParcelFileDescriptor.createPipe() + val read = pipe[0] + val write = pipe[1] + transferThread(ParcelFileDescriptor.AutoCloseInputStream(read), this) + return write +} \ No newline at end of file diff --git a/app/src/main/res/drawable-hdpi/round_hourglass_disabled_black_18.png b/app/src/main/res/drawable-hdpi/round_hourglass_disabled_black_18.png new file mode 100644 index 0000000000000000000000000000000000000000..045a40ebb8d8b9a343b84f07a864373063465470 GIT binary patch literal 313 zcmV-90mlA`P)F^x2+^}YGYRcD*dH91V|g$_h-X(3*)ZaWSmiZn!z9It?1#*Ivbbt^gN=xE1q~KKC02#0#t#5!dDPoM}{ZEx| zo7HNbW_Nbr|D?x?RI`?JbmbFvyqEhfN5rrWI{t+qqyY5U8?mrZam;s(57;wRYNoY{ zMxGnIrBt-c_|89#7iqz6ZpC(?#2eOI+47vF88G=+4;K`q-2+}z7<~n@m z8y~C=gO~E*Hg0ShLk_;Mj6dOO=N&R5Ju)tPer@JU?a*J*VAcGw0HZH2I`M=k@1@`h3R91I=`($D2YG z$^|lty3!H@h0^L?S?|A96|W>K|U(42jkigxu}MjgfMn0 zn%SnBhjYjhK^Vs{I(5kpqgY0#PP;G_^|eEFj7jUgCs1PqVa0nI)i603FWsq;VE_h( zx{YJ5wwMI!13_9$MZLyTYjxvvplqw_Z$twr`wonxs#1OV@0$?~psGUm?~dj4O|{DnG_ki*n!^Yo;km}PoZ7(@A>Pr8 zl@CeOCnwEuR5@Tu^LQm=A?h-$%~WQ&eGRT9!?L&+auayM_8ul{TPMWDnBgvCoF{GX zQ7|#*NLxEJOvI^#h^6DmSQ<_P)917>JuVZ~Kch~*Ja?f$4Wimd^tqnGvD6qDoux&U zW2ps7(2NSlQx&9$j5A2dIF_2D3GZm-d|Ni9~kHkPRQBH_l7JpCkF*IA&;pisq)qq(3AhiIX(T01FZP3F7fFc&l)`>Sk+e8XP?mP2iimL< zVLzit>BljQq{V4~{fr`Maq3||!${lF0tu*tvV0@eLRr3%YG6NuNab22TmoYrNts8= zcQ+tm9;pcu=8+m9VIHXg66TTWAqe?{1Ng2)DnlVxr^MNWfvrtHl3g5@U!>a6#tB6F zQS?YPYMha`uE>!tjy_I)k#?a6dYnun-5OUMJfZ=&0 z31c29QlN08U-prV11Z~JA1Ov4kE91Oh*Xk6AT^RGN|Fv__$Y!N$vTkn!z_9v(?Ir* zLnRlf4U#^)NN*v!d?TGsC_r_Je*xy;GsM_?%oyeWq>Gr+t-%+=I3KVAjOmfOu*2e= zbOvvx=!?4*FK`^Q#_^B)Br={J=?Iu_L*RVUE6l*~e2Yjzi|pF!%r R6=MJZ002ovPDHLkV1g)~4nP0^ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/round_hourglass_empty_black_18.png b/app/src/main/res/drawable-hdpi/round_hourglass_empty_black_18.png new file mode 100644 index 0000000000000000000000000000000000000000..6152b8d9da159e32cb0434b6666ac5ad8660a0ed GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^(jd&i0wmS%+S~(DYdu{YLo7}wCrEfKIJ{v>qCHy- zm&kGE9g=Yde~xp-GdwL|^4>71mglQRfqcXjq3veu8<^xw0_8TWU{=hX(O`DVjmD8oDiU-#~A@+Fg*I|u%!GFr?+w`5`3 zAxC#1-Z-fcjUO9?D6M&k5GDpE);x*FOZ917BSc}%3xufsIOU8OXS`rUT-f|JNazn?J*I#P&e4J=ttO5jzyRHwV^0j7u@B0H&Gajo`qfHj1=;{R9oS)0dv4Y1+O5 zWBxA@GL#Y{L!<`zTu3GGar(3O0c+to2!KLBm#Tf~|n_v1PSu8s_03#qrcpVimq5#6`&Q)E#qZ zWG>)%>V_pW)5jU6`Z%7tVgW|b)VFFo;UD;bOI9Y)@BZWzuM*K|%-3<4@)FVFR zhcp`DoO8~(Urm4-SOYDPGLIHm12r%~yb9O>X{50OD&;e03#5_9R`pDp14(4e5o{v_ zv_Y^|2&hG{G%$`p15Ek5ra%K6hv)r2KnwD zIdHHu@--Wn^9#Y=2M%_h326rG2j=`hurr{Kk+S1_1Luf#38WY)8%_eQ5N{bHWy5(R zr~o8A9DSr1=aryxkz$+|g33jTah?e(21yA=A1TIpBB)%X80V3oqLBie2ZD-6(#6pS zS`y}u*gawXlD;F%Kl3q?|0r@xm@hSM2=m42b@4bNNcuSWZ?*cCYlCbxa$#Js83 k+rs@~0l%8UIp>^nKQ5mcIEeCT#Q*>R07*qoM6N<$g7+}DPXGV_ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_18.png b/app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_18.png new file mode 100644 index 0000000000000000000000000000000000000000..71d24e6d8e0dc223d6ced273c187645c9f99bb8b GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+0wn(&ce?|mrhB?LhG?8mPFSEPz%*Hg=Nk`S zKnDMlg^j8_UmZ5}K4dvuqhZ7NWFezpo2^5tAJ4f0LHV|sGsK#vm@0g%-Kgmls&=Aa zmZHG!&xxlTyo?He3oSa+rYKvV@Wimjy--?g!nuMj$F4+kyHrL8)usgRa$}Q6K_BnGQ%>ffGqTG|4g$l&Sf=d#Wz Gp$Pz0ElL#t literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_20.png b/app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_20.png new file mode 100644 index 0000000000000000000000000000000000000000..294cec15ffa1e3db0b1ae32bbb2de7802fa30f70 GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc0wmQNuC@WGUQZXt5RLQ62@(ktjso@r0 z-sEl|+GQA%xPtwXzGTaTBqxWZJUgbmTF~+Lc%H3CCbLldl!wxK)0MPEQ+J#RXuch6 zuv8({_s3uUz*R>B+$>h?lK8i1hba3B_NY~?M|yuu4P~0z;dHkn{H6H@Bep|c{};DB uuD=7MTowI-FAB3ZCZszQIvA~;q{F}(WyI+js+0kA7=x#)pUXO@geCyPzDP6x literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_24.png b/app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_24.png new file mode 100644 index 0000000000000000000000000000000000000000..67db46a1ce36194784d20f57ef7b18a4d17cd778 GIT binary patch literal 265 zcmV+k0rvihP)jsnv7Cy2Ku~(BFSi1rXcOtGqP*N&bTO12VNoMYt*m%-}*Lsb0Wf-3&%$OtHU%)3%r5A$uN$OU- P00000NkvXXu0mjf&&X`a literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_36.png b/app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_36.png new file mode 100644 index 0000000000000000000000000000000000000000..582e359af938222f92207d1f78df99c9d72c4613 GIT binary patch literal 365 zcmV-z0h0cSP)VAcGw0HZH2I`M=k@1@`h3R91I=`($D2YG z$^|lty3!H@h0^L?S?|A96|W>K|U(42jkigxu}MjgfMn0 zn%SnBhjYjhK^Vs{I(5kpqgY0#PP;G_^|eEFj7jUgCs1PqVa0nI)i603FWsq;VE_h( zx{YJ5wwMI!13_9$MZLyTYjxvvplqw_Z$twr`wonxs#1OV@0$?~psGUm?2QF1T-c-fTtcG);xec6hsPRL2nEi-{UYO_>pK~cNTKX zF5KX2US9JwU;zA>+at87ULBNk- z0X_s1;1fS5KRGReLqyAS_q;CTN<`|^5x3Fl#5oz?^Xa7&Q81n&R`J~;6Csaisof3= zRyMJNCz*IV(S}fE6I&3h0AGqYLkV?hOfPYww=p0^iLQ#h!mB*dF$U>A-eigP#+*Ko zB%+LKfFN<08NW`1{=i*MycqFeowd#41U1Z?S_28o0L&g0mH`wb-0nMp)<8l(!1eN* zAi=2*;Cg*$6EW)x$AcKKVyD{Q?MUo8d|{?*j+*gC9lH_(%*gNsMyRj7v@uGmlz2pG g)xZtL*ux*HZ>x(9LwkV@#Q*>R07*qoM6N<$f&^)|`v3p{ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/round_hourglass_empty_black_18.png b/app/src/main/res/drawable-mdpi/round_hourglass_empty_black_18.png new file mode 100644 index 0000000000000000000000000000000000000000..0033b112542791d64088e67f6cd41ae52e01bf44 GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+0wn(&ce?|mnmk<`Lp07OCnzu)7)2OZEO6vr zpuzPa?MFXr)#BNrydowE0S!*f3i?u)ox&GvFqosx^JHg|RuKc&=>wHU4)d6oDQULt z=b2a#r!qmk^=x~##5{u+O_94Cu1UQ)sBorW(nIybg$jQ-Q#gYcba1@xD6$B2bO=ch j64Z5ZH3;-%)n{N({Ov5*W3z$}=o$u3S3j3^P6mM6 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/round_hourglass_empty_black_20.png b/app/src/main/res/drawable-mdpi/round_hourglass_empty_black_20.png new file mode 100644 index 0000000000000000000000000000000000000000..bfe158dec268778e1226a0bc22d3b3da00b63056 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc0wmQNuC@WG0#6sm5RLQ62@7O*ocJKmy{BWP z!K8k6rwu9`qnI*SMk(9{i@(|JNazn?J*I#P&e4J=ttO5jz + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-xhdpi/round_hourglass_disabled_black_18.png b/app/src/main/res/drawable-xhdpi/round_hourglass_disabled_black_18.png new file mode 100644 index 0000000000000000000000000000000000000000..582e359af938222f92207d1f78df99c9d72c4613 GIT binary patch literal 365 zcmV-z0h0cSP)VAcGw0HZH2I`M=k@1@`h3R91I=`($D2YG z$^|lty3!H@h0^L?S?|A96|W>K|U(42jkigxu}MjgfMn0 zn%SnBhjYjhK^Vs{I(5kpqgY0#PP;G_^|eEFj7jUgCs1PqVa0nI)i603FWsq;VE_h( zx{YJ5wwMI!13_9$MZLyTYjxvvplqw_Z$twr`wonxs#1OV@0$?~psGUm?2QF1T-c-fTtcG);xec6hsPRL2nEi-{UYO_>pK~cNTKX zF5KX2US9JwU;zA>+at87ULBNk- z0X_s1;1fS5KRGReLqyAS_q;CTN<`|^5x3Fl#5oz?^Xa7&Q81n&R`J~;6Csaisof3= zRyMJNCz*IV(S}fE6I&3h0AGqYLkV?hOfPYww=p0^iLQ#h!mB*dF$U>A-eigP#+*Ko zB%+LKfFN<08NW`1{=i*MycqFeowd#41U1Z?S_28o0L&g0mH`wb-0nMp)<8l(!1eN* zAi=2*;Cg*$6EW)x$AcKKVyD{Q?MUo8d|{?*j+*gC9lH_(%*gNsMyRj7v@uGmlz2pG g)xZtL*ux*HZ>x(9LwkV@#Q*>R07*qoM6N<$f&^)|`v3p{ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/round_hourglass_disabled_black_36.png b/app/src/main/res/drawable-xhdpi/round_hourglass_disabled_black_36.png new file mode 100644 index 0000000000000000000000000000000000000000..220e4a5ba4fb3693aee059ddfbb550a2d78c5554 GIT binary patch literal 631 zcmV--0*L*IP)H_l7JpCkF*IA&;pisq)qq(3AhiIX(T01FZP3F7fFc&l)`>Sk+e8XP?mP2iimL< zVLzit>BljQq{V4~{fr`Maq3||!${lF0tu*tvV0@eLRr3%YG6NuNab22TmoYrNts8= zcQ+tm9;pcu=8+m9VIHXg66TTWAqe?{1Ng2)DnlVxr^MNWfvrtHl3g5@U!>a6#tB6F zQS?YPYMha`uE>!tjy_I)k#?a6dYnun-5OUMJfZ=&0 z31c29QlN08U-prV11Z~JA1Ov4kE91Oh*Xk6AT^RGN|Fv__$Y!N$vTkn!z_9v(?Ir* zLnRlf4U#^)NN*v!d?TGsC_r_Je*xy;GsM_?%oyeWq>Gr+t-%+=I3KVAjOmfOu*2e= zbOvvx=!?4*FK`^Q#_^B)Br={J=?Iu_L*RVUE6l*~e2Yjzi|pF!%r R6=MJZ002ovPDHLkV1g)~4nP0^ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/round_hourglass_disabled_black_48.png b/app/src/main/res/drawable-xhdpi/round_hourglass_disabled_black_48.png new file mode 100644 index 0000000000000000000000000000000000000000..60ba7ce86ca251210dee330c38acd029342069c7 GIT binary patch literal 789 zcmV+w1M2*VP)>P|xdl13(Bq;|IV>03rB{{~G8DAcXkG4}kd?5`t~~ zjTjPwZT!vH6N1LKA*^v2e-p-p;P5$L2=?(yF(d@r_$4%WLdXL?hIpREG+IKKQV&8A zJ_*4-z7SR$5DIZi2nDz$gghJ)LYfnT5FYv=s4dk-jtxO=HeA!S3T0}OVSFJN+h`nK z2!={S4tq-oz88kK1uh7|_p1E1z(pb0D~>R}5E`f=!}w7VRsw)3G>u;!;gS%-S701p z2!_@f#}|U3X+V`>{ICd@g;2c?!1M6qn`$S7>Mgd89|7Tt5Po+#?D&odE68w9?U#WH z!BWl+AO!ylp=}6P?Fa(!M-YG+;hG+rD{#q^oA;bXSgAn*4_yf4# zxYZZIAHe8W_FxAIDh>Ep*U=y$bm_W#sQc9_xBzicc T|JNazn?J*I#P&e4J=ttO5jz#~m!S6chax7&>zLh~%mwn;HYq4AZ`hQ=;MbNK(cO~jAlc@a zpm24s&r^?uRht$T9a>g(ZE@8@hp&&axA;k>u=QOyc1c5lm4V^kT(<}7y6YN&K4b87 L^>bP0l+XkK==EY) literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/round_hourglass_empty_black_24.png b/app/src/main/res/drawable-xhdpi/round_hourglass_empty_black_24.png new file mode 100644 index 0000000000000000000000000000000000000000..8329e16baad9c473b86eed605a2e4bd8d65da0d1 GIT binary patch literal 310 zcmV-60m=S}P)|b)VFFo;UD;bOI9Y)@BZWzuM*K|%-3<4@)FVFR zhcp`DoO8~(Urm4-SOYDPGLIHm12r%~yb9O>X{50OD&;e03#5_9R`pDp14(4e5o{v_ zv_Y^|2&hG{G%$`p15Ek5ra%K6hv)r2KnwD zIdHHu@--Wn^9#Y=2M%_h326rG2j=`hurr{Kk+S1_1Luf#38WY)8%_eQ5N{bHWy5(R zr~o8A9DSr1=aryxkz$+|g33jTah?e(21yA=A1TIpBB)%X80V3oqLBie2ZD-6(#6pS zS`y}u*gawXlD;F%Kl3q?|0r@xm@hSM2=m42b@4bNNcuSWZ?*cCYlCbxa$#Js83 k+rs@~0l%8UIp>^nKQ5mcIEeCT#Q*>R07*qoM6N<$g7+}DPXGV_ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/round_hourglass_empty_black_48.png b/app/src/main/res/drawable-xhdpi/round_hourglass_empty_black_48.png new file mode 100644 index 0000000000000000000000000000000000000000..926feacdfebfa13d3565d81d8dcf67965570c160 GIT binary patch literal 576 zcmV-G0>AxshvLG>ZM%zyR z(>dh)v!gSo-kcqju)6f1*Uj`_qAIFPSt|7 zY9Dxk)6`QNl!m{cHeO(xzDiO^h<6Qel`VDk9%M6|5xxH z|8E7;l{????Fyz}Z+*nKDWuztulU&%yvENW5Xi<~wrffF=1JU@gKxXyokIRUvW^^l zTaPO___kh`a`3%XaDSn>kb`d<(Uya68+9%R-y4PUKWv?G;&&mR7EieF_dy?b=d{Ox zzeQ8n=k-Za9iC(80>=?vU;tfW8sG)S&_%v6USI|lnBfIDB=$Ri9d!V{vg~297Pm=7<4rk1RuxMXfztlrsM}B^+`EUo2{n+ O0000~dj4O|{DnG_ki*n!^Yo;km}PoZ7(@A>Pr8 zl@CeOCnwEuR5@Tu^LQm=A?h-$%~WQ&eGRT9!?L&+auayM_8ul{TPMWDnBgvCoF{GX zQ7|#*NLxEJOvI^#h^6DmSQ<_P)917>JuVZ~Kch~*Ja?f$4Wimd^tqnGvD6qDoux&U zW2ps7(2NSlQx&9$j5A2dIF_2D3GZm-d|Ni9~kHkPRQB9C6vy%J5-UrWO1(p`&@{N68_l4 zeqH=yd%}Dc8y*j0Vq#)E<$-seuc|Xrj%bVPNXl#q{DnrdzNltaXmw>%;19F7O&^@# z!xVVVw^_bvRLjZ=HMmx>GI!#OF3{)^wxn->yXXal<>PLG`)C2Un-+olwwVCjq+exW zce>owCm*j+7g~{{(dM;W0J+CdrP`0ofrsFxy89u-){N`Emti+w|5{ z78K#xZu$|S%=x*Xg|cq+S6g}ZSC+2WoV)WuN+em;I>U)1ixhp$iqPF`aC+Ix2B!A| zY@6Qsg-@fuFo9^BrZos{*DVL2ZQFEpeuwX5VH%&0^uJ&)w08V4&wbIZqX^}Tb|1cY zqNj|TyfnVk25dFGL^u_lf;^q@$vrVKG2!wDKo`RJ8dp%h00000NkvXXu0mjf54^r6 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/round_hourglass_disabled_black_24.png b/app/src/main/res/drawable-xxhdpi/round_hourglass_disabled_black_24.png new file mode 100644 index 0000000000000000000000000000000000000000..220e4a5ba4fb3693aee059ddfbb550a2d78c5554 GIT binary patch literal 631 zcmV--0*L*IP)H_l7JpCkF*IA&;pisq)qq(3AhiIX(T01FZP3F7fFc&l)`>Sk+e8XP?mP2iimL< zVLzit>BljQq{V4~{fr`Maq3||!${lF0tu*tvV0@eLRr3%YG6NuNab22TmoYrNts8= zcQ+tm9;pcu=8+m9VIHXg66TTWAqe?{1Ng2)DnlVxr^MNWfvrtHl3g5@U!>a6#tB6F zQS?YPYMha`uE>!tjy_I)k#?a6dYnun-5OUMJfZ=&0 z31c29QlN08U-prV11Z~JA1Ov4kE91Oh*Xk6AT^RGN|Fv__$Y!N$vTkn!z_9v(?Ir* zLnRlf4U#^)NN*v!d?TGsC_r_Je*xy;GsM_?%oyeWq>Gr+t-%+=I3KVAjOmfOu*2e= zbOvvx=!?4*FK`^Q#_^B)Br={J=?Iu_L*RVUE6l*~e2Yjzi|pF!%r R6=MJZ002ovPDHLkV1g)~4nP0^ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/round_hourglass_disabled_black_36.png b/app/src/main/res/drawable-xxhdpi/round_hourglass_disabled_black_36.png new file mode 100644 index 0000000000000000000000000000000000000000..fe35987341e06dd54ce40e1cc006e587a6b9cf75 GIT binary patch literal 874 zcmV-w1C{)VP)3~oTg_AalHii8yQIWK5F*jKyXRFn#5f7=ZZWRuy8G^s;M#Z3otZPe-&^&k zU1$0kx1;V-N-3q3Qc5YMG#iiO3miwMvN?pW@DOG>j~l|<=nUAri6NDC6PDpIEFQsy zPQ+ex26XmfippArvwvCWQQW7jt7^k4KpRp?^MA$qms#W7djp-8%v&nyqhA*_!f2Dx zY1z!y=PtrAbh>~x7O%7n>_HW@tMP(^_Js<1ZkUT+eIBD7R6*C_a39f5VFzx(D7|YG zZov+mYJAx%X*Q1b0qrzq=zlYCx*V+iXxr4&wsNrcqur*SZYu|CKiVkuG^!k|?P&GY z9IPd1tCSb8ptT>Y94%l$3s}%fz=9UAparY|ZDqiM)@!g6swrq=8m#>%2wELjFE&{B z^ANQ9v3{MqAZUYu^%KTG(CWuJi`xMR+KMW$%D*iZv?b-Xp9{QeV-wXny>SQs2?WOwBEL%04r!cZoP6WfT=hfwED4v)`QlKJXR6f z66s%CTY%NHX+ayA7MEiMtyj&*nI2&Ut*}e*Z3$LE(}Onr?&v*M&`Nr8B(Vz6js&e) zKQuTwV|2e6=YY1@d03M@T|m(CM_WN_0T|5eGFrfb7BH9+5_!JX&2he76Pop(Ke&K-Xg3w0JGbSb|rSV0BbLLyooX$mlu}CRXLvhkEcm7h!~g&Q07*qoM6N<$f_8wJ AvH$=8 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/round_hourglass_disabled_black_48.png b/app/src/main/res/drawable-xxhdpi/round_hourglass_disabled_black_48.png new file mode 100644 index 0000000000000000000000000000000000000000..6586526ec9ab234533f84dc5d5c45dc5f9f7d39c GIT binary patch literal 1179 zcmV;M1Z4Y(P)GMQZ$6pK?hN~W5AgBv@$vET@$vET@$s=G z_2@(aODG|fyscpY1>D0ab8zY~hYjg4d$&!@qTU3a42sHe{%otbq2d&ep%-tlgwJ?^ zvkCXjVp|(eh!ERomd$eo-*y$;NK`O`Ev-B|L{hJ!3s~D%GT_{|1}oZmcK*>M-izKH zSdx!umIP0T5VNv)&PA4tCpxa+Bb|5K!bv$mHyK6ai3Z64g}5&V=r*(HGlPg;%K^F+ zQ`Q`!c{xBwv1kd=s;t{|BYsIBDkG0Hs)UWQ3Tfm~W{y)@dSd@NNr{%xAZ4TtSk?gq zL{HoXqD({th%ONsAgV-!fM^nt0-{Jn42T{PIUpXQ$8H1BB09MK zPu-7*bchbFzM%afng~%4QTq+xiK2Nzv;v+eVEhE;4B$FZz^M5Wgc47bQ_QnY=lan_ z6fmpZ0=cLqV)G1xWYiI{d8R=&YKYi8Qy?ArL~Nc(kdIsBVzN6z}Sc(GV)uqN}@bt?;#i;nM8xIBJo5$6%h@9*L1UvxH9DBRAifAAqk7GoY@Hj-&Um=epM16+0bp($K-P7Bdx)wqtU9_9aJu=tnf tBQAQ7{W*fmXhIXtdkP;PA0Hpv^BZXxfF1b;6{i3I002ovPDHLkV1kBC4w?V} literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/round_hourglass_empty_black_18.png b/app/src/main/res/drawable-xxhdpi/round_hourglass_empty_black_18.png new file mode 100644 index 0000000000000000000000000000000000000000..c5f7274f670c1dd1056d3bc72e9b34b6dba6bd47 GIT binary patch literal 356 zcmV-q0h|7bP)yRHwV^0j7u@B0H&Gajo`qfHj1=;{R9oS)0dv4Y1+O5 zWBxA@GL#Y{L!<`zTu3GGar(3O0c+to2!KLBm#Tf~|n_v1PSu8s_03#qrcpVimq5#6`&Q)E#qZ zWG>)%>V_pW)5jU6`Z%7tVgWG18m^{3WcmgDD=1j5?9e_9AlF$BvcZ`Doma~31-d63+6ZN zm-l67$IkO0B;1@4-x8=oCFXHJtZ@I&Wg_Kw@vRJo#=lvtr zmO|~1@If5Je;#1)pZsH0DQ)p(z&kTK_f@9XER8I7gjmQnX z#yLaTyunL$AnedxT<2(tWyDX(n9Ptz>UhXfo?}JzAys81+!8OTvAa^o51#g--BH6+ zdRJF_MtXP5B2wApf`T3%Gr8$2a_00&Na!<{lYCwiJZEgx>Wuk7y6m4y_jKWh#7bMO zbhwm$PHGr`Fzvzc4`@#9qWo<0iEMo7zZGZHTHiHVz5- a)|>!rY2wdX{OX+m0000|b)VFFo;UD;bOI9Y)@BZWzuM*K|%-3<4@)FVFR zhcp`DoO8~(Urm4-SOYDPGLIHm12r%~yb9O>X{50OD&;e03#5_9R`pDp14(4e5o{v_ zv_Y^|2&hG{G%$`p15Ek5ra%K6hv)r2KnwD zIdHHu@--Wn^9#Y=2M%_h326rG2j=`hurr{Kk+S1_1Luf#38WY)8%_eQ5N{bHWy5(R zr~o8A9DSr1=aryxkz$+|g33jTah?e(21yA=A1TIpBB)%X80V3oqLBie2ZD-6(#6pS zS`y}u*gawXlD;F%Kl3q?|0r@xm@hSM2=m42b@4bNNcuSWZ?*cCYlCbxa$#Js83 k+rs@~0l%8UIp>^nKQ5mcIEeCT#Q*>R07*qoM6N<$g7+}DPXGV_ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/round_hourglass_empty_black_36.png b/app/src/main/res/drawable-xxhdpi/round_hourglass_empty_black_36.png new file mode 100644 index 0000000000000000000000000000000000000000..e248363ab7a99774aaa94ee346cfd115a7b17ad6 GIT binary patch literal 632 zcmV-;0*C#HP);K?)3I-l9ReqSDbqfmLyZ2AVK|9!)fGg=$>X80x`5e;;*>#bQn1tuU5> z!5b!Gu*wCqI)^MoXBl7wYoFi8u$B!gYj!tTjn_q4Dk8LUYQvt2?97pNc` zXkLa2F3_^hjSOoC__k0*J3Uw}$lO|bu<;;s$J2vlLFQ)Z!P1|sFoh{hVG2{2c-RLS z?2{Ju(sco)AahGyb6;s;H(eKS7l2m6UDw=OTG)c+wJg=KgOOtZ6I13kt2 zXa-*aX?E5(W)Y!P>pv8O(CjRO9FfX{&|Iu@L~MAPi&aD9hNC6R8jj{-ogtA1qq$h8 zNT~j4F4hSWt3MhWR(~`X>llgF8_mT!Lc;w|bFmJQczzmNmY?Qg9e_zLnw_-|M&&&( z#qNPwxlC5Cuv{j~z+jg@%k}25!=2@RyWio>@_j&W^Je*ITfA95+9q!nJ6f0@nj5@X zKH55OmXEf^o0UARm_JNcd9!@972Yf#Z8;XJ_+_M}7_4c6g}*kYs9B?UBw4C`zz8jD zo@{Y_juv)Jc00s1E$o@>29{@9*gM%RNAI*Sz57jJ3R9TE6s9m1FtOXL#BPieyOmMw z=2Ictg~e|07P}>1>>&zbkG&9kP>JB9WyBr^1c*Jp>G#`$zyr55P17_@E2JN$$vD>2 SRJw=&0000tV< literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/round_hourglass_empty_black_48.png b/app/src/main/res/drawable-xxhdpi/round_hourglass_empty_black_48.png new file mode 100644 index 0000000000000000000000000000000000000000..1185768bd9134772373fd7a407e091469e302ce8 GIT binary patch literal 863 zcmV-l1EBngP)36c3j@YrW&&Y5NH8S9fZqtqV%fTAdhq9}@@D2ftGI>=CBgb6CoZGsU>Waxy0 zvw;FL?=XM1847HKz|+IHahzXmj2=5rAM@6DDpZ)G&wcl_%X3E5Cpdl5|kPm1=1vKFUa$W8e19Y)g+gNMp zVt}c0%z%InvFT;RO&rDmH1))DMl=l{XyA3!LHIyjucLOu2U_U#J!|sHQ9ttmZ7-Y+^2T{8?C=3y zbUd5S8|FF1B@pI=;~`AmAWwylpv;AZD_Q+SE}mn~`v(B7;-1$s(3&h!VUV7dD z&ohuG_e|vO{~ZE|Pa=2UZxKj*5xM()gMi|LC?XyoMDG4xBf!*2{+?tWe( z;M74BF;5*t?(<(Dg8UDW``qVXdvHRXhohJgKz1CkO-)82yLa-HKj?1h(9p{&%o7>Ft4d*z43YzUu z?>XQT%=myxs!hEmAJC9$TR7pzZpTzWV?H2#nnFMV5|DrdBp?9^ zNI(J-kbndf43IwhZvd%mgaM?&BLx|U^Al0V%W^I_Y(jB002ovPDHLkV1mV(km3LU literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_18.png b/app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_18.png new file mode 100644 index 0000000000000000000000000000000000000000..220e4a5ba4fb3693aee059ddfbb550a2d78c5554 GIT binary patch literal 631 zcmV--0*L*IP)H_l7JpCkF*IA&;pisq)qq(3AhiIX(T01FZP3F7fFc&l)`>Sk+e8XP?mP2iimL< zVLzit>BljQq{V4~{fr`Maq3||!${lF0tu*tvV0@eLRr3%YG6NuNab22TmoYrNts8= zcQ+tm9;pcu=8+m9VIHXg66TTWAqe?{1Ng2)DnlVxr^MNWfvrtHl3g5@U!>a6#tB6F zQS?YPYMha`uE>!tjy_I)k#?a6dYnun-5OUMJfZ=&0 z31c29QlN08U-prV11Z~JA1Ov4kE91Oh*Xk6AT^RGN|Fv__$Y!N$vTkn!z_9v(?Ir* zLnRlf4U#^)NN*v!d?TGsC_r_Je*xy;GsM_?%oyeWq>Gr+t-%+=I3KVAjOmfOu*2e= zbOvvx=!?4*FK`^Q#_^B)Br={J=?Iu_L*RVUE6l*~e2Yjzi|pF!%r R6=MJZ002ovPDHLkV1g)~4nP0^ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_20.png b/app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_20.png new file mode 100644 index 0000000000000000000000000000000000000000..d8cfb5d1128de8883d2624557aa0ce38a4f9cb8a GIT binary patch literal 498 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r51|<6gKdoh8VBG2H;uuoF`1VetTXUeqv5)Kv zS^`e&>S^={5Ma3LQo_A<)hfM|asiG62Xnz2Ev6|P5d{;H)$iYY9R2>;|L3eXEbsU8 z7N1+5ZVr@i)U2cC6YS9M|V1*2LQ23{aKBE2=94v@6aEzCZO}z3I7fQ@UbaM_0#v zUV)VX`p20s9y$Fi?utbIB(@{0A9rOs#Bk`dE^1_7)EM6QV?oh_#utx4sN&hfMvE1P zJ`2ikP4nH%uJfodL*^UfMRpc2`XZQ~>ca5)x-p+L;|pabAhL+eJi;)YclSrZ$MNO8 z_3PCBwZ8t*@p1j1mdKI;Vst0EWHUa{vGU literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_24.png b/app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_24.png new file mode 100644 index 0000000000000000000000000000000000000000..60ba7ce86ca251210dee330c38acd029342069c7 GIT binary patch literal 789 zcmV+w1M2*VP)>P|xdl13(Bq;|IV>03rB{{~G8DAcXkG4}kd?5`t~~ zjTjPwZT!vH6N1LKA*^v2e-p-p;P5$L2=?(yF(d@r_$4%WLdXL?hIpREG+IKKQV&8A zJ_*4-z7SR$5DIZi2nDz$gghJ)LYfnT5FYv=s4dk-jtxO=HeA!S3T0}OVSFJN+h`nK z2!={S4tq-oz88kK1uh7|_p1E1z(pb0D~>R}5E`f=!}w7VRsw)3G>u;!;gS%-S701p z2!_@f#}|U3X+V`>{ICd@g;2c?!1M6qn`$S7>Mgd89|7Tt5Po+#?D&odE68w9?U#WH z!BWl+AO!ylp=}6P?Fa(!M-YG+;hG+rD{#q^oA;bXSgAn*4_yf4# zxYZZIAHe8W_FxAIDh>Ep*U=y$bm_W#sQc9_xBzicc TGMQZ$6pK?hN~W5AgBv@$vET@$vET@$s=G z_2@(aODG|fyscpY1>D0ab8zY~hYjg4d$&!@qTU3a42sHe{%otbq2d&ep%-tlgwJ?^ zvkCXjVp|(eh!ERomd$eo-*y$;NK`O`Ev-B|L{hJ!3s~D%GT_{|1}oZmcK*>M-izKH zSdx!umIP0T5VNv)&PA4tCpxa+Bb|5K!bv$mHyK6ai3Z64g}5&V=r*(HGlPg;%K^F+ zQ`Q`!c{xBwv1kd=s;t{|BYsIBDkG0Hs)UWQ3Tfm~W{y)@dSd@NNr{%xAZ4TtSk?gq zL{HoXqD({th%ONsAgV-!fM^nt0-{Jn42T{PIUpXQ$8H1BB09MK zPu-7*bchbFzM%afng~%4QTq+xiK2Nzv;v+eVEhE;4B$FZz^M5Wgc47bQ_QnY=lan_ z6fmpZ0=cLqV)G1xWYiI{d8R=&YKYi8Qy?ArL~Nc(kdIsBVzN6z}Sc(GV)uqN}@bt?;#i;nM8xIBJo5$6%h@9*L1UvxH9DBRAifAAqk7GoY@Hj-&Um=epM16+0bp($K-P7Bdx)wqtU9_9aJu=tnf tBQAQ7{W*fmXhIXtdkP;PA0Hpv^BZXxfF1b;6{i3I002ovPDHLkV1kBC4w?V} literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_48.png b/app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_48.png new file mode 100644 index 0000000000000000000000000000000000000000..c3737fd4e38f2cb23646237ea8aef0c0009f20af GIT binary patch literal 1617 zcmZ`)Yfuwc6izk^EI}ZPKvRrBT*o&Wc}NzjfX0O23s5TvOhc%U;VmfO6B2@r6*iz? zBUOkt)X5=5bS+jyJ}jvaT0Dr(X%wp86kiE66q2ru0W_vOci9kUUssPqq4aS z{IuVRU*dGM#qcue2x#vsaWI)5UsCH`+K^NrI~(tDc`MgHxOb()Wxh80gp-FK@$ z1BrrOSgyBSnMfB^*Y#@CGihd<>b@oFfh8QLB1U5LVprnHDAkC8?FP|wW zdr`oGWfq+d+Vm}yw!`ck?`TXJU2j)G8Rg;(vCj6i)Vv*zd}7KBv@)*0IGwrjc@7H5 zUAioo>7etJ20Dd28`s5HNZa772{*Q#HVt(4OI-~NLd&0z|L#t6B=8g|td*$#9gVpT znqKD?5gqNY6rF5nEk`AQ{HpEqI82ETJhe^-t@cLGcFtZg*ue-8>mJO0q)!1su9xf zckMKkj9+lu;35uxy-c^|yc}0YTpP#)hfEzSB@YVS*%q-?)d?*+zn`mo4uG*yX>+rO z5mx=0yQVMJ0Gh||;H8TL<-NwAc!G>gXQ!#A1H{{iAjuu;OAN!SZ)8tk`1L216S}96 zT7RSCElhOT*nW88O^*@&!K(*s(l}?oLdKimu!Q>Wj$+ySdr%-@Q~lZVbptE1!8mQH zQuo~DDss_1!ffk{w}I~}+_WX-z{D_=XiT2DVPv~1qpcKaEkE=@Dxol$NZ3lIjTG(% za#$bWx_K!2B1u*%=R)b%zIHu4AM%Tx&yRe~gNH z2Ah{gn#}Z}R0!QLrJlU8u}pTWOd%bF82FwOyM5wC#(4JJ6Ger@xr*C5_MC{AaL@g1 z!i3Xj`q8V%BBdd4Un^YvATBTs3^`!VxAv3VzKJE$jxz%8jB$=5vTh+=ylrtoV=6D0 zODS4%ezdC-E;js8(lEEuGR$fa3K~vR1w8_2s6@DvvBGuN`MbfC?W-gw1XUuhgU5>V z8d`R`Rwjd6YkbuXNhQ0$KP@A2zWEbAnAbARD7WeCd>m%QIpZxs1XYQj+$$yY4e9I=c_*FF}-U80ZS{vRD%!E#z$cXZq_<*bX%wOg*| zB;03AYWuP&s7xB(1xJ!Kg@{7ZE+FP`-Ly*)@D*O0BKo$f^0H`cP3qyDjJUo-s$tfL q9YQ}vp2#av?lvL+M6UnOo}|3-8F;!yG-gJ86(s)p&7A7B0?9v!7}li# literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/round_hourglass_empty_black_18.png b/app/src/main/res/drawable-xxxhdpi/round_hourglass_empty_black_18.png new file mode 100644 index 0000000000000000000000000000000000000000..ce315fc5468d1a0fd648a3f8e4ea457e8d08d2f4 GIT binary patch literal 442 zcmV;r0Y(0aP)|b)VFFo;UD;bOI9Y)@BZWzuM*K|%-3<4@)FVFR zhcp`DoO8~(Urm4-SOYDPGLIHm12r%~yb9O>X{50OD&;e03#5_9R`pDp14(4e5o{v_ zv_Y^|2&hG{G%$`p15Ek5ra%K6hv)r2KnwD zIdHHu@--Wn^9#Y=2M%_h326rG2j=`hurr{Kk+S1_1Luf#38WY)8%_eQ5N{bHWy5(R zr~o8A9DSr1=aryxkz$+|g33jTah?e(21yA=A1TIpBB)%X80V3oqLBie2ZD-6(#6pS zS`y}u*gawXlD;F%Kl3q?|0r@xm@hSM2=m42b@4bNNcuSWZ?*cCYlCbxa$#Js83 k+rs@~0l%8UIp>^nKQ5mcIEeCT#Q*>R07*qoM6N<$g7+}DPXGV_ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/round_hourglass_empty_black_20.png b/app/src/main/res/drawable-xxxhdpi/round_hourglass_empty_black_20.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc39b3bb62a41e2a266267879eee9660d5d9a68 GIT binary patch literal 451 zcmV;!0X+VRP)7()EB&o3f}&Kp!z9Rzev8JfBqMF z6Er~+G(i(=yI@8-=zFL8B%R3!(l7GFJ3V1vVG+)xi^w}2k@Q(ca8J6}d8ccoSqu=f(JOHDcyixli1bHwmi)4!Betjt6i6{d z15EKOm5^6#F~XdI5)Ni-cZ&;OY`PCOq>dQ{`g}eHr5A}yf>W|;-gw+I1&;(7; t1mD4K9@WKe9)0{2x9H}PVHn0I@&eJAA(+TZgJ}Q&002ovPDHLkV1j`I!uAxshvLG>ZM%zyR z(>dh)v!gSo-kcqju)6f1*Uj`_qAIFPSt|7 zY9Dxk)6`QNl!m{cHeO(xzDiO^h<6Qel`VDk9%M6|5xxH z|8E7;l{????Fyz}Z+*nKDWuztulU&%yvENW5Xi<~wrffF=1JU@gKxXyokIRUvW^^l zTaPO___kh`a`3%XaDSn>kb`d<(Uya68+9%R-y4PUKWv?G;&&mR7EieF_dy?b=d{Ox zzeQ8n=k-Za9iC(80>=?vU;tfW8sG)S&_%v6USI|lnBfIDB=$Ri9d!V{vg~297Pm=7<4rk1RuxMXfztlrsM}B^+`EUo2{n+ O000036c3j@YrW&&Y5NH8S9fZqtqV%fTAdhq9}@@D2ftGI>=CBgb6CoZGsU>Waxy0 zvw;FL?=XM1847HKz|+IHahzXmj2=5rAM@6DDpZ)G&wcl_%X3E5Cpdl5|kPm1=1vKFUa$W8e19Y)g+gNMp zVt}c0%z%InvFT;RO&rDmH1))DMl=l{XyA3!LHIyjucLOu2U_U#J!|sHQ9ttmZ7-Y+^2T{8?C=3y zbUd5S8|FF1B@pI=;~`AmAWwylpv;AZD_Q+SE}mn~`v(B7;-1$s(3&h!VUV7dD z&ohuG_e|vO{~ZE|Pa=2UZxKj*5xM()gMi|LC?XyoMDG4xBf!*2{+?tWe( z;M74BF;5*t?(<(Dg8UDW``qVXdvHRXhohJgKz1CkO-)82yLa-HKj?1h(9p{&%o7>Ft4d*z43YzUu z?>XQT%=myxs!hEmAJC9$TR7pzZpTzWV?H2#nnFMV5|DrdBp?9^ zNI(J-kbndf43IwhZvd%mgaM?&BLx|U^Al0V%W^I_Y(jB002ovPDHLkV1mV(km3LU literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/round_hourglass_empty_black_48.png b/app/src/main/res/drawable-xxxhdpi/round_hourglass_empty_black_48.png new file mode 100644 index 0000000000000000000000000000000000000000..21b49553a67b6e9af15163665880945dc8e8bed1 GIT binary patch literal 1278 zcmZXUdsLDK7{+MyJ%>owgnB4hGnVY zF0w407BW!*D{t8n+;q-aUIMgZlxP=C%jjZ}IvG1{XJ==BywCH#&-?HDd-Lhrsf!UF z2mk;UN75(^n`{3nCwrS(46*_MuiYyI*Ao`9Cp%ov&kiy>^7nl7cAK0yi(#VsW`oAgCB+C6ZHUn@gjD>Z9m)HC88m` zLY(BR>bnro7tDFwd#x{^E#QIWezB9+SFYjz%8`_4p2vYYHrltaIlRjwT^6D=*zse? zWu;?rI$z5wXEE%g%P65m&&e?x2wO)6YM+RG4FXW{V^m^FakJT!E=9@hzb1# zgf}~qMv2Q#LA#u1r_EAd!&#A_cI@*|>v3uWnyme8)dHhx%i4184kKb?zB$`?&! zE!3g5vXAaPZOqOSGO9N1ZOn0{r?rl?kE`tl+`wJB$yTR31Z4&WJTEtJmJ4THg}@{k zfT~?Ur;1Q}?EeA)w64t>g7~j+CaTR|;!Hf7nQ^8w&aE5q%8Wy#9M(IGxkD_yMoN7l z<^HY_@?P^I&`AY?N*)^Pla=Ct?qE&kg+DBo{gCV8ds3rMg}XPPVPIU3<68)Z!#hI{y97wSl`S<0n?0r&(7vz4zR+X z?=MbSi#dcPk17No&_#?X61e zjCuq*h=ffW;w4Qt7SXrDnShSbJ|%331^8^x4$E{QslnT`%Z-lm8ICvN=CY1txMn5+ zr3MCPds?Kq=k17yn=f!z$G3*{<_gZ;VA*FQ=X)B=P<@t(nj5r`%H%Gc2r}bz!*SYi zt!CSqIc@X8vDr|Ia`pbrj{GT~s6NpM_v>Vr`9WPQ&(vIAeGk^mFyKDn2={Uk(xQ~s zKC!j!@<0nm`f*}MoGEpnOz+|IH9)gGAHq$StXcT)A2>Z?^JoWg)56abpQLat$sC?T-v6ky*^vYi)lIRIw6 zg8F^N_GsN?AgVr{d2bEWDmUby@NvJ?HRZ{j>Mwja6j`lufO_@o6m?Yr_QrE(ZzsP9 z)6)}Q$%fOsO!LfsT~Xkbp{tckWkkGq@VX{Q{v-uk z+7Ucw{mK2cAD + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_background.xml b/app/src/main/res/drawable/icon_background.xml new file mode 100644 index 0000000..c3e8d82 --- /dev/null +++ b/app/src/main/res/drawable/icon_background.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/icon_foreground.xml b/app/src/main/res/drawable/icon_foreground.xml new file mode 100644 index 0000000..213bdcb --- /dev/null +++ b/app/src/main/res/drawable/icon_foreground.xml @@ -0,0 +1,21 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/round_hourglass_disabled_20.xml b/app/src/main/res/drawable/round_hourglass_disabled_20.xml new file mode 100644 index 0000000..7a3d33a --- /dev/null +++ b/app/src/main/res/drawable/round_hourglass_disabled_20.xml @@ -0,0 +1,13 @@ + + + + diff --git a/app/src/main/res/drawable/round_hourglass_disabled_24.xml b/app/src/main/res/drawable/round_hourglass_disabled_24.xml new file mode 100644 index 0000000..a6b590e --- /dev/null +++ b/app/src/main/res/drawable/round_hourglass_disabled_24.xml @@ -0,0 +1,13 @@ + + + + diff --git a/app/src/main/res/drawable/round_hourglass_empty_20.xml b/app/src/main/res/drawable/round_hourglass_empty_20.xml new file mode 100644 index 0000000..e4f8ca9 --- /dev/null +++ b/app/src/main/res/drawable/round_hourglass_empty_20.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/round_hourglass_empty_24.xml b/app/src/main/res/drawable/round_hourglass_empty_24.xml new file mode 100644 index 0000000..c61c2da --- /dev/null +++ b/app/src/main/res/drawable/round_hourglass_empty_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..c209e78ecd372343283f4157dcfd918ec5165bb3 GIT binary patch literal 1404 zcmV-?1%vuhNk&F=1pok7MM6+kP&il$0000G0000-002h-06|PpNX!5L00Dqw+t%{r zzW2vH!KF=w&cMnnN@{whkTw+#mAh0SV?YL=)3MimFYCWp#fpdtz~8$hD5VPuQgtcN zXl<@<#Cme5f5yr2h%@8TWh?)bSK`O z^Z@d={gn7J{iyxL_y_%J|L>ep{dUxUP8a{byupH&!UNR*OutO~0{*T4q5R6@ApLF! z5{w?Z150gC7#>(VHFJZ-^6O@PYp{t!jH(_Z*nzTK4 zkc{fLE4Q3|mA2`CWQ3{8;gxGizgM!zccbdQoOLZc8hThi-IhN90RFT|zlxh3Ty&VG z?Fe{#9RrRnxzsu|Lg2ddugg7k%>0JeD+{XZ7>Z~{=|M+sh1MF7~ zz>To~`~LVQe1nNoR-gEzkpe{Ak^7{{ZBk2i_<+`Bq<^GB!RYG+z)h;Y3+<{zlMUYd zrd*W4w&jZ0%kBuDZ1EW&KLpyR7r2=}fF2%0VwHM4pUs}ZI2egi#DRMYZPek*^H9YK zay4Iy3WXFG(F14xYsoDA|KXgGc5%2DhmQ1gFCkrgHBm!lXG8I5h*uf{rn48Z!_@ z4Bk6TJAB2CKYqPjiX&mWoW>OPFGd$wqroa($ne7EUK;#3VYkXaew%Kh^3OrMhtjYN?XEoY`tRPQsAkH-DSL^QqyN0>^ zmC>{#F14jz4GeW{pJoRpLFa_*GI{?T93^rX7SPQgT@LbLqpNA}<@2wH;q493)G=1Y z#-sCiRNX~qf3KgiFzB3I>4Z%AfS(3$`-aMIBU+6?gbgDb!)L~A)je+;fR0jWLL-Fu z4)P{c7{B4Hp91&%??2$v9iRSFnuckHUm}or9seH6 z>%NbT+5*@L5(I9j@06@(!{ZI?U0=pKn8uwIg&L{JV14+8s2hnvbRrU|hZCd}IJu7*;;ECgO%8_*W Kmw_-CKmY()leWbG literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..b2dfe3d1ba5cf3ee31b3ecc1ced89044a1f3b7a9 GIT binary patch literal 2898 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..4f0f1d64e58ba64d180ce43ee13bf9a17835fbca GIT binary patch literal 982 zcmV;{11bDcNk&G_0{{S5MM6+kP&il$0000G0000l001ul06|PpNU8t;00Dqo+t#w^ z^1csucXz7-Qrhzl9HuHB%l>&>1tG2^vb*E&k^T3$FG1eQZ51g$uv4V+kI`0<^1Z@N zk?Jjh$olyC%l>)Xq;7!>{iBj&BjJ`P&$fsCfpve_epJOBkTF?nu-B7D!hO=2ZR}

C%4 zc_9eOXvPbC4kzU8YowIA8cW~Uv|eB&yYwAObSwL2vY~UYI7NXPvf3b+c^?wcs~_t{ ze_m66-0)^{JdOMKPwjpQ@Sna!*?$wTZ~su*tNv7o!gXT!GRgivP}ec?5>l1!7<(rT zds|8x(qGc673zrvYIz;J23FG{9nHMnAuP}NpAED^laz3mAN1sy+NXK)!6v1FxQ;lh zOBLA>$~P3r4b*NcqR;y6pwyhZ3_PiDb|%n1gGjl3ZU}ujInlP{eks-#oA6>rh&g+!f`hv#_%JrgYPu z(U^&XLW^QX7F9Z*SRPpQl{B%x)_AMp^}_v~?j7 zapvHMKxSf*Mtyx8I}-<*UGn3)oHd(nn=)BZ`d$lDBwq_GL($_TPaS{UeevT(AJ`p0 z9%+hQb6z)U9qjbuXjg|dExCLjpS8$VKQ55VsIC%@{N5t{NsW)=hNGI`J=x97_kbz@ E0Of=7!TQj4N+cqN`nQhxvX7dAV-`K|Ub$-q+H-5I?Tx0g9jWxd@A|?POE8`3b8fO$T))xP* z(X?&brZw({`)WU&rdAs1iTa0x6F@PIxJ&&L|dpySV!ID|iUhjCcKz(@mE z!x@~W#3H<)4Ae(4eQJRk`Iz3<1)6^m)0b_4_TRZ+cz#eD3f8V;2r-1fE!F}W zEi0MEkTTx}8i1{`l_6vo0(Vuh0HD$I4SjZ=?^?k82R51bC)2D_{y8mi_?X^=U?2|F{Vr7s!k(AZC$O#ZMyavHhlQ7 zUR~QXuH~#o#>(b$u4?s~HLF*3IcF7023AlwAYudn0FV~|odGH^05AYPEfR)8p`i{n zwg3zPVp{+wOsxKc>)(pMupKF!Y2HoUqQ3|Yu|8lwR=?5zZuhG6J?H`bSNk_wPoM{u zSL{c@pY7+c2kck>`^q1^^gR0QB7Y?KUD{vz-uVX~;V-rW)PDcI)$_UjgVV?S?=oLR zf4}zz{#*R_{LkiJ#0RdQLNC^2Vp%JPEUvG9ra2BVZ92(p9h7Ka@!yf9(lj#}>+|u* z;^_?KWdzkM`6gqPo9;;r6&JEa)}R3X{(CWv?NvgLeOTq$cZXqf7|sPImi-7cS8DCN zGf;DVt3Am`>hH3{4-WzH43Ftx)SofNe^-#|0HdCo<+8Qs!}TZP{HH8~z5n`ExcHuT zDL1m&|DVpIy=xsLO>8k92HcmfSKhflQ0H~9=^-{#!I1g(;+44xw~=* zxvNz35vfsQE)@)Zsp*6_GjYD};Squ83<_?^SbALb{a`j<0Gn%6JY!zhp=Fg}Ga2|8 z52e1WU%^L1}15Ex0fF$e@eCT(()_P zvV?CA%#Sy08_U6VPt4EtmVQraWJX` zh=N|WQ>LgrvF~R&qOfB$!%D3cGv?;Xh_z$z7k&s4N)$WYf*k=|*jCEkO19{h_(%W4 zPuOqbCw`SeAX*R}UUsbVsgtuG?xs(#Ikx9`JZoQFz0n*7ZG@Fv@kZk`gzO$HoA9kN z8U5{-yY zvV{`&WKU2$mZeoBmiJrEdzUZAv1sRxpePdg1)F*X^Y)zp^Y*R;;z~vOv-z&)&G)JQ{m!C9cmziu1^nHA z`#`0c>@PnQ9CJKgC5NjJD8HM3|KC(g5nnCq$n0Gsu_DXk36@ql%npEye|?%RmG)

FJ$wK}0tWNB{uH;AM~i literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..948a3070fe34c611c42c0d3ad3013a0dce358be0 GIT binary patch literal 1900 zcmV-y2b1_xNk&Fw2LJ$9MM6+kP&il$0000G0001A003VA06|PpNH75a00DqwTbm-~ zullQTcXxO9ki!OCRx^i?oR|n!<8G0=kI^!JSjFi-LL*`V;ET0H2IXfU0*i>o6o6Gy zRq6Ap5(_{XLdXcL-MzlN`ugSdZY_`jXhcENAu)N_0?GhF))9R;E`!bo9p?g?SRgw_ zEXHhFG$0{qYOqhdX<(wE4N@es3VIo$%il%6xP9gjiBri+2pI6aY4 zJbgh-Ud|V%3O!IcHKQx1FQH(_*TK;1>FQWbt^$K1zNn^cczkBs=QHCYZ8b&l!UV{K z{L0$KCf_&KR^}&2Fe|L&?1I7~pBENnCtCuH3sjcx6$c zwqkNkru);ie``q+_QI;IYLD9OV0ZxkuyBz|5<$1BH|vtey$> z5oto4=l-R-Aaq`Dk0}o9N0VrkqW_#;!u{!bJLDq%0092{Ghe=F;(kn} z+sQ@1=UlX30+2nWjkL$B^b!H2^QYO@iFc0{(-~yXj2TWz?VG{v`Jg zg}WyYnwGgn>{HFaG7E~pt=)sOO}*yd(UU-D(E&x{xKEl6OcU?pl)K%#U$dn1mDF19 zSw@l8G!GNFB3c3VVK0?uyqN&utT-D5%NM4g-3@Sii9tSXKtwce~uF zS&Jn746EW^wV~8zdQ1XC28~kXu8+Yo9p!<8h&(Q({J*4DBglPdpe4M_mD8AguZFn~ ztiuO~{6Bx?SfO~_ZV(GIboeR9~hAym{{fV|VM=77MxDrbW6`ujX z<3HF(>Zr;#*uCvC*bpoSr~C$h?_%nXps@A)=l_;({Fo#6Y1+Zv`!T5HB+)#^-Ud_; zBwftPN=d8Vx)*O1Mj+0oO=mZ+NVH*ptNDC-&zZ7Hwho6UQ#l-yNvc0Cm+2$$6YUk2D2t#vdZX-u3>-Be1u9gtTBiMB^xwWQ_rgvGpZ6(C@e23c!^K=>ai-Rqu zhqT`ZQof;9Bu!AD(i^PCbYV%yha9zuoKMp`U^z;3!+&d@Hud&_iy!O-$b9ZLcSRh? z)R|826w}TU!J#X6P%@Zh=La$I6zXa#h!B;{qfug}O%z@K{EZECu6zl)7CiNi%xti0 zB{OKfAj83~iJvmpTU|&q1^?^cIMn2RQ?jeSB95l}{DrEPTW{_gmU_pqTc)h@4T>~& zluq3)GM=xa(#^VU5}@FNqpc$?#SbVsX!~RH*5p0p@w z;~v{QMX0^bFT1!cXGM8K9FP+=9~-d~#TK#ZE{4umGT=;dfvWi?rYj;^l_Zxywze`W z^Cr{55U@*BalS}K%Czii_80e0#0#Zkhlij4-~I@}`-JFJ7$5{>LnoJSs??J8kWVl6|8A}RCGAu9^rAsfCE=2}tHwl93t0C?#+jMpvr7O3`2=tr{Hg$=HlnjVG^ewm|Js0J*kfPa6*GhtB>`fN!m#9J(sU!?(OSfzY*zS(FJ<-Vb zfAIg+`U)YaXv#sY(c--|X zEB+TVyZ%Ie4L$gi#Fc++`h6%vzsS$pjz9aLt+ZL(g;n$Dzy5=m=_TV(3H8^C{r0xd zp#a%}ht55dOq?yhwYPrtp-m1xXp;4X;)NhxxUpgP%XTLmO zcjaFva^}dP3$&sfFTIR_jC=2pHh9kpI@2(6V*GQo7Ws)`j)hd+tr@P~gR*2gO@+1? zG<`_tB+LJuF|SZ9tIec;h%}}6WClT`L>HSW?E{Hp1h^+mlbf_$9zA>!ug>NALJsO{ mU%z=YwVD?}XMya)Bp;vlyE5&E_6!fzx9pwrdz474!~g(M6R?N? literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..1b9a6956b3acdc11f40ce2bb3f6efbd845cc243f GIT binary patch literal 3918 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�(p-{x$&=IACIfoAR!za)F-^da-t3#0Dycnp zwO~NVXwXCl;jE<}>%@xz|=8fIJAB?>+E{7)|4l${4ngA3G|=r z2Dyv;VVWSgZx9Wj>qUjleGl3Ei9K4>h!(lPS%8VOG>Xu0%6VDz^O=bjJmuP7>DeUv zrbI}MlHB^^d?{zv6d=@_ZD2lg1&G7UjnVN{1}9WkaM3H~btX0GtSzB+tZ^qRgWo4m z!GmimlG$=wgXCnr6j@m<1gAL46#T~5Bnm=2{^@>|t&`9mkEPddj zAvG~@Tv~TAm2i%VW}R-g(Z0)z-Y|szHr@rk>4MAyG*Ma*7Yh#H7(!-5>DZ@8r;_dx z{prSe<>~099F8vsYd2xff7uAS%7{S)f(|@me3t2$iy&NEc7OUEchp@9A|X;;IA>8!oX+y(BKJ$EzV* znR$z;!L$s7uy@{OT~nG#B!NRraT8(X##Ho!0r_o@gg0CA-9H^;-uE&?$2$nHv_00o z%cbuUc-tCx$Uh&EZ4Nf4Zgqv)Y6>usG3>GeQnxx_Z6+PcbX-+ysbt1hQ`K1LDpOE? zrAhIZhSN9yVIAOa22gn577tbc&i3|3V8NWy&!tw##`}9*x}gtI^h1DzZRA>UuaJG) zaZ7j)dq!O}{?#8Y7~7i6fHh4{`pL?>-18|p!S75Y#^DM>-S3)vuZG+Q7l@ek zQP~#cBpWgg#mApc_sPYjpw8odQuRokmTkzcNl`^CcKB7e&;zViV;{Y{o^Y$%7i0m# z62%#1Lq!RC?}lK>%mp}T!3Xv;L*0v*>USLm``N%>w>@fwC+#T&Tx2bN4w(20JB}oU zuSa6v^kXi0xPs?pbaOHnyiqq6By1EZY9OZ^^QA>{q-Hsd&m`pbQ%8121aWG-F5xf zlZ%;B{;C>X19|`^_?dVyCq>n+41w7|!tUS!{9rHlbhX=SZO5CQ^;!Du_E7*`GiR^Q w)2!4MKjfSAeNo!9>IaV6aUZ*?W>} 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

UmY2RIYtNPVDpE$%vda+HD#3m z&VuXJ{BK&Qe+rBa7eq}Q(bq|tn(RrJAk|ztj2(i{d>nmQnM?;HF2k&9sA6up5tmjl z7lySlzMbifH17-m-Lwa_F&e7nOH?ESi3#ckR3tsM+jsck3`oG!uMS}|eAwVXv>}qxwq?QY%QJ0}r@^;fhuUA9W z*BVl>TGo&N004@xSiwDUXUvp51sVmqO3m)=B55aPwf@0=e}cN+$-BdKxY`YrT_4)0 z_d10#i44Q*rFr8MC>*)v$EJvz``(pb{e&*6k+b zsMz%($|1+8hn8c2?P(l@;Rb&CsZeYoCI3?2!LqjbwPXW3z4G$Qfj=cT5Yb%vY0(AX oeb?AaKtwrnc|$|zzw9vfvn^aJJ!zd)XFXqqy0000001=f@-~a#s literal 0 HcmV?d00001 diff --git a/app/src/main/res/raw/empty_state.json b/app/src/main/res/raw/empty_state.json new file mode 100644 index 0000000..7e263e7 --- /dev/null +++ b/app/src/main/res/raw/empty_state.json @@ -0,0 +1 @@ +{"v":"4.8.0","meta":{"g":"LottieFiles AE 1.1.0","a":"","k":"","d":"","tc":""},"fr":29.9700012207031,"ip":0,"op":77.0000031362743,"w":1000,"h":1000,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[480,506,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[41,-30],[34,-78],[-36.607,20.098],[40,-43],[-71,185],[26,-28]],"o":[[0,0],[-30.454,22.283],[-34,78],[51,-28],[-61.995,66.645],[70.57,-183.88],[-26,28]],"v":[[-142,44],[-139,140],[-352,106],[-171,308],[-204,227],[-313,168],[-413,67]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"d":[{"n":"d","nm":"dash","v":{"a":0,"k":30,"ix":1}},{"n":"g","nm":"gap","v":{"a":0,"k":1369,"ix":2}},{"n":"o","nm":"offset","v":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":32,"s":[103]},{"t":70.0000028511585,"s":[-1303]}],"ix":7}}],"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":22.0000008960784,"op":1810.00007372281,"st":12.00000048877,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[500,500,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[41,-30],[34,-78],[-36.607,20.098],[40,-43],[-71,185],[26,-28]],"o":[[0,0],[-30.454,22.283],[-34,78],[51,-28],[-61.995,66.645],[70.57,-183.88],[-26,28]],"v":[[-142,44],[-139,140],[-352,106],[-171,308],[-204,227],[-313,168],[-413,67]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"d":[{"n":"d","nm":"dash","v":{"a":0,"k":12,"ix":1}},{"n":"g","nm":"gap","v":{"a":0,"k":1369,"ix":2}},{"n":"o","nm":"offset","v":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":20,"s":[103]},{"t":58.0000023623884,"s":[-1303]}],"ix":7}}],"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":22.0000008960784,"op":1798.00007323404,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"head/boxgirl2 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":9,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[-5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":50,"s":[-5]},{"t":75.0000030548126,"s":[0]}],"ix":10},"p":{"a":0,"k":[504.173,279.4,0],"ix":2},"a":{"a":0,"k":[615.874,302.163,0],"ix":1},"s":{"a":0,"k":[83,83,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.203,0],[0,0],[0.188,-0.112],[0.266,-0.265],[0.11,-0.275],[-0.203,0],[0,0],[-0.188,0.113],[-0.266,0.266],[-0.11,0.274]],"o":[[0,0],[-0.231,0],[-0.322,0.194],[-0.206,0.206],[-0.041,0.103],[0,0],[0.232,0],[0.322,-0.194],[0.206,-0.205],[0.041,-0.104]],"v":[[3.115,-1.01],[-1.033,-1.01],[-1.711,-0.745],[-2.621,-0.032],[-3.193,0.682],[-3.115,1.01],[1.032,1.01],[1.711,0.745],[2.621,0.031],[3.193,-0.682]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[592.024,140.01],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.441,0],[0,0],[0.377,-0.376],[-0.441,0],[0,0],[-0.377,0.376]],"o":[[0,0],[-0.571,0],[-0.086,0.085],[0,0],[0.572,0],[0.085,-0.085]],"v":[[4.643,-1.01],[-2.561,-1.01],[-4.149,-0.032],[-4.643,1.01],[2.56,1.01],[4.149,0.032]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[589.932,134.862],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.203,0],[0,0],[0.187,-0.112],[0.266,-0.265],[0.109,-0.275],[-0.203,0],[0,0],[-0.188,0.113],[-0.266,0.265],[-0.11,0.274]],"o":[[0,0],[-0.232,0],[-0.323,0.194],[-0.206,0.206],[-0.042,0.103],[0,0],[0.232,0],[0.322,-0.193],[0.206,-0.206],[0.041,-0.104]],"v":[[2.569,-1.01],[-0.487,-1.01],[-1.165,-0.745],[-2.076,-0.032],[-2.647,0.682],[-2.57,1.01],[0.486,1.01],[1.165,0.745],[2.075,0.032],[2.647,-0.682]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[594.189,130.405],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.697,0.13],[1.381,-1.402],[-1.277,-1.162],[-0.539,-2.933],[1.291,0.371],[0.599,1.294],[-0.397,-0.857],[-2.347,3.604],[1.566,1.335],[1.014,0.42],[0.075,0.558],[-0.756,-0.141]],"o":[[-1.872,-0.349],[-1.032,1.047],[1.762,1.602],[0.338,1.839],[-1.421,-0.409],[-0.212,-0.458],[1.982,4.281],[1.124,-1.727],[-0.848,-0.723],[-0.383,-0.158],[-0.118,-0.875],[0.82,0.152]],"v":[[2.104,-7.117],[-2.682,-5.892],[-3.188,-2.149],[2.92,2.141],[-0.213,3.831],[-3.175,1.063],[-5.296,3.185],[4.569,3.198],[3.753,-1.848],[0.801,-3.374],[-1.262,-4.469],[0.261,-4.868]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[602.895,136.398],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-5.784,2.336]],"o":[[0,0],[0,0]],"v":[[-6.716,-0.848],[6.716,-1.168]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8167,0.2433,0.3867,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[605.021,201.209],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-5.784,2.336]],"o":[[0,0],[0,0]],"v":[[-6.716,-2.008],[6.716,-0.328]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8167,0.2433,0.3867,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[582.244,200.369],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":3,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.901,0.241],[8.078,-4.259],[-3.323,-5.913],[-6.748,-0.677],[-6.62,1.477],[0,0]],"o":[[-0.963,-0.223],[-21.25,-5.699],[-6,3.163],[3.324,5.912],[6.748,0.678],[0,0],[0,0]],"v":[[22.043,0.722],[19.248,0.025],[-14.734,-11.997],[-18.914,5.764],[-1.981,15.578],[22.237,12.775],[19.248,0.025]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8167,0.2433,0.3867,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[543.515,174.404],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":3,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-27.722,-3.24],[2.66,-27.783],[19.547,5.242],[8.078,-4.258],[-3.324,-5.912],[-6.748,-0.677],[-6.62,1.476],[0,0]],"o":[[0,0],[3.818,-27.648],[27.722,3.24],[-63.214,18.371],[-21.25,-5.699],[-6,3.163],[3.323,5.912],[6.748,0.678],[0,0],[0,0]],"v":[[-72.745,16.895],[-29.706,4.359],[30.081,-41.908],[77.588,16.899],[-38.763,28.917],[-72.745,16.895],[-76.924,34.656],[-59.992,44.47],[-35.774,41.668],[-38.763,28.917]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.46,0.595,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[601.526,145.512],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":3,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-2.734,-12.941],[-15.624,-0.096],[-3.417,15.247]],"o":[[2.734,12.941],[3.23,15.288],[15.625,0.095],[0,0]],"v":[[-36.33,-25.893],[-31.201,-1.615],[2.397,25.799],[36.33,-1.201]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[602.33,214.252],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[6.091,-7.297]],"o":[[-0.924,12.992],[0,0]],"v":[[5.451,-19.487],[-5.451,19.487]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[594.411,259.908],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":4,"s":[{"i":[[0,0],[1.404,-13.995],[-7.319,-22.945],[-22.358,-8.953],[-13.565,19.901],[22.678,8.11],[-0.689,25.725],[5.686,1.105]],"o":[[7.301,7.834],[-2.405,23.964],[7.32,22.944],[22.358,8.953],[13.565,-19.9],[-24.231,-8.665],[0.155,-5.79],[-5.686,-1.106]],"v":[[-67.624,-74.46],[-60.836,-50.411],[-55.453,11.567],[-9.899,64.62],[54.789,47.744],[37.918,-12.56],[2.322,-69.611],[-7.677,-82.077]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":34,"s":[{"i":[[0,0],[1.404,-13.995],[-7.319,-22.945],[-22.358,-8.953],[-13.565,19.901],[22.678,8.11],[-0.689,25.725],[5.686,1.105]],"o":[[7.301,7.834],[-2.405,23.964],[7.32,22.944],[22.358,8.953],[13.565,-19.9],[-24.231,-8.665],[0.155,-5.79],[-5.686,-1.106]],"v":[[-67.624,-74.46],[-60.836,-50.411],[-56.182,21.178],[-10.628,74.23],[54.06,57.355],[37.189,-2.949],[2.322,-69.611],[-7.677,-82.077]],"c":true}]},{"t":74.0000030140818,"s":[{"i":[[0,0],[1.404,-13.995],[-7.319,-22.945],[-22.358,-8.953],[-13.565,19.901],[22.678,8.11],[-0.689,25.725],[5.686,1.105]],"o":[[7.301,7.834],[-2.405,23.964],[7.32,22.944],[22.358,8.953],[13.565,-19.9],[-24.231,-8.665],[0.155,-5.79],[-5.686,-1.106]],"v":[[-67.624,-74.46],[-60.836,-50.411],[-55.453,11.567],[-9.899,64.62],[54.789,47.744],[37.918,-12.56],[2.322,-69.611],[-7.677,-82.077]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.8,0.85,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[692.302,244.019],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":3,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1798.00007323404,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"arms/boxgirl2 Outlines","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":7,"s":[-18]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":13.824,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":21,"s":[-18]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":27,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":37,"s":[-18]},{"t":54.0000021994651,"s":[-18]}],"ix":10},"p":{"a":0,"k":[506.439,444.242,0],"ix":2},"a":{"a":0,"k":[534.439,398.222,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-3.407],[3.407,0],[0,3.407],[-3.407,0]],"o":[[0,3.407],[-3.407,0],[0,-3.407],[3.407,0]],"v":[[6.169,0],[0,6.169],[-6.168,0],[0,-6.169]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[632.081,461.246],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":7,"s":[{"i":[[0,0],[-22.517,-0.724],[-10.788,37.86]],"o":[[25.288,-7.398],[36.098,3.218],[0,0]],"v":[[-38.207,26.791],[38.078,30.823],[87.513,-6.807]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":14,"s":[{"i":[[0,0],[-22.888,-13.053],[-2.749,18.008]],"o":[[25.288,-7.398],[-17.303,-28.448],[0,0]],"v":[[-38.207,26.791],[38.207,35.761],[21.086,-17.93]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":21,"s":[{"i":[[0,0],[-22.517,-0.724],[-10.788,37.86]],"o":[[25.288,-7.398],[36.098,3.218],[0,0]],"v":[[-38.207,26.791],[38.078,30.823],[87.513,-6.807]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":27.176,"s":[{"i":[[0,0],[-22.888,-13.053],[-2.749,18.008]],"o":[[25.288,-7.398],[-17.303,-28.448],[0,0]],"v":[[-38.207,26.791],[38.207,35.761],[21.086,-17.93]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":37,"s":[{"i":[[0,0],[-22.517,-0.724],[-10.788,37.86]],"o":[[25.288,-7.398],[36.098,3.218],[0,0]],"v":[[-38.207,26.791],[38.078,30.823],[87.513,-6.807]],"c":false}]},{"t":54.0000021994651,"s":[{"i":[[0,0],[-22.517,-0.724],[-10.788,37.86]],"o":[[25.288,-7.398],[36.098,3.218],[0,0]],"v":[[-38.207,26.791],[38.078,30.823],[87.513,-6.807]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[636.453,358.075],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-2.991,-1.935],[1.393,-9.397],[3.254,-8.925],[-1.049,-10.002],[0,0],[-11.042,-10.598],[20.008,35.512]],"o":[[3.543,-0.536],[7.976,5.16],[-1.392,9.397],[-3.253,8.925],[0,0],[0.418,10.558],[7.218,-35.73],[0,0]],"v":[[-34.042,-55.116],[-23.763,-53.142],[-14.661,-27.77],[-23.79,-0.843],[-27.997,28.159],[-28.105,26.975],[6.752,55.652],[14.035,-54.499]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.46,0.595,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[635.71,439.352],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-19.251,-20.715],[19.252,-11.749],[12.525,20.715],[-9.779,13.975]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":3,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.64,0.73,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[617.497,415.331],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0.037,-6.22],[4.993,-23.691],[-34.033,29.139],[0,0]],"o":[[0,0],[0,0],[-4.999,-3.701],[0,0],[-3.982,18.892],[0,0],[0,0]],"v":[[55.805,-7.473],[11.559,-17.777],[-4.366,-29.569],[-16.488,-23.507],[-52.904,-14.08],[1.026,8.632],[56.886,25.512]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.94,0.955,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[554.414,404.877],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-7.976,-5.16],[1.393,-9.397],[3.254,-8.925],[-1.049,-10.001],[2.982,11.029]],"o":[[0.571,-9.482],[7.975,5.161],[-1.393,9.396],[-3.254,8.925],[-2.982,-11.029],[0,0]],"v":[[-16.19,-29.242],[5.695,-38.07],[14.797,-12.698],[5.668,14.229],[1.461,43.23],[-8.484,4.143]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8167,0.2433,0.3867,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[606.252,424.28],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":3,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"t":7,"s":[{"i":[[0,0],[76.287,8.852],[17.248,1.993]],"o":[[77.45,65.728],[-17.247,-2.001],[0,0]],"v":[[63.279,-99.083],[-7.091,82.071],[-65.557,72.343]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":14,"s":[{"i":[[0,0],[84.904,4.88],[17.248,1.993]],"o":[[83.039,26.063],[-17.334,-0.997],[0,0]],"v":[[-26.996,-99.139],[-19.347,87.726],[-65.557,72.343]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"t":21,"s":[{"i":[[0,0],[76.287,8.852],[17.248,1.993]],"o":[[77.45,65.728],[-17.247,-2.001],[0,0]],"v":[[63.279,-99.083],[-7.091,82.071],[-65.557,72.343]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":27,"s":[{"i":[[0,0],[84.904,4.88],[17.248,1.993]],"o":[[88.231,6.819],[-17.334,-0.997],[0,0]],"v":[[-46.273,-107.574],[-19.347,87.726],[-65.557,72.343]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"t":37,"s":[{"i":[[0,0],[76.287,8.852],[17.248,1.993]],"o":[[77.45,65.728],[-17.247,-2.001],[0,0]],"v":[[63.279,-99.083],[-7.091,82.071],[-65.557,72.343]],"c":false}]},{"t":54.0000021994651,"s":[{"i":[[0,0],[76.287,8.852],[17.248,1.993]],"o":[[77.45,65.728],[-17.247,-2.001],[0,0]],"v":[[63.279,-99.083],[-7.091,82.071],[-65.557,72.343]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.46,0.595,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[717.313,386.909],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":3,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1798.00007323404,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"BOX/boxgirl2 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":7,"s":[-11]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":14.961,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":21.216,"s":[-11]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":26.903,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":36.569,"s":[-11]},{"t":76.0000030955435,"s":[-11]}],"ix":10},"p":{"s":true,"x":{"a":0,"k":497.232,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.525],"y":[0.999]},"o":{"x":[0.167],"y":[0.012]},"t":7,"s":[534.782]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.714],"y":[-0.001]},"t":14.961,"s":[473.393]},{"i":{"x":[0.086],"y":[1.001]},"o":{"x":[0.333],"y":[0]},"t":20.648,"s":[554.791]},{"i":{"x":[0.345],"y":[1.257]},"o":{"x":[0.475],"y":[0.001]},"t":26.903,"s":[484.088]},{"i":{"x":[0.058],"y":[8.039]},"o":{"x":[0.207],"y":[-15.641]},"t":37.138,"s":[534.782]},{"t":76.0000030955435,"s":[534.782]}],"ix":4}},"a":{"a":0,"k":[572.5,586.5,0],"ix":1},"s":{"a":0,"k":[83,83,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.345,-40.918],[0,0],[0,0],[0,0]],"o":[[0,0],[5.794,-40.405],[0,0],[0,0]],"v":[[2.264,43.63],[-8.285,42.896],[-2.262,-43.63],[8.286,-42.896]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[307.842,426.297],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[5.221,1.428]],"o":[[0,0],[0,0]],"v":[[0.841,-83.44],[-2.611,82.013]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[306.142,427.058],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-69.992,1.014]],"o":[[69.993,-1.014],[0,0]],"v":[[-112.026,3.123],[112.026,-3.123]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[477.19,351.902],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-38.969,-5.99],[1.82,-62.867]],"o":[[41.66,9.085],[-1.821,62.868],[0,0]],"v":[[-56.581,-95.724],[56.581,-72.475],[52.313,95.724]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8471,0.1922,0.3569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[308.254,427.051],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-43.799,3.2],[-73.661,-9.244],[-9.976,-73.578],[68.598,2.806],[42.988,11.764],[6.219,42.049]],"o":[[64.703,16],[-14.075,53.761],[-67.608,11.939],[-42.988,-11.764],[7.574,-63.979],[43.799,-3.2]],"v":[[-15.044,-99.102],[169.981,-81.65],[161.058,90.364],[-59.207,94.101],[-169.981,65.062],[-167.562,-99.102]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8471,0.1922,0.3569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[419.236,430.43],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[0,0],[4.29,-26.25],[54.595,20.476],[-5.348,26.556]],"o":[[-5.881,28.24],[-48.63,-17.126],[7.005,-28.32],[0,0]],"v":[[81.443,-11.521],[72.476,56.222],[-39.877,9.497],[-29.331,-40.56]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":17.235,"s":[{"i":[[0,0],[4.29,-26.25],[54.595,20.475],[-5.348,26.556]],"o":[[-5.881,28.24],[-48.63,-17.126],[7.005,-28.32],[0,0]],"v":[[81.443,-11.521],[72.476,56.222],[-39.877,9.497],[-29.331,-40.56]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20,"s":[{"i":[[0,0],[18.337,-0.432],[53.327,11.084],[-23.981,4.669]],"o":[[-25.774,-4.099],[-48.63,-17.126],[24.904,-3.29],[0,0]],"v":[[81.443,-11.521],[31.961,-12.457],[-76.764,-40.908],[-29.331,-40.56]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":22.921,"s":[{"i":[[0,0],[4.29,-26.25],[54.595,20.476],[-5.348,26.556]],"o":[[-5.881,28.24],[-48.63,-17.126],[7.005,-28.32],[0,0]],"v":[[81.443,-11.521],[72.476,56.222],[-39.877,9.497],[-29.331,-40.56]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":28.608,"s":[{"i":[[0,0],[4.29,-26.25],[54.595,20.476],[-5.348,26.556]],"o":[[-5.881,28.24],[-48.63,-17.126],[7.005,-28.32],[0,0]],"v":[[81.443,-11.521],[72.476,56.222],[-39.877,9.497],[-29.331,-40.56]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":31,"s":[{"i":[[0,0],[18.337,-0.432],[53.327,11.084],[-23.981,4.669]],"o":[[-25.774,-4.099],[-48.63,-17.126],[24.904,-3.29],[0,0]],"v":[[81.443,-11.521],[31.961,-12.457],[-76.764,-40.909],[-29.331,-40.56]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":46,"s":[{"i":[[0,0],[4.29,-26.25],[54.595,20.476],[-5.348,26.556]],"o":[[-5.881,28.24],[-48.63,-17.126],[7.005,-28.32],[0,0]],"v":[[81.443,-11.521],[72.476,56.222],[-39.877,9.497],[-29.331,-40.56]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":62,"s":[{"i":[[0,0],[5.295,-25.538],[54.595,20.476],[-5.348,26.556]],"o":[[-5.881,28.24],[-48.63,-17.126],[7.005,-28.32],[0,0]],"v":[[81.443,-11.521],[68.394,55.122],[-39.877,9.497],[-29.331,-40.56]],"c":false}]},{"t":77.0000031362743,"s":[{"i":[[0,0],[4.29,-26.25],[54.595,20.476],[-5.348,26.556]],"o":[[-5.881,28.24],[-48.63,-17.126],[7.005,-28.32],[0,0]],"v":[[81.443,-11.521],[72.476,56.222],[-39.877,9.497],[-29.331,-40.56]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8471,0.1922,0.3569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[278.586,536.051],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":3,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[0,0],[-3.518,-24.757],[85.647,-5.976],[4.373,25.634]],"o":[[1.938,21.197],[-80.626,8.376],[-2.305,-27.236],[0,0]],"v":[[96.352,-34.341],[106.656,24.809],[-115.038,40.968],[-118.704,-27.565]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":8,"s":[{"i":[[0,0],[-7.408,-22.677],[85.647,-5.975],[4.373,25.634]],"o":[[1.938,21.197],[-80.626,8.376],[-2.305,-27.236],[0,0]],"v":[[96.353,-34.341],[110.216,25.436],[-110.292,41.803],[-118.704,-27.565]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":16.666,"s":[{"i":[[0,0],[-3.518,-24.757],[85.647,-5.975],[4.373,25.634]],"o":[[1.938,21.197],[-80.626,8.376],[-2.305,-27.236],[0,0]],"v":[[96.353,-34.341],[106.656,24.809],[-115.038,40.968],[-118.704,-27.565]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20,"s":[{"i":[[0,0],[-29.356,-13.941],[84.442,-5.729],[19.387,14.399]],"o":[[13.559,13.713],[-83.638,8.019],[-32.035,-13.191],[0,0]],"v":[[96.353,-34.341],[136.329,-10.87],[-68.498,3.481],[-118.704,-27.565]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":22.921,"s":[{"i":[[0,0],[-3.518,-24.757],[85.647,-5.976],[4.373,25.634]],"o":[[1.938,21.197],[-80.626,8.376],[-2.305,-27.236],[0,0]],"v":[[96.352,-34.341],[106.656,24.809],[-115.038,40.968],[-118.704,-27.565]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":28.608,"s":[{"i":[[0,0],[-3.518,-24.757],[85.647,-5.976],[4.373,25.634]],"o":[[1.938,21.197],[-80.626,8.376],[-2.305,-27.236],[0,0]],"v":[[96.352,-34.341],[106.656,24.809],[-115.038,40.968],[-118.704,-27.565]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":31,"s":[{"i":[[0,0],[-29.356,-13.941],[84.442,-5.729],[19.387,14.399]],"o":[[13.559,13.713],[-83.638,8.019],[-32.035,-13.191],[0,0]],"v":[[96.353,-34.341],[136.329,-10.87],[-68.498,3.481],[-118.704,-27.565]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":46,"s":[{"i":[[0,0],[-3.518,-24.757],[85.647,-5.976],[4.373,25.634]],"o":[[1.938,21.197],[-80.626,8.376],[-2.305,-27.236],[0,0]],"v":[[96.352,-34.341],[106.656,24.809],[-115.038,40.968],[-118.704,-27.565]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":52,"s":[{"i":[[0,0],[4.341,-23.172],[85.647,-5.976],[-5.305,25.866]],"o":[[-4.364,20.108],[-80.626,8.376],[3.168,-26.192],[0,0]],"v":[[96.352,-34.341],[83.496,23.989],[-128.163,39.03],[-118.704,-27.565]],"c":false}]},{"t":77.0000031362743,"s":[{"i":[[0,0],[-3.518,-24.757],[85.647,-5.976],[4.373,25.634]],"o":[[1.938,21.197],[-80.626,8.376],[-2.305,-27.236],[0,0]],"v":[[96.352,-34.341],[106.656,24.809],[-115.038,40.968],[-118.704,-27.565]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8471,0.1922,0.3569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[483.54,552.116],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":3,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1798.00007323404,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Legs/boxgirl2 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[477.232,513.782,0],"ix":2},"a":{"a":0,"k":[572.5,586.5,0],"ix":1},"s":{"a":0,"k":[83,83,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.742,-7.41],[-14.493,-3.584],[-25.452,2.565]],"o":[[-5.443,5.57],[2.029,20.261],[13.455,3.327],[0,0]],"v":[[-48.474,-30.191],[-57.779,-10.254],[-0.625,23.639],[58.521,27.626]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.94,0.955,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[647.342,989.901],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-8.064,5.222]],"o":[[0,0],[0,0]],"v":[[-11.624,-6.953],[11.624,1.731]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.94,0.955,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[618.704,1014.636],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,3.45],[0,0],[0,0],[0,0],[0,0],[3.45,0]],"o":[[-3.45,0],[0,0],[0,0],[0,0],[0,0],[0,3.45],[0,0]],"v":[[-66.997,10.39],[-73.244,4.143],[-73.244,-10.39],[-70.416,-10.39],[73.244,-10.39],[73.244,4.143],[66.997,10.39]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.94,0.955,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[630.328,1057.988],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0.745,2.543],[-7.412,2.56],[0,0],[0,0]],"o":[[0,0],[0,0],[-2.561,-2.245],[-2.206,-7.525],[0,0],[0,0],[0,0]],"v":[[74.419,-1.574],[75.315,23.542],[-68.346,23.542],[-73.109,16.217],[-63.465,-1.762],[-21.177,-16.372],[-11.369,-23.542]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.94,0.955,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[628.258,1024.055],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.406,-7.312],[-14.756,-2.265],[-25.117,4.846]],"o":[[0,20.776],[3.845,19.996],[13.701,2.102],[0,0]],"v":[[-30.309,-32.271],[-58.915,0.168],[1.056,28.779],[60.321,27.425]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[561.487,975.205],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-7.561,5.927]],"o":[[0,0],[0,0]],"v":[[-11.967,-6.242],[11.968,0.315]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[519.21,1005.327],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[-3.437,0.31]],"o":[[0,0],[0,0],[0,0],[0.311,3.436],[0,0]],"v":[[74.051,5],[71.843,-16.903],[-74.051,-3.715],[-72.448,10.933],[-65.663,16.593]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[535.094,1047.055],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.577,12.468],[-1.576,-12.468]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[605.36,1017.685],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-2.874,-7.296],[-2.753,-2.005]],"o":[[0,0],[0,0],[-7.151,3.218],[0.971,2.467],[0,0]],"v":[[30.393,-26.012],[21.269,-17.987],[-19.532,0.37],[-27.519,19.143],[-22.114,26.012]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[485.974,1017.073],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10.98,"s":[{"i":[[0,0],[-3.442,-105.571]],"o":[[-18.704,112.217],[0,0]],"v":[[-9.493,-158.357],[9.494,158.357]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":14.393,"s":[{"i":[[0,0],[-3.442,-105.571]],"o":[[3.442,105.571],[0,0]],"v":[[-9.493,-158.357],[9.494,158.357]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20.648,"s":[{"i":[[0,0],[-3.442,-105.571]],"o":[[-18.704,112.217],[0,0]],"v":[[-9.493,-158.357],[9.494,158.357]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":25.765,"s":[{"i":[[0,0],[-3.442,-105.571]],"o":[[3.442,105.571],[0,0]],"v":[[-9.493,-158.357],[9.494,158.357]],"c":false}]},{"t":32.588751327367,"s":[{"i":[[0,0],[-3.442,-105.571]],"o":[[-18.704,112.217],[0,0]],"v":[[-9.493,-158.357],[9.494,158.357]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[519.695,753.384],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10.98,"s":[{"i":[[0,0],[3.081,-104.652]],"o":[[-11.201,108.609],[0,0]],"v":[[2.06,-160.308],[6.06,160.309]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":14.393,"s":[{"i":[[0,0],[3.081,-104.652]],"o":[[5.242,106.157],[0,0]],"v":[[2.06,-160.308],[6.06,160.309]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20.648,"s":[{"i":[[0,0],[3.081,-104.652]],"o":[[-11.201,108.609],[0,0]],"v":[[2.06,-160.308],[6.06,160.309]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":25.765,"s":[{"i":[[0,0],[3.081,-104.652]],"o":[[5.242,106.156],[0,0]],"v":[[2.06,-160.308],[6.06,160.309]],"c":false}]},{"t":32.588751327367,"s":[{"i":[[0,0],[3.081,-104.652]],"o":[[-11.201,108.609],[0,0]],"v":[[2.06,-160.308],[6.06,160.309]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[591.424,810.794],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10.98,"s":[{"i":[[0,0],[-21.928,-106.278]],"o":[[-33.777,91.486],[0,0]],"v":[[12.646,-187.238],[21.131,187.238]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":14.393,"s":[{"i":[[0,0],[-10.66,-108.482]],"o":[[-4.585,92.5],[0,0]],"v":[[12.646,-187.238],[21.131,187.238]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20.648,"s":[{"i":[[0,0],[-21.928,-106.278]],"o":[[-33.777,91.486],[0,0]],"v":[[12.646,-187.238],[21.131,187.238]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":25.765,"s":[{"i":[[0,0],[-10.66,-108.482]],"o":[[-4.585,92.5],[0,0]],"v":[[12.646,-187.238],[21.131,187.238]],"c":false}]},{"t":32.588751327367,"s":[{"i":[[0,0],[-21.928,-106.278]],"o":[[-33.777,91.486],[0,0]],"v":[[12.646,-187.238],[21.131,187.238]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[685.846,756.199],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1798.00007323404,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Body/boxgirl2 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10.98,"s":[477.232,513.782,0],"to":[0,-1.167,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":14.393,"s":[477.232,506.782,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20.648,"s":[477.232,513.782,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":25.765,"s":[477.232,506.782,0],"to":[0,0,0],"ti":[0,-1.167,0]},{"t":32.588751327367,"s":[477.232,513.782,0]}],"ix":2},"a":{"a":0,"k":[572.5,586.5,0],"ix":1},"s":{"a":0,"k":[83,83,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":11,"s":[{"i":[[0,0],[-1.842,-18.593],[20.162,4.991],[50.908,0.473],[-108.373,217.759],[-16.355,0],[0,0],[0,0],[-16.432,-8.614]],"o":[[6.366,18.406],[2.049,20.67],[-36.237,-8.969],[0,0],[10.336,-20.768],[0,0],[0,0],[18.522,-12.748],[0,0]],"v":[[132.53,-11.826],[161.147,106.417],[106.529,126.902],[-0.019,112.697],[-47.61,-79.325],[-1.019,-144.415],[23.696,-102.197],[71.999,-130.707],[125.265,-134.421]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":15,"s":[{"i":[[0,0],[-1.842,-18.593],[20.162,4.991],[50.908,0.473],[-104.743,241.812],[-16.355,0],[0,0],[0,0],[-16.432,-8.614]],"o":[[6.366,18.406],[2.049,20.67],[-36.237,-8.969],[0,0],[9.221,-21.286],[0,0],[0,0],[18.522,-12.748],[0,0]],"v":[[132.53,-11.826],[161.147,106.417],[106.529,126.902],[-0.019,112.697],[-75.32,-116.675],[-1.019,-144.415],[23.696,-102.197],[71.999,-130.707],[125.265,-134.421]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20,"s":[{"i":[[0,0],[-1.842,-18.593],[20.162,4.991],[50.908,0.473],[-108.373,217.759],[-16.355,0],[0,0],[0,0],[-16.432,-8.614]],"o":[[6.366,18.406],[2.049,20.67],[-36.237,-8.969],[0,0],[10.336,-20.768],[0,0],[0,0],[18.522,-12.748],[0,0]],"v":[[132.53,-11.826],[161.147,106.417],[106.529,126.902],[-0.019,112.697],[-47.61,-88.964],[-1.019,-144.415],[23.696,-102.197],[71.999,-130.707],[125.265,-134.421]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":26,"s":[{"i":[[0,0],[-1.842,-18.593],[20.162,4.991],[50.908,0.473],[-108.373,217.759],[-16.355,0],[0,0],[0,0],[-16.432,-8.614]],"o":[[6.366,18.406],[2.049,20.67],[-36.237,-8.969],[0,0],[10.336,-20.768],[0,0],[0,0],[18.522,-12.748],[0,0]],"v":[[132.53,-11.826],[161.147,106.417],[106.529,126.902],[-0.019,112.697],[-63.272,-105.831],[-1.019,-144.415],[23.696,-102.197],[71.999,-130.707],[125.265,-134.421]],"c":false}]},{"t":33.0000013441176,"s":[{"i":[[0,0],[-1.842,-18.593],[20.162,4.991],[50.908,0.473],[-108.373,217.759],[-16.355,0],[0,0],[0,0],[-16.432,-8.614]],"o":[[6.366,18.406],[2.049,20.67],[-36.237,-8.969],[0,0],[10.336,-20.768],[0,0],[0,0],[18.522,-12.748],[0,0]],"v":[[132.53,-11.826],[161.147,106.417],[106.529,126.902],[-0.019,112.697],[-47.61,-79.325],[-1.019,-144.415],[23.696,-102.197],[71.999,-130.707],[125.265,-134.421]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.46,0.595,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[559.529,428.725],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1798.00007323404,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Layer 8/boxgirl2 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[477.232,513.782,0],"ix":2},"a":{"a":0,"k":[572.5,586.5,0],"ix":1},"s":{"a":0,"k":[83,83,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[47.878,-14.752],[3.234,-71.293],[-5.895,-75.093],[33.038,-81.93],[-85.728,-107.22],[-68.517,107.681],[-69.828,139.983],[-38.029,115.117],[46.807,57.257],[162.699,89.342]],"o":[[-55.539,17.112],[-3.198,70.52],[6.233,79.398],[-49.442,122.608],[99.596,124.565],[62.205,-97.761],[57.996,-116.263],[25.413,-76.926],[-71.866,-87.91],[-72.635,-39.886]],"v":[[-164.114,-536.141],[-273.101,-369.18],[-225.408,-209.28],[-297.757,-3.278],[-280.381,426.328],[113.978,424.615],[140.88,74.349],[340.696,-142.095],[303.58,-375.651],[-19.035,-471.694]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.94,0.955,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[655.005,614.237],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1798.00007323404,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/app/src/main/res/raw/loading.json b/app/src/main/res/raw/loading.json new file mode 100644 index 0000000..f4b935a --- /dev/null +++ b/app/src/main/res/raw/loading.json @@ -0,0 +1 @@ +{"v":"5.7.8","fr":30,"ip":0,"op":91,"w":1080,"h":1080,"nm":"bike rider","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Layer 15 Outlines","parent":14,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":12,"s":[25]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":26,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":35,"s":[25]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":45,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":57,"s":[25]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":71,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":80,"s":[25]},{"t":90,"s":[0]}],"ix":10},"p":{"a":0,"k":[158.727,79.655,0],"ix":2,"l":2},"a":{"a":0,"k":[2.063,11.093,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.754,8.852],[-1.233,9.188],[-2.754,-8.852],[1.232,-9.188]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[17.622,9.438],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.395,4.681],[-4.681,0.395],[0,0]],"o":[[0,0],[-4.682,0.394],[-0.395,-4.681],[0,0],[0,0]],"v":[[10.027,7.838],[-0.441,8.721],[-9.632,0.959],[-1.871,-8.232],[8.598,-9.115]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.749019607843,0.047058823529,0.196078431373,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[10.276,9.821],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Layer 13 Outlines","parent":14,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[3]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":12,"s":[-7]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":26,"s":[3]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":35,"s":[-7]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":45,"s":[3]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":57,"s":[-7]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":71,"s":[3]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":80,"s":[-7]},{"t":90,"s":[3]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[150.99,77.454,0],"to":[0.292,0.958,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[152.74,83.204,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[150.99,77.454,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[152.74,83.204,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[150.99,77.454,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[152.74,83.204,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[150.99,77.454,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[152.74,83.204,0],"to":[0,0,0],"ti":[0.292,0.958,0]},{"t":90,"s":[150.99,77.454,0]}],"ix":2,"l":2},"a":{"a":0,"k":[4.939,4.189,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-1.757,1.757],[-1.757,-1.757]],"o":[[0,0],[0,0],[-1.757,-1.757],[1.757,-1.757],[0,0]],"v":[[13.959,7.594],[7.595,13.958],[-12.202,-5.837],[-12.202,-12.202],[-5.837,-12.202]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.749019607843,0.047058823529,0.196078431373,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[14.208,14.209],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.5,-28.5],[28.5,28.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[33.735,33.235],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Layer 17 Outlines","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[-5]},{"t":90,"s":[1435]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[63.352,62.395,0],"to":[0.402,0.258,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[65.764,63.945,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[63.352,62.395,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[65.764,63.945,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[63.352,62.395,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[65.764,63.945,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[63.352,62.395,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[65.764,63.945,0],"to":[0,0,0],"ti":[0.402,0.258,0]},{"t":90,"s":[63.352,62.395,0]}],"ix":2,"l":2},"a":{"a":0,"k":[38,38,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-9.941],[9.941,0],[-23.87,0.945]],"o":[[0,9.941],[-23.877,-0.948],[9.941,0]],"v":[[20.939,0],[2.939,18],[2.939,-18]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.75,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"d":[{"n":"d","nm":"dash","v":{"a":0,"k":28.267,"ix":1}},{"n":"g","nm":"gap","v":{"a":0,"k":28.267,"ix":2}},{"n":"o","nm":"offset","v":{"a":0,"k":0,"ix":7}}],"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[35.061,38],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-9.941],[9.941,0],[0,9.941],[-9.941,0]],"o":[[0,9.941],[-9.941,0],[0,-9.941],[9.941,0]],"v":[[18,0],[0,18],[-18,0],[0,-18]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[38,38],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-8.008],[8.008,0],[0,8.008],[-8.008,0]],"o":[[0,8.008],[-8.008,0],[0,-8.008],[8.008,0]],"v":[[14.5,0],[0,14.5],[-14.5,0],[0,-14.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[38,38],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"5 Outlines","parent":9,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[12.227,31.842,0],"ix":2,"l":2},"a":{"a":0,"k":[11.5,5.413,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[3.75,2.143]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-4.438,-1.053]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":6,"s":[{"i":[[0,0],[2.41,1.999]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-4.783,-1.539]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[2.641,-1.386]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-5.007,-2.093]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":19,"s":[{"i":[[0,0],[2.41,1.999]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-4.783,-1.539]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[3.75,2.143]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-4.438,-1.053]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":30,"s":[{"i":[[0,0],[2.41,1.999]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-4.783,-1.539]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[2.641,-1.386]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-5.007,-2.093]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":40,"s":[{"i":[[0,0],[2.41,1.999]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-4.783,-1.539]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[3.75,2.143]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-4.438,-1.053]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":51,"s":[{"i":[[0,0],[2.41,1.999]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-4.783,-1.539]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[2.641,-1.386]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-5.007,-2.093]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":64,"s":[{"i":[[0,0],[2.41,1.999]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-4.783,-1.539]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[3.75,2.143]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-4.438,-1.053]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":76,"s":[{"i":[[0,0],[2.41,1.999]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-4.783,-1.539]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[2.641,-1.386]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-5.007,-2.093]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":85,"s":[{"i":[[0,0],[2.41,1.999]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-4.783,-1.539]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[3.75,2.143]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-4.438,-1.053]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.627450980392,0.201153399898,0.059054206399,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[8.25,5.741],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"4 Outlines","parent":9,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[11.727,29.447,0],"ix":2,"l":2},"a":{"a":0,"k":[19.5,11.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[4,-2],[1.5,0.5]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-2,0],[-6,1]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":6,"s":[{"i":[[0,0],[3.482,0.412],[1.803,-0.047]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-1.003,-1.17],[-4.908,-0.925]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[2.964,2.825],[2.105,-0.593]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-0.006,-2.341],[-3.815,-2.851]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":19,"s":[{"i":[[0,0],[3.482,0.412],[1.803,-0.047]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-1.003,-1.17],[-4.908,-0.925]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[4,-2],[1.5,0.5]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-2,0],[-6,1]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":30,"s":[{"i":[[0,0],[3.482,0.412],[1.803,-0.047]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-1.003,-1.17],[-4.908,-0.925]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[2.964,2.825],[2.105,-0.593]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-0.006,-2.341],[-3.815,-2.851]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":40,"s":[{"i":[[0,0],[3.482,0.412],[1.803,-0.047]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-1.003,-1.17],[-4.908,-0.925]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[4,-2],[1.5,0.5]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-2,0],[-6,1]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":51,"s":[{"i":[[0,0],[3.482,0.412],[1.803,-0.047]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-1.003,-1.17],[-4.908,-0.925]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[2.964,2.825],[2.105,-0.593]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-0.006,-2.341],[-3.815,-2.851]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":64,"s":[{"i":[[0,0],[3.482,0.412],[1.803,-0.047]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-1.003,-1.17],[-4.908,-0.925]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[4,-2],[1.5,0.5]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-2,0],[-6,1]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":76,"s":[{"i":[[0,0],[3.482,0.412],[1.803,-0.047]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-1.003,-1.17],[-4.908,-0.925]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[2.964,2.825],[2.105,-0.593]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-0.006,-2.341],[-3.815,-2.851]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":85,"s":[{"i":[[0,0],[3.482,0.412],[1.803,-0.047]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-1.003,-1.17],[-4.908,-0.925]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[4,-2],[1.5,0.5]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-2,0],[-6,1]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.505882352941,0.164705882353,0.050980392157,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[13.5,9.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"3 Outlines","parent":9,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[7.227,45.947,0],"ix":2,"l":2},"a":{"a":0,"k":[16.286,7.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-5.268,1.945],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":6,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-7.176,-3.232],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-6.812,-4.523],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":19,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-7.176,-3.232],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-5.268,1.945],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":30,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-7.176,-3.232],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-6.812,-4.523],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":40,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-7.176,-3.232],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-5.268,1.945],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":51,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-7.176,-3.232],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-6.812,-4.523],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":64,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-7.176,-3.232],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-5.268,1.945],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":76,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-7.176,-3.232],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-6.812,-4.523],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":85,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-7.176,-3.232],[4.393,-2.32]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-5.268,1.945],[4.393,-2.32]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.505882352941,0.164705882353,0.050980392157,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[11.893,9.821],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"2 Outlines","parent":9,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[9.227,53.267,0],"ix":2,"l":2},"a":{"a":0,"k":[19.5,11.82,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[-5,-2]],"o":[[0,0],[0,0]],"v":[[-6,3.5],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":6,"s":[{"i":[[0,0],[-5.635,-0.702]],"o":[[0,0],[0,0]],"v":[[-6.692,-0.048],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[-6.375,0.812]],"o":[[0,0],[0,0]],"v":[[-7.5,-4.188],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":19,"s":[{"i":[[0,0],[-5.635,-0.702]],"o":[[0,0],[0,0]],"v":[[-6.692,-0.048],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[-5,-2]],"o":[[0,0],[0,0]],"v":[[-6,3.5],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":30,"s":[{"i":[[0,0],[-5.635,-0.702]],"o":[[0,0],[0,0]],"v":[[-6.692,-0.048],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[-6.375,0.812]],"o":[[0,0],[0,0]],"v":[[-7.5,-4.188],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":40,"s":[{"i":[[0,0],[-5.635,-0.702]],"o":[[0,0],[0,0]],"v":[[-6.692,-0.048],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[-5,-2]],"o":[[0,0],[0,0]],"v":[[-6,3.5],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":51,"s":[{"i":[[0,0],[-5.635,-0.702]],"o":[[0,0],[0,0]],"v":[[-6.692,-0.048],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[-6.375,0.812]],"o":[[0,0],[0,0]],"v":[[-7.5,-4.188],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":64,"s":[{"i":[[0,0],[-5.635,-0.702]],"o":[[0,0],[0,0]],"v":[[-6.692,-0.048],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[-5,-2]],"o":[[0,0],[0,0]],"v":[[-6,3.5],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":76,"s":[{"i":[[0,0],[-5.635,-0.702]],"o":[[0,0],[0,0]],"v":[[-6.692,-0.048],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[-6.375,0.812]],"o":[[0,0],[0,0]],"v":[[-7.5,-4.188],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":85,"s":[{"i":[[0,0],[-5.635,-0.702]],"o":[[0,0],[0,0]],"v":[[-6.692,-0.048],[6,-1.5]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[-5,-2]],"o":[[0,0],[0,0]],"v":[[-6,3.5],[6,-1.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.505882352941,0.164705882353,0.050980392157,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[13.5,11],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"hair 1 Outlines","parent":9,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[10.227,67.947,0],"ix":2,"l":2},"a":{"a":0,"k":[20.5,7.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[-6,4]],"o":[[0,0],[0,0]],"v":[[-6.5,0.214],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":6,"s":[{"i":[[0,0],[-6.95,1.453]],"o":[[0,0],[0,0]],"v":[[-6.482,2.702],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[-7.901,-1.094]],"o":[[0,0],[0,0]],"v":[[-6.465,5.19],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":19,"s":[{"i":[[0,0],[-6.95,1.453]],"o":[[0,0],[0,0]],"v":[[-6.482,2.702],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[-6,4]],"o":[[0,0],[0,0]],"v":[[-6.5,0.214],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":30,"s":[{"i":[[0,0],[-6.95,1.453]],"o":[[0,0],[0,0]],"v":[[-6.482,2.702],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[-7.901,-1.094]],"o":[[0,0],[0,0]],"v":[[-6.465,5.19],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":40,"s":[{"i":[[0,0],[-6.95,1.453]],"o":[[0,0],[0,0]],"v":[[-6.482,2.702],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[-6,4]],"o":[[0,0],[0,0]],"v":[[-6.5,0.214],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":51,"s":[{"i":[[0,0],[-6.95,1.453]],"o":[[0,0],[0,0]],"v":[[-6.482,2.702],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[-7.901,-1.094]],"o":[[0,0],[0,0]],"v":[[-6.465,5.19],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":64,"s":[{"i":[[0,0],[-6.95,1.453]],"o":[[0,0],[0,0]],"v":[[-6.482,2.702],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[-6,4]],"o":[[0,0],[0,0]],"v":[[-6.5,0.214],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":76,"s":[{"i":[[0,0],[-6.95,1.453]],"o":[[0,0],[0,0]],"v":[[-6.482,2.702],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[-7.901,-1.094]],"o":[[0,0],[0,0]],"v":[[-6.465,5.19],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":85,"s":[{"i":[[0,0],[-6.95,1.453]],"o":[[0,0],[0,0]],"v":[[-6.482,2.702],[6.5,-2]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[-6,4]],"o":[[0,0],[0,0]],"v":[[-6.5,0.214],[6.5,-2]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.505882352941,0.164705882353,0.050980392157,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[14,9.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"HEad","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":12,"s":[12]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":26,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":35,"s":[12]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":45,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":57,"s":[12]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":71,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":80,"s":[12]},{"t":90,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[85.636,10.277,0],"to":[0.625,1.333,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[89.386,18.277,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[85.636,10.277,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[89.386,18.277,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[85.636,10.277,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[89.386,18.277,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[85.636,10.277,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[89.386,18.277,0],"to":[0,0,0],"ti":[0.625,1.333,0]},{"t":90,"s":[85.636,10.277,0]}],"ix":2,"l":2},"a":{"a":0,"k":[22.114,53.473,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.071],[0.828,0],[0,2.071],[-0.828,0]],"o":[[0,2.071],[-0.828,0],[0,-2.071],[0.828,0]],"v":[[1.5,0],[0,3.75],[-1.5,0],[0,-3.75]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.129411764706,0.129411764706,0.129411764706,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[35.227,37.447],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.071],[0.828,0],[0,2.071],[-0.828,0]],"o":[[0,2.071],[-0.828,0],[0,-2.071],[0.828,0]],"v":[[1.5,0],[0,3.75],[-1.5,0],[0,-3.75]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.129411764706,0.129411764706,0.129411764706,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[30.227,37.447],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,2.761],[-2.761,0]],"o":[[0,0],[-2.761,0],[0,-2.761],[0,0]],"v":[[2.5,5],[2.5,5],[-2.5,0],[2.5,-5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.937254961799,0.647058823529,0.352941176471,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[11.227,37.947],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.23,-0.777],[-4.23,1.866],[4.23,1.149],[3.965,-1.866]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.937254961799,0.647058823529,0.352941176471,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[33.958,16.224],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-6.549,0.576],[0,0],[-0.577,-6.549]],"o":[[0,0],[0,0],[-0.576,-6.55],[0,0],[6.55,-0.576],[0,0]],"v":[[19.124,8.694],[-17.734,11.939],[-18.548,2.697],[-7.733,-10.205],[5.408,-11.362],[18.31,-0.547]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.749019607843,0.047058823529,0.196078431373,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[19.374,12.189],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.703,-0.302],[0,0],[0.302,3.703],[0,0],[-3.703,0.303],[0,0],[-0.303,-3.703],[0,0]],"o":[[0,0],[-3.703,0.302],[0,0],[-0.302,-3.703],[0,0],[3.703,-0.302],[0,0],[0.302,3.703]],"v":[[5.221,17.908],[-2.247,18.518],[-9.5,12.36],[-11.379,-10.656],[-5.221,-17.91],[2.247,-18.518],[9.5,-12.362],[11.378,10.656]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.937254961799,0.647058823529,0.352941176471,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[28.634,29.742],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3,-35],[3,35]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.505882352941,0.164705882353,0.050980392157,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":35,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[23.727,54.447],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Layer 12 Outlines","parent":14,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[48.566,-7,0],"ix":2,"l":2},"a":{"a":0,"k":[91.28,82.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[-50,-8],[-14,37]],"o":[[0,0],[0,0],[0,0]],"v":[[-41.75,-33],[-1.25,27.5],[51.25,-4]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[-50,-8],[-8.75,36.75]],"o":[[0,0],[0,0],[0,0]],"v":[[-37.75,-29.25],[1,31],[51.75,-3]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[-50,-8],[-14,37]],"o":[[0,0],[0,0],[0,0]],"v":[[-41.75,-33],[-1.25,27.5],[51.25,-4]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[-50,-8],[-8.75,36.75]],"o":[[0,0],[0,0],[0,0]],"v":[[-37.75,-29.25],[1,31],[51.75,-3]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[-50,-8],[-14,37]],"o":[[0,0],[0,0],[0,0]],"v":[[-41.75,-33],[-1.25,27.5],[51.25,-4]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[-50,-8],[-8.75,36.75]],"o":[[0,0],[0,0],[0,0]],"v":[[-37.75,-29.25],[1,31],[51.75,-3]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[-50,-8],[-14,37]],"o":[[0,0],[0,0],[0,0]],"v":[[-41.75,-33],[-1.25,27.5],[51.25,-4]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[-50,-8],[-8.75,36.75]],"o":[[0,0],[0,0],[0,0]],"v":[[-37.75,-29.25],[1,31],[51.75,-3]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[-50,-8],[-14,37]],"o":[[0,0],[0,0],[0,0]],"v":[[-41.75,-33],[-1.25,27.5],[51.25,-4]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.247058838489,0.250980392157,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":33,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[133.75,115.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[2,3],[0,0]],"v":[[-1,-10.5],[1,10.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[0,0]],"o":[[2,3],[0,0]],"v":[[-1,-10.5],[-1.25,11]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[0,0]],"o":[[2,3],[0,0]],"v":[[-1,-10.5],[1,10.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[0,0]],"o":[[2,3],[0,0]],"v":[[-1,-10.5],[-1.25,11]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[0,0]],"o":[[2,3],[0,0]],"v":[[-1,-10.5],[1,10.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[0,0]],"o":[[2,3],[0,0]],"v":[[-1,-10.5],[-1.25,11]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[0,0]],"o":[[2,3],[0,0]],"v":[[-1,-10.5],[1,10.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[0,0]],"o":[[2,3],[0,0]],"v":[[-1,-10.5],[-1.25,11]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[0,0]],"o":[[2,3],[0,0]],"v":[[-1,-10.5],[1,10.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.937254961799,0.647058823529,0.352941176471,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":7,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[220.5,107.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[-7.698,5.705],[-3.747,-5.873],[0,-6.861]],"o":[[0,0],[5.596,-4.148],[1.999,3.134],[0,0]],"v":[[-15.5,9.916],[-5.49,-6.769],[11.936,-3.723],[15.5,10.916]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[-7.698,5.705],[-3.747,-5.873],[0,-6.861]],"o":[[0,0],[5.596,-4.148],[1.999,3.134],[0,0]],"v":[[-15.5,9.916],[-6.24,-3.769],[12.436,-0.723],[14,11.666]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[-7.698,5.705],[-3.747,-5.873],[0,-6.861]],"o":[[0,0],[5.596,-4.148],[1.999,3.134],[0,0]],"v":[[-15.5,9.916],[-5.49,-6.769],[11.936,-3.723],[15.5,10.916]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[-7.698,5.705],[-3.747,-5.873],[0,-6.861]],"o":[[0,0],[5.596,-4.148],[1.999,3.134],[0,0]],"v":[[-15.5,9.916],[-6.24,-3.769],[12.436,-0.723],[14,11.666]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[-7.698,5.705],[-3.747,-5.873],[0,-6.861]],"o":[[0,0],[5.596,-4.148],[1.999,3.134],[0,0]],"v":[[-15.5,9.916],[-5.49,-6.769],[11.936,-3.723],[15.5,10.916]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[-7.698,5.705],[-3.747,-5.873],[0,-6.861]],"o":[[0,0],[5.596,-4.148],[1.999,3.134],[0,0]],"v":[[-15.5,9.916],[-6.24,-3.769],[12.436,-0.723],[14,11.666]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[-7.698,5.705],[-3.747,-5.873],[0,-6.861]],"o":[[0,0],[5.596,-4.148],[1.999,3.134],[0,0]],"v":[[-15.5,9.916],[-5.49,-6.769],[11.936,-3.723],[15.5,10.916]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[-7.698,5.705],[-3.747,-5.873],[0,-6.861]],"o":[[0,0],[5.596,-4.148],[1.999,3.134],[0,0]],"v":[[-15.5,9.916],[-6.24,-3.769],[12.436,-0.723],[14,11.666]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[-7.698,5.705],[-3.747,-5.873],[0,-6.861]],"o":[[0,0],[5.596,-4.148],[1.999,3.134],[0,0]],"v":[[-15.5,9.916],[-5.49,-6.769],[11.936,-3.723],[15.5,10.916]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.937254961799,0.647058823529,0.352941176471,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":15,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[201,94.084],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"shoe Outlines","parent":12,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[92.5,60.75,0],"ix":2,"l":2},"a":{"a":0,"k":[21.5,43.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[21,-25]],"o":[[0,0],[0,0]],"v":[[17,-15],[-17,15]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[18,-22.25]],"o":[[0,0],[0,0]],"v":[[15.25,-19.5],[-17,15.25]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[21,-25]],"o":[[0,0],[0,0]],"v":[[17,-15],[-17,15]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[18,-22.25]],"o":[[0,0],[0,0]],"v":[[15.25,-19.5],[-17,15.25]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[21,-25]],"o":[[0,0],[0,0]],"v":[[17,-15],[-17,15]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[18,-22.25]],"o":[[0,0],[0,0]],"v":[[15.25,-19.5],[-17,15.25]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[21,-25]],"o":[[0,0],[0,0]],"v":[[17,-15],[-17,15]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[18,-22.25]],"o":[[0,0],[0,0]],"v":[[15.25,-19.5],[-17,15.25]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[21,-25]],"o":[[0,0],[0,0]],"v":[[17,-15],[-17,15]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[35.5,34.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[9,-14]],"o":[[0,0],[0,0]],"v":[[14.5,-14],[-14.5,14]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[9.5,-12.5]],"o":[[0,0],[0,0]],"v":[[13,-17],[-14.5,14]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[9,-14]],"o":[[0,0],[0,0]],"v":[[14.5,-14],[-14.5,14]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[9.5,-12.5]],"o":[[0,0],[0,0]],"v":[[13,-17],[-14.5,14]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[9,-14]],"o":[[0,0],[0,0]],"v":[[14.5,-14],[-14.5,14]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[9.5,-12.5]],"o":[[0,0],[0,0]],"v":[[13,-17],[-14.5,14]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[9,-14]],"o":[[0,0],[0,0]],"v":[[14.5,-14],[-14.5,14]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[9.5,-12.5]],"o":[[0,0],[0,0]],"v":[[13,-17],[-14.5,14]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[9,-14]],"o":[[0,0],[0,0]],"v":[[14.5,-14],[-14.5,14]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":7,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[32,31.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"leg Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[468,605.572,0],"to":[0,0.5,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[468,608.572,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[468,605.572,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[468,608.572,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[468,605.572,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[468,608.572,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[468,605.572,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[468,608.572,0],"to":[0,0,0],"ti":[0,0.5,0]},{"t":90,"s":[468,605.572,0]}],"ix":2,"l":2},"a":{"a":0,"k":[19,16.572,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.763,0],[0,0],[0,0.763],[0,0],[-0.762,0],[0,0],[0,-0.763],[0,0]],"o":[[0,0],[-0.762,0],[0,0],[0,-0.763],[0,0],[0.763,0],[0,0],[0,0.763]],"v":[[1.953,4],[-1.953,4],[-3.333,2.619],[-3.333,-2.619],[-1.953,-4],[1.953,-4],[3.333,-2.619],[3.333,2.619]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.407843167174,0.20000001496,0.196078446332,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[31.5,9],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[23.543,5.5],[23.543,11.849]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.023529411765,0.454901960784,0.788235294118,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.793,5.5],[9.793,11.849]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.023529411765,0.454901960784,0.788235294118,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.5,8.786],[33.567,8.786]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.160784313725,0.392156892664,0.647058823529,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-6.5,-6.5],[6.5,6.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.5,-5.875],[6.5,6.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-6.5,-6.5],[6.5,6.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.5,-5.875],[6.5,6.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-6.5,-6.5],[6.5,6.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.5,-5.875],[6.5,6.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-6.5,-6.5],[6.5,6.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.5,-5.875],[6.5,6.5]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-6.5,-6.5],[6.5,6.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":11,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[85,53],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[3,0],[0,3],[-3,0],[0,-3]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[2.812,3.375],[-1,5.625],[-3.188,3.375],[-0.125,1.188]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[3,0],[0,3],[-3,0],[0,-3]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[2.812,3.375],[-1,5.625],[-3.188,3.375],[-0.125,1.188]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[3,0],[0,3],[-3,0],[0,-3]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[2.812,3.375],[-1,5.625],[-3.188,3.375],[-0.125,1.188]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[3,0],[0,3],[-3,0],[0,-3]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[2.812,3.375],[-1,5.625],[-3.188,3.375],[-0.125,1.188]],"c":true}]},{"t":90,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[3,0],[0,3],[-3,0],[0,-3]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.937254961799,0.647058823529,0.352941176471,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[58,22],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,6.548],[0,0],[0,0]],"o":[[0,0],[-6.548,0],[0,0],[0,0],[0,0]],"v":[[14.75,12],[-2.893,12.5],[-14.75,0.643],[-14.75,-12.5],[14.25,-12.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023529411765,0.454901960784,0.788235294118,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[19.25,18],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-33,-17.072],[-0.429,-17.072],[33,17.072]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-33,-17.072],[-1.429,-14.447],[33,17.072]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-33,-17.072],[-0.429,-17.072],[33,17.072]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-33,-17.072],[-1.429,-14.447],[33,17.072]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-33,-17.072],[-0.429,-17.072],[33,17.072]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-33,-17.072],[-1.429,-14.447],[33,17.072]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-33,-17.072],[-0.429,-17.072],[33,17.072]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-33,-17.072],[-1.429,-14.447],[33,17.072]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-33,-17.072],[-0.429,-17.072],[33,17.072]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.023529411765,0.454901960784,0.788235294118,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[58,42.072],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"bodyy Outlines","parent":14,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[54.286,30.5,0],"to":[0,0.833,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[54.286,35.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[54.286,30.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[54.286,35.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[54.286,30.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[54.286,35.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[54.286,30.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[54.286,35.5,0],"to":[0,0,0],"ti":[0,0.833,0]},{"t":90,"s":[54.286,30.5,0]}],"ix":2,"l":2},"a":{"a":0,"k":[43.25,62.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.5,8],[-16.5,8],[-16.5,-8],[16.5,-8]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[17.75,108.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[24.064,0],[0,0],[0,0],[-24.656,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,-24.656],[0,0],[0,0],[0,24.064]],"v":[[-1,52],[-42,52],[-43,-8],[0.643,-52],[43,-52],[43,8]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[43.25,52.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[9.5,15],[-9.5,15],[-9.5,-15],[9.5,-15]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[34.75,110.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Layer 16 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[516.357,589.935,0],"to":[0,0.667,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[516.357,593.935,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[516.357,589.935,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[516.357,593.935,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[516.357,589.935,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[516.357,593.935,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[516.357,589.935,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[516.357,593.935,0],"to":[0,0,0],"ti":[0,0.667,0]},{"t":90,"s":[516.357,589.935,0]}],"ix":2,"l":2},"a":{"a":0,"k":[89.643,79.935,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,-2.603],[0,0],[0.027,-0.187],[-2.138,1.425],[-1,0],[0,0]],"o":[[0,0],[2.604,0],[0,0],[0,0.189],[-0.091,0.643],[3,-2],[1.414,0],[0,0]],"v":[[-5,-11.713],[-5,-11.713],[-0.286,-6.998],[-0.286,8.253],[-0.332,8.818],[2,10.287],[1,7.287],[0,10.287]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[169.286,20.713],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,-0.828],[0.828,0],[0,0.828],[-0.828,0]],"o":[[0,0.828],[-0.828,0],[0,-0.828],[0.828,0]],"v":[[1.5,0],[0,1.5],[-1.5,0],[0,-1.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,-0.828],[0.828,0],[0,0.828],[-0.828,0]],"o":[[0,0.828],[-0.828,0],[0,-0.828],[0.828,0]],"v":[[0.5,0.25],[-1,1.75],[-2.5,0.25],[-1,-1.25]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,-0.828],[0.828,0],[0,0.828],[-0.828,0]],"o":[[0,0.828],[-0.828,0],[0,-0.828],[0.828,0]],"v":[[1.5,0],[0,1.5],[-1.5,0],[0,-1.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,-0.828],[0.828,0],[0,0.828],[-0.828,0]],"o":[[0,0.828],[-0.828,0],[0,-0.828],[0.828,0]],"v":[[0.5,0.25],[-1,1.75],[-2.5,0.25],[-1,-1.25]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,-0.828],[0.828,0],[0,0.828],[-0.828,0]],"o":[[0,0.828],[-0.828,0],[0,-0.828],[0.828,0]],"v":[[1.5,0],[0,1.5],[-1.5,0],[0,-1.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,-0.828],[0.828,0],[0,0.828],[-0.828,0]],"o":[[0,0.828],[-0.828,0],[0,-0.828],[0.828,0]],"v":[[0.5,0.25],[-1,1.75],[-2.5,0.25],[-1,-1.25]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,-0.828],[0.828,0],[0,0.828],[-0.828,0]],"o":[[0,0.828],[-0.828,0],[0,-0.828],[0.828,0]],"v":[[1.5,0],[0,1.5],[-1.5,0],[0,-1.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,-0.828],[0.828,0],[0,0.828],[-0.828,0]],"o":[[0,0.828],[-0.828,0],[0,-0.828],[0.828,0]],"v":[[0.5,0.25],[-1,1.75],[-2.5,0.25],[-1,-1.25]],"c":true}]},{"t":90,"s":[{"i":[[0,-0.828],[0.828,0],[0,0.828],[-0.828,0]],"o":[[0,0.828],[-0.828,0],[0,-0.828],[0.828,0]],"v":[[1.5,0],[0,1.5],[-1.5,0],[0,-1.5]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[122.786,147.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,-1.381],[1.381,0],[0,1.381],[-1.381,0]],"o":[[0,1.381],[-1.381,0],[0,-1.381],[1.381,0]],"v":[[2.5,0],[0,2.5],[-2.5,0],[0,-2.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,-1.381],[1.381,0],[0,1.381],[-1.381,0]],"o":[[0,1.381],[-1.381,0],[0,-1.381],[1.381,0]],"v":[[1.5,0.25],[-1,2.75],[-3.5,0.25],[0,-2.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,-1.381],[1.381,0],[0,1.381],[-1.381,0]],"o":[[0,1.381],[-1.381,0],[0,-1.381],[1.381,0]],"v":[[2.5,0],[0,2.5],[-2.5,0],[0,-2.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,-1.381],[1.381,0],[0,1.381],[-1.381,0]],"o":[[0,1.381],[-1.381,0],[0,-1.381],[1.381,0]],"v":[[1.5,0.25],[-1,2.75],[-3.5,0.25],[0,-2.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,-1.381],[1.381,0],[0,1.381],[-1.381,0]],"o":[[0,1.381],[-1.381,0],[0,-1.381],[1.381,0]],"v":[[2.5,0],[0,2.5],[-2.5,0],[0,-2.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,-1.381],[1.381,0],[0,1.381],[-1.381,0]],"o":[[0,1.381],[-1.381,0],[0,-1.381],[1.381,0]],"v":[[1.5,0.25],[-1,2.75],[-3.5,0.25],[0,-2.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,-1.381],[1.381,0],[0,1.381],[-1.381,0]],"o":[[0,1.381],[-1.381,0],[0,-1.381],[1.381,0]],"v":[[2.5,0],[0,2.5],[-2.5,0],[0,-2.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,-1.381],[1.381,0],[0,1.381],[-1.381,0]],"o":[[0,1.381],[-1.381,0],[0,-1.381],[1.381,0]],"v":[[1.5,0.25],[-1,2.75],[-3.5,0.25],[0,-2.5]],"c":true}]},{"t":90,"s":[{"i":[[0,-1.381],[1.381,0],[0,1.381],[-1.381,0]],"o":[[0,1.381],[-1.381,0],[0,-1.381],[1.381,0]],"v":[[2.5,0],[0,2.5],[-2.5,0],[0,-2.5]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.478431402468,0.474509833841,0.474509833841,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[122.786,147.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.499],[0,0],[-0.498,0.658],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.499],[0,0],[0.498,-0.657]],"v":[[2.694,-3.733],[2.866,-3.602],[3.153,-1.509],[-0.602,3.444],[-2.694,3.732],[-2.867,3.602],[-3.155,1.509],[0.601,-3.444]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.499],[0,0],[-0.498,0.658],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.499],[0,0],[0.498,-0.657]],"v":[[3.694,-2.983],[3.866,-2.852],[4.153,-0.759],[0.398,4.194],[-1.694,4.482],[-1.867,4.352],[-2.155,2.259],[1.601,-2.694]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.499],[0,0],[-0.498,0.658],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.499],[0,0],[0.498,-0.657]],"v":[[2.694,-3.733],[2.866,-3.602],[3.153,-1.509],[-0.602,3.444],[-2.694,3.732],[-2.867,3.602],[-3.155,1.509],[0.601,-3.444]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.499],[0,0],[-0.498,0.658],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.499],[0,0],[0.498,-0.657]],"v":[[3.694,-2.983],[3.866,-2.852],[4.153,-0.759],[0.398,4.194],[-1.694,4.482],[-1.867,4.352],[-2.155,2.259],[1.601,-2.694]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.499],[0,0],[-0.498,0.658],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.499],[0,0],[0.498,-0.657]],"v":[[2.694,-3.733],[2.866,-3.602],[3.153,-1.509],[-0.602,3.444],[-2.694,3.732],[-2.867,3.602],[-3.155,1.509],[0.601,-3.444]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.499],[0,0],[-0.498,0.658],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.499],[0,0],[0.498,-0.657]],"v":[[3.694,-2.983],[3.866,-2.852],[4.153,-0.759],[0.398,4.194],[-1.694,4.482],[-1.867,4.352],[-2.155,2.259],[1.601,-2.694]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.499],[0,0],[-0.498,0.658],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.499],[0,0],[0.498,-0.657]],"v":[[2.694,-3.733],[2.866,-3.602],[3.153,-1.509],[-0.602,3.444],[-2.694,3.732],[-2.867,3.602],[-3.155,1.509],[0.601,-3.444]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.499],[0,0],[-0.498,0.658],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.499],[0,0],[0.498,-0.657]],"v":[[3.694,-2.983],[3.866,-2.852],[4.153,-0.759],[0.398,4.194],[-1.694,4.482],[-1.867,4.352],[-2.155,2.259],[1.601,-2.694]],"c":true}]},{"t":90,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.499],[0,0],[-0.498,0.658],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.499],[0,0],[0.498,-0.657]],"v":[[2.694,-3.733],[2.866,-3.602],[3.153,-1.509],[-0.602,3.444],[-2.694,3.732],[-2.867,3.602],[-3.155,1.509],[0.601,-3.444]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.478431402468,0.474509833841,0.474509833841,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[128.205,131.439],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.498],[0,0],[-0.498,0.657],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.498],[0,0],[0.498,-0.657]],"v":[[2.17,-2.873],[2.181,-2.865],[2.467,-0.773],[-0.077,2.585],[-2.171,2.873],[-2.181,2.865],[-2.468,0.773],[0.077,-2.585]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.498],[0,0],[-0.498,0.657],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.498],[0,0],[0.498,-0.657]],"v":[[1.17,-2.623],[1.181,-2.615],[1.467,-0.523],[-1.077,2.835],[-3.171,3.123],[-3.181,3.115],[-3.468,1.023],[-0.923,-2.335]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.498],[0,0],[-0.498,0.657],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.498],[0,0],[0.498,-0.657]],"v":[[2.17,-2.873],[2.181,-2.865],[2.467,-0.773],[-0.077,2.585],[-2.171,2.873],[-2.181,2.865],[-2.468,0.773],[0.077,-2.585]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.498],[0,0],[-0.498,0.657],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.498],[0,0],[0.498,-0.657]],"v":[[1.17,-2.623],[1.181,-2.615],[1.467,-0.523],[-1.077,2.835],[-3.171,3.123],[-3.181,3.115],[-3.468,1.023],[-0.923,-2.335]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.498],[0,0],[-0.498,0.657],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.498],[0,0],[0.498,-0.657]],"v":[[2.17,-2.873],[2.181,-2.865],[2.467,-0.773],[-0.077,2.585],[-2.171,2.873],[-2.181,2.865],[-2.468,0.773],[0.077,-2.585]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.498],[0,0],[-0.498,0.657],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.498],[0,0],[0.498,-0.657]],"v":[[1.17,-2.623],[1.181,-2.615],[1.467,-0.523],[-1.077,2.835],[-3.171,3.123],[-3.181,3.115],[-3.468,1.023],[-0.923,-2.335]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.498],[0,0],[-0.498,0.657],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.498],[0,0],[0.498,-0.657]],"v":[[2.17,-2.873],[2.181,-2.865],[2.467,-0.773],[-0.077,2.585],[-2.171,2.873],[-2.181,2.865],[-2.468,0.773],[0.077,-2.585]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.498],[0,0],[-0.498,0.657],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.498],[0,0],[0.498,-0.657]],"v":[[1.17,-2.623],[1.181,-2.615],[1.467,-0.523],[-1.077,2.835],[-3.171,3.123],[-3.181,3.115],[-3.468,1.023],[-0.923,-2.335]],"c":true}]},{"t":90,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.498],[0,0],[-0.498,0.657],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.498],[0,0],[0.498,-0.657]],"v":[[2.17,-2.873],[2.181,-2.865],[2.467,-0.773],[-0.077,2.585],[-2.171,2.873],[-2.181,2.865],[-2.468,0.773],[0.077,-2.585]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.478431402468,0.474509833841,0.474509833841,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[113.045,151.819],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0.961,-1.098],[0,0],[1.056,0.211],[0,0]],"o":[[0,0],[1.032,1.032],[0,0],[-0.709,0.81],[0,0],[0,0]],"v":[[5.874,-9.935],[8.039,-7.769],[8.165,-3.984],[-2.98,8.755],[-5.834,9.724],[-9.126,9.065]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[0,0],[0.961,-1.098],[0,0],[1.056,0.211],[0,0]],"o":[[0,0],[1.032,1.032],[0,0],[-0.709,0.81],[0,0],[0,0]],"v":[[6.874,-9.185],[9.039,-7.019],[8.165,-3.984],[-3.98,9.005],[-6.834,9.974],[-10.126,9.315]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[0,0],[0.961,-1.098],[0,0],[1.056,0.211],[0,0]],"o":[[0,0],[1.032,1.032],[0,0],[-0.709,0.81],[0,0],[0,0]],"v":[[5.874,-9.935],[8.039,-7.769],[8.165,-3.984],[-2.98,8.755],[-5.834,9.724],[-9.126,9.065]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[0,0],[0.961,-1.098],[0,0],[1.056,0.211],[0,0]],"o":[[0,0],[1.032,1.032],[0,0],[-0.709,0.81],[0,0],[0,0]],"v":[[6.874,-9.185],[9.039,-7.019],[8.165,-3.984],[-3.98,9.005],[-6.834,9.974],[-10.126,9.315]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[0,0],[0.961,-1.098],[0,0],[1.056,0.211],[0,0]],"o":[[0,0],[1.032,1.032],[0,0],[-0.709,0.81],[0,0],[0,0]],"v":[[5.874,-9.935],[8.039,-7.769],[8.165,-3.984],[-2.98,8.755],[-5.834,9.724],[-9.126,9.065]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[0,0],[0.961,-1.098],[0,0],[1.056,0.211],[0,0]],"o":[[0,0],[1.032,1.032],[0,0],[-0.709,0.81],[0,0],[0,0]],"v":[[6.874,-9.185],[9.039,-7.019],[8.165,-3.984],[-3.98,9.005],[-6.834,9.974],[-10.126,9.315]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[0,0],[0.961,-1.098],[0,0],[1.056,0.211],[0,0]],"o":[[0,0],[1.032,1.032],[0,0],[-0.709,0.81],[0,0],[0,0]],"v":[[5.874,-9.935],[8.039,-7.769],[8.165,-3.984],[-2.98,8.755],[-5.834,9.724],[-9.126,9.065]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[0,0],[0.961,-1.098],[0,0],[1.056,0.211],[0,0]],"o":[[0,0],[1.032,1.032],[0,0],[-0.709,0.81],[0,0],[0,0]],"v":[[6.874,-9.185],[9.039,-7.019],[8.165,-3.984],[-3.98,9.005],[-6.834,9.974],[-10.126,9.315]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[0,0],[0.961,-1.098],[0,0],[1.056,0.211],[0,0]],"o":[[0,0],[1.032,1.032],[0,0],[-0.709,0.81],[0,0],[0,0]],"v":[[5.874,-9.935],[8.039,-7.769],[8.165,-3.984],[-2.98,8.755],[-5.834,9.724],[-9.126,9.065]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.478431402468,0.474509833841,0.474509833841,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[122.912,142.435],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[14.75,0.5],[-15.75,-0.25]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.478431402468,0.474509833841,0.474509833841,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[108.536,146.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.985,-1.609],[-1.158,-1.89],[-1.865,0],[0,0],[-0.731,-1.402],[1.302,-1.871],[1.433,-0.004],[0,0]],"o":[[0,0],[-1.886,0],[-0.823,1.344],[0.974,1.591],[0,0],[1.581,0],[0.572,1.097],[-0.819,1.176],[0,0],[0,0]],"v":[[19.664,-9.375],[-4.149,-9.375],[-8.83,-6.851],[-8.959,-1.852],[-4.312,0.625],[36.059,0.625],[39.914,2.813],[39.32,7.278],[35.696,9.131],[-40.622,9.375]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.807843197093,0.807843197093,0.807843197093,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[50.622,129.375],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-23,-1],[-8,-12],[4,-20],[12,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-32.5,24.5],[-32.5,-3.357],[-6.5,-23.5],[23.5,-14.5],[28.5,16.5],[15.5,26.5],[-32.5,26.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.749019607843,0.047058823529,0.196078431373,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[110.786,87.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.523],[5.523,0],[0,5.523],[-5.523,0]],"o":[[0,5.523],[-5.523,0],[0,-5.523],[5.523,0]],"v":[[10,0],[0,10],[-10,0],[0,-10]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[88.286,136],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-7.18],[7.18,0],[0,7.18],[-7.18,0]],"o":[[0,7.18],[-7.18,0],[0,-7.18],[7.18,0]],"v":[[13,0],[0,13],[-13,0],[0,-13]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.478431402468,0.474509833841,0.474509833841,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[88.286,136],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[3,0],[0,3],[-3,0],[0,-3]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.807843197093,0.807843197093,0.807843197093,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[70.286,120],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[14.497,0],[0,0],[0,14.497],[0,0],[0,0],[0,0]],"o":[[0,0],[-14.497,0],[0,0],[0,0],[0,0],[0,14.497]],"v":[[9.75,18.234],[-9.75,18.234],[-36,-8.016],[-36,-18.234],[36,-18.234],[36,-8.016]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.749019607843,0.047058823529,0.196078431373,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[84.286,130.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.485],[2.485,0],[0,2.485],[-2.485,0]],"o":[[0,2.485],[-2.485,0],[0,-2.485],[2.485,0]],"v":[[4.5,0],[0,4.5],[-4.5,0],[0,-4.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[159.786,9.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-3.59],[3.59,0],[0,3.59],[-3.59,0]],"o":[[0,3.59],[-3.59,0],[0,-3.59],[3.59,0]],"v":[[6.5,0],[0,6.5],[-6.5,0],[0,-6.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.478431402468,0.474509833841,0.474509833841,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[159.786,9.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[8,-8.5],[-8,8.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.517647058824,0.517647058824,0.513725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.25,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[75.286,128.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":2,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[8,-8.5],[-8,8.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.517647058824,0.517647058824,0.513725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.25,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[73.286,126.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[8,-8.5],[-8,8.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.517647058824,0.517647058824,0.513725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.25,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[71.286,124.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":2,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[8,-8.5],[-8,8.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.517647058824,0.517647058824,0.513725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.25,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[69.286,122.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":2,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.331,-2.258],[0,0],[2.598,2.682],[0,0],[-3.57,3.458],[-3.458,-3.57],[0,0]],"o":[[0,0],[-2.682,2.598],[0,0],[-3.458,-3.57],[3.57,-3.459],[0,0],[2.257,2.331]],"v":[[13.239,9.328],[9.386,13.06],[-0.174,12.908],[-12.169,0.527],[-11.967,-12.199],[0.759,-11.997],[13.37,1.02]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.807843197093,0.807843197093,0.807843197093,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[78.273,131.349],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":2,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.195,2.266],[0,0],[0,0],[-3.396,-3.505],[0,0],[3.506,-3.396],[0,0]],"o":[[0,0],[0,0],[3.505,-3.396],[0,0],[3.396,3.505],[0,0],[-2.266,2.195]],"v":[[-8.186,13.355],[-16.736,4.531],[0.619,-12.283],[13.114,-12.084],[13.34,-11.851],[13.143,0.645],[-0.109,13.484]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.807843197093,0.807843197093,0.807843197093,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[96.409,131.486],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":2,"cix":2,"bm":0,"ix":21,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[1.427,-2.332],[1.75,-1.05]],"o":[[0,0],[0,2.734],[-0.899,1.467],[0,0]],"v":[[3,-34.5],[3,22.728],[0.909,30.513],[-3,34.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[156.786,47],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 22","np":2,"cix":2,"bm":0,"ix":22,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Layer 14 Outlines","parent":14,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":12,"s":[7]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":26,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":35,"s":[7]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":45,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":57,"s":[7]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":71,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":80,"s":[7]},{"t":90,"s":[0]}],"ix":10},"p":{"a":0,"k":[123.661,89.625,0],"ix":2,"l":2},"a":{"a":0,"k":[-0.375,13.875,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.105,0],[0,0],[0,1.105],[-1.105,0],[0,0],[0,-1.105]],"o":[[0,0],[-1.105,0],[0,-1.105],[0,0],[1.105,0],[0,1.105]],"v":[[3,2],[-3,2],[-5,0],[-3,-2],[3,-2],[5,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[22.25,2.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.105,0],[0,0],[0,1.105],[-1.105,0],[0,0],[0,-1.105]],"o":[[0,0],[-1.105,0],[0,-1.105],[0,0],[1.105,0],[0,1.105]],"v":[[3,2],[-3,2],[-5,0],[-3,-2],[3,-2],[5,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[23.25,25.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3,2],[-3,2],[-3,-2],[3,-2]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.478431402468,0.474509833841,0.474509833841,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[22.25,5.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3,2],[-3,2],[-3,-2],[3,-2]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.478431402468,0.474509833841,0.474509833841,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[23.25,22.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.866,0],[0,0],[0,3.866],[-3.866,0],[0,0],[0,-3.866]],"o":[[0,0],[-3.866,0],[0,-3.866],[0,0],[3.866,0],[0,3.866]],"v":[[11,7],[-11,7],[-18,0],[-11,-7],[11,-7],[18,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[18.25,13.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":"cap Outlines","parent":9,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[4.727,26.259,0],"ix":2,"l":2},"a":{"a":0,"k":[49.5,36.312,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[-15,5]],"o":[[0,0],[0,0]],"v":[[-8.5,-4.5],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":6,"s":[{"i":[[0,0],[-13.207,2.703]],"o":[[0,0],[0,0]],"v":[[-7.645,1.325],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[-11.414,0.406]],"o":[[0,0],[0,0]],"v":[[-6.791,7.149],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":19,"s":[{"i":[[0,0],[-13.207,2.703]],"o":[[0,0],[0,0]],"v":[[-7.645,1.325],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[-15,5]],"o":[[0,0],[0,0]],"v":[[-8.5,-4.5],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":31,"s":[{"i":[[0,0],[-13.207,2.703]],"o":[[0,0],[0,0]],"v":[[-7.645,1.325],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[-11.414,0.406]],"o":[[0,0],[0,0]],"v":[[-6.791,7.149],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":40,"s":[{"i":[[0,0],[-13.207,2.703]],"o":[[0,0],[0,0]],"v":[[-7.645,1.325],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[-15,5]],"o":[[0,0],[0,0]],"v":[[-8.5,-4.5],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":51,"s":[{"i":[[0,0],[-13.207,2.703]],"o":[[0,0],[0,0]],"v":[[-7.645,1.325],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[-11.414,0.406]],"o":[[0,0],[0,0]],"v":[[-6.791,7.149],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":64,"s":[{"i":[[0,0],[-13.207,2.703]],"o":[[0,0],[0,0]],"v":[[-7.645,1.325],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[-15,5]],"o":[[0,0],[0,0]],"v":[[-8.5,-4.5],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":76,"s":[{"i":[[0,0],[-13.207,2.703]],"o":[[0,0],[0,0]],"v":[[-7.645,1.325],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[-11.414,0.406]],"o":[[0,0],[0,0]],"v":[[-6.791,7.149],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":85,"s":[{"i":[[0,0],[-13.207,2.703]],"o":[[0,0],[0,0]],"v":[[-7.645,1.325],[8.5,-0.5]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[-15,5]],"o":[[0,0],[0,0]],"v":[[-8.5,-4.5],[8.5,-0.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.603921568627,0.03137254902,0.152941176471,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":13,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[41,37],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":"back wheel","parent":14,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[38.411,134.375,0],"ix":2,"l":2},"a":{"a":0,"k":[75.125,49.375,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.215,-2.965],[4.215,3.035],[-1.357,3.035],[-1.357,5.965],[-4.215,5.965],[-4.215,-5.965],[-1.785,-5.965],[-1.785,-2.965]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-0.035,-2.954],[-0.035,3.046],[-5.607,3.046],[-5.607,5.975],[-8.465,5.975],[-8.465,-5.954],[-6.035,-5.954],[-6.035,-2.954]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.215,-2.965],[4.215,3.035],[-1.357,3.035],[-1.357,5.965],[-4.215,5.965],[-4.215,-5.965],[-1.785,-5.965],[-1.785,-2.965]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-0.035,-2.954],[-0.035,3.046],[-5.607,3.046],[-5.607,5.975],[-8.465,5.975],[-8.465,-5.954],[-6.035,-5.954],[-6.035,-2.954]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.215,-2.965],[4.215,3.035],[-1.357,3.035],[-1.357,5.965],[-4.215,5.965],[-4.215,-5.965],[-1.785,-5.965],[-1.785,-2.965]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-0.035,-2.954],[-0.035,3.046],[-5.607,3.046],[-5.607,5.975],[-8.465,5.975],[-8.465,-5.954],[-6.035,-5.954],[-6.035,-2.954]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.215,-2.965],[4.215,3.035],[-1.357,3.035],[-1.357,5.965],[-4.215,5.965],[-4.215,-5.965],[-1.785,-5.965],[-1.785,-2.965]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-0.035,-2.954],[-0.035,3.046],[-5.607,3.046],[-5.607,5.975],[-8.465,5.975],[-8.465,-5.954],[-6.035,-5.954],[-6.035,-2.954]],"c":true}]},{"t":90,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.215,-2.965],[4.215,3.035],[-1.357,3.035],[-1.357,5.965],[-4.215,5.965],[-4.215,-5.965],[-1.785,-5.965],[-1.785,-2.965]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.807843197093,0.807843197093,0.807843197093,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[43.785,53.965],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.107,-0.25],[-4.107,0.25]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.518,-3],[-13.357,-3.875]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.107,-0.25],[-4.107,0.25]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.518,-3],[-13.357,-3.875]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.107,-0.25],[-4.107,0.25]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.518,-3],[-13.357,-3.875]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.107,-0.25],[-4.107,0.25]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.518,-3],[-13.357,-3.875]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.107,-0.25],[-4.107,0.25]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.749019607843,0.047058823529,0.196078431373,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[21.393,53.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[-12.777,7.78],[-6.768,-3.512],[-1.506,-11.045]],"o":[[0,0],[6.513,-3.965],[5.519,2.864],[0,0]],"v":[[-20.361,12.482],[-11.361,-8.518],[11.196,-8.552],[24.139,10.982]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[-12.875,4.5],[-6.768,-3.512],[-1.506,-11.045]],"o":[[0,0],[7.198,-2.516],[5.519,2.864],[0,0]],"v":[[-28.986,9.732],[-11.611,-9.893],[10.446,-7.802],[21.514,11.357]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[-12.777,7.78],[-6.768,-3.512],[-1.506,-11.045]],"o":[[0,0],[6.513,-3.965],[5.519,2.864],[0,0]],"v":[[-20.361,12.482],[-11.361,-8.518],[11.196,-8.552],[24.139,10.982]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[-12.875,4.5],[-6.768,-3.512],[-1.506,-11.045]],"o":[[0,0],[7.198,-2.516],[5.519,2.864],[0,0]],"v":[[-28.986,9.732],[-11.611,-9.893],[10.446,-7.802],[21.514,11.357]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[-12.777,7.78],[-6.768,-3.512],[-1.506,-11.045]],"o":[[0,0],[6.513,-3.965],[5.519,2.864],[0,0]],"v":[[-20.361,12.482],[-11.361,-8.518],[11.196,-8.552],[24.139,10.982]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[-12.875,4.5],[-6.768,-3.512],[-1.506,-11.045]],"o":[[0,0],[7.198,-2.516],[5.519,2.864],[0,0]],"v":[[-28.986,9.732],[-11.611,-9.893],[10.446,-7.802],[21.514,11.357]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[-12.777,7.78],[-6.768,-3.512],[-1.506,-11.045]],"o":[[0,0],[6.513,-3.965],[5.519,2.864],[0,0]],"v":[[-20.361,12.482],[-11.361,-8.518],[11.196,-8.552],[24.139,10.982]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[-12.875,4.5],[-6.768,-3.512],[-1.506,-11.045]],"o":[[0,0],[7.198,-2.516],[5.519,2.864],[0,0]],"v":[[-28.986,9.732],[-11.611,-9.893],[10.446,-7.802],[21.514,11.357]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[-12.777,7.78],[-6.768,-3.512],[-1.506,-11.045]],"o":[[0,0],[6.513,-3.965],[5.519,2.864],[0,0]],"v":[[-20.361,12.482],[-11.361,-8.518],[11.196,-8.552],[24.139,10.982]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.603921568627,0.033156477236,0.154324490416,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[50.361,40.518],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[3,0],[0,3],[-3,0],[0,-3]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[-1.25,0.01],[-4.25,3.01],[-7.25,0.01],[-4.25,-2.99]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[3,0],[0,3],[-3,0],[0,-3]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[-1.25,0.01],[-4.25,3.01],[-7.25,0.01],[-4.25,-2.99]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[3,0],[0,3],[-3,0],[0,-3]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[-1.25,0.01],[-4.25,3.01],[-7.25,0.01],[-4.25,-2.99]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[3,0],[0,3],[-3,0],[0,-3]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[-1.25,0.01],[-4.25,3.01],[-7.25,0.01],[-4.25,-2.99]],"c":true}]},{"t":90,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[3,0],[0,3],[-3,0],[0,-3]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.749019607843,0.047058823529,0.196078431373,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[52,51],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,-2.761],[2.761,0],[0,2.761],[-2.761,0]],"o":[[0,2.761],[-2.761,0],[0,-2.761],[2.761,0]],"v":[[5,0],[0,5],[-5,0],[0,-5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,-2.761],[2.761,0],[0,2.761],[-2.761,0]],"o":[[0,2.761],[-2.761,0],[0,-2.761],[2.761,0]],"v":[[0.75,0.01],[-4.25,5.01],[-9.25,0.01],[-4.25,-4.99]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,-2.761],[2.761,0],[0,2.761],[-2.761,0]],"o":[[0,2.761],[-2.761,0],[0,-2.761],[2.761,0]],"v":[[5,0],[0,5],[-5,0],[0,-5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,-2.761],[2.761,0],[0,2.761],[-2.761,0]],"o":[[0,2.761],[-2.761,0],[0,-2.761],[2.761,0]],"v":[[0.75,0.01],[-4.25,5.01],[-9.25,0.01],[-4.25,-4.99]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,-2.761],[2.761,0],[0,2.761],[-2.761,0]],"o":[[0,2.761],[-2.761,0],[0,-2.761],[2.761,0]],"v":[[5,0],[0,5],[-5,0],[0,-5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,-2.761],[2.761,0],[0,2.761],[-2.761,0]],"o":[[0,2.761],[-2.761,0],[0,-2.761],[2.761,0]],"v":[[0.75,0.01],[-4.25,5.01],[-9.25,0.01],[-4.25,-4.99]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,-2.761],[2.761,0],[0,2.761],[-2.761,0]],"o":[[0,2.761],[-2.761,0],[0,-2.761],[2.761,0]],"v":[[5,0],[0,5],[-5,0],[0,-5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,-2.761],[2.761,0],[0,2.761],[-2.761,0]],"o":[[0,2.761],[-2.761,0],[0,-2.761],[2.761,0]],"v":[[0.75,0.01],[-4.25,5.01],[-9.25,0.01],[-4.25,-4.99]],"c":true}]},{"t":90,"s":[{"i":[[0,-2.761],[2.761,0],[0,2.761],[-2.761,0]],"o":[[0,2.761],[-2.761,0],[0,-2.761],[2.761,0]],"v":[[5,0],[0,5],[-5,0],[0,-5]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[52,51],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[15.061,0.24],[-15.061,-0.24]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[15.061,0.24],[-19.311,-0.23]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[15.061,0.24],[-15.061,-0.24]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[15.061,0.24],[-19.311,-0.23]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[15.061,0.24],[-15.061,-0.24]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[15.061,0.24],[-19.311,-0.23]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[15.061,0.24],[-15.061,-0.24]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[15.061,0.24],[-19.311,-0.23]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[15.061,0.24],[-15.061,-0.24]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.749019607843,0.047058823529,0.196078431373,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[68.061,50.74],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.209],[2.209,0],[0,2.209],[-2.209,0]],"o":[[0,2.209],[-2.209,0],[0,-2.209],[2.209,0]],"v":[[4,0],[0,4],[-4,0],[0,-4]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.749019607843,0.047058823529,0.196078431373,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[88,50],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-3.314],[3.314,0],[0,3.314],[-3.314,0]],"o":[[0,3.314],[-3.314,0],[0,-3.314],[3.314,0]],"v":[[6,0],[0,6],[-6,0],[0,-6]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[88,50],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.682,-0.029],[0,0],[-3.93,-0.087],[0,0],[0,2.806],[2.773,-0.014],[0,0],[0,1.374],[0.833,0],[0,0]],"o":[[0,0],[0,0.682],[0,0],[0,3.93],[0,0],[2.806,0.062],[0,-2.773],[0,0],[-1.374,0.007],[0,-0.833],[0,0],[0,0]],"v":[[-23.5,-5.975],[-23.5,-2.408],[-22.281,-1.136],[-18.5,-0.975],[-11.43,6.254],[18.386,6.913],[23.5,1.911],[18.472,-3.092],[-3.009,-2.986],[-5.5,-5.465],[-7.009,-6.975],[-23.5,-6.975]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.407843167174,0.164705882353,0.149019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[75.5,19.975],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.105],[1.105,0],[0,1.105],[-1.105,0]],"o":[[0,1.105],[-1.105,0],[0,-1.105],[1.105,0]],"v":[[2,0],[0,2],[-2,0],[0,-2]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.294117647059,0.290196078431,0.286274509804,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[74,29],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.105],[1.105,0],[0,1.105],[-1.105,0]],"o":[[0,1.105],[-1.105,0],[0,-1.105],[1.105,0]],"v":[[2,0],[0,2],[-2,0],[0,-2]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.294117647059,0.290196078431,0.286274509804,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[89,29],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.969,0],[0,0],[0,2.969],[0,0],[0,0],[0,0]],"o":[[0,0],[-2.969,0],[0,0],[0,0],[0,0],[0,2.969]],"v":[[6.625,4.5],[-6.625,4.5],[-12,-0.875],[-12,-4.5],[12,-4.5],[12,-0.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.749019607843,0.047058823529,0.196078431373,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[81,28.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[10.072,-10],[-14.322,10.01]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.749019607843,0.047058823529,0.196078431373,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[62.928,40],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[-1,-32],[-30,2],[0,0]],"v":[[29.5,15],[0.5,-14],[-25.5,17]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[-1,-32],[-31.125,-1.25],[0,0]],"v":[[26.875,15.375],[-1.375,-13.375],[-34.125,14.25]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[-1,-32],[-30,2],[0,0]],"v":[[29.5,15],[0.5,-14],[-25.5,17]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[-1,-32],[-31.125,-1.25],[0,0]],"v":[[26.875,15.375],[-1.375,-13.375],[-34.125,14.25]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[-1,-32],[-30,2],[0,0]],"v":[[29.5,15],[0.5,-14],[-25.5,17]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[-1,-32],[-31.125,-1.25],[0,0]],"v":[[26.875,15.375],[-1.375,-13.375],[-34.125,14.25]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[-1,-32],[-30,2],[0,0]],"v":[[29.5,15],[0.5,-14],[-25.5,17]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[-1,-32],[-31.125,-1.25],[0,0]],"v":[[26.875,15.375],[-1.375,-13.375],[-34.125,14.25]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[-1,-32],[-30,2],[0,0]],"v":[[29.5,15],[0.5,-14],[-25.5,17]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.749019607843,0.047058827269,0.196078446332,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[49.5,37],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":"tyre","parent":17,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":90,"s":[1440]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[51.5,53.75,0],"to":[-0.833,-0.542,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[46.5,50.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[51.5,53.75,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[46.5,50.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[51.5,53.75,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[46.5,50.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[51.5,53.75,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[46.5,50.5,0],"to":[0,0,0],"ti":[-0.833,-0.542,0]},{"t":90,"s":[51.5,53.75,0]}],"ix":2,"l":2},"a":{"a":0,"k":[38,38,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-9.941],[9.941,0],[-23.87,0.945]],"o":[[0,9.941],[-23.877,-0.948],[9.941,0]],"v":[[20.939,0],[2.939,18],[2.939,-18]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.75,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"d":[{"n":"d","nm":"dash","v":{"a":0,"k":28.267,"ix":1}},{"n":"g","nm":"gap","v":{"a":0,"k":28.267,"ix":2}},{"n":"o","nm":"offset","v":{"a":0,"k":0,"ix":7}}],"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[35.061,38],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-9.941],[9.941,0],[0,9.941],[-9.941,0]],"o":[[0,9.941],[-9.941,0],[0,-9.941],[9.941,0]],"v":[[18,0],[0,18],[-18,0],[0,-18]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[38,38],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-8.008],[8.008,0],[0,8.008],[-8.008,0]],"o":[[0,8.008],[-8.008,0],[0,-8.008],[8.008,0]],"v":[[14.5,0],[0,14.5],[-14.5,0],[0,-14.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[38,38],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"bike","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[540,540,0],"ix":2,"l":2},"a":{"a":0,"k":[540,540,0],"ix":1,"l":2},"s":{"a":0,"k":[270,270,100],"ix":6,"l":2}},"ao":0,"w":1080,"h":1080,"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 19","sr":1,"ks":{"o":{"a":0,"k":50,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[521.66,905.755,0],"ix":2,"l":2},"a":{"a":0,"k":[-18.34,364.755,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[93,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":12,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":26,"s":[93,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":35,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":45,"s":[93,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":57,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":71,"s":[93,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":80,"s":[100,100,100]},{"t":90,"s":[93,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-370.868,364.755],[334.189,364.755]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":30,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Null 2","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60,"s":[540,540,0],"to":[-325.833,0,0],"ti":[325.833,0,0]},{"t":90,"s":[-1415,540,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":60,"op":90,"st":60,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 18","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[800.642,-246.717,0],"ix":2,"l":2},"a":{"a":0,"k":[-181.358,177.283,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-110.038,177.283],[-252.679,177.283]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":90,"st":60,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Shape Layer 17","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1263.208,-248.755,0],"ix":2,"l":2},"a":{"a":0,"k":[281.208,175.245,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[362.717,175.245],[199.698,175.245]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":90,"st":60,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Shape Layer 16","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[692.641,-73.698,0],"ix":2,"l":2},"a":{"a":0,"k":[-289.359,340.302,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-165.057,340.302],[-413.66,340.302]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":90,"st":60,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Shape Layer 15","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[753.774,-10.34,0],"ix":2,"l":2},"a":{"a":0,"k":[-228.226,413.66,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-160.981,413.66],[-295.472,413.66]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":90,"st":60,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Shape Layer 14","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1093.057,-12.377,0],"ix":2,"l":2},"a":{"a":0,"k":[111.057,411.623,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[179.321,411.623],[42.792,411.623]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":90,"st":60,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Shape Layer 13","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1337.585,-84.849,0],"ix":2,"l":2},"a":{"a":0,"k":[355.585,332.151,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[419.774,332.151],[291.396,332.151]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":90,"st":60,"bm":0},{"ddd":0,"ind":10,"ty":3,"nm":"Null 2","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":30,"s":[540,540,0],"to":[-325.833,0,0],"ti":[325.833,0,0]},{"t":60,"s":[-1415,540,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":30,"op":60,"st":30,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Shape Layer 12","parent":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[800.642,-246.717,0],"ix":2,"l":2},"a":{"a":0,"k":[-181.358,177.283,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-110.038,177.283],[-252.679,177.283]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":60,"st":30,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Shape Layer 11","parent":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1263.208,-248.755,0],"ix":2,"l":2},"a":{"a":0,"k":[281.208,175.245,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[362.717,175.245],[199.698,175.245]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":60,"st":30,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Shape Layer 10","parent":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[690.604,89.321,0],"ix":2,"l":2},"a":{"a":0,"k":[-289.359,340.302,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-165.057,340.302],[-413.66,340.302]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":60,"st":30,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Shape Layer 9","parent":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[729.321,-110.189,0],"ix":2,"l":2},"a":{"a":0,"k":[-228.226,413.66,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-160.981,413.66],[-295.472,413.66]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":60,"st":30,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Shape Layer 8","parent":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1093.057,-12.377,0],"ix":2,"l":2},"a":{"a":0,"k":[111.057,411.623,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[179.321,411.623],[42.792,411.623]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":60,"st":30,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":"Shape Layer 7","parent":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1337.585,88.358,0],"ix":2,"l":2},"a":{"a":0,"k":[355.585,332.151,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[419.774,332.151],[291.396,332.151]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":60,"st":30,"bm":0},{"ddd":0,"ind":17,"ty":3,"nm":"Null 2","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[540,540,0],"to":[-325.833,0,0],"ti":[325.833,0,0]},{"t":30,"s":[-1415,540,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":30,"st":0,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":"Shape Layer 6","parent":17,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[800.642,-246.717,0],"ix":2,"l":2},"a":{"a":0,"k":[-181.358,177.283,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-110.038,177.283],[-252.679,177.283]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":30,"st":0,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":"Shape Layer 5","parent":17,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1263.208,-248.755,0],"ix":2,"l":2},"a":{"a":0,"k":[281.208,175.245,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[362.717,175.245],[199.698,175.245]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":30,"st":0,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":"Shape Layer 4","parent":17,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[692.641,-73.698,0],"ix":2,"l":2},"a":{"a":0,"k":[-289.359,340.302,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-165.057,340.302],[-413.66,340.302]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":30,"st":0,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":"Shape Layer 3","parent":17,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[753.774,-10.34,0],"ix":2,"l":2},"a":{"a":0,"k":[-228.226,413.66,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-160.981,413.66],[-295.472,413.66]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":30,"st":0,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":"Shape Layer 2","parent":17,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1093.057,-12.377,0],"ix":2,"l":2},"a":{"a":0,"k":[111.057,411.623,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[179.321,411.623],[42.792,411.623]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":30,"st":0,"bm":0},{"ddd":0,"ind":23,"ty":4,"nm":"Shape Layer 1","parent":17,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1337.585,-84.849,0],"ix":2,"l":2},"a":{"a":0,"k":[355.585,332.151,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[419.774,332.151],[291.396,332.151]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":30,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..f8c6127 --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,10 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..8afb8a4 --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,51 @@ + + Dhizuku + 主页 + 配置 + 设置 + + 已获得设备所有者权限 + 未完全激活,已获得设备管理员 + 未激活 + + 设备拥有者(DeviceOwner)权限高于设备管理员(DeviceAdmin),一次激活永久有效,除非您主动取消激活。\n\n请谨慎授权给其余应用,设备管理员可通过代码修改诸多系统设置,比如:设置锁屏密码,恢复出厂设置,禁用软硬件功能等。 + + 激活 + 取消 + 确认 + 完成 + + 电脑激活 +
* 借助 adb 来设置设备所有者(连接电脑),前往Android 调试桥 (ADB)了解更多与 adb 相关的信息。]]>
+ + Shizuku 激活 + 请先检查 Shizuku 是否安装、激活,并同意软件获取 Shizuku 权限。 + + 执行结束,请检查是否激活。 + + 取消激活 + 取消激活成功 + 取消激活失败 + + 强行停止 + 当设备所有者激活成功后,系统没有权限强行停止设备所有者应用运行,但是更新应用需要先将应用停止,所以你需要先将 Dhizuku 强行停止,再更新 Dhizuku。 + + @string/dhizuku_permission_group_label + Dhizuku 权限 + + 允许应用使用 Dhizuku。 + @string/dhizuku_permission_group_label + + 复制 + 复制成功 + + 捐赠 + 支付宝 + 微信 + 币安 + + Dhizuku 授权 + 【%1$s】正在申请使用 Dhizuku 权限。\n如无法决定是否授权,请拒绝! + 同意 + 拒绝 +
\ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..7bc180f --- /dev/null +++ b/app/src/main/res/values/themes.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/device_admin.xml b/app/src/main/res/xml/device_admin.xml new file mode 100644 index 0000000..ff9e267 --- /dev/null +++ b/app/src/main/res/xml/device_admin.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/test/java/com/rosan/dhizuku/ExampleUnitTest.kt b/app/src/test/java/com/rosan/dhizuku/ExampleUnitTest.kt new file mode 100644 index 0000000..d79abd3 --- /dev/null +++ b/app/src/test/java/com/rosan/dhizuku/ExampleUnitTest.kt @@ -0,0 +1,17 @@ +package com.rosan.dhizuku + +import org.junit.Test + +import org.junit.Assert.* + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..7ba5fc8 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,18 @@ +buildscript { + dependencies { + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0") + } +} +// Top-level build file where you can add configuration options common to all sub-projects/modules. +@Suppress("DSL_SCOPE_VIOLATION") +plugins { + alias(libs.plugins.agp.lib) apply false + alias(libs.plugins.agp.app) apply false + alias(libs.plugins.kotlin) apply false + alias(libs.plugins.kotlin.jvm) apply false +} + + +tasks.register("Delete", Delete::class) { + delete(rootProject.buildDir) +} \ No newline at end of file diff --git a/dhizuku-aidl/.gitignore b/dhizuku-aidl/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/dhizuku-aidl/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/dhizuku-aidl/build.gradle b/dhizuku-aidl/build.gradle new file mode 100644 index 0000000..810f756 --- /dev/null +++ b/dhizuku-aidl/build.gradle @@ -0,0 +1,24 @@ +plugins { + id('com.android.library') +} + +android { + compileSdkVersion 33 + + defaultConfig { + minSdkVersion 19 + targetSdkVersion 33 + } + + buildFeatures { + buildConfig false + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } +} + +dependencies { +} \ No newline at end of file diff --git a/dhizuku-aidl/src/main/AndroidManifest.xml b/dhizuku-aidl/src/main/AndroidManifest.xml new file mode 100644 index 0000000..e23d42e --- /dev/null +++ b/dhizuku-aidl/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/dhizuku-aidl/src/main/aidl/com/rosan/dhizuku/aidl/IDhizuku.aidl b/dhizuku-aidl/src/main/aidl/com/rosan/dhizuku/aidl/IDhizuku.aidl new file mode 100644 index 0000000..2410066 --- /dev/null +++ b/dhizuku-aidl/src/main/aidl/com/rosan/dhizuku/aidl/IDhizuku.aidl @@ -0,0 +1,18 @@ +package com.rosan.dhizuku.aidl; + +import android.os.IBinder; +import android.os.Parcel; +import com.rosan.dhizuku.aidl.IDhizukuRemoteProcess; +import com.rosan.dhizuku.aidl.IDhizukuRequestPermissionListener; + +interface IDhizuku { + int getVersionCode() = 0; + + String getVersionName() = 1; + + boolean isPermissionGranted() = 2; + + // remote binder transact: 10 + + IDhizukuRemoteProcess remoteProcess(in String[] cmd, in String[] env, in String dir) = 11; +} \ No newline at end of file diff --git a/dhizuku-aidl/src/main/aidl/com/rosan/dhizuku/aidl/IDhizukuRemoteProcess.aidl b/dhizuku-aidl/src/main/aidl/com/rosan/dhizuku/aidl/IDhizukuRemoteProcess.aidl new file mode 100644 index 0000000..80d771a --- /dev/null +++ b/dhizuku-aidl/src/main/aidl/com/rosan/dhizuku/aidl/IDhizukuRemoteProcess.aidl @@ -0,0 +1,19 @@ +package com.rosan.dhizuku.aidl; + +interface IDhizukuRemoteProcess { + ParcelFileDescriptor getOutputStream(); + + ParcelFileDescriptor getInputStream(); + + ParcelFileDescriptor getErrorStream(); + + int exitValue(); + + void destroy(); + + boolean alive(); + + int waitFor(); + + boolean waitForTimeout(long timeout, String unit); +} \ No newline at end of file diff --git a/dhizuku-aidl/src/main/aidl/com/rosan/dhizuku/aidl/IDhizukuRequestPermissionListener.aidl b/dhizuku-aidl/src/main/aidl/com/rosan/dhizuku/aidl/IDhizukuRequestPermissionListener.aidl new file mode 100644 index 0000000..c846747 --- /dev/null +++ b/dhizuku-aidl/src/main/aidl/com/rosan/dhizuku/aidl/IDhizukuRequestPermissionListener.aidl @@ -0,0 +1,5 @@ +package com.rosan.dhizuku.aidl; + +interface IDhizukuRequestPermissionListener { + oneway void onRequestPermission(int grantResult); +} \ No newline at end of file diff --git a/dhizuku-shared/.gitignore b/dhizuku-shared/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/dhizuku-shared/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/dhizuku-shared/build.gradle b/dhizuku-shared/build.gradle new file mode 100644 index 0000000..3faafd6 --- /dev/null +++ b/dhizuku-shared/build.gradle @@ -0,0 +1,25 @@ +plugins { + id('com.android.library') +} + +android { + compileSdkVersion 33 + + defaultConfig { + minSdkVersion 19 + targetSdkVersion 33 + } + + buildFeatures { + buildConfig false + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } +} + +dependencies { + implementation(project(":dhizuku-aidl")) +} \ No newline at end of file diff --git a/dhizuku-shared/src/main/AndroidManifest.xml b/dhizuku-shared/src/main/AndroidManifest.xml new file mode 100644 index 0000000..a9e3e5c --- /dev/null +++ b/dhizuku-shared/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/dhizuku-shared/src/main/java/com/rosan/dhizuku/shared/DhizukuVariables.java b/dhizuku-shared/src/main/java/com/rosan/dhizuku/shared/DhizukuVariables.java new file mode 100644 index 0000000..928be5a --- /dev/null +++ b/dhizuku-shared/src/main/java/com/rosan/dhizuku/shared/DhizukuVariables.java @@ -0,0 +1,23 @@ +package com.rosan.dhizuku.shared; + +import android.os.Binder; + +public class DhizukuVariables { + public static final String PACKAGE_NAME = "com.rosan.dhizuku"; + + public static final String ACTION_REQUEST_PERMISSION = PACKAGE_NAME + ".action.request.permission"; + + public static final String BINDER_DESCRIPTOR = PACKAGE_NAME + ".server"; + + public static final String PROVIDER_AUTHORITY = PACKAGE_NAME + ".server.provider"; + + public static final String PROVIDER_METHOD_CLIENT = "client"; + + public static final String PARAM_DHIZUKU_BINDER = "dhizuku_binder"; + + public static final String PARAM_CLIENT_UID = "uid"; + + public static final String PARAM_CLIENT_REQUEST_PERMISSION_BINDER = "request_permission_binder"; + + public static final int TRANSACT_CODE_REMOTE_BINDER = Binder.FIRST_CALL_TRANSACTION + 10; +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..4daab8c --- /dev/null +++ b/gradle.properties @@ -0,0 +1,25 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx8192m -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app"s APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +android.enableJetifier = true +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official +# Enables namespacing of each library's R class so that its R class includes only the +# resources declared in the library itself and none from the library's dependencies, +# thereby reducing the size of the R class for that library +android.nonTransitiveRClass=true +android.injected.testOnly=false diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000..9ac0631 --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,63 @@ +# Google Maven +# https://maven.google.com/web/index.html?hl=zh-cn + +# Gradle Plugins +# https://plugins.gradle.org/ + +# Maven +# https://mvnrepository.com/ + +[versions] +agp = "7.4.2" +kotlin = "1.8.10" +compose = "1.4.0" +room = "2.5.1" +accompanist = "0.30.0" +rikka-shizuku = "13.1.0" + +[plugins] +agp-lib = { id = "com.android.library", version.ref = "agp" } +agp-app = { id = "com.android.application", version.ref = "agp" } +kotlin = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } +kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } + +[libraries] +androidx-core = { group = "androidx.core", name = "core-ktx", version = "1.9.0" } +androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version = "1.7.0" } +androidx-lifecycle = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version = "2.6.1" } +compose-ui = { group = "androidx.compose.ui", name = "ui", version.ref = "compose" } +compose-material = { group = "androidx.compose.material", name = "material", version.ref = "compose" } +compose-material3 = { group = "androidx.compose.material3", name = "material3", version = "1.0.1" } +compose-uiToolingPreview = { group = "androidx.compose.ui", name = "ui-tooling-preview", version.ref = "compose" } + +compose-navigation = { group = "androidx.navigation", name = "navigation-compose", version = "2.5.3" } +compose-materialIcons = { group = "androidx.compose.material", name = "material-icons-extended", version = "1.4.0" } + +room-runtime = { group = "androidx.room", name = "room-runtime", version.ref = "room" } +room-compiler = { group = "androidx.room", name = "room-compiler", version.ref = "room" } +room-ktx = { group = "androidx.room", name = "room-ktx", version.ref = "room" } + +# Koin Inject +# https://insert-koin.io/docs/setup/koin +koin-core = { group = "io.insert-koin", name = "koin-core", version = "3.4.0" } +koin-android = { group = "io.insert-koin", name = "koin-android", version = "3.4.0" } +koin-compose = { group = "io.insert-koin", name = "koin-androidx-compose", version = "3.4.3" } + +# Pager layouts +# https://google.github.io/accompanist/pager/ +accompanist = { group = "com.google.accompanist", name = "accompanist-pager", version.ref = "accompanist" } +accompanist-navigationAnimation = { group = "com.google.accompanist", name = "accompanist-navigation-animation", version.ref = "accompanist" } +accompanist-flowlayout = { group = "com.google.accompanist", name = "accompanist-flowlayout", version.ref = "accompanist" } +accompanist-drawablepainter = { group = "com.google.accompanist", name = "accompanist-drawablepainter", version.ref = "accompanist" } +accompanist-systemuicontroller = { group = "com.google.accompanist", name = "accompanist-systemuicontroller", version.ref = "accompanist" } + +# XXPermissions +# https://github.com/getActivity/XXPermissions +xxpermissions = { group = "com.github.getActivity", name = "XXPermissions", version = "16.6" } + +# Shizuku +# https://github.com/getActivity/XXPermissions +# Rikka Shizuku +# https://github.com/RikkaApps/Shizuku-API +rikka-shizuku-api = { group = "dev.rikka.shizuku", name = "api", version.ref = "rikka-shizuku" } +rikka-shizuku-provider = { group = "dev.rikka.shizuku", name = "provider", version.ref = "rikka-shizuku" } \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..e69de29 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..2871aa8 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Tue Dec 13 22:04:53 CST 2022 +distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..4f906e0 --- /dev/null +++ b/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..107acd3 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/lib/.gitignore b/lib/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/lib/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/lib/build.gradle.kts b/lib/build.gradle.kts new file mode 100644 index 0000000..0d31ad5 --- /dev/null +++ b/lib/build.gradle.kts @@ -0,0 +1,9 @@ +plugins { + id("java-library") + id("org.jetbrains.kotlin.jvm") +} + +java { + sourceCompatibility = JavaVersion.VERSION_1_7 + targetCompatibility = JavaVersion.VERSION_1_7 +} \ No newline at end of file diff --git a/lib/src/main/java/com/rosan/lib/MyClass.kt b/lib/src/main/java/com/rosan/lib/MyClass.kt new file mode 100644 index 0000000..44c211d --- /dev/null +++ b/lib/src/main/java/com/rosan/lib/MyClass.kt @@ -0,0 +1,4 @@ +package com.rosan.lib + +class MyClass { +} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..e429cf2 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,28 @@ +pluginManagement { + repositories { +// maven { setUrl("https://maven.aliyun.com/repository/public/") } +// maven { setUrl("https://jitpack.io") } + gradlePluginPortal() + google() + mavenCentral() + maven { setUrl("https://maven.scijava.org/content/repositories/public/") } + } +} + +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { +// maven { setUrl("https://maven.aliyun.com/repository/public/") } +// maven { setUrl("https://jitpack.io") } + google() + mavenCentral() + maven { setUrl("https://maven.scijava.org/content/repositories/public/") } + } +} + +rootProject.name = "Dhizuku" +include( + ":app", + ":dhizuku-aidl", + ":dhizuku-shared", +)