Merge branch 'target-full-30' into 'master'

Set targetSdk to 30 for full

Closes #2037

See merge request fdroid/fdroidclient!1520
This commit is contained in:
Torsten Grote
2025-03-19 13:51:51 +00:00
14 changed files with 634 additions and 36 deletions

View File

@@ -39,7 +39,7 @@ android {
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
minSdkVersion 23
//noinspection ExpiredTargetSdkVersion
targetSdkVersion 29
targetSdkVersion 30
/*
The Android Testing Support Library collects analytics to continuously improve the testing
experience. More specifically, it uploads a hash of the package name of the application

View File

@@ -219,28 +219,9 @@ public class MainActivityEspressoTest {
onView(withText(R.string.main_menu__updates)).check(matches(isDisplayed()));
}
@LargeTest
@Test
public void startSwap() {
if (!BuildConfig.FLAVOR.startsWith("full")) {
return;
}
ViewInteraction nearbyBottonNavButton = onView(
allOf(withText(R.string.main_menu__swap_nearby), isDisplayed()));
nearbyBottonNavButton.perform(click());
ViewInteraction findPeopleButton = onView(
allOf(withId(R.id.find_people_button), withText(R.string.nearby_splash__find_people_button),
isDisplayed()));
findPeopleButton.perform(click());
onView(withText(R.string.swap_send_fdroid)).check(matches(isDisplayed()));
}
@LargeTest
@Test
public void showCategories() {
if (!BuildConfig.FLAVOR.startsWith("full")) {
return;
}
onView(allOf(withText(R.string.menu_settings), isDisplayed())).perform(click());
onView(allOf(withText(R.string.main_menu__categories), isDisplayed())).perform(click());
onView(allOf(withId(R.id.swipe_to_refresh), isDisplayed()))
@@ -264,9 +245,6 @@ public class MainActivityEspressoTest {
@LargeTest
@Test
public void showLatest() {
if (!BuildConfig.FLAVOR.startsWith("full")) {
return;
}
onView(Matchers.instanceOf(StatusBanner.class)).check(matches(not(isDisplayed())));
onView(allOf(withText(R.string.menu_settings), isDisplayed())).perform(click());
onView(allOf(withText(R.string.main_menu__latest_apps), isDisplayed())).perform(click());
@@ -289,9 +267,6 @@ public class MainActivityEspressoTest {
public void showSearch() {
onView(allOf(withText(R.string.menu_settings), isDisplayed())).perform(click());
onView(withId(R.id.fab_search)).check(doesNotExist());
if (!BuildConfig.FLAVOR.startsWith("full")) {
return;
}
onView(allOf(withText(R.string.main_menu__latest_apps), isDisplayed())).perform(click());
onView(allOf(withId(R.id.fab_search), isDisplayed())).perform(click());
onView(withId(R.id.sort)).check(matches(isDisplayed()));
@@ -300,4 +275,4 @@ public class MainActivityEspressoTest {
.perform(typeText("test"));
onView(allOf(withId(R.id.sort), isDisplayed())).perform(click());
}
}
}

View File

@@ -1,6 +1,7 @@
-dontoptimize
-dontwarn
-dontobfuscate
-dontshrink
-dontwarn android.test.**
-dontwarn android.support.test.**

View File

@@ -0,0 +1,303 @@
package org.fdroid.fdroid;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.action.ViewActions.click;
import static androidx.test.espresso.action.ViewActions.swipeDown;
import static androidx.test.espresso.action.ViewActions.swipeLeft;
import static androidx.test.espresso.action.ViewActions.swipeRight;
import static androidx.test.espresso.action.ViewActions.swipeUp;
import static androidx.test.espresso.action.ViewActions.typeText;
import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist;
import static androidx.test.espresso.assertion.ViewAssertions.matches;
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
import static androidx.test.espresso.matcher.ViewMatchers.withContentDescription;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.espresso.matcher.ViewMatchers.withText;
import static org.hamcrest.CoreMatchers.allOf;
import static org.hamcrest.Matchers.not;
import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeTrue;
import android.Manifest;
import android.app.ActivityManager;
import android.app.Instrumentation;
import android.content.Context;
import android.os.Build;
import android.util.Log;
import androidx.core.content.ContextCompat;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.espresso.IdlingPolicies;
import androidx.test.espresso.ViewInteraction;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.LargeTest;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.rule.ActivityTestRule;
import androidx.test.rule.GrantPermissionRule;
import androidx.test.uiautomator.UiDevice;
import androidx.test.uiautomator.UiObject;
import androidx.test.uiautomator.UiObjectNotFoundException;
import androidx.test.uiautomator.UiSelector;
import org.fdroid.fdroid.views.StatusBanner;
import org.fdroid.fdroid.views.main.MainActivity;
import org.hamcrest.Matchers;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
@LargeTest
@RunWith(AndroidJUnit4.class)
public class MainActivityEspressoTestFull {
public static final String TAG = "MainActivityEspressoTestFull";
/**
* Emulators older than {@code android-25} seem to fail at running Espresso tests.
* <p>
* ARM emulators are too slow to run these tests in a useful way. The sad
* thing is that it would probably work if Android didn't put up the ANR
* "Process system isn't responding" on boot each time. There seems to be no
* way to increase the ANR timeout.
*/
private static boolean canRunEspresso() {
if (Build.VERSION.SDK_INT < 25
|| Build.SUPPORTED_ABIS[0].startsWith("arm") && isEmulator()) {
Log.e(TAG, "SKIPPING TEST: ARM emulators are too slow to run these tests in a useful way");
return false;
}
return true;
}
@BeforeClass
public static void classSetUp() {
IdlingPolicies.setIdlingResourceTimeout(10, TimeUnit.MINUTES);
IdlingPolicies.setMasterPolicyTimeout(10, TimeUnit.MINUTES);
if (!canRunEspresso()) {
return;
}
Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
try {
UiDevice.getInstance(instrumentation)
.executeShellCommand("pm grant "
+ instrumentation.getTargetContext().getPackageName()
+ " android.permission.SET_ANIMATION_SCALE");
} catch (IOException e) {
e.printStackTrace();
}
SystemAnimations.disableAll(ApplicationProvider.getApplicationContext());
// dismiss the ANR or any other system dialogs that might be there
UiObject button = new UiObject(new UiSelector().text("Wait").enabled(true));
try {
button.click();
} catch (UiObjectNotFoundException e) {
Log.d(TAG, e.getLocalizedMessage());
}
new UiWatchers().registerAnrAndCrashWatchers();
Context context = instrumentation.getTargetContext();
ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo();
ActivityManager activityManager = ContextCompat.getSystemService(context, ActivityManager.class);
activityManager.getMemoryInfo(mi);
long percentAvail = mi.availMem / mi.totalMem;
Log.i(TAG, "RAM: " + mi.availMem + " / " + mi.totalMem + " = " + percentAvail);
}
@AfterClass
public static void classTearDown() {
SystemAnimations.enableAll(ApplicationProvider.getApplicationContext());
}
public static boolean isEmulator() {
return Build.FINGERPRINT.startsWith("generic")
|| Build.FINGERPRINT.startsWith("unknown")
|| Build.MODEL.contains("google_sdk")
|| Build.MODEL.contains("Emulator")
|| Build.MODEL.contains("Android SDK built for x86")
|| Build.MANUFACTURER.contains("Genymotion")
|| Build.BRAND.startsWith("generic") && Build.DEVICE.startsWith("generic")
|| "google_sdk".equals(Build.PRODUCT);
}
@Before
public void setUp() {
assumeTrue(canRunEspresso());
}
/**
* Placate {@link android.os.StrictMode}
*
* @see <a href="https://github.com/aosp-mirror/platform_frameworks_base/commit/6f3a38f3afd79ed6dddcef5c83cb442d6749e2ff"> Run finalizers before counting for StrictMode</a>
*/
@After
public void tearDown() {
System.gc();
System.runFinalization();
System.gc();
}
@Rule
public ActivityTestRule<MainActivity> activityTestRule =
new ActivityTestRule<>(MainActivity.class);
@Rule
public GrantPermissionRule accessCoarseLocationPermissionRule = GrantPermissionRule.grant(
Manifest.permission.ACCESS_COARSE_LOCATION);
@Rule
public GrantPermissionRule readExternalStoragePermissionRule = GrantPermissionRule.grant(
Manifest.permission.READ_EXTERNAL_STORAGE);
@Test
public void bottomNavFlavorCheck() {
onView(withText(R.string.main_menu__updates)).check(matches(isDisplayed()));
onView(withText(R.string.menu_settings)).check(matches(isDisplayed()));
onView(withText("THIS SHOULD NOT SHOW UP ANYWHERE!!!")).check(doesNotExist());
assertTrue(BuildConfig.FLAVOR.startsWith("full") || BuildConfig.FLAVOR.startsWith("basic"));
if (BuildConfig.FLAVOR.startsWith("basic")) {
onView(withText(R.string.main_menu__latest_apps)).check(matches(isDisplayed()));
onView(withText(R.string.main_menu__categories)).check(doesNotExist());
onView(withText(R.string.main_menu__swap_nearby)).check(doesNotExist());
}
if (BuildConfig.FLAVOR.startsWith("full")) {
onView(withText(R.string.main_menu__latest_apps)).check(matches(isDisplayed()));
onView(withText(R.string.main_menu__categories)).check(matches(isDisplayed()));
onView(withText(R.string.main_menu__swap_nearby)).check(matches(isDisplayed()));
}
}
@LargeTest
@Test
public void showSettings() {
ViewInteraction settingsBottonNavButton = onView(
allOf(withText(R.string.menu_settings), isDisplayed()));
settingsBottonNavButton.perform(click());
onView(withText(R.string.preference_manage_installed_apps)).check(matches(isDisplayed()));
if (BuildConfig.FLAVOR.startsWith("basic") && BuildConfig.APPLICATION_ID.endsWith(".debug")) {
// TODO fix me by sorting out the flavor applicationId for debug builds in app/build.gradle
Log.i(TAG, "Skipping the remainder of showSettings test because it just crashes on basic .debug builds");
return;
}
ViewInteraction manageInstalledAppsButton = onView(
allOf(withText(R.string.preference_manage_installed_apps), isDisplayed()));
manageInstalledAppsButton.perform(click());
onView(withText(R.string.installed_apps__activity_title)).check(matches(isDisplayed()));
onView(withContentDescription(androidx.appcompat.R.string.abc_action_bar_up_description)).perform(click());
onView(withText(R.string.menu_manage)).perform(click());
onView(withContentDescription(androidx.appcompat.R.string.abc_action_bar_up_description)).perform(click());
manageInstalledAppsButton.perform(click());
onView(withText(R.string.installed_apps__activity_title)).check(matches(isDisplayed()));
onView(withContentDescription(androidx.appcompat.R.string.abc_action_bar_up_description)).perform(click());
onView(withText(R.string.menu_manage)).perform(click());
onView(withContentDescription(androidx.appcompat.R.string.abc_action_bar_up_description)).perform(click());
onView(withText(R.string.about_title)).perform(click());
onView(withId(R.id.version)).check(matches(isDisplayed()));
onView(withId(R.id.ok_button)).perform(click());
onView(withId(android.R.id.list_container)).perform(swipeUp()).perform(swipeUp()).perform(swipeUp());
}
@LargeTest
@Test
public void showUpdates() {
ViewInteraction updatesBottonNavButton = onView(allOf(withText(R.string.main_menu__updates), isDisplayed()));
updatesBottonNavButton.perform(click());
onView(withText(R.string.main_menu__updates)).check(matches(isDisplayed()));
}
@LargeTest
@Test
public void startSwap() {
if (!BuildConfig.FLAVOR.startsWith("full")) {
return;
}
ViewInteraction nearbyBottonNavButton = onView(
allOf(withText(R.string.main_menu__swap_nearby), isDisplayed()));
nearbyBottonNavButton.perform(click());
ViewInteraction findPeopleButton = onView(
allOf(withId(R.id.find_people_button), withText(R.string.nearby_splash__find_people_button),
isDisplayed()));
findPeopleButton.perform(click());
onView(withText(R.string.swap_send_fdroid)).check(matches(isDisplayed()));
}
@LargeTest
@Test
public void showCategories() {
if (!BuildConfig.FLAVOR.startsWith("full")) {
return;
}
onView(allOf(withText(R.string.menu_settings), isDisplayed())).perform(click());
onView(allOf(withText(R.string.main_menu__categories), isDisplayed())).perform(click());
onView(allOf(withId(R.id.swipe_to_refresh), isDisplayed()))
.perform(swipeDown())
.perform(swipeUp())
.perform(swipeUp())
.perform(swipeUp())
.perform(swipeUp())
.perform(swipeUp())
.perform(swipeUp())
.perform(swipeDown())
.perform(swipeDown())
.perform(swipeRight())
.perform(swipeLeft())
.perform(swipeLeft())
.perform(swipeLeft())
.perform(swipeLeft())
.perform(click());
}
@LargeTest
@Test
public void showLatest() {
if (!BuildConfig.FLAVOR.startsWith("full")) {
return;
}
onView(Matchers.instanceOf(StatusBanner.class)).check(matches(not(isDisplayed())));
onView(allOf(withText(R.string.menu_settings), isDisplayed())).perform(click());
onView(allOf(withText(R.string.main_menu__latest_apps), isDisplayed())).perform(click());
onView(allOf(withId(R.id.swipe_to_refresh), isDisplayed()))
.perform(swipeDown())
.perform(swipeUp())
.perform(swipeUp())
.perform(swipeUp())
.perform(swipeDown())
.perform(swipeUp())
.perform(swipeDown())
.perform(swipeDown())
.perform(swipeDown())
.perform(swipeDown())
.perform(click());
}
@LargeTest
@Test
public void showSearch() {
onView(allOf(withText(R.string.menu_settings), isDisplayed())).perform(click());
onView(withId(R.id.fab_search)).check(doesNotExist());
if (!BuildConfig.FLAVOR.startsWith("full")) {
return;
}
onView(allOf(withText(R.string.main_menu__latest_apps), isDisplayed())).perform(click());
onView(allOf(withId(R.id.fab_search), isDisplayed())).perform(click());
onView(withId(R.id.sort)).check(matches(isDisplayed()));
onView(allOf(withId(R.id.search), isDisplayed()))
.perform(click())
.perform(typeText("test"));
onView(allOf(withId(R.id.sort), isDisplayed())).perform(click());
}
}

