From 82acbb16e6ebebe51bc221cebc029df628b11102 Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Tue, 31 May 2022 09:52:09 +0200 Subject: [PATCH 01/35] chore: setup capacitor for android and document how to use it --- README.org | 43 +- android/.gitignore | 96 +++++ android/app/.gitignore | 2 + android/app/build.gradle | 51 +++ android/app/capacitor.build.gradle | 19 + android/app/proguard-rules.pro | 21 + .../myapp/ExampleInstrumentedTest.java | 26 ++ android/app/src/main/AndroidManifest.xml | 41 ++ .../app/src/main/assets/capacitor.config.json | 6 + .../src/main/assets/capacitor.plugins.json | 1 + .../twohundredok/organice/MainActivity.java | 5 + .../main/res/drawable-land-hdpi/splash.png | Bin 0 -> 7705 bytes .../main/res/drawable-land-mdpi/splash.png | Bin 0 -> 4040 bytes .../main/res/drawable-land-xhdpi/splash.png | Bin 0 -> 9251 bytes .../main/res/drawable-land-xxhdpi/splash.png | Bin 0 -> 13984 bytes .../main/res/drawable-land-xxxhdpi/splash.png | Bin 0 -> 17683 bytes .../main/res/drawable-port-hdpi/splash.png | Bin 0 -> 7934 bytes .../main/res/drawable-port-mdpi/splash.png | Bin 0 -> 4096 bytes .../main/res/drawable-port-xhdpi/splash.png | Bin 0 -> 9875 bytes .../main/res/drawable-port-xxhdpi/splash.png | Bin 0 -> 13346 bytes .../main/res/drawable-port-xxxhdpi/splash.png | Bin 0 -> 17489 bytes .../drawable-v24/ic_launcher_foreground.xml | 34 ++ .../res/drawable/ic_launcher_background.xml | 170 ++++++++ android/app/src/main/res/drawable/splash.png | Bin 0 -> 4040 bytes .../app/src/main/res/layout/activity_main.xml | 12 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2786 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 0 -> 3450 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 4341 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1869 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 0 -> 2110 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2725 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 3981 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 0 -> 5036 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 6593 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 6644 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 0 -> 9793 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 10455 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9441 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 0 -> 15529 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 15916 bytes .../res/values/ic_launcher_background.xml | 4 + android/app/src/main/res/values/strings.xml | 7 + android/app/src/main/res/values/styles.xml | 22 + android/app/src/main/res/xml/config.xml | 6 + android/app/src/main/res/xml/file_paths.xml | 5 + .../getcapacitor/myapp/ExampleUnitTest.java | 18 + android/build.gradle | 29 ++ android/capacitor.settings.gradle | 3 + android/gradle.properties | 24 ++ android/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + android/gradlew | 185 ++++++++ android/gradlew.bat | 89 ++++ android/settings.gradle | 5 + android/variables.gradle | 14 + capacitor.config.ts | 10 + images/api_32.png | Bin 0 -> 101128 bytes package.json | 6 +- yarn.lock | 402 +++++++++++++++++- 61 files changed, 1366 insertions(+), 5 deletions(-) create mode 100644 android/.gitignore create mode 100644 android/app/.gitignore create mode 100644 android/app/build.gradle create mode 100644 android/app/capacitor.build.gradle create mode 100644 android/app/proguard-rules.pro create mode 100644 android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java create mode 100644 android/app/src/main/AndroidManifest.xml create mode 100644 android/app/src/main/assets/capacitor.config.json create mode 100644 android/app/src/main/assets/capacitor.plugins.json create mode 100644 android/app/src/main/java/ch/twohundredok/organice/MainActivity.java create mode 100644 android/app/src/main/res/drawable-land-hdpi/splash.png create mode 100644 android/app/src/main/res/drawable-land-mdpi/splash.png create mode 100644 android/app/src/main/res/drawable-land-xhdpi/splash.png create mode 100644 android/app/src/main/res/drawable-land-xxhdpi/splash.png create mode 100644 android/app/src/main/res/drawable-land-xxxhdpi/splash.png create mode 100644 android/app/src/main/res/drawable-port-hdpi/splash.png create mode 100644 android/app/src/main/res/drawable-port-mdpi/splash.png create mode 100644 android/app/src/main/res/drawable-port-xhdpi/splash.png create mode 100644 android/app/src/main/res/drawable-port-xxhdpi/splash.png create mode 100644 android/app/src/main/res/drawable-port-xxxhdpi/splash.png create mode 100644 android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 android/app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 android/app/src/main/res/drawable/splash.png create mode 100644 android/app/src/main/res/layout/activity_main.xml create mode 100644 android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 android/app/src/main/res/values/ic_launcher_background.xml create mode 100644 android/app/src/main/res/values/strings.xml create mode 100644 android/app/src/main/res/values/styles.xml create mode 100644 android/app/src/main/res/xml/config.xml create mode 100644 android/app/src/main/res/xml/file_paths.xml create mode 100644 android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java create mode 100644 android/build.gradle create mode 100644 android/capacitor.settings.gradle create mode 100644 android/gradle.properties create mode 100644 android/gradle/wrapper/gradle-wrapper.jar create mode 100644 android/gradle/wrapper/gradle-wrapper.properties create mode 100755 android/gradlew create mode 100644 android/gradlew.bat create mode 100644 android/settings.gradle create mode 100644 android/variables.gradle create mode 100644 capacitor.config.ts create mode 100644 images/api_32.png diff --git a/README.org b/README.org index fe95ed343..bd4eaf95b 100644 --- a/README.org +++ b/README.org @@ -447,19 +447,19 @@ you can manually generate it with: ./bin/compile_search_parser.sh #+END_SRC -** Testing +** User Acceptance Testing When you're developing a new feature and you want to manually test it, it's best to check it out in a Desktop browser and on your smartphone. This is how you do that: -*** Desktop +*** PWA on Desktop Run the application with =yarn start= which will open organice in your configured default browser. Alternatively, visit =http://localhost:3000= in the browser of your choice. -*** Smartphone +*** PWA on Smartphone There are multiple options on how you can connect from your smartphone to your computer running organice. @@ -543,6 +543,43 @@ feature branches against =develop= until the epic is finished. On merging a pull request to =develop=, code and documentation are automatically deployed to stage. +*** Native app on Android + +- Install [[https://developer.android.com/studio#downloads][Android Studio]] +- Follow the [[https://capacitorjs.com/docs/getting-started/environment-setup#android-sdk][Capacitor Guide to setup an Android SDK]] + +#+begin_quote +/:warning:/ Make sure to install the required subpackages. Activate +"Show Package Details" to reveal hidden subpackages. + +At time of writing "Android API 32" does not automatically install the +subpackages "Google APIs Intel x86 Atom_64 System Image" and "Google +Play Intel x86 Atom_64 System Image", which are both required to run +the Emulator on an Intel based machine. + +https://raw.githubusercontent.com/200ok-ch/organice/master/images/api_32.png +#+end_quote + +- Create a device in Android Studio by running any app + +#+begin_quote +/:monocle_face:/ Theoretically this should not be nescessary, as +Capacitor should be able to create a device to deploy the app to on +the fly. But this didn't work for me. After the device had be run once +by Android Studio, Capacitor was able to start it on its own. +#+end_quote + +- Shut down Android Studio and any running Emulator +- Before run oragnice as a native app you need to =yarn build= it. +- Run organice in the Emulater with =npx cap run android= + +*** TODO Native app on iOS + +#+begin_quote +/:sparkles:/ This is brand new section that wants to be written. +Please check out how to [[contrib][contribute]] to organice. +#+end_quote + ** Contributions Please see our [[file:CONTRIBUTING.org][contributor guidelines]] and our [[file:CODE_OF_CONDUCT.md][code of conduct]]. diff --git a/android/.gitignore b/android/.gitignore new file mode 100644 index 000000000..63c86fe30 --- /dev/null +++ b/android/.gitignore @@ -0,0 +1,96 @@ +# Using Android gitignore template: https://github.com/github/gitignore/blob/HEAD/Android.gitignore + +# Built application files +*.apk +*.aar +*.ap_ +*.aab + +# Files for the ART/Dalvik VM +*.dex + +# Java class files +*.class + +# Generated files +bin/ +gen/ +out/ +# Uncomment the following line in case you need and you don't have the release build type files in your app +# release/ + +# Gradle files +.gradle/ +build/ + +# Local configuration file (sdk path, etc) +local.properties + +# Proguard folder generated by Eclipse +proguard/ + +# Log Files +*.log + +# Android Studio Navigation editor temp files +.navigation/ + +# Android Studio captures folder +captures/ + +# IntelliJ +*.iml +.idea/workspace.xml +.idea/tasks.xml +.idea/gradle.xml +.idea/assetWizardSettings.xml +.idea/dictionaries +.idea/libraries +# Android Studio 3 in .gitignore file. +.idea/caches +.idea/modules.xml +# Comment next line if keeping position of elements in Navigation Editor is relevant for you +.idea/navEditor.xml + +# Keystore files +# Uncomment the following lines if you do not want to check your keystore files in. +#*.jks +#*.keystore + +# External native build folder generated in Android Studio 2.2 and later +.externalNativeBuild +.cxx/ + +# Google Services (e.g. APIs or Firebase) +# google-services.json + +# Freeline +freeline.py +freeline/ +freeline_project_description.json + +# fastlane +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots +fastlane/test_output +fastlane/readme.md + +# Version control +vcs.xml + +# lint +lint/intermediates/ +lint/generated/ +lint/outputs/ +lint/tmp/ +# lint/reports/ + +# Android Profiling +*.hprof + +# Cordova plugins for Capacitor +capacitor-cordova-android-plugins + +# Copied web assets +app/src/main/assets/public diff --git a/android/app/.gitignore b/android/app/.gitignore new file mode 100644 index 000000000..043df802a --- /dev/null +++ b/android/app/.gitignore @@ -0,0 +1,2 @@ +/build/* +!/build/.npmkeep diff --git a/android/app/build.gradle b/android/app/build.gradle new file mode 100644 index 000000000..15a1b402b --- /dev/null +++ b/android/app/build.gradle @@ -0,0 +1,51 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion rootProject.ext.compileSdkVersion + defaultConfig { + applicationId "ch.twohundredok.organice" + minSdkVersion rootProject.ext.minSdkVersion + targetSdkVersion rootProject.ext.targetSdkVersion + versionCode 1 + versionName "1.0" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + aaptOptions { + // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. + // Default: https://android.googlesource.com/platform/frameworks/base/+/282e181b58cf72b6ca770dc7ca5f91f135444502/tools/aapt/AaptAssets.cpp#61 + ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~' + } + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +repositories { + flatDir{ + dirs '../capacitor-cordova-android-plugins/src/main/libs', 'libs' + } +} + +dependencies { + implementation fileTree(include: ['*.jar'], dir: 'libs') + implementation "androidx.appcompat:appcompat:$androidxAppCompatVersion" + implementation project(':capacitor-android') + testImplementation "junit:junit:$junitVersion" + androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion" + androidTestImplementation "androidx.test.espresso:espresso-core:$androidxEspressoCoreVersion" + implementation project(':capacitor-cordova-android-plugins') +} + +apply from: 'capacitor.build.gradle' + +try { + def servicesJSON = file('google-services.json') + if (servicesJSON.text) { + apply plugin: 'com.google.gms.google-services' + } +} catch(Exception e) { + logger.info("google-services.json not found, google-services plugin not applied. Push Notifications won't work") +} diff --git a/android/app/capacitor.build.gradle b/android/app/capacitor.build.gradle new file mode 100644 index 000000000..837cd452a --- /dev/null +++ b/android/app/capacitor.build.gradle @@ -0,0 +1,19 @@ +// DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN + +android { + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } +} + +apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle" +dependencies { + + +} + + +if (hasProperty('postBuildExtras')) { + postBuildExtras() +} diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro new file mode 100644 index 000000000..f1b424510 --- /dev/null +++ b/android/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# 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 diff --git a/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java b/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java new file mode 100644 index 000000000..f2c2217ef --- /dev/null +++ b/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.getcapacitor.myapp; + +import static org.junit.Assert.*; + +import android.content.Context; +import androidx.test.ext.junit.runners.AndroidJUnit4; +import androidx.test.platform.app.InstrumentationRegistry; +import org.junit.Test; +import org.junit.runner.RunWith; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + + @Test + public void useAppContext() throws Exception { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + + assertEquals("com.getcapacitor.app", appContext.getPackageName()); + } +} diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 000000000..52699878b --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/assets/capacitor.config.json b/android/app/src/main/assets/capacitor.config.json new file mode 100644 index 000000000..3191216de --- /dev/null +++ b/android/app/src/main/assets/capacitor.config.json @@ -0,0 +1,6 @@ +{ + "appId": "ch.twohundredok.organice", + "appName": "organice", + "webDir": "build", + "bundledWebRuntime": false +} diff --git a/android/app/src/main/assets/capacitor.plugins.json b/android/app/src/main/assets/capacitor.plugins.json new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/android/app/src/main/assets/capacitor.plugins.json @@ -0,0 +1 @@ +[] diff --git a/android/app/src/main/java/ch/twohundredok/organice/MainActivity.java b/android/app/src/main/java/ch/twohundredok/organice/MainActivity.java new file mode 100644 index 000000000..6af83f6a7 --- /dev/null +++ b/android/app/src/main/java/ch/twohundredok/organice/MainActivity.java @@ -0,0 +1,5 @@ +package ch.twohundredok.organice; + +import com.getcapacitor.BridgeActivity; + +public class MainActivity extends BridgeActivity {} diff --git a/android/app/src/main/res/drawable-land-hdpi/splash.png b/android/app/src/main/res/drawable-land-hdpi/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..e31573b4fc93e60d171f4046c0220e1463075d9e GIT binary patch literal 7705 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 wKmFJ0_JHhk1&0B>;%YXATM literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-land-mdpi/splash.png b/android/app/src/main/res/drawable-land-mdpi/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..f7a64923ea1a0565d25fa139c176d6bf42184e48 GIT binary patch literal 4040 zcmcJSdsNct*2lF|+LV`0O<9`gWHmXNI_0HMG^Z5J?4q936dm(MrI-mKAX+&`r@Sy` z-UWRJFO`aw_bX%OB?%BsNembv6+|Tjydip+nRU)OtOyZ-=Ql zg+^ZsGj@v#jtKJ%3l2raybiNhQ`5cScGk%|o;Ax>Wil|!;(O3Lf_3Bc!SfzKS@3G9SN2|L z(ZlkChqH{!k{zKhLYD}HO7W>_PR28&-#hB8$hv^aHfYWp(-yZ&PjRKna1=pP?I``1 zJhjuO|72XMzS&A`ll~v(jzN{Frmn5>s?4oWm3ilm#y^>=Z7T0(E0y>~Ztr2SKReA#x9s@PM3fJO!ntA?b_8IZah%-bwM9 zrPWDVzQJ#=jNs2JFaIztcQ0f(1C!QIp9S=|i`TgeU6oCJEYl!NZt9;kr`?c*G`gYL z@F{~wLcg{AeYsJqL5a^oqb2fgiQdIWwT6hBG)j6WGHI;BDLJKtg?9`plfFIyj9vratv!=oN|3q^M@s8E4;aM>14uu(qdH(aO2!g1QL;0` zlk6jmGqw0V8qtS}{yIbU zy>D2IV8n93+k-43)t5 zHoV3wwoE0fvlt-)6(+qv+gtyLBU{6AXwX3cO?Q8$*rCK+@|S(B)0&f&O%^8)h~IhY zd<#&uT#;hk(*&kL^^?ZTCQ4SZMdMql`iAzYYlk5dzXx_IzRNCBVl5Zt19LadD879-yI@>5F^1WV)eBIqfUF-~YTRMM0GDHk}LbSxo2oUVHJpMmlGI z3rByWH)H!8qah9gR@k*d-eyg+Ut|QQuRXEs=h1?GQkAwt(nNpN>BVlOppy1v**<~L ziAz`NGRMEZ%FOBu;ffb*Dd;A6ga;1r!6aMIM#@+UoE(3-Ev!2+(8oW?Jh1}V97M=? z?=$ovd^ECvJRP5aXbm{nv}4kKb(%lr!R}n2+m15~9wFR_pYW~@n#SC_lQPi8*+FhQ zWgalxc8^I4BGJ$9lX*4_2*@b(JtjHCy?trm@T7^ssR!kDcf$tTh3>JEO3mDbfLp#- z!w1chv6Z|o;mH%@=_g$(dgr`>qPQ9bHA7BFa^-tsN`hJ9mNtmx&rLyKj!clpb<|Hk=?iJB z!5J1+q2QQJk%f_G+bkf_kJf73rWyYHiYk|l#{AKMCW^wd#GI}}R-9g|^3&9}dLw2a zV0)s_`5Eso3~`Al@ed**cogwQ#F(S~oILZoU?$)eNMBpO7Xxpbh#2)}W;Kieqe8oo)a3m%oR62^N?_yPVJ_d;Kw;*5!k>Up)ElRob1s7hf z`rXQ9f^~cJpwXVC#@jID+`HIoJQTbv)|UmPNvCosIgIY9G2XEOsTP&!r(T^LzUBHT zm@Z$0!Sv28U0}l;@o=n+c4iWl!X6L^Y|;UkG+t#x^70!S5%F8zowq~^O7?ac(QZcl zQB#=(-;Q!Z*wH1_x*I72kb0u=t+^ZnScg3>(xrY7}&B;VVl=w*X`WI$%U!?jW zN+#A9P#}F19q9fw^74?^NNZ+f=r%@)bG_b9A}}^?LIj*zi2s=MR0$kH^uuDyIhV?@ z!zGYiC2Kv+6Wh3Z(oY)mz!6nFw2tAx@t5Q5O$0H%a!RyV!@e{4oTo9bt}Til)3?xvCcCTz{dKU{5DE9= zymnZ!hKWvDY{DGWHsUdT=bNcxt&f@Up+fU)dk_0P&q;iSi7+r9B_gI7IRiHs7Ck_$ zhIZj!=8Z1&+GbjBY3WF?ea!5Trx;Lk%c3etM&1ob@qK5xfauZL)Mh=RX%I;MYW*Wn zn68mApKv@5>sWIZc6C9}^UI3Q_Bzg8(~crtJvLDxR#5VKDt|jV*Z8rL{^#`(Nf?9R zq_tx7Z(Y-R#`6WqkLg~f2g1R)BDMiejUO!YRL79;y3}l&!G`BHu*e!N5r(tIXJsP8kkHvgQnkK z;LoY%c0tQB!(F1uJQraFEtAGdK0fD=Zkzh2t_VVj`c@aUd1ri7Gvt*rwFoPAc@S&E zdg8_Jlq@tyNjHPgalY&O)F>3OQ|_3f(h>l2h{m+k(_Ju|uH@S4!di|e%7>cgd8+=4 zjI7M8*CHw|8y3AlzQl^lPPpuMohI2ak2T}3ez?AuooV@CUD0)vm!eIrlqVYM0y2lY z1zer{@-toIhXWlqYWR~8yQoB`({<;Rv21+Zm$VLT+d}hV!V_Klm0xmVy2DIr2MOH^ zp4OthWo_zd%>6Fu`v*M7PE54w>=>*bnqTXez|}21$7?KfU7`UHkQbceUz@%Z5SPh( zf|1c?s;d{FU2)&wGjtkEWYEo4?Vd;u_CU>;tL^5+QK(f~;dr=m{U{Aj3jwwE3!GRq z$F!^t>%w%vBNRx8O))O@a~7`k--n$qj^O)$*-$by@_t2Wz_&HW{*@Uy#TY@Qn6z<6 zl4svmjF*uxvQ*COHRGd&VR7vwK$7|T{20gdieL1R%Z|)8$MRd0-L=KE8fE2Elq|C8 zo%yOJtr2+_EPaEqd8HcW?zYwESN~L7r5D~hLZxo$uo@H0Wq3ETe;(%m-GEFGx^HTR zHp|&GLrSk-%Cu!43@kQf+9m&4(>o(RqyWb~WetoKY~aneh!p0yATpfC6w`@ydruv@ zIjhr+Z2#6_F?VKjj3w{RRYob&FfF=7U&vtVx80!jDr|adJ7Of!mkHYmqu}X|yKZel z_M$tF@824GU3I%1GEUQtH1m2PWH2Dds+kVlwV5GQJGd!t|8O!gV5c1^OVz`cZa9Me zD{3^lL1;fjtU?%eb36r6d9Uz81=4cr^3G@JpjEuc%j>ZNryed0SQ4PgnNBP&e=hn+ z?SbFgG`|$Ahr&u9R>YFQ;%c;PG0nr~Bt74$ZViOq8}pjQJct(ouyK1+1JlPjW_U)a zy6-~`zPs8Vg!6BS>;D>d{v&bym$>#R?0gQ_e#giEjkx|xT>Fm|{8JLY+??3hvR93~ XyOn+%7f`N3b2T^T3uj5+eShz7v)7qy literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-land-xhdpi/splash.png b/android/app/src/main/res/drawable-land-xhdpi/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..807725501bdd92e94e51e7b2b0006f69e0083a0b GIT binary patch literal 9251 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-land-xxhdpi/splash.png b/android/app/src/main/res/drawable-land-xxhdpi/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..14c6c8fe39fcd51a0414866ad28cbe8ff3acb060 GIT binary patch literal 13984 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®q@N z14_H8ofW)l{|J8q+a)eH)I0r)>WXdzV%7J>PA~6_J)KLT90iYa^K=Wz7D!OybzqSru=f4?|KFl;Y)gP_H6V4x`~kZ6fE(xM1&;?72-TZNk+0 zr+Crr5yl%Iy@vfmt3eYFl!jIvPGFz^8Ek+2`48O1_pCX3xNWh-zBa{rIcc%+=|XVj zANYTg&s}TKb#OztQrCW(Xk?V^i{`q~%HtcveTxq(_HKeC9GzrtguMT4Nvs@KakPTA z9>*8bBZmLz`lK5=l)=b|=dT3a5ag^a1^znZyx5QKfUb1b9yacArRp%3@QWo(hrsCU z-K!-=jDmv!zb7XT>)r|-Z0Ry}lk2;dk-ECqMwr_nKN#x*X6~B5hVIN>6$1HwBz3Of z=Pk){AL5*=d90f17_qZEJLm;Q%WMdX=*N&!ki@E&cy7?>{1ssAH(tACtp*r@d^til z)x(1#6(kPD+joSF&J3sxJU@{-sWCS+pZq{Gsx=?z4wP;>?)1yHv0?X?VP{}cX4~aH zxeBPKw_rgW8rvewS1W2#^y+c>-183iMbJCqc38RN_o~__9-n|jcd&oA`m7*&Fqqpc z;Tev*0LS-ZK47Sq1unfvP1S43uA12P?PJmI8BeTYPr~R*tYUm^0;U%Hmu?bSZHEK6 zPjsW=E67Kq-&trmf;)UkmRABH2U)V)-eRT$j(%G12lLMsThSsU10iP#{)ZnvjzN$d z*K%P3`}oqyvpWP~venr>3viH8^`)Ma*=B31hw*Q+tqE>i2y7w!(o^lI^Yss^=tHW( z;cnCT(%B1gLz+TRGW9roFjI1EQTu-u`(f#RmZ8;FSN(bsC1J;+(i_R6mrW=yYx$cy z#%QKVrEx~kVMg~yo?^N28Wnk6x%L;J8i|*|ANEiNjq(Vhzuzl3ikpA*G!Z}kLAzAI z9qnySo%D|AuJj12%h;Otqjs(>LPj?rNdeU8so>P(C>XMzlho94ZD#w=cCOOU;=3&^ zsqAG!i{~lY271D|m>ztPV`)X@FO_;`wPjppYNQpM+ncvtz1lZjN>!Q^*I}T%uP78Z7tbV2$q3W_)14=kLFyJ z1GqL6T>ClgeZorL!}xP4f%OB_EsmJ`uw7dGWNV9OLlhb|UMpVhc{4@Bhh`tO!ZqzD zhusd<=K^ah!L@gQ?6dOpI-ge^e>S5W9eII57Zu16eU?GRbgKTeVk9yS{iK|O(zLR> zheb?;jwGCHS80NCn=jKxgJ>}qu4l%5NPihjzazGv#J?Jcyl;<#IW&x4mm>nrW8>}C z3U@aeD~)*F(0o^2{GnKVm$Jr#aZE ztl~TOkM^SdzJapQ((!-i8b!RkVQBKkL`2ZCBuy!qI1L{3Er526plVols~68U-^9Px zR(3{j;Z9RHX^muc0dUywJ|`yyZFf=k&-Gb#m4u73Lm5Ks%BfHj%2|gjn#i> zLC5pO$2Em9H;qoKQmMtl<@wgtPF1%2HariD5O~u>8=^*J&au~JH%Ih@&2Uging3U_ z0bzfKucW$ZHSx}!#buB?+-J)%RQbbXM-!BJTS&#dU_@lxU6>te2O+9 z@F{F{Nb!;{Cd`Gx+$G?11aB~S#wIH%D=*=7f7H@D@%B1)&bF$@t3JDq4l*%(wJTlh zo`?uMq{YilKUewPNaC)GuOr<8j9&ofqRU__BRUX^x8Cj3a;a$rXzgXqW>LR#CUn%~m)t zYC&ol(gAkbc^fd`xWU&bk5vT6KbFmsR=O78Bn%t7 znbw&=c+|T&#r+bls5rU6D#HMvqA<|;)BV%jOMonkm^p$7Vcel-Wwn$=uAJv&(8W>% z9))Fxpl*(%E#wFm_m!U~2HqgZs^2vaGeY(UfYKrSHV}w^D0N6!se5Ewy)Yy-!(2

