summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorDavid Göransson <david.goransson@mullvad.net>2025-08-04 09:04:19 +0200
committerDavid Göransson <david.goransson@mullvad.net>2025-08-04 09:04:19 +0200
commit3e0e65110b66d6f3ea7192a0d45ec8380df8ff0e (patch)
tree5e5f88d7848aafca395290b92f6beabc568d659d /android
parenta7b8f9e34cb4135dea66289ee2e5ffc1ec4d8382 (diff)
parent6e5856d0795ba6fe74d6d369d993c4cf37a2ff55 (diff)
downloadmullvadvpn-3e0e65110b66d6f3ea7192a0d45ec8380df8ff0e.tar.xz
mullvadvpn-3e0e65110b66d6f3ea7192a0d45ec8380df8ff0e.zip
Merge branch 'bump-agp-droid-2098'
Diffstat (limited to 'android')
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/button/MullvadButton.kt2
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/IconCell.kt3
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/NavigationComposeCell.kt14
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SelectableCell.kt15
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SwitchComposeCell.kt37
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/AddTimeBottomSheet.kt2
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/MullvadModalBottomSheet.kt7
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/PlayPayment.kt13
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/CreateCustomListDialog.kt6
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/CustomPortDialog.kt22
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/DnsDialog.kt12
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/EditCustomListNameDialog.kt6
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/InputDialog.kt9
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/MtuDialog.kt18
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/RedeemVoucherDialog.kt10
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/CustomListsScreen.kt2
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/FilterScreen.kt6
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ServerIpOverridesScreen.kt4
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SettingsScreen.kt4
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt18
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/ApiAccessMethodTextField.kt14
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/CustomListNameTextField.kt20
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/CustomPortTextField.kt7
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/CustomTextField.kt5
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/DnsTextField.kt5
-rw-r--r--android/gradle/libs.versions.toml6
-rw-r--r--android/gradle/verification-metadata.keys.xml6
-rw-r--r--android/gradle/verification-metadata.xml462
28 files changed, 363 insertions, 372 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/button/MullvadButton.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/button/MullvadButton.kt
index 8aa7d762b5..2d9d2c47b5 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/button/MullvadButton.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/button/MullvadButton.kt
@@ -109,6 +109,7 @@ fun NegativeButton(
)
}
+@Suppress("ComposableLambdaParameterNaming")
@Composable
fun VariantButton(
onClick: () -> Unit,
@@ -251,6 +252,7 @@ fun NegativeOutlinedButton(
}
}
+@Suppress("ComposableLambdaParameterNaming")
@Composable
private fun BaseButton(
onClick: () -> Unit,
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/IconCell.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/IconCell.kt
index 1a5f4e1030..bb2f5df14d 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/IconCell.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/IconCell.kt
@@ -42,10 +42,10 @@ private fun PreviewIconCell() {
}
}
+@Suppress("ComposableLambdaParameterNaming")
@Composable
fun IconCell(
imageVector: ImageVector?,
- endIcon: @Composable ColumnScope.() -> Unit = {},
title: String,
modifier: Modifier = Modifier,
contentDescription: String? = null,
@@ -53,6 +53,7 @@ fun IconCell(
titleColor: Color = MaterialTheme.colorScheme.onPrimary,
onClick: () -> Unit = {},
enabled: Boolean = true,
+ endIcon: @Composable ColumnScope.() -> Unit = {},
) {
// Using a transparent background to avoid using the default background from BaseCell
val background: Color = Color.Transparent
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/NavigationComposeCell.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/NavigationComposeCell.kt
index 25dda7d3d0..408820091a 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/NavigationComposeCell.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/NavigationComposeCell.kt
@@ -29,6 +29,8 @@ private fun PreviewNavigationCell() {
AppTheme {
NavigationComposeCell(
title = "Navigation sample",
+ showWarning = true,
+ onClick = {},
bodyView = {
NavigationCellBody(
contentBodyDescription = "",
@@ -36,8 +38,6 @@ private fun PreviewNavigationCell() {
contentColor = MaterialTheme.colorScheme.onPrimary,
)
},
- onClick = {},
- showWarning = true,
)
}
}
@@ -48,6 +48,7 @@ private fun PreviewExternalLinkComposeCell() {
AppTheme {
NavigationComposeCell(
title = "External link sample",
+ onClick = {},
bodyView = {
NavigationCellBody(
contentBodyDescription = "content body",
@@ -56,12 +57,11 @@ private fun PreviewExternalLinkComposeCell() {
isExternalLink = true,
)
},
- onClick = {},
- showWarning = false,
)
}
}
+@Suppress("ComposableLambdaParameterNaming")
@Composable
fun NavigationComposeCell(
title: String,
@@ -69,12 +69,12 @@ fun NavigationComposeCell(
showWarning: Boolean = false,
textColor: Color = MaterialTheme.colorScheme.onPrimary,
textStyle: TextStyle = MaterialTheme.typography.titleMedium,
- bodyView: @Composable () -> Unit = {
- Icon(Icons.Default.ChevronRight, contentDescription = title, tint = textColor)
- },
isRowEnabled: Boolean = true,
onClick: () -> Unit,
testTag: String = "",
+ bodyView: @Composable () -> Unit = {
+ Icon(Icons.Default.ChevronRight, contentDescription = title, tint = textColor)
+ },
) {
BaseCell(
modifier = modifier,
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SelectableCell.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SelectableCell.kt
index b5da9c9ad6..ce512e251f 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SelectableCell.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SelectableCell.kt
@@ -36,6 +36,7 @@ private fun PreviewSelectableCell() {
}
}
+@Suppress("ComposableLambdaParameterNaming")
@Composable
fun SelectableCell(
title: String,
@@ -43,13 +44,6 @@ fun SelectableCell(
modifier: Modifier = Modifier,
isEnabled: Boolean = true,
iconContentDescription: String? = null,
- selectedIcon: @Composable RowScope.() -> Unit = {
- SelectableIcon(
- iconContentDescription = iconContentDescription,
- isSelected = isSelected,
- isEnabled = isEnabled,
- )
- },
titleStyle: TextStyle = MaterialTheme.typography.bodyLarge,
startPadding: Dp = Dimens.cellStartPadding,
selectedColor: Color = MaterialTheme.colorScheme.selected,
@@ -58,6 +52,13 @@ fun SelectableCell(
onBackgroundColor: Color = MaterialTheme.colorScheme.onSurface,
onCellClicked: () -> Unit = {},
testTag: String = "",
+ selectedIcon: @Composable RowScope.() -> Unit = {
+ SelectableIcon(
+ iconContentDescription = iconContentDescription,
+ isSelected = isSelected,
+ isEnabled = isEnabled,
+ )
+ },
) {
BaseCell(
modifier = modifier.semantics { selected = isSelected },
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SwitchComposeCell.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SwitchComposeCell.kt
index db845fe1ea..3fc6eba0bf 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SwitchComposeCell.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SwitchComposeCell.kt
@@ -63,14 +63,6 @@ fun NormalSwitchComposeCell(
onInfoClicked: (() -> Unit)? = null,
) {
SwitchComposeCell(
- titleView = {
- BaseCellTitle(
- title = title,
- style = MaterialTheme.typography.bodyLarge,
- modifier = Modifier.weight(1f, true),
- textColor = if (isEnabled) onBackground else onBackground.copy(AlphaDisabled),
- )
- },
isToggled = isToggled,
startPadding = startPadding,
isEnabled = isEnabled,
@@ -79,6 +71,14 @@ fun NormalSwitchComposeCell(
onCellClicked = onCellClicked,
onInfoClicked = onInfoClicked,
modifier = modifier,
+ content = {
+ BaseCellTitle(
+ title = title,
+ style = MaterialTheme.typography.bodyLarge,
+ modifier = Modifier.weight(1f, true),
+ textColor = if (isEnabled) onBackground else onBackground.copy(AlphaDisabled),
+ )
+ },
)
}
@@ -95,14 +95,6 @@ fun HeaderSwitchComposeCell(
onInfoClicked: (() -> Unit)? = null,
) {
SwitchComposeCell(
- titleView = {
- BaseCellTitle(
- title = title,
- style = MaterialTheme.typography.titleMedium,
- modifier = Modifier.weight(1f, fill = true),
- textColor = onBackground,
- )
- },
isToggled = isToggled,
startPadding = startPadding,
isEnabled = isEnabled,
@@ -111,12 +103,20 @@ fun HeaderSwitchComposeCell(
onCellClicked = onCellClicked,
onInfoClicked = onInfoClicked,
modifier,
+ content = {
+ BaseCellTitle(
+ title = title,
+ style = MaterialTheme.typography.titleMedium,
+ modifier = Modifier.weight(1f, fill = true),
+ textColor = onBackground,
+ )
+ },
)
}
+@Suppress("ComposableLambdaParameterNaming")
@Composable
private fun SwitchComposeCell(
- titleView: @Composable RowScope.() -> Unit,
isToggled: Boolean,
startPadding: Dp,
isEnabled: Boolean,
@@ -125,10 +125,11 @@ private fun SwitchComposeCell(
onCellClicked: (Boolean) -> Unit,
onInfoClicked: (() -> Unit)?,
modifier: Modifier = Modifier,
+ content: @Composable RowScope.() -> Unit,
) {
BaseCell(
modifier = modifier.focusProperties { canFocus = false },
- headlineContent = titleView,
+ headlineContent = content,
isRowEnabled = isEnabled,
bodyView = {
SwitchCellView(
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/AddTimeBottomSheet.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/AddTimeBottomSheet.kt
index af2dea81cd..fed7e9f995 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/AddTimeBottomSheet.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/AddTimeBottomSheet.kt
@@ -454,11 +454,11 @@ private fun Products(
IconCell(
imageVector = Icons.Outlined.Sell,
title = stringResource(id = R.string.buy_credit),
- onClick = { onSitePaymentClick() },
titleColor =
onBackgroundColor.copy(
alpha = if (internetBlocked) AlphaDisabled else AlphaVisible
),
+ onClick = { onSitePaymentClick() },
enabled = !internetBlocked,
endIcon = {
Icon(
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/MullvadModalBottomSheet.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/MullvadModalBottomSheet.kt
index c7b5e0c582..eb185c13a5 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/MullvadModalBottomSheet.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/MullvadModalBottomSheet.kt
@@ -29,7 +29,7 @@ import net.mullvad.mullvadvpn.lib.theme.Dimens
private fun PreviewMullvadModalBottomSheet() {
AppTheme {
MullvadModalBottomSheet(
- sheetContent = {
+ content = {
HeaderCell(text = "Title")
HorizontalDivider()
IconCell(imageVector = null, title = "Select")
@@ -40,6 +40,7 @@ private fun PreviewMullvadModalBottomSheet() {
}
@OptIn(ExperimentalMaterial3Api::class)
+@Suppress("ComposableLambdaParameterNaming")
@Composable
fun MullvadModalBottomSheet(
modifier: Modifier = Modifier,
@@ -47,7 +48,7 @@ fun MullvadModalBottomSheet(
backgroundColor: Color = MaterialTheme.colorScheme.surfaceContainer,
onBackgroundColor: Color = MaterialTheme.colorScheme.onSurface,
onDismissRequest: () -> Unit,
- sheetContent: @Composable ColumnScope.() -> Unit,
+ content: @Composable ColumnScope.() -> Unit,
) {
// This is to avoid weird colors in the status bar and the navigation bar
val paddingValues = BottomSheetDefaults.windowInsets.asPaddingValues()
@@ -59,7 +60,7 @@ fun MullvadModalBottomSheet(
contentWindowInsets = { WindowInsets(0, 0, 0, 0) }, // No insets
dragHandle = { BottomSheetDefaults.DragHandle(color = onBackgroundColor) },
) {
- sheetContent()
+ content()
Spacer(modifier = Modifier.height(Dimens.smallPadding))
Spacer(modifier = Modifier.height(paddingValues.calculateBottomPadding()))
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/PlayPayment.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/PlayPayment.kt
index ac7eb140fc..ec27c6456c 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/PlayPayment.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/PlayPayment.kt
@@ -10,7 +10,6 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.filled.Info
import androidx.compose.material.icons.outlined.Info
import androidx.compose.material.icons.outlined.Sell
import androidx.compose.material3.HorizontalDivider
@@ -162,12 +161,6 @@ private fun PaymentAvailable(
Column {
billingPaymentState.products.forEach { product ->
IconCell(
- titleColor =
- if (enabled) {
- MaterialTheme.colorScheme.onSurface
- } else {
- MaterialTheme.colorScheme.onSurface.copy(alpha = AlphaDisabled)
- },
imageVector = Icons.Outlined.Sell,
title =
when (product.productId.value) {
@@ -186,6 +179,12 @@ private fun PaymentAvailable(
error("ProductId ${product.productId.value} is not supported")
}
},
+ titleColor =
+ if (enabled) {
+ MaterialTheme.colorScheme.onSurface
+ } else {
+ MaterialTheme.colorScheme.onSurface.copy(alpha = AlphaDisabled)
+ },
onClick = { onPurchaseBillingProductClick(product.productId) },
enabled = enabled,
)
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/CreateCustomListDialog.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/CreateCustomListDialog.kt
index 41b3574d0d..d45aef007e 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/CreateCustomListDialog.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/CreateCustomListDialog.kt
@@ -111,8 +111,10 @@ fun CreateCustomListDialog(
InputDialog(
title = stringResource(id = R.string.create_new_list),
- confirmButtonText = stringResource(id = R.string.create),
confirmButtonEnabled = isValidName,
+ confirmButtonText = stringResource(id = R.string.create),
+ onBack = onDismiss,
+ onConfirm = { createCustomList(name.value) },
input = {
CustomListNameTextField(
name = name.value,
@@ -126,8 +128,6 @@ fun CreateCustomListDialog(
modifier = Modifier.testTag(CREATE_CUSTOM_LIST_DIALOG_INPUT_TEST_TAG),
)
},
- onBack = onDismiss,
- onConfirm = { createCustomList(name.value) },
)
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/CustomPortDialog.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/CustomPortDialog.kt
index 35a98e061e..d8465325f0 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/CustomPortDialog.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/CustomPortDialog.kt
@@ -52,16 +52,6 @@ fun CustomPortDialog(
) {
InputDialog(
title = title,
- input = {
- CustomPortTextField(
- value = portInput,
- onValueChanged = onInputChanged,
- onSubmit = onSavePort,
- isValidValue = isValidInput,
- maxCharLength = 5,
- modifier = Modifier.testTag(CUSTOM_PORT_DIALOG_INPUT_TEST_TAG).fillMaxWidth(),
- )
- },
message =
stringResource(
id = R.string.custom_port_dialog_valid_ranges,
@@ -71,7 +61,17 @@ fun CustomPortDialog(
confirmButtonText = stringResource(id = R.string.custom_port_dialog_submit),
onResetButtonText = stringResource(R.string.custom_port_dialog_remove),
onBack = onDismiss,
- onReset = if (showResetToDefault) onResetPort else null,
onConfirm = { onSavePort(portInput) },
+ onReset = if (showResetToDefault) onResetPort else null,
+ input = {
+ CustomPortTextField(
+ value = portInput,
+ onValueChanged = onInputChanged,
+ onSubmit = onSavePort,
+ isValidValue = isValidInput,
+ maxCharLength = 5,
+ modifier = Modifier.testTag(CUSTOM_PORT_DIALOG_INPUT_TEST_TAG).fillMaxWidth(),
+ )
+ },
)
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/DnsDialog.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/DnsDialog.kt
index bf8a8b0989..6b3596f62b 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/DnsDialog.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/DnsDialog.kt
@@ -114,6 +114,12 @@ fun DnsDialog(
} else {
stringResource(R.string.update_dns_server_dialog_title)
},
+ confirmButtonEnabled = state.isValid(),
+ onResetButtonText = stringResource(id = R.string.remove_button),
+ messageTextColor = MaterialTheme.colorScheme.error,
+ onBack = onDismiss,
+ onConfirm = onSaveDnsClick,
+ onReset = state.index?.let { { onRemoveDnsClick(state.index) } },
input = {
DnsTextField(
value = state.input,
@@ -137,11 +143,5 @@ fun DnsDialog(
modifier = Modifier.fillMaxWidth(),
)
},
- onResetButtonText = stringResource(id = R.string.remove_button),
- confirmButtonEnabled = state.isValid(),
- messageTextColor = MaterialTheme.colorScheme.error,
- onReset = state.index?.let { { onRemoveDnsClick(state.index) } },
- onBack = onDismiss,
- onConfirm = onSaveDnsClick,
)
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/EditCustomListNameDialog.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/EditCustomListNameDialog.kt
index 897106e3bf..996459403b 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/EditCustomListNameDialog.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/EditCustomListNameDialog.kt
@@ -82,8 +82,10 @@ fun EditCustomListNameDialog(
) {
InputDialog(
title = stringResource(id = R.string.update_list_name),
- confirmButtonText = stringResource(id = R.string.save),
confirmButtonEnabled = state.isValidName,
+ confirmButtonText = stringResource(id = R.string.save),
+ onBack = onDismiss,
+ onConfirm = { updateName(state.name) },
input = {
CustomListNameTextField(
name = state.name,
@@ -94,8 +96,6 @@ fun EditCustomListNameDialog(
modifier = Modifier.testTag(EDIT_CUSTOM_LIST_DIALOG_INPUT_TEST_TAG),
)
},
- onBack = onDismiss,
- onConfirm = { updateName(state.name) },
)
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/InputDialog.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/InputDialog.kt
index 8919ad69db..bc4f0ceed9 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/InputDialog.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/InputDialog.kt
@@ -28,6 +28,9 @@ private fun PreviewInputDialog() {
InputDialog(
title = "Input here",
message = "Lorem ipsum",
+ onBack = {},
+ onConfirm = {},
+ onReset = {},
input = {
CustomTextField(
value = "input",
@@ -39,18 +42,15 @@ private fun PreviewInputDialog() {
isDigitsOnlyAllowed = false,
)
},
- onReset = {},
- onBack = {},
- onConfirm = {},
)
}
}
+@Suppress("ComposableLambdaParameterNaming")
@Composable
fun InputDialog(
title: String,
message: String? = null,
- input: @Composable ColumnScope.() -> Unit,
confirmButtonEnabled: Boolean = true,
confirmButtonText: String = stringResource(R.string.submit_button),
onResetButtonText: String = stringResource(R.string.reset_to_default_button),
@@ -58,6 +58,7 @@ fun InputDialog(
onBack: () -> Unit,
onConfirm: () -> Unit,
onReset: (() -> Unit)? = null,
+ input: @Composable ColumnScope.() -> Unit,
) {
AlertDialog(
onDismissRequest = onBack,
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/MtuDialog.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/MtuDialog.kt
index e1ee0a0faf..4c6490e87b 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/MtuDialog.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/MtuDialog.kt
@@ -73,6 +73,15 @@ fun MtuDialog(
InputDialog(
title = stringResource(id = R.string.wireguard_mtu),
message = stringResource(id = R.string.wireguard_mtu_footer, MTU_MIN_VALUE, MTU_MAX_VALUE),
+ confirmButtonEnabled = state.isValidInput,
+ onBack = onDismiss,
+ onConfirm = { onSaveMtu(state.mtuInput) },
+ onReset =
+ if (state.showResetToDefault) {
+ onResetMtu
+ } else {
+ null
+ },
input = {
MtuTextField(
value = state.mtuInput,
@@ -85,14 +94,5 @@ fun MtuDialog(
modifier = Modifier.fillMaxWidth(),
)
},
- confirmButtonEnabled = state.isValidInput,
- onReset =
- if (state.showResetToDefault) {
- onResetMtu
- } else {
- null
- },
- onBack = onDismiss,
- onConfirm = { onSaveMtu(state.mtuInput) },
)
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/RedeemVoucherDialog.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/RedeemVoucherDialog.kt
index cd7d21b95f..62b9cf57c4 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/RedeemVoucherDialog.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/RedeemVoucherDialog.kt
@@ -236,20 +236,20 @@ private fun EnterVoucherBody(
) {
CustomTextField(
value = state.voucherInput,
+ keyboardType = KeyboardType.Password,
+ modifier = Modifier.testTag(VOUCHER_INPUT_TEST_TAG),
+ onValueChanged = { input -> onVoucherInputChange(input) },
onSubmit = { input ->
if (state.voucherInput.length == VOUCHER_LENGTH) {
onRedeem(input)
}
},
- onValueChanged = { input -> onVoucherInputChange(input) },
+ placeholderText = stringResource(id = R.string.voucher_hint),
isValidValue =
state.voucherInput.isEmpty() || state.voucherInput.length == MAX_VOUCHER_LENGTH,
- keyboardType = KeyboardType.Password,
- placeholderText = stringResource(id = R.string.voucher_hint),
+ isDigitsOnlyAllowed = false,
visualTransformation = vouchersVisualTransformation(),
textStyle = MaterialTheme.typography.titleMedium,
- isDigitsOnlyAllowed = false,
- modifier = Modifier.testTag(VOUCHER_INPUT_TEST_TAG),
)
Spacer(modifier = Modifier.height(Dimens.smallPadding))
Row(
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/CustomListsScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/CustomListsScreen.kt
index 4707902ff0..f67a9e365a 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/CustomListsScreen.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/CustomListsScreen.kt
@@ -176,8 +176,8 @@ private fun LazyListScope.content(
) { customList ->
NavigationComposeCell(
title = customList.name.value,
- onClick = { openCustomList(customList) },
textStyle = MaterialTheme.typography.bodyLarge,
+ onClick = { openCustomList(customList) },
)
}
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/FilterScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/FilterScreen.kt
index b88aeb450c..28a2d64463 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/FilterScreen.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/FilterScreen.kt
@@ -176,9 +176,8 @@ private fun LazyItemScope.AnyOwnership(state: RelayFilterUiState, onSelectedOwne
SelectableCell(
title = stringResource(id = R.string.any),
isSelected = state.selectedOwnership is Constraint.Any,
- onCellClicked = { onSelectedOwnership() },
modifier = Modifier.animateItem(),
- backgroundColor = MaterialTheme.colorScheme.surfaceContainerHighest,
+ onCellClicked = { onSelectedOwnership() },
)
}
@@ -191,9 +190,8 @@ private fun LazyItemScope.Ownership(
SelectableCell(
title = stringResource(id = ownership.stringResource()),
isSelected = ownership == state.selectedOwnership.getOrNull(),
- onCellClicked = { onSelectedOwnership(ownership) },
modifier = Modifier.animateItem(),
- backgroundColor = MaterialTheme.colorScheme.surfaceContainerHighest,
+ onCellClicked = { onSelectedOwnership(ownership) },
)
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ServerIpOverridesScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ServerIpOverridesScreen.kt
index 90bedbeb18..bbfc028917 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ServerIpOverridesScreen.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ServerIpOverridesScreen.kt
@@ -280,20 +280,20 @@ private fun ImportOverridesByBottomSheet(
IconCell(
imageVector = Icons.Default.UploadFile,
title = stringResource(id = R.string.server_ip_overrides_import_by_file),
+ modifier = Modifier.testTag(SERVER_IP_OVERRIDES_IMPORT_BY_FILE_TEST_TAG),
onClick = {
onImportByFile()
onCloseSheet()
},
- modifier = Modifier.testTag(SERVER_IP_OVERRIDES_IMPORT_BY_FILE_TEST_TAG),
)
IconCell(
imageVector = Icons.Default.TextFields,
title = stringResource(id = R.string.server_ip_overrides_import_by_text),
+ modifier = Modifier.testTag(SERVER_IP_OVERRIDES_IMPORT_BY_TEXT_TEST_TAG),
onClick = {
onImportByText()
onCloseSheet()
},
- modifier = Modifier.testTag(SERVER_IP_OVERRIDES_IMPORT_BY_TEXT_TEST_TAG),
)
if (overridesActive) {
HorizontalDivider(color = onBackgroundColor)
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SettingsScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SettingsScreen.kt
index c6cd4205cf..f70148a48c 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SettingsScreen.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SettingsScreen.kt
@@ -242,13 +242,13 @@ private fun FaqAndGuides() {
NavigationComposeCell(
title = faqGuideLabel,
+ onClick = openFaqAndGuides,
bodyView = {
DefaultExternalLinkView(
chevronContentDescription = faqGuideLabel,
tint = MaterialTheme.colorScheme.onPrimary,
)
},
- onClick = openFaqAndGuides,
)
}
@@ -263,13 +263,13 @@ private fun PrivacyPolicy(state: SettingsUiState) {
NavigationComposeCell(
title = privacyPolicyLabel,
+ onClick = openPrivacyPolicy,
bodyView = {
DefaultExternalLinkView(
chevronContentDescription = privacyPolicyLabel,
tint = MaterialTheme.colorScheme.onPrimary,
)
},
- onClick = openPrivacyPolicy,
)
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt
index 427d035c87..7d26ad25ee 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt
@@ -513,8 +513,8 @@ fun VpnSettingsContent(
VpnSettingItem.AutoConnectAndLockdownMode ->
item(key = it::class.simpleName) {
NavigationComposeCell(
- modifier = Modifier.animateItem(),
title = stringResource(id = R.string.auto_connect_and_lockdown_mode),
+ modifier = Modifier.animateItem(),
onClick = { navigateToAutoConnectScreen() },
)
}
@@ -629,7 +629,6 @@ fun VpnSettingsContent(
is VpnSettingItem.DeviceIpVersionItem ->
item(key = it::class.simpleName + it.constraint.getOrNull().toString()) {
SelectableCell(
- modifier = Modifier.animateItem(),
title =
when (it.constraint) {
Constraint.Any -> stringResource(id = R.string.automatic)
@@ -642,6 +641,7 @@ fun VpnSettingsContent(
}
},
isSelected = it.selected,
+ modifier = Modifier.animateItem(),
onCellClicked = { onSelectDeviceIpVersion(it.constraint) },
)
}
@@ -814,8 +814,8 @@ fun VpnSettingsContent(
SelectableCell(
title = stringResource(id = R.string.automatic),
isSelected = it.selected,
- onCellClicked = { onSelectObfuscationMode(ObfuscationMode.Auto) },
modifier = Modifier.animateItem(),
+ onCellClicked = { onSelectObfuscationMode(ObfuscationMode.Auto) },
)
}
@@ -824,9 +824,9 @@ fun VpnSettingsContent(
SelectableCell(
title = stringResource(id = R.string.off),
isSelected = it.selected,
+ modifier = Modifier.animateItem(),
onCellClicked = { onSelectObfuscationMode(ObfuscationMode.Off) },
testTag = WIREGUARD_OBFUSCATION_OFF_CELL_TEST_TAG,
- modifier = Modifier.animateItem(),
)
}
@@ -924,6 +924,10 @@ fun VpnSettingsContent(
is Constraint.Any -> stringResource(id = R.string.automatic)
},
+ isSelected = it.selected,
+ modifier = Modifier.animateItem(),
+ isEnabled = it.enabled,
+ onCellClicked = { onWireguardPortSelected(it.constraint) },
testTag =
when (it.constraint) {
is Constraint.Only ->
@@ -935,10 +939,6 @@ fun VpnSettingsContent(
is Constraint.Any -> ""
},
- isSelected = it.selected,
- onCellClicked = { onWireguardPortSelected(it.constraint) },
- isEnabled = it.enabled,
- modifier = Modifier.animateItem(),
)
}
@@ -986,8 +986,8 @@ fun VpnSettingsContent(
@Composable
private fun ServerIpOverrides(onServerIpOverridesClick: () -> Unit, modifier: Modifier = Modifier) {
NavigationComposeCell(
- modifier = modifier,
title = stringResource(id = R.string.server_ip_override),
+ modifier = modifier,
onClick = onServerIpOverridesClick,
)
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/ApiAccessMethodTextField.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/ApiAccessMethodTextField.kt
index b473dcbdb5..ea555784a5 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/ApiAccessMethodTextField.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/ApiAccessMethodTextField.kt
@@ -29,23 +29,22 @@ fun ApiAccessMethodTextField(
CustomTextField(
value = value,
keyboardType = keyboardType,
+ modifier =
+ modifier
+ .defaultMinSize(minHeight = Dimens.formTextFieldMinHeight)
+ .padding(vertical = Dimens.miniPadding),
onValueChanged = onValueChanged,
onSubmit = {
if (imeAction == ImeAction.Done) {
focusManager.clearFocus()
}
},
- labelText = labelText,
placeholderText = null,
+ labelText = labelText,
+ maxCharLength = maxCharLength,
isValidValue = isValidValue,
isDigitsOnlyAllowed = isDigitsOnlyAllowed,
- maxCharLength = maxCharLength,
- supportingText = errorText?.let { { ErrorSupportingText(errorText) } },
colors = apiAccessTextFieldColors(),
- modifier =
- modifier
- .defaultMinSize(minHeight = Dimens.formTextFieldMinHeight)
- .padding(vertical = Dimens.miniPadding),
keyboardOptions =
KeyboardOptions(
capitalization = capitalization,
@@ -53,5 +52,6 @@ fun ApiAccessMethodTextField(
keyboardType = keyboardType,
imeAction = imeAction,
),
+ supportingText = errorText?.let { { ErrorSupportingText(errorText) } },
)
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/CustomListNameTextField.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/CustomListNameTextField.kt
index 8e483e9153..9cb65ae4e4 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/CustomListNameTextField.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/CustomListNameTextField.kt
@@ -27,17 +27,25 @@ fun CustomListNameTextField(
val keyboardController = LocalSoftwareKeyboardController.current
CustomTextField(
value = name,
+ keyboardType = KeyboardType.Text,
+ modifier =
+ modifier.focusRequester(focusRequester).onFocusChanged { focusState ->
+ if (focusState.hasFocus) {
+ keyboardController?.show()
+ }
+ },
onValueChanged = onValueChanged,
onSubmit = {
if (isValidName) {
onSubmit(it)
}
},
- keyboardType = KeyboardType.Text,
placeholderText = null,
+ maxCharLength = CustomListName.MAX_LENGTH,
isValidValue = error == null,
isDigitsOnlyAllowed = false,
- maxCharLength = CustomListName.MAX_LENGTH,
+ textStyle = MaterialTheme.typography.titleMedium,
+ capitalization = KeyboardCapitalization.Words,
supportingText =
error?.let {
{
@@ -48,14 +56,6 @@ fun CustomListNameTextField(
)
}
},
- capitalization = KeyboardCapitalization.Words,
- textStyle = MaterialTheme.typography.titleMedium,
- modifier =
- modifier.focusRequester(focusRequester).onFocusChanged { focusState ->
- if (focusState.hasFocus) {
- keyboardController?.show()
- }
- },
)
LaunchedEffect(Unit) { focusRequester.requestFocus() }
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/CustomPortTextField.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/CustomPortTextField.kt
index cd4b67b4d2..81e40059d0 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/CustomPortTextField.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/CustomPortTextField.kt
@@ -20,13 +20,12 @@ fun CustomPortTextField(
value = value,
keyboardType = KeyboardType.Number,
modifier = modifier,
- placeholderText = stringResource(id = R.string.custom_port_dialog_placeholder),
onValueChanged = onValueChanged,
onSubmit = onSubmit,
- isDigitsOnlyAllowed = true,
- isEnabled = true,
- isValidValue = isValidValue,
+ placeholderText = stringResource(id = R.string.custom_port_dialog_placeholder),
maxCharLength = maxCharLength,
+ isValidValue = isValidValue,
+ isDigitsOnlyAllowed = true,
textStyle = MaterialTheme.typography.titleMedium,
)
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/CustomTextField.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/CustomTextField.kt
index 783948978d..4f165a5303 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/CustomTextField.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/CustomTextField.kt
@@ -34,6 +34,7 @@ import net.mullvad.mullvadvpn.constant.EMPTY_STRING
import net.mullvad.mullvadvpn.constant.NEWLINE_STRING
import net.mullvad.mullvadvpn.lib.theme.Dimens
+@Suppress("ComposableLambdaParameterNaming")
@Composable
fun CustomTextField(
value: String,
@@ -44,11 +45,10 @@ fun CustomTextField(
isEnabled: Boolean = true,
placeholderText: String?,
labelText: String? = null,
- maxCharLength: Int = Int.MAX_VALUE,
+ maxCharLength: Int = Int.Companion.MAX_VALUE,
isValidValue: Boolean,
isDigitsOnlyAllowed: Boolean,
visualTransformation: VisualTransformation = VisualTransformation.None,
- supportingText: @Composable (() -> Unit)? = null,
colors: TextFieldColors = mullvadDarkTextFieldColors(),
textStyle: TextStyle = LocalTextStyle.current,
capitalization: KeyboardCapitalization = KeyboardCapitalization.None,
@@ -59,6 +59,7 @@ fun CustomTextField(
keyboardType = keyboardType,
imeAction = ImeAction.Done,
),
+ supportingText: @Composable (() -> Unit)? = null,
) {
// This is the same implementation as in BasicTextField.kt but with initial selection set at the
// end of the text rather than in the beginning.
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/DnsTextField.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/DnsTextField.kt
index f89d4c9627..a7aecddb67 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/DnsTextField.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/DnsTextField.kt
@@ -1,7 +1,6 @@
package net.mullvad.mullvadvpn.compose.textfield
import androidx.compose.material3.MaterialTheme
-import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.input.KeyboardType
@@ -25,10 +24,10 @@ fun DnsTextField(
onSubmit = { onSubmit() },
isEnabled = isEnabled,
placeholderText = placeholderText,
- supportingText = errorText?.let { { ErrorSupportingText(errorText) } },
maxCharLength = Int.MAX_VALUE,
- isDigitsOnlyAllowed = false,
isValidValue = isValidValue,
+ isDigitsOnlyAllowed = false,
textStyle = MaterialTheme.typography.titleMedium,
+ supportingText = errorText?.let { { ErrorSupportingText(errorText) } },
)
}
diff --git a/android/gradle/libs.versions.toml b/android/gradle/libs.versions.toml
index 3e0e6fceb3..4b60d284a9 100644
--- a/android/gradle/libs.versions.toml
+++ b/android/gradle/libs.versions.toml
@@ -16,10 +16,8 @@ ndk = "27.3.13750724"
# Find the relevant AAPT version here:
# https://mvnrepository.com/artifact/com.android.tools.build/aapt2
-# Do not upgrade to 8.11.0, it will give off incorrect lint warning about 'MemberExtensionConflict'.
-# See https://issuetracker.google.com/issues/427761232 fixed in 8.12.0-alpha08
-android-gradle-plugin = "8.10.1"
-android-gradle-aapt = "12782657"
+android-gradle-plugin = "8.12.0"
+android-gradle-aapt = "13700139"
android-billingclient = "8.0.0"
# AndroidX
diff --git a/android/gradle/verification-metadata.keys.xml b/android/gradle/verification-metadata.keys.xml
index 646085d314..b4c9b2b073 100644
--- a/android/gradle/verification-metadata.keys.xml
+++ b/android/gradle/verification-metadata.keys.xml
@@ -760,9 +760,9 @@
<sha256 value="147af4e14a1984010d8f155e5e19d781f03c1d70dfed02a8e0d18428b8fc8682" origin="Generated by Gradle" reason="Artifact is not signed"/>
</artifact>
</component>
- <component group="com.android.tools.build" name="bundletool" version="1.18.0">
- <artifact name="bundletool-1.18.0.jar">
- <sha256 value="b07f346383bac7d5ddbba2794ddc770565a83ae691d80332264d42dd9bfb4507" origin="Generated by Gradle" reason="Artifact is not signed"/>
+ <component group="com.android.tools.build" name="bundletool" version="1.18.1">
+ <artifact name="bundletool-1.18.1.jar">
+ <sha256 value="a73341a7945abcb0e6b8971c7b1b2801bd765006447ca0d2437a4260d572ceac" origin="Generated by Gradle" reason="Artifact is not signed"/>
</artifact>
</component>
<component group="com.android.tools.build" name="transform-api" version="2.0.0-deprecated-use-gradle-api">
diff --git a/android/gradle/verification-metadata.xml b/android/gradle/verification-metadata.xml
index f6105b7aca..a5dd6aed86 100644
--- a/android/gradle/verification-metadata.xml
+++ b/android/gradle/verification-metadata.xml
@@ -1396,14 +1396,14 @@
<sha256 value="903034d5152dd2e0162b1468ea25a22e1ca384006b3d282d5a143cc760321a01" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="androidx.databinding" name="databinding-common" version="8.10.1">
- <artifact name="databinding-common-8.10.1.jar">
+ <component group="androidx.databinding" name="databinding-common" version="8.12.0">
+ <artifact name="databinding-common-8.12.0.jar">
<sha256 value="66cab82639dac0f6c2433464c093b074d608c4bb887ec38a9b8bc4ac98126732" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="androidx.databinding" name="databinding-compiler-common" version="8.10.1">
- <artifact name="databinding-compiler-common-8.10.1.jar">
- <sha256 value="8b567ded2b488b6f98423fd74cdd676b6a30aa0e35118629f59f0ac0043d30d2" origin="Generated by Gradle"/>
+ <component group="androidx.databinding" name="databinding-compiler-common" version="8.12.0">
+ <artifact name="databinding-compiler-common-8.12.0.jar">
+ <sha256 value="7988854af57e66227fb9a9d5a796c57e783d9e31c50faae4bb555df09ccfa204" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.datastore" name="datastore" version="1.1.7">
@@ -2659,14 +2659,14 @@
<sha256 value="92abd9e60006984cf4790aaf84c79d0f384286e326ece0f3921f693cda089b94" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android" name="signflinger" version="8.10.1">
- <artifact name="signflinger-8.10.1.jar">
+ <component group="com.android" name="signflinger" version="8.12.0">
+ <artifact name="signflinger-8.12.0.jar">
<sha256 value="c1dca2c683634ee1a294298f9c7179578af6a86e080bdc40f961915bc5c8142f" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android" name="zipflinger" version="8.10.1">
- <artifact name="zipflinger-8.10.1.jar">
- <sha256 value="ba1f32aa255abe4dab66571dd9195305d3027f261f9f4f465898b30cdffd09b3" origin="Generated by Gradle"/>
+ <component group="com.android" name="zipflinger" version="8.12.0">
+ <artifact name="zipflinger-8.12.0.jar">
+ <sha256 value="a6a68f03e8d9f8944688c36c6d16c253e81a625930af1d0eb5e592bd2b2da9e8" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.android.billingclient" name="billing" version="8.0.0">
@@ -2679,162 +2679,162 @@
<sha256 value="0179e3b9d0789672f722ef496413517ed742390c191f2763452412796e394c30" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.databinding" name="baseLibrary" version="8.10.1">
- <artifact name="baseLibrary-8.10.1.jar">
+ <component group="com.android.databinding" name="baseLibrary" version="8.12.0">
+ <artifact name="baseLibrary-8.12.0.jar">
<sha256 value="794113709dab21b06c262b3795e73cb708fbacae61715f34361e1af6237a1870" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools" name="annotations" version="31.10.1">
- <artifact name="annotations-31.10.1.jar">
- <sha256 value="b25995fa7b220d35fbb8e325df071f8291691bfbaff9734c98e38f45ec2a73ee" origin="Generated by Gradle"/>
+ <component group="com.android.tools" name="annotations" version="31.12.0">
+ <artifact name="annotations-31.12.0.jar">
+ <sha256 value="3b4bb9620c17d19e5bd91ac1988080553573b4c3b739fdd92416f42f2daf3e78" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools" name="common" version="31.10.1">
- <artifact name="common-31.10.1.jar">
- <sha256 value="32fc109f0fdd6069f6e3e386188a6077422e7433369bc30ed51953881d9f8eb1" origin="Generated by Gradle"/>
+ <component group="com.android.tools" name="common" version="31.12.0">
+ <artifact name="common-31.12.0.jar">
+ <sha256 value="d14a75ad43d0bb92e0e704943854c5d735337175597ae0b4ad8e0054505d4ca6" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools" name="dvlib" version="31.10.1">
- <artifact name="dvlib-31.10.1.jar">
+ <component group="com.android.tools" name="dvlib" version="31.12.0">
+ <artifact name="dvlib-31.12.0.jar">
<sha256 value="e3cf3fdc947788dee8d5baa76cb72a66571174bc4741edf0e3bab97a7ca90e1b" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools" name="play-sdk-proto" version="31.10.1">
- <artifact name="play-sdk-proto-31.10.1.jar">
+ <component group="com.android.tools" name="play-sdk-proto" version="31.12.0">
+ <artifact name="play-sdk-proto-31.12.0.jar">
<sha256 value="c6fc15a5c203064cfd2c8a176fdeac72ae0a2d743ec47a2e66a0238d8d870b6b" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools" name="repository" version="31.10.1">
- <artifact name="repository-31.10.1.jar">
- <sha256 value="cb9bcb7159b395d7ba9428206d0f914e670a2aa464f7c5227f5698441155d446" origin="Generated by Gradle"/>
+ <component group="com.android.tools" name="repository" version="31.12.0">
+ <artifact name="repository-31.12.0.jar">
+ <sha256 value="4ede3dc9656ba4cb87a557f0073467af8292622689ba85091ffb48ec8e06c3f9" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools" name="sdk-common" version="31.10.1">
- <artifact name="sdk-common-31.10.1.jar">
- <sha256 value="c8408df75e04498a878f349ea8660ed84d1a4c15e971a021d73810d921279c11" origin="Generated by Gradle"/>
+ <component group="com.android.tools" name="sdk-common" version="31.12.0">
+ <artifact name="sdk-common-31.12.0.jar">
+ <sha256 value="46bb8d3e49291456af8ebaa0efd2ed22108bbe181c3d09f6784b800eed30be2a" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools" name="sdklib" version="31.10.1">
- <artifact name="sdklib-31.10.1.jar">
- <sha256 value="af153d7550264b9f79ef4a02b0f8917ed4d5a276644ce8de39d7ecf66794de24" origin="Generated by Gradle"/>
+ <component group="com.android.tools" name="sdklib" version="31.12.0">
+ <artifact name="sdklib-31.12.0.jar">
+ <sha256 value="43181dd1e1c133f94895b8e0750f8d3b6f64968f5f21124a9f00da235db402fb" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.analytics-library" name="crash" version="31.10.1">
- <artifact name="crash-31.10.1.jar">
+ <component group="com.android.tools.analytics-library" name="crash" version="31.12.0">
+ <artifact name="crash-31.12.0.jar">
<sha256 value="cca97ac29a1329bd310a3e832b6e57f46227e501aa529c00a63df217c5d7df41" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.analytics-library" name="protos" version="31.10.1">
- <artifact name="protos-31.10.1.jar">
- <sha256 value="4ed1e3035425bc879b22375677906b987b1c632f40f2a83eaae84effd656cb3e" origin="Generated by Gradle"/>
+ <component group="com.android.tools.analytics-library" name="protos" version="31.12.0">
+ <artifact name="protos-31.12.0.jar">
+ <sha256 value="67376a016aad7984ec123a4d0e72a61c252240f516483787a4364d8e6fb7599b" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.analytics-library" name="shared" version="31.10.1">
- <artifact name="shared-31.10.1.jar">
- <sha256 value="38d3fda1ac4cb0f8974a4868da1361a03cfab930e52e5729d99bade40382459c" origin="Generated by Gradle"/>
+ <component group="com.android.tools.analytics-library" name="shared" version="31.12.0">
+ <artifact name="shared-31.12.0.jar">
+ <sha256 value="08c34e09f906d845b4fcd75e7fa865adb818343aebb5b3581a6231bdc625b34f" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.analytics-library" name="tracker" version="31.10.1">
- <artifact name="tracker-31.10.1.jar">
- <sha256 value="0fc55e4d215f4b021d881172acef82464061d962dfebb113a0540dc7045928e5" origin="Generated by Gradle"/>
+ <component group="com.android.tools.analytics-library" name="tracker" version="31.12.0">
+ <artifact name="tracker-31.12.0.jar">
+ <sha256 value="a0e2fa1bcd6825bc1c3954e0a206d88083f46bb161c650fe7c8980eb13afc082" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.build" name="aapt2" version="8.10.1-12782657">
- <artifact name="aapt2-8.10.1-12782657-linux.jar">
- <sha256 value="52f864b7fd20a9ff09fc3db96162537a63c5b38ecc1c2549db4b491c6a517ff0" origin="Generated by Gradle"/>
+ <component group="com.android.tools.build" name="aapt2" version="8.12.0-13700139">
+ <artifact name="aapt2-8.12.0-13700139-linux.jar">
+ <sha256 value="df85593b92c25199515750a30b14744acc42537b2d1176be61b248111484134f" origin="Generated by Gradle"/>
</artifact>
- <artifact name="aapt2-8.10.1-12782657-osx.jar">
- <sha256 value="91fb66f4999d114c38713bb4429451e4f2bbe6cfd7c1931e43ee13f52234d426" origin="Generated by Gradle"/>
+ <artifact name="aapt2-8.12.0-13700139-osx.jar">
+ <sha256 value="5f2811a37b5f52c2791b6954d2c7fdfec1b083a5904d4a61ada5572f3dfdb516" origin="Generated by Gradle"/>
</artifact>
- <artifact name="aapt2-8.10.1-12782657-windows.jar">
- <sha256 value="c7c27ffee1d79c14bcb211c3b55f2c0449102fd4603c1aae07768b3e4ff460d2" origin="Generated by Gradle"/>
+ <artifact name="aapt2-8.12.0-13700139-windows.jar">
+ <sha256 value="b2246e39be968c656cc64b98be801fbc0d272983b56da9a6edd30071f8f4c0fa" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.build" name="aapt2-proto" version="8.10.1-12782657">
- <artifact name="aapt2-proto-8.10.1-12782657.jar">
- <sha256 value="542852b381e0b6f7886e2de0baa3680ec60c6209c34e1cb90645a689b6122dd4" origin="Generated by Gradle"/>
+ <component group="com.android.tools.build" name="aapt2-proto" version="8.12.0-13700139">
+ <artifact name="aapt2-proto-8.12.0-13700139.jar">
+ <sha256 value="ad6b1e0a83a42e6764c5c82cc63f8b4a0677ba0b0c2e6e027a5b5d9bf4917fe0" origin="Generated by Gradle"/>
</artifact>
- <artifact name="aapt2-proto-8.10.1-12782657.module">
- <sha256 value="569dba96583c3f1da5f7be2caf1de4b7e7e348510abf965bdc9ad9459f7530b9" origin="Generated by Gradle"/>
+ <artifact name="aapt2-proto-8.12.0-13700139.module">
+ <sha256 value="3b5a959a03eeca43a1e4bf5f12ffcf8a6642abd2a101f56669a1b100c28c583f" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.build" name="aaptcompiler" version="8.10.1">
- <artifact name="aaptcompiler-8.10.1.jar">
- <sha256 value="9d620e2f2c5432a290c2389f8ab3c3f846519a5c1cb37dd90ea21c3096adae75" origin="Generated by Gradle"/>
+ <component group="com.android.tools.build" name="aaptcompiler" version="8.12.0">
+ <artifact name="aaptcompiler-8.12.0.jar">
+ <sha256 value="92fc469e1e5afed1ec0f93d40148dfe37cf0c0f801c83799715881a9f0e1b270" origin="Generated by Gradle"/>
</artifact>
- <artifact name="aaptcompiler-8.10.1.module">
- <sha256 value="94b16edfd4260f51fafdd65aa69e0753dfcb545c49832cb922be2d3eedff4749" origin="Generated by Gradle"/>
+ <artifact name="aaptcompiler-8.12.0.module">
+ <sha256 value="8bc6d12042e84a79903a42dee13195d18cb19e7441629406a83b04d4eb66a6d5" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.build" name="apksig" version="8.10.1">
- <artifact name="apksig-8.10.1.jar">
+ <component group="com.android.tools.build" name="apksig" version="8.12.0">
+ <artifact name="apksig-8.12.0.jar">
<sha256 value="c070ed1394629d74641aa0906f60b2ffa1ee77e6366a1f93437f59717b1aeb89" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.build" name="apkzlib" version="8.10.1">
- <artifact name="apkzlib-8.10.1.jar">
+ <component group="com.android.tools.build" name="apkzlib" version="8.12.0">
+ <artifact name="apkzlib-8.12.0.jar">
<sha256 value="29091c9457252f997ddfeafb33dd65a373ad45840128f945832d8eafd9118561" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.build" name="builder" version="8.10.1">
- <artifact name="builder-8.10.1.jar">
- <sha256 value="b15ca05ef1d85fb2d69a7dae912ab93548b1cb6d7d1f190626a235694fa77bb4" origin="Generated by Gradle"/>
+ <component group="com.android.tools.build" name="builder" version="8.12.0">
+ <artifact name="builder-8.12.0.jar">
+ <sha256 value="2763db5ef7236c7109412b125610bc9120ac1a59e2ea4c04746f0299284ed663" origin="Generated by Gradle"/>
</artifact>
- <artifact name="builder-8.10.1.module">
- <sha256 value="6eb90ed4dae720c7be564c51073647eaf465dcdb8af699fa6b224cba305a8d5a" origin="Generated by Gradle"/>
+ <artifact name="builder-8.12.0.module">
+ <sha256 value="0a994df7fbfb97768ba28b83f7aec85da213fbf10443179953d481bb662e4f03" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.build" name="builder-model" version="8.10.1">
- <artifact name="builder-model-8.10.1.jar">
- <sha256 value="2076975e6ef3c326438470f00ac63b93a6862d1b602c4eda114a0b834adf77fc" origin="Generated by Gradle"/>
+ <component group="com.android.tools.build" name="builder-model" version="8.12.0">
+ <artifact name="builder-model-8.12.0.jar">
+ <sha256 value="8ce2639ad50f988621730f8716680aac95c9b10042693b29288d61f41138aeaf" origin="Generated by Gradle"/>
</artifact>
- <artifact name="builder-model-8.10.1.module">
- <sha256 value="b042583e585f1aec4ae696d0c5a56588c00082377f6ce5fd07a06483b0bfc77c" origin="Generated by Gradle"/>
+ <artifact name="builder-model-8.12.0.module">
+ <sha256 value="b296393c8d58d27166b5297092f23678fe23837a3dca6a917365d9fb45e533cd" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.build" name="builder-test-api" version="8.10.1">
- <artifact name="builder-test-api-8.10.1.jar">
- <sha256 value="78c14054016afd5df7fd597734319cef58fd23974ad14a44ec7bf97a4b2358b2" origin="Generated by Gradle"/>
+ <component group="com.android.tools.build" name="builder-test-api" version="8.12.0">
+ <artifact name="builder-test-api-8.12.0.jar">
+ <sha256 value="764987a36f487abde16e6e7f52c09a89556451e25ff7ac6877ec07710648b9cb" origin="Generated by Gradle"/>
</artifact>
- <artifact name="builder-test-api-8.10.1.module">
- <sha256 value="dbc8398910e3e542b3b64cf4103858d2c1bbb2efbfb8472f7a18fd14cb0c99bf" origin="Generated by Gradle"/>
+ <artifact name="builder-test-api-8.12.0.module">
+ <sha256 value="2ab93cfca82d383cc31239731c035a73db12971ca97cc29f35f47e32a52c410f" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.build" name="bundletool" version="1.18.0">
- <artifact name="bundletool-1.18.0.jar">
- <sha256 value="b07f346383bac7d5ddbba2794ddc770565a83ae691d80332264d42dd9bfb4507" origin="Generated by Gradle"/>
+ <component group="com.android.tools.build" name="bundletool" version="1.18.1">
+ <artifact name="bundletool-1.18.1.jar">
+ <sha256 value="a73341a7945abcb0e6b8971c7b1b2801bd765006447ca0d2437a4260d572ceac" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.build" name="gradle" version="8.10.1">
- <artifact name="gradle-8.10.1.jar">
- <sha256 value="a0fe22ce029c548335a75913f7ad517c827c567b8abb84047102034255ae1173" origin="Generated by Gradle"/>
+ <component group="com.android.tools.build" name="gradle" version="8.12.0">
+ <artifact name="gradle-8.12.0.jar">
+ <sha256 value="ac19aabdfb6736ed49697e107ba0d824c6f5078e203f2bce911e8a6bba6d91cb" origin="Generated by Gradle"/>
</artifact>
- <artifact name="gradle-8.10.1.module">
- <sha256 value="1192a28ba81bcc9f8d76f1e2f63469fc3dd569f54c50bd55f419daf837a1c80e" origin="Generated by Gradle"/>
+ <artifact name="gradle-8.12.0.module">
+ <sha256 value="0c8d512efd83d45a2b54f3a0241183ac874a02b57824d0e510686ea49387c0a3" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.build" name="gradle-api" version="8.10.1">
- <artifact name="gradle-api-8.10.1.jar">
- <sha256 value="0fa8ee4ec69b7277f69e9261a271d9b63ed13924ae3c85b86058e83feb77f160" origin="Generated by Gradle"/>
+ <component group="com.android.tools.build" name="gradle-api" version="8.12.0">
+ <artifact name="gradle-api-8.12.0.jar">
+ <sha256 value="173b9ff416c4b090507b706b90d7589f5445dc1cf8e2a09939f421690649826a" origin="Generated by Gradle"/>
</artifact>
- <artifact name="gradle-api-8.10.1.module">
- <sha256 value="202f5f3849dc744433f48315c38e55fe4d7c45137b982868b6a21e8d5991e4b6" origin="Generated by Gradle"/>
+ <artifact name="gradle-api-8.12.0.module">
+ <sha256 value="ed2bd60860e6b5c44deae619677c3114a5d8e96e9ffd27510fd9f3f9dbc49a1b" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.build" name="gradle-settings-api" version="8.10.1">
- <artifact name="gradle-settings-api-8.10.1.jar">
- <sha256 value="324226a42e6802566a3a00d02353a06cf77b1d34d55f90532fa664db95be7af7" origin="Generated by Gradle"/>
+ <component group="com.android.tools.build" name="gradle-settings-api" version="8.12.0">
+ <artifact name="gradle-settings-api-8.12.0.jar">
+ <sha256 value="0b1f3b04ebd7b17d87e893bcda1e579acf3837215eecc28c91da331c6cc6189d" origin="Generated by Gradle"/>
</artifact>
- <artifact name="gradle-settings-api-8.10.1.module">
- <sha256 value="941386e69d9addfc5820e24c1a56f66217b1c5acdd7a555539d9ac364369b85f" origin="Generated by Gradle"/>
+ <artifact name="gradle-settings-api-8.12.0.module">
+ <sha256 value="420182b89a1120333f275c25cf78d8734fcb05fc3865d061c27efa709f212e12" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.build" name="manifest-merger" version="31.10.1">
- <artifact name="manifest-merger-31.10.1.jar">
- <sha256 value="e10ecb16187c2e8a4a65b1211b9ef2adee0b54efcf361687235eb2e860201f07" origin="Generated by Gradle"/>
+ <component group="com.android.tools.build" name="manifest-merger" version="31.12.0">
+ <artifact name="manifest-merger-31.12.0.jar">
+ <sha256 value="6b74646138f4ba373faf458a93e0000c2f5389059d1abb13d0be959531ea0579" origin="Generated by Gradle"/>
</artifact>
- <artifact name="manifest-merger-31.10.1.module">
- <sha256 value="966dd4f293a4c68960d1eb2e81f340c87053d10f4950246dc76008e67516c7c2" origin="Generated by Gradle"/>
+ <artifact name="manifest-merger-31.12.0.module">
+ <sha256 value="72b2be9ddad992e7e312fbfffd21edd07bb5f8fb57e199a5352a350c59653670" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.android.tools.build" name="transform-api" version="2.0.0-deprecated-use-gradle-api">
@@ -2858,198 +2858,198 @@
<sha256 value="36c25576b19993df360170528cc62b7246c37776d6158154a67cdf8fc2d58e13" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.ddms" name="ddmlib" version="31.10.1">
- <artifact name="ddmlib-31.10.1.jar">
- <sha256 value="387ce86bcc1292f661d7eff1c2d661a00615c58515ded87c679cb8b78b2e7331" origin="Generated by Gradle"/>
+ <component group="com.android.tools.ddms" name="ddmlib" version="31.12.0">
+ <artifact name="ddmlib-31.12.0.jar">
+ <sha256 value="839957f961100713ea0eed628a8684cc39aa479631c36249793e6df7e0cd63d8" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.emulator" name="proto" version="31.10.1">
- <artifact name="proto-31.10.1.jar">
- <sha256 value="4087c62ad9191331d1f342d2a0b5d8bd9bb42bd325e397f6b7e5c63698bd35ad" origin="Generated by Gradle"/>
+ <component group="com.android.tools.emulator" name="proto" version="31.12.0">
+ <artifact name="proto-31.12.0.jar">
+ <sha256 value="b77f81cc0751d79393ec4b2eb046f910d21abcd7608b5b0f5a1efea1b3243b48" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.external.com-intellij" name="intellij-core" version="31.10.1">
- <artifact name="intellij-core-31.10.1.jar">
- <sha256 value="8362004b686681cdc2b022ee1c86d2582c95c2f7a988b21ee5facc4a979312ca" origin="Generated by Gradle"/>
+ <component group="com.android.tools.external.com-intellij" name="intellij-core" version="31.12.0">
+ <artifact name="intellij-core-31.12.0.jar">
+ <sha256 value="9a6faa6061d0f3d54a64decb61944c1b2c6927f8d325cd298c82c2a8d867ee68" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.external.com-intellij" name="kotlin-compiler" version="31.10.1">
- <artifact name="kotlin-compiler-31.10.1.jar">
- <sha256 value="c4f8507055c02c367dbeefee4faf1e6b3148a5b543643ed1f22b228439bcbf1e" origin="Generated by Gradle"/>
+ <component group="com.android.tools.external.com-intellij" name="kotlin-compiler" version="31.12.0">
+ <artifact name="kotlin-compiler-31.12.0.jar">
+ <sha256 value="b24d171f6ccaeaba526d7de6d9f94149ee12bad9a48098c558d1f47dfd3e0bb5" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.external.org-jetbrains" name="uast" version="31.10.1">
- <artifact name="uast-31.10.1.jar">
- <sha256 value="aecca3539be9f07233e23b2cf52168d1145953a684c2290111a22e628d30e01f" origin="Generated by Gradle"/>
+ <component group="com.android.tools.external.org-jetbrains" name="uast" version="31.12.0">
+ <artifact name="uast-31.12.0.jar">
+ <sha256 value="f4d8e5995024af384a49b430903c8e8041b334ca880b8a80cf5f5f82d21d0c1b" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.layoutlib" name="layoutlib-api" version="31.10.1">
- <artifact name="layoutlib-api-31.10.1.jar">
- <sha256 value="9b3c87ef6d48cde7188207df085cf7448561f575b788cb4a7addb94d255101a6" origin="Generated by Gradle"/>
+ <component group="com.android.tools.layoutlib" name="layoutlib-api" version="31.12.0">
+ <artifact name="layoutlib-api-31.12.0.jar">
+ <sha256 value="d06bc650247632a4a4e6596b87312019f45e900267c5476c47a5bfa6e3fd3132" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.lint" name="lint" version="31.10.1">
- <artifact name="lint-31.10.1.jar">
- <sha256 value="17f891db6b9d045027093729336bfca342a81ce723eb3a7e3fee2fbb575c08e1" origin="Generated by Gradle"/>
+ <component group="com.android.tools.lint" name="lint" version="31.12.0">
+ <artifact name="lint-31.12.0.jar">
+ <sha256 value="d35dfcac3618f4c775d3cd028761e5ef4ed4055d0667ba07c24801cee26c7025" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.lint" name="lint-api" version="31.10.1">
- <artifact name="lint-api-31.10.1.jar">
- <sha256 value="6fee4bfdfd3cf049190eb2102d991d623f5d0c9e21e4bb54449ac518c7525487" origin="Generated by Gradle"/>
+ <component group="com.android.tools.lint" name="lint-api" version="31.12.0">
+ <artifact name="lint-api-31.12.0.jar">
+ <sha256 value="d2539063a87a633c2a569b9c6dcb5e6f9a520c73c7f115b2c1fed91d15ae15a7" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.lint" name="lint-checks" version="31.10.1">
- <artifact name="lint-checks-31.10.1.jar">
- <sha256 value="f423113bbcb49449786b6fb821f3769e751c0964dc7e8680accd88c3a1efc102" origin="Generated by Gradle"/>
+ <component group="com.android.tools.lint" name="lint-checks" version="31.12.0">
+ <artifact name="lint-checks-31.12.0.jar">
+ <sha256 value="424c6328cdb079574657f86b15d70fb43252c6a5e1f7905ae0f5ffbc4900bcf3" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.lint" name="lint-gradle" version="31.10.1">
- <artifact name="lint-gradle-31.10.1.jar">
+ <component group="com.android.tools.lint" name="lint-gradle" version="31.12.0">
+ <artifact name="lint-gradle-31.12.0.jar">
<sha256 value="a42b6a41c436d90ca31a13d67afba1157b157efc892a7496f67432bf8a831cbd" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.lint" name="lint-model" version="31.10.1">
- <artifact name="lint-model-31.10.1.jar">
- <sha256 value="13303db0817e155a9e51f27ab4c805a0ca96f11acf86093df42b0880847cd313" origin="Generated by Gradle"/>
+ <component group="com.android.tools.lint" name="lint-model" version="31.12.0">
+ <artifact name="lint-model-31.12.0.jar">
+ <sha256 value="84364a9bf0f234541d668d42318221516fd3a7273425bee2ee1bb3674c8e7723" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.lint" name="lint-typedef-remover" version="31.10.1">
- <artifact name="lint-typedef-remover-31.10.1.jar">
+ <component group="com.android.tools.lint" name="lint-typedef-remover" version="31.12.0">
+ <artifact name="lint-typedef-remover-31.12.0.jar">
<sha256 value="4a3ba3babfd79e6fc67bcef647fb4ecfeaf59b481b108f7c2eba4d1c5c6dea8e" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.utp" name="android-device-provider-ddmlib" version="31.10.1">
- <artifact name="android-device-provider-ddmlib-31.10.1.jar">
- <sha256 value="72fb25d41cbd0627cdb39a0e757a455955aecf0aed8516074c0eab02040ce68d" origin="Generated by Gradle"/>
+ <component group="com.android.tools.utp" name="android-device-provider-ddmlib" version="31.12.0">
+ <artifact name="android-device-provider-ddmlib-31.12.0.jar">
+ <sha256 value="59be43b2d4d276d359262123e1816dae5c31513c38b2308a149e4a3ce3966163" origin="Generated by Gradle"/>
</artifact>
- <artifact name="android-device-provider-ddmlib-31.10.1.module">
- <sha256 value="febbe703853fbf62f1a65d0446920d0ff57aae8dc498a82b03f6081c7cc4de92" origin="Generated by Gradle"/>
+ <artifact name="android-device-provider-ddmlib-31.12.0.module">
+ <sha256 value="98ef69d3972fd054daaad138a198af37f0c47f21c50d8034dc8a5eb491bf5c06" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.utp" name="android-device-provider-ddmlib-proto" version="31.10.1">
- <artifact name="android-device-provider-ddmlib-proto-31.10.1.jar">
+ <component group="com.android.tools.utp" name="android-device-provider-ddmlib-proto" version="31.12.0">
+ <artifact name="android-device-provider-ddmlib-proto-31.12.0.jar">
<sha256 value="047aecdd66e106137f77a52c442f1b83db7d6e8496899800251f206c7f39de65" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.utp" name="android-device-provider-gradle" version="31.10.1">
- <artifact name="android-device-provider-gradle-31.10.1.jar">
- <sha256 value="635a68514a81b293285bb8e18d8ba18c508ead62346bdf8068bbabd3aab5b8a0" origin="Generated by Gradle"/>
+ <component group="com.android.tools.utp" name="android-device-provider-gradle" version="31.12.0">
+ <artifact name="android-device-provider-gradle-31.12.0.jar">
+ <sha256 value="ac4ecb7060149a485f83c85a4d639f3688e1838d1d6939557cbe85b621c378fe" origin="Generated by Gradle"/>
</artifact>
- <artifact name="android-device-provider-gradle-31.10.1.module">
- <sha256 value="eceeba1e7ed7ff040e12acb754636cdf0b3685f0c6585c348c33cb8dee1c5a1d" origin="Generated by Gradle"/>
+ <artifact name="android-device-provider-gradle-31.12.0.module">
+ <sha256 value="0ab779334af2ee90473ab06f564e35cf3a4ed94cd2b42bbddfde574d66ada315" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.utp" name="android-device-provider-gradle-proto" version="31.10.1">
- <artifact name="android-device-provider-gradle-proto-31.10.1.jar">
+ <component group="com.android.tools.utp" name="android-device-provider-gradle-proto" version="31.12.0">
+ <artifact name="android-device-provider-gradle-proto-31.12.0.jar">
<sha256 value="65a8291604bfde1f6f75ca8532a381439ec81fd958f32782ab0047fb61d9a7a1" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.utp" name="android-device-provider-profile" version="31.10.1">
- <artifact name="android-device-provider-profile-31.10.1.jar">
- <sha256 value="cf6e8ae7b6236fa2c8e20f8d543aee62270d685bce65c270b8073b0853c3b2a5" origin="Generated by Gradle"/>
+ <component group="com.android.tools.utp" name="android-device-provider-profile" version="31.12.0">
+ <artifact name="android-device-provider-profile-31.12.0.jar">
+ <sha256 value="205b654ca09a7242158ddf15cb4789e9c094647e11bc3d59d52a909417c07874" origin="Generated by Gradle"/>
</artifact>
- <artifact name="android-device-provider-profile-31.10.1.module">
- <sha256 value="0eb6aba0d3aab3628dcad127dbb2a685bd7417756aa135eb6f78e4aa8f6c87bf" origin="Generated by Gradle"/>
+ <artifact name="android-device-provider-profile-31.12.0.module">
+ <sha256 value="c308db31b8df5a4c49896c97785191c343525382f32b545bc213f05e9f44b37e" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.utp" name="android-device-provider-profile-proto" version="31.10.1">
- <artifact name="android-device-provider-profile-proto-31.10.1.jar">
+ <component group="com.android.tools.utp" name="android-device-provider-profile-proto" version="31.12.0">
+ <artifact name="android-device-provider-profile-proto-31.12.0.jar">
<sha256 value="3e7b098f6e3ecae31b6f7909c343b4ec09aa18d8a89f41bf92077ba4b056f453" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.utp" name="android-test-plugin-host-additional-test-output" version="31.10.1">
- <artifact name="android-test-plugin-host-additional-test-output-31.10.1.jar">
- <sha256 value="6a09edba7df9a254207f5106e105a64929340962a36e31da9666ba52924e9696" origin="Generated by Gradle"/>
+ <component group="com.android.tools.utp" name="android-test-plugin-host-additional-test-output" version="31.12.0">
+ <artifact name="android-test-plugin-host-additional-test-output-31.12.0.jar">
+ <sha256 value="ec00a159a9ac27ab1a85db5e85cd6255c4676435f8b659271ff4ca3fe29afa8a" origin="Generated by Gradle"/>
</artifact>
- <artifact name="android-test-plugin-host-additional-test-output-31.10.1.module">
- <sha256 value="8e41a386394244a13e472cac58261d86cf5e0cfc837878495256431c6e67d9f6" origin="Generated by Gradle"/>
+ <artifact name="android-test-plugin-host-additional-test-output-31.12.0.module">
+ <sha256 value="1a64050364ef9179c7a919af573f30b8f66619387bada77a9bd9036b9385f876" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.utp" name="android-test-plugin-host-additional-test-output-proto" version="31.10.1">
- <artifact name="android-test-plugin-host-additional-test-output-proto-31.10.1.jar">
+ <component group="com.android.tools.utp" name="android-test-plugin-host-additional-test-output-proto" version="31.12.0">
+ <artifact name="android-test-plugin-host-additional-test-output-proto-31.12.0.jar">
<sha256 value="6ba7e6ac2208d74c1bb5f1d1464abafc6a45d8710b20455a2dc02adf8726bc83" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.utp" name="android-test-plugin-host-apk-installer" version="31.10.1">
- <artifact name="android-test-plugin-host-apk-installer-31.10.1.jar">
- <sha256 value="aff4020f359c27947fd5e8d686b3c482b791c2b9be4bf1c9d56cddc50d042cf3" origin="Generated by Gradle"/>
+ <component group="com.android.tools.utp" name="android-test-plugin-host-apk-installer" version="31.12.0">
+ <artifact name="android-test-plugin-host-apk-installer-31.12.0.jar">
+ <sha256 value="97b7273d0c33a56fc6838f3210f673c0837bd7b4806ec37aa05436a0cde90a67" origin="Generated by Gradle"/>
</artifact>
- <artifact name="android-test-plugin-host-apk-installer-31.10.1.module">
- <sha256 value="d2a54302c7d3df5fd7c48a1e2d266b7fdf98e618717d2f8fcb3daa9dd7e3129a" origin="Generated by Gradle"/>
+ <artifact name="android-test-plugin-host-apk-installer-31.12.0.module">
+ <sha256 value="3aeaafe5cdbcf474c928b850d5cf033dbb13faea3165bac6058ebe4572c60b17" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.utp" name="android-test-plugin-host-apk-installer-proto" version="31.10.1">
- <artifact name="android-test-plugin-host-apk-installer-proto-31.10.1.jar">
- <sha256 value="45705d61b21006e8533e6cf8ab7958a7de6decace68ed6c09db8ade1216d859c" origin="Generated by Gradle"/>
+ <component group="com.android.tools.utp" name="android-test-plugin-host-apk-installer-proto" version="31.12.0">
+ <artifact name="android-test-plugin-host-apk-installer-proto-31.12.0.jar">
+ <sha256 value="4f2b610542e91a35a396b04368a784036e42b8787021460550b9a3495bb8245b" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.utp" name="android-test-plugin-host-coverage" version="31.10.1">
- <artifact name="android-test-plugin-host-coverage-31.10.1.jar">
- <sha256 value="a2785a8c8eca4b54c7c64f135c414b80b540264c26c68cba5851f3712e41eabe" origin="Generated by Gradle"/>
+ <component group="com.android.tools.utp" name="android-test-plugin-host-coverage" version="31.12.0">
+ <artifact name="android-test-plugin-host-coverage-31.12.0.jar">
+ <sha256 value="0b32811cab7621efec91ebb1ef7b16d3d9479bb9d18cdee34075913822e1229f" origin="Generated by Gradle"/>
</artifact>
- <artifact name="android-test-plugin-host-coverage-31.10.1.module">
- <sha256 value="116888a01df446d1ede49c783b2b1eb47de2b050e968f4934f3781ba9e25fad7" origin="Generated by Gradle"/>
+ <artifact name="android-test-plugin-host-coverage-31.12.0.module">
+ <sha256 value="07a597a45d5738f3b1694769abff9b2bb6d59b9354876a2af9e86bf8c5f90bbe" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.utp" name="android-test-plugin-host-coverage-proto" version="31.10.1">
- <artifact name="android-test-plugin-host-coverage-proto-31.10.1.jar">
+ <component group="com.android.tools.utp" name="android-test-plugin-host-coverage-proto" version="31.12.0">
+ <artifact name="android-test-plugin-host-coverage-proto-31.12.0.jar">
<sha256 value="fa86719a3dc5de465f7e0c023184414c27f8fd53a34fd557289c0bf6df340244" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.utp" name="android-test-plugin-host-device-info" version="31.10.1">
- <artifact name="android-test-plugin-host-device-info-31.10.1.jar">
- <sha256 value="aa770d3fec320f8f10fa95eb9f150e5b235e43ac78127a2c8a281266f25e8158" origin="Generated by Gradle"/>
+ <component group="com.android.tools.utp" name="android-test-plugin-host-device-info" version="31.12.0">
+ <artifact name="android-test-plugin-host-device-info-31.12.0.jar">
+ <sha256 value="3ea42fc0ab9493215ba54c044b08743f1bb15a934e91dcde0182aed6c1fc5e09" origin="Generated by Gradle"/>
</artifact>
- <artifact name="android-test-plugin-host-device-info-31.10.1.module">
- <sha256 value="1705130a140fa9e4c503d121b6cadb1c33561d7ba32d556461af538f0cf6852b" origin="Generated by Gradle"/>
+ <artifact name="android-test-plugin-host-device-info-31.12.0.module">
+ <sha256 value="ce387d5453b9a5d27cd6ba5c7eba15a90e4c76b95c6014f6d69973b21822ed38" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.utp" name="android-test-plugin-host-device-info-proto" version="31.10.1">
- <artifact name="android-test-plugin-host-device-info-proto-31.10.1.jar">
+ <component group="com.android.tools.utp" name="android-test-plugin-host-device-info-proto" version="31.12.0">
+ <artifact name="android-test-plugin-host-device-info-proto-31.12.0.jar">
<sha256 value="9683ac7648a7a41be9a1349f6981592944f627164898c3c8925a0beede8bb8bb" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.utp" name="android-test-plugin-host-emulator-control" version="31.10.1">
- <artifact name="android-test-plugin-host-emulator-control-31.10.1.jar">
- <sha256 value="492987c14f64d70d45cb76495d4fff72bf98623e7811a714ffa75bccf8e5713a" origin="Generated by Gradle"/>
+ <component group="com.android.tools.utp" name="android-test-plugin-host-emulator-control" version="31.12.0">
+ <artifact name="android-test-plugin-host-emulator-control-31.12.0.jar">
+ <sha256 value="f7b76b96fa502c57cf7758a939fdf0195d88074f7d667ba58ce88debec1fa57d" origin="Generated by Gradle"/>
</artifact>
- <artifact name="android-test-plugin-host-emulator-control-31.10.1.module">
- <sha256 value="cb9de8a16eca279496336e55fa8ceae2c4f042866d7fc4880a9db40ad520b04e" origin="Generated by Gradle"/>
+ <artifact name="android-test-plugin-host-emulator-control-31.12.0.module">
+ <sha256 value="da84ebd310de9a734f3462b3b2eeafaa79c59319c64e10fd14f9ac4658c22eef" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.utp" name="android-test-plugin-host-emulator-control-proto" version="31.10.1">
- <artifact name="android-test-plugin-host-emulator-control-proto-31.10.1.jar">
+ <component group="com.android.tools.utp" name="android-test-plugin-host-emulator-control-proto" version="31.12.0">
+ <artifact name="android-test-plugin-host-emulator-control-proto-31.12.0.jar">
<sha256 value="a4f34aae0f9ffa026dbf7151436dd7ae53becb72622b40f2c479cac8943d9319" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.utp" name="android-test-plugin-host-logcat" version="31.10.1">
- <artifact name="android-test-plugin-host-logcat-31.10.1.jar">
- <sha256 value="d9dcbc61d333a445284977907092b35aa672d56e74ea5e5e9ca1f3d1572e6e8f" origin="Generated by Gradle"/>
+ <component group="com.android.tools.utp" name="android-test-plugin-host-logcat" version="31.12.0">
+ <artifact name="android-test-plugin-host-logcat-31.12.0.jar">
+ <sha256 value="cf8998dacecfb826877319cfcdbdee5ef957d8f74d88b60d5d02bd5e500ad21f" origin="Generated by Gradle"/>
</artifact>
- <artifact name="android-test-plugin-host-logcat-31.10.1.module">
- <sha256 value="c0fc7bca227238fee50a48136c25f1553da8eb3261de2331391bae6874773ceb" origin="Generated by Gradle"/>
+ <artifact name="android-test-plugin-host-logcat-31.12.0.module">
+ <sha256 value="ca24389e553ea2d5cc7eaeca1cd69f0ed2f58bedc638fea83348f210f3d1fcf1" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.utp" name="android-test-plugin-host-logcat-proto" version="31.10.1">
- <artifact name="android-test-plugin-host-logcat-proto-31.10.1.jar">
+ <component group="com.android.tools.utp" name="android-test-plugin-host-logcat-proto" version="31.12.0">
+ <artifact name="android-test-plugin-host-logcat-proto-31.12.0.jar">
<sha256 value="c1f6ebbacdad559b6efe4eaa29561552b33156395f069cd9703fda09c462dea6" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.utp" name="android-test-plugin-result-listener-gradle" version="31.10.1">
- <artifact name="android-test-plugin-result-listener-gradle-31.10.1.jar">
- <sha256 value="91ca6132dc30ea8d921c1ca1d68a0005d2dfd62ef9298bea95f98a2f62f13a40" origin="Generated by Gradle"/>
+ <component group="com.android.tools.utp" name="android-test-plugin-result-listener-gradle" version="31.12.0">
+ <artifact name="android-test-plugin-result-listener-gradle-31.12.0.jar">
+ <sha256 value="fa6cc45df88e120b7e53f53ffec02057df4595b56a8a51303f31a5d79fefe557" origin="Generated by Gradle"/>
</artifact>
- <artifact name="android-test-plugin-result-listener-gradle-31.10.1.module">
- <sha256 value="5bd92c60648d97008e3e7bbbd8874b213cfe04afd81926358c0ab535a505711c" origin="Generated by Gradle"/>
+ <artifact name="android-test-plugin-result-listener-gradle-31.12.0.module">
+ <sha256 value="a0744bb28ca78c5005a48a828fdc43c172dba82e0b73fd40274a70dd4291f91f" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.utp" name="android-test-plugin-result-listener-gradle-proto" version="31.10.1">
- <artifact name="android-test-plugin-result-listener-gradle-proto-31.10.1.jar">
+ <component group="com.android.tools.utp" name="android-test-plugin-result-listener-gradle-proto" version="31.12.0">
+ <artifact name="android-test-plugin-result-listener-gradle-proto-31.12.0.jar">
<sha256 value="d429b9312dffa0503381d1ee1b18a999bd901e7456612b2fb48c6a5d5a2caf88" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.android.tools.utp" name="utp-common" version="31.10.1">
- <artifact name="utp-common-31.10.1.jar">
+ <component group="com.android.tools.utp" name="utp-common" version="31.12.0">
+ <artifact name="utp-common-31.12.0.jar">
<sha256 value="cde678a64b13041cdd2cc9dad1685990a1d090fb04ff5da2261ff75a83598106" origin="Generated by Gradle"/>
</artifact>
</component>
@@ -6011,11 +6011,6 @@
<sha256 value="3ad2fcad0c09ddc0922debab4444d612144b7b465b75a8bb7587e20ddfafd799" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="org.jetbrains.kotlin" name="kotlin-reflect" version="2.1.0">
- <artifact name="kotlin-reflect-2.1.0.jar">
- <sha256 value="b5f608edfa98a8cfa2372cc12d18ada974be1c56c1093eff06cc061f4fc088b2" origin="Generated by Gradle"/>
- </artifact>
- </component>
<component group="org.jetbrains.kotlin" name="kotlin-reflect" version="2.1.20">
<artifact name="kotlin-reflect-2.1.20.jar">
<sha256 value="419778f2b7a826bad6ee2ca1e4bdebe639ab306d2904fa3ef2a308ecfaab3811" origin="Generated by Gradle"/>
@@ -6138,14 +6133,6 @@
<sha256 value="81fd6d181012487ee3246eff4e2bacb64b58c46e5b5aa72971a4ddf1bd1541ed" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="org.jetbrains.kotlin" name="kotlin-stdlib" version="2.1.0">
- <artifact name="kotlin-stdlib-2.1.0.jar">
- <sha256 value="d6f91b7b0f306cca299fec74fb7c34e4874d6f5ec5b925a0b4de21901e119c3f" origin="Generated by Gradle"/>
- </artifact>
- <artifact name="kotlin-stdlib-2.1.0.module">
- <sha256 value="dcfbc8e8bf32cd67a7efadd91d31152bce9870911d6ec50878f4fdb6e03e70e2" origin="Generated by Gradle"/>
- </artifact>
- </component>
<component group="org.jetbrains.kotlin" name="kotlin-stdlib" version="2.1.20">
<artifact name="kotlin-stdlib-2.1.20-all.jar">
<sha256 value="81e07de34e84b29e14f3fdef902f4bc4cf1d5da959b867df683fbe1cc54ce1e1" origin="Generated by Gradle"/>
@@ -6206,11 +6193,6 @@
<sha256 value="6f5df8af633600a6b9cfb0fcc764af3d5119f376677677b91b6aee816b1d30ab" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="org.jetbrains.kotlin" name="kotlin-stdlib-common" version="2.1.0">
- <artifact name="kotlin-stdlib-common-2.1.0.module">
- <sha256 value="2b9a5ae785f8513a93f8cec3f6e5e07f8b1766f8497b3a487f3441a251d67563" origin="Generated by Gradle"/>
- </artifact>
- </component>
<component group="org.jetbrains.kotlin" name="kotlin-stdlib-common" version="2.1.20">
<artifact name="kotlin-stdlib-common-2.1.20.module">
<sha256 value="94d0ad2b2319b85c40351cf9ee7077da12dd3850392e6cf10a3fe8159fbc73f7" origin="Generated by Gradle"/>
@@ -6241,16 +6223,16 @@
<sha256 value="712f480760edeee48a84369e6be89f6ab52375408bb2ca3be14ef663f72bee31" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk7" version="2.1.0">
- <artifact name="kotlin-stdlib-jdk7-2.1.0.jar">
- <sha256 value="fdea6c4203724f42e8e64bef2f0bf79129ccd1df1edf1ccffdc22de7df498c76" origin="Generated by Gradle"/>
- </artifact>
- </component>
<component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk7" version="2.1.10">
<artifact name="kotlin-stdlib-jdk7-2.1.10.jar">
<sha256 value="2f876fb35b73d9806ec8500703265abcbd5aa7c3c81f41a2ca54a855a8649b34" origin="Generated by Gradle"/>
</artifact>
</component>
+ <component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk7" version="2.1.20">
+ <artifact name="kotlin-stdlib-jdk7-2.1.20.jar">
+ <sha256 value="5343bf795783932e5fa538b0bca05af810bb07213edb9baa770c784068f57867" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
<component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk7" version="2.1.21">
<artifact name="kotlin-stdlib-jdk7-2.1.21.jar">
<sha256 value="966846172e1052cb5b34d7b34647a64799b33f6da816509f7825c56f55895234" origin="Generated by Gradle"/>
@@ -6276,16 +6258,16 @@
<sha256 value="15c8c0acb311483c068d1697501965474b70dfd80ac79580eca3a03cf51e4a1d" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk8" version="2.1.0">
- <artifact name="kotlin-stdlib-jdk8-2.1.0.jar">
- <sha256 value="238d3c7e492f119b50da1c22546dd762462e55f22409611f5e53dd77625cd544" origin="Generated by Gradle"/>
- </artifact>
- </component>
<component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk8" version="2.1.10">
<artifact name="kotlin-stdlib-jdk8-2.1.10.jar">
<sha256 value="b09260ea4828dc6cfc67d26127dace38ae2bbbe8a565d2d029725e81c2d258ec" origin="Generated by Gradle"/>
</artifact>
</component>
+ <component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk8" version="2.1.20">
+ <artifact name="kotlin-stdlib-jdk8-2.1.20.jar">
+ <sha256 value="ed22217b5dc0940a068d8be9440bbe2f7f9f51c466cdd1185e2385cdec19f238" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
<component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk8" version="2.1.21">
<artifact name="kotlin-stdlib-jdk8-2.1.21.jar">
<sha256 value="87b4f956de27401446227e474ac7a31acff0d0a8087160c54288c1e6f46a67e6" origin="Generated by Gradle"/>
@@ -6552,6 +6534,14 @@
<sha256 value="09b81c9d11c2deebf133ad87b707927c1f04099cb611ef008c7725b3eb308329" origin="Generated by Gradle"/>
</artifact>
</component>
+ <component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-core-jvm" version="1.9.0">
+ <artifact name="kotlinx-coroutines-core-jvm-1.9.0.jar">
+ <sha256 value="ad89c2892235e670f222d819cb3d81188143cb19a05b59df9889ae4269f5c70a" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="kotlinx-coroutines-core-jvm-1.9.0.module">
+ <sha256 value="b321a899e40d3ce345707aa2cfda9983ad0dcc69fea74a9b8bf906a16c1cf8a9" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
<component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-slf4j" version="1.10.2">
<artifact name="kotlinx-coroutines-slf4j-1.10.2.jar">
<sha256 value="d65dee3cafa6f7bfaefedb493fc68b5c63abe750734fb8af92fac7a0d3101457" origin="Generated by Gradle"/>