refactor custom-branding-icon
patch
@ -6,104 +6,19 @@ import app.revanced.patcher.annotation.Version
|
|||||||
import app.revanced.patcher.data.ResourceContext
|
import app.revanced.patcher.data.ResourceContext
|
||||||
import app.revanced.patcher.patch.*
|
import app.revanced.patcher.patch.*
|
||||||
import app.revanced.patcher.patch.annotations.Patch
|
import app.revanced.patcher.patch.annotations.Patch
|
||||||
import app.revanced.patcher.patch.ResourcePatch
|
|
||||||
import app.revanced.shared.annotation.YouTubeMusicCompatibility
|
import app.revanced.shared.annotation.YouTubeMusicCompatibility
|
||||||
import java.nio.file.Files
|
import app.revanced.shared.util.resources.IconHelper
|
||||||
import java.nio.file.StandardCopyOption
|
|
||||||
|
|
||||||
@Patch
|
@Patch
|
||||||
@Name("custom-branding-music-red")
|
@Name("custom-branding-music-afn-red")
|
||||||
@Description("Changes the YouTube Music launcher icon to your choice (defaults to ReVanced Red).")
|
@Description("Changes the YouTube Music launcher icon (Afn / Red).")
|
||||||
@YouTubeMusicCompatibility
|
@YouTubeMusicCompatibility
|
||||||
@Version("0.0.1")
|
@Version("0.0.1")
|
||||||
class CustomBrandingMusicPatch_Red : ResourcePatch {
|
class CustomBrandingMusicPatch_Red : ResourcePatch {
|
||||||
override fun execute(context: ResourceContext): PatchResult {
|
override fun execute(context: ResourceContext): PatchResult {
|
||||||
val classLoader = this.javaClass.classLoader
|
|
||||||
val resDirectory = context["res"]
|
|
||||||
if (!resDirectory.isDirectory) return PatchResultError("The res folder can not be found.")
|
|
||||||
|
|
||||||
// App Icon
|
IconHelper.customIconMusic(context, "red")
|
||||||
val AppiconNames = arrayOf(
|
IconHelper.customIconMusicAdditional(context, "red")
|
||||||
"adaptiveproduct_youtube_music_background_color_108",
|
|
||||||
"adaptiveproduct_youtube_music_foreground_color_108",
|
|
||||||
"ic_launcher_release"
|
|
||||||
)
|
|
||||||
|
|
||||||
mapOf(
|
|
||||||
"xxxhdpi" to 192,
|
|
||||||
"xxhdpi" to 144,
|
|
||||||
"xhdpi" to 96,
|
|
||||||
"hdpi" to 72,
|
|
||||||
"mdpi" to 48
|
|
||||||
).forEach { (iconDirectory, size) ->
|
|
||||||
AppiconNames.forEach iconLoop@{ iconName ->
|
|
||||||
Files.copy(
|
|
||||||
classLoader.getResourceAsStream("music/branding/red/launchericon/$size/$iconName.png")!!,
|
|
||||||
resDirectory.resolve("mipmap-$iconDirectory").resolve("$iconName.png").toPath(),
|
|
||||||
StandardCopyOption.REPLACE_EXISTING
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Other Resource
|
|
||||||
val drawables1 = "drawable-hdpi" to arrayOf(
|
|
||||||
"action_bar_logo",
|
|
||||||
"action_bar_logo_release",
|
|
||||||
"record"
|
|
||||||
)
|
|
||||||
|
|
||||||
val drawables2 = "drawable-large-hdpi" to arrayOf(
|
|
||||||
"record"
|
|
||||||
)
|
|
||||||
|
|
||||||
val drawables3 = "drawable-large-mdpi" to arrayOf(
|
|
||||||
"record"
|
|
||||||
)
|
|
||||||
|
|
||||||
val drawables4 = "drawable-large-xhdpi" to arrayOf(
|
|
||||||
"record"
|
|
||||||
)
|
|
||||||
|
|
||||||
val drawables5 = "drawable-mdpi" to arrayOf(
|
|
||||||
"action_bar_logo",
|
|
||||||
"record"
|
|
||||||
)
|
|
||||||
|
|
||||||
val drawables6 = "drawable-xhdpi" to arrayOf(
|
|
||||||
"action_bar_logo",
|
|
||||||
"record"
|
|
||||||
)
|
|
||||||
|
|
||||||
val drawables7 = "drawable-xlarge-hdpi" to arrayOf(
|
|
||||||
"record"
|
|
||||||
)
|
|
||||||
|
|
||||||
val drawables8 = "drawable-xlarge-mdpi" to arrayOf(
|
|
||||||
"record"
|
|
||||||
)
|
|
||||||
|
|
||||||
val drawables9 = "drawable-xxhdpi" to arrayOf(
|
|
||||||
"action_bar_logo",
|
|
||||||
"record"
|
|
||||||
)
|
|
||||||
|
|
||||||
val drawables10 = "drawable-xxxhdpi" to arrayOf(
|
|
||||||
"action_bar_logo"
|
|
||||||
)
|
|
||||||
|
|
||||||
val pngResources = arrayOf(drawables1, drawables2, drawables3, drawables4, drawables5, drawables6, drawables7, drawables8, drawables9, drawables10)
|
|
||||||
|
|
||||||
pngResources.forEach { (path, resourceNames) ->
|
|
||||||
resourceNames.forEach { name ->
|
|
||||||
val relativePath = "$path/$name.png"
|
|
||||||
|
|
||||||
Files.copy(
|
|
||||||
classLoader.getResourceAsStream("music/branding/red/resource/$relativePath")!!,
|
|
||||||
context["res"].resolve(relativePath).toPath(),
|
|
||||||
StandardCopyOption.REPLACE_EXISTING
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return PatchResultSuccess()
|
return PatchResultSuccess()
|
||||||
}
|
}
|
||||||
|
@ -6,10 +6,8 @@ import app.revanced.patcher.annotation.Version
|
|||||||
import app.revanced.patcher.data.ResourceContext
|
import app.revanced.patcher.data.ResourceContext
|
||||||
import app.revanced.patcher.patch.*
|
import app.revanced.patcher.patch.*
|
||||||
import app.revanced.patcher.patch.annotations.Patch
|
import app.revanced.patcher.patch.annotations.Patch
|
||||||
import app.revanced.patcher.patch.ResourcePatch
|
|
||||||
import app.revanced.shared.annotation.YouTubeMusicCompatibility
|
import app.revanced.shared.annotation.YouTubeMusicCompatibility
|
||||||
import java.nio.file.Files
|
import app.revanced.shared.util.resources.IconHelper
|
||||||
import java.nio.file.StandardCopyOption
|
|
||||||
|
|
||||||
@Patch(false)
|
@Patch(false)
|
||||||
@Name("custom-branding-music-revancify")
|
@Name("custom-branding-music-revancify")
|
||||||
@ -18,45 +16,8 @@ import java.nio.file.StandardCopyOption
|
|||||||
@Version("0.0.1")
|
@Version("0.0.1")
|
||||||
class CustomBrandingMusicPatch_Revancify : ResourcePatch {
|
class CustomBrandingMusicPatch_Revancify : ResourcePatch {
|
||||||
override fun execute(context: ResourceContext): PatchResult {
|
override fun execute(context: ResourceContext): PatchResult {
|
||||||
val classLoader = this.javaClass.classLoader
|
|
||||||
val resDirectory = context["res"]
|
|
||||||
if (!resDirectory.isDirectory) return PatchResultError("The res folder can not be found.")
|
|
||||||
|
|
||||||
// App Icon
|
IconHelper.customIconMusic(context, "revancify")
|
||||||
val AppiconNames = arrayOf(
|
|
||||||
"adaptiveproduct_youtube_music_background_color_108",
|
|
||||||
"adaptiveproduct_youtube_music_foreground_color_108",
|
|
||||||
"ic_launcher_release"
|
|
||||||
)
|
|
||||||
|
|
||||||
mapOf(
|
|
||||||
"xxxhdpi" to 192,
|
|
||||||
"xxhdpi" to 144,
|
|
||||||
"xhdpi" to 96,
|
|
||||||
"hdpi" to 72,
|
|
||||||
"mdpi" to 48
|
|
||||||
).forEach { (iconDirectory, size) ->
|
|
||||||
AppiconNames.forEach iconLoop@{ iconName ->
|
|
||||||
Files.copy(
|
|
||||||
classLoader.getResourceAsStream("music/branding/revancify/launchericon/$size/$iconName.png")!!,
|
|
||||||
resDirectory.resolve("mipmap-$iconDirectory").resolve("$iconName.png").toPath(),
|
|
||||||
StandardCopyOption.REPLACE_EXISTING
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// MonoChrome Icon
|
|
||||||
arrayOf("drawable" to arrayOf("ic_app_icons_themed_youtube_music")).forEach { (path, resourceNames) ->
|
|
||||||
resourceNames.forEach { name ->
|
|
||||||
val relativePath = "$path/$name.xml"
|
|
||||||
|
|
||||||
Files.copy(
|
|
||||||
classLoader.getResourceAsStream("music/branding/revancify/monochromeicon/$relativePath")!!,
|
|
||||||
context["res"].resolve(relativePath).toPath(),
|
|
||||||
StandardCopyOption.REPLACE_EXISTING
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return PatchResultSuccess()
|
return PatchResultSuccess()
|
||||||
}
|
}
|
||||||
|
@ -11,45 +11,44 @@ internal object IconHelper {
|
|||||||
context: ResourceContext,
|
context: ResourceContext,
|
||||||
iconName: String
|
iconName: String
|
||||||
) {
|
) {
|
||||||
val classLoader = this.javaClass.classLoader
|
val launchIcon = arrayOf(
|
||||||
val resDirectory = context["res"]
|
|
||||||
|
|
||||||
val Appnames = arrayOf(
|
|
||||||
"adaptiveproduct_youtube_background_color_108",
|
"adaptiveproduct_youtube_background_color_108",
|
||||||
"adaptiveproduct_youtube_foreground_color_108",
|
"adaptiveproduct_youtube_foreground_color_108",
|
||||||
"ic_launcher",
|
"ic_launcher",
|
||||||
"ic_launcher_round"
|
"ic_launcher_round"
|
||||||
)
|
)
|
||||||
|
|
||||||
val Splashnames = arrayOf(
|
val splashIcon = arrayOf(
|
||||||
"product_logo_youtube_color_24",
|
"product_logo_youtube_color_24",
|
||||||
"product_logo_youtube_color_36",
|
"product_logo_youtube_color_36",
|
||||||
"product_logo_youtube_color_144",
|
"product_logo_youtube_color_144",
|
||||||
"product_logo_youtube_color_192"
|
"product_logo_youtube_color_192"
|
||||||
)
|
)
|
||||||
|
|
||||||
mapOf(
|
copyResources(
|
||||||
"xxxhdpi" to 192,
|
context,
|
||||||
"xxhdpi" to 144,
|
"youtube",
|
||||||
"xhdpi" to 96,
|
iconName,
|
||||||
"hdpi" to 72,
|
"launchericon",
|
||||||
"mdpi" to 48
|
"mipmap",
|
||||||
).forEach { (iconDirectory, size) ->
|
launchIcon
|
||||||
Appnames.forEach iconLoop@{ name ->
|
)
|
||||||
Files.copy(
|
|
||||||
classLoader.getResourceAsStream("youtube/branding/$iconName/launchericon/$size/$name.png")!!,
|
copyResources(
|
||||||
resDirectory.resolve("mipmap-$iconDirectory").resolve("$name.png").toPath(),
|
context,
|
||||||
StandardCopyOption.REPLACE_EXISTING
|
"youtube",
|
||||||
)
|
iconName,
|
||||||
}
|
"splashicon",
|
||||||
Splashnames.forEach iconLoop@{ name ->
|
"drawable",
|
||||||
Files.copy(
|
splashIcon
|
||||||
classLoader.getResourceAsStream("youtube/branding/$iconName/splashicon/$size/$name.png")!!,
|
)
|
||||||
resDirectory.resolve("drawable-$iconDirectory").resolve("$name.png").toPath(),
|
|
||||||
StandardCopyOption.REPLACE_EXISTING
|
monochromeIcon(
|
||||||
)
|
context,
|
||||||
}
|
"youtube",
|
||||||
}
|
"adaptive_monochrome_ic_youtube_launcher",
|
||||||
|
iconName
|
||||||
|
)
|
||||||
|
|
||||||
context.xmlEditor["res/values-v31/styles.xml"].use { editor ->
|
context.xmlEditor["res/values-v31/styles.xml"].use { editor ->
|
||||||
with(editor.file) {
|
with(editor.file) {
|
||||||
@ -64,19 +63,140 @@ internal object IconHelper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
fun customIconMusic(
|
||||||
arrayOf("drawable" to arrayOf("adaptive_monochrome_ic_youtube_launcher")).forEach { (path, resourceNames) ->
|
context: ResourceContext,
|
||||||
resourceNames.forEach { name ->
|
iconName: String
|
||||||
val relativePath = "$path/$name.xml"
|
) {
|
||||||
|
val launchIcon = arrayOf(
|
||||||
|
"adaptiveproduct_youtube_music_background_color_108",
|
||||||
|
"adaptiveproduct_youtube_music_foreground_color_108",
|
||||||
|
"ic_launcher_release"
|
||||||
|
)
|
||||||
|
|
||||||
Files.copy(
|
copyResources(
|
||||||
classLoader.getResourceAsStream("youtube/branding/$iconName/monochromeicon/$relativePath")!!,
|
context,
|
||||||
context["res"].resolve(relativePath).toPath(),
|
"music",
|
||||||
StandardCopyOption.REPLACE_EXISTING
|
iconName,
|
||||||
)
|
"launchericon",
|
||||||
}
|
"mipmap",
|
||||||
|
launchIcon
|
||||||
|
)
|
||||||
|
|
||||||
|
monochromeIcon(
|
||||||
|
context,
|
||||||
|
"music",
|
||||||
|
"ic_app_icons_themed_youtube_music",
|
||||||
|
iconName
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun customIconMusicAdditional(
|
||||||
|
context: ResourceContext,
|
||||||
|
iconName: String
|
||||||
|
) {
|
||||||
|
val record = arrayOf(
|
||||||
|
"hdpi",
|
||||||
|
"large-hdpi",
|
||||||
|
"large-mdpi",
|
||||||
|
"large-xhdpi",
|
||||||
|
"mdpi",
|
||||||
|
"xhdpi",
|
||||||
|
"xlarge-hdpi",
|
||||||
|
"xlarge-mdpi",
|
||||||
|
"xxhdpi"
|
||||||
|
)
|
||||||
|
|
||||||
|
val actionbarLogo = arrayOf(
|
||||||
|
"hdpi",
|
||||||
|
"mdpi",
|
||||||
|
"xhdpi",
|
||||||
|
"xxhdpi",
|
||||||
|
"xxxhdpi"
|
||||||
|
)
|
||||||
|
|
||||||
|
val actionbarLogoRelease = arrayOf(
|
||||||
|
"hdpi"
|
||||||
|
)
|
||||||
|
|
||||||
|
copyMusicResources(
|
||||||
|
context,
|
||||||
|
iconName,
|
||||||
|
record,
|
||||||
|
"record"
|
||||||
|
)
|
||||||
|
|
||||||
|
copyMusicResources(
|
||||||
|
context,
|
||||||
|
iconName,
|
||||||
|
actionbarLogo,
|
||||||
|
"action_bar_logo"
|
||||||
|
)
|
||||||
|
|
||||||
|
copyMusicResources(
|
||||||
|
context,
|
||||||
|
iconName,
|
||||||
|
actionbarLogoRelease,
|
||||||
|
"action_bar_logo_release"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun copyResources(
|
||||||
|
context: ResourceContext,
|
||||||
|
appName: String,
|
||||||
|
iconName: String,
|
||||||
|
iconPath: String,
|
||||||
|
directory: String,
|
||||||
|
iconArray: Array<String>
|
||||||
|
){
|
||||||
|
arrayOf(
|
||||||
|
"xxxhdpi",
|
||||||
|
"xxhdpi",
|
||||||
|
"xhdpi",
|
||||||
|
"hdpi",
|
||||||
|
"mdpi"
|
||||||
|
).forEach { size ->
|
||||||
|
iconArray.forEach iconLoop@{ name ->
|
||||||
|
Files.copy(
|
||||||
|
this.javaClass.classLoader.getResourceAsStream("$appName/branding/$iconName/$iconPath/$size/$name.png")!!,
|
||||||
|
context["res"].resolve("$directory-$size").resolve("$name.png").toPath(),
|
||||||
|
StandardCopyOption.REPLACE_EXISTING
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun monochromeIcon(
|
||||||
|
context: ResourceContext,
|
||||||
|
appName: String,
|
||||||
|
monochromeIconName: String,
|
||||||
|
iconName: String
|
||||||
|
){
|
||||||
|
try {
|
||||||
|
val relativePath = "drawable/$monochromeIconName.xml"
|
||||||
|
Files.copy(
|
||||||
|
this.javaClass.classLoader.getResourceAsStream("$appName/branding/$iconName/monochromeicon/$relativePath")!!,
|
||||||
|
context["res"].resolve(relativePath).toPath(),
|
||||||
|
StandardCopyOption.REPLACE_EXISTING
|
||||||
|
)
|
||||||
} catch (_: Exception) {}
|
} catch (_: Exception) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun copyMusicResources(
|
||||||
|
context: ResourceContext,
|
||||||
|
iconName: String,
|
||||||
|
iconArray: Array<String>,
|
||||||
|
resourceNames: String
|
||||||
|
){
|
||||||
|
iconArray.forEach { path ->
|
||||||
|
val relativePath = "drawable-$path/$resourceNames.png"
|
||||||
|
|
||||||
|
Files.copy(
|
||||||
|
this.javaClass.classLoader.getResourceAsStream("music/branding/$iconName/resource/$relativePath")!!,
|
||||||
|
context["res"].resolve(relativePath).toPath(),
|
||||||
|
StandardCopyOption.REPLACE_EXISTING
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
Before Width: | Height: | Size: 517 B After Width: | Height: | Size: 517 B |
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 335 B After Width: | Height: | Size: 335 B |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 687 B After Width: | Height: | Size: 687 B |
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 7.1 KiB |
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 539 B After Width: | Height: | Size: 539 B |
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 362 B After Width: | Height: | Size: 362 B |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 700 B After Width: | Height: | Size: 700 B |
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 8.3 KiB After Width: | Height: | Size: 8.3 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 6.1 KiB |
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 6.0 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 8.2 KiB |
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 7.8 KiB |
Before Width: | Height: | Size: 7.7 KiB After Width: | Height: | Size: 7.7 KiB |
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 9.9 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 8.8 KiB After Width: | Height: | Size: 8.8 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 7.0 KiB |
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 9.0 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 8.1 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |