diff --git a/CHANGELOG.md b/CHANGELOG.md
index 684d03bd3..fb0158d80 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,38 @@
+# [5.40.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.40.0-dev.5...v5.40.0-dev.6) (2025-09-20)
+
+
+### Features
+
+* **YouTube Music:** Add `Enable debugging` patch ([#5939](https://github.com/ReVanced/revanced-patches/issues/5939)) ([418f594](https://github.com/ReVanced/revanced-patches/commit/418f5945c213313f9a77cac9a5c326d89c754dfd))
+
+# [5.40.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.40.0-dev.4...v5.40.0-dev.5) (2025-09-20)
+
+
+### Features
+
+* **YouTube Music:** Add `Hide cast button` and `Navigation bar` patches ([#5934](https://github.com/ReVanced/revanced-patches/issues/5934)) ([651d358](https://github.com/ReVanced/revanced-patches/commit/651d3580967a252b57cbf4afbba02d6a4601ccfe))
+
+# [5.40.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.40.0-dev.3...v5.40.0-dev.4) (2025-09-20)
+
+
+### Bug Fixes
+
+* **Spoof video streams:** Resolve occasional playback stuttering ([5c7c8b5](https://github.com/ReVanced/revanced-patches/commit/5c7c8b536416ec53cd98f7d59d11850aa1b70f11))
+
+# [5.40.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.40.0-dev.2...v5.40.0-dev.3) (2025-09-19)
+
+
+### Bug Fixes
+
+* **Instagram - Limit feed to followed profiles:** Change patch to default off ([767f1e3](https://github.com/ReVanced/revanced-patches/commit/767f1e3695327bdbc4daea8b50a80d4c0a38456a))
+
+# [5.40.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.40.0-dev.1...v5.40.0-dev.2) (2025-09-18)
+
+
+### Features
+
+* **Instagram:** Add `Limit feed to followed profiles` patch ([#5908](https://github.com/ReVanced/revanced-patches/issues/5908)) ([8ba9a19](https://github.com/ReVanced/revanced-patches/commit/8ba9a19ade24c5fe9bd6d4e49772b7663522780e))
+
# [5.40.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.39.1-dev.1...v5.40.0-dev.1) (2025-09-17)
diff --git a/extensions/music/src/main/java/app/revanced/extension/music/patches/HideCastButtonPatch.java b/extensions/music/src/main/java/app/revanced/extension/music/patches/HideCastButtonPatch.java
new file mode 100644
index 000000000..d694891ab
--- /dev/null
+++ b/extensions/music/src/main/java/app/revanced/extension/music/patches/HideCastButtonPatch.java
@@ -0,0 +1,24 @@
+package app.revanced.extension.music.patches;
+
+import static app.revanced.extension.shared.Utils.hideViewBy0dpUnderCondition;
+
+import android.view.View;
+import app.revanced.extension.music.settings.Settings;
+
+@SuppressWarnings("unused")
+public class HideCastButtonPatch {
+
+ /**
+ * Injection point
+ */
+ public static int hideCastButton(int original) {
+ return Settings.HIDE_CAST_BUTTON.get() ? View.GONE : original;
+ }
+
+ /**
+ * Injection point
+ */
+ public static void hideCastButton(View view) {
+ hideViewBy0dpUnderCondition(Settings.HIDE_CAST_BUTTON.get(), view);
+ }
+}
diff --git a/extensions/music/src/main/java/app/revanced/extension/music/patches/NavigationBarPatch.java b/extensions/music/src/main/java/app/revanced/extension/music/patches/NavigationBarPatch.java
new file mode 100644
index 000000000..511e50304
--- /dev/null
+++ b/extensions/music/src/main/java/app/revanced/extension/music/patches/NavigationBarPatch.java
@@ -0,0 +1,74 @@
+package app.revanced.extension.music.patches;
+
+import static app.revanced.extension.shared.Utils.hideViewUnderCondition;
+
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import app.revanced.extension.music.settings.Settings;
+
+@SuppressWarnings("unused")
+public class NavigationBarPatch {
+ @NonNull
+ private static String lastYTNavigationEnumName = "";
+
+ public static void setLastAppNavigationEnum(@Nullable Enum> ytNavigationEnumName) {
+ if (ytNavigationEnumName != null) {
+ lastYTNavigationEnumName = ytNavigationEnumName.name();
+ }
+ }
+
+ public static void hideNavigationLabel(TextView textview) {
+ hideViewUnderCondition(Settings.HIDE_NAVIGATION_BAR_LABEL.get(), textview);
+ }
+
+ public static void hideNavigationButton(@NonNull View view) {
+ // Hide entire navigation bar.
+ if (Settings.HIDE_NAVIGATION_BAR.get() && view.getParent() != null) {
+ hideViewUnderCondition(true, (View) view.getParent());
+ return;
+ }
+
+ // Hide navigation buttons based on their type.
+ for (NavigationButton button : NavigationButton.values()) {
+ if (button.ytEnumNames.equals(lastYTNavigationEnumName)) {
+ hideViewUnderCondition(button.hidden, view);
+ break;
+ }
+ }
+ }
+
+ private enum NavigationButton {
+ HOME(
+ "TAB_HOME",
+ Settings.HIDE_NAVIGATION_BAR_HOME_BUTTON.get()
+ ),
+ SAMPLES(
+ "TAB_SAMPLES",
+ Settings.HIDE_NAVIGATION_BAR_SAMPLES_BUTTON.get()
+ ),
+ EXPLORE(
+ "TAB_EXPLORE",
+ Settings.HIDE_NAVIGATION_BAR_EXPLORE_BUTTON.get()
+ ),
+ LIBRARY(
+ "LIBRARY_MUSIC",
+ Settings.HIDE_NAVIGATION_BAR_LIBRARY_BUTTON.get()
+ ),
+ UPGRADE(
+ "TAB_MUSIC_PREMIUM",
+ Settings.HIDE_NAVIGATION_BAR_UPGRADE_BUTTON.get()
+ );
+
+ private final String ytEnumNames;
+ private final boolean hidden;
+
+ NavigationButton(@NonNull String ytEnumNames, boolean hidden) {
+ this.ytEnumNames = ytEnumNames;
+ this.hidden = hidden;
+ }
+ }
+}
diff --git a/extensions/music/src/main/java/app/revanced/extension/music/settings/Settings.java b/extensions/music/src/main/java/app/revanced/extension/music/settings/Settings.java
index f793eef0f..b120672c5 100644
--- a/extensions/music/src/main/java/app/revanced/extension/music/settings/Settings.java
+++ b/extensions/music/src/main/java/app/revanced/extension/music/settings/Settings.java
@@ -18,7 +18,15 @@ public class Settings extends BaseSettings {
public static final BooleanSetting HIDE_UPGRADE_BUTTON = new BooleanSetting("revanced_music_hide_upgrade_button", TRUE, true);
// General
+ public static final BooleanSetting HIDE_CAST_BUTTON = new BooleanSetting("revanced_music_hide_cast_button", FALSE, false);
public static final BooleanSetting HIDE_CATEGORY_BAR = new BooleanSetting("revanced_music_hide_category_bar", FALSE, true);
+ public static final BooleanSetting HIDE_NAVIGATION_BAR_HOME_BUTTON = new BooleanSetting("revanced_music_hide_navigation_bar_home_button", FALSE, true);
+ public static final BooleanSetting HIDE_NAVIGATION_BAR_SAMPLES_BUTTON = new BooleanSetting("revanced_music_hide_navigation_bar_samples_button", FALSE, true);
+ public static final BooleanSetting HIDE_NAVIGATION_BAR_EXPLORE_BUTTON = new BooleanSetting("revanced_music_hide_navigation_bar_explore_button", FALSE, true);
+ public static final BooleanSetting HIDE_NAVIGATION_BAR_LIBRARY_BUTTON = new BooleanSetting("revanced_music_hide_navigation_bar_library_button", FALSE, true);
+ public static final BooleanSetting HIDE_NAVIGATION_BAR_UPGRADE_BUTTON = new BooleanSetting("revanced_music_hide_navigation_bar_upgrade_button", TRUE, true);
+ public static final BooleanSetting HIDE_NAVIGATION_BAR = new BooleanSetting("revanced_music_hide_navigation_bar", FALSE, true);
+ public static final BooleanSetting HIDE_NAVIGATION_BAR_LABEL = new BooleanSetting("revanced_music_hide_navigation_bar_labels", FALSE, true);
// Player
public static final BooleanSetting PERMANENT_REPEAT = new BooleanSetting("revanced_music_play_permanent_repeat", FALSE, true);
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/EnableDebuggingPatch.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/patches/EnableDebuggingPatch.java
similarity index 98%
rename from extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/EnableDebuggingPatch.java
rename to extensions/shared/library/src/main/java/app/revanced/extension/shared/patches/EnableDebuggingPatch.java
index ff891edc1..424ba7b12 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/EnableDebuggingPatch.java
+++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/patches/EnableDebuggingPatch.java
@@ -1,4 +1,4 @@
-package app.revanced.extension.youtube.patches;
+package app.revanced.extension.shared.patches;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/SpoofVideoStreamsPatch.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/SpoofVideoStreamsPatch.java
index f11c7ea26..a5f69ba30 100644
--- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/SpoofVideoStreamsPatch.java
+++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/SpoofVideoStreamsPatch.java
@@ -97,6 +97,35 @@ public class SpoofVideoStreamsPatch {
return playerRequestUri;
}
+ /**
+ * Injection point.
+ *
+ * Blocks /get_watch requests by returning an unreachable URI.
+ * /att/get requests are used to obtain a PoToken challenge.
+ * See: botGuardScript.js#L15
+ *
+ * Since the Spoof streaming data patch was implemented because a valid PoToken cannot be obtained,
+ * Blocking /att/get requests are not a problem.
+ */
+ public static String blockGetAttRequest(String originalUrlString) {
+ if (SPOOF_STREAMING_DATA) {
+ try {
+ var originalUri = Uri.parse(originalUrlString);
+ String path = originalUri.getPath();
+
+ if (path != null && path.contains("att/get")) {
+ Logger.printDebug(() -> "Blocking 'att/get' by returning internet connection check uri");
+
+ return INTERNET_CONNECTION_CHECK_URI_STRING;
+ }
+ } catch (Exception ex) {
+ Logger.printException(() -> "blockGetAttRequest failure", ex);
+ }
+ }
+
+ return originalUrlString;
+ }
+
/**
* Injection point.
*
@@ -130,7 +159,7 @@ public class SpoofVideoStreamsPatch {
/**
* Injection point.
- * Only invoked when playing a livestream on an iOS client.
+ * Only invoked when playing a livestream on an Apple client.
*/
public static boolean fixHLSCurrentTime(boolean original) {
if (!SPOOF_STREAMING_DATA) {
@@ -139,6 +168,14 @@ public class SpoofVideoStreamsPatch {
return false;
}
+ /*
+ * Injection point.
+ * Fix audio stuttering in YouTube Music.
+ */
+ public static boolean disableSABR() {
+ return SPOOF_STREAMING_DATA;
+ }
+
/**
* Injection point.
* Turns off a feature flag that interferes with spoofing.
diff --git a/gradle.properties b/gradle.properties
index 9ea70c171..67e71bb03 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M
org.gradle.parallel = true
android.useAndroidX = true
kotlin.code.style = official
-version = 5.40.0-dev.1
+version = 5.40.0-dev.6
diff --git a/patches/api/patches.api b/patches/api/patches.api
index f92ea05e1..aeaab90db 100644
--- a/patches/api/patches.api
+++ b/patches/api/patches.api
@@ -64,6 +64,10 @@ public final class app/revanced/patches/all/misc/debugging/EnableAndroidDebuggin
public static final fun getEnableAndroidDebuggingPatch ()Lapp/revanced/patcher/patch/ResourcePatch;
}
+public final class app/revanced/patches/all/misc/directory/ChangeDataDirectoryLocationPatchKt {
+ public static final fun getChangeDataDirectoryLocationPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
public final class app/revanced/patches/all/misc/directory/documentsprovider/ExportInternalDataDocumentsProviderPatchKt {
public static final fun getExportInternalDataDocumentsProviderPatch ()Lapp/revanced/patcher/patch/ResourcePatch;
}
@@ -148,6 +152,10 @@ public final class app/revanced/patches/angulus/ads/RemoveAdsPatchKt {
public static final fun getAngulusPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
+public final class app/revanced/patches/backdrops/misc/pro/ProUnlockPatchKt {
+ public static final fun getProUnlockPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
public final class app/revanced/patches/bandcamp/limitations/RemovePlayLimitsPatchKt {
public static final fun getRemovePlayLimitsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -224,6 +232,10 @@ public final class app/revanced/patches/googlephotos/misc/gms/GmsCoreSupportPatc
public static final fun getGmsCoreSupportPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
+public final class app/revanced/patches/googlephotos/misc/preferences/RestoreHiddenBackUpWhileChargingTogglePatchKt {
+ public static final fun getRestoreHiddenBackUpWhileChargingTogglePatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
public final class app/revanced/patches/googlerecorder/restrictions/RemoveDeviceRestrictionsKt {
public static final fun getRemoveDeviceRestrictionsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -308,6 +320,14 @@ public final class app/revanced/patches/messenger/inbox/HideInboxSubtabsPatchKt
public static final fun getHideInboxSubtabsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
+public final class app/revanced/patches/messenger/inputfield/DisableSwitchingEmojiToStickerPatchKt {
+ public static final fun getDisableSwitchingEmojiToStickerPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
+public final class app/revanced/patches/messenger/inputfield/DisableTypingIndicatorPatchKt {
+ public static final fun getDisableTypingIndicatorPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
public final class app/revanced/patches/messenger/layout/HideFacebookButtonPatchKt {
public static final fun getHideFacebookButtonPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -320,6 +340,14 @@ public final class app/revanced/patches/messenger/misc/extension/ExtensionPatchK
public static final fun getSharedExtensionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
+public final class app/revanced/patches/messenger/navbar/RemoveMetaAITabPatchKt {
+ public static final fun getRemoveMetaAITabPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
+public final class app/revanced/patches/meta/ads/HideAdsPatchKt {
+ public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
public final class app/revanced/patches/mifitness/misc/locale/ForceEnglishLocalePatchKt {
public static final fun getForceEnglishLocalePatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -340,10 +368,22 @@ public final class app/revanced/patches/music/interaction/permanentrepeat/Perman
public static final fun getPermanentRepeatPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
+public final class app/revanced/patches/music/interaction/permanentshuffle/PermanentShufflePatchKt {
+ public static final fun getPermanentShufflePatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
+public final class app/revanced/patches/music/layout/castbutton/HideCastButtonKt {
+ public static final fun getHideCastButton ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
public final class app/revanced/patches/music/layout/compactheader/HideCategoryBarKt {
public static final fun getHideCategoryBar ()Lapp/revanced/patcher/patch/BytecodePatch;
}
+public final class app/revanced/patches/music/layout/navigationbar/NavigationBarPatchKt {
+ public static final fun getNavigationBarPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
public final class app/revanced/patches/music/layout/premium/HideGetPremiumPatchKt {
public static final fun getHideGetPremiumPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -361,6 +401,10 @@ public final class app/revanced/patches/music/misc/backgroundplayback/Background
public static final fun getBackgroundPlaybackPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
+public final class app/revanced/patches/music/misc/debugging/EnableDebuggingPatchKt {
+ public static final fun getEnableDebuggingPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
public final class app/revanced/patches/music/misc/extension/SharedExtensionPatchKt {
public static final fun getSharedExtensionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -414,6 +458,10 @@ public final class app/revanced/patches/netguard/broadcasts/removerestriction/Re
public static final fun getRemoveBroadcastsRestrictionPatch ()Lapp/revanced/patcher/patch/ResourcePatch;
}
+public final class app/revanced/patches/nfctoolsse/misc/pro/UnlockProPatchKt {
+ public static final fun getUnlockProPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
public final class app/revanced/patches/nunl/ads/HideAdsPatchKt {
public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -422,6 +470,10 @@ public final class app/revanced/patches/nunl/firebase/SpoofCertificatePatchKt {
public static final fun getSpoofCertificatePatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
+public final class app/revanced/patches/nyx/misc/pro/UnlockProPatchKt {
+ public static final fun getUnlockProPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
public final class app/revanced/patches/openinghours/misc/fix/crash/FixCrashPatchKt {
public static final fun getFixCrashPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -648,11 +700,16 @@ public final class app/revanced/patches/reddit/customclients/sync/syncforreddit/
public static final fun getFixVideoDownloadsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
+public final class app/revanced/patches/reddit/customclients/syncforreddit/fix/video/FixVideoDownloadsPatchKt {
+ public static final fun getFixVideoDownloadsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
public final class app/revanced/patches/reddit/layout/disablescreenshotpopup/DisableScreenshotPopupPatchKt {
public static final fun getDisableScreenshotPopupPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/reddit/layout/premiumicon/UnlockPremiumIconPatchKt {
+ public static final fun getUnlockPremiumIconPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
public static final fun getUnlockPremiumIconsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -678,22 +735,26 @@ public final class app/revanced/patches/shared/misc/extension/ExtensionHook {
public final class app/revanced/patches/shared/misc/extension/SharedExtensionPatchKt {
public static final fun extensionHook (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lapp/revanced/patcher/Fingerprint;)Lapp/revanced/patches/shared/misc/extension/ExtensionHook;
- public static final fun extensionHook (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function0;
+ public static final fun extensionHook (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;)Lapp/revanced/patches/shared/misc/extension/ExtensionHook;
public static synthetic fun extensionHook$default (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lapp/revanced/patcher/Fingerprint;ILjava/lang/Object;)Lapp/revanced/patches/shared/misc/extension/ExtensionHook;
- public static synthetic fun extensionHook$default (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lkotlin/jvm/functions/Function0;
- public static final fun sharedExtensionPatch (Ljava/lang/String;[Lkotlin/jvm/functions/Function0;)Lapp/revanced/patcher/patch/BytecodePatch;
- public static final fun sharedExtensionPatch ([Lkotlin/jvm/functions/Function0;)Lapp/revanced/patcher/patch/BytecodePatch;
+ public static synthetic fun extensionHook$default (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lapp/revanced/patches/shared/misc/extension/ExtensionHook;
+ public static final fun sharedExtensionPatch (Ljava/lang/String;[Lapp/revanced/patches/shared/misc/extension/ExtensionHook;)Lapp/revanced/patcher/patch/BytecodePatch;
+ public static final fun sharedExtensionPatch ([Lapp/revanced/patches/shared/misc/extension/ExtensionHook;)Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/shared/misc/fix/verticalscroll/VerticalScrollPatchKt {
public static final fun getVerticalScrollPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
+public final class app/revanced/patches/shared/misc/gms/FingerprintsKt {
+ public static final field GET_GMS_CORE_VENDOR_GROUP_ID_METHOD_NAME Ljava/lang/String;
+}
+
public final class app/revanced/patches/shared/misc/gms/GmsCoreSupportPatchKt {
public static final fun gmsCoreSupportPatch (Ljava/lang/String;Ljava/lang/String;Lapp/revanced/patcher/Fingerprint;Ljava/util/Set;Lapp/revanced/patcher/Fingerprint;Lapp/revanced/patcher/patch/Patch;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lapp/revanced/patcher/patch/BytecodePatch;
public static synthetic fun gmsCoreSupportPatch$default (Ljava/lang/String;Ljava/lang/String;Lapp/revanced/patcher/Fingerprint;Ljava/util/Set;Lapp/revanced/patcher/Fingerprint;Lapp/revanced/patcher/patch/Patch;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lapp/revanced/patcher/patch/BytecodePatch;
- public static final fun gmsCoreSupportResourcePatch (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lapp/revanced/patcher/patch/Option;ZLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lapp/revanced/patcher/patch/ResourcePatch;
- public static synthetic fun gmsCoreSupportResourcePatch$default (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lapp/revanced/patcher/patch/Option;ZLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lapp/revanced/patcher/patch/ResourcePatch;
+ public static final fun gmsCoreSupportResourcePatch (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lapp/revanced/patcher/patch/Option;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lapp/revanced/patcher/patch/ResourcePatch;
+ public static synthetic fun gmsCoreSupportResourcePatch$default (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lapp/revanced/patcher/patch/Option;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lapp/revanced/patcher/patch/ResourcePatch;
}
public final class app/revanced/patches/shared/misc/hex/HexPatchBuilder : java/util/Set, kotlin/jvm/internal/markers/KMappedMarker {
@@ -732,64 +793,23 @@ public final class app/revanced/patches/shared/misc/hex/Replacement {
}
public final class app/revanced/patches/shared/misc/mapping/ResourceElement {
- public fun (Lapp/revanced/patches/shared/misc/mapping/ResourceType;Ljava/lang/String;J)V
- public final fun component1 ()Lapp/revanced/patches/shared/misc/mapping/ResourceType;
+ public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Ljava/lang/String;
public final fun component3 ()J
- public final fun copy (Lapp/revanced/patches/shared/misc/mapping/ResourceType;Ljava/lang/String;J)Lapp/revanced/patches/shared/misc/mapping/ResourceElement;
- public static synthetic fun copy$default (Lapp/revanced/patches/shared/misc/mapping/ResourceElement;Lapp/revanced/patches/shared/misc/mapping/ResourceType;Ljava/lang/String;JILjava/lang/Object;)Lapp/revanced/patches/shared/misc/mapping/ResourceElement;
+ public final fun copy (Ljava/lang/String;Ljava/lang/String;J)Lapp/revanced/patches/shared/misc/mapping/ResourceElement;
+ public static synthetic fun copy$default (Lapp/revanced/patches/shared/misc/mapping/ResourceElement;Ljava/lang/String;Ljava/lang/String;JILjava/lang/Object;)Lapp/revanced/patches/shared/misc/mapping/ResourceElement;
public fun equals (Ljava/lang/Object;)Z
public final fun getId ()J
public final fun getName ()Ljava/lang/String;
- public final fun getType ()Lapp/revanced/patches/shared/misc/mapping/ResourceType;
+ public final fun getType ()Ljava/lang/String;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}
public final class app/revanced/patches/shared/misc/mapping/ResourceMappingPatchKt {
- public static final fun getResourceElements ()Ljava/util/Collection;
- public static final fun getResourceId (Lapp/revanced/patches/shared/misc/mapping/ResourceType;Ljava/lang/String;)J
+ public static final fun get (Ljava/util/List;Ljava/lang/String;Ljava/lang/String;)J
public static final fun getResourceMappingPatch ()Lapp/revanced/patcher/patch/ResourcePatch;
- public static final fun hasResourceId (Lapp/revanced/patches/shared/misc/mapping/ResourceType;Ljava/lang/String;)Z
- public static final fun resourceLiteral (Lapp/revanced/patches/shared/misc/mapping/ResourceType;Ljava/lang/String;I)Lapp/revanced/patcher/LiteralFilter;
- public static synthetic fun resourceLiteral$default (Lapp/revanced/patches/shared/misc/mapping/ResourceType;Ljava/lang/String;IILjava/lang/Object;)Lapp/revanced/patcher/LiteralFilter;
-}
-
-public final class app/revanced/patches/shared/misc/mapping/ResourceType : java/lang/Enum {
- public static final field ANIM Lapp/revanced/patches/shared/misc/mapping/ResourceType;
- public static final field ANIMATOR Lapp/revanced/patches/shared/misc/mapping/ResourceType;
- public static final field ARRAY Lapp/revanced/patches/shared/misc/mapping/ResourceType;
- public static final field ATTR Lapp/revanced/patches/shared/misc/mapping/ResourceType;
- public static final field BOOL Lapp/revanced/patches/shared/misc/mapping/ResourceType;
- public static final field COLOR Lapp/revanced/patches/shared/misc/mapping/ResourceType;
- public static final field Companion Lapp/revanced/patches/shared/misc/mapping/ResourceType$Companion;
- public static final field DIMEN Lapp/revanced/patches/shared/misc/mapping/ResourceType;
- public static final field DRAWABLE Lapp/revanced/patches/shared/misc/mapping/ResourceType;
- public static final field FONT Lapp/revanced/patches/shared/misc/mapping/ResourceType;
- public static final field FRACTION Lapp/revanced/patches/shared/misc/mapping/ResourceType;
- public static final field ID Lapp/revanced/patches/shared/misc/mapping/ResourceType;
- public static final field INTEGER Lapp/revanced/patches/shared/misc/mapping/ResourceType;
- public static final field INTERPOLATOR Lapp/revanced/patches/shared/misc/mapping/ResourceType;
- public static final field LAYOUT Lapp/revanced/patches/shared/misc/mapping/ResourceType;
- public static final field MENU Lapp/revanced/patches/shared/misc/mapping/ResourceType;
- public static final field MIPMAP Lapp/revanced/patches/shared/misc/mapping/ResourceType;
- public static final field NAVIGATION Lapp/revanced/patches/shared/misc/mapping/ResourceType;
- public static final field PLURALS Lapp/revanced/patches/shared/misc/mapping/ResourceType;
- public static final field RAW Lapp/revanced/patches/shared/misc/mapping/ResourceType;
- public static final field STRING Lapp/revanced/patches/shared/misc/mapping/ResourceType;
- public static final field STYLE Lapp/revanced/patches/shared/misc/mapping/ResourceType;
- public static final field STYLEABLE Lapp/revanced/patches/shared/misc/mapping/ResourceType;
- public static final field TRANSITION Lapp/revanced/patches/shared/misc/mapping/ResourceType;
- public static final field VALUES Lapp/revanced/patches/shared/misc/mapping/ResourceType;
- public static final field XML Lapp/revanced/patches/shared/misc/mapping/ResourceType;
- public static fun getEntries ()Lkotlin/enums/EnumEntries;
- public final fun getValue ()Ljava/lang/String;
- public static fun valueOf (Ljava/lang/String;)Lapp/revanced/patches/shared/misc/mapping/ResourceType;
- public static fun values ()[Lapp/revanced/patches/shared/misc/mapping/ResourceType;
-}
-
-public final class app/revanced/patches/shared/misc/mapping/ResourceType$Companion {
- public final fun fromValue (Ljava/lang/String;)Lapp/revanced/patches/shared/misc/mapping/ResourceType;
+ public static final fun getResourceMappings ()Ljava/util/List;
}
public final class app/revanced/patches/shared/misc/pairip/license/DisableLicenseCheckPatchKt {
@@ -799,6 +819,7 @@ public final class app/revanced/patches/shared/misc/pairip/license/DisableLicens
public final class app/revanced/patches/shared/misc/settings/SettingsPatchKt {
public static final fun overrideThemeColors (Ljava/lang/String;Ljava/lang/String;)V
public static final fun settingsPatch (Ljava/util/List;Ljava/util/Set;)Lapp/revanced/patcher/patch/ResourcePatch;
+ public static final fun settingsPatch (Lkotlin/Pair;Ljava/util/Set;)Lapp/revanced/patcher/patch/ResourcePatch;
public static synthetic fun settingsPatch$default (Ljava/util/List;Ljava/util/Set;ILjava/lang/Object;)Lapp/revanced/patcher/patch/ResourcePatch;
}
@@ -891,8 +912,8 @@ public final class app/revanced/patches/shared/misc/settings/preference/ListPref
public fun ()V
public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lapp/revanced/util/resource/ArrayResource;Lapp/revanced/util/resource/ArrayResource;)V
public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lapp/revanced/util/resource/ArrayResource;Lapp/revanced/util/resource/ArrayResource;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
- public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
- public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+ public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+ public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun getEntries ()Lapp/revanced/util/resource/ArrayResource;
public final fun getEntriesKey ()Ljava/lang/String;
public final fun getEntryValues ()Lapp/revanced/util/resource/ArrayResource;
@@ -1004,6 +1025,10 @@ public final class app/revanced/patches/spotify/layout/theme/CustomThemePatchKt
public static final fun getCustomThemePatch ()Lapp/revanced/patcher/patch/ResourcePatch;
}
+public final class app/revanced/patches/spotify/lite/ondemand/OnDemandPatchKt {
+ public static final fun getOnDemandPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
public final class app/revanced/patches/spotify/misc/extension/ExtensionPatchKt {
public static final fun getSharedExtensionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -1012,6 +1037,14 @@ public final class app/revanced/patches/spotify/misc/fix/SpoofClientPatchKt {
public static final fun getSpoofClientPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
+public final class app/revanced/patches/spotify/misc/fix/SpoofPackageInfoPatchKt {
+ public static final fun getSpoofPackageInfoPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
+public final class app/revanced/patches/spotify/misc/fix/SpoofSignaturePatchKt {
+ public static final fun getSpoofSignaturePatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
public final class app/revanced/patches/spotify/misc/fix/login/FixFacebookLoginPatchKt {
public static final fun getFixFacebookLoginPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -1028,6 +1061,10 @@ public final class app/revanced/patches/spotify/misc/widgets/FixThirdPartyLaunch
public static final fun getFixThirdPartyLaunchersWidgets ()Lapp/revanced/patcher/patch/BytecodePatch;
}
+public final class app/revanced/patches/spotify/navbar/PremiumNavbarTabPatchKt {
+ public static final fun getPremiumNavbarTabPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
public final class app/revanced/patches/stocard/layout/HideOffersTabPatchKt {
public static final fun getHideOffersTabPatch ()Lapp/revanced/patcher/patch/ResourcePatch;
}
@@ -1248,6 +1285,10 @@ public final class app/revanced/patches/viber/ads/HideAdsPatchKt {
public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
+public final class app/revanced/patches/vsco/misc/pro/UnlockProPatchKt {
+ public static final fun getUnlockProPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
public final class app/revanced/patches/warnwetter/misc/firebasegetcert/FirebaseGetCertPatchKt {
public static final fun getFirebaseGetCertPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -1256,6 +1297,10 @@ public final class app/revanced/patches/warnwetter/misc/promocode/PromoCodeUnloc
public static final fun getPromoCodeUnlockPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
+public final class app/revanced/patches/windyapp/misc/unlockpro/UnlockProPatchKt {
+ public static final fun getUnlockProPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
public final class app/revanced/patches/youtube/ad/general/HideAdsPatchKt {
public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -1277,6 +1322,7 @@ public final class app/revanced/patches/youtube/interaction/dialog/RemoveViewerD
}
public final class app/revanced/patches/youtube/interaction/doubletap/DisableChapterSkipDoubleTapPatchKt {
+ public static final fun getDisableChapterSkipDoubleTapPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
public static final fun getDisableDoubleTapActionsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -1353,7 +1399,15 @@ public final class app/revanced/patches/youtube/layout/hide/fullscreenambientmod
}
public final class app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsPatchKt {
+ public static final fun getAlbumCardId ()J
+ public static final fun getBarContainerHeightId ()J
+ public static final fun getCrowdfundingBoxId ()J
+ public static final fun getExpandButtonDownId ()J
+ public static final fun getFabButtonId ()J
+ public static final fun getFilterBarHeightId ()J
public static final fun getHideLayoutComponentsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+ public static final fun getRelatedChipCloudMarginId ()J
+ public static final fun getYouTubeLogo ()J
}
public final class app/revanced/patches/youtube/layout/hide/infocards/HideInfoCardsPatchKt {
@@ -1372,6 +1426,10 @@ public final class app/revanced/patches/youtube/layout/hide/rollingnumber/Disabl
public static final fun getDisableRollingNumberAnimationPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
+public final class app/revanced/patches/youtube/layout/hide/seekbar/HideSeekbarPatchKt {
+ public static final fun getHideSeekbarPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
public final class app/revanced/patches/youtube/layout/hide/shorts/HideShortsComponentsPatchKt {
public static final fun getHideShortsComponentsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -1380,6 +1438,10 @@ public final class app/revanced/patches/youtube/layout/hide/signintotvpopup/Disa
public static final fun getDisableSignInToTvPopupPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
+public final class app/revanced/patches/youtube/layout/hide/suggestedvideoendscreen/DisableSuggestedVideoEndScreenPatchKt {
+ public static final fun getDisableSuggestedVideoEndScreenPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
public final class app/revanced/patches/youtube/layout/hide/time/HideTimestampPatchKt {
public static final fun getHideTimestampPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -1392,6 +1454,14 @@ public final class app/revanced/patches/youtube/layout/panels/popup/PlayerPopupP
public static final fun getPlayerPopupPanelsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
+public final class app/revanced/patches/youtube/layout/player/background/PlayerControlsBackgroundPatchKt {
+ public static final fun getPlayerControlsBackgroundPatch ()Lapp/revanced/patcher/patch/ResourcePatch;
+}
+
+public final class app/revanced/patches/youtube/layout/player/fullscreen/OpenVideosFullscreenKt {
+ public static final fun getOpenVideosFullscreen ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
public final class app/revanced/patches/youtube/layout/player/fullscreen/OpenVideosFullscreenPatchKt {
public static final fun getOpenVideosFullscreenPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -1446,6 +1516,10 @@ public final class app/revanced/patches/youtube/layout/startupshortsreset/Disabl
public static final fun getDisableResumingShortsOnStartupPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
+public final class app/revanced/patches/youtube/layout/tablet/EnableTabletLayoutPatchKt {
+ public static final fun getEnableTabletLayoutPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
public final class app/revanced/patches/youtube/layout/theme/LithoColorHookPatchKt {
public static final fun getLithoColorHookPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
public static final fun getLithoColorOverrideHook ()Lkotlin/jvm/functions/Function2;
@@ -1491,6 +1565,14 @@ public final class app/revanced/patches/youtube/misc/extension/SharedExtensionPa
public static final fun getSharedExtensionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
+public final class app/revanced/patches/youtube/misc/fix/playback/SpoofVideoStreamsPatchKt {
+ public static final fun getSpoofVideoStreamsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
+public final class app/revanced/patches/youtube/misc/fix/playback/UserAgentClientSpoofPatchKt {
+ public static final fun getUserAgentClientSpoofPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
public final class app/revanced/patches/youtube/misc/fix/playbackspeed/FIxPlaybackSpeedWhilePlayingPatchKt {
public static final fun getFixPlaybackSpeedWhilePlayingPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -1538,6 +1620,7 @@ public final class app/revanced/patches/youtube/misc/playercontrols/PlayerContro
public final class app/revanced/patches/youtube/misc/playercontrols/PlayerControlsPatchKt {
public static final fun getAddBottomControl ()Lkotlin/jvm/functions/Function1;
public static final fun getPlayerControlsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+ public static final fun getPlayerControlsResourcePatch ()Lapp/revanced/patcher/patch/ResourcePatch;
public static final fun initializeBottomControl (Ljava/lang/String;)V
public static final fun injectVisibilityCheckCall (Ljava/lang/String;)V
}
@@ -1548,6 +1631,9 @@ public final class app/revanced/patches/youtube/misc/playertype/PlayerTypeHookPa
public final class app/revanced/patches/youtube/misc/playservice/VersionCheckPatchKt {
public static final fun getVersionCheckPatch ()Lapp/revanced/patcher/patch/ResourcePatch;
+ public static final fun is_19_03_or_greater ()Z
+ public static final fun is_19_04_or_greater ()Z
+ public static final fun is_19_16_or_greater ()Z
public static final fun is_19_17_or_greater ()Z
public static final fun is_19_18_or_greater ()Z
public static final fun is_19_23_or_greater ()Z
@@ -1572,16 +1658,6 @@ public final class app/revanced/patches/youtube/misc/playservice/VersionCheckPat
public static final fun is_20_10_or_greater ()Z
public static final fun is_20_14_or_greater ()Z
public static final fun is_20_15_or_greater ()Z
- public static final fun is_20_19_or_greater ()Z
- public static final fun is_20_20_or_greater ()Z
- public static final fun is_20_21_or_greater ()Z
- public static final fun is_20_22_or_greater ()Z
- public static final fun is_20_26_or_greater ()Z
- public static final fun is_20_28_or_greater ()Z
- public static final fun is_20_30_or_greater ()Z
- public static final fun is_20_31_or_greater ()Z
- public static final fun is_20_34_or_greater ()Z
- public static final fun is_20_37_or_greater ()Z
}
public final class app/revanced/patches/youtube/misc/privacy/RemoveTrackingQueryParameterPatchKt {
@@ -1623,6 +1699,10 @@ public final class app/revanced/patches/youtube/misc/spoof/UserAgentClientSpoofP
public static final fun getUserAgentClientSpoofPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
+public final class app/revanced/patches/youtube/misc/zoomhaptics/ZoomHapticsPatchKt {
+ public static final fun getZoomHapticsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
public final class app/revanced/patches/youtube/video/audio/ForceOriginalAudioPatchKt {
public static final fun getForceOriginalAudioPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -1687,6 +1767,14 @@ public final class app/revanced/patches/youtube/video/videoid/VideoIdPatchKt {
public static final fun hookVideoId (Ljava/lang/String;)V
}
+public final class app/revanced/patches/youtube/video/videoqualitymenu/RestoreOldVideoQualityMenuPatchKt {
+ public static final fun getRestoreOldVideoQualityMenuPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
+public final class app/revanced/patches/yuka/misc/unlockpremium/UnlockPremiumPatchKt {
+ public static final fun getUnlockPremiumPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
public final class app/revanced/util/BytecodeUtilsKt {
public static final fun addInstructionsAtControlFlowLabel (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;ILjava/lang/String;)V
public static final fun addInstructionsAtControlFlowLabel (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;ILjava/lang/String;[Lapp/revanced/patcher/util/smali/ExternalLabel;)V
@@ -1736,7 +1824,6 @@ public final class app/revanced/util/BytecodeUtilsKt {
public static final fun indexOfFirstResourceIdOrThrow (Lcom/android/tools/smali/dexlib2/iface/Method;Ljava/lang/String;)I
public static final fun injectHideViewCall (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;IILjava/lang/String;Ljava/lang/String;)V
public static final fun literal (Lapp/revanced/patcher/FingerprintBuilder;Lkotlin/jvm/functions/Function0;)V
- public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;)V
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;B)V
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;C)V
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;D)V
@@ -1744,9 +1831,9 @@ public final class app/revanced/util/BytecodeUtilsKt {
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;I)V
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;J)V
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;Ljava/lang/String;)V
- public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;Ljava/lang/Void;)V
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;S)V
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;Z)V
+ public static synthetic fun returnEarly$default (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;ZILjava/lang/Object;)V
public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;B)V
public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;C)V
public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;D)V
@@ -1754,7 +1841,6 @@ public final class app/revanced/util/BytecodeUtilsKt {
public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;I)V
public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;J)V
public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;Ljava/lang/String;)V
- public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;Ljava/lang/Void;)V
public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;S)V
public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;Z)V
public static final fun transformMethods (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableClass;Lkotlin/jvm/functions/Function1;)V
diff --git a/patches/src/main/kotlin/app/revanced/patches/instagram/feed/LimitFeedToFollowedProfiles.kt b/patches/src/main/kotlin/app/revanced/patches/instagram/feed/LimitFeedToFollowedProfiles.kt
index 1c867ac54..3a7033167 100644
--- a/patches/src/main/kotlin/app/revanced/patches/instagram/feed/LimitFeedToFollowedProfiles.kt
+++ b/patches/src/main/kotlin/app/revanced/patches/instagram/feed/LimitFeedToFollowedProfiles.kt
@@ -16,6 +16,7 @@ internal const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/instagr
val limitFeedToFollowedProfiles = bytecodePatch(
name = "Limit feed to followed profiles",
description = "Filters the home feed to display only content from profiles you follow.",
+ use = false
) {
compatibleWith("com.instagram.android")
diff --git a/patches/src/main/kotlin/app/revanced/patches/music/layout/castbutton/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/music/layout/castbutton/Fingerprints.kt
new file mode 100644
index 000000000..718d49479
--- /dev/null
+++ b/patches/src/main/kotlin/app/revanced/patches/music/layout/castbutton/Fingerprints.kt
@@ -0,0 +1,17 @@
+package app.revanced.patches.music.layout.castbutton
+
+import com.android.tools.smali.dexlib2.AccessFlags
+import app.revanced.patcher.fingerprint
+import app.revanced.util.literal
+
+internal val mediaRouteButtonFingerprint = fingerprint {
+ accessFlags(AccessFlags.PRIVATE, AccessFlags.FINAL)
+ returns("Z")
+ strings("MediaRouteButton")
+}
+
+internal val playerOverlayChipFingerprint = fingerprint {
+ accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
+ returns("L")
+ literal { playerOverlayChip }
+}
diff --git a/patches/src/main/kotlin/app/revanced/patches/music/layout/castbutton/HideCastButton.kt b/patches/src/main/kotlin/app/revanced/patches/music/layout/castbutton/HideCastButton.kt
new file mode 100644
index 000000000..4e18e6305
--- /dev/null
+++ b/patches/src/main/kotlin/app/revanced/patches/music/layout/castbutton/HideCastButton.kt
@@ -0,0 +1,70 @@
+package app.revanced.patches.music.layout.castbutton
+
+import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
+import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
+import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
+import app.revanced.patcher.patch.bytecodePatch
+import app.revanced.patches.all.misc.resources.addResources
+import app.revanced.patches.all.misc.resources.addResourcesPatch
+import app.revanced.patches.music.misc.extension.sharedExtensionPatch
+import app.revanced.patches.music.misc.settings.PreferenceScreen
+import app.revanced.patches.music.misc.settings.settingsPatch
+import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
+import app.revanced.util.indexOfFirstInstructionOrThrow
+import app.revanced.util.indexOfFirstLiteralInstructionOrThrow
+import com.android.tools.smali.dexlib2.Opcode
+import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
+
+internal var playerOverlayChip = -1L
+ private set
+
+private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/HideCastButtonPatch;"
+
+@Suppress("unused")
+val hideCastButton = bytecodePatch(
+ name = "Hide cast button",
+ description = "Adds an option to hide the cast button."
+) {
+ dependsOn(
+ sharedExtensionPatch,
+ settingsPatch,
+ addResourcesPatch,
+ )
+
+ compatibleWith(
+ "com.google.android.apps.youtube.music"(
+ "7.29.52"
+ )
+ )
+
+ execute {
+ addResources("music", "layout.castbutton.hideCastButton")
+
+ PreferenceScreen.GENERAL.addPreferences(
+ SwitchPreference("revanced_music_hide_cast_button"),
+ )
+
+ mediaRouteButtonFingerprint.classDef.apply {
+ val setVisibilityMethod = methods.first { method -> method.name == "setVisibility" }
+
+ setVisibilityMethod.addInstructions(
+ 0,
+ """
+ invoke-static { p1 }, $EXTENSION_CLASS_DESCRIPTOR->hideCastButton(I)I
+ move-result p1
+ """
+ )
+ }
+
+ playerOverlayChipFingerprint.method.apply {
+ val resourceIndex = indexOfFirstLiteralInstructionOrThrow(playerOverlayChip)
+ val targetIndex = indexOfFirstInstructionOrThrow(resourceIndex, Opcode.MOVE_RESULT)
+ val targetRegister = getInstruction(targetIndex).registerA
+
+ addInstruction(
+ targetIndex + 1,
+ "invoke-static { v$targetRegister }, $EXTENSION_CLASS_DESCRIPTOR->hideCastButton(Landroid/view/View;)V"
+ )
+ }
+ }
+}
diff --git a/patches/src/main/kotlin/app/revanced/patches/music/layout/navigationbar/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/music/layout/navigationbar/Fingerprints.kt
new file mode 100644
index 000000000..ab4fb3a8b
--- /dev/null
+++ b/patches/src/main/kotlin/app/revanced/patches/music/layout/navigationbar/Fingerprints.kt
@@ -0,0 +1,36 @@
+package app.revanced.patches.music.layout.navigationbar
+
+import com.android.tools.smali.dexlib2.Opcode
+import com.android.tools.smali.dexlib2.AccessFlags
+import app.revanced.patcher.fingerprint
+import app.revanced.util.getReference
+import app.revanced.util.indexOfFirstInstruction
+import app.revanced.util.literal
+import com.android.tools.smali.dexlib2.iface.Method
+import com.android.tools.smali.dexlib2.iface.reference.MethodReference
+
+internal val tabLayoutTextFingerprint = fingerprint {
+ accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
+ returns("V")
+ parameters("L")
+ opcodes(
+ Opcode.IGET,
+ Opcode.INVOKE_STATIC,
+ Opcode.MOVE_RESULT_OBJECT,
+ Opcode.IF_NEZ,
+ Opcode.SGET_OBJECT,
+ Opcode.INVOKE_INTERFACE,
+ Opcode.MOVE_RESULT
+ )
+ strings("FEmusic_search")
+ literal { text1 }
+ custom { method, _ ->
+ indexOfGetVisibilityInstruction(method) >= 0
+ }
+}
+
+internal fun indexOfGetVisibilityInstruction(method: Method) =
+ method.indexOfFirstInstruction {
+ opcode == Opcode.INVOKE_VIRTUAL &&
+ getReference()?.name == "getVisibility"
+ }
diff --git a/patches/src/main/kotlin/app/revanced/patches/music/layout/navigationbar/NavigationBarPatch.kt b/patches/src/main/kotlin/app/revanced/patches/music/layout/navigationbar/NavigationBarPatch.kt
new file mode 100644
index 000000000..d3af09f24
--- /dev/null
+++ b/patches/src/main/kotlin/app/revanced/patches/music/layout/navigationbar/NavigationBarPatch.kt
@@ -0,0 +1,110 @@
+package app.revanced.patches.music.layout.navigationbar
+
+import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
+import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
+import app.revanced.patcher.patch.PatchException
+import app.revanced.patcher.patch.bytecodePatch
+import app.revanced.patches.all.misc.resources.addResources
+import app.revanced.patches.all.misc.resources.addResourcesPatch
+import app.revanced.patches.music.misc.extension.sharedExtensionPatch
+import app.revanced.patches.music.misc.settings.PreferenceScreen
+import app.revanced.patches.music.misc.settings.settingsPatch
+import app.revanced.patches.shared.misc.mapping.get
+import app.revanced.patches.shared.misc.mapping.resourceMappingPatch
+import app.revanced.patches.shared.misc.mapping.resourceMappings
+import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference
+import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
+import app.revanced.util.indexOfFirstInstructionOrThrow
+import app.revanced.util.indexOfFirstLiteralInstructionOrThrow
+import com.android.tools.smali.dexlib2.Opcode
+import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
+import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
+import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
+
+internal var text1 = -1L
+ private set
+
+private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/NavigationBarPatch;"
+
+@Suppress("unused")
+val navigationBarPatch = bytecodePatch(
+ name = "Navigation bar",
+ description = "Adds options to hide navigation bar, labels and buttons."
+) {
+ dependsOn(
+ resourceMappingPatch,
+ sharedExtensionPatch,
+ settingsPatch,
+ addResourcesPatch
+ )
+
+ compatibleWith(
+ "com.google.android.apps.youtube.music"(
+ "7.29.52"
+ )
+ )
+
+ execute {
+ text1 = resourceMappings[
+ "id",
+ "text1",
+ ]
+
+ addResources("music", "layout.navigationbar.navigationBarPatch")
+
+ PreferenceScreen.GENERAL.addPreferences(
+ PreferenceScreenPreference(
+ key = "revanced_music_navigation_bar_screen",
+ sorting = PreferenceScreenPreference.Sorting.UNSORTED,
+ preferences = setOf(
+ SwitchPreference("revanced_music_hide_navigation_bar_home_button"),
+ SwitchPreference("revanced_music_hide_navigation_bar_samples_button"),
+ SwitchPreference("revanced_music_hide_navigation_bar_explore_button"),
+ SwitchPreference("revanced_music_hide_navigation_bar_library_button"),
+ SwitchPreference("revanced_music_hide_navigation_bar_upgrade_button"),
+
+ SwitchPreference("revanced_music_hide_navigation_bar"),
+ SwitchPreference("revanced_music_hide_navigation_bar_labels"),
+ )
+ )
+ )
+
+ tabLayoutTextFingerprint.method.apply {
+ /**
+ * Hide navigation labels.
+ */
+ val constIndex = indexOfFirstLiteralInstructionOrThrow(text1)
+ val targetIndex = indexOfFirstInstructionOrThrow(constIndex, Opcode.CHECK_CAST)
+ val targetParameter = getInstruction(targetIndex).reference
+ val targetRegister = getInstruction(targetIndex).registerA
+
+ if (!targetParameter.toString().endsWith("Landroid/widget/TextView;"))
+ throw PatchException("Method signature parameter did not match: $targetParameter")
+
+ addInstruction(
+ targetIndex + 1,
+ "invoke-static { v$targetRegister }, $EXTENSION_CLASS_DESCRIPTOR->hideNavigationLabel(Landroid/widget/TextView;)V"
+ )
+
+ /**
+ * Set navigation enum and hide navigation buttons.
+ */
+ val enumIndex = tabLayoutTextFingerprint.patternMatch!!.startIndex + 3
+ val enumRegister = getInstruction(enumIndex).registerA
+ val insertEnumIndex = indexOfFirstInstructionOrThrow(Opcode.AND_INT_LIT8) - 2
+
+ val pivotTabIndex = indexOfGetVisibilityInstruction(this)
+ val pivotTabRegister = getInstruction(pivotTabIndex).registerC
+
+ addInstruction(
+ pivotTabIndex,
+ "invoke-static { v$pivotTabRegister }, $EXTENSION_CLASS_DESCRIPTOR->hideNavigationButton(Landroid/view/View;)V"
+ )
+
+ addInstruction(
+ insertEnumIndex,
+ "invoke-static { v$enumRegister }, $EXTENSION_CLASS_DESCRIPTOR->setLastAppNavigationEnum(Ljava/lang/Enum;)V"
+ )
+ }
+ }
+}
diff --git a/patches/src/main/kotlin/app/revanced/patches/music/layout/upgradebutton/HideUpgradeButtonPatch.kt b/patches/src/main/kotlin/app/revanced/patches/music/layout/upgradebutton/HideUpgradeButtonPatch.kt
index b2a76f0d7..acd0cb1c2 100644
--- a/patches/src/main/kotlin/app/revanced/patches/music/layout/upgradebutton/HideUpgradeButtonPatch.kt
+++ b/patches/src/main/kotlin/app/revanced/patches/music/layout/upgradebutton/HideUpgradeButtonPatch.kt
@@ -21,9 +21,9 @@ import com.android.tools.smali.dexlib2.iface.reference.FieldReference
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/HideUpgradeButtonPatch;"
+@Deprecated("This patch will be removed in the future.")
@Suppress("unused")
val hideUpgradeButton = bytecodePatch(
- name = "Hide upgrade button",
description = "Hides the upgrade tab from the pivot bar.",
) {
dependsOn(
diff --git a/patches/src/main/kotlin/app/revanced/patches/music/misc/debugging/EnableDebuggingPatch.kt b/patches/src/main/kotlin/app/revanced/patches/music/misc/debugging/EnableDebuggingPatch.kt
new file mode 100644
index 000000000..f4747b2fc
--- /dev/null
+++ b/patches/src/main/kotlin/app/revanced/patches/music/misc/debugging/EnableDebuggingPatch.kt
@@ -0,0 +1,25 @@
+package app.revanced.patches.music.misc.debugging
+
+import app.revanced.patches.music.misc.extension.sharedExtensionPatch
+import app.revanced.patches.music.misc.settings.PreferenceScreen
+import app.revanced.patches.music.misc.settings.settingsPatch
+import app.revanced.patches.shared.misc.debugging.enableDebuggingPatch
+
+@Suppress("unused")
+val enableDebuggingPatch = enableDebuggingPatch(
+ block = {
+ dependsOn(
+ sharedExtensionPatch,
+ settingsPatch,
+ )
+
+ compatibleWith(
+ "com.google.android.apps.youtube.music"(
+ "7.29.52"
+ )
+ )
+ },
+ // String feature flag does not appear to be present with YT Music.
+ hookStringFeatureFlag = false,
+ preferenceScreen = PreferenceScreen.MISC
+)
diff --git a/patches/src/main/kotlin/app/revanced/patches/music/misc/settings/SettingsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/music/misc/settings/SettingsPatch.kt
index ba74c0ab8..f655043cf 100644
--- a/patches/src/main/kotlin/app/revanced/patches/music/misc/settings/SettingsPatch.kt
+++ b/patches/src/main/kotlin/app/revanced/patches/music/misc/settings/SettingsPatch.kt
@@ -8,12 +8,16 @@ import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.patches.shared.misc.mapping.resourceMappingPatch
-import app.revanced.patches.shared.misc.settings.preference.*
+import app.revanced.patches.shared.misc.settings.preference.BasePreference
+import app.revanced.patches.shared.misc.settings.preference.BasePreferenceScreen
+import app.revanced.patches.shared.misc.settings.preference.IntentPreference
+import app.revanced.patches.shared.misc.settings.preference.NonInteractivePreference
import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference
-import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference.Sorting
-import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
import app.revanced.patches.shared.misc.settings.settingsPatch
-import app.revanced.util.*
+import app.revanced.util.ResourceGroup
+import app.revanced.util.copyResources
+import app.revanced.util.copyXmlNode
+import app.revanced.util.inputStreamFromBundledResource
import com.android.tools.smali.dexlib2.util.MethodUtil
private const val BASE_ACTIVITY_HOOK_CLASS_DESCRIPTOR =
@@ -23,7 +27,6 @@ private const val GOOGLE_API_ACTIVITY_HOOK_CLASS_DESCRIPTOR =
private val preferences = mutableSetOf()
-
private val settingsResourcePatch = resourcePatch {
dependsOn(
resourceMappingPatch,
@@ -89,27 +92,6 @@ val settingsPatch = bytecodePatch(
addResources("music", "misc.settings.settingsPatch")
addResources("shared", "misc.debugging.enableDebuggingPatch")
- // Should make a separate debugging patch, but for now include it with all installations.
- PreferenceScreen.MISC.addPreferences(
- PreferenceScreenPreference(
- key = "revanced_debug_screen",
- sorting = Sorting.UNSORTED,
- preferences = setOf(
- SwitchPreference("revanced_debug"),
- NonInteractivePreference(
- "revanced_debug_export_logs_to_clipboard",
- tag = "app.revanced.extension.shared.settings.preference.ExportLogToClipboardPreference",
- selectable = true
- ),
- NonInteractivePreference(
- "revanced_debug_logs_clear_buffer",
- tag = "app.revanced.extension.shared.settings.preference.ClearLogBufferPreference",
- selectable = true
- )
- )
- )
- )
-
// Add an "About" preference to the top.
preferences += NonInteractivePreference(
key = "revanced_settings_music_screen_0_about",
@@ -156,19 +138,19 @@ fun newIntent(settingsName: String) = IntentPreference.Intent(
object PreferenceScreen : BasePreferenceScreen() {
val ADS = Screen(
- "revanced_settings_music_screen_1_ads",
+ key = "revanced_settings_music_screen_1_ads",
summaryKey = null
)
val GENERAL = Screen(
- "revanced_settings_music_screen_2_general",
+ key = "revanced_settings_music_screen_2_general",
summaryKey = null
)
val PLAYER = Screen(
- "revanced_settings_music_screen_3_player",
+ key = "revanced_settings_music_screen_3_player",
summaryKey = null
)
val MISC = Screen(
- "revanced_settings_music_screen_4_misc",
+ key = "revanced_settings_music_screen_4_misc",
summaryKey = null
)
diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/debugging/EnableDebuggingPatch.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/debugging/EnableDebuggingPatch.kt
new file mode 100644
index 000000000..85cf53bd0
--- /dev/null
+++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/debugging/EnableDebuggingPatch.kt
@@ -0,0 +1,147 @@
+package app.revanced.patches.shared.misc.debugging
+
+import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
+import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
+import app.revanced.patcher.patch.BytecodePatchBuilder
+import app.revanced.patcher.patch.BytecodePatchContext
+import app.revanced.patcher.patch.bytecodePatch
+import app.revanced.patches.all.misc.resources.addResources
+import app.revanced.patches.all.misc.resources.addResourcesPatch
+import app.revanced.patches.shared.misc.settings.preference.BasePreference
+import app.revanced.patches.shared.misc.settings.preference.BasePreferenceScreen
+import app.revanced.patches.shared.misc.settings.preference.NonInteractivePreference
+import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference
+import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference.Sorting
+import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
+import app.revanced.util.findInstructionIndicesReversedOrThrow
+import app.revanced.util.indexOfFirstInstructionOrThrow
+import app.revanced.util.indexOfFirstInstructionReversedOrThrow
+import com.android.tools.smali.dexlib2.Opcode
+import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
+
+private const val EXTENSION_CLASS_DESCRIPTOR =
+ "Lapp/revanced/extension/shared/patches/EnableDebuggingPatch;"
+
+/**
+ * Patch shared with YouTube and YT Music.
+ */
+internal fun enableDebuggingPatch(
+ block: BytecodePatchBuilder.() -> Unit = {},
+ executeBlock: BytecodePatchContext.() -> Unit = {},
+ hookStringFeatureFlag: Boolean,
+ preferenceScreen: BasePreferenceScreen.Screen,
+ additionalDebugPreferences: List = emptyList()
+) = bytecodePatch(
+ name = "Enable debugging",
+ description = "Adds options for debugging and exporting ReVanced logs to the clipboard.",
+) {
+
+ dependsOn(addResourcesPatch)
+
+ block()
+
+ execute {
+ executeBlock()
+
+ addResources("shared", "misc.debugging.enableDebuggingPatch")
+
+ val preferences = mutableSetOf(
+ SwitchPreference("revanced_debug"),
+ )
+
+ preferences.addAll(additionalDebugPreferences)
+
+ preferences.addAll(
+ listOf(
+ SwitchPreference("revanced_debug_stacktrace"),
+ SwitchPreference("revanced_debug_toast_on_error"),
+ NonInteractivePreference(
+ "revanced_debug_export_logs_to_clipboard",
+ tag = "app.revanced.extension.shared.settings.preference.ExportLogToClipboardPreference",
+ selectable = true
+ ),
+ NonInteractivePreference(
+ "revanced_debug_logs_clear_buffer",
+ tag = "app.revanced.extension.shared.settings.preference.ClearLogBufferPreference",
+ selectable = true
+ )
+ )
+ )
+
+ preferenceScreen.addPreferences(
+ PreferenceScreenPreference(
+ key = "revanced_debug_screen",
+ sorting = Sorting.UNSORTED,
+ preferences = preferences,
+ )
+ )
+
+ // Hook the methods that look up if a feature flag is active.
+ experimentalBooleanFeatureFlagFingerprint.match(
+ experimentalFeatureFlagParentFingerprint.originalClassDef
+ ).method.apply {
+ findInstructionIndicesReversedOrThrow(Opcode.RETURN).forEach { index ->
+ val register = getInstruction(index).registerA
+
+ addInstructions(
+ index,
+ """
+ invoke-static { v$register, p1 }, $EXTENSION_CLASS_DESCRIPTOR->isBooleanFeatureFlagEnabled(ZLjava/lang/Long;)Z
+ move-result v$register
+ """
+ )
+ }
+ }
+
+ experimentalDoubleFeatureFlagFingerprint.match(
+ experimentalFeatureFlagParentFingerprint.originalClassDef
+ ).method.apply {
+ val insertIndex = indexOfFirstInstructionOrThrow(Opcode.MOVE_RESULT_WIDE)
+
+ addInstructions(
+ insertIndex,
+ """
+ move-result-wide v0 # Also clobbers v1 (p0) since result is wide.
+ invoke-static/range { v0 .. v5 }, $EXTENSION_CLASS_DESCRIPTOR->isDoubleFeatureFlagEnabled(DJD)D
+ move-result-wide v0
+ return-wide v0
+ """
+ )
+ }
+
+ experimentalLongFeatureFlagFingerprint.match(
+ experimentalFeatureFlagParentFingerprint.originalClassDef
+ ).method.apply {
+ val insertIndex = indexOfFirstInstructionOrThrow(Opcode.MOVE_RESULT_WIDE)
+
+ addInstructions(
+ insertIndex,
+ """
+ move-result-wide v0
+ invoke-static/range { v0 .. v5 }, $EXTENSION_CLASS_DESCRIPTOR->isLongFeatureFlagEnabled(JJJ)J
+ move-result-wide v0
+ return-wide v0
+ """
+ )
+ }
+
+ if (hookStringFeatureFlag) experimentalStringFeatureFlagFingerprint.match(
+ experimentalFeatureFlagParentFingerprint.originalClassDef
+ ).method.apply {
+ val insertIndex = indexOfFirstInstructionReversedOrThrow(Opcode.MOVE_RESULT_OBJECT)
+
+ addInstructions(
+ insertIndex,
+ """
+ move-result-object v0
+ invoke-static { v0, p1, p2, p3 }, $EXTENSION_CLASS_DESCRIPTOR->isStringFeatureFlagEnabled(Ljava/lang/String;JLjava/lang/String;)Ljava/lang/String;
+ move-result-object v0
+ return-object v0
+ """
+ )
+ }
+
+ // There exists other experimental accessor methods for byte[]
+ // and wrappers for obfuscated classes, but currently none of those are hooked.
+ }
+}
diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/debugging/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/debugging/Fingerprints.kt
new file mode 100644
index 000000000..6f183dd08
--- /dev/null
+++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/debugging/Fingerprints.kt
@@ -0,0 +1,35 @@
+package app.revanced.patches.shared.misc.debugging
+
+import app.revanced.patcher.fingerprint
+import com.android.tools.smali.dexlib2.AccessFlags
+
+internal val experimentalFeatureFlagParentFingerprint = fingerprint {
+ accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)
+ returns("L")
+ parameters("L", "J", "[B")
+ strings("Unable to parse proto typed experiment flag: ")
+}
+
+internal val experimentalBooleanFeatureFlagFingerprint = fingerprint {
+ accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)
+ returns("Z")
+ parameters("L", "J", "Z")
+}
+
+internal val experimentalDoubleFeatureFlagFingerprint = fingerprint {
+ accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
+ returns("D")
+ parameters("J", "D")
+}
+
+internal val experimentalLongFeatureFlagFingerprint = fingerprint {
+ accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
+ returns("J")
+ parameters("J", "J")
+}
+
+internal val experimentalStringFeatureFlagFingerprint = fingerprint {
+ accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
+ returns("Ljava/lang/String;")
+ parameters("J", "Ljava/lang/String;")
+}
diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/Fingerprints.kt
index 4805638b2..b031a7f5b 100644
--- a/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/Fingerprints.kt
+++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/Fingerprints.kt
@@ -1,14 +1,11 @@
package app.revanced.patches.shared.misc.spoof
import app.revanced.patcher.fingerprint
-import app.revanced.util.getReference
-import app.revanced.util.indexOfFirstInstruction
import app.revanced.patcher.literal
import app.revanced.patcher.methodCall
import app.revanced.patcher.string
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
-import com.android.tools.smali.dexlib2.iface.reference.MethodReference
internal val buildInitPlaybackRequestFingerprint by fingerprint {
returns("Lorg/chromium/net/UrlRequest\$Builder;")
@@ -45,6 +42,10 @@ internal val buildRequestFingerprint by fingerprint {
methodCall(name = "newUrlRequestBuilder")
) // UrlRequest; or UrlRequest$Builder;
custom { methodDef, _ ->
+ if (indexOfNewUrlRequestBuilderInstruction(methodDef) < 0) {
+ return@custom false
+ }
+
// Different targets have slightly different parameters
// Earlier targets have parameters:
@@ -136,6 +137,17 @@ internal val hlsCurrentTimeFingerprint by fingerprint {
)
}
+internal const val DISABLED_BY_SABR_STREAMING_URI_STRING = "DISABLED_BY_SABR_STREAMING_URI"
+
+internal val mediaFetchEnumConstructorFingerprint = fingerprint {
+ returns("V")
+ strings(
+ "ENABLED",
+ "DISABLED_FOR_PLAYBACK",
+ DISABLED_BY_SABR_STREAMING_URI_STRING
+ )
+}
+
internal val nerdsStatsVideoFormatBuilderFingerprint by fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)
returns("Ljava/lang/String;")
diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/SpoofVideoStreamsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/SpoofVideoStreamsPatch.kt
index 66386f9be..75c15b38f 100644
--- a/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/SpoofVideoStreamsPatch.kt
+++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/SpoofVideoStreamsPatch.kt
@@ -5,23 +5,28 @@ import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.extensions.InstructionExtensions.instructions
+import app.revanced.patcher.fingerprint
import app.revanced.patcher.patch.BytecodePatchBuilder
import app.revanced.patcher.patch.BytecodePatchContext
import app.revanced.patcher.patch.bytecodePatch
+import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable
import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.util.findFreeRegister
import app.revanced.util.findInstructionIndicesReversedOrThrow
import app.revanced.util.getReference
+import app.revanced.util.indexOfFirstInstruction
import app.revanced.util.indexOfFirstInstructionOrThrow
import app.revanced.util.insertLiteralOverride
import app.revanced.util.returnEarly
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.builder.MutableMethodImplementation
+import com.android.tools.smali.dexlib2.iface.Method
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
+import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
@@ -30,6 +35,9 @@ import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter
internal const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/shared/spoof/SpoofVideoStreamsPatch;"
+private lateinit var buildRequestMethod: MutableMethod
+private var buildRequestMethodUrlRegister = -1
+
fun spoofVideoStreamsPatch(
block: BytecodePatchBuilder.() -> Unit = {},
fixMediaFetchHotConfigChanges: BytecodePatchBuilder.() -> Boolean = { false },
@@ -94,17 +102,18 @@ fun spoofVideoStreamsPatch(
// region Get replacement streams at player requests.
- buildRequestFingerprint.let {
- it.method.apply {
- val builderIndex = it.instructionMatches.first().index
- val urlRegister = getInstruction(builderIndex).registerD
- val freeRegister = findFreeRegister(builderIndex, urlRegister)
+ buildRequestFingerprint.method.apply {
+ buildRequestMethod = this
+
+ val newRequestBuilderIndex = it.instructionMatches.first().index
+ buildRequestMethodUrlRegister = getInstruction(newRequestBuilderIndex).registerD
+ val freeRegister = findFreeRegister(newRequestBuilderIndex, buildRequestMethodUrlRegister)
addInstructions(
builderIndex,
"""
move-object v$freeRegister, p1
- invoke-static { v$urlRegister, v$freeRegister }, $EXTENSION_CLASS_DESCRIPTOR->fetchStreams(Ljava/lang/String;Ljava/util/Map;)V
+ invoke-static { v$buildRequestMethodUrlRegister, v$freeRegister }, $EXTENSION_CLASS_DESCRIPTOR->fetchStreams(Ljava/lang/String;Ljava/util/Map;)V
"""
)
}
@@ -190,6 +199,21 @@ fun spoofVideoStreamsPatch(
// endregion
+ // region block getAtt request
+
+ buildRequestMethod.apply {
+ val insertIndex = indexOfNewUrlRequestBuilderInstruction(this)
+
+ addInstructions(
+ insertIndex, """
+ invoke-static { v$buildRequestMethodUrlRegister }, $EXTENSION_CLASS_DESCRIPTOR->blockGetAttRequest(Ljava/lang/String;)Ljava/lang/String;
+ move-result-object v$buildRequestMethodUrlRegister
+ """
+ )
+ }
+
+ // endregion
+
// region Remove /videoplayback request body to fix playback.
// It is assumed, YouTube makes a request with a body tuned for Android.
// Requesting streams intended for other platforms with a body tuned for Android could be the cause of 400 errors.
@@ -248,6 +272,50 @@ fun spoofVideoStreamsPatch(
// endregion
+ // region Disable SABR playback.
+ // If SABR is disabled, it seems 'MediaFetchHotConfig' may no longer need an override (not confirmed).
+
+ val (mediaFetchEnumClass, sabrFieldReference) = with(mediaFetchEnumConstructorFingerprint.method) {
+ val stringIndex = mediaFetchEnumConstructorFingerprint.stringMatches!!.first {
+ it.string == DISABLED_BY_SABR_STREAMING_URI_STRING
+ }.index
+
+ val mediaFetchEnumClass = definingClass
+ val sabrFieldIndex = indexOfFirstInstructionOrThrow(stringIndex) {
+ opcode == Opcode.SPUT_OBJECT &&
+ getReference()?.type == mediaFetchEnumClass
+ }
+
+ Pair(
+ mediaFetchEnumClass,
+ getInstruction(sabrFieldIndex).reference
+ )
+ }
+
+ fingerprint {
+ returns(mediaFetchEnumClass)
+ opcodes(
+ Opcode.SGET_OBJECT,
+ Opcode.RETURN_OBJECT,
+ )
+ custom { method, _ ->
+ !method.parameterTypes.isEmpty()
+ }
+ }.method.addInstructionsWithLabels(
+ 0,
+ """
+ invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->disableSABR()Z
+ move-result v0
+ if-eqz v0, :ignore
+ sget-object v0, $sabrFieldReference
+ return-object v0
+ :ignore
+ nop
+ """
+ )
+
+ // endregion
+
// region turn off stream config replacement feature flag.
if (fixMediaFetchHotConfigChanges()) {
@@ -282,3 +350,12 @@ fun spoofVideoStreamsPatch(
executeBlock()
}
}
+
+internal fun indexOfNewUrlRequestBuilderInstruction(method: Method) = method.indexOfFirstInstruction {
+ opcode == Opcode.INVOKE_VIRTUAL && getReference().toString() ==
+ "Lorg/chromium/net/CronetEngine;" +
+ "->newUrlRequestBuilder(" +
+ "Ljava/lang/String;Lorg/chromium/net/UrlRequest${'$'}Callback;" +
+ "Ljava/util/concurrent/Executor;" +
+ ")Lorg/chromium/net/UrlRequest${'$'}Builder;"
+}
diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/debugging/EnableDebuggingPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/debugging/EnableDebuggingPatch.kt
index ab8c54afb..e2e4bc4fb 100644
--- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/debugging/EnableDebuggingPatch.kt
+++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/debugging/EnableDebuggingPatch.kt
@@ -1,144 +1,35 @@
package app.revanced.patches.youtube.misc.debugging
-import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
-import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
-import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.all.misc.resources.addResources
-import app.revanced.patches.all.misc.resources.addResourcesPatch
-import app.revanced.patches.shared.misc.settings.preference.NonInteractivePreference
-import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference
-import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference.Sorting
+import app.revanced.patches.shared.misc.debugging.enableDebuggingPatch
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
-import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
import app.revanced.patches.youtube.misc.settings.settingsPatch
-import app.revanced.util.findInstructionIndicesReversedOrThrow
-import app.revanced.util.indexOfFirstInstructionOrThrow
-import app.revanced.util.indexOfFirstInstructionReversedOrThrow
-import com.android.tools.smali.dexlib2.Opcode
-import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
-private const val EXTENSION_CLASS_DESCRIPTOR =
- "Lapp/revanced/extension/youtube/patches/EnableDebuggingPatch;"
-
-// TODO: Refactor this into a shared patch that can be used by both YT and YT Music.
-// Almost all of the feature flag hooks are the same between both apps.
-val enableDebuggingPatch = bytecodePatch(
- name = "Enable debugging",
- description = "Adds options for debugging and exporting ReVanced logs to the clipboard.",
-) {
- dependsOn(
- sharedExtensionPatch,
- settingsPatch,
- addResourcesPatch,
- versionCheckPatch
- )
-
- compatibleWith(
- "com.google.android.youtube"(
- "19.34.42",
- "19.43.41",
- "19.47.53",
- "20.07.39",
- "20.12.46",
- "20.13.41",
+@Suppress("unused")
+val enableDebuggingPatch = enableDebuggingPatch(
+ block = {
+ dependsOn(
+ sharedExtensionPatch,
+ settingsPatch,
)
- )
- execute {
- addResources("shared", "misc.debugging.enableDebuggingPatch")
+ compatibleWith(
+ "com.google.android.youtube"(
+ "19.34.42",
+ "19.43.41",
+ "19.47.53",
+ "20.07.39",
+ "20.12.46",
+ "20.13.41",
+ )
+ )
+ },
+ executeBlock = {
addResources("youtube", "misc.debugging.enableDebuggingPatch")
-
- PreferenceScreen.MISC.addPreferences(
- PreferenceScreenPreference(
- key = "revanced_debug_screen",
- sorting = Sorting.UNSORTED,
- preferences = setOf(
- SwitchPreference("revanced_debug"),
- SwitchPreference("revanced_debug_protobuffer"),
- SwitchPreference("revanced_debug_stacktrace"),
- SwitchPreference("revanced_debug_toast_on_error"),
- NonInteractivePreference(
- "revanced_debug_export_logs_to_clipboard",
- tag = "app.revanced.extension.shared.settings.preference.ExportLogToClipboardPreference",
- selectable = true
- ),
- NonInteractivePreference(
- "revanced_debug_logs_clear_buffer",
- tag = "app.revanced.extension.shared.settings.preference.ClearLogBufferPreference",
- selectable = true
- ),
- ),
- ),
- )
-
- // Hook the methods that look up if a feature flag is active.
- experimentalBooleanFeatureFlagFingerprint.match(
- experimentalFeatureFlagParentFingerprint.originalClassDef
- ).method.apply {
- findInstructionIndicesReversedOrThrow(Opcode.RETURN).forEach { index ->
- val register = getInstruction(index).registerA
-
- addInstructions(
- index,
- """
- invoke-static { v$register, p1 }, $EXTENSION_CLASS_DESCRIPTOR->isBooleanFeatureFlagEnabled(ZLjava/lang/Long;)Z
- move-result v$register
- """
- )
- }
- }
-
- experimentalDoubleFeatureFlagFingerprint.match(
- experimentalFeatureFlagParentFingerprint.originalClassDef
- ).method.apply {
- val insertIndex = indexOfFirstInstructionOrThrow(Opcode.MOVE_RESULT_WIDE)
-
- addInstructions(
- insertIndex,
- """
- move-result-wide v0 # Also clobbers v1 (p0) since result is wide.
- invoke-static/range { v0 .. v5 }, $EXTENSION_CLASS_DESCRIPTOR->isDoubleFeatureFlagEnabled(DJD)D
- move-result-wide v0
- return-wide v0
- """
- )
- }
-
- experimentalLongFeatureFlagFingerprint.match(
- experimentalFeatureFlagParentFingerprint.originalClassDef
- ).method.apply {
- val insertIndex = indexOfFirstInstructionOrThrow(Opcode.MOVE_RESULT_WIDE)
-
- addInstructions(
- insertIndex,
- """
- move-result-wide v0
- invoke-static/range { v0 .. v5 }, $EXTENSION_CLASS_DESCRIPTOR->isLongFeatureFlagEnabled(JJJ)J
- move-result-wide v0
- return-wide v0
- """
- )
- }
-
- experimentalStringFeatureFlagFingerprint.match(
- experimentalFeatureFlagParentFingerprint.originalClassDef
- ).method.apply {
- val insertIndex = indexOfFirstInstructionReversedOrThrow(Opcode.MOVE_RESULT_OBJECT)
-
- addInstructions(
- insertIndex,
- """
- move-result-object v0
- invoke-static { v0, p1, p2, p3 }, $EXTENSION_CLASS_DESCRIPTOR->isStringFeatureFlagEnabled(Ljava/lang/String;JLjava/lang/String;)Ljava/lang/String;
- move-result-object v0
- return-object v0
- """
- )
- }
-
- // There exists other experimental accessor methods for byte[]
- // and wrappers for obfuscated classes, but currently none of those are hooked.
- }
-}
+ },
+ hookStringFeatureFlag = true,
+ preferenceScreen = PreferenceScreen.MISC,
+ additionalDebugPreferences = listOf(SwitchPreference("revanced_debug_protobuffer"))
+)
diff --git a/patches/src/main/resources/addresources/values-af-rZA/strings.xml b/patches/src/main/resources/addresources/values-af-rZA/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-af-rZA/strings.xml
+++ b/patches/src/main/resources/addresources/values-af-rZA/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-am-rET/strings.xml b/patches/src/main/resources/addresources/values-am-rET/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-am-rET/strings.xml
+++ b/patches/src/main/resources/addresources/values-am-rET/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-ar-rSA/strings.xml b/patches/src/main/resources/addresources/values-ar-rSA/strings.xml
index 6e124f11b..34d523cc3 100644
--- a/patches/src/main/resources/addresources/values-ar-rSA/strings.xml
+++ b/patches/src/main/resources/addresources/values-ar-rSA/strings.xml
@@ -1585,11 +1585,46 @@ Second \"item\" text"
تم تمكين التكرار الدائم
تم تعطيل التكرار الدائم
+
+ إخفاء زر الإرسال
+ زر الإرسال مخفي
+ زر الإرسال ظاهر
+
+
+ شريط التنقل
+ إخفاء أزرار شريط التنقل أو تغييرها
+
+ إخفاء زر \"الرئيسية\"
+ زر \"الرئيسية\" مخفي
+ زر \"الرئيسية\" ظاهر
+
+ إخفاء زر \"المقتطفات\"
+ زر \"المقتطفات\" مخفي
+ زر \"المقتطفات\" ظاهر
+
+ إخفاء زر \"استكشاف\"
+ زر \"استكشاف\" مخفي
+ زر \"استكشاف\" ظاهر
+
+ إخفاء زر \"المكتبة\"
+ زر \"المكتبة\" مخفي
+ زر \"المكتبة\" ظاهر
+
+ إخفاء زر \"الترقية\"
+ زر \"الترقية\" مخفي
+ زر \"الترقية\" ظاهر
+ إخفاء شريط التنقل
+ شريط التنقل مخفي
+ شريط التنقل ظاهر
+ إخفاء تسميات أزرار التنقل
+ التسميات مخفية
+ التسميات ظاهرة
+
إخفاء تسمية \'الحصول على Music Premium\'
التسمية مخفية
diff --git a/patches/src/main/resources/addresources/values-as-rIN/strings.xml b/patches/src/main/resources/addresources/values-as-rIN/strings.xml
index a87acac0a..89ca72a06 100644
--- a/patches/src/main/resources/addresources/values-as-rIN/strings.xml
+++ b/patches/src/main/resources/addresources/values-as-rIN/strings.xml
@@ -255,8 +255,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-az-rAZ/strings.xml b/patches/src/main/resources/addresources/values-az-rAZ/strings.xml
index 3c78618f6..50b6a7bbf 100644
--- a/patches/src/main/resources/addresources/values-az-rAZ/strings.xml
+++ b/patches/src/main/resources/addresources/values-az-rAZ/strings.xml
@@ -1584,11 +1584,20 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər
Kəsintisiz təkrarlama aktivdir
Kəsintisiz təkrarlama qapalıdır
+
+
+
+
+
+
+
+
+
\'Musiqi Premiumu Əldə et\' etiketini gizlət
Etiket gizlidir
diff --git a/patches/src/main/resources/addresources/values-be-rBY/strings.xml b/patches/src/main/resources/addresources/values-be-rBY/strings.xml
index b040e0879..4e16211e9 100644
--- a/patches/src/main/resources/addresources/values-be-rBY/strings.xml
+++ b/patches/src/main/resources/addresources/values-be-rBY/strings.xml
@@ -1586,11 +1586,46 @@ Second \"item\" text"
Пастаянны паўтор уключаны
Пастаянны паўтор адключаны
+
+ Схаваць кнопку трансляцыі
+ Кнопка трансляцыі схавана
+ Кнопка трансляцыі паказана
+
+
+ Панэль навігацыі
+ Схаваць або змяніць кнопкі панэлі навігацыі
+
+ Схаваць кнопку \"Галоўная\"
+ Кнопка \"Галоўная\" схавана
+ Кнопка \"Галоўная\" паказана
+
+ Схаваць кнопку \"Узоры\"
+ Кнопка \"Узоры\" схавана
+ Кнопка \"Узоры\" паказана
+
+ Схаваць кнопку \"Агляд\"
+ Кнопка \"Агляд\" схавана
+ Кнопка \"Агляд\" паказана
+
+ Схаваць кнопку \"Бібліятэка\"
+ Кнопка \"Бібліятэка\" схавана
+ Кнопка \"Бібліятэка\" паказана
+
+ Схаваць кнопку \"Абнавіць\"
+ Кнопка \"Абнавіць\" схавана
+ Кнопка \"Абнавіць\" паказана
+ Схаваць панэль навігацыі
+ Панэль навігацыі схавана
+ Панэль навігацыі паказана
+ Схаваць подпісы кнопак навігацыі
+ Подпісы схаваны
+ Подпісы паказаны
+
Схаваць надпіс \"Атрымаць Music Premium\"
Надпіс схаваны
diff --git a/patches/src/main/resources/addresources/values-bg-rBG/strings.xml b/patches/src/main/resources/addresources/values-bg-rBG/strings.xml
index 0f56d98d2..420c5cbde 100644
--- a/patches/src/main/resources/addresources/values-bg-rBG/strings.xml
+++ b/patches/src/main/resources/addresources/values-bg-rBG/strings.xml
@@ -1585,11 +1585,46 @@ Second \"item\" text"
Постоянното повтаряне е активирано
Постоянното повтаряне е деактивирано
+
+ Скриване на бутона за предаване
+ Бутонът за предаване е скрит
+ Бутонът за предаване е показан
+
+
+ Навигационна лента
+ Скриване или промяна на бутоните на навигационната лента
+
+ Скриване на бутона Начало
+ Бутонът Начало е скрит
+ Бутонът Начало е показан
+
+ Скриване на бутона Мостри
+ Бутонът Мостри е скрит
+ Бутонът Мостри е показан
+
+ Скриване на бутона Проучване
+ Бутонът Проучване е скрит
+ Бутонът Проучване е показан
+
+ Скриване на бутона Библиотека
+ Бутонът Библиотека е скрит
+ Бутонът Библиотека е показан
+
+ Скриване на бутона Надграждане
+ Бутонът Надграждане е скрит
+ Бутонът Надграждане е показан
+ Скриване на навигационната лента
+ Навигационната лента е скрита
+ Навигационната лента е показана
+ Скриване на етикетите на навигационните бутони
+ Етикетите са скрити
+ Етикетите са показани
+
Скриване на етикета „Вземете Music Premium“
Етикетът е скрит
diff --git a/patches/src/main/resources/addresources/values-bn-rBD/strings.xml b/patches/src/main/resources/addresources/values-bn-rBD/strings.xml
index ab28549e3..1baa688da 100644
--- a/patches/src/main/resources/addresources/values-bn-rBD/strings.xml
+++ b/patches/src/main/resources/addresources/values-bn-rBD/strings.xml
@@ -1581,11 +1581,46 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
স্থায়ী পুনরাবৃত্তি সক্ষম করা হয়েছে
স্থায়ী পুনরাবৃত্তি অক্ষম করা হয়েছে
+
+ কাস্ট বোতাম লুকান
+ কাস্ট বোতাম লুকানো আছে
+ কাস্ট বোতাম দেখানো আছে
+
+
+ নেভিগেশন বার
+ নেভিগেশন বারের বোতামগুলি লুকান বা পরিবর্তন করুন
+
+ হোম বোতাম লুকান
+ হোম বোতাম লুকানো আছে
+ হোম বোতাম দেখানো আছে
+
+ স্যাম্পল বোতাম লুকান
+ স্যাম্পল বোতাম লুকানো আছে
+ স্যাম্পল বোতাম দেখানো আছে
+
+ অনুসন্ধান বোতাম লুকান
+ অনুসন্ধান বোতাম লুকানো আছে
+ অনুসন্ধান বোতাম দেখানো আছে
+
+ লাইব্রেরি বোতাম লুকান
+ লাইব্রেরি বোতাম লুকানো আছে
+ লাইব্রেরি বোতাম দেখানো আছে
+
+ আপগ্রেড বোতাম লুকান
+ আপগ্রেড বোতাম লুকানো আছে
+ আপগ্রেড বোতাম দেখানো আছে
+ নেভিগেশন বার লুকান
+ নেভিগেশন বার লুকানো আছে
+ নেভিগেশন বার দেখানো আছে
+ নেভিগেশন বোতামের লেবেলগুলি লুকান
+ লেবেলগুলি লুকানো আছে
+ লেবেলগুলি দেখানো আছে
+
\'গেট মিউজিক প্রিমিয়াম\' লেবেল লুকান
লেবেল লুকানো আছে
diff --git a/patches/src/main/resources/addresources/values-bs-rBA/strings.xml b/patches/src/main/resources/addresources/values-bs-rBA/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-bs-rBA/strings.xml
+++ b/patches/src/main/resources/addresources/values-bs-rBA/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-ca-rES/strings.xml b/patches/src/main/resources/addresources/values-ca-rES/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-ca-rES/strings.xml
+++ b/patches/src/main/resources/addresources/values-ca-rES/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml b/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml
index 876ebac1d..8c092a5c9 100644
--- a/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml
+++ b/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml
@@ -1585,11 +1585,46 @@ Povolením této funkce lze odemknout vyšší kvality videa"
Trvalé opakování je povoleno
Trvalé opakování je zakázáno
+
+ Skrýt tlačítko Odesílat
+ Tlačítko Odesílat je skryté
+ Tlačítko Odesílat je zobrazené
+
+
+ Navigační panel
+ Skrýt nebo změnit tlačítka navigačního panelu
+
+ Skrýt tlačítko Domů
+ Tlačítko Domů je skryté
+ Tlačítko Domů je zobrazeno
+
+ Skrýt tlačítko Ukázky
+ Tlačítko Ukázky je skryté
+ Tlačítko Ukázky je zobrazeno
+
+ Skrýt tlačítko Prozkoumat
+ Tlačítko Prozkoumat je skryté
+ Tlačítko Prozkoumat je zobrazeno
+
+ Skrýt tlačítko Knihovna
+ Tlačítko Knihovna je skryté
+ Tlačítko Knihovna je zobrazeno
+
+ Skrýt tlačítko Vylepšit
+ Tlačítko Vylepšit je skryté
+ Tlačítko Vylepšit je zobrazeno
+ Skrýt navigační panel
+ Navigační panel je skrytý
+ Navigační panel je zobrazen
+ Skrýt popisky navigačních tlačítek
+ Popisky jsou skryté
+ Popisky jsou zobrazeny
+
Skrýt štítek \"Získat Music Premium\"
Štítek je skryt
diff --git a/patches/src/main/resources/addresources/values-da-rDK/strings.xml b/patches/src/main/resources/addresources/values-da-rDK/strings.xml
index 6738a3d89..15af0db71 100644
--- a/patches/src/main/resources/addresources/values-da-rDK/strings.xml
+++ b/patches/src/main/resources/addresources/values-da-rDK/strings.xml
@@ -1587,11 +1587,46 @@ Aktivering af dette kan låse op for højere videokvalitet"
Permanent gentagelse er aktiveret
Permanent gentagelse er deaktiveret
+
+ Skjul cast-knap
+ Cast-knappen er skjult
+ Cast-knappen vises
+
+
+ Navigationslinje
+ Skjul eller skift navigationslinjeknapper
+
+ Skjul Startside-knap
+ Startside-knappen er skjult
+ Startside-knappen vises
+
+ Skjul Kortklip-knap
+ Kortklip-knappen er skjult
+ Kortklip-knappen vises
+
+ Skjul Udforsk-knap
+ Udforsk-knappen er skjult
+ Udforsk-knappen vises
+
+ Skjul Bibliotek-knap
+ Bibliotek-knappen er skjult
+ Bibliotek-knappen vises
+
+ Skjul Opgrader-knap
+ Opgrader-knappen er skjult
+ Opgrader-knappen vises
+ Skjul navigationslinje
+ Navigationslinjen er skjult
+ Navigationslinjen vises
+ Skjul etiketter for navigationsknapper
+ Etiketter er skjult
+ Etiketter vises
+
Skjul \'Få Music Premium\'-etiket
Etiketten er skjult
diff --git a/patches/src/main/resources/addresources/values-de-rDE/strings.xml b/patches/src/main/resources/addresources/values-de-rDE/strings.xml
index 4725708e2..0efed29ce 100644
--- a/patches/src/main/resources/addresources/values-de-rDE/strings.xml
+++ b/patches/src/main/resources/addresources/values-de-rDE/strings.xml
@@ -61,7 +61,7 @@ Um neue Sprachen zu übersetzen, besuchen Sie translate.revanced.app"
ReVanced-Einstellungen importieren/exportieren
Sie verwenden ReVanced-Patches Version <i>%s</i>
- Notiz
+ Hinweis
Diese Version ist eine Vorabversion, es kann zu unerwarteten Problemen kommen
Offizielle Links
- \'Benachrichtigungen\' Button ausblenden
- Schaltfläche \"Benachrichtige mich\" ist ausgeblendet
+ Schaltfläche \"Benachrichtige mich\" ausblenden
+ Schaltfläche \"Benachrichtige mich\" wird ausgeblendet
Schaltfläche \"Benachrichtige mich\" wird angezeigt
Playables ausblenden
- Spiele sind ausgeblendet
- Spielbare werden angezeigt
+ Playables sind ausgeblendet
+ Playables werden angezeigt
\'Mehr anzeigen\' Button ausblenden
Schaltfläche \"Mehr anzeigen\" in den Suchergebnissen ist ausgeblendet
Schaltfläche \"Mehr anzeigen\" in den Suchergebnissen wird angezeigt
Umfragen ausblenden
- Umfragen sind ausgeblendet
+ Umfragen werden ausgeblendet
Umfragen werden angezeigt
Ticket-Reihe ausblenden
Ticket-Reihe ist ausgeblendet
@@ -421,14 +423,14 @@ Diese Funktion ist nur für ältere Geräte verfügbar"
Vollbild-Werbung ausblenden funktioniert nur mit älteren Geräten
Allgemeine Werbung ausblenden
- Allgemeine Anzeigen sind ausgeblendet
- Allgemeine Anzeigen werden angezeigt
+ Allgemeine Werbung werden ausgeblendet
+ Allgemeine Werbung werden angezeigt
Merchandise-Banner ausblenden
Merchandise-Banner sind ausgeblendet
Warenbanner werden angezeigt
- Bezahltes Werbe-Label ausblenden
- Bezahltes Werbelabel ist ausgeblendet
- Bezahltes Werbe-Label wird angezeigt
+ \"Enthält bezahlte Werbung\"-Hinweis ausblenden
+ \"Enthält bezahlte Werbung\"-Hinweis wird ausgeblendet
+ \"Enthält bezahlte Werbung\"-Hinweis wird angezeigt
Selbst gesponserte Karten ausblenden
Selbst gesponserte Karten sind ausgeblendet
Selbstgesponserte Karten werden angezeigt
@@ -1002,22 +1004,22 @@ Diese Funktion funktioniert am besten mit einer Videoqualität von 720p oder nie
+
+ Übertragen-Taste ausblenden
+ Übertragen-Taste ist ausgeblendet
+ Übertragen-Taste wird angezeigt
+
+
+ Navigationsleiste
+ Navigationsleisten-Schaltflächen ausblenden oder ändern
+
+ Start-Schaltfläche ausblenden
+ Start-Schaltfläche ist ausgeblendet
+ Start-Schaltfläche wird angezeigt
+
+ Samples-Schaltfläche ausblenden
+ Samples-Schaltfläche ist ausgeblendet
+ Samples-Schaltfläche wird angezeigt
+
+ Entdecken-Schaltfläche ausblenden
+ Entdecken-Schaltfläche ist ausgeblendet
+ Entdecken-Schaltfläche wird angezeigt
+
+ Mediathek-Schaltfläche ausblenden
+ Mediathek-Schaltfläche ist ausgeblendet
+ Mediathek-Schaltfläche wird angezeigt
+
+ Upgrade-Schaltfläche ausblenden
+ Upgrade-Schaltfläche ist ausgeblendet
+ Upgrade-Schaltfläche wird angezeigt
+ Navigationsleiste ausblenden
+ Navigationsleiste ist ausgeblendet
+ Navigationsleiste wird angezeigt
+ Beschriftungen der Navigationsschaltflächen ausblenden
+ Beschriftungen sind ausgeblendet
+ Beschriftungen werden angezeigt
+
\"Music Premium holen\"-Label ausblenden
Label ist ausgeblendet
diff --git a/patches/src/main/resources/addresources/values-el-rGR/strings.xml b/patches/src/main/resources/addresources/values-el-rGR/strings.xml
index 9c8483553..478bc23c8 100644
--- a/patches/src/main/resources/addresources/values-el-rGR/strings.xml
+++ b/patches/src/main/resources/addresources/values-el-rGR/strings.xml
@@ -1584,11 +1584,46 @@ Second \"item\" text"
Η μόνιμη επανάληψη είναι ενεργοποιημένη
Η μόνιμη επανάληψη είναι απενεργοποιημένη
+
+ Απόκρυψη κουμπιού μετάδοσης
+ Κρυμμένο
+ Εμφανίζεται
+
+
+ Γραμμή πλοήγησης
+ Απόκρυψη ή αλλαγή κουμπιών γραμμής πλοήγησης
+
+ Απόκρυψη κουμπιού Αρχικής οθόνης
+ Κρυμμένο
+ Εμφανίζεται
+
+ Απόκρυψη κουμπιού Δειγμάτων
+ Το κουμπί «Δείγματα» είναι κρυμμένο
+ Το κουμπί «Δείγματα» εμφανίζεται
+
+ Απόκρυψη κουμπιού Εξερεύνησης
+ Το κουμπί «Εξερεύνηση» είναι κρυμμένο
+ Το κουμπί «Εξερεύνηση» εμφανίζεται
+
+ Απόκρυψη κουμπιού Βιβλιοθήκης
+ Το κουμπί «Βιβλιοθήκη» είναι κρυμμένο
+ Το κουμπί «Βιβλιοθήκη» εμφανίζεται
+
+ Απόκρυψη κουμπιού «Αναβάθμιση»
+ Το κουμπί «Αναβάθμιση» είναι κρυμμένο
+ Το κουμπί «Αναβάθμιση» εμφανίζεται
+ Γραμμή πλοήγησης
+ Η γραμμή πλοήγησης θα είναι κρυμμένη κατά την αναπαραγωγή Shorts
+ Η γραμμή πλοήγησης εμφανίζεται κατά την αναπαραγωγή Shorts
+ Ονομασίες κουμπιών γραμμής πλοήγησης
+ Κρυμμένες
+ Εμφανίζονται
+
Ετικέτα «Αποκτήστε το Music Premium»
Κρυμμένη
diff --git a/patches/src/main/resources/addresources/values-es-rES/strings.xml b/patches/src/main/resources/addresources/values-es-rES/strings.xml
index 1018b914d..fa88a6fa4 100644
--- a/patches/src/main/resources/addresources/values-es-rES/strings.xml
+++ b/patches/src/main/resources/addresources/values-es-rES/strings.xml
@@ -1576,11 +1576,46 @@ Habilitar esto puede desbloquear calidades de vídeo más altas"
La repetición permanente está habilitada
La repetición permanente está deshabilitada
+
+ Ocultar el botón de emisión
+ El botón de emisión está oculto
+ El botón de emisión es visible
+
+
+ Barra de navegación
+ Ocultar o cambiar los botones de la barra de navegación
+
+ Ocultar el botón Inicio
+ El botón Inicio está oculto
+ El botón Inicio es visible
+
+ Ocultar el botón Muestras
+ El botón Muestras está oculto
+ El botón Muestras es visible
+
+ Ocultar el botón Explorar
+ El botón Explorar está oculto
+ El botón Explorar es visible
+
+ Ocultar el botón Biblioteca
+ El botón Biblioteca está oculto
+ El botón Biblioteca es visible
+
+ Ocultar el botón Actualizar
+ El botón Actualizar está oculto
+ El botón Actualizar es visible
+ Ocultar la barra de navegación
+ La barra de navegación está oculta
+ La barra de navegación es visible
+ Ocultar etiquetas de navegación
+ Las etiquetas están ocultas
+ Las etiquetas son visibles
+
Ocultar la etiqueta \'Obtener Music Premium\'
La etiqueta está oculta
diff --git a/patches/src/main/resources/addresources/values-et-rEE/strings.xml b/patches/src/main/resources/addresources/values-et-rEE/strings.xml
index c33984447..e01a31817 100644
--- a/patches/src/main/resources/addresources/values-et-rEE/strings.xml
+++ b/patches/src/main/resources/addresources/values-et-rEE/strings.xml
@@ -1585,11 +1585,46 @@ Selle lubamine võib avada kõrgema video kvaliteedi"
Püsiv kordus on lubatud
Püsiv kordus on keelatud
+
+ Peida edastusnupp
+ Edastusnupp on peidetud
+ Edastusnupp on nähtav
+
+
+ Navigeerimisriba
+ Peida või muuda navigeerimisriba nuppe
+
+ Peida Avalehe nupp
+ Avalehe nupp on peidetud
+ Avalehe nupp on nähtav
+
+ Peida Näidiste nupp
+ Näidiste nupp on peidetud
+ Näidiste nupp on nähtav
+
+ Peida Avasta nupp
+ Avasta nupp on peidetud
+ Avasta nupp on nähtav
+
+ Peida Kogu nupp
+ Kogu nupp on peidetud
+ Kogu nupp on nähtav
+
+ Peida Uuenda nupp
+ Uuenda nupp on peidetud
+ Uuenda nupp on nähtav
+ Peida navigeerimisriba
+ Navigeerimisriba on peidetud
+ Navigeerimisriba on nähtav
+ Peida navigeerimisnuppude sildid
+ Sildid on peidetud
+ Sildid on nähtavale toodud
+
Peida sildike \"Hangi Music Premium\"
Silt on peidetud
diff --git a/patches/src/main/resources/addresources/values-eu-rES/strings.xml b/patches/src/main/resources/addresources/values-eu-rES/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-eu-rES/strings.xml
+++ b/patches/src/main/resources/addresources/values-eu-rES/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-fa-rIR/strings.xml b/patches/src/main/resources/addresources/values-fa-rIR/strings.xml
index cdb190b76..b3632d5ff 100644
--- a/patches/src/main/resources/addresources/values-fa-rIR/strings.xml
+++ b/patches/src/main/resources/addresources/values-fa-rIR/strings.xml
@@ -303,8 +303,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-fi-rFI/strings.xml b/patches/src/main/resources/addresources/values-fi-rFI/strings.xml
index 34351751a..037cb4823 100644
--- a/patches/src/main/resources/addresources/values-fi-rFI/strings.xml
+++ b/patches/src/main/resources/addresources/values-fi-rFI/strings.xml
@@ -1585,11 +1585,46 @@ Tämä voi avata korkealaatuisemmat videot"
Pysyvä toisto on käytössä
Pysyvä toisto on poissa käytöstä
+
+ Piilota lähetyspainike
+ Lähetyspainike on piilotettu
+ Lähetyspainike näytetään
+
+
+ Navigointipalkki
+ Piilota tai muuta navigointipalkin painikkeita
+
+ Piilota Etusivu-painike
+ Etusivu-painike on piilotettu
+ Etusivu-painike näytetään
+
+ Piilota Näytteet-painike
+ Näytteet-painike on piilotettu
+ Näytteet-painike näytetään
+
+ Piilota Tutustu-painike
+ Tutustu-painike on piilotettu
+ Tutustu-painike näytetään
+
+ Piilota Kirjasto-painike
+ Kirjasto-painike on piilotettu
+ Kirjasto-painike näytetään
+
+ Piilota Päivitä-painike
+ Päivitä-painike on piilotettu
+ Päivitä-painike näytetään
+ Piilota navigointipalkki
+ Navigointipalkki on piilotettu
+ Navigointipalkki näytetään
+ Piilota navigointipainikkeiden otsikot
+ Otsikot on piilotettu
+ Otsikot näytetään
+
Piilota \"Hanki Music Premium\" -merkintä
Merkintä on piilotettu
diff --git a/patches/src/main/resources/addresources/values-fil-rPH/strings.xml b/patches/src/main/resources/addresources/values-fil-rPH/strings.xml
index d28b500ee..735bc7e49 100644
--- a/patches/src/main/resources/addresources/values-fil-rPH/strings.xml
+++ b/patches/src/main/resources/addresources/values-fil-rPH/strings.xml
@@ -1583,11 +1583,46 @@ Ang pagpapagana nito ay maaaring magbukas ng mas mataas na kalidad ng video"Pinagana ang permanenteng pag-ulit
Hindi pinagana ang permanenteng pag-ulit
+
+ Itago ang pindutan ng Cast
+ Nakatago ang pindutan ng Cast
+ Ipinapakita ang pindutan ng Cast
+
+
+ Navigation bar
+ Itago o baguhin ang mga pindutan ng navigation bar
+
+ Itago ang pindutan ng Home
+ Nakatago ang pindutan ng Home
+ Nakalabas ang pindutan ng Home
+
+ Itago ang pindutan ng Samples
+ Nakatago ang pindutan ng Samples
+ Nakalabas ang pindutan ng Samples
+
+ Itago ang pindutan ng Explore
+ Nakatago ang pindutan ng Explore
+ Nakalabas ang pindutan ng Explore
+
+ Itago ang pindutan ng Library
+ Nakatago ang pindutan ng Library
+ Nakalabas ang pindutan ng Library
+
+ Itago ang pindutan ng Upgrade
+ Nakatago ang pindutan ng Upgrade
+ Nakalabas ang pindutan ng Upgrade
+ Itago ang navigation bar
+ Nakatago ang navigation bar
+ Nakalabas ang navigation bar
+ Itago ang mga label ng pindutan ng navigation
+ Nakatago ang mga label
+ Nakalabas ang mga label
+
Itago ang label na \'Kumuha ng Music Premium\'
Nakatago ang label
diff --git a/patches/src/main/resources/addresources/values-fr-rFR/strings.xml b/patches/src/main/resources/addresources/values-fr-rFR/strings.xml
index 1ff7e441a..0678f2e4c 100644
--- a/patches/src/main/resources/addresources/values-fr-rFR/strings.xml
+++ b/patches/src/main/resources/addresources/values-fr-rFR/strings.xml
@@ -1163,20 +1163,20 @@ Il existe déjà."
Voter pour
Voter contre
Modifier la catégorie
- Il n\'y a pas de segments où voter
+ Il n\'y a pas de segments sur lesquels voter
%1$s – %2$s
Choisissez la catégorie du segment
- La catégorie est désactivée dans les paramètres. Activez la catégorie pour soumettre.
+ Catégorie désact. ds paramètres. Activer pr soumettre.
Nouveau segment SponsorBlock
- Définir %s comme début ou fin du nouveau segment ?
+ Définir %s comme début ou fin d\'un nouveau segment ?
Début
Fin
- Maint.
+ Maintenant
Instant de début du segment
Instant de fin du segment
- Est-ce que ces valeurs sont correctes ?
- "Le segment dure de
+ Ces valeurs sont-elles correctes ?
+ "Le segment s'étend de
%1$s
à
@@ -1184,10 +1184,10 @@ Il existe déjà."
(%3$s)
-Prêt à soumettre ?"
- Le début doit être avant la fin
+Prêt à le soumettre ?"
+ Le début doit précéder la fin
Marquez d\'abord deux emplacements sur la barre de progression
- Regardez la vidéo au moment du segment, et assurez-vous qu\'il est ignoré de manière fluide
+ Prévisualisez segment + contrôlez fluidité du saut
Modifier la durée du segment manuellement
Voulez-vous modifier le début ou la fin du segment ?
Temps fourni invalide
@@ -1209,7 +1209,7 @@ Prêt à soumettre ?"
Cela représente <b>%s</b> de leur vie.<br>Appuyez ici pour voir le classement
Vous avez passé <b>%s</b> segments
Pour un total de <b>%s</b>
- Réinitialiser le compteur de segments ignorés ?
+ Réinitialiser le compteur de segments passés ?
%1$s heures et %2$s minutes
%1$s minutes et %2$s secondes
%s secondes
@@ -1478,7 +1478,7 @@ Activer cette option peut déverrouiller des qualités vidéo supérieures"Utilisation de la langue audio d\'origine
Utilisation de l\'audio par défaut
- Pour utiliser cette fonctionnalité, changez \"Simuler les flux vidéo\" pour tout client sauf Android Studio
+ Pour utiliser cette fonctionnalité, définissez \"Falsifier les flux vidéo\" sur n\'importe quel client, sauf Android Studio
@@ -1586,11 +1586,46 @@ Activer cette option peut déverrouiller des qualités vidéo supérieures"La lecture en boucle permanente est activée
La lecture en boucle permanente est désactivée
+
+ Masquer le bouton de diffusion
+ Le bouton de diffusion est masqué
+ Le bouton de diffusion est affiché
+
+
+ Barre de navigation
+ Masquer ou modifier les boutons de la barre de navigation
+
+ Masquer le bouton Accueil
+ Le bouton Accueil est masqué
+ Le bouton Accueil est affiché
+
+ Masquer le bouton Extraits
+ Le bouton Extraits est masqué
+ Le bouton Extraits est affiché
+
+ Masquer le bouton Explorer
+ Le bouton Explorer est masqué
+ Le bouton Explorer est affiché
+
+ Masquer le bouton Bibliothèque
+ Le bouton Bibliothèque est masqué
+ Le bouton Bibliothèque est affiché
+
+ Masquer le bouton S\'abonner
+ Le bouton S\'abonner est masqué
+ Le bouton S\'abonner est affiché
+ Masquer la barre de navigation
+ La barre de navigation est masquée
+ La barre de navigation est affichée
+ Masquer les libellés des boutons de navigation
+ Les libellés sont masqués
+ Les libellés sont affichés
+
Masquer le libellé \"S\'abonner à Music Premium\"
Le libellé est masqué
diff --git a/patches/src/main/resources/addresources/values-ga-rIE/strings.xml b/patches/src/main/resources/addresources/values-ga-rIE/strings.xml
index 953056e64..739a8164a 100644
--- a/patches/src/main/resources/addresources/values-ga-rIE/strings.xml
+++ b/patches/src/main/resources/addresources/values-ga-rIE/strings.xml
@@ -1585,11 +1585,46 @@ Is féidir le seo caighdeáin físeáin níos airde a dhíghlasáil"
Tá athdhéanamh buan cumasaithe
Tá athdhéanamh buan díchumasaithe
+
+ Folaigh an cnaipe teilgthe
+ Tá an cnaipe teilgthe i bhfolach
+ Tá an cnaipe teilgthe ar taispeáint
+
+
+ Barra nascleanúna
+ Folaigh nó athraigh cnaipí an bharra nascleanúna
+
+ Folaigh cnaipe Baile
+ Tá cnaipe Baile folaithe
+ Tá cnaipe Baile taispeánta
+
+ Folaigh cnaipe Samplaí
+ Tá cnaipe Samplaí folaithe
+ Tá cnaipe Samplaí taispeánta
+
+ Folaigh cnaipe Fionnachtana
+ Tá cnaipe Fionnachtana folaithe
+ Tá cnaipe Fionnachtana taispeánta
+
+ Folaigh cnaipe Leabharlann
+ Tá cnaipe Leabharlann folaithe
+ Tá cnaipe Leabharlann taispeánta
+
+ Folaigh cnaipe Uasghrádú
+ Tá cnaipe Uasghrádú folaithe
+ Tá cnaipe Uasghrádú taispeánta
+ Folaigh barra nascleanúna
+ Tá barra nascleanúna folaithe
+ Tá barra nascleanúna taispeánta
+ Folaigh lipéid cnaipí nascleanúna
+ Tá lipéid folaithe
+ Tá lipéid taispeánta
+
Folaigh an lipéad \'Faigh Music Premium\'
Tá an lipéad i bhfolach
diff --git a/patches/src/main/resources/addresources/values-gl-rES/strings.xml b/patches/src/main/resources/addresources/values-gl-rES/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-gl-rES/strings.xml
+++ b/patches/src/main/resources/addresources/values-gl-rES/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-gu-rIN/strings.xml b/patches/src/main/resources/addresources/values-gu-rIN/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-gu-rIN/strings.xml
+++ b/patches/src/main/resources/addresources/values-gu-rIN/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-hi-rIN/strings.xml b/patches/src/main/resources/addresources/values-hi-rIN/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-hi-rIN/strings.xml
+++ b/patches/src/main/resources/addresources/values-hi-rIN/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-hr-rHR/strings.xml b/patches/src/main/resources/addresources/values-hr-rHR/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-hr-rHR/strings.xml
+++ b/patches/src/main/resources/addresources/values-hr-rHR/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-hu-rHU/strings.xml b/patches/src/main/resources/addresources/values-hu-rHU/strings.xml
index e918555c7..b9809e8b6 100644
--- a/patches/src/main/resources/addresources/values-hu-rHU/strings.xml
+++ b/patches/src/main/resources/addresources/values-hu-rHU/strings.xml
@@ -1582,11 +1582,46 @@ Ez a beállítás lehetővé teszi a magasabb videóminőségek feloldását"Az állandó ismétlés engedélyezve van
Az állandó ismétlés letiltva van
+
+ Kivetítés gomb elrejtése
+ Kivetítés gomb elrejtve
+ Kivetítés gomb látható
+
+
+ Navigációs sáv
+ Navigációs sáv gombjainak elrejtése vagy módosítása
+
+ Kezdőlap gomb elrejtése
+ A Kezdőlap gomb elrejtve
+ A Kezdőlap gomb látható
+
+ Minták gomb elrejtése
+ A Minták gomb elrejtve
+ A Minták gomb látható
+
+ Felfedezés gomb elrejtése
+ A Felfedezés gomb elrejtve
+ A Felfedezés gomb látható
+
+ Könyvtár gomb elrejtése
+ A Könyvtár gomb elrejtve
+ A Könyvtár gomb látható
+
+ Frissítés gomb elrejtése
+ A Frissítés gomb elrejtve
+ A Frissítés gomb látható
+ Navigációs sáv elrejtése
+ A navigációs sáv elrejtve
+ A navigációs sáv látható
+ Navigációs gombok feliratainak elrejtése
+ A feliratok elrejtve
+ A feliratok láthatóak
+
A „Music Premium beszerzése” címke elrejtése
A címke rejtve van
diff --git a/patches/src/main/resources/addresources/values-hy-rAM/strings.xml b/patches/src/main/resources/addresources/values-hy-rAM/strings.xml
index 0ee3a1caf..b626c3ef9 100644
--- a/patches/src/main/resources/addresources/values-hy-rAM/strings.xml
+++ b/patches/src/main/resources/addresources/values-hy-rAM/strings.xml
@@ -1586,11 +1586,46 @@ Mini-player-ը կարող է գրավվել էկրանից դուրս՝ դեպի
Մշտական կրկնությունը միացված է
Մշտական կրկնությունը անջատված է
+
+ Թաքցնել հեռարձակման կոճակը
+ Հեռարձակման կոճակը թաքնված է
+ Հեռարձակման կոճակը ցուցադրված է
+
+
+ Նավիգացիոն գիծ
+ Թաքցնել կամ փոխել նավիգացիոն գծի կոճակները
+
+ Թաքցնել «Գլխավոր» կոճակը
+ «Գլխավոր» կոճակը թաքնված է
+ «Գլխավոր» կոճակը ցուցադրված է
+
+ Թաքցնել «Նմուշներ» կոճակը
+ «Նմուշներ» կոճակը թաքնված է
+ «Նմուշներ» կոճակը ցուցադրված է
+
+ Թաքցնել «Բացահայտել» կոճակը
+ «Բացահայտել» կոճակը թաքնված է
+ «Բացահայտել» կոճակը ցուցադրված է
+
+ Թաքցնել «Գրադարան» կոճակը
+ «Գրադարան» կոճակը թաքնված է
+ «Գրադարան» կոճակը ցուցադրված է
+
+ Թաքցնել «Արդիականացնել» կոճակը
+ «Արդիականացնել» կոճակը թաքնված է
+ «Արդիականացնել» կոճակը ցուցադրված է
+ Թաքցնել նավիգացիոն գիծը
+ Նավիգացիոն գիծը թաքնված է
+ Նավիգացիոն գիծը ցուցադրված է
+ Թաքցնել նավիգացիոն կոճակների պիտակները
+ Պիտակները թաքնված են
+ Պիտակները ցուցադրված են
+
Թաքցնել «Ստացեք Music Premium» պիտակը
Պիտակը թաքցված է
diff --git a/patches/src/main/resources/addresources/values-in-rID/strings.xml b/patches/src/main/resources/addresources/values-in-rID/strings.xml
index 7d237961b..e9df0e74b 100644
--- a/patches/src/main/resources/addresources/values-in-rID/strings.xml
+++ b/patches/src/main/resources/addresources/values-in-rID/strings.xml
@@ -1584,11 +1584,46 @@ Mengaktifkan ini dapat membuka kualitas video yang lebih tinggi"
Pengulangan permanen diaktifkan
Pengulangan permanen dinonaktifkan
+
+ Sembunyikan tombol Transmisi
+ Tombol Transmisi disembunyikan
+ Tombol Transmisi ditampilkan
+
+
+ Bilah navigasi
+ Sembunyikan atau ubah tombol bilah navigasi
+
+ Sembunyikan tombol Beranda
+ Tombol Beranda disembunyikan
+ Tombol Beranda ditampilkan
+
+ Sembunyikan tombol Cuplikan
+ Tombol Cuplikan disembunyikan
+ Tombol Cuplikan ditampilkan
+
+ Sembunyikan tombol Jelajahi
+ Tombol Jelajahi disembunyikan
+ Tombol Jelajahi ditampilkan
+
+ Sembunyikan tombol Koleksi
+ Tombol Koleksi disembunyikan
+ Tombol Koleksi ditampilkan
+
+ Sembunyikan tombol upgrade
+ Tombol upgrade disembunyikan
+ Tombol upgrade ditampilkan
+ Sembunyikan bilah navigasi
+ Bilah navigasi disembunyikan
+ Bilah navigasi ditampilkan
+ Sembunyikan label tombol navigasi
+ Label disembunyikan
+ Label ditampilkan
+
Sembunyikan label \'Dapatkan Music Premium\'
Label disembunyikan
diff --git a/patches/src/main/resources/addresources/values-is-rIS/strings.xml b/patches/src/main/resources/addresources/values-is-rIS/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-is-rIS/strings.xml
+++ b/patches/src/main/resources/addresources/values-is-rIS/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-it-rIT/strings.xml b/patches/src/main/resources/addresources/values-it-rIT/strings.xml
index f5a1ad788..11a5d47c3 100644
--- a/patches/src/main/resources/addresources/values-it-rIT/strings.xml
+++ b/patches/src/main/resources/addresources/values-it-rIT/strings.xml
@@ -1584,11 +1584,46 @@ Abilitare questa opzione può sbloccare qualità video più elevate"
La ripetizione permanente è abilitata
La ripetizione permanente è disabilitata
+
+ Nascondi pulsante trasmissione
+ Il pulsante di trasmissione è nascosto
+ Il pulsante di trasmissione è mostrato
+
+
+ Barra di navigazione
+ Nascondi o modifica i pulsanti della barra di navigazione
+
+ Nascondi il pulsante Home
+ Il pulsante Home è nascosto
+ Il pulsante Home è mostrato
+
+ Nascondi il pulsante Campioni
+ Il pulsante Campioni è nascosto
+ Il pulsante Campioni è mostrato
+
+ Nascondi il pulsante Esplora
+ Il pulsante Esplora è nascosto
+ Il pulsante Esplora è mostrato
+
+ Nascondi il pulsante Libreria
+ Il pulsante Libreria è nascosto
+ Il pulsante Libreria è mostrato
+
+ Nascondi il pulsante Aggiorna
+ Il pulsante Aggiorna è nascosto
+ Il pulsante Aggiorna è mostrato
+ Nascondi la barra di navigazione
+ La barra di navigazione è nascosta
+ La barra di navigazione è mostrata
+ Nascondi le etichette dei pulsanti di navigazione
+ Le etichette sono nascoste
+ Le etichette sono mostrate
+
Nascondi l\'etichetta \'Ottieni Music Premium\'
L\'etichetta è nascosta
diff --git a/patches/src/main/resources/addresources/values-iw-rIL/strings.xml b/patches/src/main/resources/addresources/values-iw-rIL/strings.xml
index 7480855f6..056e1b5a2 100644
--- a/patches/src/main/resources/addresources/values-iw-rIL/strings.xml
+++ b/patches/src/main/resources/addresources/values-iw-rIL/strings.xml
@@ -1587,11 +1587,46 @@ Second \"item\" text"
חזרה קבועה מופעלת
חזרה קבועה מושבתת
+
+ הסתר לחצן שידור
+ לחצן השידור מוסתר
+ לחצן השידור מוצג
+
+
+ סרגל ניווט
+ הסתר או שנה לחצני סרגל ניווט
+
+ הסתר לחצן \'דף הבית\'
+ לחצן \'דף הבית\' מוסתר
+ לחצן \'דף הבית\' מוצג
+
+ הסתר לחצן \'דוגמיות\'
+ לחצן \'דוגמיות\' מוסתר
+ לחצן \'דוגמיות\' מוצג
+
+ הסתר לחצן \'גלו\'
+ לחצן \'גלו\' מוסתר
+ לחצן \'גלו\' מוצג
+
+ הסתר לחצן \'ספרייה\'
+ לחצן \'ספרייה\' מוסתר
+ לחצן \'ספרייה\' מוצג
+
+ הסתר לחצן \'שדרוג\'
+ לחצן \'שדרוג\' מוסתר
+ לחצן \'שדרוג\' מוצג
+ הסתר סרגל ניווט
+ סרגל הניווט מוסתר
+ סרגל הניווט מוצג
+ הסתר תוויות לחצני ניווט
+ התוויות מוסתרות
+ התוויות מוצגות
+
הסתר תווית \'קבל Premium למוזיקה\'
התווית מוסתרת
diff --git a/patches/src/main/resources/addresources/values-ja-rJP/strings.xml b/patches/src/main/resources/addresources/values-ja-rJP/strings.xml
index 8128bb2f8..1a479c21f 100644
--- a/patches/src/main/resources/addresources/values-ja-rJP/strings.xml
+++ b/patches/src/main/resources/addresources/values-ja-rJP/strings.xml
@@ -624,9 +624,9 @@ YouTube Premium ユーザーの場合、この設定は必要ない可能性が
クリップボタンは表示されません
クリップボタンは表示されます
- 「ショップ」を非表示
- ショップボタンは表示されません
- ショップボタンは表示されます
+ 購入ボタンを非表示
+ 購入ボタンは表示されません
+ 購入ボタンは表示されます
「保存」を非表示にする
「保存」ボタンは表示されません
@@ -1314,12 +1314,12 @@ Automotive レイアウト
丸角を有効化
ミニプレーヤーの角は丸角です
ミニプレーヤーの角は直角です
- 「ダブルタップとピンチでサイズ変更」を有効化
- "「ダブルタップとピンチでサイズ変更」は有効です
+ ダブルタップとピンチによるサイズ変更を有効化
+ "ダブルタップとピンチによるサイズ変更は有効です
• ダブルタップすると、ミニプレーヤーのサイズが大きくなる
• もう一度ダブルタップすると、元のサイズに戻る"
- 「 ダブルタップとピンチでサイズ変更」は無効です
+ ダブルタップとピンチによるサイズ変更は無効です
ドラッグ&ドロップを有効化
"ドラッグ&ドロップは有効です
@@ -1479,7 +1479,7 @@ Automotive レイアウト
オリジナルの音声トラック (言語) を使用します\n\nオートダビングを含む吹き替えの音声トラックは使用しません
アプリが選択した音声トラック (言語) を使用します\n\nオートダビングを含む吹き替えの音声トラックを使用する場合があります
- この機能を使用するには、「動画ストリームを偽装」のクライアントを Android Studio を除く任意のクライアントに変更してください
+ この機能を使用するには、「動画ストリームを偽装」のクライアントを Android Studio 以外の任意のクライアントに変更してください
@@ -1585,13 +1585,48 @@ Automotive レイアウト
常時リピートを有効化
常時リピートは有効です\n\nリピート設定が保存され常時適用されます
- 常時リピートは無効です\n\nリピート設定は保存されません
+ 常時リピートは無効です\n\nリピート設定は保存されず毎回リセットされます
+
+
+ キャストボタンを非表示
+ プレーヤー オーバーレイのキャストボタンは表示されません
+ プレーヤー オーバーレイのキャストボタンは表示されます
+
+ ナビゲーションバー
+ ナビゲーションバーのボタンを非表示または変更
+
+ ホームボタンを非表示
+ ホームボタンは表示されません
+ ホームボタンは表示されます
+
+ サンプルボタンを非表示
+ サンプルボタンは表示されません
+ サンプルボタンは表示されます
+
+ 探索ボタンを非表示
+ 探索ボタンは表示されません
+ 探索ボタンは表示されます
+
+ ライブラリボタンを非表示
+ ライブラリボタンは表示されません
+ ライブラリボタンは表示されます
+
+ アップグレード ボタンを非表示
+ アップグレード ボタンは表示されません
+ アップグレード ボタンは表示されます
+ ナビゲーションバーを非表示
+ ナビゲーションバーは表示されません
+ ナビゲーションバーは表示されます
+ ボタンをアイコンのみで表示
+ ナビゲーション ボタンはアイコンのみで表示されます
+ ナビゲーション ボタンはアイコンと文字で表示されます
+
「Music Premium に登録」ラベルを非表示
ラベルは表示されません
diff --git a/patches/src/main/resources/addresources/values-ka-rGE/strings.xml b/patches/src/main/resources/addresources/values-ka-rGE/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-ka-rGE/strings.xml
+++ b/patches/src/main/resources/addresources/values-ka-rGE/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-kk-rKZ/strings.xml b/patches/src/main/resources/addresources/values-kk-rKZ/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-kk-rKZ/strings.xml
+++ b/patches/src/main/resources/addresources/values-kk-rKZ/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-km-rKH/strings.xml b/patches/src/main/resources/addresources/values-km-rKH/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-km-rKH/strings.xml
+++ b/patches/src/main/resources/addresources/values-km-rKH/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-kn-rIN/strings.xml b/patches/src/main/resources/addresources/values-kn-rIN/strings.xml
index a46a49eb4..ebdb14402 100644
--- a/patches/src/main/resources/addresources/values-kn-rIN/strings.xml
+++ b/patches/src/main/resources/addresources/values-kn-rIN/strings.xml
@@ -268,8 +268,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-ko-rKR/strings.xml b/patches/src/main/resources/addresources/values-ko-rKR/strings.xml
index bb3d0a511..a2e1b0025 100644
--- a/patches/src/main/resources/addresources/values-ko-rKR/strings.xml
+++ b/patches/src/main/resources/addresources/values-ko-rKR/strings.xml
@@ -1484,7 +1484,7 @@ DeArrow에 대해 자세히 알아보려면 여기를 탭하세요"
원본 오디오 스트림 언어를 사용 중입니다
기본 오디오 스트림 언어를 사용 중입니다
- 이 기능을 사용하려면, \'동영상 스트림 변경하기\'를 Android Studio를 제외한 다른 클라이언트로 변경하세요.
+ 이 기능을 사용하려면, \'동영상 스트림 변경하기\'에서 기본 클라이언트를 Android Studio를 제외한 다른 클라이언트로 변경하세요
@@ -1592,11 +1592,46 @@ DeArrow에 대해 자세히 알아보려면 여기를 탭하세요"
영구적인 반복을 활성화합니다
영구적인 반복을 비활성화합니다
+
+ 크롬캐스트 버튼 숨기기
+ 크롬캐스트 버튼이 숨겨집니다
+ 크롬캐스트 버튼이 표시됩니다
+
+
+ 하단바
+ 하단바에서 버튼을 숨기거나 변경할 수 있습니다
+
+ 홈 버튼 숨기기
+ 홈 버튼이 숨겨집니다
+ 홈 버튼이 표시됩니다
+
+ 샘플 버튼 숨기기
+ 샘플 버튼이 숨겨집니다
+ 샘플 버튼이 표시됩니다
+
+ 둘러보기 버튼 숨기기
+ 둘러보기 버튼이 숨겨집니다
+ 둘러보기 버튼이 표시됩니다
+
+ 보관함 버튼 숨기기
+ 보관함 버튼이 숨겨집니다
+ 보관함 버튼이 표시됩니다
+
+ 업그레이드 버튼 숨기기
+ 업그레이드 버튼이 숨겨집니다
+ 업그레이드 버튼이 표시됩니다
+ 하단바 숨기기
+ 하단바가 숨겨집니다
+ 하단바가 표시됩니다
+ 하단바 버튼 라벨 숨기기
+ 라벨이 숨겨집니다
+ 라벨이 표시됩니다
+
Music Premium 가입 라벨 숨기기
Music Premium 가입 라벨이 숨겨집니다
diff --git a/patches/src/main/resources/addresources/values-ky-rKG/strings.xml b/patches/src/main/resources/addresources/values-ky-rKG/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-ky-rKG/strings.xml
+++ b/patches/src/main/resources/addresources/values-ky-rKG/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-lo-rLA/strings.xml b/patches/src/main/resources/addresources/values-lo-rLA/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-lo-rLA/strings.xml
+++ b/patches/src/main/resources/addresources/values-lo-rLA/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-lt-rLT/strings.xml b/patches/src/main/resources/addresources/values-lt-rLT/strings.xml
index a2b993423..fbf726ab5 100644
--- a/patches/src/main/resources/addresources/values-lt-rLT/strings.xml
+++ b/patches/src/main/resources/addresources/values-lt-rLT/strings.xml
@@ -1586,11 +1586,46 @@ Gali būti atrakinta aukštesnės vaizdo įrašų kokybės, bet galite patirti v
Nuolatinis kartojimas įjungtas
Nuolatinis kartojimas išjungtas
+
+ Slėpti transliavimo mygtuką
+ Transliavimo mygtukas paslėptas
+ Transliavimo mygtukas rodomas
+
+
+ Naršymo juosta
+ Slėpti arba keisti naršymo juostos mygtukus
+
+ Slėpti mygtuką „Pagrindinis“
+ Mygtukas „Pagrindinis“ yra paslėptas
+ Mygtukas „Pagrindinis“ yra rodomas
+
+ Slėpti mygtuką „Pavyzdžiai“
+ Mygtukas „Pavyzdžiai“ yra paslėptas
+ Mygtukas „Pavyzdžiai“ yra rodomas
+
+ Slėpti mygtuką „Naršyti“
+ Mygtukas „Naršyti“ yra paslėptas
+ Mygtukas „Naršyti“ yra rodomas
+
+ Slėpti mygtuką „Biblioteka“
+ Mygtukas „Biblioteka“ yra paslėptas
+ Mygtukas „Biblioteka“ yra rodomas
+
+ Slėpti mygtuką „Naujinti“
+ Mygtukas „Naujinti“ yra paslėptas
+ Mygtukas „Naujinti“ yra rodomas
+ Slėpti naršymo juostą
+ Naršymo juosta yra paslėpta
+ Naršymo juosta yra rodoma
+ Slėpti naršymo mygtukų etiketes
+ Etiketės yra paslėptos
+ Etiketės yra rodomos
+
Slėpti „Gauti Music Premium“ etiketę
Etiketė paslėpta
diff --git a/patches/src/main/resources/addresources/values-lv-rLV/strings.xml b/patches/src/main/resources/addresources/values-lv-rLV/strings.xml
index 862ec7422..7640b8328 100644
--- a/patches/src/main/resources/addresources/values-lv-rLV/strings.xml
+++ b/patches/src/main/resources/addresources/values-lv-rLV/strings.xml
@@ -1586,11 +1586,46 @@ Var tikt atbloķētas augstākas video kvalitātes, taču var rasties video atsk
Pastāvīgā atkārtošana ir iespējota
Pastāvīgā atkārtošana ir atspējota
+
+ Slēpt apraides pogu
+ Apraides poga ir paslēpta
+ Apraides poga ir redzama
+
+
+ Navigācijas josla
+ Slēpt vai mainīt navigācijas joslas pogas
+
+ Slēpt pogu Sākums
+ Poga Sākums ir paslēpta
+ Poga Sākums ir redzama
+
+ Slēpt pogu Paraugi
+ Poga Paraugi ir paslēpta
+ Poga Paraugi ir redzama
+
+ Slēpt pogu Izpētīt
+ Poga Izpētīt ir paslēpta
+ Poga Izpētīt ir redzama
+
+ Slēpt pogu Bibliotēka
+ Poga Bibliotēka ir paslēpta
+ Poga Bibliotēka ir redzama
+
+ Slēpt pogu Jaunināt
+ Poga Jaunināt ir paslēpta
+ Poga Jaunināt ir redzama
+ Slēpt navigācijas joslu
+ Navigācijas josla ir paslēpta
+ Navigācijas josla ir redzama
+ Slēpt navigācijas pogu etiķetes
+ Etiķetes ir paslēptas
+ Etiķetes ir redzamas
+
Slēpt uzrakstu \"Iegūt Music Premium\"
Uzraksts ir paslēpts
diff --git a/patches/src/main/resources/addresources/values-mk-rMK/strings.xml b/patches/src/main/resources/addresources/values-mk-rMK/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-mk-rMK/strings.xml
+++ b/patches/src/main/resources/addresources/values-mk-rMK/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-ml-rIN/strings.xml b/patches/src/main/resources/addresources/values-ml-rIN/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-ml-rIN/strings.xml
+++ b/patches/src/main/resources/addresources/values-ml-rIN/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-mn-rMN/strings.xml b/patches/src/main/resources/addresources/values-mn-rMN/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-mn-rMN/strings.xml
+++ b/patches/src/main/resources/addresources/values-mn-rMN/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-mr-rIN/strings.xml b/patches/src/main/resources/addresources/values-mr-rIN/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-mr-rIN/strings.xml
+++ b/patches/src/main/resources/addresources/values-mr-rIN/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-ms-rMY/strings.xml b/patches/src/main/resources/addresources/values-ms-rMY/strings.xml
index 177641f2e..e7a089136 100644
--- a/patches/src/main/resources/addresources/values-ms-rMY/strings.xml
+++ b/patches/src/main/resources/addresources/values-ms-rMY/strings.xml
@@ -254,8 +254,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-my-rMM/strings.xml b/patches/src/main/resources/addresources/values-my-rMM/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-my-rMM/strings.xml
+++ b/patches/src/main/resources/addresources/values-my-rMM/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-nb-rNO/strings.xml b/patches/src/main/resources/addresources/values-nb-rNO/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-nb-rNO/strings.xml
+++ b/patches/src/main/resources/addresources/values-nb-rNO/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-ne-rIN/strings.xml b/patches/src/main/resources/addresources/values-ne-rIN/strings.xml
index 39674e0dc..54e3c3092 100644
--- a/patches/src/main/resources/addresources/values-ne-rIN/strings.xml
+++ b/patches/src/main/resources/addresources/values-ne-rIN/strings.xml
@@ -255,8 +255,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-nl-rNL/strings.xml b/patches/src/main/resources/addresources/values-nl-rNL/strings.xml
index efe7a43c6..c3bd399d8 100644
--- a/patches/src/main/resources/addresources/values-nl-rNL/strings.xml
+++ b/patches/src/main/resources/addresources/values-nl-rNL/strings.xml
@@ -1583,11 +1583,46 @@ Het inschakelen hiervan kan hogere videokwaliteiten ontgrendelen"
Permanent herhalen is ingeschakeld
Permanent herhalen is uitgeschakeld
+
+ Cast-knop verbergen
+ Cast-knop is verborgen
+ Cast-knop is weergegeven
+
+
+ Navigatiebalk
+ Navigatiebalkknoppen verbergen of wijzigen
+
+ Startknop verbergen
+ Startknop is verborgen
+ Startknop wordt weergegeven
+
+ Knop Voorbeelden verbergen
+ Knop Voorbeelden is verborgen
+ Knop Voorbeelden wordt weergegeven
+
+ Knop Ontdekken verbergen
+ Knop Ontdekken is verborgen
+ Knop Ontdekken wordt weergegeven
+
+ Knop Bibliotheek verbergen
+ Knop Bibliotheek is verborgen
+ Knop Bibliotheek wordt weergegeven
+
+ Upgrade-knop verbergen
+ Upgrade-knop is verborgen
+ Upgrade-knop wordt weergegeven
+ Navigatiebalk verbergen
+ Navigatiebalk is verborgen
+ Navigatiebalk wordt weergegeven
+ Labels van navigatieknoppen verbergen
+ Labels zijn verborgen
+ Labels worden weergegeven
+
\'Muziek Premium krijgen\' label verbergen
Label is verborgen
diff --git a/patches/src/main/resources/addresources/values-or-rIN/strings.xml b/patches/src/main/resources/addresources/values-or-rIN/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-or-rIN/strings.xml
+++ b/patches/src/main/resources/addresources/values-or-rIN/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-pa-rIN/strings.xml b/patches/src/main/resources/addresources/values-pa-rIN/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-pa-rIN/strings.xml
+++ b/patches/src/main/resources/addresources/values-pa-rIN/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-pl-rPL/strings.xml b/patches/src/main/resources/addresources/values-pl-rPL/strings.xml
index b19d19a24..93b597706 100644
--- a/patches/src/main/resources/addresources/values-pl-rPL/strings.xml
+++ b/patches/src/main/resources/addresources/values-pl-rPL/strings.xml
@@ -1581,11 +1581,46 @@ Włączenie tego może odblokować wyższe jakości wideo"
Stałe powtarzanie jest włączone
Stałe powtarzanie jest wyłączone
+
+ Ukryj przycisk Cast
+ Przycisk Cast jest ukryty
+ Przycisk Cast jest widoczny
+
+
+ Pasek nawigacji
+ Ukryj lub zmień przyciski paska nawigacji
+
+ Ukryj przycisk Główna
+ Przycisk Główna jest ukryty
+ Przycisk Główna jest pokazany
+
+ Ukryj przycisk Wycinki
+ Przycisk Wycinki jest ukryty
+ Przycisk Wycinki jest pokazany
+
+ Ukryj przycisk Przeglądaj
+ Przycisk Przeglądaj jest ukryty
+ Przycisk Przeglądaj jest pokazany
+
+ Ukryj przycisk Biblioteka
+ Przycisk Biblioteka jest ukryty
+ Przycisk Biblioteka jest pokazany
+
+ Ukryj przycisk Ulepsz
+ Przycisk Ulepsz jest ukryty
+ Przycisk Ulepsz jest pokazany
+ Ukryj pasek nawigacji
+ Pasek nawigacji jest ukryty
+ Pasek nawigacji jest pokazany
+ Ukryj etykiety przycisków nawigacji
+ Etykiety są ukryte
+ Etykiety są pokazane
+
Ukryj etykietę „Uzyskaj Music Premium”
Etykieta jest ukryta
diff --git a/patches/src/main/resources/addresources/values-pt-rBR/strings.xml b/patches/src/main/resources/addresources/values-pt-rBR/strings.xml
index f32cbe2a1..a81842d78 100644
--- a/patches/src/main/resources/addresources/values-pt-rBR/strings.xml
+++ b/patches/src/main/resources/addresources/values-pt-rBR/strings.xml
@@ -1582,11 +1582,46 @@ Habilitar isso pode desbloquear qualidades de vídeo mais altas"
Repetição permanente está ativada
Repetição permanente está desativada
+
+ Ocultar botão de transmissão
+ Botão de transmissão está oculto
+ Botão de transmissão está visível
+
+
+ Barra de navegação
+ Ocultar ou alterar botões da barra de navegação
+
+ Ocultar botão Início
+ Botão Início oculto
+ Botão Início visível
+
+ Ocultar botão Amostras
+ Botão Amostras oculto
+ Botão Amostras visível
+
+ Ocultar botão Explorar
+ Botão Explorar oculto
+ Botão Explorar visível
+
+ Ocultar botão Biblioteca
+ Botão Biblioteca oculto
+ Botão Biblioteca visível
+
+ Ocultar botão Fazer upgrade
+ Botão Fazer upgrade oculto
+ Botão Fazer upgrade visível
+ Ocultar barra de navegação
+ Barra de navegação oculta
+ Barra de navegação visível
+ Ocultar rótulos dos botões de navegação
+ Rótulos ocultos
+ Rótulos visíveis
+
Ocultar o rótulo \'Obter Music Premium\'
Rótulo está oculto
diff --git a/patches/src/main/resources/addresources/values-pt-rPT/strings.xml b/patches/src/main/resources/addresources/values-pt-rPT/strings.xml
index 4bffd019f..f840c6ccb 100644
--- a/patches/src/main/resources/addresources/values-pt-rPT/strings.xml
+++ b/patches/src/main/resources/addresources/values-pt-rPT/strings.xml
@@ -1585,11 +1585,46 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"Repetição permanente está ativada
Repetição permanente está desativada
+
+ Ocultar botão de transmissão
+ O botão de transmissão está oculto
+ O botão de transmissão está exibido
+
+
+ Barra de navegação
+ Ocultar ou alterar botões da barra de navegação
+
+ Ocultar botão Início
+ Botão Início está oculto
+ Botão Início está exibido
+
+ Ocultar botão Amostras
+ Botão Amostras está oculto
+ Botão Amostras está exibido
+
+ Ocultar botão Explorar
+ Botão Explorar está oculto
+ Botão Explorar está exibido
+
+ Ocultar botão Biblioteca
+ Botão Biblioteca está oculto
+ Botão Biblioteca está exibido
+
+ Ocultar botão Fazer upgrade
+ Botão Fazer upgrade está oculto
+ Botão Fazer upgrade está exibido
+ Ocultar barra de navegação
+ Barra de navegação está oculta
+ Barra de navegação está exibida
+ Ocultar rótulos dos botões de navegação
+ Rótulos estão ocultos
+ Rótulos estão exibidos
+
Ocultar o rótulo \"Obter Music Premium\"
Rótulo está oculto
diff --git a/patches/src/main/resources/addresources/values-ro-rRO/strings.xml b/patches/src/main/resources/addresources/values-ro-rRO/strings.xml
index b94cc4106..ff7331b28 100644
--- a/patches/src/main/resources/addresources/values-ro-rRO/strings.xml
+++ b/patches/src/main/resources/addresources/values-ro-rRO/strings.xml
@@ -1584,11 +1584,46 @@ Activarea acestei opțiuni poate debloca calități video mai mari"
Repetarea permanentă este activată
Repetarea permanentă este dezactivată
+
+ Ascunde butonul de transmisie
+ Butonul de transmisie este ascuns
+ Butonul de transmisie este afișat
+
+
+ Bară de navigare
+ Ascundeți sau modificați butoanele barei de navigare
+
+ Ascundeți butonul Acasă
+ Butonul Acasă este ascuns
+ Butonul Acasă este afișat
+
+ Ascundeți butonul Mostre
+ Butonul Mostre este ascuns
+ Butonul Mostre este afișat
+
+ Ascundeți butonul Explorare
+ Butonul Explorare este ascuns
+ Butonul Explorare este afișat
+
+ Ascundeți butonul Bibliotecă
+ Butonul Bibliotecă este ascuns
+ Butonul Bibliotecă este afișat
+
+ Ascundeți butonul Upgrade
+ Butonul Upgrade este ascuns
+ Butonul Upgrade este afișat
+ Ascundeți bara de navigare
+ Bara de navigare este ascunsă
+ Bara de navigare este afișată
+ Ascundeți etichetele butoanelor de navigare
+ Etichetele sunt ascunse
+ Etichetele sunt afișate
+
Ascunde eticheta „Obține Music Premium”
Eticheta este ascunsă
diff --git a/patches/src/main/resources/addresources/values-ru-rRU/strings.xml b/patches/src/main/resources/addresources/values-ru-rRU/strings.xml
index cf31e0a5e..2f7d3ef57 100644
--- a/patches/src/main/resources/addresources/values-ru-rRU/strings.xml
+++ b/patches/src/main/resources/addresources/values-ru-rRU/strings.xml
@@ -1592,11 +1592,46 @@ Second \"item\" text"
Постоянный повтор включен
Постоянный повтор отключен
+
+ Скрыть кнопку \"Трансляция\"
+ Кнопка \"Трансляция\" в плеере скрыта
+ Кнопка \"Трансляция\" в плеере показана
+
+
+ Панель навигации
+ Скрыть или изменить кнопки панели навигации
+
+ Скрыть кнопку \"Главная\"
+ Кнопка \"Главная\" в панели навигации скрыта
+ Кнопка \"Главная\" в панели навигации показана
+
+ Скрыть кнопку \"Семплы\"
+ Кнопка \"Семплы\" скрыта
+ Кнопка \"Семплы\" показана
+
+ Скрыть кнопку \"Обзор\"
+ Кнопка \"Обзор\" скрыта
+ Кнопка \"Обзор\" показана
+
+ Скрыть кнопку \"Библиотека\"
+ Кнопка \"Библиотека\" скрыта
+ Кнопка \"Библиотека\" показана
+
+ Скрыть кнопку \"Премиум\"
+ Кнопка \"Премиум\" скрыта
+ Кнопка \"Премиум\" показана
+ Скрыть панель навигации
+ Панель навигации в Shorts скрыта
+ Панель навигации в Shorts показана
+ Скрыть подписи кнопок навигации
+ Подписи кнопок навигации скрыты
+ Подписи кнопок навигации показаны
+
Скрыть ярлык \"Купить Music Premium\"
Ярлык скрыт
diff --git a/patches/src/main/resources/addresources/values-si-rLK/strings.xml b/patches/src/main/resources/addresources/values-si-rLK/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-si-rLK/strings.xml
+++ b/patches/src/main/resources/addresources/values-si-rLK/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-sk-rSK/strings.xml b/patches/src/main/resources/addresources/values-sk-rSK/strings.xml
index 8b14f7f09..c8a22c223 100644
--- a/patches/src/main/resources/addresources/values-sk-rSK/strings.xml
+++ b/patches/src/main/resources/addresources/values-sk-rSK/strings.xml
@@ -1578,11 +1578,46 @@ Povolením tejto možnosti môžete odomknúť vyššie kvality videa"
Trvalé opakovanie je povolené
Trvalé opakovanie je zakázané
+
+ Skryť tlačidlo prenášania
+ Tlačidlo prenášania je skryté
+ Tlačidlo prenášania je zobrazené
+
+
+ Navigačný panel
+ Skryť alebo zmeniť tlačidlá navigačného panela
+
+ Skryť tlačidlo Domov
+ Tlačidlo Domov je skryté
+ Tlačidlo Domov je zobrazené
+
+ Skryť tlačidlo Ukážky
+ Tlačidlo Ukážky je skryté
+ Tlačidlo Ukážky je zobrazené
+
+ Skryť tlačidlo Preskúmať
+ Tlačidlo Preskúmať je skryté
+ Tlačidlo Preskúmať je zobrazené
+
+ Skryť tlačidlo Knižnica
+ Tlačidlo Knižnica je skryté
+ Tlačidlo Knižnica je zobrazené
+
+ Skryť tlačidlo Inovovať
+ Tlačidlo Inovovať je skryté
+ Tlačidlo Inovovať je zobrazené
+ Skryť navigačný panel
+ Navigačný panel je skrytý
+ Navigačný panel je zobrazený
+ Skryť popisky navigačných tlačidiel
+ Popisky sú skryté
+ Popisky sú zobrazené
+
Skryť štítok „Získajte Music Premium“
Štítok je skrytý
diff --git a/patches/src/main/resources/addresources/values-sl-rSI/strings.xml b/patches/src/main/resources/addresources/values-sl-rSI/strings.xml
index a72fe78c7..7c423d2e7 100644
--- a/patches/src/main/resources/addresources/values-sl-rSI/strings.xml
+++ b/patches/src/main/resources/addresources/values-sl-rSI/strings.xml
@@ -1585,11 +1585,46 @@ Omogočanje tega lahko odklene višje kakovosti videa"
Trajno ponavljanje je omogočeno
Trajno ponavljanje je onemogočeno
+
+ Skrij gumb za predvajanje
+ Gumb za predvajanje je skrit
+ Gumb za predvajanje je prikazan
+
+
+ Navigacijska vrstica
+ Skrij ali spremeni gumbe navigacijske vrstice
+
+ Skrij gumb Domov
+ Gumb Domov je skrit
+ Gumb Domov je prikazan
+
+ Skrij gumb Vzorci
+ Gumb Vzorci je skrit
+ Gumb Vzorci je prikazan
+
+ Skrij gumb Raziskovanje
+ Gumb Raziskovanje je skrit
+ Gumb Raziskovanje je prikazan
+
+ Skrij gumb Knjižnica
+ Gumb Knjižnica je skrit
+ Gumb Knjižnica je prikazan
+
+ Skrij gumb Nadgradi
+ Gumb Nadgradi je skrit
+ Gumb Nadgradi je prikazan
+ Skrij navigacijsko vrstico
+ Navigacijska vrstica je skrita
+ Navigacijska vrstica je prikazana
+ Skrij oznake navigacijskih gumbov
+ Oznake so skrite
+ Oznake so prikazane
+
Skrij oznako \'Pridobi Music Premium\'
Oznaka je skrita
diff --git a/patches/src/main/resources/addresources/values-sq-rAL/strings.xml b/patches/src/main/resources/addresources/values-sq-rAL/strings.xml
index ec07f6b47..20ff26be3 100644
--- a/patches/src/main/resources/addresources/values-sq-rAL/strings.xml
+++ b/patches/src/main/resources/addresources/values-sq-rAL/strings.xml
@@ -1583,11 +1583,46 @@ Aktivizimi i kësaj mund të zhbllokojë cilësi më të larta video"
Përsëritja e përhershme është aktivizuar
Përsëritja e përhershme është çaktivizuar
+
+ Fshih butonin e transmetimit
+ Butoni i transmetimit është fshehur
+ Butoni i transmetimit është shfaqur
+
+
+ Shiriti i navigimit
+ Fshih ose ndrysho butonat e shiritit të navigimit
+
+ Fshih butonin Kryesore
+ Butoni Kryesore është fshehur
+ Butoni Kryesore është shfaqur
+
+ Fshih butonin Mostra
+ Butoni Mostra është fshehur
+ Butoni Mostra është shfaqur
+
+ Fshih butonin Eksploro
+ Butoni Eksploro është fshehur
+ Butoni Eksploro është shfaqur
+
+ Fshih butonin Biblioteka
+ Butoni Biblioteka është fshehur
+ Butoni Biblioteka është shfaqur
+
+ Fshih butonin Azhorno
+ Butoni Azhorno është fshehur
+ Butoni Azhorno është shfaqur
+ Fshih shiritin e navigimit
+ Shiriti i navigimit është fshehur
+ Shiriti i navigimit është shfaqur
+ Fshih etiketat e butonave të navigimit
+ Etiketat janë fshehur
+ Etiketat janë shfaqur
+
Fshi etiketën \'Merr Music Premium\'
Etiketa është e fshehur
diff --git a/patches/src/main/resources/addresources/values-sr-rCS/strings.xml b/patches/src/main/resources/addresources/values-sr-rCS/strings.xml
index eae05e2e4..fb81b0167 100644
--- a/patches/src/main/resources/addresources/values-sr-rCS/strings.xml
+++ b/patches/src/main/resources/addresources/values-sr-rCS/strings.xml
@@ -1584,11 +1584,46 @@ Ako ovo omogućite, mogu biti otključani viši kvaliteti videa"
Trajno ponavljanje je omogućeno
Trajno ponavljanje je onemogućeno
+
+ Sakrij dugme „Prenos”
+ Dugme „Prenos” je skriveno
+ Dugme „Prenos” je prikazano
+
+
+ Traka za navigaciju
+ Sakrijte ili promenite dugmad trake za navigaciju
+
+ Sakrij dugme „Početna”
+ Dugme „Početna” je skriveno
+ Dugme „Početna” je prikazano
+
+ Sakrij dugme „Uzorci”
+ Dugme „Uzorci” je skriveno
+ Dugme „Uzorci” je prikazano
+
+ Sakrij dugme „Istražite”
+ Dugme „Istražite” je skriveno
+ Dugme „Istražite” je prikazano
+
+ Sakrij dugme „Biblioteka”
+ Dugme „Biblioteka” je skriveno
+ Dugme „Biblioteka” je prikazano
+
+ Sakrij dugme „Nadogradite”
+ Dugme „Nadogradite” je skriveno
+ Dugme „Nadogradite” je prikazano
+ Sakrij traku za navigaciju
+ Traka za navigaciju je skrivena
+ Traka za navigaciju je prikazana
+ Sakrij oznake navigacionih dugmadi
+ Oznake su skrivene
+ Oznake su prikazane
+
Sakrij oznaku „Nabavite Music Premium”
Oznaka je skrivena
diff --git a/patches/src/main/resources/addresources/values-sr-rSP/strings.xml b/patches/src/main/resources/addresources/values-sr-rSP/strings.xml
index e84787fda..fd0da35ea 100644
--- a/patches/src/main/resources/addresources/values-sr-rSP/strings.xml
+++ b/patches/src/main/resources/addresources/values-sr-rSP/strings.xml
@@ -1587,11 +1587,46 @@ Second \"item\" text"
Трајно понављање је омогућено
Трајно понављање је онемогућено
+
+ Сакриј дугме „Пребацивање”
+ Дугме „Пребацивање” је скривено
+ Дугме „Пребацивање” је приказано
+
+
+ Трака за навигацију
+ Сакријте или промените дугмад траке за навигацију
+
+ Сакриј дугме „Почетна”
+ Дугме „Почетна” је скривено
+ Дугме „Почетна” је приказано
+
+ Сакриј дугме „Узорци”
+ Дугме „Узорци” је скривено
+ Дугме „Узорци” је приказано
+
+ Сакриј дугме „Истражи”
+ Дугме „Истражи” је скривено
+ Дугме „Истражи” је приказано
+
+ Сакриј дугме „Библиотека”
+ Дугме „Библиотека” је скривено
+ Дугме „Библиотека” је приказано
+
+ Сакриј дугме „Надогради”
+ Дугме „Надогради” је скривено
+ Дугме „Надогради” је приказано
+ Сакриј траку за навигацију
+ Трака за навигацију је скривена
+ Трака за навигацију је приказана
+ Сакриј ознаке дугмади за навигацију
+ Ознаке су скривене
+ Ознаке су приказане
+
Сакриј ознаку „Набавите Music Premium”
Ознака је скривена
diff --git a/patches/src/main/resources/addresources/values-sv-rSE/strings.xml b/patches/src/main/resources/addresources/values-sv-rSE/strings.xml
index d0642166d..62901c1e7 100644
--- a/patches/src/main/resources/addresources/values-sv-rSE/strings.xml
+++ b/patches/src/main/resources/addresources/values-sv-rSE/strings.xml
@@ -1584,11 +1584,46 @@ Om du aktiverar detta kan högre videokvaliteter låsas upp"
Permanent upprepning är aktiverad
Permanent upprepning är inaktiverad
+
+ Dölj knappen Casta
+ Knappen Casta är dold
+ Knappen Casta visas
+
+
+ Navigationsfältet
+ Dölj eller ändra knappar i navigeringsfältet
+
+ Dölj Hem-knappen
+ Knappen Hem är dold
+ Knappen Hem visas
+
+ Dölj Klipp-knappen
+ Klipp-knappen är dold
+ Klipp-knappen visas
+
+ Dölj Utforska-knappen
+ Utforska-knappen är dold
+ Utforska-knappen visas
+
+ Dölj Bibliotek-knappen
+ Bibliotek-knappen är dold
+ Bibliotek-knappen visas
+
+ Dölj Uppgradera-knappen
+ Uppgradera-knappen är dold
+ Uppgradera-knappen visas
+ Dölj navigeringsfältet
+ Navigeringsfältet är dolt
+ Navigeringsfältet visas
+ Dölj etiketter för navigeringsknappar
+ Etiketter är dolda
+ Etiketter visas
+
Dölj etiketten \"Skaffa Music Premium\"
Etiketten är dold
diff --git a/patches/src/main/resources/addresources/values-sw-rKE/strings.xml b/patches/src/main/resources/addresources/values-sw-rKE/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-sw-rKE/strings.xml
+++ b/patches/src/main/resources/addresources/values-sw-rKE/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-ta-rIN/strings.xml b/patches/src/main/resources/addresources/values-ta-rIN/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-ta-rIN/strings.xml
+++ b/patches/src/main/resources/addresources/values-ta-rIN/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-te-rIN/strings.xml b/patches/src/main/resources/addresources/values-te-rIN/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-te-rIN/strings.xml
+++ b/patches/src/main/resources/addresources/values-te-rIN/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-th-rTH/strings.xml b/patches/src/main/resources/addresources/values-th-rTH/strings.xml
index 189784fb2..c8783aed1 100644
--- a/patches/src/main/resources/addresources/values-th-rTH/strings.xml
+++ b/patches/src/main/resources/addresources/values-th-rTH/strings.xml
@@ -1587,11 +1587,46 @@ User id ของคุณเหมือนกับรหัสผ่าน
เปิดใช้งานเล่นซ้ำถาวรแล้ว
ปิดใช้งานเล่นซ้ำถาวรแล้ว
+
+ ซ่อนปุ่มแคสต์
+ ปุ่มแคสต์ซ่อนอยู่
+ ปุ่มแคสต์แสดงอยู่
+
+
+ แถบนำทาง
+ ซ่อนหรือเปลี่ยนปุ่มแถบนำทาง
+
+ ซ่อนปุ่มหน้าแรก
+ ซ่อนปุ่มหน้าแรกแล้ว
+ แสดงปุ่มหน้าแรกแล้ว
+
+ ซ่อนปุ่มตัวอย่าง
+ ซ่อนปุ่มตัวอย่างแล้ว
+ แสดงปุ่มตัวอย่างแล้ว
+
+ ซ่อนปุ่มสำรวจ
+ ซ่อนปุ่มสำรวจแล้ว
+ แสดงปุ่มสำรวจแล้ว
+
+ ซ่อนปุ่มคลัง
+ ซ่อนปุ่มคลังแล้ว
+ แสดงปุ่มคลังแล้ว
+
+ ซ่อนปุ่มอัปเกรด
+ ซ่อนปุ่มอัปเกรดแล้ว
+ แสดงปุ่มอัปเกรดแล้ว
+ ซ่อนแถบนำทาง
+ ซ่อนแถบนำทางแล้ว
+ แสดงแถบนำทางแล้ว
+ ซ่อนป้ายกำกับปุ่มนำทาง
+ ซ่อนป้ายกำกับแล้ว
+ แสดงป้ายกำกับแล้ว
+
ซ่อนป้าย \'รับ Music Premium\'
ซ่อนป้ายแล้ว
diff --git a/patches/src/main/resources/addresources/values-tr-rTR/strings.xml b/patches/src/main/resources/addresources/values-tr-rTR/strings.xml
index 726beeda2..e38a3a8d8 100644
--- a/patches/src/main/resources/addresources/values-tr-rTR/strings.xml
+++ b/patches/src/main/resources/addresources/values-tr-rTR/strings.xml
@@ -1592,11 +1592,46 @@ Bunu etkinleştirmek daha yüksek video kalitelerini açabilir"
Kalıcı tekrar etkin
Kalıcı tekrar devre dışı
+
+ Yayınla düğmesini gizle
+ Yayınla düğmesi gizli
+ Yayınla düğmesi görünür
+
+
+ Gezinme çubuğu
+ Gezinme çubuğundaki düğmeleri gizle veya değiştir
+
+ Ana Sayfa düğmesini gizle
+ Ana Sayfa düğmesi gizli
+ Ana Sayfa düğmesi görünür
+
+ Sana Özel düğmesini gizle
+ Sana Özel düğmesi gizli
+ Sana Özel düğmesi görünür
+
+ Keşfet düğmesini gizle
+ Keşfet düğmesi gizli
+ Keşfet düğmesi görünür
+
+ Kitaplık düğmesini gizle
+ Kitaplık düğmesi gizli
+ Kitaplık düğmesi görünür
+
+ Yükselt düğmesini gizle
+ Yükselt düğmesi gizli
+ Yükselt düğmesi görünür
+ Gezinme çubuğunu gizle
+ Gezinme çubuğu gizli
+ Gezinme çubuğu görünür
+ Gezinme düğmeleri etiketlerini gizle
+ Etiketler gizli
+ Etiketler görünür
+
\'Müzik Premium Al\' etiketini gizle
Etiket gizli
diff --git a/patches/src/main/resources/addresources/values-uk-rUA/strings.xml b/patches/src/main/resources/addresources/values-uk-rUA/strings.xml
index 11baf5759..3267b6222 100644
--- a/patches/src/main/resources/addresources/values-uk-rUA/strings.xml
+++ b/patches/src/main/resources/addresources/values-uk-rUA/strings.xml
@@ -1584,11 +1584,46 @@ Second \"item\" text"
Постійний повтор увімкнено
Постійний повтор вимкнено
+
+ Приховати кнопку трансляції
+ Кнопку \"Трансляція\" у відеоплеєрі приховано
+ Кнопка \"Трансляція\" у відеоплеєрі показується
+
+
+ Панель навігації
+ Приховати або змінити кнопки панелі навігації
+
+ Приховати кнопку \"Головна\"
+ Кнопку \"Головна\" приховано на панелі навігації
+ Кнопка \"Головна\" показується на панелі навігації
+
+ Приховати кнопку \"Зразки\"
+ Кнопку \"Зразки\" приховано
+ Кнопка \"Зразки\" показується
+
+ Приховати кнопку \"Огляд\"
+ Кнопку \"Огляд\" приховано
+ Кнопка \"Огляд\" показується
+
+ Приховати кнопку \"Бібліотека\"
+ Кнопку \"Бібліотека\" приховано
+ Кнопка \"Бібліотека\" показується
+
+ Приховати кнопку \"Підписка\"
+ Кнопку \"Підписка\" приховано
+ Кнопка \"Підписка\" показується
+ Приховати панель навігації
+ Панель навігації приховано
+ Панель навігації показується
+ Приховати підписи кнопок навігації
+ Підписи кнопок навігації приховано
+ Підписи кнопок навігації показуються
+
Приховати Пункт \"Підписатися на Music Premium\"
Пункт приховано
diff --git a/patches/src/main/resources/addresources/values-ur-rIN/strings.xml b/patches/src/main/resources/addresources/values-ur-rIN/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-ur-rIN/strings.xml
+++ b/patches/src/main/resources/addresources/values-ur-rIN/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-uz-rUZ/strings.xml b/patches/src/main/resources/addresources/values-uz-rUZ/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-uz-rUZ/strings.xml
+++ b/patches/src/main/resources/addresources/values-uz-rUZ/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values-vi-rVN/strings.xml b/patches/src/main/resources/addresources/values-vi-rVN/strings.xml
index 4cea6ef05..4bf3abc1a 100644
--- a/patches/src/main/resources/addresources/values-vi-rVN/strings.xml
+++ b/patches/src/main/resources/addresources/values-vi-rVN/strings.xml
@@ -1591,11 +1591,46 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"Lặp lại vĩnh viễn đã được bật
Lặp lại vĩnh viễn đã bị tắt
+
+ Ẩn nút truyền
+ Nút truyền đã bị ẩn
+ Nút truyền được hiển thị
+
+
+ Thanh điều hướng
+ Ẩn hoặc thay đổi các nút trên thanh điều hướng
+
+ Ẩn nút Trang chủ
+ Nút Trang chủ đã bị ẩn
+ Nút Trang chủ được hiển thị
+
+ Ẩn nút Mẫu
+ Nút Mẫu đã bị ẩn
+ Nút Mẫu được hiển thị
+
+ Ẩn nút Khám phá
+ Nút Khám phá đã bị ẩn
+ Nút Khám phá được hiển thị
+
+ Ẩn nút Thư viện
+ Nút Thư viện đã bị ẩn
+ Nút Thư viện được hiển thị
+
+ Ẩn nút Nâng cấp
+ Nút Nâng cấp đã bị ẩn
+ Nút Nâng cấp được hiển thị
+ Ẩn thanh điều hướng
+ Thanh điều hướng đã bị ẩn
+ Thanh điều hướng được hiển thị
+ Ẩn nhãn nút điều hướng
+ Nhãn đã bị ẩn
+ Nhãn được hiển thị
+
Ẩn nhãn \'Nhận Music Premium\'
Nhãn đã bị ẩn
diff --git a/patches/src/main/resources/addresources/values-zh-rCN/strings.xml b/patches/src/main/resources/addresources/values-zh-rCN/strings.xml
index 392bc2024..3acec7405 100644
--- a/patches/src/main/resources/addresources/values-zh-rCN/strings.xml
+++ b/patches/src/main/resources/addresources/values-zh-rCN/strings.xml
@@ -1590,11 +1590,46 @@ Second \"item\" text"
已启用永久重复播放
已禁用永久重复播放
+
+ 隐藏投射按钮
+ 投射按钮已隐藏
+ 投射按钮已显示
+
+
+ 导航栏
+ 隐藏或更改导航栏按钮
+
+ 隐藏主页按钮
+ 主页按钮已隐藏
+ 主页按钮已显示
+
+ 隐藏精选按钮
+ 精选按钮已隐藏
+ 精选按钮已显示
+
+ 隐藏探索按钮
+ 探索按钮已隐藏
+ 探索按钮已显示
+
+ 隐藏媒体库按钮
+ 媒体库按钮已隐藏
+ 媒体库按钮已显示
+
+ 隐藏升级按钮
+ 升级按钮已隐藏
+ 升级按钮已显示
+ 隐藏导航栏
+ 导航栏已隐藏
+ 导航栏已显示
+ 隐藏导航按钮标签
+ 标签已隐藏
+ 标签已显示
+
隐藏“获取音乐高级版”标签
标签已隐藏
diff --git a/patches/src/main/resources/addresources/values-zh-rTW/strings.xml b/patches/src/main/resources/addresources/values-zh-rTW/strings.xml
index 36b19264b..b1430178b 100644
--- a/patches/src/main/resources/addresources/values-zh-rTW/strings.xml
+++ b/patches/src/main/resources/addresources/values-zh-rTW/strings.xml
@@ -1595,11 +1595,46 @@ Second \"item\" text"
永久重複播放已啟用
永久重複播放已停用
+
+ 隱藏投放按鈕
+ 投放按鈕已隱藏
+ 投放按鈕已顯示
+
+
+ 導覽列
+ 隱藏或變更導覽列按鈕
+
+ 隱藏「首頁」按鈕
+ 「首頁」按鈕已隱藏
+ 「首頁」按鈕已顯示
+
+ 隱藏「取樣」按鈕
+ 「取樣」按鈕已隱藏
+ 「取樣」按鈕已顯示
+
+ 隱藏「探索」按鈕
+ 「探索」按鈕已隱藏
+ 「探索」按鈕已顯示
+
+ 隱藏「媒體庫」按鈕
+ 「媒體庫」按鈕已隱藏
+ 「媒體庫」按鈕已顯示
+
+ 隱藏「升級」按鈕
+ 「升級」按鈕已隱藏
+ 「升級」按鈕已顯示
+ 隱藏導覽列
+ 導覽列已隱藏
+ 導覽列已顯示
+ 隱藏導覽按鈕標籤
+ 已隱藏「標籤」
+ 已顯示「標籤」
+
隱藏「取得 Music Premium」標籤
標籤已隱藏
diff --git a/patches/src/main/resources/addresources/values-zu-rZA/strings.xml b/patches/src/main/resources/addresources/values-zu-rZA/strings.xml
index 98a3659f6..bad4f0c2d 100644
--- a/patches/src/main/resources/addresources/values-zu-rZA/strings.xml
+++ b/patches/src/main/resources/addresources/values-zu-rZA/strings.xml
@@ -253,8 +253,17 @@ Second \"item\" text"
+
+
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/addresources/values/strings.xml b/patches/src/main/resources/addresources/values/strings.xml
index fe2eae128..ebb3e2b38 100644
--- a/patches/src/main/resources/addresources/values/strings.xml
+++ b/patches/src/main/resources/addresources/values/strings.xml
@@ -163,6 +163,15 @@ Playback may not work"
Debug logging
Debug logs are enabled
Debug logs are disabled
+ Log stack traces
+ Debug logs include stack trace
+ Debug logs do not include stack trace
+ Show toast on ReVanced error
+ Toast is shown if error occurs
+ Toast is not shown if error occurs
+ "Turning off error toasts hides all ReVanced error notifications.
+
+You will not be notified of any unexpected events."
Export debug logs
Copies ReVanced debug logs to the clipboard
Debug logging is disabled
@@ -209,15 +218,6 @@ Playback may not work"
This can help identify components when creating custom filters.
However, enabling this will also log some user data such as your IP address."
- Log stack traces
- Debug logs include stack trace
- Debug logs do not include stack trace
- Show toast on ReVanced error
- Toast is shown if error occurs
- Toast is not shown if error occurs
- "Turning off error toasts hides all ReVanced error notifications.
-
-You will not be notified of any unexpected events."
Hide album cards
@@ -1669,11 +1669,46 @@ Enabling this can unlock higher video qualities"
Permanent repeat is enabled
Permanent repeat is disabled
+
+ Hide cast button
+ Cast button is hidden
+ Cast button is shown
+
+
+ Navigation bar
+ Hide or change navigation bar buttons
+
+ Hide Home button
+ Home button is hidden
+ Home button is shown
+
+ Hide Samples button
+ Samples button is hidden
+ Samples button is shown
+
+ Hide Explore button
+ Explore button is hidden
+ Explore button is shown
+
+ Hide Library button
+ Library button is hidden
+ Library button is shown
+
+ Hide Upgrade button
+ Upgrade button is hidden
+ Upgrade button is shown
+ Hide navigation bar
+ Navigation bar is hidden
+ Navigation bar is shown
+ Hide navigation button labels
+ Labels are hidden
+ Labels are shown
+
Hide \'Get Music Premium\' label
Label is hidden