diff options
| author | Albin <albin@mullvad.net> | 2024-02-05 17:52:40 +0100 |
|---|---|---|
| committer | Albin <albin@mullvad.net> | 2024-02-05 17:52:40 +0100 |
| commit | d805c6e12522f3b5adaaac21626beae4ab8021d7 (patch) | |
| tree | f74203cf70bf23b59768d710749e8a400d8c667d /android | |
| parent | 8bdc0e8dcc52bf82c3e39903257d1b430dc6c2b9 (diff) | |
| parent | f7cb264dbfbc0356bc4426d17ce6eb045c122d81 (diff) | |
| download | mullvadvpn-d805c6e12522f3b5adaaac21626beae4ab8021d7.tar.xz mullvadvpn-d805c6e12522f3b5adaaac21626beae4ab8021d7.zip | |
Merge branch 'try-replacing-ktfmt-with-detekt-droid-559'
Diffstat (limited to 'android')
23 files changed, 1894 insertions, 51 deletions
diff --git a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/RedeemVoucherDialogTest.kt b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/RedeemVoucherDialogTest.kt index 9a2a9ce86d..44338c3989 100644 --- a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/RedeemVoucherDialogTest.kt +++ b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/RedeemVoucherDialogTest.kt @@ -149,7 +149,6 @@ class RedeemVoucherDialogTest { } companion object { - private const val REDEEM_BUTTON_TEXT = "Redeem" private const val CANCEL_BUTTON_TEXT = "Cancel" private const val GOT_IT_BUTTON_TEXT = "Got it!" private const val DUMMY_VOUCHER = "DUMMY____VOUCHER" diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SplitTunnelingCell.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SplitTunnelingCell.kt index adccf231a3..6ad5675a43 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SplitTunnelingCell.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SplitTunnelingCell.kt @@ -8,7 +8,12 @@ import androidx.compose.foundation.layout.size import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/FlowUtils.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/FlowUtils.kt index 39cee0342a..843c7c2930 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/FlowUtils.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/FlowUtils.kt @@ -1,3 +1,5 @@ +@file:Suppress("MagicNumber") + package net.mullvad.mullvadvpn.util import kotlinx.coroutines.Deferred diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/PackageManagerExtensions.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/PackageManagerExtensions.kt index ea8ce1f4e1..c5bf7965ca 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/PackageManagerExtensions.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/PackageManagerExtensions.kt @@ -7,12 +7,10 @@ import androidx.core.graphics.drawable.toBitmapOrNull fun PackageManager.getApplicationIconBitmapOrNull(packageName: String): Bitmap? = try { getApplicationIcon(packageName).toBitmapOrNull() - } catch (e: Exception) { + } catch (e: PackageManager.NameNotFoundException) { // Name not found is thrown if the application is not installed + null + } catch (e: IllegalArgumentException) { // IllegalArgumentException is thrown if the application has an invalid icon - when (e) { - is PackageManager.NameNotFoundException, - is IllegalArgumentException -> null - else -> throw e - } + null } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModel.kt index 7a7332eb2a..3e88ccc28a 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModel.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModel.kt @@ -5,6 +5,7 @@ import android.util.Log import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import java.net.InetAddress +import java.net.UnknownHostException import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.channels.BufferOverflow @@ -223,7 +224,7 @@ class VpnSettingsViewModel( private fun List<String>.asInetAddressList(): List<InetAddress> { return try { map { InetAddress.getByName(it) } - } catch (ex: Exception) { + } catch (ex: UnknownHostException) { Log.e("mullvad", "Error parsing the DNS address list.") emptyList() } diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ServiceConnectionDeviceDataSourceTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ServiceConnectionDeviceDataSourceTest.kt index d4fd349438..8f17f37bbd 100644 --- a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ServiceConnectionDeviceDataSourceTest.kt +++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ServiceConnectionDeviceDataSourceTest.kt @@ -13,7 +13,6 @@ import io.mockk.mockkObject import io.mockk.mockkStatic import io.mockk.unmockkAll import kotlin.reflect.KClass -import net.mullvad.mullvadvpn.lib.common.util.JobTracker import net.mullvad.mullvadvpn.lib.ipc.Event import net.mullvad.mullvadvpn.lib.ipc.EventDispatcher import net.mullvad.mullvadvpn.lib.ipc.Request @@ -22,8 +21,6 @@ import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test class ServiceConnectionDeviceDataSourceTest { - private val tracker = JobTracker() - @MockK private lateinit var mockedMainLooper: Looper @MockK private lateinit var mockedDispatchingHandler: EventDispatcher diff --git a/android/build.gradle.kts b/android/build.gradle.kts index 8f801b85a7..46573d80c2 100644 --- a/android/build.gradle.kts +++ b/android/build.gradle.kts @@ -1,9 +1,11 @@ import com.github.benmanes.gradle.versions.updates.DependencyUpdatesTask +import io.gitlab.arturbosch.detekt.Detekt plugins { id(Dependencies.Plugin.dependencyCheckId) version Versions.Plugin.dependencyCheck apply false id(Dependencies.Plugin.gradleVersionsId) version Versions.Plugin.gradleVersions id(Dependencies.Plugin.ktfmtId) version Versions.Plugin.ktfmt apply false + id(Dependencies.Plugin.detektId) version Versions.Plugin.detekt } buildscript { @@ -11,6 +13,7 @@ buildscript { google() mavenCentral() maven(Repositories.GradlePlugins) + gradlePluginPortal() } dependencies { @@ -27,6 +30,28 @@ buildscript { } } +val baselineFile = file("$rootDir/config/baseline.xml") +val configFile = files("$rootDir/config/detekt.yml") + +val projectSource = file(projectDir) +val buildFiles = "**/build/**" + +detekt { + buildUponDefaultConfig = true + allRules = false + config.setFrom(configFile) + source.setFrom(projectSource) + baseline = baselineFile + parallel = true + ignoreFailures = false + autoCorrect = true +} + +tasks.withType<Detekt>().configureEach { + // Ignore generated files from the build directory, e.g files created by ksp. + exclude(buildFiles) +} + allprojects { apply(plugin = Dependencies.Plugin.dependencyCheckId) apply(plugin = Dependencies.Plugin.ktfmtId) diff --git a/android/buildSrc/src/main/kotlin/Dependencies.kt b/android/buildSrc/src/main/kotlin/Dependencies.kt index 9893cadc16..055bf72d12 100644 --- a/android/buildSrc/src/main/kotlin/Dependencies.kt +++ b/android/buildSrc/src/main/kotlin/Dependencies.kt @@ -116,6 +116,7 @@ object Dependencies { const val dependencyCheck = "org.owasp:dependency-check-gradle:${Versions.Plugin.dependencyCheck}" const val dependencyCheckId = "org.owasp.dependencycheck" + const val detektId = "io.gitlab.arturbosch.detekt" const val gradleVersionsId = "com.github.ben-manes.versions" const val junit5 = "de.mannodermaus.android-junit5" const val kotlin = "org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlin}" diff --git a/android/buildSrc/src/main/kotlin/Extensions.kt b/android/buildSrc/src/main/kotlin/Extensions.kt index 0115aa9f30..b81a40537b 100644 --- a/android/buildSrc/src/main/kotlin/Extensions.kt +++ b/android/buildSrc/src/main/kotlin/Extensions.kt @@ -11,8 +11,8 @@ fun String.isNonStableVersion(): Boolean { return isNonStable } -fun DependencyHandler.`leakCanaryImplementation`(dependencyNotation: Any): Dependency? = +fun DependencyHandler.leakCanaryImplementation(dependencyNotation: Any): Dependency? = add("leakCanaryImplementation", dependencyNotation) -fun DependencyHandler.`playImplementation`(dependencyNotation: Any): Dependency? = +fun DependencyHandler.playImplementation(dependencyNotation: Any): Dependency? = add("playImplementation", dependencyNotation) diff --git a/android/buildSrc/src/main/kotlin/Versions.kt b/android/buildSrc/src/main/kotlin/Versions.kt index 58aa769cb7..3c2470b2d0 100644 --- a/android/buildSrc/src/main/kotlin/Versions.kt +++ b/android/buildSrc/src/main/kotlin/Versions.kt @@ -50,6 +50,7 @@ object Versions { const val androidAapt = "$android-10154469" const val playPublisher = "3.8.4" const val dependencyCheck = "8.3.1" + const val detekt = "1.23.4" const val gradleVersions = "0.47.0" const val junit5 = "1.10.0.0" const val ktfmt = "0.16.0" diff --git a/android/config/baseline.xml b/android/config/baseline.xml new file mode 100644 index 0000000000..cccc81b703 --- /dev/null +++ b/android/config/baseline.xml @@ -0,0 +1,616 @@ +<?xml version="1.0" ?> +<SmellBaseline> + <ManuallySuppressedIssues></ManuallySuppressedIssues> + <CurrentIssues> + <ID>ComplexCondition:TunnelStateNotification.kt$TunnelStateNotification$context.isNotificationPermissionMissing().not() && visible && (!reconnecting || !showingReconnecting)</ID> + <ID>ConstructorParameterNaming:AccessMethodKt.kt$AccessMethodKt.BridgesKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Bridges.Builder</ID> + <ID>ConstructorParameterNaming:AccessMethodKt.kt$AccessMethodKt.DirectKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Direct.Builder</ID> + <ID>ConstructorParameterNaming:AccessMethodKt.kt$AccessMethodKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Builder</ID> + <ID>ConstructorParameterNaming:AccessMethodKt.kt$AccessMethodKt.ShadowsocksKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Shadowsocks.Builder</ID> + <ID>ConstructorParameterNaming:AccessMethodKt.kt$AccessMethodKt.Socks5LocalKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Socks5Local.Builder</ID> + <ID>ConstructorParameterNaming:AccessMethodKt.kt$AccessMethodKt.Socks5RemoteKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Socks5Remote.Builder</ID> + <ID>ConstructorParameterNaming:AccessMethodKt.kt$AccessMethodKt.SocksAuthKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.SocksAuth.Builder</ID> + <ID>ConstructorParameterNaming:AccessMethodSettingKt.kt$AccessMethodSettingKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethodSetting.Builder</ID> + <ID>ConstructorParameterNaming:AccountAndDevice.kt$AccountAndDevice$val account_token: String</ID> + <ID>ConstructorParameterNaming:AccountAndDeviceKt.kt$AccountAndDeviceKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccountAndDevice.Builder</ID> + <ID>ConstructorParameterNaming:AccountDataKt.kt$AccountDataKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccountData.Builder</ID> + <ID>ConstructorParameterNaming:AccountHistoryKt.kt$AccountHistoryKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccountHistory.Builder</ID> + <ID>ConstructorParameterNaming:ApiAccessMethodSettingsKt.kt$ApiAccessMethodSettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ApiAccessMethodSettings.Builder</ID> + <ID>ConstructorParameterNaming:ApiAddressesKt.kt$ApiAddressesKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ApiAddresses.Builder</ID> + <ID>ConstructorParameterNaming:AppVersionInfoKt.kt$AppVersionInfoKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AppVersionInfo.Builder</ID> + <ID>ConstructorParameterNaming:BridgeEndpointDataKt.kt$BridgeEndpointDataKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.BridgeEndpointData.Builder</ID> + <ID>ConstructorParameterNaming:BridgeSettingsKt.kt$BridgeSettingsKt.BridgeConstraintsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.BridgeConstraints.Builder</ID> + <ID>ConstructorParameterNaming:BridgeSettingsKt.kt$BridgeSettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.Builder</ID> + <ID>ConstructorParameterNaming:BridgeSettingsKt.kt$BridgeSettingsKt.LocalProxySettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.LocalProxySettings.Builder</ID> + <ID>ConstructorParameterNaming:BridgeSettingsKt.kt$BridgeSettingsKt.RemoteProxyAuthKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.RemoteProxyAuth.Builder</ID> + <ID>ConstructorParameterNaming:BridgeSettingsKt.kt$BridgeSettingsKt.RemoteProxySettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.RemoteProxySettings.Builder</ID> + <ID>ConstructorParameterNaming:BridgeSettingsKt.kt$BridgeSettingsKt.ShadowsocksProxySettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.ShadowsocksProxySettings.Builder</ID> + <ID>ConstructorParameterNaming:BridgeStateKt.kt$BridgeStateKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.BridgeState.Builder</ID> + <ID>ConstructorParameterNaming:ConnectionConfigKt.kt$ConnectionConfigKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.Builder</ID> + <ID>ConstructorParameterNaming:ConnectionConfigKt.kt$ConnectionConfigKt.OpenvpnConfigKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.OpenvpnConfig.Builder</ID> + <ID>ConstructorParameterNaming:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.Builder</ID> + <ID>ConstructorParameterNaming:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.PeerConfigKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.PeerConfig.Builder</ID> + <ID>ConstructorParameterNaming:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.TunnelConfigKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.TunnelConfig.Builder</ID> + <ID>ConstructorParameterNaming:CustomDnsOptionsKt.kt$CustomDnsOptionsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.CustomDnsOptions.Builder</ID> + <ID>ConstructorParameterNaming:CustomListKt.kt$CustomListKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.CustomList.Builder</ID> + <ID>ConstructorParameterNaming:CustomListSettingsKt.kt$CustomListSettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.CustomListSettings.Builder</ID> + <ID>ConstructorParameterNaming:CustomRelaySettingsKt.kt$CustomRelaySettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.CustomRelaySettings.Builder</ID> + <ID>ConstructorParameterNaming:DaemonEventKt.kt$DaemonEventKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.DaemonEvent.Builder</ID> + <ID>ConstructorParameterNaming:DefaultDnsOptionsKt.kt$DefaultDnsOptionsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.DefaultDnsOptions.Builder</ID> + <ID>ConstructorParameterNaming:DeviceEventKt.kt$DeviceEventKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.DeviceEvent.Builder</ID> + <ID>ConstructorParameterNaming:DeviceKt.kt$DeviceKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.Device.Builder</ID> + <ID>ConstructorParameterNaming:DeviceListKt.kt$DeviceListKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.DeviceList.Builder</ID> + <ID>ConstructorParameterNaming:DeviceRemovalKt.kt$DeviceRemovalKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.DeviceRemoval.Builder</ID> + <ID>ConstructorParameterNaming:DeviceStateKt.kt$DeviceStateKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.DeviceState.Builder</ID> + <ID>ConstructorParameterNaming:DnsOptionsKt.kt$DnsOptionsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.DnsOptions.Builder</ID> + <ID>ConstructorParameterNaming:EndpointKt.kt$EndpointKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.Endpoint.Builder</ID> + <ID>ConstructorParameterNaming:ErrorStateKt.kt$ErrorStateKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ErrorState.Builder</ID> + <ID>ConstructorParameterNaming:ErrorStateKt.kt$ErrorStateKt.FirewallPolicyErrorKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ErrorState.FirewallPolicyError.Builder</ID> + <ID>ConstructorParameterNaming:ExcludedProcessKt.kt$ExcludedProcessKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ExcludedProcess.Builder</ID> + <ID>ConstructorParameterNaming:ExcludedProcessListKt.kt$ExcludedProcessListKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ExcludedProcessList.Builder</ID> + <ID>ConstructorParameterNaming:GeoIpLocationKt.kt$GeoIpLocationKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.GeoIpLocation.Builder</ID> + <ID>ConstructorParameterNaming:GeographicLocationConstraintKt.kt$GeographicLocationConstraintKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.GeographicLocationConstraint.Builder</ID> + <ID>ConstructorParameterNaming:LocationConstraintKt.kt$LocationConstraintKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.LocationConstraint.Builder</ID> + <ID>ConstructorParameterNaming:LocationKt.kt$LocationKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.Location.Builder</ID> + <ID>ConstructorParameterNaming:NewAccessMethodSettingKt.kt$NewAccessMethodSettingKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.NewAccessMethodSetting.Builder</ID> + <ID>ConstructorParameterNaming:NormalRelaySettingsKt.kt$NormalRelaySettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.NormalRelaySettings.Builder</ID> + <ID>ConstructorParameterNaming:ObfuscationEndpointKt.kt$ObfuscationEndpointKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ObfuscationEndpoint.Builder</ID> + <ID>ConstructorParameterNaming:ObfuscationSettingsKt.kt$ObfuscationSettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ObfuscationSettings.Builder</ID> + <ID>ConstructorParameterNaming:OpenVpnEndpointDataKt.kt$OpenVpnEndpointDataKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.OpenVpnEndpointData.Builder</ID> + <ID>ConstructorParameterNaming:OpenVpnEndpointKt.kt$OpenVpnEndpointKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.OpenVpnEndpoint.Builder</ID> + <ID>ConstructorParameterNaming:OpenvpnConstraintsKt.kt$OpenvpnConstraintsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.OpenvpnConstraints.Builder</ID> + <ID>ConstructorParameterNaming:PortRangeKt.kt$PortRangeKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.PortRange.Builder</ID> + <ID>ConstructorParameterNaming:ProxyEndpointKt.kt$ProxyEndpointKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ProxyEndpoint.Builder</ID> + <ID>ConstructorParameterNaming:PublicKeyKt.kt$PublicKeyKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.PublicKey.Builder</ID> + <ID>ConstructorParameterNaming:QuantumResistantStateKt.kt$QuantumResistantStateKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.QuantumResistantState.Builder</ID> + <ID>ConstructorParameterNaming:RelayKt.kt$RelayKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.Relay.Builder</ID> + <ID>ConstructorParameterNaming:RelayListCityKt.kt$RelayListCityKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.RelayListCity.Builder</ID> + <ID>ConstructorParameterNaming:RelayListCountryKt.kt$RelayListCountryKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.RelayListCountry.Builder</ID> + <ID>ConstructorParameterNaming:RelayListKt.kt$RelayListKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.RelayList.Builder</ID> + <ID>ConstructorParameterNaming:RelaySettingsKt.kt$RelaySettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.RelaySettings.Builder</ID> + <ID>ConstructorParameterNaming:RemoveDeviceEventKt.kt$RemoveDeviceEventKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.RemoveDeviceEvent.Builder</ID> + <ID>ConstructorParameterNaming:SettingsKt.kt$SettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.Settings.Builder</ID> + <ID>ConstructorParameterNaming:ShadowsocksEndpointDataKt.kt$ShadowsocksEndpointDataKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ShadowsocksEndpointData.Builder</ID> + <ID>ConstructorParameterNaming:SplitTunnelSettingsKt.kt$SplitTunnelSettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.SplitTunnelSettings.Builder</ID> + <ID>ConstructorParameterNaming:TransportPortKt.kt$TransportPortKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TransportPort.Builder</ID> + <ID>ConstructorParameterNaming:TunnelEndpointKt.kt$TunnelEndpointKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelEndpoint.Builder</ID> + <ID>ConstructorParameterNaming:TunnelMetadataKt.kt$TunnelMetadataKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelMetadata.Builder</ID> + <ID>ConstructorParameterNaming:TunnelOptionsKt.kt$TunnelOptionsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.Builder</ID> + <ID>ConstructorParameterNaming:TunnelOptionsKt.kt$TunnelOptionsKt.GenericOptionsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.GenericOptions.Builder</ID> + <ID>ConstructorParameterNaming:TunnelOptionsKt.kt$TunnelOptionsKt.OpenvpnOptionsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.OpenvpnOptions.Builder</ID> + <ID>ConstructorParameterNaming:TunnelOptionsKt.kt$TunnelOptionsKt.WireguardOptionsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.WireguardOptions.Builder</ID> + <ID>ConstructorParameterNaming:TunnelStateKt.kt$TunnelStateKt.ConnectedKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Connected.Builder</ID> + <ID>ConstructorParameterNaming:TunnelStateKt.kt$TunnelStateKt.ConnectingKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Connecting.Builder</ID> + <ID>ConstructorParameterNaming:TunnelStateKt.kt$TunnelStateKt.DisconnectedKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Disconnected.Builder</ID> + <ID>ConstructorParameterNaming:TunnelStateKt.kt$TunnelStateKt.DisconnectingKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Disconnecting.Builder</ID> + <ID>ConstructorParameterNaming:TunnelStateKt.kt$TunnelStateKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Builder</ID> + <ID>ConstructorParameterNaming:TunnelStateKt.kt$TunnelStateKt.ErrorKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Error.Builder</ID> + <ID>ConstructorParameterNaming:TunnelStateRelayInfoKt.kt$TunnelStateRelayInfoKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelStateRelayInfo.Builder</ID> + <ID>ConstructorParameterNaming:UUIDKt.kt$UUIDKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.UUID.Builder</ID> + <ID>ConstructorParameterNaming:Udp2TcpObfuscationSettingsKt.kt$Udp2TcpObfuscationSettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.Udp2TcpObfuscationSettings.Builder</ID> + <ID>ConstructorParameterNaming:VoucherSubmissionKt.kt$VoucherSubmissionKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.VoucherSubmission.Builder</ID> + <ID>ConstructorParameterNaming:WireguardConstraintsKt.kt$WireguardConstraintsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.WireguardConstraints.Builder</ID> + <ID>ConstructorParameterNaming:WireguardEndpointDataKt.kt$WireguardEndpointDataKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.WireguardEndpointData.Builder</ID> + <ID>ConstructorParameterNaming:WireguardRelayEndpointDataKt.kt$WireguardRelayEndpointDataKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.WireguardRelayEndpointData.Builder</ID> + <ID>CyclomaticComplexMethod:BillingPaymentRepository.kt$BillingPaymentRepository$override fun purchaseProduct( productId: ProductId, activityProvider: () -> Activity ): Flow<PurchaseResult></ID> + <ID>CyclomaticComplexMethod:MockApiDispatcher.kt$MockApiDispatcher$override fun dispatch(request: RecordedRequest): MockResponse</ID> + <ID>CyclomaticComplexMethod:RelayLocationCell.kt$@Composable fun RelayLocationCell( relay: RelayItem, modifier: Modifier = Modifier, activeColor: Color = MaterialTheme.colorScheme.selected, inactiveColor: Color = MaterialTheme.colorScheme.error, selectedItem: RelayItem? = null, onSelectRelay: (item: RelayItem) -> Unit = {} )</ID> + <ID>EmptyFunctionBlock:AccountTestRule.kt$AccountTestRule${}</ID> + <ID>EmptyKtFile:build.gradle.kts$.build.gradle.kts</ID> + <ID>ForbiddenComment:DeviceRevokedViewModel.kt$DeviceRevokedViewModel$// TODO: Refactor ConnectionProxy to be easily injectable rather than injecting</ID> + <ID>ForbiddenComment:MullvadDaemon.kt$MullvadDaemon$// TODO: Review this method when redoing Daemon communication, it can be null which was not</ID> + <ID>ForbiddenComment:PlayPurchaseInitError.kt$PlayPurchaseInitError.OtherError$// TODO: Add more errors here.</ID> + <ID>ForbiddenComment:PlayPurchaseVerifyError.kt$PlayPurchaseVerifyError.OtherError$// TODO: Add more errors here.</ID> + <ID>ForbiddenComment:ServiceConnectionManager.kt$ServiceConnectionManager$// TODO: Remove after refactoring fragments to support flow.</ID> + <ID>ForbiddenComment:ServiceConnectionManager.kt$ServiceConnectionManager$// TODO: Remove once `serviceNotifier` is no longer used.</ID> + <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.BridgesKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Bridges</ID> + <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.BridgesKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Bridges.Builder, ): Dsl</ID> + <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.DirectKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Direct</ID> + <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.DirectKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Direct.Builder, ): Dsl</ID> + <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.AccessMethod</ID> + <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Builder, ): Dsl</ID> + <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.ShadowsocksKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Shadowsocks</ID> + <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.ShadowsocksKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Shadowsocks.Builder, ): Dsl</ID> + <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.Socks5LocalKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Socks5Local</ID> + <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.Socks5LocalKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Socks5Local.Builder, ): Dsl</ID> + <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.Socks5RemoteKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Socks5Remote</ID> + <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.Socks5RemoteKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Socks5Remote.Builder, ): Dsl</ID> + <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.SocksAuthKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.AccessMethod.SocksAuth</ID> + <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.SocksAuthKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.SocksAuth.Builder, ): Dsl</ID> + <ID>FunctionNaming:AccessMethodSettingKt.kt$AccessMethodSettingKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.AccessMethodSetting</ID> + <ID>FunctionNaming:AccessMethodSettingKt.kt$AccessMethodSettingKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethodSetting.Builder, ): Dsl</ID> + <ID>FunctionNaming:AccountAndDeviceKt.kt$AccountAndDeviceKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.AccountAndDevice</ID> + <ID>FunctionNaming:AccountAndDeviceKt.kt$AccountAndDeviceKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.AccountAndDevice.Builder, ): Dsl</ID> + <ID>FunctionNaming:AccountDataKt.kt$AccountDataKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.AccountData</ID> + <ID>FunctionNaming:AccountDataKt.kt$AccountDataKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.AccountData.Builder, ): Dsl</ID> + <ID>FunctionNaming:AccountHistoryKt.kt$AccountHistoryKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.AccountHistory</ID> + <ID>FunctionNaming:AccountHistoryKt.kt$AccountHistoryKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.AccountHistory.Builder, ): Dsl</ID> + <ID>FunctionNaming:ApiAccessMethodSettingsKt.kt$ApiAccessMethodSettingsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ApiAccessMethodSettings</ID> + <ID>FunctionNaming:ApiAccessMethodSettingsKt.kt$ApiAccessMethodSettingsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ApiAccessMethodSettings.Builder, ): Dsl</ID> + <ID>FunctionNaming:ApiAddressesKt.kt$ApiAddressesKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ApiAddresses</ID> + <ID>FunctionNaming:ApiAddressesKt.kt$ApiAddressesKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ApiAddresses.Builder, ): Dsl</ID> + <ID>FunctionNaming:AppVersionInfoKt.kt$AppVersionInfoKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.AppVersionInfo</ID> + <ID>FunctionNaming:AppVersionInfoKt.kt$AppVersionInfoKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.AppVersionInfo.Builder, ): Dsl</ID> + <ID>FunctionNaming:BridgeEndpointDataKt.kt$BridgeEndpointDataKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.BridgeEndpointData</ID> + <ID>FunctionNaming:BridgeEndpointDataKt.kt$BridgeEndpointDataKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.BridgeEndpointData.Builder, ): Dsl</ID> + <ID>FunctionNaming:BridgeSettingsKt.kt$BridgeSettingsKt.BridgeConstraintsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.BridgeConstraints</ID> + <ID>FunctionNaming:BridgeSettingsKt.kt$BridgeSettingsKt.BridgeConstraintsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.BridgeConstraints.Builder, ): Dsl</ID> + <ID>FunctionNaming:BridgeSettingsKt.kt$BridgeSettingsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.BridgeSettings</ID> + <ID>FunctionNaming:BridgeSettingsKt.kt$BridgeSettingsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.Builder, ): Dsl</ID> + <ID>FunctionNaming:BridgeSettingsKt.kt$BridgeSettingsKt.LocalProxySettingsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.LocalProxySettings</ID> + <ID>FunctionNaming:BridgeSettingsKt.kt$BridgeSettingsKt.LocalProxySettingsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.LocalProxySettings.Builder, ): Dsl</ID> + <ID>FunctionNaming:BridgeSettingsKt.kt$BridgeSettingsKt.RemoteProxyAuthKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.RemoteProxyAuth</ID> + <ID>FunctionNaming:BridgeSettingsKt.kt$BridgeSettingsKt.RemoteProxyAuthKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.RemoteProxyAuth.Builder, ): Dsl</ID> + <ID>FunctionNaming:BridgeSettingsKt.kt$BridgeSettingsKt.RemoteProxySettingsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.RemoteProxySettings</ID> + <ID>FunctionNaming:BridgeSettingsKt.kt$BridgeSettingsKt.RemoteProxySettingsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.RemoteProxySettings.Builder, ): Dsl</ID> + <ID>FunctionNaming:BridgeSettingsKt.kt$BridgeSettingsKt.ShadowsocksProxySettingsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.ShadowsocksProxySettings</ID> + <ID>FunctionNaming:BridgeSettingsKt.kt$BridgeSettingsKt.ShadowsocksProxySettingsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.ShadowsocksProxySettings.Builder, ): Dsl</ID> + <ID>FunctionNaming:BridgeStateKt.kt$BridgeStateKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.BridgeState</ID> + <ID>FunctionNaming:BridgeStateKt.kt$BridgeStateKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.BridgeState.Builder, ): Dsl</ID> + <ID>FunctionNaming:ConnectionConfigKt.kt$ConnectionConfigKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig</ID> + <ID>FunctionNaming:ConnectionConfigKt.kt$ConnectionConfigKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.Builder, ): Dsl</ID> + <ID>FunctionNaming:ConnectionConfigKt.kt$ConnectionConfigKt.OpenvpnConfigKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.OpenvpnConfig</ID> + <ID>FunctionNaming:ConnectionConfigKt.kt$ConnectionConfigKt.OpenvpnConfigKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.OpenvpnConfig.Builder, ): Dsl</ID> + <ID>FunctionNaming:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig</ID> + <ID>FunctionNaming:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.Builder, ): Dsl</ID> + <ID>FunctionNaming:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.PeerConfigKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.PeerConfig</ID> + <ID>FunctionNaming:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.PeerConfigKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.PeerConfig.Builder, ): Dsl</ID> + <ID>FunctionNaming:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.TunnelConfigKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.TunnelConfig</ID> + <ID>FunctionNaming:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.TunnelConfigKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.TunnelConfig.Builder, ): Dsl</ID> + <ID>FunctionNaming:CustomDnsOptionsKt.kt$CustomDnsOptionsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.CustomDnsOptions</ID> + <ID>FunctionNaming:CustomDnsOptionsKt.kt$CustomDnsOptionsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.CustomDnsOptions.Builder, ): Dsl</ID> + <ID>FunctionNaming:CustomListKt.kt$CustomListKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.CustomList</ID> + <ID>FunctionNaming:CustomListKt.kt$CustomListKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.CustomList.Builder, ): Dsl</ID> + <ID>FunctionNaming:CustomListSettingsKt.kt$CustomListSettingsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.CustomListSettings</ID> + <ID>FunctionNaming:CustomListSettingsKt.kt$CustomListSettingsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.CustomListSettings.Builder, ): Dsl</ID> + <ID>FunctionNaming:CustomRelaySettingsKt.kt$CustomRelaySettingsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.CustomRelaySettings</ID> + <ID>FunctionNaming:CustomRelaySettingsKt.kt$CustomRelaySettingsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.CustomRelaySettings.Builder, ): Dsl</ID> + <ID>FunctionNaming:DaemonEventKt.kt$DaemonEventKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.DaemonEvent</ID> + <ID>FunctionNaming:DaemonEventKt.kt$DaemonEventKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.DaemonEvent.Builder, ): Dsl</ID> + <ID>FunctionNaming:DefaultDnsOptionsKt.kt$DefaultDnsOptionsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.DefaultDnsOptions</ID> + <ID>FunctionNaming:DefaultDnsOptionsKt.kt$DefaultDnsOptionsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.DefaultDnsOptions.Builder, ): Dsl</ID> + <ID>FunctionNaming:DeviceEventKt.kt$DeviceEventKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.DeviceEvent</ID> + <ID>FunctionNaming:DeviceEventKt.kt$DeviceEventKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.DeviceEvent.Builder, ): Dsl</ID> + <ID>FunctionNaming:DeviceKt.kt$DeviceKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.Device</ID> + <ID>FunctionNaming:DeviceKt.kt$DeviceKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.Device.Builder, ): Dsl</ID> + <ID>FunctionNaming:DeviceListKt.kt$DeviceListKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.DeviceList</ID> + <ID>FunctionNaming:DeviceListKt.kt$DeviceListKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.DeviceList.Builder, ): Dsl</ID> + <ID>FunctionNaming:DeviceRemovalKt.kt$DeviceRemovalKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.DeviceRemoval</ID> + <ID>FunctionNaming:DeviceRemovalKt.kt$DeviceRemovalKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.DeviceRemoval.Builder, ): Dsl</ID> + <ID>FunctionNaming:DeviceStateKt.kt$DeviceStateKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.DeviceState</ID> + <ID>FunctionNaming:DeviceStateKt.kt$DeviceStateKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.DeviceState.Builder, ): Dsl</ID> + <ID>FunctionNaming:DnsOptionsKt.kt$DnsOptionsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.DnsOptions</ID> + <ID>FunctionNaming:DnsOptionsKt.kt$DnsOptionsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.DnsOptions.Builder, ): Dsl</ID> + <ID>FunctionNaming:EndpointKt.kt$EndpointKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.Endpoint</ID> + <ID>FunctionNaming:EndpointKt.kt$EndpointKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.Endpoint.Builder, ): Dsl</ID> + <ID>FunctionNaming:ErrorStateKt.kt$ErrorStateKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ErrorState</ID> + <ID>FunctionNaming:ErrorStateKt.kt$ErrorStateKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ErrorState.Builder, ): Dsl</ID> + <ID>FunctionNaming:ErrorStateKt.kt$ErrorStateKt.FirewallPolicyErrorKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ErrorState.FirewallPolicyError</ID> + <ID>FunctionNaming:ErrorStateKt.kt$ErrorStateKt.FirewallPolicyErrorKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ErrorState.FirewallPolicyError.Builder, ): Dsl</ID> + <ID>FunctionNaming:ExcludedProcessKt.kt$ExcludedProcessKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ExcludedProcess</ID> + <ID>FunctionNaming:ExcludedProcessKt.kt$ExcludedProcessKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ExcludedProcess.Builder, ): Dsl</ID> + <ID>FunctionNaming:ExcludedProcessListKt.kt$ExcludedProcessListKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ExcludedProcessList</ID> + <ID>FunctionNaming:ExcludedProcessListKt.kt$ExcludedProcessListKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ExcludedProcessList.Builder, ): Dsl</ID> + <ID>FunctionNaming:GeoIpLocationKt.kt$GeoIpLocationKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.GeoIpLocation</ID> + <ID>FunctionNaming:GeoIpLocationKt.kt$GeoIpLocationKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.GeoIpLocation.Builder, ): Dsl</ID> + <ID>FunctionNaming:GeographicLocationConstraintKt.kt$GeographicLocationConstraintKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.GeographicLocationConstraint</ID> + <ID>FunctionNaming:GeographicLocationConstraintKt.kt$GeographicLocationConstraintKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.GeographicLocationConstraint.Builder, ): Dsl</ID> + <ID>FunctionNaming:LocationConstraintKt.kt$LocationConstraintKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.LocationConstraint</ID> + <ID>FunctionNaming:LocationConstraintKt.kt$LocationConstraintKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.LocationConstraint.Builder, ): Dsl</ID> + <ID>FunctionNaming:LocationKt.kt$LocationKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.Location</ID> + <ID>FunctionNaming:LocationKt.kt$LocationKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.Location.Builder, ): Dsl</ID> + <ID>FunctionNaming:NewAccessMethodSettingKt.kt$NewAccessMethodSettingKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.NewAccessMethodSetting</ID> + <ID>FunctionNaming:NewAccessMethodSettingKt.kt$NewAccessMethodSettingKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.NewAccessMethodSetting.Builder, ): Dsl</ID> + <ID>FunctionNaming:NormalRelaySettingsKt.kt$NormalRelaySettingsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.NormalRelaySettings</ID> + <ID>FunctionNaming:NormalRelaySettingsKt.kt$NormalRelaySettingsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.NormalRelaySettings.Builder, ): Dsl</ID> + <ID>FunctionNaming:ObfuscationEndpointKt.kt$ObfuscationEndpointKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ObfuscationEndpoint</ID> + <ID>FunctionNaming:ObfuscationEndpointKt.kt$ObfuscationEndpointKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ObfuscationEndpoint.Builder, ): Dsl</ID> + <ID>FunctionNaming:ObfuscationSettingsKt.kt$ObfuscationSettingsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ObfuscationSettings</ID> + <ID>FunctionNaming:ObfuscationSettingsKt.kt$ObfuscationSettingsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ObfuscationSettings.Builder, ): Dsl</ID> + <ID>FunctionNaming:OpenVpnEndpointDataKt.kt$OpenVpnEndpointDataKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.OpenVpnEndpointData</ID> + <ID>FunctionNaming:OpenVpnEndpointDataKt.kt$OpenVpnEndpointDataKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.OpenVpnEndpointData.Builder, ): Dsl</ID> + <ID>FunctionNaming:OpenVpnEndpointKt.kt$OpenVpnEndpointKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.OpenVpnEndpoint</ID> + <ID>FunctionNaming:OpenVpnEndpointKt.kt$OpenVpnEndpointKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.OpenVpnEndpoint.Builder, ): Dsl</ID> + <ID>FunctionNaming:OpenvpnConstraintsKt.kt$OpenvpnConstraintsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.OpenvpnConstraints</ID> + <ID>FunctionNaming:OpenvpnConstraintsKt.kt$OpenvpnConstraintsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.OpenvpnConstraints.Builder, ): Dsl</ID> + <ID>FunctionNaming:PortRangeKt.kt$PortRangeKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.PortRange</ID> + <ID>FunctionNaming:PortRangeKt.kt$PortRangeKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.PortRange.Builder, ): Dsl</ID> + <ID>FunctionNaming:ProxyEndpointKt.kt$ProxyEndpointKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ProxyEndpoint</ID> + <ID>FunctionNaming:ProxyEndpointKt.kt$ProxyEndpointKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ProxyEndpoint.Builder, ): Dsl</ID> + <ID>FunctionNaming:PublicKeyKt.kt$PublicKeyKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.PublicKey</ID> + <ID>FunctionNaming:PublicKeyKt.kt$PublicKeyKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.PublicKey.Builder, ): Dsl</ID> + <ID>FunctionNaming:QuantumResistantStateKt.kt$QuantumResistantStateKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.QuantumResistantState</ID> + <ID>FunctionNaming:QuantumResistantStateKt.kt$QuantumResistantStateKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.QuantumResistantState.Builder, ): Dsl</ID> + <ID>FunctionNaming:RelayKt.kt$RelayKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.Relay</ID> + <ID>FunctionNaming:RelayKt.kt$RelayKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.Relay.Builder, ): Dsl</ID> + <ID>FunctionNaming:RelayListCityKt.kt$RelayListCityKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.RelayListCity</ID> + <ID>FunctionNaming:RelayListCityKt.kt$RelayListCityKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.RelayListCity.Builder, ): Dsl</ID> + <ID>FunctionNaming:RelayListCountryKt.kt$RelayListCountryKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.RelayListCountry</ID> + <ID>FunctionNaming:RelayListCountryKt.kt$RelayListCountryKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.RelayListCountry.Builder, ): Dsl</ID> + <ID>FunctionNaming:RelayListKt.kt$RelayListKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.RelayList</ID> + <ID>FunctionNaming:RelayListKt.kt$RelayListKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.RelayList.Builder, ): Dsl</ID> + <ID>FunctionNaming:RelaySettingsKt.kt$RelaySettingsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.RelaySettings</ID> + <ID>FunctionNaming:RelaySettingsKt.kt$RelaySettingsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.RelaySettings.Builder, ): Dsl</ID> + <ID>FunctionNaming:RemoveDeviceEventKt.kt$RemoveDeviceEventKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.RemoveDeviceEvent</ID> + <ID>FunctionNaming:RemoveDeviceEventKt.kt$RemoveDeviceEventKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.RemoveDeviceEvent.Builder, ): Dsl</ID> + <ID>FunctionNaming:SettingsKt.kt$SettingsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.Settings</ID> + <ID>FunctionNaming:SettingsKt.kt$SettingsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.Settings.Builder, ): Dsl</ID> + <ID>FunctionNaming:ShadowsocksEndpointDataKt.kt$ShadowsocksEndpointDataKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ShadowsocksEndpointData</ID> + <ID>FunctionNaming:ShadowsocksEndpointDataKt.kt$ShadowsocksEndpointDataKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ShadowsocksEndpointData.Builder, ): Dsl</ID> + <ID>FunctionNaming:SplitTunnelSettingsKt.kt$SplitTunnelSettingsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.SplitTunnelSettings</ID> + <ID>FunctionNaming:SplitTunnelSettingsKt.kt$SplitTunnelSettingsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.SplitTunnelSettings.Builder, ): Dsl</ID> + <ID>FunctionNaming:TransportPortKt.kt$TransportPortKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TransportPort</ID> + <ID>FunctionNaming:TransportPortKt.kt$TransportPortKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TransportPort.Builder, ): Dsl</ID> + <ID>FunctionNaming:TunnelEndpointKt.kt$TunnelEndpointKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TunnelEndpoint</ID> + <ID>FunctionNaming:TunnelEndpointKt.kt$TunnelEndpointKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TunnelEndpoint.Builder, ): Dsl</ID> + <ID>FunctionNaming:TunnelMetadataKt.kt$TunnelMetadataKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TunnelMetadata</ID> + <ID>FunctionNaming:TunnelMetadataKt.kt$TunnelMetadataKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TunnelMetadata.Builder, ): Dsl</ID> + <ID>FunctionNaming:TunnelOptionsKt.kt$TunnelOptionsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TunnelOptions</ID> + <ID>FunctionNaming:TunnelOptionsKt.kt$TunnelOptionsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.Builder, ): Dsl</ID> + <ID>FunctionNaming:TunnelOptionsKt.kt$TunnelOptionsKt.GenericOptionsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.GenericOptions</ID> + <ID>FunctionNaming:TunnelOptionsKt.kt$TunnelOptionsKt.GenericOptionsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.GenericOptions.Builder, ): Dsl</ID> + <ID>FunctionNaming:TunnelOptionsKt.kt$TunnelOptionsKt.OpenvpnOptionsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.OpenvpnOptions</ID> + <ID>FunctionNaming:TunnelOptionsKt.kt$TunnelOptionsKt.OpenvpnOptionsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.OpenvpnOptions.Builder, ): Dsl</ID> + <ID>FunctionNaming:TunnelOptionsKt.kt$TunnelOptionsKt.WireguardOptionsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.WireguardOptions</ID> + <ID>FunctionNaming:TunnelOptionsKt.kt$TunnelOptionsKt.WireguardOptionsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.WireguardOptions.Builder, ): Dsl</ID> + <ID>FunctionNaming:TunnelStateKt.kt$TunnelStateKt.ConnectedKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TunnelState.Connected</ID> + <ID>FunctionNaming:TunnelStateKt.kt$TunnelStateKt.ConnectedKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Connected.Builder, ): Dsl</ID> + <ID>FunctionNaming:TunnelStateKt.kt$TunnelStateKt.ConnectingKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TunnelState.Connecting</ID> + <ID>FunctionNaming:TunnelStateKt.kt$TunnelStateKt.ConnectingKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Connecting.Builder, ): Dsl</ID> + <ID>FunctionNaming:TunnelStateKt.kt$TunnelStateKt.DisconnectedKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TunnelState.Disconnected</ID> + <ID>FunctionNaming:TunnelStateKt.kt$TunnelStateKt.DisconnectedKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Disconnected.Builder, ): Dsl</ID> + <ID>FunctionNaming:TunnelStateKt.kt$TunnelStateKt.DisconnectingKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TunnelState.Disconnecting</ID> + <ID>FunctionNaming:TunnelStateKt.kt$TunnelStateKt.DisconnectingKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Disconnecting.Builder, ): Dsl</ID> + <ID>FunctionNaming:TunnelStateKt.kt$TunnelStateKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TunnelState</ID> + <ID>FunctionNaming:TunnelStateKt.kt$TunnelStateKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Builder, ): Dsl</ID> + <ID>FunctionNaming:TunnelStateKt.kt$TunnelStateKt.ErrorKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TunnelState.Error</ID> + <ID>FunctionNaming:TunnelStateKt.kt$TunnelStateKt.ErrorKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Error.Builder, ): Dsl</ID> + <ID>FunctionNaming:TunnelStateRelayInfoKt.kt$TunnelStateRelayInfoKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TunnelStateRelayInfo</ID> + <ID>FunctionNaming:TunnelStateRelayInfoKt.kt$TunnelStateRelayInfoKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TunnelStateRelayInfo.Builder, ): Dsl</ID> + <ID>FunctionNaming:UUIDKt.kt$UUIDKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.UUID</ID> + <ID>FunctionNaming:UUIDKt.kt$UUIDKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.UUID.Builder, ): Dsl</ID> + <ID>FunctionNaming:Udp2TcpObfuscationSettingsKt.kt$Udp2TcpObfuscationSettingsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.Udp2TcpObfuscationSettings</ID> + <ID>FunctionNaming:Udp2TcpObfuscationSettingsKt.kt$Udp2TcpObfuscationSettingsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.Udp2TcpObfuscationSettings.Builder, ): Dsl</ID> + <ID>FunctionNaming:VoucherSubmissionKt.kt$VoucherSubmissionKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.VoucherSubmission</ID> + <ID>FunctionNaming:VoucherSubmissionKt.kt$VoucherSubmissionKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.VoucherSubmission.Builder, ): Dsl</ID> + <ID>FunctionNaming:WireguardConstraintsKt.kt$WireguardConstraintsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.WireguardConstraints</ID> + <ID>FunctionNaming:WireguardConstraintsKt.kt$WireguardConstraintsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.WireguardConstraints.Builder, ): Dsl</ID> + <ID>FunctionNaming:WireguardEndpointDataKt.kt$WireguardEndpointDataKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.WireguardEndpointData</ID> + <ID>FunctionNaming:WireguardEndpointDataKt.kt$WireguardEndpointDataKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.WireguardEndpointData.Builder, ): Dsl</ID> + <ID>FunctionNaming:WireguardRelayEndpointDataKt.kt$WireguardRelayEndpointDataKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.WireguardRelayEndpointData</ID> + <ID>FunctionNaming:WireguardRelayEndpointDataKt.kt$WireguardRelayEndpointDataKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.WireguardRelayEndpointData.Builder, ): Dsl</ID> + <ID>LargeClass:ConnectScreenTest.kt$ConnectScreenTest</ID> + <ID>LargeClass:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt$ManagementServiceCoroutineImplBase : AbstractCoroutineServerImpl</ID> + <ID>LargeClass:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt$ManagementServiceCoroutineStub : AbstractCoroutineStub</ID> + <ID>LongMethod:ConnectScreen.kt$@Composable fun ConnectScreen( uiState: ConnectUiState, onDisconnectClick: () -> Unit = {}, onReconnectClick: () -> Unit = {}, onConnectClick: () -> Unit = {}, onCancelClick: () -> Unit = {}, onSwitchLocationClick: () -> Unit = {}, onUpdateVersionClick: () -> Unit = {}, onManageAccountClick: () -> Unit = {}, onSettingsClick: () -> Unit = {}, onAccountClick: () -> Unit = {}, onDismissNewDeviceClick: () -> Unit = {} )</ID> + <ID>LongMethod:ConnectionButton.kt$@OptIn(ExperimentalMaterial3Api::class) @Composable private fun ConnectionButton( text: String, mainClick: () -> Unit, reconnectClick: () -> Unit, isReconnectButtonEnabled: Boolean, containerColor: Color, contentColor: Color, modifier: Modifier = Modifier, reconnectButtonTestTag: String = "" )</ID> + <ID>LongMethod:FilterScreen.kt$@Composable fun FilterScreen( uiState: RelayFilterState, onBackClick: () -> Unit = {}, onApplyClick: () -> Unit = {}, onSelectedOwnership: (ownership: Ownership?) -> Unit = {}, onAllProviderCheckChange: (isChecked: Boolean) -> Unit = {}, onSelectedProvider: (checked: Boolean, provider: Provider) -> Unit = { _, _ -> } )</ID> + <ID>LongMethod:LoginScreen.kt$@Composable @OptIn(ExperimentalComposeUiApi::class) private fun LoginContent( uiState: LoginUiState, onAccountNumberChange: (String) -> Unit, onLoginClick: (String) -> Unit, onDeleteHistoryClick: () -> Unit )</ID> + <ID>LongMethod:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$final override fun bindService(): ServerServiceDefinition</ID> + <ID>LongMethod:NotificationBanner.kt$@Composable private fun Notification(notificationBannerData: NotificationData)</ID> + <ID>LongMethod:OutOfTimeScreen.kt$@Composable fun OutOfTimeScreen( uiState: OutOfTimeUiState, onDisconnectClick: () -> Unit = {}, onSitePaymentClick: () -> Unit = {}, onRedeemVoucherClick: () -> Unit = {}, onSettingsClick: () -> Unit = {}, onAccountClick: () -> Unit = {}, onPurchaseBillingProductClick: (ProductId) -> Unit = { _ -> }, navigateToVerificationPendingDialog: () -> Unit = {} )</ID> + <ID>LongMethod:PrivacyDisclaimerScreen.kt$@Composable fun PrivacyDisclaimerScreen( uiState: PrivacyDisclaimerViewState, onPrivacyPolicyLinkClicked: () -> Unit, onAcceptClicked: () -> Unit, )</ID> + <ID>LongMethod:RedeemVoucherDialog.kt$@Composable fun RedeemVoucherDialog( uiState: VoucherDialogUiState, onVoucherInputChange: (String) -> Unit = {}, onRedeem: (voucherCode: String) -> Unit, onDismiss: (isTimeAdded: Boolean) -> Unit )</ID> + <ID>LongMethod:RelayLocationCell.kt$@Composable @Preview private fun PreviewRelayLocationCell()</ID> + <ID>LongMethod:RelayLocationCell.kt$@Composable fun RelayLocationCell( relay: RelayItem, modifier: Modifier = Modifier, activeColor: Color = MaterialTheme.colorScheme.selected, inactiveColor: Color = MaterialTheme.colorScheme.error, selectedItem: RelayItem? = null, onSelectRelay: (item: RelayItem) -> Unit = {} )</ID> + <ID>LongMethod:SelectLocationScreen.kt$@Composable fun SelectLocationScreen( uiState: SelectLocationUiState, onSelectRelay: (item: RelayItem) -> Unit = {}, onSearchTermInput: (searchTerm: String) -> Unit = {}, onBackClick: () -> Unit = {}, onFilterClick: () -> Unit = {}, removeOwnershipFilter: () -> Unit = {}, removeProviderFilter: () -> Unit = {} )</ID> + <ID>LongMethod:SettingsScreen.kt$@ExperimentalMaterial3Api @Composable fun SettingsScreen( uiState: SettingsUiState, onVpnSettingCellClick: () -> Unit = {}, onSplitTunnelingCellClick: () -> Unit = {}, onReportProblemCellClick: () -> Unit = {}, onBackClick: () -> Unit = {} )</ID> + <ID>LongMethod:SplitTunnelingScreen.kt$@Composable @OptIn(ExperimentalFoundationApi::class) fun SplitTunnelingScreen( uiState: SplitTunnelingUiState = SplitTunnelingUiState.Loading, onShowSystemAppsClick: (show: Boolean) -> Unit = {}, onExcludeAppClick: (packageName: String) -> Unit = {}, onIncludeAppClick: (packageName: String) -> Unit = {}, onBackClick: () -> Unit = {}, onResolveIcon: (String) -> Bitmap? = { null }, )</ID> + <ID>LongMethod:VpnSettingsScreen.kt$@Destination(style = SlideInFromRightTransition::class) @Composable fun VpnSettings( navigator: DestinationsNavigator, dnsDialogResult: ResultRecipient<DnsDialogDestination, Boolean>, customWgPortResult: ResultRecipient<WireguardCustomPortDialogDestination, Int?> )</ID> + <ID>LongMethod:VpnSettingsScreen.kt$@OptIn(ExperimentalFoundationApi::class) @Composable fun VpnSettingsScreen( uiState: VpnSettingsUiState, snackbarHostState: SnackbarHostState = remember { SnackbarHostState() }, navigateToContentBlockersInfo: () -> Unit = {}, navigateToCustomDnsInfo: () -> Unit = {}, navigateToMalwareInfo: () -> Unit = {}, navigateToObfuscationInfo: () -> Unit = {}, navigateToQuantumResistanceInfo: () -> Unit = {}, navigateUdp2TcpInfo: () -> Unit = {}, navigateToWireguardPortInfo: (availablePortRanges: List<PortRange>) -> Unit = {}, navigateToLocalNetworkSharingInfo: () -> Unit = {}, navigateToWireguardPortDialog: () -> Unit = {}, onToggleBlockTrackers: (Boolean) -> Unit = {}, onToggleBlockAds: (Boolean) -> Unit = {}, onToggleBlockMalware: (Boolean) -> Unit = {}, onToggleAutoConnect: (Boolean) -> Unit = {}, onToggleLocalNetworkSharing: (Boolean) -> Unit = {}, onToggleBlockAdultContent: (Boolean) -> Unit = {}, onToggleBlockGambling: (Boolean) -> Unit = {}, onToggleBlockSocialMedia: (Boolean) -> Unit = {}, navigateToMtuDialog: (mtu: Int?) -> Unit = {}, navigateToDns: (index: Int?, address: String?) -> Unit = { _, _ -> }, onToggleDnsClick: (Boolean) -> Unit = {}, onBackClick: () -> Unit = {}, onSelectObfuscationSetting: (selectedObfuscation: SelectedObfuscation) -> Unit = {}, onSelectQuantumResistanceSetting: (quantumResistant: QuantumResistantState) -> Unit = {}, onWireguardPortSelected: (port: Constraint<Port>) -> Unit = {}, )</ID> + <ID>MagicNumber:Chevron.kt$100</ID> + <ID>MagicNumber:Chevron.kt$270f</ID> + <ID>MagicNumber:Chevron.kt$90f</ID> + <ID>MagicNumber:CustomTextField.kt$100</ID> + <ID>MagicNumber:IntegerExtension.kt$1280</ID> + <ID>MagicNumber:IntegerExtension.kt$1420</ID> + <ID>MagicNumber:LoginScreen.kt$3f</ID> + <ID>MagicNumber:LoginViewModel.kt$LoginViewModel$1000</ID> + <ID>MagicNumber:MullvadTileService.kt$MullvadTileService$300L</ID> + <ID>MagicNumber:NavigateBackIconButton.kt$90f</ID> + <ID>MagicNumber:RedeemVoucherDialog.kt$30</ID> + <ID>MagicNumber:RedeemVoucherDialog.kt$59</ID> + <ID>MagicNumber:ResourcesExtensions.kt$3</ID> + <ID>MagicNumber:SelectLocationScreen.kt$270f</ID> + <ID>MagicNumber:TalpidVpnService.kt$TalpidVpnService$128</ID> + <ID>MagicNumber:TalpidVpnService.kt$TalpidVpnService$32</ID> + <ID>MatchingDeclarationName:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt</ID> + <ID>MatchingDeclarationName:SingleModuleExtensions.kt$NavGraph : NavGraphSpec</ID> + <ID>MaxLineLength:AccessMethodKt.kt$AccessMethodKt.Dsl$public</ID> + <ID>MaxLineLength:AccessMethodKt.kt$AccessMethodKt.ShadowsocksKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Shadowsocks.Builder</ID> + <ID>MaxLineLength:AccessMethodKt.kt$AccessMethodKt.Socks5LocalKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Socks5Local.Builder</ID> + <ID>MaxLineLength:AccessMethodKt.kt$AccessMethodKt.Socks5RemoteKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Socks5Remote.Builder</ID> + <ID>MaxLineLength:AccessMethodKt.kt$AccessMethodKt.SocksAuthKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.SocksAuth.Builder</ID> + <ID>MaxLineLength:AccessMethodKt.kt$public</ID> + <ID>MaxLineLength:AccessMethodSettingKt.kt$public</ID> + <ID>MaxLineLength:AccountAndDeviceKt.kt$public</ID> + <ID>MaxLineLength:AccountDataKt.kt$public</ID> + <ID>MaxLineLength:AccountHistoryKt.kt$public</ID> + <ID>MaxLineLength:ApiAccessMethodSettingsKt.kt$ApiAccessMethodSettingsKt.Dsl$public</ID> + <ID>MaxLineLength:ApiAccessMethodSettingsKt.kt$ApiAccessMethodSettingsKt.Dsl$values: kotlin.collections.Iterable<mullvad_daemon.management_interface.ManagementInterface.AccessMethodSetting></ID> + <ID>MaxLineLength:ApiAddressesKt.kt$ApiAddressesKt.Dsl$public</ID> + <ID>MaxLineLength:BridgeEndpointDataKt.kt$BridgeEndpointDataKt.Dsl$public</ID> + <ID>MaxLineLength:BridgeEndpointDataKt.kt$BridgeEndpointDataKt.Dsl$values: kotlin.collections.Iterable<mullvad_daemon.management_interface.ManagementInterface.ShadowsocksEndpointData></ID> + <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt$mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.ShadowsocksProxySettings.newBuilder()</ID> + <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.BridgeConstraintsKt.Dsl$@kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class)</ID> + <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.BridgeConstraintsKt.Dsl$internal</ID> + <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.BridgeConstraintsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.BridgeConstraints.Builder</ID> + <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.BridgeConstraintsKt.Dsl.Companion$builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.BridgeConstraints.Builder</ID> + <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.Dsl$public</ID> + <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.LocalProxySettingsKt.Dsl$internal</ID> + <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.LocalProxySettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.LocalProxySettings.Builder</ID> + <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.LocalProxySettingsKt.Dsl.Companion$builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.LocalProxySettings.Builder</ID> + <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.RemoteProxyAuthKt.Dsl$internal</ID> + <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.RemoteProxyAuthKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.RemoteProxyAuth.Builder</ID> + <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.RemoteProxyAuthKt.Dsl.Companion$builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.RemoteProxyAuth.Builder</ID> + <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.RemoteProxySettingsKt.Dsl$internal</ID> + <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.RemoteProxySettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.RemoteProxySettings.Builder</ID> + <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.RemoteProxySettingsKt.Dsl.Companion$builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.RemoteProxySettings.Builder</ID> + <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.ShadowsocksProxySettingsKt.Dsl$internal</ID> + <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.ShadowsocksProxySettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.ShadowsocksProxySettings.Builder</ID> + <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.ShadowsocksProxySettingsKt.Dsl.Companion$builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.ShadowsocksProxySettings.Builder</ID> + <ID>MaxLineLength:BridgeSettingsKt.kt$public</ID> + <ID>MaxLineLength:ChangelogDestination.kt$ChangelogDestination$changeLog = changelogNavType.get(savedStateHandle, "changeLog") ?: throw RuntimeException("'changeLog' argument is mandatory, but was not present!")</ID> + <ID>MaxLineLength:ChangelogDestination.kt$ChangelogDestination$changeLog = changelogNavType.safeGet(bundle, "changeLog") ?: throw RuntimeException("'changeLog' argument is mandatory, but was not present!")</ID> + <ID>MaxLineLength:ChangelogNavType.kt$public val changelogNavType: ChangelogNavType = ChangelogNavType(DefaultParcelableNavTypeSerializer(Changelog::class.java))</ID> + <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.OpenvpnConfigKt.Dsl$internal</ID> + <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.OpenvpnConfigKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.OpenvpnConfig.Builder</ID> + <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.OpenvpnConfigKt.Dsl.Companion$builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.OpenvpnConfig.Builder</ID> + <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt$block: mullvad_daemon.management_interface.ConnectionConfigKt.WireguardConfigKt.PeerConfigKt.Dsl.() -> kotlin.Unit</ID> + <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt$block: mullvad_daemon.management_interface.ConnectionConfigKt.WireguardConfigKt.TunnelConfigKt.Dsl.() -> kotlin.Unit</ID> + <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt$mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.PeerConfig.newBuilder()</ID> + <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt$mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.TunnelConfig.newBuilder()</ID> + <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.Dsl$internal</ID> + <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.Builder</ID> + <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.Dsl$public</ID> + <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.Dsl.Companion$builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.Builder</ID> + <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.PeerConfigKt.Dsl$@kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class)</ID> + <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.PeerConfigKt.Dsl$internal</ID> + <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.PeerConfigKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.PeerConfig.Builder</ID> + <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.PeerConfigKt.Dsl$public</ID> + <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.PeerConfigKt.Dsl.Companion$builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.PeerConfig.Builder</ID> + <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.TunnelConfigKt.Dsl$@kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class)</ID> + <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.TunnelConfigKt.Dsl$internal</ID> + <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.TunnelConfigKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.TunnelConfig.Builder</ID> + <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.TunnelConfigKt.Dsl.Companion$builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.TunnelConfig.Builder</ID> + <ID>MaxLineLength:ConnectionConfigKt.kt$block: mullvad_daemon.management_interface.ConnectionConfigKt.WireguardConfigKt.TunnelConfigKt.Dsl.() -> kotlin.Unit</ID> + <ID>MaxLineLength:ConnectionConfigKt.kt$public</ID> + <ID>MaxLineLength:ConnectionConfigKt.kt$public inline</ID> + <ID>MaxLineLength:CustomDnsOptionsKt.kt$CustomDnsOptionsKt.Dsl$@kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class)</ID> + <ID>MaxLineLength:CustomListKt.kt$CustomListKt.Dsl$public</ID> + <ID>MaxLineLength:CustomListKt.kt$CustomListKt.Dsl$values: kotlin.collections.Iterable<mullvad_daemon.management_interface.ManagementInterface.GeographicLocationConstraint></ID> + <ID>MaxLineLength:CustomListSettingsKt.kt$CustomListSettingsKt.Dsl$public</ID> + <ID>MaxLineLength:CustomRelaySettingsKt.kt$public</ID> + <ID>MaxLineLength:DaemonEventKt.kt$public</ID> + <ID>MaxLineLength:DeviceEventKt.kt$public</ID> + <ID>MaxLineLength:DeviceKt.kt$public</ID> + <ID>MaxLineLength:DeviceListDestination.kt$DeviceListDestination$accountToken = DestinationsStringNavType.get(savedStateHandle, "accountToken") ?: throw RuntimeException("'accountToken' argument is mandatory, but was not present!")</ID> + <ID>MaxLineLength:DeviceListDestination.kt$DeviceListDestination$accountToken = DestinationsStringNavType.safeGet(bundle, "accountToken") ?: throw RuntimeException("'accountToken' argument is mandatory, but was not present!")</ID> + <ID>MaxLineLength:DeviceListKt.kt$DeviceListKt.Dsl$public</ID> + <ID>MaxLineLength:DeviceStateKt.kt$public</ID> + <ID>MaxLineLength:DnsOptionsKt.kt$public</ID> + <ID>MaxLineLength:ErrorStateKt.kt$ErrorStateKt.FirewallPolicyErrorKt.Dsl$internal</ID> + <ID>MaxLineLength:ErrorStateKt.kt$ErrorStateKt.FirewallPolicyErrorKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ErrorState.FirewallPolicyError.Builder</ID> + <ID>MaxLineLength:ErrorStateKt.kt$ErrorStateKt.FirewallPolicyErrorKt.Dsl$public</ID> + <ID>MaxLineLength:ErrorStateKt.kt$ErrorStateKt.FirewallPolicyErrorKt.Dsl.Companion$builder: mullvad_daemon.management_interface.ManagementInterface.ErrorState.FirewallPolicyError.Builder</ID> + <ID>MaxLineLength:ErrorStateKt.kt$public</ID> + <ID>MaxLineLength:ExcludedProcessListKt.kt$ExcludedProcessListKt.Dsl$public</ID> + <ID>MaxLineLength:ExcludedProcessListKt.kt$ExcludedProcessListKt.Dsl$values: kotlin.collections.Iterable<mullvad_daemon.management_interface.ManagementInterface.ExcludedProcess></ID> + <ID>MaxLineLength:GeographicLocationConstraintKt.kt$GeographicLocationConstraintKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.GeographicLocationConstraint.Builder</ID> + <ID>MaxLineLength:LocationConstraintKt.kt$public</ID> + <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt$public</ID> + <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.AddSplitTunnelProcess is unimplemented"</ID> + <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.ClearSplitTunnelProcesses is unimplemented"</ID> + <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.GetCurrentApiAccessMethod is unimplemented"</ID> + <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.GetExcludedProcesses is unimplemented"</ID> + <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.GetSplitTunnelProcesses is unimplemented"</ID> + <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.IsPerformingPostUpgrade is unimplemented"</ID> + <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.RemoveApiAccessMethod is unimplemented"</ID> + <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.RemoveSplitTunnelApp is unimplemented"</ID> + <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.RemoveSplitTunnelProcess is unimplemented"</ID> + <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.ResetWireguardRotationInterval is unimplemented"</ID> + <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.SetBlockWhenDisconnected is unimplemented"</ID> + <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.SetObfuscationSettings is unimplemented"</ID> + <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.SetQuantumResistantTunnel is unimplemented"</ID> + <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.SetWireguardRotationInterval is unimplemented"</ID> + <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.UpdateApiAccessMethod is unimplemented"</ID> + <ID>MaxLineLength:NavArgsGetters.kt$RemoveDeviceConfirmationDialogDestination.NavArgs::class.java -> RemoveDeviceConfirmationDialogDestination.argsFrom(argsContainer) as T</ID> + <ID>MaxLineLength:NavArgsGetters.kt$WireguardCustomPortDialogDestination.NavArgs::class.java -> WireguardCustomPortDialogDestination.argsFrom(argsContainer) as T</ID> + <ID>MaxLineLength:NavArgsGetters.kt$WireguardPortInfoDialogDestination.NavArgs::class.java -> WireguardPortInfoDialogDestination.argsFrom(argsContainer) as T</ID> + <ID>MaxLineLength:NewAccessMethodSettingKt.kt$public</ID> + <ID>MaxLineLength:NormalRelaySettingsKt.kt$NormalRelaySettingsKt.Dsl$@kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class)</ID> + <ID>MaxLineLength:NormalRelaySettingsKt.kt$public</ID> + <ID>MaxLineLength:ObfuscationSettingsKt.kt$ObfuscationSettingsKt.Dsl$public</ID> + <ID>MaxLineLength:ObfuscationSettingsKt.kt$public</ID> + <ID>MaxLineLength:OpenVpnEndpointDataKt.kt$OpenVpnEndpointDataKt.Dsl$public</ID> + <ID>MaxLineLength:OpenVpnEndpointDataKt.kt$OpenVpnEndpointDataKt.Dsl$values: kotlin.collections.Iterable<mullvad_daemon.management_interface.ManagementInterface.OpenVpnEndpoint></ID> + <ID>MaxLineLength:OpenvpnConstraintsKt.kt$public</ID> + <ID>MaxLineLength:PaymentDestination.kt$PaymentDestination$productId = DestinationsStringNavType.get(savedStateHandle, "productId")?.let { ProductId(it) } ?: throw RuntimeException("'productId' argument is mandatory, but was not present!")</ID> + <ID>MaxLineLength:PaymentDestination.kt$PaymentDestination$productId = DestinationsStringNavType.safeGet(bundle, "productId")?.let { ProductId(it) } ?: throw RuntimeException("'productId' argument is mandatory, but was not present!")</ID> + <ID>MaxLineLength:PublicKeyKt.kt$public</ID> + <ID>MaxLineLength:RelayKt.kt$public</ID> + <ID>MaxLineLength:RelayListCityKt.kt$RelayListCityKt.Dsl$public</ID> + <ID>MaxLineLength:RelayListCountryKt.kt$RelayListCountryKt.Dsl$public</ID> + <ID>MaxLineLength:RelayListKt.kt$RelayListKt.Dsl$public</ID> + <ID>MaxLineLength:RelayListKt.kt$RelayListKt.Dsl$values: kotlin.collections.Iterable<mullvad_daemon.management_interface.ManagementInterface.RelayListCountry></ID> + <ID>MaxLineLength:RelayListKt.kt$public</ID> + <ID>MaxLineLength:RelaySettingsKt.kt$public</ID> + <ID>MaxLineLength:RemoveDeviceConfirmationDialogDestination.kt$RemoveDeviceConfirmationDialogDestination$device = deviceNavType.get(savedStateHandle, "device") ?: throw RuntimeException("'device' argument is mandatory, but was not present!")</ID> + <ID>MaxLineLength:RemoveDeviceConfirmationDialogDestination.kt$RemoveDeviceConfirmationDialogDestination$device = deviceNavType.safeGet(bundle, "device") ?: throw RuntimeException("'device' argument is mandatory, but was not present!")</ID> + <ID>MaxLineLength:RemoveDeviceConfirmationDialogDestination.kt$RemoveDeviceConfirmationDialogDestination$public</ID> + <ID>MaxLineLength:RemoveDeviceEventKt.kt$RemoveDeviceEventKt.Dsl$public</ID> + <ID>MaxLineLength:SettingsKt.kt$public</ID> + <ID>MaxLineLength:SplitTunnelSettingsKt.kt$SplitTunnelSettingsKt.Dsl$@kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class)</ID> + <ID>MaxLineLength:TunnelEndpointKt.kt$public</ID> + <ID>MaxLineLength:TunnelOptionsKt.kt$TunnelOptionsKt.GenericOptionsKt.Dsl$internal</ID> + <ID>MaxLineLength:TunnelOptionsKt.kt$TunnelOptionsKt.GenericOptionsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.GenericOptions.Builder</ID> + <ID>MaxLineLength:TunnelOptionsKt.kt$TunnelOptionsKt.GenericOptionsKt.Dsl.Companion$builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.GenericOptions.Builder</ID> + <ID>MaxLineLength:TunnelOptionsKt.kt$TunnelOptionsKt.OpenvpnOptionsKt.Dsl$internal</ID> + <ID>MaxLineLength:TunnelOptionsKt.kt$TunnelOptionsKt.OpenvpnOptionsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.OpenvpnOptions.Builder</ID> + <ID>MaxLineLength:TunnelOptionsKt.kt$TunnelOptionsKt.OpenvpnOptionsKt.Dsl.Companion$builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.OpenvpnOptions.Builder</ID> + <ID>MaxLineLength:TunnelOptionsKt.kt$TunnelOptionsKt.WireguardOptionsKt.Dsl$internal</ID> + <ID>MaxLineLength:TunnelOptionsKt.kt$TunnelOptionsKt.WireguardOptionsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.WireguardOptions.Builder</ID> + <ID>MaxLineLength:TunnelOptionsKt.kt$TunnelOptionsKt.WireguardOptionsKt.Dsl.Companion$builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.WireguardOptions.Builder</ID> + <ID>MaxLineLength:TunnelOptionsKt.kt$public</ID> + <ID>MaxLineLength:TunnelStateKt.kt$TunnelStateKt.ConnectingKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Connecting.Builder</ID> + <ID>MaxLineLength:TunnelStateKt.kt$TunnelStateKt.DisconnectedKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Disconnected.Builder</ID> + <ID>MaxLineLength:TunnelStateKt.kt$TunnelStateKt.DisconnectingKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Disconnecting.Builder</ID> + <ID>MaxLineLength:TunnelStateKt.kt$public</ID> + <ID>MaxLineLength:TunnelStateRelayInfoKt.kt$public</ID> + <ID>MaxLineLength:Udp2TcpObfuscationSettingsKt.kt$Udp2TcpObfuscationSettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.Udp2TcpObfuscationSettings.Builder</ID> + <ID>MaxLineLength:VoucherSubmissionKt.kt$public</ID> + <ID>MaxLineLength:WireguardConstraintsKt.kt$public</ID> + <ID>MaxLineLength:WireguardCustomPortDialogDestination.kt$WireguardCustomPortDialogDestination$navArg = wireguardCustomPortNavArgsNavType.get(savedStateHandle, "navArg") ?: throw RuntimeException("'navArg' argument is mandatory, but was not present!")</ID> + <ID>MaxLineLength:WireguardCustomPortDialogDestination.kt$WireguardCustomPortDialogDestination$navArg = wireguardCustomPortNavArgsNavType.safeGet(bundle, "navArg") ?: throw RuntimeException("'navArg' argument is mandatory, but was not present!")</ID> + <ID>MaxLineLength:WireguardCustomPortNavArgsNavType.kt$public val wireguardCustomPortNavArgsNavType: WireguardCustomPortNavArgsNavType = WireguardCustomPortNavArgsNavType(DefaultParcelableNavTypeSerializer(WireguardCustomPortNavArgs::class.java))</ID> + <ID>MaxLineLength:WireguardEndpointDataKt.kt$WireguardEndpointDataKt.Dsl$public</ID> + <ID>MaxLineLength:WireguardPortInfoDialogArgumentNavType.kt$public val wireguardPortInfoDialogArgumentNavType: WireguardPortInfoDialogArgumentNavType = WireguardPortInfoDialogArgumentNavType(DefaultParcelableNavTypeSerializer(WireguardPortInfoDialogArgument::class.java))</ID> + <ID>MaxLineLength:WireguardPortInfoDialogDestination.kt$WireguardPortInfoDialogDestination$argument = wireguardPortInfoDialogArgumentNavType.get(savedStateHandle, "argument") ?: throw RuntimeException("'argument' argument is mandatory, but was not present!")</ID> + <ID>MaxLineLength:WireguardPortInfoDialogDestination.kt$WireguardPortInfoDialogDestination$argument = wireguardPortInfoDialogArgumentNavType.safeGet(bundle, "argument") ?: throw RuntimeException("'argument' argument is mandatory, but was not present!")</ID> + <ID>MaxLineLength:WireguardRelayEndpointDataKt.kt$WireguardRelayEndpointDataKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.WireguardRelayEndpointData.Builder</ID> + <ID>MemberNameEqualsClassName:Message.kt$Message$val message: RawMessage get() = RawMessage.obtain().also { message -> message.what = messageId message.data = Bundle() message.data.putParcelable(messageKey, this) }</ID> + <ID>NestedBlockDepth:MockApiDispatcher.kt$MockApiDispatcher$override fun dispatch(request: RecordedRequest): MockResponse</ID> + <ID>NestedBlockDepth:RelayListExtensions.kt$fun List<RelayCountry>.filterOnSearchTerm( searchTerm: String, selectedItem: RelayItem? ): List<RelayCountry></ID> + <ID>NewLineAtEndOfFile:AccountDestination.kt$net.mullvad.mullvadvpn.compose.destinations.AccountDestination.kt</ID> + <ID>NewLineAtEndOfFile:ChangelogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.ChangelogDestination.kt</ID> + <ID>NewLineAtEndOfFile:ChangelogNavType.kt$net.mullvad.mullvadvpn.compose.navtype.ChangelogNavType.kt</ID> + <ID>NewLineAtEndOfFile:ConnectDestination.kt$net.mullvad.mullvadvpn.compose.destinations.ConnectDestination.kt</ID> + <ID>NewLineAtEndOfFile:ContentBlockersInfoDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.ContentBlockersInfoDialogDestination.kt</ID> + <ID>NewLineAtEndOfFile:CustomDnsInfoDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.CustomDnsInfoDialogDestination.kt</ID> + <ID>NewLineAtEndOfFile:DeviceListDestination.kt$net.mullvad.mullvadvpn.compose.destinations.DeviceListDestination.kt</ID> + <ID>NewLineAtEndOfFile:DeviceNameInfoDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.DeviceNameInfoDialogDestination.kt</ID> + <ID>NewLineAtEndOfFile:DeviceNavType.kt$net.mullvad.mullvadvpn.compose.navtype.DeviceNavType.kt</ID> + <ID>NewLineAtEndOfFile:DeviceRevokedDestination.kt$net.mullvad.mullvadvpn.compose.destinations.DeviceRevokedDestination.kt</ID> + <ID>NewLineAtEndOfFile:DnsDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.DnsDialogDestination.kt</ID> + <ID>NewLineAtEndOfFile:FilterScreenDestination.kt$net.mullvad.mullvadvpn.compose.destinations.FilterScreenDestination.kt</ID> + <ID>NewLineAtEndOfFile:LocalNetworkSharingInfoDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.LocalNetworkSharingInfoDialogDestination.kt</ID> + <ID>NewLineAtEndOfFile:LoginDestination.kt$net.mullvad.mullvadvpn.compose.destinations.LoginDestination.kt</ID> + <ID>NewLineAtEndOfFile:MalwareInfoDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.MalwareInfoDialogDestination.kt</ID> + <ID>NewLineAtEndOfFile:MtuDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.MtuDialogDestination.kt</ID> + <ID>NewLineAtEndOfFile:NavGraphs.kt$net.mullvad.mullvadvpn.compose.NavGraphs.kt</ID> + <ID>NewLineAtEndOfFile:NoDaemonScreenDestination.kt$net.mullvad.mullvadvpn.compose.destinations.NoDaemonScreenDestination.kt</ID> + <ID>NewLineAtEndOfFile:ObfuscationInfoDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.ObfuscationInfoDialogDestination.kt</ID> + <ID>NewLineAtEndOfFile:OutOfTimeDestination.kt$net.mullvad.mullvadvpn.compose.destinations.OutOfTimeDestination.kt</ID> + <ID>NewLineAtEndOfFile:PaymentDestination.kt$net.mullvad.mullvadvpn.compose.destinations.PaymentDestination.kt</ID> + <ID>NewLineAtEndOfFile:PrivacyDisclaimerDestination.kt$net.mullvad.mullvadvpn.compose.destinations.PrivacyDisclaimerDestination.kt</ID> + <ID>NewLineAtEndOfFile:QuantumResistanceInfoDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.QuantumResistanceInfoDialogDestination.kt</ID> + <ID>NewLineAtEndOfFile:RedeemVoucherDestination.kt$net.mullvad.mullvadvpn.compose.destinations.RedeemVoucherDestination.kt</ID> + <ID>NewLineAtEndOfFile:RemoveDeviceConfirmationDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.RemoveDeviceConfirmationDialogDestination.kt</ID> + <ID>NewLineAtEndOfFile:ReportProblemDestination.kt$net.mullvad.mullvadvpn.compose.destinations.ReportProblemDestination.kt</ID> + <ID>NewLineAtEndOfFile:ReportProblemNoEmailDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.ReportProblemNoEmailDialogDestination.kt</ID> + <ID>NewLineAtEndOfFile:SelectLocationDestination.kt$net.mullvad.mullvadvpn.compose.destinations.SelectLocationDestination.kt</ID> + <ID>NewLineAtEndOfFile:SettingsDestination.kt$net.mullvad.mullvadvpn.compose.destinations.SettingsDestination.kt</ID> + <ID>NewLineAtEndOfFile:SplashDestination.kt$net.mullvad.mullvadvpn.compose.destinations.SplashDestination.kt</ID> + <ID>NewLineAtEndOfFile:SplitTunnelingDestination.kt$net.mullvad.mullvadvpn.compose.destinations.SplitTunnelingDestination.kt</ID> + <ID>NewLineAtEndOfFile:UdpOverTcpPortInfoDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.UdpOverTcpPortInfoDialogDestination.kt</ID> + <ID>NewLineAtEndOfFile:VerificationPendingDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.VerificationPendingDialogDestination.kt</ID> + <ID>NewLineAtEndOfFile:ViewLogsDestination.kt$net.mullvad.mullvadvpn.compose.destinations.ViewLogsDestination.kt</ID> + <ID>NewLineAtEndOfFile:VpnSettingsDestination.kt$net.mullvad.mullvadvpn.compose.destinations.VpnSettingsDestination.kt</ID> + <ID>NewLineAtEndOfFile:WelcomeDestination.kt$net.mullvad.mullvadvpn.compose.destinations.WelcomeDestination.kt</ID> + <ID>NewLineAtEndOfFile:WireguardCustomPortDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.WireguardCustomPortDialogDestination.kt</ID> + <ID>NewLineAtEndOfFile:WireguardCustomPortNavArgsNavType.kt$net.mullvad.mullvadvpn.compose.navtype.WireguardCustomPortNavArgsNavType.kt</ID> + <ID>NewLineAtEndOfFile:WireguardPortInfoDialogArgumentNavType.kt$net.mullvad.mullvadvpn.compose.navtype.WireguardPortInfoDialogArgumentNavType.kt</ID> + <ID>NewLineAtEndOfFile:WireguardPortInfoDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.WireguardPortInfoDialogDestination.kt</ID> + <ID>PackageNaming:AccessMethodKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:AccessMethodSettingKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:AccountAndDeviceKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:AccountDataKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:AccountHistoryKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:ApiAccessMethodSettingsKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:ApiAddressesKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:AppVersionInfoKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:BridgeEndpointDataKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:BridgeSettingsKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:BridgeStateKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:ConnectionConfigKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:CustomDnsOptionsKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:CustomListKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:CustomListSettingsKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:CustomRelaySettingsKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:DaemonEventKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:DefaultDnsOptionsKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:DeviceEventKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:DeviceKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:DeviceListKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:DeviceRemovalKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:DeviceStateKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:DnsOptionsKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:EndpointKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:ErrorStateKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:ExcludedProcessKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:ExcludedProcessListKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:GeoIpLocationKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:GeographicLocationConstraintKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:InetNetwork.kt$package net.mullvad.talpid.tun_provider</ID> + <ID>PackageNaming:LocationConstraintKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:LocationKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:ManagementInterfaceGrpcKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:ManagementInterfaceKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:NewAccessMethodSettingKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:NormalRelaySettingsKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:ObfuscationEndpointKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:ObfuscationSettingsKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:OpenVpnEndpointDataKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:OpenVpnEndpointKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:OpenvpnConstraintsKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:PortRangeKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:ProxyEndpointKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:PublicKeyKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:QuantumResistantStateKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:RelayKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:RelayListCityKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:RelayListCountryKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:RelayListKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:RelaySettingsKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:RemoveDeviceEventKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:SettingsKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:ShadowsocksEndpointDataKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:SplitTunnelSettingsKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:TransportPortKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:TunConfig.kt$package net.mullvad.talpid.tun_provider</ID> + <ID>PackageNaming:TunnelEndpointKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:TunnelMetadataKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:TunnelOptionsKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:TunnelStateKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:TunnelStateRelayInfoKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:UUIDKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:Udp2TcpObfuscationSettingsKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:VoucherSubmissionKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:WireguardConstraintsKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:WireguardEndpointDataKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PackageNaming:WireguardRelayEndpointDataKt.kt$package mullvad_daemon.management_interface</ID> + <ID>PrintStackTrace:Extensions.kt$ex</ID> + <ID>ProtectedMemberInFinalClass:MullvadDaemon.kt$MullvadDaemon$protected var daemonInterfaceAddress = 0L</ID> + <ID>ReturnCount:AccountExpiryNotification.kt$AccountExpiryNotification$private fun format(expiry: DateTime, remainingTime: Duration): String</ID> + <ID>ReturnCount:RelayNameComparator.kt$RelayNameComparator$private infix fun List<String>.compareWith(other: List<String>): Int</ID> + <ID>ReturnCount:TalpidVpnService.kt$TalpidVpnService$private fun createTun(config: TunConfig): CreateTunResult</ID> + <ID>TooGenericExceptionThrown:ChangelogDestination.kt$ChangelogDestination$throw RuntimeException("'changeLog' argument is mandatory, but was not present!")</ID> + <ID>TooGenericExceptionThrown:DeviceListDestination.kt$DeviceListDestination$throw RuntimeException("'accountToken' argument is mandatory, but was not present!")</ID> + <ID>TooGenericExceptionThrown:PaymentDestination.kt$PaymentDestination$throw RuntimeException("'productId' argument is mandatory, but was not present!")</ID> + <ID>TooGenericExceptionThrown:RemoveDeviceConfirmationDialogDestination.kt$RemoveDeviceConfirmationDialogDestination$throw RuntimeException("'device' argument is mandatory, but was not present!")</ID> + <ID>TooGenericExceptionThrown:WireguardCustomPortDialogDestination.kt$WireguardCustomPortDialogDestination$throw RuntimeException("'navArg' argument is mandatory, but was not present!")</ID> + <ID>TooGenericExceptionThrown:WireguardPortInfoDialogDestination.kt$WireguardPortInfoDialogDestination$throw RuntimeException("'argument' argument is mandatory, but was not present!")</ID> + <ID>TooManyFunctions:DaemonEventKt.kt$DaemonEventKt$Dsl</ID> + <ID>TooManyFunctions:GeoIpLocationKt.kt$GeoIpLocationKt$Dsl</ID> + <ID>TooManyFunctions:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt$ManagementServiceCoroutineImplBase : AbstractCoroutineServerImpl</ID> + <ID>TooManyFunctions:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt$ManagementServiceCoroutineStub : AbstractCoroutineStub</ID> + <ID>TooManyFunctions:MullvadDaemon.kt$MullvadDaemon</ID> + <ID>TooManyFunctions:MullvadVpnService.kt$MullvadVpnService : TalpidVpnService</ID> + <ID>TooManyFunctions:NormalRelaySettingsKt.kt$NormalRelaySettingsKt$Dsl</ID> + <ID>TooManyFunctions:RelayKt.kt$RelayKt$Dsl</ID> + <ID>TooManyFunctions:SettingsKt.kt$SettingsKt$Dsl</ID> + <ID>TooManyFunctions:VpnSettingsViewModel.kt$VpnSettingsViewModel : ViewModel</ID> + <ID>TooManyFunctions:WireguardEndpointDataKt.kt$WireguardEndpointDataKt$Dsl</ID> + <ID>TopLevelPropertyNaming:OutOfTimeUseCase.kt$const val accountRefreshIntervalMillis = 60L * 1000L // 1 minute</ID> + <ID>TopLevelPropertyNaming:OutOfTimeUseCase.kt$const val bufferTimeMillis = 60L * 1000L // 1 minute</ID> + <ID>UnusedParameter:MullvadFileProvider.kt$shareTitle: String</ID> + <ID>UnusedParameter:SimpleMullvadHttpClient.kt$SimpleMullvadHttpClient$body: JSONArray? = null</ID> + <ID>UnusedParameter:VpnSettingsScreen.kt$navigateUdp2TcpInfo: () -> Unit = {}</ID> + <ID>UnusedPrivateMember:ConnectivityListener.kt$ConnectivityListener$private fun finalize()</ID> + <ID>WildcardImport:Destination.kt$import com.ramcosta.composedestinations.spec.*</ID> + <ID>WildcardImport:NavGraphs.kt$import com.ramcosta.composedestinations.spec.*</ID> + <ID>WildcardImport:NavGraphs.kt$import net.mullvad.mullvadvpn.compose.destinations.*</ID> + <ID>WildcardImport:SingleModuleExtensions.kt$import com.ramcosta.composedestinations.spec.*</ID> + <ID>WildcardImport:SingleModuleExtensions.kt$import net.mullvad.mullvadvpn.compose.destinations.*</ID> + </CurrentIssues> +</SmellBaseline> diff --git a/android/config/detekt.yml b/android/config/detekt.yml new file mode 100644 index 0000000000..d6444acd7f --- /dev/null +++ b/android/config/detekt.yml @@ -0,0 +1,910 @@ +build: + maxIssues: 0 + excludeCorrectable: false + weights: + # complexity: 2 + # LongParameterList: 1 + # style: 1 + # comments: 1 + +config: + validation: true + warningsAsErrors: false + checkExhaustiveness: false + # when writing own rules with new properties, exclude the property path e.g.: 'my_rule_set,.*>.*>[my_property]' + excludes: '' + +processors: + active: true + exclude: + - 'DetektProgressListener' + # - 'KtFileCountProcessor' + # - 'PackageCountProcessor' + # - 'ClassCountProcessor' + # - 'FunctionCountProcessor' + # - 'PropertyCountProcessor' + # - 'ProjectComplexityProcessor' + # - 'ProjectCognitiveComplexityProcessor' + # - 'ProjectLLOCProcessor' + # - 'ProjectCLOCProcessor' + # - 'ProjectLOCProcessor' + # - 'ProjectSLOCProcessor' + # - 'LicenseHeaderLoaderExtension' + +console-reports: + active: true + exclude: + - 'ProjectStatisticsReport' + - 'ComplexityReport' + - 'NotificationReport' + - 'FindingsReport' + - 'FileBasedFindingsReport' + # - 'LiteFindingsReport' + +output-reports: + active: true + exclude: + - 'TxtOutputReport' + - 'XmlOutputReport' + - 'MdOutputReport' + - 'SarifOutputReport' + - 'sarif' + +comments: + active: true + AbsentOrWrongFileLicense: + active: false + licenseTemplateFile: 'license.template' + licenseTemplateIsRegex: false + CommentOverPrivateFunction: + active: false + CommentOverPrivateProperty: + active: false + DeprecatedBlockTag: + active: false + EndOfSentenceFormat: + active: false + endOfSentenceFormat: '([.?!][ \t\n\r\f<])|([.?!:]$)' + KDocReferencesNonPublicProperty: + active: false + excludes: + - '**/test/**' + - '**/androidTest/**' + - '**/commonTest/**' + - '**/jvmTest/**' + - '**/androidUnitTest/**' + - '**/androidInstrumentedTest/**' + - '**/jsTest/**' + - '**/iosTest/**' + OutdatedDocumentation: + active: false + matchTypeParameters: true + matchDeclarationsOrder: true + allowParamOnConstructorProperties: false + UndocumentedPublicClass: + active: false + excludes: + - '**/test/**' + - '**/androidTest/**' + - '**/commonTest/**' + - '**/jvmTest/**' + - '**/androidUnitTest/**' + - '**/androidInstrumentedTest/**' + - '**/jsTest/**' + - '**/iosTest/**' + searchInNestedClass: true + searchInInnerClass: true + searchInInnerObject: true + searchInInnerInterface: true + searchInProtectedClass: false + UndocumentedPublicFunction: + active: false + excludes: + - '**/test/**' + - '**/androidTest/**' + - '**/commonTest/**' + - '**/jvmTest/**' + - '**/androidUnitTest/**' + - '**/androidInstrumentedTest/**' + - '**/jsTest/**' + - '**/iosTest/**' + searchProtectedFunction: false + UndocumentedPublicProperty: + active: false + excludes: + - '**/test/**' + - '**/androidTest/**' + - '**/commonTest/**' + - '**/jvmTest/**' + - '**/androidUnitTest/**' + - '**/androidInstrumentedTest/**' + - '**/jsTest/**' + - '**/iosTest/**' + searchProtectedProperty: false + +complexity: + active: true + CognitiveComplexMethod: + active: false + threshold: 15 + ComplexCondition: + active: true + threshold: 4 + ComplexInterface: + active: false + threshold: 10 + includeStaticDeclarations: false + includePrivateDeclarations: false + ignoreOverloaded: false + CyclomaticComplexMethod: + active: true + threshold: 15 + ignoreSingleWhenExpression: false + ignoreSimpleWhenEntries: false + ignoreNestingFunctions: false + nestingFunctions: + - 'also' + - 'apply' + - 'forEach' + - 'isNotNull' + - 'ifNull' + - 'let' + - 'run' + - 'use' + - 'with' + LabeledExpression: + active: false + ignoredLabels: [] + LargeClass: + active: true + threshold: 600 + LongMethod: + active: true + threshold: 80 + LongParameterList: + active: true + functionThreshold: 15 + constructorThreshold: 10 + ignoreDefaultParameters: true + ignoreDataClasses: true + ignoreAnnotatedParameter: [] + MethodOverloading: + active: false + threshold: 6 + NamedArguments: + active: false + threshold: 3 + ignoreArgumentsMatchingNames: false + NestedBlockDepth: + active: true + threshold: 4 + NestedScopeFunctions: + active: false + threshold: 1 + functions: + - 'kotlin.apply' + - 'kotlin.run' + - 'kotlin.with' + - 'kotlin.let' + - 'kotlin.also' + ReplaceSafeCallChainWithRun: + active: false + StringLiteralDuplication: + active: false + excludes: + - '**/test/**' + - '**/androidTest/**' + - '**/commonTest/**' + - '**/jvmTest/**' + - '**/androidUnitTest/**' + - '**/androidInstrumentedTest/**' + - '**/jsTest/**' + - '**/iosTest/**' + threshold: 3 + ignoreAnnotation: true + excludeStringsWithLessThan5Characters: true + ignoreStringsRegex: '$^' + TooManyFunctions: + # Configuration maybe should change when this has been merged: https://github.com/detekt/detekt/issues/6516 + active: true + excludes: + - '**/test/**' + - '**/androidTest/**' + - '**/commonTest/**' + - '**/jvmTest/**' + - '**/androidUnitTest/**' + - '**/androidInstrumentedTest/**' + - '**/jsTest/**' + - '**/iosTest/**' + thresholdInFiles: 30 + thresholdInClasses: 14 + thresholdInInterfaces: 14 + thresholdInObjects: 14 + thresholdInEnums: 14 + ignoreDeprecated: false + ignorePrivate: false + ignoreOverridden: false + +coroutines: + active: true + GlobalCoroutineUsage: + active: false + InjectDispatcher: + active: true + dispatcherNames: + - 'IO' + - 'Default' + - 'Unconfined' + RedundantSuspendModifier: + active: true + SleepInsteadOfDelay: + active: true + SuspendFunSwallowedCancellation: + active: false + SuspendFunWithCoroutineScopeReceiver: + active: false + SuspendFunWithFlowReturnType: + active: true + +empty-blocks: + active: true + EmptyCatchBlock: + active: true + allowedExceptionNameRegex: '_|(ignore|expected).*' + EmptyClassBlock: + active: true + EmptyDefaultConstructor: + active: true + EmptyDoWhileBlock: + active: true + EmptyElseBlock: + active: true + EmptyFinallyBlock: + active: true + EmptyForBlock: + active: true + EmptyFunctionBlock: + active: true + ignoreOverridden: false + EmptyIfBlock: + active: true + EmptyInitBlock: + active: true + EmptyKtFile: + active: true + EmptySecondaryConstructor: + active: true + EmptyTryBlock: + active: true + EmptyWhenBlock: + active: true + EmptyWhileBlock: + active: true + +exceptions: + active: true + ExceptionRaisedInUnexpectedLocation: + active: true + methodNames: + - 'equals' + - 'finalize' + - 'hashCode' + - 'toString' + InstanceOfCheckForException: + active: true + excludes: + - '**/test/**' + - '**/androidTest/**' + - '**/commonTest/**' + - '**/jvmTest/**' + - '**/androidUnitTest/**' + - '**/androidInstrumentedTest/**' + - '**/jsTest/**' + - '**/iosTest/**' + NotImplementedDeclaration: + active: false + ObjectExtendsThrowable: + active: false + PrintStackTrace: + active: true + RethrowCaughtException: + active: true + ReturnFromFinally: + active: true + ignoreLabeled: false + SwallowedException: + active: false + ignoredExceptionTypes: + - 'InterruptedException' + - 'MalformedURLException' + - 'NumberFormatException' + - 'ParseException' + allowedExceptionNameRegex: '_|(ignore|expected).*' + ThrowingExceptionFromFinally: + active: true + ThrowingExceptionInMain: + active: false + ThrowingExceptionsWithoutMessageOrCause: + active: true + excludes: + - '**/test/**' + - '**/androidTest/**' + - '**/commonTest/**' + - '**/jvmTest/**' + - '**/androidUnitTest/**' + - '**/androidInstrumentedTest/**' + - '**/jsTest/**' + - '**/iosTest/**' + exceptions: + - 'ArrayIndexOutOfBoundsException' + - 'Exception' + - 'IllegalArgumentException' + - 'IllegalMonitorStateException' + - 'IllegalStateException' + - 'IndexOutOfBoundsException' + - 'NullPointerException' + - 'RuntimeException' + - 'Throwable' + ThrowingNewInstanceOfSameException: + active: true + TooGenericExceptionCaught: + active: true + excludes: + - '**/test/**' + - '**/androidTest/**' + - '**/commonTest/**' + - '**/jvmTest/**' + - '**/androidUnitTest/**' + - '**/androidInstrumentedTest/**' + - '**/jsTest/**' + - '**/iosTest/**' + exceptionNames: + - 'ArrayIndexOutOfBoundsException' + - 'Error' + - 'Exception' + - 'IllegalMonitorStateException' + - 'IndexOutOfBoundsException' + - 'NullPointerException' + - 'RuntimeException' + - 'Throwable' + allowedExceptionNameRegex: '_|(ignore|expected).*' + TooGenericExceptionThrown: + active: true + exceptionNames: + - 'Error' + - 'Exception' + - 'RuntimeException' + - 'Throwable' + +naming: + active: true + BooleanPropertyNaming: + active: false + allowedPattern: '^(is|has|are)' + ClassNaming: + active: true + classPattern: '[A-Z][a-zA-Z0-9]*' + ConstructorParameterNaming: + active: true + parameterPattern: '[a-z][A-Za-z0-9]*' + privateParameterPattern: '[a-z][A-Za-z0-9]*' + excludeClassPattern: '$^' + EnumNaming: + active: true + enumEntryPattern: '[A-Z][_a-zA-Z0-9]*' + ForbiddenClassName: + active: false + forbiddenName: [] + FunctionMaxLength: + active: false + maximumFunctionNameLength: 30 + FunctionMinLength: + active: false + minimumFunctionNameLength: 3 + FunctionNaming: + active: true + excludes: + - '**/test/**' + - '**/androidTest/**' + - '**/commonTest/**' + - '**/jvmTest/**' + - '**/androidUnitTest/**' + - '**/androidInstrumentedTest/**' + - '**/jsTest/**' + - '**/iosTest/**' + functionPattern: '[a-z][a-zA-Z0-9]*' + excludeClassPattern: '$^' + ignoreAnnotated: ['Composable'] + FunctionParameterNaming: + active: true + parameterPattern: '[a-z][A-Za-z0-9]*' + excludeClassPattern: '$^' + InvalidPackageDeclaration: + active: true + rootPackage: '' + requireRootInDeclaration: false + LambdaParameterNaming: + active: false + parameterPattern: '[a-z][A-Za-z0-9]*|_' + MatchingDeclarationName: + active: true + mustBeFirst: true + MemberNameEqualsClassName: + active: true + ignoreOverridden: true + NoNameShadowing: + active: true + NonBooleanPropertyPrefixedWithIs: + active: false + ObjectPropertyNaming: + active: true + constantPattern: '[A-Za-z][_A-Za-z0-9]*' + propertyPattern: '[A-Za-z][_A-Za-z0-9]*' + privatePropertyPattern: '(_)?[A-Za-z][_A-Za-z0-9]*' + PackageNaming: + active: true + packagePattern: '[a-z]+(\.[a-z][A-Za-z0-9]*)*' + TopLevelPropertyNaming: + active: true + constantPattern: '[A-Z][_A-Za-z0-9]*' + propertyPattern: '[A-Za-z][_A-Za-z0-9]*' + privatePropertyPattern: '_?[A-Za-z][_A-Za-z0-9]*' + VariableMaxLength: + active: false + maximumVariableNameLength: 64 + VariableMinLength: + active: false + minimumVariableNameLength: 1 + VariableNaming: + active: true + variablePattern: '[a-z][A-Za-z0-9]*' + privateVariablePattern: '(_)?[a-z][A-Za-z0-9]*' + excludeClassPattern: '$^' + +performance: + active: true + ArrayPrimitive: + active: true + CouldBeSequence: + active: false + threshold: 3 + ForEachOnRange: + active: true + excludes: + - '**/test/**' + - '**/androidTest/**' + - '**/commonTest/**' + - '**/jvmTest/**' + - '**/androidUnitTest/**' + - '**/androidInstrumentedTest/**' + - '**/jsTest/**' + - '**/iosTest/**' + SpreadOperator: + active: true + excludes: + - '**/test/**' + - '**/androidTest/**' + - '**/commonTest/**' + - '**/jvmTest/**' + - '**/androidUnitTest/**' + - '**/androidInstrumentedTest/**' + - '**/jsTest/**' + - '**/iosTest/**' + UnnecessaryPartOfBinaryExpression: + active: false + UnnecessaryTemporaryInstantiation: + active: true + +potential-bugs: + active: true + AvoidReferentialEquality: + active: true + forbiddenTypePatterns: + - 'kotlin.String' + CastNullableToNonNullableType: + active: false + CastToNullableType: + active: false + Deprecation: + active: false + DontDowncastCollectionTypes: + active: false + DoubleMutabilityForCollection: + active: true + mutableTypes: + - 'kotlin.collections.MutableList' + - 'kotlin.collections.MutableMap' + - 'kotlin.collections.MutableSet' + - 'java.util.ArrayList' + - 'java.util.LinkedHashSet' + - 'java.util.HashSet' + - 'java.util.LinkedHashMap' + - 'java.util.HashMap' + ElseCaseInsteadOfExhaustiveWhen: + active: false + ignoredSubjectTypes: [] + EqualsAlwaysReturnsTrueOrFalse: + active: true + EqualsWithHashCodeExist: + active: true + ExitOutsideMain: + active: false + ExplicitGarbageCollectionCall: + active: true + HasPlatformType: + active: true + IgnoredReturnValue: + active: true + restrictToConfig: true + returnValueAnnotations: + - 'CheckResult' + - '*.CheckResult' + - 'CheckReturnValue' + - '*.CheckReturnValue' + ignoreReturnValueAnnotations: + - 'CanIgnoreReturnValue' + - '*.CanIgnoreReturnValue' + returnValueTypes: + - 'kotlin.sequences.Sequence' + - 'kotlinx.coroutines.flow.*Flow' + - 'java.util.stream.*Stream' + ignoreFunctionCall: [] + ImplicitDefaultLocale: + active: true + ImplicitUnitReturnType: + active: false + allowExplicitReturnType: true + InvalidRange: + active: true + IteratorHasNextCallsNextMethod: + active: true + IteratorNotThrowingNoSuchElementException: + active: true + LateinitUsage: + active: false + excludes: + - '**/test/**' + - '**/androidTest/**' + - '**/commonTest/**' + - '**/jvmTest/**' + - '**/androidUnitTest/**' + - '**/androidInstrumentedTest/**' + - '**/jsTest/**' + - '**/iosTest/**' + ignoreOnClassesPattern: '' + MapGetWithNotNullAssertionOperator: + active: true + MissingPackageDeclaration: + active: false + excludes: ['**/*.kts'] + NullCheckOnMutableProperty: + active: false + NullableToStringCall: + active: false + PropertyUsedBeforeDeclaration: + active: false + UnconditionalJumpStatementInLoop: + active: false + UnnecessaryNotNullCheck: + active: false + UnnecessaryNotNullOperator: + active: true + UnnecessarySafeCall: + active: true + UnreachableCatchBlock: + active: true + UnreachableCode: + active: true + UnsafeCallOnNullableType: + active: true + excludes: + - '**/test/**' + - '**/androidTest/**' + - '**/commonTest/**' + - '**/jvmTest/**' + - '**/androidUnitTest/**' + - '**/androidInstrumentedTest/**' + - '**/jsTest/**' + - '**/iosTest/**' + UnsafeCast: + active: true + UnusedUnaryOperator: + active: true + UselessPostfixExpression: + active: true + WrongEqualsTypeParameter: + active: true + +style: + active: true + AlsoCouldBeApply: + active: false + BracesOnIfStatements: + active: false + singleLine: 'never' + multiLine: 'always' + BracesOnWhenStatements: + active: false + singleLine: 'necessary' + multiLine: 'consistent' + CanBeNonNullable: + active: false + CascadingCallWrapping: + active: false + includeElvis: true + ClassOrdering: + active: false + CollapsibleIfStatements: + active: false + DataClassContainsFunctions: + active: false + conversionFunctionPrefix: + - 'to' + allowOperators: false + DataClassShouldBeImmutable: + active: false + DestructuringDeclarationWithTooManyEntries: + active: true + maxDestructuringEntries: 3 + ignoreAnnotated: ['Composable'] + DoubleNegativeLambda: + active: false + negativeFunctions: + - reason: 'Use `takeIf` instead.' + value: 'takeUnless' + - reason: 'Use `all` instead.' + value: 'none' + negativeFunctionNameParts: + - 'not' + - 'non' + EqualsNullCall: + active: true + EqualsOnSignatureLine: + active: false + ExplicitCollectionElementAccessMethod: + active: false + ExplicitItLambdaParameter: + active: true + ExpressionBodySyntax: + active: false + includeLineWrapping: false + ForbiddenAnnotation: + active: false + annotations: + - reason: 'it is a java annotation. Use `Suppress` instead.' + value: 'java.lang.SuppressWarnings' + - reason: 'it is a java annotation. Use `kotlin.Deprecated` instead.' + value: 'java.lang.Deprecated' + - reason: 'it is a java annotation. Use `kotlin.annotation.MustBeDocumented` instead.' + value: 'java.lang.annotation.Documented' + - reason: 'it is a java annotation. Use `kotlin.annotation.Target` instead.' + value: 'java.lang.annotation.Target' + - reason: 'it is a java annotation. Use `kotlin.annotation.Retention` instead.' + value: 'java.lang.annotation.Retention' + - reason: 'it is a java annotation. Use `kotlin.annotation.Repeatable` instead.' + value: 'java.lang.annotation.Repeatable' + - reason: 'Kotlin does not support @Inherited annotation, see https://youtrack.jetbrains.com/issue/KT-22265' + value: 'java.lang.annotation.Inherited' + ForbiddenComment: + active: true + comments: + - reason: 'Forbidden FIXME todo marker in comment, please fix the problem.' + value: 'FIXME:' + - reason: 'Forbidden STOPSHIP todo marker in comment, please address the problem before shipping the code.' + value: 'STOPSHIP:' + - reason: 'Forbidden TODO todo marker in comment, please do the changes.' + value: 'TODO:' + allowedPatterns: '' + ForbiddenImport: + active: false + imports: [] + forbiddenPatterns: '' + ForbiddenMethodCall: + active: false + methods: + - reason: 'print does not allow you to configure the output stream. Use a logger instead.' + value: 'kotlin.io.print' + - reason: 'println does not allow you to configure the output stream. Use a logger instead.' + value: 'kotlin.io.println' + ForbiddenSuppress: + active: false + rules: [] + ForbiddenVoid: + active: true + ignoreOverridden: false + ignoreUsageInGenerics: false + FunctionOnlyReturningConstant: + active: true + ignoreOverridableFunction: true + ignoreActualFunction: true + excludedFunctions: [] + LoopWithTooManyJumpStatements: + active: true + maxJumpCount: 1 + MagicNumber: + active: true + excludes: + - '**/test/**' + - '**/androidTest/**' + - '**/commonTest/**' + - '**/jvmTest/**' + - '**/androidUnitTest/**' + - '**/androidInstrumentedTest/**' + - '**/jsTest/**' + - '**/iosTest/**' + - '**/*.kts' + ignoreNumbers: + - '-1' + - '0' + - '1' + - '2' + ignoreHashCodeFunction: true + ignorePropertyDeclaration: true + ignoreLocalVariableDeclaration: false + ignoreConstantDeclaration: true + ignoreCompanionObjectPropertyDeclaration: true + ignoreAnnotation: false + ignoreNamedArgument: true + ignoreEnums: false + ignoreRanges: false + ignoreExtensionFunctions: true + ignoreAnnotated: ['Preview'] + MandatoryBracesLoops: + active: false + MaxChainedCallsOnSameLine: + active: false + maxChainedCalls: 5 + MaxLineLength: + active: true + maxLineLength: 120 + excludePackageStatements: true + excludeImportStatements: true + excludeCommentStatements: false + excludeRawStrings: true + MayBeConst: + active: true + ModifierOrder: + active: true + MultilineLambdaItParameter: + active: false + MultilineRawStringIndentation: + active: false + indentSize: 4 + trimmingMethods: + - 'trimIndent' + - 'trimMargin' + NestedClassesVisibility: + active: true + NewLineAtEndOfFile: + active: true + NoTabs: + active: false + NullableBooleanCheck: + active: false + ObjectLiteralToLambda: + active: true + OptionalAbstractKeyword: + active: true + OptionalUnit: + active: false + PreferToOverPairSyntax: + active: false + ProtectedMemberInFinalClass: + active: true + RedundantExplicitType: + active: false + RedundantHigherOrderMapUsage: + active: true + RedundantVisibilityModifierRule: + active: false + ReturnCount: + active: true + max: 2 + excludedFunctions: + - 'equals' + excludeLabeled: false + excludeReturnFromLambda: true + excludeGuardClauses: false + SafeCast: + active: true + SerialVersionUIDInSerializableClass: + active: true + SpacingBetweenPackageAndImports: + active: false + StringShouldBeRawString: + active: false + maxEscapedCharacterCount: 2 + ignoredCharacters: [] + ThrowsCount: + active: true + max: 2 + excludeGuardClauses: false + TrailingWhitespace: + active: false + TrimMultilineRawString: + active: false + trimmingMethods: + - 'trimIndent' + - 'trimMargin' + UnderscoresInNumericLiterals: + active: false + acceptableLength: 4 + allowNonStandardGrouping: false + UnnecessaryAbstractClass: + active: true + UnnecessaryAnnotationUseSiteTarget: + active: false + UnnecessaryApply: + active: true + UnnecessaryBackticks: + active: false + UnnecessaryBracesAroundTrailingLambda: + active: false + UnnecessaryFilter: + active: true + UnnecessaryInheritance: + active: true + UnnecessaryInnerClass: + active: false + UnnecessaryLet: + active: false + UnnecessaryParentheses: + active: false + allowForUnclearPrecedence: false + UntilInsteadOfRangeTo: + active: false + UnusedImports: + active: false + UnusedParameter: + active: true + allowedNames: 'ignored|expected' + UnusedPrivateClass: + active: true + UnusedPrivateMember: + active: true + allowedNames: '' + ignoreAnnotated: ['Preview'] + UnusedPrivateProperty: + active: true + allowedNames: '_|ignored|expected|serialVersionUID' + UseAnyOrNoneInsteadOfFind: + active: true + UseArrayLiteralsInAnnotations: + active: true + UseCheckNotNull: + active: true + UseCheckOrError: + active: true + UseDataClass: + active: false + allowVars: false + UseEmptyCounterpart: + active: false + UseIfEmptyOrIfBlank: + active: false + UseIfInsteadOfWhen: + active: false + ignoreWhenContainingVariableDeclaration: false + UseIsNullOrEmpty: + active: true + UseLet: + active: false + UseOrEmpty: + active: true + UseRequire: + active: true + UseRequireNotNull: + active: true + UseSumOfInsteadOfFlatMapSize: + active: false + UselessCallOnNotNull: + active: true + UtilityClassWithPublicConstructor: + active: true + VarCouldBeVal: + active: true + ignoreLateinitVar: false + WildcardImport: + active: true + excludeImports: + - 'java.util.*' diff --git a/android/gradle/verification-metadata.xml b/android/gradle/verification-metadata.xml index 05ce1e2cc1..bd2f256059 100644 --- a/android/gradle/verification-metadata.xml +++ b/android/gradle/verification-metadata.xml @@ -1915,6 +1915,14 @@ <sha256 value="edbabcaf6450a4f63eeffb9b6dd31bbf5d0940aed46c9afc14afa78dc2ea9e7e" origin="Generated by Gradle"/> </artifact> </component> + <component group="com.beust" name="jcommander" version="1.82"> + <artifact name="jcommander-1.82.jar"> + <sha256 value="deeac157c8de6822878d85d0c7bc8467a19cc8484d37788f7804f039dde280b1" origin="Generated by Gradle"/> + </artifact> + <artifact name="jcommander-1.82.module"> + <sha256 value="936a2d8bce0f84da18500f4e119488b93106dbaa83b8462fe996bcd0e1c38b16" origin="Generated by Gradle"/> + </artifact> + </component> <component group="com.esotericsoftware" name="minlog" version="1.3.1"> <artifact name="minlog-1.3.1.jar"> <sha256 value="5d4d632cfbebfe0a7644501cc303570b691406181bee65e9916b921c767d7c72" origin="Generated by Gradle"/> @@ -2666,6 +2674,27 @@ <sha256 value="9c17ca630fc6f92a3ad41025eee82a2b6d09cce05b82975daa1b8c10420d8a9e" origin="Generated by Gradle"/> </artifact> </component> + <component group="io.github.davidburstrom.contester" name="contester-breakpoint" version="0.2.0"> + <artifact name="contester-breakpoint-0.2.0.jar"> + <sha256 value="672cbebb5d45a72b35dd81fd6127e187451bb6fb7fba35315bbdf2f57cfce835" origin="Generated by Gradle"/> + </artifact> + <artifact name="contester-breakpoint-0.2.0.module"> + <sha256 value="2593c5d9f7a60406e6aeace60563fcd923717536fdd27806414297e93d609fe5" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="io.github.detekt.sarif4k" name="sarif4k" version="0.4.0"> + <artifact name="sarif4k-0.4.0.module"> + <sha256 value="f261835e90afc6c6882c2828b13d33ec835d16affd062c666b6d54009f6d7f2c" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="io.github.detekt.sarif4k" name="sarif4k-jvm" version="0.4.0"> + <artifact name="sarif4k-jvm-0.4.0.jar"> + <sha256 value="ead041938323b34336138cf43e1875d8aff90b5e7e9411dbede3d201a327f1a7" origin="Generated by Gradle"/> + </artifact> + <artifact name="sarif4k-jvm-0.4.0.module"> + <sha256 value="c988239674f2b7149af0bfc460cd53586ac8b2ccc72530084b205be32a1e3127" origin="Generated by Gradle"/> + </artifact> + </component> <component group="io.github.java-diff-utils" name="java-diff-utils" version="4.12"> <artifact name="java-diff-utils-4.12.jar"> <sha256 value="9990a2039778f6b4cc94790141c2868864eacee0620c6c459451121a901cd5b5" origin="Generated by Gradle"/> @@ -2700,6 +2729,198 @@ <sha256 value="aeeee23a3303d811bca8790ea7f25b534314861c03cff36dafdcc2180969eb97" origin="Generated by Gradle"/> </artifact> </component> + <component group="io.gitlab.arturbosch.detekt" name="detekt-api" version="1.23.4"> + <artifact name="detekt-api-1.23.4.jar"> + <sha256 value="462ed6bd2154b0f329139879345a9d0d4bd71eece4ad8b36ca6058d44181acb4" origin="Generated by Gradle"/> + </artifact> + <artifact name="detekt-api-1.23.4.module"> + <sha256 value="83c6eb15c588e72f5062a0cc671f21f901fee5d67aeca992f32081737c50ca27" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="io.gitlab.arturbosch.detekt" name="detekt-cli" version="1.23.4"> + <artifact name="detekt-cli-1.23.4.jar"> + <sha256 value="1dc2b4455cd7c922597ec1db6e642ded79c301e37ff3e74f8ea6c3368a377ae7" origin="Generated by Gradle"/> + </artifact> + <artifact name="detekt-cli-1.23.4.module"> + <sha256 value="609132237d038ba1d69c8afa6dad145083d42c0a21176d1eb8722b78a0da360a" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="io.gitlab.arturbosch.detekt" name="detekt-core" version="1.23.4"> + <artifact name="detekt-core-1.23.4.jar"> + <sha256 value="4158105746b9190b1a6496e10b48a4d4854e710f6a190f2018ac2a77d2ef67b1" origin="Generated by Gradle"/> + </artifact> + <artifact name="detekt-core-1.23.4.module"> + <sha256 value="8f284e8f8d2b823c3e81e347e4fe279eb11b9b8bf9b30111762ef753ed9c817d" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="io.gitlab.arturbosch.detekt" name="detekt-gradle-plugin" version="1.23.4"> + <artifact name="detekt-gradle-plugin-1.23.4.jar"> + <sha256 value="1dee221cfc8638593814cec72cf15741413fee931d1eb6fb71b89878bfbcc3b9" origin="Generated by Gradle"/> + </artifact> + <artifact name="detekt-gradle-plugin-1.23.4.module"> + <sha256 value="4858355f12f5eaaf5626a9b681544bde1056059c4f60b6d37c3a4d637dea8be9" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="io.gitlab.arturbosch.detekt" name="detekt-metrics" version="1.23.4"> + <artifact name="detekt-metrics-1.23.4.jar"> + <sha256 value="d5210e1f870d95ac2cea2a3241daafed103652442bb77cb8ce2732a90b869cbe" origin="Generated by Gradle"/> + </artifact> + <artifact name="detekt-metrics-1.23.4.module"> + <sha256 value="f549ad6e3487dd41ea0e0d89f752c858b1f2ae77e85a75afe7efbf9638a834ac" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="io.gitlab.arturbosch.detekt" name="detekt-parser" version="1.23.4"> + <artifact name="detekt-parser-1.23.4.jar"> + <sha256 value="5618d9ee63b9357d749da6dd917ab2eb5d5abcb9a58cc02696d0ee7d3e7939fe" origin="Generated by Gradle"/> + </artifact> + <artifact name="detekt-parser-1.23.4.module"> + <sha256 value="75308c557cc41c706c590fb6f383177514d51258294a35b01acf48b0f34426bf" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="io.gitlab.arturbosch.detekt" name="detekt-psi-utils" version="1.23.4"> + <artifact name="detekt-psi-utils-1.23.4.jar"> + <sha256 value="e2cd6e5ea4a3897f691733121c452b1df966ece2d4b8b1b8a0995aa8bf9e6eda" origin="Generated by Gradle"/> + </artifact> + <artifact name="detekt-psi-utils-1.23.4.module"> + <sha256 value="696bf50e5812625478ccd6a2e5618ab27156c19eee8a72152edd83ada2da7828" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="io.gitlab.arturbosch.detekt" name="detekt-report-html" version="1.23.4"> + <artifact name="detekt-report-html-1.23.4.jar"> + <sha256 value="562172d8d6dd00f3cc35392d74f3f272bf403523e8961405f688518bbaf9013a" origin="Generated by Gradle"/> + </artifact> + <artifact name="detekt-report-html-1.23.4.module"> + <sha256 value="94c362664bc0826464b9be38e4941c0a11692af74169c4e7c197bbde690845fe" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="io.gitlab.arturbosch.detekt" name="detekt-report-md" version="1.23.4"> + <artifact name="detekt-report-md-1.23.4.jar"> + <sha256 value="3ff733742fb4609f0dedf1dee998bacd5026c28a44ebede15c803fffa28b4f32" origin="Generated by Gradle"/> + </artifact> + <artifact name="detekt-report-md-1.23.4.module"> + <sha256 value="ce451b2e7703c05d7ec1841791d553282805369bb661973610afc3812bf8c4c2" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="io.gitlab.arturbosch.detekt" name="detekt-report-sarif" version="1.23.4"> + <artifact name="detekt-report-sarif-1.23.4.jar"> + <sha256 value="93a4cd5915b7d8668c2838be27ce10755beb120212c40293b5cdb3f52818b4c9" origin="Generated by Gradle"/> + </artifact> + <artifact name="detekt-report-sarif-1.23.4.module"> + <sha256 value="477f143b4b59746edaa8d73217b777c216e188df1788c7a522aa12e846c88815" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="io.gitlab.arturbosch.detekt" name="detekt-report-txt" version="1.23.4"> + <artifact name="detekt-report-txt-1.23.4.jar"> + <sha256 value="7ac54cc44d367c8d309d49e66f65a686f8ac69df89d9253f6aa414c5b06f9d65" origin="Generated by Gradle"/> + </artifact> + <artifact name="detekt-report-txt-1.23.4.module"> + <sha256 value="d438f04816525e7fdcf775d5201208b12c40d03228fe9c7233d92f9a63b6c1ad" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="io.gitlab.arturbosch.detekt" name="detekt-report-xml" version="1.23.4"> + <artifact name="detekt-report-xml-1.23.4.jar"> + <sha256 value="643393d6bf4c8c640e421f1266402b76877490ddcd304f5eefe5bc91c5fcef28" origin="Generated by Gradle"/> + </artifact> + <artifact name="detekt-report-xml-1.23.4.module"> + <sha256 value="750a356c3e079d9ee40aff9df548ebe7dc05fe088396ddcc7bf92d5044e02f33" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="io.gitlab.arturbosch.detekt" name="detekt-rules" version="1.23.4"> + <artifact name="detekt-rules-1.23.4.jar"> + <sha256 value="9cd96d232a6b26e0ed93b82fcec709a4855328d0faed5841841d7671aa418037" origin="Generated by Gradle"/> + </artifact> + <artifact name="detekt-rules-1.23.4.module"> + <sha256 value="cda79a06c3587795121ac7f034b2c1113730fad31df9ae9ab91bcadf5f604bf0" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="io.gitlab.arturbosch.detekt" name="detekt-rules-complexity" version="1.23.4"> + <artifact name="detekt-rules-complexity-1.23.4.jar"> + <sha256 value="8e728e1183cb4f6d09681718590cb1b4cd1087dc93e53625dc68e9b5c7f7a35b" origin="Generated by Gradle"/> + </artifact> + <artifact name="detekt-rules-complexity-1.23.4.module"> + <sha256 value="d081f12bb4e36b0c0199f3b6c3d5d906eb85c58774f353de801cec96d4ad0c8f" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="io.gitlab.arturbosch.detekt" name="detekt-rules-coroutines" version="1.23.4"> + <artifact name="detekt-rules-coroutines-1.23.4.jar"> + <sha256 value="01be9f68131b770722a9764808742a909f4d2c2b1019cec019ce1bda8ef240c2" origin="Generated by Gradle"/> + </artifact> + <artifact name="detekt-rules-coroutines-1.23.4.module"> + <sha256 value="da82ad40e8d0a5a3231290a251f761c4db567c8c6886d9722e18191f6721e215" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="io.gitlab.arturbosch.detekt" name="detekt-rules-documentation" version="1.23.4"> + <artifact name="detekt-rules-documentation-1.23.4.jar"> + <sha256 value="4ae205a1967a79b63238f8f889bda8b13c35c29687bf316cc136b7c34d8c2f8d" origin="Generated by Gradle"/> + </artifact> + <artifact name="detekt-rules-documentation-1.23.4.module"> + <sha256 value="0bc48dcc0f138870a11f496c0a30823c0674f797fb5dd22cb8a13ffbefb91f29" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="io.gitlab.arturbosch.detekt" name="detekt-rules-empty" version="1.23.4"> + <artifact name="detekt-rules-empty-1.23.4.jar"> + <sha256 value="e6f7c6103a581d4f06e161a8f57710e0d5adc3ec4fa7ad737b2d7a03b8d331cd" origin="Generated by Gradle"/> + </artifact> + <artifact name="detekt-rules-empty-1.23.4.module"> + <sha256 value="84f0571853b8f39b314bf909d6dd5eae4e4b648e93cc8297a45c744bcc838916" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="io.gitlab.arturbosch.detekt" name="detekt-rules-errorprone" version="1.23.4"> + <artifact name="detekt-rules-errorprone-1.23.4.jar"> + <sha256 value="c732974bc034b82b9517acc331aa9d2a823d72c52a060f520e1eff9f50f44f3f" origin="Generated by Gradle"/> + </artifact> + <artifact name="detekt-rules-errorprone-1.23.4.module"> + <sha256 value="1c19f471e6518378a5ff7a08e0176eb3042c26400e09e567e7132ac56e235bb4" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="io.gitlab.arturbosch.detekt" name="detekt-rules-exceptions" version="1.23.4"> + <artifact name="detekt-rules-exceptions-1.23.4.jar"> + <sha256 value="dc96df88c5121eb4fcaf732c777bdfdfb3ae629698e464bbd65603532533f485" origin="Generated by Gradle"/> + </artifact> + <artifact name="detekt-rules-exceptions-1.23.4.module"> + <sha256 value="54557951d8f27a57fe6079e5f19823c78dbf0a430cabf1cdc32e82ee77ecb287" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="io.gitlab.arturbosch.detekt" name="detekt-rules-naming" version="1.23.4"> + <artifact name="detekt-rules-naming-1.23.4.jar"> + <sha256 value="767598b56c6dc1216f462233bb77163ee73e3c9cecb262692999f7d2d792845c" origin="Generated by Gradle"/> + </artifact> + <artifact name="detekt-rules-naming-1.23.4.module"> + <sha256 value="2a46d3391fcbc13544bafa81273d19b226083e6f92c36233b421bfb5b8000552" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="io.gitlab.arturbosch.detekt" name="detekt-rules-performance" version="1.23.4"> + <artifact name="detekt-rules-performance-1.23.4.jar"> + <sha256 value="1c4dadb00cda6bb669d1c76e6a7ad73251c3e59861a7eb5bd9562252595ae1f7" origin="Generated by Gradle"/> + </artifact> + <artifact name="detekt-rules-performance-1.23.4.module"> + <sha256 value="377ef3db81c58b7070577aadba56a1aba1daf0a288d8bb67cc597eefd91a897f" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="io.gitlab.arturbosch.detekt" name="detekt-rules-style" version="1.23.4"> + <artifact name="detekt-rules-style-1.23.4.jar"> + <sha256 value="6b1f98944111268c4670d0b7937e97290837bce33220f199eb7ae496b4631026" origin="Generated by Gradle"/> + </artifact> + <artifact name="detekt-rules-style-1.23.4.module"> + <sha256 value="44f5261052c5610ab3265514cd1bfe20e0c10744ecddae0d502c3dfd31ffbd5e" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="io.gitlab.arturbosch.detekt" name="detekt-tooling" version="1.23.4"> + <artifact name="detekt-tooling-1.23.4.jar"> + <sha256 value="fe75f71d46c09aefc3a540c104a62b969d7da6830252efce8f69453ca942cff4" origin="Generated by Gradle"/> + </artifact> + <artifact name="detekt-tooling-1.23.4.module"> + <sha256 value="f64652abc4a717274cd1421c1156fd1c438b57d247cbcc1c209312285d49d451" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="io.gitlab.arturbosch.detekt" name="detekt-utils" version="1.23.4"> + <artifact name="detekt-utils-1.23.4.jar"> + <sha256 value="6f25ceb3bb1d3a45da2907fc0b71d1dcd075343de024d75f33bcd938368cb200" origin="Generated by Gradle"/> + </artifact> + <artifact name="detekt-utils-1.23.4.module"> + <sha256 value="5be0fd6355d0e9539899cbb0ff733906de36a64897255b86fde6880e8ad1d871" origin="Generated by Gradle"/> + </artifact> + </component> <component group="io.grpc" name="grpc-api" version="1.45.1"> <artifact name="grpc-api-1.45.1.jar"> <sha256 value="dc381fe018fb10bba8cc66f98db1050a70cee49a8270017c22ec6f77b10f13e5" origin="Generated by Gradle"/> @@ -3354,6 +3575,11 @@ <sha256 value="a25024fe5da8440de01af045c4fcb954a22f078738ec02616085f0cfc57b2702" origin="Generated by Gradle"/> </artifact> </component> + <component group="org.jetbrains.kotlin" name="kotlin-compiler-embeddable" version="1.9.21"> + <artifact name="kotlin-compiler-embeddable-1.9.21.jar"> + <sha256 value="46904b3d3f516560a48e0d93d9c7bfc63650b22d9f68f7a37eab5e5c5f3f785a" origin="Generated by Gradle"/> + </artifact> + </component> <component group="org.jetbrains.kotlin" name="kotlin-compiler-runner" version="1.8.20"> <artifact name="kotlin-compiler-runner-1.8.20.jar"> <sha256 value="97e43499428f66889bc935c8bd9a836875b75178c61fd396603ce41d6db2f748" origin="Generated by Gradle"/> @@ -3389,6 +3615,11 @@ <sha256 value="a939cb5d6ee2a758c9285bd9f3286824beabe12d9a4b5f49f784d0bca329dea5" origin="Generated by Gradle"/> </artifact> </component> + <component group="org.jetbrains.kotlin" name="kotlin-daemon-embeddable" version="1.9.21"> + <artifact name="kotlin-daemon-embeddable-1.9.21.jar"> + <sha256 value="01152ffb41b076e9c55083c513e1ef05f303cd5a95cedffcb89e124e340df11e" origin="Generated by Gradle"/> + </artifact> + </component> <component group="org.jetbrains.kotlin" name="kotlin-gradle-plugin" version="1.8.20"> <artifact name="kotlin-gradle-plugin-1.8.20-gradle76.jar"> <sha256 value="4445babba17729ecadd13ffc5e6e84bf988f52c4da4dfde39450d4310fd8c103" origin="Generated by Gradle"/> @@ -3561,6 +3792,11 @@ <sha256 value="49b66f9a89d50fd2954c2e8aeac80e4f488b0a09322a25efad6261576713dc0f" origin="Generated by Gradle"/> </artifact> </component> + <component group="org.jetbrains.kotlin" name="kotlin-reflect" version="1.9.21"> + <artifact name="kotlin-reflect-1.9.21.jar"> + <sha256 value="a133e049f0a4e249651582428e166de4dfac9546adf436b6172119255ede510f" origin="Generated by Gradle"/> + </artifact> + </component> <component group="org.jetbrains.kotlin" name="kotlin-sam-with-receiver" version="1.8.20"> <artifact name="kotlin-sam-with-receiver-1.8.20-gradle76.jar"> <sha256 value="731a782a86f68cad94c9dd6df51df040d6f5b9e9c4d454a0dcc7addfd3f7526d" origin="Generated by Gradle"/> @@ -3589,6 +3825,11 @@ <sha256 value="a26a6256a76f766ab8bacdb409b3f8c940d999712a8e88864252b678d66bab9e" origin="Generated by Gradle"/> </artifact> </component> + <component group="org.jetbrains.kotlin" name="kotlin-script-runtime" version="1.9.21"> + <artifact name="kotlin-script-runtime-1.9.21.jar"> + <sha256 value="1b1c74d476ffa41985b0b95dbe78ea5052061889f8106f1ae6cb5ee17f323f19" origin="Generated by Gradle"/> + </artifact> + </component> <component group="org.jetbrains.kotlin" name="kotlin-scripting-common" version="1.8.20"> <artifact name="kotlin-scripting-common-1.8.20.jar"> <sha256 value="a1c6cf4bb49db97a7082bc461acfdf3e163af1b625ab9baa5d7e3e5f9648badc" origin="Generated by Gradle"/> @@ -4045,6 +4286,40 @@ <sha256 value="505008736a6cfab649f81db603eee3b2f828f5d877712a38939efdd5f1fc5170" origin="Generated by Gradle"/> </artifact> </component> + <component group="org.jetbrains.kotlinx" name="kotlinx-html-jvm" version="0.8.1"> + <artifact name="kotlinx-html-jvm-0.8.1.jar"> + <sha256 value="98bda1c78a5028a134ceb25b63f5c130c89349730d35fd47ef7490b6bf0b63b3" origin="Generated by Gradle"/> + </artifact> + <artifact name="kotlinx-html-jvm-0.8.1.module"> + <sha256 value="2e6147bd8326ca47be957230ad2ecb3aee8e194a0afdb73a6776116eed7a4a5f" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="org.jetbrains.kotlinx" name="kotlinx-serialization-core" version="1.4.1"> + <artifact name="kotlinx-serialization-core-1.4.1.module"> + <sha256 value="60e581c397ddb9461ec1f1dee5bbb4a23bb7ec7d09b296024196220022aa7090" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="org.jetbrains.kotlinx" name="kotlinx-serialization-core-jvm" version="1.4.1"> + <artifact name="kotlinx-serialization-core-jvm-1.4.1.jar"> + <sha256 value="eba7f1c854296e4ce1418fb01360f8f10c5683e7c45aa3472018417a067636f3" origin="Generated by Gradle"/> + </artifact> + <artifact name="kotlinx-serialization-core-jvm-1.4.1.module"> + <sha256 value="73bc94bdd5fc86621509a6715c3fe344904ee7db5806a0c61792ce2356089ee9" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="org.jetbrains.kotlinx" name="kotlinx-serialization-json" version="1.4.1"> + <artifact name="kotlinx-serialization-json-1.4.1.module"> + <sha256 value="e9922300aff663e55ecef7d3fca305cb60a14755b1f980d94039e3c1cab645cc" origin="Generated by Gradle"/> + </artifact> + </component> + <component group="org.jetbrains.kotlinx" name="kotlinx-serialization-json-jvm" version="1.4.1"> + <artifact name="kotlinx-serialization-json-jvm-1.4.1.jar"> + <sha256 value="af604c46737121d4225fdb60ef0e17766a3c94b7c1c9ef76b4e3a5c7733d557e" origin="Generated by Gradle"/> + </artifact> + <artifact name="kotlinx-serialization-json-jvm-1.4.1.module"> + <sha256 value="c8fbfde4b5ee1e41a69175165e839991d1501665a7590e23162326501ac6122c" origin="Generated by Gradle"/> + </artifact> + </component> <component group="org.jsoup" name="jsoup" version="1.16.1"> <artifact name="jsoup-1.16.1.jar"> <sha256 value="1f115726540ddf71958c14bc517ebfc49cf481e91cd917b0face84f01272e901" origin="Generated by Gradle"/> @@ -4276,6 +4551,11 @@ <sha256 value="d3ef575e3e4979678dc01bf1dcce51021493b4d11fb7f1be8ad982877c16a1c0" origin="Generated by Gradle"/> </artifact> </component> + <component group="org.snakeyaml" name="snakeyaml-engine" version="2.6"> + <artifact name="snakeyaml-engine-2.6.jar"> + <sha256 value="2652199af40c9aa2f1782400d2dfbbf4e5226208c4e05ddd4059c3d6d9cd1505" origin="Generated by Gradle"/> + </artifact> + </component> <component group="org.sonatype.goodies" name="package-url-java" version="1.1.1"> <artifact name="package-url-java-1.1.1.jar"> <sha256 value="15297862342b494a535742fba90ea8a321cd13e1d0dc4c61b7a3b18ce385e1a8" origin="Generated by Gradle"/> diff --git a/android/lib/billing/src/main/kotlin/net/mullvad/mullvadvpn/lib/billing/BillingRepository.kt b/android/lib/billing/src/main/kotlin/net/mullvad/mullvadvpn/lib/billing/BillingRepository.kt index f9239516d9..6b3098fad0 100644 --- a/android/lib/billing/src/main/kotlin/net/mullvad/mullvadvpn/lib/billing/BillingRepository.kt +++ b/android/lib/billing/src/main/kotlin/net/mullvad/mullvadvpn/lib/billing/BillingRepository.kt @@ -131,12 +131,8 @@ class BillingRepository(context: Context) { val activity = activityProvider() // Launch the billing flow billingClient.launchBillingFlow(activity, billingFlowParams) - } catch (t: Throwable) { - if (t is BillingException) { - t.toBillingResult() - } else { - throw t - } + } catch (t: BillingException) { + t.toBillingResult() } } @@ -150,15 +146,12 @@ class BillingRepository(context: Context) { .build() billingClient.queryPurchasesAsync(queryPurchaseHistoryParams) - } catch (t: Throwable) { - if (t is BillingException) { - t.toPurchasesResult() - } else { - throw t - } + } catch (t: BillingException) { + t.toPurchasesResult() } } + @Suppress("TooGenericExceptionCaught") private suspend fun queryProductDetails(productIds: List<String>): ProductDetailsResult { return try { ensureConnected() @@ -174,15 +167,13 @@ class BillingRepository(context: Context) { params.setProductList(productList) billingClient.queryProductDetails(params.build()) + } catch (billingException: BillingException) { + ProductDetailsResult(billingException.toBillingResult(), null) } catch (t: Throwable) { - if (t is BillingException) { - return ProductDetailsResult(t.toBillingResult(), null) - } else { - return ProductDetailsResult( - BillingResult.newBuilder().setResponseCode(BillingResponseCode.ERROR).build(), - null - ) - } + ProductDetailsResult( + BillingResult.newBuilder().setResponseCode(BillingResponseCode.ERROR).build(), + null + ) } } } diff --git a/android/lib/common/src/main/kotlin/net/mullvad/mullvadvpn/lib/common/util/CommonStringExtensions.kt b/android/lib/common/src/main/kotlin/net/mullvad/mullvadvpn/lib/common/util/CommonStringExtensions.kt index 06a2de9148..536fea3d24 100644 --- a/android/lib/common/src/main/kotlin/net/mullvad/mullvadvpn/lib/common/util/CommonStringExtensions.kt +++ b/android/lib/common/src/main/kotlin/net/mullvad/mullvadvpn/lib/common/util/CommonStringExtensions.kt @@ -10,7 +10,9 @@ private const val SPACE_CHAR = ' ' fun String.parseAsDateTime(): DateTime? { return try { DateTime.parse(this, DateTimeFormat.forPattern(EXPIRY_FORMAT)) - } catch (ex: Exception) { + } catch (ex: IllegalArgumentException) { + null + } catch (ex: UnsupportedOperationException) { null } } diff --git a/android/lib/ipc/src/main/kotlin/net/mullvad/mullvadvpn/lib/ipc/HandlerFlow.kt b/android/lib/ipc/src/main/kotlin/net/mullvad/mullvadvpn/lib/ipc/HandlerFlow.kt index 4d60cf4d7b..7b839a3658 100644 --- a/android/lib/ipc/src/main/kotlin/net/mullvad/mullvadvpn/lib/ipc/HandlerFlow.kt +++ b/android/lib/ipc/src/main/kotlin/net/mullvad/mullvadvpn/lib/ipc/HandlerFlow.kt @@ -27,15 +27,12 @@ class HandlerFlow<T>(looper: Looper, private val extractor: (Message) -> T) : try { channel.trySendBlocking(extractedData) - } catch (exception: Exception) { - when (exception) { - is ClosedSendChannelException, - is CancellationException -> { - Log.w("mullvad", "Received a message after HandlerFlow was closed", exception) - removeCallbacksAndMessages(null) - } - else -> throw exception - } + } catch (exception: ClosedSendChannelException) { + Log.w("mullvad", "Received a message after HandlerFlow was closed", exception) + removeCallbacksAndMessages(null) + } catch (exception: CancellationException) { + Log.w("mullvad", "Received a message after HandlerFlow was cancelled", exception) + removeCallbacksAndMessages(null) } } } diff --git a/android/lib/talpid/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt b/android/lib/talpid/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt index 1d43b6f9f9..94b097fe13 100644 --- a/android/lib/talpid/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt +++ b/android/lib/talpid/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt @@ -141,7 +141,7 @@ open class TalpidVpnService : VpnService() { return when (address) { is Inet4Address -> 32 is Inet6Address -> 128 - else -> throw RuntimeException("Invalid IP address (not IPv4 nor IPv6)") + else -> throw IllegalArgumentException("Invalid IP address (not IPv4 nor IPv6)") } } diff --git a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt index 107f5d35fe..52e662c771 100644 --- a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt +++ b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt @@ -296,30 +296,44 @@ class MullvadDaemon( quantumResistant: QuantumResistantState ) + // Used by JNI + @Suppress("unused") private fun notifyAppVersionInfoEvent(appVersionInfo: AppVersionInfo) { onAppVersionInfoChange?.invoke(appVersionInfo) } + // Used by JNI + @Suppress("unused") private fun notifyRelayListEvent(relayList: RelayList) { onRelayListChange?.invoke(relayList) } + // Used by JNI + @Suppress("unused") private fun notifySettingsEvent(settings: Settings) { onSettingsChange.notify(settings) } + // Used by JNI + @Suppress("unused") private fun notifyTunnelStateEvent(event: TunnelState) { onTunnelStateChange.notify(event) } + // Used by JNI + @Suppress("unused") private fun notifyDaemonStopped() { onDaemonStopped?.invoke() } + // Used by JNI + @Suppress("unused") private fun notifyDeviceEvent(event: DeviceEvent) { _deviceStateUpdates.tryEmit(event.newState) } + // Used by JNI + @Suppress("unused") private fun notifyRemoveDeviceEvent(event: RemoveDeviceEvent) { _deviceListUpdates.tryEmit(DeviceListEvent.Available(event.accountToken, event.newDevices)) } diff --git a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt index b0c55540a6..66a77b0d73 100644 --- a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt +++ b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt @@ -273,7 +273,7 @@ class MullvadVpnService : TalpidVpnService() { } companion object { - private val TAG = "mullvad" + private const val TAG = "mullvad" init { System.loadLibrary("mullvad_jni") diff --git a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/SettingsListener.kt b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/SettingsListener.kt index 874b78cab3..9422b6a94e 100644 --- a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/SettingsListener.kt +++ b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/SettingsListener.kt @@ -8,7 +8,11 @@ import kotlinx.coroutines.channels.actor import kotlinx.coroutines.channels.trySendBlocking import net.mullvad.mullvadvpn.lib.ipc.Event import net.mullvad.mullvadvpn.lib.ipc.Request -import net.mullvad.mullvadvpn.model.* +import net.mullvad.mullvadvpn.model.DnsOptions +import net.mullvad.mullvadvpn.model.ObfuscationSettings +import net.mullvad.mullvadvpn.model.QuantumResistantState +import net.mullvad.mullvadvpn.model.RelaySettings +import net.mullvad.mullvadvpn.model.Settings import net.mullvad.mullvadvpn.service.MullvadDaemon import net.mullvad.talpid.util.EventNotifier diff --git a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/AccountExpiryNotification.kt b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/AccountExpiryNotification.kt index 371e19be7b..634051b2b1 100644 --- a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/AccountExpiryNotification.kt +++ b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/AccountExpiryNotification.kt @@ -140,8 +140,8 @@ class AccountExpiryNotification( } companion object { - val NOTIFICATION_ID: Int = 2 + const val NOTIFICATION_ID: Int = 2 val REMAINING_TIME_FOR_REMINDERS = Duration.standardDays(2) - val TIME_BETWEEN_CHECKS: Long = 12 /* h */ * 60 /* min */ * 60 /* s */ * 1000 /* ms */ + const val TIME_BETWEEN_CHECKS: Long = 12 /* h */ * 60 /* min */ * 60 /* s */ * 1000 /* ms */ } } diff --git a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/TunnelStateNotification.kt b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/TunnelStateNotification.kt index 0c04c09eeb..44a34589d9 100644 --- a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/TunnelStateNotification.kt +++ b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/TunnelStateNotification.kt @@ -147,6 +147,6 @@ class TunnelStateNotification(val context: Context) { } companion object { - val NOTIFICATION_ID: Int = 1 + const val NOTIFICATION_ID: Int = 1 } } diff --git a/android/test/arch/src/test/kotlin/net/mullvad/mullvadvpn/test/arch/classes/DataClassTests.kt b/android/test/arch/src/test/kotlin/net/mullvad/mullvadvpn/test/arch/classes/DataClassTests.kt index 44ca7bcd49..06ffaddcc3 100644 --- a/android/test/arch/src/test/kotlin/net/mullvad/mullvadvpn/test/arch/classes/DataClassTests.kt +++ b/android/test/arch/src/test/kotlin/net/mullvad/mullvadvpn/test/arch/classes/DataClassTests.kt @@ -6,7 +6,7 @@ import com.lemonappdev.konsist.api.ext.list.properties import com.lemonappdev.konsist.api.verify.assertNot import org.junit.jupiter.api.Test -class DataClasses { +class DataClassTests { @Test fun `ensure data classes only use immutable properties`() = Konsist.scopeFromProject() |
