From 8d01ae9f9c4dce0593e2728ae9e8e54044761592 Mon Sep 17 00:00:00 2001 From: Jerry Date: Wed, 13 Mar 2024 18:19:48 +0800 Subject: [PATCH] init --- .gitignore | 15 ++ app/.gitignore | 1 + app/build.gradle | 43 ++++ app/proguard-rules.pro | 21 ++ .../privileged/ExampleInstrumentedTest.java | 26 +++ app/src/main/AndroidManifest.xml | 31 +++ .../privileged/IPrivilegedCallback.aidl | 5 + .../fdroid/privileged/IPrivilegedService.aidl | 11 + app/src/main/ic_launcher-playstore.png | Bin 0 -> 45402 bytes .../privileged/AccessProtectionHelper.java | 142 ++++++++++++ .../fdroid/privileged/ClientWhitelist.java | 41 ++++ .../fdroid/privileged/PrivilegedService.java | 213 ++++++++++++++++++ .../drawable-v24/ic_launcher_foreground.xml | 55 +++++ .../res/drawable/fdroid_logo_privileged.xml | 45 ++++ .../res/drawable/ic_launcher_background.xml | 26 +++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + app/src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 1982 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 3756 bytes app/src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 1482 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 2448 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 2844 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 5034 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 4082 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 7762 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 5598 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 10026 bytes app/src/main/res/values-night/themes.xml | 16 ++ app/src/main/res/values/colors.xml | 10 + app/src/main/res/values/strings.xml | 3 + app/src/main/res/values/themes.xml | 16 ++ app/src/main/res/xml/backup_rules.xml | 13 ++ .../main/res/xml/data_extraction_rules.xml | 19 ++ .../fdroid/privileged/ExampleUnitTest.java | 17 ++ build.gradle | 4 + gradle.properties | 21 ++ gradle/libs.versions.toml | 18 ++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 185 +++++++++++++++ gradlew.bat | 89 ++++++++ settings.gradle | 23 ++ 42 files changed, 1125 insertions(+) create mode 100644 .gitignore create mode 100644 app/.gitignore create mode 100644 app/build.gradle create mode 100644 app/proguard-rules.pro create mode 100644 app/src/androidTest/java/org/fdroid/fdroid/privileged/ExampleInstrumentedTest.java create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/aidl/org/fdroid/fdroid/privileged/IPrivilegedCallback.aidl create mode 100644 app/src/main/aidl/org/fdroid/fdroid/privileged/IPrivilegedService.aidl create mode 100644 app/src/main/ic_launcher-playstore.png create mode 100644 app/src/main/java/org/fdroid/fdroid/privileged/AccessProtectionHelper.java create mode 100644 app/src/main/java/org/fdroid/fdroid/privileged/ClientWhitelist.java create mode 100644 app/src/main/java/org/fdroid/fdroid/privileged/PrivilegedService.java create mode 100644 app/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 app/src/main/res/drawable/fdroid_logo_privileged.xml create mode 100644 app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/values-night/themes.xml create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/themes.xml create mode 100644 app/src/main/res/xml/backup_rules.xml create mode 100644 app/src/main/res/xml/data_extraction_rules.xml create mode 100644 app/src/test/java/org/fdroid/fdroid/privileged/ExampleUnitTest.java create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/libs.versions.toml create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aa724b7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..677e6cf --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,43 @@ +plugins { + alias(libs.plugins.androidApplication) +} + +android { + namespace 'org.fdroid.fdroid.privileged' + compileSdk 34 + + defaultConfig { + applicationId "org.fdroid.fdroid.privileged" + minSdk 16 + targetSdk 34 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + + buildFeatures { + aidl true + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } +} + +dependencies { + + implementation libs.appcompat + implementation libs.material + testImplementation libs.junit + androidTestImplementation libs.ext.junit + androidTestImplementation libs.espresso.core +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/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 \ No newline at end of file diff --git a/app/src/androidTest/java/org/fdroid/fdroid/privileged/ExampleInstrumentedTest.java b/app/src/androidTest/java/org/fdroid/fdroid/privileged/ExampleInstrumentedTest.java new file mode 100644 index 0000000..63704bd --- /dev/null +++ b/app/src/androidTest/java/org/fdroid/fdroid/privileged/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package org.fdroid.fdroid.privileged; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assertEquals("org.fdroid.fdroid.privileged", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..483d0bd --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/aidl/org/fdroid/fdroid/privileged/IPrivilegedCallback.aidl b/app/src/main/aidl/org/fdroid/fdroid/privileged/IPrivilegedCallback.aidl new file mode 100644 index 0000000..4ebd274 --- /dev/null +++ b/app/src/main/aidl/org/fdroid/fdroid/privileged/IPrivilegedCallback.aidl @@ -0,0 +1,5 @@ +package org.fdroid.fdroid.privileged; + +interface IPrivilegedCallback { + void handleResult(in String packageName, in int returnCode); +} diff --git a/app/src/main/aidl/org/fdroid/fdroid/privileged/IPrivilegedService.aidl b/app/src/main/aidl/org/fdroid/fdroid/privileged/IPrivilegedService.aidl new file mode 100644 index 0000000..d280e1a --- /dev/null +++ b/app/src/main/aidl/org/fdroid/fdroid/privileged/IPrivilegedService.aidl @@ -0,0 +1,11 @@ +package org.fdroid.fdroid.privileged; + +import org.fdroid.fdroid.privileged.IPrivilegedCallback; + +interface IPrivilegedService { + boolean hasPrivilegedPermissions(); + oneway void installPackage(in Uri packageURI, in int flags, in String installerPackageName, + in IPrivilegedCallback callback); + oneway void deletePackage(in String packageName, in int flags, in IPrivilegedCallback callback); + List getInstalledPackages(in int flags); +} diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..e3910f1fa016b7892a598f9198fa962924b4624c GIT binary patch literal 45402 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 + * + * 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 + * + * http://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. + */ + +package org.fdroid.fdroid.privileged; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.content.pm.Signature; +import android.os.Binder; +import android.util.Log; +import android.util.Pair; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.math.BigInteger; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.Arrays; +import java.util.HashSet; + +public class AccessProtectionHelper { + + Context context; + PackageManager pm; + HashSet> whitelist; + + AccessProtectionHelper(Context context) { + this(context, ClientWhitelist.whitelist); + } + + AccessProtectionHelper(Context context, HashSet> whitelist) { + this.context = context; + this.pm = context.getPackageManager(); + this.whitelist = whitelist; + } + + /** + * Checks if process that binds to this service (i.e. the package name corresponding to the + * process) is in the whitelist. + * + * @return true if process is allowed to use this service + */ + public boolean isCallerAllowed() { + return isUidAllowed(Binder.getCallingUid()); + } + + private boolean isUidAllowed(int uid) { + String[] callingPackages = pm.getPackagesForUid(uid); + if (callingPackages == null) { + throw new RuntimeException("Should not happen. No packages associated to caller UID!"); + } + + // is calling package allowed to use this service? + // NOTE: No support for sharedUserIds + // callingPackages contains more than one entry when sharedUserId has been used + // No plans to support sharedUserIds due to many bugs connected to them: + // http://java-hamster.blogspot.de/2010/05/androids-shareduserid.html + String currentPkg = callingPackages[0]; + return isPackageAllowed(currentPkg); + } + + public boolean isPackageAllowed(String packageName) { + Log.d(PrivilegedService.TAG, "Checking if package is allowed to access privileged extension: " + packageName); + + try { + byte[] currentPackageCert = getPackageCertificate(packageName); + + for (Pair whitelistEntry : whitelist) { + String whitelistPackageName = (String) whitelistEntry.first; + String whitelistHashString = (String) whitelistEntry.second; + byte[] whitelistHash = hexStringToByteArray(whitelistHashString); + + MessageDigest digest = MessageDigest.getInstance("SHA-256"); + byte[] packageHash = digest.digest(currentPackageCert); + + String packageHashString = new BigInteger(1, packageHash).toString(16); + Log.d(PrivilegedService.TAG, "Allowed cert hash: " + whitelistHashString); + Log.d(PrivilegedService.TAG, "Package cert hash: " + packageHashString); + + boolean packageNameMatches = packageName.equals(whitelistPackageName); + boolean packageCertMatches = Arrays.equals(whitelistHash, packageHash); + if (packageNameMatches && packageCertMatches) { + Log.d(PrivilegedService.TAG, "Package is allowed to access the privileged extension!"); + return true; + } + } + } catch (NoSuchAlgorithmException e) { + throw new RuntimeException(e.getMessage()); + } + + Log.e(PrivilegedService.TAG, "Package is NOT allowed to access the privileged extension!"); + return false; + } + + private byte[] getPackageCertificate(String packageName) { + try { + // we do check the byte array of *all* signatures + @SuppressLint("PackageManagerGetSignatures") + PackageInfo pkgInfo = pm.getPackageInfo(packageName, PackageManager.GET_SIGNATURES); + + // NOTE: Silly Android API naming: Signatures are actually certificates + Signature[] certificates = pkgInfo.signatures; + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + for (Signature cert : certificates) { + outputStream.write(cert.toByteArray()); + } + + // Even if an apk has several certificates, these certificates should never change + // Google Play does not allow the introduction of new certificates into an existing apk + // Also see this attack: http://stackoverflow.com/a/10567852 + return outputStream.toByteArray(); + } catch (PackageManager.NameNotFoundException | IOException e) { + throw new RuntimeException(e.getMessage()); + } + } + + private static byte[] hexStringToByteArray(String s) { + int len = s.length(); + byte[] data = new byte[len / 2]; + for (int i = 0; i < len; i += 2) { + data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) + + Character.digit(s.charAt(i + 1), 16)); + } + return data; + } + +} diff --git a/app/src/main/java/org/fdroid/fdroid/privileged/ClientWhitelist.java b/app/src/main/java/org/fdroid/fdroid/privileged/ClientWhitelist.java new file mode 100644 index 0000000..993fadb --- /dev/null +++ b/app/src/main/java/org/fdroid/fdroid/privileged/ClientWhitelist.java @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2016 Dominik Schürmann + * + * 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 + * + * http//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. + */ + +package org.fdroid.fdroid.privileged; + +import android.util.Pair; + +import java.util.Arrays; +import java.util.HashSet; + +/** + * Only apps signed using a certificate with a SHA-256 hash listed here + * can access the Privileged Extension! + *
    + *
  1. Get SHA-256 of certificate as lowercase without colons with + * keytool -printcert -jarfile com.example.apk | sed -n 's,SHA256:\s*\([A-F0-9:]*\),\1,p' | sed 's,:,,g' + * | tr A-f a-f
  2. + *
  3. Add here with Application ID
  4. + *
+ */ +public class ClientWhitelist { + + public static HashSet> whitelist = new HashSet<>(Arrays.asList( + // certificate SHA-256 of https//f-droid.org/F-Droid.apk + new Pair<>("org.fdroid.fdroid", "43238d512c1e5eb2d6569f4a3afbf5523418b82e0a3ed1552770abb9a9c9ccab") + )); + +} diff --git a/app/src/main/java/org/fdroid/fdroid/privileged/PrivilegedService.java b/app/src/main/java/org/fdroid/fdroid/privileged/PrivilegedService.java new file mode 100644 index 0000000..7700ad3 --- /dev/null +++ b/app/src/main/java/org/fdroid/fdroid/privileged/PrivilegedService.java @@ -0,0 +1,213 @@ +package org.fdroid.fdroid.privileged; + +import android.annotation.SuppressLint; +import android.app.Service; +import android.content.Intent; +import android.content.pm.PackageInfo; +import android.net.Uri; +import android.os.IBinder; +import android.os.RemoteException; +import android.util.Log; + +import java.io.InputStream; +import java.io.OutputStream; +import java.math.BigInteger; +import java.security.MessageDigest; +import java.util.Arrays; +import java.util.List; + +public class PrivilegedService extends Service { + + public static final String TAG = "PrivilegedExtension"; + private AccessProtectionHelper accessProtectionHelper; + private int uid; + + @Override + public void onCreate() { + super.onCreate(); + + accessProtectionHelper = new AccessProtectionHelper(this); + uid = getApplicationContext().getApplicationInfo().uid; + Log.i(TAG, String.format("uid: %d, name: u%d_a%d", uid, uid/100000, uid % 1000)); + } + + protected boolean hasPrivilegedPermissionsImpl() { + try { + @SuppressLint("DefaultLocale") + String[] cmd = android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.O || getApplicationContext().getPackageManager().canRequestPackageInstalls() + ? new String[]{"su", "-c", "true"} + : new String[]{"su", "-c", String.format("appops set --user %d %d REQUEST_INSTALL_PACKAGES allow", uid/100000, uid)}; + Log.d(TAG, String.format("check root cmd: %s", Arrays.toString(cmd))); + Process p = Runtime.getRuntime().exec(cmd); + if (p.waitFor() == 0) { + Log.i(TAG, "Has Privileged Permissions"); + return true; + } + } + catch (Exception e) { + Log.e(TAG, "hasPrivilegedPermissionsImpl", e); + } + Log.i(TAG, "No Privileged Permissions"); + return false; + } + + protected void clearCache(byte[] sha1Bin) { + String sha1sum = new BigInteger(1, sha1Bin).toString(16); + Log.d(TAG, String.format("sha1sum of apk: %s", sha1sum)); + String[] cmd = new String[]{"su", "-M", "-c", "sh"}; + @SuppressLint("DefaultLocale") + byte[] stdin = String.format("for i in /data/user/%d/org.fdroid.fdroid/cache/apks/*/*.apk /data/user/%d/org.fdroid.fdroid/files/*.apk;do [ -e \"$i\" ] || continue;[ \"$(sha1sum -b \"$i\")\" == \"%s\" ] && rm -fv \"$i\";done\n", uid/100000, uid/100000, sha1sum).getBytes(); + try { + Process p = Runtime.getRuntime().exec(cmd); + p.getOutputStream().write(stdin); + p.getOutputStream().flush(); + p.getOutputStream().close(); + int _b; + StringBuilder stdoutStringBuilder = new StringBuilder(); + while ((_b = p.getInputStream().read()) >= 0) { + stdoutStringBuilder.append((char)_b); + } + StringBuilder stderrStringBuilder = new StringBuilder(); + while ((_b = p.getErrorStream().read()) >= 0) { + stderrStringBuilder.append((char)_b); + } + Log.i(TAG, String.format("clearCache stdout=%s stderr=%s", stdoutStringBuilder, stderrStringBuilder)); + if (p.waitFor() != 0) { + Log.e(TAG, "clearCache failed"); + } + } + catch (Exception e) { + Log.e(TAG, "clear cache", e); + } + } + + protected void installPackageImpl(Uri packageURI, int flags, String installerPackageName, IPrivilegedCallback callback) { + Log.i(TAG, String.format("install uri=%s flags=%d installer=%s", packageURI, flags, installerPackageName)); + + String packageInstalled = null; + int installationReturnCode = 0; + + try { + InputStream inputStream; + inputStream = getContentResolver().openInputStream(packageURI); + if (inputStream == null) throw new RuntimeException("inputStream is null"); + int size = inputStream.available(); + @SuppressLint("DefaultLocale") + String[] cmd = new String[]{"su", "-c", String.format("pm install --user %d -S %d -i %s -- -", uid/100000, size, installerPackageName)}; + Log.d(TAG, String.format("cmd: %s", Arrays.toString(cmd))); + Process p = Runtime.getRuntime().exec(cmd); + MessageDigest sha1Digest = MessageDigest.getInstance("SHA-1"); + byte[] buf = new byte[1048576]; + OutputStream outputStream = p.getOutputStream(); + while (true) { + int got = inputStream.read(buf, 0, 1048576); + if (got > 0) { + sha1Digest.update(buf, 0, got); + outputStream.write(buf, 0, got); + } + else break; + } + outputStream.flush(); + outputStream.close(); + int retCode = p.waitFor(); + if (retCode != 0) { + throw new RuntimeException(String.format("return code %d", retCode)); + } + /* todo: it seems that f-droid does not care about packageInstalled + String[] _uri_sp = packageURI.toString().split("/"); + packageInstalled = _uri_sp[_uri_sp.length - 1].split("-")[0]; + */ + installationReturnCode = 1; + clearCache(sha1Digest.digest()); + } + catch (Exception e) { + Log.e(TAG, "installPackageImpl", e); + } + try { + Log.i(TAG, String.format("install uri=%s return %d", packageURI, installationReturnCode)); + callback.handleResult(packageInstalled, installationReturnCode); + } catch (RemoteException e1) { + Log.e(TAG, "RemoteException", e1); + } + } + + protected void deletePackageImpl(String packageName, int flags, IPrivilegedCallback callback) { + Log.i(TAG, String.format("delete name=%s flags=%d", packageName, flags)); + int installationReturnCode = 0; + try { + @SuppressLint("DefaultLocale") + String[] cmd = new String[]{"su", "-c", String.format("pm uninstall --user %d %s", uid/100000, packageName)}; + Process p = Runtime.getRuntime().exec(cmd); + int retCode = p.waitFor(); + if (retCode != 0) { + throw new RuntimeException(String.format("return code %d", retCode)); + } + installationReturnCode = 1; + } + catch (Exception e) { + Log.e(TAG, "deletePackageImpl", e); + } + try { + Log.i(TAG, String.format("delete package=%s return %d", packageName, installationReturnCode)); + callback.handleResult(null, installationReturnCode); + } catch (RemoteException e1) { + Log.e(TAG, "RemoteException", e1); + } + } + + private final IPrivilegedService.Stub binder = new IPrivilegedService.Stub() { + @Override + public boolean hasPrivilegedPermissions() { + boolean callerIsAllowed = accessProtectionHelper.isCallerAllowed(); + return callerIsAllowed && hasPrivilegedPermissionsImpl(); + } + + @Override + public void installPackage(Uri packageURI, int flags, String installerPackageName, + IPrivilegedCallback callback) { + if (!accessProtectionHelper.isCallerAllowed()) { + return; + } + + installPackageImpl(packageURI, flags, installerPackageName, callback); + } + + @Override + public void deletePackage(String packageName, int flags, IPrivilegedCallback callback) { + if (!accessProtectionHelper.isCallerAllowed()) { + return; + } + + deletePackageImpl(packageName, flags, callback); + } + + @Override + public List getInstalledPackages(int flags) { + Integer matchStaticSharedLibraries = getMatchStaticSharedLibraries(); + if (matchStaticSharedLibraries != null) { + flags |= matchStaticSharedLibraries; + } + @SuppressLint("QueryPermissionsNeeded") + List ret = getPackageManager().getInstalledPackages(flags); + return ret; + } + }; + + @Override + public IBinder onBind(Intent intent) { + return binder; + } + + protected static Integer getMatchStaticSharedLibraries() { + /* todo: use AndroidHiddenApiBypass + try { + java.lang.reflect.Field field = PackageManager.class.getDeclaredField("MATCH_STATIC_SHARED_LIBRARIES"); + return (Integer) field.get(null); + } catch (NoSuchFieldException | IllegalAccessException | ClassCastException e) { + e.printStackTrace(); + } + */ + return null; + } + +} \ No newline at end of file diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..d5cc038 --- /dev/null +++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,55 @@ + + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/fdroid_logo_privileged.xml b/app/src/main/res/drawable/fdroid_logo_privileged.xml new file mode 100644 index 0000000..787fe14 --- /dev/null +++ b/app/src/main/res/drawable/fdroid_logo_privileged.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..7ba6410 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..bbd3e02 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..bbd3e02 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..a4f0dfb09d3e4dddc03a3653d5119a5d1cc8544e GIT binary patch literal 1982 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 Q@Hr|RK>+(N`2Q&Z0Mm}zpa1{> literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..f338523a2d4d8e5d2eab5e2435cfcd1714f0118b GIT binary patch literal 3756 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 W!k&i0LgdyJtgU6)FPmgVmXR(h!~bdk literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..372c226eea46f38d1ca959f3d9568b98787f5fd2 GIT binary patch literal 1482 zcmV;*1vUCoNk&G(1pok7MM6+kP&iDr1pojqFTe{BO_*uhMoG``M?8%~ME@sX09y4~ zYLMI(Y9dLBx-PnqAN(sr02PXBN*^#RqOw20A-V!iBlHi;NW~O$^v2Clin=#Lm%+O+rD4fF5hu2Y^4Uz6F{F9P%gB{QVx| zP_`PwQ-CFX)Bso=r7dkCaMcAguADx&=Ia107X?%RY>h?;P2Z7%*cwgC2mw0oAFx{> zV32lz5CDL+yTz6NH5y?ShS0ExrBp`KX6io!qE{g<^gXapFbg8M&Y@d85-3h;2#moI&E?O^o zM>&@{&P|JAh6pK_!;>09fa(GOq71_`aTtV+hiW&o-Lw#z%_`&WZx6TroLl^A|K_iV zdT4~^k=t*3`R+%6X4*4Hx9;|C{i}{g7}@d2mAmiDPa_awKty@<`Q`a1$-g&fQX)2N z0yd0?u6zmr02qk~n@AjNB9DE2&g%~!-Ix!+W=LfB4|hI$-`Teh*k}yT5H^MlVbiEi z4eDo>II`o`&u`h=!+9VBN{;^><6qBd070~<&irX6aa6!+{AEVVp+s!rpipdV%HNyO zk(i)|4~Vk^#PJs)gm=W&h7#0H~v2NLwHX0I&f79GKe+&GEUc8 z7>xx00ITJy>@?~6W03(QDFajWkR1*Mz zNNq&2pqfP{1(cf17Cj?Slre@R2cCq>78c&T00MKx- zLHdM=a3KYNmAkLJvf4i!xap6yZ}~TWc;CZR1keZpTA>Ef00D#m3RwA1{@i&1*$`>J z4zuIx_cN!z57Bw02mw0v6rm_WAVP@Vp!>2Ng6N=ZXiF*}gcyPb5t!rv6C~ z0uh>C1n4Q+LD7ifQjt1eTqthxVtSw3!jSx7bxjvUfc^pkHyR;CagnTvipu|=-LEn< z@7DQ*m4dz+8vw<02BQfs?c!rzu9G0Q1u^w(_Ez_UiROycP$khCQ85At1k|&}q3Ns) zB8m%8l@?KPY1g0oZxjAN_W>;!-(#k@bpZflcc9~NGx7j>+z73DBe`<_{*7mNy-o#X kkB2%mptk*g!qfb}MeYFrfT#M)zKyMQKm{2}@V{^X02(!-O#lD@ literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..65c05003529c3df4eac243a26fdd6c7b14033691 GIT binary patch literal 2448 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 upTB&E1~Tw@C}992Ft1QC9|0h6O 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 AYybcN literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..72efd24bae161c0c6e553f66103adfaea65ea9d3 GIT binary patch literal 4082 zcmVrVces-#00{`dzoGQRfTBi{qFO+}`q#+~4=0i&saB~M^_jn-`k=nT`=9KI z{!ai*agQFFzxG7z0g+{!r5DlCpW{+{5%UK2i?-i;6ES7ZoM>&$u@1B+Z=z@hgG9us zfhTWb2!@b|ppl4Drc9Zdw%d!M6hutfis;RhDUllX0QmipXrJA!k@lj0ANQyLz}Wx* zfUviQ`xbgl0kFm!?aCwt0Hnrt=?8kX;Fh*ckt9cdL>4xPnVFdx4q0cqR^5Y^nODqG zV^Ko5S*82$0hx2O@Q#P2cU7t-h z?xthgwrX4Hb6gHJ}kWl!xq70Vj2LzwJIdcP}}%wH@2DAG}}e zR5q$iK&?iQPMwVzm}79NbT%eo+fF{b@B2WIB)M&K#2AMI!y*Wv(+7mWe@;6#LfkB> ziG8ls+OUmyGG8E+#qa4eF23f;Tvy(rUkoJmMe9e=&784S@(T!_f@1~1y^xM<1l`n=)Mp-b+1du@lkv3W?He%z;kNoxYZEnB# zHn*(-v7c&@{5roZGTPpZl}61HMr2ehHkJsY@W2?Y7w-JXeW?aNQ&U7Oz))X^YK5|h z;KNACX%WfMuv$1-)xE^XTQHQ2ED|@HW$Wr2C*4z3F(HZ%%In>DDI*)|r6N9W$ZvJytv~f) z5mJ@%=2gy&c!QgstVFd-1%@^!zQxVYZ@F;%W>X=*c(tqN>^Sd(NEFIaL8gjm;g!z3 ze2uFXUR1~~m>D{T4$E@bL?g(lGN(g@Anu7(ibjuTOGXRPsJN;0Hepm+qCC2DNL0KK zN1=*3QGsPT)>y6~Q0Z7gD!*|plSTIf&*nKIZ*7)n7F2g#Dufn(`7KXeR@&!0uw*?) z(7G2|?s_@#grB2e5!lAtG;bGMircA*J>35CMmNYcK1;8CbCq|0deH6dJgzJmT1Vu} z;HUfNe)Rl_@-$dIimx8=sVM+RKvXaNzE{1whxqIrAMW<;U$5A|+5i{;_MK#~75we< zIonrDEEC1Qk;k?Hk zpR=>CIoxBiV+v91<{Lq=8JCK0D+H$O9S^CV|mz1Q@aQ?i)#*NxuBu=L(gxWHSVf;b{dJ@46c24^2dYO7R zFCRohmLFp(nNS}Vlm1lf^LpD+(`P%&yKy$|gG)jsk$mgj+KLgCdj=6Eyd;9q^h>Y>M2-j#XJr%!)in z=ZW+JiFB@oP2CSJues-E>gKd>$G5#sTYyaj0;UoOa{)hl{kgx|-q($tFgkTwxV7yz z8i>4kuJhq}%+0p#T9ehp-RBiIZa18}KIe&fm3{hsKbaYT2u0*eyBGnO*AZF>7{%%m zPS)J9nL-)QvBR19`{$4S^86j6)3Mz8*|q8m^MX&#({dwbn%TJ91B*| z4mu)4v2WB9uCqm<`Ia9XDC$1bRE| zzUAw4V67D``E}b3+g^QtgHv!=ll&+VB~U5#!1o^Cal< zo7C(Z|Gek6^UTczO+j&CvZK@~qIDcEE1dHaGBEU{FnHe~lG|UCy%Y!5gBk-lN+F!_ z@Z}bkHz|&gXt@#F8t2pr4nTlg6M0R*$=nI=$fX#9^Pnc*yrP!7F^2?y{CU8Ti?`I= ztZ~W@m7iBSkcoF0+ZEc}Nmiy+#WvC~fR=-g^(+`*RI{%czz9ejt>C(2r`W>KYcBxa zOazS+NoaE{dMD&mGav=oiqXRPwDm=0=(D2REk*@cPcw>7b+R*uhTpuBr$?f;@ci)< zwncKvrZNSm>G5?KN{p&9b9^*f)^lYY951ej?2EY`Q;?X(F*r@5AO$D$Xf8+F_z#lY z$2coTu{vw)_ro6lN0=z$3Yjw8)72+vP)+A5QSR{tA6XBFm&327FNHTDIDuQU@Dw`OXCsMGgqEEO6 z&7r9+p}T0|l&h^`x3Kqx#NlgV7ftLmm1)ZBFF`X~Ln<`^fBEfaN3Z6FtC$86Oq~Ll z#E&a+UN8mWWGeuZPW{+72qsnrgqPlJdF9O+tV^^ZI_q5(8tIvn?a1Nlx#4<#eVm_1 zfuqU*U<5r3T`cO3nwvl9)F#)b%0H%s*en$Un}|RbVc;6N*vGz-^6E750r%RKGEVdG z+WjDhtCfEoV+B8oWefMyedpah1&BRYs~SewN6TW^%kHO{Ti^k+KE>S*M0<6 zu#Lyrgz~+EGjZs2&qHj=o|HXv41gS?2&o4`YrQny6ges?k9b&&SODk-=njKEtE|@D zU=P4-D3ldF=h}BT`ax6BM;iO3XA7J{BQY zyJaR!kSYDMJrR;EWjZlaPIFW2!>7>yf`O0NP^$xkGR1H_tgarN%S1M~nhIqOyA$>q zC6tB*0SNjqyTxZAb;ALGN24N-N10;Vfo2ZD`F2mAXsUt*0Q{p})QOTv*^t`wtFPSs z(81Nd<}Jlz00_s9V1m_-sdsiQ8QLI<45kPoa`bfmg`oto!APKoKA!T^pWk`#?mw(a zMApv6Ky<#@Wo3QTtnB5(8w*!+N6@-bghrz~XYkyqi%;A{7TW$9M1f9*WYf{pm6~m_ zc{<;nqAg)=c4EK^tZa3iD0EhjU=}{yC*ZOAU@WhGrPOesaST|kY&r>$>s{hZJT%S6>I!~lK?>Tr2uq9qwJa#(w z5B_q{43HangNp@B5D1TU6u>h=fyPmUdRMZWPiw%s`%iyz?>!`LYu;M8Uy3^DxM|%x zx{6couyU+iRUI2fiA0h|c6Z&I%1r6510!Szj!n@6$BscLq2BXm>Lb?dSDVe(Q*jJB zve;63$SM|H08ShUVBoRj-YG5yN{0P|0yWJrhG3xE8{Fw|I5C|NKsa`!gnXY`@X*#y zEcv~Fvu*c7&*@u*)Av*5i3u2mOmym=q-c$5t`TEPtee)!N~jv(5cC6mF8XH>?3W(; z7q*O*+H6bv5gMREi~4~htfc7KiRgZKkB1(J7^QNHytEBbrV~@oOku^<{zQ(B!LkPh z^z4W--InZFX=2TIR3?2{4w%K3W^bAVdrEX$y^UP~+!Br_1L)_$!r*Zwh{|&!%ob(= zjF1ag*UZ2KkZb6iwj1Fr2;MauQ5r^cGn7o09C^!UkCgP-t6a4D&b8_G# z*36oded3?)24me(Jct8vgd^ce*^umO&z-Z9d#wq8(Ar)wg$GdzO%eY)8-8@h>}3#Z z{=rHPFPNR*K8*b3&BC1*3d|~#m{dHjdd5(?MhWXDJ=o(HkAuS}vON^qdiL=W>s>o+ zy@{RcvAtH^wClDr@)}xgOk-+63L>tQ6zy{rwb8jri>9_v4*JKje~it|&I|b?C=H4> zd#H)1?%4Sjqm69EpuJ_ZxZPwo#8J@d)3A;HE{%Xp$idTWCmZzfjcpy_hzDCmwz!Hd zQST-7bI>|!SS#m7O;)R@XwT&cx7CWK7~8siwbfB+a2xeDmTdJ}^P{p?61`1?%51|A z3rF-2+o}b1fvk^6gG8DDKP`t zp^SM=KO1ZI7Yg<;R_||@g^zZPB1-wLZDfpsBU$}`)`KFihNm<%ojQ$mZ7li~0qO!} zxnJ-rYQzv$&VuI8TJIHg4nip*I&oFS#D|64(B$;(^|kVDK&*8)@Qbt`lqt5R^Fjs% zjbM*b<$swUntc|&Vx(xSDNiH2LG%!9O(Lb8@#7Ak_)|&+6T+dBp5ZBvYap^XkgHON zss83ZKi)(T+6u+j+KNn^ToGmQe4i{IEmP%Kzj<~-s=(Q={a0W9-tQL*{bfeVs9m9p zdWHI+_RNrv%e#NGIC=S7YN1p}m$$8?6GQibexR@*Dhsv1H>iz4tbt7B!{QG!Ix^v{?ArFe{}YHhryU1XH-3eVZw-=j2@G=PqGk4#$$KY#9U=Xi5Q{6;ng-mC1pu8 zJ{_Vr2j%lg`T2CRt9NL|{1X12RZV9?B@7jYKictl>#59$$9W0hT9n%PdbD{TtLjSzFZ7zf)@nU*Gj#aGtvoBKki8 z+R_&~DF>hdWy1iF+1XOak|}|TJ0cX}RyBwb+mR6)*UukZJV}c?A~NL)&0W%mO?jUC zzE3Ry?kkfYOa9?JPi$K&wcl@9K#pu%wbI{lzWcwmafUztNC?Aa{-huSrEMcgMyrKe z!u4Oz!MB8i3n536R-!cyUp8))CAH34=OGC?F@RuiE`Qq!s^NBwk z{f#Yq;uTA3j$X$ez!zU9Ucnv9@_FJNwP#+5XdA^%#IP)T<_~LtF(4v}%e|Yu^J7Lt zgf(FfDn*4Nl0!rQ!V6sCWJ~66{9X0rm`mB8L&j_su(7QVTo9T zfPg7P6vHswutXRWfHhdU;f7EhTNbw_-zTUN5utWW9#s46L1UhKP#@AVg)wW^WC{GE zWeA24v@xhEFk9Q6NRp)Ym$`dHBo$X@Q8RP*Ff%hV+~4fx3VLRr%U&^KaZ-dE{O7ny zGP!%?!0wZrj%?eiBW9iV1!iV@{$p_L0dUR{v!!l*=^jklwk>mn?7ZLatBSNY?%smS z%!9kb4jB2!oprDTTLMQIJN)jhIP{UOROYN+s0G< z0>0@9Z)w}kETk2VsQiN8{qEU&L6l^rj)k6;0J@+?P443ZAoTz4)S6mCkgD~`Zm;1i zg!62D$W85#FHecigb6q@X(d*i6f^Or@-;(vFIVl0k8y%FhHpQdV>-6!!GnGWIOUW zJnB5q@xQ_TVb}%)DX4;Yf+Y22_f9j@^Cn(sJOe!mIjq<>bSv_pb4TEYm)$!96510X zfP%9EBhd5yXZ>1UguLE(8JrCZKoWGP3k?||BoabXP6|nx7NkfLtiZi4SD_d7TnD>> zUiY*C=N#cishSft+zS5e}8m?nXBTAlPgC)2+XUYxRA97f`Mp2cYR?4_^b{gV*jP zy9sdEPv7I(DaH2FP!8j#+!DWQIBz-LORVDOaM5~jo%6y&Z1o# z!dZn8-1XoDt=rvXT#=(;3Be1|*DNE5E7eb@`fwWK`@8LftB|pWx5wuuL)m55dZ>Xb&x#=RpLCg zw%r9!foq#$m@r^n?(KGgFL_cPj39N}*bBR4xK>(3mJ$G&v3q5=2jIJTFnrmMXRc3P z*VZH{MU`7Oeb;|Z1$h`i1@K>B64$deNm7amA@qJosP!NxiHh7J80t0P%R3~6&@={= z>#dN7IAz@P(=ONBVW-fpC0f~d#uI%gudu!!$@OfG?&r_GHUHope^fwW>f#z7{I;I{ zD-7|fD^YfoxH?+=p#SX0{>xQ%4EX^PyXFSmkw-q8=RcmL4eJ_`2$mt5}3U+ahb zRNo|afRKd+N!sShf6ot@VUetS;5&Zr)771S0g`7(+;9<@#_9X{SO3}X*xC^y0}}|7 zM4A5Qdw%`k{wGzO4MMLdY5ntkozKtfQ2N2K1S?Uuge_JZeGXpuKKS_qgx2%bXf#B3}b#r=Y|il-QKS z=ERMcvNnxomzr!Tvv}Cw>)$cpk&(3w{-c$n}2Zr_9HiQ%a8q+rS;E@hMMFyoCko|ONR6I zl80X}TYxYBC&2>O;wB$q3EK9^<6IZHL|I@c@gDr>65gR;{d4sJFaDAC5kY}`+4GOZ z(H$_Ly?|(R_iOSpVLi-4|~PVulm0e zA)xG`hkV(?KftG5dXYb7B3Z~H%c&uj03tt3Mb#+zeA;CiChGF~7o^{G^1lyy$zK3I zUiYYT*S+V!CkwZZ1gAU3ZS(cQ0xINP_nw2i1z?orcDf9=a;jT1(3x>qtWFS8YLb=6qSe^oVmtA?r->H% z%pl!5-L*OmQS2Tlk<7!+E)`M0upYbVu4np8qbn<0h(+qOnCQ%}d7t|)gDm?72s1t- ztgS83Q}{&VQ{qg8Om?wvYz2cvFf1+fDjXzeKK zmnrqz^9gR@>fh!Y{-Iy=Q+>NT?po++BwSiB>1;m(@q#C1$(jfKIrokXXeR%uJ88G z^JRbA&%5jSERjDXpwSstrZ>Op1tuVf}RKXFq?tv)hU6r3nxWD}5Kt-ScRKShQ|0yY~WTy0f}Oc+CU?;~hd<%O580&a>SAbGCyNl`S(X7LnmnrZ`hTCQI7l-N)p`U!Sde zOtPXN0WF9#-T|@nSlaZ0CoLjxTsm-c*?8sh65AUf*$X1!f{}@(#jj;7)6layX*;3V z)h%B5>7H&jaxefV%&_8>cii1@&re5)rA4oE^SN*qSgJblOwAWa$zHnayj3wJA@I%L@x#uEZ#Y0W85n-0o6V&E}L6M=uK{ zE0zgpL9FF4gi3IUo{IAyx8cV)Dgoer6-ZD@g1 zQ+4e7lt>5__p8jX=J_!BlJl0mgrXNb|74eQbG1viazjpL$jsvYz}G*zGKIOj?hel- zQhN{I@gLst2Xo|4<(Aj_Y@!qw`GkltS2oibuXxev5Lp(lsV$hFZ7e}wJU_?w8U1py zl$vD06H}PSF5s3)(pfute4ZEtOx3d+riyyfM7B4Vj*mtlJs9gYmghlyikc(*G@%6J zd2-D?-#g~Yg{~dd3=*fagoU&%)UXjbaP#RPnKfCL^Jz&dLxl{YljlNtfu4VyF`lji zCx@a^SHV&uA%#Q&o#dgJnqxlOS?aEmakY{a8UO+W(Qy_GUm_uLblcO{Bd5wF%7$Wj zeA7EBL3@Z9I%_0hQh**QX_plWAwLZaK)Lx=Fh~Z302GjFKRWjhKV3c^_WzIkRh6mvrAKI46>F;$dK8#%Nku;`Xbao8UjZ{WC(xNp};W* zY&|nTZEkATrpxG;DyLooCXfHdnUtC<vY)5G&VzQ>H@^o9KbN)M41aP zyXNYkFQIFd%bKSguM-p{dBqx7Ji^bcEad%&`o-0pQ&&z^GSmaT|DAbBK^M-gYjgX; zO6HJxAyG`3U7;Y6ki$gjO+q#eb)EzXmKV=90 z;`!7kez+%IP%Y^D>aDCqiv+lhR}&#b&o(YZc@sat{7@bYAIS5ZJCPjwvI{Y#%%rA3 z0GVdSCrFvOp=}?UV{uXDP_qy}kFSLRq>ha$@?>MHGpmJu7H#XP7Rca6Glveo>>^WV z%sM(_e&0OAAQ2oU)WCo(b}CvVx?rFXlCB>Oq6Hi}%dwSN@+7=p+j$>$Fj82@QO2An zgWb$zdcXrMRaLGU;X$WT%C4A zLV7mC%Nf$BJUr-Q5v(AR$m6D6#V#+dRZB2bP@S#NU#6sDjD&QakP!!~IBfKXBB)tu zYO3FT_doT=J?--ICU-&<&0P1foq5@#wQ=N;3-bw#0w^AWICIRz0nQbMSnh<2NjE~~ zysD!f=+|W~k2K|xUlP;SNw=qy+<4lg1JQ8uNGt^vVBW?#ccSX%Psgdn(8jnE# zCM_Yzs!LX|J^-97-!dtnX5^A5X11CDgxnFuLjHEkObj*E%+yHb%bO=6IavfrS0j&J z+3$jcUek;x1+2(%Z*zkFDp65~d4|BT^l79I#LfL`!q&$umf?)zSOkeXe+ z=&9E{i-%+ai_)1C9FgO1S!`KGhZuGFq1+Db`*g@0p!P0i&OIgPp~Dhc zC(IzT5N^%EY_eVoRN%Cf)h}ho1mHp^on<0Q+S^wm+6C6OOk|~1lp>#Vwz0e#CaWvC z7WUntKm+*?TvnJ}axtt%m)R!`6^wK?m=S~6eKc*v>?9>~A>DM{%El71vut_kO9u@y zXz68kpNn9&VuW0{sLy^21f2hUSxpmz6_i5wT9RArc3 zOUTGcY`O18_P0QLlPRPY3f!DPIXBG(JqAf6^4e^bA`eCkt=%J^i!N-$$}Dwcu(<4{ zsGoyyrG1<(OlSnnPLH@{Y|w4ymS0oiGH_{NV=&G}0?m{cFo1p2ged@8fJ7%QknB{_ z=-_cKNDi6UICA)3BQrpD#7a+}EE~7v))ND0=|i|aOqTJCgG|?<9SK8xmfi=Hq@Ifo zB1kJ0LT)`XgCqsRxnt2yl67$JWC{tB-m&(~bmSG&TP`NJ$b#3n*lQ+RgPe^~Ou~@f zZHQ${!_szsfe#7-kV43Lv$pji&lep9&m76F!TWeFLxvzaO5n6J%g!yf?gUUl0kwBn zUK(y(MN@{b+vQF zqG>Tpk9mZ_)x-W-+w(1p3&l(+x3{@lJ?d|vGNozhbp1oimK9}72M|(`z~vE>Euq0?iK&Sf zJ>AoF_`?s|bj?KGjFO+zmIFnHhqi zAX`w5*)UEV@&S z>%fC&H90tQTQFJ7A|QYT#H`JEl5N|O@c!T`}gdB#=4RJV3dg*9)431qZ8m_S(QHf+_y?GN5vzp-(HWytUB z@gkJQZ$RX#AZE%qnBD0R3%d+md?)|ljr@-ZHY7fv#f`pd7oJ{T3X{n?AIbK}ILvV9 zkNStZz3bE@OnL-hpwOV@30q+SAd--*q%kd%A%+2w>9CBi1_W5>IvV~6yTL7(NXRr- zSa&=d>ZRj=K@e>pROo6~cGtl?6vzldh`}d-i6jmy5~2dhL=vST?G-~3byblcv2VGP zcD3iQJDDhhSQ#gun-9UR;B;aCzl?{$IboOxdJt4x227wFgw&wIq{>W7h(MZ}aSW}Yz>lKI1{q+o1OpTt54#qc zbPyKDwOt%e7ERV4hCjrh6^|Suu=e(0UW7Qet1*9&-0GQ@);U^mhG=)#U%Y2)``m>X zL$FzBPK5%|4*4Gt)MPqCIRQ)@%_JUBRH+KW;mp(^+X0~#F{Ayevj>0* zjw0V6<(SwzS*B4}M|4PG8?x+&Wt34MO__+-zdc(+l($xpTo?(Zoi3C85RtU$poQ9% zfP_Bj4hI@YB0#kM9k$`Uw2%;!7})_0G79YQsp7KN%32?DZ7vWdO7C#g9<61ywcv5u zqmA)6bjT~my#nbN1RWZ-rQZ*^&E>x*HewYt&<=`#*njyo6kNJMI>e~9vU#ij1{(@4 zJMK|(YrwQZQ|2iweGlg)Hsmz-cabQFwkRuI4t!I1s| zdjXct=?+saJ&>k#P}{82$9l<|tA8GIxvSr=`X&RkeGSJa*DTCFJb>F34^~M^1eRu8e?RRaHZEWpV zVH7mzZIAx|bm%<-ibl$sp&vOOx`TMQQ^9($%aTb13SSdlpFhOje%ChS)^@~xA539&$3xa@ z!^QO~ma?JtBW=t0c=f-7aeo)PV1jjn%V0#Hm~c9@iSBeK9d)s_oga`U=?Ice1Sw!r zgBWyW%=*8_nQwTIUir@QUugZVZ?Lsp#eM~*Cs-|#UV|B2>xd1tpEbH|(}#4&!{v7L z{wbSn<}mY&`K^{-D_Wo!VKBPUfSj0_Dj6II(2)`ZQVey{I$^|U-8v-qZ{yAf88^MX z+y^7{erMyVZ<+2S4MxS%YbU6!!5l1X7`9j+6^OR!e8{cI8E2dm#;NO!W3A)Rj->!Y zFqpwajd)W#9;Hb*G-1+Rqjg(vJl-$&Z>{$}Tz~w}l!tt~mpwPc~f zAegk%3FbCTpnxsbM-iPap?D1|^Fn7k-*v7X1&pRXMjI{Dffb7ey=iCL?{WjRt^I5_ zH(*ww2|9qd)}%VGf-pcmoiy8Rs8E~&*}DSPN2C@{?0yHV(Tom#OWUn*I!PzB)}Dla zq@`IbofofG=_k@{h)}`Xu?#Q+R00zUn_y7O^ literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..9adec4319a15feaffd08273d14f8ca6ba506e398 GIT binary patch literal 5598 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..d92c2c22c000bb8b24c65f536a7d22d1045d6fba GIT binary patch literal 10026 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 AP5=M^ literal 0 HcmV?d00001 diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml new file mode 100644 index 0000000..292dd36 --- /dev/null +++ b/app/src/main/res/values-night/themes.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..f8c6127 --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,10 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..4511dea --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + F-Droid Root Privileged Extension + diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..bf5e33d --- /dev/null +++ b/app/src/main/res/values/themes.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/backup_rules.xml b/app/src/main/res/xml/backup_rules.xml new file mode 100644 index 0000000..fa0f996 --- /dev/null +++ b/app/src/main/res/xml/backup_rules.xml @@ -0,0 +1,13 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/data_extraction_rules.xml b/app/src/main/res/xml/data_extraction_rules.xml new file mode 100644 index 0000000..9ee9997 --- /dev/null +++ b/app/src/main/res/xml/data_extraction_rules.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/test/java/org/fdroid/fdroid/privileged/ExampleUnitTest.java b/app/src/test/java/org/fdroid/fdroid/privileged/ExampleUnitTest.java new file mode 100644 index 0000000..8974b70 --- /dev/null +++ b/app/src/test/java/org/fdroid/fdroid/privileged/ExampleUnitTest.java @@ -0,0 +1,17 @@ +package org.fdroid.fdroid.privileged; + +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Example local unit test, which will execute on the development machine (host). + * + * @see
Testing documentation + */ +public class ExampleUnitTest { + @Test + public void addition_isCorrect() { + assertEquals(4, 2 + 2); + } +} \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..e61198d --- /dev/null +++ b/build.gradle @@ -0,0 +1,4 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +plugins { +alias(libs.plugins.androidApplication) apply false +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..4387edc --- /dev/null +++ b/gradle.properties @@ -0,0 +1,21 @@ +# 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=-Xmx2048m -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. For more details, visit +# https://developer.android.com/r/tools/gradle-multi-project-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 +# Enables namespacing of each library's R class so that its R class includes only the +# resources declared in the library itself and none from the library's dependencies, +# thereby reducing the size of the R class for that library +android.nonTransitiveRClass=true \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000..f1ff4cf --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,18 @@ +[versions] +agp = "8.3.0" +junit = "4.13.2" +junitVersion = "1.1.5" +espressoCore = "3.5.1" +appcompat = "1.6.1" +material = "1.11.0" + +[libraries] +junit = { group = "junit", name = "junit", version.ref = "junit" } +ext-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" } +espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" } +appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" } +material = { group = "com.google.android.material", name = "material", version.ref = "material" } + +[plugins] +androidApplication = { id = "com.android.application", version.ref = "agp" } + diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f GIT binary patch literal 59203 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

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/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..db10ed5 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Mon Mar 11 17:55:49 CST 2024 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..4f906e0 --- /dev/null +++ b/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..ac1b06f --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..89c0ed4 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,23 @@ +pluginManagement { + repositories { + google { + content { + includeGroupByRegex("com\\.android.*") + includeGroupByRegex("com\\.google.*") + includeGroupByRegex("androidx.*") + } + } + mavenCentral() + gradlePluginPortal() + } +} +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + } +} + +rootProject.name = "F-DroidRootPrivilegedExtension" +include ':app'