View File

@@ -31,6 +31,7 @@ import android.view.MenuItem;
import android.widget.TextView;
import android.widget.Toast;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ShareCompat;
@@ -66,6 +67,7 @@ public class InstallHistoryActivity extends AppCompatActivity {
fdroidApp.setSecureWindow(this);
fdroidApp.applyPureBlackBackgroundInDarkTheme(this);
EdgeToEdge.enable(this);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_install_history);

View File

@@ -3,6 +3,7 @@ package org.fdroid.fdroid.views
import android.net.Uri
import android.os.Bundle
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
@@ -46,6 +47,7 @@ import org.fdroid.fdroid.ui.theme.FDroidContent
class IpfsGatewayAddActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
enableEdgeToEdge()
super.onCreate(savedInstanceState)
setContent {
FDroidContent {

View File

@@ -4,6 +4,7 @@ import android.annotation.SuppressLint
import android.content.Intent
import android.os.Bundle
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
@@ -50,6 +51,7 @@ import org.fdroid.fdroid.ui.theme.FDroidContent
class IpfsGatewaySettingsActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
enableEdgeToEdge()
super.onCreate(savedInstanceState)
val prefs = Preferences.get()
setContent {

View File

@@ -8,6 +8,7 @@ import android.util.Log
import android.widget.Toast
import androidx.activity.compose.BackHandler
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.runtime.collectAsState
import androidx.core.content.ContextCompat
@@ -36,6 +37,7 @@ class AddRepoActivity : AppCompatActivity() {
private val repoManager: RepoManager get() = FDroidApp.getRepoManager(this)
override fun onCreate(savedInstanceState: Bundle?) {
enableEdgeToEdge()
super.onCreate(savedInstanceState)
lifecycleScope.launch {
repeatOnLifecycle(STARTED) {

View File

@@ -7,7 +7,7 @@ mavenPublish = "0.18.0"
jlleitschuhKtlint = "12.1.1"
kotlinxSerializationJson = "1.4.1" # 1.4.1 because https://github.com/Kotlin/kotlinx.serialization/issues/2231
kotlinxCoroutinesTest = "1.7.3"
kotlinxCoroutinesTest = "1.8.1"
ktor = "2.3.12"
okhttp = "4.12.0"
@@ -20,22 +20,22 @@ androidxAppcompat = "1.7.0"
androidxPreferenceKtx = "1.2.1"
androidxLifecycleLivedataKtx = "2.8.7"
androidxWork = "2.10.0"
androidxRecyclerview = "1.3.2"
androidxConstraintlayout = "2.2.0"
androidxRecyclerview = "1.4.0"
androidxConstraintlayout = "2.2.1"
androidxCardview = "1.0.0"
androidxPaletteKtx = "1.0.0"
androidxVectordrawable = "1.2.0"
androidxGridlayout = "1.0.0"
androidxComposeBom = "2024.11.00"
androidxActivityCompose = "1.9.3"
accompanistThemeadapterMaterial = "0.30.1"
androidxComposeBom = "2025.03.00"
androidxActivityCompose = "1.10.1"
accompanistDrawablepainter = "0.36.0"
material = "1.12.0"
zxingCore = "3.3.3" # newer version need minSdk 24 or library desugering
#noinspection GradleDependency newer version need minSdk 24 or library desugering
zxingCore = "3.3.3"
guardianprojectNetcipher = "2.2.0-alpha"
guardianprojectPanic = "1.0"
acra = "5.11.3"
acra = "5.12.0"
adapterdelegates4 = "4.3.2"
#noinspection GradleDependency Commons IO > 2.5 uses java.nio.file, which requires desugaring
commonsIo = "2.6"
@@ -43,7 +43,7 @@ commonsNet = "3.6"
bouncycastle = "1.71"
jmdns = "3.5.5"
nanohttpd = "2.3.1"
guava = "32.1.3-android"
guava = "33.3.1-android"
rxjava = "3.1.9"
rxandroid = "3.0.2"

View File

@@ -191,6 +191,11 @@
<sha256 value="3690001fc5a57ad176cacf7a13f56219bffb73b93c7978dbac1e1e5db082d6c0" origin="Generated by Gradle because artifact wasn't signed"/>
</artifact>
</component>
<component group="androidx.activity" name="activity" version="1.10.1">
<artifact name="activity-1.10.1.aar">
<sha256 value="b62b528c917de9be497eb6f88830197c20e9d21267c3916c613492e5ee837d4d" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.activity" name="activity" version="1.2.3">
<artifact name="activity-1.2.3.aar">
<sha256 value="1dce0705c334a6b2ef03382418dc7586f4e57ee23817267b403ea8cfc36c824e" origin="Generated by Gradle because artifact wasn't signed"/>
@@ -226,6 +231,11 @@
<sha256 value="7e45d2023dc17d715ffff3dc5792f798642c4ae11c948006b1752ab9edda5707" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.activity" name="activity-compose" version="1.10.1">
<artifact name="activity-compose-1.10.1.aar">
<sha256 value="f89af1b26ccc834634387c857c2dd4f4654d37650890039c527c2fed07db6a61" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.activity" name="activity-compose" version="1.7.2">
<artifact name="activity-compose-1.7.2.aar">
<sha256 value="c73db26b1672a63f144457271b49cc40380b5bafe60ed0710e82d0a774e36a88" origin="Generated by Gradle"/>
@@ -246,6 +256,11 @@
<sha256 value="0f5098a9e2b173a6c5a48f08251e7e949be12e6ee8b3a587b13b0830f1639297" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.activity" name="activity-ktx" version="1.10.1">
<artifact name="activity-ktx-1.10.1.aar">
<sha256 value="f396f58dbd772c065b873696b74a3d4d087554b3766280e63b49b25dbb53ab16" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.activity" name="activity-ktx" version="1.2.2">
<artifact name="activity-ktx-1.2.2.aar">
<sha256 value="9829e13d6a6b045b03b21a330512e091dc76eb5b3ded0d88d1ab0509cf84a50e" origin="Generated by Gradle"/>
@@ -334,6 +349,11 @@
<sha256 value="fa5e67ffcc52a0413f4b39c2737b43c1ba6c6975b4bd4a4ea8627549e766285b" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.annotation" name="annotation" version="1.9.1">
<artifact name="annotation-metadata-1.9.1.jar">
<sha256 value="38322afa7345c37e29c65ec8852178ae1c26e23096a0634d07a4a3893931f58c" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.annotation" name="annotation-experimental" version="1.0.0">
<artifact name="annotation-experimental-1.0.0.aar">
<sha256 value="b219d2b568e7e4ba534e09f8c2fd242343df6ccbdfbbe938846f5d740e6b0b11" origin="Generated by Gradle because artifact wasn't signed"/>
@@ -384,6 +404,11 @@
<sha256 value="9aab326d9492800991854360ac248f493ce7f7c3183519309b78ace9e240f6f6" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.annotation" name="annotation-jvm" version="1.9.1">
<artifact name="annotation-jvm-1.9.1.jar">
<sha256 value="1e343917ebf27ba96fe4dc52b1cad7fd32b738fbc6355bb6cd5b3b305d7212d0" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.appcompat" name="appcompat" version="1.1.0">
<artifact name="appcompat-1.1.0.aar">
<sha256 value="8d7299bca44cb3bdf17f5595766acbf459fc81fee223e8686cc6acd3a42ab5c0" origin="Generated by Gradle because artifact wasn't signed"/>
@@ -611,6 +636,11 @@
<sha256 value="a2773807796a9ea149e4d567d3e4746bc3b2514147a180b00be2ca307f732c4d" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.animation" name="animation" version="1.7.8">
<artifact name="animation-metadata-1.7.8.jar">
<sha256 value="a2773807796a9ea149e4d567d3e4746bc3b2514147a180b00be2ca307f732c4d" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.animation" name="animation-android" version="1.5.4">
<artifact name="animation-release.aar">
<sha256 value="428538775ea55529b953fbb7a6000ccfddc89722c69c7a30431a630fa2fe74f2" origin="Generated by Gradle"/>
@@ -631,6 +661,11 @@
<sha256 value="80279c212589b5c27a9246c128e386789088a903d1599941e4869a2fa9a42c9e" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.animation" name="animation-android" version="1.7.8">
<artifact name="animation-release.aar">
<sha256 value="a945d77b553a758e4ffe9c93afe2f52435e497e9b218ae8be2c1eba47f3e259c" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.animation" name="animation-core" version="1.4.3">
<artifact name="animation-core-1.4.3.aar">
<sha256 value="d7d949d0a28699d7db5ae5769698255049400378bc8bc041265f85f6686fb2e4" origin="Generated by Gradle"/>
@@ -656,6 +691,11 @@
<sha256 value="b176280266779690730c7e6ebbe054bbc247b22e82fb38d900614f82888ce198" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.animation" name="animation-core" version="1.7.8">
<artifact name="animation-core-metadata-1.7.8.jar">
<sha256 value="b176280266779690730c7e6ebbe054bbc247b22e82fb38d900614f82888ce198" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.animation" name="animation-core-android" version="1.5.4">
<artifact name="animation-core-release.aar">
<sha256 value="d7e85fb4fb36db15eb15134ffec8363fda8517ee944af1441815131029f960c8" origin="Generated by Gradle"/>
@@ -676,6 +716,11 @@
<sha256 value="546958e466fcffac9998aae53b8a54ab4722bcde9a65cbf7c4a168886f9325fb" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.animation" name="animation-core-android" version="1.7.8">
<artifact name="animation-core-release.aar">
<sha256 value="8237488870c73e9b66f7ecab5ec1855b0cafc023b0a937f3f7c65602e2c8c7b2" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.compiler" name="compiler" version="1.4.6">
<artifact name="compiler-1.4.6.jar">
<sha256 value="b10f529d9d83661e3484e173aa4b45775aa625ed7ea7564b6ab116ff65ad2d75" origin="Generated by Gradle"/>
@@ -716,6 +761,11 @@
<sha256 value="5e436d86aa89000bf247ecc588d8b6ac7c6520a23f86667f5624b9c9d6a66e8c" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.foundation" name="foundation" version="1.7.8">
<artifact name="foundation-metadata-1.7.8.jar">
<sha256 value="40c973f6464c280219e3e96443c5c6d536e84a077a8d493d55a545b3869744bd" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.foundation" name="foundation-android" version="1.5.4">
<artifact name="foundation-release.aar">
<sha256 value="74075b7f5de082f77ce27b80b8787c59ac3ec86d0a66bf5754377211f2894072" origin="Generated by Gradle"/>
@@ -736,6 +786,11 @@
<sha256 value="b3543b024b275c46324c4df82c9cb4509bffff4e17df6c41d9ca2805f7a61452" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.foundation" name="foundation-android" version="1.7.8">
<artifact name="foundation-release.aar">
<sha256 value="8445301ed64e3aa3150b27f572855c73238b7824aac164758a8726b7afdff481" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.foundation" name="foundation-layout" version="1.4.3">
<artifact name="foundation-layout-1.4.3.aar">
<sha256 value="978333f49bbe78d21e20b91a4cd800a0c5eead9876e267e076332b1a87a11c5e" origin="Generated by Gradle"/>
@@ -761,6 +816,11 @@
<sha256 value="4094e5a3626380b22b684086e548be51afe18e7979f46d261d4f1e0b6898fb39" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.foundation" name="foundation-layout" version="1.7.8">
<artifact name="foundation-layout-metadata-1.7.8.jar">
<sha256 value="4094e5a3626380b22b684086e548be51afe18e7979f46d261d4f1e0b6898fb39" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.foundation" name="foundation-layout-android" version="1.5.4">
<artifact name="foundation-layout-release.aar">
<sha256 value="63d6b3832034e6f187213970f42d82d0ce136d6c6061748f34f05cf2ba1d4364" origin="Generated by Gradle"/>
@@ -781,6 +841,11 @@
<sha256 value="e2eee2141a308e93ba7c40dafa8dfdc300b3ce4730d793d59ef619f8fe9550ea" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.foundation" name="foundation-layout-android" version="1.7.8">
<artifact name="foundation-layout-release.aar">
<sha256 value="a83233e768e30aab870e6667277ec91dd40adb5663d32f36dfa5dbad367db561" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.material" name="material" version="1.4.3">
<artifact name="material-1.4.3.aar">
<sha256 value="2d9b66b4b19c461293d355906d7cfff161dd155adf7f837323f1b7a4ffd10ca8" origin="Generated by Gradle"/>
@@ -826,6 +891,11 @@
<sha256 value="4f5d81d48aa01d615d2eeb48c22ef40efa33cd9ae23320eeba7d30ec10b95f97" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.material" name="material-android" version="1.7.8">
<artifact name="material-release.aar">
<sha256 value="b1f83d746e8a452515aef92d259538452a6b17d7efb92235369841a9e30751bc" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.material" name="material-icons-core" version="1.4.3">
<artifact name="material-icons-core-1.4.3.aar">
<sha256 value="5ef4030ae792e46fa6866d32c7554347b51afd5820c20c2cd2448d5dd9d20c7b" origin="Generated by Gradle"/>
@@ -851,6 +921,11 @@
<sha256 value="951f2a3a6c0913819dfaae7c69cb8cdf977f7c79bd53fef03e4faf459ee30a0f" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.material" name="material-icons-core" version="1.7.8">
<artifact name="material-icons-core-metadata-1.7.8.jar">
<sha256 value="951f2a3a6c0913819dfaae7c69cb8cdf977f7c79bd53fef03e4faf459ee30a0f" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.material" name="material-icons-core-android" version="1.5.4">
<artifact name="material-icons-core-release.aar">
<sha256 value="fc2bc75dcd539599a773e3a86dbb3a9899fdc58b65e919751f4a2d77bebbd187" origin="Generated by Gradle"/>
@@ -871,6 +946,11 @@
<sha256 value="e82eb70310b13e52beae566de3c1bd6c42e0f6cdf384d8573ea73a5d13f7c643" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.material" name="material-icons-core-android" version="1.7.8">
<artifact name="material-icons-core-release.aar">
<sha256 value="332c06b25e662cc417fb087e76b8faa5cb249f4992ffa3360084a3d4ab882284" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.material" name="material-icons-extended" version="1.4.3">
<artifact name="material-icons-extended-1.4.3.aar">
<sha256 value="895ebb8838e04c219481db3bdf773a46a19a2684c2a280d3a9ef57e62c28e180" origin="Generated by Gradle"/>
@@ -896,6 +976,11 @@
<sha256 value="714e2bfc4095b291e0dbcbd7626bc0e420fc2f6a78f2416398596504debd9117" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.material" name="material-icons-extended" version="1.7.8">
<artifact name="material-icons-extended-metadata-1.7.8.jar">
<sha256 value="714e2bfc4095b291e0dbcbd7626bc0e420fc2f6a78f2416398596504debd9117" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.material" name="material-icons-extended-android" version="1.5.4">
<artifact name="material-icons-extended-release.aar">
<sha256 value="b6995d087e79bb18b44be80f1e8c7116d6056faaa3da23d3d625ed7151c4dfc1" origin="Generated by Gradle"/>
@@ -916,6 +1001,11 @@
<sha256 value="e383df20b487ee0daeb876054ca9c8a217fcf3cd247cd776d902eae05ae8667d" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.material" name="material-icons-extended-android" version="1.7.8">
<artifact name="material-icons-extended-release.aar">
<sha256 value="64e86269f1106848981dd76f0046f81b46f3bd92efb22645de8fd044c0402b61" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.material" name="material-ripple" version="1.4.3">
<artifact name="material-ripple-1.4.3.aar">
<sha256 value="34e3319f8c3646f000ecb1d6e10ee950d63a6b9d5f92178470669418c1b1ac32" origin="Generated by Gradle"/>
@@ -941,6 +1031,11 @@
<sha256 value="e14c5df7b718f952faf6bd07fa8cf5529d4a5b4728deef8651b332a7d36ca668" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.material" name="material-ripple" version="1.7.8">
<artifact name="material-ripple-metadata-1.7.8.jar">
<sha256 value="e14c5df7b718f952faf6bd07fa8cf5529d4a5b4728deef8651b332a7d36ca668" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.material" name="material-ripple-android" version="1.5.4">
<artifact name="material-ripple-release.aar">
<sha256 value="8a6c8b4bfc8cae9dc7e79653a5de3a482cb9b96d290f6bbdc6d3002b91ed48cb" origin="Generated by Gradle"/>
@@ -961,6 +1056,11 @@
<sha256 value="fe999f1da8a5e06bc06daefd24a560781b568d6ed3fa6ad104a18c4dad513cdd" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.material" name="material-ripple-android" version="1.7.8">
<artifact name="material-ripple-release.aar">
<sha256 value="e163a0f5ddc9ef0e232444b8bfd16476453eb685508be0df0785eb4fc43feb4d" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.material3" name="material3" version="1.1.2">
<artifact name="material3-1.1.2.aar">
<sha256 value="fd9f8fe91d6661afcaf0e9c9cef30b5a196b4def5b28a370f13f2c259c26e482" origin="Generated by Gradle"/>
@@ -1001,6 +1101,11 @@
<sha256 value="6b5bf70cd2267e64d9b04afa4bddf39d145cfa52cc36e3ee197267752fbfa7d3" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.runtime" name="runtime" version="1.7.8">
<artifact name="runtime-metadata-1.7.8.jar">
<sha256 value="6b5bf70cd2267e64d9b04afa4bddf39d145cfa52cc36e3ee197267752fbfa7d3" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.runtime" name="runtime-android" version="1.5.4">
<artifact name="runtime-release.aar">
<sha256 value="a7df39bcc1327fa5a7ea5dca2976e11b87feea4ca89d1968cbbb6914f983cd4c" origin="Generated by Gradle"/>
@@ -1021,6 +1126,11 @@
<sha256 value="7c7ef7a95f150e1f092f49310961fa164d42e09d857ac1c6c7b43d076f820847" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.runtime" name="runtime-android" version="1.7.8">
<artifact name="runtime-release.aar">
<sha256 value="0c4e6366a30cf1f464601a349e0e2cdedb70df5372f2da8597e61087a910a8f8" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.runtime" name="runtime-saveable" version="1.4.3">
<artifact name="runtime-saveable-1.4.3.aar">
<sha256 value="756d7f53d64b664ad168c7109aa88cc394fb51aee6a2bb7ac86982242834f5ca" origin="Generated by Gradle"/>
@@ -1046,6 +1156,11 @@
<sha256 value="8b1c04e6bc7b322a34718ae57f26c842117a93b627f75dcde3d02da8b3f0edc6" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.runtime" name="runtime-saveable" version="1.7.8">
<artifact name="runtime-saveable-metadata-1.7.8.jar">
<sha256 value="8b1c04e6bc7b322a34718ae57f26c842117a93b627f75dcde3d02da8b3f0edc6" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.runtime" name="runtime-saveable-android" version="1.5.4">
<artifact name="runtime-saveable-release.aar">
<sha256 value="5e834c12d7d226a1057e6e70b341cc27414afa2e9d0007660b9dffec6b7673ed" origin="Generated by Gradle"/>
@@ -1066,6 +1181,11 @@
<sha256 value="cd29949a615fc4c5febe297335984f75d968729968cdd6d68efb7b946001dd63" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.runtime" name="runtime-saveable-android" version="1.7.8">
<artifact name="runtime-saveable-release.aar">
<sha256 value="6282f4ae73948d54d0481c5a7ccf5f270fd9ee747199f14e6313f3ccd039b694" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui" version="1.4.3">
<artifact name="ui-1.4.3.aar">
<sha256 value="a49acd04ac5d596a1e3b00fd965612901b7d05975c51cc5bcf5258bfc3dbca43" origin="Generated by Gradle"/>
@@ -1091,6 +1211,11 @@
<sha256 value="13024b3997eab97818f5d3601bf75fb263e757cac5778440c685873902b7c232" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui" version="1.7.8">
<artifact name="ui-metadata-1.7.8.jar">
<sha256 value="0db108477257620c685b18e3541ced4c6a0c1172bd6ae6a0836e8ead5c408ad9" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-android" version="1.5.4">
<artifact name="ui-release.aar">
<sha256 value="13f39a8f0bfaf621ab57f77ad022d482b5f2b14803a5623cc4fdca2ef905ca26" origin="Generated by Gradle"/>
@@ -1111,6 +1236,11 @@
<sha256 value="e426c90ac12878cce1d1d21591cd07e91c4697955a87cea9d72ba3f13703fd39" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-android" version="1.7.8">
<artifact name="ui-release.aar">
<sha256 value="d54fb17a87e404f0602c49f5ca48ff0aee4055451c9a5a3c8f14420e0753d1a3" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-geometry" version="1.4.3">
<artifact name="ui-geometry-1.4.3.aar">
<sha256 value="ef98ec03f6104730c3152f8ea27404f0764c715872f25a1d893879dd4c2e55bd" origin="Generated by Gradle"/>
@@ -1136,6 +1266,11 @@
<sha256 value="74d9348a19fe1150c20989bae6783d2f87b51ea3c10268b7b46d3024f22b3d4a" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-geometry" version="1.7.8">
<artifact name="ui-geometry-metadata-1.7.8.jar">
<sha256 value="74d9348a19fe1150c20989bae6783d2f87b51ea3c10268b7b46d3024f22b3d4a" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-geometry-android" version="1.5.4">
<artifact name="ui-geometry-release.aar">
<sha256 value="2ecd05d0c033325304834a361d3e5f2c01395bfc5da2402641cfcee4981a01a9" origin="Generated by Gradle"/>
@@ -1156,6 +1291,11 @@
<sha256 value="0dacb49839f79abea9616a84c612dff74da349ce45cd8f31496d9d04f04d4496" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-geometry-android" version="1.7.8">
<artifact name="ui-geometry-release.aar">
<sha256 value="885496763d8c8ba32f3e6a765bcdb5a39e640bd3577fc5452118d1273e2c0a4a" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-graphics" version="1.4.3">
<artifact name="ui-graphics-1.4.3.aar">
<sha256 value="298cdc2ff4ea610a22b01f666a460239aa260f2467f7762d575d84e773545b2d" origin="Generated by Gradle"/>
@@ -1181,6 +1321,11 @@
<sha256 value="5ba9ece097ba31fea936095e1c34b1f517645a1af55e4a641e707c583e61d94b" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-graphics" version="1.7.8">
<artifact name="ui-graphics-metadata-1.7.8.jar">
<sha256 value="5ba9ece097ba31fea936095e1c34b1f517645a1af55e4a641e707c583e61d94b" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-graphics-android" version="1.5.4">
<artifact name="ui-graphics-release.aar">
<sha256 value="8f7811d34f178e2de66399e8b0fd747db3502a9b844a4e2d946a711e75655cbc" origin="Generated by Gradle"/>
@@ -1201,6 +1346,11 @@
<sha256 value="ef6fcbaa04740d57f171364bd75d800a9e9bf490ee7a9d0ff9e0a10477c8a831" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-graphics-android" version="1.7.8">
<artifact name="ui-graphics-release.aar">
<sha256 value="eb4862ce3997e9dc5c322da5da6b415ee2907f40807766f2a563529bbad46905" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-text" version="1.4.3">
<artifact name="ui-text-1.4.3.aar">
<sha256 value="dfa801c2b6b29c97a7f6a20fc45a9b2cb8da4d52b1601d9f10c70878f98f1faa" origin="Generated by Gradle"/>
@@ -1226,6 +1376,11 @@
<sha256 value="5bd379bebabeb47ea92b3777bb1ceb31dc93c294b46f264dcf8e4c010f4699fc" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-text" version="1.7.8">
<artifact name="ui-text-metadata-1.7.8.jar">
<sha256 value="5bd379bebabeb47ea92b3777bb1ceb31dc93c294b46f264dcf8e4c010f4699fc" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-text-android" version="1.5.4">
<artifact name="ui-text-release.aar">
<sha256 value="1633dd54142169a5066580f9a580d2660c790fc1b68c2e533c36a9c0f8b10abb" origin="Generated by Gradle"/>
@@ -1246,6 +1401,11 @@
<sha256 value="01c9c5f92d1871d34c06b0d861011f218ecb9a9179f72bdaf9a0ae33700a068f" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-text-android" version="1.7.8">
<artifact name="ui-text-release.aar">
<sha256 value="5f7757ad176bf0807a3f98d4e1cd9004ee059cbf05a232062d93e4a050d7dfba" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-tooling" version="1.4.3">
<artifact name="ui-tooling-1.4.3.aar">
<sha256 value="e641617b76204f9a03771ee40455553d5ec23d0c1f4a49d1e8177553769b6c06" origin="Generated by Gradle"/>
@@ -1271,6 +1431,11 @@
<sha256 value="3bc474b8437171cfc529f673aa8d3c479360d11e4520e952dd56d5a46faf17cd" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-tooling-android" version="1.7.8">
<artifact name="ui-tooling-release.aar">
<sha256 value="99691d3730a815f19850f4403348d042541c04a90bd2b07f0225e72f2036a5e0" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-tooling-data" version="1.4.3">
<artifact name="ui-tooling-data-1.4.3.aar">
<sha256 value="9b9a8d446f1f2bd12157329aba7751755118a659f02cbd7d40afba9ad1e7a61e" origin="Generated by Gradle"/>
@@ -1296,6 +1461,11 @@
<sha256 value="c99cd1e6faad38b5dba3c276e5ed8d6ab51744951e4974a78b3c67b5484e1daa" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-tooling-data-android" version="1.7.8">
<artifact name="ui-tooling-data-release.aar">
<sha256 value="b98dbf26c51394ea4044f746b87268ec8e6165a206c3d5b74752eac1d95df3f4" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-tooling-preview" version="1.4.3">
<artifact name="ui-tooling-preview-1.4.3.aar">
<sha256 value="7e6316f9439671bc5bd732df93fd3c41433be487f749acae52308101dc8670f7" origin="Generated by Gradle"/>
@@ -1321,6 +1491,11 @@
<sha256 value="c4bfdfd326ccc96073aca33abdbd04ec0c048e7b9458c12767b753aa1e44ffc9" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-tooling-preview" version="1.7.8">
<artifact name="ui-tooling-preview-metadata-1.7.8.jar">
<sha256 value="c4bfdfd326ccc96073aca33abdbd04ec0c048e7b9458c12767b753aa1e44ffc9" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-tooling-preview-android" version="1.5.4">
<artifact name="ui-tooling-preview-release.aar">
<sha256 value="1263288480372dbfb54d63234e9cabfa7f94b13a5ba108d06c4aa1976dbbaade" origin="Generated by Gradle"/>
@@ -1341,6 +1516,11 @@
<sha256 value="5d6226931ae38830d3e50d8bd682446f9381ea6721ed081f3e6a1760e4c3e292" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-tooling-preview-android" version="1.7.8">
<artifact name="ui-tooling-preview-release.aar">
<sha256 value="e17661a807e11fed2ebc6f92fb5911b3824ee6a15790a381167208d5b7d7fe66" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-unit" version="1.4.3">
<artifact name="ui-unit-1.4.3.aar">
<sha256 value="0dfbac9fbf2ca6dce36cd3d990786c9bc09fcfe962cbe27af531311d49611eb4" origin="Generated by Gradle"/>
@@ -1366,6 +1546,11 @@
<sha256 value="254bd27dc799c63b1b59614beef214058c7fbf6cf800c70848bc1fac51b06218" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-unit" version="1.7.8">
<artifact name="ui-unit-metadata-1.7.8.jar">
<sha256 value="254bd27dc799c63b1b59614beef214058c7fbf6cf800c70848bc1fac51b06218" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-unit-android" version="1.5.4">
<artifact name="ui-unit-release.aar">
<sha256 value="ac753ab129b70bab79cfea691ed6bc8ec20fde278db7269b94f50227a712302e" origin="Generated by Gradle"/>
@@ -1386,6 +1571,11 @@
<sha256 value="ef180632c4aadf0c02cb4ba49e83f9667c4b07066e7179c801b6895b0e6c2edc" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-unit-android" version="1.7.8">
<artifact name="ui-unit-release.aar">
<sha256 value="9c37f165af397b6ce8f2b990126e88acda81e158307cf7e0334cc6ba5d41ed49" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-util" version="1.4.3">
<artifact name="ui-util-1.4.3.aar">
<sha256 value="a6ad526f26de348c69f57f1bd8742853ea58b3a22a571fbb76a6d8ba8e620d7e" origin="Generated by Gradle"/>
@@ -1406,6 +1596,11 @@
<sha256 value="25afa139ccbda2c33c6d9e7be3579e2ca9295f986e3b4f5b96297d6ce0fba86a" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-util" version="1.7.8">
<artifact name="ui-util-metadata-1.7.8.jar">
<sha256 value="25afa139ccbda2c33c6d9e7be3579e2ca9295f986e3b4f5b96297d6ce0fba86a" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-util-android" version="1.5.4">
<artifact name="ui-util-release.aar">
<sha256 value="02cd59abbccf95fef2825ba4c0871255380c6f5ba3eaea85b1892de24b4e6b50" origin="Generated by Gradle"/>
@@ -1426,6 +1621,11 @@
<sha256 value="52dd259269fbd6791e19e7cbaf2c17cd7ec0ba599f0fd44d39091372f3423561" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.compose.ui" name="ui-util-android" version="1.7.8">
<artifact name="ui-util-release.aar">
<sha256 value="5686aaaffc6bed1e93d5edb70c16cd2a14296fb1470c52f6c5a627b1188c235c" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.concurrent" name="concurrent-futures" version="1.0.0">
<artifact name="concurrent-futures-1.0.0.jar">
<sha256 value="5595a40e278a7b39fa78a09490e3d7f3faa95c7b01447148bd38b5ade0605c35" origin="Generated by Gradle"/>
@@ -1464,6 +1664,11 @@
<sha256 value="c7c244100e68af49c99a6ad17694893c1be4fc55a6f539c8d78261dbbd2ce34a" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.constraintlayout" name="constraintlayout" version="2.2.1">
<artifact name="constraintlayout-2.2.1.aar">
<sha256 value="30f8d79b782d283a90f0b6f7369169d9cf560091537fdd6056d1daa9f3033763" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.constraintlayout" name="constraintlayout-core" version="1.0.4">
<artifact name="constraintlayout-core-1.0.4.jar">
<sha256 value="3e477f4de231e58b25f5a992f3be45e97d332c34a39a9e3e7d4b78ae0ac2256f" origin="Generated by Gradle"/>
@@ -1474,6 +1679,11 @@
<sha256 value="a8b90d19f7d758f7cb8962491547cf57cb7837c31fe3b00e01c4e85df7bf4851" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.constraintlayout" name="constraintlayout-core" version="1.1.1">
<artifact name="constraintlayout-core-1.1.1.jar">
<sha256 value="3c2054328328831eb6e69b4014f6ef9faa117fd4b811929f3a91d3db375f2c02" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.constraintlayout" name="constraintlayout-solver" version="1.1.3">
<artifact name="constraintlayout-solver-1.1.3.jar">
<sha256 value="965c177e64fbd81bd1d27b402b66ef9d7bc7b5cb5f718044bf7a453abc542045" origin="Generated by Gradle because artifact wasn't signed"/>
@@ -1603,6 +1813,11 @@
<sha256 value="1542a1df7be908c95fee91b8dbc03fd974f53f11d84a85d881f95a52551c4051" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.core" name="core-viewtree" version="1.0.0">
<artifact name="core-viewtree-1.0.0.aar">
<sha256 value="dc1b678d58ebcf2bfa1587be68ff826694ce3d221251b9ef30d4d4b36297e6de" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.cursoradapter" name="cursoradapter" version="1.0.0">
<artifact name="cursoradapter-1.0.0.aar">
<sha256 value="a81c8fe78815fa47df5b749deb52727ad11f9397da58b16017f4eb2c11e28564" origin="Generated by Gradle because artifact wasn't signed"/>
@@ -2645,6 +2860,11 @@
<sha256 value="005cf51510493a24fa48baae1a455a5258515391351a71717dd33cba95211966" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.recyclerview" name="recyclerview" version="1.4.0">
<artifact name="recyclerview-1.4.0.aar">
<sha256 value="0f32ccaffcda74c3f87f0b4cfe6ae78e8aa4eb3ad7dda4f2edf06eedc947a5cf" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.resourceinspection" name="resourceinspection-annotation" version="1.0.0">
<artifact name="resourceinspection-annotation-1.0.0.jar">
<sha256 value="8cff870ec6fb31db48a52f4a792335b4bf8de07e03bd37823181526433ccd5cb" origin="Generated by Gradle"/>
@@ -3457,6 +3677,11 @@
<sha256 value="d42026569abf38c6192f00d3f545b946730707d134dc44c8755b3e70a51262bb" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="ch.acra" name="acra-core" version="5.12.0">
<artifact name="acra-core-5.12.0.aar">
<sha256 value="46f4c7fb0297e8086180cc0f484cf1d098544ff326e9ecb3284e9e00ac3b0475" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="ch.acra" name="acra-core" version="5.9.0">
<artifact name="acra-core-5.9.0.aar">
<sha256 value="929c19db277d9066f887be95e424f4b8c803bc4d25145dca354c32557ec12281" origin="Generated by Gradle"/>
@@ -3472,6 +3697,11 @@
<sha256 value="72fd17197258373e46a9ac3ade94fed4eed4cf94e3dd407836ccd939fe450e61" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="ch.acra" name="acra-dialog" version="5.12.0">
<artifact name="acra-dialog-5.12.0.aar">
<sha256 value="cd2cc6db5699f1e073e034e88b5fbc0edcaa5bc3e395ad48609c2dd0525ebdbe" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="ch.acra" name="acra-dialog" version="5.9.0">
<artifact name="acra-dialog-5.9.0.aar">
<sha256 value="d505d708b99d10362b311d44e1bcbc1c93f8cdc37ceef665731eee5345248e20" origin="Generated by Gradle"/>
@@ -3487,6 +3717,11 @@
<sha256 value="c0b033fef959d1293fb832735806a635c35cecb2e4a7dff40c9cb7dd405a20b2" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="ch.acra" name="acra-mail" version="5.12.0">
<artifact name="acra-mail-5.12.0.aar">
<sha256 value="61691eb6a105fac2843b776f0e685abbe673d4ce6dce0ff3ea99d3d4b59dd751" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="ch.acra" name="acra-mail" version="5.9.0">
<artifact name="acra-mail-5.9.0.aar">
<sha256 value="63879364ebbd5482776af749dff79624fb367ec61dd595f6f2169adecc0b9f91" origin="Generated by Gradle"/>
@@ -6560,6 +6795,11 @@
<sha256 value="d1f3c66aa91ac52549e00ae3b208ba4b9af7d72d68f230643553beb38e6118ac" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.errorprone" name="error_prone_annotations" version="2.28.0">
<artifact name="error_prone_annotations-2.28.0.jar">
<sha256 value="f3fc8a3a0a4020706a373b00e7f57c2512dd26d1f83d28c7d38768f8682b231e" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.errorprone" name="error_prone_annotations" version="2.3.1">
<artifact name="error_prone_annotations-2.3.1.jar">
<pgp value="7F36E793AE3252E5D9E9B98FEE9E7DC9D92FC896"/>
@@ -6644,6 +6884,11 @@
<sha256 value="e96042ce78fecba0da2be964522947c87b40a291b5fd3cd672a434924103c4b9" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.guava" name="failureaccess" version="1.0.2">
<artifact name="failureaccess-1.0.2.jar">
<sha256 value="8a8f81cf9b359e3f6dfa691a1e776985c061ef2f223c9b2c80753e1b458e8064" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.guava" name="guava" version="19.0">
<artifact name="guava-19.0.jar">
<sha256 value="58d4cc2e05ebb012bbac568b032f75623be1cb6fb096f3c60c72a86f7f057de4" origin="Generated by Gradle"/>
@@ -6719,6 +6964,14 @@
<sha256 value="6d4e2b5a118aab62e6e5e29d185a0224eed82c85c40ac3d33cf04a270c3b3744" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.guava" name="guava" version="33.3.1-android">
<artifact name="guava-33.3.1-android.jar">
<sha256 value="2c3e41d1b380f2044d257947a3aa82dabf3ae4b978622745254aa18b6cf89ab0" origin="Generated by Gradle"/>
</artifact>
<artifact name="guava-33.3.1-jre.jar">
<sha256 value="4bf0e2c5af8e4525c96e8fde17a4f7307f97f8478f11c4c8e35a0e3298ae4e90" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.guava" name="guava-parent" version="19.0">
<artifact name="guava-parent-19.0.pom">
<sha256 value="3b76ff43ecdf10f74da36e4aae2b470c9d063e053c5ca026f5512ae94f1c3e10" origin="Generated by Gradle"/>
@@ -6783,6 +7036,11 @@
<sha256 value="f02a95fa1a5e95edb3ed859fd0fb7df709d121a35290eff8b74dce2ab7f4d6ed" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.j2objc" name="j2objc-annotations" version="3.0.0">
<artifact name="j2objc-annotations-3.0.0.jar">
<sha256 value="88241573467ddca44ffd4d74aa04c2bbfd11bf7c17e0c342c94c9de7a70a7c64" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.jimfs" name="jimfs" version="1.1">
<artifact name="jimfs-1.1.jar">
<sha256 value="c4828e28d7c0a930af9387510b3bada7daa5c04d7c25a75c7b8b081f1c257ddd" origin="Generated by Gradle"/>
@@ -10724,6 +10982,11 @@
<sha256 value="e4ce1376cc2735e1dde220b62ad0913f51297704daad155a33f386bc5db0d9f7" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.checkerframework" name="checker-qual" version="3.43.0">
<artifact name="checker-qual-3.43.0.jar">
<sha256 value="3fbc2e98f05854c3df16df9abaa955b91b15b3ecac33623208ed6424640ef0f6" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.checkerframework" name="checker-qual" version="3.5.0">
<artifact name="checker-qual-3.5.0.jar">
<sha256 value="729990b3f18a95606fc2573836b6958bcdb44cb52bfbd1b7aa9c339cff35a5a4" origin="Generated by Gradle"/>
@@ -12838,6 +13101,14 @@
<sha256 value="fb169596659a518357c4b2c16f43dc75ab1c4980565ed4b4a317a050e5e39006" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlin" name="kotlin-stdlib" version="2.0.21">
<artifact name="kotlin-stdlib-2.0.21-all.jar">
<sha256 value="50ffadeb20b4d2456a526595a4f7a9e85889682715073e6cdba1b1d80e3ad458" origin="Generated by Gradle"/>
</artifact>
<artifact name="kotlin-stdlib-2.0.21.jar">
<sha256 value="f31cc53f105a7e48c093683bbd5437561d1233920513774b470805641bedbc09" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlin" name="kotlin-stdlib-common" version="1.3.71">
<artifact name="kotlin-stdlib-common-1.3.71.jar">
<sha256 value="974f8a9b7bfce3d730a86efe0eab219a72621e8530f91e30c89f400ba98092ec" origin="Generated by Gradle"/>
@@ -13501,6 +13772,11 @@
<sha256 value="f31e5b2fd52eb73a0303cffe5c63c8390ca7cf459a02dcf06faa383dd4bb88d3" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="atomicfu" version="0.23.1">
<artifact name="atomicfu-metadata-0.23.1.jar">
<sha256 value="7db8660ebe4b91bb478edb3616c4e3a50ba59c07dca517d1e1284c03fe86ac57" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="atomicfu-linuxx64" version="0.16.3">
<artifact name="atomicfu-cinterop-interop.klib">
<sha256 value="7a28fdb9f981f2802ed1a8a630c81ccaa0abe75b62cb14c4e323400866c5b286" origin="Generated by Gradle because artifact wasn't signed"/>
@@ -13570,6 +13846,11 @@
<sha256 value="59fffb26bee12c32dadcfa5d420c2a7db85d3253518128b170efda726613256d" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-android" version="1.8.1">
<artifact name="kotlinx-coroutines-android-1.8.1.jar">
<sha256 value="a134dacf4e6578b29b32e97aa50548d09cb45e3cb3551ce77ac27e55e265d8f5" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-core" version="1.3.4">
<artifact name="kotlinx-coroutines-core-1.3.4.jar">
<sha256 value="17bec6112d93f5fcb11c27ecc8a14b48e30a5689ccf42c95025b89ba2210c28f" origin="Generated by Gradle"/>
@@ -13636,6 +13917,11 @@
<sha256 value="f9522095aedcc2a6ab32c7484061ea698352c71be1390adb403b59aa48a38fdc" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-core" version="1.8.1">
<artifact name="kotlinx-coroutines-core-metadata-1.8.1.jar">
<sha256 value="daf50f1c9404b224a1d6dd5286f8e8ee7d63fe807f78ea98f71795c183b6025f" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-core-jvm" version="1.5.0">
<artifact name="kotlinx-coroutines-core-jvm-1.5.0.jar">
<pgp value="E7DC75FC24FB3C8DFE8086AD3D5839A2262CBBFB"/>
@@ -13687,6 +13973,11 @@
<sha256 value="1ab3acc38f3e7355c4f9d1ec62107a46fa73c899f3070d055e5d4373dfe67e12" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-core-jvm" version="1.8.1">
<artifact name="kotlinx-coroutines-core-jvm-1.8.1.jar">
<sha256 value="f3d4f5de1c391bbcc20f3b3435ccbac013521e76b6902d7d59635ec15c1f797e" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-core-linuxx64" version="1.5.2-native-mt">
<artifact name="kotlinx-coroutines-core.klib">
<sha256 value="bd5e3639e853cc1e8dca4db696ab29f95924453da93db96e20f30979e9463ef2" origin="Generated by Gradle because artifact wasn't signed"/>
@@ -13727,6 +14018,11 @@
<sha256 value="ae2da5b6579894055555cd13aae41230386d4586db0616b6163184f70b8b379d" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-jdk8" version="1.8.1">
<artifact name="kotlinx-coroutines-jdk8-1.8.1.jar">
<sha256 value="d8cfb4c363c91c773353b115bd4a6b5a04608e7916fe235d3a9d87efcb996c01" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-slf4j" version="1.6.0">
<artifact name="kotlinx-coroutines-slf4j-1.6.0.jar">
<sha256 value="d8a019ae7be13992867be62d97e6993afc141a956010f5f704d569f5e9677167" origin="Generated by Gradle"/>
@@ -13757,6 +14053,11 @@
<sha256 value="cd95b98b6eb61591cdef13bd3e81c9f8c279a04b956b4575b5067874bd5f1958" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-slf4j" version="1.8.1">
<artifact name="kotlinx-coroutines-slf4j-1.8.1.jar">
<sha256 value="72e10bc13dbb324a56c74476c48ceee07b076db598f926017be76392b9e7fb3a" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-test" version="1.5.2">
<artifact name="kotlinx-coroutines-test-1.5.2.jar">
<sha256 value="7f5ed01d76ecb37fc714bc0e0850b81cf753b0e968495a8db0efcd20fcb5ee60" origin="Generated by Gradle"/>
@@ -13772,6 +14073,11 @@
<sha256 value="2ddfad185b7cc7e3a2e4707c916525d37ce62cf6572ad5fcac2b9f4ba70e010a" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-test" version="1.8.1">
<artifact name="kotlinx-coroutines-test-metadata-1.8.1.jar">
<sha256 value="d5a9b8769a2167eb9dc911d1b2c54fe8270387b8160533d8ae8bda942e2998b1" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-test-jvm" version="1.6.0">
<artifact name="kotlinx-coroutines-test-jvm-1.6.0.jar">
<sha256 value="bef600516dbb41b237a883609a4f7468c2ed06d437ac13082ff4471723b4e88f" origin="Generated by Gradle"/>
@@ -13792,6 +14098,11 @@
<sha256 value="d19742a65dbdabc9ffdcb9f84a15c776e511a14da602d54ea4e078d6f7227a26" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-test-jvm" version="1.8.1">
<artifact name="kotlinx-coroutines-test-jvm-1.8.1.jar">
<sha256 value="c4ef1deb31be3f81ed82ecf237220cc95886868a7ec527a418599dfff159dedb" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-datetime-linuxx64" version="0.3.1">
<artifact name="kotlinx-datetime-cinterop-date.klib">
<sha256 value="b7a3f64fb70f8931cab585eb58ebc6471da23712e964f243e5299b51a0876ffb" origin="Generated by Gradle because artifact wasn't signed"/>