enhance toaster, prepare for release

This commit is contained in:
Kieran W 2025-02-09 14:23:00 +00:00
parent 89a562302e
commit d1fc4c144e
22 changed files with 58 additions and 92 deletions

View File

@ -7,6 +7,16 @@ patch-level version changes can be found in [commit messages](../../commits/mast
## Next_Ver
-->
## 20250209
- Update dependency versions
- Add a shortcut to google keyboard (fixes #76)
- Add SVG image support
- Code quality improvements
- Use xLog (https://github.com/elvishew/xLog) to capture today's logs (to assist with debugging)
- Make PNG sticker fallback configurable and improve share sheet (fixes #80)
- Improve toast logging experience
## 20240825
- Add case insensitive sort

View File

@ -32,9 +32,9 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import java.io.File
import java.text.SimpleDateFormat
import java.util.Locale
import java.util.Calendar
import java.util.Date
import java.util.Locale
/** MainActivity class inherits from the AppCompatActivity class - provides the settings view */
class MainActivity : AppCompatActivity() {
@ -61,7 +61,6 @@ class MainActivity : AppCompatActivity() {
File(filesDir, "logs").path
).fileNameGenerator(DateFileNameGenerator()).build()
XLog.init(logConfig, androidPrinter, filePrinter)
XLog.i("=".repeat(80))
@ -111,7 +110,6 @@ class MainActivity : AppCompatActivity() {
}
/**
* Handles ACTION_OPEN_DOCUMENT_TREE result and adds stickerDirPath, lastUpdateDate to
* this.sharedPreferences and resets recentCache, compatCache
@ -142,22 +140,22 @@ class MainActivity : AppCompatActivity() {
private val saveFileLauncher =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode == RESULT_OK) {
result.data?.data?.also { uri ->
val dateFormatter = SimpleDateFormat("yyyy-MM-dd", Locale.US)
val currentDate = Date()
val logFileName = dateFormatter.format(currentDate)
val file = File(filesDir, "logs/$logFileName")
if (file.exists()) {
contentResolver.openOutputStream(uri)?.use { outputStream ->
file.inputStream().use { inputStream ->
inputStream.copyTo(outputStream)
if (result.resultCode == RESULT_OK) {
result.data?.data?.also { uri ->
val dateFormatter = SimpleDateFormat("yyyy-MM-dd", Locale.US)
val currentDate = Date()
val logFileName = dateFormatter.format(currentDate)
val file = File(filesDir, "logs/$logFileName")
if (file.exists()) {
contentResolver.openOutputStream(uri)?.use { outputStream ->
file.inputStream().use { inputStream ->
inputStream.copyTo(outputStream)
}
}
}
}
}
}
}
/**
* Called on button press to launch settings
@ -230,14 +228,12 @@ class MainActivity : AppCompatActivity() {
StickerImporter(baseContext, toaster, progressBar).importStickers(stickerDirPath)
withContext(Dispatchers.Main) {
toaster.toastOnState(
arrayOf(
getString(R.string.imported_020, totalStickers),
getString(R.string.imported_031, totalStickers),
getString(R.string.imported_032, totalStickers),
getString(R.string.imported_033, totalStickers),
),
)
if (toaster.messages.size > 0) {
toaster.toastOnMessages()
} else {
toaster.toast(getString(R.string.imported_020, totalStickers))
}
val editor = sharedPreferences.edit()
editor.putInt("numStickersImported", totalStickers)
editor.apply()

View File

@ -7,6 +7,7 @@ import android.os.Looper
import android.view.View
import androidx.documentfile.provider.DocumentFile
import com.elvishew.xlog.XLog
import com.fredhappyface.ewesticker.R
import com.google.android.material.progressindicator.LinearProgressIndicator
import kotlinx.coroutines.Dispatchers
@ -66,7 +67,7 @@ class StickerImporter(
val leafNodes = fileWalk(DocumentFile.fromTreeUri(context, Uri.parse(stickerDirPath)))
if (leafNodes.size > MAX_FILES) {
XLog.w("Found more than $MAX_FILES stickers, notify user")
toaster.setState(1)
toaster.setMessage(context.getString(R.string.imported_031, MAX_FILES))
}
withContext(Dispatchers.Main) {
@ -107,12 +108,19 @@ class StickerImporter(
val packSize = packSizes[parentDir] ?: 0
if (packSize > MAX_PACK_SIZE) {
XLog.w("Found more than $MAX_PACK_SIZE stickers in '$parentDir', notify user")
toaster.setState(2)
toaster.setMessage(context.getString(R.string.imported_032, MAX_PACK_SIZE, parentDir))
return
}
if (sticker.type !in supportedMimes) {
XLog.w("'$parentDir/${sticker.name}' is not a supported mimetype (${sticker.type}), notify user")
toaster.setState(3)
toaster.setMessage(
context.getString(
R.string.imported_033,
sticker.type,
parentDir,
sticker.name
)
)
return
}
packSizes[parentDir] = packSize + 1

View File

@ -2,6 +2,7 @@ package com.fredhappyface.ewesticker.utilities
import android.content.Context
import android.widget.Toast
import com.elvishew.xlog.XLog
/**
* The Toaster class provides a simplified interface to android.widget.Toast. Pass in the
@ -11,7 +12,7 @@ import android.widget.Toast
* @property context: android.content.Context. e.g. baseContext
*/
class Toaster(private val context: Context) {
private var state = 0
var messages: MutableList<String> = mutableListOf()
/**
* Call toaster.toast with some string to always create a toast notification. Context is set when
@ -33,31 +34,21 @@ class Toaster(private val context: Context) {
}
/**
* Call toaster.toastOnState with an array of messages to create a toast notification.
* Context is set when Toaster is instantiated. Duration is determined based on
* text length. The message is selected based on the state (which can be set in a callback
* function or elsewhere
*
* @param strings: Array<String>. Array of potential messages to output.
*/
fun toastOnState(strings: Array<String>) {
if (this.state < strings.size) {
this.toast(strings[this.state])
} else {
this.toast("toaster.state=${this.state} out of range strings.size=${strings.size}")
**/
fun toastOnMessages() {
XLog.i("Messages: [${this.messages.joinToString(", ")}]")
for (idx in this.messages.take(3).indices) {
this.toast(messages[idx])
}
this.messages = mutableListOf()
}
/**
* Set the state to some integer value
*
* @param state: Int
*/
fun setState(state: Int) {
if (state < 0) {
this.state = 0
} else {
this.state = state
}
* Set a message
**/
fun setMessage(message: String) {
XLog.i("Adding message: '$message' to toaster")
this.messages.add(message)
}
}

View File

@ -71,9 +71,6 @@
<string name="pref_000">تم تغيير التفضيلات. أعد تحميل لوحة المفاتيح لتطبيق الإعدادات</string>
<string name="imported_010">بدء عملية الاستيراد. قد يستغرق ذلك بعض الوقت!</string>
<string name="imported_020">تم استيراد %1$d ملصق. أعد تحميل لوحة المفاتيح لعرض الملصقات الجديدة</string>
<string name="imported_031">E031: فشل بعض الملصقات في الاستيراد (%1$d تم استيرادها). تم الوصول إلى الحد الأقصى للملصقات</string>
<string name="imported_032">E032: فشل بعض الملصقات في الاستيراد (%1$d تم استيرادها). تم الوصول إلى الحد الأقصى لحجم الحزمة</string>
<string name="imported_033">E033: فشل بعض الملصقات في الاستيراد (%1$d تم استيرادها). تم العثور على تنسيقات غير مدعومة</string>
<string name="imported_034">E034: فشلت عملية إعادة تحميل الملصقات، حاول اختيار مجلد مصدر الملصقات</string>
<string name="fallback_041">E041: حدث استثناء غير متوقع أثناء تحويل الملصق</string>
<!-- Keyboard -->

View File

@ -71,9 +71,6 @@ EweSticker কাস্টমাইজেশন বিকল্প, বিভি
<string name="pref_000">পছন্দস্থান পরিবর্তন হয়েছে। সেটিংস প্রয়োগ করার জন্য কীবোর্ড পুনরায় লোড করুন</string>
<string name="imported_010">আমদানি শুরু হয়েছে। এটি কিছু সময় নিতে পারে!</string>
<string name="imported_020">%1$d টি স্টিকার আমদানি করা হয়েছে। নতুন স্টিকার দেখানোর জন্য কীবোর্ড পুনরায় লোড করুন</string>
<string name="imported_031">E031: কিছু স্টিকার আমদানি করা হয়নি (%1$d টি আমদানি করা হয়েছে)। সর্বাধিক স্টিকার পৌঁছানো হয়েছে</string>
<string name="imported_032">E032: কিছু স্টিকার আমদানি করা হয়নি (%1$d টি আমদানি করা হয়েছে)। সর্বমোট প্যাক সাইজ পৌঁছানো হয়েছে</string>
<string name="imported_033">E033: কিছু স্টিকার আমদানি করা হয়নি (%1$d টি আমদানি করা হয়েছে)। সমর্থিত ফর্ম্যাট পাওয়া হয়নি</string>
<string name="imported_034">E034: স্টিকার পুনরায় লোড করা যায়নি, স্টিকার শোর্স ডিরেক্টরি চয়ন করার চেষ্টা করুন</string>
<string name="fallback_041">E041: অপ্রত্যাশিত IOException যখন স্টিকার রুপান্তর করা হয়</string>
<!-- Keyboard -->

View File

@ -71,9 +71,6 @@ EweSticker bietet eine breite Palette an Anpassungsoptionen, vielfältige Format
<string name="pref_000">Einstellungen geändert. Lade die Tastatur neu, damit die Einstellungen wirksam werden</string>
<string name="imported_010">Import wird gestartet. Dies könnte einige Zeit dauern!</string>
<string name="imported_020">%1$d Sticker importiert. Lade die Tastatur neu, um neue Sticker anzuzeigen</string>
<string name="imported_031">E031: Einige Sticker konnten nicht importiert werden (%1$d importiert). Max. Sticker erreicht</string>
<string name="imported_032">E032: Einige Sticker konnten nicht importiert werden (%1$d importiert). Max. Packungsgröße erreicht</string>
<string name="imported_033">E033: Einige Sticker konnten nicht importiert werden (%1$d importiert). Nicht unterstützte Formate gefunden</string>
<string name="imported_034">E034: Neuladen der Sticker fehlgeschlagen, versuche ein Sticker-Quellverzeichnis auszuwählen</string>
<string name="fallback_041">E041: Unerwarteter IOException beim Konvertieren des Stickers</string>
<!-- Keyboard -->

View File

@ -71,9 +71,6 @@ EweSticker ofrece una amplia variedad de opciones de personalización, soporte p
<string name="pref_000">Preferencias modificadas. Vuelva a cargar el teclado para que se apliquen los ajustes</string>
<string name="imported_010">Comenzando la importación. ¡Esto puede llevar algún tiempo!</string>
<string name="imported_020">Importado %1$d stickers. Recargar el teclado para que se muestren los nuevos stickers</string>
<string name="imported_031">E031: Algunos stickers han fallado al importar (%1$d importado). Máx. stickers importados</string>
<string name="imported_032">E032: No se han podido importar algunos stickers (%1$d importadas). Se ha alcanzado el tamaño máximo del paquete</string>
<string name="imported_033">E033: Ha fallado la importación de algunos stickers (%1$d importadas). Se han encontrado formatos no compatibles</string>
<string name="imported_034">E034: Falló la recarga de stickers, intente elegir un directorio de origen de los stickers</string>
<string name="fallback_041">E041: IOException inesperado al convertir el sticker</string>
<!-- Keyboard -->

View File

@ -9,7 +9,6 @@
<string name="update_sticker_pack_button">Choisissez le répertoire source dautocollants</string>
<string name="reload_sticker_pack_button">Recharger les autocollants</string>
<string name="update_sticker_pack_info_path_lbl">- Chemin:</string>
<string name="imported_033">E033: Certains autocollants nont pas été importés (%1$d importés). Formats non pris en charge trouvés</string>
<string name="imported_034">E034: Impossible de recharger les autocollants, essayez de choisir un répertoire source dautocollants</string>
<string name="fallback_041">E041: IOException inattendue lors de la conversion de lautocollant</string>
<string name="update_sticker_pack_info">Informations actuelles sur les autocollants chargés:</string>
@ -65,8 +64,6 @@ EweSticker offre une large gamme d'options de personnalisation, prend en charge
<string name="pref_000">Les préférences ont changé. Recharger le clavier pour les appliquer</string>
<string name="imported_010">Démarrage de limportation. Ceci va prendre du temps!</string>
<string name="imported_020">Autocollants importés %1$d. Recharger le clavier pour afficher les nouveaux autocollants</string>
<string name="imported_031">E031: Certains autocollants nont pas été importés (%1$d importés). Nombre maximal atteint</string>
<string name="imported_032">E032: Certains autocollants nont pas été importés (%1$d importés). Taille maximale du paquet atteint</string>
<!-- Keyboard -->
<string name="sticker_pack_info">%1$s (Pack : %2$s)</string>
<string name="options_insensitive_sort">Activer le tri des paquets sans tenir compte de la casse</string>

View File

@ -70,9 +70,6 @@ EweSticker विभिन्न संविदान विकल्पों,
<string name="pref_000">प्राथमिकताएँ बदल गईं। सेटिंग्स को लागू करने के लिए कीबोर्ड को पुनः लोड करें</string>
<string name="imported_010">आयात शुरू हुआ। इसमें कुछ समय लग सकता है!</string>
<string name="imported_020">%1$d स्टिकर्स का आयात हुआ। नए स्टिकर्स दिखाने के लिए कीबोर्ड को पुनः लोड करें</string>
<string name="imported_031">E031: कुछ स्टिकर्स का आयात असफल रहा (%1$d आयात किए गए)। मैक्सिमम स्टिकर्स तक पहुँच गई है</string>
<string name="imported_032">E032: कुछ स्टिकर्स का आयात असफल रहा (%1$d आयात किए गए)। मैक्स पैक आकार तक पहुँच गई है</string>
<string name="imported_033">E033: कुछ स्टिकर्स का आयात असफल रहा (%1$d आयात किए गए)। असमर्थित प्रारूप मिला</string>
<string name="imported_034">E034: स्टिकर्स को पुनः लोड करने में विफलता हुई, कृपया स्टिकर स्रोत निर्दिष्ट करने का प्रयास करें</string>
<string name="fallback_041">E041: स्टिकर कन्वर्ट करते समय अप्रत्याशित IOException</string>
<!-- Keyboard -->

View File

@ -72,9 +72,6 @@ EweSticker menghadirkan berbagai pilihan kustomisasi, dukungan format yang berag
<string name="pref_000">Preferensi berubah. Muat ulang keyboard agar pengaturan dapat diterapkan</string>
<string name="imported_010">Mulai impor. Ini mungkin membutuhkan waktu!</string>
<string name="imported_020">Mengimpor stiker %1$d. Muat ulang keyboard agar stiker baru dapat ditampilkan</string>
<string name="imported_031">E031: Beberapa stiker gagal diimpor (%1$d diimpor). Maksimal stiker tercapai</string>
<string name="imported_032">E032: Beberapa stiker gagal diimpor (%1$d diimpor). Ukuran paket maksimal tercapai</string>
<string name="imported_033">E033: Beberapa stiker gagal diimpor (%1$d diimpor). Format tidak didukung</string>
<string name="imported_034">E034: Gagal memuat ulang stiker, coba pilih direktori sumber stiker</string>
<string name="fallback_041">E041: IOException yang tidak diharapkan saat mengonversi stiker</string>
<!-- Keyboard -->

View File

@ -71,9 +71,6 @@ EweStickerは幅広いカスタマイズオプション、多様なフォーマ
<string name="pref_000">設定が変更されました。設定が適用されるようにキーボードを再読み込みしてください</string>
<string name="imported_010">インポートを開始しました。しばらく時間がかかることがあります!</string>
<string name="imported_020">%1$d ステッカーをインポートしました。新しいステッカーを表示するにはキーボードを再読み込みしてください</string>
<string name="imported_031">E031: 一部のステッカーのインポートに失敗しました(%1$d 個インポート済み)。最大ステッカー数に達しました</string>
<string name="imported_032">E032: 一部のステッカーのインポートに失敗しました(%1$d 個インポート済み)。最大パックサイズに達しました</string>
<string name="imported_033">E033: 一部のステッカーのインポートに失敗しました(%1$d 個インポート済み)。サポートされていないフォーマットが見つかりました</string>
<string name="imported_034">E034: ステッカーの再読み込みに失敗しました。ステッカーソースディレクトリを選択してみてください</string>
<string name="fallback_041">E041: ステッカーを変換する際に予期しないIOExceptionが発生しました</string>
<!-- Keyboard -->

View File

@ -71,9 +71,6 @@ EweSticker는 다양한 사용자 정의 옵션, 다양한 형식 지원 및 메
<string name="pref_000">설정이 변경되었습니다. 설정을 적용하려면 키보드를 다시 불러오세요</string>
<string name="imported_010">가져오기 시작. 시간이 걸릴 수 있습니다!</string>
<string name="imported_020">%1$d개의 스티커를 가져왔습니다. 새 스티커를 표시하려면 키보드를 다시 불러오세요</string>
<string name="imported_031">E031: 일부 스티커 가져오기 실패 (%1$d개 가져옴). 최대 스티커 개수에 도달함</string>
<string name="imported_032">E032: 일부 스티커 가져오기 실패 (%1$d개 가져옴). 최대 팩 크기에 도달함</string>
<string name="imported_033">E033: 일부 스티커 가져오기 실패 (%1$d개 가져옴). 지원하지 않는 형식을 발견함</string>
<string name="imported_034">E034: 스티커 다시 불러오기 실패. 스티커 소스 디렉터리를 선택해보세요</string>
<string name="fallback_041">E041: 스티커 변환 중 예기치 않은 IOException 발생</string>
<!-- Keyboard -->

View File

@ -70,9 +70,6 @@ Direitos autorais © Randy Zhou</string>
<string name="pref_000">Preferências alteradas. Recarregue o teclado para que as configurações se apliquem</string>
<string name="imported_010">Iniciando a importação. Isso pode levar algum tempo!</string>
<string name="imported_020">Importados %1$d adesivos. Recarregue o teclado para mostrar os novos adesivos</string>
<string name="imported_031">E031: Alguns adesivos não puderam ser importados (%1$d importados). Limite máximo de adesivos atingido</string>
<string name="imported_032">E032: Alguns adesivos não puderam ser importados (%1$d importados). Tamanho máximo do pacote atingido</string>
<string name="imported_033">E033: Alguns adesivos não puderam ser importados (%1$d importados). Formatos não suportados encontrados</string>
<string name="imported_034">E034: Falha ao recarregar adesivos, tente escolher um diretório de origem dos adesivos</string>
<string name="fallback_041">E041: IOException inesperada ao converter adesivo</string>
<!-- Keyboard -->

View File

@ -70,9 +70,6 @@ EweSticker предоставляет множество настроек, по
<string name="pref_000">Изменены настройки. Перезагрузите клавиатуру, чтобы настройки вступили в силу</string>
<string name="imported_010">Начало импорта. Это может занять некоторое время!</string>
<string name="imported_020">Импортировано %1$d стикеров. Перезагрузите клавиатуру, чтобы отобразить новые стикеры</string>
<string name="imported_031">E031: Не удалось импортировать некоторые стикеры (%1$d импортировано). Достигнут максимальный предел стикеров</string>
<string name="imported_032">E032: Не удалось импортировать некоторые стикеры (%1$d импортировано). Достигнут максимальный размер пакета</string>
<string name="imported_033">E033: Не удалось импортировать некоторые стикеры (%1$d импортировано). Обнаружены не поддерживаемые форматы</string>
<string name="imported_034">E034: Перезагрузка стикеров не удалась, попробуйте выбрать каталог источника стикеров</string>
<string name="fallback_041">E041: Неожиданная ошибка ввода-вывода при преобразовании стикера</string>
<!-- Keyboard -->

View File

@ -71,9 +71,6 @@ EweSticker صارفین کو کئی مختلف ترتیبات کی وسیع تع
<string name="pref_000">ترتیبات تبدیل ہوگئی ہیں. ترتیبات کو اطلاق کرنے کے لئے کی بورڈ دوبارہ لوڈ کریں</string>
<string name="imported_010">شروع کریں منتقلی. اس میں کچھ وقت لگ سکتا ہے!</string>
<string name="imported_020">%1$d اسٹکر منتقل کر لئے گئے ہیں. نئے اسٹکرز دکھانے کے لئے کی بورڈ دوبارہ لوڈ کریں</string>
<string name="imported_031">E031: کچھ اسٹکر منتقل کرنے میں ناکامی (%1$d منتقل کیے گئے). زیادہ سے زیادہ اسٹکرز پہنچ گئے</string>
<string name="imported_032">E032: کچھ اسٹکر منتقل کرنے میں ناکامی (%1$d منتقل کیے گئے). زیادہ سے زیادہ پیک سائز پہنچ گیا</string>
<string name="imported_033">E033: کچھ اسٹکر منتقل کرنے میں ناکامی (%1$d منتقل کیے گئے). غیر معاون فارمیٹس پائے گئے</string>
<string name="imported_034">E034: اسٹکرز دوبارہ لوڈ کرنے میں ناکامی. ایک اسٹکر سورس ڈائریکٹری منتخب کرنے کا کوشش کریں</string>
<string name="fallback_041">E041: اسٹکر کو تبدیل کرنے کے دوران غیر متوقع IOException کا اعلان</string>
<!-- Keyboard -->

View File

@ -71,9 +71,6 @@ EweSticker 提供了广泛的定制选项、多种格式支持以及与消息应
<string name="pref_000">首选项已更改。重新加载键盘以应用设置</string>
<string name="imported_010">开始导入。这可能需要一些时间!</string>
<string name="imported_020">已导入 %1$d 个贴纸。重新加载键盘以显示新贴纸</string>
<string name="imported_031">E031: 一些贴纸 未能导入(已导入 %1$d 个)。已达到最大贴纸数</string>
<string name="imported_032">E032: 一些贴纸未能导入(已导入 %1$d 个)。已达到最大包大小</string>
<string name="imported_033">E033: 一些贴纸未能导入(已导入 %1$d 个)。发现不受支持的格式</string>
<string name="imported_034">E034: 重新加载贴纸失败,请尝试选择贴纸源目录</string>
<string name="fallback_041">E041: 在转换贴纸时发生意外的 IOException</string>
<!-- Keyboard -->

View File

@ -71,9 +71,6 @@
<string name="pref_000">偏好設定已變更。重新載入鍵盤以套用設定</string>
<string name="imported_010">正在開始匯入。這可能需要一些時間!</string>
<string name="imported_020">已匯入 %1$d 個貼圖。重新載入鍵盤以顯示新貼圖</string>
<string name="imported_031">E031部分貼圖匯入失敗已匯入 %1$d 個)。已達到最大貼圖數</string>
<string name="imported_032">E032部分貼圖匯入失敗已匯入 %1$d 個)。已達到最大貼圖包大小</string>
<string name="imported_033">E033部分貼圖匯入失敗已匯入 %1$d 個)。發現不支援的格式</string>
<string name="imported_034">E034重新載入貼圖失敗請嘗試選擇貼圖來源目錄</string>
<string name="fallback_041">E041在轉換貼圖時發生意外的 IOException</string>
<!-- Keyboard -->

View File

@ -78,9 +78,9 @@ Copyright © Randy Zhou</string>
<string name="pref_000">Preferences changed. Reload the keyboard for settings to apply</string>
<string name="imported_010">Starting import. This might take some time!</string>
<string name="imported_020">Imported %1$d stickers. Reload the keyboard for new stickers to show</string>
<string name="imported_031">E031: Some stickers failed to import (%1$d imported). Max stickers reached</string>
<string name="imported_032">E032: Some stickers failed to import (%1$d imported). Max pack size reached</string>
<string name="imported_033">E033: Some stickers failed to import (%1$d imported). Unsupported formats found</string>
<string name="imported_031">E031: Found more than %1$d stickers in total</string>
<string name="imported_032">E032: Found more than %1$d stickers in pack (%2$s)</string>
<string name="imported_033">E033: Unsupported format found (%1$s, file: %2$s/%3$s)</string>
<string name="imported_034">E034: Reloading stickers failed, try choosing a sticker source directory</string>
<string name="fallback_041">E041: Unexpected IOException when converting sticker</string>
<!-- Keyboard -->

Binary file not shown.

View File

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 1024 1024" class="icon" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M352.7 103m-32 0a32 32 0 1 0 64 0 32 32 0 1 0-64 0Z" fill="#FFEB4D" /><path d="M807.7 951h-449V192L643.8 87l163.9 105z" fill="#F7D4FF" /><path d="M643.7 951h-285V192l285-105z" fill="#FFE0B6" /><path d="M523.7 951.5h-314v-531l199-74 115 74z" fill="#DAE5FF" /><path d="M408.4 951.5H209.7V420.4l199-73.9z" fill="#FFEB4D" /><path d="M951.7 686.6c-5 0-7.5-3-12.7-10.2-5.1-7.2-12-17-25.7-17s-20.7 9.8-25.7 17c-5.1 7.3-7.7 10.2-12.7 10.2-5 0-7.5-3-12.7-10.2-5.1-7.2-12-17-25.7-17-9.8 0-16.1 5-20.8 10.5v-24.3c3.4-3.1 5.9-6.8 8.2-9.9 5.1-7.3 7.7-10.2 12.7-10.2 5 0 7.5 3 12.7 10.2 5.1 7.2 12 17 25.7 17s20.7-9.8 25.7-17c5.1-7.3 7.7-10.2 12.7-10.2s7.5 3 12.7 10.2c5.1 7.2 12 17 25.7 17 4.4 0 8-3.6 8-8s-3.6-8-8-8c-5 0-7.5-3-12.7-10.2-5.1-7.2-12-17-25.7-17s-20.7 9.8-25.7 17c-5.1 7.3-7.7 10.2-12.7 10.2-5 0-7.5-3-12.7-10.2-5.1-7.2-12-17-25.7-17-9.8 0-16.1 5-20.8 10.5V192c0-2.7-1.4-5.3-3.7-6.7l-164-105.1c-1.3-0.8-2.8-1.3-4.3-1.3h-0.1c-0.9 0-1.9 0.2-2.8 0.5l-285 105.1c-3.1 1.2-5.2 4.2-5.2 7.5v167.5l-143.8 53.4c-3.1 1.2-5.2 4.2-5.2 7.5V943h-101c-4.4 0-8 3.6-8 8s3.6 8 8 8h106.2c0.9 0.3 1.8 0.5 2.8 0.5h314c1 0 1.9-0.2 2.8-0.5h398.2c4.4 0 8-3.6 8-8s-3.6-8-8-8h-109V695.5c3.4-3.1 5.9-6.8 8.1-9.9 5.1-7.3 7.7-10.2 12.7-10.2s7.5 3 12.7 10.2c5.1 7.2 12 17 25.7 17 13.8 0 20.7-9.8 25.7-17 5.1-7.3 7.7-10.2 12.7-10.2 5 0 7.5 3 12.7 10.2 5.1 7.2 12 17 25.7 17 4.4 0 8-3.6 8-8s-3.6-8-8-8z m-585-489l269-99.1V943h-104V420.5c0-2.7-1.4-5.3-3.7-6.7l-115-74c-0.1-0.1-0.2-0.1-0.4-0.2-0.1-0.1-0.2-0.1-0.3-0.2-0.2-0.1-0.3-0.2-0.5-0.2-0.1 0-0.2-0.1-0.3-0.1-0.2-0.1-0.4-0.1-0.5-0.2-0.1 0-0.2-0.1-0.4-0.1s-0.4-0.1-0.5-0.1c-0.1 0-0.3 0-0.4-0.1H407.9c-0.2 0-0.3 0.1-0.5 0.1-0.1 0-0.3 0-0.4 0.1-0.1 0-0.3 0.1-0.4 0.1-0.2 0-0.3 0.1-0.5 0.1l-39.2 14.6v-156z m49.9 163.6l99 63.7V943h-99.3l0.3-581.8z m-198.9 64.9l133-49.5 16-6 34-12.6-0.3 585H217.7V426.1zM799.6 943h-148V101.5l148 94.9V943zM111.1 282.6c13.8 0 20.7-9.8 25.7-17 5.1-7.3 7.7-10.2 12.7-10.2s7.5 3 12.7 10.2c5.1 7.2 12 17 25.7 17 13.8 0 20.7-9.8 25.7-17 5.1-7.3 7.7-10.2 12.7-10.2s7.5 3 12.7 10.2c5.1 7.2 12 17 25.7 17 4.4 0 8-3.6 8-8s-3.6-8-8-8c-5 0-7.5-3-12.7-10.2-5.1-7.2-12-17-25.7-17s-20.7 9.8-25.7 17c-5.1 7.3-7.7 10.2-12.7 10.2-5 0-7.5-3-12.7-10.2-5.1-7.2-12-17-25.7-17s-20.7 9.8-25.7 17c-5.1 7.3-7.7 10.2-12.7 10.2s-7.5-3-12.7-10.2c-5.1-7.2-12-17-25.7-17-4.4 0-8 3.6-8 8s3.6 8 8 8c5 0 7.5 3 12.7 10.2 5 7.2 11.9 17 25.7 17zM72.7 205.4c5 0 7.5 3 12.7 10.2 5.1 7.2 12 17 25.7 17s20.7-9.8 25.7-17c5.1-7.3 7.7-10.2 12.7-10.2s7.5 3 12.7 10.2c5.1 7.2 12 17 25.7 17 13.8 0 20.7-9.8 25.7-17 5.1-7.3 7.7-10.2 12.7-10.2s7.5 3 12.7 10.2c5.1 7.2 12 17 25.7 17 4.4 0 8-3.6 8-8s-3.6-8-8-8c-5 0-7.5-3-12.7-10.2-5.1-7.2-12-17-25.7-17s-20.7 9.8-25.7 17c-5.1 7.3-7.7 10.2-12.7 10.2-5 0-7.5-3-12.7-10.2-5.1-7.2-12-17-25.7-17s-20.7 9.8-25.7 17c-5.1 7.3-7.7 10.2-12.7 10.2s-7.5-3-12.7-10.2c-5.1-7.2-12-17-25.7-17-4.4 0-8 3.6-8 8s3.5 8 8 8zM352.7 143c22.1 0 40-17.9 40-40s-17.9-40-40-40-40 17.9-40 40 17.9 40 40 40z m0-64c13.2 0 24 10.8 24 24s-10.8 24-24 24-24-10.8-24-24 10.8-24 24-24z" fill="#9A2D2F" /><path d="M350.6 376.6l-133 49.5v139.3c20.6-29.8 27.8-74 30-88.4 5.5-35.5 35.5-26 79.5-49 31.1-16.2 43.5-39.7 46.4-59.9l-6.9 2.6-16 5.9zM366.7 353.6l12.8-4.7c11.3-18.6 15.9-43.6 59.7-58.8 48-16.7 15.5-65.8 33.5-98.5s65.3-9.8 105.3-45.8c13.7-12.3 19.9-24 22.1-34.1l-233.4 86v155.9z" fill="#FFFFFF" /></svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.