aKj2hWG7>znxs|SE zN4rHtiSPqLskWp(?(_YYwgq+1@8v+~8As|(bC>$D(atG3ZE8-ZM3SVcg|vHQz$I=!(A`k`5= zOqR>&%G)$)k*QLz7MTB9wleWpv&N9Sta64wy}3Ytd?x!Ja8z>(z~(3UNFu^eFmn#6 zw!!gUxOuZi$PQIs*ixfZR3iLyADJ z5&s%tPfk>V!x|A-;oq%1!yk9H$UBP0ToA*EDtz(^!_AnF1bBQ7joj|? z5b)gSI8c8O$PYFE!vXJ<4gebg*9G9P2wcB{#kv0FItc5T@PDNo)}Rh4Us}L{e}xzW zhwt`)j`M)mP=G6H0;^&q=I0{jU%bIRkF#uLF;{vVC&H|_uc literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-land-xxxhdpi/splash.png b/android/app/src/main/res/drawable-land-xxxhdpi/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..244ca2506dbe0fd8f6a05520ac7d1a629ea81438 GIT binary patch literal 17683 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-port-xxhdpi/splash.png b/android/app/src/main/res/drawable-port-xxhdpi/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..bfabe6871a17a5e95b78fb30d49b7d2b4d2fe4c0 GIT binary patch literal 13346 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

VwO4Hu8X}%XHUAz_J@50rzbkIsat>4oWtQt< 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-port-xxxhdpi/splash.png b/android/app/src/main/res/drawable-port-xxxhdpi/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..6929071268eb03ee0f088142b6523566b78550e2 GIT binary patch literal 17489 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 KR&><$`~L^lv%S~= literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 000000000..c7bd21dbd --- /dev/null +++ b/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + diff --git a/android/app/src/main/res/drawable/ic_launcher_background.xml b/android/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 000000000..d5fccc538 --- /dev/null +++ b/android/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/res/drawable/splash.png b/android/app/src/main/res/drawable/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..f7a64923ea1a0565d25fa139c176d6bf42184e48 GIT binary patch literal 4040 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 XyOn+%7f`N3b2T^T3uj5+eShz7v)7qy literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/layout/activity_main.xml b/android/app/src/main/res/layout/activity_main.xml new file mode 100644 index 000000000..b5ad13870 --- /dev/null +++ b/android/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 000000000..036d09bc5 --- /dev/null +++ b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 000000000..036d09bc5 --- /dev/null +++ b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..c023e50595074292c7361183a64de08cf9686c9c GIT binary patch literal 2786 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..2127973b2d318df7085734d236d0ec649a2b0292 GIT binary patch literal 3450 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4d1e077104cd61e6a4c3707e87363b523077245a GIT binary patch literal 3981 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 nm0GElTB(&OnKI&V600000NkvXXu0mjff+~0a literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..df0f15880bee46332dfc6622583215194f948b0f GIT binary patch literal 5036 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..6cdf97c1196d48e9833487ff6de7c4cfc4e1232d GIT binary patch literal 6644 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..2960cbb6104b915c84760f889deed9bff2b3e17a GIT binary patch literal 9793 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 y3vD~Wi9;mL_v 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..a40d73e9c68ea638c28c7b13e4bcd1e179a3a102 GIT binary patch literal 15916 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 + + #FFFFFF + \ No newline at end of file diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml new file mode 100644 index 000000000..7a12d7708 --- /dev/null +++ b/android/app/src/main/res/values/strings.xml @@ -0,0 +1,7 @@ + + + organice + organice + ch.twohundredok.organice + ch.twohundredok.organice + diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml new file mode 100644 index 000000000..bb45498f6 --- /dev/null +++ b/android/app/src/main/res/values/styles.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/xml/config.xml b/android/app/src/main/res/xml/config.xml new file mode 100644 index 000000000..1b1b0e0dc --- /dev/null +++ b/android/app/src/main/res/xml/config.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/xml/file_paths.xml b/android/app/src/main/res/xml/file_paths.xml new file mode 100644 index 000000000..bd0c4d80d --- /dev/null +++ b/android/app/src/main/res/xml/file_paths.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java b/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java new file mode 100644 index 000000000..029732784 --- /dev/null +++ b/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java @@ -0,0 +1,18 @@ +package com.getcapacitor.myapp; + +import static org.junit.Assert.*; + +import org.junit.Test; + +/** + * Example local unit test, which will execute on the development machine (host). + * + * @see Testing documentation + */ +public class ExampleUnitTest { + + @Test + public void addition_isCorrect() throws Exception { + assertEquals(4, 2 + 2); + } +} diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 000000000..ad085c345 --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,29 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + + repositories { + google() + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:4.2.1' + classpath 'com.google.gms:google-services:4.3.5' + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +apply from: "variables.gradle" + +allprojects { + repositories { + google() + jcenter() + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/android/capacitor.settings.gradle b/android/capacitor.settings.gradle new file mode 100644 index 000000000..9a5fa872e --- /dev/null +++ b/android/capacitor.settings.gradle @@ -0,0 +1,3 @@ +// DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN +include ':capacitor-android' +project(':capacitor-android').projectDir = new File('../node_modules/@capacitor/android/capacitor') diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 000000000..0566c221d --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,24 @@ +# 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=-Xmx1536m + +# 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 +# Automatically convert third-party libraries to use AndroidX +android.enableJetifier=true diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f GIT binary patch literal 59203 zcma&O1CT9Y(k9%tZQHhO+qUh#ZQHhO+qmuS+qP|E@9xZO?0h@l{(r>DQ>P;GjjD{w zH}lENr;dU&FbEU?00aa80D$0M0RRB{U*7-#kbjS|qAG&4l5%47zyJ#WrfA#1$1Ctx zf&Z_d{GW=lf^w2#qRJ|CvSJUi(^E3iv~=^Z(zH}F)3Z%V3`@+rNB7gTVU{Bb~90p|f+0(v;nz01EG7yDMX9@S~__vVgv%rS$+?IH+oZ03D5zYrv|^ zC1J)SruYHmCki$jLBlTaE5&dFG9-kq3!^i>^UQL`%gn6)jz54$WDmeYdsBE9;PqZ_ zoGd=P4+|(-u4U1dbAVQrFWoNgNd;0nrghPFbQrJctO>nwDdI`Q^i0XJDUYm|T|RWc zZ3^Qgo_Qk$%Fvjj-G}1NB#ZJqIkh;kX%V{THPqOyiq)d)0+(r9o(qKlSp*hmK#iIY zA^)Vr$-Hz<#SF=0@tL@;dCQsm`V9s1vYNq}K1B)!XSK?=I1)tX+bUV52$YQu*0%fnWEukW>mxkz+%3-S!oguE8u#MGzST8_Dy^#U?fA@S#K$S@9msUiX!gd_ow>08w5)nX{-KxqMOo7d?k2&?Vf z&diGDtZr(0cwPe9z9FAUSD9KC)7(n^lMWuayCfxzy8EZsns%OEblHFSzP=cL6}?J| z0U$H!4S_TVjj<`6dy^2j`V`)mC;cB%* z8{>_%E1^FH!*{>4a7*C1v>~1*@TMcLK{7nEQ!_igZC}ikJ$*<$yHy>7)oy79A~#xE zWavoJOIOC$5b6*q*F_qN1>2#MY)AXVyr$6x4b=$x^*aqF*L?vmj>Mgv+|ITnw_BoW zO?jwHvNy^prH{9$rrik1#fhyU^MpFqF2fYEt(;4`Q&XWOGDH8k6M=%@fics4ajI;st# zCU^r1CK&|jzUhRMv;+W~6N;u<;#DI6cCw-otsc@IsN3MoSD^O`eNflIoR~l4*&-%RBYk@gb^|-JXs&~KuSEmMxB}xSb z@K76cXD=Y|=I&SNC2E+>Zg?R6E%DGCH5J1nU!A|@eX9oS(WPaMm==k2s_ueCqdZw| z&hqHp)47`c{BgwgvY2{xz%OIkY1xDwkw!<0veB#yF4ZKJyabhyyVS`gZepcFIk%e2 zTcrmt2@-8`7i-@5Nz>oQWFuMC_KlroCl(PLSodswHqJ3fn<;gxg9=}~3x_L3P`9Sn zChIf}8vCHvTriz~T2~FamRi?rh?>3bX1j}%bLH+uFX+p&+^aXbOK7clZxdU~6Uxgy z8R=obwO4dL%pmVo*Ktf=lH6hnlz_5k3cG;m8lgaPp~?eD!Yn2kf)tU6PF{kLyn|oI@eQ`F z3IF7~Blqg8-uwUuWZScRKn%c2_}dXB6Dx_&xR*n9M9LXasJhtZdr$vBY!rP{c@=)& z#!?L$2UrkvClwQO>U*fSMs67oSj2mxiJ$t;E|>q%Kh_GzzWWO&3;ufU%2z%ucBU8H z3WIwr$n)cfCXR&>tyB7BcSInK>=ByZA%;cVEJhcg<#6N{aZC4>K41XF>ZgjG`z_u& zGY?;Ad?-sgiOnI`oppF1o1Gurqbi*;#x2>+SSV6|1^G@ooVy@fg?wyf@0Y!UZ4!}nGuLeC^l)6pwkh|oRY`s1Pm$>zZ3u-83T|9 zGaKJIV3_x+u1>cRibsaJpJqhcm%?0-L;2 zitBrdRxNmb0OO2J%Y&Ym(6*`_P3&&5Bw157{o7LFguvxC$4&zTy#U=W*l&(Q2MNO} zfaUwYm{XtILD$3864IA_nn34oVa_g^FRuHL5wdUd)+W-p-iWCKe8m_cMHk+=? zeKX)M?Dt(|{r5t7IenkAXo%&EXIb-i^w+0CX0D=xApC=|Xy(`xy+QG^UyFe z+#J6h_&T5i#sV)hj3D4WN%z;2+jJcZxcI3*CHXGmOF3^)JD5j&wfX)e?-|V0GPuA+ zQFot%aEqGNJJHn$!_}#PaAvQ^{3-Ye7b}rWwrUmX53(|~i0v{}G_sI9uDch_brX&6 zWl5Ndj-AYg(W9CGfQf<6!YmY>Ey)+uYd_JNXH=>|`OH-CDCmcH(0%iD_aLlNHKH z7bcW-^5+QV$jK?R*)wZ>r9t}loM@XN&M-Pw=F#xn(;u3!(3SXXY^@=aoj70;_=QE9 zGghsG3ekq#N||u{4We_25U=y#T*S{4I{++Ku)> zQ!DZW;pVcn>b;&g2;YE#+V`v*Bl&Y-i@X6D*OpNA{G@JAXho&aOk(_j^weW{#3X5Y z%$q_wpb07EYPdmyH(1^09i$ca{O<}7) zRWncXdSPgBE%BM#by!E>tdnc$8RwUJg1*x($6$}ae$e9Knj8gvVZe#bLi!<+&BkFj zg@nOpDneyc+hU9P-;jmOSMN|*H#>^Ez#?;%C3hg_65leSUm;iz)UkW)jX#p)e&S&M z1|a?wDzV5NVnlhRBCd_;F87wp>6c<&nkgvC+!@KGiIqWY4l}=&1w7|r6{oBN8xyzh zG$b#2=RJp_iq6)#t5%yLkKx(0@D=C3w+oiXtSuaQ%I1WIb-eiE$d~!)b@|4XLy!CZ z9p=t=%3ad@Ep+<9003D2KZ5VyP~_n$=;~r&YUg5UZ0KVD&tR1DHy9x)qWtKJp#Kq# zP*8p#W(8JJ_*h_3W}FlvRam?<4Z+-H77^$Lvi+#vmhL9J zJ<1SV45xi;SrO2f=-OB(7#iNA5)x1uNC-yNxUw|!00vcW2PufRm>e~toH;M0Q85MQLWd?3O{i8H+5VkR@l9Dg-ma ze2fZ%>G(u5(k9EHj2L6!;(KZ8%8|*-1V|B#EagbF(rc+5iL_5;Eu)L4Z-V;0HfK4d z*{utLse_rvHZeQ>V5H=f78M3Ntg1BPxFCVD{HbNA6?9*^YIq;B-DJd{Ca2L#)qWP? zvX^NhFmX?CTWw&Ns}lgs;r3i+Bq@y}Ul+U%pzOS0Fcv9~aB(0!>GT0)NO?p=25LjN z2bh>6RhgqD7bQj#k-KOm@JLgMa6>%-ok1WpOe)FS^XOU{c?d5shG(lIn3GiVBxmg`u%-j=)^v&pX1JecJics3&jvPI)mDut52? z3jEA)DM%}BYbxxKrizVYwq?(P&19EXlwD9^-6J+4!}9{ywR9Gk42jjAURAF&EO|~N z)?s>$Da@ikI4|^z0e{r`J8zIs>SpM~Vn^{3fArRu;?+43>lD+^XtUcY1HidJwnR6+ z!;oG2=B6Z_=M%*{z-RaHc(n|1RTKQdNjjV!Pn9lFt^4w|AeN06*j}ZyhqZ^!-=cyGP_ShV1rGxkx8t zB;8`h!S{LD%ot``700d0@Grql(DTt4Awgmi+Yr0@#jbe=2#UkK%rv=OLqF)9D7D1j z!~McAwMYkeaL$~kI~90)5vBhBzWYc3Cj1WI0RS`z000R8-@ET0dA~*r(gSiCJmQMN&4%1D zyVNf0?}sBH8zNbBLn>~(W{d3%@kL_eQ6jEcR{l>C|JK z(R-fA!z|TTRG40|zv}7E@PqCAXP3n`;%|SCQ|ZS%ym$I{`}t3KPL&^l5`3>yah4*6 zifO#{VNz3)?ZL$be;NEaAk9b#{tV?V7 zP|wf5YA*1;s<)9A4~l3BHzG&HH`1xNr#%){4xZ!jq%o=7nN*wMuXlFV{HaiQLJ`5G zBhDi#D(m`Q1pLh@Tq+L;OwuC52RdW7b8}~60WCOK5iYMUad9}7aWBuILb({5=z~YF zt?*Jr5NG+WadM{mDL>GyiByCuR)hd zA=HM?J6l1Xv0Dl+LW@w$OTcEoOda^nFCw*Sy^I@$sSuneMl{4ys)|RY#9&NxW4S)9 zq|%83IpslTLoz~&vTo!Ga@?rj_kw{|k{nv+w&Ku?fyk4Ki4I?);M|5Axm)t+BaE)D zm(`AQ#k^DWrjbuXoJf2{Aj^KT zFb1zMSqxq|vceV+Mf-)$oPflsO$@*A0n0Z!R{&(xh8s}=;t(lIy zv$S8x>m;vQNHuRzoaOo?eiWFe{0;$s`Bc+Osz~}Van${u;g(su`3lJ^TEfo~nERfP z)?aFzpDgnLYiERsKPu|0tq4l2wT)Atr6Qb%m-AUn6HnCue*yWICp7TjW$@sO zm5rm4aTcPQ(rfi7a`xP7cKCFrJD}*&_~xgLyr^-bmsL}y;A5P|al8J3WUoBSjqu%v zxC;mK!g(7r6RRJ852Z~feoC&sD3(6}^5-uLK8o)9{8L_%%rItZK9C){UxB|;G>JbP zsRRtS4-3B*5c+K2kvmgZK8472%l>3cntWUOVHxB|{Ay~aOg5RN;{PJgeVD*H%ac+y!h#wi%o2bF2Ca8IyMyH{>4#{E_8u^@+l-+n=V}Sq?$O z{091@v%Bd*3pk0^2UtiF9Z+(a@wy6 zUdw8J*ze$K#=$48IBi1U%;hmhO>lu!uU;+RS}p&6@rQila7WftH->*A4=5W|Fmtze z)7E}jh@cbmr9iup^i%*(uF%LG&!+Fyl@LFA-}Ca#bxRfDJAiR2dt6644TaYw1Ma79 zt8&DYj31j^5WPNf5P&{)J?WlCe@<3u^78wnd(Ja4^a>{^Tw}W>|Cjt^If|7l^l)^Q zbz|7~CF(k_9~n|h;ysZ+jHzkXf(*O*@5m zLzUmbHp=x!Q|!9NVXyipZ3)^GuIG$k;D)EK!a5=8MFLI_lpf`HPKl=-Ww%z8H_0$j ztJ||IfFG1lE9nmQ0+jPQy zCBdKkjArH@K7jVcMNz);Q(Q^R{d5G?-kk;Uu_IXSyWB)~KGIizZL(^&qF;|1PI7!E zTP`%l)gpX|OFn&)M%txpQ2F!hdA~hX1Cm5)IrdljqzRg!f{mN%G~H1&oqe`5eJCIF zHdD7O;AX-{XEV(a`gBFJ9ews#CVS2y!&>Cm_dm3C8*n3MA*e67(WC?uP@8TXuMroq z{#w$%z@CBIkRM7?}Xib+>hRjy?%G!fiw8! z8(gB+8J~KOU}yO7UGm&1g_MDJ$IXS!`+*b*QW2x)9>K~Y*E&bYMnjl6h!{17_8d!%&9D`a7r&LKZjC<&XOvTRaKJ1 zUY@hl5^R&kZl3lU3njk`3dPzxj$2foOL26r(9zsVF3n_F#v)s5vv3@dgs|lP#eylq62{<-vczqP!RpVBTgI>@O6&sU>W|do17+#OzQ7o5A$ICH z?GqwqnK^n2%LR;$^oZM;)+>$X3s2n}2jZ7CdWIW0lnGK-b#EG01)P@aU`pg}th&J-TrU`tIpb5t((0eu|!u zQz+3ZiOQ^?RxxK4;zs=l8q!-n7X{@jSwK(iqNFiRColuEOg}!7cyZi`iBX4g1pNBj zAPzL?P^Ljhn;1$r8?bc=#n|Ed7wB&oHcw()&*k#SS#h}jO?ZB246EGItsz*;^&tzp zu^YJ0=lwsi`eP_pU8}6JA7MS;9pfD;DsSsLo~ogzMNP70@@;Fm8f0^;>$Z>~}GWRw!W5J3tNX*^2+1f3hz{~rIzJo z6W%J(H!g-eI_J1>0juX$X4Cl6i+3wbc~k146UIX&G22}WE>0ga#WLsn9tY(&29zBvH1$`iWtTe zG2jYl@P!P)eb<5DsR72BdI7-zP&cZNI{7q3e@?N8IKc4DE#UVr->|-ryuJXk^u^>4 z$3wE~=q390;XuOQP~TNoDR?#|NSPJ%sTMInA6*rJ%go|=YjGe!B>z6u$IhgQSwoV* zjy3F2#I>uK{42{&IqP59)Y(1*Z>>#W8rCf4_eVsH)`v!P#^;BgzKDR`ARGEZzkNX+ zJUQu=*-ol=Xqqt5=`=pA@BIn@6a9G8C{c&`i^(i+BxQO9?YZ3iu%$$da&Kb?2kCCo zo7t$UpSFWqmydXf@l3bVJ=%K?SSw)|?srhJ-1ZdFu*5QhL$~-IQS!K1s@XzAtv6*Y zl8@(5BlWYLt1yAWy?rMD&bwze8bC3-GfNH=p zynNFCdxyX?K&G(ZZ)afguQ2|r;XoV^=^(;Cku#qYn4Lus`UeKt6rAlFo_rU`|Rq z&G?~iWMBio<78of-2X(ZYHx~=U0Vz4btyXkctMKdc9UM!vYr~B-(>)(Hc|D zMzkN4!PBg%tZoh+=Gba!0++d193gbMk2&krfDgcbx0jI92cq?FFESVg0D$>F+bil} zY~$)|>1HZsX=5sAZ2WgPB5P=8X#TI+NQ(M~GqyVB53c6IdX=k>Wu@A0Svf5#?uHaF zsYn|koIi3$(%GZ2+G+7Fv^lHTb#5b8sAHSTnL^qWZLM<(1|9|QFw9pnRU{svj}_Al zL)b9>fN{QiA($8peNEJyy`(a{&uh-T4_kdZFIVsKKVM(?05}76EEz?#W za^fiZOAd14IJ4zLX-n7Lq0qlQ^lW8Cvz4UKkV9~P}>sq0?xD3vg+$4vLm~C(+ zM{-3Z#qnZ09bJ>}j?6ry^h+@PfaD7*jZxBEY4)UG&daWb??6)TP+|3#Z&?GL?1i+280CFsE|vIXQbm| zM}Pk!U`U5NsNbyKzkrul-DzwB{X?n3E6?TUHr{M&+R*2%yOiXdW-_2Yd6?38M9Vy^ z*lE%gA{wwoSR~vN0=no}tP2Ul5Gk5M(Xq`$nw#ndFk`tcpd5A=Idue`XZ!FS>Q zG^0w#>P4pPG+*NC9gLP4x2m=cKP}YuS!l^?sHSFftZy{4CoQrb_ z^20(NnG`wAhMI=eq)SsIE~&Gp9Ne0nD4%Xiu|0Fj1UFk?6avDqjdXz{O1nKao*46y zT8~iA%Exu=G#{x=KD;_C&M+Zx4+n`sHT>^>=-1YM;H<72k>$py1?F3#T1*ef9mLZw z5naLQr?n7K;2l+{_uIw*_1nsTn~I|kkCgrn;|G~##hM;9l7Jy$yJfmk+&}W@JeKcF zx@@Woiz8qdi|D%aH3XTx5*wDlbs?dC1_nrFpm^QbG@wM=i2?Zg;$VK!c^Dp8<}BTI zyRhAq@#%2pGV49*Y5_mV4+OICP|%I(dQ7x=6Ob}>EjnB_-_18*xrY?b%-yEDT(wrO z9RY2QT0`_OpGfMObKHV;QLVnrK%mc?$WAdIT`kJQT^n%GuzE7|9@k3ci5fYOh(287 zuIbg!GB3xLg$YN=n)^pHGB0jH+_iIiC=nUcD;G6LuJsjn2VI1cyZx=a?ShCsF==QK z;q~*m&}L<-cb+mDDXzvvrRsybcgQ;Vg21P(uLv5I+eGc7o7tc6`;OA9{soHFOz zT~2?>Ts}gprIX$wRBb4yE>ot<8+*Bv`qbSDv*VtRi|cyWS>)Fjs>fkNOH-+PX&4(~ z&)T8Zam2L6puQl?;5zg9h<}k4#|yH9czHw;1jw-pwBM*O2hUR6yvHATrI%^mvs9q_ z&ccT0>f#eDG<^WG^q@oVqlJrhxH)dcq2cty@l3~|5#UDdExyXUmLQ}f4#;6fI{f^t zDCsgIJ~0`af%YR%Ma5VQq-p21k`vaBu6WE?66+5=XUd%Ay%D$irN>5LhluRWt7 zov-=f>QbMk*G##&DTQyou$s7UqjjW@k6=!I@!k+S{pP8R(2=e@io;N8E`EOB;OGoI zw6Q+{X1_I{OO0HPpBz!X!@`5YQ2)t{+!?M_iH25X(d~-Zx~cXnS9z>u?+If|iNJbx zyFU2d1!ITX64D|lE0Z{dLRqL1Ajj=CCMfC4lD3&mYR_R_VZ>_7_~|<^o*%_&jevU+ zQ4|qzci=0}Jydw|LXLCrOl1_P6Xf@c0$ieK2^7@A9UbF{@V_0p%lqW|L?5k>bVM8|p5v&2g;~r>B8uo<4N+`B zH{J)h;SYiIVx@#jI&p-v3dwL5QNV1oxPr8J%ooezTnLW>i*3Isb49%5i!&ac_dEXv zvXmVUck^QHmyrF8>CGXijC_R-y(Qr{3Zt~EmW)-nC!tiH`wlw5D*W7Pip;T?&j%kX z6DkZX4&}iw>hE(boLyjOoupf6JpvBG8}jIh!!VhnD0>}KSMMo{1#uU6kiFcA04~|7 zVO8eI&x1`g4CZ<2cYUI(n#wz2MtVFHx47yE5eL~8bot~>EHbevSt}LLMQX?odD{Ux zJMnam{d)W4da{l7&y-JrgiU~qY3$~}_F#G7|MxT)e;G{U`In&?`j<5D->}cb{}{T(4DF0BOk-=1195KB-E*o@c?`>y#4=dMtYtSY=&L{!TAjFVcq0y@AH`vH! z$41+u!Ld&}F^COPgL(EE{0X7LY&%D7-(?!kjFF7=qw<;`V{nwWBq<)1QiGJgUc^Vz ztMUlq1bZqKn17|6x6iAHbWc~l1HcmAxr%$Puv!znW)!JiukwIrqQ00|H$Z)OmGG@= zv%A8*4cq}(?qn4rN6o`$Y))(MyXr8R<2S^J+v(wmFmtac!%VOfN?&(8Nr!T@kV`N; z*Q33V3t`^rN&aBiHet)18wy{*wi1=W!B%B-Q6}SCrUl$~Hl{@!95ydml@FK8P=u4s z4e*7gV2s=YxEvskw2Ju!2%{8h01rx-3`NCPc(O zH&J0VH5etNB2KY6k4R@2Wvl^Ck$MoR3=)|SEclT2ccJ!RI9Nuter7u9@;sWf-%um;GfI!=eEIQ2l2p_YWUd{|6EG ze{yO6;lMc>;2tPrsNdi@&1K6(1;|$xe8vLgiouj%QD%gYk`4p{Ktv9|j+!OF-P?@p z;}SV|oIK)iwlBs+`ROXkhd&NK zzo__r!B>tOXpBJMDcv!Mq54P+n4(@dijL^EpO1wdg~q+!DT3lB<>9AANSe!T1XgC=J^)IP0XEZ()_vpu!!3HQyJhwh?r`Ae%Yr~b% zO*NY9t9#qWa@GCPYOF9aron7thfWT`eujS4`t2uG6)~JRTI;f(ZuoRQwjZjp5Pg34 z)rp$)Kr?R+KdJ;IO;pM{$6|2y=k_siqvp%)2||cHTe|b5Ht8&A{wazGNca zX$Ol?H)E_R@SDi~4{d-|8nGFhZPW;Cts1;08TwUvLLv&_2$O6Vt=M)X;g%HUr$&06 zISZb(6)Q3%?;3r~*3~USIg=HcJhFtHhIV(siOwV&QkQe#J%H9&E21!C*d@ln3E@J* zVqRO^<)V^ky-R|%{(9`l-(JXq9J)1r$`uQ8a}$vr9E^nNiI*thK8=&UZ0dsFN_eSl z(q~lnD?EymWLsNa3|1{CRPW60>DSkY9YQ;$4o3W7Ms&@&lv9eH!tk~N&dhqX&>K@} zi1g~GqglxkZ5pEFkllJ)Ta1I^c&Bt6#r(QLQ02yHTaJB~- zCcE=5tmi`UA>@P=1LBfBiqk)HB4t8D?02;9eXj~kVPwv?m{5&!&TFYhu>3=_ zsGmYZ^mo*-j69-42y&Jj0cBLLEulNRZ9vXE)8~mt9C#;tZs;=#M=1*hebkS;7(aGf zcs7zH(I8Eui9UU4L--))yy`&d&$In&VA2?DAEss4LAPCLd>-$i?lpXvn!gu^JJ$(DoUlc6wE98VLZ*z`QGQov5l4Fm_h?V-;mHLYDVOwKz7>e4+%AzeO>P6v}ndPW| zM>m#6Tnp7K?0mbK=>gV}=@k*0Mr_PVAgGMu$j+pWxzq4MAa&jpCDU&-5eH27Iz>m^ zax1?*HhG%pJ((tkR(V(O(L%7v7L%!_X->IjS3H5kuXQT2!ow(;%FDE>16&3r){!ex zhf==oJ!}YU89C9@mfDq!P3S4yx$aGB?rbtVH?sHpg?J5C->!_FHM%Hl3#D4eplxzQ zRA+<@LD%LKSkTk2NyWCg7u=$%F#;SIL44~S_OGR}JqX}X+=bc@swpiClB`Zbz|f!4 z7Ysah7OkR8liXfI`}IIwtEoL}(URrGe;IM8%{>b1SsqXh)~w}P>yiFRaE>}rEnNkT z!HXZUtxUp1NmFm)Dm@-{FI^aRQqpSkz}ZSyKR%Y}YHNzBk)ZIp} zMtS=aMvkgWKm9&oTcU0?S|L~CDqA+sHpOxwnswF-fEG)cXCzUR?ps@tZa$=O)=L+5 zf%m58cq8g_o}3?Bhh+c!w4(7AjxwQ3>WnVi<{{38g7yFboo>q|+7qs<$8CPXUFAN< zG&}BHbbyQ5n|qqSr?U~GY{@GJ{(Jny{bMaOG{|IkUj7tj^9pa9|FB_<+KHLxSxR;@ zHpS$4V)PP+tx}22fWx(Ku9y+}Ap;VZqD0AZW4gCDTPCG=zgJmF{|x;(rvdM|2|9a}cex6xrMkERnkE;}jvU-kmzd%_J50$M`lIPCKf+^*zL=@LW`1SaEc%=m zQ+lT06Gw+wVwvQ9fZ~#qd430v2HndFsBa9WjD0P}K(rZYdAt^5WQIvb%D^Q|pkVE^ zte$&#~zmULFACGfS#g=2OLOnIf2Of-k!(BIHjs77nr!5Q1*I9 z1%?=~#Oss!rV~?-6Gm~BWJiA4mJ5TY&iPm_$)H1_rTltuU1F3I(qTQ^U$S>%$l z)Wx1}R?ij0idp@8w-p!Oz{&*W;v*IA;JFHA9%nUvVDy7Q8woheC#|8QuDZb-L_5@R zOqHwrh|mVL9b=+$nJxM`3eE{O$sCt$UK^2@L$R(r^-_+z?lOo+me-VW=Zw z-Bn>$4ovfWd%SPY`ab-u9{INc*k2h+yH%toDHIyqQ zO68=u`N}RIIs7lsn1D){)~%>ByF<>i@qFb<-axvu(Z+6t7v<^z&gm9McRB~BIaDn$ z#xSGT!rzgad8o>~kyj#h1?7g96tOcCJniQ+*#=b7wPio>|6a1Z?_(TS{)KrPe}(8j z!#&A=k(&Pj^F;r)CI=Z{LVu>uj!_W1q4b`N1}E(i%;BWjbEcnD=mv$FL$l?zS6bW!{$7j1GR5ocn94P2u{ z70tAAcpqtQo<@cXw~@i-@6B23;317|l~S>CB?hR5qJ%J3EFgyBdJd^fHZu7AzHF(BQ!tyAz^L0`X z23S4Fe{2X$W0$zu9gm%rg~A>ijaE#GlYlrF9$ds^QtaszE#4M(OLVP2O-;XdT(XIC zatwzF*)1c+t~c{L=fMG8Z=k5lv>U0;C{caN1NItnuSMp)6G3mbahu>E#sj&oy94KC zpH}8oEw{G@N3pvHhp{^-YaZeH;K+T_1AUv;IKD<=mv^&Ueegrb!yf`4VlRl$M?wsl zZyFol(2|_QM`e_2lYSABpKR{{NlxlDSYQNkS;J66aT#MSiTx~;tUmvs-b*CrR4w=f z8+0;*th6kfZ3|5!Icx3RV11sp=?`0Jy3Fs0N4GZQMN=8HmT6%x9@{Dza)k}UwL6JT zHRDh;%!XwXr6yuuy`4;Xsn0zlR$k%r%9abS1;_v?`HX_hI|+EibVnlyE@3aL5vhQq zlIG?tN^w@0(v9M*&L+{_+RQZw=o|&BRPGB>e5=ys7H`nc8nx)|-g;s7mRc7hg{GJC zAe^vCIJhajmm7C6g! zL&!WAQ~5d_5)00?w_*|*H>3$loHrvFbitw#WvLB!JASO?#5Ig5$Ys10n>e4|3d;tS zELJ0|R4n3Az(Fl3-r^QiV_C;)lQ1_CW{5bKS15U|E9?ZgLec@%kXr84>5jV2a5v=w z?pB1GPdxD$IQL4)G||B_lI+A=08MUFFR4MxfGOu07vfIm+j=z9tp~5i_6jb`tR>qV z$#`=BQ*jpCjm$F0+F)L%xRlnS%#&gro6PiRfu^l!EVan|r3y}AHJQOORGx4~ z&<)3=K-tx518DZyp%|!EqpU!+X3Et7n2AaC5(AtrkW>_57i}$eqs$rupubg0a1+WO zGHZKLN2L0D;ab%{_S1Plm|hx8R?O14*w*f&2&bB050n!R2by zw!@XOQx$SqZ5I<(Qu$V6g>o#A!JVwErWv#(Pjx=KeS0@hxr4?13zj#oWwPS(7Ro|v z>Mp@Kmxo79q|}!5qtX2-O@U&&@6s~!I&)1WQIl?lTnh6UdKT_1R640S4~f=_xoN3- zI+O)$R@RjV$F=>Ti7BlnG1-cFKCC(t|Qjm{SalS~V-tX#+2ekRhwmN zZr`8{QF6y~Z!D|{=1*2D-JUa<(1Z=;!Ei!KiRNH?o{p5o3crFF=_pX9O-YyJchr$~ zRC`+G+8kx~fD2k*ZIiiIGR<8r&M@3H?%JVOfE>)})7ScOd&?OjgAGT@WVNSCZ8N(p zuQG~76GE3%(%h1*vUXg$vH{ua0b`sQ4f0*y=u~lgyb^!#CcPJa2mkSEHGLsnO^kb$ zru5_l#nu=Y{rSMWiYx?nO{8I!gH+?wEj~UM?IrG}E|bRIBUM>UlY<`T1EHpRr36vv zBi&dG8oxS|J$!zoaq{+JpJy+O^W(nt*|#g32bd&K^w-t>!Vu9N!k9eA8r!Xc{utY> zg9aZ(D2E0gL#W0MdjwES-7~Wa8iubPrd?8-$C4BP?*wok&O8+ykOx{P=Izx+G~hM8 z*9?BYz!T8~dzcZr#ux8kS7u7r@A#DogBH8km8Ry4slyie^n|GrTbO|cLhpqgMdsjX zJ_LdmM#I&4LqqsOUIXK8gW;V0B(7^$y#h3h>J0k^WJfAMeYek%Y-Dcb_+0zPJez!GM zAmJ1u;*rK=FNM0Nf}Y!!P9c4)HIkMnq^b;JFd!S3?_Qi2G#LIQ)TF|iHl~WKK6JmK zbv7rPE6VkYr_%_BT}CK8h=?%pk@3cz(UrZ{@h40%XgThP*-Oeo`T0eq9 zA8BnWZKzCy5e&&_GEsU4*;_k}(8l_&al5K-V*BFM=O~;MgRkYsOs%9eOY6s6AtE*<7GQAR2ulC3RAJrG_P1iQK5Z~&B z&f8X<>yJV6)oDGIlS$Y*D^Rj(cszTy5c81a5IwBr`BtnC6_e`ArI8CaTX_%rx7;cn zR-0?J_LFg*?(#n~G8cXut(1nVF0Oka$A$1FGcERU<^ggx;p@CZc?3UB41RY+wLS`LWFNSs~YP zuw1@DNN3lTd|jDL7gjBsd9}wIw}4xT2+8dBQzI00m<@?c2L%>}QLfK5%r!a-iII`p zX@`VEUH)uj^$;7jVUYdADQ2k*!1O3WdfgF?OMtUXNpQ1}QINamBTKDuv19^{$`8A1 zeq%q*O0mi@(%sZU>Xdb0Ru96CFqk9-L3pzLVsMQ`Xpa~N6CR{9Rm2)A|CI21L(%GW zh&)Y$BNHa=FD+=mBw3{qTgw)j0b!Eahs!rZnpu)z!!E$*eXE~##yaXz`KE5(nQM`s zD!$vW9XH)iMxu9R>r$VlLk9oIR%HxpUiW=BK@4U)|1WNQ=mz9a z^!KkO=>GaJ!GBXm{KJj^;kh-MkUlEQ%lza`-G&}C5y1>La1sR6hT=d*NeCnuK%_LV zOXt$}iP6(YJKc9j-Fxq~*ItVUqljQ8?oaysB-EYtFQp9oxZ|5m0^Hq(qV!S+hq#g( z?|i*H2MIr^Kxgz+3vIljQ*Feejy6S4v~jKEPTF~Qhq!(ms5>NGtRgO5vfPPc4Z^AM zTj!`5xEreIN)vaNxa|q6qWdg>+T`Ol0Uz)ckXBXEGvPNEL3R8hB3=C5`@=SYgAju1 z!)UBr{2~=~xa{b8>x2@C7weRAEuatC)3pkRhT#pMPTpSbA|tan%U7NGMvzmF?c!V8 z=pEWxbdXbTAGtWTyI?Fml%lEr-^AE}w#l(<7OIw;ctw}imYax&vR4UYNJZK6P7ZOd zP87XfhnUHxCUHhM@b*NbTi#(-8|wcv%3BGNs#zRCVV(W?1Qj6^PPQa<{yaBwZ`+<`w|;rqUY_C z&AeyKwwf*q#OW-F()lir=T^<^wjK65Lif$puuU5+tk$;e_EJ;Lu+pH>=-8=PDhkBg z8cWt%@$Sc#C6F$Vd+0507;{OOyT7Hs%nKS88q-W!$f~9*WGBpHGgNp}=C*7!RiZ5s zn1L_DbKF@B8kwhDiLKRB@lsXVVLK|ph=w%_`#owlf@s@V(pa`GY$8h%;-#h@TsO|Y8V=n@*!Rog7<7Cid%apR|x zOjhHCyfbIt%+*PCveTEcuiDi%Wx;O;+K=W?OFUV%)%~6;gl?<0%)?snDDqIvkHF{ zyI02)+lI9ov42^hL>ZRrh*HhjF9B$A@=H94iaBESBF=eC_KT$8A@uB^6$~o?3Wm5t1OIaqF^~><2?4e3c&)@wKn9bD? zoeCs;H>b8DL^F&>Xw-xjZEUFFTv>JD^O#1E#)CMBaG4DX9bD(Wtc8Rzq}9soQ8`jf zeSnHOL}<+WVSKp4kkq&?SbETjq6yr@4%SAqOG=9E(3YeLG9dtV+8vmzq+6PFPk{L; z(&d++iu=^F%b+ea$i2UeTC{R*0Isk;vFK!no<;L+(`y`3&H-~VTdKROkdyowo1iqR zbVW(3`+(PQ2>TKY>N!jGmGo7oeoB8O|P_!Ic@ zZ^;3dnuXo;WJ?S+)%P>{Hcg!Jz#2SI(s&dY4QAy_vRlmOh)QHvs_7c&zkJCmJGVvV zX;Mtb>QE+xp`KyciG$Cn*0?AK%-a|=o!+7x&&yzHQOS>8=B*R=niSnta^Pxp1`=md z#;$pS$4WCT?mbiCYU?FcHGZ#)kHVJTTBt^%XE(Q};aaO=Zik0UgLcc0I(tUpt(>|& zcxB_|fxCF7>&~5eJ=Dpn&5Aj{A^cV^^}(7w#p;HG&Q)EaN~~EqrE1qKrMAc&WXIE;>@<&)5;gD2?={Xf@Mvn@OJKw=8Mgn z!JUFMwD+s==JpjhroT&d{$kQAy%+d`a*XxDEVxy3`NHzmITrE`o!;5ClXNPb4t*8P zzAivdr{j_v!=9!^?T3y?gzmqDWX6mkzhIzJ-3S{T5bcCFMr&RPDryMcdwbBuZbsgN zGrp@^i?rcfN7v0NKGzDPGE#4yszxu=I_`MI%Z|10nFjU-UjQXXA?k8Pk|OE<(?ae) zE%vG#eZAlj*E7_3dx#Zz4kMLj>H^;}33UAankJiDy5ZvEhrjr`!9eMD8COp}U*hP+ zF}KIYx@pkccIgyxFm#LNw~G&`;o&5)2`5aogs`1~7cMZQ7zj!%L4E`2yzlQN6REX20&O<9 zKV6fyr)TScJPPzNTC2gL+0x#=u>(({{D7j)c-%tvqls3#Y?Z1m zV5WUE)zdJ{$p>yX;^P!UcXP?UD~YM;IRa#Rs5~l+*$&nO(;Ers`G=0D!twR(0GF@c zHl9E5DQI}Oz74n zfKP>&$q0($T4y$6w(p=ERAFh+>n%iaeRA%!T%<^+pg?M)@ucY<&59$x9M#n+V&>}=nO9wCV{O~lg&v#+jcUj(tQ z`0u1YH)-`U$15a{pBkGyPL0THv1P|4e@pf@3IBZS4dVJPo#H>pWq%Lr0YS-SeWash z8R7=jb28KPMI|_lo#GEO|5B?N_e``H*23{~a!AmUJ+fb4HX-%QI@lSEUxKlGV7z7Q zSKw@-TR>@1RL%w{x}dW#k1NgW+q4yt2Xf1J62Bx*O^WG8OJ|FqI4&@d3_o8Id@*)4 zYrk=>@!wv~mh7YWv*bZhxqSmFh2Xq)o=m;%n$I?GSz49l1$xRpPu_^N(vZ>*>Z<04 z2+rP70oM=NDysd!@fQdM2OcyT?3T^Eb@lIC-UG=Bw{BjQ&P`KCv$AcJ;?`vdZ4){d z&gkoUK{$!$$K`3*O-jyM1~p-7T*qb)Ys>Myt^;#1&a%O@x8A+E>! zY8=eD`ZG)LVagDLBeHg>=atOG?Kr%h4B%E6m@J^C+U|y)XX@f z8oyJDW|9g=<#f<{JRr{y#~euMnv)`7j=%cHWLc}ngjq~7k**6%4u>Px&W%4D94(r* z+akunK}O0DC2A%Xo9jyF;DobX?!1I(7%}@7F>i%&nk*LMO)bMGg2N+1iqtg+r(70q zF5{Msgsm5GS7DT`kBsjMvOrkx&|EU!{{~gL4d2MWrAT=KBQ-^zQCUq{5PD1orxlIL zq;CvlWx#f1NWvh`hg011I%?T_s!e38l*lWVt|~z-PO4~~1g)SrJ|>*tXh=QfXT)%( z+ex+inPvD&O4Ur;JGz>$sUOnWdpSLcm1X%aQDw4{dB!cnj`^muI$CJ2%p&-kULVCE z>$eMR36kN$wCPR+OFDM3-U(VOrp9k3)lI&YVFqd;Kpz~K)@Fa&FRw}L(SoD z9B4a+hQzZT-BnVltst&=kq6Y(f^S4hIGNKYBgMxGJ^;2yrO}P3;r)(-I-CZ)26Y6? z&rzHI_1GCvGkgy-t1E;r^3Le30|%$ebDRu2+gdLG)r=A~Qz`}~&L@aGJ{}vVs_GE* zVUjFnzHiXfKQbpv&bR&}l2bzIjAooB)=-XNcYmrGmBh(&iu@o!^hn0^#}m2yZZUK8 zufVm7Gq0y`Mj;9b>`c?&PZkU0j4>IL=UL&-Lp3j&47B5pAW4JceG{!XCA)kT<%2nqCxj<)uy6XR_uws~>_MEKPOpAQ!H zkn>FKh)<9DwwS*|Y(q?$^N!6(51O0 z^JM~Ax{AI1Oj$fs-S5d4T7Z_i1?{%0SsIuQ&r8#(JA=2iLcTN+?>wOL532%&dMYkT z*T5xepC+V6zxhS@vNbMoi|i)=rpli@R9~P!39tWbSSb904ekv7D#quKbgFEMTb48P zuq(VJ+&L8aWU(_FCD$3^uD!YM%O^K(dvy~Wm2hUuh6bD|#(I39Xt>N1Y{ZqXL`Fg6 zKQ?T2htHN!(Bx;tV2bfTtIj7e)liN-29s1kew>v(D^@)#v;}C4-G=7x#;-dM4yRWm zyY`cS21ulzMK{PoaQ6xChEZ}o_#}X-o}<&0)$1#3we?+QeLt;aVCjeA)hn!}UaKt< zat1fHEx13y-rXNMvpUUmCVzocPmN~-Y4(YJvQ#db)4|%B!rBsgAe+*yor~}FrNH08 z3V!97S}D7d$zbSD{$z;@IYMxM6aHdypIuS*pr_U6;#Y!_?0i|&yU*@16l z*dcMqDQgfNBf}?quiu4e>H)yTVfsp#f+Du0@=Kc41QockXkCkvu>FBd6Q+@FL!(Yx z2`YuX#eMEiLEDhp+9uFqME_E^faV&~9qjBHJkIp~%$x^bN=N)K@kvSVEMdDuzA0sn z88CBG?`RX1@#hQNd`o^V{37)!w|nA)QfiYBE^m=yQKv-fQF+UCMcuEe1d4BH7$?>b zJl-r9@0^Ie=)guO1vOd=i$_4sz>y3x^R7n4ED!5oXL3@5**h(xr%Hv)_gILarO46q+MaDOF%ChaymKoI6JU5Pg;7#2n9-18|S1;AK+ zgsn6;k6-%!QD>D?cFy}8F;r@z8H9xN1jsOBw2vQONVqBVEbkiNUqgw~*!^##ht>w0 zUOykwH=$LwX2j&nLy=@{hr)2O&-wm-NyjW7n~Zs9UlH;P7iP3 zI}S(r0YFVYacnKH(+{*)Tbw)@;6>%=&Th=+Z6NHo_tR|JCI8TJiXv2N7ei7M^Q+RM z?9o`meH$5Yi;@9XaNR#jIK^&{N|DYNNbtdb)XW1Lv2k{E>;?F`#Pq|&_;gm~&~Zc9 zf+6ZE%{x4|{YdtE?a^gKyzr}dA>OxQv+pq|@IXL%WS0CiX!V zm$fCePA%lU{%pTKD7|5NJHeXg=I0jL@$tOF@K*MI$)f?om)D63K*M|r`gb9edD1~Y zc|w7N)Y%do7=0{RC|AziW7#am$)9jciRJ?IWl9PE{G3U+$%FcyKs_0Cgq`=K3@ttV z9g;M!3z~f_?P%y3-ph%vBMeS@p7P&Ea8M@97+%XEj*(1E6vHj==d zjsoviB>j^$_^OI_DEPvFkVo(BGRo%cJeD){6Uckei=~1}>sp299|IRjhXe)%?uP0I zF5+>?0#Ye}T^Y$u_rc4=lPcq4K^D(TZG-w30-YiEM=dcK+4#o*>lJ8&JLi+3UcpZk z!^?95S^C0ja^jwP`|{<+3cBVog$(mRdQmadS+Vh~z zS@|P}=|z3P6uS+&@QsMp0no9Od&27O&14zHXGAOEy zh~OKpymK5C%;LLb467@KgIiVwYbYd6wFxI{0-~MOGfTq$nBTB!{SrWmL9Hs}C&l&l#m?s*{tA?BHS4mVKHAVMqm63H<|c5n0~k)-kbg zXidai&9ZUy0~WFYYKT;oe~rytRk?)r8bptITsWj(@HLI;@=v5|XUnSls7$uaxFRL+ zRVMGuL3w}NbV1`^=Pw*0?>bm8+xfeY(1PikW*PB>>Tq(FR`91N0c2&>lL2sZo5=VD zQY{>7dh_TX98L2)n{2OV=T10~*YzX27i2Q7W86M4$?gZIXZaBq#sA*{PH8){|GUi;oM>e?ua7eF4WFuFYZSG| zze?srg|5Ti8Og{O zeFxuw9!U+zhyk?@w zjsA6(oKD=Ka;A>Ca)oPORxK+kxH#O@zhC!!XS4@=swnuMk>t+JmLmFiE^1aX3f<)D@`%K0FGK^gg1a1j>zi z2KhV>sjU7AX3F$SEqrXSC}fRx64GDoc%!u2Yag68Lw@w9v;xOONf@o)Lc|Uh3<21ctTYu-mFZuHk*+R{GjXHIGq3p)tFtQp%TYqD=j1&y)>@zxoxUJ!G@ zgI0XKmP6MNzw>nRxK$-Gbzs}dyfFzt>#5;f6oR27ql!%+{tr+(`(>%51|k`ML} zY4eE)Lxq|JMas(;JibNQds1bUB&r}ydMQXBY4x(^&fY_&LlQC)3hylc$~8&~|06-D z#T+%66rYbHX%^KuqJED_wuGB+=h`nWA!>1n0)3wZrBG3%`b^Ozv6__dNa@%V14|!D zQ?o$z5u0^8`giv%qE!BzZ!3j;BlDlJDk)h@9{nSQeEk!z9RGW) z${RSF3phEM*ce*>Xdp}585vj$|40=&S{S-GTiE?Op*vY&Lvr9}BO$XWy80IF+6@%n z5*2ueT_g@ofP#u5pxb7n*fv^Xtt7&?SRc{*2Ka-*!BuOpf}neHGCiHy$@Ka1^Dint z;DkmIL$-e)rj4o2WQV%Gy;Xg(_Bh#qeOsTM2f@KEe~4kJ8kNLQ+;(!j^bgJMcNhvklP5Z6I+9Fq@c&D~8Fb-4rmDT!MB5QC{Dsb;BharP*O;SF4& zc$wj-7Oep7#$WZN!1nznc@Vb<_Dn%ga-O#J(l=OGB`dy=Sy&$(5-n3zzu%d7E#^8`T@}V+5B;PP8J14#4cCPw-SQTdGa2gWL0*zKM z#DfSXs_iWOMt)0*+Y>Lkd=LlyoHjublNLefhKBv@JoC>P7N1_#> zv=mLWe96%EY;!ZGSQDbZWb#;tzqAGgx~uk+-$+2_8U`!ypbwXl z^2E-FkM1?lY@yt8=J3%QK+xaZ6ok=-y%=KXCD^0r!5vUneW>95PzCkOPO*t}p$;-> ze5j-BLT_;)cZQzR2CEsm@rU7GZfFtdp*a|g4wDr%8?2QkIGasRfDWT-Dvy*U{?IHT z*}wGnzdlSptl#ZF^sf)KT|BJs&kLG91^A6ls{CzFprZ6-Y!V0Xysh%9p%iMd7HLsS zN+^Un$tDV)T@i!v?3o0Fsx2qI(AX_$dDkBzQ@fRM%n zRXk6hb9Py#JXUs+7)w@eo;g%QQ95Yq!K_d=z{0dGS+pToEI6=Bo8+{k$7&Z zo4>PH(`ce8E-Ps&uv`NQ;U$%t;w~|@E3WVOCi~R4oj5wP?%<*1C%}Jq%a^q~T7u>K zML5AKfQDv6>PuT`{SrKHRAF+^&edg6+5R_#H?Lz3iGoWo#PCEd0DS;)2U({{X#zU^ zw_xv{4x7|t!S)>44J;KfA|DC?;uQ($l+5Vp7oeqf7{GBF9356nx|&B~gs+@N^gSdd zvb*>&W)|u#F{Z_b`f#GVtQ`pYv3#||N{xj1NgB<#=Odt6{eB%#9RLt5v zIi|0u70`#ai}9fJjKv7dE!9ZrOIX!3{$z_K5FBd-Kp-&e4(J$LD-)NMTp^_pB`RT; zftVVlK2g@+1Ahv2$D){@Y#cL#dUj9*&%#6 zd2m9{1NYp>)6=oAvqdCn5#cx{AJ%S8skUgMglu2*IAtd+z1>B&`MuEAS(D(<6X#Lj z?f4CFx$)M&$=7*>9v1ER4b6!SIz-m0e{o0BfkySREchp?WdVPpQCh!q$t>?rL!&Jg zd#heM;&~A}VEm8Dvy&P|J*eAV&w!&Nx6HFV&B8jJFVTmgLaswn!cx$&%JbTsloz!3 zMEz1d`k==`Ueub_JAy_&`!ogbwx27^ZXgFNAbx=g_I~5nO^r)}&myw~+yY*cJl4$I znNJ32M&K=0(2Dj_>@39`3=FX!v3nZHno_@q^!y}%(yw0PqOo=);6Y@&ylVe>nMOZ~ zd>j#QQSBn3oaWd;qy$&5(5H$Ayi)0haAYO6TH>FR?rhqHmNOO+(})NB zLI@B@v0)eq!ug`>G<@htRlp3n!EpU|n+G+AvXFrWSUsLMBfL*ZB`CRsIVHNTR&b?K zxBgsN0BjfB>UVcJ|x%=-zb%OV7lmZc& zxiupadZVF7)6QuhoY;;FK2b*qL0J-Rn-8!X4ZY$-ZSUXV5DFd7`T41c(#lAeLMoeT z4%g655v@7AqT!i@)Edt5JMbN(=Q-6{=L4iG8RA%}w;&pKmtWvI4?G9pVRp|RTw`g0 zD5c12B&A2&P6Ng~8WM2eIW=wxd?r7A*N+&!Be7PX3s|7~z=APxm=A?5 zt>xB4WG|*Td@VX{Rs)PV0|yK`oI3^xn(4c_j&vgxk_Y3o(-`_5o`V zRTghg6%l@(qodXN;dB#+OKJEEvhfcnc#BeO2|E(5df-!fKDZ!%9!^BJ_4)9P+9Dq5 zK1=(v?KmIp34r?z{NEWnLB3Px{XYwy-akun4F7xTRr2^zeYW{gcK9)>aJDdU5;w5@ zak=<+-PLH-|04pelTb%ULpuuuJC7DgyT@D|p{!V!0v3KpDnRjANN12q6SUR3mb9<- z>2r~IApQGhstZ!3*?5V z8#)hJ0TdZg0M-BK#nGFP>$i=qk82DO z7h;Ft!D5E15OgW)&%lej*?^1~2=*Z5$2VX>V{x8SC+{i10BbtUk9@I#Vi&hX)q

Q!LwySI{Bnv%Sm)yh{^sSVJ8&h_D-BJ_YZe5eCaAWU9b$O2c z$T|{vWVRtOL!xC0DTc(Qbe`ItNtt5hr<)VijD0{U;T#bUEp381_y`%ZIav?kuYG{iyYdEBPW=*xNSc;Rlt6~F4M`5G+VtOjc z*0qGzCb@gME5udTjJA-9O<&TWd~}ysBd(eVT1-H82-doyH9RST)|+Pb{o*;$j9Tjs zhU!IlsPsj8=(x3bAKJTopW3^6AKROHR^7wZ185wJGVhA~hEc|LP;k7NEz-@4p5o}F z`AD6naG3(n=NF9HTH81=F+Q|JOz$7wm9I<+#BSmB@o_cLt2GkW9|?7mM;r!JZp89l zbo!Hp8=n!XH1{GwaDU+k)pGp`C|cXkCU5%vcH)+v@0eK>%7gWxmuMu9YLlChA|_D@ zi#5zovN_!a-0?~pUV-Rj*1P)KwdU-LguR>YM&*Nen+ln8Q$?WFCJg%DY%K}2!!1FE zDv-A%Cbwo^p(lzac&_TZ-l#9kq`mhLcY3h9ZTUVCM(Ad&=EriQY5{jJv<5K&g|*Lk zgV%ILnf1%8V2B0E&;Sp4sYbYOvvMebLwYwzkRQ#F8GpTQq#uv=J`uaSJ34OWITeSGo6+-8Xw znCk*n{kdDEi)Hi&u^)~cs@iyCkFWB2SWZU|Uc%^43ZIZQ-vWNExCCtDWjqHs;;tWf$v{}0{p0Rvxkq``)*>+Akq%|Na zA`@~-Vfe|+(AIlqru+7Ceh4nsVmO9p9jc8}HX^W&ViBDXT+uXbT#R#idPn&L>+#b6 zflC-4C5-X;kUnR~L>PSLh*gvL68}RBsu#2l`s_9KjUWRhiqF`j)`y`2`YU(>3bdBj z?>iyjEhe-~$^I5!nn%B6Wh+I`FvLNvauve~eX<+Ipl&04 zT}};W&1a3%W?dJ2=N#0t?e+aK+%t}5q%jSLvp3jZ%?&F}nOOWr>+{GFIa%wO_2`et z=JzoRR~}iKuuR+azPI8;Gf9)z3kyA4EIOSl!sRR$DlW}0>&?GbgPojmjmnln;cTqCt=ADbE zZ8GAnoM+S1(5$i8^O4t`ue;vO4i}z0wz-QEIVe5_u03;}-!G1NyY8;h^}y;tzY}i5 zqQr#Ur3Fy8sSa$Q0ys+f`!`+>9WbvU_I`Sj;$4{S>O3?#inLHCrtLy~!s#WXV=oVP zeE93*Nc`PBi4q@%Ao$x4lw9vLHM!6mn3-b_cebF|n-2vt-zYVF_&sDE--J-P;2WHo z+@n2areE0o$LjvjlV2X7ZU@j+`{*8zq`JR3gKF#EW|#+{nMyo-a>nFFTg&vhyT=b} zDa8+v0(Dgx0yRL@ZXOYIlVSZ0|MFizy0VPW8;AfA5|pe!#j zX}Py^8fl5SyS4g1WSKKtnyP+_PoOwMMwu`(i@Z)diJp~U54*-miOchy7Z35eL>^M z4p<-aIxH4VUZgS783@H%M7P9hX>t{|RU7$n4T(brCG#h9e9p! z+o`i;EGGq3&pF;~5V~eBD}lC)>if$w%Vf}AFxGqO88|ApfHf&Bvu+xdG)@vuF}Yvk z)o;~k-%+0K0g+L`Wala!$=ZV|z$e%>f0%XoLib%)!R^RoS+{!#X?h-6uu zF&&KxORdZU&EwQFITIRLo(7TA3W}y6X{?Y%y2j0It!ekU#<)$qghZtpcS>L3uh`Uj z7GY;6f$9qKynP#oS3$$a{p^{D+0oJQ71`1?OAn_m8)UGZmj3l*ZI)`V-a>MKGGFG< z&^jg#Ok%(hhm>hSrZ5;Qga4u(?^i>GiW_j9%_7M>j(^|Om$#{k+^*ULnEgzW_1gCICtAD^WpC`A z{9&DXkG#01Xo)U$OC(L5Y$DQ|Q4C6CjUKk1UkPj$nXH##J{c8e#K|&{mA*;b$r0E4 zUNo0jthwA(c&N1l=PEe8Rw_8cEl|-eya9z&H3#n`B$t#+aJ03RFMzrV@gowbe8v(c zIFM60^0&lCFO10NU4w@|61xiZ4CVXeaKjd;d?sv52XM*lS8XiVjgWpRB;&U_C0g+`6B5V&w|O6B*_q zsATxL!M}+$He)1eOWECce#eS@2n^xhlB4<_Nn?yCVEQWDs(r`|@2GqLe<#(|&P0U? z$7V5IgpWf09uIf_RazRwC?qEqRaHyL?iiS05UiGesJy%^>-C{{ypTBI&B0-iUYhk> zIk<5xpsuV@g|z(AZD+C-;A!fTG=df1=<%nxy(a(IS+U{ME4ZbDEBtcD_3V=icT6*_ z)>|J?>&6%nvHhZERBtjK+s4xnut*@>GAmA5m*OTp$!^CHTr}vM4n(X1Q*;{e-Rd2BCF-u@1ZGm z!S8hJ6L=Gl4T_SDa7Xx|-{4mxveJg=ctf`BJ*fy!yF6Dz&?w(Q_6B}WQVtNI!BVBC zKfX<>7vd6C96}XAQmF-Jd?1Q4eTfRB3q7hCh0f!(JkdWT5<{iAE#dKy*Jxq&3a1@~ z8C||Dn2mFNyrUV|<-)C^_y7@8c2Fz+2jrae9deBDu;U}tJ{^xAdxCD248(k;dCJ%o z`y3sADe>U%suxwwv~8A1+R$VB=Q?%U?4joI$um;aH+eCrBqpn- z%79D_7rb;R-;-9RTrwi9dPlg8&@tfWhhZ(Vx&1PQ+6(huX`;M9x~LrW~~#3{j0Bh2kDU$}@!fFQej4VGkJv?M4rU^x!RU zEwhu$!CA_iDjFjrJa`aocySDX16?~;+wgav;}Zut6Mg%C4>}8FL?8)Kgwc(Qlj{@#2Pt0?G`$h7P#M+qoXtlV@d}%c&OzO+QYKK`kyXaK{U(O^2DyIXCZlNQjt0^8~8JzNGrIxhj}}M z&~QZlbx%t;MJ(Vux;2tgNKGlAqphLq%pd}JG9uoVHUo?|hN{pLQ6Em%r*+7t^<);X zm~6=qChlNAVXNN*Sow->*4;}T;l;D1I-5T{Bif@4_}=>l`tK;qqDdt5zvisCKhMAH z#r}`)7VW?LZqfdmXQ%zo5bJ00{Xb9^YKrk0Nf|oIW*K@(=`o2Vndz}ZDyk{!u}PVx zzd--+_WC*U{~DH3{?GI64IB+@On&@9X>EUAo&L+G{L^dozaI4C3G#2wr~hseW@K&g zKWs{uHu-9Je!3;4pE>eBltKUXb^*hG8I&413)$J&{D4N%7PcloU6bn%jPxJyQL?g* z9g+YFFEDiE`8rW^laCNzQmi7CTnPfwyg3VDHRAl>h=In6jeaVOP@!-CP60j3+#vpL zEYmh_oP0{-gTe7Or`L6x)6w?77QVi~jD8lWN@3RHcm80iV%M1A!+Y6iHM)05iC64tb$X2lV_%Txk@0l^hZqi^%Z?#- zE;LE0uFx)R08_S-#(wC=dS&}vj6P4>5ZWjhthP=*Hht&TdLtKDR;rXEX4*z0h74FA zMCINqrh3Vq;s%3MC1YL`{WjIAPkVL#3rj^9Pj9Ss7>7duy!9H0vYF%>1jh)EPqvlr6h%R%CxDsk| z!BACz7E%j?bm=pH6Eaw{+suniuY7C9Ut~1cWfOX9KW9=H><&kQlinPV3h9R>3nJvK z4L9(DRM=x;R&d#a@oFY7mB|m8h4692U5eYfcw|QKwqRsshN(q^v$4$)HgPpAJDJ`I zkqjq(8Cd!K!+wCd=d@w%~e$=gdUgD&wj$LQ1r>-E=O@c ze+Z$x{>6(JA-fNVr)X;*)40Eym1TtUZI1Pwwx1hUi+G1Jlk~vCYeXMNYtr)1?qwyg zsX_e*$h?380O00ou?0R@7-Fc59o$UvyVs4cUbujHUA>sH!}L54>`e` zHUx#Q+Hn&Og#YVOuo*niy*GU3rH;%f``nk#NN5-xrZ34NeH$l`4@t);4(+0|Z#I>Y z)~Kzs#exIAaf--65L0UHT_SvV8O2WYeD>Mq^Y6L!Xu8%vnpofG@w!}R7M28?i1*T&zp3X4^OMCY6(Dg<-! zXmcGQrRgHXGYre7GfTJ)rhl|rs%abKT_Nt24_Q``XH{88NVPW+`x4ZdrMuO0iZ0g` z%p}y};~T5gbb9SeL8BSc`SO#ixC$@QhXxZ=B}L`tP}&k?1oSPS=4%{UOHe0<_XWln zwbl5cn(j-qK`)vGHY5B5C|QZd5)W7c@{bNVXqJ!!n$^ufc?N9C-BF2QK1(kv++h!>$QbAjq)_b$$PcJdV+F7hz0Hu@ zqj+}m0qn{t^tD3DfBb~0B36|Q`bs*xs|$i^G4uNUEBl4g;op-;Wl~iThgga?+dL7s zUP(8lMO?g{GcYpDS{NM!UA8Hco?#}eNEioRBHy4`mq!Pd-9@-97|k$hpEX>xoX+dY zDr$wfm^P&}Wu{!%?)U_(%Mn79$(ywvu*kJ9r4u|MyYLI_67U7%6Gd_vb##Nerf@>& z8W11z$$~xEZt$dPG}+*IZky+os5Ju2eRi;1=rUEeIn>t-AzC_IGM-IXWK3^6QNU+2pe=MBn4I*R@A%-iLDCOHTE-O^wo$sL_h{dcPl=^muAQb`_BRm};=cy{qSkui;`WSsj9%c^+bIDQ z0`_?KX0<-=o!t{u(Ln)v>%VGL z0pC=GB7*AQ?N7N{ut*a%MH-tdtNmNC+Yf$|KS)BW(gQJ*z$d{+{j?(e&hgTy^2|AR9vx1Xre2fagGv0YXWqtNkg*v%40v?BJBt|f9wX5 z{QTlCM}b-0{mV?IG>TW_BdviUKhtosrBqdfq&Frdz>cF~yK{P@(w{Vr7z2qKFwLhc zQuogKO@~YwyS9%+d-zD7mJG~@?EFJLSn!a&mhE5$_4xBl&6QHMzL?CdzEnC~C3$X@ zvY!{_GR06ep5;<#cKCSJ%srxX=+pn?ywDwtJ2{TV;0DKBO2t++B(tIO4)Wh`rD13P z4fE$#%zkd=UzOB74gi=-*CuID&Z3zI^-`4U^S?dHxK8fP*;fE|a(KYMgMUo`THIS1f!*6dOI2 zFjC3O=-AL`6=9pp;`CYPTdVX z8(*?V&%QoipuH0>WKlL8A*zTKckD!paN@~hh zmXzm~qZhMGVdQGd=AG8&20HW0RGV8X{$9LldFZYm zE?}`Q3i?xJRz43S?VFMmqRyvWaS#(~Lempg9nTM$EFDP(Gzx#$r)W&lpFKqcAoJh-AxEw$-bjW>`_+gEi z2w`99#UbFZGiQjS8kj~@PGqpsPX`T{YOj`CaEqTFag;$jY z8_{Wzz>HXx&G*Dx<5skhpETxIdhKH?DtY@b9l8$l?UkM#J-Snmts7bd7xayKTFJ(u zyAT&@6cAYcs{PBfpqZa%sxhJ5nSZBPji?Zlf&}#L?t)vC4X5VLp%~fz2Sx<*oN<7` z?ge=k<=X7r<~F7Tvp9#HB{!mA!QWBOf%EiSJ6KIF8QZNjg&x~-%e*tflL(ji_S^sO ztmib1rp09uon}RcsFi#k)oLs@$?vs(i>5k3YN%$T(5Or(TZ5JW9mA6mIMD08=749$ z!d+l*iu{Il7^Yu}H;lgw=En1sJpCKPSqTCHy4(f&NPelr31^*l%KHq^QE>z>Ks_bH zjbD?({~8Din7IvZeJ>8Ey=e;I?thpzD=zE5UHeO|neioJwG;IyLk?xOz(yO&0DTU~ z^#)xcs|s>Flgmp;SmYJ4g(|HMu3v7#;c*Aa8iF#UZo7CvDq4>8#qLJ|YdZ!AsH%^_7N1IQjCro

K7UpUK$>l@ zw`1S}(D?mUXu_C{wupRS-jiX~w=Uqqhf|Vb3Cm9L=T+w91Cu^ z*&Ty%sN?x*h~mJc4g~k{xD4ZmF%FXZNC;oVDwLZ_WvrnzY|{v8hc1nmx4^}Z;yriXsAf+Lp+OFLbR!&Ox?xABwl zu8w&|5pCxmu#$?Cv2_-Vghl2LZ6m7}VLEfR5o2Ou$x02uA-%QB2$c(c1rH3R9hesc zfpn#oqpbKuVsdfV#cv@5pV4^f_!WS+F>SV6N0JQ9E!T90EX((_{bSSFv9ld%I0&}9 zH&Jd4MEX1e0iqDtq~h?DBrxQX1iI0lIs<|kB$Yrh&cpeK0-^K%=FBsCBT46@h#yi!AyDq1V(#V}^;{{V*@T4WJ&U-NTq43w=|K>z8%pr_nC>%C(Wa_l78Ufib$r8Od)IIN=u>417 z`Hl{9A$mI5A(;+-Q&$F&h-@;NR>Z<2U;Y21>>Z;s@0V@SbkMQQj%_;~+qTuQ?c|AV zcWm3XZQHhP&R%QWarS%mJ!9R^&!_)*s(v+VR@I#QrAT}`17Y+l<`b-nvmDNW`De%y zrwTZ9EJrj1AFA>B`1jYDow}~*dfPs}IZMO3=a{Fy#IOILc8F0;JS4x(k-NSpbN@qM z`@aE_e}5{!$v3+qVs7u?sOV(y@1Os*Fgu`fCW9=G@F_#VQ%xf$hj0~wnnP0$hFI+@ zkQj~v#V>xn)u??YutKsX>pxKCl^p!C-o?+9;!Nug^ z{rP!|+KsP5%uF;ZCa5F;O^9TGac=M|=V z_H(PfkV1rz4jl?gJ(ArXMyWT4y(86d3`$iI4^l9`vLdZkzpznSd5Ikfrs8qcSy&>z zTIZgWZGXw0n9ibQxYWE@gI0(3#KA-dAdPcsL_|hg2@~C!VZDM}5;v_Nykfq!*@*Zf zE_wVgx82GMDryKO{U{D>vSzSc%B~|cjDQrt5BN=Ugpsf8H8f1lR4SGo#hCuXPL;QQ z#~b?C4MoepT3X`qdW2dNn& zo8)K}%Lpu>0tQei+{>*VGErz|qjbK#9 zvtd8rcHplw%YyQCKR{kyo6fgg!)6tHUYT(L>B7er5)41iG`j$qe*kSh$fY!PehLcD zWeKZHn<492B34*JUQh=CY1R~jT9Jt=k=jCU2=SL&&y5QI2uAG2?L8qd2U(^AW#{(x zThSy=C#>k+QMo^7caQcpU?Qn}j-`s?1vXuzG#j8(A+RUAY})F@=r&F(8nI&HspAy4 z4>(M>hI9c7?DCW8rw6|23?qQMSq?*Vx?v30U%luBo)B-k2mkL)Ljk5xUha3pK>EEj z@(;tH|M@xkuN?gsz;*bygizwYR!6=(Xgcg^>WlGtRYCozY<rFX2E>kaZo)O<^J7a`MX8Pf`gBd4vrtD|qKn&B)C&wp0O-x*@-|m*0egT=-t@%dD zgP2D+#WPptnc;_ugD6%zN}Z+X4=c61XNLb7L1gWd8;NHrBXwJ7s0ce#lWnnFUMTR& z1_R9Fin4!d17d4jpKcfh?MKRxxQk$@)*hradH2$3)nyXep5Z;B z?yX+-Bd=TqO2!11?MDtG0n(*T^!CIiF@ZQymqq1wPM_X$Iu9-P=^}v7npvvPBu!d$ z7K?@CsA8H38+zjA@{;{kG)#AHME>Ix<711_iQ@WWMObXyVO)a&^qE1GqpP47Q|_AG zP`(AD&r!V^MXQ^e+*n5~Lp9!B+#y3#f8J^5!iC@3Y@P`;FoUH{G*pj*q7MVV)29+j z>BC`a|1@U_v%%o9VH_HsSnM`jZ-&CDvbiqDg)tQEnV>b%Ptm)T|1?TrpIl)Y$LnG_ zzKi5j2Fx^K^PG1=*?GhK;$(UCF-tM~^=Z*+Wp{FSuy7iHt9#4n(sUuHK??@v+6*|10Csdnyg9hAsC5_OrSL;jVkLlf zHXIPukLqbhs~-*oa^gqgvtpgTk_7GypwH><53riYYL*M=Q@F-yEPLqQ&1Sc zZB%w}T~RO|#jFjMWcKMZccxm-SL)s_ig?OC?y_~gLFj{n8D$J_Kw%{r0oB8?@dWzn zB528d-wUBQzrrSSLq?fR!K%59Zv9J4yCQhhDGwhptpA5O5U?Hjqt>8nOD zi{)0CI|&Gu%zunGI*XFZh(ix)q${jT8wnnzbBMPYVJc4HX*9d^mz|21$=R$J$(y7V zo0dxdbX3N#=F$zjstTf*t8vL)2*{XH!+<2IJ1VVFa67|{?LP&P41h$2i2;?N~RA30LV`BsUcj zfO9#Pg1$t}7zpv#&)8`mis3~o+P(DxOMgz-V*(?wWaxi?R=NhtW}<#^Z?(BhSwyar zG|A#Q7wh4OfK<|DAcl9THc-W4*>J4nTevsD%dkj`U~wSUCh15?_N@uMdF^Kw+{agk zJ`im^wDqj`Ev)W3k3stasP`88-M0ZBs7;B6{-tSm3>I@_e-QfT?7|n0D~0RRqDb^G zyHb=is;IwuQ&ITzL4KsP@Z`b$d%B0Wuhioo1CWttW8yhsER1ZUZzA{F*K=wmi-sb#Ju+j z-l@In^IKnb{bQG}Ps>+Vu_W#grNKNGto+yjA)?>0?~X`4I3T@5G1)RqGUZuP^NJCq&^HykuYtMDD8qq+l8RcZNJsvN(10{ zQ1$XcGt}QH-U^WU!-wRR1d--{B$%vY{JLWIV%P4-KQuxxDeJaF#{eu&&r!3Qu{w}0f--8^H|KwE>)ORrcR+2Qf zb})DRcH>k0zWK8@{RX}NYvTF;E~phK{+F;MkIP$)T$93Ba2R2TvKc>`D??#mv9wg$ zd~|-`Qx5LwwsZ2hb*Rt4S9dsF%Cny5<1fscy~)d;0m2r$f=83<->c~!GNyb!U)PA; zq^!`@@)UaG)Ew(9V?5ZBq#c%dCWZrplmuM`o~TyHjAIMh0*#1{B>K4po-dx$Tk-Cq z=WZDkP5x2W&Os`N8KiYHRH#UY*n|nvd(U>yO=MFI-2BEp?x@=N<~CbLJBf6P)}vLS?xJXYJ2^<3KJUdrwKnJnTp{ zjIi|R=L7rn9b*D#Xxr4*R<3T5AuOS+#U8hNlfo&^9JO{VbH!v9^JbK=TCGR-5EWR@ zN8T-_I|&@A}(hKeL4_*eb!1G8p~&_Im8|wc>Cdir+gg90n1dw?QaXcx6Op_W1r=axRw>4;rM*UOpT#Eb9xU1IiWo@h?|5uP zka>-XW0Ikp@dIe;MN8B01a7+5V@h3WN{J=HJ*pe0uwQ3S&MyWFni47X32Q7SyCTNQ z+sR!_9IZa5!>f&V$`q!%H8ci!a|RMx5}5MA_kr+bhtQy{-^)(hCVa@I!^TV4RBi zAFa!Nsi3y37I5EK;0cqu|9MRj<^r&h1lF}u0KpKQD^5Y+LvFEwM zLU@@v4_Na#Axy6tn3P%sD^5P#<7F;sd$f4a7LBMk zGU^RZHBcxSA%kCx*eH&wgA?Qwazm8>9SCSz_!;MqY-QX<1@p$*T8lc?@`ikEqJ>#w zcG``^CoFMAhdEXT9qt47g0IZkaU)4R7wkGs^Ax}usqJ5HfDYAV$!=6?>J6+Ha1I<5 z|6=9soU4>E))tW$<#>F ziZ$6>KJf0bPfbx_)7-}tMINlc=}|H+$uX)mhC6-Hz+XZxsKd^b?RFB6et}O#+>Wmw9Ec9) z{q}XFWp{3@qmyK*Jvzpyqv57LIR;hPXKsrh{G?&dRjF%Zt5&m20Ll?OyfUYC3WRn{cgQ?^V~UAv+5 z&_m#&nIwffgX1*Z2#5^Kl4DbE#NrD&Hi4|7SPqZ}(>_+JMz=s|k77aEL}<=0Zfb)a z%F(*L3zCA<=xO)2U3B|pcTqDbBoFp>QyAEU(jMu8(jLA61-H!ucI804+B!$E^cQQa z)_ERrW3g!B9iLb3nn3dlkvD7KsY?sRvls3QC0qPi>o<)GHx%4Xb$5a3GBTJ(k@`e@ z$RUa^%S15^1oLEmA=sayrP5;9qtf!Z1*?e$ORVPsXpL{jL<6E)0sj&swP3}NPmR%FM?O>SQgN5XfHE< zo(4#Cv11(%Nnw_{_Ro}r6=gKd{k?NebJ~<~Kv0r(r0qe4n3LFx$5%x(BKvrz$m?LG zjLIc;hbj0FMdb9aH9Lpsof#yG$(0sG2%RL;d(n>;#jb!R_+dad+K;Ccw!|RY?uS(a zj~?=&M!4C(5LnlH6k%aYvz@7?xRa^2gml%vn&eKl$R_lJ+e|xsNfXzr#xuh(>`}9g zLHSyiFwK^-p!;p$yt7$F|3*IfO3Mlu9e>Dpx8O`37?fA`cj`C0B-m9uRhJjs^mRp# zWB;Aj6|G^1V6`jg7#7V9UFvnB4((nIwG?k%c7h`?0tS8J3Bn0t#pb#SA}N-|45$-j z$R>%7cc2ebAClXc(&0UtHX<>pd)akR3Kx_cK+n<}FhzmTx!8e9^u2e4%x{>T6pQ`6 zO182bh$-W5A3^wos0SV_TgPmF4WUP-+D25KjbC{y_6W_9I2_vNKwU(^qSdn&>^=*t z&uvp*@c8#2*paD!ZMCi3;K{Na;I4Q35zw$YrW5U@Kk~)&rw;G?d7Q&c9|x<Hg|CNMsxovmfth*|E*GHezPTWa^Hd^F4!B3sF;)? z(NaPyAhocu1jUe(!5Cy|dh|W2=!@fNmuNOzxi^tE_jAtzNJ0JR-avc_H|ve#KO}#S z#a(8secu|^Tx553d4r@3#6^MHbH)vmiBpn0X^29xEv!Vuh1n(Sr5I0V&`jA2;WS|Y zbf0e}X|)wA-Pf5gBZ>r4YX3Mav1kKY(ulAJ0Q*jB)YhviHK)w!TJsi3^dMa$L@^{` z_De`fF4;M87vM3Ph9SzCoCi$#Fsd38u!^0#*sPful^p5oI(xGU?yeYjn;Hq1!wzFk zG&2w}W3`AX4bxoVm03y>ts{KaDf!}b&7$(P4KAMP=vK5?1In^-YYNtx1f#}+2QK@h zeSeAI@E6Z8a?)>sZ`fbq9_snl6LCu6g>o)rO;ijp3|$vig+4t} zylEo7$SEW<_U+qgVcaVhk+4k+C9THI5V10qV*dOV6pPtAI$)QN{!JRBKh-D zk2^{j@bZ}yqW?<#VVuI_27*cI-V~sJiqQv&m07+10XF+#ZnIJdr8t`9s_EE;T2V;B z4UnQUH9EdX%zwh-5&wflY#ve!IWt0UE-My3?L#^Bh%kcgP1q{&26eXLn zTkjJ*w+(|_>Pq0v8{%nX$QZbf)tbJaLY$03;MO=Ic-uqYUmUCuXD>J>o6BCRF=xa% z3R4SK9#t1!K4I_d>tZgE>&+kZ?Q}1qo4&h%U$GfY058s%*=!kac{0Z+4Hwm!)pFLR zJ+5*OpgWUrm0FPI2ib4NPJ+Sk07j(`diti^i#kh&f}i>P4~|d?RFb#!JN)~D@)beox}bw?4VCf^y*`2{4`-@%SFTry2h z>9VBc9#JxEs1+0i2^LR@B1J`B9Ac=#FW=(?2;5;#U$0E0UNag_!jY$&2diQk_n)bT zl5Me_SUvqUjwCqmVcyb`igygB_4YUB*m$h5oeKv3uIF0sk}~es!{D>4r%PC*F~FN3owq5e0|YeUTSG#Vq%&Gk7uwW z0lDo#_wvflqHeRm*}l?}o;EILszBt|EW*zNPmq#?4A+&i0xx^?9obLyY4xx=Y9&^G;xYXYPxG)DOpPg!i_Ccl#3L}6xAAZzNhPK1XaC_~ z!A|mlo?Be*8Nn=a+FhgpOj@G7yYs(Qk(8&|h@_>w8Y^r&5nCqe0V60rRz?b5%J;GYeBqSAjo|K692GxD4` zRZyM2FdI+-jK2}WAZTZ()w_)V{n5tEb@>+JYluDozCb$fA4H)$bzg(Ux{*hXurjO^ zwAxc+UXu=&JV*E59}h3kzQPG4M)X8E*}#_&}w*KEgtX)cU{vm9b$atHa;s>| z+L6&cn8xUL*OSjx4YGjf6{Eq+Q3{!ZyhrL&^6Vz@jGbI%cAM9GkmFlamTbcQGvOlL zmJ?(FI)c86=JEs|*;?h~o)88>12nXlpMR4@yh%qdwFNpct;vMlc=;{FSo*apJ;p}! zAX~t;3tb~VuP|ZW;z$=IHf->F@Ml)&-&Bnb{iQyE#;GZ@C$PzEf6~q}4D>9jic@mTO5x76ulDz@+XAcm35!VSu zT*Gs>;f0b2TNpjU_BjHZ&S6Sqk6V1370+!eppV2H+FY!q*n=GHQ!9Rn6MjY!Jc77A zG7Y!lFp8?TIHN!LXO?gCnsYM-gQxsm=Ek**VmZu7vnuufD7K~GIxfxbsQ@qv2T zPa`tvHB$fFCyZl>3oYg?_wW)C>^_iDOc^B7klnTOoytQH18WkOk)L2BSD0r%xgRSW zQS9elF^?O=_@|58zKLK;(f77l-Zzu}4{fXed2saq!5k#UZAoDBqYQS{sn@j@Vtp|$ zG%gnZ$U|9@u#w1@11Sjl8ze^Co=)7yS(}=;68a3~g;NDe_X^}yJj;~s8xq9ahQ5_r zxAlTMnep*)w1e(TG%tWsjo3RR;yVGPEO4V{Zp?=a_0R#=V^ioQu4YL=BO4r0$$XTX zZfnw#_$V}sDAIDrezGQ+h?q24St0QNug_?{s-pI(^jg`#JRxM1YBV;a@@JQvH8*>> zIJvku74E0NlXkYe_624>znU0J@L<-c=G#F3k4A_)*;ky!C(^uZfj%WB3-*{*B$?9+ zDm$WFp=0(xnt6`vDQV3Jl5f&R(Mp};;q8d3I%Kn>Kx=^;uSVCw0L=gw53%Bp==8Sw zxtx=cs!^-_+i{2OK`Q;913+AXc_&Z5$@z3<)So0CU3;JAv=H?@Zpi~riQ{z-zLtVL z!oF<}@IgJp)Iyz1zVJ42!SPHSkjYNS4%ulVVIXdRuiZ@5Mx8LJS}J#qD^Zi_xQ@>DKDr-_e#>5h3dtje*NcwH_h;i{Sx7}dkdpuW z(yUCjckQsagv*QGMSi9u1`Z|V^}Wjf7B@q%j2DQXyd0nOyqg%m{CK_lAoKlJ7#8M} z%IvR?Vh$6aDWK2W!=i?*<77q&B8O&3?zP(Cs@kapc)&p7En?J;t-TX9abGT#H?TW? ztO5(lPKRuC7fs}zwcUKbRh=7E8wzTsa#Z{a`WR}?UZ%!HohN}d&xJ=JQhpO1PI#>X zHkb>pW04pU%Bj_mf~U}1F1=wxdBZu1790>3Dm44bQ#F=T4V3&HlOLsGH)+AK$cHk6 zia$=$kog?)07HCL*PI6}DRhpM^*%I*kHM<#1Se+AQ!!xyhcy6j7`iDX7Z-2i73_n# zas*?7LkxS-XSqv;YBa zW_n*32D(HTYQ0$feV_Fru1ZxW0g&iwqixPX3=9t4o)o|kOo79V$?$uh?#8Q8e>4e)V6;_(x&ViUVxma+i25qea;d-oK7ouuDsB^ab{ zu1qjQ%`n56VtxBE#0qAzb7lph`Eb-}TYpXB!H-}3Ykqyp`otprp7{VEuW*^IR2n$Fb99*nAtqT&oOFIf z@w*6>YvOGw@Ja?Pp1=whZqydzx@9X4n^2!n83C5{C?G@|E?&$?p*g68)kNvUTJ)I6 z1Q|(#UuP6pj78GUxq11m-GSszc+)X{C2eo-?8ud9sB=3(D47v?`JAa{V(IF zPZQ_0AY*9M97>Jf<o%#O_%Wq}8>YM=q0|tGY+hlXcpE=Z4Od z`NT7Hu2hnvRoqOw@g1f=bv`+nba{GwA$Ak0INlqI1k<9!x_!sL()h?hEWoWrdU3w` zZ%%)VR+Bc@_v!C#koM1p-3v_^L6)_Ktj4HE>aUh%2XZE@JFMOn)J~c`_7VWNb9c-N z2b|SZMR4Z@E7j&q&9(6H3yjEu6HV7{2!1t0lgizD;mZ9$r(r7W5G$ky@w(T_dFnOD z*p#+z$@pKE+>o@%eT(2-p_C}wbQ5s(%Sn_{$HDN@MB+Ev?t@3dPy`%TZ!z}AThZSu zN<1i$siJhXFdjV zP*y|V<`V8t=h#XTRUR~5`c`Z9^-`*BZf?WAehGdg)E2Je)hqFa!k{V(u+(hTf^Yq& zoruUh2(^3pe)2{bvt4&4Y9CY3js)PUHtd4rVG57}uFJL)D(JfSIo^{P=7liFXG zq5yqgof0V8paQcP!gy+;^pp-DA5pj=gbMN0eW=-eY+N8~y+G>t+x}oa!5r>tW$xhI zPQSv=pi;~653Gvf6~*JcQ%t1xOrH2l3Zy@8AoJ+wz@daW@m7?%LXkr!bw9GY@ns3e zSfuWF_gkWnesv?s3I`@}NgE2xwgs&rj?kH-FEy82=O8`+szN ziHch`vvS`zNfap14!&#i9H@wF7}yIPm=UB%(o(}F{wsZ(wA0nJ2aD^@B41>>o-_U6 zUqD~vdo48S8~FTb^+%#zcbQiiYoDKYcj&$#^;Smmb+Ljp(L=1Kt_J!;0s%1|JK}Wi z;={~oL!foo5n8=}rs6MmUW~R&;SIJO3TL4Ky?kh+b2rT9B1Jl4>#Uh-Bec z`Hsp<==#UEW6pGPhNk8H!!DUQR~#F9jEMI6T*OWfN^Ze&X(4nV$wa8QUJ>oTkruH# zm~O<`J7Wxseo@FqaZMl#Y(mrFW9AHM9Kb|XBMqaZ2a)DvJgYipkDD_VUF_PKd~dT7 z#02}bBfPn9a!X!O#83=lbJSK#E}K&yx-HI#T6ua)6o0{|={*HFusCkHzs|Fn&|C3H zBck1cmfcWVUN&i>X$YU^Sn6k2H;r3zuXbJFz)r5~3$d$tUj(l1?o={MM){kjgqXRO zc5R*#{;V7AQh|G|)jLM@wGAK&rm2~@{Pewv#06pHbKn#wL0P6F1!^qw9g&cW3Z=9} zj)POhOlwsh@eF=>z?#sIs*C-Nl(yU!#DaiaxhEs#iJqQ8w%(?+6lU02MYSeDkr!B- zPjMv+on6OLXgGnAtl(ao>|X2Y8*Hb}GRW5}-IzXnoo-d0!m4Vy$GS!XOLy>3_+UGs z2D|YcQx@M#M|}TDOetGi{9lGo9m-=0-^+nKE^*?$^uHkxZh}I{#UTQd;X!L+W@jm( zDg@N4+lUqI92o_rNk{3P>1gxAL=&O;x)ZT=q1mk0kLlE$WeWuY_$0`0jY-Kkt zP*|m3AF}Ubd=`<>(Xg0har*_@x2YH}bn0Wk*OZz3*e5;Zc;2uBdnl8?&XjupbkOeNZsNh6pvsq_ydmJI+*z**{I{0K)-;p1~k8cpJXL$^t!-`E}=*4G^-E8>H!LjTPxSx zcF+cS`ommfKMhNSbas^@YbTpH1*RFrBuATUR zt{oFWSk^$xU&kbFQ;MCX22RAN5F6eq9UfR$ut`Jw--p2YX)A*J69m^!oYfj2y7NYcH6&r+0~_sH^c^nzeN1AU4Ga7=FlR{S|Mm~MpzY0$Z+p2W(a={b-pR9EO1Rs zB%KY|@wLcAA@)KXi!d2_BxrkhDn`DT1=Dec}V!okd{$+wK z4E{n8R*xKyci1(CnNdhf$Dp2(Jpof0-0%-38X=Dd9PQgT+w%Lshx9+loPS~MOm%ZT zt%2B2iL_KU_ita%N>xjB!#71_3=3c}o zgeW~^U_ZTJQ2!PqXulQd=3b=XOQhwATK$y(9$#1jOQ4}4?~l#&nek)H(04f(Sr=s| zWv7Lu1=%WGk4FSw^;;!8&YPM)pQDCY9DhU`hMty1@sq1=Tj7bFsOOBZOFlpR`W>-J$-(kezWJj;`?x-v>ev{*8V z8p|KXJPV$HyQr1A(9LVrM47u-XpcrIyO`yWvx1pVYc&?154aneRpLqgx)EMvRaa#|9?Wwqs2+W8n5~79G z(}iCiLk;?enn}ew`HzhG+tu+Ru@T+K5juvZN)wY;x6HjvqD!&!)$$;1VAh~7fg0K| zEha#aN=Yv|3^~YFH}cc38ovVb%L|g@9W6fo(JtT6$fa?zf@Ct88e}m?i)b*Jgc{fl zExfdvw-BYDmH6>(4QMt#p0;FUIQqkhD}aH?a7)_%JtA~soqj{ppP_82yi9kaxuK>~ ze_)Zt>1?q=ZH*kF{1iq9sr*tVuy=u>Zev}!gEZx@O6-fjyu9X00gpIl-fS_pzjpqJ z1yqBmf9NF!jaF<+YxgH6oXBdK)sH(>VZ)1siyA$P<#KDt;8NT*l_0{xit~5j1P)FN zI8hhYKhQ)i z37^aP13B~u65?sg+_@2Kr^iWHN=U;EDSZ@2W2!5ALhGNWXnFBY%7W?1 z=HI9JzQ-pLKZDYTv<0-lt|6c-RwhxZ)mU2Os{bsX_i^@*fKUj8*aDO5pks=qn3Dv6 zwggpKLuyRCTVPwmw1r}B#AS}?X7b837UlXwp~E2|PJw2SGVueL7){Y&z!jL!XN=0i zU^Eig`S2`{+gU$68aRdWx?BZ{sU_f=8sn~>s~M?GU~`fH5kCc; z8ICp+INM3(3{#k32RZdv6b9MQYdZXNuk7ed8;G?S2nT+NZBG=Tar^KFl2SvhW$bGW#kdWL-I)s_IqVnCDDM9fm8g;P;8 z7t4yZn3^*NQfx7SwmkzP$=fwdC}bafQSEF@pd&P8@H#`swGy_rz;Z?Ty5mkS%>m#% zp_!m9e<()sfKiY(nF<1zBz&&`ZlJf6QLvLhl`_``%RW&{+O>Xhp;lwSsyRqGf=RWd zpftiR`={2(siiPAS|p}@q=NhVc0ELprt%=fMXO3B)4ryC2LT(o=sLM7hJC!}T1@)E zA3^J$3&1*M6Xq>03FX`R&w*NkrZE?FwU+Muut;>qNhj@bX17ZJxnOlPSZ=Zeiz~T_ zOu#yc3t6ONHB;?|r4w+pI)~KGN;HOGC)txxiUN8#mexj+W(cz%9a4sx|IRG=}ia zuEBuba3AHsV2feqw-3MvuL`I+2|`Ud4~7ZkN=JZ;L20|Oxna5vx1qbIh#k2O4$RQF zo`tL()zxaqibg^GbB+BS5#U{@K;WWQj~GcB1zb}zJkPwH|5hZ9iH2308!>_;%msji zJHSL~s)YHBR=Koa1mLEOHos*`gp=s8KA-C zu0aE+W!#iJ*0xqKm3A`fUGy#O+X+5W36myS>Uh2!R*s$aCU^`K&KKLCCDkejX2p=5 z%o7-fl03x`gaSNyr?3_JLv?2RLS3F*8ub>Jd@^Cc17)v8vYEK4aqo?OS@W9mt%ITJ z9=S2%R8M){CugT@k~~0x`}Vl!svYqX=E)c_oU6o}#Hb^%G1l3BudxA{F*tbjG;W_>=xV73pKY53v%>I)@D36I_@&p$h|Aw zonQS`07z_F#@T-%@-Tb|)7;;anoD_WH>9ewFy(ZcEOM$#Y)8>qi7rCnsH9GO-_7zF zu*C87{Df1P4TEOsnzZ@H%&lvV(3V@;Q!%+OYRp`g05PjY^gL$^$-t0Y>H*CDDs?FZly*oZ&dxvsxaUWF!{em4{A>n@vpXg$dwvt@_rgmHF z-MER`ABa8R-t_H*kv>}CzOpz;!>p^^9ztHMsHL|SRnS<-y5Z*r(_}c4=fXF`l^-i}>e7v!qs_jv zqvWhX^F=2sDNWA9c@P0?lUlr6ecrTKM%pNQ^?*Lq?p-0~?_j50xV%^(+H>sMul#Tw zeciF*1=?a7cI(}352%>LO96pD+?9!fNyl^9v3^v&Y4L)mNGK0FN43&Xf8jUlxW1Bw zyiu2;qW-aGNhs=zbuoxnxiwZ3{PFZM#Kw)9H@(hgX23h(`Wm~m4&TvoZoYp{plb^> z_#?vXcxd>r7K+1HKJvhed>gtK`TAbJUazUWQY6T~t2af%#<+Veyr%7-#*A#@&*;@g58{i|E%6yC_InGXCOd{L0;$)z#?n7M`re zh!kO{6=>7I?*}czyF7_frt#)s1CFJ_XE&VrDA?Dp3XbvF{qsEJgb&OLSNz_5g?HpK z9)8rsr4JN!Af3G9!#Qn(6zaUDqLN(g2g8*M)Djap?WMK9NKlkC)E2|-g|#-rp%!Gz zAHd%`iq|81efi93m3yTBw3g0j#;Yb2X{mhRAI?&KDmbGqou(2xiRNb^sV}%%Wu0?< z?($L>(#BO*)^)rSgyNRni$i`R4v;GhlCZ8$@e^ROX(p=2_v6Y!%^As zu022)fHdv_-~Yu_H6WVPLpHQx!W%^6j)cBhS`O3QBW#x(eX54d&I22op(N59b*&$v zFiSRY6rOc^(dgSV1>a7-5C;(5S5MvKcM2Jm-LD9TGqDpP097%52V+0>Xqq!! zq4e3vj53SE6i8J`XcQB|MZPP8j;PAOnpGnllH6#Ku~vS42xP*Nz@~y%db7Xi8s09P z1)e%8ys6&M8D=Dt6&t`iKG_4X=!kgRQoh%Z`dc&mlOUqXk-k`jKv9@(a^2-Upw>?< zt5*^DV~6Zedbec4NVl($2T{&b)zA@b#dUyd>`2JC0=xa_fIm8{5um zr-!ApXZhC8@=vC2WyxO|!@0Km)h8ep*`^he92$@YwP>VcdoS5OC^s38e#7RPsg4j+ zbVGG}WRSET&ZfrcR(x~k8n1rTP%CnfUNKUonD$P?FtNFF#cn!wEIab-;jU=B1dHK@ z(;(yAQJ`O$sMn>h;pf^8{JISW%d+@v6@CnXh9n5TXGC}?FI9i-D0OMaIg&mAg=0Kn zNJ7oz5*ReJukD55fUsMuaP+H4tDN&V9zfqF@ zr=#ecUk9wu{0;!+gl;3Bw=Vn^)z$ahVhhw)io!na&9}LmWurLb0zubxK=UEnU*{5P z+SP}&*(iBKSO4{alBHaY^)5Q=mZ+2OwIooJ7*Q5XJ+2|q`9#f?6myq!&oz?klihLq z4C)$XP!BNS0G_Z1&TM>?Jk{S~{F3n83ioli=IO6f%wkvCl(RFFw~j0tb{GvXTx>*sB0McY0s&SNvj4+^h`9nJ_wM>F!Uc>X}9PifQekn0sKI2SAJP!a4h z5cyGTuCj3ZBM^&{dRelIlT^9zcfaAuL5Y~bl!ppSf`wZbK$z#6U~rdclk``e+!qhe z6Qspo*%<)eu6?C;Bp<^VuW6JI|Ncvyn+LlSl;Mp22Bl7ARQ0Xc24%29(ZrdsIPw&-=yHQ7_Vle|5h>AST0 zUGX2Zk34vp?U~IHT|;$U86T+UUHl_NE4m|}>E~6q``7hccCaT^#y+?wD##Q%HwPd8 zV3x4L4|qqu`B$4(LXqDJngNy-{&@aFBvVsywt@X^}iH7P%>bR?ciC$I^U-4Foa`YKI^qDyGK7k%E%c_P=yzAi`YnxGA%DeNd++j3*h^ z=rn>oBd0|~lZ<6YvmkKY*ZJlJ;Im0tqgWu&E92eqt;+NYdxx`eS(4Hw_Jb5|yVvBg z*tbdY^!AN;luEyN4VRhS@-_DC{({ziH{&Z}iGElSV~qvT>L-8G%+yEL zX#MFOhj{InyKG=mvW-<1B@c-}x$vA(nU?>S>0*eN#!SLzQ)Ex7fvQ)S4D<8|I#N$3 zT5Ei`Z?cxBODHX8(Xp73v`IsAYC@9b;t}z0wxVuQSY1J^GRwDPN@qbM-ZF48T$GZ< z8WU+;Pqo?{ghI-KZ-i*ydXu`Ep0Xw^McH_KE9J0S7G;x8Fe`DVG?j3Pv=0YzJ}yZR z%2=oqHiUjvuk0~Ca>Kol4CFi0_xQT~;_F?=u+!kIDl-9g`#ZNZ9HCy17Ga1v^Jv9# z{T4Kb1-AzUxq*MutfOWWZgD*HnFfyYg0&e9f(5tZ>krPF6{VikNeHoc{linPPt#Si z&*g>(c54V8rT_AX!J&bNm-!umPvOR}vDai#`CX___J#=zeB*{4<&2WpaDncZsOkp* zsg<%@@rbrMkR_ux9?LsQxzoBa1s%$BBn6vk#{&&zUwcfzeCBJUwFYSF$08qDsB;gWQN*g!p8pxjofWbqNSZOEKOaTx@+* zwdt5*Q47@EOZ~EZL9s?1o?A%9TJT=Ob_13yyugvPg*e&ZU(r6^k4=2+D-@n=Hv5vu zSXG|hM(>h9^zn=eQ=$6`JO&70&2|%V5Lsx>)(%#;pcOfu>*nk_3HB_BNaH$`jM<^S zcSftDU1?nL;jy)+sfonQN}(}gUW?d_ikr*3=^{G)=tjBtEPe>TO|0ddVB zTklrSHiW+!#26frPXQQ(YN8DG$PZo?(po(QUCCf_OJC`pw*uey00%gmH!`WJkrKXj2!#6?`T25mTu9OJp2L8z3! z=arrL$ZqxuE{%yV)14Kd>k}j7pxZ6#$Dz8$@WV5p8kTqN<-7W)Q7Gt2{KoOPK_tZ| zf2WG~O5@{qPI+W<4f_;reuFVdO^5`ADC1!JQE|N`s3cq@(0WB!n0uh@*c{=LAd;~} zyGK@hbF-Oo+!nN)@i*O(`@FA#u?o=~e{`4O#5}z&=UkU*50fOrzi11D^&FOqe>wii z?*k+2|EcUs;Gx{!@KBT~>PAwLrIDT7Th=Utu?~?np@t^gFs?zgX=D${RwOY^WGh-+ z+#4$066ISh8eYW#FXWp~S`<*%O^ZuItL1Tyqt8#tZ zY120E;^VG`!lZn&3sPd$RkdHpU#|w+bYV)pJC|SH9g%|5IkxVTQcBA4CL0}$&}ef@ zW^Vtj%M;;_1xxP9x#ex17&4N*{ksO*_4O}xYu(p*JkL#yr}@7b)t5X?%CY<+s5_MJ zuiqt+N_;A(_)%lumoyRFixWa-M7qK_9s6<1X?JDa9fP!+_6u~~M$5L=ipB=7(j#f< zZ34J%=bs549%~_mA(|={uZNs_0?o7;-LBP(ZRnkd{-^|2|=4vUTmtByHL8 zEph`(LSEzQj68a+`d$V<45J7cyv^#|^|%fD#si1Nx!4NW*`l*{->HEWNh6-|g>-=r zXmQ|-i}Ku$ndUeHQ^&ieT!Lf}vf6GaqW9$DJ2NWrqwPY%%4nip$@vK$nRp*_C-v<| zuKz~ZyN&<%!NS26&x?jhy+@awJipMQ-8(X4#Ae5??U<1QMt1l9R=w9fAnEF}NYu$2 z>6}Vkc zIb*A?G*z8^IvibmBKn_u^5&T_1oey0gZS2~obf(#xk=erZGTEdQnt3DMGM+0oPwss zj5zXD;(oWhB_T@~Ig#9@v)AKtXu3>Inmgf@A|-lD-1U>cNyl3h?ADD9)GG4}zUGPk zZzaXe!~Kf?<~@$G?Uql3t8jy9{2!doq4=J}j9ktTxss{p6!9UdjyDERlA*xZ!=Q)KDs5O)phz>Vq3BNGoM(H|=1*Q4$^2fTZw z(%nq1P|5Rt81}SYJpEEzMPl5VJsV5&4e)ZWKDyoZ>1EwpkHx-AQVQc8%JMz;{H~p{=FXV>jIxvm4X*qv52e?Y-f%DJ zxEA165GikEASQ^fH6K#d!Tpu2HP{sFs%E=e$gYd$aj$+xue6N+Wc(rAz~wUsk2`(b z8Kvmyz%bKQxpP}~baG-rwYcYCvkHOi zlkR<=>ZBTU*8RF_d#Bl@zZsRIhx<%~Z@Z=ik z>adw3!DK(8R|q$vy{FTxw%#xliD~6qXmY^7_9kthVPTF~Xy1CfBqbU~?1QmxmU=+k z(ggxvEuA;0e&+ci-zQR{-f7aO{O(Pz_OsEjLh_K>MbvoZ4nxtk5u{g@nPv)cgW_R} z9}EA4K4@z0?7ue}Z(o~R(X&FjejUI2g~08PH1E4w>9o{)S(?1>Z0XMvTb|;&EuyOE zGvWNpYX)Nv<8|a^;1>bh#&znEcl-r!T#pn= z4$?Yudha6F%4b>*8@=BdtXXY4N+`U4Dmx$}>HeVJk-QdTG@t!tVT#0(LeV0gvqyyw z2sEp^9eY0N`u10Tm4n8No&A=)IeEC|gnmEXoNSzu!1<4R<%-9kY_8~5Ej?zRegMn78wuMs#;i&eUA0Zk_RXQ3b&TT} z;SCI=7-FUB@*&;8|n>(_g^HGf3@QODE3LpmX~ELnymQm{Sx9xrKS zK29p~?v@R$0=v6Dr5aW>-!{+h@?Q58|Kz8{{W`%J+lDAdb&M5VHrX_mDY;1-JLnf)ezmPau$)1;=`-FU=-r-83tX=C`S#}GZufju zQ>sXNT0Ny=k@nc%cFnvA_i4SC)?_ORXHq8B4D%el1uPX`c~uG#S1M7C+*MMqLw78E zhY2dI8@+N^qrMI1+;TUda(vGqGSRyU{Fnm`aqrr7bz42c5xsOO-~oZpkzorD1g}Y<6rk&3>PsSGy}W?MtqFky@A(X# zIuNZK0cK?^=;PUAu>j0#HtjbHCV*6?jzA&OoE$*Jlga*}LF`SF?WLhv1O|zqC<>*> zYB;#lsYKx0&kH@BFpW8n*yDcc6?;_zaJs<-jPSkCsSX-!aV=P5kUgF@Nu<{a%#K*F z134Q{9|YX7X(v$62_cY3^G%t~rD>Q0z@)1|zs)vjJ6Jq9;7#Ki`w+eS**En?7;n&7 zu==V3T&eFboN3ZiMx3D8qYc;VjFUk_H-WWCau(VFXSQf~viH0L$gwD$UfFHqNcgN`x}M+YQ6RnN<+@t>JUp#)9YOkqst-Ga?{FsDpEeX0(5v{0J~SEbWiL zXC2}M4?UH@u&|;%0y`eb33ldo4~z-x8zY!oVmV=c+f$m?RfDC35mdQ2E>Pze7KWP- z>!Bh<&57I+O_^s}9Tg^k)h7{xx@0a0IA~GAOt2yy!X%Q$1rt~LbTB6@Du!_0%HV>N zlf)QI1&gvERKwso23mJ!Ou6ZS#zCS5W`gxE5T>C#E|{i<1D35C222I33?Njaz`On7 zi<+VWFP6D{e-{yiN#M|Jgk<44u1TiMI78S5W`Sdb5f+{zu34s{CfWN7a3Cf^@L%!& zN$?|!!9j2c)j$~+R6n#891w-z8(!oBpL2K=+%a$r2|~8-(vQj5_XT`<0Ksf;oP+tz z9CObS!0m)Tgg`K#xBM8B(|Z)Wb&DYL{WTYv`;A=q6~Nnx2+!lTIXtj8J7dZE!P_{z z#f8w6F}^!?^KE#+ZDv+xd5O&3EmomZzsv?>E-~ygGum45fk!SBN&|eo1rKw^?aZJ4 E2O(~oYXATM literal 0 HcmV?d00001 diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..3c4101c3e --- /dev/null +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-all.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/android/gradlew b/android/gradlew new file mode 100755 index 000000000..4f906e0c8 --- /dev/null +++ b/android/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/android/gradlew.bat b/android/gradlew.bat new file mode 100644 index 000000000..107acd32c --- /dev/null +++ b/android/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/android/settings.gradle b/android/settings.gradle new file mode 100644 index 000000000..3b4431d77 --- /dev/null +++ b/android/settings.gradle @@ -0,0 +1,5 @@ +include ':app' +include ':capacitor-cordova-android-plugins' +project(':capacitor-cordova-android-plugins').projectDir = new File('./capacitor-cordova-android-plugins/') + +apply from: 'capacitor.settings.gradle' \ No newline at end of file diff --git a/android/variables.gradle b/android/variables.gradle new file mode 100644 index 000000000..967549c54 --- /dev/null +++ b/android/variables.gradle @@ -0,0 +1,14 @@ +ext { + minSdkVersion = 21 + compileSdkVersion = 30 + targetSdkVersion = 30 + androidxActivityVersion = '1.2.0' + androidxAppCompatVersion = '1.2.0' + androidxCoordinatorLayoutVersion = '1.1.0' + androidxCoreVersion = '1.3.2' + androidxFragmentVersion = '1.3.0' + junitVersion = '4.13.1' + androidxJunitVersion = '1.1.2' + androidxEspressoCoreVersion = '3.3.0' + cordovaAndroidVersion = '7.0.0' +} \ No newline at end of file diff --git a/capacitor.config.ts b/capacitor.config.ts new file mode 100644 index 000000000..f0933bb07 --- /dev/null +++ b/capacitor.config.ts @@ -0,0 +1,10 @@ +import { CapacitorConfig } from '@capacitor/cli'; + +const config: CapacitorConfig = { + appId: 'ch.twohundredok.organice', + appName: 'organice', + webDir: 'build', + bundledWebRuntime: false +}; + +export default config; diff --git a/images/api_32.png b/images/api_32.png new file mode 100644 index 0000000000000000000000000000000000000000..c20bb89adc75aba0bb20505d1221a813469131ff GIT binary patch literal 101128 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�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

xCqUYP)*ScadUYm8#kvzqo$ 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 literal 0 HcmV?d00001 diff --git a/package.json b/package.json index 9f2af2351..287820332 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,10 @@ "node": "^12.13.1" }, "dependencies": { + "@babel/helper-environment-visitor": "^7.18.2", "@bity/oauth2-auth-code-pkce": "^2.13.0", + "@capacitor/android": "^3.5.1", + "@capacitor/core": "^3.5.1", "bowser": "^2.11.0", "classnames": "^2.2.6", "date-fns": "^2.16.1", @@ -44,6 +47,7 @@ "postinstall": "if [ \"$ON_HEROKU\" ]; then npm install -g serve; fi" }, "devDependencies": { + "@capacitor/cli": "^3.5.1", "@testing-library/jest-dom": "^5.14.1", "@testing-library/react": "12.0.0", "babel-eslint": "^10.1.0", @@ -52,8 +56,8 @@ "eslint-plugin-jest": "^23.20.0", "eslint-plugin-react": "^7.23.2", "eslint-plugin-react-redux": "^3.3.0", - "prettier-eslint": "^11.0.0", "prettier": "^2.0.5", + "prettier-eslint": "^11.0.0", "prettier-eslint-cli": "^5.0.1", "raw.macro": "0.4.2", "react-test-renderer": "^17.0.1" diff --git a/yarn.lock b/yarn.lock index e5e041ba7..7c4a9f1de 100644 --- a/yarn.lock +++ b/yarn.lock @@ -217,6 +217,11 @@ "@babel/types" "^7.8.3" lodash "^4.17.13" +"@babel/helper-environment-visitor@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd" + integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ== + "@babel/helper-explode-assignable-expression@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" @@ -1757,6 +1762,40 @@ resolved "https://registry.yarnpkg.com/@bity/oauth2-auth-code-pkce/-/oauth2-auth-code-pkce-2.13.0.tgz#cee077db75182b01e9b576a52ee408480d39bdc5" integrity sha512-jAVsbLIVHvo0Lm6sj2t3ltiLbWKvTlkVflHCiV9DRk1w9FBEOjpJD7OJXkeWBY0Vgr+XiGIm80yJa+sa8XpnWQ== +"@capacitor/android@^3.5.1": + version "3.5.1" + resolved "https://registry.yarnpkg.com/@capacitor/android/-/android-3.5.1.tgz#d81ec82f84ab7f0abeadb4cc100e6a3820197d65" + integrity sha512-rjehS0+BQBlwoN8hUyrMuzexn/9QJsONb1kmN5uXcL8JuTEbv35fa7z0tSD4x1LKwUFd+3Zeuwt60QRuwijlmw== + +"@capacitor/cli@^3.5.1": + version "3.5.1" + resolved "https://registry.yarnpkg.com/@capacitor/cli/-/cli-3.5.1.tgz#7184554f3460a6fa0988ed7db2617fd53e7eade5" + integrity sha512-zIA5BqT8ZnfUFEJwHlSdQ8Q5iWqmT7S6Mgsjbk55Pkv3BKQIP2VIFYpM4E7lGLEKd4kBnKStD0lTw5/P3E03KA== + dependencies: + "@ionic/cli-framework-output" "^2.2.1" + "@ionic/utils-fs" "^3.1.5" + "@ionic/utils-subprocess" "^2.1.6" + "@ionic/utils-terminal" "^2.3.0" + commander "^6.0.0" + debug "^4.2.0" + env-paths "^2.2.0" + kleur "^4.1.1" + native-run "^1.5.0" + open "^7.4.2" + plist "^3.0.2" + prompts "^2.3.2" + semver "^7.3.2" + tar "^6.1.11" + tslib "^2.1.0" + xml2js "^0.4.23" + +"@capacitor/core@^3.5.1": + version "3.5.1" + resolved "https://registry.yarnpkg.com/@capacitor/core/-/core-3.5.1.tgz#49d48c0261d811a4d8c43d89d8a10bd519675bd2" + integrity sha512-UTROxB7q/hZBnhDLcCN7mVsAX3SxXNMhVuPbtddsDOUCm4hExLXN62gPD7rjgmumhfHMjeXmkw/EfRzSjttL1g== + dependencies: + tslib "^2.1.0" + "@cnakazawa/watch@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef" @@ -1815,6 +1854,88 @@ chalk "^2.4.2" lodash "^4.17.15" +"@ionic/cli-framework-output@^2.2.1": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@ionic/cli-framework-output/-/cli-framework-output-2.2.4.tgz#177d8388140a2246dec111385ee63bf0343b013d" + integrity sha512-YdaXtHHg0zT1JSFlGrbTWe6uzD6u+w5yHE+aM7Js/3BNLYKIYngliMoojGxwNHbqMPNuvDzWMDAbxteY5u0vKg== + dependencies: + "@ionic/utils-terminal" "2.3.2" + debug "^4.0.0" + tslib "^2.0.1" + +"@ionic/utils-array@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@ionic/utils-array/-/utils-array-2.1.5.tgz#15e4119b01e3978d58324a06d816959c25e248b6" + integrity sha512-HD72a71IQVBmQckDwmA8RxNVMTbxnaLbgFOl+dO5tbvW9CkkSFCv41h6fUuNsSEVgngfkn0i98HDuZC8mk+lTA== + dependencies: + debug "^4.0.0" + tslib "^2.0.1" + +"@ionic/utils-fs@3.1.5", "@ionic/utils-fs@^3.1.5": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@ionic/utils-fs/-/utils-fs-3.1.5.tgz#fb87be5bd5089ca43a29bbbcab87b9907e6da4b1" + integrity sha512-a41bY2dHqWSEQQ/80CpbXSs8McyiCFf2DnIWWLukrhYWf46h4qi6M/8dxcMKrofRiqI/3F+cL3S2mOm9Zz/o2Q== + dependencies: + debug "^4.0.0" + fs-extra "^9.0.0" + tslib "^2.0.1" + +"@ionic/utils-object@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@ionic/utils-object/-/utils-object-2.1.5.tgz#c1e58a711cdd4a30f46d23e241faf924424e010e" + integrity sha512-XnYNSwfewUqxq+yjER1hxTKggftpNjFLJH0s37jcrNDwbzmbpFTQTVAp4ikNK4rd9DOebX/jbeZb8jfD86IYxw== + dependencies: + debug "^4.0.0" + tslib "^2.0.1" + +"@ionic/utils-process@2.1.9": + version "2.1.9" + resolved "https://registry.yarnpkg.com/@ionic/utils-process/-/utils-process-2.1.9.tgz#db7ce0bdd05551d9c8881af6fdabafc9d1259c51" + integrity sha512-+RD2mcwh7jtAtkvCFw1BBnUHg/UYgBiYxpXPuXUBSitHHAgVk1zDfYBTM31EKU5FGb5nVU/HkjeYGRHEmj4MPA== + dependencies: + "@ionic/utils-object" "2.1.5" + "@ionic/utils-terminal" "2.3.2" + debug "^4.0.0" + signal-exit "^3.0.3" + tree-kill "^1.2.2" + tslib "^2.0.1" + +"@ionic/utils-stream@3.1.5": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@ionic/utils-stream/-/utils-stream-3.1.5.tgz#c8ec9fba30952d5e53a62ff2a3dad0d4283f2775" + integrity sha512-hkm46uHvEC05X/8PHgdJi4l4zv9VQDELZTM+Kz69odtO9zZYfnt8DkfXHJqJ+PxmtiE5mk/ehJWLnn/XAczTUw== + dependencies: + debug "^4.0.0" + tslib "^2.0.1" + +"@ionic/utils-subprocess@^2.1.6": + version "2.1.10" + resolved "https://registry.yarnpkg.com/@ionic/utils-subprocess/-/utils-subprocess-2.1.10.tgz#a0f481132730bd41680ebe3774e46d6058ab9387" + integrity sha512-X5wXiA4moEzbvchWqa7kwnYw3IqFyP1otlN/APFOmzmpsQWdyz5LRqqMhPozJeN11Mi3pwNR+BCQWd6vFBHTTg== + dependencies: + "@ionic/utils-array" "2.1.5" + "@ionic/utils-fs" "3.1.5" + "@ionic/utils-process" "2.1.9" + "@ionic/utils-stream" "3.1.5" + "@ionic/utils-terminal" "2.3.2" + cross-spawn "^7.0.3" + debug "^4.0.0" + tslib "^2.0.1" + +"@ionic/utils-terminal@2.3.2", "@ionic/utils-terminal@^2.3.0", "@ionic/utils-terminal@^2.3.1": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@ionic/utils-terminal/-/utils-terminal-2.3.2.tgz#99f565a1a0e4e08b424c9022994a074d52238d0e" + integrity sha512-/yNrEZEDsjzTkpDWTsBjZeWJj2AkMwidyL72kqGkIDGt+J4sL/YVsA9CE3P9P1FAEm8jJmTy/EYAhC6EwA9f1A== + dependencies: + debug "^4.0.0" + signal-exit "^3.0.3" + slice-ansi "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + tslib "^2.0.1" + untildify "^4.0.0" + wrap-ansi "^7.0.0" + "@jest/console@^24.7.1", "@jest/console@^24.9.0": version "24.9.0" resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" @@ -3000,6 +3121,11 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + async-each@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" @@ -3022,6 +3148,11 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + atob@^2.1.1, atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -3229,6 +3360,11 @@ base64-js@^1.0.2: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== +base64-js@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -3254,6 +3390,11 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +big-integer@1.6.x: + version "1.6.51" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -3322,6 +3463,13 @@ bowser@^2.11.0: resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== +bplist-parser@^0.3.0: + version "0.3.2" + resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.3.2.tgz#3ac79d67ec52c4c107893e0237eb787cbacbced7" + integrity sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ== + dependencies: + big-integer "1.6.x" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -3492,6 +3640,11 @@ bser@^2.0.0: dependencies: node-int64 "^0.4.0" +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -3806,6 +3959,11 @@ chownr@^1.1.1, chownr@^1.1.2, chownr@^1.1.4: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + chrome-trace-event@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" @@ -3990,6 +4148,11 @@ commander@^4.1.1: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== +commander@^6.0.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" + integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== + common-tags@^1.4.0, common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -4266,6 +4429,15 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" @@ -4610,6 +4782,13 @@ debug@^3.1.0, debug@^3.1.1, debug@^3.2.5: dependencies: ms "^2.1.1" +debug@^4.0.0, debug@^4.2.0, debug@^4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -4967,6 +5146,13 @@ electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.390: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.397.tgz#db640c2e67b08d590a504c20b56904537aa2bafa" integrity sha512-zcUd1p/7yzTSdWkCTrqGvbnEOASy96d0RJL/lc5BDJoO23Z3G/VHd0yIPbguDU9n8QNUTCigLO7oEdtOb7fp2A== +elementtree@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/elementtree/-/elementtree-0.1.7.tgz#9ac91be6e52fb6e6244c4e54a4ac3ed8ae8e29c0" + integrity sha512-wkgGT6kugeQk/P6VZ/f4T+4HB41BVgNBq5CDIZVbQ02nvTVqAiVTbskxxu3eA/X96lMlfYOwnLQpN2v5E1zDEg== + dependencies: + sax "1.1.4" + elliptic@^6.0.0: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" @@ -5031,6 +5217,11 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + errno@^0.1.3, errno@~0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" @@ -5805,6 +5996,13 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== + dependencies: + pend "~1.2.0" + figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" @@ -6067,6 +6265,16 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" +fs-extra@^9.0.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-minipass@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" @@ -7906,6 +8114,15 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" @@ -7978,6 +8195,11 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +kleur@^4.1.1: + version "4.1.4" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.4.tgz#8c202987d7e577766d039a8cd461934c01cda04d" + integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA== + last-call-webpack-plugin@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" @@ -8504,6 +8726,14 @@ minizlib@^1.3.3: dependencies: minipass "^2.9.0" +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -8550,6 +8780,11 @@ mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: dependencies: minimist "^1.2.5" +mkdirp@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -8572,6 +8807,11 @@ ms@2.1.1, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + multicast-dns-service-types@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" @@ -8617,6 +8857,23 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" +native-run@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/native-run/-/native-run-1.6.0.tgz#7de640510f4f38862f4297b572c1d06a822d4556" + integrity sha512-28bz2tnNSLg0ldeB2Qn/B3r1AowGNY8XdQ23akJbRPIYi69VduIj0DDyoptiIBtFFif2C32hQtSPW3v1hPcrjA== + dependencies: + "@ionic/utils-fs" "^3.1.5" + "@ionic/utils-terminal" "^2.3.1" + bplist-parser "^0.3.0" + debug "^4.3.2" + elementtree "^0.1.7" + ini "^1.3.5" + plist "^3.0.4" + split2 "^3.2.2" + through2 "^4.0.2" + tslib "^2.3.1" + yauzl "^2.10.0" + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -9064,6 +9321,14 @@ open@^7.0.2: is-docker "^2.0.0" is-wsl "^2.1.1" +open@^7.4.2: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + opn@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" @@ -9419,6 +9684,11 @@ pegjs@^0.10.0: resolved "https://registry.yarnpkg.com/pegjs/-/pegjs-0.10.0.tgz#cf8bafae6eddff4b5a7efb185269eaaf4610ddbd" integrity sha1-z4uvrm7d/0tafvsYUmnqr0YQ3b0= +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= + performance-now@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" @@ -9510,6 +9780,14 @@ pkg-up@^2.0.0: dependencies: find-up "^2.1.0" +plist@^3.0.2, plist@^3.0.4: + version "3.0.5" + resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.5.tgz#2cbeb52d10e3cdccccf0c11a63a85d830970a987" + integrity sha512-83vX4eYdQp3vP9SxuYgEM/G/pJQqLUz/V/xzPrzruLs7fz7jxGQ1msZ/mg1nwZxUSuOp4sb+/bEIbRrbzZRxDA== + dependencies: + base64-js "^1.5.1" + xmlbuilder "^9.0.7" + pn@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" @@ -10401,6 +10679,14 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.3" +prompts@^2.3.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + prop-types@^15.5.8, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" @@ -10860,6 +11146,15 @@ read-pkg@^3.0.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@3, readable-stream@^3.0.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + readable-stream@^3.0.6: version "3.1.1" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.1.1.tgz#ed6bbc6c5ba58b090039ff18ce670515795aeb06" @@ -11384,7 +11679,12 @@ sass-loader@8.0.2: schema-utils "^2.6.1" semver "^6.3.0" -sax@^1.2.4, sax@~1.2.4: +sax@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.1.4.tgz#74b6d33c9ae1e001510f179a91168588f1aedaa9" + integrity sha1-dLbTPJrh4AFRDxeakRaFiPGu2qk= + +sax@>=0.6.0, sax@^1.2.4, sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -11650,6 +11950,11 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= +signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + simple-swizzle@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" @@ -11662,6 +11967,11 @@ sisteransi@^1.0.3: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.3.tgz#98168d62b79e3a5e758e27ae63c4a053d748f4eb" integrity sha512-SbEG75TzH8G7eVXFSN5f9EExILKfly7SUvVY5DhhYLvfhKqhDFY0OzevWa/zwak0RLRfWS5AvfMWpd9gJvr5Yg== +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" @@ -11686,6 +11996,15 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -11855,6 +12174,13 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" +split2@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" + integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== + dependencies: + readable-stream "^3.0.0" + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -12312,6 +12638,18 @@ tar@^4: safe-buffer "^5.2.1" yallist "^3.1.1" +tar@^6.1.11: + version "6.1.11" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" + integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + terser-webpack-plugin@2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz#894764a19b0743f2f704e7c2a848c5283a696724" @@ -12397,6 +12735,13 @@ through2@^2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" +through2@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" + integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== + dependencies: + readable-stream "3" + through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -12516,6 +12861,11 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" @@ -12546,6 +12896,11 @@ tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== +tslib@^2.0.1, tslib@^2.1.0, tslib@^2.3.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + tsutils@^3.17.1: version "3.17.1" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" @@ -12692,6 +13047,11 @@ universalify@^0.1.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -12710,6 +13070,11 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + upath@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" @@ -13331,6 +13696,15 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -13371,6 +13745,24 @@ xml-name-validator@^3.0.0: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== +xml2js@^0.4.23: + version "0.4.23" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" + integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@^9.0.7: + version "9.0.7" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + xmlchars@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" @@ -13433,3 +13825,11 @@ yargs@^13.2.4, yargs@^13.3.0, yargs@^13.3.2: which-module "^2.0.0" y18n "^4.0.0" yargs-parser "^13.1.2" + +yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" From dde948917a2551aeac2438110fc2fd174945a6e6 Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Tue, 31 May 2022 09:56:34 +0200 Subject: [PATCH 02/35] fix: link to custom-id --- README.org | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.org b/README.org index bd4eaf95b..f800d849a 100644 --- a/README.org +++ b/README.org @@ -577,7 +577,7 @@ by Android Studio, Capacitor was able to start it on its own. #+begin_quote /:sparkles:/ This is brand new section that wants to be written. -Please check out how to [[contrib][contribute]] to organice. +Please check out how to [[#contrib][contribute]] to organice. #+end_quote ** Contributions From e73757876c3e0aa3fc51eac51d014779868abb80 Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Tue, 31 May 2022 10:04:00 +0200 Subject: [PATCH 03/35] doc: improve formatting --- README.org | 77 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 40 insertions(+), 37 deletions(-) diff --git a/README.org b/README.org index f800d849a..336f48cb4 100644 --- a/README.org +++ b/README.org @@ -497,6 +497,43 @@ ssh -L 3000:localhost:3000 user-dev-machine If you don't have a shell on your phone, you can use a dedicated SSH application (like [[https://www.termius.com/][Terminus]]). +*** Native app on Android + +- Install [[https://developer.android.com/studio#downloads][Android Studio]] +- Follow the [[https://capacitorjs.com/docs/getting-started/environment-setup#android-sdk][Capacitor Guide to setup an Android SDK]] + +#+begin_quote +/:warning:/ Make sure to install the required subpackages. Activate +"Show Package Details" to reveal hidden subpackages. + +At time of writing "Android API 32" does not automatically install the +subpackages "Google APIs Intel x86 Atom_64 System Image" and "Google +Play Intel x86 Atom_64 System Image", which are both required to run +the Emulator on an Intel based machine. + +[[https://raw.githubusercontent.com/200ok-ch/organice/master/images/api_32.png]] +#+end_quote + +- Create a device in Android Studio by running any app + +#+begin_quote +/:monocle_face:/ Theoretically this should not be nescessary, as +Capacitor should be able to create a device to deploy the app to on +the fly. But this didn't work for me. After the device had be run once +by Android Studio, Capacitor was able to start it on its own. +#+end_quote + +- Shut down Android Studio and any running Emulator +- Before run oragnice as a native app you need to =yarn build= it. +- Run organice in the Emulater with =npx cap run android= + +*** TODO Native app on iOS + +#+begin_quote +/:sparkles:/ This is brand new section that wants to be written. +Please check out how to [[#contributions][contribute to organice]]. +#+end_quote + ** Debugging Tests Apart from the popular choice of =console.log=-debugging, it's easy to @@ -543,44 +580,10 @@ feature branches against =develop= until the epic is finished. On merging a pull request to =develop=, code and documentation are automatically deployed to stage. -*** Native app on Android - -- Install [[https://developer.android.com/studio#downloads][Android Studio]] -- Follow the [[https://capacitorjs.com/docs/getting-started/environment-setup#android-sdk][Capacitor Guide to setup an Android SDK]] - -#+begin_quote -/:warning:/ Make sure to install the required subpackages. Activate -"Show Package Details" to reveal hidden subpackages. - -At time of writing "Android API 32" does not automatically install the -subpackages "Google APIs Intel x86 Atom_64 System Image" and "Google -Play Intel x86 Atom_64 System Image", which are both required to run -the Emulator on an Intel based machine. - -https://raw.githubusercontent.com/200ok-ch/organice/master/images/api_32.png -#+end_quote - -- Create a device in Android Studio by running any app - -#+begin_quote -/:monocle_face:/ Theoretically this should not be nescessary, as -Capacitor should be able to create a device to deploy the app to on -the fly. But this didn't work for me. After the device had be run once -by Android Studio, Capacitor was able to start it on its own. -#+end_quote - -- Shut down Android Studio and any running Emulator -- Before run oragnice as a native app you need to =yarn build= it. -- Run organice in the Emulater with =npx cap run android= - -*** TODO Native app on iOS - -#+begin_quote -/:sparkles:/ This is brand new section that wants to be written. -Please check out how to [[#contrib][contribute]] to organice. -#+end_quote - ** Contributions + :PROPERTIES: + :CUSTOM_ID: contributions + :END: Please see our [[file:CONTRIBUTING.org][contributor guidelines]] and our [[file:CODE_OF_CONDUCT.md][code of conduct]]. From 130d9a55c4a504a793274df07a145b487914d2ed Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Tue, 31 May 2022 10:11:15 +0200 Subject: [PATCH 04/35] fix: typo --- README.org | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.org b/README.org index 336f48cb4..6cb6d7e6a 100644 --- a/README.org +++ b/README.org @@ -524,7 +524,7 @@ by Android Studio, Capacitor was able to start it on its own. #+end_quote - Shut down Android Studio and any running Emulator -- Before run oragnice as a native app you need to =yarn build= it. +- Before run organice as a native app you need to =yarn build= it - Run organice in the Emulater with =npx cap run android= *** TODO Native app on iOS From 0edc961ceb8a1764e7b0bdbbe90d0428d5d19f82 Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Thu, 2 Jun 2022 16:04:58 +0200 Subject: [PATCH 05/35] chore: set server hostname and androidScheme --- android/app/src/main/assets/capacitor.config.json | 6 +++++- capacitor.config.ts | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/android/app/src/main/assets/capacitor.config.json b/android/app/src/main/assets/capacitor.config.json index 3191216de..eec7c9a6a 100644 --- a/android/app/src/main/assets/capacitor.config.json +++ b/android/app/src/main/assets/capacitor.config.json @@ -2,5 +2,9 @@ "appId": "ch.twohundredok.organice", "appName": "organice", "webDir": "build", - "bundledWebRuntime": false + "bundledWebRuntime": false, + "server": { + "hostname": "app", + "androidScheme": "organice" + } } diff --git a/capacitor.config.ts b/capacitor.config.ts index f0933bb07..182693b98 100644 --- a/capacitor.config.ts +++ b/capacitor.config.ts @@ -4,7 +4,11 @@ const config: CapacitorConfig = { appId: 'ch.twohundredok.organice', appName: 'organice', webDir: 'build', - bundledWebRuntime: false + bundledWebRuntime: false, + server: { + hostname: 'app', + androidScheme: 'organice' + } }; export default config; From 24ead2d1232bb43f77f65aa303abe6454c6bb9e2 Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Wed, 8 Jun 2022 16:01:34 +0200 Subject: [PATCH 06/35] feat: login to gitlab works, dropbox maybe --- android/app/capacitor.build.gradle | 2 +- android/app/src/main/AndroidManifest.xml | 7 + .../app/src/main/assets/capacitor.config.json | 5 +- .../src/main/assets/capacitor.plugins.json | 7 +- android/capacitor.settings.gradle | 3 + capacitor.config.ts | 8 +- package.json | 1 + src/App.js | 136 ++++++++++-------- src/AppUrlListener.js | 34 +++++ src/components/Landing/index.js | 2 +- src/components/SyncServiceSignIn/index.js | 2 +- .../gitlab_sync_backend_client.js | 6 +- yarn.lock | 5 + 13 files changed, 145 insertions(+), 73 deletions(-) create mode 100644 src/AppUrlListener.js diff --git a/android/app/capacitor.build.gradle b/android/app/capacitor.build.gradle index 837cd452a..0929acbc7 100644 --- a/android/app/capacitor.build.gradle +++ b/android/app/capacitor.build.gradle @@ -9,7 +9,7 @@ android { apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle" dependencies { - + implementation project(':capacitor-app') } diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 52699878b..ae0707399 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -22,6 +22,13 @@ + + + + + + + { let success = false; + let error; try { success = await oauthClient.isReturningFromAuthServer(); await oauthClient.getAccessToken(); - } catch { + } catch(e) { + error = e; success = false; } if (!success) { // Edge case: somehow OAuth success redirect occurred but there isn't a code in // the current location's search params. This /shouldn't/ happen in practice. - alert('Unexpected sign in error, please try again'); + alert('Unexpected sign in error, please try again: ' + error); return; } @@ -68,6 +72,71 @@ const handleGitLabAuthResponse = async (oauthClient) => { } }; +export function handleAuthenticatedSyncService (initialState) { + window.initialHash = window.location.hash.substring(0); + const hashContents = parseQueryString(window.location.hash); + const authenticatedSyncService = getPersistedField('authenticatedSyncService', true); + let client = null; + + if (!!authenticatedSyncService) { + switch (authenticatedSyncService) { + case 'Dropbox': + const dropboxAccessToken = hashContents.access_token; + if (dropboxAccessToken) { + client = createDropboxSyncBackendClient(dropboxAccessToken); + initialState.syncBackend = Map({ + isAuthenticated: true, + client, + }); + persistField('dropboxAccessToken', dropboxAccessToken); + window.location.hash = ''; + } else { + const persistedDropboxAccessToken = getPersistedField('dropboxAccessToken', true); + if (!!persistedDropboxAccessToken) { + client = createDropboxSyncBackendClient(persistedDropboxAccessToken); + initialState.syncBackend = Map({ + isAuthenticated: true, + client, + }); + } + } + break; + case 'Google Drive': + client = createGoogleDriveSyncBackendClient(); + initialState.syncBackend = Map({ + isAuthenticated: true, + client, + }); + break; + case 'GitLab': + const gitlabOAuth = createGitlabOAuth(); + if (gitlabOAuth.isAuthorized()) { + client = createGitLabSyncBackendClient(gitlabOAuth); + initialState.syncBackend = Map({ + isAuthenticated: true, + client, + }); + } else { + handleGitLabAuthResponse(gitlabOAuth); + } + break; + case 'WebDAV': + client = createWebDAVSyncBackendClient( + getPersistedField('webdavEndpoint'), + getPersistedField('webdavUsername'), + getPersistedField('webdavPassword') + ); + initialState.syncBackend = Map({ + isAuthenticated: true, + client, + }); + break; + default: + } + } + return client; +} + export default class App extends PureComponent { constructor(props) { super(props); @@ -76,67 +145,7 @@ export default class App extends PureComponent { const initialState = readInitialState(); - window.initialHash = window.location.hash.substring(0); - const hashContents = parseQueryString(window.location.hash); - const authenticatedSyncService = getPersistedField('authenticatedSyncService', true); - let client = null; - - if (!!authenticatedSyncService) { - switch (authenticatedSyncService) { - case 'Dropbox': - const dropboxAccessToken = hashContents.access_token; - if (dropboxAccessToken) { - client = createDropboxSyncBackendClient(dropboxAccessToken); - initialState.syncBackend = Map({ - isAuthenticated: true, - client, - }); - persistField('dropboxAccessToken', dropboxAccessToken); - window.location.hash = ''; - } else { - const persistedDropboxAccessToken = getPersistedField('dropboxAccessToken', true); - if (!!persistedDropboxAccessToken) { - client = createDropboxSyncBackendClient(persistedDropboxAccessToken); - initialState.syncBackend = Map({ - isAuthenticated: true, - client, - }); - } - } - break; - case 'Google Drive': - client = createGoogleDriveSyncBackendClient(); - initialState.syncBackend = Map({ - isAuthenticated: true, - client, - }); - break; - case 'GitLab': - const gitlabOAuth = createGitlabOAuth(); - if (gitlabOAuth.isAuthorized()) { - client = createGitLabSyncBackendClient(gitlabOAuth); - initialState.syncBackend = Map({ - isAuthenticated: true, - client, - }); - } else { - handleGitLabAuthResponse(gitlabOAuth); - } - break; - case 'WebDAV': - client = createWebDAVSyncBackendClient( - getPersistedField('webdavEndpoint'), - getPersistedField('webdavUsername'), - getPersistedField('webdavPassword') - ); - initialState.syncBackend = Map({ - isAuthenticated: true, - client, - }); - break; - default: - } - } + const client = handleAuthenticatedSyncService(initialState); const queryStringContents = parseQueryString(window.location.search); const { captureFile, captureTemplateName, captureContent } = queryStringContents; @@ -217,6 +226,7 @@ export default class App extends PureComponent { return ( +

diff --git a/src/AppUrlListener.js b/src/AppUrlListener.js new file mode 100644 index 000000000..fa4e394b5 --- /dev/null +++ b/src/AppUrlListener.js @@ -0,0 +1,34 @@ +import React, { useEffect } from 'react'; +// import { useHistory } from 'react-router-dom'; +import { App, URLOpenListenerEvent } from '@capacitor/app'; +import { handleAuthenticatedSyncService } from './App'; +import { readInitialState } from './util/settings_persister'; + +const AppUrlListener: React.FC = () => { + // let history = useHistory(); + useEffect(() => { + App.addListener('appUrlOpen', (event: URLOpenListenerEvent) => { + + const newUrl = new URL(window.location.href); + for(const entry of new URL(event.url).searchParams.entries()) { + newUrl.searchParams.set(entry[0], entry[1]); + } + window.history.pushState(null, '', newUrl); + handleAuthenticatedSyncService(readInitialState()); + + // // Example url: https://beerswift.app/tabs/tab2 + // // slug = /tabs/tab2 + // const slug = event.url.split('organice.200ok.ch').pop(); + // if (slug) { + // //alert(slug); + // history.push(slug); + // } + // // If no match, do nothing - let regular routing + // // logic take over + }); + }, []); + + return null; +}; + +export default AppUrlListener; diff --git a/src/components/Landing/index.js b/src/components/Landing/index.js index 436208cbc..5daffad99 100644 --- a/src/components/Landing/index.js +++ b/src/components/Landing/index.js @@ -9,7 +9,7 @@ export default () => { return (
-

organice

+

organ1ce

Logo diff --git a/src/components/SyncServiceSignIn/index.js b/src/components/SyncServiceSignIn/index.js index c57a057a9..027742154 100644 --- a/src/components/SyncServiceSignIn/index.js +++ b/src/components/SyncServiceSignIn/index.js @@ -119,7 +119,7 @@ function GitLab() { const [isVisible, setIsVisible] = useState(false); const toggleVisible = () => setIsVisible(!isVisible); - const [project, setProject] = useState(''); + const [project, setProject] = useState('https://gitlab.com/branch14/org'); const handleSubmit = (evt) => { const projectId = gitLabProjectIdFromURL(project); if (projectId) { diff --git a/src/sync_backend_clients/gitlab_sync_backend_client.js b/src/sync_backend_clients/gitlab_sync_backend_client.js index 226abf1f1..771869b96 100644 --- a/src/sync_backend_clients/gitlab_sync_backend_client.js +++ b/src/sync_backend_clients/gitlab_sync_backend_client.js @@ -15,7 +15,8 @@ export const createGitlabOAuth = () => { authorizationUrl: 'https://gitlab.com/oauth/authorize', tokenUrl: 'https://gitlab.com/oauth/token', clientId: process.env.REACT_APP_GITLAB_CLIENT_ID, - redirectUrl: window.location.origin, + redirectUrl: 'https://organice.200ok.ch', + // redirectUrl: window.location.origin, scopes: ['api'], extraAuthorizationParams: { clientSecret: process.env.REACT_APP_GITLAB_SECRET, @@ -162,7 +163,8 @@ export default (oauthClient) => { // Check project exists and user is a member who can *probably* commit. const [userResponse, membersResponse] = await Promise.all([ // https://docs.gitlab.com/ee/api/users.html#list-current-user-for-normal-users - decoratedFetch(`${API_URL}/user`), + decoratedFetch(`${API_URL +}/user`), // https://docs.gitlab.com/ee/api/members.html#list-all-members-of-a-group-or-project decoratedFetch(`${getProjectApi()}/members`), ]); diff --git a/yarn.lock b/yarn.lock index 7c4a9f1de..834707fe1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1767,6 +1767,11 @@ resolved "https://registry.yarnpkg.com/@capacitor/android/-/android-3.5.1.tgz#d81ec82f84ab7f0abeadb4cc100e6a3820197d65" integrity sha512-rjehS0+BQBlwoN8hUyrMuzexn/9QJsONb1kmN5uXcL8JuTEbv35fa7z0tSD4x1LKwUFd+3Zeuwt60QRuwijlmw== +"@capacitor/app@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@capacitor/app/-/app-1.1.1.tgz#bde7202faad1b47c4ae2c4a622285d7569384c5e" + integrity sha512-8ADkldHnoE1xkWvPUsGlERVGm6/Zvcxy6hCI80AxydIKyaCG7kbDAvUclebbnw/eFRxj2zBoVatGLjmJNvTbYw== + "@capacitor/cli@^3.5.1": version "3.5.1" resolved "https://registry.yarnpkg.com/@capacitor/cli/-/cli-3.5.1.tgz#7184554f3460a6fa0988ed7db2617fd53e7eade5" From 0748f411de92c49720928f959a19fb81671fb8b4 Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Wed, 8 Jun 2022 17:33:10 +0200 Subject: [PATCH 07/35] chore: cleanup --- capacitor.config.ts | 4 +--- src/components/Landing/index.js | 2 +- src/components/SyncServiceSignIn/index.js | 2 +- src/sync_backend_clients/gitlab_sync_backend_client.js | 4 ++-- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/capacitor.config.ts b/capacitor.config.ts index 47053475f..cd910f250 100644 --- a/capacitor.config.ts +++ b/capacitor.config.ts @@ -9,10 +9,8 @@ const config: CapacitorConfig = { // hostname: 'localhost', // default: localhost // iosScheme: 'organice', // default: ionic // androidScheme: 'organice', // default: http - allowNavigation: ['https://gitlab.com'] + // allowNavigation: ['https://gitlab.com'] } }; -// https://gitlab.com/branch14/org - export default config; diff --git a/src/components/Landing/index.js b/src/components/Landing/index.js index 5daffad99..436208cbc 100644 --- a/src/components/Landing/index.js +++ b/src/components/Landing/index.js @@ -9,7 +9,7 @@ export default () => { return (
-

organ1ce

+

organice

Logo diff --git a/src/components/SyncServiceSignIn/index.js b/src/components/SyncServiceSignIn/index.js index 027742154..c57a057a9 100644 --- a/src/components/SyncServiceSignIn/index.js +++ b/src/components/SyncServiceSignIn/index.js @@ -119,7 +119,7 @@ function GitLab() { const [isVisible, setIsVisible] = useState(false); const toggleVisible = () => setIsVisible(!isVisible); - const [project, setProject] = useState('https://gitlab.com/branch14/org'); + const [project, setProject] = useState(''); const handleSubmit = (evt) => { const projectId = gitLabProjectIdFromURL(project); if (projectId) { diff --git a/src/sync_backend_clients/gitlab_sync_backend_client.js b/src/sync_backend_clients/gitlab_sync_backend_client.js index 771869b96..82ce06411 100644 --- a/src/sync_backend_clients/gitlab_sync_backend_client.js +++ b/src/sync_backend_clients/gitlab_sync_backend_client.js @@ -15,6 +15,7 @@ export const createGitlabOAuth = () => { authorizationUrl: 'https://gitlab.com/oauth/authorize', tokenUrl: 'https://gitlab.com/oauth/token', clientId: process.env.REACT_APP_GITLAB_CLIENT_ID, + // TODO: this needs to be set based on the runtime redirectUrl: 'https://organice.200ok.ch', // redirectUrl: window.location.origin, scopes: ['api'], @@ -163,8 +164,7 @@ export default (oauthClient) => { // Check project exists and user is a member who can *probably* commit. const [userResponse, membersResponse] = await Promise.all([ // https://docs.gitlab.com/ee/api/users.html#list-current-user-for-normal-users - decoratedFetch(`${API_URL -}/user`), + decoratedFetch(`${API_URL}/user`), // https://docs.gitlab.com/ee/api/members.html#list-all-members-of-a-group-or-project decoratedFetch(`${getProjectApi()}/members`), ]); From 744b86d042a1c4f8a86439667da98fcc25444709 Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Wed, 8 Jun 2022 17:46:04 +0200 Subject: [PATCH 08/35] feat: switch gitlab redirectUrl based on platform --- android/app/src/main/assets/capacitor.config.json | 6 +----- .../gitlab_sync_backend_client.js | 11 ++++++++--- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/android/app/src/main/assets/capacitor.config.json b/android/app/src/main/assets/capacitor.config.json index c7fe0fe7e..c3a652f1c 100644 --- a/android/app/src/main/assets/capacitor.config.json +++ b/android/app/src/main/assets/capacitor.config.json @@ -3,9 +3,5 @@ "appName": "organice", "webDir": "build", "bundledWebRuntime": false, - "server": { - "allowNavigation": [ - "https://gitlab.com" - ] - } + "server": {} } diff --git a/src/sync_backend_clients/gitlab_sync_backend_client.js b/src/sync_backend_clients/gitlab_sync_backend_client.js index 82ce06411..aa3167bff 100644 --- a/src/sync_backend_clients/gitlab_sync_backend_client.js +++ b/src/sync_backend_clients/gitlab_sync_backend_client.js @@ -2,9 +2,16 @@ import { OAuth2AuthCodePKCE } from '@bity/oauth2-auth-code-pkce'; import { orgFileExtensions } from '../lib/org_utils'; import { getPersistedField } from '../util/settings_persister'; +import { Capacitor } from '@capacitor/core'; import { fromJS, Map } from 'immutable'; +const redirectUrl = { + web: window.location.origin, + ios: 'https://organice.200ok.ch', + android: 'https://organice.200ok.ch' +} + export const createGitlabOAuth = () => { // Use promises as mutex to prevent concurrent token refresh attempts, which causes problems. // More info: https://github.com/BitySA/oauth2-auth-code-pkce/issues/29 @@ -15,9 +22,7 @@ export const createGitlabOAuth = () => { authorizationUrl: 'https://gitlab.com/oauth/authorize', tokenUrl: 'https://gitlab.com/oauth/token', clientId: process.env.REACT_APP_GITLAB_CLIENT_ID, - // TODO: this needs to be set based on the runtime - redirectUrl: 'https://organice.200ok.ch', - // redirectUrl: window.location.origin, + redirectUrl: redirectUrl[Capacitor.getPlatform()], scopes: ['api'], extraAuthorizationParams: { clientSecret: process.env.REACT_APP_GITLAB_SECRET, From e3b4d72e80ce93ea775e80777aacc6b5e34d62cf Mon Sep 17 00:00:00 2001 From: "Alain M. Lafon" Date: Wed, 8 Jun 2022 17:58:32 +0200 Subject: [PATCH 09/35] feat: Quasi Login to Dropbox --- src/App.js | 82 +++++++++++------------ src/AppUrlListener.js | 14 ++-- src/components/SyncServiceSignIn/index.js | 4 +- 3 files changed, 52 insertions(+), 48 deletions(-) diff --git a/src/App.js b/src/App.js index 4b7bf34b4..c451ed4af 100644 --- a/src/App.js +++ b/src/App.js @@ -52,7 +52,7 @@ const handleGitLabAuthResponse = async (oauthClient) => { try { success = await oauthClient.isReturningFromAuthServer(); await oauthClient.getAccessToken(); - } catch(e) { + } catch (e) { error = e; success = false; } @@ -72,7 +72,7 @@ const handleGitLabAuthResponse = async (oauthClient) => { } }; -export function handleAuthenticatedSyncService (initialState) { +export function handleAuthenticatedSyncService(initialState) { window.initialHash = window.location.hash.substring(0); const hashContents = parseQueryString(window.location.hash); const authenticatedSyncService = getPersistedField('authenticatedSyncService', true); @@ -80,58 +80,58 @@ export function handleAuthenticatedSyncService (initialState) { if (!!authenticatedSyncService) { switch (authenticatedSyncService) { - case 'Dropbox': - const dropboxAccessToken = hashContents.access_token; - if (dropboxAccessToken) { - client = createDropboxSyncBackendClient(dropboxAccessToken); + case 'Dropbox': + const dropboxAccessToken = hashContents.access_token; + if (dropboxAccessToken) { + client = createDropboxSyncBackendClient(dropboxAccessToken); + initialState.syncBackend = Map({ + isAuthenticated: true, + client, + }); + persistField('dropboxAccessToken', dropboxAccessToken); + window.location.hash = ''; + } else { + const persistedDropboxAccessToken = getPersistedField('dropboxAccessToken', true); + if (!!persistedDropboxAccessToken) { + client = createDropboxSyncBackendClient(persistedDropboxAccessToken); + initialState.syncBackend = Map({ + isAuthenticated: true, + client, + }); + } + } + break; + case 'Google Drive': + client = createGoogleDriveSyncBackendClient(); initialState.syncBackend = Map({ isAuthenticated: true, client, }); - persistField('dropboxAccessToken', dropboxAccessToken); - window.location.hash = ''; - } else { - const persistedDropboxAccessToken = getPersistedField('dropboxAccessToken', true); - if (!!persistedDropboxAccessToken) { - client = createDropboxSyncBackendClient(persistedDropboxAccessToken); + break; + case 'GitLab': + const gitlabOAuth = createGitlabOAuth(); + if (gitlabOAuth.isAuthorized()) { + client = createGitLabSyncBackendClient(gitlabOAuth); initialState.syncBackend = Map({ isAuthenticated: true, client, }); + } else { + handleGitLabAuthResponse(gitlabOAuth); } - } - break; - case 'Google Drive': - client = createGoogleDriveSyncBackendClient(); - initialState.syncBackend = Map({ - isAuthenticated: true, - client, - }); - break; - case 'GitLab': - const gitlabOAuth = createGitlabOAuth(); - if (gitlabOAuth.isAuthorized()) { - client = createGitLabSyncBackendClient(gitlabOAuth); + break; + case 'WebDAV': + client = createWebDAVSyncBackendClient( + getPersistedField('webdavEndpoint'), + getPersistedField('webdavUsername'), + getPersistedField('webdavPassword') + ); initialState.syncBackend = Map({ isAuthenticated: true, client, }); - } else { - handleGitLabAuthResponse(gitlabOAuth); - } - break; - case 'WebDAV': - client = createWebDAVSyncBackendClient( - getPersistedField('webdavEndpoint'), - getPersistedField('webdavUsername'), - getPersistedField('webdavPassword') - ); - initialState.syncBackend = Map({ - isAuthenticated: true, - client, - }); - break; - default: + break; + default: } } return client; diff --git a/src/AppUrlListener.js b/src/AppUrlListener.js index fa4e394b5..17cfccf29 100644 --- a/src/AppUrlListener.js +++ b/src/AppUrlListener.js @@ -1,21 +1,23 @@ -import React, { useEffect } from 'react'; +import { useEffect } from 'react'; // import { useHistory } from 'react-router-dom'; -import { App, URLOpenListenerEvent } from '@capacitor/app'; +import { App } from '@capacitor/app'; import { handleAuthenticatedSyncService } from './App'; import { readInitialState } from './util/settings_persister'; -const AppUrlListener: React.FC = () => { +const AppUrlListener = () => { // let history = useHistory(); useEffect(() => { - App.addListener('appUrlOpen', (event: URLOpenListenerEvent) => { - + App.addListener('appUrlOpen', (event) => { const newUrl = new URL(window.location.href); - for(const entry of new URL(event.url).searchParams.entries()) { + for (const entry of new URL(event.url).searchParams.entries()) { newUrl.searchParams.set(entry[0], entry[1]); } + newUrl.hash = new URL(event.url).hash; window.history.pushState(null, '', newUrl); handleAuthenticatedSyncService(readInitialState()); + // window.location.reload(); + // // Example url: https://beerswift.app/tabs/tab2 // // slug = /tabs/tab2 // const slug = event.url.split('organice.200ok.ch').pop(); diff --git a/src/components/SyncServiceSignIn/index.js b/src/components/SyncServiceSignIn/index.js index c57a057a9..44c6f98b1 100644 --- a/src/components/SyncServiceSignIn/index.js +++ b/src/components/SyncServiceSignIn/index.js @@ -169,7 +169,9 @@ export default class SyncServiceSignIn extends PureComponent { clientId: process.env.REACT_APP_DROPBOX_CLIENT_ID, fetch: fetch.bind(window), }); - dropbox.auth.getAuthenticationUrl(window.location.origin + '/').then((authURL) => { + // const redirectUri = window.location.origin; + const redirectUri = 'https://organice.200ok.ch'; + dropbox.auth.getAuthenticationUrl(redirectUri + '/').then((authURL) => { window.location = authURL; }); } From 187ae944b2f08bc6c9bfad3ad8ed0c0afcc2890e Mon Sep 17 00:00:00 2001 From: "Alain M. Lafon" Date: Wed, 8 Jun 2022 18:07:11 +0200 Subject: [PATCH 10/35] doc: Rationale for passing OAuth parameters (query or hash) --- src/AppUrlListener.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/AppUrlListener.js b/src/AppUrlListener.js index 17cfccf29..7487c6af4 100644 --- a/src/AppUrlListener.js +++ b/src/AppUrlListener.js @@ -8,15 +8,25 @@ const AppUrlListener = () => { // let history = useHistory(); useEffect(() => { App.addListener('appUrlOpen', (event) => { + // Some OAuth providers (i.e. GitLab) use query parameters. + // Migrate them from the event.url to the actual + // window.location. const newUrl = new URL(window.location.href); for (const entry of new URL(event.url).searchParams.entries()) { newUrl.searchParams.set(entry[0], entry[1]); } + // Some OAuth providers (i.e. Dropbox) use the hash. Migrate it + // from the event.url to window.location. newUrl.hash = new URL(event.url).hash; window.history.pushState(null, '', newUrl); handleAuthenticatedSyncService(readInitialState()); - // window.location.reload(); + // HACK: After the above code, the Dropbox login has succeeded. + // However, the constructor in App.js has to run. For some + // reason, this implicitly happens for GitLab. This could most + // definitively be implemented in a more readable manner by + // refactoring the App.js constructor. + if (newUrl.hash) window.location.reload(); // // Example url: https://beerswift.app/tabs/tab2 // // slug = /tabs/tab2 From 4d4b8cec24880456ca83585cf885fee86551c5bc Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Wed, 8 Jun 2022 18:17:37 +0200 Subject: [PATCH 11/35] feat: dynamic redirect for dropbox based on platform --- src/components/SyncServiceSignIn/index.js | 6 +++--- src/sync_backend_clients/gitlab_sync_backend_client.js | 10 ++-------- src/util/redirect_url.js | 8 ++++++++ 3 files changed, 13 insertions(+), 11 deletions(-) create mode 100644 src/util/redirect_url.js diff --git a/src/components/SyncServiceSignIn/index.js b/src/components/SyncServiceSignIn/index.js index 44c6f98b1..2a7bb3d84 100644 --- a/src/components/SyncServiceSignIn/index.js +++ b/src/components/SyncServiceSignIn/index.js @@ -17,6 +17,8 @@ import { import { Dropbox } from 'dropbox'; import _ from 'lodash'; +import { redirectUrl } from '../../util/redirect_url'; + function WebDAVForm() { const [isVisible, setIsVisible] = useState(false); const toggleVisible = () => setIsVisible(!isVisible); @@ -169,9 +171,7 @@ export default class SyncServiceSignIn extends PureComponent { clientId: process.env.REACT_APP_DROPBOX_CLIENT_ID, fetch: fetch.bind(window), }); - // const redirectUri = window.location.origin; - const redirectUri = 'https://organice.200ok.ch'; - dropbox.auth.getAuthenticationUrl(redirectUri + '/').then((authURL) => { + dropbox.auth.getAuthenticationUrl(redirectUrl()).then((authURL) => { window.location = authURL; }); } diff --git a/src/sync_backend_clients/gitlab_sync_backend_client.js b/src/sync_backend_clients/gitlab_sync_backend_client.js index aa3167bff..5c7529579 100644 --- a/src/sync_backend_clients/gitlab_sync_backend_client.js +++ b/src/sync_backend_clients/gitlab_sync_backend_client.js @@ -2,16 +2,10 @@ import { OAuth2AuthCodePKCE } from '@bity/oauth2-auth-code-pkce'; import { orgFileExtensions } from '../lib/org_utils'; import { getPersistedField } from '../util/settings_persister'; -import { Capacitor } from '@capacitor/core'; +import { redirectUrl } from '../util/redirect_url'; import { fromJS, Map } from 'immutable'; -const redirectUrl = { - web: window.location.origin, - ios: 'https://organice.200ok.ch', - android: 'https://organice.200ok.ch' -} - export const createGitlabOAuth = () => { // Use promises as mutex to prevent concurrent token refresh attempts, which causes problems. // More info: https://github.com/BitySA/oauth2-auth-code-pkce/issues/29 @@ -22,7 +16,7 @@ export const createGitlabOAuth = () => { authorizationUrl: 'https://gitlab.com/oauth/authorize', tokenUrl: 'https://gitlab.com/oauth/token', clientId: process.env.REACT_APP_GITLAB_CLIENT_ID, - redirectUrl: redirectUrl[Capacitor.getPlatform()], + redirectUrl: redirectUrl(), scopes: ['api'], extraAuthorizationParams: { clientSecret: process.env.REACT_APP_GITLAB_SECRET, diff --git a/src/util/redirect_url.js b/src/util/redirect_url.js new file mode 100644 index 000000000..bb191462d --- /dev/null +++ b/src/util/redirect_url.js @@ -0,0 +1,8 @@ +import { Capacitor } from '@capacitor/core'; + +export const redirectUrl = () => { + // https://capacitorjs.com/docs/core-apis/web#isnativeplatform + if(Capacitor.isNativePlatform()) return 'https://organice.200ok.ch/' + + return window.location.origin + '/' +}; From 135c86e0c31d6c29708f0f0d60ea86e96f205f6e Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Thu, 9 Jun 2022 14:42:52 +0200 Subject: [PATCH 12/35] chore: fix linting errors --- src/util/redirect_url.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/util/redirect_url.js b/src/util/redirect_url.js index bb191462d..097e5ab64 100644 --- a/src/util/redirect_url.js +++ b/src/util/redirect_url.js @@ -2,7 +2,7 @@ import { Capacitor } from '@capacitor/core'; export const redirectUrl = () => { // https://capacitorjs.com/docs/core-apis/web#isnativeplatform - if(Capacitor.isNativePlatform()) return 'https://organice.200ok.ch/' + if (Capacitor.isNativePlatform()) return 'https://organice.200ok.ch/' - return window.location.origin + '/' + return window.location.origin + '/'; }; From c512e3ab206066f469929bff301b4dfcbb6c4b2d Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Thu, 9 Jun 2022 14:45:16 +0200 Subject: [PATCH 13/35] chore: add missing colon --- src/util/redirect_url.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util/redirect_url.js b/src/util/redirect_url.js index 097e5ab64..5d6e3e11b 100644 --- a/src/util/redirect_url.js +++ b/src/util/redirect_url.js @@ -2,7 +2,7 @@ import { Capacitor } from '@capacitor/core'; export const redirectUrl = () => { // https://capacitorjs.com/docs/core-apis/web#isnativeplatform - if (Capacitor.isNativePlatform()) return 'https://organice.200ok.ch/' + if (Capacitor.isNativePlatform()) return 'https://organice.200ok.ch/'; return window.location.origin + '/'; }; From e9c12b42b13da4678444a614bcbe7f9b26cd4a20 Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Thu, 9 Jun 2022 18:47:37 +0200 Subject: [PATCH 14/35] feat: login to webdav from native app --- android/app/src/main/assets/capacitor.config.json | 4 +++- capacitor.config.ts | 6 +++++- src/sync_backend_clients/webdav_sync_backend_client.js | 3 ++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/android/app/src/main/assets/capacitor.config.json b/android/app/src/main/assets/capacitor.config.json index c3a652f1c..2d7038a3e 100644 --- a/android/app/src/main/assets/capacitor.config.json +++ b/android/app/src/main/assets/capacitor.config.json @@ -3,5 +3,7 @@ "appName": "organice", "webDir": "build", "bundledWebRuntime": false, - "server": {} + "server": { + "cleartext": true + } } diff --git a/capacitor.config.ts b/capacitor.config.ts index cd910f250..b8d09b8f5 100644 --- a/capacitor.config.ts +++ b/capacitor.config.ts @@ -9,7 +9,11 @@ const config: CapacitorConfig = { // hostname: 'localhost', // default: localhost // iosScheme: 'organice', // default: ionic // androidScheme: 'organice', // default: http - // allowNavigation: ['https://gitlab.com'] + // allowNavigation: ['https://gitlab.com'], + + // To allow http requests to WebDAV server. Not need to force + // users to use https. + cleartext: true } }; diff --git a/src/sync_backend_clients/webdav_sync_backend_client.js b/src/sync_backend_clients/webdav_sync_backend_client.js index ea2b6af18..5ae158608 100644 --- a/src/sync_backend_clients/webdav_sync_backend_client.js +++ b/src/sync_backend_clients/webdav_sync_backend_client.js @@ -38,7 +38,8 @@ export default (url, login, password) => { resolve(true); }) .catch((error) => { - console.error("Login didn't work, error: ", JSON.stringify(error)); + console.error("Login failed", error); + alert("Login failed: " + error.message); resolve(false); }); }); From 858e646c58ef2f79e8a932ee71d87c09ffb8ff27 Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Thu, 9 Jun 2022 18:50:08 +0200 Subject: [PATCH 15/35] chore: make it prettier --- src/sync_backend_clients/webdav_sync_backend_client.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/sync_backend_clients/webdav_sync_backend_client.js b/src/sync_backend_clients/webdav_sync_backend_client.js index 5ae158608..441764571 100644 --- a/src/sync_backend_clients/webdav_sync_backend_client.js +++ b/src/sync_backend_clients/webdav_sync_backend_client.js @@ -38,8 +38,8 @@ export default (url, login, password) => { resolve(true); }) .catch((error) => { - console.error("Login failed", error); - alert("Login failed: " + error.message); + console.error('Login failed', error); + alert('Login failed: ' + error.message); resolve(false); }); }); From f1ca8e1160479493ff38a19a2f7905837fc40b49 Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Thu, 9 Jun 2022 19:13:58 +0200 Subject: [PATCH 16/35] chore: install capacitor plugin send-intent --- android/app/capacitor.build.gradle | 1 + .../src/main/assets/capacitor.plugins.json | 4 ++ android/capacitor.settings.gradle | 3 ++ package.json | 1 + yarn.lock | 41 ++++++++++++++----- 5 files changed, 39 insertions(+), 11 deletions(-) diff --git a/android/app/capacitor.build.gradle b/android/app/capacitor.build.gradle index 0929acbc7..df59344cc 100644 --- a/android/app/capacitor.build.gradle +++ b/android/app/capacitor.build.gradle @@ -10,6 +10,7 @@ android { apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle" dependencies { implementation project(':capacitor-app') + implementation project(':send-intent') } diff --git a/android/app/src/main/assets/capacitor.plugins.json b/android/app/src/main/assets/capacitor.plugins.json index 21a0521ea..476076f87 100644 --- a/android/app/src/main/assets/capacitor.plugins.json +++ b/android/app/src/main/assets/capacitor.plugins.json @@ -2,5 +2,9 @@ { "pkg": "@capacitor/app", "classpath": "com.capacitorjs.plugins.app.AppPlugin" + }, + { + "pkg": "send-intent", + "classpath": "de.mindlib.sendIntent.SendIntent" } ] diff --git a/android/capacitor.settings.gradle b/android/capacitor.settings.gradle index 2085c8639..7030d8533 100644 --- a/android/capacitor.settings.gradle +++ b/android/capacitor.settings.gradle @@ -4,3 +4,6 @@ project(':capacitor-android').projectDir = new File('../node_modules/@capacitor/ include ':capacitor-app' project(':capacitor-app').projectDir = new File('../node_modules/@capacitor/app/android') + +include ':send-intent' +project(':send-intent').projectDir = new File('../node_modules/send-intent/android') diff --git a/package.json b/package.json index 5a62610ca..6c92e91d5 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "redux": "^4.1.0", "redux-thunk": "^2.3.0", "redux-undo": "1.0.1", + "send-intent": "^3.0.11", "webdav": "^3.3.0" }, "scripts": { diff --git a/yarn.lock b/yarn.lock index 52e82ad3d..1a6fc1872 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"-@0.0.1": + version "0.0.1" + resolved "https://registry.yarnpkg.com/-/-/--0.0.1.tgz#db6db7cd866142880dd03e5b8781d1b4fac0e5bd" + integrity sha512-3HfneK3DGAm05fpyj20sT3apkNcvPpCuccOThOPdzz8sY7GgQGe0l93XH9bt+YzibcTIgUAIMoyVJI740RtgyQ== + "@babel/code-frame@7.0.0", "@babel/code-frame@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" @@ -1772,7 +1777,7 @@ resolved "https://registry.yarnpkg.com/@capacitor/app/-/app-1.1.1.tgz#bde7202faad1b47c4ae2c4a622285d7569384c5e" integrity sha512-8ADkldHnoE1xkWvPUsGlERVGm6/Zvcxy6hCI80AxydIKyaCG7kbDAvUclebbnw/eFRxj2zBoVatGLjmJNvTbYw== -"@capacitor/cli@^3.5.1": +"@capacitor/cli@>= 3 < 4", "@capacitor/cli@^3.5.1": version "3.5.1" resolved "https://registry.yarnpkg.com/@capacitor/cli/-/cli-3.5.1.tgz#7184554f3460a6fa0988ed7db2617fd53e7eade5" integrity sha512-zIA5BqT8ZnfUFEJwHlSdQ8Q5iWqmT7S6Mgsjbk55Pkv3BKQIP2VIFYpM4E7lGLEKd4kBnKStD0lTw5/P3E03KA== @@ -1794,7 +1799,7 @@ tslib "^2.1.0" xml2js "^0.4.23" -"@capacitor/core@^3.5.1": +"@capacitor/core@>= 3 < 4", "@capacitor/core@^3.5.1": version "3.5.1" resolved "https://registry.yarnpkg.com/@capacitor/core/-/core-3.5.1.tgz#49d48c0261d811a4d8c43d89d8a10bd519675bd2" integrity sha512-UTROxB7q/hZBnhDLcCN7mVsAX3SxXNMhVuPbtddsDOUCm4hExLXN62gPD7rjgmumhfHMjeXmkw/EfRzSjttL1g== @@ -12190,6 +12195,15 @@ semver@~5.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= +send-intent@^3.0.11: + version "3.0.11" + resolved "https://registry.yarnpkg.com/send-intent/-/send-intent-3.0.11.tgz#85bf84b57e147a79a24429f8e51229339da36a78" + integrity sha512-v272/VBygddJdCz/Xk6o6Clh4NJMfCIzB0h8ZVqbnGvNeK1raCZ+LlXPYdkRw1zY5I0LiwEDudumWREd7AgzwA== + dependencies: + "-" "0.0.1" + "@capacitor/cli" ">= 3 < 4" + "@capacitor/core" ">= 3 < 4" + send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -13310,6 +13324,11 @@ tree-kill@^1.2.2: resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= + trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" @@ -14308,14 +14327,6 @@ yargs@^13.2.4, yargs@^13.3.0, yargs@^13.3.2: y18n "^4.0.0" yargs-parser "^13.1.2" -yauzl@^2.10.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" - yargs@^7.0.0: version "7.1.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.2.tgz#63a0a5d42143879fdbb30370741374e0641d55db" @@ -14333,4 +14344,12 @@ yargs@^7.0.0: string-width "^1.0.2" which-module "^1.0.0" y18n "^3.2.1" - yargs-parser "^5.0.1" \ No newline at end of file + yargs-parser "^5.0.1" + +yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" From 915c6041ee66d62fed5b41292f4c404827799fdd Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Mon, 13 Jun 2022 09:38:10 +0200 Subject: [PATCH 17/35] feat: receive send intent --- android/app/src/main/AndroidManifest.xml | 15 +++++++++++++++ src/App.js | 19 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index ae0707399..043f379dc 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -31,6 +31,21 @@ + + + + + + + + + + + { + if (result) { + console.log('SendIntent received'); + console.log(JSON.stringify(result)); + } + if (result.url) { + let resultUrl = decodeURIComponent(result.url); + console.log(resultUrl); + // Filesystem.readFile({path: resultUrl}) + // .then((content) => { + // console.log(content.data); + // }) + // .catch((err) => console.error(err)); + } +}).catch(err => console.error(err)); + const handleGitLabAuthResponse = async (oauthClient) => { let success = false; let error; From 3a565ac8ceada625080102836c7a9795da965cf3 Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Mon, 13 Jun 2022 11:21:27 +0200 Subject: [PATCH 18/35] fix: formatting --- src/App.js | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/App.js b/src/App.js index f83a05d25..80149a58f 100644 --- a/src/App.js +++ b/src/App.js @@ -45,26 +45,28 @@ import AppUrlListener from './AppUrlListener'; import { configure } from 'react-hotkeys'; -import {SendIntent} from "send-intent"; +import { SendIntent } from 'send-intent'; // do handle hotkeys even if they come from within 'input', 'select' or 'textarea' configure({ ignoreTags: [] }); -SendIntent.checkSendIntentReceived().then((result) => { - if (result) { - console.log('SendIntent received'); - console.log(JSON.stringify(result)); - } - if (result.url) { - let resultUrl = decodeURIComponent(result.url); - console.log(resultUrl); - // Filesystem.readFile({path: resultUrl}) - // .then((content) => { - // console.log(content.data); - // }) - // .catch((err) => console.error(err)); - } -}).catch(err => console.error(err)); +SendIntent.checkSendIntentReceived() + .then((result) => { + if (result) { + console.log('SendIntent received'); + console.log(JSON.stringify(result)); + } + if (result.url) { + let resultUrl = decodeURIComponent(result.url); + console.log(resultUrl); + // Filesystem.readFile({path: resultUrl}) + // .then((content) => { + // console.log(content.data); + // }) + // .catch((err) => console.error(err)); + } + }) + .catch(err => console.error(err)); const handleGitLabAuthResponse = async (oauthClient) => { let success = false; From 5d7b9ad555316aec693d46f65162322615d74f81 Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Mon, 13 Jun 2022 11:23:55 +0200 Subject: [PATCH 19/35] fix: formatting --- src/App.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/App.js b/src/App.js index 80149a58f..c5351c2dc 100644 --- a/src/App.js +++ b/src/App.js @@ -66,7 +66,7 @@ SendIntent.checkSendIntentReceived() // .catch((err) => console.error(err)); } }) - .catch(err => console.error(err)); + .catch((err) => console.error(err)); const handleGitLabAuthResponse = async (oauthClient) => { let success = false; From 1c598e52a7d2363ffc08dc7f438aa9373de409c8 Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Mon, 13 Jun 2022 18:48:31 +0200 Subject: [PATCH 20/35] chore: minimal fastlane setup for android --- android/Gemfile | 3 + android/Gemfile.lock | 218 ++++++++++++++++++++++++++++++++++++++ android/fastlane/Appfile | 3 + android/fastlane/Fastfile | 40 +++++++ 4 files changed, 264 insertions(+) create mode 100644 android/Gemfile create mode 100644 android/Gemfile.lock create mode 100644 android/fastlane/Appfile create mode 100644 android/fastlane/Fastfile diff --git a/android/Gemfile b/android/Gemfile new file mode 100644 index 000000000..7a118b49b --- /dev/null +++ b/android/Gemfile @@ -0,0 +1,3 @@ +source "https://rubygems.org" + +gem "fastlane" diff --git a/android/Gemfile.lock b/android/Gemfile.lock new file mode 100644 index 000000000..62a536f25 --- /dev/null +++ b/android/Gemfile.lock @@ -0,0 +1,218 @@ +GEM + remote: https://rubygems.org/ + specs: + CFPropertyList (3.0.5) + rexml + addressable (2.8.0) + public_suffix (>= 2.0.2, < 5.0) + artifactory (3.0.15) + atomos (0.1.3) + aws-eventstream (1.2.0) + aws-partitions (1.598.0) + aws-sdk-core (3.131.1) + aws-eventstream (~> 1, >= 1.0.2) + aws-partitions (~> 1, >= 1.525.0) + aws-sigv4 (~> 1.1) + jmespath (~> 1, >= 1.6.1) + aws-sdk-kms (1.57.0) + aws-sdk-core (~> 3, >= 3.127.0) + aws-sigv4 (~> 1.1) + aws-sdk-s3 (1.114.0) + aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-kms (~> 1) + aws-sigv4 (~> 1.4) + aws-sigv4 (1.5.0) + aws-eventstream (~> 1, >= 1.0.2) + babosa (1.0.4) + claide (1.1.0) + colored (1.2) + colored2 (3.1.2) + commander (4.6.0) + highline (~> 2.0.0) + declarative (0.0.20) + digest-crc (0.6.4) + rake (>= 12.0.0, < 14.0.0) + domain_name (0.5.20190701) + unf (>= 0.0.5, < 1.0.0) + dotenv (2.7.6) + emoji_regex (3.2.3) + excon (0.92.3) + faraday (1.10.0) + faraday-em_http (~> 1.0) + faraday-em_synchrony (~> 1.0) + faraday-excon (~> 1.1) + faraday-httpclient (~> 1.0) + faraday-multipart (~> 1.0) + faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.0) + faraday-patron (~> 1.0) + faraday-rack (~> 1.0) + faraday-retry (~> 1.0) + ruby2_keywords (>= 0.0.4) + faraday-cookie_jar (0.0.7) + faraday (>= 0.8.0) + http-cookie (~> 1.0.0) + faraday-em_http (1.0.0) + faraday-em_synchrony (1.0.0) + faraday-excon (1.1.0) + faraday-httpclient (1.0.1) + faraday-multipart (1.0.4) + multipart-post (~> 2) + faraday-net_http (1.0.1) + faraday-net_http_persistent (1.2.0) + faraday-patron (1.0.0) + faraday-rack (1.0.0) + faraday-retry (1.0.3) + faraday_middleware (1.2.0) + faraday (~> 1.0) + fastimage (2.2.6) + fastlane (2.206.2) + CFPropertyList (>= 2.3, < 4.0.0) + addressable (>= 2.8, < 3.0.0) + artifactory (~> 3.0) + aws-sdk-s3 (~> 1.0) + babosa (>= 1.0.3, < 2.0.0) + bundler (>= 1.12.0, < 3.0.0) + colored + commander (~> 4.6) + dotenv (>= 2.1.1, < 3.0.0) + emoji_regex (>= 0.1, < 4.0) + excon (>= 0.71.0, < 1.0.0) + faraday (~> 1.0) + faraday-cookie_jar (~> 0.0.6) + faraday_middleware (~> 1.0) + fastimage (>= 2.1.0, < 3.0.0) + gh_inspector (>= 1.1.2, < 2.0.0) + google-apis-androidpublisher_v3 (~> 0.3) + google-apis-playcustomapp_v1 (~> 0.1) + google-cloud-storage (~> 1.31) + highline (~> 2.0) + json (< 3.0.0) + jwt (>= 2.1.0, < 3) + mini_magick (>= 4.9.4, < 5.0.0) + multipart-post (~> 2.0.0) + naturally (~> 2.2) + optparse (~> 0.1.1) + plist (>= 3.1.0, < 4.0.0) + rubyzip (>= 2.0.0, < 3.0.0) + security (= 0.1.3) + simctl (~> 1.6.3) + terminal-notifier (>= 2.0.0, < 3.0.0) + terminal-table (>= 1.4.5, < 2.0.0) + tty-screen (>= 0.6.3, < 1.0.0) + tty-spinner (>= 0.8.0, < 1.0.0) + word_wrap (~> 1.0.0) + xcodeproj (>= 1.13.0, < 2.0.0) + xcpretty (~> 0.3.0) + xcpretty-travis-formatter (>= 0.0.3) + gh_inspector (1.1.3) + google-apis-androidpublisher_v3 (0.22.0) + google-apis-core (>= 0.5, < 2.a) + google-apis-core (0.5.0) + addressable (~> 2.5, >= 2.5.1) + googleauth (>= 0.16.2, < 2.a) + httpclient (>= 2.8.1, < 3.a) + mini_mime (~> 1.0) + representable (~> 3.0) + retriable (>= 2.0, < 4.a) + rexml + webrick + google-apis-iamcredentials_v1 (0.11.0) + google-apis-core (>= 0.5, < 2.a) + google-apis-playcustomapp_v1 (0.8.0) + google-apis-core (>= 0.5, < 2.a) + google-apis-storage_v1 (0.15.0) + google-apis-core (>= 0.5, < 2.a) + google-cloud-core (1.6.0) + google-cloud-env (~> 1.0) + google-cloud-errors (~> 1.0) + google-cloud-env (1.6.0) + faraday (>= 0.17.3, < 3.0) + google-cloud-errors (1.2.0) + google-cloud-storage (1.36.2) + addressable (~> 2.8) + digest-crc (~> 0.4) + google-apis-iamcredentials_v1 (~> 0.1) + google-apis-storage_v1 (~> 0.1) + google-cloud-core (~> 1.6) + googleauth (>= 0.16.2, < 2.a) + mini_mime (~> 1.0) + googleauth (1.1.3) + faraday (>= 0.17.3, < 3.a) + jwt (>= 1.4, < 3.0) + memoist (~> 0.16) + multi_json (~> 1.11) + os (>= 0.9, < 2.0) + signet (>= 0.16, < 2.a) + highline (2.0.3) + http-cookie (1.0.5) + domain_name (~> 0.5) + httpclient (2.8.3) + jmespath (1.6.1) + json (2.6.2) + jwt (2.4.1) + memoist (0.16.2) + mini_magick (4.11.0) + mini_mime (1.1.2) + multi_json (1.15.0) + multipart-post (2.0.0) + nanaimo (0.3.0) + naturally (2.2.1) + optparse (0.1.1) + os (1.1.4) + plist (3.6.0) + public_suffix (4.0.7) + rake (13.0.6) + representable (3.2.0) + declarative (< 0.1.0) + trailblazer-option (>= 0.1.1, < 0.2.0) + uber (< 0.2.0) + retriable (3.1.2) + rexml (3.2.5) + rouge (2.0.7) + ruby2_keywords (0.0.5) + rubyzip (2.3.2) + security (0.1.3) + signet (0.16.1) + addressable (~> 2.8) + faraday (>= 0.17.5, < 3.0) + jwt (>= 1.5, < 3.0) + multi_json (~> 1.10) + simctl (1.6.8) + CFPropertyList + naturally + terminal-notifier (2.0.0) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + trailblazer-option (0.1.2) + tty-cursor (0.7.1) + tty-screen (0.8.1) + tty-spinner (0.9.3) + tty-cursor (~> 0.7) + uber (0.1.0) + unf (0.1.4) + unf_ext + unf_ext (0.0.8.2) + unicode-display_width (1.8.0) + webrick (1.7.0) + word_wrap (1.0.0) + xcodeproj (1.21.0) + CFPropertyList (>= 2.3.3, < 4.0) + atomos (~> 0.1.3) + claide (>= 1.0.2, < 2.0) + colored2 (~> 3.1) + nanaimo (~> 0.3.0) + rexml (~> 3.2.4) + xcpretty (0.3.0) + rouge (~> 2.0.7) + xcpretty-travis-formatter (1.0.1) + xcpretty (~> 0.2, >= 0.0.7) + +PLATFORMS + ruby + +DEPENDENCIES + fastlane + +BUNDLED WITH + 2.1.4 diff --git a/android/fastlane/Appfile b/android/fastlane/Appfile new file mode 100644 index 000000000..0dc20a3c8 --- /dev/null +++ b/android/fastlane/Appfile @@ -0,0 +1,3 @@ +# -*-ruby-*- +json_key_file("../.ok/play-store-credentials.json") # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one +package_name("ch.twohundredok.organice") # e.g. com.krausefx.app diff --git a/android/fastlane/Fastfile b/android/fastlane/Fastfile new file mode 100644 index 000000000..c90510223 --- /dev/null +++ b/android/fastlane/Fastfile @@ -0,0 +1,40 @@ +# -*-ruby-*- + +# This file contains the fastlane.tools configuration +# You can find the documentation at https://docs.fastlane.tools +# +# For a list of all available actions, check out +# +# https://docs.fastlane.tools/actions +# +# For a list of all available plugins, check out +# +# https://docs.fastlane.tools/plugins/available-plugins +# + +# Uncomment the line if you want fastlane to automatically update itself +# update_fastlane + +default_platform(:android) + +platform :android do + desc "Runs all the tests" + lane :test do + gradle(task: "test") + end + + desc "Submit a new Beta Build to Crashlytics Beta" + lane :beta do + gradle(task: "clean assembleRelease") + crashlytics + + # sh "your_script.sh" + # You can also use other beta testing services here + end + + desc "Deploy a new version to the Google Play" + lane :deploy do + gradle(task: "clean assembleRelease") + upload_to_play_store + end +end From 0d7b4207aa0a26b38e5f6ec9b373ea53113669fc Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Mon, 13 Jun 2022 19:01:46 +0200 Subject: [PATCH 21/35] chore: rename app id --- android/app/build.gradle | 2 +- android/app/src/main/AndroidManifest.xml | 4 ++-- android/app/src/main/assets/capacitor.config.json | 2 +- .../src/main/java/ch/twohundredok/organice/MainActivity.java | 2 +- android/app/src/main/res/values/strings.xml | 4 ++-- android/fastlane/Appfile | 2 +- capacitor.config.ts | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 15a1b402b..bbe92a205 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -3,7 +3,7 @@ apply plugin: 'com.android.application' android { compileSdkVersion rootProject.ext.compileSdkVersion defaultConfig { - applicationId "ch.twohundredok.organice" + applicationId "com.twohundredok.organice" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 1 diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index ae0707399..0c8a24dd1 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + package="com.twohundredok.organice"> diff --git a/android/app/src/main/assets/capacitor.config.json b/android/app/src/main/assets/capacitor.config.json index 2d7038a3e..8294a4af2 100644 --- a/android/app/src/main/assets/capacitor.config.json +++ b/android/app/src/main/assets/capacitor.config.json @@ -1,5 +1,5 @@ { - "appId": "ch.twohundredok.organice", + "appId": "com.twohundredok.organice", "appName": "organice", "webDir": "build", "bundledWebRuntime": false, diff --git a/android/app/src/main/java/ch/twohundredok/organice/MainActivity.java b/android/app/src/main/java/ch/twohundredok/organice/MainActivity.java index 6af83f6a7..bacd7e4fd 100644 --- a/android/app/src/main/java/ch/twohundredok/organice/MainActivity.java +++ b/android/app/src/main/java/ch/twohundredok/organice/MainActivity.java @@ -1,4 +1,4 @@ -package ch.twohundredok.organice; +package com.twohundredok.organice; import com.getcapacitor.BridgeActivity; diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 7a12d7708..b4bc6309c 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -2,6 +2,6 @@ organice organice - ch.twohundredok.organice - ch.twohundredok.organice + com.twohundredok.organice + com.twohundredok.organice diff --git a/android/fastlane/Appfile b/android/fastlane/Appfile index 0dc20a3c8..88f0d6e6e 100644 --- a/android/fastlane/Appfile +++ b/android/fastlane/Appfile @@ -1,3 +1,3 @@ # -*-ruby-*- json_key_file("../.ok/play-store-credentials.json") # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one -package_name("ch.twohundredok.organice") # e.g. com.krausefx.app +package_name("com.twohundredok.organice") # e.g. com.krausefx.app diff --git a/capacitor.config.ts b/capacitor.config.ts index b8d09b8f5..e25b0df1c 100644 --- a/capacitor.config.ts +++ b/capacitor.config.ts @@ -1,7 +1,7 @@ import { CapacitorConfig } from '@capacitor/cli'; const config: CapacitorConfig = { - appId: 'ch.twohundredok.organice', + appId: 'com.twohundredok.organice', appName: 'organice', webDir: 'build', bundledWebRuntime: false, From 2a45c51250afb92f09d2f5ac3871b11f0a3d06f5 Mon Sep 17 00:00:00 2001 From: "Alain M. Lafon" Date: Wed, 15 Jun 2022 10:09:37 +0200 Subject: [PATCH 22/35] chore: For the moment, disable sharing on Android --- android/app/src/main/AndroidManifest.xml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 043f379dc..b4daa405e 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -39,10 +39,15 @@ - - - - + + + + + + From 3aedc7db8cb949ac82185d8361ea00bb45d850ef Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Thu, 16 Jun 2022 11:11:38 +0200 Subject: [PATCH 23/35] chore: remove google's initial hash for less merge conflicts --- src/App.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/App.js b/src/App.js index 6797253c3..cd9252910 100644 --- a/src/App.js +++ b/src/App.js @@ -74,7 +74,6 @@ const handleGitLabAuthResponse = async (oauthClient) => { }; export function handleAuthenticatedSyncService(initialState) { - window.initialHash = window.location.hash.substring(0); const hashContents = parseQueryString(window.location.hash); const authenticatedSyncService = getPersistedField('authenticatedSyncService', true); let client = null; From 9718f4a751793038edbaaeb87b33f677dcf0e012 Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Mon, 20 Jun 2022 09:39:18 +0200 Subject: [PATCH 24/35] feat: show a build number on the sign in screen --- Makefile | 53 +++++++++++++++++++++-- src/components/SyncServiceSignIn/index.js | 23 +++++----- 2 files changed, 62 insertions(+), 14 deletions(-) diff --git a/Makefile b/Makefile index d45aacf04..265f41ac5 100644 --- a/Makefile +++ b/Makefile @@ -1,26 +1,71 @@ -SHELL = /bin/bash +-include .ok/credentials.mk -.DEFAULT_GOAL = run +SHELL=/bin/bash + +.DEFAULT_GOAL=run # ------------------------------------------------------------ # dev +.PHONY: help +help: ## Show this help + @egrep -h '\s##\s' $(MAKEFILE_LIST) | \ + awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m %-30s\033[0m %s\n", $$1, $$2}' + .PHONY: setup -setup: +setup: ## Setup the project yarn install --production=false .PHONY: run run: setup +run: ## Run a server that serves organice as PWA (default) yarn start .PHONY: test test: setup +test: ## Run the tests yarn test .PHONY: docs -docs: +docs: ## Compile the documentation ./bin/compile_doc.sh .PHONY: deploy-docs deploy-docs: docs +deploy-docs: ## Deploy the documentation ./bin/compile_doc_and_upload.sh + +REVISION=$(shell git describe --tags) + +BUILD_FILES=$(shell find build/ -type f -name '*.js') + +.PHONY: build +build: ## Build a production build + bin/transient_env_vars.sh bait + yarn build + bin/transient_env_vars.sh switch build build0 + make set-revision + +.PHONY: set-revision +set-revision: $(BUILD_FILES) +set-revision: ## Set the build revision + for FILE in $?; do sed -i "s/ORGANICE_REVISION/$(REVISION)/" $$FILE; done + +ANDROID_TARGET?=Pixel_3_API_32 + +.PHONY: android +android: build +android: ## Build the android app and run it on $ANDROID_TARGET + npx cap run android --target $(ANDROID_TARGET) + +.PHONY: check-ftp-credentials +check-ftp-credentials: ## Check for FTP credentials + [ -z ${FTP_HOST+x} ] && (echo "$FTP_HOST needs to be set for uploading to FTP."; exit 1) + [ -z ${FTP_USER+x} ] && (echo "$FTP_USER needs to be set for uploading to FTP."; exit 1) + [ -z ${FTP_PASSWD+x} ] && (echo "$FTP_PASSWD needs to be set for uploading to FTP."; exit 1) + +.PHONY: deploy +deploy: check-ftp-credentials setup build +deploy: ## Deploy PWA + cd build0 && \ + lftp -u${FTP_USER},${FTP_PASSWD} -e "mirror -R ./" ${FTP_HOST} diff --git a/src/components/SyncServiceSignIn/index.js b/src/components/SyncServiceSignIn/index.js index a8a0a9f90..af8fc078e 100644 --- a/src/components/SyncServiceSignIn/index.js +++ b/src/components/SyncServiceSignIn/index.js @@ -192,16 +192,19 @@ export default class SyncServiceSignIn extends PureComponent {
-
- For questions regarding synchronization back-ends, please consult the{' '} - - documentation - - . +
+

+ For questions regarding synchronization back-ends, please consult the{' '} + + documentation + + . +

+

Build ORGANICE_REVISION

); From 061b4a1a16a4be84f597cc09e7b66d2b90e07846 Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Mon, 20 Jun 2022 09:46:54 +0200 Subject: [PATCH 25/35] fix: className instead of class --- src/components/SyncServiceSignIn/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/SyncServiceSignIn/index.js b/src/components/SyncServiceSignIn/index.js index af8fc078e..b9c362be0 100644 --- a/src/components/SyncServiceSignIn/index.js +++ b/src/components/SyncServiceSignIn/index.js @@ -192,7 +192,7 @@ export default class SyncServiceSignIn extends PureComponent {
- From 67b0fb7869abdb7545cd26cfc28849881aa08b31 Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Tue, 21 Jun 2022 10:40:26 +0200 Subject: [PATCH 29/35] feat: deploy via make with revision --- .circleci/config.yml | 2 +- .gitignore | 1 + Makefile | 27 ++++++++++++++++++++------- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index b310100e0..366386c3f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -18,7 +18,7 @@ jobs: command: sudo apt-get update -yq && sudo apt install -yq lftp pandoc gvfs emacs - run: name: Deploy to https://staging.organice.200ok.ch - command: 'FTP_USER=${FTP_USER_STAGE} FTP_PASSWD=${FTP_PASSWD_STAGE} ./bin/compile_and_upload.sh' + command: 'FTP_USER=${FTP_USER_STAGE} FTP_PASSWD=${FTP_PASSWD_STAGE} make deploy' - run: name: Deploy documentation to https://staging.organice.200ok.ch/documentation.html command: 'FTP_USER=${FTP_USER_STAGE} FTP_PASSWD=${FTP_PASSWD_STAGE} ./bin/compile_doc_and_upload.sh' diff --git a/.gitignore b/.gitignore index a8fa9f9d2..c7a4bbadc 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,4 @@ yarn-error.log* /documentation.org .eslintcache +/local.mk diff --git a/Makefile b/Makefile index 4b81b62ff..a617a71ab 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,19 @@ -include .ok/credentials.mk +-include local.mk + +ANDROID_TARGET?=Pixel_3_API_32 SHELL=/bin/bash .DEFAULT_GOAL=run +check_defined = \ + $(strip $(foreach 1,$1, \ + $(call __check_defined,$1,$(strip $(value 2))))) +__check_defined = \ + $(if $(value $1),, \ + $(error Undefined $1$(if $2, ($2)))) + # ------------------------------------------------------------ # dev @@ -17,7 +27,7 @@ setup: ## Setup the project yarn install --production=false .PHONY: run -run: setup +run: setup src/lib/headline_filter_parser.js run: ## Run a server that serves organice as PWA (default) yarn start @@ -37,7 +47,7 @@ deploy-docs: ## Deploy the documentation REVISION=$(shell git describe --tags) -BUILD_FILES=$(shell find build/ -type f -name '*.js') +BUILD_FILES=$(shell find build0/ -type f -name '*.js') .PHONY: build build: ## Build a production build @@ -51,8 +61,6 @@ set-revision: $(BUILD_FILES) set-revision: ## Set the build revision for FILE in $?; do sed -i "s/ORGANICE_ROLLING_RELEASE/$(REVISION)/" $$FILE; done -ANDROID_TARGET?=Pixel_3_API_32 - .PHONY: android android: build android: ## Build the android app and run it on $ANDROID_TARGET @@ -60,12 +68,17 @@ android: ## Build the android app and run it on $ANDROID_TARGET .PHONY: check-ftp-credentials check-ftp-credentials: ## Check for FTP credentials - [ -z ${FTP_HOST+x} ] && (echo "$FTP_HOST needs to be set for uploading to FTP."; exit 1) - [ -z ${FTP_USER+x} ] && (echo "$FTP_USER needs to be set for uploading to FTP."; exit 1) - [ -z ${FTP_PASSWD+x} ] && (echo "$FTP_PASSWD needs to be set for uploading to FTP."; exit 1) + $(call check_defined, FTP_HOST, deployment target) + $(call check_defined, FTP_USER, deployment user) + $(call check_defined, FTP_PASSWD, deployment password) .PHONY: deploy deploy: check-ftp-credentials setup build deploy: ## Deploy PWA cd build0 && \ lftp -u${FTP_USER},${FTP_PASSWD} -e "mirror -R ./" ${FTP_HOST} + +# TODO: this could replace the sh script bin/compile_search_parser.sh +src/lib/headline_filter_parser.js: src/lib/headline_filter_parser.grammar.pegjs + echo '/* eslint-disable */' > $@ + npx pegjs -o - $< >> $@ From a2cd8f0076653e4991761b17012e7beb98d21802 Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Tue, 21 Jun 2022 11:16:11 +0200 Subject: [PATCH 30/35] refactor: make workflow for fewer phony targets --- .eslintignore | 1 + .gitignore | 1 + .prettierignore | 1 + Makefile | 48 ++++++++++++------- Procfile | 2 +- .../app/src/main/assets/capacitor.config.json | 2 +- capacitor.config.ts | 2 +- package.json | 6 +-- 8 files changed, 41 insertions(+), 22 deletions(-) diff --git a/.eslintignore b/.eslintignore index 3e2e84b08..498520202 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,2 +1,3 @@ build/ +release/ node_modules/ diff --git a/.gitignore b/.gitignore index c7a4bbadc..491104de6 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,4 @@ yarn-error.log* .eslintcache /local.mk +/release diff --git a/.prettierignore b/.prettierignore index 3e2e84b08..498520202 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,2 +1,3 @@ build/ +release/ node_modules/ diff --git a/Makefile b/Makefile index a617a71ab..0327112b9 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ ANDROID_TARGET?=Pixel_3_API_32 SHELL=/bin/bash -.DEFAULT_GOAL=run +.DEFAULT_GOAL=start check_defined = \ $(strip $(foreach 1,$1, \ @@ -26,15 +26,15 @@ help: ## Show this help setup: ## Setup the project yarn install --production=false -.PHONY: run -run: setup src/lib/headline_filter_parser.js -run: ## Run a server that serves organice as PWA (default) - yarn start +.PHONY: start +start: setup src/lib/headline_filter_parser.js src +start: ## Run a server that serves organice as PWA (default) + npx react-scripts start .PHONY: test -test: setup +test: setup src/lib/headline_filter_parser.js test: ## Run the tests - yarn test + npx react-scripts test --env=jsdom .PHONY: docs docs: ## Compile the documentation @@ -47,22 +47,24 @@ deploy-docs: ## Deploy the documentation REVISION=$(shell git describe --tags) -BUILD_FILES=$(shell find build0/ -type f -name '*.js') +RELEASE_FILES=$(shell find release/ -type f -name '*.js') -.PHONY: build +build: src/lib/headline_filter_parser.js src build: ## Build a production build bin/transient_env_vars.sh bait - yarn build - bin/transient_env_vars.sh switch build build0 + npx react-scripts build + +release: build + bin/transient_env_vars.sh switch build release make set-revision .PHONY: set-revision -set-revision: $(BUILD_FILES) +set-revision: $(RELEASE_FILES) set-revision: ## Set the build revision for FILE in $?; do sed -i "s/ORGANICE_ROLLING_RELEASE/$(REVISION)/" $$FILE; done .PHONY: android -android: build +android: release android: ## Build the android app and run it on $ANDROID_TARGET npx cap run android --target $(ANDROID_TARGET) @@ -73,12 +75,26 @@ check-ftp-credentials: ## Check for FTP credentials $(call check_defined, FTP_PASSWD, deployment password) .PHONY: deploy -deploy: check-ftp-credentials setup build +deploy: check-ftp-credentials setup release deploy: ## Deploy PWA - cd build0 && \ + cd release && \ lftp -u${FTP_USER},${FTP_PASSWD} -e "mirror -R ./" ${FTP_HOST} -# TODO: this could replace the sh script bin/compile_search_parser.sh +# TODO: this should replace the sh script bin/compile_search_parser.sh src/lib/headline_filter_parser.js: src/lib/headline_filter_parser.grammar.pegjs echo '/* eslint-disable */' > $@ npx pegjs -o - $< >> $@ +# +# "start": "make start", +# "build": "make build", +# "test:dbg": "./bin/compile_search_parser.sh && react-scripts --inspect-brk test --runInBand --no-cache", +# "test": "./bin/compile_search_parser.sh && react-scripts test --env=jsdom", +# "coverage": "./bin/compile_search_parser.sh && react-scripts test --env=jsdom --coverage --watchAll=false", +# "eslint": "./node_modules/.bin/eslint --cache .", +# "nibble": "./node_modules/.bin/eslint-nibble --cache .", +# "prettier": "./node_modules/.bin/prettier \"**/*.js\"", +# "prettier-eslint": "./node_modules/.bin/prettier-eslint \"`pwd`/**/*.js\"", +# "lint": "yarn eslint && yarn prettier-eslint --list-different", +# "eject": "react-scripts eject", +# "postinstall": "if [ \"$ON_HEROKU\" ]; then npm install -g serve; fi" +# diff --git a/Procfile b/Procfile index 8ce0321b1..21cc949b0 100644 --- a/Procfile +++ b/Procfile @@ -1 +1 @@ -web: serve build +web: serve release diff --git a/android/app/src/main/assets/capacitor.config.json b/android/app/src/main/assets/capacitor.config.json index 8294a4af2..b0035720b 100644 --- a/android/app/src/main/assets/capacitor.config.json +++ b/android/app/src/main/assets/capacitor.config.json @@ -1,7 +1,7 @@ { "appId": "com.twohundredok.organice", "appName": "organice", - "webDir": "build", + "webDir": "release", "bundledWebRuntime": false, "server": { "cleartext": true diff --git a/capacitor.config.ts b/capacitor.config.ts index e25b0df1c..3c3ad490b 100644 --- a/capacitor.config.ts +++ b/capacitor.config.ts @@ -3,7 +3,7 @@ import { CapacitorConfig } from '@capacitor/cli'; const config: CapacitorConfig = { appId: 'com.twohundredok.organice', appName: 'organice', - webDir: 'build', + webDir: 'release', bundledWebRuntime: false, server: { // hostname: 'localhost', // default: localhost diff --git a/package.json b/package.json index 6c92e91d5..1f3d4bb5b 100644 --- a/package.json +++ b/package.json @@ -38,10 +38,10 @@ "webdav": "^3.3.0" }, "scripts": { - "start": "./bin/compile_search_parser.sh && react-scripts start", - "build": "./bin/compile_search_parser.sh && react-scripts build", + "start": "make start", + "build": "make build", "test:dbg": "./bin/compile_search_parser.sh && react-scripts --inspect-brk test --runInBand --no-cache", - "test": "./bin/compile_search_parser.sh && react-scripts test --env=jsdom", + "test": "make test", "coverage": "./bin/compile_search_parser.sh && react-scripts test --env=jsdom --coverage --watchAll=false", "eslint": "./node_modules/.bin/eslint --cache .", "nibble": "./node_modules/.bin/eslint-nibble --cache .", From 43ce06b3cf125c02fd21816e05081b9506b54f03 Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Tue, 21 Jun 2022 11:30:54 +0200 Subject: [PATCH 31/35] chore: Makefile cleanup --- Makefile | 51 ++++++++++++++++++++++++--------------------------- 1 file changed, 24 insertions(+), 27 deletions(-) diff --git a/Makefile b/Makefile index 0327112b9..2ba8b0b2e 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,22 @@ +# ------------------------------------------------------------ +# includes + -include .ok/credentials.mk -include local.mk +# ------------------------------------------------------------ +# variables + ANDROID_TARGET?=Pixel_3_API_32 -SHELL=/bin/bash +SHELL:=/bin/bash -.DEFAULT_GOAL=start +REVISION=$(shell git describe --tags) + +RELEASE_FILES=$(shell find release/ -type f -name '*.js') + +# ------------------------------------------------------------ +# functions check_defined = \ $(strip $(foreach 1,$1, \ @@ -18,21 +29,22 @@ __check_defined = \ # dev .PHONY: help -help: ## Show this help +help: ## Show this help (default) @egrep -h '\s##\s' $(MAKEFILE_LIST) | \ awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m %-30s\033[0m %s\n", $$1, $$2}' +# This is likely the only case in which make should call yarn. .PHONY: setup setup: ## Setup the project yarn install --production=false .PHONY: start -start: setup src/lib/headline_filter_parser.js src -start: ## Run a server that serves organice as PWA (default) +start: setup src +start: ## Run a server that serves organice as PWA npx react-scripts start .PHONY: test -test: setup src/lib/headline_filter_parser.js +test: setup src test: ## Run the tests npx react-scripts test --env=jsdom @@ -45,16 +57,13 @@ deploy-docs: docs deploy-docs: ## Deploy the documentation ./bin/compile_doc_and_upload.sh -REVISION=$(shell git describe --tags) - -RELEASE_FILES=$(shell find release/ -type f -name '*.js') - build: src/lib/headline_filter_parser.js src -build: ## Build a production build +build: ## Build a production (pre-)build bin/transient_env_vars.sh bait npx react-scripts build release: build +release: ## Build a release (with proper credentials and build number) bin/transient_env_vars.sh switch build release make set-revision @@ -76,25 +85,13 @@ check-ftp-credentials: ## Check for FTP credentials .PHONY: deploy deploy: check-ftp-credentials setup release -deploy: ## Deploy PWA +deploy: ## Deploy organice as PWA via FTP cd release && \ lftp -u${FTP_USER},${FTP_PASSWD} -e "mirror -R ./" ${FTP_HOST} -# TODO: this should replace the sh script bin/compile_search_parser.sh +# ------------------------------------------------------------ +# internals + src/lib/headline_filter_parser.js: src/lib/headline_filter_parser.grammar.pegjs echo '/* eslint-disable */' > $@ npx pegjs -o - $< >> $@ -# -# "start": "make start", -# "build": "make build", -# "test:dbg": "./bin/compile_search_parser.sh && react-scripts --inspect-brk test --runInBand --no-cache", -# "test": "./bin/compile_search_parser.sh && react-scripts test --env=jsdom", -# "coverage": "./bin/compile_search_parser.sh && react-scripts test --env=jsdom --coverage --watchAll=false", -# "eslint": "./node_modules/.bin/eslint --cache .", -# "nibble": "./node_modules/.bin/eslint-nibble --cache .", -# "prettier": "./node_modules/.bin/prettier \"**/*.js\"", -# "prettier-eslint": "./node_modules/.bin/prettier-eslint \"`pwd`/**/*.js\"", -# "lint": "yarn eslint && yarn prettier-eslint --list-different", -# "eject": "react-scripts eject", -# "postinstall": "if [ \"$ON_HEROKU\" ]; then npm install -g serve; fi" -# From 5b6504b6d19323fd8715b6e3ca3aeb8746f7960e Mon Sep 17 00:00:00 2001 From: "Alain M. Lafon" Date: Tue, 21 Jun 2022 15:05:17 +0200 Subject: [PATCH 32/35] fix: iOS top bar for PWA --- public/index.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/index.html b/public/index.html index 8339bf916..57481d628 100644 --- a/public/index.html +++ b/public/index.html @@ -11,7 +11,8 @@ content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" /> - + + Date: Tue, 21 Jun 2022 15:37:48 +0200 Subject: [PATCH 33/35] Revert "fix: iOS top bar for PWA" This reverts commit 5b6504b6d19323fd8715b6e3ca3aeb8746f7960e. --- public/index.html | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/public/index.html b/public/index.html index 57481d628..8339bf916 100644 --- a/public/index.html +++ b/public/index.html @@ -11,8 +11,7 @@ content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" /> - - + Date: Wed, 22 Jun 2022 11:15:01 +0200 Subject: [PATCH 34/35] fix: make sure src/lib/headline_filter_parser.js is generated --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 2ba8b0b2e..8c6b79066 100644 --- a/Makefile +++ b/Makefile @@ -37,6 +37,7 @@ help: ## Show this help (default) .PHONY: setup setup: ## Setup the project yarn install --production=false + make src/lib/headline_filter_parser.js .PHONY: start start: setup src @@ -57,7 +58,7 @@ deploy-docs: docs deploy-docs: ## Deploy the documentation ./bin/compile_doc_and_upload.sh -build: src/lib/headline_filter_parser.js src +build: setup src build: ## Build a production (pre-)build bin/transient_env_vars.sh bait npx react-scripts build From 2a3478be503ed18022b763dbcf01904844ac88e8 Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Tue, 28 Jun 2022 15:43:40 +0200 Subject: [PATCH 35/35] fix: terminate lftp after upload --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 8c6b79066..0e3a51f39 100644 --- a/Makefile +++ b/Makefile @@ -88,7 +88,7 @@ check-ftp-credentials: ## Check for FTP credentials deploy: check-ftp-credentials setup release deploy: ## Deploy organice as PWA via FTP cd release && \ - lftp -u${FTP_USER},${FTP_PASSWD} -e "mirror -R ./" ${FTP_HOST} + lftp -u${FTP_USER},${FTP_PASSWD} -e "mirror -R ./; bye" ${FTP_HOST} # ------------------------------------------------------------ # internals