feat(YouTube - Change Header): Use SVG for header logo (#6178)

Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
This commit is contained in:
MarcaD
2025-10-27 19:10:49 +02:00
committed by GitHub
parent 1b38b1a3c8
commit e9f45ce926
38 changed files with 364 additions and 165 deletions

View File

@@ -150,14 +150,14 @@ public class CustomBrandingPatch {
}
for (ComponentName disable : componentsToDisable) {
// Use info logging because if the alias status become corrupt the app cannot launch.
Logger.printInfo(() -> "Disabling: " + disable.getClassName());
pm.setComponentEnabledSetting(disable,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
}
// Use info logging because if the alias status become corrupt the app cannot launch.
ComponentName componentToEnableFinal = componentToEnable;
Logger.printInfo(() -> "Enabling: " + componentToEnableFinal.getClassName());
pm.setComponentEnabledSetting(componentToEnable,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0);
} catch (Exception ex) {

View File

@@ -17,15 +17,25 @@ public class ChangeHeaderPatch {
DEFAULT(null, null),
REGULAR("ytWordmarkHeader", "yt_ringo2_wordmark_header"),
PREMIUM("ytPremiumWordmarkHeader", "yt_ringo2_premium_wordmark_header"),
REVANCED("revanced_header_logo", "revanced_header_logo"),
REVANCED_MINIMAL("revanced_header_logo_minimal", "revanced_header_logo_minimal"),
CUSTOM("custom_header", "custom_header");
ROUNDED("revanced_header_rounded"),
MINIMAL("revanced_header_minimal"),
CUSTOM("revanced_header_custom"),
// Old enum names for data migration. TODO: Eventually delete these.
@Deprecated
REVANCED(ROUNDED.attributeName),
@Deprecated
REVANCED_MINIMAL(MINIMAL.attributeName);
@Nullable
private final String attributeName;
@Nullable
private final String drawableName;
HeaderLogo(String attributeName) {
this(Objects.requireNonNull(attributeName), Objects.requireNonNull(attributeName));
}
HeaderLogo(@Nullable String attributeName, @Nullable String drawableName) {
this.attributeName = attributeName;
this.drawableName = drawableName;
@@ -42,9 +52,8 @@ public class ChangeHeaderPatch {
final int identifier = Utils.getResourceIdentifier(attributeName, "attr");
if (identifier == 0) {
// Identifier is zero if custom header setting was included in imported settings
// and a custom image was not included during patching.
Logger.printDebug(() -> "Could not find attribute: " + drawableName);
// Should never happen.
Logger.printException(() -> "Could not find attribute: " + drawableName);
Settings.HEADER_LOGO.resetToDefault();
return null;
}
@@ -63,12 +72,14 @@ public class ChangeHeaderPatch {
: "_light");
final int identifier = Utils.getResourceIdentifier(drawableFullName, "drawable");
if (identifier == 0) {
Logger.printDebug(() -> "Could not find drawable: " + drawableFullName);
Settings.HEADER_LOGO.resetToDefault();
return null;
if (identifier != 0) {
return Utils.getContext().getDrawable(identifier);
}
return Utils.getContext().getDrawable(identifier);
// Should never happen.
Logger.printException(() -> "Could not find drawable: " + drawableFullName);
Settings.HEADER_LOGO.resetToDefault();
return null;
}
}

View File

@@ -2,7 +2,6 @@ package app.revanced.extension.youtube.settings;
import static java.lang.Boolean.FALSE;
import static java.lang.Boolean.TRUE;
import static app.revanced.extension.shared.settings.Setting.migrateOldSettingToNew;
import static app.revanced.extension.shared.settings.Setting.parent;
import static app.revanced.extension.shared.settings.Setting.parentsAll;
import static app.revanced.extension.shared.settings.Setting.parentsAny;
@@ -17,7 +16,6 @@ import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerH
import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerHideSubtextsAvailability;
import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerHorizontalDragAvailability;
import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerType;
import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerType.MINIMAL;
import static app.revanced.extension.youtube.patches.OpenShortsInRegularPlayerPatch.ShortsPlayerType;
import static app.revanced.extension.youtube.patches.SeekbarThumbnailsPatch.SeekbarThumbnailsHighQualityAvailability;
import static app.revanced.extension.youtube.patches.components.PlayerFlyoutMenuItemsFilter.HideAudioFlyoutMenuAvailability;
@@ -41,7 +39,6 @@ import app.revanced.extension.shared.settings.IntegerSetting;
import app.revanced.extension.shared.settings.LongSetting;
import app.revanced.extension.shared.settings.Setting;
import app.revanced.extension.shared.settings.StringSetting;
import app.revanced.extension.shared.settings.preference.SharedPrefCategory;
import app.revanced.extension.shared.spoof.ClientType;
import app.revanced.extension.youtube.patches.AlternativeThumbnailsPatch.DeArrowAvailability;
import app.revanced.extension.youtube.patches.AlternativeThumbnailsPatch.StillImagesAvailability;
@@ -452,14 +449,7 @@ public class Settings extends BaseSettings {
public static final StringSetting SB_CATEGORY_UNSUBMITTED_COLOR = new StringSetting("sb_unsubmitted_color", "#FFFFFFFF", false, false);
// Deprecated migrations
private static final BooleanSetting DEPRECATED_AUTO_REPEAT = new BooleanSetting("revanced_auto_repeat", FALSE);
private static final BooleanSetting DEPRECATED_HIDE_PLAYER_BUTTONS = new BooleanSetting("revanced_hide_player_buttons", FALSE, true);
private static final BooleanSetting DEPRECATED_HIDE_PLAYER_FLYOUT_VIDEO_QUALITY_FOOTER = new BooleanSetting("revanced_hide_video_quality_menu_footer", FALSE);
private static final IntegerSetting DEPRECATED_SWIPE_OVERLAY_BACKGROUND_ALPHA = new IntegerSetting("revanced_swipe_overlay_background_alpha", 127);
private static final StringSetting DEPRECATED_SEEKBAR_CUSTOM_COLOR_PRIMARY = new StringSetting("revanced_seekbar_custom_color_value", "#FF0033");
private static final BooleanSetting DEPRECATED_DISABLE_SUGGESTED_VIDEO_END_SCREEN = new BooleanSetting("revanced_disable_suggested_video_end_screen", FALSE);
private static final BooleanSetting DEPRECATED_RESTORE_OLD_VIDEO_QUALITY_MENU = new BooleanSetting("revanced_restore_old_video_quality_menu", TRUE);
private static final BooleanSetting DEPRECATED_AUTO_CAPTIONS = new BooleanSetting("revanced_auto_captions", FALSE);
private static final FloatSetting DEPRECATED_SB_CATEGORY_SPONSOR_OPACITY = new FloatSetting("sb_sponsor_opacity", 0.8f, false, false);
private static final FloatSetting DEPRECATED_SB_CATEGORY_SELF_PROMO_OPACITY = new FloatSetting("sb_selfpromo_opacity", 0.8f, false, false);
@@ -475,17 +465,12 @@ public class Settings extends BaseSettings {
static {
// region Migration
migrateOldSettingToNew(DEPRECATED_AUTO_REPEAT, LOOP_VIDEO);
migrateOldSettingToNew(DEPRECATED_HIDE_PLAYER_BUTTONS, HIDE_PLAYER_PREVIOUS_NEXT_BUTTONS);
migrateOldSettingToNew(DEPRECATED_HIDE_PLAYER_FLYOUT_VIDEO_QUALITY_FOOTER, HIDE_PLAYER_FLYOUT_VIDEO_QUALITY_FOOTER);
migrateOldSettingToNew(DEPRECATED_DISABLE_SUGGESTED_VIDEO_END_SCREEN, HIDE_END_SCREEN_SUGGESTED_VIDEO);
migrateOldSettingToNew(DEPRECATED_RESTORE_OLD_VIDEO_QUALITY_MENU, ADVANCED_VIDEO_QUALITY_MENU);
migrateOldSettingToNew(DEPRECATED_AUTO_CAPTIONS, DISABLE_AUTO_CAPTIONS);
// Migrate renamed enum.
//noinspection deprecation
if (MINIPLAYER_TYPE.get() == MiniplayerType.PHONE) {
MINIPLAYER_TYPE.save(MINIMAL);
// Migrate renamed change header enums.
if (HEADER_LOGO.get() == HeaderLogo.REVANCED) {
HEADER_LOGO.save(HeaderLogo.ROUNDED);
}
if (HEADER_LOGO.get() == HeaderLogo.REVANCED_MINIMAL) {
HEADER_LOGO.save(HeaderLogo.MINIMAL);
}
// Migrate old single color seekbar with a slightly brighter accent color based on the primary.
@@ -512,11 +497,6 @@ public class Settings extends BaseSettings {
DEPRECATED_SEEKBAR_CUSTOM_COLOR_PRIMARY.resetToDefault();
}
if (!DEPRECATED_SWIPE_OVERLAY_BACKGROUND_ALPHA.isSetToDefault()) {
SWIPE_OVERLAY_OPACITY.save(DEPRECATED_SWIPE_OVERLAY_BACKGROUND_ALPHA.get() / 255);
DEPRECATED_SWIPE_OVERLAY_BACKGROUND_ALPHA.resetToDefault();
}
// Old spoof versions that no longer work,
// or is spoofing to a version the same or newer than this app.
if (!SPOOF_APP_VERSION_TARGET.isSetToDefault() &&
@@ -534,13 +514,7 @@ public class Settings extends BaseSettings {
// RYD requires manually migrating old settings since the lack of
// a "revanced_" on the old setting causes duplicate key exceptions during export.
SharedPrefCategory revancedPrefs = Setting.preferences;
Setting.migrateFromOldPreferences(revancedPrefs, RYD_USER_ID, "ryd_user_id");
Setting.migrateFromOldPreferences(revancedPrefs, RYD_ENABLED, "ryd_enabled");
Setting.migrateFromOldPreferences(revancedPrefs, RYD_DISLIKE_PERCENTAGE, "ryd_dislike_percentage");
Setting.migrateFromOldPreferences(revancedPrefs, RYD_COMPACT_LAYOUT, "ryd_compact_layout");
Setting.migrateFromOldPreferences(revancedPrefs, RYD_ESTIMATED_LIKE, "ryd_estimated_like");
Setting.migrateFromOldPreferences(revancedPrefs, RYD_TOAST_ON_CONNECTION_ERROR, "ryd_toast_on_connection_error");
Setting.migrateFromOldPreferences(Setting.preferences, RYD_USER_ID, "ryd_user_id");
// Migrate old saved data. Must be done here before the settings can be used by any other code.
applyOldSbOpacityToColor(SB_CATEGORY_SPONSOR_COLOR, DEPRECATED_SB_CATEGORY_SPONSOR_OPACITY);

View File

@@ -36,13 +36,13 @@ import org.w3c.dom.NodeList
import java.io.File
import java.util.logging.Logger
private val mipmapDirectories = arrayOf(
private val mipmapDirectories = mapOf(
// Target app does not have ldpi icons.
"mipmap-mdpi",
"mipmap-hdpi",
"mipmap-xhdpi",
"mipmap-xxhdpi",
"mipmap-xxxhdpi"
"mipmap-mdpi" to "108x108 px",
"mipmap-hdpi" to "162x162 px",
"mipmap-xhdpi" to "216x216 px",
"mipmap-xxhdpi" to "324x324 px",
"mipmap-xxxhdpi" to "432x432 px"
)
private val iconStyleNames = arrayOf(
@@ -104,11 +104,14 @@ internal fun baseCustomBrandingPatch(
Folder with images to use as a custom icon.
The folder must contain one or more of the following folders, depending on the DPI of the device:
${mipmapDirectories.joinToString("\n") { "- $it" }}
${mipmapDirectories.keys.joinToString("\n") { "- $it" }}
Each of the folders must contain all of the following files:
${USER_CUSTOM_ADAPTIVE_FILE_NAMES.joinToString("\n")}
The image dimensions must be as follows:
${mipmapDirectories.map { (dpi, dim) -> "- $dpi: $dim" }.joinToString("\n")}
Optionally, the path contains a 'drawable' folder with any of the monochrome icon files:
$USER_CUSTOM_MONOCHROME_FILE_NAME
$USER_CUSTOM_NOTIFICATION_ICON_FILE_NAME
@@ -249,7 +252,7 @@ internal fun baseCustomBrandingPatch(
)
// Copy template icon files.
mipmapDirectories.forEach { dpi ->
mipmapDirectories.keys.forEach { dpi ->
copyResources(
"custom-branding",
ResourceGroup(
@@ -405,23 +408,24 @@ internal fun baseCustomBrandingPatch(
)
}
val sourceFolders = iconPathFile.listFiles { file -> file.isDirectory }
?: throw PatchException("The custom icon path contains no subfolders: " +
iconPathFile.absolutePath)
val resourceDirectory = get("res")
var copiedFiles = false
// For each source folder, copy the files to the target resource directories.
sourceFolders.forEach { dpiSourceFolder ->
iconPathFile.listFiles {
file -> file.isDirectory && file.name in mipmapDirectories
}!!.forEach { dpiSourceFolder ->
val targetDpiFolder = resourceDirectory.resolve(dpiSourceFolder.name)
if (!targetDpiFolder.exists()) return@forEach
if (!targetDpiFolder.exists()) {
// Should never happen.
throw IllegalStateException("Resource not found: $dpiSourceFolder")
}
val customFiles = dpiSourceFolder.listFiles { file ->
file.isFile && file.name in USER_CUSTOM_ADAPTIVE_FILE_NAMES
}!!
if (customFiles.size > 0 && customFiles.size != USER_CUSTOM_ADAPTIVE_FILE_NAMES.size) {
if (customFiles.isNotEmpty() && customFiles.size != USER_CUSTOM_ADAPTIVE_FILE_NAMES.size) {
throw PatchException("Must include all required icon files " +
"but only found " + customFiles.map { it.name })
}
@@ -451,8 +455,9 @@ internal fun baseCustomBrandingPatch(
}
if (!copiedFiles) {
throw PatchException("Could not find any replacement images in " +
"patch option path: " + iconPathFile.absolutePath)
throw PatchException("Expected to find directories and files: "
+ USER_CUSTOM_ADAPTIVE_FILE_NAMES.contentToString()
+ "\nBut none were found in the provided option file path: " + iconPathFile.absolutePath)
}
}

View File

@@ -24,15 +24,40 @@ import java.io.File
private val variants = arrayOf("light", "dark")
private const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/patches/ChangeHeaderPatch;"
private val targetResourceDirectoryNames = mapOf(
"drawable-hdpi" to "194x72 px",
"drawable-xhdpi" to "258x96 px",
"drawable-xxhdpi" to "387x144 px",
"drawable-xxxhdpi" to "512x192 px"
)
/**
* Header logos built into this patch.
*/
private val logoResourceNames = arrayOf(
"revanced_header_minimal",
"revanced_header_rounded",
)
/**
* Custom header resource/file name.
*/
private const val CUSTOM_HEADER_RESOURCE_NAME = "revanced_header_custom"
/**
* Custom header resource/file names.
*/
private val customHeaderResourceFileNames = variants.map { variant ->
"${CUSTOM_HEADER_RESOURCE_NAME}_$variant.png"
}.toTypedArray()
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/youtube/patches/ChangeHeaderPatch;"
private val changeHeaderBytecodePatch = bytecodePatch {
dependsOn(resourceMappingPatch)
execute {
// Resources are not used during patching, but extension code uses these
// images so verify they exist.
// Verify images exist. Resources are not used during patching but extension code does.
arrayOf(
"yt_ringo2_wordmark_header",
"yt_ringo2_premium_wordmark_header"
@@ -62,28 +87,6 @@ private val changeHeaderBytecodePatch = bytecodePatch {
}
}
private val targetResourceDirectoryNames = mapOf(
"xxxhdpi" to "512px x 192px",
"xxhdpi" to "387px x 144px",
"xhdpi" to "258px x 96px",
"hdpi" to "194px x 72px",
"mdpi" to "129px x 48px"
).mapKeys { (dpi, _) -> "drawable-$dpi" }
/**
* Header logos built into this patch.
*/
private val logoResourceNames = arrayOf(
"revanced_header_logo_minimal",
"revanced_header_logo",
)
/**
* Custom header resource/file name.
*/
private const val CUSTOM_HEADER_RESOURCE_NAME = "custom_header"
@Suppress("unused")
val changeHeaderPatch = resourcePatch(
name = "Change header",
@@ -110,7 +113,7 @@ val changeHeaderPatch = resourcePatch(
${targetResourceDirectoryNames.keys.joinToString("\n") { "- $it" }}
Each of the folders must contain all of the following files:
${variants.joinToString("\n") { variant -> "- ${CUSTOM_HEADER_RESOURCE_NAME}_$variant.png" }}
${customHeaderResourceFileNames.joinToString("\n")}
The image dimensions must be as follows:
${targetResourceDirectoryNames.map { (dpi, dim) -> "- $dpi: $dim" }.joinToString("\n")}
@@ -120,67 +123,41 @@ val changeHeaderPatch = resourcePatch(
execute {
addResources("youtube", "layout.branding.changeHeaderPatch")
fun getLightDarkFileNames(vararg resourceNames: String): Array<String> =
variants.flatMap { variant ->
resourceNames.map { resource -> "${resource}_$variant.png" }
}.toTypedArray()
val logoResourceFileNames = getLightDarkFileNames(*logoResourceNames)
copyResources(
"change-header",
ResourceGroup("drawable-hdpi", *logoResourceFileNames),
ResourceGroup("drawable-mdpi", *logoResourceFileNames),
ResourceGroup("drawable-xhdpi", *logoResourceFileNames),
ResourceGroup("drawable-xxhdpi", *logoResourceFileNames),
ResourceGroup("drawable-xxxhdpi", *logoResourceFileNames),
)
if (custom != null) {
val customFile = File(custom!!)
if (!customFile.exists()) {
throw PatchException("The custom icon path cannot be found: " +
customFile.absolutePath
PreferenceScreen.GENERAL_LAYOUT.addPreferences(
if (custom == null) {
ListPreference("revanced_header_logo")
} else {
ListPreference(
key = "revanced_header_logo",
entriesKey = "revanced_header_logo_custom_entries",
entryValuesKey = "revanced_header_logo_custom_entry_values"
)
}
)
if (!customFile.isDirectory) {
throw PatchException("The custom icon path must be a folder: "
+ customFile.absolutePath)
logoResourceNames.forEach { logo ->
variants.forEach { variant ->
copyResources(
"change-header",
ResourceGroup(
"drawable",
logo + "_" + variant + ".xml"
)
)
}
}
val sourceFolders = customFile.listFiles { file -> file.isDirectory }
?: throw PatchException("The custom icon path contains no subfolders: " +
customFile.absolutePath)
val customResourceFileNames = getLightDarkFileNames(CUSTOM_HEADER_RESOURCE_NAME)
var copiedFiles = false
// For each source folder, copy the files to the target resource directories.
sourceFolders.forEach { dpiSourceFolder ->
val targetDpiFolder = get("res").resolve(dpiSourceFolder.name)
if (!targetDpiFolder.exists()) return@forEach
val customFiles = dpiSourceFolder.listFiles { file ->
file.isFile && file.name in customResourceFileNames
}!!
if (customFiles.size > 0 && customFiles.size != variants.size) {
throw PatchException("Both light/dark mode images " +
"must be specified but only found: " + customFiles.map { it.name })
}
customFiles.forEach { imgSourceFile ->
val imgTargetFile = targetDpiFolder.resolve(imgSourceFile.name)
imgSourceFile.copyTo(imgTargetFile)
copiedFiles = true
}
}
if (!copiedFiles) {
throw PatchException("No custom header images found in " +
"the provided path: " + customFile.absolutePath)
// Copy custom template. Images are only used if settings
// are imported and a custom header is enabled.
targetResourceDirectoryNames.keys.forEach { dpi ->
variants.forEach { variant ->
copyResources(
"change-header",
ResourceGroup(
dpi,
*customHeaderResourceFileNames
)
)
}
}
@@ -199,9 +176,7 @@ val changeHeaderPatch = resourcePatch(
addAttributeReference(logoName)
}
if (custom != null) {
addAttributeReference(CUSTOM_HEADER_RESOURCE_NAME)
}
addAttributeReference(CUSTOM_HEADER_RESOURCE_NAME)
}
// Add custom drawables to all styles that use the regular and premium logo.
@@ -227,22 +202,58 @@ val changeHeaderPatch = resourcePatch(
addDrawableElement(document, logoName, mode)
}
if (custom != null) {
addDrawableElement(document, CUSTOM_HEADER_RESOURCE_NAME, mode)
}
addDrawableElement(document, CUSTOM_HEADER_RESOURCE_NAME, mode)
}
}
PreferenceScreen.GENERAL_LAYOUT.addPreferences(
if (custom == null) {
ListPreference("revanced_header_logo")
} else {
ListPreference(
key = "revanced_header_logo",
entriesKey = "revanced_header_logo_custom_entries",
entryValuesKey = "revanced_header_logo_custom_entry_values"
// Copy user provided images last, so if an exception is thrown due to bad input.
if (custom != null) {
val customFile = File(custom!!.trim())
if (!customFile.exists()) {
throw PatchException("The custom header path cannot be found: " +
customFile.absolutePath
)
}
)
if (!customFile.isDirectory) {
throw PatchException("The custom header path must be a folder: "
+ customFile.absolutePath)
}
var copiedFiles = false
// For each source folder, copy the files to the target resource directories.
customFile.listFiles {
file -> file.isDirectory && file.name in targetResourceDirectoryNames
}!!.forEach { dpiSourceFolder ->
val targetDpiFolder = get("res").resolve(dpiSourceFolder.name)
if (!targetDpiFolder.exists()) {
// Should never happen.
throw IllegalStateException("Resource not found: $dpiSourceFolder")
}
val customFiles = dpiSourceFolder.listFiles { file ->
file.isFile && file.name in customHeaderResourceFileNames
}!!
if (customFiles.isNotEmpty() && customFiles.size != variants.size) {
throw PatchException("Both light/dark mode images " +
"must be specified but only found: " + customFiles.map { it.name })
}
customFiles.forEach { imgSourceFile ->
val imgTargetFile = targetDpiFolder.resolve(imgSourceFile.name)
imgSourceFile.copyTo(target = imgTargetFile, overwrite = true)
copiedFiles = true
}
}
if (!copiedFiles) {
throw PatchException("Expected to find directories and files: "
+ customHeaderResourceFileNames.contentToString()
+ "\nBut none were found in the provided option file path: " + customFile.absolutePath)
}
}
}
}

View File

@@ -397,8 +397,8 @@
<item>DEFAULT</item>
<item>REGULAR</item>
<item>PREMIUM</item>
<item>REVANCED</item>
<item>REVANCED_MINIMAL</item>
<item>ROUNDED</item>
<item>MINIMAL</item>
</string-array>
<string-array name="revanced_header_logo_custom_entries">
<item>@string/revanced_header_logo_entry_1</item>
@@ -412,8 +412,8 @@
<item>DEFAULT</item>
<item>REGULAR</item>
<item>PREMIUM</item>
<item>REVANCED</item>
<item>REVANCED_MINIMAL</item>
<item>ROUNDED</item>
<item>MINIMAL</item>
<item>CUSTOM</item>
</string-array>
</patch>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

View File

@@ -0,0 +1,39 @@
<!-- Copyright 2024 ReVanced. Not licensed under GPL. See https://github.com/ReVanced/revanced-branding -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="129dp"
android:height="48dp"
android:viewportWidth="129"
android:viewportHeight="48">
<path
android:fillColor="#1B1B1B"
android:pathData="M23,11.5C29.9,11.5 35.5,17.1 35.5,24C35.5,30.9 29.9,36.5 23,36.5C16.1,36.5 10.5,30.9 10.5,24C10.5,17.1 16.1,11.5 23,11.5ZM23,11.5" />
<path
android:fillColor="#FFFFFF"
android:pathData="M27.34,19.93C27.38,19.83 27.37,19.71 27.31,19.61C27.25,19.51 27.14,19.45 27.02,19.45C26.86,19.45 26.7,19.45 26.58,19.45C26.48,19.45 26.39,19.51 26.36,19.6C25.96,20.49 23.91,25.17 23.22,26.73C23.18,26.82 23.1,26.88 23,26.88C22.9,26.88 22.82,26.82 22.78,26.73C22.09,25.17 20.04,20.49 19.64,19.6C19.61,19.51 19.52,19.45 19.42,19.45C19.3,19.45 19.14,19.45 18.98,19.45C18.86,19.45 18.75,19.51 18.69,19.61C18.63,19.71 18.62,19.83 18.66,19.93C19.4,21.61 21.85,27.2 22.35,28.34C22.4,28.46 22.52,28.55 22.66,28.55C22.86,28.55 23.14,28.55 23.34,28.55C23.48,28.55 23.6,28.46 23.65,28.34C24.15,27.2 26.6,21.61 27.34,19.93ZM27.34,19.93" />
<path
android:pathData="M23.25,23.85C23.2,23.95 23.11,24 23,24C22.89,24 22.8,23.95 22.75,23.85C22.21,22.93 20.99,20.81 20.46,19.89C20.41,19.8 20.41,19.69 20.46,19.6C20.51,19.51 20.61,19.45 20.71,19.45L25.29,19.45C25.39,19.45 25.49,19.51 25.54,19.6C25.59,19.69 25.59,19.8 25.54,19.89C25.01,20.81 23.79,22.93 23.25,23.85ZM23.25,23.85">
<aapt:attr name="android:fillColor">
<gradient
android:startX="23"
android:startY="19.45"
android:endX="23"
android:endY="28.5"
android:type="linear">
<item
android:offset="0"
android:color="#F04E98"/>
<item
android:offset="0.5"
android:color="#5F65D4"/>
<item
android:offset="1"
android:color="#4E98F0"/>
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:pathData="M39.89,29.96L39.89,17.84L45.04,17.84C46.34,17.84 47.28,17.95 47.86,18.17C48.45,18.39 48.93,18.77 49.28,19.33C49.63,19.89 49.8,20.52 49.8,21.24C49.8,22.15 49.54,22.9 49,23.5C48.47,24.09 47.67,24.46 46.61,24.61C47.14,24.92 47.57,25.26 47.91,25.63C48.26,26 48.73,26.65 49.31,27.6L50.79,29.96L47.86,29.96L46.09,27.32C45.46,26.38 45.04,25.79 44.8,25.55C44.57,25.3 44.33,25.13 44.07,25.04C43.81,24.95 43.4,24.9 42.84,24.9L42.34,24.9L42.34,29.96ZM42.34,22.97L44.15,22.97C45.32,22.97 46.06,22.92 46.35,22.82C46.64,22.72 46.87,22.55 47.04,22.3C47.2,22.06 47.29,21.76 47.29,21.39C47.29,20.99 47.18,20.66 46.95,20.41C46.74,20.16 46.43,20 46.04,19.93C45.84,19.91 45.24,19.89 44.25,19.89L42.34,19.89ZM57.18,27.17L59.49,27.55C59.2,28.4 58.72,29.05 58.08,29.5C57.44,29.94 56.64,30.16 55.68,30.16C54.15,30.16 53.02,29.66 52.29,28.66C51.71,27.86 51.42,26.86 51.42,25.64C51.42,24.18 51.8,23.04 52.56,22.22C53.32,21.39 54.28,20.98 55.44,20.98C56.75,20.98 57.78,21.41 58.54,22.28C59.29,23.14 59.65,24.46 59.62,26.24L53.8,26.24C53.81,26.93 54,27.46 54.36,27.85C54.72,28.23 55.16,28.42 55.7,28.42C56.06,28.42 56.37,28.32 56.62,28.13C56.86,27.93 57.05,27.61 57.18,27.17ZM57.31,24.82C57.29,24.14 57.12,23.64 56.79,23.29C56.46,22.94 56.06,22.76 55.58,22.76C55.08,22.76 54.66,22.95 54.33,23.31C54,23.68 53.83,24.18 53.84,24.82ZM64.62,29.96L60.29,17.84L62.94,17.84L66.01,26.81L68.97,17.84L71.57,17.84L67.23,29.96ZM73.6,23.86L71.5,23.48C71.73,22.63 72.14,22 72.72,21.59C73.3,21.19 74.16,20.98 75.3,20.98C76.33,20.98 77.11,21.11 77.61,21.36C78.12,21.6 78.47,21.91 78.68,22.29C78.89,22.66 78.99,23.36 78.99,24.36L78.97,27.07C78.97,27.85 79,28.42 79.07,28.79C79.15,29.15 79.29,29.54 79.5,29.96L77.2,29.96C77.14,29.8 77.06,29.58 76.98,29.27C76.94,29.14 76.91,29.05 76.89,29C76.5,29.39 76.07,29.68 75.62,29.87C75.17,30.06 74.68,30.16 74.17,30.16C73.27,30.16 72.55,29.91 72.03,29.42C71.52,28.93 71.25,28.31 71.25,27.56C71.25,27.07 71.38,26.63 71.61,26.24C71.85,25.85 72.18,25.55 72.6,25.35C73.03,25.14 73.65,24.96 74.45,24.8C75.54,24.6 76.29,24.41 76.71,24.23L76.71,24C76.71,23.55 76.6,23.24 76.38,23.05C76.16,22.86 75.74,22.76 75.13,22.76C74.72,22.76 74.39,22.84 74.16,23.01C73.93,23.17 73.75,23.45 73.6,23.86ZM76.71,25.75C76.41,25.84 75.94,25.96 75.3,26.1C74.65,26.24 74.23,26.37 74.03,26.5C73.73,26.72 73.58,26.99 73.58,27.32C73.58,27.65 73.7,27.93 73.94,28.17C74.18,28.4 74.49,28.52 74.87,28.52C75.29,28.52 75.68,28.38 76.07,28.11C76.35,27.9 76.53,27.64 76.62,27.34C76.68,27.14 76.71,26.77 76.71,26.21ZM89.27,29.96L86.94,29.96L86.94,25.48C86.94,24.53 86.89,23.92 86.79,23.64C86.7,23.36 86.53,23.14 86.31,22.99C86.09,22.84 85.82,22.76 85.5,22.76C85.1,22.76 84.74,22.87 84.42,23.09C84.1,23.31 83.88,23.6 83.76,23.97C83.64,24.33 83.59,25 83.59,25.98L83.59,29.96L81.27,29.96L81.27,21.18L83.42,21.18L83.42,22.47C84.19,21.48 85.15,20.98 86.32,20.98C86.83,20.98 87.3,21.08 87.72,21.27C88.14,21.45 88.46,21.68 88.68,21.96C88.9,22.25 89.05,22.58 89.13,22.94C89.22,23.3 89.27,23.83 89.27,24.5ZM99.28,23.78L96.98,24.19C96.91,23.73 96.73,23.39 96.46,23.16C96.19,22.93 95.84,22.81 95.4,22.81C94.82,22.81 94.36,23.01 94.01,23.41C93.67,23.81 93.5,24.48 93.5,25.41C93.5,26.46 93.67,27.19 94.02,27.62C94.37,28.05 94.84,28.27 95.43,28.27C95.87,28.27 96.23,28.14 96.52,27.89C96.8,27.64 97,27.21 97.11,26.6L99.39,26.98C99.16,28.03 98.7,28.82 98.03,29.36C97.36,29.89 96.45,30.16 95.32,30.16C94.04,30.16 93.02,29.75 92.25,28.94C91.49,28.13 91.11,27.01 91.11,25.58C91.11,24.13 91.49,23 92.26,22.2C93.02,21.39 94.06,20.98 95.37,20.98C96.43,20.98 97.29,21.21 97.91,21.68C98.55,22.14 99,22.84 99.28,23.78ZM106.12,27.17L108.43,27.55C108.14,28.4 107.66,29.05 107.02,29.5C106.38,29.94 105.58,30.16 104.62,30.16C103.09,30.16 101.96,29.66 101.23,28.66C100.65,27.86 100.36,26.86 100.36,25.64C100.36,24.18 100.74,23.04 101.5,22.22C102.26,21.39 103.22,20.98 104.38,20.98C105.69,20.98 106.72,21.41 107.48,22.28C108.23,23.14 108.59,24.46 108.56,26.24L102.74,26.24C102.75,26.93 102.94,27.46 103.3,27.85C103.66,28.23 104.11,28.42 104.64,28.42C105,28.42 105.31,28.32 105.56,28.13C105.8,27.93 105.99,27.61 106.12,27.17ZM106.25,24.82C106.23,24.14 106.06,23.64 105.73,23.29C105.4,22.94 105,22.76 104.52,22.76C104.02,22.76 103.6,22.95 103.27,23.31C102.94,23.68 102.77,24.18 102.78,24.82ZM118.5,29.96L116.34,29.96L116.34,28.67C115.98,29.17 115.56,29.55 115.07,29.79C114.59,30.04 114.1,30.16 113.6,30.16C112.59,30.16 111.73,29.75 111,28.94C110.29,28.13 109.93,26.99 109.93,25.54C109.93,24.05 110.28,22.92 110.98,22.15C111.68,21.37 112.56,20.98 113.63,20.98C114.61,20.98 115.46,21.39 116.18,22.21L116.18,17.84L118.5,17.84ZM112.3,25.38C112.3,26.32 112.43,27 112.69,27.41C113.07,28.02 113.59,28.32 114.26,28.32C114.8,28.32 115.25,28.1 115.63,27.64C116,27.19 116.19,26.51 116.19,25.61C116.19,24.59 116,23.87 115.64,23.43C115.28,22.98 114.81,22.76 114.25,22.76C113.7,22.76 113.23,22.98 112.86,23.42C112.49,23.86 112.3,24.51 112.3,25.38ZM112.3,25.38" />
</vector>

View File

@@ -0,0 +1,39 @@
<!-- Copyright 2024 ReVanced. Not licensed under GPL. See https://github.com/ReVanced/revanced-branding -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="129dp"
android:height="48dp"
android:viewportWidth="129"
android:viewportHeight="48">
<path
android:fillColor="#1B1B1B"
android:pathData="M23,11.5C29.9,11.5 35.5,17.1 35.5,24C35.5,30.9 29.9,36.5 23,36.5C16.1,36.5 10.5,30.9 10.5,24C10.5,17.1 16.1,11.5 23,11.5ZM23,11.5" />
<path
android:fillColor="#FFFFFF"
android:pathData="M27.34,19.93C27.38,19.83 27.37,19.71 27.31,19.61C27.25,19.51 27.14,19.45 27.02,19.45C26.86,19.45 26.7,19.45 26.58,19.45C26.48,19.45 26.39,19.51 26.36,19.6C25.96,20.49 23.91,25.17 23.22,26.73C23.18,26.82 23.1,26.88 23,26.88C22.9,26.88 22.82,26.82 22.78,26.73C22.09,25.17 20.04,20.49 19.64,19.6C19.61,19.51 19.52,19.45 19.42,19.45C19.3,19.45 19.14,19.45 18.98,19.45C18.86,19.45 18.75,19.51 18.69,19.61C18.63,19.71 18.62,19.83 18.66,19.93C19.4,21.61 21.85,27.2 22.35,28.34C22.4,28.46 22.52,28.55 22.66,28.55C22.86,28.55 23.14,28.55 23.34,28.55C23.48,28.55 23.6,28.46 23.65,28.34C24.15,27.2 26.6,21.61 27.34,19.93ZM27.34,19.93" />
<path
android:pathData="M23.25,23.85C23.2,23.95 23.11,24 23,24C22.89,24 22.8,23.95 22.75,23.85C22.21,22.93 20.99,20.81 20.46,19.89C20.41,19.8 20.41,19.69 20.46,19.6C20.51,19.51 20.61,19.45 20.71,19.45L25.29,19.45C25.39,19.45 25.49,19.51 25.54,19.6C25.59,19.69 25.59,19.8 25.54,19.89C25.01,20.81 23.79,22.93 23.25,23.85ZM23.25,23.85">
<aapt:attr name="android:fillColor">
<gradient
android:startX="23"
android:startY="19.45"
android:endX="23"
android:endY="28.5"
android:type="linear">
<item
android:offset="0"
android:color="#F04E98"/>
<item
android:offset="0.5"
android:color="#5F65D4"/>
<item
android:offset="1"
android:color="#4E98F0"/>
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#000000"
android:pathData="M39.89,29.96L39.89,17.84L45.04,17.84C46.34,17.84 47.28,17.95 47.86,18.17C48.45,18.39 48.93,18.77 49.28,19.33C49.63,19.89 49.8,20.52 49.8,21.24C49.8,22.15 49.54,22.9 49,23.5C48.47,24.09 47.67,24.46 46.61,24.61C47.14,24.92 47.57,25.26 47.91,25.63C48.26,26 48.73,26.65 49.31,27.6L50.79,29.96L47.86,29.96L46.09,27.32C45.46,26.38 45.04,25.79 44.8,25.55C44.57,25.3 44.33,25.13 44.07,25.04C43.81,24.95 43.4,24.9 42.84,24.9L42.34,24.9L42.34,29.96ZM42.34,22.97L44.15,22.97C45.32,22.97 46.06,22.92 46.35,22.82C46.64,22.72 46.87,22.55 47.04,22.3C47.2,22.06 47.29,21.76 47.29,21.39C47.29,20.99 47.18,20.66 46.95,20.41C46.74,20.16 46.43,20 46.04,19.93C45.84,19.91 45.24,19.89 44.25,19.89L42.34,19.89ZM57.18,27.17L59.49,27.55C59.2,28.4 58.72,29.05 58.08,29.5C57.44,29.94 56.64,30.16 55.68,30.16C54.15,30.16 53.02,29.66 52.29,28.66C51.71,27.86 51.42,26.86 51.42,25.64C51.42,24.18 51.8,23.04 52.56,22.22C53.32,21.39 54.28,20.98 55.44,20.98C56.75,20.98 57.78,21.41 58.54,22.28C59.29,23.14 59.65,24.46 59.62,26.24L53.8,26.24C53.81,26.93 54,27.46 54.36,27.85C54.72,28.23 55.16,28.42 55.7,28.42C56.06,28.42 56.37,28.32 56.62,28.13C56.86,27.93 57.05,27.61 57.18,27.17ZM57.31,24.82C57.29,24.14 57.12,23.64 56.79,23.29C56.46,22.94 56.06,22.76 55.58,22.76C55.08,22.76 54.66,22.95 54.33,23.31C54,23.68 53.83,24.18 53.84,24.82ZM64.62,29.96L60.29,17.84L62.94,17.84L66.01,26.81L68.97,17.84L71.57,17.84L67.23,29.96ZM73.6,23.86L71.5,23.48C71.73,22.63 72.14,22 72.72,21.59C73.3,21.19 74.16,20.98 75.3,20.98C76.33,20.98 77.11,21.11 77.61,21.36C78.12,21.6 78.47,21.91 78.68,22.29C78.89,22.66 78.99,23.36 78.99,24.36L78.97,27.07C78.97,27.85 79,28.42 79.07,28.79C79.15,29.15 79.29,29.54 79.5,29.96L77.2,29.96C77.14,29.8 77.06,29.58 76.98,29.27C76.94,29.14 76.91,29.05 76.89,29C76.5,29.39 76.07,29.68 75.62,29.87C75.17,30.06 74.68,30.16 74.17,30.16C73.27,30.16 72.55,29.91 72.03,29.42C71.52,28.93 71.25,28.31 71.25,27.56C71.25,27.07 71.38,26.63 71.61,26.24C71.85,25.85 72.18,25.55 72.6,25.35C73.03,25.14 73.65,24.96 74.45,24.8C75.54,24.6 76.29,24.41 76.71,24.23L76.71,24C76.71,23.55 76.6,23.24 76.38,23.05C76.16,22.86 75.74,22.76 75.13,22.76C74.72,22.76 74.39,22.84 74.16,23.01C73.93,23.17 73.75,23.45 73.6,23.86ZM76.71,25.75C76.41,25.84 75.94,25.96 75.3,26.1C74.65,26.24 74.23,26.37 74.03,26.5C73.73,26.72 73.58,26.99 73.58,27.32C73.58,27.65 73.7,27.93 73.94,28.17C74.18,28.4 74.49,28.52 74.87,28.52C75.29,28.52 75.68,28.38 76.07,28.11C76.35,27.9 76.53,27.64 76.62,27.34C76.68,27.14 76.71,26.77 76.71,26.21ZM89.27,29.96L86.94,29.96L86.94,25.48C86.94,24.53 86.89,23.92 86.79,23.64C86.7,23.36 86.53,23.14 86.31,22.99C86.09,22.84 85.82,22.76 85.5,22.76C85.1,22.76 84.74,22.87 84.42,23.09C84.1,23.31 83.88,23.6 83.76,23.97C83.64,24.33 83.59,25 83.59,25.98L83.59,29.96L81.27,29.96L81.27,21.18L83.42,21.18L83.42,22.47C84.19,21.48 85.15,20.98 86.32,20.98C86.83,20.98 87.3,21.08 87.72,21.27C88.14,21.45 88.46,21.68 88.68,21.96C88.9,22.25 89.05,22.58 89.13,22.94C89.22,23.3 89.27,23.83 89.27,24.5ZM99.28,23.78L96.98,24.19C96.91,23.73 96.73,23.39 96.46,23.16C96.19,22.93 95.84,22.81 95.4,22.81C94.82,22.81 94.36,23.01 94.01,23.41C93.67,23.81 93.5,24.48 93.5,25.41C93.5,26.46 93.67,27.19 94.02,27.62C94.37,28.05 94.84,28.27 95.43,28.27C95.87,28.27 96.23,28.14 96.52,27.89C96.8,27.64 97,27.21 97.11,26.6L99.39,26.98C99.16,28.03 98.7,28.82 98.03,29.36C97.36,29.89 96.45,30.16 95.32,30.16C94.04,30.16 93.02,29.75 92.25,28.94C91.49,28.13 91.11,27.01 91.11,25.58C91.11,24.13 91.49,23 92.26,22.2C93.02,21.39 94.06,20.98 95.37,20.98C96.43,20.98 97.29,21.21 97.91,21.68C98.55,22.14 99,22.84 99.28,23.78ZM106.12,27.17L108.43,27.55C108.14,28.4 107.66,29.05 107.02,29.5C106.38,29.94 105.58,30.16 104.62,30.16C103.09,30.16 101.96,29.66 101.23,28.66C100.65,27.86 100.36,26.86 100.36,25.64C100.36,24.18 100.74,23.04 101.5,22.22C102.26,21.39 103.22,20.98 104.38,20.98C105.69,20.98 106.72,21.41 107.48,22.28C108.23,23.14 108.59,24.46 108.56,26.24L102.74,26.24C102.75,26.93 102.94,27.46 103.3,27.85C103.66,28.23 104.11,28.42 104.64,28.42C105,28.42 105.31,28.32 105.56,28.13C105.8,27.93 105.99,27.61 106.12,27.17ZM106.25,24.82C106.23,24.14 106.06,23.64 105.73,23.29C105.4,22.94 105,22.76 104.52,22.76C104.02,22.76 103.6,22.95 103.27,23.31C102.94,23.68 102.77,24.18 102.78,24.82ZM118.5,29.96L116.34,29.96L116.34,28.67C115.98,29.17 115.56,29.55 115.07,29.79C114.59,30.04 114.1,30.16 113.6,30.16C112.59,30.16 111.73,29.75 111,28.94C110.29,28.13 109.93,26.99 109.93,25.54C109.93,24.05 110.28,22.92 110.98,22.15C111.68,21.37 112.56,20.98 113.63,20.98C114.61,20.98 115.46,21.39 116.18,22.21L116.18,17.84L118.5,17.84ZM112.3,25.38C112.3,26.32 112.43,27 112.69,27.41C113.07,28.02 113.59,28.32 114.26,28.32C114.8,28.32 115.25,28.1 115.63,27.64C116,27.19 116.19,26.51 116.19,25.61C116.19,24.59 116,23.87 115.64,23.43C115.28,22.98 114.81,22.76 114.25,22.76C113.7,22.76 113.23,22.98 112.86,23.42C112.49,23.86 112.3,24.51 112.3,25.38ZM112.3,25.38" />
</vector>

View File

@@ -0,0 +1,60 @@
<!-- Copyright 2024 ReVanced. Not licensed under GPL. See https://github.com/ReVanced/revanced-branding -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="129dp"
android:height="48dp"
android:viewportWidth="129"
android:viewportHeight="48">
<path
android:fillColor="#1B1B1B"
android:pathData="M23,11.5C29.9,11.5 35.5,17.1 35.5,24C35.5,30.9 29.9,36.5 23,36.5C16.1,36.5 10.5,30.9 10.5,24C10.5,17.1 16.1,11.5 23,11.5ZM23,11.5" />
<path
android:pathData="M23,11.5C29.9,11.5 35.5,17.1 35.5,24C35.5,30.9 29.9,36.5 23,36.5C16.1,36.5 10.5,30.9 10.5,24C10.5,17.1 16.1,11.5 23,11.5ZM23,12.63C16.72,12.63 11.63,17.72 11.63,24C11.63,30.28 16.72,35.38 23,35.38C29.28,35.38 34.38,30.28 34.38,24C34.38,17.72 29.28,12.63 23,12.63ZM23,12.63">
<aapt:attr name="android:fillColor">
<gradient
android:startX="23"
android:startY="11.5"
android:endX="23"
android:endY="36.5"
android:type="linear">
<item
android:offset="0"
android:color="#F04E98"/>
<item
android:offset="0.5"
android:color="#5F65D4"/>
<item
android:offset="1"
android:color="#4E98F0"/>
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:pathData="M27.34,19.93C27.38,19.83 27.37,19.71 27.31,19.61C27.25,19.51 27.14,19.45 27.02,19.45C26.86,19.45 26.7,19.45 26.58,19.45C26.48,19.45 26.39,19.51 26.36,19.6C25.96,20.49 23.91,25.17 23.22,26.73C23.18,26.82 23.1,26.88 23,26.88C22.9,26.88 22.82,26.82 22.78,26.73C22.09,25.17 20.04,20.49 19.64,19.6C19.61,19.51 19.52,19.45 19.42,19.45C19.3,19.45 19.14,19.45 18.98,19.45C18.86,19.45 18.75,19.51 18.69,19.61C18.63,19.71 18.62,19.83 18.66,19.93C19.4,21.61 21.85,27.2 22.35,28.34C22.4,28.46 22.52,28.55 22.66,28.55C22.86,28.55 23.14,28.55 23.34,28.55C23.48,28.55 23.6,28.46 23.65,28.34C24.15,27.2 26.6,21.61 27.34,19.93ZM27.34,19.93" />
<path
android:pathData="M23.25,23.85C23.2,23.95 23.11,24 23,24C22.89,24 22.8,23.95 22.75,23.85C22.21,22.93 20.99,20.81 20.46,19.89C20.41,19.8 20.41,19.69 20.46,19.6C20.51,19.51 20.61,19.45 20.71,19.45L25.29,19.45C25.39,19.45 25.49,19.51 25.54,19.6C25.59,19.69 25.59,19.8 25.54,19.89C25.01,20.81 23.79,22.93 23.25,23.85ZM23.25,23.85">
<aapt:attr name="android:fillColor">
<gradient
android:startX="23"
android:startY="19.45"
android:endX="23"
android:endY="28.5"
android:type="linear">
<item
android:offset="0"
android:color="#F04E98"/>
<item
android:offset="0.5"
android:color="#5F65D4"/>
<item
android:offset="1"
android:color="#4E98F0"/>
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:pathData="M39.89,29.96L39.89,17.84L45.04,17.84C46.34,17.84 47.28,17.95 47.86,18.17C48.45,18.39 48.93,18.77 49.28,19.33C49.63,19.89 49.8,20.52 49.8,21.24C49.8,22.15 49.54,22.9 49,23.5C48.47,24.09 47.67,24.46 46.61,24.61C47.14,24.92 47.57,25.26 47.91,25.63C48.26,26 48.73,26.65 49.31,27.6L50.79,29.96L47.86,29.96L46.09,27.32C45.46,26.38 45.04,25.79 44.8,25.55C44.57,25.3 44.33,25.13 44.07,25.04C43.81,24.95 43.4,24.9 42.84,24.9L42.34,24.9L42.34,29.96ZM42.34,22.97L44.15,22.97C45.32,22.97 46.06,22.92 46.35,22.82C46.64,22.72 46.87,22.55 47.04,22.3C47.2,22.06 47.29,21.76 47.29,21.39C47.29,20.99 47.18,20.66 46.95,20.41C46.74,20.16 46.43,20 46.04,19.93C45.84,19.91 45.24,19.89 44.25,19.89L42.34,19.89ZM57.18,27.17L59.49,27.55C59.2,28.4 58.72,29.05 58.08,29.5C57.44,29.94 56.64,30.16 55.68,30.16C54.15,30.16 53.02,29.66 52.29,28.66C51.71,27.86 51.42,26.86 51.42,25.64C51.42,24.18 51.8,23.04 52.56,22.22C53.32,21.39 54.28,20.98 55.44,20.98C56.75,20.98 57.78,21.41 58.54,22.28C59.29,23.14 59.65,24.46 59.62,26.24L53.8,26.24C53.81,26.93 54,27.46 54.36,27.85C54.72,28.23 55.16,28.42 55.7,28.42C56.06,28.42 56.37,28.32 56.62,28.13C56.86,27.93 57.05,27.61 57.18,27.17ZM57.31,24.82C57.29,24.14 57.12,23.64 56.79,23.29C56.46,22.94 56.06,22.76 55.58,22.76C55.08,22.76 54.66,22.95 54.33,23.31C54,23.68 53.83,24.18 53.84,24.82ZM64.62,29.96L60.29,17.84L62.94,17.84L66.01,26.81L68.97,17.84L71.57,17.84L67.23,29.96ZM73.6,23.86L71.5,23.48C71.73,22.63 72.14,22 72.72,21.59C73.3,21.19 74.16,20.98 75.3,20.98C76.33,20.98 77.11,21.11 77.61,21.36C78.12,21.6 78.47,21.91 78.68,22.29C78.89,22.66 78.99,23.36 78.99,24.36L78.97,27.07C78.97,27.85 79,28.42 79.07,28.79C79.15,29.15 79.29,29.54 79.5,29.96L77.2,29.96C77.14,29.8 77.06,29.58 76.98,29.27C76.94,29.14 76.91,29.05 76.89,29C76.5,29.39 76.07,29.68 75.62,29.87C75.17,30.06 74.68,30.16 74.17,30.16C73.27,30.16 72.55,29.91 72.03,29.42C71.52,28.93 71.25,28.31 71.25,27.56C71.25,27.07 71.38,26.63 71.61,26.24C71.85,25.85 72.18,25.55 72.6,25.35C73.03,25.14 73.65,24.96 74.45,24.8C75.54,24.6 76.29,24.41 76.71,24.23L76.71,24C76.71,23.55 76.6,23.24 76.38,23.05C76.16,22.86 75.74,22.76 75.13,22.76C74.72,22.76 74.39,22.84 74.16,23.01C73.93,23.17 73.75,23.45 73.6,23.86ZM76.71,25.75C76.41,25.84 75.94,25.96 75.3,26.1C74.65,26.24 74.23,26.37 74.03,26.5C73.73,26.72 73.58,26.99 73.58,27.32C73.58,27.65 73.7,27.93 73.94,28.17C74.18,28.4 74.49,28.52 74.87,28.52C75.29,28.52 75.68,28.38 76.07,28.11C76.35,27.9 76.53,27.64 76.62,27.34C76.68,27.14 76.71,26.77 76.71,26.21ZM89.27,29.96L86.94,29.96L86.94,25.48C86.94,24.53 86.89,23.92 86.79,23.64C86.7,23.36 86.53,23.14 86.31,22.99C86.09,22.84 85.82,22.76 85.5,22.76C85.1,22.76 84.74,22.87 84.42,23.09C84.1,23.31 83.88,23.6 83.76,23.97C83.64,24.33 83.59,25 83.59,25.98L83.59,29.96L81.27,29.96L81.27,21.18L83.42,21.18L83.42,22.47C84.19,21.48 85.15,20.98 86.32,20.98C86.83,20.98 87.3,21.08 87.72,21.27C88.14,21.45 88.46,21.68 88.68,21.96C88.9,22.25 89.05,22.58 89.13,22.94C89.22,23.3 89.27,23.83 89.27,24.5ZM99.28,23.78L96.98,24.19C96.91,23.73 96.73,23.39 96.46,23.16C96.19,22.93 95.84,22.81 95.4,22.81C94.82,22.81 94.36,23.01 94.01,23.41C93.67,23.81 93.5,24.48 93.5,25.41C93.5,26.46 93.67,27.19 94.02,27.62C94.37,28.05 94.84,28.27 95.43,28.27C95.87,28.27 96.23,28.14 96.52,27.89C96.8,27.64 97,27.21 97.11,26.6L99.39,26.98C99.16,28.03 98.7,28.82 98.03,29.36C97.36,29.89 96.45,30.16 95.32,30.16C94.04,30.16 93.02,29.75 92.25,28.94C91.49,28.13 91.11,27.01 91.11,25.58C91.11,24.13 91.49,23 92.26,22.2C93.02,21.39 94.06,20.98 95.37,20.98C96.43,20.98 97.29,21.21 97.91,21.68C98.55,22.14 99,22.84 99.28,23.78ZM106.12,27.17L108.43,27.55C108.14,28.4 107.66,29.05 107.02,29.5C106.38,29.94 105.58,30.16 104.62,30.16C103.09,30.16 101.96,29.66 101.23,28.66C100.65,27.86 100.36,26.86 100.36,25.64C100.36,24.18 100.74,23.04 101.5,22.22C102.26,21.39 103.22,20.98 104.38,20.98C105.69,20.98 106.72,21.41 107.48,22.28C108.23,23.14 108.59,24.46 108.56,26.24L102.74,26.24C102.75,26.93 102.94,27.46 103.3,27.85C103.66,28.23 104.11,28.42 104.64,28.42C105,28.42 105.31,28.32 105.56,28.13C105.8,27.93 105.99,27.61 106.12,27.17ZM106.25,24.82C106.23,24.14 106.06,23.64 105.73,23.29C105.4,22.94 105,22.76 104.52,22.76C104.02,22.76 103.6,22.95 103.27,23.31C102.94,23.68 102.77,24.18 102.78,24.82ZM118.5,29.96L116.34,29.96L116.34,28.67C115.98,29.17 115.56,29.55 115.07,29.79C114.59,30.04 114.1,30.16 113.6,30.16C112.59,30.16 111.73,29.75 111,28.94C110.29,28.13 109.93,26.99 109.93,25.54C109.93,24.05 110.28,22.92 110.98,22.15C111.68,21.37 112.56,20.98 113.63,20.98C114.61,20.98 115.46,21.39 116.18,22.21L116.18,17.84L118.5,17.84ZM112.3,25.38C112.3,26.32 112.43,27 112.69,27.41C113.07,28.02 113.59,28.32 114.26,28.32C114.8,28.32 115.25,28.1 115.63,27.64C116,27.19 116.19,26.51 116.19,25.61C116.19,24.59 116,23.87 115.64,23.43C115.28,22.98 114.81,22.76 114.25,22.76C113.7,22.76 113.23,22.98 112.86,23.42C112.49,23.86 112.3,24.51 112.3,25.38ZM112.3,25.38" />
</vector>

View File

@@ -0,0 +1,60 @@
<!-- Copyright 2024 ReVanced. Not licensed under GPL. See https://github.com/ReVanced/revanced-branding -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="129dp"
android:height="48dp"
android:viewportWidth="129"
android:viewportHeight="48">
<path
android:fillColor="#1B1B1B"
android:pathData="M23,11.5C29.9,11.5 35.5,17.1 35.5,24C35.5,30.9 29.9,36.5 23,36.5C16.1,36.5 10.5,30.9 10.5,24C10.5,17.1 16.1,11.5 23,11.5ZM23,11.5" />
<path
android:pathData="M23,11.5C29.9,11.5 35.5,17.1 35.5,24C35.5,30.9 29.9,36.5 23,36.5C16.1,36.5 10.5,30.9 10.5,24C10.5,17.1 16.1,11.5 23,11.5ZM23,12.63C16.72,12.63 11.63,17.72 11.63,24C11.63,30.28 16.72,35.38 23,35.38C29.28,35.38 34.38,30.28 34.38,24C34.38,17.72 29.28,12.63 23,12.63ZM23,12.63">
<aapt:attr name="android:fillColor">
<gradient
android:startX="23"
android:startY="11.5"
android:endX="23"
android:endY="36.5"
android:type="linear">
<item
android:offset="0"
android:color="#F04E98"/>
<item
android:offset="0.5"
android:color="#5F65D4"/>
<item
android:offset="1"
android:color="#4E98F0"/>
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:pathData="M27.34,19.93C27.38,19.83 27.37,19.71 27.31,19.61C27.25,19.51 27.14,19.45 27.02,19.45C26.86,19.45 26.7,19.45 26.58,19.45C26.48,19.45 26.39,19.51 26.36,19.6C25.96,20.49 23.91,25.17 23.22,26.73C23.18,26.82 23.1,26.88 23,26.88C22.9,26.88 22.82,26.82 22.78,26.73C22.09,25.17 20.04,20.49 19.64,19.6C19.61,19.51 19.52,19.45 19.42,19.45C19.3,19.45 19.14,19.45 18.98,19.45C18.86,19.45 18.75,19.51 18.69,19.61C18.63,19.71 18.62,19.83 18.66,19.93C19.4,21.61 21.85,27.2 22.35,28.34C22.4,28.46 22.52,28.55 22.66,28.55C22.86,28.55 23.14,28.55 23.34,28.55C23.48,28.55 23.6,28.46 23.65,28.34C24.15,27.2 26.6,21.61 27.34,19.93ZM27.34,19.93" />
<path
android:pathData="M23.25,23.85C23.2,23.95 23.11,24 23,24C22.89,24 22.8,23.95 22.75,23.85C22.21,22.93 20.99,20.81 20.46,19.89C20.41,19.8 20.41,19.69 20.46,19.6C20.51,19.51 20.61,19.45 20.71,19.45L25.29,19.45C25.39,19.45 25.49,19.51 25.54,19.6C25.59,19.69 25.59,19.8 25.54,19.89C25.01,20.81 23.79,22.93 23.25,23.85ZM23.25,23.85">
<aapt:attr name="android:fillColor">
<gradient
android:startX="23"
android:startY="19.45"
android:endX="23"
android:endY="28.5"
android:type="linear">
<item
android:offset="0"
android:color="#F04E98"/>
<item
android:offset="0.5"
android:color="#5F65D4"/>
<item
android:offset="1"
android:color="#4E98F0"/>
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#000000"
android:pathData="M39.89,29.96L39.89,17.84L45.04,17.84C46.34,17.84 47.28,17.95 47.86,18.17C48.45,18.39 48.93,18.77 49.28,19.33C49.63,19.89 49.8,20.52 49.8,21.24C49.8,22.15 49.54,22.9 49,23.5C48.47,24.09 47.67,24.46 46.61,24.61C47.14,24.92 47.57,25.26 47.91,25.63C48.26,26 48.73,26.65 49.31,27.6L50.79,29.96L47.86,29.96L46.09,27.32C45.46,26.38 45.04,25.79 44.8,25.55C44.57,25.3 44.33,25.13 44.07,25.04C43.81,24.95 43.4,24.9 42.84,24.9L42.34,24.9L42.34,29.96ZM42.34,22.97L44.15,22.97C45.32,22.97 46.06,22.92 46.35,22.82C46.64,22.72 46.87,22.55 47.04,22.3C47.2,22.06 47.29,21.76 47.29,21.39C47.29,20.99 47.18,20.66 46.95,20.41C46.74,20.16 46.43,20 46.04,19.93C45.84,19.91 45.24,19.89 44.25,19.89L42.34,19.89ZM57.18,27.17L59.49,27.55C59.2,28.4 58.72,29.05 58.08,29.5C57.44,29.94 56.64,30.16 55.68,30.16C54.15,30.16 53.02,29.66 52.29,28.66C51.71,27.86 51.42,26.86 51.42,25.64C51.42,24.18 51.8,23.04 52.56,22.22C53.32,21.39 54.28,20.98 55.44,20.98C56.75,20.98 57.78,21.41 58.54,22.28C59.29,23.14 59.65,24.46 59.62,26.24L53.8,26.24C53.81,26.93 54,27.46 54.36,27.85C54.72,28.23 55.16,28.42 55.7,28.42C56.06,28.42 56.37,28.32 56.62,28.13C56.86,27.93 57.05,27.61 57.18,27.17ZM57.31,24.82C57.29,24.14 57.12,23.64 56.79,23.29C56.46,22.94 56.06,22.76 55.58,22.76C55.08,22.76 54.66,22.95 54.33,23.31C54,23.68 53.83,24.18 53.84,24.82ZM64.62,29.96L60.29,17.84L62.94,17.84L66.01,26.81L68.97,17.84L71.57,17.84L67.23,29.96ZM73.6,23.86L71.5,23.48C71.73,22.63 72.14,22 72.72,21.59C73.3,21.19 74.16,20.98 75.3,20.98C76.33,20.98 77.11,21.11 77.61,21.36C78.12,21.6 78.47,21.91 78.68,22.29C78.89,22.66 78.99,23.36 78.99,24.36L78.97,27.07C78.97,27.85 79,28.42 79.07,28.79C79.15,29.15 79.29,29.54 79.5,29.96L77.2,29.96C77.14,29.8 77.06,29.58 76.98,29.27C76.94,29.14 76.91,29.05 76.89,29C76.5,29.39 76.07,29.68 75.62,29.87C75.17,30.06 74.68,30.16 74.17,30.16C73.27,30.16 72.55,29.91 72.03,29.42C71.52,28.93 71.25,28.31 71.25,27.56C71.25,27.07 71.38,26.63 71.61,26.24C71.85,25.85 72.18,25.55 72.6,25.35C73.03,25.14 73.65,24.96 74.45,24.8C75.54,24.6 76.29,24.41 76.71,24.23L76.71,24C76.71,23.55 76.6,23.24 76.38,23.05C76.16,22.86 75.74,22.76 75.13,22.76C74.72,22.76 74.39,22.84 74.16,23.01C73.93,23.17 73.75,23.45 73.6,23.86ZM76.71,25.75C76.41,25.84 75.94,25.96 75.3,26.1C74.65,26.24 74.23,26.37 74.03,26.5C73.73,26.72 73.58,26.99 73.58,27.32C73.58,27.65 73.7,27.93 73.94,28.17C74.18,28.4 74.49,28.52 74.87,28.52C75.29,28.52 75.68,28.38 76.07,28.11C76.35,27.9 76.53,27.64 76.62,27.34C76.68,27.14 76.71,26.77 76.71,26.21ZM89.27,29.96L86.94,29.96L86.94,25.48C86.94,24.53 86.89,23.92 86.79,23.64C86.7,23.36 86.53,23.14 86.31,22.99C86.09,22.84 85.82,22.76 85.5,22.76C85.1,22.76 84.74,22.87 84.42,23.09C84.1,23.31 83.88,23.6 83.76,23.97C83.64,24.33 83.59,25 83.59,25.98L83.59,29.96L81.27,29.96L81.27,21.18L83.42,21.18L83.42,22.47C84.19,21.48 85.15,20.98 86.32,20.98C86.83,20.98 87.3,21.08 87.72,21.27C88.14,21.45 88.46,21.68 88.68,21.96C88.9,22.25 89.05,22.58 89.13,22.94C89.22,23.3 89.27,23.83 89.27,24.5ZM99.28,23.78L96.98,24.19C96.91,23.73 96.73,23.39 96.46,23.16C96.19,22.93 95.84,22.81 95.4,22.81C94.82,22.81 94.36,23.01 94.01,23.41C93.67,23.81 93.5,24.48 93.5,25.41C93.5,26.46 93.67,27.19 94.02,27.62C94.37,28.05 94.84,28.27 95.43,28.27C95.87,28.27 96.23,28.14 96.52,27.89C96.8,27.64 97,27.21 97.11,26.6L99.39,26.98C99.16,28.03 98.7,28.82 98.03,29.36C97.36,29.89 96.45,30.16 95.32,30.16C94.04,30.16 93.02,29.75 92.25,28.94C91.49,28.13 91.11,27.01 91.11,25.58C91.11,24.13 91.49,23 92.26,22.2C93.02,21.39 94.06,20.98 95.37,20.98C96.43,20.98 97.29,21.21 97.91,21.68C98.55,22.14 99,22.84 99.28,23.78ZM106.12,27.17L108.43,27.55C108.14,28.4 107.66,29.05 107.02,29.5C106.38,29.94 105.58,30.16 104.62,30.16C103.09,30.16 101.96,29.66 101.23,28.66C100.65,27.86 100.36,26.86 100.36,25.64C100.36,24.18 100.74,23.04 101.5,22.22C102.26,21.39 103.22,20.98 104.38,20.98C105.69,20.98 106.72,21.41 107.48,22.28C108.23,23.14 108.59,24.46 108.56,26.24L102.74,26.24C102.75,26.93 102.94,27.46 103.3,27.85C103.66,28.23 104.11,28.42 104.64,28.42C105,28.42 105.31,28.32 105.56,28.13C105.8,27.93 105.99,27.61 106.12,27.17ZM106.25,24.82C106.23,24.14 106.06,23.64 105.73,23.29C105.4,22.94 105,22.76 104.52,22.76C104.02,22.76 103.6,22.95 103.27,23.31C102.94,23.68 102.77,24.18 102.78,24.82ZM118.5,29.96L116.34,29.96L116.34,28.67C115.98,29.17 115.56,29.55 115.07,29.79C114.59,30.04 114.1,30.16 113.6,30.16C112.59,30.16 111.73,29.75 111,28.94C110.29,28.13 109.93,26.99 109.93,25.54C109.93,24.05 110.28,22.92 110.98,22.15C111.68,21.37 112.56,20.98 113.63,20.98C114.61,20.98 115.46,21.39 116.18,22.21L116.18,17.84L118.5,17.84ZM112.3,25.38C112.3,26.32 112.43,27 112.69,27.41C113.07,28.02 113.59,28.32 114.26,28.32C114.8,28.32 115.25,28.1 115.63,27.64C116,27.19 116.19,26.51 116.19,25.61C116.19,24.59 116,23.87 115.64,23.43C115.28,22.98 114.81,22.76 114.25,22.76C113.7,22.76 113.23,22.98 112.86,23.42C112.49,23.86 112.3,24.51 112.3,25.38ZM112.3,25.38" />
</vector>