diff --git a/app/build.gradle b/app/build.gradle index f98f6869bf..40fbc41dbf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ android { applicationId 'com.discord' minSdkVersion 21 targetSdkVersion 29 - versionCode 99205 - versionName "99.5 - Alpha" + versionCode 99210 + versionName "99.10 - Alpha" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index eac85551fa..da0d40c439 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,5 +1,5 @@ - + diff --git a/app/src/main/java/com/discord/api/guild/GuildFeature.java b/app/src/main/java/com/discord/api/guild/GuildFeature.java index 5b52de20aa..0077cc03a8 100644 --- a/app/src/main/java/com/discord/api/guild/GuildFeature.java +++ b/app/src/main/java/com/discord/api/guild/GuildFeature.java @@ -24,5 +24,6 @@ public enum GuildFeature { THREE_DAY_THREAD_ARCHIVE, SEVEN_DAY_THREAD_ARCHIVE, NEW_THREAD_PERMISSIONS, - ROLE_ICONS + ROLE_ICONS, + TEXT_IN_VOICE_ENABLED } diff --git a/app/src/main/java/com/discord/utilities/experiments/ExperimentRegistry.java b/app/src/main/java/com/discord/utilities/experiments/ExperimentRegistry.java index 42510972ba..8e231ce766 100644 --- a/app/src/main/java/com/discord/utilities/experiments/ExperimentRegistry.java +++ b/app/src/main/java/com/discord/utilities/experiments/ExperimentRegistry.java @@ -15,7 +15,7 @@ public final class ExperimentRegistry { registeredExperiments = linkedHashMap; RegisteredExperiment.Type type = RegisteredExperiment.Type.USER; RegisteredExperiment.Type type2 = RegisteredExperiment.Type.GUILD; - for (Object obj : n.listOf((Object[]) new RegisteredExperiment[]{new RegisteredExperiment("Compact Invite Widget", "2020-01_mobile_invite_suggestion_compact", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Use compact view"}), true), new RegisteredExperiment("Guild Invite Sheet", "2020-12_android_guild_channel_invite_sheet", type, n.listOf((Object[]) new String[]{"Control: Use the full-screen guild invite UI", "Treatment 1: Use the bottom sheet guild invite UI"}), true), new RegisteredExperiment("Disable mentions in landscape", "2020-12_android_disable_landscape_mentions", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Hide mentions in landscape"}), true), new RegisteredExperiment("Invite to GDM Sheet", "2020-12_invite_to_gdm", type, n.listOf((Object[]) new String[]{"Control: Use the full-screen GDM invite UI", "Treatment 1: Use the bottom sheet GDM invite UI"}), true), new RegisteredExperiment("Guild Delete Feedback", "2020-12_guild_delete_feedback", type, n.listOf((Object[]) new String[]{"Control: Do not show the feedback modal", "Treatment 1: Show the feedback modal"}), true), new RegisteredExperiment("View Threads", "2021-02_view_threads", type, n.listOf((Object[]) new String[]{"Control: Do not display anything threads-related, except if receiving a notification", "Treatment 1: Show view-only threads features in channel list, in chat view, etc."}), true), new RegisteredExperiment("Create Threads", "2020-09_threads", type2, n.listOf((Object[]) new String[]{"Control: Do not show thread creation entrypoints, or Thread Browser", "Treatment 1: Show thread creation buttons, and show button to open Thread Browser"}), true), new RegisteredExperiment("Disable Camera 2", "2021-02_android_webrtc_camera2", type, n.listOf((Object[]) new String[]{"Control: Use Camera 2 API if supported", "Treatment 1: Force Camera 1 API"}), true), new RegisteredExperiment("MediaSinkWants", "2021-03_android_media_sink_wants", type, n.listOf((Object[]) new String[]{"Control: disabled", "Treatment 1: use MediaSinkWants"}), true), new RegisteredExperiment("Default Invite Expiration", "2021-03_android_extend_invite_expiration", type2, n.listOf((Object[]) new String[]{"Control: Default Invite Expiration is 1 day", "Treatment 1: Default Invite Expiration is 7 days"}), true), new RegisteredExperiment("Emoji Autocomplete Upsell", "2021-03_nitro_emoji_autocomplete_upsell_android", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show Emoji Autocomplete Upsell"}), true), new RegisteredExperiment("Application Command Frecency", "2021-09_android_app_commands_frecency", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show frecent application commands"}), true), new RegisteredExperiment("Bot UI Kit Components", "2021-03_bot_ui_kit_components_android", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show Bot UI Kit Components"}), true), new RegisteredExperiment("Select Bot UI Component", "2021-05_bot_ui_kit_select", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show Select Bot Ui Component"}), true), new RegisteredExperiment("Stage Events Guilds", "2021-06_stage_events", type2, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Enables users to see events in guilds"}), true), new RegisteredExperiment("Contact Sync: Base Experiment", "2021-04_contact_sync_android_main", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Enable core Contact Sync features"}), true), new RegisteredExperiment("Contact Sync: Existing Users w/ Phone Upsell Experiment", "2021-04_contact_sync_android_existing_user_phone_prompt", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show Contact Sync for existing users with a phone number"}), true), new RegisteredExperiment("Contact Sync: Existing Users without Phone Upsell Experiment", "2021-04_contact_sync_android_existing_user_without_phone_prompt", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show Contact Sync for existing users without a phone number"}), true), new RegisteredExperiment("Contact Sync: Empty states", "2021-05_contact_sync_android_empty_states", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show Contact Sync in empty friend lists"}), true), new RegisteredExperiment("Stop Offscreen Video Streams", "2021-03_stop_offscreen_video_streams", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Stop offscreen video streams"}), true), new RegisteredExperiment("Hub Multiple Domains", "2021-08_hub_multi_domain_mobile", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Enable multiple domains for hubs"}), true), new RegisteredExperiment("Enabled Discord Hub Directories", "2021-06_desktop_school_hubs", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: See Discord Hub Directories"}), true), new RegisteredExperiment("Enabled Discord Hub Emails", "2021-06_hub_email_connection", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: See Discord Hub Emails"}), true), new RegisteredExperiment("Enabled Discord Hub Reporting", "2021-08_hub_reporting", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Hub Reporting Enabled"}), true), new RegisteredExperiment("Enable Impression Logging", "2021-08_impression_logging_enabled_android", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Enable Impression Logging"}), true), new RegisteredExperiment("AudioManager V2 and OpenSL ES", "2021-05_opensl_default_enable_android", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Default enable OpenSL", "Treatment 2: Use StoreAudioManagerV2 for output routing"}), true), new RegisteredExperiment("Phone Registration - Bailout to Email", "2021-06_reg_bailout_to_email_android", type, n.listOf((Object[]) new String[]{"Control: Just the back button", "Treatment 1: Static button to bailout to the email tab"}), true), new RegisteredExperiment("Enable Network Action Logging", "2021-07_network_action_logging_android", type, n.listOf((Object[]) new String[]{"Off: No Action logging", "On: Enable Action Logging"}), true), new RegisteredExperiment("Preview Promotions", "2021-06_preview_promotions", type, n.listOf((Object[]) new String[]{"Off: Hit normal endpoint", "On: Hit preview endpoint"}), true), new RegisteredExperiment("Live Stage Notifications", "2021-07_live_stage_notifications", type2, n.listOf((Object[]) new String[]{"Control: No notification surfaces", "Treatment 1: Show notification surfaces"}), true), new RegisteredExperiment("Guild Events Sharing", "2021-08_guild_scheduled_events_sharing", type, n.listOf((Object[]) new String[]{"Control: No sharing", "Treatment 1: Can share"}), true), new RegisteredExperiment("Route audio to speakerphone by default", "2021-08_android_speakerphone_default", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Always default to speakerphone"}), true), new RegisteredExperiment("New Thread Perms", "2021-08_threads_permissions", type2, n.listOf((Object[]) new String[]{"Control: Use old threads permissions.", "Treatment 1: Use new threads permissions."}), true), new RegisteredExperiment("Longer billing grace periods", "2021-09_longer_billing_grace_periods", type, n.listOf((Object[]) new String[]{"Control: 3-day grace period", "Treatment 1: 7-day grace period"}), true), new RegisteredExperiment("SMS Autofill", "2021-09_android_sms_autofill", type, n.listOf((Object[]) new String[]{"Control: No SMS Autofill", "Treatment 1: SMS Code autofills"}), true)})) { + for (Object obj : n.listOf((Object[]) new RegisteredExperiment[]{new RegisteredExperiment("Compact Invite Widget", "2020-01_mobile_invite_suggestion_compact", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Use compact view"}), true), new RegisteredExperiment("Guild Invite Sheet", "2020-12_android_guild_channel_invite_sheet", type, n.listOf((Object[]) new String[]{"Control: Use the full-screen guild invite UI", "Treatment 1: Use the bottom sheet guild invite UI"}), true), new RegisteredExperiment("Disable mentions in landscape", "2020-12_android_disable_landscape_mentions", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Hide mentions in landscape"}), true), new RegisteredExperiment("Invite to GDM Sheet", "2020-12_invite_to_gdm", type, n.listOf((Object[]) new String[]{"Control: Use the full-screen GDM invite UI", "Treatment 1: Use the bottom sheet GDM invite UI"}), true), new RegisteredExperiment("Guild Delete Feedback", "2020-12_guild_delete_feedback", type, n.listOf((Object[]) new String[]{"Control: Do not show the feedback modal", "Treatment 1: Show the feedback modal"}), true), new RegisteredExperiment("View Threads", "2021-02_view_threads", type, n.listOf((Object[]) new String[]{"Control: Do not display anything threads-related, except if receiving a notification", "Treatment 1: Show view-only threads features in channel list, in chat view, etc."}), true), new RegisteredExperiment("Create Threads", "2020-09_threads", type2, n.listOf((Object[]) new String[]{"Control: Do not show thread creation entrypoints, or Thread Browser", "Treatment 1: Show thread creation buttons, and show button to open Thread Browser"}), true), new RegisteredExperiment("Disable Camera 2", "2021-02_android_webrtc_camera2", type, n.listOf((Object[]) new String[]{"Control: Use Camera 2 API if supported", "Treatment 1: Force Camera 1 API"}), true), new RegisteredExperiment("MediaSinkWants", "2021-03_android_media_sink_wants", type, n.listOf((Object[]) new String[]{"Control: disabled", "Treatment 1: use MediaSinkWants"}), true), new RegisteredExperiment("Default Invite Expiration", "2021-03_android_extend_invite_expiration", type2, n.listOf((Object[]) new String[]{"Control: Default Invite Expiration is 1 day", "Treatment 1: Default Invite Expiration is 7 days"}), true), new RegisteredExperiment("Emoji Autocomplete Upsell", "2021-03_nitro_emoji_autocomplete_upsell_android", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show Emoji Autocomplete Upsell"}), true), new RegisteredExperiment("Application Command Frecency", "2021-09_android_app_commands_frecency", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show frecent application commands"}), true), new RegisteredExperiment("Bot UI Kit Components", "2021-03_bot_ui_kit_components_android", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show Bot UI Kit Components"}), true), new RegisteredExperiment("Select Bot UI Component", "2021-05_bot_ui_kit_select", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show Select Bot Ui Component"}), true), new RegisteredExperiment("Stage Events Guilds", "2021-06_stage_events", type2, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Enables users to see events in guilds"}), true), new RegisteredExperiment("Contact Sync: Base Experiment", "2021-04_contact_sync_android_main", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Enable core Contact Sync features"}), true), new RegisteredExperiment("Contact Sync: Existing Users w/ Phone Upsell Experiment", "2021-04_contact_sync_android_existing_user_phone_prompt", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show Contact Sync for existing users with a phone number"}), true), new RegisteredExperiment("Contact Sync: Existing Users without Phone Upsell Experiment", "2021-04_contact_sync_android_existing_user_without_phone_prompt", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show Contact Sync for existing users without a phone number"}), true), new RegisteredExperiment("Contact Sync: Empty states", "2021-05_contact_sync_android_empty_states", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show Contact Sync in empty friend lists"}), true), new RegisteredExperiment("Stop Offscreen Video Streams", "2021-03_stop_offscreen_video_streams", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Stop offscreen video streams"}), true), new RegisteredExperiment("Hub Multiple Domains", "2021-08_hub_multi_domain_mobile", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Enable multiple domains for hubs"}), true), new RegisteredExperiment("Enabled Discord Hub Directories", "2021-06_desktop_school_hubs", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: See Discord Hub Directories"}), true), new RegisteredExperiment("Enabled Discord Hub Emails", "2021-06_hub_email_connection", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: See Discord Hub Emails"}), true), new RegisteredExperiment("Enabled Discord Hub Reporting", "2021-08_hub_reporting", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Hub Reporting Enabled"}), true), new RegisteredExperiment("Enable Impression Logging", "2021-08_impression_logging_enabled_android", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Enable Impression Logging"}), true), new RegisteredExperiment("AudioManager V2 and OpenSL ES", "2021-05_opensl_default_enable_android", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Default enable OpenSL", "Treatment 2: Use StoreAudioManagerV2 for output routing"}), true), new RegisteredExperiment("Phone Registration - Bailout to Email", "2021-06_reg_bailout_to_email_android", type, n.listOf((Object[]) new String[]{"Control: Just the back button", "Treatment 1: Static button to bailout to the email tab"}), true), new RegisteredExperiment("Enable Network Action Logging", "2021-07_network_action_logging_android", type, n.listOf((Object[]) new String[]{"Off: No Action logging", "On: Enable Action Logging"}), true), new RegisteredExperiment("Preview Promotions", "2021-06_preview_promotions", type, n.listOf((Object[]) new String[]{"Off: Hit normal endpoint", "On: Hit preview endpoint"}), true), new RegisteredExperiment("Live Stage Notifications", "2021-07_live_stage_notifications", type2, n.listOf((Object[]) new String[]{"Control: No notification surfaces", "Treatment 1: Show notification surfaces"}), true), new RegisteredExperiment("Guild Events Sharing", "2021-08_guild_scheduled_events_sharing", type, n.listOf((Object[]) new String[]{"Control: No sharing", "Treatment 1: Can share"}), true), new RegisteredExperiment("Route audio to speakerphone by default", "2021-08_android_speakerphone_default", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Always default to speakerphone"}), true), new RegisteredExperiment("New Thread Perms", "2021-08_threads_permissions", type2, n.listOf((Object[]) new String[]{"Control: Use old threads permissions.", "Treatment 1: Use new threads permissions."}), true), new RegisteredExperiment("Longer billing grace periods", "2021-09_longer_billing_grace_periods", type, n.listOf((Object[]) new String[]{"Control: 3-day grace period", "Treatment 1: 7-day grace period"}), true), new RegisteredExperiment("SMS Autofill", "2021-09_android_sms_autofill", type, n.listOf((Object[]) new String[]{"Control: No SMS Autofill", "Treatment 1: SMS Code autofills"}), true), new RegisteredExperiment("Android Text-In-Voice", "2021-10_android_textinvoice", type, n.listOf((Object[]) new String[]{"Control: No Android text-in-voice.", "Treatment 1: Android text-in-voice enabled, if it's enabled for the guild."}), true)})) { linkedHashMap.put(((RegisteredExperiment) obj).getName(), obj); } } diff --git a/app/src/main/java/com/discord/widgets/chat/list/TextInVoiceFeatureFlag$Companion$INSTANCE$2.java b/app/src/main/java/com/discord/widgets/chat/list/TextInVoiceFeatureFlag$Companion$INSTANCE$2.java new file mode 100644 index 0000000000..4299d3cd10 --- /dev/null +++ b/app/src/main/java/com/discord/widgets/chat/list/TextInVoiceFeatureFlag$Companion$INSTANCE$2.java @@ -0,0 +1,18 @@ +package com.discord.widgets.chat.list; + +import c0.z.d.o; +import kotlin.jvm.functions.Function0; +/* compiled from: TextInVoiceFeatureFlag.kt */ +public final class TextInVoiceFeatureFlag$Companion$INSTANCE$2 extends o implements Function0 { + public static final TextInVoiceFeatureFlag$Companion$INSTANCE$2 INSTANCE = new TextInVoiceFeatureFlag$Companion$INSTANCE$2(); + + public TextInVoiceFeatureFlag$Companion$INSTANCE$2() { + super(0); + } + + @Override // kotlin.jvm.functions.Function0 + /* renamed from: invoke */ + public final TextInVoiceFeatureFlag mo17invoke() { + return new TextInVoiceFeatureFlag(null, null, 3, null); + } +} diff --git a/app/src/main/java/com/discord/widgets/chat/list/TextInVoiceFeatureFlag$observeEnabled$1.java b/app/src/main/java/com/discord/widgets/chat/list/TextInVoiceFeatureFlag$observeEnabled$1.java new file mode 100644 index 0000000000..79dc67f0de --- /dev/null +++ b/app/src/main/java/com/discord/widgets/chat/list/TextInVoiceFeatureFlag$observeEnabled$1.java @@ -0,0 +1,17 @@ +package com.discord.widgets.chat.list; + +import com.discord.models.experiments.domain.Experiment; +import com.discord.models.guild.Guild; +import rx.functions.Func2; +/* compiled from: TextInVoiceFeatureFlag.kt */ +public final class TextInVoiceFeatureFlag$observeEnabled$1 implements Func2 { + public final /* synthetic */ TextInVoiceFeatureFlag this$0; + + public TextInVoiceFeatureFlag$observeEnabled$1(TextInVoiceFeatureFlag textInVoiceFeatureFlag) { + this.this$0 = textInVoiceFeatureFlag; + } + + public final Boolean call(Experiment experiment, Guild guild) { + return Boolean.valueOf(TextInVoiceFeatureFlag.access$isEnabled(this.this$0, experiment, guild)); + } +} diff --git a/app/src/main/java/com/discord/widgets/chat/list/TextInVoiceFeatureFlag.java b/app/src/main/java/com/discord/widgets/chat/list/TextInVoiceFeatureFlag.java new file mode 100644 index 0000000000..b78971c8da --- /dev/null +++ b/app/src/main/java/com/discord/widgets/chat/list/TextInVoiceFeatureFlag.java @@ -0,0 +1,76 @@ +package com.discord.widgets.chat.list; + +import c0.g; +import c0.z.d.m; +import com.discord.api.guild.GuildFeature; +import com.discord.models.experiments.domain.Experiment; +import com.discord.models.guild.Guild; +import com.discord.stores.StoreExperiments; +import com.discord.stores.StoreGuilds; +import com.discord.stores.StoreStream; +import i0.l.e.j; +import kotlin.Lazy; +import kotlin.jvm.internal.DefaultConstructorMarker; +import rx.Observable; +/* compiled from: TextInVoiceFeatureFlag.kt */ +public final class TextInVoiceFeatureFlag { + public static final Companion Companion = new Companion(null); + private static final Lazy INSTANCE$delegate = g.lazy(TextInVoiceFeatureFlag$Companion$INSTANCE$2.INSTANCE); + private final StoreExperiments storeExperiments; + private final StoreGuilds storeGuilds; + + /* compiled from: TextInVoiceFeatureFlag.kt */ + public static final class Companion { + private Companion() { + } + + public /* synthetic */ Companion(DefaultConstructorMarker defaultConstructorMarker) { + this(); + } + + public final TextInVoiceFeatureFlag getINSTANCE() { + Lazy access$getINSTANCE$cp = TextInVoiceFeatureFlag.access$getINSTANCE$cp(); + Companion companion = TextInVoiceFeatureFlag.Companion; + return (TextInVoiceFeatureFlag) access$getINSTANCE$cp.getValue(); + } + } + + public TextInVoiceFeatureFlag() { + this(null, null, 3, null); + } + + public TextInVoiceFeatureFlag(StoreExperiments storeExperiments, StoreGuilds storeGuilds) { + m.checkNotNullParameter(storeExperiments, "storeExperiments"); + m.checkNotNullParameter(storeGuilds, "storeGuilds"); + this.storeExperiments = storeExperiments; + this.storeGuilds = storeGuilds; + } + + /* JADX INFO: this call moved to the top of the method (can break code semantics) */ + public /* synthetic */ TextInVoiceFeatureFlag(StoreExperiments storeExperiments, StoreGuilds storeGuilds, int i, DefaultConstructorMarker defaultConstructorMarker) { + this((i & 1) != 0 ? StoreStream.Companion.getExperiments() : storeExperiments, (i & 2) != 0 ? StoreStream.Companion.getGuilds() : storeGuilds); + } + + public static final /* synthetic */ Lazy access$getINSTANCE$cp() { + return INSTANCE$delegate; + } + + public static final /* synthetic */ boolean access$isEnabled(TextInVoiceFeatureFlag textInVoiceFeatureFlag, Experiment experiment, Guild guild) { + return textInVoiceFeatureFlag.isEnabled(experiment, guild); + } + + private final boolean isEnabled(Experiment experiment, Guild guild) { + return (experiment != null && experiment.getBucket() == 1) && (guild != null && guild.hasFeature(GuildFeature.TEXT_IN_VOICE_ENABLED)); + } + + public final Observable observeEnabled(Long l) { + if (l == null) { + j jVar = new j(Boolean.FALSE); + m.checkNotNullExpressionValue(jVar, "Observable.just(false)"); + return jVar; + } + Observable j = Observable.j(this.storeExperiments.observeUserExperiment("2021-10_android_textinvoice", true), this.storeGuilds.observeGuild(l.longValue()), new TextInVoiceFeatureFlag$observeEnabled$1(this)); + m.checkNotNullExpressionValue(j, "Observable.combineLatest…xperiment, guild)\n }"); + return j; + } +} diff --git a/app/src/main/java/com/discord/widgets/settings/WidgetSettings.java b/app/src/main/java/com/discord/widgets/settings/WidgetSettings.java index ef34e1c869..6f07cf7373 100644 --- a/app/src/main/java/com/discord/widgets/settings/WidgetSettings.java +++ b/app/src/main/java/com/discord/widgets/settings/WidgetSettings.java @@ -313,7 +313,7 @@ public final class WidgetSettings extends AppFragment implements OnTabSelectedLi TextView textView = binding.f; m.checkNotNullExpressionValue(textView, "appInfoHeader"); String string = getString(R.string.app_information); - textView.setText(string + " - 99.5 - Alpha (99205)"); + textView.setText(string + " - 99.10 - Alpha (99210)"); binding.A.setOnClickListener(new WidgetSettings$onViewBound$$inlined$with$lambda$3(this)); binding.u.setOnClickListener(WidgetSettings$onViewBound$1$5.INSTANCE); binding.q.setOnClickListener(WidgetSettings$onViewBound$1$6.INSTANCE); diff --git a/app/src/main/java/com/discord/widgets/voice/sheet/WidgetVoiceBottomSheet$viewModel$2.java b/app/src/main/java/com/discord/widgets/voice/sheet/WidgetVoiceBottomSheet$viewModel$2.java index ca2c629475..dc14360281 100644 --- a/app/src/main/java/com/discord/widgets/voice/sheet/WidgetVoiceBottomSheet$viewModel$2.java +++ b/app/src/main/java/com/discord/widgets/voice/sheet/WidgetVoiceBottomSheet$viewModel$2.java @@ -17,6 +17,6 @@ public final class WidgetVoiceBottomSheet$viewModel$2 extends o implements Funct @Override // kotlin.jvm.functions.Function0 /* renamed from: invoke */ public final AppViewModel mo17invoke() { - return new WidgetVoiceBottomSheetViewModel(WidgetVoiceBottomSheet.access$getChannelId$p(this.this$0), WidgetVoiceBottomSheet.access$getForwardToFullscreenIfVideoActivated$p(this.this$0), null, null, null, null, null, null, null, null, null, null, null, null, null, 32764, null); + return new WidgetVoiceBottomSheetViewModel(WidgetVoiceBottomSheet.access$getChannelId$p(this.this$0), WidgetVoiceBottomSheet.access$getForwardToFullscreenIfVideoActivated$p(this.this$0), null, null, null, null, null, null, null, null, null, null, null, null, null, null, 65532, null); } } diff --git a/app/src/main/java/com/discord/widgets/voice/sheet/WidgetVoiceBottomSheetViewModel$Companion$observeStoreState$1.java b/app/src/main/java/com/discord/widgets/voice/sheet/WidgetVoiceBottomSheetViewModel$Companion$observeStoreState$1.java index dc70b5e671..c48b76998f 100644 --- a/app/src/main/java/com/discord/widgets/voice/sheet/WidgetVoiceBottomSheetViewModel$Companion$observeStoreState$1.java +++ b/app/src/main/java/com/discord/widgets/voice/sheet/WidgetVoiceBottomSheetViewModel$Companion$observeStoreState$1.java @@ -1,24 +1,48 @@ package com.discord.widgets.voice.sheet; import c0.t.n0; +import c0.z.d.m; +import com.discord.api.channel.Channel; import com.discord.stores.StoreMediaSettings; +import com.discord.stores.StorePermissions; +import com.discord.widgets.chat.list.TextInVoiceFeatureFlag; import com.discord.widgets.voice.model.CallModel; import com.discord.widgets.voice.sheet.WidgetVoiceBottomSheetViewModel; -import rx.functions.Func2; +import i0.k.b; +import rx.Observable; +import rx.functions.Func3; /* compiled from: WidgetVoiceBottomSheetViewModel.kt */ -public final class WidgetVoiceBottomSheetViewModel$Companion$observeStoreState$1 implements Func2 { - public static final WidgetVoiceBottomSheetViewModel$Companion$observeStoreState$1 INSTANCE = new WidgetVoiceBottomSheetViewModel$Companion$observeStoreState$1(); +public final class WidgetVoiceBottomSheetViewModel$Companion$observeStoreState$1 implements b> { + public final /* synthetic */ long $channelId; + public final /* synthetic */ StorePermissions $permissionsStore; - public final WidgetVoiceBottomSheetViewModel.StoreState call(CallModel callModel, Long l) { - if (callModel != null) { - boolean z2 = false; - if (n0.setOf((Object[]) new Integer[]{2, 13, 1, 3}).contains(Integer.valueOf(callModel.getChannel().A()))) { - if (callModel.getVoiceSettings().getNoiseProcessing() == StoreMediaSettings.NoiseProcessing.Cancellation) { - z2 = true; + /* compiled from: WidgetVoiceBottomSheetViewModel.kt */ + /* renamed from: com.discord.widgets.voice.sheet.WidgetVoiceBottomSheetViewModel$Companion$observeStoreState$1$1 reason: invalid class name */ + public static final class AnonymousClass1 implements Func3 { + public static final AnonymousClass1 INSTANCE = new AnonymousClass1(); + + public final WidgetVoiceBottomSheetViewModel.StoreState call(CallModel callModel, Long l, Boolean bool) { + if (callModel != null) { + boolean z2 = false; + if (n0.setOf((Object[]) new Integer[]{2, 13, 1, 3}).contains(Integer.valueOf(callModel.getChannel().A()))) { + if (callModel.getVoiceSettings().getNoiseProcessing() == StoreMediaSettings.NoiseProcessing.Cancellation) { + z2 = true; + } + Boolean valueOf = Boolean.valueOf(z2); + m.checkNotNullExpressionValue(bool, "textInVoiceEnabled"); + return new WidgetVoiceBottomSheetViewModel.StoreState.Valid(callModel, valueOf, l, bool.booleanValue()); } - return new WidgetVoiceBottomSheetViewModel.StoreState.Valid(callModel, Boolean.valueOf(z2), l); } + return WidgetVoiceBottomSheetViewModel.StoreState.Invalid.INSTANCE; } - return WidgetVoiceBottomSheetViewModel.StoreState.Invalid.INSTANCE; + } + + public WidgetVoiceBottomSheetViewModel$Companion$observeStoreState$1(long j, StorePermissions storePermissions) { + this.$channelId = j; + this.$permissionsStore = storePermissions; + } + + public final Observable call(Channel channel) { + return Observable.i(CallModel.Companion.get(this.$channelId), this.$permissionsStore.observePermissionsForChannel(this.$channelId), TextInVoiceFeatureFlag.Companion.getINSTANCE().observeEnabled(channel != null ? Long.valueOf(channel.f()) : null), AnonymousClass1.INSTANCE); } } diff --git a/app/src/main/java/com/discord/widgets/voice/sheet/WidgetVoiceBottomSheetViewModel$tryConnectToVoice$1.java b/app/src/main/java/com/discord/widgets/voice/sheet/WidgetVoiceBottomSheetViewModel$tryConnectToVoice$1.java index bb2d11e8b4..d43fd05ec3 100644 --- a/app/src/main/java/com/discord/widgets/voice/sheet/WidgetVoiceBottomSheetViewModel$tryConnectToVoice$1.java +++ b/app/src/main/java/com/discord/widgets/voice/sheet/WidgetVoiceBottomSheetViewModel$tryConnectToVoice$1.java @@ -13,7 +13,7 @@ import kotlin.jvm.functions.Function2; import kotlinx.coroutines.CoroutineScope; import rx.subjects.PublishSubject; /* compiled from: WidgetVoiceBottomSheetViewModel.kt */ -@e(c = "com.discord.widgets.voice.sheet.WidgetVoiceBottomSheetViewModel$tryConnectToVoice$1", f = "WidgetVoiceBottomSheetViewModel.kt", l = {165, 173}, m = "invokeSuspend") +@e(c = "com.discord.widgets.voice.sheet.WidgetVoiceBottomSheetViewModel$tryConnectToVoice$1", f = "WidgetVoiceBottomSheetViewModel.kt", l = {169, 177}, m = "invokeSuspend") public final class WidgetVoiceBottomSheetViewModel$tryConnectToVoice$1 extends k implements Function2, Object> { public final /* synthetic */ StoreMediaEngine $mediaEngine; public int label; diff --git a/app/src/main/java/com/discord/widgets/voice/sheet/WidgetVoiceBottomSheetViewModel.java b/app/src/main/java/com/discord/widgets/voice/sheet/WidgetVoiceBottomSheetViewModel.java index b7524f1b1d..1983e2d8d2 100644 --- a/app/src/main/java/com/discord/widgets/voice/sheet/WidgetVoiceBottomSheetViewModel.java +++ b/app/src/main/java/com/discord/widgets/voice/sheet/WidgetVoiceBottomSheetViewModel.java @@ -23,6 +23,7 @@ import com.discord.rtcconnection.RtcConnection; import com.discord.stores.StoreApplicationStreamPreviews; import com.discord.stores.StoreApplicationStreaming; import com.discord.stores.StoreCalls; +import com.discord.stores.StoreChannels; import com.discord.stores.StoreGuilds; import com.discord.stores.StoreMediaEngine; import com.discord.stores.StoreMediaSettings; @@ -67,6 +68,7 @@ public final class WidgetVoiceBottomSheetViewModel extends AppViewModel eventSubject; private Set fetchedPreviews; @@ -120,14 +122,14 @@ public final class WidgetVoiceBottomSheetViewModel extends AppViewModel observeStoreState(long j, StorePermissions storePermissions) { - Observable j2 = Observable.j(CallModel.Companion.get(j), storePermissions.observePermissionsForChannel(j), WidgetVoiceBottomSheetViewModel$Companion$observeStoreState$1.INSTANCE); - m.checkNotNullExpressionValue(j2, "Observable.combineLatest…Invalid\n }\n }"); - return j2; + private final Observable observeStoreState(long j, StorePermissions storePermissions, StoreChannels storeChannels) { + Observable Y = storeChannels.observeChannel(j).Y(new WidgetVoiceBottomSheetViewModel$Companion$observeStoreState$1(j, storePermissions)); + m.checkNotNullExpressionValue(Y, "storeChannels.observeCha… }\n }\n }"); + return Y; } } @@ -674,17 +676,19 @@ public final class WidgetVoiceBottomSheetViewModel extends AppViewModel observable) { + public WidgetVoiceBottomSheetViewModel(long j, boolean z2, StoreChannels storeChannels, StorePermissions storePermissions, StoreVoiceChannelSelected storeVoiceChannelSelected, StoreMediaSettings storeMediaSettings, StoreMediaEngine storeMediaEngine, StoreUserSettings storeUserSettings, StoreCalls storeCalls, StoreGuilds storeGuilds, VideoPermissionsManager videoPermissionsManager, StoreApplicationStreamPreviews storeApplicationStreamPreviews, VoiceEngineServiceController voiceEngineServiceController, Clock clock, TooltipManager tooltipManager, Observable observable) { super(null, 1, null); + m.checkNotNullParameter(storeChannels, "channelStore"); m.checkNotNullParameter(storePermissions, "permissionsStore"); m.checkNotNullParameter(storeVoiceChannelSelected, "selectedVoiceChannelStore"); m.checkNotNullParameter(storeMediaSettings, "mediaSettingsStore"); @@ -971,6 +997,7 @@ public final class WidgetVoiceBottomSheetViewModel extends AppViewModel weakReference = a.b.a; @@ -1143,7 +1171,7 @@ public final class WidgetVoiceBottomSheetViewModel extends AppViewModel - + diff --git a/app/src/main/res/layout/widget_chat_list_bot_ui_button_component.xml b/app/src/main/res/layout/widget_chat_list_bot_ui_button_component.xml index 3b93e5aa1d..3ff7d0e484 100644 --- a/app/src/main/res/layout/widget_chat_list_bot_ui_button_component.xml +++ b/app/src/main/res/layout/widget_chat_list_bot_ui_button_component.xml @@ -1,5 +1,5 @@ - + diff --git a/app/src/main/res/values-ar-rXB/strings.xml b/app/src/main/res/values-ar-rXB/strings.xml index e569996b3c..27f0652592 100644 --- a/app/src/main/res/values-ar-rXB/strings.xml +++ b/app/src/main/res/values-ar-rXB/strings.xml @@ -3606,10 +3606,10 @@ ‏‮Payment‬‏ ‏‮Method‬‏ ‏‮per‬‏ ‏‮{period}‬‏ ‏‮Benefit‬‏ + ‏‮What‬‏ ‏‮can‬‏ ‏‮subscribers‬‏ ‏‮do‬‏ ‏‮in‬‏ ‏‮this‬‏ ‏‮channel?‬‏ ‏‮Exclusive‬‏ ‏‮Channel‬‏ ‏‮Adding‬‏ ‏‮a‬‏ ‏‮channel‬‏ ‏‮to‬‏ ‏‮a‬‏ ‏‮premium‬‏ ‏‮tier‬‏ ‏‮will‬‏ ‏‮remove‬‏ ‏‮access‬‏ ‏‮to‬‏ ‏‮server‬‏ ‏‮members‬‏ ‏‮who‬‏ ‏‮are‬‏ ‏‮not‬‏ ‏‮premium‬‏ ‏‮subscribers.‬‏ ‏‮Create‬‏ ‏‮a‬‏ ‏‮new‬‏ ‏‮channel‬‏ - ‏‮What‬‏ ‏‮can‬‏ ‏‮subscribers‬‏ ‏‮do‬‏ ‏‮in‬‏ ‏‮this‬‏ ‏‮channel?‬‏ ‏‮Edit‬‏ ‏‮benefit‬‏ ‏‮Type‬‏ ‏‮or‬‏ ‏‮select‬‏ ‏‮an‬‏ ‏‮emoji‬‏ ‏‮Import‬‏ @@ -3617,6 +3617,7 @@ ‏‮Import‬‏ ‏‮Perks‬‏ ‏‮{channels}‬‏ ‏‮&‬‏ ‏‮{benefits}‬‏ ‏‮Select‬‏ ‏‮a‬‏ ‏‮role‬‏ + ‏‮What‬‏ ‏‮do‬‏ ‏‮subscribers‬‏ ‏‮get?‬‏ ‏‮Additional‬‏ ‏‮Benefit‬‏ ‏‮Perk‬‏ ‏‮What‬‏ ‏‮can‬‏ ‏‮members‬‏ ‏‮do‬‏ ‏‮in‬‏ ‏‮this‬‏ ‏‮channel?‬‏ @@ -5970,8 +5971,8 @@ ‏‮Members‬‏ ‏‮with‬‏ ‏‮this‬‏ ‏‮permission‬‏ ‏‮can‬‏ ‏‮drag‬‏ ‏‮other‬‏ ‏‮members‬‏ ‏‮out‬‏ ‏‮of‬‏ ‏‮this‬‏ ‏‮channel.‬‏ ‏‮They‬‏ ‏‮can‬‏ ‏‮only‬‏ ‏‮move‬‏ ‏‮members‬‏ ‏‮between‬‏ ‏‮channels‬‏ ‏‮both‬‏ ‏‮they‬‏ ‏‮and‬‏ ‏‮the‬‏ ‏‮member‬‏ ‏‮they‬‏ ‏‮are‬‏ ‏‮moving‬‏ ‏‮have‬‏ ‏‮access.‬‏ ‏‮Move‬‏ ‏‮To‬‏ ‏‮User‬‏ ‏‮has‬‏ ‏‮been‬‏ ‏‮moved‬‏ ‏‮to‬‏ ‏‮the‬‏ ‏‮selected‬‏ ‏‮channel.‬‏ - ‏‮Alert‬‏ ‏‮Cleared‬‏ - ‏‮No‬‏ ‏‮Alert‬‏ ‏‮Showing‬‏ + ‏‮Alert‬‏ ‏‮Cleared‬‏ + ‏‮No‬‏ ‏‮Alert‬‏ ‏‮Showing‬‏ ‏‮New‬‏ ‏‮notification‬‏ ‏‮Remove‬‏ ‏‮%1$s‬‏ ‏‮More‬‏ ‏‮than‬‏ %1$d ‏‮new‬‏ ‏‮notifications‬‏ @@ -9496,8 +9497,10 @@ ‏‮for‬‏ ‏‮{time}‬‏ ‏‮{time}‬‏ ‏‮Watch‬‏ ‏‮Along‬‏ ‏‮Server‬‏ ‏‮Privacy‬‏ ‏‮Defaults‬‏ + ‏‮Do‬‏ ‏‮you‬‏ ‏‮want‬‏ ‏‮to‬‏ ‏‮also‬‏ ‏‮apply‬‏ ‏‮this‬‏ ‏‮change‬‏ ‏‮to‬‏ ‏‮all‬‏ ‏‮your‬‏ ‏‮existing‬‏ ‏‮servers?‬‏ ‏‮You‬‏ ‏‮can‬‏ ‏‮also‬‏ ‏‮disable‬‏ ‏‮direct‬‏ ‏‮messages‬‏ ‏‮on‬‏ ‏‮individual‬‏ ‏‮servers‬‏ ‏‮by‬‏ ‏‮visiting‬‏ ‏‮that‬‏ ‏‮servers‬‏ ‏‮settings‬‏ ‏‮page.‬‏ ‏‮This‬‏ ‏‮setting‬‏ ‏‮is‬‏ ‏‮applied‬‏ ‏‮when‬‏ ‏‮you‬‏ ‏‮join‬‏ ‏‮a‬‏ ‏‮new‬‏ ‏‮server.‬‏ ‏‮It‬‏ ‏‮does‬‏ ‏‮not‬‏ ‏‮apply‬‏ ‏‮retroactively‬‏ ‏‮to‬‏ ‏‮your‬‏ ‏‮existing‬‏ ‏‮servers.‬‏ ‏‮Do‬‏ ‏‮you‬‏ ‏‮want‬‏ ‏‮to‬‏ ‏‮also‬‏ ‏‮apply‬‏ ‏‮this‬‏ ‏‮change‬‏ ‏‮to‬‏ ‏‮all‬‏ ‏‮your‬‏ ‏‮existing‬‏ ‏‮servers?‬‏ + ‏‮Server‬‏ ‏‮Privacy‬‏ ‏‮Safe‬‏ ‏‮Direct‬‏ ‏‮Messaging‬‏ ‏‮Do‬‏ ‏‮not‬‏ ‏‮scan‬‏ ‏‮Direct‬‏ ‏‮messages‬‏ ‏‮will‬‏ ‏‮not‬‏ ‏‮be‬‏ ‏‮scanned‬‏ ‏‮for‬‏ ‏‮explicit‬‏ ‏‮content.‬‏ diff --git a/app/src/main/res/values-en-rXA/strings.xml b/app/src/main/res/values-en-rXA/strings.xml index a6be38c753..76a65d2b1d 100644 --- a/app/src/main/res/values-en-rXA/strings.xml +++ b/app/src/main/res/values-en-rXA/strings.xml @@ -3606,10 +3606,10 @@ [Þåýḿéñţ Ḿéţĥöð one two three] [þéŕ »{period}« one] [βéñéƒîţ one two] + [Ŵĥåţ çåñ šûɓšçŕîɓéŕš ðö îñ ţĥîš çĥåññéļ¿ one two three four five] [ÉхçļûšîVé Çĥåññéļ one two three] [Åððîñĝ å çĥåññéļ ţö å þŕéḿîûḿ ţîéŕ ŵîļļ ŕéḿöVé åççéšš ţö šéŕVéŕ ḿéḿɓéŕš ŵĥö åŕé ñöţ þŕéḿîûḿ šûɓšçŕîɓéŕš. one two three four five six seven eight nine ten eleven] [Çŕéåţé å ñéŵ çĥåññéļ one two three] - [Ŵĥåţ çåñ šûɓšçŕîɓéŕš ðö îñ ţĥîš çĥåññéļ¿ one two three four five] [Éðîţ ɓéñéƒîţ one two] [Ţýþé öŕ šéļéçţ åñ éḿöĵî one two three] [Îḿþöŕţ one two] @@ -3617,6 +3617,7 @@ [Îḿþöŕţ Þéŕķš one two] [»{channels}« & »{benefits}« one] [Šéļéçţ å ŕöļé one two] + [Ŵĥåţ ðö šûɓšçŕîɓéŕš ĝéţ¿ one two three] [Åððîţîöñåļ βéñéƒîţ one two three] [Þéŕķ one] [Ŵĥåţ çåñ ḿéḿɓéŕš ðö îñ ţĥîš çĥåññéļ¿ one two three four five] @@ -5970,8 +5971,8 @@ [Ḿéḿɓéŕš ŵîţĥ ţĥîš þéŕḿîššîöñ çåñ ðŕåĝ öţĥéŕ ḿéḿɓéŕš öûţ öƒ ţĥîš çĥåññéļ. Ţĥéý çåñ öñļý ḿöVé ḿéḿɓéŕš ɓéţŵééñ çĥåññéļš ɓöţĥ ţĥéý åñð ţĥé ḿéḿɓéŕ ţĥéý åŕé ḿöVîñĝ ĥåVé åççéšš. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fiveteen] [ḾöVé Ţö one two] [Ûšéŕ ĥåš ɓééñ ḿöVéð ţö ţĥé šéļéçţéð çĥåññéļ. one two three four five] - [Åļéŕţ Çļéåŕéð one two] - [Ñö Åļéŕţ Šĥöŵîñĝ one two three] + [Åļéŕţ Çļéåŕéð one two] + [Ñö Åļéŕţ Šĥöŵîñĝ one two three] [Ñéŵ ñöţîƒîçåţîöñ one two three] [ŔéḿöVé »%1$s« one two] [Ḿöŕé ţĥåñ %1$d ñéŵ ñöţîƒîçåţîöñš one two three four] @@ -9496,8 +9497,10 @@ [ƒöŕ »{time}« »{time}« one] [Ŵåţçĥ Åļöñĝ one two] [ŠéŕVéŕ ÞŕîVåçý Ðéƒåûļţš one two three] + [Ðö ýöû ŵåñţ ţö åļšö åþþļý ţĥîš çĥåñĝé ţö åļļ ýöûŕ éхîšţîñĝ šéŕVéŕš¿ Ýöû çåñ åļšö ðîšåɓļé ðîŕéçţ ḿéššåĝéš öñ îñðîVîðûåļ šéŕVéŕš ɓý Vîšîţîñĝ ţĥåţ šéŕVéŕš šéţţîñĝš þåĝé. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fiveteen] [Ţĥîš šéţţîñĝ îš åþþļîéð ŵĥéñ ýöû ĵöîñ å ñéŵ šéŕVéŕ. Îţ ðöéš ñöţ åþþļý ŕéţŕöåçţîVéļý ţö ýöûŕ éхîšţîñĝ šéŕVéŕš. one two three four five six seven eight nine ten eleven] [Ðö ýöû ŵåñţ ţö åļšö åþþļý ţĥîš çĥåñĝé ţö åļļ ýöûŕ éхîšţîñĝ šéŕVéŕš¿ one two three four five six seven eight] + [ŠéŕVéŕ ÞŕîVåçý one two three] [Šåƒé Ðîŕéçţ Ḿéššåĝîñĝ one two three] [Ðö ñöţ šçåñ one two] [Ðîŕéçţ ḿéššåĝéš ŵîļļ ñöţ ɓé šçåññéð ƒöŕ éхþļîçîţ çöñţéñţ. one two three four five six seven] diff --git a/app/src/main/res/values/public.xml b/app/src/main/res/values/public.xml index 9f746fa02d..bfbf0b9083 100644 --- a/app/src/main/res/values/public.xml +++ b/app/src/main/res/values/public.xml @@ -18004,10 +18004,10 @@ - - - - + + + + @@ -18015,6405 +18015,6408 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index dd3a9053c7..05ecc179dc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1446,7 +1446,7 @@ Select a color Transparency Use Default - 7852a530ec9543719c9290dd0237123c + 5d755f33c77f405688dab4f5133c426c Coming Soon Slash command application {applicationName} {applicationName} application @@ -3622,10 +3622,10 @@ Payment Method per {period} Benefit + What can subscribers do in this channel? Exclusive Channel Adding a channel to a premium tier will remove access to server members who are not premium subscribers. Create a new channel - What can subscribers do in this channel? Edit benefit Type or select an emoji Import @@ -3633,6 +3633,7 @@ Import Perks {channels} & {benefits} Select a role + What do subscribers get? Additional Benefit Perk What can members do in this channel? @@ -5989,8 +5990,8 @@ Members with this permission can drag other members out of this channel. They can only move members between channels both they and the member they are moving have access. Move To User has been moved to the selected channel. - Alert Cleared - No Alert Showing + Alert Cleared + No Alert Showing New notification Remove %1$s More than %1$d new notifications @@ -9525,8 +9526,10 @@ for {time} {time} Watch Along Server Privacy Defaults + Do you want to also apply this change to all your existing servers? You can also disable direct messages on individual servers by visiting that servers settings page. This setting is applied when you join a new server. It does not apply retroactively to your existing servers. Do you want to also apply this change to all your existing servers? + Server Privacy Safe Direct Messaging Do not scan Direct messages will not be scanned for explicit content.