From eae3f0cb757e121460d069160be69a2e2c523578 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Thu, 2 Jul 2026 23:44:11 +0530 Subject: [PATCH 001/108] New translations strings.xml (Spanish) [ci skip] --- app/src/main/res/values-es-rES/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index d8b0c274e..d1b52f217 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -1473,7 +1473,7 @@ Cuando llegue un mensaje o alerta de una aplicación seleccionada, la Pantalla s Metro Superposición de números El tiempo - Seleccionar estilo del reloj + Seleccionar el estilo del reloj Actual Aplicar Estilo del reloj aplicado From b2dd19d669a482e658b65f51ebe1bff8882a8d03 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Fri, 3 Jul 2026 11:24:15 +0530 Subject: [PATCH 002/108] New translations strings.xml (Italian) [ci skip] --- app/src/main/res/values-it-rIT/strings.xml | 62 +++++++++++----------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/app/src/main/res/values-it-rIT/strings.xml b/app/src/main/res/values-it-rIT/strings.xml index 8f7a55211..c8e0d2cfe 100644 --- a/app/src/main/res/values-it-rIT/strings.xml +++ b/app/src/main/res/values-it-rIT/strings.xml @@ -12,8 +12,8 @@ Disattiva le app utilizzate raramente App congelate Apri congelamento app - Action - Launch action shortcut + Azione + Avvia scorciatoia azione App congelata Widget Spegni-scherno Congelamento app @@ -182,7 +182,7 @@ Solo con lo schermo rivolto verso il basso Stesse app di illuminazione di notifica Luminosità massima - Do not trigger on DND + Non attivare in modalità Non disturbare Prova l\'effetto Stile Regolazione del bagliore @@ -425,17 +425,17 @@ Pianifica un\'azione da attivare in base a un rilevamento Automazione da stato Pianifica un\'azione da eseguire in base all\'attivazione o disattivazione di una condizione - Action Shortcut - Launch shortcut to trigger action - Pixel searchbar - Tap action for Pixel searchbar replacement + Scorciatoia azione + Avvia la scorciatoia per eseguire l\'azione + Barra di ricerca Pixel + Azione al tocco per la barra di ricerca sostitutiva Nuova automazione Modifica automazione Azioni per i link Gestisci i link con più applicazioni - Flashlight - Improve flashlight behavior - Restore mode + Torcia + Migliora il comportamento della torcia + Modalità di ripristino Posticipa le notifiche di sistema Posticipa le notifiche persistenti Riquadri Impostazioni rapide @@ -629,8 +629,8 @@ Abilita nelle impostazioni Come concedere Concesso - Grant using Shizuku - This permission can be granted either via a PC using ADB. Copy the ADB command and run on the shell.\n\nOr you can easily grant it using Shizuku from the below button.\n\nThis permission only needs to be granted once. + Concedi tramite Shizuku + Questo permesso può essere concesso tramite PC utilizzando ADB. Copia il comando ADB ed eseguilo nella shell.\n\nIn alternativa, puoi concederlo facilmente tramite Shizuku usando il pulsante qui sotto.\n\nQuesto permesso deve essere concesso una sola volta. Ottimizzazione della batteria Evita la chiusura del servizio da parte del sistema per risparmio energetico. @@ -825,16 +825,16 @@ Attiva risparmio energetico Disattiva risparmio energetico Attenua sfondo - Screen Off - Media Play/Pause - Media Next - Media Previous - AI Assistant - Take Screenshot - Toggle Media Volume - Like Current Song - Circle to Search - Pin Foreground App + Schermo spento + Riproduci/pausa media + Media successivo + Media precedente + Assistente AI + Acquisisci screenshot + Attiva/disattiva volume dei media + Mi piace al brano attuale + Cerchia e cerca + Fissa app in primo piano Questa azione richiede che Shizuku o Root regolino l\'attenuazione dello sfondo di sistema. Seleziona attivazione App @@ -1273,15 +1273,15 @@ Installa sull\'orologio Per utilizzare le funzionalità dell\'orologio, devi installare l\'app complementare Essentials sul tuo orologio Wear OS. Tocca il pulsante qui sotto per aprire il Play Store direttamente sul tuo orologio. Apri sull\'orologio - Customize - Customize WearOS app controls - Long press to enable or disable buttons - Reorder watch controls - Wireless Debugging - Enable remotely - Sync sound mode - Automatically sync with watch - Watch Secure Settings + Personalizza + Personalizza i controlli dell\'app WearOS + Premi a lungo per abilitare o disabilitare i pulsanti + Riordina i controlli dell\'orologio + Debug wireless + Attiva da remoto + Sincronizza modalità audio + Sincronizza automaticamente con l\'orologio + Impostazioni sicurezza orologio Requires secure settings write permission on your Watch. Grant it using the ADB command below. Interazione Interfaccia From f36646feceb87ceb306fe13cf16d18df6a6bbd55 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:12 +0530 Subject: [PATCH 003/108] New translations strings.xml (Arabic) [ci skip] --- app/src/main/res/values-ar-rSA/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-ar-rSA/strings.xml b/app/src/main/res/values-ar-rSA/strings.xml index ee2f3938c..c5cc2e86c 100644 --- a/app/src/main/res/values-ar-rSA/strings.xml +++ b/app/src/main/res/values-ar-rSA/strings.xml @@ -459,6 +459,12 @@ تعطيل التطبيقات النادرة الاستخدام العلامة المائية إضافة بيانات وشعارات EXIF ​​إلى الصور + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper دائما على الشاشة عرض الوقت والمعلومات أثناء إيقاف تشغيل الشاشة مزامنة التقويم From e2f571084086df92ba6fa1e42fbe4191b76201f5 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:14 +0530 Subject: [PATCH 004/108] New translations strings.xml (Italian) [ci skip] --- app/src/main/res/values-it-rIT/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-it-rIT/strings.xml b/app/src/main/res/values-it-rIT/strings.xml index c8e0d2cfe..cad8b712d 100644 --- a/app/src/main/res/values-it-rIT/strings.xml +++ b/app/src/main/res/values-it-rIT/strings.xml @@ -459,6 +459,12 @@ Disattiva le app utilizzate raramente Filigrana Aggiungi dati EXIF ​​e loghi alle foto + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper Display sempre attivo Mostra ora e informazioni mentre lo schermo è spento Sincronizzazione del calendario From 51a1acee352e049553f044ce04ccf1add210cffa Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:15 +0530 Subject: [PATCH 005/108] New translations strings.xml (Polish) [ci skip] --- app/src/main/res/values-pl-rPL/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-pl-rPL/strings.xml b/app/src/main/res/values-pl-rPL/strings.xml index 455a23896..bd338709b 100644 --- a/app/src/main/res/values-pl-rPL/strings.xml +++ b/app/src/main/res/values-pl-rPL/strings.xml @@ -459,6 +459,12 @@ Wyłącz rzadko używane aplikacje Filigran Dodaj dane EXIF ​​i logo do zdjęć + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper Zawsze na wyświetlaczu Pokazuj godzinę i informacje, gdy ekran jest wyłączony Synchronizacja kalendarza From cd8b9f3b9d26f3010b580c9d7d3bc084a6527ee7 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:17 +0530 Subject: [PATCH 006/108] New translations strings.xml (French) [ci skip] --- app/src/main/res/values-fr-rFR/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr-rFR/strings.xml index 9973a82e1..0d3de1879 100644 --- a/app/src/main/res/values-fr-rFR/strings.xml +++ b/app/src/main/res/values-fr-rFR/strings.xml @@ -459,6 +459,12 @@ Désactiver les applications rarement utilisées Filigrane Ajoutez des données EXIF et des logos aux photos + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper Mode Always-on Afficher l\'heure et des infos quand l\'écran est éteint Synchronisation des calendriers From 2d3541be4af0cb00f2e9caf05acb60f120765c27 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:18 +0530 Subject: [PATCH 007/108] New translations strings.xml (Spanish) [ci skip] --- app/src/main/res/values-es-rES/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index d1b52f217..8ee3c02ac 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -460,6 +460,12 @@ Sin embargo, sí te permite reanudarla desde la lista de aplicaciones del lanzad Desactivar aplicaciones de uso poco frecuente Marca de agua Añadir datos EXIF ​​y logotipos a las fotos + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper Pantalla siempre activa Mostrar hora e información con la pantalla apagada Sincronización del calendario From b221b1b7d0dcb292024199ff93f00b8526c631df Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:20 +0530 Subject: [PATCH 008/108] New translations strings.xml (Turkish) [ci skip] --- app/src/main/res/values-tr-rTR/strings.xml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-tr-rTR/strings.xml b/app/src/main/res/values-tr-rTR/strings.xml index b3421e55f..020f29911 100644 --- a/app/src/main/res/values-tr-rTR/strings.xml +++ b/app/src/main/res/values-tr-rTR/strings.xml @@ -459,6 +459,12 @@ Nadiren kullanılan uygulamaları devre dışı bırakın Filigran Fotoğraflara EXIF ​​verileri ve logolar ekleme + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper Her Zaman Açık Ekran Ekran kapalıyken saati ve bilgileri göster Takvim Senkronizasyonu @@ -1451,8 +1457,8 @@ %s için kısayol oluşturuldu Döndürme önerisini devre dışı bırak Otomatik döndürme kapalıyken döndürme düğmesini göstermeyin - Pixel searchbar - Set Essentials as the default search provider for the home screen search bar in Pixel Launcher. + Arama çubuğunu değiştir + Pixel Launcher\'ın varsayılan arama çubuğunu değiştirin. Uygulama susturuldu Susturma özellikleri geri döndü Otomatik Dondurma @@ -1508,7 +1514,7 @@ Essentials özelliklerini kontrol et Essentials özelliklerini ve ayarlarını okuyun, güncelleyin ve kontrol edin Pixel Arama Çubuğu Özelleştirme - Empty (Default) + Boş Tarih Background pill Show the date inside a container From dbae89bc9a73d72f512114aa492e6f938b95db7e Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:21 +0530 Subject: [PATCH 009/108] New translations strings.xml (Indonesian) [ci skip] --- app/src/main/res/values-in-rID/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-in-rID/strings.xml b/app/src/main/res/values-in-rID/strings.xml index 877b5e290..c874ed0bc 100644 --- a/app/src/main/res/values-in-rID/strings.xml +++ b/app/src/main/res/values-in-rID/strings.xml @@ -459,6 +459,12 @@ Disable rarely used apps Tanda air Tambahkan data EXIF dan logo di foto + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper Always on Display Show time and info while screen off Sinkronisasi kalender From 20ccfb8f5f41a32ef981570177cc91e56f8587a4 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:23 +0530 Subject: [PATCH 010/108] New translations strings.xml (Romanian) [ci skip] --- app/src/main/res/values-ro-rRO/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-ro-rRO/strings.xml b/app/src/main/res/values-ro-rRO/strings.xml index 0cda80ff7..1448e38dc 100644 --- a/app/src/main/res/values-ro-rRO/strings.xml +++ b/app/src/main/res/values-ro-rRO/strings.xml @@ -459,6 +459,12 @@ Dezactivați aplicațiile utilizate rar Filigran Adăugați date EXIF ​​și sigle la fotografii + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper Întotdeauna pe ecran Afișați ora și informațiile cu ecranul oprit Sincronizare calendar From 33301651ec8207c5fd8118c80f39ff2d57a59a95 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:24 +0530 Subject: [PATCH 011/108] New translations strings.xml (Afrikaans) [ci skip] --- app/src/main/res/values-af-rZA/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-af-rZA/strings.xml b/app/src/main/res/values-af-rZA/strings.xml index f6aedda5e..01cfdb3dc 100644 --- a/app/src/main/res/values-af-rZA/strings.xml +++ b/app/src/main/res/values-af-rZA/strings.xml @@ -459,6 +459,12 @@ Deaktiveer toepassings wat selde gebruik word Watermerk Voeg EXIF-data en logo\'s by foto\'s + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper Altyd op Vertoon Wys tyd en inligting terwyl skerm af is Kalendersinkronisering From 11924678d61fd9c9e319833bbcfacf4c2380f253 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:26 +0530 Subject: [PATCH 012/108] New translations strings.xml (Catalan) [ci skip] --- app/src/main/res/values-ca-rES/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-ca-rES/strings.xml b/app/src/main/res/values-ca-rES/strings.xml index 36ec3199e..261eda5fe 100644 --- a/app/src/main/res/values-ca-rES/strings.xml +++ b/app/src/main/res/values-ca-rES/strings.xml @@ -459,6 +459,12 @@ Desactiva les aplicacions que s\'utilitzen poques vegades Filigrana Afegeix dades EXIF ​​i logotips a les fotos + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper Sempre a la pantalla Mostra l\'hora i la informació amb la pantalla apagada Sincronització del calendari From 548ec728d7fe6e89b32444960cad33774b691e30 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:27 +0530 Subject: [PATCH 013/108] New translations strings.xml (Czech) [ci skip] --- app/src/main/res/values-cs-rCZ/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-cs-rCZ/strings.xml b/app/src/main/res/values-cs-rCZ/strings.xml index a940d81da..73356ef4e 100644 --- a/app/src/main/res/values-cs-rCZ/strings.xml +++ b/app/src/main/res/values-cs-rCZ/strings.xml @@ -459,6 +459,12 @@ Zakázat zřídka používané aplikace Vodoznak Přidejte k fotografiím data a loga EXIF + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper Vždy na displeji Zobrazovat čas a informace při vypnuté obrazovce Synchronizace kalendáře From d21986281f56844d2714687d1760251800abea5e Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:28 +0530 Subject: [PATCH 014/108] New translations strings.xml (Danish) [ci skip] --- app/src/main/res/values-da-rDK/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-da-rDK/strings.xml b/app/src/main/res/values-da-rDK/strings.xml index c18f12fff..f74b75703 100644 --- a/app/src/main/res/values-da-rDK/strings.xml +++ b/app/src/main/res/values-da-rDK/strings.xml @@ -459,6 +459,12 @@ Deaktiver sjældent brugte apps Vandmærke Tilføj EXIF-data og logoer til fotos + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper Altid på display Vis tid og info, mens skærmen er slukket Kalendersynkronisering From 6801e5fe14de85e745bb5583d13e366eee53636b Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:30 +0530 Subject: [PATCH 015/108] New translations strings.xml (German) [ci skip] --- app/src/main/res/values-de-rDE/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index 45f03be96..16b43632b 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -459,6 +459,12 @@ Selten verwendete Apps deaktivieren Wasserzeichen Fotos mit EXIF-Daten und Logos versehen + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper Always-on-Display Zeige Uhrzeit und Infos, während der Bildschirm ausgeschaltet ist Kalender-Synchronisierung From 94d1e1333acadd502b7a15fbbe08e1042fd9e604 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:31 +0530 Subject: [PATCH 016/108] New translations strings.xml (Greek) [ci skip] --- app/src/main/res/values-el-rGR/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-el-rGR/strings.xml b/app/src/main/res/values-el-rGR/strings.xml index dbc5195b2..1a9b28df0 100644 --- a/app/src/main/res/values-el-rGR/strings.xml +++ b/app/src/main/res/values-el-rGR/strings.xml @@ -459,6 +459,12 @@ Απενεργοποιήστε τις εφαρμογές που χρησιμοποιούνται σπάνια Αφανής σφραγίδα χάρτου Προσθέστε δεδομένα και λογότυπα EXIF ​​στις φωτογραφίες + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper Πάντα στην οθόνη Εμφάνιση ώρας και πληροφοριών ενώ η οθόνη είναι απενεργοποιημένη Συγχρονισμός Ημερολογίου From 281c0eed2bf5647909b6cd33f33b673ba0b6ec77 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:33 +0530 Subject: [PATCH 017/108] New translations strings.xml (Finnish) [ci skip] --- app/src/main/res/values-fi-rFI/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-fi-rFI/strings.xml b/app/src/main/res/values-fi-rFI/strings.xml index 9a0f3c70f..2bc50991a 100644 --- a/app/src/main/res/values-fi-rFI/strings.xml +++ b/app/src/main/res/values-fi-rFI/strings.xml @@ -459,6 +459,12 @@ Poista harvoin käytetyt sovellukset käytöstä Vesileima Lisää EXIF-tietoja ja logoja valokuviin + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper Aina näytössä Näytä aika ja tiedot näytön ollessa pois päältä Kalenterin synkronointi From 70fe4fdf8fe3f1008cc98d43a6c1f3eb5bdafb26 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:34 +0530 Subject: [PATCH 018/108] New translations strings.xml (Hebrew) [ci skip] --- app/src/main/res/values-iw-rIL/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-iw-rIL/strings.xml b/app/src/main/res/values-iw-rIL/strings.xml index d8346a4c8..7aff0fc71 100644 --- a/app/src/main/res/values-iw-rIL/strings.xml +++ b/app/src/main/res/values-iw-rIL/strings.xml @@ -459,6 +459,12 @@ Disable rarely used apps Watermark Add EXIF data and logos to photos + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper Always on Display Show time and info while screen off Calendar Sync From 83662f632472beadea6de30cdc857fc4e5421096 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:36 +0530 Subject: [PATCH 019/108] New translations strings.xml (Hungarian) [ci skip] --- app/src/main/res/values-hu-rHU/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-hu-rHU/strings.xml b/app/src/main/res/values-hu-rHU/strings.xml index 8e355a9c4..aa7191a6d 100644 --- a/app/src/main/res/values-hu-rHU/strings.xml +++ b/app/src/main/res/values-hu-rHU/strings.xml @@ -459,6 +459,12 @@ Tiltsa le a ritkán használt alkalmazásokat Vízjel Adjon hozzá EXIF-adatokat és logókat a fényképekhez + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper Mindig a kijelzőn Idő és információ megjelenítése kikapcsolt képernyő mellett Naptár szinkronizálás From 952814d05b274c6178cf4198da3a2b28ee104f37 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:37 +0530 Subject: [PATCH 020/108] New translations strings.xml (Japanese) [ci skip] --- app/src/main/res/values-ja-rJP/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index eb0d6a9a4..22387c65d 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -459,6 +459,12 @@ あまり使わないアプリを無効にする ウォーターマーク 写真にEXIFデータとロゴを追加する + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper 常時表示ディスプレイ 画面オフ時に時刻と情報を表示 カレンダー同期 From f95345627342c5cadb9ae3e002f0a969ad710728 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:39 +0530 Subject: [PATCH 021/108] New translations strings.xml (Korean) [ci skip] --- app/src/main/res/values-ko-rKR/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index 6ed966bf7..44f436a8f 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -459,6 +459,12 @@ 거의 사용하지 않는 앱 비활성화 양수표 사진에 EXIF ​​데이터 및 로고 추가 + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper 항상 표시됨 화면이 꺼진 동안 시간 및 정보 표시 캘린더 동기화 From b2fffb73f531bce377cbd30aa522a4bd8241fd2e Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:40 +0530 Subject: [PATCH 022/108] New translations strings.xml (Dutch) [ci skip] --- app/src/main/res/values-nl-rNL/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-nl-rNL/strings.xml b/app/src/main/res/values-nl-rNL/strings.xml index dd2f53ef2..a6a365278 100644 --- a/app/src/main/res/values-nl-rNL/strings.xml +++ b/app/src/main/res/values-nl-rNL/strings.xml @@ -459,6 +459,12 @@ Schakel weinig gebruikte apps uit Watermerk EXIF-data en logo\'s toevoegen aan foto\'s + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper Always-On Display Laat tijd en informatie zien wanneer het scherm uit is Kalenders synchroniseren From 53b801377d1d8b339bfac7ad5be98a7b79394b81 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:42 +0530 Subject: [PATCH 023/108] New translations strings.xml (Norwegian) [ci skip] --- app/src/main/res/values-no-rNO/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-no-rNO/strings.xml b/app/src/main/res/values-no-rNO/strings.xml index 9f1a55684..dfdaac8c6 100644 --- a/app/src/main/res/values-no-rNO/strings.xml +++ b/app/src/main/res/values-no-rNO/strings.xml @@ -459,6 +459,12 @@ Deaktiver apper som sjelden brukes Vannmerke Legg til EXIF-data og logoer til bilder + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper Alltid på skjermen Vis tid og informasjon mens skjermen er av Kalendersynkronisering From 207c78a5dadd15025627a123d7d6eadf9a300d21 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:43 +0530 Subject: [PATCH 024/108] New translations strings.xml (Portuguese) [ci skip] --- app/src/main/res/values-pt-rPT/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 33fda2dcf..00ecb5434 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -459,6 +459,12 @@ Disable rarely used apps Watermark Add EXIF data and logos to photos + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper Always on Display Show time and info while screen off Calendar Sync From 6992cd8457dcef3ae331c0b12108d41f027294ab Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:44 +0530 Subject: [PATCH 025/108] New translations strings.xml (Russian) [ci skip] --- app/src/main/res/values-ru-rRU/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml index 7d6101382..5529e38a7 100644 --- a/app/src/main/res/values-ru-rRU/strings.xml +++ b/app/src/main/res/values-ru-rRU/strings.xml @@ -459,6 +459,12 @@ Отключите редко используемые приложения Водяной знак Добавить EXIF данные ​​и логотипы к фотографиям + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper Всегда на дисплее Показывать время и информацию при выключенном экране Синхронизация календаря From 3f07bce378a6a5d872610f2ba274ec1f26bbf794 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:46 +0530 Subject: [PATCH 026/108] New translations strings.xml (Serbian (Cyrillic)) [ci skip] --- app/src/main/res/values-sr-rSP/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-sr-rSP/strings.xml b/app/src/main/res/values-sr-rSP/strings.xml index 8913dde4e..c59551798 100644 --- a/app/src/main/res/values-sr-rSP/strings.xml +++ b/app/src/main/res/values-sr-rSP/strings.xml @@ -459,6 +459,12 @@ Онемогућите апликације које се ретко користе Ватермарк Додајте ЕКСИФ податке и логотипе фотографијама + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper Увек на екрану Прикажи време и информације док је екран искључен Цалендар Синц From eae87d6bf35a64c5dd5b0f6d76f15dd57b7c9869 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:47 +0530 Subject: [PATCH 027/108] New translations strings.xml (Swedish) [ci skip] --- app/src/main/res/values-sv-rSE/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-sv-rSE/strings.xml b/app/src/main/res/values-sv-rSE/strings.xml index 2038f3316..715fbc81f 100644 --- a/app/src/main/res/values-sv-rSE/strings.xml +++ b/app/src/main/res/values-sv-rSE/strings.xml @@ -459,6 +459,12 @@ Inaktivera appar som används sällan Vattenstämpel Lägg till EXIF-data och logotyper till foton + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper Alltid på display Visa tid och information när skärmen är avstängd Kalendersynkronisering From e87aaa544f8b83b9070ece9bdf0ca18d6e674894 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:48 +0530 Subject: [PATCH 028/108] New translations strings.xml (Ukrainian) [ci skip] --- app/src/main/res/values-uk-rUA/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-uk-rUA/strings.xml b/app/src/main/res/values-uk-rUA/strings.xml index bb72bced8..dbd7e7a75 100644 --- a/app/src/main/res/values-uk-rUA/strings.xml +++ b/app/src/main/res/values-uk-rUA/strings.xml @@ -459,6 +459,12 @@ Вимкніть рідко використовувані програми Водяний знак Додайте дані EXIF ​​і логотипи до фотографій + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper Завжди на дисплеї Показувати час і інформацію, коли екран вимкнено Синхронізація календаря From 12ebe3e574e692e78d06d45405e3863bdc63ce63 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:50 +0530 Subject: [PATCH 029/108] New translations strings.xml (Chinese Simplified) [ci skip] --- app/src/main/res/values-zh-rCN/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index cd021fe38..f596ce50a 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -459,6 +459,12 @@ 停用不常用应用程序 水印 向照片添加EXIF数据和logo + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper 屏幕常亮 屏幕关闭时显示时间和信息 日历同步 From fc7053b64aa6ca629b7ac0b135c916db0be26e34 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:51 +0530 Subject: [PATCH 030/108] New translations strings.xml (Chinese Traditional) [ci skip] --- app/src/main/res/values-zh-rTW/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index b72c2d390..ff2c55972 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -459,6 +459,12 @@ 禁用不常用的应用 水印 向照片添加 EXIF 数据和徽标 + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper 螢幕長亮模式 螢幕關閉時仍顯示時間與資訊 日历同步 From 1e19732f5030c65767bdb7130df50b2ba0323f44 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:53 +0530 Subject: [PATCH 031/108] New translations strings.xml (English) [ci skip] --- app/src/main/res/values-en-rUS/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-en-rUS/strings.xml b/app/src/main/res/values-en-rUS/strings.xml index bbd6ce0f2..d1371d2b5 100644 --- a/app/src/main/res/values-en-rUS/strings.xml +++ b/app/src/main/res/values-en-rUS/strings.xml @@ -459,6 +459,12 @@ Disable rarely used apps Watermark Add EXIF data and logos to photos + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper Always on Display Show time and info while screen off Calendar Sync From a52596c431bda7b1d78c3343353b2d9f1c5c39ef Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:54 +0530 Subject: [PATCH 032/108] New translations strings.xml (Vietnamese) [ci skip] --- app/src/main/res/values-vi-rVN/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-vi-rVN/strings.xml b/app/src/main/res/values-vi-rVN/strings.xml index da340309b..dd0a1489e 100644 --- a/app/src/main/res/values-vi-rVN/strings.xml +++ b/app/src/main/res/values-vi-rVN/strings.xml @@ -459,6 +459,12 @@ Vô hiệu hóa các ứng dụng ít sử dụng Hình mờ Thêm dữ liệu EXIF ​​​​và logo vào ảnh + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper Luôn hiển thị Hiển thị thời gian và thông tin khi màn hình tắt Đồng bộ hóa lịch From f0d767ddce3dcffbacabb8d2c15bde553c5d842f Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:55 +0530 Subject: [PATCH 033/108] New translations strings.xml (Portuguese, Brazilian) [ci skip] --- app/src/main/res/values-pt-rBR/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 129af7097..c3d789a8e 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -459,6 +459,12 @@ Desative aplicativos raramente usados Marca d\'água Adicione dados EXIF ​​e logotipos às fotos + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper Sempre em exibição Mostrar hora e informações enquanto a tela está desligada Sincronização de calendário From 88983475fa5caf9636fa779283ff2024abcc94d9 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:57 +0530 Subject: [PATCH 034/108] New translations strings.xml (Sinhala) [ci skip] --- app/src/main/res/values-si-rLK/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-si-rLK/strings.xml b/app/src/main/res/values-si-rLK/strings.xml index 159526263..9a07581b8 100644 --- a/app/src/main/res/values-si-rLK/strings.xml +++ b/app/src/main/res/values-si-rLK/strings.xml @@ -459,6 +459,12 @@ කලාතුරකින් භාවිතා කරන යෙදුම් අක්රිය කරන්න දිය සලකුණ ඡායාරූප වලට EXIF ​​දත්ත සහ ලාංඡන එක් කරන්න + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper සැමවිටම ප්‍රදර්ශනයේ තිරය ​​ක්‍රියාවිරහිත වන අතරතුර කාලය සහ තොරතුරු පෙන්වන්න දින දර්ශන සමමුහුර්තකරණය From 3a2148397bb28770521f53726acfef689865ad56 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 08:42:58 +0530 Subject: [PATCH 035/108] New translations strings.xml (Acholi) [ci skip] --- app/src/main/res/values-ach-rUG/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-ach-rUG/strings.xml b/app/src/main/res/values-ach-rUG/strings.xml index 6680db550..c501e6d90 100644 --- a/app/src/main/res/values-ach-rUG/strings.xml +++ b/app/src/main/res/values-ach-rUG/strings.xml @@ -459,6 +459,12 @@ Gengo jami ma pe kitiyo kwede kare ki kare Lanyut me pii Med ngec me EXIF ​​ki lanyut i kom cal + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper kare weny ki nyutu Nyut cawa ki ngec nongo tye ka tic Calendar Sync From 11834b9aec162fb743eef1ab4805b5655a2585c9 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:16:35 +0530 Subject: [PATCH 036/108] Update source file strings.xml [ci skip] --- app/src/main/res/values/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8caf42e3c..2a8e9d33b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -477,6 +477,12 @@ Disable rarely used apps Watermark Add EXIF data and logos to photos + Wallpaper + Daily curated handpicked wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper Always on Display Show time and info while screen off Calendar Sync From 11403ac7760de30c8b95be27958f947476717bfd Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:16:50 +0530 Subject: [PATCH 037/108] New translations strings.xml (Arabic) [ci skip] --- app/src/main/res/values-ar-rSA/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-ar-rSA/strings.xml b/app/src/main/res/values-ar-rSA/strings.xml index c5cc2e86c..61eade5e2 100644 --- a/app/src/main/res/values-ar-rSA/strings.xml +++ b/app/src/main/res/values-ar-rSA/strings.xml @@ -460,11 +460,15 @@ العلامة المائية إضافة بيانات وشعارات EXIF ​​إلى الصور Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos دائما على الشاشة عرض الوقت والمعلومات أثناء إيقاف تشغيل الشاشة مزامنة التقويم From cf0fcb88a5f7c5c67022f687d7c317c4351cd5e8 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:16:51 +0530 Subject: [PATCH 038/108] New translations strings.xml (Italian) [ci skip] --- app/src/main/res/values-it-rIT/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-it-rIT/strings.xml b/app/src/main/res/values-it-rIT/strings.xml index cad8b712d..1919e684c 100644 --- a/app/src/main/res/values-it-rIT/strings.xml +++ b/app/src/main/res/values-it-rIT/strings.xml @@ -460,11 +460,15 @@ Filigrana Aggiungi dati EXIF ​​e loghi alle foto Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Display sempre attivo Mostra ora e informazioni mentre lo schermo è spento Sincronizzazione del calendario From a26e8cfc2470e002af6aaacab98cec46e42fbdfd Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:16:53 +0530 Subject: [PATCH 039/108] New translations strings.xml (Polish) [ci skip] --- app/src/main/res/values-pl-rPL/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-pl-rPL/strings.xml b/app/src/main/res/values-pl-rPL/strings.xml index bd338709b..d331c2c60 100644 --- a/app/src/main/res/values-pl-rPL/strings.xml +++ b/app/src/main/res/values-pl-rPL/strings.xml @@ -460,11 +460,15 @@ Filigran Dodaj dane EXIF ​​i logo do zdjęć Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Zawsze na wyświetlaczu Pokazuj godzinę i informacje, gdy ekran jest wyłączony Synchronizacja kalendarza From ae8c04ef9d941bde2501aed9c358f6b7a3653c39 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:16:54 +0530 Subject: [PATCH 040/108] New translations strings.xml (French) [ci skip] --- app/src/main/res/values-fr-rFR/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr-rFR/strings.xml index 0d3de1879..2ced0d60e 100644 --- a/app/src/main/res/values-fr-rFR/strings.xml +++ b/app/src/main/res/values-fr-rFR/strings.xml @@ -460,11 +460,15 @@ Filigrane Ajoutez des données EXIF et des logos aux photos Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Mode Always-on Afficher l\'heure et des infos quand l\'écran est éteint Synchronisation des calendriers From edaa2d97b2078f44885b46ec063088601b2ebeb4 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:16:56 +0530 Subject: [PATCH 041/108] New translations strings.xml (Spanish) [ci skip] --- app/src/main/res/values-es-rES/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index 8ee3c02ac..e4ca405b0 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -461,11 +461,15 @@ Sin embargo, sí te permite reanudarla desde la lista de aplicaciones del lanzad Marca de agua Añadir datos EXIF ​​y logotipos a las fotos Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Pantalla siempre activa Mostrar hora e información con la pantalla apagada Sincronización del calendario From f41dca44b71fab87c73d0a55d068af29c1e28023 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:16:57 +0530 Subject: [PATCH 042/108] New translations strings.xml (Turkish) [ci skip] --- app/src/main/res/values-tr-rTR/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-tr-rTR/strings.xml b/app/src/main/res/values-tr-rTR/strings.xml index 020f29911..7d83f6f76 100644 --- a/app/src/main/res/values-tr-rTR/strings.xml +++ b/app/src/main/res/values-tr-rTR/strings.xml @@ -460,11 +460,15 @@ Filigran Fotoğraflara EXIF ​​verileri ve logolar ekleme Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Her Zaman Açık Ekran Ekran kapalıyken saati ve bilgileri göster Takvim Senkronizasyonu From ce715a553e2768e2dfb794118d277d0ca33216f8 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:16:59 +0530 Subject: [PATCH 043/108] New translations strings.xml (Indonesian) [ci skip] --- app/src/main/res/values-in-rID/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-in-rID/strings.xml b/app/src/main/res/values-in-rID/strings.xml index c874ed0bc..7bee191f8 100644 --- a/app/src/main/res/values-in-rID/strings.xml +++ b/app/src/main/res/values-in-rID/strings.xml @@ -460,11 +460,15 @@ Tanda air Tambahkan data EXIF dan logo di foto Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Always on Display Show time and info while screen off Sinkronisasi kalender From 71909ec5aae0594e84b0f0e98de0abc667987b9b Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:17:00 +0530 Subject: [PATCH 044/108] New translations strings.xml (Romanian) [ci skip] --- app/src/main/res/values-ro-rRO/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-ro-rRO/strings.xml b/app/src/main/res/values-ro-rRO/strings.xml index 1448e38dc..ba5a44c5b 100644 --- a/app/src/main/res/values-ro-rRO/strings.xml +++ b/app/src/main/res/values-ro-rRO/strings.xml @@ -460,11 +460,15 @@ Filigran Adăugați date EXIF ​​și sigle la fotografii Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Întotdeauna pe ecran Afișați ora și informațiile cu ecranul oprit Sincronizare calendar From f186f6de9d92b77bf6fe1e25419a93a8baaeb465 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:17:02 +0530 Subject: [PATCH 045/108] New translations strings.xml (Afrikaans) [ci skip] --- app/src/main/res/values-af-rZA/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-af-rZA/strings.xml b/app/src/main/res/values-af-rZA/strings.xml index 01cfdb3dc..cb2bd6aad 100644 --- a/app/src/main/res/values-af-rZA/strings.xml +++ b/app/src/main/res/values-af-rZA/strings.xml @@ -460,11 +460,15 @@ Watermerk Voeg EXIF-data en logo\'s by foto\'s Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Altyd op Vertoon Wys tyd en inligting terwyl skerm af is Kalendersinkronisering From 38afa9943d2761835ae67c7f81c57e18273dd831 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:17:03 +0530 Subject: [PATCH 046/108] New translations strings.xml (Catalan) [ci skip] --- app/src/main/res/values-ca-rES/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-ca-rES/strings.xml b/app/src/main/res/values-ca-rES/strings.xml index 261eda5fe..89f521caa 100644 --- a/app/src/main/res/values-ca-rES/strings.xml +++ b/app/src/main/res/values-ca-rES/strings.xml @@ -460,11 +460,15 @@ Filigrana Afegeix dades EXIF ​​i logotips a les fotos Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Sempre a la pantalla Mostra l\'hora i la informació amb la pantalla apagada Sincronització del calendari From a75ce09b80ce1f30b2954bb7e812898059a5a1b7 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:17:04 +0530 Subject: [PATCH 047/108] New translations strings.xml (Czech) [ci skip] --- app/src/main/res/values-cs-rCZ/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-cs-rCZ/strings.xml b/app/src/main/res/values-cs-rCZ/strings.xml index 73356ef4e..00f375cf5 100644 --- a/app/src/main/res/values-cs-rCZ/strings.xml +++ b/app/src/main/res/values-cs-rCZ/strings.xml @@ -460,11 +460,15 @@ Vodoznak Přidejte k fotografiím data a loga EXIF Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Vždy na displeji Zobrazovat čas a informace při vypnuté obrazovce Synchronizace kalendáře From 7356867c50081a2821de1249f408c5e60d5f2554 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:17:06 +0530 Subject: [PATCH 048/108] New translations strings.xml (Danish) [ci skip] --- app/src/main/res/values-da-rDK/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-da-rDK/strings.xml b/app/src/main/res/values-da-rDK/strings.xml index f74b75703..98aa2cc94 100644 --- a/app/src/main/res/values-da-rDK/strings.xml +++ b/app/src/main/res/values-da-rDK/strings.xml @@ -460,11 +460,15 @@ Vandmærke Tilføj EXIF-data og logoer til fotos Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Altid på display Vis tid og info, mens skærmen er slukket Kalendersynkronisering From ac2f8476789ab83b7d7f1faaa40f04eb6aae9200 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:17:07 +0530 Subject: [PATCH 049/108] New translations strings.xml (German) [ci skip] --- app/src/main/res/values-de-rDE/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index 16b43632b..fa7587bac 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -460,11 +460,15 @@ Wasserzeichen Fotos mit EXIF-Daten und Logos versehen Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Always-on-Display Zeige Uhrzeit und Infos, während der Bildschirm ausgeschaltet ist Kalender-Synchronisierung From a1a135cea10123636eea9e3f699beab5b990710a Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:17:08 +0530 Subject: [PATCH 050/108] New translations strings.xml (Greek) [ci skip] --- app/src/main/res/values-el-rGR/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-el-rGR/strings.xml b/app/src/main/res/values-el-rGR/strings.xml index 1a9b28df0..5f74dc87e 100644 --- a/app/src/main/res/values-el-rGR/strings.xml +++ b/app/src/main/res/values-el-rGR/strings.xml @@ -460,11 +460,15 @@ Αφανής σφραγίδα χάρτου Προσθέστε δεδομένα και λογότυπα EXIF ​​στις φωτογραφίες Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Πάντα στην οθόνη Εμφάνιση ώρας και πληροφοριών ενώ η οθόνη είναι απενεργοποιημένη Συγχρονισμός Ημερολογίου From 65877b83f52ec185660d2d3dc87cc0a5f65a10cc Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:17:10 +0530 Subject: [PATCH 051/108] New translations strings.xml (Finnish) [ci skip] --- app/src/main/res/values-fi-rFI/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-fi-rFI/strings.xml b/app/src/main/res/values-fi-rFI/strings.xml index 2bc50991a..55ee55fda 100644 --- a/app/src/main/res/values-fi-rFI/strings.xml +++ b/app/src/main/res/values-fi-rFI/strings.xml @@ -460,11 +460,15 @@ Vesileima Lisää EXIF-tietoja ja logoja valokuviin Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Aina näytössä Näytä aika ja tiedot näytön ollessa pois päältä Kalenterin synkronointi From 0445dcdba8e9307a8b25c2c903ae9666de1ff1a1 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:17:11 +0530 Subject: [PATCH 052/108] New translations strings.xml (Hebrew) [ci skip] --- app/src/main/res/values-iw-rIL/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-iw-rIL/strings.xml b/app/src/main/res/values-iw-rIL/strings.xml index 7aff0fc71..7a586757a 100644 --- a/app/src/main/res/values-iw-rIL/strings.xml +++ b/app/src/main/res/values-iw-rIL/strings.xml @@ -460,11 +460,15 @@ Watermark Add EXIF data and logos to photos Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Always on Display Show time and info while screen off Calendar Sync From 4b6fa7d601893b341b39a8b7450f048dbc1ff4c4 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:17:13 +0530 Subject: [PATCH 053/108] New translations strings.xml (Hungarian) [ci skip] --- app/src/main/res/values-hu-rHU/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-hu-rHU/strings.xml b/app/src/main/res/values-hu-rHU/strings.xml index aa7191a6d..da620b936 100644 --- a/app/src/main/res/values-hu-rHU/strings.xml +++ b/app/src/main/res/values-hu-rHU/strings.xml @@ -460,11 +460,15 @@ Vízjel Adjon hozzá EXIF-adatokat és logókat a fényképekhez Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Mindig a kijelzőn Idő és információ megjelenítése kikapcsolt képernyő mellett Naptár szinkronizálás From 971e08b0ba7f45a8875e7f40c6a8566ed200024b Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:17:14 +0530 Subject: [PATCH 054/108] New translations strings.xml (Japanese) [ci skip] --- app/src/main/res/values-ja-rJP/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index 22387c65d..238baba8e 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -460,11 +460,15 @@ ウォーターマーク 写真にEXIFデータとロゴを追加する Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos 常時表示ディスプレイ 画面オフ時に時刻と情報を表示 カレンダー同期 From 5228428b9b7d627362508458d40c87c85b37286a Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:17:15 +0530 Subject: [PATCH 055/108] New translations strings.xml (Korean) [ci skip] --- app/src/main/res/values-ko-rKR/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index 44f436a8f..4531aa14e 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -460,11 +460,15 @@ 양수표 사진에 EXIF ​​데이터 및 로고 추가 Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos 항상 표시됨 화면이 꺼진 동안 시간 및 정보 표시 캘린더 동기화 From 8473bc405d16358a0677289a8b96a0a0e5b2b836 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:17:17 +0530 Subject: [PATCH 056/108] New translations strings.xml (Dutch) [ci skip] --- app/src/main/res/values-nl-rNL/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-nl-rNL/strings.xml b/app/src/main/res/values-nl-rNL/strings.xml index a6a365278..e5cca9dde 100644 --- a/app/src/main/res/values-nl-rNL/strings.xml +++ b/app/src/main/res/values-nl-rNL/strings.xml @@ -460,11 +460,15 @@ Watermerk EXIF-data en logo\'s toevoegen aan foto\'s Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Always-On Display Laat tijd en informatie zien wanneer het scherm uit is Kalenders synchroniseren From f30e272c665dd235ef1b8e3d2b0b7511edc5c6a9 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:17:18 +0530 Subject: [PATCH 057/108] New translations strings.xml (Norwegian) [ci skip] --- app/src/main/res/values-no-rNO/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-no-rNO/strings.xml b/app/src/main/res/values-no-rNO/strings.xml index dfdaac8c6..db3427ddc 100644 --- a/app/src/main/res/values-no-rNO/strings.xml +++ b/app/src/main/res/values-no-rNO/strings.xml @@ -460,11 +460,15 @@ Vannmerke Legg til EXIF-data og logoer til bilder Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Alltid på skjermen Vis tid og informasjon mens skjermen er av Kalendersynkronisering From a4a612f93884d82c82881c093a8a111d3ce7497d Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:17:19 +0530 Subject: [PATCH 058/108] New translations strings.xml (Portuguese) [ci skip] --- app/src/main/res/values-pt-rPT/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 00ecb5434..6ab34368b 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -460,11 +460,15 @@ Watermark Add EXIF data and logos to photos Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Always on Display Show time and info while screen off Calendar Sync From f1276cb5d146dce345870b822cf283eed3b8c400 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:17:21 +0530 Subject: [PATCH 059/108] New translations strings.xml (Russian) [ci skip] --- app/src/main/res/values-ru-rRU/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml index 5529e38a7..134ac7b03 100644 --- a/app/src/main/res/values-ru-rRU/strings.xml +++ b/app/src/main/res/values-ru-rRU/strings.xml @@ -460,11 +460,15 @@ Водяной знак Добавить EXIF данные ​​и логотипы к фотографиям Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Всегда на дисплее Показывать время и информацию при выключенном экране Синхронизация календаря From e43c24d009c4d99564d83e4b7868b84e1f6dc90e Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:17:22 +0530 Subject: [PATCH 060/108] New translations strings.xml (Serbian (Cyrillic)) [ci skip] --- app/src/main/res/values-sr-rSP/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-sr-rSP/strings.xml b/app/src/main/res/values-sr-rSP/strings.xml index c59551798..a776d4b36 100644 --- a/app/src/main/res/values-sr-rSP/strings.xml +++ b/app/src/main/res/values-sr-rSP/strings.xml @@ -460,11 +460,15 @@ Ватермарк Додајте ЕКСИФ податке и логотипе фотографијама Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Увек на екрану Прикажи време и информације док је екран искључен Цалендар Синц From 51831a61fe2268546767b50c40190f139851f24b Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:17:24 +0530 Subject: [PATCH 061/108] New translations strings.xml (Swedish) [ci skip] --- app/src/main/res/values-sv-rSE/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-sv-rSE/strings.xml b/app/src/main/res/values-sv-rSE/strings.xml index 715fbc81f..395567a3b 100644 --- a/app/src/main/res/values-sv-rSE/strings.xml +++ b/app/src/main/res/values-sv-rSE/strings.xml @@ -460,11 +460,15 @@ Vattenstämpel Lägg till EXIF-data och logotyper till foton Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Alltid på display Visa tid och information när skärmen är avstängd Kalendersynkronisering From 0bc39dede0ff9b2ca6162e494c08f010f96c3b29 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:17:25 +0530 Subject: [PATCH 062/108] New translations strings.xml (Ukrainian) [ci skip] --- app/src/main/res/values-uk-rUA/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-uk-rUA/strings.xml b/app/src/main/res/values-uk-rUA/strings.xml index dbd7e7a75..439206073 100644 --- a/app/src/main/res/values-uk-rUA/strings.xml +++ b/app/src/main/res/values-uk-rUA/strings.xml @@ -460,11 +460,15 @@ Водяний знак Додайте дані EXIF ​​і логотипи до фотографій Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Завжди на дисплеї Показувати час і інформацію, коли екран вимкнено Синхронізація календаря From b11713a8c7625977ff107025bbdb3d9eeb7772d7 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:17:27 +0530 Subject: [PATCH 063/108] New translations strings.xml (Chinese Simplified) [ci skip] --- app/src/main/res/values-zh-rCN/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index f596ce50a..5f57b2eed 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -460,11 +460,15 @@ 水印 向照片添加EXIF数据和logo Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos 屏幕常亮 屏幕关闭时显示时间和信息 日历同步 From d1891485183c579890079526e3c20c663954d1da Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:17:28 +0530 Subject: [PATCH 064/108] New translations strings.xml (Chinese Traditional) [ci skip] --- app/src/main/res/values-zh-rTW/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index ff2c55972..5377b7a58 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -460,11 +460,15 @@ 水印 向照片添加 EXIF 数据和徽标 Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos 螢幕長亮模式 螢幕關閉時仍顯示時間與資訊 日历同步 From b2e49adbe019daa222f4d745c2137e783dd256dc Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:17:29 +0530 Subject: [PATCH 065/108] New translations strings.xml (English) [ci skip] --- app/src/main/res/values-en-rUS/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-en-rUS/strings.xml b/app/src/main/res/values-en-rUS/strings.xml index d1371d2b5..c7494d8a2 100644 --- a/app/src/main/res/values-en-rUS/strings.xml +++ b/app/src/main/res/values-en-rUS/strings.xml @@ -460,11 +460,15 @@ Watermark Add EXIF data and logos to photos Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Always on Display Show time and info while screen off Calendar Sync From 6858b6d601cc4a005716af78ba9fad804cc56bd6 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:17:31 +0530 Subject: [PATCH 066/108] New translations strings.xml (Vietnamese) [ci skip] --- app/src/main/res/values-vi-rVN/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-vi-rVN/strings.xml b/app/src/main/res/values-vi-rVN/strings.xml index dd0a1489e..dbc0d5290 100644 --- a/app/src/main/res/values-vi-rVN/strings.xml +++ b/app/src/main/res/values-vi-rVN/strings.xml @@ -460,11 +460,15 @@ Hình mờ Thêm dữ liệu EXIF ​​​​và logo vào ảnh Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Luôn hiển thị Hiển thị thời gian và thông tin khi màn hình tắt Đồng bộ hóa lịch From 1a70c8b88a5d2d61a50e93d4953bc8a48ef7921c Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:17:32 +0530 Subject: [PATCH 067/108] New translations strings.xml (Portuguese, Brazilian) [ci skip] --- app/src/main/res/values-pt-rBR/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index c3d789a8e..249ef133a 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -460,11 +460,15 @@ Marca d\'água Adicione dados EXIF ​​e logotipos às fotos Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Sempre em exibição Mostrar hora e informações enquanto a tela está desligada Sincronização de calendário From 7dd01e0b1a9bfdaed37837ccc4fea8a1dd8351e6 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:17:33 +0530 Subject: [PATCH 068/108] New translations strings.xml (Sinhala) [ci skip] --- app/src/main/res/values-si-rLK/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-si-rLK/strings.xml b/app/src/main/res/values-si-rLK/strings.xml index 9a07581b8..998c2877e 100644 --- a/app/src/main/res/values-si-rLK/strings.xml +++ b/app/src/main/res/values-si-rLK/strings.xml @@ -460,11 +460,15 @@ දිය සලකුණ ඡායාරූප වලට EXIF ​​දත්ත සහ ලාංඡන එක් කරන්න Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos සැමවිටම ප්‍රදර්ශනයේ තිරය ​​ක්‍රියාවිරහිත වන අතරතුර කාලය සහ තොරතුරු පෙන්වන්න දින දර්ශන සමමුහුර්තකරණය From fe91ee3e597b37ed503f767d7d6d97b6924bce7c Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 10:17:35 +0530 Subject: [PATCH 069/108] New translations strings.xml (Acholi) [ci skip] --- app/src/main/res/values-ach-rUG/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-ach-rUG/strings.xml b/app/src/main/res/values-ach-rUG/strings.xml index c501e6d90..0158c5b62 100644 --- a/app/src/main/res/values-ach-rUG/strings.xml +++ b/app/src/main/res/values-ach-rUG/strings.xml @@ -460,11 +460,15 @@ Lanyut me pii Med ngec me EXIF ​​ki lanyut i kom cal Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos kare weny ki nyutu Nyut cawa ki ngec nongo tye ka tic Calendar Sync From 5e91adddcf48bd9c2bd1f108730f8f01247e6598 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 11:23:20 +0530 Subject: [PATCH 070/108] Update source file strings.xml [ci skip] --- app/src/main/res/values/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2a8e9d33b..a607d023f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -478,11 +478,15 @@ Watermark Add EXIF data and logos to photos Wallpaper - Daily curated handpicked wallpaper + Daily curated and live wallpaper Apply Wallpaper Photo by Wallpaper applied successfully Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Always on Display Show time and info while screen off Calendar Sync From 3bd57c4e2e7fd732411f78df2642930175830d99 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 14:45:47 +0530 Subject: [PATCH 071/108] New translations strings.xml (Spanish) [ci skip] --- app/src/main/res/values-es-rES/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index e4ca405b0..09a92a393 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -460,10 +460,10 @@ Sin embargo, sí te permite reanudarla desde la lista de aplicaciones del lanzad Desactivar aplicaciones de uso poco frecuente Marca de agua Añadir datos EXIF ​​y logotipos a las fotos - Wallpaper - Daily curated and live wallpaper - Apply Wallpaper - Photo by + Fondo de pantalla + Fondos de pantalla animados y seleccionados diariamente + Aplicar fondo de pantalla + Foto de Wallpaper applied successfully Failed to apply wallpaper Applying new wallpaper From 79a777f375aa646f680b287063da957614217e7b Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 15:43:10 +0530 Subject: [PATCH 072/108] New translations strings.xml (Spanish) [ci skip] --- app/src/main/res/values-es-rES/strings.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index 09a92a393..ed5d9f923 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -464,12 +464,12 @@ Sin embargo, sí te permite reanudarla desde la lista de aplicaciones del lanzad Fondos de pantalla animados y seleccionados diariamente Aplicar fondo de pantalla Foto de - Wallpaper applied successfully - Failed to apply wallpaper - Applying new wallpaper - Auto-update - Checks twice a day for a new wallpaper on a background schedule - Clear custom videos + Fondo de pantalla aplicado correctamente + No se pudo aplicar el fondo de pantalla + Aplicando el nuevo fondo de pantalla + Actualización automática + Comprueba dos veces al día si hay un nuevo fondo de pantalla en segundo plano + Borrar videos personalizados Pantalla siempre activa Mostrar hora e información con la pantalla apagada Sincronización del calendario From 57373e9466b0821a32c3c2ba5f2807b017132b36 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:28:58 +0530 Subject: [PATCH 073/108] New translations strings.xml (Arabic) [ci skip] --- app/src/main/res/values-ar-rSA/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-ar-rSA/strings.xml b/app/src/main/res/values-ar-rSA/strings.xml index 61eade5e2..33b70faea 100644 --- a/app/src/main/res/values-ar-rSA/strings.xml +++ b/app/src/main/res/values-ar-rSA/strings.xml @@ -101,6 +101,8 @@ آخر أطفئ المصباح دائمًا حتى أثناء تشغيل العرض + Pocket detection + Turn off flashlight when phone is in your pocket إعدادات إظهار الإشعارات @@ -589,6 +591,8 @@ ردود فعل الاهتزاز عند الضغط على زر إعادة التعيين تبديل المصباح تبديل المصباح باستخدام أزرار الصوت + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket تمكين ضوء الليل الديناميكي مفتاح رئيسي للضوء الليلي الديناميكي تمكين قفل التطبيق @@ -944,6 +948,13 @@ نبض إشعار + + pocket + proximity + sensor + torch + auto + مستيقظ مطور @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From eeff6685c17da45ddc1650fb65a613ac608907d9 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:00 +0530 Subject: [PATCH 074/108] New translations strings.xml (Italian) [ci skip] --- app/src/main/res/values-it-rIT/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-it-rIT/strings.xml b/app/src/main/res/values-it-rIT/strings.xml index 1919e684c..86f414b86 100644 --- a/app/src/main/res/values-it-rIT/strings.xml +++ b/app/src/main/res/values-it-rIT/strings.xml @@ -101,6 +101,8 @@ Altro Spegni sempre la torcia Anche mentre lo schermo è acceso + Pocket detection + Turn off flashlight when phone is in your pocket Impostazioni Mostra notifiche @@ -589,6 +591,8 @@ Vibrazione alla pressione del pulsante riassegnato Interruttore torcia Attiva o disattiva la torcia con i pulsanti del volume + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Abilita luce notturna dinamica Interruttore principale per luce notturna dinamica Abilita blocco app @@ -944,6 +948,13 @@ flash notifica + + pocket + proximity + sensor + torch + auto + sveglio sviluppatore @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From 3e8efb688921f08cd2c0a23dd9a44317262ca958 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:01 +0530 Subject: [PATCH 075/108] New translations strings.xml (Polish) [ci skip] --- app/src/main/res/values-pl-rPL/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-pl-rPL/strings.xml b/app/src/main/res/values-pl-rPL/strings.xml index d331c2c60..bf5a03450 100644 --- a/app/src/main/res/values-pl-rPL/strings.xml +++ b/app/src/main/res/values-pl-rPL/strings.xml @@ -101,6 +101,8 @@ Inny Zawsze wyłączaj latarkę Nawet gdy wyświetlacz jest włączony + Pocket detection + Turn off flashlight when phone is in your pocket Ustawienia Pokaż powiadomienie @@ -589,6 +591,8 @@ Wibracja po naciśnięciu przycisku zmiany mapowania Przełącznik latarki Przełącz latarkę za pomocą przycisków głośności + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Włącz dynamiczne światło nocne Przełącznik główny do dynamicznego oświetlenia nocnego Włącz blokadę aplikacji @@ -944,6 +948,13 @@ puls powiadomienie + + pocket + proximity + sensor + torch + auto + obudzony wywoływacz @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From b6c7e1d7b1b330f2cfd3a894764caa6d4ad47e22 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:03 +0530 Subject: [PATCH 076/108] New translations strings.xml (French) [ci skip] --- app/src/main/res/values-fr-rFR/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr-rFR/strings.xml index 2ced0d60e..812b53c81 100644 --- a/app/src/main/res/values-fr-rFR/strings.xml +++ b/app/src/main/res/values-fr-rFR/strings.xml @@ -101,6 +101,8 @@ Autre Toujours éteindre la lampe-torche Même quand l\'écran est allumé + Pocket detection + Turn off flashlight when phone is in your pocket Paramètres Afficher des notifications @@ -589,6 +591,8 @@ Vibration quand le bouton réattribué est appuyé Allumer/éteindre la lampe-torche Basculer la lampe-torche avec les boutons volume + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Éclairage nocturne dynamique Basculer globalement l\'éclairage nocturne dynamique Activer le verrouillage d\'applis @@ -944,6 +948,13 @@ clignotement notification + + pocket + proximity + sensor + torch + auto + allumé développeur @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From da5f413254e61a47c79a4775971a4ff193b5901d Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:04 +0530 Subject: [PATCH 077/108] New translations strings.xml (Spanish) [ci skip] --- app/src/main/res/values-es-rES/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index ed5d9f923..4d791a962 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -101,6 +101,8 @@ Otro Apagar siempre la linterna Incluso cuando la pantalla está encendida + Pocket detection + Turn off flashlight when phone is in your pocket Ajustes Mostrar notificación @@ -590,6 +592,8 @@ Sin embargo, sí te permite reanudarla desde la lista de aplicaciones del lanzad Retroalimentación de vibración cuando se presiona el botón reasignado Activar/desactivar la linterna Activar/desactivar la linterna con los botones de volumen + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Activar Luz nocturna dinámica Interruptor principal para la luz nocturna dinámica Activar bloqueo de aplicaciones @@ -946,6 +950,13 @@ Cuando llegue un mensaje o alerta de una aplicación seleccionada, la Pantalla s destello notificación + + pocket + proximity + sensor + torch + auto + despierto desarrollador @@ -1545,4 +1556,17 @@ Cuando llegue un mensaje o alerta de una aplicación seleccionada, la Pantalla s Música Reiniciar Shizuku Por favor, introduce primero el token de autenticación de Shizuku en los ajustes + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From 1b80c975b7e3cd05860dbf6aebf06b6126ee7663 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:05 +0530 Subject: [PATCH 078/108] New translations strings.xml (Turkish) [ci skip] --- app/src/main/res/values-tr-rTR/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-tr-rTR/strings.xml b/app/src/main/res/values-tr-rTR/strings.xml index 7d83f6f76..ff657e259 100644 --- a/app/src/main/res/values-tr-rTR/strings.xml +++ b/app/src/main/res/values-tr-rTR/strings.xml @@ -101,6 +101,8 @@ Diğer El fenerini her zaman kapat Ekran açıkken bile + Pocket detection + Turn off flashlight when phone is in your pocket Ayarlar Bildirimi Göster @@ -589,6 +591,8 @@ Yeniden eşlenen düğmeye basıldığında titreşim geri bildirimi El feneri geçişi El fenerini ses düğmeleriyle değiştir + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Dinamik Gece Işığını Etkinleştir Dinamik gece lambası için ana anahtar Uygulama kilidini etkinleştir @@ -944,6 +948,13 @@ nabız bildiri + + pocket + proximity + sensor + torch + auto + uyanmak geliştirici @@ -1544,4 +1555,17 @@ Müzik Shizuku\'yu yeniden başlat Lütfen öncelikle ayarlara Shizuku kimlik doğrulama token\'inizi girin + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From 3f851e72f65ea82e8e427552b7d93e4d55b9c1fc Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:07 +0530 Subject: [PATCH 079/108] New translations strings.xml (Indonesian) [ci skip] --- app/src/main/res/values-in-rID/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-in-rID/strings.xml b/app/src/main/res/values-in-rID/strings.xml index 7bee191f8..49048d407 100644 --- a/app/src/main/res/values-in-rID/strings.xml +++ b/app/src/main/res/values-in-rID/strings.xml @@ -101,6 +101,8 @@ Lainnya Selalu matikan senter Hanya ketika layar hidup + Pocket detection + Turn off flashlight when phone is in your pocket Pengaturan Tampilkan notifikasi @@ -589,6 +591,8 @@ Vibration feedback when remapped button is pressed Flashlight toggle Toggle flashlight with volume buttons + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Enable Dynamic Night Light Master switch for dynamic night light Enable app lock @@ -944,6 +948,13 @@ pulse notification + + pocket + proximity + sensor + torch + auto + awake developer @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From b7416d488552bb34ccb3d29d2c5fc95f9b07190b Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:08 +0530 Subject: [PATCH 080/108] New translations strings.xml (Romanian) [ci skip] --- app/src/main/res/values-ro-rRO/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-ro-rRO/strings.xml b/app/src/main/res/values-ro-rRO/strings.xml index ba5a44c5b..c5b3bc5b8 100644 --- a/app/src/main/res/values-ro-rRO/strings.xml +++ b/app/src/main/res/values-ro-rRO/strings.xml @@ -101,6 +101,8 @@ Alte Opriți întotdeauna lanterna Chiar și când afișajul este pornit + Pocket detection + Turn off flashlight when phone is in your pocket Setări Afișează notificarea @@ -589,6 +591,8 @@ Feedback de vibrație când este apăsat butonul remapat Comutare lanternă Comutați lanterna cu butoanele de volum + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Activați Lumina de noapte dinamică Comutator principal pentru lumină de noapte dinamică Activați blocarea aplicației @@ -944,6 +948,13 @@ puls notificare + + pocket + proximity + sensor + torch + auto + treaz dezvoltator @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From 8c733a6e5da11cb7231b94714de1197f7ab0bb65 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:10 +0530 Subject: [PATCH 081/108] New translations strings.xml (Afrikaans) [ci skip] --- app/src/main/res/values-af-rZA/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-af-rZA/strings.xml b/app/src/main/res/values-af-rZA/strings.xml index cb2bd6aad..38c751c93 100644 --- a/app/src/main/res/values-af-rZA/strings.xml +++ b/app/src/main/res/values-af-rZA/strings.xml @@ -101,6 +101,8 @@ Ander Skakel altyd die flitslig af Selfs terwyl vertoning aan is + Pocket detection + Turn off flashlight when phone is in your pocket Instellings Wys kennisgewing @@ -589,6 +591,8 @@ Vibrasie-terugvoer wanneer hergemerkte knoppie gedruk word Flitslig wissel Wissel flitslig met volumeknoppies + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Aktiveer dinamiese naglig Hoofskakelaar vir dinamiese naglig Aktiveer toepassingslot @@ -944,6 +948,13 @@ pols kennisgewing + + pocket + proximity + sensor + torch + auto + wakker ontwikkelaar @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From 8f51280077c8b899bae6c43e95526eb440a10d6c Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:11 +0530 Subject: [PATCH 082/108] New translations strings.xml (Catalan) [ci skip] --- app/src/main/res/values-ca-rES/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-ca-rES/strings.xml b/app/src/main/res/values-ca-rES/strings.xml index 89f521caa..60da0c3f4 100644 --- a/app/src/main/res/values-ca-rES/strings.xml +++ b/app/src/main/res/values-ca-rES/strings.xml @@ -101,6 +101,8 @@ Altres Apagueu sempre la llanterna Fins i tot mentre la pantalla està activada + Pocket detection + Turn off flashlight when phone is in your pocket Configuració Mostra la notificació @@ -589,6 +591,8 @@ Comentari de vibració quan es prem el botó de reasignació Canvi de llanterna Commuta la llanterna amb els botons de volum + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Activa la llum nocturna dinàmica Interruptor principal per a llum nocturna dinàmica Activa el bloqueig de l\'aplicació @@ -944,6 +948,13 @@ pols notificació + + pocket + proximity + sensor + torch + auto + despert desenvolupador @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From 11bfe9abd5b15c44b731877da03120b4ff245ac7 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:13 +0530 Subject: [PATCH 083/108] New translations strings.xml (Czech) [ci skip] --- app/src/main/res/values-cs-rCZ/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-cs-rCZ/strings.xml b/app/src/main/res/values-cs-rCZ/strings.xml index 00f375cf5..95a6c6217 100644 --- a/app/src/main/res/values-cs-rCZ/strings.xml +++ b/app/src/main/res/values-cs-rCZ/strings.xml @@ -101,6 +101,8 @@ Ostatní Vždy vypněte baterku I když je displej zapnutý + Pocket detection + Turn off flashlight when phone is in your pocket Nastavení Zobrazit oznámení @@ -589,6 +591,8 @@ Vibrační zpětná vazba při stisknutí přemapovaného tlačítka Přepínání svítilny Přepínání svítilny pomocí tlačítek hlasitosti + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Povolit dynamické noční osvětlení Hlavní vypínač pro dynamické noční osvětlení Povolit zámek aplikace @@ -944,6 +948,13 @@ puls oznámení + + pocket + proximity + sensor + torch + auto + probudit vývojář @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From 12cb2839032d99811b28a6f633592f78ea2d6ede Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:14 +0530 Subject: [PATCH 084/108] New translations strings.xml (Danish) [ci skip] --- app/src/main/res/values-da-rDK/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-da-rDK/strings.xml b/app/src/main/res/values-da-rDK/strings.xml index 98aa2cc94..548893073 100644 --- a/app/src/main/res/values-da-rDK/strings.xml +++ b/app/src/main/res/values-da-rDK/strings.xml @@ -101,6 +101,8 @@ Andre Sluk altid lommelygten Også mens displayet er tændt + Pocket detection + Turn off flashlight when phone is in your pocket Indstillinger Vis meddelelse @@ -589,6 +591,8 @@ Vibrationsfeedback, når der trykkes på en ny knap Lommelygteskift Skift lommelygte med lydstyrkeknapper + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Aktiver Dynamic Night Light Hovedafbryder til dynamisk natlys Aktiver applås @@ -944,6 +948,13 @@ puls notifikation + + pocket + proximity + sensor + torch + auto + vågen udvikler @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From 1280ae82269b84f48400b06fc42253acf3f06613 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:16 +0530 Subject: [PATCH 085/108] New translations strings.xml (German) [ci skip] --- app/src/main/res/values-de-rDE/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index fa7587bac..6150d30e0 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -101,6 +101,8 @@ Weitere Die Taschenlampe immer ausschalten Selbst wenn das Display an ist + Pocket detection + Turn off flashlight when phone is in your pocket Einstellungen Benachrichtigung anzeigen @@ -589,6 +591,8 @@ Vibrationsrückmeldung beim Drücken der neu zugewiesenen Taste Taschenlampe ein-/ausschalten Taschenlampe mit Lautstärketasten umschalten + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Aktiviere dynamisches Nachtlicht Hauptschalter für dynamisches Nachtlicht Aktiviere App-Sperre @@ -944,6 +948,13 @@ impuls benachrichtigung + + pocket + proximity + sensor + torch + auto + wach entwickler @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From 7dde260dea2e19e3d9361790ecefc071046ca747 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:17 +0530 Subject: [PATCH 086/108] New translations strings.xml (Greek) [ci skip] --- app/src/main/res/values-el-rGR/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-el-rGR/strings.xml b/app/src/main/res/values-el-rGR/strings.xml index 5f74dc87e..897b93c64 100644 --- a/app/src/main/res/values-el-rGR/strings.xml +++ b/app/src/main/res/values-el-rGR/strings.xml @@ -101,6 +101,8 @@ Αλλος Να σβήνετε πάντα τον φακό Ακόμη και όταν η οθόνη είναι ενεργοποιημένη + Pocket detection + Turn off flashlight when phone is in your pocket Ρυθμίσεις Εμφάνιση ειδοποίησης @@ -589,6 +591,8 @@ Ανατροφοδότηση κραδασμών όταν πατηθεί το κουμπί επανασχεδιασμού Εναλλαγή φακού Εναλλαγή φακού με κουμπιά έντασης ήχου + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Ενεργοποιήστε το Dynamic Night Light Κύριος διακόπτης για δυναμικό νυχτερινό φως Ενεργοποίηση κλειδώματος εφαρμογής @@ -944,6 +948,13 @@ σφυγμός κοινοποίηση + + pocket + proximity + sensor + torch + auto + άγρυπνος προγραμματιστής @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From eb751a9cd760c2d5e4c58d63a3498836291c8770 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:19 +0530 Subject: [PATCH 087/108] New translations strings.xml (Finnish) [ci skip] --- app/src/main/res/values-fi-rFI/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-fi-rFI/strings.xml b/app/src/main/res/values-fi-rFI/strings.xml index 55ee55fda..fc4a23c43 100644 --- a/app/src/main/res/values-fi-rFI/strings.xml +++ b/app/src/main/res/values-fi-rFI/strings.xml @@ -101,6 +101,8 @@ muu Sammuta aina taskulamppu Vaikka näyttö on päällä + Pocket detection + Turn off flashlight when phone is in your pocket Asetukset Näytä ilmoitus @@ -589,6 +591,8 @@ Tärinäpalaute, kun uudelleenkartoituspainiketta painetaan Taskulamppujen kytkin Vaihda taskulamppua äänenvoimakkuuspainikkeilla + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Ota dynaaminen yövalo käyttöön Pääkytkin dynaamiseen yövaloon Ota sovellusten lukitus käyttöön @@ -944,6 +948,13 @@ pulssi ilmoitus + + pocket + proximity + sensor + torch + auto + hereillä kehittäjä @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From b6785f738477477d74bcb784fcda6becf5e3c7d0 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:20 +0530 Subject: [PATCH 088/108] New translations strings.xml (Hebrew) [ci skip] --- app/src/main/res/values-iw-rIL/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-iw-rIL/strings.xml b/app/src/main/res/values-iw-rIL/strings.xml index 7a586757a..c73b8909e 100644 --- a/app/src/main/res/values-iw-rIL/strings.xml +++ b/app/src/main/res/values-iw-rIL/strings.xml @@ -101,6 +101,8 @@ Other Always turn off flashlight Even while display is on + Pocket detection + Turn off flashlight when phone is in your pocket Settings Show Notification @@ -589,6 +591,8 @@ Vibration feedback when remapped button is pressed Flashlight toggle Toggle flashlight with volume buttons + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Enable Dynamic Night Light Master switch for dynamic night light Enable app lock @@ -944,6 +948,13 @@ pulse notification + + pocket + proximity + sensor + torch + auto + awake developer @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From b183e44fd98fe40e87cf76031d23a2a655118cf4 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:21 +0530 Subject: [PATCH 089/108] New translations strings.xml (Hungarian) [ci skip] --- app/src/main/res/values-hu-rHU/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-hu-rHU/strings.xml b/app/src/main/res/values-hu-rHU/strings.xml index da620b936..0f285256a 100644 --- a/app/src/main/res/values-hu-rHU/strings.xml +++ b/app/src/main/res/values-hu-rHU/strings.xml @@ -101,6 +101,8 @@ Más Mindig kapcsolja ki a zseblámpát Még akkor is, ha a kijelző be van kapcsolva + Pocket detection + Turn off flashlight when phone is in your pocket Beállítások elemre Értesítés megjelenítése @@ -589,6 +591,8 @@ Rezgés visszajelzés, amikor megnyomja az újraképzett gombot Zseblámpa kapcsoló Zseblámpa váltása hangerő gombokkal + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Dinamikus éjszakai fény engedélyezése Főkapcsoló a dinamikus éjszakai világításhoz Alkalmazászár engedélyezése @@ -944,6 +948,13 @@ impulzus bejelentés + + pocket + proximity + sensor + torch + auto + ébren fejlesztő @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From 9a5c2f8fbf6dd9aad187e6e6850528c647ea8498 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:23 +0530 Subject: [PATCH 090/108] New translations strings.xml (Japanese) [ci skip] --- app/src/main/res/values-ja-rJP/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index 238baba8e..782327d5b 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -101,6 +101,8 @@ その他 フラッシュライトを常にオフにする 画面がオンのときも + Pocket detection + Turn off flashlight when phone is in your pocket 設定 通知を表示 @@ -589,6 +591,8 @@ 再設定されたボタンを押したときの感触フィードバック フラッシュライト フラッシュライトを音量ボタンで切り替える + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket ダイナミックナイトモードを有効にする ダイナミックナイトモードを使うか切り替える アプリロックを有効にする @@ -944,6 +948,13 @@ 点滅 通知 + + pocket + proximity + sensor + torch + auto + 起動 開発者 @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From f2732d567a93204a7c16ef6c81c71c5596e4ac38 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:24 +0530 Subject: [PATCH 091/108] New translations strings.xml (Korean) [ci skip] --- app/src/main/res/values-ko-rKR/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index 4531aa14e..f5d83387c 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -101,6 +101,8 @@ 다른 항상 손전등을 꺼주세요 디스플레이가 켜져 있는 동안에도 + Pocket detection + Turn off flashlight when phone is in your pocket 설정 알림 표시 @@ -589,6 +591,8 @@ 리매핑된 버튼을 눌렀을 때 진동 피드백 손전등 토글 볼륨 버튼으로 손전등 전환 + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket 동적 야간 조명 활성화 역동적인 야간 조명을 위한 마스터 스위치 앱 잠금 활성화 @@ -944,6 +948,13 @@ 맥박 공고 + + pocket + proximity + sensor + torch + auto + 깨어 있는 개발자 @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From 6abe7e69750389fb22c398a5c52e019eb83931b0 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:25 +0530 Subject: [PATCH 092/108] New translations strings.xml (Dutch) [ci skip] --- app/src/main/res/values-nl-rNL/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-nl-rNL/strings.xml b/app/src/main/res/values-nl-rNL/strings.xml index e5cca9dde..9930380a2 100644 --- a/app/src/main/res/values-nl-rNL/strings.xml +++ b/app/src/main/res/values-nl-rNL/strings.xml @@ -101,6 +101,8 @@ Andere Altijd de zaklamp uitzetten Zelfs als het scherm aan is + Pocket detection + Turn off flashlight when phone is in your pocket Instellingen Melding tonen @@ -589,6 +591,8 @@ Trillen wanneer de opnieuw toegewezen knop ingedrukt wordt Zaklamp in-/uitschakelen Zaklamp in-/uitschakelen met volumeknoppen + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Dynamisch nachtlicht inschakelen Hoofdschakelaar voor dynamisch nachtlicht Appvergrendeling inschakelen @@ -944,6 +948,13 @@ puls melding + + pocket + proximity + sensor + torch + auto + wakker ontwikkelaar @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From 19a22f1d04b5ab3810b0385bcf94a1cd3ae9f00d Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:27 +0530 Subject: [PATCH 093/108] New translations strings.xml (Norwegian) [ci skip] --- app/src/main/res/values-no-rNO/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-no-rNO/strings.xml b/app/src/main/res/values-no-rNO/strings.xml index db3427ddc..ed5acae9b 100644 --- a/app/src/main/res/values-no-rNO/strings.xml +++ b/app/src/main/res/values-no-rNO/strings.xml @@ -101,6 +101,8 @@ Annen Slå alltid av lommelykten Selv når skjermen er på + Pocket detection + Turn off flashlight when phone is in your pocket Innstillinger Vis varsling @@ -589,6 +591,8 @@ Vibrasjonstilbakemelding når den omdefinerte knappen trykkes inn Veksling av lommelykt Bytt lommelykt med volumknapper + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Aktiver dynamisk nattlys Hovedbryter for dynamisk nattlys Aktiver applås @@ -944,6 +948,13 @@ puls melding + + pocket + proximity + sensor + torch + auto + våken utvikler @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From 6126b92d865bd85c8914612c56984333df051226 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:28 +0530 Subject: [PATCH 094/108] New translations strings.xml (Portuguese) [ci skip] --- app/src/main/res/values-pt-rPT/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 6ab34368b..e9062e3a6 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -101,6 +101,8 @@ Other Always turn off flashlight Even while display is on + Pocket detection + Turn off flashlight when phone is in your pocket Settings Show Notification @@ -589,6 +591,8 @@ Vibration feedback when remapped button is pressed Flashlight toggle Toggle flashlight with volume buttons + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Enable Dynamic Night Light Master switch for dynamic night light Enable app lock @@ -944,6 +948,13 @@ pulse notification + + pocket + proximity + sensor + torch + auto + awake developer @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From 8dc69025cd65898ade4583a28509ca0968e4acd0 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:30 +0530 Subject: [PATCH 095/108] New translations strings.xml (Russian) [ci skip] --- app/src/main/res/values-ru-rRU/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml index 134ac7b03..9629fcc6c 100644 --- a/app/src/main/res/values-ru-rRU/strings.xml +++ b/app/src/main/res/values-ru-rRU/strings.xml @@ -101,6 +101,8 @@ Другое Всегда выключать фонарик Даже при включенном экране + Pocket detection + Turn off flashlight when phone is in your pocket Настройки Показывать уведомления @@ -589,6 +591,8 @@ Вибрационная отдача при нажатии переназначенной кнопки Переключение фонарика Переключение фонарика кнопками громкости + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Включить динамическую ночную подсветку Главный выключатель динамического ночного освещения Включить блокировку приложения @@ -944,6 +948,13 @@ мигание уведомление + + pocket + proximity + sensor + torch + auto + бодрствующий разработчик @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From cb6ca61cacfae1bf1479b102a464d3a1ca4b8b19 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:31 +0530 Subject: [PATCH 096/108] New translations strings.xml (Serbian (Cyrillic)) [ci skip] --- app/src/main/res/values-sr-rSP/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-sr-rSP/strings.xml b/app/src/main/res/values-sr-rSP/strings.xml index a776d4b36..aae2ee1f2 100644 --- a/app/src/main/res/values-sr-rSP/strings.xml +++ b/app/src/main/res/values-sr-rSP/strings.xml @@ -101,6 +101,8 @@ Остало Увек искључите батеријску лампу Чак и док је екран укључен + Pocket detection + Turn off flashlight when phone is in your pocket Подешавања Прикажи обавештење @@ -589,6 +591,8 @@ Повратна информација вибрацијом када се притисне поново мапирано дугме Пребацивање лампе Укључите батеријску лампу помоћу дугмади за јачину звука + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Омогућите динамичко ноћно светло Главни прекидач за динамичко ноћно светло Омогућите закључавање апликације @@ -944,6 +948,13 @@ пулс обавештење + + pocket + proximity + sensor + torch + auto + будан програмер @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From 38cee143709cb7145050ca7b0f5eb3bc7e184189 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:32 +0530 Subject: [PATCH 097/108] New translations strings.xml (Swedish) [ci skip] --- app/src/main/res/values-sv-rSE/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-sv-rSE/strings.xml b/app/src/main/res/values-sv-rSE/strings.xml index 395567a3b..76af07f3a 100644 --- a/app/src/main/res/values-sv-rSE/strings.xml +++ b/app/src/main/res/values-sv-rSE/strings.xml @@ -101,6 +101,8 @@ Andra Stäng alltid av ficklampan Även när displayen är på + Pocket detection + Turn off flashlight when phone is in your pocket Inställningar Visa avisering @@ -589,6 +591,8 @@ Vibrationsåterkoppling när ommappad knapp trycks in Ficklampa växla Växla ficklampa med volymknappar + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Aktivera Dynamic Night Light Huvudströmbrytare för dynamisk nattljus Aktivera applås @@ -944,6 +948,13 @@ puls underrättelse + + pocket + proximity + sensor + torch + auto + vaken framkallare @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From 29ece16cde84ba9d2161f5284392ce4aeb2214ca Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:34 +0530 Subject: [PATCH 098/108] New translations strings.xml (Ukrainian) [ci skip] --- app/src/main/res/values-uk-rUA/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-uk-rUA/strings.xml b/app/src/main/res/values-uk-rUA/strings.xml index 439206073..5ea626918 100644 --- a/app/src/main/res/values-uk-rUA/strings.xml +++ b/app/src/main/res/values-uk-rUA/strings.xml @@ -101,6 +101,8 @@ інше Завжди вимикайте ліхтарик Навіть коли дисплей увімкнено + Pocket detection + Turn off flashlight when phone is in your pocket Налаштування Показати сповіщення @@ -589,6 +591,8 @@ Вібросигнал під час натискання переназначеної кнопки Перемикач ліхтарика Перемикання ліхтарика кнопками гучності + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Увімкнути динамічний нічник Головний вимикач для динамічного нічника Увімкнути блокування програми @@ -944,6 +948,13 @@ пульс повідомлення + + pocket + proximity + sensor + torch + auto + прокинутися розробник @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From 61cd62023c28abc438353cc8c5a8e70ea30666ae Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:35 +0530 Subject: [PATCH 099/108] New translations strings.xml (Chinese Simplified) [ci skip] --- app/src/main/res/values-zh-rCN/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 5f57b2eed..b6a3ff676 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -101,6 +101,8 @@ 其他 总是关闭手电筒 即使当屏幕亮起 + Pocket detection + Turn off flashlight when phone is in your pocket 设置 显示通知 @@ -589,6 +591,8 @@ Vibration feedback when remapped button is pressed Flashlight toggle Toggle flashlight with volume buttons + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Enable Dynamic Night Light Master switch for dynamic night light Enable app lock @@ -944,6 +948,13 @@ pulse notification + + pocket + proximity + sensor + torch + auto + awake developer @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From 7fea30c1a2f4c8d1b12486e073802c4ae5922387 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:36 +0530 Subject: [PATCH 100/108] New translations strings.xml (Chinese Traditional) [ci skip] --- app/src/main/res/values-zh-rTW/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 5377b7a58..68df0ad75 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -101,6 +101,8 @@ 其他 永遠保持手電筒關閉 即便螢幕開啟 + Pocket detection + Turn off flashlight when phone is in your pocket 設定 顯示通知 @@ -589,6 +591,8 @@ 按下重映射按钮时的振动反馈 手电筒开关 使用音量键切换手电筒 + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket 启用动态夜间模式 动态夜间模式总开关 启用应用锁 @@ -944,6 +948,13 @@ 閃爍 通知 + + pocket + proximity + sensor + torch + auto + 唤醒 开发者 @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From f1d88eec9dddf91426c7dd0dfc387f9026e4928c Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:38 +0530 Subject: [PATCH 101/108] New translations strings.xml (English) [ci skip] --- app/src/main/res/values-en-rUS/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-en-rUS/strings.xml b/app/src/main/res/values-en-rUS/strings.xml index c7494d8a2..2a8d4d0e5 100644 --- a/app/src/main/res/values-en-rUS/strings.xml +++ b/app/src/main/res/values-en-rUS/strings.xml @@ -101,6 +101,8 @@ Other Always turn off flashlight Even while display is on + Pocket detection + Turn off flashlight when phone is in your pocket Settings Show Notification @@ -589,6 +591,8 @@ Vibration feedback when remapped button is pressed Flashlight toggle Toggle flashlight with volume buttons + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Enable Dynamic Night Light Master switch for dynamic night light Enable app lock @@ -944,6 +948,13 @@ pulse notification + + pocket + proximity + sensor + torch + auto + awake developer @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From 9d2a57998ded913819e5416bacadb222d380798e Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:39 +0530 Subject: [PATCH 102/108] New translations strings.xml (Vietnamese) [ci skip] --- app/src/main/res/values-vi-rVN/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-vi-rVN/strings.xml b/app/src/main/res/values-vi-rVN/strings.xml index dbc0d5290..23def4a23 100644 --- a/app/src/main/res/values-vi-rVN/strings.xml +++ b/app/src/main/res/values-vi-rVN/strings.xml @@ -101,6 +101,8 @@ Khác Luôn tắt đèn pin Ngay cả khi màn hình đang bật + Pocket detection + Turn off flashlight when phone is in your pocket Cài đặt Hiển thị thông báo @@ -589,6 +591,8 @@ Phản hồi rung khi nhấn nút ánh xạ lại Chuyển đổi đèn pin Chuyển đổi đèn pin bằng nút âm lượng + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Bật đèn ngủ động Công tắc chính cho đèn ngủ năng động Bật khóa ứng dụng @@ -944,6 +948,13 @@ xung thông báo + + pocket + proximity + sensor + torch + auto + thức giấc nhà phát triển @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From c37b21af39ceaecf660138278b0fbeda12e29ae0 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:40 +0530 Subject: [PATCH 103/108] New translations strings.xml (Portuguese, Brazilian) [ci skip] --- app/src/main/res/values-pt-rBR/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 249ef133a..fea2ae261 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -101,6 +101,8 @@ Outro Sempre desligue a lanterna Mesmo quando a tela está ligada + Pocket detection + Turn off flashlight when phone is in your pocket Configurações Mostrar notificação @@ -589,6 +591,8 @@ Feedback de vibração quando o botão remapeado é pressionado Alternar lanterna Alternar lanterna com botões de volume + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Ativar luz noturna dinâmica Interruptor mestre para luz noturna dinâmica Ativar bloqueio de aplicativo @@ -944,6 +948,13 @@ pulso notificação + + pocket + proximity + sensor + torch + auto + acordado desenvolvedor @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From 5dd258fc8979c0cf52e9859c7ea5707c2eca0888 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:42 +0530 Subject: [PATCH 104/108] New translations strings.xml (Sinhala) [ci skip] --- app/src/main/res/values-si-rLK/strings.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-si-rLK/strings.xml b/app/src/main/res/values-si-rLK/strings.xml index 998c2877e..4165d082c 100644 --- a/app/src/main/res/values-si-rLK/strings.xml +++ b/app/src/main/res/values-si-rLK/strings.xml @@ -101,6 +101,8 @@ වෙනත් සෑම විටම ෆ්ලෑෂ් ලයිට් නිවා දමන්න සංදර්ශකය ක්‍රියාත්මකව තිබියදී පවා + Pocket detection + Turn off flashlight when phone is in your pocket සැකසීම් දැනුම්දීම පෙන්වන්න @@ -589,6 +591,8 @@ නැවත සකස් කරන ලද බොත්තම එබූ විට කම්පන ප්‍රතිපෝෂණය ෆ්ලෑෂ් ලයිට් ටොගල් වෙළුම් බොත්තම් සමඟ ෆ්ලෑෂ් ලයිට් ටොගල් කරන්න + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket ගතික රාත්‍රී ආලෝකය සක්‍රීය කරන්න ගතික රාත්‍රී ආලෝකය සඳහා ප්‍රධාන ස්විචය යෙදුම් අගුල සබල කරන්න @@ -944,6 +948,13 @@ ස්පන්දනය දැනුම්දීම + + pocket + proximity + sensor + torch + auto + අවදියෙන් සංවර්ධක @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From 035bbd18ece7c2dbfb3024832158fa44eda87099 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 17:29:43 +0530 Subject: [PATCH 105/108] New translations strings.xml (Acholi) [ci skip] --- app/src/main/res/values-ach-rUG/strings.xml | 24 +++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-ach-rUG/strings.xml b/app/src/main/res/values-ach-rUG/strings.xml index 0158c5b62..7b0939bf6 100644 --- a/app/src/main/res/values-ach-rUG/strings.xml +++ b/app/src/main/res/values-ach-rUG/strings.xml @@ -101,6 +101,8 @@ Mukene Neko lameny kare weny Kadi bed ni gin ma ki nyutu tye ka tic + Pocket detection + Turn off flashlight when phone is in your pocket Kit ma ki keto kwede Nyut ngec @@ -589,6 +591,8 @@ Lok ma mako yeng yeng ka ki dii bute ma ki dwoko cen Lok pa mac ma ki lwongo ni Flashlight Lok lameny ki bute me dwan + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Yab mac me dyewor ma tiyo Gin ma pire tek pi mac me dyewor Yab app lock @@ -944,6 +948,13 @@ cwiny ngec + + pocket + proximity + sensor + torch + auto + bedo neno layub @@ -1543,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From 02f8be791ea8f761114f47aff7b367722a600b1f Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 18:25:34 +0530 Subject: [PATCH 106/108] Update source file strings.xml [ci skip] --- app/src/main/res/values/strings.xml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a607d023f..b337e2135 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -102,6 +102,8 @@ Other Always turn off flashlight Even while display is on + Pocket detection + Turn off flashlight when phone is in your pocket Settings @@ -608,6 +610,8 @@ Vibration feedback when remapped button is pressed Flashlight toggle Toggle flashlight with volume buttons + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Enable Dynamic Night Light Master switch for dynamic night light Enable app lock @@ -987,6 +991,13 @@ pulse notification + + pocket + proximity + sensor + torch + auto + awake developer @@ -1632,4 +1643,18 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked From e1169a81c89d9e255dede23c04d5e8b4f872b5a5 Mon Sep 17 00:00:00 2001 From: "sameerasw.com" Date: Sat, 4 Jul 2026 18:25:38 +0530 Subject: [PATCH 107/108] New translations strings.xml (Spanish) [ci skip] --- app/src/main/res/values-es-rES/strings.xml | 26 +++++++++++----------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index 4d791a962..c5ec49747 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -101,8 +101,8 @@ Otro Apagar siempre la linterna Incluso cuando la pantalla está encendida - Pocket detection - Turn off flashlight when phone is in your pocket + Detección de bolsillo + Apagar la linterna cuando el teléfono esté en el bolsillo Ajustes Mostrar notificación @@ -592,8 +592,8 @@ Sin embargo, sí te permite reanudarla desde la lista de aplicaciones del lanzad Retroalimentación de vibración cuando se presiona el botón reasignado Activar/desactivar la linterna Activar/desactivar la linterna con los botones de volumen - Flashlight pocket detection - Auto-turn off flashlight when placed in pocket + Detección de bolsillo para la linterna + Apagado automático de la linterna al colocar el teléfono en el bolsillo Activar Luz nocturna dinámica Interruptor principal para la luz nocturna dinámica Activar bloqueo de aplicaciones @@ -951,8 +951,8 @@ Cuando llegue un mensaje o alerta de una aplicación seleccionada, la Pantalla s notificación - pocket - proximity + bolsillo + proximidad sensor torch auto @@ -1557,13 +1557,13 @@ Cuando llegue un mensaje o alerta de una aplicación seleccionada, la Pantalla s Reiniciar Shizuku Por favor, introduce primero el token de autenticación de Shizuku en los ajustes - Pocket mode - Prevent accidental touches while in pocket - Use light sensor - Use ambient light level in addition to proximity for better accuracy - Pocket mode active - Press any volume key to dismiss - Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Modo bolsillo + Evitar toques accidentales mientras el teléfono está en el bolsillo + Usar el sensor de luz + Usar el nivel de luz ambiental además de la proximidad para mejorar la precisión + Modo bolsillo activo + Pulsa cualquier tecla de volumen para descartar + Advertencia: En algunos dispositivos que carecen de ciertos sensores, activar el Modo bolsillo puede impedir el modo de suspensión profunda y provocar un mayor consumo de batería Exclude apps Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default Trigger delay From 2e2cad7e00ffe16f0aecd6346066e051f9cc1d75 Mon Sep 17 00:00:00 2001 From: sameerasw Date: Sat, 4 Jul 2026 18:56:17 +0530 Subject: [PATCH 108/108] refactor: code optimization --- app/build.gradle.kts | 34 +- .../essentials/ExampleInstrumentedTest.kt | 6 +- app/src/main/AndroidManifest.xml | 308 +- app/src/main/assets/emojis.json | 29340 ++++++++-------- app/src/main/assets/kaomoji.json | 6060 ++-- .../essentials/FeatureSettingsActivity.kt | 35 +- .../com/sameerasw/essentials/MainActivity.kt | 8 +- .../sameerasw/essentials/SettingsActivity.kt | 55 +- .../essentials/ShutUpShortcutActivity.kt | 9 +- .../data/repository/GitHubRepository.kt | 13 +- .../data/repository/SettingsRepository.kt | 15 +- .../data/repository/WallpaperRepository.kt | 87 +- .../sameerasw/essentials/domain/diy/Action.kt | 2 +- .../essentials/domain/diy/DIYRepository.kt | 8 +- .../essentials/domain/model/Feature.kt | 3 +- .../domain/registry/FeatureRegistry.kt | 22 +- .../domain/registry/SearchRegistry.kt | 69 +- .../domain/watermark/WatermarkEngine.kt | 121 +- .../external/ExternalActionReceiver.kt | 5 +- .../external/ExternalControlProvider.kt | 1 - .../external/LocationAlarmExternalHandler.kt | 67 +- .../external/SettingsExternalHandler.kt | 23 +- .../services/DailyWallpaperWorker.kt | 57 +- .../services/DeviceInfoSyncManager.kt | 37 +- .../EssentialsWearableListenerService.kt | 66 +- .../services/LocationReachedService.kt | 18 +- .../services/NotificationListener.kt | 27 +- .../services/ScreenOffWidgetProvider.kt | 44 +- .../executors/CombinedActionExecutor.kt | 135 +- .../services/handlers/AppFlowHandler.kt | 112 +- .../services/handlers/FlashlightHandler.kt | 22 +- .../services/handlers/PocketModeHandler.kt | 13 +- .../services/tiles/BaseTileService.kt | 1 - .../services/tiles/ChargeQuickTileService.kt | 2 - .../services/tiles/PrivateDnsTileService.kt | 3 + .../tiles/ScreenOffAccessibilityService.kt | 43 +- .../services/widgets/FavoritesWidget.kt | 112 +- .../widgets/FavoritesWidgetReceiver.kt | 3 +- .../widgets/MusicBroadcastReceiver.kt | 20 +- .../widgets/MusicClickActionCallback.kt | 9 +- .../services/widgets/PixelSearchbarWidget.kt | 24 +- .../widgets/PixelSearchbarWidgetReceiver.kt | 6 +- .../services/widgets/WidgetScraperService.kt | 40 +- .../ui/activities/ActionShortcutActivity.kt | 10 +- .../ui/activities/AutomationEditorActivity.kt | 62 +- .../PixelSearchbarSettingsActivity.kt | 70 +- .../activities/PixelSearchbarTapActivity.kt | 7 +- .../ui/activities/QSPreferencesActivity.kt | 3 +- .../ScreenOffWidgetConfigureActivity.kt | 1 - .../ui/activities/TravelCompassActivity.kt | 57 +- .../ui/components/diy/AutomationItem.kt | 1 + .../pickers/CrashReportingPicker.kt | 5 +- .../ui/components/pickers/DefaultTabPicker.kt | 5 +- .../components/sheets/NewAutomationSheet.kt | 24 +- .../sheets/ScreenOffSettingsSheet.kt | 7 +- .../sheets/SweepShapesBottomSheet.kt | 4 +- .../sheets/WatchInstallHelpBottomSheet.kt | 17 +- .../ui/components/text/SimpleMarkdown.kt | 2 +- .../ui/composables/SetupFeatures.kt | 133 +- .../configs/ButtonRemapSettingsUI.kt | 8 +- .../configs/FlashlightSettingsUI.kt | 1 - .../configs/LocationReachedSettingsUI.kt | 8 +- .../configs/NotificationLightingSettingsUI.kt | 2 +- .../configs/OtherCustomizationsSettingsUI.kt | 1 - .../configs/PocketModeSettingsUI.kt | 22 +- .../configs/QuickSettingsTilesSettingsUI.kt | 4 +- .../configs/ScreenOffWidgetSettingsUI.kt | 2 - .../composables/configs/ShutUpSettingsUI.kt | 15 +- .../configs/WatchControlsSettingsUI.kt | 24 +- .../ui/composables/configs/WatchSettingsUI.kt | 10 +- .../composables/wallpaper/WallpaperScreen.kt | 161 +- .../composables/watermark/WatermarkScreen.kt | 2 +- .../sameerasw/essentials/utils/DeviceUtils.kt | 4 +- .../essentials/utils/OverlayHelper.kt | 19 +- .../sameerasw/essentials/utils/ShellUtils.kt | 35 +- .../essentials/utils/ShortcutUtil.kt | 22 +- .../essentials/viewmodels/MainViewModel.kt | 171 +- .../viewmodels/WatermarkViewModel.kt | 4 +- app/src/main/res/anim/anim_slide_in_top.xml | 4 +- app/src/main/res/anim/anim_slide_out_top.xml | 4 +- app/src/main/res/anim/anim_stay.xml | 4 +- .../drawable-v24/ic_launcher_background.xml | 37 +- app/src/main/res/drawable/app_logo.xml | 84 +- app/src/main/res/drawable/apple.xml | 6 +- app/src/main/res/drawable/brand_github.xml | 6 +- app/src/main/res/drawable/brand_telegram.xml | 6 +- app/src/main/res/drawable/cmf.xml | 277 +- .../main/res/drawable/frame_inspect_24px.xml | 10 +- app/src/main/res/drawable/ic_clipboard.xml | 6 +- app/src/main/res/drawable/ic_emoji.xml | 6 +- .../res/drawable/ic_launcher_foreground.xml | 97 +- .../drawable/ic_launcher_foreground_light.xml | 77 +- .../res/drawable/ic_launcher_monochrome.xml | 97 +- app/src/main/res/drawable/ic_light_sensor.xml | 7 +- app/src/main/res/drawable/ic_pocket_mode.xml | 10 +- .../ic_splash_launcher_foreground.xml | 81 +- .../ic_splash_launcher_foreground_light.xml | 81 +- app/src/main/res/drawable/ic_undo.xml | 6 +- app/src/main/res/drawable/key_shift.xml | 6 +- app/src/main/res/drawable/moto.xml | 16 +- app/src/main/res/drawable/nothing.xml | 10 +- app/src/main/res/drawable/oppo.xml | 8 +- .../drawable/outline_backlight_high_24.xml | 15 +- .../outline_battery_android_frame_bolt_24.xml | 15 +- .../res/drawable/outline_bubble_chart_24.xml | 15 +- .../outline_circle_notifications_24.xml | 15 +- .../outline_highlight_mouse_cursor_24.xml | 15 +- .../res/drawable/outline_interests_24.xml | 15 +- .../res/drawable/outline_mobile_chat_24.xml | 15 +- .../main/res/drawable/round_android_24.xml | 15 +- .../res/drawable/round_arrow_upward_24.xml | 15 +- .../main/res/drawable/round_favorite_24.xml | 15 +- .../res/drawable/round_flashlight_on_24.xml | 21 +- .../main/res/drawable/round_front_hand_24.xml | 15 +- .../main/res/drawable/round_navigation_24.xml | 15 +- .../main/res/drawable/round_play_arrow_24.xml | 15 +- app/src/main/res/drawable/round_star_24.xml | 15 +- .../drawable/rounded_accessibility_new_24.xml | 15 +- .../drawable/rounded_account_balance_24.xml | 15 +- .../res/drawable/rounded_action_key_24.xml | 15 +- app/src/main/res/drawable/rounded_adb_24.xml | 15 +- app/src/main/res/drawable/rounded_add_24.xml | 15 +- .../drawable/rounded_add_location_alt_24.xml | 15 +- .../rounded_add_photo_alternate_24.xml | 15 +- .../rounded_admin_panel_settings_24.xml | 15 +- .../main/res/drawable/rounded_alarm_24.xml | 15 +- .../main/res/drawable/rounded_android_24.xml | 15 +- .../rounded_android_cell_dual_4_bar_24.xml | 15 +- ...unded_android_cell_dual_5_bar_alert_24.xml | 15 +- .../rounded_android_wifi_3_bar_24.xml | 15 +- .../rounded_android_wifi_4_bar_plus_24.xml | 15 +- .../res/drawable/rounded_apartment_24.xml | 15 +- .../res/drawable/rounded_app_badging_24.xml | 15 +- .../drawable/rounded_app_registration_24.xml | 15 +- app/src/main/res/drawable/rounded_apps_24.xml | 15 +- .../res/drawable/rounded_arrow_back_24.xml | 16 +- .../drawable/rounded_arrow_cool_down_24.xml | 15 +- .../res/drawable/rounded_arrow_forward_24.xml | 16 +- .../res/drawable/rounded_arrow_warm_up_24.xml | 15 +- .../drawable/rounded_arrows_outward_24.xml | 15 +- .../main/res/drawable/rounded_av_timer_24.xml | 15 +- .../res/drawable/rounded_award_star_24.xml | 15 +- .../res/drawable/rounded_backspace_24.xml | 16 +- .../drawable/rounded_battery_android_0_24.xml | 6 +- .../rounded_battery_android_frame_3_24.xml | 15 +- .../rounded_battery_android_frame_6_24.xml | 15 +- ...rounded_battery_android_frame_alert_24.xml | 15 +- .../rounded_battery_android_frame_plus_24.xml | 15 +- ...ounded_battery_android_frame_shield_24.xml | 6 +- .../rounded_battery_charging_60_24.xml | 15 +- .../res/drawable/rounded_beach_access_24.xml | 15 +- app/src/main/res/drawable/rounded_bed_24.xml | 15 +- .../res/drawable/rounded_bluetooth_24.xml | 15 +- .../res/drawable/rounded_blur_linear_24.xml | 15 +- .../main/res/drawable/rounded_blur_off_24.xml | 15 +- .../main/res/drawable/rounded_blur_on_24.xml | 15 +- app/src/main/res/drawable/rounded_bolt_24.xml | 15 +- .../main/res/drawable/rounded_book_2_24.xml | 15 +- .../main/res/drawable/rounded_bookmark_24.xml | 15 +- .../drawable/rounded_bookmark_remove_24.xml | 15 +- .../res/drawable/rounded_border_bottom_24.xml | 15 +- .../res/drawable/rounded_border_left_24.xml | 15 +- .../res/drawable/rounded_border_right_24.xml | 15 +- .../res/drawable/rounded_border_top_24.xml | 15 +- .../res/drawable/rounded_brightness_6_24.xml | 15 +- .../drawable/rounded_brightness_auto_24.xml | 15 +- .../drawable/rounded_brightness_medium_24.xml | 15 +- .../main/res/drawable/rounded_bubble_24.xml | 16 +- .../res/drawable/rounded_bubble_chart_24.xml | 15 +- .../res/drawable/rounded_bug_report_24.xml | 15 +- .../drawable/rounded_calendar_today_24.xml | 15 +- .../main/res/drawable/rounded_call_log_24.xml | 15 +- .../main/res/drawable/rounded_camera_24.xml | 15 +- .../main/res/drawable/rounded_cancel_24.xml | 15 +- app/src/main/res/drawable/rounded_cast_24.xml | 15 +- .../res/drawable/rounded_cell_wifi_24.xml | 15 +- .../rounded_center_focus_strong_24.xml | 15 +- .../main/res/drawable/rounded_charger_24.xml | 15 +- .../res/drawable/rounded_chat_info_24.xml | 16 +- .../main/res/drawable/rounded_check_24.xml | 15 +- .../res/drawable/rounded_check_circle_24.xml | 15 +- .../res/drawable/rounded_chevron_right_24.xml | 16 +- .../main/res/drawable/rounded_circles_24.xml | 15 +- .../main/res/drawable/rounded_close_24.xml | 15 +- app/src/main/res/drawable/rounded_code_24.xml | 15 +- .../main/res/drawable/rounded_coffee_24.xml | 15 +- .../main/res/drawable/rounded_colorize_24.xml | 15 +- .../res/drawable/rounded_content_copy_24.xml | 15 +- .../res/drawable/rounded_content_paste_24.xml | 15 +- .../drawable/rounded_control_camera_24.xml | 15 +- .../res/drawable/rounded_data_saver_on_24.xml | 15 +- .../res/drawable/rounded_data_usage_24.xml | 15 +- .../res/drawable/rounded_date_range_24.xml | 15 +- .../main/res/drawable/rounded_delete_24.xml | 15 +- .../main/res/drawable/rounded_devices_24.xml | 15 +- .../res/drawable/rounded_diagnosis_24.xml | 15 +- .../drawable/rounded_directions_boat_24.xml | 15 +- .../drawable/rounded_directions_bus_24.xml | 15 +- app/src/main/res/drawable/rounded_dns_24.xml | 15 +- .../drawable/rounded_do_not_disturb_on_24.xml | 15 +- .../res/drawable/rounded_do_not_touch_24.xml | 15 +- .../res/drawable/rounded_domino_mask_24.xml | 15 +- .../main/res/drawable/rounded_download_24.xml | 6 +- .../res/drawable/rounded_downloading_24.xml | 15 +- .../res/drawable/rounded_drag_handle_24.xml | 15 +- app/src/main/res/drawable/rounded_draw_24.xml | 15 +- app/src/main/res/drawable/rounded_edit_24.xml | 15 +- .../drawable/rounded_emoji_language_24.xml | 15 +- .../res/drawable/rounded_experiment_24.xml | 15 +- .../main/res/drawable/rounded_favorite_24.xml | 15 +- .../rounded_fiber_smart_record_24.xml | 15 +- .../main/res/drawable/rounded_flash_on_24.xml | 15 +- .../res/drawable/rounded_flashlight_on_24.xml | 15 +- .../main/res/drawable/rounded_flight_24.xml | 15 +- .../res/drawable/rounded_fork_spoon_24.xml | 15 +- .../res/drawable/rounded_front_hand_24.xml | 15 +- .../rounded_fullscreen_portrait_24.xml | 15 +- .../res/drawable/rounded_garage_home_24.xml | 15 +- .../main/res/drawable/rounded_globe_24.xml | 15 +- .../main/res/drawable/rounded_grain_24.xml | 15 +- .../res/drawable/rounded_headphones_24.xml | 15 +- .../res/drawable/rounded_headset_mic_24.xml | 15 +- .../res/drawable/rounded_heart_smile_24.xml | 15 +- app/src/main/res/drawable/rounded_help_24.xml | 16 +- .../main/res/drawable/rounded_history_24.xml | 15 +- app/src/main/res/drawable/rounded_home_24.xml | 15 +- .../res/drawable/rounded_home_health_24.xml | 15 +- .../main/res/drawable/rounded_image_24.xml | 15 +- .../res/drawable/rounded_image_search_24.xml | 15 +- app/src/main/res/drawable/rounded_info_24.xml | 15 +- .../res/drawable/rounded_interests_24.xml | 15 +- .../res/drawable/rounded_invert_colors_24.xml | 15 +- .../main/res/drawable/rounded_keyboard_24.xml | 15 +- .../rounded_keyboard_arrow_down_24.xml | 15 +- .../drawable/rounded_keyboard_arrow_up_24.xml | 15 +- .../rounded_keyboard_double_arrow_up_24.xml | 15 +- .../drawable/rounded_keyboard_return_24.xml | 16 +- app/src/main/res/drawable/rounded_lan_24.xml | 15 +- .../res/drawable/rounded_laptop_mac_24.xml | 10 +- .../res/drawable/rounded_line_weight_24.xml | 15 +- app/src/main/res/drawable/rounded_link_24.xml | 15 +- .../res/drawable/rounded_local_pizza_24.xml | 15 +- .../res/drawable/rounded_location_on_24.xml | 15 +- app/src/main/res/drawable/rounded_lock_24.xml | 15 +- .../res/drawable/rounded_lock_clock_24.xml | 15 +- .../main/res/drawable/rounded_logout_24.xml | 16 +- .../rounded_magnify_fullscreen_24.xml | 15 +- app/src/main/res/drawable/rounded_mail_24.xml | 15 +- app/src/main/res/drawable/rounded_map_24.xml | 15 +- .../res/drawable/rounded_memory_alt_24.xml | 15 +- .../main/res/drawable/rounded_mobile_24.xml | 15 +- .../drawable/rounded_mobile_arrow_down_24.xml | 15 +- .../res/drawable/rounded_mobile_charge_24.xml | 15 +- .../res/drawable/rounded_mobile_check_24.xml | 15 +- .../res/drawable/rounded_mobile_code_24.xml | 15 +- .../res/drawable/rounded_mobile_hand_24.xml | 15 +- .../res/drawable/rounded_mobile_layout_24.xml | 15 +- .../rounded_mobile_lock_portrait_24.xml | 15 +- .../res/drawable/rounded_mobile_off_24.xml | 15 +- .../res/drawable/rounded_mobile_rotate_24.xml | 15 +- .../rounded_mobile_screensaver_24.xml | 15 +- .../res/drawable/rounded_mobile_sound_24.xml | 15 +- .../res/drawable/rounded_mobile_text_24.xml | 15 +- .../res/drawable/rounded_mobile_text_2_24.xml | 15 +- .../res/drawable/rounded_mobile_unlock_24.xml | 15 +- .../drawable/rounded_mobile_vibrate_24.xml | 15 +- .../res/drawable/rounded_mode_cool_24.xml | 15 +- .../res/drawable/rounded_mode_cool_off_24.xml | 15 +- .../res/drawable/rounded_more_vert_24.xml | 15 +- .../res/drawable/rounded_music_note_24.xml | 15 +- .../res/drawable/rounded_music_video_24.xml | 15 +- .../res/drawable/rounded_my_location_24.xml | 15 +- .../res/drawable/rounded_navigation_24.xml | 15 +- .../rounded_nest_clock_farsight_analog_24.xml | 15 +- .../rounded_nest_farsight_cool_24.xml | 15 +- app/src/main/res/drawable/rounded_nfc_24.xml | 15 +- .../res/drawable/rounded_nightlight_24.xml | 15 +- .../rounded_notification_settings_24.xml | 15 +- .../rounded_notification_sound_24.xml | 15 +- .../drawable/rounded_notifications_off_24.xml | 15 +- .../rounded_notifications_unread_24.xml | 15 +- .../main/res/drawable/rounded_numbers_24.xml | 15 +- .../drawable/rounded_open_in_browser_24.xml | 15 +- .../res/drawable/rounded_open_in_new_24.xml | 16 +- .../main/res/drawable/rounded_palette_24.xml | 15 +- .../main/res/drawable/rounded_pause_24.xml | 11 +- .../res/drawable/rounded_play_arrow_24.xml | 15 +- .../res/drawable/rounded_play_pause_24.xml | 15 +- .../rounded_position_bottom_left_24.xml | 15 +- .../rounded_power_settings_new_24.xml | 15 +- .../main/res/drawable/rounded_refresh_24.xml | 15 +- .../res/drawable/rounded_release_alert_24.xml | 15 +- .../main/res/drawable/rounded_remove_24.xml | 15 +- .../res/drawable/rounded_rocket_launch_24.xml | 15 +- .../res/drawable/rounded_rotate_left_24.xml | 16 +- .../res/drawable/rounded_rotate_right_24.xml | 16 +- .../drawable/rounded_rounded_corner_24.xml | 15 +- app/src/main/res/drawable/rounded_save_24.xml | 15 +- .../main/res/drawable/rounded_school_24.xml | 15 +- .../drawable/rounded_screenshot_region_24.xml | 15 +- .../main/res/drawable/rounded_search_24.xml | 15 +- .../drawable/rounded_search_check_2_24.xml | 15 +- .../main/res/drawable/rounded_security_24.xml | 15 +- app/src/main/res/drawable/rounded_send_24.xml | 16 +- .../main/res/drawable/rounded_settings_24.xml | 15 +- .../rounded_settings_accessibility_24.xml | 15 +- .../drawable/rounded_settings_heart_24.xml | 15 +- .../rounded_settings_motion_mode_24.xml | 15 +- .../main/res/drawable/rounded_share_24.xml | 15 +- .../main/res/drawable/rounded_shield_24.xml | 15 +- .../res/drawable/rounded_shield_lock_24.xml | 15 +- .../res/drawable/rounded_shopping_cart_24.xml | 15 +- .../res/drawable/rounded_shutter_speed_24.xml | 15 +- .../rounded_signal_cellular_alt_24.xml | 15 +- .../res/drawable/rounded_skip_next_24.xml | 15 +- .../res/drawable/rounded_skip_previous_24.xml | 15 +- .../drawable/rounded_slow_motion_video_24.xml | 15 +- .../main/res/drawable/rounded_snooze_24.xml | 15 +- .../res/drawable/rounded_snowflake_24.xml | 15 +- .../res/drawable/rounded_stop_circle_24.xml | 15 +- .../res/drawable/rounded_storefront_24.xml | 15 +- .../drawable/rounded_switch_access_3_24.xml | 16 +- app/src/main/res/drawable/rounded_sync_24.xml | 15 +- .../main/res/drawable/rounded_target_24.xml | 15 +- .../main/res/drawable/rounded_task_alt_24.xml | 15 +- .../res/drawable/rounded_tile_small_24.xml | 15 +- .../res/drawable/rounded_timelapse_24.xml | 15 +- .../main/res/drawable/rounded_timer_24.xml | 15 +- .../res/drawable/rounded_timer_off_24.xml | 15 +- .../res/drawable/rounded_toggle_on_24.xml | 15 +- .../drawable/rounded_top_panel_close_24.xml | 15 +- .../res/drawable/rounded_touch_app_24.xml | 15 +- .../main/res/drawable/rounded_train_24.xml | 15 +- .../main/res/drawable/rounded_upcoming_24.xml | 15 +- app/src/main/res/drawable/rounded_usb_24.xml | 15 +- .../res/drawable/rounded_volume_down_24.xml | 16 +- .../res/drawable/rounded_volume_off_24.xml | 15 +- .../res/drawable/rounded_volume_up_24.xml | 16 +- .../main/res/drawable/rounded_vpn_key_24.xml | 15 +- .../res/drawable/rounded_wallpaper_24.xml | 15 +- .../main/res/drawable/rounded_watch_24.xml | 15 +- app/src/main/res/drawable/rounded_web_24.xml | 15 +- .../res/drawable/rounded_web_traffic_24.xml | 15 +- .../main/res/drawable/rounded_widgets_24.xml | 15 +- .../rounded_wifi_calling_bar_3_24.xml | 15 +- .../drawable/rounded_wifi_tethering_24.xml | 15 +- .../res/drawable/rounded_window_open_24.xml | 15 +- app/src/main/res/drawable/rounded_work_24.xml | 15 +- app/src/main/res/drawable/router_24px.xml | 10 +- .../main/res/drawable/router_24px_filled.xml | 10 +- app/src/main/res/drawable/router_off_24px.xml | 10 +- app/src/main/res/drawable/sameerasw_com.xml | 26 +- app/src/main/res/drawable/samsung.xml | 6 +- app/src/main/res/drawable/sony.xml | 8 +- app/src/main/res/drawable/twotone_dns_24.xml | 23 +- app/src/main/res/drawable/vivo.xml | 32 +- app/src/main/res/drawable/xiaomi.xml | 6 +- .../main/res/font/google_sans_flex_round.xml | 12 +- app/src/main/res/layout/screen_off_widget.xml | 3 +- .../res/mipmap-anydpi-v26/ic_launcher.xml | 6 +- .../mipmap-anydpi-v26/ic_launcher_round.xml | 6 +- app/src/main/res/values-night-v31/splash.xml | 1 + app/src/main/res/values-night/splash.xml | 1 + app/src/main/res/values-v31/splash.xml | 4 +- app/src/main/res/values/splash.xml | 4 +- app/src/main/res/values/strings.xml | 35 +- .../res/xml/accessibility_service_config.xml | 8 +- .../main/res/xml/batteries_widget_info.xml | 2 +- .../main/res/xml/favorites_widget_info.xml | 2 +- app/src/main/res/xml/file_paths.xml | 8 +- app/src/main/res/xml/locales_config.xml | 62 +- app/src/main/res/xml/method.xml | 4 +- .../res/xml/pixel_searchbar_widget_info.xml | 2 +- .../main/res/xml/screen_off_widget_info.xml | 12 +- app/src/main/res/xml/shortcuts.xml | 10 +- .../sameerasw/essentials/ExampleUnitTest.kt | 3 +- 376 files changed, 22754 insertions(+), 20192 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 6554bc404..3368ba747 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -4,22 +4,22 @@ plugins { } -import org.jetbrains.kotlin.gradle.dsl.JvmTarget - -kotlin { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_21) - freeCompilerArgs.add("-Xannotation-default-target=param-property") - optIn.addAll( - "androidx.compose.material3.ExperimentalMaterial3Api", - "androidx.compose.material3.ExperimentalMaterial3ExpressiveApi", - "androidx.compose.foundation.ExperimentalFoundationApi", - "androidx.compose.ui.text.ExperimentalTextApi", - "androidx.compose.foundation.ExperimentalFoundationApi", - "androidx.compose.foundation.layout.ExperimentalLayoutApi" - ) - } -} +import org . jetbrains . kotlin . gradle . dsl . JvmTarget + + kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_21) + freeCompilerArgs.add("-Xannotation-default-target=param-property") + optIn.addAll( + "androidx.compose.material3.ExperimentalMaterial3Api", + "androidx.compose.material3.ExperimentalMaterial3ExpressiveApi", + "androidx.compose.foundation.ExperimentalFoundationApi", + "androidx.compose.ui.text.ExperimentalTextApi", + "androidx.compose.foundation.ExperimentalFoundationApi", + "androidx.compose.foundation.layout.ExperimentalLayoutApi" + ) + } + } android { namespace = "com.sameerasw.essentials" @@ -139,7 +139,7 @@ dependencies { implementation(libs.androidx.wear.remote.interactions) implementation(libs.androidx.work.runtime.ktx) implementation(libs.gson) - + // Kotlin Reflect for dynamic sealed class serialization implementation(kotlin("reflect")) diff --git a/app/src/androidTest/java/com/sameerasw/essentials/ExampleInstrumentedTest.kt b/app/src/androidTest/java/com/sameerasw/essentials/ExampleInstrumentedTest.kt index 027e0002f..ff984b3f1 100644 --- a/app/src/androidTest/java/com/sameerasw/essentials/ExampleInstrumentedTest.kt +++ b/app/src/androidTest/java/com/sameerasw/essentials/ExampleInstrumentedTest.kt @@ -1,13 +1,11 @@ package com.sameerasw.essentials -import androidx.test.platform.app.InstrumentationRegistry import androidx.test.ext.junit.runners.AndroidJUnit4 - +import androidx.test.platform.app.InstrumentationRegistry +import org.junit.Assert.assertEquals import org.junit.Test import org.junit.runner.RunWith -import org.junit.Assert.* - /** * Instrumented test, which will execute on an Android device. * diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 132d3fe10..f243d312d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,11 +1,18 @@ + - + - + + + @@ -22,38 +29,56 @@ - + - - + + - + - - + + - + + - + + android:icon="@drawable/app_logo" + android:label="@string/perm_external_control_label" /> - + android:icon="@drawable/app_logo" + android:label="@string/perm_external_control_label" + android:permissionGroup="com.sameerasw.essentials.permission-group.EXTERNAL_CONTROL" + android:protectionLevel="dangerous" /> + - + @@ -63,17 +88,19 @@ android:name=".EssentialsApp" android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" + android:enableOnBackInvokedCallback="true" android:fullBackupContent="@xml/backup_rules" android:icon="@mipmap/ic_launcher" android:label="Essentials" android:localeConfig="@xml/locales_config" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" - android:enableOnBackInvokedCallback="true" android:theme="@style/Theme.Essentials"> - + + + - + android:exported="true" + android:noHistory="true" + android:theme="@android:style/Theme.Translucent.NoTitleBar"> @@ -127,37 +158,32 @@ android:name=".FeatureSettingsActivity" android:exported="false" android:label="Feature Settings" - android:theme="@style/Theme.Essentials"> - + android:theme="@style/Theme.Essentials"> - + android:theme="@style/Theme.Essentials"> - + android:theme="@style/Theme.Essentials"> - + android:theme="@style/Theme.Essentials"> - + android:theme="@style/Theme.Essentials.Translucent"> + android:targetActivity=".ui.activities.AppFreezingActivity"> @@ -209,31 +235,31 @@ + android:taskAffinity="com.sameerasw.essentials.action" + android:theme="@android:style/Theme.Translucent.NoTitleBar" /> + android:taskAffinity="com.sameerasw.essentials.pixelsearchbar" + android:theme="@android:style/Theme.Translucent.NoTitleBar" /> + android:targetActivity=".ui.activities.ActionShortcutActivity"> @@ -252,8 +278,10 @@ + + @@ -282,24 +310,24 @@ @@ -310,9 +338,9 @@ @@ -324,24 +352,24 @@ @@ -366,8 +394,8 @@ + android:exported="true" + android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"> @@ -378,8 +406,8 @@ + android:exported="true" + android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"> @@ -393,10 +421,12 @@ android:multiprocess="false" android:permission="android.permission.INTERACT_ACROSS_USERS_FULL" /> - - @@ -405,14 +435,17 @@ android:exported="true"> - + + android:exported="true" + android:label="@string/feat_pixel_searchbar_title"> @@ -446,8 +479,8 @@ @@ -458,8 +491,8 @@ + android:exported="true" + android:label="@string/batteries_widget_label"> @@ -480,8 +513,8 @@ + android:exported="true" + android:label="@string/favorites_widget_name"> @@ -501,14 +534,16 @@ - - - - @@ -541,7 +578,8 @@ - @@ -554,7 +592,8 @@ - @@ -567,7 +606,8 @@ - @@ -580,7 +620,8 @@ - @@ -593,7 +634,8 @@ - @@ -606,10 +648,11 @@ - - + - - - - + + android:permission="android.permission.BIND_INPUT_METHOD"> - + - + - + + android:permission="android.permission.BIND_CONDITION_PROVIDER_SERVICE"> @@ -694,27 +743,29 @@ + android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"> - + android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"> - @@ -727,7 +778,8 @@ - @@ -740,7 +792,8 @@ - @@ -753,7 +806,8 @@ - @@ -766,7 +820,8 @@ - @@ -779,10 +834,11 @@ - - + - @@ -806,10 +863,11 @@ - - + - - + - @@ -857,7 +917,8 @@ - @@ -870,7 +931,8 @@ - @@ -884,7 +946,8 @@ - @@ -897,14 +960,15 @@ - + android:exported="true" + android:permission="android.permission.BIND_DEVICE_ADMIN"> @@ -965,7 +1029,7 @@ - + + android:permission="android.permission.BIND_WALLPAPER"> @@ -1019,8 +1083,8 @@ @@ -1030,8 +1094,8 @@ diff --git a/app/src/main/assets/emojis.json b/app/src/main/assets/emojis.json index c72ed1a88..41ec89353 100644 --- a/app/src/main/assets/emojis.json +++ b/app/src/main/assets/emojis.json @@ -1,14674 +1,14674 @@ { - "@version": "16.0.0", - "@author": "Chalda Pnuzig ", - "@copyright": "Chalda Pnuzig 2021-2024", - "@see": "{@link https://github.com/chalda-pnuzig/emojis.json|GitHub}", - "@license": "ISC", - "emojis": { - "Smileys & Emotion": { - "face-smiling": [ - { - "code": [ - "1F600" - ], - "emoji": "😀", - "name": "grinning face" - }, - { - "code": [ - "1F603" - ], - "emoji": "😃", - "name": "grinning face with big eyes" - }, - { - "code": [ - "1F604" - ], - "emoji": "😄", - "name": "grinning face with smiling eyes" - }, - { - "code": [ - "1F601" - ], - "emoji": "😁", - "name": "beaming face with smiling eyes" - }, - { - "code": [ - "1F606" - ], - "emoji": "😆", - "name": "grinning squinting face" - }, - { - "code": [ - "1F605" - ], - "emoji": "😅", - "name": "grinning face with sweat" - }, - { - "code": [ - "1F923" - ], - "emoji": "🤣", - "name": "rolling on the floor laughing" - }, - { - "code": [ - "1F602" - ], - "emoji": "😂", - "name": "face with tears of joy" - }, - { - "code": [ - "1F642" - ], - "emoji": "🙂", - "name": "slightly smiling face" - }, - { - "code": [ - "1F643" - ], - "emoji": "🙃", - "name": "upside-down face" - }, - { - "code": [ - "1FAE0" - ], - "emoji": "🫠", - "name": "melting face" - }, - { - "code": [ - "1F609" - ], - "emoji": "😉", - "name": "winking face" - }, - { - "code": [ - "1F60A" - ], - "emoji": "😊", - "name": "smiling face with smiling eyes" - }, - { - "code": [ - "1F607" - ], - "emoji": "😇", - "name": "smiling face with halo" - } - ], - "face-affection": [ - { - "code": [ - "1F970" - ], - "emoji": "🥰", - "name": "smiling face with hearts" - }, - { - "code": [ - "1F60D" - ], - "emoji": "😍", - "name": "smiling face with heart-eyes" - }, - { - "code": [ - "1F929" - ], - "emoji": "🤩", - "name": "star-struck" - }, - { - "code": [ - "1F618" - ], - "emoji": "😘", - "name": "face blowing a kiss" - }, - { - "code": [ - "1F617" - ], - "emoji": "😗", - "name": "kissing face" - }, - { - "code": [ - "263A" - ], - "emoji": "☺", - "name": "smiling face" - }, - { - "code": [ - "1F61A" - ], - "emoji": "😚", - "name": "kissing face with closed eyes" - }, - { - "code": [ - "1F619" - ], - "emoji": "😙", - "name": "kissing face with smiling eyes" - }, - { - "code": [ - "1F972" - ], - "emoji": "🥲", - "name": "smiling face with tear" - } - ], - "face-tongue": [ - { - "code": [ - "1F60B" - ], - "emoji": "😋", - "name": "face savoring food" - }, - { - "code": [ - "1F61B" - ], - "emoji": "😛", - "name": "face with tongue" - }, - { - "code": [ - "1F61C" - ], - "emoji": "😜", - "name": "winking face with tongue" - }, - { - "code": [ - "1F92A" - ], - "emoji": "🤪", - "name": "zany face" - }, - { - "code": [ - "1F61D" - ], - "emoji": "😝", - "name": "squinting face with tongue" - }, - { - "code": [ - "1F911" - ], - "emoji": "🤑", - "name": "money-mouth face" - } - ], - "face-hand": [ - { - "code": [ - "1F917" - ], - "emoji": "🤗", - "name": "smiling face with open hands" - }, - { - "code": [ - "1F92D" - ], - "emoji": "🤭", - "name": "face with hand over mouth" - }, - { - "code": [ - "1FAE2" - ], - "emoji": "🫢", - "name": "face with open eyes and hand over mouth" - }, - { - "code": [ - "1FAE3" - ], - "emoji": "🫣", - "name": "face with peeking eye" - }, - { - "code": [ - "1F92B" - ], - "emoji": "🤫", - "name": "shushing face" - }, - { - "code": [ - "1F914" - ], - "emoji": "🤔", - "name": "thinking face" - }, - { - "code": [ - "1FAE1" - ], - "emoji": "🫡", - "name": "saluting face" - } - ], - "face-neutral-skeptical": [ - { - "code": [ - "1F910" - ], - "emoji": "🤐", - "name": "zipper-mouth face" - }, - { - "code": [ - "1F928" - ], - "emoji": "🤨", - "name": "face with raised eyebrow" - }, - { - "code": [ - "1F610" - ], - "emoji": "😐", - "name": "neutral face" - }, - { - "code": [ - "1F611" - ], - "emoji": "😑", - "name": "expressionless face" - }, - { - "code": [ - "1F636" - ], - "emoji": "😶", - "name": "face without mouth" - }, - { - "code": [ - "1FAE5" - ], - "emoji": "🫥", - "name": "dotted line face" - }, - { - "code": [ - "1F636", - "200D", - "1F32B", - "FE0F" - ], - "emoji": "😶‍🌫️", - "name": "face in clouds" - }, - { - "code": [ - "1F60F" - ], - "emoji": "😏", - "name": "smirking face" - }, - { - "code": [ - "1F612" - ], - "emoji": "😒", - "name": "unamused face" - }, - { - "code": [ - "1F644" - ], - "emoji": "🙄", - "name": "face with rolling eyes" - }, - { - "code": [ - "1F62C" - ], - "emoji": "😬", - "name": "grimacing face" - }, - { - "code": [ - "1F62E", - "200D", - "1F4A8" - ], - "emoji": "😮‍💨", - "name": "face exhaling" - }, - { - "code": [ - "1F925" - ], - "emoji": "🤥", - "name": "lying face" - }, - { - "code": [ - "1FAE8" - ], - "emoji": "🫨", - "name": "shaking face" - }, - { - "code": [ - "1F642", - "200D", - "2194", - "FE0F" - ], - "emoji": "🙂‍↔️", - "name": "head shaking horizontally" - }, - { - "code": [ - "1F642", - "200D", - "2195", - "FE0F" - ], - "emoji": "🙂‍↕️", - "name": "head shaking vertically" - } - ], - "face-sleepy": [ - { - "code": [ - "1F60C" - ], - "emoji": "😌", - "name": "relieved face" - }, - { - "code": [ - "1F614" - ], - "emoji": "😔", - "name": "pensive face" - }, - { - "code": [ - "1F62A" - ], - "emoji": "😪", - "name": "sleepy face" - }, - { - "code": [ - "1F924" - ], - "emoji": "🤤", - "name": "drooling face" - }, - { - "code": [ - "1F634" - ], - "emoji": "😴", - "name": "sleeping face" - }, - { - "code": [ - "1FAE9" - ], - "emoji": "🫩", - "name": "face with bags under eyes" - } - ], - "face-unwell": [ - { - "code": [ - "1F637" - ], - "emoji": "😷", - "name": "face with medical mask" - }, - { - "code": [ - "1F912" - ], - "emoji": "🤒", - "name": "face with thermometer" - }, - { - "code": [ - "1F915" - ], - "emoji": "🤕", - "name": "face with head-bandage" - }, - { - "code": [ - "1F922" - ], - "emoji": "🤢", - "name": "nauseated face" - }, - { - "code": [ - "1F92E" - ], - "emoji": "🤮", - "name": "face vomiting" - }, - { - "code": [ - "1F927" - ], - "emoji": "🤧", - "name": "sneezing face" - }, - { - "code": [ - "1F975" - ], - "emoji": "🥵", - "name": "hot face" - }, - { - "code": [ - "1F976" - ], - "emoji": "🥶", - "name": "cold face" - }, - { - "code": [ - "1F974" - ], - "emoji": "🥴", - "name": "woozy face" - }, - { - "code": [ - "1F635" - ], - "emoji": "😵", - "name": "face with crossed-out eyes" - }, - { - "code": [ - "1F635", - "200D", - "1F4AB" - ], - "emoji": "😵‍💫", - "name": "face with spiral eyes" - }, - { - "code": [ - "1F92F" - ], - "emoji": "🤯", - "name": "exploding head" - } - ], - "face-hat": [ - { - "code": [ - "1F920" - ], - "emoji": "🤠", - "name": "cowboy hat face" - }, - { - "code": [ - "1F973" - ], - "emoji": "🥳", - "name": "partying face" - }, - { - "code": [ - "1F978" - ], - "emoji": "🥸", - "name": "disguised face" - } - ], - "face-glasses": [ - { - "code": [ - "1F60E" - ], - "emoji": "😎", - "name": "smiling face with sunglasses" - }, - { - "code": [ - "1F913" - ], - "emoji": "🤓", - "name": "nerd face" - }, - { - "code": [ - "1F9D0" - ], - "emoji": "🧐", - "name": "face with monocle" - } - ], - "face-concerned": [ - { - "code": [ - "1F615" - ], - "emoji": "😕", - "name": "confused face" - }, - { - "code": [ - "1FAE4" - ], - "emoji": "🫤", - "name": "face with diagonal mouth" - }, - { - "code": [ - "1F61F" - ], - "emoji": "😟", - "name": "worried face" - }, - { - "code": [ - "1F641" - ], - "emoji": "🙁", - "name": "slightly frowning face" - }, - { - "code": [ - "2639" - ], - "emoji": "☹", - "name": "frowning face" - }, - { - "code": [ - "1F62E" - ], - "emoji": "😮", - "name": "face with open mouth" - }, - { - "code": [ - "1F62F" - ], - "emoji": "😯", - "name": "hushed face" - }, - { - "code": [ - "1F632" - ], - "emoji": "😲", - "name": "astonished face" - }, - { - "code": [ - "1F633" - ], - "emoji": "😳", - "name": "flushed face" - }, - { - "code": [ - "1F97A" - ], - "emoji": "🥺", - "name": "pleading face" - }, - { - "code": [ - "1F979" - ], - "emoji": "🥹", - "name": "face holding back tears" - }, - { - "code": [ - "1F626" - ], - "emoji": "😦", - "name": "frowning face with open mouth" - }, - { - "code": [ - "1F627" - ], - "emoji": "😧", - "name": "anguished face" - }, - { - "code": [ - "1F628" - ], - "emoji": "😨", - "name": "fearful face" - }, - { - "code": [ - "1F630" - ], - "emoji": "😰", - "name": "anxious face with sweat" - }, - { - "code": [ - "1F625" - ], - "emoji": "😥", - "name": "sad but relieved face" - }, - { - "code": [ - "1F622" - ], - "emoji": "😢", - "name": "crying face" - }, - { - "code": [ - "1F62D" - ], - "emoji": "😭", - "name": "loudly crying face" - }, - { - "code": [ - "1F631" - ], - "emoji": "😱", - "name": "face screaming in fear" - }, - { - "code": [ - "1F616" - ], - "emoji": "😖", - "name": "confounded face" - }, - { - "code": [ - "1F623" - ], - "emoji": "😣", - "name": "persevering face" - }, - { - "code": [ - "1F61E" - ], - "emoji": "😞", - "name": "disappointed face" - }, - { - "code": [ - "1F613" - ], - "emoji": "😓", - "name": "downcast face with sweat" - }, - { - "code": [ - "1F629" - ], - "emoji": "😩", - "name": "weary face" - }, - { - "code": [ - "1F62B" - ], - "emoji": "😫", - "name": "tired face" - }, - { - "code": [ - "1F971" - ], - "emoji": "🥱", - "name": "yawning face" - } - ], - "face-negative": [ - { - "code": [ - "1F624" - ], - "emoji": "😤", - "name": "face with steam from nose" - }, - { - "code": [ - "1F621" - ], - "emoji": "😡", - "name": "enraged face" - }, - { - "code": [ - "1F620" - ], - "emoji": "😠", - "name": "angry face" - }, - { - "code": [ - "1F92C" - ], - "emoji": "🤬", - "name": "face with symbols on mouth" - }, - { - "code": [ - "1F608" - ], - "emoji": "😈", - "name": "smiling face with horns" - }, - { - "code": [ - "1F47F" - ], - "emoji": "👿", - "name": "angry face with horns" - }, - { - "code": [ - "1F480" - ], - "emoji": "💀", - "name": "skull" - }, - { - "code": [ - "2620" - ], - "emoji": "☠", - "name": "skull and crossbones" - } - ], - "face-costume": [ - { - "code": [ - "1F4A9" - ], - "emoji": "💩", - "name": "pile of poo" - }, - { - "code": [ - "1F921" - ], - "emoji": "🤡", - "name": "clown face" - }, - { - "code": [ - "1F479" - ], - "emoji": "👹", - "name": "ogre" - }, - { - "code": [ - "1F47A" - ], - "emoji": "👺", - "name": "goblin" - }, - { - "code": [ - "1F47B" - ], - "emoji": "👻", - "name": "ghost" - }, - { - "code": [ - "1F47D" - ], - "emoji": "👽", - "name": "alien" - }, - { - "code": [ - "1F47E" - ], - "emoji": "👾", - "name": "alien monster" - }, - { - "code": [ - "1F916" - ], - "emoji": "🤖", - "name": "robot" - } - ], - "cat-face": [ - { - "code": [ - "1F63A" - ], - "emoji": "😺", - "name": "grinning cat" - }, - { - "code": [ - "1F638" - ], - "emoji": "😸", - "name": "grinning cat with smiling eyes" - }, - { - "code": [ - "1F639" - ], - "emoji": "😹", - "name": "cat with tears of joy" - }, - { - "code": [ - "1F63B" - ], - "emoji": "😻", - "name": "smiling cat with heart-eyes" - }, - { - "code": [ - "1F63C" - ], - "emoji": "😼", - "name": "cat with wry smile" - }, - { - "code": [ - "1F63D" - ], - "emoji": "😽", - "name": "kissing cat" - }, - { - "code": [ - "1F640" - ], - "emoji": "🙀", - "name": "weary cat" - }, - { - "code": [ - "1F63F" - ], - "emoji": "😿", - "name": "crying cat" - }, - { - "code": [ - "1F63E" - ], - "emoji": "😾", - "name": "pouting cat" - } - ], - "monkey-face": [ - { - "code": [ - "1F648" - ], - "emoji": "🙈", - "name": "see-no-evil monkey" - }, - { - "code": [ - "1F649" - ], - "emoji": "🙉", - "name": "hear-no-evil monkey" - }, - { - "code": [ - "1F64A" - ], - "emoji": "🙊", - "name": "speak-no-evil monkey" - } - ], - "heart": [ - { - "code": [ - "1F48C" - ], - "emoji": "💌", - "name": "love letter" - }, - { - "code": [ - "1F498" - ], - "emoji": "💘", - "name": "heart with arrow" - }, - { - "code": [ - "1F49D" - ], - "emoji": "💝", - "name": "heart with ribbon" - }, - { - "code": [ - "1F496" - ], - "emoji": "💖", - "name": "sparkling heart" - }, - { - "code": [ - "1F497" - ], - "emoji": "💗", - "name": "growing heart" - }, - { - "code": [ - "1F493" - ], - "emoji": "💓", - "name": "beating heart" - }, - { - "code": [ - "1F49E" - ], - "emoji": "💞", - "name": "revolving hearts" - }, - { - "code": [ - "1F495" - ], - "emoji": "💕", - "name": "two hearts" - }, - { - "code": [ - "1F49F" - ], - "emoji": "💟", - "name": "heart decoration" - }, - { - "code": [ - "2763" - ], - "emoji": "❣", - "name": "heart exclamation" - }, - { - "code": [ - "1F494" - ], - "emoji": "💔", - "name": "broken heart" - }, - { - "code": [ - "2764", - "FE0F", - "200D", - "1F525" - ], - "emoji": "❤️‍🔥", - "name": "heart on fire" - }, - { - "code": [ - "2764", - "FE0F", - "200D", - "1FA79" - ], - "emoji": "❤️‍🩹", - "name": "mending heart" - }, - { - "code": [ - "2764" - ], - "emoji": "❤", - "name": "red heart" - }, - { - "code": [ - "1FA77" - ], - "emoji": "🩷", - "name": "pink heart" - }, - { - "code": [ - "1F9E1" - ], - "emoji": "🧡", - "name": "orange heart" - }, - { - "code": [ - "1F49B" - ], - "emoji": "💛", - "name": "yellow heart" - }, - { - "code": [ - "1F49A" - ], - "emoji": "💚", - "name": "green heart" - }, - { - "code": [ - "1F499" - ], - "emoji": "💙", - "name": "blue heart" - }, - { - "code": [ - "1FA75" - ], - "emoji": "🩵", - "name": "light blue heart" - }, - { - "code": [ - "1F49C" - ], - "emoji": "💜", - "name": "purple heart" - }, - { - "code": [ - "1F90E" - ], - "emoji": "🤎", - "name": "brown heart" - }, - { - "code": [ - "1F5A4" - ], - "emoji": "🖤", - "name": "black heart" - }, - { - "code": [ - "1FA76" - ], - "emoji": "🩶", - "name": "grey heart" - }, - { - "code": [ - "1F90D" - ], - "emoji": "🤍", - "name": "white heart" - } - ], - "emotion": [ - { - "code": [ - "1F48B" - ], - "emoji": "💋", - "name": "kiss mark" - }, - { - "code": [ - "1F4AF" - ], - "emoji": "💯", - "name": "hundred points" - }, - { - "code": [ - "1F4A2" - ], - "emoji": "💢", - "name": "anger symbol" - }, - { - "code": [ - "1F4A5" - ], - "emoji": "💥", - "name": "collision" - }, - { - "code": [ - "1F4AB" - ], - "emoji": "💫", - "name": "dizzy" - }, - { - "code": [ - "1F4A6" - ], - "emoji": "💦", - "name": "sweat droplets" - }, - { - "code": [ - "1F4A8" - ], - "emoji": "💨", - "name": "dashing away" - }, - { - "code": [ - "1F573" - ], - "emoji": "🕳", - "name": "hole" - }, - { - "code": [ - "1F4AC" - ], - "emoji": "💬", - "name": "speech balloon" - }, - { - "code": [ - "1F441", - "FE0F", - "200D", - "1F5E8", - "FE0F" - ], - "emoji": "👁️‍🗨️", - "name": "eye in speech bubble" - }, - { - "code": [ - "1F5E8" - ], - "emoji": "🗨", - "name": "left speech bubble" - }, - { - "code": [ - "1F5EF" - ], - "emoji": "🗯", - "name": "right anger bubble" - }, - { - "code": [ - "1F4AD" - ], - "emoji": "💭", - "name": "thought balloon" - }, - { - "code": [ - "1F4A4" - ], - "emoji": "💤", - "name": "ZZZ" - } - ] - }, - "People & Body": { - "hand-fingers-open": [ - { - "code": [ - "1F44B" - ], - "emoji": "👋", - "name": "waving hand" - }, - { - "code": [ - "1F91A" - ], - "emoji": "🤚", - "name": "raised back of hand" - }, - { - "code": [ - "1F590" - ], - "emoji": "🖐", - "name": "hand with fingers splayed" - }, - { - "code": [ - "270B" - ], - "emoji": "✋", - "name": "raised hand" - }, - { - "code": [ - "1F596" - ], - "emoji": "🖖", - "name": "vulcan salute" - }, - { - "code": [ - "1FAF1" - ], - "emoji": "🫱", - "name": "rightwards hand" - }, - { - "code": [ - "1FAF2" - ], - "emoji": "🫲", - "name": "leftwards hand" - }, - { - "code": [ - "1FAF3" - ], - "emoji": "🫳", - "name": "palm down hand" - }, - { - "code": [ - "1FAF4" - ], - "emoji": "🫴", - "name": "palm up hand" - }, - { - "code": [ - "1FAF7" - ], - "emoji": "🫷", - "name": "leftwards pushing hand" - }, - { - "code": [ - "1FAF8" - ], - "emoji": "🫸", - "name": "rightwards pushing hand" - } - ], - "hand-fingers-partial": [ - { - "code": [ - "1F44C" - ], - "emoji": "👌", - "name": "OK hand" - }, - { - "code": [ - "1F90C" - ], - "emoji": "🤌", - "name": "pinched fingers" - }, - { - "code": [ - "1F90F" - ], - "emoji": "🤏", - "name": "pinching hand" - }, - { - "code": [ - "270C" - ], - "emoji": "✌", - "name": "victory hand" - }, - { - "code": [ - "1F91E" - ], - "emoji": "🤞", - "name": "crossed fingers" - }, - { - "code": [ - "1FAF0" - ], - "emoji": "🫰", - "name": "hand with index finger and thumb crossed" - }, - { - "code": [ - "1F91F" - ], - "emoji": "🤟", - "name": "love-you gesture" - }, - { - "code": [ - "1F918" - ], - "emoji": "🤘", - "name": "sign of the horns" - }, - { - "code": [ - "1F919" - ], - "emoji": "🤙", - "name": "call me hand" - } - ], - "hand-single-finger": [ - { - "code": [ - "1F448" - ], - "emoji": "👈", - "name": "backhand index pointing left" - }, - { - "code": [ - "1F449" - ], - "emoji": "👉", - "name": "backhand index pointing right" - }, - { - "code": [ - "1F446" - ], - "emoji": "👆", - "name": "backhand index pointing up" - }, - { - "code": [ - "1F595" - ], - "emoji": "🖕", - "name": "middle finger" - }, - { - "code": [ - "1F447" - ], - "emoji": "👇", - "name": "backhand index pointing down" - }, - { - "code": [ - "261D" - ], - "emoji": "☝", - "name": "index pointing up" - }, - { - "code": [ - "1FAF5" - ], - "emoji": "🫵", - "name": "index pointing at the viewer" - } - ], - "hand-fingers-closed": [ - { - "code": [ - "1F44D" - ], - "emoji": "👍", - "name": "thumbs up" - }, - { - "code": [ - "1F44E" - ], - "emoji": "👎", - "name": "thumbs down" - }, - { - "code": [ - "270A" - ], - "emoji": "✊", - "name": "raised fist" - }, - { - "code": [ - "1F44A" - ], - "emoji": "👊", - "name": "oncoming fist" - }, - { - "code": [ - "1F91B" - ], - "emoji": "🤛", - "name": "left-facing fist" - }, - { - "code": [ - "1F91C" - ], - "emoji": "🤜", - "name": "right-facing fist" - } - ], - "hands": [ - { - "code": [ - "1F44F" - ], - "emoji": "👏", - "name": "clapping hands" - }, - { - "code": [ - "1F64C" - ], - "emoji": "🙌", - "name": "raising hands" - }, - { - "code": [ - "1FAF6" - ], - "emoji": "🫶", - "name": "heart hands" - }, - { - "code": [ - "1F450" - ], - "emoji": "👐", - "name": "open hands" - }, - { - "code": [ - "1F932" - ], - "emoji": "🤲", - "name": "palms up together" - }, - { - "code": [ - "1F91D" - ], - "emoji": "🤝", - "name": "handshake" - }, - { - "code": [ - "1F64F" - ], - "emoji": "🙏", - "name": "folded hands" - } - ], - "hand-prop": [ - { - "code": [ - "270D" - ], - "emoji": "✍", - "name": "writing hand" - }, - { - "code": [ - "1F485" - ], - "emoji": "💅", - "name": "nail polish" - }, - { - "code": [ - "1F933" - ], - "emoji": "🤳", - "name": "selfie" - } - ], - "body-parts": [ - { - "code": [ - "1F4AA" - ], - "emoji": "💪", - "name": "flexed biceps" - }, - { - "code": [ - "1F9BE" - ], - "emoji": "🦾", - "name": "mechanical arm" - }, - { - "code": [ - "1F9BF" - ], - "emoji": "🦿", - "name": "mechanical leg" - }, - { - "code": [ - "1F9B5" - ], - "emoji": "🦵", - "name": "leg" - }, - { - "code": [ - "1F9B6" - ], - "emoji": "🦶", - "name": "foot" - }, - { - "code": [ - "1F442" - ], - "emoji": "👂", - "name": "ear" - }, - { - "code": [ - "1F9BB" - ], - "emoji": "🦻", - "name": "ear with hearing aid" - }, - { - "code": [ - "1F443" - ], - "emoji": "👃", - "name": "nose" - }, - { - "code": [ - "1F9E0" - ], - "emoji": "🧠", - "name": "brain" - }, - { - "code": [ - "1FAC0" - ], - "emoji": "🫀", - "name": "anatomical heart" - }, - { - "code": [ - "1FAC1" - ], - "emoji": "🫁", - "name": "lungs" - }, - { - "code": [ - "1F9B7" - ], - "emoji": "🦷", - "name": "tooth" - }, - { - "code": [ - "1F9B4" - ], - "emoji": "🦴", - "name": "bone" - }, - { - "code": [ - "1F440" - ], - "emoji": "👀", - "name": "eyes" - }, - { - "code": [ - "1F441" - ], - "emoji": "👁", - "name": "eye" - }, - { - "code": [ - "1F445" - ], - "emoji": "👅", - "name": "tongue" - }, - { - "code": [ - "1F444" - ], - "emoji": "👄", - "name": "mouth" - }, - { - "code": [ - "1FAE6" - ], - "emoji": "🫦", - "name": "biting lip" - } - ], - "person": [ - { - "code": [ - "1F476" - ], - "emoji": "👶", - "name": "baby" - }, - { - "code": [ - "1F9D2" - ], - "emoji": "🧒", - "name": "child" - }, - { - "code": [ - "1F466" - ], - "emoji": "👦", - "name": "boy" - }, - { - "code": [ - "1F467" - ], - "emoji": "👧", - "name": "girl" - }, - { - "code": [ - "1F9D1" - ], - "emoji": "🧑", - "name": "person" - }, - { - "code": [ - "1F471" - ], - "emoji": "👱", - "name": "person: blond hair" - }, - { - "code": [ - "1F468" - ], - "emoji": "👨", - "name": "man" - }, - { - "code": [ - "1F9D4" - ], - "emoji": "🧔", - "name": "person: beard" - }, - { - "code": [ - "1F9D4", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧔‍♂️", - "name": "man: beard" - }, - { - "code": [ - "1F9D4", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧔‍♀️", - "name": "woman: beard" - }, - { - "code": [ - "1F468", - "200D", - "1F9B0" - ], - "emoji": "👨‍🦰", - "name": "man: red hair" - }, - { - "code": [ - "1F468", - "200D", - "1F9B1" - ], - "emoji": "👨‍🦱", - "name": "man: curly hair" - }, - { - "code": [ - "1F468", - "200D", - "1F9B3" - ], - "emoji": "👨‍🦳", - "name": "man: white hair" - }, - { - "code": [ - "1F468", - "200D", - "1F9B2" - ], - "emoji": "👨‍🦲", - "name": "man: bald" - }, - { - "code": [ - "1F469" - ], - "emoji": "👩", - "name": "woman" - }, - { - "code": [ - "1F469", - "200D", - "1F9B0" - ], - "emoji": "👩‍🦰", - "name": "woman: red hair" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9B0" - ], - "emoji": "🧑‍🦰", - "name": "person: red hair" - }, - { - "code": [ - "1F469", - "200D", - "1F9B1" - ], - "emoji": "👩‍🦱", - "name": "woman: curly hair" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9B1" - ], - "emoji": "🧑‍🦱", - "name": "person: curly hair" - }, - { - "code": [ - "1F469", - "200D", - "1F9B3" - ], - "emoji": "👩‍🦳", - "name": "woman: white hair" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9B3" - ], - "emoji": "🧑‍🦳", - "name": "person: white hair" - }, - { - "code": [ - "1F469", - "200D", - "1F9B2" - ], - "emoji": "👩‍🦲", - "name": "woman: bald" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9B2" - ], - "emoji": "🧑‍🦲", - "name": "person: bald" - }, - { - "code": [ - "1F471", - "200D", - "2640", - "FE0F" - ], - "emoji": "👱‍♀️", - "name": "woman: blond hair" - }, - { - "code": [ - "1F471", - "200D", - "2642", - "FE0F" - ], - "emoji": "👱‍♂️", - "name": "man: blond hair" - }, - { - "code": [ - "1F9D3" - ], - "emoji": "🧓", - "name": "older person" - }, - { - "code": [ - "1F474" - ], - "emoji": "👴", - "name": "old man" - }, - { - "code": [ - "1F475" - ], - "emoji": "👵", - "name": "old woman" - } - ], - "person-gesture": [ - { - "code": [ - "1F64D" - ], - "emoji": "🙍", - "name": "person frowning" - }, - { - "code": [ - "1F64D", - "200D", - "2642", - "FE0F" - ], - "emoji": "🙍‍♂️", - "name": "man frowning" - }, - { - "code": [ - "1F64D", - "200D", - "2640", - "FE0F" - ], - "emoji": "🙍‍♀️", - "name": "woman frowning" - }, - { - "code": [ - "1F64E" - ], - "emoji": "🙎", - "name": "person pouting" - }, - { - "code": [ - "1F64E", - "200D", - "2642", - "FE0F" - ], - "emoji": "🙎‍♂️", - "name": "man pouting" - }, - { - "code": [ - "1F64E", - "200D", - "2640", - "FE0F" - ], - "emoji": "🙎‍♀️", - "name": "woman pouting" - }, - { - "code": [ - "1F645" - ], - "emoji": "🙅", - "name": "person gesturing NO" - }, - { - "code": [ - "1F645", - "200D", - "2642", - "FE0F" - ], - "emoji": "🙅‍♂️", - "name": "man gesturing NO" - }, - { - "code": [ - "1F645", - "200D", - "2640", - "FE0F" - ], - "emoji": "🙅‍♀️", - "name": "woman gesturing NO" - }, - { - "code": [ - "1F646" - ], - "emoji": "🙆", - "name": "person gesturing OK" - }, - { - "code": [ - "1F646", - "200D", - "2642", - "FE0F" - ], - "emoji": "🙆‍♂️", - "name": "man gesturing OK" - }, - { - "code": [ - "1F646", - "200D", - "2640", - "FE0F" - ], - "emoji": "🙆‍♀️", - "name": "woman gesturing OK" - }, - { - "code": [ - "1F481" - ], - "emoji": "💁", - "name": "person tipping hand" - }, - { - "code": [ - "1F481", - "200D", - "2642", - "FE0F" - ], - "emoji": "💁‍♂️", - "name": "man tipping hand" - }, - { - "code": [ - "1F481", - "200D", - "2640", - "FE0F" - ], - "emoji": "💁‍♀️", - "name": "woman tipping hand" - }, - { - "code": [ - "1F64B" - ], - "emoji": "🙋", - "name": "person raising hand" - }, - { - "code": [ - "1F64B", - "200D", - "2642", - "FE0F" - ], - "emoji": "🙋‍♂️", - "name": "man raising hand" - }, - { - "code": [ - "1F64B", - "200D", - "2640", - "FE0F" - ], - "emoji": "🙋‍♀️", - "name": "woman raising hand" - }, - { - "code": [ - "1F9CF" - ], - "emoji": "🧏", - "name": "deaf person" - }, - { - "code": [ - "1F9CF", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧏‍♂️", - "name": "deaf man" - }, - { - "code": [ - "1F9CF", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧏‍♀️", - "name": "deaf woman" - }, - { - "code": [ - "1F647" - ], - "emoji": "🙇", - "name": "person bowing" - }, - { - "code": [ - "1F647", - "200D", - "2642", - "FE0F" - ], - "emoji": "🙇‍♂️", - "name": "man bowing" - }, - { - "code": [ - "1F647", - "200D", - "2640", - "FE0F" - ], - "emoji": "🙇‍♀️", - "name": "woman bowing" - }, - { - "code": [ - "1F926" - ], - "emoji": "🤦", - "name": "person facepalming" - }, - { - "code": [ - "1F926", - "200D", - "2642", - "FE0F" - ], - "emoji": "🤦‍♂️", - "name": "man facepalming" - }, - { - "code": [ - "1F926", - "200D", - "2640", - "FE0F" - ], - "emoji": "🤦‍♀️", - "name": "woman facepalming" - }, - { - "code": [ - "1F937" - ], - "emoji": "🤷", - "name": "person shrugging" - }, - { - "code": [ - "1F937", - "200D", - "2642", - "FE0F" - ], - "emoji": "🤷‍♂️", - "name": "man shrugging" - }, - { - "code": [ - "1F937", - "200D", - "2640", - "FE0F" - ], - "emoji": "🤷‍♀️", - "name": "woman shrugging" - } - ], - "person-role": [ - { - "code": [ - "1F9D1", - "200D", - "2695", - "FE0F" - ], - "emoji": "🧑‍⚕️", - "name": "health worker" - }, - { - "code": [ - "1F468", - "200D", - "2695", - "FE0F" - ], - "emoji": "👨‍⚕️", - "name": "man health worker" - }, - { - "code": [ - "1F469", - "200D", - "2695", - "FE0F" - ], - "emoji": "👩‍⚕️", - "name": "woman health worker" - }, - { - "code": [ - "1F9D1", - "200D", - "1F393" - ], - "emoji": "🧑‍🎓", - "name": "student" - }, - { - "code": [ - "1F468", - "200D", - "1F393" - ], - "emoji": "👨‍🎓", - "name": "man student" - }, - { - "code": [ - "1F469", - "200D", - "1F393" - ], - "emoji": "👩‍🎓", - "name": "woman student" - }, - { - "code": [ - "1F9D1", - "200D", - "1F3EB" - ], - "emoji": "🧑‍🏫", - "name": "teacher" - }, - { - "code": [ - "1F468", - "200D", - "1F3EB" - ], - "emoji": "👨‍🏫", - "name": "man teacher" - }, - { - "code": [ - "1F469", - "200D", - "1F3EB" - ], - "emoji": "👩‍🏫", - "name": "woman teacher" - }, - { - "code": [ - "1F9D1", - "200D", - "2696", - "FE0F" - ], - "emoji": "🧑‍⚖️", - "name": "judge" - }, - { - "code": [ - "1F468", - "200D", - "2696", - "FE0F" - ], - "emoji": "👨‍⚖️", - "name": "man judge" - }, - { - "code": [ - "1F469", - "200D", - "2696", - "FE0F" - ], - "emoji": "👩‍⚖️", - "name": "woman judge" - }, - { - "code": [ - "1F9D1", - "200D", - "1F33E" - ], - "emoji": "🧑‍🌾", - "name": "farmer" - }, - { - "code": [ - "1F468", - "200D", - "1F33E" - ], - "emoji": "👨‍🌾", - "name": "man farmer" - }, - { - "code": [ - "1F469", - "200D", - "1F33E" - ], - "emoji": "👩‍🌾", - "name": "woman farmer" - }, - { - "code": [ - "1F9D1", - "200D", - "1F373" - ], - "emoji": "🧑‍🍳", - "name": "cook" - }, - { - "code": [ - "1F468", - "200D", - "1F373" - ], - "emoji": "👨‍🍳", - "name": "man cook" - }, - { - "code": [ - "1F469", - "200D", - "1F373" - ], - "emoji": "👩‍🍳", - "name": "woman cook" - }, - { - "code": [ - "1F9D1", - "200D", - "1F527" - ], - "emoji": "🧑‍🔧", - "name": "mechanic" - }, - { - "code": [ - "1F468", - "200D", - "1F527" - ], - "emoji": "👨‍🔧", - "name": "man mechanic" - }, - { - "code": [ - "1F469", - "200D", - "1F527" - ], - "emoji": "👩‍🔧", - "name": "woman mechanic" - }, - { - "code": [ - "1F9D1", - "200D", - "1F3ED" - ], - "emoji": "🧑‍🏭", - "name": "factory worker" - }, - { - "code": [ - "1F468", - "200D", - "1F3ED" - ], - "emoji": "👨‍🏭", - "name": "man factory worker" - }, - { - "code": [ - "1F469", - "200D", - "1F3ED" - ], - "emoji": "👩‍🏭", - "name": "woman factory worker" - }, - { - "code": [ - "1F9D1", - "200D", - "1F4BC" - ], - "emoji": "🧑‍💼", - "name": "office worker" - }, - { - "code": [ - "1F468", - "200D", - "1F4BC" - ], - "emoji": "👨‍💼", - "name": "man office worker" - }, - { - "code": [ - "1F469", - "200D", - "1F4BC" - ], - "emoji": "👩‍💼", - "name": "woman office worker" - }, - { - "code": [ - "1F9D1", - "200D", - "1F52C" - ], - "emoji": "🧑‍🔬", - "name": "scientist" - }, - { - "code": [ - "1F468", - "200D", - "1F52C" - ], - "emoji": "👨‍🔬", - "name": "man scientist" - }, - { - "code": [ - "1F469", - "200D", - "1F52C" - ], - "emoji": "👩‍🔬", - "name": "woman scientist" - }, - { - "code": [ - "1F9D1", - "200D", - "1F4BB" - ], - "emoji": "🧑‍💻", - "name": "technologist" - }, - { - "code": [ - "1F468", - "200D", - "1F4BB" - ], - "emoji": "👨‍💻", - "name": "man technologist" - }, - { - "code": [ - "1F469", - "200D", - "1F4BB" - ], - "emoji": "👩‍💻", - "name": "woman technologist" - }, - { - "code": [ - "1F9D1", - "200D", - "1F3A4" - ], - "emoji": "🧑‍🎤", - "name": "singer" - }, - { - "code": [ - "1F468", - "200D", - "1F3A4" - ], - "emoji": "👨‍🎤", - "name": "man singer" - }, - { - "code": [ - "1F469", - "200D", - "1F3A4" - ], - "emoji": "👩‍🎤", - "name": "woman singer" - }, - { - "code": [ - "1F9D1", - "200D", - "1F3A8" - ], - "emoji": "🧑‍🎨", - "name": "artist" - }, - { - "code": [ - "1F468", - "200D", - "1F3A8" - ], - "emoji": "👨‍🎨", - "name": "man artist" - }, - { - "code": [ - "1F469", - "200D", - "1F3A8" - ], - "emoji": "👩‍🎨", - "name": "woman artist" - }, - { - "code": [ - "1F9D1", - "200D", - "2708", - "FE0F" - ], - "emoji": "🧑‍✈️", - "name": "pilot" - }, - { - "code": [ - "1F468", - "200D", - "2708", - "FE0F" - ], - "emoji": "👨‍✈️", - "name": "man pilot" - }, - { - "code": [ - "1F469", - "200D", - "2708", - "FE0F" - ], - "emoji": "👩‍✈️", - "name": "woman pilot" - }, - { - "code": [ - "1F9D1", - "200D", - "1F680" - ], - "emoji": "🧑‍🚀", - "name": "astronaut" - }, - { - "code": [ - "1F468", - "200D", - "1F680" - ], - "emoji": "👨‍🚀", - "name": "man astronaut" - }, - { - "code": [ - "1F469", - "200D", - "1F680" - ], - "emoji": "👩‍🚀", - "name": "woman astronaut" - }, - { - "code": [ - "1F9D1", - "200D", - "1F692" - ], - "emoji": "🧑‍🚒", - "name": "firefighter" - }, - { - "code": [ - "1F468", - "200D", - "1F692" - ], - "emoji": "👨‍🚒", - "name": "man firefighter" - }, - { - "code": [ - "1F469", - "200D", - "1F692" - ], - "emoji": "👩‍🚒", - "name": "woman firefighter" - }, - { - "code": [ - "1F46E" - ], - "emoji": "👮", - "name": "police officer" - }, - { - "code": [ - "1F46E", - "200D", - "2642", - "FE0F" - ], - "emoji": "👮‍♂️", - "name": "man police officer" - }, - { - "code": [ - "1F46E", - "200D", - "2640", - "FE0F" - ], - "emoji": "👮‍♀️", - "name": "woman police officer" - }, - { - "code": [ - "1F575" - ], - "emoji": "🕵", - "name": "detective" - }, - { - "code": [ - "1F575", - "FE0F", - "200D", - "2642", - "FE0F" - ], - "emoji": "🕵️‍♂️", - "name": "man detective" - }, - { - "code": [ - "1F575", - "FE0F", - "200D", - "2640", - "FE0F" - ], - "emoji": "🕵️‍♀️", - "name": "woman detective" - }, - { - "code": [ - "1F482" - ], - "emoji": "💂", - "name": "guard" - }, - { - "code": [ - "1F482", - "200D", - "2642", - "FE0F" - ], - "emoji": "💂‍♂️", - "name": "man guard" - }, - { - "code": [ - "1F482", - "200D", - "2640", - "FE0F" - ], - "emoji": "💂‍♀️", - "name": "woman guard" - }, - { - "code": [ - "1F977" - ], - "emoji": "🥷", - "name": "ninja" - }, - { - "code": [ - "1F477" - ], - "emoji": "👷", - "name": "construction worker" - }, - { - "code": [ - "1F477", - "200D", - "2642", - "FE0F" - ], - "emoji": "👷‍♂️", - "name": "man construction worker" - }, - { - "code": [ - "1F477", - "200D", - "2640", - "FE0F" - ], - "emoji": "👷‍♀️", - "name": "woman construction worker" - }, - { - "code": [ - "1FAC5" - ], - "emoji": "🫅", - "name": "person with crown" - }, - { - "code": [ - "1F934" - ], - "emoji": "🤴", - "name": "prince" - }, - { - "code": [ - "1F478" - ], - "emoji": "👸", - "name": "princess" - }, - { - "code": [ - "1F473" - ], - "emoji": "👳", - "name": "person wearing turban" - }, - { - "code": [ - "1F473", - "200D", - "2642", - "FE0F" - ], - "emoji": "👳‍♂️", - "name": "man wearing turban" - }, - { - "code": [ - "1F473", - "200D", - "2640", - "FE0F" - ], - "emoji": "👳‍♀️", - "name": "woman wearing turban" - }, - { - "code": [ - "1F472" - ], - "emoji": "👲", - "name": "person with skullcap" - }, - { - "code": [ - "1F9D5" - ], - "emoji": "🧕", - "name": "woman with headscarf" - }, - { - "code": [ - "1F935" - ], - "emoji": "🤵", - "name": "person in tuxedo" - }, - { - "code": [ - "1F935", - "200D", - "2642", - "FE0F" - ], - "emoji": "🤵‍♂️", - "name": "man in tuxedo" - }, - { - "code": [ - "1F935", - "200D", - "2640", - "FE0F" - ], - "emoji": "🤵‍♀️", - "name": "woman in tuxedo" - }, - { - "code": [ - "1F470" - ], - "emoji": "👰", - "name": "person with veil" - }, - { - "code": [ - "1F470", - "200D", - "2642", - "FE0F" - ], - "emoji": "👰‍♂️", - "name": "man with veil" - }, - { - "code": [ - "1F470", - "200D", - "2640", - "FE0F" - ], - "emoji": "👰‍♀️", - "name": "woman with veil" - }, - { - "code": [ - "1F930" - ], - "emoji": "🤰", - "name": "pregnant woman" - }, - { - "code": [ - "1FAC3" - ], - "emoji": "🫃", - "name": "pregnant man" - }, - { - "code": [ - "1FAC4" - ], - "emoji": "🫄", - "name": "pregnant person" - }, - { - "code": [ - "1F931" - ], - "emoji": "🤱", - "name": "breast-feeding" - }, - { - "code": [ - "1F469", - "200D", - "1F37C" - ], - "emoji": "👩‍🍼", - "name": "woman feeding baby" - }, - { - "code": [ - "1F468", - "200D", - "1F37C" - ], - "emoji": "👨‍🍼", - "name": "man feeding baby" - }, - { - "code": [ - "1F9D1", - "200D", - "1F37C" - ], - "emoji": "🧑‍🍼", - "name": "person feeding baby" - } - ], - "person-fantasy": [ - { - "code": [ - "1F47C" - ], - "emoji": "👼", - "name": "baby angel" - }, - { - "code": [ - "1F385" - ], - "emoji": "🎅", - "name": "Santa Claus" - }, - { - "code": [ - "1F936" - ], - "emoji": "🤶", - "name": "Mrs. Claus" - }, - { - "code": [ - "1F9D1", - "200D", - "1F384" - ], - "emoji": "🧑‍🎄", - "name": "Mx Claus" - }, - { - "code": [ - "1F9B8" - ], - "emoji": "🦸", - "name": "superhero" - }, - { - "code": [ - "1F9B8", - "200D", - "2642", - "FE0F" - ], - "emoji": "🦸‍♂️", - "name": "man superhero" - }, - { - "code": [ - "1F9B8", - "200D", - "2640", - "FE0F" - ], - "emoji": "🦸‍♀️", - "name": "woman superhero" - }, - { - "code": [ - "1F9B9" - ], - "emoji": "🦹", - "name": "supervillain" - }, - { - "code": [ - "1F9B9", - "200D", - "2642", - "FE0F" - ], - "emoji": "🦹‍♂️", - "name": "man supervillain" - }, - { - "code": [ - "1F9B9", - "200D", - "2640", - "FE0F" - ], - "emoji": "🦹‍♀️", - "name": "woman supervillain" - }, - { - "code": [ - "1F9D9" - ], - "emoji": "🧙", - "name": "mage" - }, - { - "code": [ - "1F9D9", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧙‍♂️", - "name": "man mage" - }, - { - "code": [ - "1F9D9", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧙‍♀️", - "name": "woman mage" - }, - { - "code": [ - "1F9DA" - ], - "emoji": "🧚", - "name": "fairy" - }, - { - "code": [ - "1F9DA", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧚‍♂️", - "name": "man fairy" - }, - { - "code": [ - "1F9DA", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧚‍♀️", - "name": "woman fairy" - }, - { - "code": [ - "1F9DB" - ], - "emoji": "🧛", - "name": "vampire" - }, - { - "code": [ - "1F9DB", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧛‍♂️", - "name": "man vampire" - }, - { - "code": [ - "1F9DB", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧛‍♀️", - "name": "woman vampire" - }, - { - "code": [ - "1F9DC" - ], - "emoji": "🧜", - "name": "merperson" - }, - { - "code": [ - "1F9DC", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧜‍♂️", - "name": "merman" - }, - { - "code": [ - "1F9DC", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧜‍♀️", - "name": "mermaid" - }, - { - "code": [ - "1F9DD" - ], - "emoji": "🧝", - "name": "elf" - }, - { - "code": [ - "1F9DD", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧝‍♂️", - "name": "man elf" - }, - { - "code": [ - "1F9DD", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧝‍♀️", - "name": "woman elf" - }, - { - "code": [ - "1F9DE" - ], - "emoji": "🧞", - "name": "genie" - }, - { - "code": [ - "1F9DE", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧞‍♂️", - "name": "man genie" - }, - { - "code": [ - "1F9DE", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧞‍♀️", - "name": "woman genie" - }, - { - "code": [ - "1F9DF" - ], - "emoji": "🧟", - "name": "zombie" - }, - { - "code": [ - "1F9DF", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧟‍♂️", - "name": "man zombie" - }, - { - "code": [ - "1F9DF", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧟‍♀️", - "name": "woman zombie" - }, - { - "code": [ - "1F9CC" - ], - "emoji": "🧌", - "name": "troll" - } - ], - "person-activity": [ - { - "code": [ - "1F486" - ], - "emoji": "💆", - "name": "person getting massage" - }, - { - "code": [ - "1F486", - "200D", - "2642", - "FE0F" - ], - "emoji": "💆‍♂️", - "name": "man getting massage" - }, - { - "code": [ - "1F486", - "200D", - "2640", - "FE0F" - ], - "emoji": "💆‍♀️", - "name": "woman getting massage" - }, - { - "code": [ - "1F487" - ], - "emoji": "💇", - "name": "person getting haircut" - }, - { - "code": [ - "1F487", - "200D", - "2642", - "FE0F" - ], - "emoji": "💇‍♂️", - "name": "man getting haircut" - }, - { - "code": [ - "1F487", - "200D", - "2640", - "FE0F" - ], - "emoji": "💇‍♀️", - "name": "woman getting haircut" - }, - { - "code": [ - "1F6B6" - ], - "emoji": "🚶", - "name": "person walking" - }, - { - "code": [ - "1F6B6", - "200D", - "2642", - "FE0F" - ], - "emoji": "🚶‍♂️", - "name": "man walking" - }, - { - "code": [ - "1F6B6", - "200D", - "2640", - "FE0F" - ], - "emoji": "🚶‍♀️", - "name": "woman walking" - }, - { - "code": [ - "1F6B6", - "200D", - "27A1", - "FE0F" - ], - "emoji": "🚶‍➡️", - "name": "person walking facing right" - }, - { - "code": [ - "1F6B6", - "200D", - "2640", - "FE0F", - "200D", - "27A1", - "FE0F" - ], - "emoji": "🚶‍♀️‍➡️", - "name": "woman walking facing right" - }, - { - "code": [ - "1F6B6", - "200D", - "2642", - "FE0F", - "200D", - "27A1", - "FE0F" - ], - "emoji": "🚶‍♂️‍➡️", - "name": "man walking facing right" - }, - { - "code": [ - "1F9CD" - ], - "emoji": "🧍", - "name": "person standing" - }, - { - "code": [ - "1F9CD", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧍‍♂️", - "name": "man standing" - }, - { - "code": [ - "1F9CD", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧍‍♀️", - "name": "woman standing" - }, - { - "code": [ - "1F9CE" - ], - "emoji": "🧎", - "name": "person kneeling" - }, - { - "code": [ - "1F9CE", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧎‍♂️", - "name": "man kneeling" - }, - { - "code": [ - "1F9CE", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧎‍♀️", - "name": "woman kneeling" - }, - { - "code": [ - "1F9CE", - "200D", - "27A1", - "FE0F" - ], - "emoji": "🧎‍➡️", - "name": "person kneeling facing right" - }, - { - "code": [ - "1F9CE", - "200D", - "2640", - "FE0F", - "200D", - "27A1", - "FE0F" - ], - "emoji": "🧎‍♀️‍➡️", - "name": "woman kneeling facing right" - }, - { - "code": [ - "1F9CE", - "200D", - "2642", - "FE0F", - "200D", - "27A1", - "FE0F" - ], - "emoji": "🧎‍♂️‍➡️", - "name": "man kneeling facing right" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9AF" - ], - "emoji": "🧑‍🦯", - "name": "person with white cane" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9AF", - "200D", - "27A1", - "FE0F" - ], - "emoji": "🧑‍🦯‍➡️", - "name": "person with white cane facing right" - }, - { - "code": [ - "1F468", - "200D", - "1F9AF" - ], - "emoji": "👨‍🦯", - "name": "man with white cane" - }, - { - "code": [ - "1F468", - "200D", - "1F9AF", - "200D", - "27A1", - "FE0F" - ], - "emoji": "👨‍🦯‍➡️", - "name": "man with white cane facing right" - }, - { - "code": [ - "1F469", - "200D", - "1F9AF" - ], - "emoji": "👩‍🦯", - "name": "woman with white cane" - }, - { - "code": [ - "1F469", - "200D", - "1F9AF", - "200D", - "27A1", - "FE0F" - ], - "emoji": "👩‍🦯‍➡️", - "name": "woman with white cane facing right" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9BC" - ], - "emoji": "🧑‍🦼", - "name": "person in motorized wheelchair" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9BC", - "200D", - "27A1", - "FE0F" - ], - "emoji": "🧑‍🦼‍➡️", - "name": "person in motorized wheelchair facing right" - }, - { - "code": [ - "1F468", - "200D", - "1F9BC" - ], - "emoji": "👨‍🦼", - "name": "man in motorized wheelchair" - }, - { - "code": [ - "1F468", - "200D", - "1F9BC", - "200D", - "27A1", - "FE0F" - ], - "emoji": "👨‍🦼‍➡️", - "name": "man in motorized wheelchair facing right" - }, - { - "code": [ - "1F469", - "200D", - "1F9BC" - ], - "emoji": "👩‍🦼", - "name": "woman in motorized wheelchair" - }, - { - "code": [ - "1F469", - "200D", - "1F9BC", - "200D", - "27A1", - "FE0F" - ], - "emoji": "👩‍🦼‍➡️", - "name": "woman in motorized wheelchair facing right" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9BD" - ], - "emoji": "🧑‍🦽", - "name": "person in manual wheelchair" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9BD", - "200D", - "27A1", - "FE0F" - ], - "emoji": "🧑‍🦽‍➡️", - "name": "person in manual wheelchair facing right" - }, - { - "code": [ - "1F468", - "200D", - "1F9BD" - ], - "emoji": "👨‍🦽", - "name": "man in manual wheelchair" - }, - { - "code": [ - "1F468", - "200D", - "1F9BD", - "200D", - "27A1", - "FE0F" - ], - "emoji": "👨‍🦽‍➡️", - "name": "man in manual wheelchair facing right" - }, - { - "code": [ - "1F469", - "200D", - "1F9BD" - ], - "emoji": "👩‍🦽", - "name": "woman in manual wheelchair" - }, - { - "code": [ - "1F469", - "200D", - "1F9BD", - "200D", - "27A1", - "FE0F" - ], - "emoji": "👩‍🦽‍➡️", - "name": "woman in manual wheelchair facing right" - }, - { - "code": [ - "1F3C3" - ], - "emoji": "🏃", - "name": "person running" - }, - { - "code": [ - "1F3C3", - "200D", - "2642", - "FE0F" - ], - "emoji": "🏃‍♂️", - "name": "man running" - }, - { - "code": [ - "1F3C3", - "200D", - "2640", - "FE0F" - ], - "emoji": "🏃‍♀️", - "name": "woman running" - }, - { - "code": [ - "1F3C3", - "200D", - "27A1", - "FE0F" - ], - "emoji": "🏃‍➡️", - "name": "person running facing right" - }, - { - "code": [ - "1F3C3", - "200D", - "2640", - "FE0F", - "200D", - "27A1", - "FE0F" - ], - "emoji": "🏃‍♀️‍➡️", - "name": "woman running facing right" - }, - { - "code": [ - "1F3C3", - "200D", - "2642", - "FE0F", - "200D", - "27A1", - "FE0F" - ], - "emoji": "🏃‍♂️‍➡️", - "name": "man running facing right" - }, - { - "code": [ - "1F483" - ], - "emoji": "💃", - "name": "woman dancing" - }, - { - "code": [ - "1F57A" - ], - "emoji": "🕺", - "name": "man dancing" - }, - { - "code": [ - "1F574" - ], - "emoji": "🕴", - "name": "person in suit levitating" - }, - { - "code": [ - "1F46F" - ], - "emoji": "👯", - "name": "people with bunny ears" - }, - { - "code": [ - "1F46F", - "200D", - "2642", - "FE0F" - ], - "emoji": "👯‍♂️", - "name": "men with bunny ears" - }, - { - "code": [ - "1F46F", - "200D", - "2640", - "FE0F" - ], - "emoji": "👯‍♀️", - "name": "women with bunny ears" - }, - { - "code": [ - "1F9D6" - ], - "emoji": "🧖", - "name": "person in steamy room" - }, - { - "code": [ - "1F9D6", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧖‍♂️", - "name": "man in steamy room" - }, - { - "code": [ - "1F9D6", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧖‍♀️", - "name": "woman in steamy room" - }, - { - "code": [ - "1F9D7" - ], - "emoji": "🧗", - "name": "person climbing" - }, - { - "code": [ - "1F9D7", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧗‍♂️", - "name": "man climbing" - }, - { - "code": [ - "1F9D7", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧗‍♀️", - "name": "woman climbing" - } - ], - "person-sport": [ - { - "code": [ - "1F93A" - ], - "emoji": "🤺", - "name": "person fencing" - }, - { - "code": [ - "1F3C7" - ], - "emoji": "🏇", - "name": "horse racing" - }, - { - "code": [ - "26F7" - ], - "emoji": "⛷", - "name": "skier" - }, - { - "code": [ - "1F3C2" - ], - "emoji": "🏂", - "name": "snowboarder" - }, - { - "code": [ - "1F3CC" - ], - "emoji": "🏌", - "name": "person golfing" - }, - { - "code": [ - "1F3CC", - "FE0F", - "200D", - "2642", - "FE0F" - ], - "emoji": "🏌️‍♂️", - "name": "man golfing" - }, - { - "code": [ - "1F3CC", - "FE0F", - "200D", - "2640", - "FE0F" - ], - "emoji": "🏌️‍♀️", - "name": "woman golfing" - }, - { - "code": [ - "1F3C4" - ], - "emoji": "🏄", - "name": "person surfing" - }, - { - "code": [ - "1F3C4", - "200D", - "2642", - "FE0F" - ], - "emoji": "🏄‍♂️", - "name": "man surfing" - }, - { - "code": [ - "1F3C4", - "200D", - "2640", - "FE0F" - ], - "emoji": "🏄‍♀️", - "name": "woman surfing" - }, - { - "code": [ - "1F6A3" - ], - "emoji": "🚣", - "name": "person rowing boat" - }, - { - "code": [ - "1F6A3", - "200D", - "2642", - "FE0F" - ], - "emoji": "🚣‍♂️", - "name": "man rowing boat" - }, - { - "code": [ - "1F6A3", - "200D", - "2640", - "FE0F" - ], - "emoji": "🚣‍♀️", - "name": "woman rowing boat" - }, - { - "code": [ - "1F3CA" - ], - "emoji": "🏊", - "name": "person swimming" - }, - { - "code": [ - "1F3CA", - "200D", - "2642", - "FE0F" - ], - "emoji": "🏊‍♂️", - "name": "man swimming" - }, - { - "code": [ - "1F3CA", - "200D", - "2640", - "FE0F" - ], - "emoji": "🏊‍♀️", - "name": "woman swimming" - }, - { - "code": [ - "26F9" - ], - "emoji": "⛹", - "name": "person bouncing ball" - }, - { - "code": [ - "26F9", - "FE0F", - "200D", - "2642", - "FE0F" - ], - "emoji": "⛹️‍♂️", - "name": "man bouncing ball" - }, - { - "code": [ - "26F9", - "FE0F", - "200D", - "2640", - "FE0F" - ], - "emoji": "⛹️‍♀️", - "name": "woman bouncing ball" - }, - { - "code": [ - "1F3CB" - ], - "emoji": "🏋", - "name": "person lifting weights" - }, - { - "code": [ - "1F3CB", - "FE0F", - "200D", - "2642", - "FE0F" - ], - "emoji": "🏋️‍♂️", - "name": "man lifting weights" - }, - { - "code": [ - "1F3CB", - "FE0F", - "200D", - "2640", - "FE0F" - ], - "emoji": "🏋️‍♀️", - "name": "woman lifting weights" - }, - { - "code": [ - "1F6B4" - ], - "emoji": "🚴", - "name": "person biking" - }, - { - "code": [ - "1F6B4", - "200D", - "2642", - "FE0F" - ], - "emoji": "🚴‍♂️", - "name": "man biking" - }, - { - "code": [ - "1F6B4", - "200D", - "2640", - "FE0F" - ], - "emoji": "🚴‍♀️", - "name": "woman biking" - }, - { - "code": [ - "1F6B5" - ], - "emoji": "🚵", - "name": "person mountain biking" - }, - { - "code": [ - "1F6B5", - "200D", - "2642", - "FE0F" - ], - "emoji": "🚵‍♂️", - "name": "man mountain biking" - }, - { - "code": [ - "1F6B5", - "200D", - "2640", - "FE0F" - ], - "emoji": "🚵‍♀️", - "name": "woman mountain biking" - }, - { - "code": [ - "1F938" - ], - "emoji": "🤸", - "name": "person cartwheeling" - }, - { - "code": [ - "1F938", - "200D", - "2642", - "FE0F" - ], - "emoji": "🤸‍♂️", - "name": "man cartwheeling" - }, - { - "code": [ - "1F938", - "200D", - "2640", - "FE0F" - ], - "emoji": "🤸‍♀️", - "name": "woman cartwheeling" - }, - { - "code": [ - "1F93C" - ], - "emoji": "🤼", - "name": "people wrestling" - }, - { - "code": [ - "1F93C", - "200D", - "2642", - "FE0F" - ], - "emoji": "🤼‍♂️", - "name": "men wrestling" - }, - { - "code": [ - "1F93C", - "200D", - "2640", - "FE0F" - ], - "emoji": "🤼‍♀️", - "name": "women wrestling" - }, - { - "code": [ - "1F93D" - ], - "emoji": "🤽", - "name": "person playing water polo" - }, - { - "code": [ - "1F93D", - "200D", - "2642", - "FE0F" - ], - "emoji": "🤽‍♂️", - "name": "man playing water polo" - }, - { - "code": [ - "1F93D", - "200D", - "2640", - "FE0F" - ], - "emoji": "🤽‍♀️", - "name": "woman playing water polo" - }, - { - "code": [ - "1F93E" - ], - "emoji": "🤾", - "name": "person playing handball" - }, - { - "code": [ - "1F93E", - "200D", - "2642", - "FE0F" - ], - "emoji": "🤾‍♂️", - "name": "man playing handball" - }, - { - "code": [ - "1F93E", - "200D", - "2640", - "FE0F" - ], - "emoji": "🤾‍♀️", - "name": "woman playing handball" - }, - { - "code": [ - "1F939" - ], - "emoji": "🤹", - "name": "person juggling" - }, - { - "code": [ - "1F939", - "200D", - "2642", - "FE0F" - ], - "emoji": "🤹‍♂️", - "name": "man juggling" - }, - { - "code": [ - "1F939", - "200D", - "2640", - "FE0F" - ], - "emoji": "🤹‍♀️", - "name": "woman juggling" - } - ], - "person-resting": [ - { - "code": [ - "1F9D8" - ], - "emoji": "🧘", - "name": "person in lotus position" - }, - { - "code": [ - "1F9D8", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧘‍♂️", - "name": "man in lotus position" - }, - { - "code": [ - "1F9D8", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧘‍♀️", - "name": "woman in lotus position" - }, - { - "code": [ - "1F6C0" - ], - "emoji": "🛀", - "name": "person taking bath" - }, - { - "code": [ - "1F6CC" - ], - "emoji": "🛌", - "name": "person in bed" - } - ], - "family": [ - { - "code": [ - "1F9D1", - "200D", - "1F91D", - "200D", - "1F9D1" - ], - "emoji": "🧑‍🤝‍🧑", - "name": "people holding hands" - }, - { - "code": [ - "1F46D" - ], - "emoji": "👭", - "name": "women holding hands" - }, - { - "code": [ - "1F46B" - ], - "emoji": "👫", - "name": "woman and man holding hands" - }, - { - "code": [ - "1F46C" - ], - "emoji": "👬", - "name": "men holding hands" - }, - { - "code": [ - "1F48F" - ], - "emoji": "💏", - "name": "kiss" - }, - { - "code": [ - "1F469", - "200D", - "2764", - "FE0F", - "200D", - "1F48B", - "200D", - "1F468" - ], - "emoji": "👩‍❤️‍💋‍👨", - "name": "kiss: woman, man" - }, - { - "code": [ - "1F468", - "200D", - "2764", - "FE0F", - "200D", - "1F48B", - "200D", - "1F468" - ], - "emoji": "👨‍❤️‍💋‍👨", - "name": "kiss: man, man" - }, - { - "code": [ - "1F469", - "200D", - "2764", - "FE0F", - "200D", - "1F48B", - "200D", - "1F469" - ], - "emoji": "👩‍❤️‍💋‍👩", - "name": "kiss: woman, woman" - }, - { - "code": [ - "1F491" - ], - "emoji": "💑", - "name": "couple with heart" - }, - { - "code": [ - "1F469", - "200D", - "2764", - "FE0F", - "200D", - "1F468" - ], - "emoji": "👩‍❤️‍👨", - "name": "couple with heart: woman, man" - }, - { - "code": [ - "1F468", - "200D", - "2764", - "FE0F", - "200D", - "1F468" - ], - "emoji": "👨‍❤️‍👨", - "name": "couple with heart: man, man" - }, - { - "code": [ - "1F469", - "200D", - "2764", - "FE0F", - "200D", - "1F469" - ], - "emoji": "👩‍❤️‍👩", - "name": "couple with heart: woman, woman" - }, - { - "code": [ - "1F468", - "200D", - "1F469", - "200D", - "1F466" - ], - "emoji": "👨‍👩‍👦", - "name": "family: man, woman, boy" - }, - { - "code": [ - "1F468", - "200D", - "1F469", - "200D", - "1F467" - ], - "emoji": "👨‍👩‍👧", - "name": "family: man, woman, girl" - }, - { - "code": [ - "1F468", - "200D", - "1F469", - "200D", - "1F467", - "200D", - "1F466" - ], - "emoji": "👨‍👩‍👧‍👦", - "name": "family: man, woman, girl, boy" - }, - { - "code": [ - "1F468", - "200D", - "1F469", - "200D", - "1F466", - "200D", - "1F466" - ], - "emoji": "👨‍👩‍👦‍👦", - "name": "family: man, woman, boy, boy" - }, - { - "code": [ - "1F468", - "200D", - "1F469", - "200D", - "1F467", - "200D", - "1F467" - ], - "emoji": "👨‍👩‍👧‍👧", - "name": "family: man, woman, girl, girl" - }, - { - "code": [ - "1F468", - "200D", - "1F468", - "200D", - "1F466" - ], - "emoji": "👨‍👨‍👦", - "name": "family: man, man, boy" - }, - { - "code": [ - "1F468", - "200D", - "1F468", - "200D", - "1F467" - ], - "emoji": "👨‍👨‍👧", - "name": "family: man, man, girl" - }, - { - "code": [ - "1F468", - "200D", - "1F468", - "200D", - "1F467", - "200D", - "1F466" - ], - "emoji": "👨‍👨‍👧‍👦", - "name": "family: man, man, girl, boy" - }, - { - "code": [ - "1F468", - "200D", - "1F468", - "200D", - "1F466", - "200D", - "1F466" - ], - "emoji": "👨‍👨‍👦‍👦", - "name": "family: man, man, boy, boy" - }, - { - "code": [ - "1F468", - "200D", - "1F468", - "200D", - "1F467", - "200D", - "1F467" - ], - "emoji": "👨‍👨‍👧‍👧", - "name": "family: man, man, girl, girl" - }, - { - "code": [ - "1F469", - "200D", - "1F469", - "200D", - "1F466" - ], - "emoji": "👩‍👩‍👦", - "name": "family: woman, woman, boy" - }, - { - "code": [ - "1F469", - "200D", - "1F469", - "200D", - "1F467" - ], - "emoji": "👩‍👩‍👧", - "name": "family: woman, woman, girl" - }, - { - "code": [ - "1F469", - "200D", - "1F469", - "200D", - "1F467", - "200D", - "1F466" - ], - "emoji": "👩‍👩‍👧‍👦", - "name": "family: woman, woman, girl, boy" - }, - { - "code": [ - "1F469", - "200D", - "1F469", - "200D", - "1F466", - "200D", - "1F466" - ], - "emoji": "👩‍👩‍👦‍👦", - "name": "family: woman, woman, boy, boy" - }, - { - "code": [ - "1F469", - "200D", - "1F469", - "200D", - "1F467", - "200D", - "1F467" - ], - "emoji": "👩‍👩‍👧‍👧", - "name": "family: woman, woman, girl, girl" - }, - { - "code": [ - "1F468", - "200D", - "1F466" - ], - "emoji": "👨‍👦", - "name": "family: man, boy" - }, - { - "code": [ - "1F468", - "200D", - "1F466", - "200D", - "1F466" - ], - "emoji": "👨‍👦‍👦", - "name": "family: man, boy, boy" - }, - { - "code": [ - "1F468", - "200D", - "1F467" - ], - "emoji": "👨‍👧", - "name": "family: man, girl" - }, - { - "code": [ - "1F468", - "200D", - "1F467", - "200D", - "1F466" - ], - "emoji": "👨‍👧‍👦", - "name": "family: man, girl, boy" - }, - { - "code": [ - "1F468", - "200D", - "1F467", - "200D", - "1F467" - ], - "emoji": "👨‍👧‍👧", - "name": "family: man, girl, girl" - }, - { - "code": [ - "1F469", - "200D", - "1F466" - ], - "emoji": "👩‍👦", - "name": "family: woman, boy" - }, - { - "code": [ - "1F469", - "200D", - "1F466", - "200D", - "1F466" - ], - "emoji": "👩‍👦‍👦", - "name": "family: woman, boy, boy" - }, - { - "code": [ - "1F469", - "200D", - "1F467" - ], - "emoji": "👩‍👧", - "name": "family: woman, girl" - }, - { - "code": [ - "1F469", - "200D", - "1F467", - "200D", - "1F466" - ], - "emoji": "👩‍👧‍👦", - "name": "family: woman, girl, boy" - }, - { - "code": [ - "1F469", - "200D", - "1F467", - "200D", - "1F467" - ], - "emoji": "👩‍👧‍👧", - "name": "family: woman, girl, girl" - } - ], - "person-symbol": [ - { - "code": [ - "1F5E3" - ], - "emoji": "🗣", - "name": "speaking head" - }, - { - "code": [ - "1F464" - ], - "emoji": "👤", - "name": "bust in silhouette" - }, - { - "code": [ - "1F465" - ], - "emoji": "👥", - "name": "busts in silhouette" - }, - { - "code": [ - "1FAC2" - ], - "emoji": "🫂", - "name": "people hugging" - }, - { - "code": [ - "1F46A" - ], - "emoji": "👪", - "name": "family" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9D1", - "200D", - "1F9D2" - ], - "emoji": "🧑‍🧑‍🧒", - "name": "family: adult, adult, child" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9D1", - "200D", - "1F9D2", - "200D", - "1F9D2" - ], - "emoji": "🧑‍🧑‍🧒‍🧒", - "name": "family: adult, adult, child, child" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9D2" - ], - "emoji": "🧑‍🧒", - "name": "family: adult, child" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9D2", - "200D", - "1F9D2" - ], - "emoji": "🧑‍🧒‍🧒", - "name": "family: adult, child, child" - }, - { - "code": [ - "1F463" - ], - "emoji": "👣", - "name": "footprints" - }, - { - "code": [ - "1FAC6" - ], - "emoji": "🫆", - "name": "fingerprint" - } - ] - }, - "Component": { - "hair-style": [ - { - "code": [ - "1F9B0" - ], - "emoji": "🦰", - "name": "red hair" - }, - { - "code": [ - "1F9B1" - ], - "emoji": "🦱", - "name": "curly hair" - }, - { - "code": [ - "1F9B3" - ], - "emoji": "🦳", - "name": "white hair" - }, - { - "code": [ - "1F9B2" - ], - "emoji": "🦲", - "name": "bald" - } - ] - }, - "Animals & Nature": { - "animal-mammal": [ - { - "code": [ - "1F435" - ], - "emoji": "🐵", - "name": "monkey face" - }, - { - "code": [ - "1F412" - ], - "emoji": "🐒", - "name": "monkey" - }, - { - "code": [ - "1F98D" - ], - "emoji": "🦍", - "name": "gorilla" - }, - { - "code": [ - "1F9A7" - ], - "emoji": "🦧", - "name": "orangutan" - }, - { - "code": [ - "1F436" - ], - "emoji": "🐶", - "name": "dog face" - }, - { - "code": [ - "1F415" - ], - "emoji": "🐕", - "name": "dog" - }, - { - "code": [ - "1F9AE" - ], - "emoji": "🦮", - "name": "guide dog" - }, - { - "code": [ - "1F415", - "200D", - "1F9BA" - ], - "emoji": "🐕‍🦺", - "name": "service dog" - }, - { - "code": [ - "1F429" - ], - "emoji": "🐩", - "name": "poodle" - }, - { - "code": [ - "1F43A" - ], - "emoji": "🐺", - "name": "wolf" - }, - { - "code": [ - "1F98A" - ], - "emoji": "🦊", - "name": "fox" - }, - { - "code": [ - "1F99D" - ], - "emoji": "🦝", - "name": "raccoon" - }, - { - "code": [ - "1F431" - ], - "emoji": "🐱", - "name": "cat face" - }, - { - "code": [ - "1F408" - ], - "emoji": "🐈", - "name": "cat" - }, - { - "code": [ - "1F408", - "200D", - "2B1B" - ], - "emoji": "🐈‍⬛", - "name": "black cat" - }, - { - "code": [ - "1F981" - ], - "emoji": "🦁", - "name": "lion" - }, - { - "code": [ - "1F42F" - ], - "emoji": "🐯", - "name": "tiger face" - }, - { - "code": [ - "1F405" - ], - "emoji": "🐅", - "name": "tiger" - }, - { - "code": [ - "1F406" - ], - "emoji": "🐆", - "name": "leopard" - }, - { - "code": [ - "1F434" - ], - "emoji": "🐴", - "name": "horse face" - }, - { - "code": [ - "1FACE" - ], - "emoji": "🫎", - "name": "moose" - }, - { - "code": [ - "1FACF" - ], - "emoji": "🫏", - "name": "donkey" - }, - { - "code": [ - "1F40E" - ], - "emoji": "🐎", - "name": "horse" - }, - { - "code": [ - "1F984" - ], - "emoji": "🦄", - "name": "unicorn" - }, - { - "code": [ - "1F993" - ], - "emoji": "🦓", - "name": "zebra" - }, - { - "code": [ - "1F98C" - ], - "emoji": "🦌", - "name": "deer" - }, - { - "code": [ - "1F9AC" - ], - "emoji": "🦬", - "name": "bison" - }, - { - "code": [ - "1F42E" - ], - "emoji": "🐮", - "name": "cow face" - }, - { - "code": [ - "1F402" - ], - "emoji": "🐂", - "name": "ox" - }, - { - "code": [ - "1F403" - ], - "emoji": "🐃", - "name": "water buffalo" - }, - { - "code": [ - "1F404" - ], - "emoji": "🐄", - "name": "cow" - }, - { - "code": [ - "1F437" - ], - "emoji": "🐷", - "name": "pig face" - }, - { - "code": [ - "1F416" - ], - "emoji": "🐖", - "name": "pig" - }, - { - "code": [ - "1F417" - ], - "emoji": "🐗", - "name": "boar" - }, - { - "code": [ - "1F43D" - ], - "emoji": "🐽", - "name": "pig nose" - }, - { - "code": [ - "1F40F" - ], - "emoji": "🐏", - "name": "ram" - }, - { - "code": [ - "1F411" - ], - "emoji": "🐑", - "name": "ewe" - }, - { - "code": [ - "1F410" - ], - "emoji": "🐐", - "name": "goat" - }, - { - "code": [ - "1F42A" - ], - "emoji": "🐪", - "name": "camel" - }, - { - "code": [ - "1F42B" - ], - "emoji": "🐫", - "name": "two-hump camel" - }, - { - "code": [ - "1F999" - ], - "emoji": "🦙", - "name": "llama" - }, - { - "code": [ - "1F992" - ], - "emoji": "🦒", - "name": "giraffe" - }, - { - "code": [ - "1F418" - ], - "emoji": "🐘", - "name": "elephant" - }, - { - "code": [ - "1F9A3" - ], - "emoji": "🦣", - "name": "mammoth" - }, - { - "code": [ - "1F98F" - ], - "emoji": "🦏", - "name": "rhinoceros" - }, - { - "code": [ - "1F99B" - ], - "emoji": "🦛", - "name": "hippopotamus" - }, - { - "code": [ - "1F42D" - ], - "emoji": "🐭", - "name": "mouse face" - }, - { - "code": [ - "1F401" - ], - "emoji": "🐁", - "name": "mouse" - }, - { - "code": [ - "1F400" - ], - "emoji": "🐀", - "name": "rat" - }, - { - "code": [ - "1F439" - ], - "emoji": "🐹", - "name": "hamster" - }, - { - "code": [ - "1F430" - ], - "emoji": "🐰", - "name": "rabbit face" - }, - { - "code": [ - "1F407" - ], - "emoji": "🐇", - "name": "rabbit" - }, - { - "code": [ - "1F43F" - ], - "emoji": "🐿", - "name": "chipmunk" - }, - { - "code": [ - "1F9AB" - ], - "emoji": "🦫", - "name": "beaver" - }, - { - "code": [ - "1F994" - ], - "emoji": "🦔", - "name": "hedgehog" - }, - { - "code": [ - "1F987" - ], - "emoji": "🦇", - "name": "bat" - }, - { - "code": [ - "1F43B" - ], - "emoji": "🐻", - "name": "bear" - }, - { - "code": [ - "1F43B", - "200D", - "2744", - "FE0F" - ], - "emoji": "🐻‍❄️", - "name": "polar bear" - }, - { - "code": [ - "1F428" - ], - "emoji": "🐨", - "name": "koala" - }, - { - "code": [ - "1F43C" - ], - "emoji": "🐼", - "name": "panda" - }, - { - "code": [ - "1F9A5" - ], - "emoji": "🦥", - "name": "sloth" - }, - { - "code": [ - "1F9A6" - ], - "emoji": "🦦", - "name": "otter" - }, - { - "code": [ - "1F9A8" - ], - "emoji": "🦨", - "name": "skunk" - }, - { - "code": [ - "1F998" - ], - "emoji": "🦘", - "name": "kangaroo" - }, - { - "code": [ - "1F9A1" - ], - "emoji": "🦡", - "name": "badger" - }, - { - "code": [ - "1F43E" - ], - "emoji": "🐾", - "name": "paw prints" - } - ], - "animal-bird": [ - { - "code": [ - "1F983" - ], - "emoji": "🦃", - "name": "turkey" - }, - { - "code": [ - "1F414" - ], - "emoji": "🐔", - "name": "chicken" - }, - { - "code": [ - "1F413" - ], - "emoji": "🐓", - "name": "rooster" - }, - { - "code": [ - "1F423" - ], - "emoji": "🐣", - "name": "hatching chick" - }, - { - "code": [ - "1F424" - ], - "emoji": "🐤", - "name": "baby chick" - }, - { - "code": [ - "1F425" - ], - "emoji": "🐥", - "name": "front-facing baby chick" - }, - { - "code": [ - "1F426" - ], - "emoji": "🐦", - "name": "bird" - }, - { - "code": [ - "1F427" - ], - "emoji": "🐧", - "name": "penguin" - }, - { - "code": [ - "1F54A" - ], - "emoji": "🕊", - "name": "dove" - }, - { - "code": [ - "1F985" - ], - "emoji": "🦅", - "name": "eagle" - }, - { - "code": [ - "1F986" - ], - "emoji": "🦆", - "name": "duck" - }, - { - "code": [ - "1F9A2" - ], - "emoji": "🦢", - "name": "swan" - }, - { - "code": [ - "1F989" - ], - "emoji": "🦉", - "name": "owl" - }, - { - "code": [ - "1F9A4" - ], - "emoji": "🦤", - "name": "dodo" - }, - { - "code": [ - "1FAB6" - ], - "emoji": "🪶", - "name": "feather" - }, - { - "code": [ - "1F9A9" - ], - "emoji": "🦩", - "name": "flamingo" - }, - { - "code": [ - "1F99A" - ], - "emoji": "🦚", - "name": "peacock" - }, - { - "code": [ - "1F99C" - ], - "emoji": "🦜", - "name": "parrot" - }, - { - "code": [ - "1FABD" - ], - "emoji": "🪽", - "name": "wing" - }, - { - "code": [ - "1F426", - "200D", - "2B1B" - ], - "emoji": "🐦‍⬛", - "name": "black bird" - }, - { - "code": [ - "1FABF" - ], - "emoji": "🪿", - "name": "goose" - }, - { - "code": [ - "1F426", - "200D", - "1F525" - ], - "emoji": "🐦‍🔥", - "name": "phoenix" - } - ], - "animal-amphibian": [ - { - "code": [ - "1F438" - ], - "emoji": "🐸", - "name": "frog" - } - ], - "animal-reptile": [ - { - "code": [ - "1F40A" - ], - "emoji": "🐊", - "name": "crocodile" - }, - { - "code": [ - "1F422" - ], - "emoji": "🐢", - "name": "turtle" - }, - { - "code": [ - "1F98E" - ], - "emoji": "🦎", - "name": "lizard" - }, - { - "code": [ - "1F40D" - ], - "emoji": "🐍", - "name": "snake" - }, - { - "code": [ - "1F432" - ], - "emoji": "🐲", - "name": "dragon face" - }, - { - "code": [ - "1F409" - ], - "emoji": "🐉", - "name": "dragon" - }, - { - "code": [ - "1F995" - ], - "emoji": "🦕", - "name": "sauropod" - }, - { - "code": [ - "1F996" - ], - "emoji": "🦖", - "name": "T-Rex" - } - ], - "animal-marine": [ - { - "code": [ - "1F433" - ], - "emoji": "🐳", - "name": "spouting whale" - }, - { - "code": [ - "1F40B" - ], - "emoji": "🐋", - "name": "whale" - }, - { - "code": [ - "1F42C" - ], - "emoji": "🐬", - "name": "dolphin" - }, - { - "code": [ - "1F9AD" - ], - "emoji": "🦭", - "name": "seal" - }, - { - "code": [ - "1F41F" - ], - "emoji": "🐟", - "name": "fish" - }, - { - "code": [ - "1F420" - ], - "emoji": "🐠", - "name": "tropical fish" - }, - { - "code": [ - "1F421" - ], - "emoji": "🐡", - "name": "blowfish" - }, - { - "code": [ - "1F988" - ], - "emoji": "🦈", - "name": "shark" - }, - { - "code": [ - "1F419" - ], - "emoji": "🐙", - "name": "octopus" - }, - { - "code": [ - "1F41A" - ], - "emoji": "🐚", - "name": "spiral shell" - }, - { - "code": [ - "1FAB8" - ], - "emoji": "🪸", - "name": "coral" - }, - { - "code": [ - "1FABC" - ], - "emoji": "🪼", - "name": "jellyfish" - }, - { - "code": [ - "1F980" - ], - "emoji": "🦀", - "name": "crab" - }, - { - "code": [ - "1F99E" - ], - "emoji": "🦞", - "name": "lobster" - }, - { - "code": [ - "1F990" - ], - "emoji": "🦐", - "name": "shrimp" - }, - { - "code": [ - "1F991" - ], - "emoji": "🦑", - "name": "squid" - }, - { - "code": [ - "1F9AA" - ], - "emoji": "🦪", - "name": "oyster" - } - ], - "animal-bug": [ - { - "code": [ - "1F40C" - ], - "emoji": "🐌", - "name": "snail" - }, - { - "code": [ - "1F98B" - ], - "emoji": "🦋", - "name": "butterfly" - }, - { - "code": [ - "1F41B" - ], - "emoji": "🐛", - "name": "bug" - }, - { - "code": [ - "1F41C" - ], - "emoji": "🐜", - "name": "ant" - }, - { - "code": [ - "1F41D" - ], - "emoji": "🐝", - "name": "honeybee" - }, - { - "code": [ - "1FAB2" - ], - "emoji": "🪲", - "name": "beetle" - }, - { - "code": [ - "1F41E" - ], - "emoji": "🐞", - "name": "lady beetle" - }, - { - "code": [ - "1F997" - ], - "emoji": "🦗", - "name": "cricket" - }, - { - "code": [ - "1FAB3" - ], - "emoji": "🪳", - "name": "cockroach" - }, - { - "code": [ - "1F577" - ], - "emoji": "🕷", - "name": "spider" - }, - { - "code": [ - "1F578" - ], - "emoji": "🕸", - "name": "spider web" - }, - { - "code": [ - "1F982" - ], - "emoji": "🦂", - "name": "scorpion" - }, - { - "code": [ - "1F99F" - ], - "emoji": "🦟", - "name": "mosquito" - }, - { - "code": [ - "1FAB0" - ], - "emoji": "🪰", - "name": "fly" - }, - { - "code": [ - "1FAB1" - ], - "emoji": "🪱", - "name": "worm" - }, - { - "code": [ - "1F9A0" - ], - "emoji": "🦠", - "name": "microbe" - } - ], - "plant-flower": [ - { - "code": [ - "1F490" - ], - "emoji": "💐", - "name": "bouquet" - }, - { - "code": [ - "1F338" - ], - "emoji": "🌸", - "name": "cherry blossom" - }, - { - "code": [ - "1F4AE" - ], - "emoji": "💮", - "name": "white flower" - }, - { - "code": [ - "1FAB7" - ], - "emoji": "🪷", - "name": "lotus" - }, - { - "code": [ - "1F3F5" - ], - "emoji": "🏵", - "name": "rosette" - }, - { - "code": [ - "1F339" - ], - "emoji": "🌹", - "name": "rose" - }, - { - "code": [ - "1F940" - ], - "emoji": "🥀", - "name": "wilted flower" - }, - { - "code": [ - "1F33A" - ], - "emoji": "🌺", - "name": "hibiscus" - }, - { - "code": [ - "1F33B" - ], - "emoji": "🌻", - "name": "sunflower" - }, - { - "code": [ - "1F33C" - ], - "emoji": "🌼", - "name": "blossom" - }, - { - "code": [ - "1F337" - ], - "emoji": "🌷", - "name": "tulip" - }, - { - "code": [ - "1FABB" - ], - "emoji": "🪻", - "name": "hyacinth" - } - ], - "plant-other": [ - { - "code": [ - "1F331" - ], - "emoji": "🌱", - "name": "seedling" - }, - { - "code": [ - "1FAB4" - ], - "emoji": "🪴", - "name": "potted plant" - }, - { - "code": [ - "1F332" - ], - "emoji": "🌲", - "name": "evergreen tree" - }, - { - "code": [ - "1F333" - ], - "emoji": "🌳", - "name": "deciduous tree" - }, - { - "code": [ - "1F334" - ], - "emoji": "🌴", - "name": "palm tree" - }, - { - "code": [ - "1F335" - ], - "emoji": "🌵", - "name": "cactus" - }, - { - "code": [ - "1F33E" - ], - "emoji": "🌾", - "name": "sheaf of rice" - }, - { - "code": [ - "1F33F" - ], - "emoji": "🌿", - "name": "herb" - }, - { - "code": [ - "2618" - ], - "emoji": "☘", - "name": "shamrock" - }, - { - "code": [ - "1F340" - ], - "emoji": "🍀", - "name": "four leaf clover" - }, - { - "code": [ - "1F341" - ], - "emoji": "🍁", - "name": "maple leaf" - }, - { - "code": [ - "1F342" - ], - "emoji": "🍂", - "name": "fallen leaf" - }, - { - "code": [ - "1F343" - ], - "emoji": "🍃", - "name": "leaf fluttering in wind" - }, - { - "code": [ - "1FAB9" - ], - "emoji": "🪹", - "name": "empty nest" - }, - { - "code": [ - "1FABA" - ], - "emoji": "🪺", - "name": "nest with eggs" - }, - { - "code": [ - "1F344" - ], - "emoji": "🍄", - "name": "mushroom" - }, - { - "code": [ - "1FABE" - ], - "emoji": "🪾", - "name": "leafless tree" - } - ] - }, - "Food & Drink": { - "food-fruit": [ - { - "code": [ - "1F347" - ], - "emoji": "🍇", - "name": "grapes" - }, - { - "code": [ - "1F348" - ], - "emoji": "🍈", - "name": "melon" - }, - { - "code": [ - "1F349" - ], - "emoji": "🍉", - "name": "watermelon" - }, - { - "code": [ - "1F34A" - ], - "emoji": "🍊", - "name": "tangerine" - }, - { - "code": [ - "1F34B" - ], - "emoji": "🍋", - "name": "lemon" - }, - { - "code": [ - "1F34B", - "200D", - "1F7E9" - ], - "emoji": "🍋‍🟩", - "name": "lime" - }, - { - "code": [ - "1F34C" - ], - "emoji": "🍌", - "name": "banana" - }, - { - "code": [ - "1F34D" - ], - "emoji": "🍍", - "name": "pineapple" - }, - { - "code": [ - "1F96D" - ], - "emoji": "🥭", - "name": "mango" - }, - { - "code": [ - "1F34E" - ], - "emoji": "🍎", - "name": "red apple" - }, - { - "code": [ - "1F34F" - ], - "emoji": "🍏", - "name": "green apple" - }, - { - "code": [ - "1F350" - ], - "emoji": "🍐", - "name": "pear" - }, - { - "code": [ - "1F351" - ], - "emoji": "🍑", - "name": "peach" - }, - { - "code": [ - "1F352" - ], - "emoji": "🍒", - "name": "cherries" - }, - { - "code": [ - "1F353" - ], - "emoji": "🍓", - "name": "strawberry" - }, - { - "code": [ - "1FAD0" - ], - "emoji": "🫐", - "name": "blueberries" - }, - { - "code": [ - "1F95D" - ], - "emoji": "🥝", - "name": "kiwi fruit" - }, - { - "code": [ - "1F345" - ], - "emoji": "🍅", - "name": "tomato" - }, - { - "code": [ - "1FAD2" - ], - "emoji": "🫒", - "name": "olive" - }, - { - "code": [ - "1F965" - ], - "emoji": "🥥", - "name": "coconut" - } - ], - "food-vegetable": [ - { - "code": [ - "1F951" - ], - "emoji": "🥑", - "name": "avocado" - }, - { - "code": [ - "1F346" - ], - "emoji": "🍆", - "name": "eggplant" - }, - { - "code": [ - "1F954" - ], - "emoji": "🥔", - "name": "potato" - }, - { - "code": [ - "1F955" - ], - "emoji": "🥕", - "name": "carrot" - }, - { - "code": [ - "1F33D" - ], - "emoji": "🌽", - "name": "ear of corn" - }, - { - "code": [ - "1F336" - ], - "emoji": "🌶", - "name": "hot pepper" - }, - { - "code": [ - "1FAD1" - ], - "emoji": "🫑", - "name": "bell pepper" - }, - { - "code": [ - "1F952" - ], - "emoji": "🥒", - "name": "cucumber" - }, - { - "code": [ - "1F96C" - ], - "emoji": "🥬", - "name": "leafy green" - }, - { - "code": [ - "1F966" - ], - "emoji": "🥦", - "name": "broccoli" - }, - { - "code": [ - "1F9C4" - ], - "emoji": "🧄", - "name": "garlic" - }, - { - "code": [ - "1F9C5" - ], - "emoji": "🧅", - "name": "onion" - }, - { - "code": [ - "1F95C" - ], - "emoji": "🥜", - "name": "peanuts" - }, - { - "code": [ - "1FAD8" - ], - "emoji": "🫘", - "name": "beans" - }, - { - "code": [ - "1F330" - ], - "emoji": "🌰", - "name": "chestnut" - }, - { - "code": [ - "1FADA" - ], - "emoji": "🫚", - "name": "ginger root" - }, - { - "code": [ - "1FADB" - ], - "emoji": "🫛", - "name": "pea pod" - }, - { - "code": [ - "1F344", - "200D", - "1F7EB" - ], - "emoji": "🍄‍🟫", - "name": "brown mushroom" - }, - { - "code": [ - "1FADC" - ], - "emoji": "🫜", - "name": "root vegetable" - } - ], - "food-prepared": [ - { - "code": [ - "1F35E" - ], - "emoji": "🍞", - "name": "bread" - }, - { - "code": [ - "1F950" - ], - "emoji": "🥐", - "name": "croissant" - }, - { - "code": [ - "1F956" - ], - "emoji": "🥖", - "name": "baguette bread" - }, - { - "code": [ - "1FAD3" - ], - "emoji": "🫓", - "name": "flatbread" - }, - { - "code": [ - "1F968" - ], - "emoji": "🥨", - "name": "pretzel" - }, - { - "code": [ - "1F96F" - ], - "emoji": "🥯", - "name": "bagel" - }, - { - "code": [ - "1F95E" - ], - "emoji": "🥞", - "name": "pancakes" - }, - { - "code": [ - "1F9C7" - ], - "emoji": "🧇", - "name": "waffle" - }, - { - "code": [ - "1F9C0" - ], - "emoji": "🧀", - "name": "cheese wedge" - }, - { - "code": [ - "1F356" - ], - "emoji": "🍖", - "name": "meat on bone" - }, - { - "code": [ - "1F357" - ], - "emoji": "🍗", - "name": "poultry leg" - }, - { - "code": [ - "1F969" - ], - "emoji": "🥩", - "name": "cut of meat" - }, - { - "code": [ - "1F953" - ], - "emoji": "🥓", - "name": "bacon" - }, - { - "code": [ - "1F354" - ], - "emoji": "🍔", - "name": "hamburger" - }, - { - "code": [ - "1F35F" - ], - "emoji": "🍟", - "name": "french fries" - }, - { - "code": [ - "1F355" - ], - "emoji": "🍕", - "name": "pizza" - }, - { - "code": [ - "1F32D" - ], - "emoji": "🌭", - "name": "hot dog" - }, - { - "code": [ - "1F96A" - ], - "emoji": "🥪", - "name": "sandwich" - }, - { - "code": [ - "1F32E" - ], - "emoji": "🌮", - "name": "taco" - }, - { - "code": [ - "1F32F" - ], - "emoji": "🌯", - "name": "burrito" - }, - { - "code": [ - "1FAD4" - ], - "emoji": "🫔", - "name": "tamale" - }, - { - "code": [ - "1F959" - ], - "emoji": "🥙", - "name": "stuffed flatbread" - }, - { - "code": [ - "1F9C6" - ], - "emoji": "🧆", - "name": "falafel" - }, - { - "code": [ - "1F95A" - ], - "emoji": "🥚", - "name": "egg" - }, - { - "code": [ - "1F373" - ], - "emoji": "🍳", - "name": "cooking" - }, - { - "code": [ - "1F958" - ], - "emoji": "🥘", - "name": "shallow pan of food" - }, - { - "code": [ - "1F372" - ], - "emoji": "🍲", - "name": "pot of food" - }, - { - "code": [ - "1FAD5" - ], - "emoji": "🫕", - "name": "fondue" - }, - { - "code": [ - "1F963" - ], - "emoji": "🥣", - "name": "bowl with spoon" - }, - { - "code": [ - "1F957" - ], - "emoji": "🥗", - "name": "green salad" - }, - { - "code": [ - "1F37F" - ], - "emoji": "🍿", - "name": "popcorn" - }, - { - "code": [ - "1F9C8" - ], - "emoji": "🧈", - "name": "butter" - }, - { - "code": [ - "1F9C2" - ], - "emoji": "🧂", - "name": "salt" - }, - { - "code": [ - "1F96B" - ], - "emoji": "🥫", - "name": "canned food" - } - ], - "food-asian": [ - { - "code": [ - "1F371" - ], - "emoji": "🍱", - "name": "bento box" - }, - { - "code": [ - "1F358" - ], - "emoji": "🍘", - "name": "rice cracker" - }, - { - "code": [ - "1F359" - ], - "emoji": "🍙", - "name": "rice ball" - }, - { - "code": [ - "1F35A" - ], - "emoji": "🍚", - "name": "cooked rice" - }, - { - "code": [ - "1F35B" - ], - "emoji": "🍛", - "name": "curry rice" - }, - { - "code": [ - "1F35C" - ], - "emoji": "🍜", - "name": "steaming bowl" - }, - { - "code": [ - "1F35D" - ], - "emoji": "🍝", - "name": "spaghetti" - }, - { - "code": [ - "1F360" - ], - "emoji": "🍠", - "name": "roasted sweet potato" - }, - { - "code": [ - "1F362" - ], - "emoji": "🍢", - "name": "oden" - }, - { - "code": [ - "1F363" - ], - "emoji": "🍣", - "name": "sushi" - }, - { - "code": [ - "1F364" - ], - "emoji": "🍤", - "name": "fried shrimp" - }, - { - "code": [ - "1F365" - ], - "emoji": "🍥", - "name": "fish cake with swirl" - }, - { - "code": [ - "1F96E" - ], - "emoji": "🥮", - "name": "moon cake" - }, - { - "code": [ - "1F361" - ], - "emoji": "🍡", - "name": "dango" - }, - { - "code": [ - "1F95F" - ], - "emoji": "🥟", - "name": "dumpling" - }, - { - "code": [ - "1F960" - ], - "emoji": "🥠", - "name": "fortune cookie" - }, - { - "code": [ - "1F961" - ], - "emoji": "🥡", - "name": "takeout box" - } - ], - "food-sweet": [ - { - "code": [ - "1F366" - ], - "emoji": "🍦", - "name": "soft ice cream" - }, - { - "code": [ - "1F367" - ], - "emoji": "🍧", - "name": "shaved ice" - }, - { - "code": [ - "1F368" - ], - "emoji": "🍨", - "name": "ice cream" - }, - { - "code": [ - "1F369" - ], - "emoji": "🍩", - "name": "doughnut" - }, - { - "code": [ - "1F36A" - ], - "emoji": "🍪", - "name": "cookie" - }, - { - "code": [ - "1F382" - ], - "emoji": "🎂", - "name": "birthday cake" - }, - { - "code": [ - "1F370" - ], - "emoji": "🍰", - "name": "shortcake" - }, - { - "code": [ - "1F9C1" - ], - "emoji": "🧁", - "name": "cupcake" - }, - { - "code": [ - "1F967" - ], - "emoji": "🥧", - "name": "pie" - }, - { - "code": [ - "1F36B" - ], - "emoji": "🍫", - "name": "chocolate bar" - }, - { - "code": [ - "1F36C" - ], - "emoji": "🍬", - "name": "candy" - }, - { - "code": [ - "1F36D" - ], - "emoji": "🍭", - "name": "lollipop" - }, - { - "code": [ - "1F36E" - ], - "emoji": "🍮", - "name": "custard" - }, - { - "code": [ - "1F36F" - ], - "emoji": "🍯", - "name": "honey pot" - } - ], - "drink": [ - { - "code": [ - "1F37C" - ], - "emoji": "🍼", - "name": "baby bottle" - }, - { - "code": [ - "1F95B" - ], - "emoji": "🥛", - "name": "glass of milk" - }, - { - "code": [ - "2615" - ], - "emoji": "☕", - "name": "hot beverage" - }, - { - "code": [ - "1FAD6" - ], - "emoji": "🫖", - "name": "teapot" - }, - { - "code": [ - "1F375" - ], - "emoji": "🍵", - "name": "teacup without handle" - }, - { - "code": [ - "1F376" - ], - "emoji": "🍶", - "name": "sake" - }, - { - "code": [ - "1F37E" - ], - "emoji": "🍾", - "name": "bottle with popping cork" - }, - { - "code": [ - "1F377" - ], - "emoji": "🍷", - "name": "wine glass" - }, - { - "code": [ - "1F378" - ], - "emoji": "🍸", - "name": "cocktail glass" - }, - { - "code": [ - "1F379" - ], - "emoji": "🍹", - "name": "tropical drink" - }, - { - "code": [ - "1F37A" - ], - "emoji": "🍺", - "name": "beer mug" - }, - { - "code": [ - "1F37B" - ], - "emoji": "🍻", - "name": "clinking beer mugs" - }, - { - "code": [ - "1F942" - ], - "emoji": "🥂", - "name": "clinking glasses" - }, - { - "code": [ - "1F943" - ], - "emoji": "🥃", - "name": "tumbler glass" - }, - { - "code": [ - "1FAD7" - ], - "emoji": "🫗", - "name": "pouring liquid" - }, - { - "code": [ - "1F964" - ], - "emoji": "🥤", - "name": "cup with straw" - }, - { - "code": [ - "1F9CB" - ], - "emoji": "🧋", - "name": "bubble tea" - }, - { - "code": [ - "1F9C3" - ], - "emoji": "🧃", - "name": "beverage box" - }, - { - "code": [ - "1F9C9" - ], - "emoji": "🧉", - "name": "mate" - }, - { - "code": [ - "1F9CA" - ], - "emoji": "🧊", - "name": "ice" - } - ], - "dishware": [ - { - "code": [ - "1F962" - ], - "emoji": "🥢", - "name": "chopsticks" - }, - { - "code": [ - "1F37D" - ], - "emoji": "🍽", - "name": "fork and knife with plate" - }, - { - "code": [ - "1F374" - ], - "emoji": "🍴", - "name": "fork and knife" - }, - { - "code": [ - "1F944" - ], - "emoji": "🥄", - "name": "spoon" - }, - { - "code": [ - "1F52A" - ], - "emoji": "🔪", - "name": "kitchen knife" - }, - { - "code": [ - "1FAD9" - ], - "emoji": "🫙", - "name": "jar" - }, - { - "code": [ - "1F3FA" - ], - "emoji": "🏺", - "name": "amphora" - } - ] - }, - "Travel & Places": { - "place-map": [ - { - "code": [ - "1F30D" - ], - "emoji": "🌍", - "name": "globe showing Europe-Africa" - }, - { - "code": [ - "1F30E" - ], - "emoji": "🌎", - "name": "globe showing Americas" - }, - { - "code": [ - "1F30F" - ], - "emoji": "🌏", - "name": "globe showing Asia-Australia" - }, - { - "code": [ - "1F310" - ], - "emoji": "🌐", - "name": "globe with meridians" - }, - { - "code": [ - "1F5FA" - ], - "emoji": "🗺", - "name": "world map" - }, - { - "code": [ - "1F5FE" - ], - "emoji": "🗾", - "name": "map of Japan" - }, - { - "code": [ - "1F9ED" - ], - "emoji": "🧭", - "name": "compass" - } - ], - "place-geographic": [ - { - "code": [ - "1F3D4" - ], - "emoji": "🏔", - "name": "snow-capped mountain" - }, - { - "code": [ - "26F0" - ], - "emoji": "⛰", - "name": "mountain" - }, - { - "code": [ - "1F30B" - ], - "emoji": "🌋", - "name": "volcano" - }, - { - "code": [ - "1F5FB" - ], - "emoji": "🗻", - "name": "mount fuji" - }, - { - "code": [ - "1F3D5" - ], - "emoji": "🏕", - "name": "camping" - }, - { - "code": [ - "1F3D6" - ], - "emoji": "🏖", - "name": "beach with umbrella" - }, - { - "code": [ - "1F3DC" - ], - "emoji": "🏜", - "name": "desert" - }, - { - "code": [ - "1F3DD" - ], - "emoji": "🏝", - "name": "desert island" - }, - { - "code": [ - "1F3DE" - ], - "emoji": "🏞", - "name": "national park" - } - ], - "place-building": [ - { - "code": [ - "1F3DF" - ], - "emoji": "🏟", - "name": "stadium" - }, - { - "code": [ - "1F3DB" - ], - "emoji": "🏛", - "name": "classical building" - }, - { - "code": [ - "1F3D7" - ], - "emoji": "🏗", - "name": "building construction" - }, - { - "code": [ - "1F9F1" - ], - "emoji": "🧱", - "name": "brick" - }, - { - "code": [ - "1FAA8" - ], - "emoji": "🪨", - "name": "rock" - }, - { - "code": [ - "1FAB5" - ], - "emoji": "🪵", - "name": "wood" - }, - { - "code": [ - "1F6D6" - ], - "emoji": "🛖", - "name": "hut" - }, - { - "code": [ - "1F3D8" - ], - "emoji": "🏘", - "name": "houses" - }, - { - "code": [ - "1F3DA" - ], - "emoji": "🏚", - "name": "derelict house" - }, - { - "code": [ - "1F3E0" - ], - "emoji": "🏠", - "name": "house" - }, - { - "code": [ - "1F3E1" - ], - "emoji": "🏡", - "name": "house with garden" - }, - { - "code": [ - "1F3E2" - ], - "emoji": "🏢", - "name": "office building" - }, - { - "code": [ - "1F3E3" - ], - "emoji": "🏣", - "name": "Japanese post office" - }, - { - "code": [ - "1F3E4" - ], - "emoji": "🏤", - "name": "post office" - }, - { - "code": [ - "1F3E5" - ], - "emoji": "🏥", - "name": "hospital" - }, - { - "code": [ - "1F3E6" - ], - "emoji": "🏦", - "name": "bank" - }, - { - "code": [ - "1F3E8" - ], - "emoji": "🏨", - "name": "hotel" - }, - { - "code": [ - "1F3E9" - ], - "emoji": "🏩", - "name": "love hotel" - }, - { - "code": [ - "1F3EA" - ], - "emoji": "🏪", - "name": "convenience store" - }, - { - "code": [ - "1F3EB" - ], - "emoji": "🏫", - "name": "school" - }, - { - "code": [ - "1F3EC" - ], - "emoji": "🏬", - "name": "department store" - }, - { - "code": [ - "1F3ED" - ], - "emoji": "🏭", - "name": "factory" - }, - { - "code": [ - "1F3EF" - ], - "emoji": "🏯", - "name": "Japanese castle" - }, - { - "code": [ - "1F3F0" - ], - "emoji": "🏰", - "name": "castle" - }, - { - "code": [ - "1F492" - ], - "emoji": "💒", - "name": "wedding" - }, - { - "code": [ - "1F5FC" - ], - "emoji": "🗼", - "name": "Tokyo tower" - }, - { - "code": [ - "1F5FD" - ], - "emoji": "🗽", - "name": "Statue of Liberty" - } - ], - "place-religious": [ - { - "code": [ - "26EA" - ], - "emoji": "⛪", - "name": "church" - }, - { - "code": [ - "1F54C" - ], - "emoji": "🕌", - "name": "mosque" - }, - { - "code": [ - "1F6D5" - ], - "emoji": "🛕", - "name": "hindu temple" - }, - { - "code": [ - "1F54D" - ], - "emoji": "🕍", - "name": "synagogue" - }, - { - "code": [ - "26E9" - ], - "emoji": "⛩", - "name": "shinto shrine" - }, - { - "code": [ - "1F54B" - ], - "emoji": "🕋", - "name": "kaaba" - } - ], - "place-other": [ - { - "code": [ - "26F2" - ], - "emoji": "⛲", - "name": "fountain" - }, - { - "code": [ - "26FA" - ], - "emoji": "⛺", - "name": "tent" - }, - { - "code": [ - "1F301" - ], - "emoji": "🌁", - "name": "foggy" - }, - { - "code": [ - "1F303" - ], - "emoji": "🌃", - "name": "night with stars" - }, - { - "code": [ - "1F3D9" - ], - "emoji": "🏙", - "name": "cityscape" - }, - { - "code": [ - "1F304" - ], - "emoji": "🌄", - "name": "sunrise over mountains" - }, - { - "code": [ - "1F305" - ], - "emoji": "🌅", - "name": "sunrise" - }, - { - "code": [ - "1F306" - ], - "emoji": "🌆", - "name": "cityscape at dusk" - }, - { - "code": [ - "1F307" - ], - "emoji": "🌇", - "name": "sunset" - }, - { - "code": [ - "1F309" - ], - "emoji": "🌉", - "name": "bridge at night" - }, - { - "code": [ - "2668" - ], - "emoji": "♨", - "name": "hot springs" - }, - { - "code": [ - "1F3A0" - ], - "emoji": "🎠", - "name": "carousel horse" - }, - { - "code": [ - "1F6DD" - ], - "emoji": "🛝", - "name": "playground slide" - }, - { - "code": [ - "1F3A1" - ], - "emoji": "🎡", - "name": "ferris wheel" - }, - { - "code": [ - "1F3A2" - ], - "emoji": "🎢", - "name": "roller coaster" - }, - { - "code": [ - "1F488" - ], - "emoji": "💈", - "name": "barber pole" - }, - { - "code": [ - "1F3AA" - ], - "emoji": "🎪", - "name": "circus tent" - } - ], - "transport-ground": [ - { - "code": [ - "1F682" - ], - "emoji": "🚂", - "name": "locomotive" - }, - { - "code": [ - "1F683" - ], - "emoji": "🚃", - "name": "railway car" - }, - { - "code": [ - "1F684" - ], - "emoji": "🚄", - "name": "high-speed train" - }, - { - "code": [ - "1F685" - ], - "emoji": "🚅", - "name": "bullet train" - }, - { - "code": [ - "1F686" - ], - "emoji": "🚆", - "name": "train" - }, - { - "code": [ - "1F687" - ], - "emoji": "🚇", - "name": "metro" - }, - { - "code": [ - "1F688" - ], - "emoji": "🚈", - "name": "light rail" - }, - { - "code": [ - "1F689" - ], - "emoji": "🚉", - "name": "station" - }, - { - "code": [ - "1F68A" - ], - "emoji": "🚊", - "name": "tram" - }, - { - "code": [ - "1F69D" - ], - "emoji": "🚝", - "name": "monorail" - }, - { - "code": [ - "1F69E" - ], - "emoji": "🚞", - "name": "mountain railway" - }, - { - "code": [ - "1F68B" - ], - "emoji": "🚋", - "name": "tram car" - }, - { - "code": [ - "1F68C" - ], - "emoji": "🚌", - "name": "bus" - }, - { - "code": [ - "1F68D" - ], - "emoji": "🚍", - "name": "oncoming bus" - }, - { - "code": [ - "1F68E" - ], - "emoji": "🚎", - "name": "trolleybus" - }, - { - "code": [ - "1F690" - ], - "emoji": "🚐", - "name": "minibus" - }, - { - "code": [ - "1F691" - ], - "emoji": "🚑", - "name": "ambulance" - }, - { - "code": [ - "1F692" - ], - "emoji": "🚒", - "name": "fire engine" - }, - { - "code": [ - "1F693" - ], - "emoji": "🚓", - "name": "police car" - }, - { - "code": [ - "1F694" - ], - "emoji": "🚔", - "name": "oncoming police car" - }, - { - "code": [ - "1F695" - ], - "emoji": "🚕", - "name": "taxi" - }, - { - "code": [ - "1F696" - ], - "emoji": "🚖", - "name": "oncoming taxi" - }, - { - "code": [ - "1F697" - ], - "emoji": "🚗", - "name": "automobile" - }, - { - "code": [ - "1F698" - ], - "emoji": "🚘", - "name": "oncoming automobile" - }, - { - "code": [ - "1F699" - ], - "emoji": "🚙", - "name": "sport utility vehicle" - }, - { - "code": [ - "1F6FB" - ], - "emoji": "🛻", - "name": "pickup truck" - }, - { - "code": [ - "1F69A" - ], - "emoji": "🚚", - "name": "delivery truck" - }, - { - "code": [ - "1F69B" - ], - "emoji": "🚛", - "name": "articulated lorry" - }, - { - "code": [ - "1F69C" - ], - "emoji": "🚜", - "name": "tractor" - }, - { - "code": [ - "1F3CE" - ], - "emoji": "🏎", - "name": "racing car" - }, - { - "code": [ - "1F3CD" - ], - "emoji": "🏍", - "name": "motorcycle" - }, - { - "code": [ - "1F6F5" - ], - "emoji": "🛵", - "name": "motor scooter" - }, - { - "code": [ - "1F9BD" - ], - "emoji": "🦽", - "name": "manual wheelchair" - }, - { - "code": [ - "1F9BC" - ], - "emoji": "🦼", - "name": "motorized wheelchair" - }, - { - "code": [ - "1F6FA" - ], - "emoji": "🛺", - "name": "auto rickshaw" - }, - { - "code": [ - "1F6B2" - ], - "emoji": "🚲", - "name": "bicycle" - }, - { - "code": [ - "1F6F4" - ], - "emoji": "🛴", - "name": "kick scooter" - }, - { - "code": [ - "1F6F9" - ], - "emoji": "🛹", - "name": "skateboard" - }, - { - "code": [ - "1F6FC" - ], - "emoji": "🛼", - "name": "roller skate" - }, - { - "code": [ - "1F68F" - ], - "emoji": "🚏", - "name": "bus stop" - }, - { - "code": [ - "1F6E3" - ], - "emoji": "🛣", - "name": "motorway" - }, - { - "code": [ - "1F6E4" - ], - "emoji": "🛤", - "name": "railway track" - }, - { - "code": [ - "1F6E2" - ], - "emoji": "🛢", - "name": "oil drum" - }, - { - "code": [ - "26FD" - ], - "emoji": "⛽", - "name": "fuel pump" - }, - { - "code": [ - "1F6DE" - ], - "emoji": "🛞", - "name": "wheel" - }, - { - "code": [ - "1F6A8" - ], - "emoji": "🚨", - "name": "police car light" - }, - { - "code": [ - "1F6A5" - ], - "emoji": "🚥", - "name": "horizontal traffic light" - }, - { - "code": [ - "1F6A6" - ], - "emoji": "🚦", - "name": "vertical traffic light" - }, - { - "code": [ - "1F6D1" - ], - "emoji": "🛑", - "name": "stop sign" - }, - { - "code": [ - "1F6A7" - ], - "emoji": "🚧", - "name": "construction" - } - ], - "transport-water": [ - { - "code": [ - "2693" - ], - "emoji": "⚓", - "name": "anchor" - }, - { - "code": [ - "1F6DF" - ], - "emoji": "🛟", - "name": "ring buoy" - }, - { - "code": [ - "26F5" - ], - "emoji": "⛵", - "name": "sailboat" - }, - { - "code": [ - "1F6F6" - ], - "emoji": "🛶", - "name": "canoe" - }, - { - "code": [ - "1F6A4" - ], - "emoji": "🚤", - "name": "speedboat" - }, - { - "code": [ - "1F6F3" - ], - "emoji": "🛳", - "name": "passenger ship" - }, - { - "code": [ - "26F4" - ], - "emoji": "⛴", - "name": "ferry" - }, - { - "code": [ - "1F6E5" - ], - "emoji": "🛥", - "name": "motor boat" - }, - { - "code": [ - "1F6A2" - ], - "emoji": "🚢", - "name": "ship" - } - ], - "transport-air": [ - { - "code": [ - "2708" - ], - "emoji": "✈", - "name": "airplane" - }, - { - "code": [ - "1F6E9" - ], - "emoji": "🛩", - "name": "small airplane" - }, - { - "code": [ - "1F6EB" - ], - "emoji": "🛫", - "name": "airplane departure" - }, - { - "code": [ - "1F6EC" - ], - "emoji": "🛬", - "name": "airplane arrival" - }, - { - "code": [ - "1FA82" - ], - "emoji": "🪂", - "name": "parachute" - }, - { - "code": [ - "1F4BA" - ], - "emoji": "💺", - "name": "seat" - }, - { - "code": [ - "1F681" - ], - "emoji": "🚁", - "name": "helicopter" - }, - { - "code": [ - "1F69F" - ], - "emoji": "🚟", - "name": "suspension railway" - }, - { - "code": [ - "1F6A0" - ], - "emoji": "🚠", - "name": "mountain cableway" - }, - { - "code": [ - "1F6A1" - ], - "emoji": "🚡", - "name": "aerial tramway" - }, - { - "code": [ - "1F6F0" - ], - "emoji": "🛰", - "name": "satellite" - }, - { - "code": [ - "1F680" - ], - "emoji": "🚀", - "name": "rocket" - }, - { - "code": [ - "1F6F8" - ], - "emoji": "🛸", - "name": "flying saucer" - } - ], - "hotel": [ - { - "code": [ - "1F6CE" - ], - "emoji": "🛎", - "name": "bellhop bell" - }, - { - "code": [ - "1F9F3" - ], - "emoji": "🧳", - "name": "luggage" - } - ], - "time": [ - { - "code": [ - "231B" - ], - "emoji": "⌛", - "name": "hourglass done" - }, - { - "code": [ - "23F3" - ], - "emoji": "⏳", - "name": "hourglass not done" - }, - { - "code": [ - "231A" - ], - "emoji": "⌚", - "name": "watch" - }, - { - "code": [ - "23F0" - ], - "emoji": "⏰", - "name": "alarm clock" - }, - { - "code": [ - "23F1" - ], - "emoji": "⏱", - "name": "stopwatch" - }, - { - "code": [ - "23F2" - ], - "emoji": "⏲", - "name": "timer clock" - }, - { - "code": [ - "1F570" - ], - "emoji": "🕰", - "name": "mantelpiece clock" - }, - { - "code": [ - "1F55B" - ], - "emoji": "🕛", - "name": "twelve o’clock" - }, - { - "code": [ - "1F567" - ], - "emoji": "🕧", - "name": "twelve-thirty" - }, - { - "code": [ - "1F550" - ], - "emoji": "🕐", - "name": "one o’clock" - }, - { - "code": [ - "1F55C" - ], - "emoji": "🕜", - "name": "one-thirty" - }, - { - "code": [ - "1F551" - ], - "emoji": "🕑", - "name": "two o’clock" - }, - { - "code": [ - "1F55D" - ], - "emoji": "🕝", - "name": "two-thirty" - }, - { - "code": [ - "1F552" - ], - "emoji": "🕒", - "name": "three o’clock" - }, - { - "code": [ - "1F55E" - ], - "emoji": "🕞", - "name": "three-thirty" - }, - { - "code": [ - "1F553" - ], - "emoji": "🕓", - "name": "four o’clock" - }, - { - "code": [ - "1F55F" - ], - "emoji": "🕟", - "name": "four-thirty" - }, - { - "code": [ - "1F554" - ], - "emoji": "🕔", - "name": "five o’clock" - }, - { - "code": [ - "1F560" - ], - "emoji": "🕠", - "name": "five-thirty" - }, - { - "code": [ - "1F555" - ], - "emoji": "🕕", - "name": "six o’clock" - }, - { - "code": [ - "1F561" - ], - "emoji": "🕡", - "name": "six-thirty" - }, - { - "code": [ - "1F556" - ], - "emoji": "🕖", - "name": "seven o’clock" - }, - { - "code": [ - "1F562" - ], - "emoji": "🕢", - "name": "seven-thirty" - }, - { - "code": [ - "1F557" - ], - "emoji": "🕗", - "name": "eight o’clock" - }, - { - "code": [ - "1F563" - ], - "emoji": "🕣", - "name": "eight-thirty" - }, - { - "code": [ - "1F558" - ], - "emoji": "🕘", - "name": "nine o’clock" - }, - { - "code": [ - "1F564" - ], - "emoji": "🕤", - "name": "nine-thirty" - }, - { - "code": [ - "1F559" - ], - "emoji": "🕙", - "name": "ten o’clock" - }, - { - "code": [ - "1F565" - ], - "emoji": "🕥", - "name": "ten-thirty" - }, - { - "code": [ - "1F55A" - ], - "emoji": "🕚", - "name": "eleven o’clock" - }, - { - "code": [ - "1F566" - ], - "emoji": "🕦", - "name": "eleven-thirty" - } - ], - "sky & weather": [ - { - "code": [ - "1F311" - ], - "emoji": "🌑", - "name": "new moon" - }, - { - "code": [ - "1F312" - ], - "emoji": "🌒", - "name": "waxing crescent moon" - }, - { - "code": [ - "1F313" - ], - "emoji": "🌓", - "name": "first quarter moon" - }, - { - "code": [ - "1F314" - ], - "emoji": "🌔", - "name": "waxing gibbous moon" - }, - { - "code": [ - "1F315" - ], - "emoji": "🌕", - "name": "full moon" - }, - { - "code": [ - "1F316" - ], - "emoji": "🌖", - "name": "waning gibbous moon" - }, - { - "code": [ - "1F317" - ], - "emoji": "🌗", - "name": "last quarter moon" - }, - { - "code": [ - "1F318" - ], - "emoji": "🌘", - "name": "waning crescent moon" - }, - { - "code": [ - "1F319" - ], - "emoji": "🌙", - "name": "crescent moon" - }, - { - "code": [ - "1F31A" - ], - "emoji": "🌚", - "name": "new moon face" - }, - { - "code": [ - "1F31B" - ], - "emoji": "🌛", - "name": "first quarter moon face" - }, - { - "code": [ - "1F31C" - ], - "emoji": "🌜", - "name": "last quarter moon face" - }, - { - "code": [ - "1F321" - ], - "emoji": "🌡", - "name": "thermometer" - }, - { - "code": [ - "2600" - ], - "emoji": "☀", - "name": "sun" - }, - { - "code": [ - "1F31D" - ], - "emoji": "🌝", - "name": "full moon face" - }, - { - "code": [ - "1F31E" - ], - "emoji": "🌞", - "name": "sun with face" - }, - { - "code": [ - "1FA90" - ], - "emoji": "🪐", - "name": "ringed planet" - }, - { - "code": [ - "2B50" - ], - "emoji": "⭐", - "name": "star" - }, - { - "code": [ - "1F31F" - ], - "emoji": "🌟", - "name": "glowing star" - }, - { - "code": [ - "1F320" - ], - "emoji": "🌠", - "name": "shooting star" - }, - { - "code": [ - "1F30C" - ], - "emoji": "🌌", - "name": "milky way" - }, - { - "code": [ - "2601" - ], - "emoji": "☁", - "name": "cloud" - }, - { - "code": [ - "26C5" - ], - "emoji": "⛅", - "name": "sun behind cloud" - }, - { - "code": [ - "26C8" - ], - "emoji": "⛈", - "name": "cloud with lightning and rain" - }, - { - "code": [ - "1F324" - ], - "emoji": "🌤", - "name": "sun behind small cloud" - }, - { - "code": [ - "1F325" - ], - "emoji": "🌥", - "name": "sun behind large cloud" - }, - { - "code": [ - "1F326" - ], - "emoji": "🌦", - "name": "sun behind rain cloud" - }, - { - "code": [ - "1F327" - ], - "emoji": "🌧", - "name": "cloud with rain" - }, - { - "code": [ - "1F328" - ], - "emoji": "🌨", - "name": "cloud with snow" - }, - { - "code": [ - "1F329" - ], - "emoji": "🌩", - "name": "cloud with lightning" - }, - { - "code": [ - "1F32A" - ], - "emoji": "🌪", - "name": "tornado" - }, - { - "code": [ - "1F32B" - ], - "emoji": "🌫", - "name": "fog" - }, - { - "code": [ - "1F32C" - ], - "emoji": "🌬", - "name": "wind face" - }, - { - "code": [ - "1F300" - ], - "emoji": "🌀", - "name": "cyclone" - }, - { - "code": [ - "1F308" - ], - "emoji": "🌈", - "name": "rainbow" - }, - { - "code": [ - "1F302" - ], - "emoji": "🌂", - "name": "closed umbrella" - }, - { - "code": [ - "2602" - ], - "emoji": "☂", - "name": "umbrella" - }, - { - "code": [ - "2614" - ], - "emoji": "☔", - "name": "umbrella with rain drops" - }, - { - "code": [ - "26F1" - ], - "emoji": "⛱", - "name": "umbrella on ground" - }, - { - "code": [ - "26A1" - ], - "emoji": "⚡", - "name": "high voltage" - }, - { - "code": [ - "2744" - ], - "emoji": "❄", - "name": "snowflake" - }, - { - "code": [ - "2603" - ], - "emoji": "☃", - "name": "snowman" - }, - { - "code": [ - "26C4" - ], - "emoji": "⛄", - "name": "snowman without snow" - }, - { - "code": [ - "2604" - ], - "emoji": "☄", - "name": "comet" - }, - { - "code": [ - "1F525" - ], - "emoji": "🔥", - "name": "fire" - }, - { - "code": [ - "1F4A7" - ], - "emoji": "💧", - "name": "droplet" - }, - { - "code": [ - "1F30A" - ], - "emoji": "🌊", - "name": "water wave" - } - ] - }, - "Activities": { - "event": [ - { - "code": [ - "1F383" - ], - "emoji": "🎃", - "name": "jack-o-lantern" - }, - { - "code": [ - "1F384" - ], - "emoji": "🎄", - "name": "Christmas tree" - }, - { - "code": [ - "1F386" - ], - "emoji": "🎆", - "name": "fireworks" - }, - { - "code": [ - "1F387" - ], - "emoji": "🎇", - "name": "sparkler" - }, - { - "code": [ - "1F9E8" - ], - "emoji": "🧨", - "name": "firecracker" - }, - { - "code": [ - "2728" - ], - "emoji": "✨", - "name": "sparkles" - }, - { - "code": [ - "1F388" - ], - "emoji": "🎈", - "name": "balloon" - }, - { - "code": [ - "1F389" - ], - "emoji": "🎉", - "name": "party popper" - }, - { - "code": [ - "1F38A" - ], - "emoji": "🎊", - "name": "confetti ball" - }, - { - "code": [ - "1F38B" - ], - "emoji": "🎋", - "name": "tanabata tree" - }, - { - "code": [ - "1F38D" - ], - "emoji": "🎍", - "name": "pine decoration" - }, - { - "code": [ - "1F38E" - ], - "emoji": "🎎", - "name": "Japanese dolls" - }, - { - "code": [ - "1F38F" - ], - "emoji": "🎏", - "name": "carp streamer" - }, - { - "code": [ - "1F390" - ], - "emoji": "🎐", - "name": "wind chime" - }, - { - "code": [ - "1F391" - ], - "emoji": "🎑", - "name": "moon viewing ceremony" - }, - { - "code": [ - "1F9E7" - ], - "emoji": "🧧", - "name": "red envelope" - }, - { - "code": [ - "1F380" - ], - "emoji": "🎀", - "name": "ribbon" - }, - { - "code": [ - "1F381" - ], - "emoji": "🎁", - "name": "wrapped gift" - }, - { - "code": [ - "1F397" - ], - "emoji": "🎗", - "name": "reminder ribbon" - }, - { - "code": [ - "1F39F" - ], - "emoji": "🎟", - "name": "admission tickets" - }, - { - "code": [ - "1F3AB" - ], - "emoji": "🎫", - "name": "ticket" - } - ], - "award-medal": [ - { - "code": [ - "1F396" - ], - "emoji": "🎖", - "name": "military medal" - }, - { - "code": [ - "1F3C6" - ], - "emoji": "🏆", - "name": "trophy" - }, - { - "code": [ - "1F3C5" - ], - "emoji": "🏅", - "name": "sports medal" - }, - { - "code": [ - "1F947" - ], - "emoji": "🥇", - "name": "1st place medal" - }, - { - "code": [ - "1F948" - ], - "emoji": "🥈", - "name": "2nd place medal" - }, - { - "code": [ - "1F949" - ], - "emoji": "🥉", - "name": "3rd place medal" - } - ], - "sport": [ - { - "code": [ - "26BD" - ], - "emoji": "⚽", - "name": "soccer ball" - }, - { - "code": [ - "26BE" - ], - "emoji": "⚾", - "name": "baseball" - }, - { - "code": [ - "1F94E" - ], - "emoji": "🥎", - "name": "softball" - }, - { - "code": [ - "1F3C0" - ], - "emoji": "🏀", - "name": "basketball" - }, - { - "code": [ - "1F3D0" - ], - "emoji": "🏐", - "name": "volleyball" - }, - { - "code": [ - "1F3C8" - ], - "emoji": "🏈", - "name": "american football" - }, - { - "code": [ - "1F3C9" - ], - "emoji": "🏉", - "name": "rugby football" - }, - { - "code": [ - "1F3BE" - ], - "emoji": "🎾", - "name": "tennis" - }, - { - "code": [ - "1F94F" - ], - "emoji": "🥏", - "name": "flying disc" - }, - { - "code": [ - "1F3B3" - ], - "emoji": "🎳", - "name": "bowling" - }, - { - "code": [ - "1F3CF" - ], - "emoji": "🏏", - "name": "cricket game" - }, - { - "code": [ - "1F3D1" - ], - "emoji": "🏑", - "name": "field hockey" - }, - { - "code": [ - "1F3D2" - ], - "emoji": "🏒", - "name": "ice hockey" - }, - { - "code": [ - "1F94D" - ], - "emoji": "🥍", - "name": "lacrosse" - }, - { - "code": [ - "1F3D3" - ], - "emoji": "🏓", - "name": "ping pong" - }, - { - "code": [ - "1F3F8" - ], - "emoji": "🏸", - "name": "badminton" - }, - { - "code": [ - "1F94A" - ], - "emoji": "🥊", - "name": "boxing glove" - }, - { - "code": [ - "1F94B" - ], - "emoji": "🥋", - "name": "martial arts uniform" - }, - { - "code": [ - "1F945" - ], - "emoji": "🥅", - "name": "goal net" - }, - { - "code": [ - "26F3" - ], - "emoji": "⛳", - "name": "flag in hole" - }, - { - "code": [ - "26F8" - ], - "emoji": "⛸", - "name": "ice skate" - }, - { - "code": [ - "1F3A3" - ], - "emoji": "🎣", - "name": "fishing pole" - }, - { - "code": [ - "1F93F" - ], - "emoji": "🤿", - "name": "diving mask" - }, - { - "code": [ - "1F3BD" - ], - "emoji": "🎽", - "name": "running shirt" - }, - { - "code": [ - "1F3BF" - ], - "emoji": "🎿", - "name": "skis" - }, - { - "code": [ - "1F6F7" - ], - "emoji": "🛷", - "name": "sled" - }, - { - "code": [ - "1F94C" - ], - "emoji": "🥌", - "name": "curling stone" - } - ], - "game": [ - { - "code": [ - "1F3AF" - ], - "emoji": "🎯", - "name": "bullseye" - }, - { - "code": [ - "1FA80" - ], - "emoji": "🪀", - "name": "yo-yo" - }, - { - "code": [ - "1FA81" - ], - "emoji": "🪁", - "name": "kite" - }, - { - "code": [ - "1F52B" - ], - "emoji": "🔫", - "name": "water pistol" - }, - { - "code": [ - "1F3B1" - ], - "emoji": "🎱", - "name": "pool 8 ball" - }, - { - "code": [ - "1F52E" - ], - "emoji": "🔮", - "name": "crystal ball" - }, - { - "code": [ - "1FA84" - ], - "emoji": "🪄", - "name": "magic wand" - }, - { - "code": [ - "1F3AE" - ], - "emoji": "🎮", - "name": "video game" - }, - { - "code": [ - "1F579" - ], - "emoji": "🕹", - "name": "joystick" - }, - { - "code": [ - "1F3B0" - ], - "emoji": "🎰", - "name": "slot machine" - }, - { - "code": [ - "1F3B2" - ], - "emoji": "🎲", - "name": "game die" - }, - { - "code": [ - "1F9E9" - ], - "emoji": "🧩", - "name": "puzzle piece" - }, - { - "code": [ - "1F9F8" - ], - "emoji": "🧸", - "name": "teddy bear" - }, - { - "code": [ - "1FA85" - ], - "emoji": "🪅", - "name": "piñata" - }, - { - "code": [ - "1FAA9" - ], - "emoji": "🪩", - "name": "mirror ball" - }, - { - "code": [ - "1FA86" - ], - "emoji": "🪆", - "name": "nesting dolls" - }, - { - "code": [ - "2660" - ], - "emoji": "♠", - "name": "spade suit" - }, - { - "code": [ - "2665" - ], - "emoji": "♥", - "name": "heart suit" - }, - { - "code": [ - "2666" - ], - "emoji": "♦", - "name": "diamond suit" - }, - { - "code": [ - "2663" - ], - "emoji": "♣", - "name": "club suit" - }, - { - "code": [ - "265F" - ], - "emoji": "♟", - "name": "chess pawn" - }, - { - "code": [ - "1F0CF" - ], - "emoji": "🃏", - "name": "joker" - }, - { - "code": [ - "1F004" - ], - "emoji": "🀄", - "name": "mahjong red dragon" - }, - { - "code": [ - "1F3B4" - ], - "emoji": "🎴", - "name": "flower playing cards" - } - ], - "arts & crafts": [ - { - "code": [ - "1F3AD" - ], - "emoji": "🎭", - "name": "performing arts" - }, - { - "code": [ - "1F5BC" - ], - "emoji": "🖼", - "name": "framed picture" - }, - { - "code": [ - "1F3A8" - ], - "emoji": "🎨", - "name": "artist palette" - }, - { - "code": [ - "1F9F5" - ], - "emoji": "🧵", - "name": "thread" - }, - { - "code": [ - "1FAA1" - ], - "emoji": "🪡", - "name": "sewing needle" - }, - { - "code": [ - "1F9F6" - ], - "emoji": "🧶", - "name": "yarn" - }, - { - "code": [ - "1FAA2" - ], - "emoji": "🪢", - "name": "knot" - } - ] - }, - "Objects": { - "clothing": [ - { - "code": [ - "1F453" - ], - "emoji": "👓", - "name": "glasses" - }, - { - "code": [ - "1F576" - ], - "emoji": "🕶", - "name": "sunglasses" - }, - { - "code": [ - "1F97D" - ], - "emoji": "🥽", - "name": "goggles" - }, - { - "code": [ - "1F97C" - ], - "emoji": "🥼", - "name": "lab coat" - }, - { - "code": [ - "1F9BA" - ], - "emoji": "🦺", - "name": "safety vest" - }, - { - "code": [ - "1F454" - ], - "emoji": "👔", - "name": "necktie" - }, - { - "code": [ - "1F455" - ], - "emoji": "👕", - "name": "t-shirt" - }, - { - "code": [ - "1F456" - ], - "emoji": "👖", - "name": "jeans" - }, - { - "code": [ - "1F9E3" - ], - "emoji": "🧣", - "name": "scarf" - }, - { - "code": [ - "1F9E4" - ], - "emoji": "🧤", - "name": "gloves" - }, - { - "code": [ - "1F9E5" - ], - "emoji": "🧥", - "name": "coat" - }, - { - "code": [ - "1F9E6" - ], - "emoji": "🧦", - "name": "socks" - }, - { - "code": [ - "1F457" - ], - "emoji": "👗", - "name": "dress" - }, - { - "code": [ - "1F458" - ], - "emoji": "👘", - "name": "kimono" - }, - { - "code": [ - "1F97B" - ], - "emoji": "🥻", - "name": "sari" - }, - { - "code": [ - "1FA71" - ], - "emoji": "🩱", - "name": "one-piece swimsuit" - }, - { - "code": [ - "1FA72" - ], - "emoji": "🩲", - "name": "briefs" - }, - { - "code": [ - "1FA73" - ], - "emoji": "🩳", - "name": "shorts" - }, - { - "code": [ - "1F459" - ], - "emoji": "👙", - "name": "bikini" - }, - { - "code": [ - "1F45A" - ], - "emoji": "👚", - "name": "woman’s clothes" - }, - { - "code": [ - "1FAAD" - ], - "emoji": "🪭", - "name": "folding hand fan" - }, - { - "code": [ - "1F45B" - ], - "emoji": "👛", - "name": "purse" - }, - { - "code": [ - "1F45C" - ], - "emoji": "👜", - "name": "handbag" - }, - { - "code": [ - "1F45D" - ], - "emoji": "👝", - "name": "clutch bag" - }, - { - "code": [ - "1F6CD" - ], - "emoji": "🛍", - "name": "shopping bags" - }, - { - "code": [ - "1F392" - ], - "emoji": "🎒", - "name": "backpack" - }, - { - "code": [ - "1FA74" - ], - "emoji": "🩴", - "name": "thong sandal" - }, - { - "code": [ - "1F45E" - ], - "emoji": "👞", - "name": "man’s shoe" - }, - { - "code": [ - "1F45F" - ], - "emoji": "👟", - "name": "running shoe" - }, - { - "code": [ - "1F97E" - ], - "emoji": "🥾", - "name": "hiking boot" - }, - { - "code": [ - "1F97F" - ], - "emoji": "🥿", - "name": "flat shoe" - }, - { - "code": [ - "1F460" - ], - "emoji": "👠", - "name": "high-heeled shoe" - }, - { - "code": [ - "1F461" - ], - "emoji": "👡", - "name": "woman’s sandal" - }, - { - "code": [ - "1FA70" - ], - "emoji": "🩰", - "name": "ballet shoes" - }, - { - "code": [ - "1F462" - ], - "emoji": "👢", - "name": "woman’s boot" - }, - { - "code": [ - "1FAAE" - ], - "emoji": "🪮", - "name": "hair pick" - }, - { - "code": [ - "1F451" - ], - "emoji": "👑", - "name": "crown" - }, - { - "code": [ - "1F452" - ], - "emoji": "👒", - "name": "woman’s hat" - }, - { - "code": [ - "1F3A9" - ], - "emoji": "🎩", - "name": "top hat" - }, - { - "code": [ - "1F393" - ], - "emoji": "🎓", - "name": "graduation cap" - }, - { - "code": [ - "1F9E2" - ], - "emoji": "🧢", - "name": "billed cap" - }, - { - "code": [ - "1FA96" - ], - "emoji": "🪖", - "name": "military helmet" - }, - { - "code": [ - "26D1" - ], - "emoji": "⛑", - "name": "rescue worker’s helmet" - }, - { - "code": [ - "1F4FF" - ], - "emoji": "📿", - "name": "prayer beads" - }, - { - "code": [ - "1F484" - ], - "emoji": "💄", - "name": "lipstick" - }, - { - "code": [ - "1F48D" - ], - "emoji": "💍", - "name": "ring" - }, - { - "code": [ - "1F48E" - ], - "emoji": "💎", - "name": "gem stone" - } - ], - "sound": [ - { - "code": [ - "1F507" - ], - "emoji": "🔇", - "name": "muted speaker" - }, - { - "code": [ - "1F508" - ], - "emoji": "🔈", - "name": "speaker low volume" - }, - { - "code": [ - "1F509" - ], - "emoji": "🔉", - "name": "speaker medium volume" - }, - { - "code": [ - "1F50A" - ], - "emoji": "🔊", - "name": "speaker high volume" - }, - { - "code": [ - "1F4E2" - ], - "emoji": "📢", - "name": "loudspeaker" - }, - { - "code": [ - "1F4E3" - ], - "emoji": "📣", - "name": "megaphone" - }, - { - "code": [ - "1F4EF" - ], - "emoji": "📯", - "name": "postal horn" - }, - { - "code": [ - "1F514" - ], - "emoji": "🔔", - "name": "bell" - }, - { - "code": [ - "1F515" - ], - "emoji": "🔕", - "name": "bell with slash" - } - ], - "music": [ - { - "code": [ - "1F3BC" - ], - "emoji": "🎼", - "name": "musical score" - }, - { - "code": [ - "1F3B5" - ], - "emoji": "🎵", - "name": "musical note" - }, - { - "code": [ - "1F3B6" - ], - "emoji": "🎶", - "name": "musical notes" - }, - { - "code": [ - "1F399" - ], - "emoji": "🎙", - "name": "studio microphone" - }, - { - "code": [ - "1F39A" - ], - "emoji": "🎚", - "name": "level slider" - }, - { - "code": [ - "1F39B" - ], - "emoji": "🎛", - "name": "control knobs" - }, - { - "code": [ - "1F3A4" - ], - "emoji": "🎤", - "name": "microphone" - }, - { - "code": [ - "1F3A7" - ], - "emoji": "🎧", - "name": "headphone" - }, - { - "code": [ - "1F4FB" - ], - "emoji": "📻", - "name": "radio" - } - ], - "musical-instrument": [ - { - "code": [ - "1F3B7" - ], - "emoji": "🎷", - "name": "saxophone" - }, - { - "code": [ - "1FA97" - ], - "emoji": "🪗", - "name": "accordion" - }, - { - "code": [ - "1F3B8" - ], - "emoji": "🎸", - "name": "guitar" - }, - { - "code": [ - "1F3B9" - ], - "emoji": "🎹", - "name": "musical keyboard" - }, - { - "code": [ - "1F3BA" - ], - "emoji": "🎺", - "name": "trumpet" - }, - { - "code": [ - "1F3BB" - ], - "emoji": "🎻", - "name": "violin" - }, - { - "code": [ - "1FA95" - ], - "emoji": "🪕", - "name": "banjo" - }, - { - "code": [ - "1F941" - ], - "emoji": "🥁", - "name": "drum" - }, - { - "code": [ - "1FA98" - ], - "emoji": "🪘", - "name": "long drum" - }, - { - "code": [ - "1FA87" - ], - "emoji": "🪇", - "name": "maracas" - }, - { - "code": [ - "1FA88" - ], - "emoji": "🪈", - "name": "flute" - }, - { - "code": [ - "1FA89" - ], - "emoji": "🪉", - "name": "harp" - } - ], - "phone": [ - { - "code": [ - "1F4F1" - ], - "emoji": "📱", - "name": "mobile phone" - }, - { - "code": [ - "1F4F2" - ], - "emoji": "📲", - "name": "mobile phone with arrow" - }, - { - "code": [ - "260E" - ], - "emoji": "☎", - "name": "telephone" - }, - { - "code": [ - "1F4DE" - ], - "emoji": "📞", - "name": "telephone receiver" - }, - { - "code": [ - "1F4DF" - ], - "emoji": "📟", - "name": "pager" - }, - { - "code": [ - "1F4E0" - ], - "emoji": "📠", - "name": "fax machine" - } - ], - "computer": [ - { - "code": [ - "1F50B" - ], - "emoji": "🔋", - "name": "battery" - }, - { - "code": [ - "1FAAB" - ], - "emoji": "🪫", - "name": "low battery" - }, - { - "code": [ - "1F50C" - ], - "emoji": "🔌", - "name": "electric plug" - }, - { - "code": [ - "1F4BB" - ], - "emoji": "💻", - "name": "laptop" - }, - { - "code": [ - "1F5A5" - ], - "emoji": "🖥", - "name": "desktop computer" - }, - { - "code": [ - "1F5A8" - ], - "emoji": "🖨", - "name": "printer" - }, - { - "code": [ - "2328" - ], - "emoji": "⌨", - "name": "keyboard" - }, - { - "code": [ - "1F5B1" - ], - "emoji": "🖱", - "name": "computer mouse" - }, - { - "code": [ - "1F5B2" - ], - "emoji": "🖲", - "name": "trackball" - }, - { - "code": [ - "1F4BD" - ], - "emoji": "💽", - "name": "computer disk" - }, - { - "code": [ - "1F4BE" - ], - "emoji": "💾", - "name": "floppy disk" - }, - { - "code": [ - "1F4BF" - ], - "emoji": "💿", - "name": "optical disk" - }, - { - "code": [ - "1F4C0" - ], - "emoji": "📀", - "name": "dvd" - }, - { - "code": [ - "1F9EE" - ], - "emoji": "🧮", - "name": "abacus" - } - ], - "light & video": [ - { - "code": [ - "1F3A5" - ], - "emoji": "🎥", - "name": "movie camera" - }, - { - "code": [ - "1F39E" - ], - "emoji": "🎞", - "name": "film frames" - }, - { - "code": [ - "1F4FD" - ], - "emoji": "📽", - "name": "film projector" - }, - { - "code": [ - "1F3AC" - ], - "emoji": "🎬", - "name": "clapper board" - }, - { - "code": [ - "1F4FA" - ], - "emoji": "📺", - "name": "television" - }, - { - "code": [ - "1F4F7" - ], - "emoji": "📷", - "name": "camera" - }, - { - "code": [ - "1F4F8" - ], - "emoji": "📸", - "name": "camera with flash" - }, - { - "code": [ - "1F4F9" - ], - "emoji": "📹", - "name": "video camera" - }, - { - "code": [ - "1F4FC" - ], - "emoji": "📼", - "name": "videocassette" - }, - { - "code": [ - "1F50D" - ], - "emoji": "🔍", - "name": "magnifying glass tilted left" - }, - { - "code": [ - "1F50E" - ], - "emoji": "🔎", - "name": "magnifying glass tilted right" - }, - { - "code": [ - "1F56F" - ], - "emoji": "🕯", - "name": "candle" - }, - { - "code": [ - "1F4A1" - ], - "emoji": "💡", - "name": "light bulb" - }, - { - "code": [ - "1F526" - ], - "emoji": "🔦", - "name": "flashlight" - }, - { - "code": [ - "1F3EE" - ], - "emoji": "🏮", - "name": "red paper lantern" - }, - { - "code": [ - "1FA94" - ], - "emoji": "🪔", - "name": "diya lamp" - } - ], - "book-paper": [ - { - "code": [ - "1F4D4" - ], - "emoji": "📔", - "name": "notebook with decorative cover" - }, - { - "code": [ - "1F4D5" - ], - "emoji": "📕", - "name": "closed book" - }, - { - "code": [ - "1F4D6" - ], - "emoji": "📖", - "name": "open book" - }, - { - "code": [ - "1F4D7" - ], - "emoji": "📗", - "name": "green book" - }, - { - "code": [ - "1F4D8" - ], - "emoji": "📘", - "name": "blue book" - }, - { - "code": [ - "1F4D9" - ], - "emoji": "📙", - "name": "orange book" - }, - { - "code": [ - "1F4DA" - ], - "emoji": "📚", - "name": "books" - }, - { - "code": [ - "1F4D3" - ], - "emoji": "📓", - "name": "notebook" - }, - { - "code": [ - "1F4D2" - ], - "emoji": "📒", - "name": "ledger" - }, - { - "code": [ - "1F4C3" - ], - "emoji": "📃", - "name": "page with curl" - }, - { - "code": [ - "1F4DC" - ], - "emoji": "📜", - "name": "scroll" - }, - { - "code": [ - "1F4C4" - ], - "emoji": "📄", - "name": "page facing up" - }, - { - "code": [ - "1F4F0" - ], - "emoji": "📰", - "name": "newspaper" - }, - { - "code": [ - "1F5DE" - ], - "emoji": "🗞", - "name": "rolled-up newspaper" - }, - { - "code": [ - "1F4D1" - ], - "emoji": "📑", - "name": "bookmark tabs" - }, - { - "code": [ - "1F516" - ], - "emoji": "🔖", - "name": "bookmark" - }, - { - "code": [ - "1F3F7" - ], - "emoji": "🏷", - "name": "label" - } - ], - "money": [ - { - "code": [ - "1F4B0" - ], - "emoji": "💰", - "name": "money bag" - }, - { - "code": [ - "1FA99" - ], - "emoji": "🪙", - "name": "coin" - }, - { - "code": [ - "1F4B4" - ], - "emoji": "💴", - "name": "yen banknote" - }, - { - "code": [ - "1F4B5" - ], - "emoji": "💵", - "name": "dollar banknote" - }, - { - "code": [ - "1F4B6" - ], - "emoji": "💶", - "name": "euro banknote" - }, - { - "code": [ - "1F4B7" - ], - "emoji": "💷", - "name": "pound banknote" - }, - { - "code": [ - "1F4B8" - ], - "emoji": "💸", - "name": "money with wings" - }, - { - "code": [ - "1F4B3" - ], - "emoji": "💳", - "name": "credit card" - }, - { - "code": [ - "1F9FE" - ], - "emoji": "🧾", - "name": "receipt" - }, - { - "code": [ - "1F4B9" - ], - "emoji": "💹", - "name": "chart increasing with yen" - } - ], - "mail": [ - { - "code": [ - "2709" - ], - "emoji": "✉", - "name": "envelope" - }, - { - "code": [ - "1F4E7" - ], - "emoji": "📧", - "name": "e-mail" - }, - { - "code": [ - "1F4E8" - ], - "emoji": "📨", - "name": "incoming envelope" - }, - { - "code": [ - "1F4E9" - ], - "emoji": "📩", - "name": "envelope with arrow" - }, - { - "code": [ - "1F4E4" - ], - "emoji": "📤", - "name": "outbox tray" - }, - { - "code": [ - "1F4E5" - ], - "emoji": "📥", - "name": "inbox tray" - }, - { - "code": [ - "1F4E6" - ], - "emoji": "📦", - "name": "package" - }, - { - "code": [ - "1F4EB" - ], - "emoji": "📫", - "name": "closed mailbox with raised flag" - }, - { - "code": [ - "1F4EA" - ], - "emoji": "📪", - "name": "closed mailbox with lowered flag" - }, - { - "code": [ - "1F4EC" - ], - "emoji": "📬", - "name": "open mailbox with raised flag" - }, - { - "code": [ - "1F4ED" - ], - "emoji": "📭", - "name": "open mailbox with lowered flag" - }, - { - "code": [ - "1F4EE" - ], - "emoji": "📮", - "name": "postbox" - }, - { - "code": [ - "1F5F3" - ], - "emoji": "🗳", - "name": "ballot box with ballot" - } - ], - "writing": [ - { - "code": [ - "270F" - ], - "emoji": "✏", - "name": "pencil" - }, - { - "code": [ - "2712" - ], - "emoji": "✒", - "name": "black nib" - }, - { - "code": [ - "1F58B" - ], - "emoji": "🖋", - "name": "fountain pen" - }, - { - "code": [ - "1F58A" - ], - "emoji": "🖊", - "name": "pen" - }, - { - "code": [ - "1F58C" - ], - "emoji": "🖌", - "name": "paintbrush" - }, - { - "code": [ - "1F58D" - ], - "emoji": "🖍", - "name": "crayon" - }, - { - "code": [ - "1F4DD" - ], - "emoji": "📝", - "name": "memo" - } - ], - "office": [ - { - "code": [ - "1F4BC" - ], - "emoji": "💼", - "name": "briefcase" - }, - { - "code": [ - "1F4C1" - ], - "emoji": "📁", - "name": "file folder" - }, - { - "code": [ - "1F4C2" - ], - "emoji": "📂", - "name": "open file folder" - }, - { - "code": [ - "1F5C2" - ], - "emoji": "🗂", - "name": "card index dividers" - }, - { - "code": [ - "1F4C5" - ], - "emoji": "📅", - "name": "calendar" - }, - { - "code": [ - "1F4C6" - ], - "emoji": "📆", - "name": "tear-off calendar" - }, - { - "code": [ - "1F5D2" - ], - "emoji": "🗒", - "name": "spiral notepad" - }, - { - "code": [ - "1F5D3" - ], - "emoji": "🗓", - "name": "spiral calendar" - }, - { - "code": [ - "1F4C7" - ], - "emoji": "📇", - "name": "card index" - }, - { - "code": [ - "1F4C8" - ], - "emoji": "📈", - "name": "chart increasing" - }, - { - "code": [ - "1F4C9" - ], - "emoji": "📉", - "name": "chart decreasing" - }, - { - "code": [ - "1F4CA" - ], - "emoji": "📊", - "name": "bar chart" - }, - { - "code": [ - "1F4CB" - ], - "emoji": "📋", - "name": "clipboard" - }, - { - "code": [ - "1F4CC" - ], - "emoji": "📌", - "name": "pushpin" - }, - { - "code": [ - "1F4CD" - ], - "emoji": "📍", - "name": "round pushpin" - }, - { - "code": [ - "1F4CE" - ], - "emoji": "📎", - "name": "paperclip" - }, - { - "code": [ - "1F587" - ], - "emoji": "🖇", - "name": "linked paperclips" - }, - { - "code": [ - "1F4CF" - ], - "emoji": "📏", - "name": "straight ruler" - }, - { - "code": [ - "1F4D0" - ], - "emoji": "📐", - "name": "triangular ruler" - }, - { - "code": [ - "2702" - ], - "emoji": "✂", - "name": "scissors" - }, - { - "code": [ - "1F5C3" - ], - "emoji": "🗃", - "name": "card file box" - }, - { - "code": [ - "1F5C4" - ], - "emoji": "🗄", - "name": "file cabinet" - }, - { - "code": [ - "1F5D1" - ], - "emoji": "🗑", - "name": "wastebasket" - } - ], - "lock": [ - { - "code": [ - "1F512" - ], - "emoji": "🔒", - "name": "locked" - }, - { - "code": [ - "1F513" - ], - "emoji": "🔓", - "name": "unlocked" - }, - { - "code": [ - "1F50F" - ], - "emoji": "🔏", - "name": "locked with pen" - }, - { - "code": [ - "1F510" - ], - "emoji": "🔐", - "name": "locked with key" - }, - { - "code": [ - "1F511" - ], - "emoji": "🔑", - "name": "key" - }, - { - "code": [ - "1F5DD" - ], - "emoji": "🗝", - "name": "old key" - } - ], - "tool": [ - { - "code": [ - "1F528" - ], - "emoji": "🔨", - "name": "hammer" - }, - { - "code": [ - "1FA93" - ], - "emoji": "🪓", - "name": "axe" - }, - { - "code": [ - "26CF" - ], - "emoji": "⛏", - "name": "pick" - }, - { - "code": [ - "2692" - ], - "emoji": "⚒", - "name": "hammer and pick" - }, - { - "code": [ - "1F6E0" - ], - "emoji": "🛠", - "name": "hammer and wrench" - }, - { - "code": [ - "1F5E1" - ], - "emoji": "🗡", - "name": "dagger" - }, - { - "code": [ - "2694" - ], - "emoji": "⚔", - "name": "crossed swords" - }, - { - "code": [ - "1F4A3" - ], - "emoji": "💣", - "name": "bomb" - }, - { - "code": [ - "1FA83" - ], - "emoji": "🪃", - "name": "boomerang" - }, - { - "code": [ - "1F3F9" - ], - "emoji": "🏹", - "name": "bow and arrow" - }, - { - "code": [ - "1F6E1" - ], - "emoji": "🛡", - "name": "shield" - }, - { - "code": [ - "1FA9A" - ], - "emoji": "🪚", - "name": "carpentry saw" - }, - { - "code": [ - "1F527" - ], - "emoji": "🔧", - "name": "wrench" - }, - { - "code": [ - "1FA9B" - ], - "emoji": "🪛", - "name": "screwdriver" - }, - { - "code": [ - "1F529" - ], - "emoji": "🔩", - "name": "nut and bolt" - }, - { - "code": [ - "2699" - ], - "emoji": "⚙", - "name": "gear" - }, - { - "code": [ - "1F5DC" - ], - "emoji": "🗜", - "name": "clamp" - }, - { - "code": [ - "2696" - ], - "emoji": "⚖", - "name": "balance scale" - }, - { - "code": [ - "1F9AF" - ], - "emoji": "🦯", - "name": "white cane" - }, - { - "code": [ - "1F517" - ], - "emoji": "🔗", - "name": "link" - }, - { - "code": [ - "26D3", - "FE0F", - "200D", - "1F4A5" - ], - "emoji": "⛓️‍💥", - "name": "broken chain" - }, - { - "code": [ - "26D3" - ], - "emoji": "⛓", - "name": "chains" - }, - { - "code": [ - "1FA9D" - ], - "emoji": "🪝", - "name": "hook" - }, - { - "code": [ - "1F9F0" - ], - "emoji": "🧰", - "name": "toolbox" - }, - { - "code": [ - "1F9F2" - ], - "emoji": "🧲", - "name": "magnet" - }, - { - "code": [ - "1FA9C" - ], - "emoji": "🪜", - "name": "ladder" - }, - { - "code": [ - "1FA8F" - ], - "emoji": "🪏", - "name": "shovel" - } - ], - "science": [ - { - "code": [ - "2697" - ], - "emoji": "⚗", - "name": "alembic" - }, - { - "code": [ - "1F9EA" - ], - "emoji": "🧪", - "name": "test tube" - }, - { - "code": [ - "1F9EB" - ], - "emoji": "🧫", - "name": "petri dish" - }, - { - "code": [ - "1F9EC" - ], - "emoji": "🧬", - "name": "dna" - }, - { - "code": [ - "1F52C" - ], - "emoji": "🔬", - "name": "microscope" - }, - { - "code": [ - "1F52D" - ], - "emoji": "🔭", - "name": "telescope" - }, - { - "code": [ - "1F4E1" - ], - "emoji": "📡", - "name": "satellite antenna" - } - ], - "medical": [ - { - "code": [ - "1F489" - ], - "emoji": "💉", - "name": "syringe" - }, - { - "code": [ - "1FA78" - ], - "emoji": "🩸", - "name": "drop of blood" - }, - { - "code": [ - "1F48A" - ], - "emoji": "💊", - "name": "pill" - }, - { - "code": [ - "1FA79" - ], - "emoji": "🩹", - "name": "adhesive bandage" - }, - { - "code": [ - "1FA7C" - ], - "emoji": "🩼", - "name": "crutch" - }, - { - "code": [ - "1FA7A" - ], - "emoji": "🩺", - "name": "stethoscope" - }, - { - "code": [ - "1FA7B" - ], - "emoji": "🩻", - "name": "x-ray" - } - ], - "household": [ - { - "code": [ - "1F6AA" - ], - "emoji": "🚪", - "name": "door" - }, - { - "code": [ - "1F6D7" - ], - "emoji": "🛗", - "name": "elevator" - }, - { - "code": [ - "1FA9E" - ], - "emoji": "🪞", - "name": "mirror" - }, - { - "code": [ - "1FA9F" - ], - "emoji": "🪟", - "name": "window" - }, - { - "code": [ - "1F6CF" - ], - "emoji": "🛏", - "name": "bed" - }, - { - "code": [ - "1F6CB" - ], - "emoji": "🛋", - "name": "couch and lamp" - }, - { - "code": [ - "1FA91" - ], - "emoji": "🪑", - "name": "chair" - }, - { - "code": [ - "1F6BD" - ], - "emoji": "🚽", - "name": "toilet" - }, - { - "code": [ - "1FAA0" - ], - "emoji": "🪠", - "name": "plunger" - }, - { - "code": [ - "1F6BF" - ], - "emoji": "🚿", - "name": "shower" - }, - { - "code": [ - "1F6C1" - ], - "emoji": "🛁", - "name": "bathtub" - }, - { - "code": [ - "1FAA4" - ], - "emoji": "🪤", - "name": "mouse trap" - }, - { - "code": [ - "1FA92" - ], - "emoji": "🪒", - "name": "razor" - }, - { - "code": [ - "1F9F4" - ], - "emoji": "🧴", - "name": "lotion bottle" - }, - { - "code": [ - "1F9F7" - ], - "emoji": "🧷", - "name": "safety pin" - }, - { - "code": [ - "1F9F9" - ], - "emoji": "🧹", - "name": "broom" - }, - { - "code": [ - "1F9FA" - ], - "emoji": "🧺", - "name": "basket" - }, - { - "code": [ - "1F9FB" - ], - "emoji": "🧻", - "name": "roll of paper" - }, - { - "code": [ - "1FAA3" - ], - "emoji": "🪣", - "name": "bucket" - }, - { - "code": [ - "1F9FC" - ], - "emoji": "🧼", - "name": "soap" - }, - { - "code": [ - "1FAE7" - ], - "emoji": "🫧", - "name": "bubbles" - }, - { - "code": [ - "1FAA5" - ], - "emoji": "🪥", - "name": "toothbrush" - }, - { - "code": [ - "1F9FD" - ], - "emoji": "🧽", - "name": "sponge" - }, - { - "code": [ - "1F9EF" - ], - "emoji": "🧯", - "name": "fire extinguisher" - }, - { - "code": [ - "1F6D2" - ], - "emoji": "🛒", - "name": "shopping cart" - } - ], - "other-object": [ - { - "code": [ - "1F6AC" - ], - "emoji": "🚬", - "name": "cigarette" - }, - { - "code": [ - "26B0" - ], - "emoji": "⚰", - "name": "coffin" - }, - { - "code": [ - "1FAA6" - ], - "emoji": "🪦", - "name": "headstone" - }, - { - "code": [ - "26B1" - ], - "emoji": "⚱", - "name": "funeral urn" - }, - { - "code": [ - "1F9FF" - ], - "emoji": "🧿", - "name": "nazar amulet" - }, - { - "code": [ - "1FAAC" - ], - "emoji": "🪬", - "name": "hamsa" - }, - { - "code": [ - "1F5FF" - ], - "emoji": "🗿", - "name": "moai" - }, - { - "code": [ - "1FAA7" - ], - "emoji": "🪧", - "name": "placard" - }, - { - "code": [ - "1FAAA" - ], - "emoji": "🪪", - "name": "identification card" - } - ] - }, - "Symbols": { - "transport-sign": [ - { - "code": [ - "1F3E7" - ], - "emoji": "🏧", - "name": "ATM sign" - }, - { - "code": [ - "1F6AE" - ], - "emoji": "🚮", - "name": "litter in bin sign" - }, - { - "code": [ - "1F6B0" - ], - "emoji": "🚰", - "name": "potable water" - }, - { - "code": [ - "267F" - ], - "emoji": "♿", - "name": "wheelchair symbol" - }, - { - "code": [ - "1F6B9" - ], - "emoji": "🚹", - "name": "men’s room" - }, - { - "code": [ - "1F6BA" - ], - "emoji": "🚺", - "name": "women’s room" - }, - { - "code": [ - "1F6BB" - ], - "emoji": "🚻", - "name": "restroom" - }, - { - "code": [ - "1F6BC" - ], - "emoji": "🚼", - "name": "baby symbol" - }, - { - "code": [ - "1F6BE" - ], - "emoji": "🚾", - "name": "water closet" - }, - { - "code": [ - "1F6C2" - ], - "emoji": "🛂", - "name": "passport control" - }, - { - "code": [ - "1F6C3" - ], - "emoji": "🛃", - "name": "customs" - }, - { - "code": [ - "1F6C4" - ], - "emoji": "🛄", - "name": "baggage claim" - }, - { - "code": [ - "1F6C5" - ], - "emoji": "🛅", - "name": "left luggage" - } - ], - "warning": [ - { - "code": [ - "26A0" - ], - "emoji": "⚠", - "name": "warning" - }, - { - "code": [ - "1F6B8" - ], - "emoji": "🚸", - "name": "children crossing" - }, - { - "code": [ - "26D4" - ], - "emoji": "⛔", - "name": "no entry" - }, - { - "code": [ - "1F6AB" - ], - "emoji": "🚫", - "name": "prohibited" - }, - { - "code": [ - "1F6B3" - ], - "emoji": "🚳", - "name": "no bicycles" - }, - { - "code": [ - "1F6AD" - ], - "emoji": "🚭", - "name": "no smoking" - }, - { - "code": [ - "1F6AF" - ], - "emoji": "🚯", - "name": "no littering" - }, - { - "code": [ - "1F6B1" - ], - "emoji": "🚱", - "name": "non-potable water" - }, - { - "code": [ - "1F6B7" - ], - "emoji": "🚷", - "name": "no pedestrians" - }, - { - "code": [ - "1F4F5" - ], - "emoji": "📵", - "name": "no mobile phones" - }, - { - "code": [ - "1F51E" - ], - "emoji": "🔞", - "name": "no one under eighteen" - }, - { - "code": [ - "2622" - ], - "emoji": "☢", - "name": "radioactive" - }, - { - "code": [ - "2623" - ], - "emoji": "☣", - "name": "biohazard" - } - ], - "arrow": [ - { - "code": [ - "2B06" - ], - "emoji": "⬆", - "name": "up arrow" - }, - { - "code": [ - "2197" - ], - "emoji": "↗", - "name": "up-right arrow" - }, - { - "code": [ - "27A1" - ], - "emoji": "➡", - "name": "right arrow" - }, - { - "code": [ - "2198" - ], - "emoji": "↘", - "name": "down-right arrow" - }, - { - "code": [ - "2B07" - ], - "emoji": "⬇", - "name": "down arrow" - }, - { - "code": [ - "2199" - ], - "emoji": "↙", - "name": "down-left arrow" - }, - { - "code": [ - "2B05" - ], - "emoji": "⬅", - "name": "left arrow" - }, - { - "code": [ - "2196" - ], - "emoji": "↖", - "name": "up-left arrow" - }, - { - "code": [ - "2195" - ], - "emoji": "↕", - "name": "up-down arrow" - }, - { - "code": [ - "2194" - ], - "emoji": "↔", - "name": "left-right arrow" - }, - { - "code": [ - "21A9" - ], - "emoji": "↩", - "name": "right arrow curving left" - }, - { - "code": [ - "21AA" - ], - "emoji": "↪", - "name": "left arrow curving right" - }, - { - "code": [ - "2934" - ], - "emoji": "⤴", - "name": "right arrow curving up" - }, - { - "code": [ - "2935" - ], - "emoji": "⤵", - "name": "right arrow curving down" - }, - { - "code": [ - "1F503" - ], - "emoji": "🔃", - "name": "clockwise vertical arrows" - }, - { - "code": [ - "1F504" - ], - "emoji": "🔄", - "name": "counterclockwise arrows button" - }, - { - "code": [ - "1F519" - ], - "emoji": "🔙", - "name": "BACK arrow" - }, - { - "code": [ - "1F51A" - ], - "emoji": "🔚", - "name": "END arrow" - }, - { - "code": [ - "1F51B" - ], - "emoji": "🔛", - "name": "ON! arrow" - }, - { - "code": [ - "1F51C" - ], - "emoji": "🔜", - "name": "SOON arrow" - }, - { - "code": [ - "1F51D" - ], - "emoji": "🔝", - "name": "TOP arrow" - } - ], - "religion": [ - { - "code": [ - "1F6D0" - ], - "emoji": "🛐", - "name": "place of worship" - }, - { - "code": [ - "269B" - ], - "emoji": "⚛", - "name": "atom symbol" - }, - { - "code": [ - "1F549" - ], - "emoji": "🕉", - "name": "om" - }, - { - "code": [ - "2721" - ], - "emoji": "✡", - "name": "star of David" - }, - { - "code": [ - "2638" - ], - "emoji": "☸", - "name": "wheel of dharma" - }, - { - "code": [ - "262F" - ], - "emoji": "☯", - "name": "yin yang" - }, - { - "code": [ - "271D" - ], - "emoji": "✝", - "name": "latin cross" - }, - { - "code": [ - "2626" - ], - "emoji": "☦", - "name": "orthodox cross" - }, - { - "code": [ - "262A" - ], - "emoji": "☪", - "name": "star and crescent" - }, - { - "code": [ - "262E" - ], - "emoji": "☮", - "name": "peace symbol" - }, - { - "code": [ - "1F54E" - ], - "emoji": "🕎", - "name": "menorah" - }, - { - "code": [ - "1F52F" - ], - "emoji": "🔯", - "name": "dotted six-pointed star" - }, - { - "code": [ - "1FAAF" - ], - "emoji": "🪯", - "name": "khanda" - } - ], - "zodiac": [ - { - "code": [ - "2648" - ], - "emoji": "♈", - "name": "Aries" - }, - { - "code": [ - "2649" - ], - "emoji": "♉", - "name": "Taurus" - }, - { - "code": [ - "264A" - ], - "emoji": "♊", - "name": "Gemini" - }, - { - "code": [ - "264B" - ], - "emoji": "♋", - "name": "Cancer" - }, - { - "code": [ - "264C" - ], - "emoji": "♌", - "name": "Leo" - }, - { - "code": [ - "264D" - ], - "emoji": "♍", - "name": "Virgo" - }, - { - "code": [ - "264E" - ], - "emoji": "♎", - "name": "Libra" - }, - { - "code": [ - "264F" - ], - "emoji": "♏", - "name": "Scorpio" - }, - { - "code": [ - "2650" - ], - "emoji": "♐", - "name": "Sagittarius" - }, - { - "code": [ - "2651" - ], - "emoji": "♑", - "name": "Capricorn" - }, - { - "code": [ - "2652" - ], - "emoji": "♒", - "name": "Aquarius" - }, - { - "code": [ - "2653" - ], - "emoji": "♓", - "name": "Pisces" - }, - { - "code": [ - "26CE" - ], - "emoji": "⛎", - "name": "Ophiuchus" - } - ], - "av-symbol": [ - { - "code": [ - "1F500" - ], - "emoji": "🔀", - "name": "shuffle tracks button" - }, - { - "code": [ - "1F501" - ], - "emoji": "🔁", - "name": "repeat button" - }, - { - "code": [ - "1F502" - ], - "emoji": "🔂", - "name": "repeat single button" - }, - { - "code": [ - "25B6" - ], - "emoji": "▶", - "name": "play button" - }, - { - "code": [ - "23E9" - ], - "emoji": "⏩", - "name": "fast-forward button" - }, - { - "code": [ - "23ED" - ], - "emoji": "⏭", - "name": "next track button" - }, - { - "code": [ - "23EF" - ], - "emoji": "⏯", - "name": "play or pause button" - }, - { - "code": [ - "25C0" - ], - "emoji": "◀", - "name": "reverse button" - }, - { - "code": [ - "23EA" - ], - "emoji": "⏪", - "name": "fast reverse button" - }, - { - "code": [ - "23EE" - ], - "emoji": "⏮", - "name": "last track button" - }, - { - "code": [ - "1F53C" - ], - "emoji": "🔼", - "name": "upwards button" - }, - { - "code": [ - "23EB" - ], - "emoji": "⏫", - "name": "fast up button" - }, - { - "code": [ - "1F53D" - ], - "emoji": "🔽", - "name": "downwards button" - }, - { - "code": [ - "23EC" - ], - "emoji": "⏬", - "name": "fast down button" - }, - { - "code": [ - "23F8" - ], - "emoji": "⏸", - "name": "pause button" - }, - { - "code": [ - "23F9" - ], - "emoji": "⏹", - "name": "stop button" - }, - { - "code": [ - "23FA" - ], - "emoji": "⏺", - "name": "record button" - }, - { - "code": [ - "23CF" - ], - "emoji": "⏏", - "name": "eject button" - }, - { - "code": [ - "1F3A6" - ], - "emoji": "🎦", - "name": "cinema" - }, - { - "code": [ - "1F505" - ], - "emoji": "🔅", - "name": "dim button" - }, - { - "code": [ - "1F506" - ], - "emoji": "🔆", - "name": "bright button" - }, - { - "code": [ - "1F4F6" - ], - "emoji": "📶", - "name": "antenna bars" - }, - { - "code": [ - "1F6DC" - ], - "emoji": "🛜", - "name": "wireless" - }, - { - "code": [ - "1F4F3" - ], - "emoji": "📳", - "name": "vibration mode" - }, - { - "code": [ - "1F4F4" - ], - "emoji": "📴", - "name": "mobile phone off" - } - ], - "gender": [ - { - "code": [ - "2640" - ], - "emoji": "♀", - "name": "female sign" - }, - { - "code": [ - "2642" - ], - "emoji": "♂", - "name": "male sign" - }, - { - "code": [ - "26A7" - ], - "emoji": "⚧", - "name": "transgender symbol" - } - ], - "math": [ - { - "code": [ - "2716" - ], - "emoji": "✖", - "name": "multiply" - }, - { - "code": [ - "2795" - ], - "emoji": "➕", - "name": "plus" - }, - { - "code": [ - "2796" - ], - "emoji": "➖", - "name": "minus" - }, - { - "code": [ - "2797" - ], - "emoji": "➗", - "name": "divide" - }, - { - "code": [ - "1F7F0" - ], - "emoji": "🟰", - "name": "heavy equals sign" - }, - { - "code": [ - "267E" - ], - "emoji": "♾", - "name": "infinity" - } - ], - "punctuation": [ - { - "code": [ - "203C" - ], - "emoji": "‼", - "name": "double exclamation mark" - }, - { - "code": [ - "2049" - ], - "emoji": "⁉", - "name": "exclamation question mark" - }, - { - "code": [ - "2753" - ], - "emoji": "❓", - "name": "red question mark" - }, - { - "code": [ - "2754" - ], - "emoji": "❔", - "name": "white question mark" - }, - { - "code": [ - "2755" - ], - "emoji": "❕", - "name": "white exclamation mark" - }, - { - "code": [ - "2757" - ], - "emoji": "❗", - "name": "red exclamation mark" - }, - { - "code": [ - "3030" - ], - "emoji": "〰", - "name": "wavy dash" - } - ], - "currency": [ - { - "code": [ - "1F4B1" - ], - "emoji": "💱", - "name": "currency exchange" - }, - { - "code": [ - "1F4B2" - ], - "emoji": "💲", - "name": "heavy dollar sign" - } - ], - "other-symbol": [ - { - "code": [ - "2695" - ], - "emoji": "⚕", - "name": "medical symbol" - }, - { - "code": [ - "267B" - ], - "emoji": "♻", - "name": "recycling symbol" - }, - { - "code": [ - "269C" - ], - "emoji": "⚜", - "name": "fleur-de-lis" - }, - { - "code": [ - "1F531" - ], - "emoji": "🔱", - "name": "trident emblem" - }, - { - "code": [ - "1F4DB" - ], - "emoji": "📛", - "name": "name badge" - }, - { - "code": [ - "1F530" - ], - "emoji": "🔰", - "name": "Japanese symbol for beginner" - }, - { - "code": [ - "2B55" - ], - "emoji": "⭕", - "name": "hollow red circle" - }, - { - "code": [ - "2705" - ], - "emoji": "✅", - "name": "check mark button" - }, - { - "code": [ - "2611" - ], - "emoji": "☑", - "name": "check box with check" - }, - { - "code": [ - "2714" - ], - "emoji": "✔", - "name": "check mark" - }, - { - "code": [ - "274C" - ], - "emoji": "❌", - "name": "cross mark" - }, - { - "code": [ - "274E" - ], - "emoji": "❎", - "name": "cross mark button" - }, - { - "code": [ - "27B0" - ], - "emoji": "➰", - "name": "curly loop" - }, - { - "code": [ - "27BF" - ], - "emoji": "➿", - "name": "double curly loop" - }, - { - "code": [ - "303D" - ], - "emoji": "〽", - "name": "part alternation mark" - }, - { - "code": [ - "2733" - ], - "emoji": "✳", - "name": "eight-spoked asterisk" - }, - { - "code": [ - "2734" - ], - "emoji": "✴", - "name": "eight-pointed star" - }, - { - "code": [ - "2747" - ], - "emoji": "❇", - "name": "sparkle" - }, - { - "code": [ - "00A9" - ], - "emoji": "©", - "name": "copyright" - }, - { - "code": [ - "00AE" - ], - "emoji": "®", - "name": "registered" - }, - { - "code": [ - "2122" - ], - "emoji": "™", - "name": "trade mark" - }, - { - "code": [ - "1FADF" - ], - "emoji": "🫟", - "name": "splatter" - } - ], - "keycap": [ - { - "code": [ - "0023", - "FE0F", - "20E3" - ], - "emoji": "#️⃣", - "name": "keycap: #" - }, - { - "code": [ - "002A", - "FE0F", - "20E3" - ], - "emoji": "*️⃣", - "name": "keycap: *" - }, - { - "code": [ - "0030", - "FE0F", - "20E3" - ], - "emoji": "0️⃣", - "name": "keycap: 0" - }, - { - "code": [ - "0031", - "FE0F", - "20E3" - ], - "emoji": "1️⃣", - "name": "keycap: 1" - }, - { - "code": [ - "0032", - "FE0F", - "20E3" - ], - "emoji": "2️⃣", - "name": "keycap: 2" - }, - { - "code": [ - "0033", - "FE0F", - "20E3" - ], - "emoji": "3️⃣", - "name": "keycap: 3" - }, - { - "code": [ - "0034", - "FE0F", - "20E3" - ], - "emoji": "4️⃣", - "name": "keycap: 4" - }, - { - "code": [ - "0035", - "FE0F", - "20E3" - ], - "emoji": "5️⃣", - "name": "keycap: 5" - }, - { - "code": [ - "0036", - "FE0F", - "20E3" - ], - "emoji": "6️⃣", - "name": "keycap: 6" - }, - { - "code": [ - "0037", - "FE0F", - "20E3" - ], - "emoji": "7️⃣", - "name": "keycap: 7" - }, - { - "code": [ - "0038", - "FE0F", - "20E3" - ], - "emoji": "8️⃣", - "name": "keycap: 8" - }, - { - "code": [ - "0039", - "FE0F", - "20E3" - ], - "emoji": "9️⃣", - "name": "keycap: 9" - }, - { - "code": [ - "1F51F" - ], - "emoji": "🔟", - "name": "keycap: 10" - } - ], - "alphanum": [ - { - "code": [ - "1F520" - ], - "emoji": "🔠", - "name": "input latin uppercase" - }, - { - "code": [ - "1F521" - ], - "emoji": "🔡", - "name": "input latin lowercase" - }, - { - "code": [ - "1F522" - ], - "emoji": "🔢", - "name": "input numbers" - }, - { - "code": [ - "1F523" - ], - "emoji": "🔣", - "name": "input symbols" - }, - { - "code": [ - "1F524" - ], - "emoji": "🔤", - "name": "input latin letters" - }, - { - "code": [ - "1F170" - ], - "emoji": "🅰", - "name": "A button (blood type)" - }, - { - "code": [ - "1F18E" - ], - "emoji": "🆎", - "name": "AB button (blood type)" - }, - { - "code": [ - "1F171" - ], - "emoji": "🅱", - "name": "B button (blood type)" - }, - { - "code": [ - "1F191" - ], - "emoji": "🆑", - "name": "CL button" - }, - { - "code": [ - "1F192" - ], - "emoji": "🆒", - "name": "COOL button" - }, - { - "code": [ - "1F193" - ], - "emoji": "🆓", - "name": "FREE button" - }, - { - "code": [ - "2139" - ], - "emoji": "ℹ", - "name": "information" - }, - { - "code": [ - "1F194" - ], - "emoji": "🆔", - "name": "ID button" - }, - { - "code": [ - "24C2" - ], - "emoji": "Ⓜ", - "name": "circled M" - }, - { - "code": [ - "1F195" - ], - "emoji": "🆕", - "name": "NEW button" - }, - { - "code": [ - "1F196" - ], - "emoji": "🆖", - "name": "NG button" - }, - { - "code": [ - "1F17E" - ], - "emoji": "🅾", - "name": "O button (blood type)" - }, - { - "code": [ - "1F197" - ], - "emoji": "🆗", - "name": "OK button" - }, - { - "code": [ - "1F17F" - ], - "emoji": "🅿", - "name": "P button" - }, - { - "code": [ - "1F198" - ], - "emoji": "🆘", - "name": "SOS button" - }, - { - "code": [ - "1F199" - ], - "emoji": "🆙", - "name": "UP! button" - }, - { - "code": [ - "1F19A" - ], - "emoji": "🆚", - "name": "VS button" - }, - { - "code": [ - "1F201" - ], - "emoji": "🈁", - "name": "Japanese “here” button" - }, - { - "code": [ - "1F202" - ], - "emoji": "🈂", - "name": "Japanese “service charge” button" - }, - { - "code": [ - "1F237" - ], - "emoji": "🈷", - "name": "Japanese “monthly amount” button" - }, - { - "code": [ - "1F236" - ], - "emoji": "🈶", - "name": "Japanese “not free of charge” button" - }, - { - "code": [ - "1F22F" - ], - "emoji": "🈯", - "name": "Japanese “reserved” button" - }, - { - "code": [ - "1F250" - ], - "emoji": "🉐", - "name": "Japanese “bargain” button" - }, - { - "code": [ - "1F239" - ], - "emoji": "🈹", - "name": "Japanese “discount” button" - }, - { - "code": [ - "1F21A" - ], - "emoji": "🈚", - "name": "Japanese “free of charge” button" - }, - { - "code": [ - "1F232" - ], - "emoji": "🈲", - "name": "Japanese “prohibited” button" - }, - { - "code": [ - "1F251" - ], - "emoji": "🉑", - "name": "Japanese “acceptable” button" - }, - { - "code": [ - "1F238" - ], - "emoji": "🈸", - "name": "Japanese “application” button" - }, - { - "code": [ - "1F234" - ], - "emoji": "🈴", - "name": "Japanese “passing grade” button" - }, - { - "code": [ - "1F233" - ], - "emoji": "🈳", - "name": "Japanese “vacancy” button" - }, - { - "code": [ - "3297" - ], - "emoji": "㊗", - "name": "Japanese “congratulations” button" - }, - { - "code": [ - "3299" - ], - "emoji": "㊙", - "name": "Japanese “secret” button" - }, - { - "code": [ - "1F23A" - ], - "emoji": "🈺", - "name": "Japanese “open for business” button" - }, - { - "code": [ - "1F235" - ], - "emoji": "🈵", - "name": "Japanese “no vacancy” button" - } - ], - "geometric": [ - { - "code": [ - "1F534" - ], - "emoji": "🔴", - "name": "red circle" - }, - { - "code": [ - "1F7E0" - ], - "emoji": "🟠", - "name": "orange circle" - }, - { - "code": [ - "1F7E1" - ], - "emoji": "🟡", - "name": "yellow circle" - }, - { - "code": [ - "1F7E2" - ], - "emoji": "🟢", - "name": "green circle" - }, - { - "code": [ - "1F535" - ], - "emoji": "🔵", - "name": "blue circle" - }, - { - "code": [ - "1F7E3" - ], - "emoji": "🟣", - "name": "purple circle" - }, - { - "code": [ - "1F7E4" - ], - "emoji": "🟤", - "name": "brown circle" - }, - { - "code": [ - "26AB" - ], - "emoji": "⚫", - "name": "black circle" - }, - { - "code": [ - "26AA" - ], - "emoji": "⚪", - "name": "white circle" - }, - { - "code": [ - "1F7E5" - ], - "emoji": "🟥", - "name": "red square" - }, - { - "code": [ - "1F7E7" - ], - "emoji": "🟧", - "name": "orange square" - }, - { - "code": [ - "1F7E8" - ], - "emoji": "🟨", - "name": "yellow square" - }, - { - "code": [ - "1F7E9" - ], - "emoji": "🟩", - "name": "green square" - }, - { - "code": [ - "1F7E6" - ], - "emoji": "🟦", - "name": "blue square" - }, - { - "code": [ - "1F7EA" - ], - "emoji": "🟪", - "name": "purple square" - }, - { - "code": [ - "1F7EB" - ], - "emoji": "🟫", - "name": "brown square" - }, - { - "code": [ - "2B1B" - ], - "emoji": "⬛", - "name": "black large square" - }, - { - "code": [ - "2B1C" - ], - "emoji": "⬜", - "name": "white large square" - }, - { - "code": [ - "25FC" - ], - "emoji": "◼", - "name": "black medium square" - }, - { - "code": [ - "25FB" - ], - "emoji": "◻", - "name": "white medium square" - }, - { - "code": [ - "25FE" - ], - "emoji": "◾", - "name": "black medium-small square" - }, - { - "code": [ - "25FD" - ], - "emoji": "◽", - "name": "white medium-small square" - }, - { - "code": [ - "25AA" - ], - "emoji": "▪", - "name": "black small square" - }, - { - "code": [ - "25AB" - ], - "emoji": "▫", - "name": "white small square" - }, - { - "code": [ - "1F536" - ], - "emoji": "🔶", - "name": "large orange diamond" - }, - { - "code": [ - "1F537" - ], - "emoji": "🔷", - "name": "large blue diamond" - }, - { - "code": [ - "1F538" - ], - "emoji": "🔸", - "name": "small orange diamond" - }, - { - "code": [ - "1F539" - ], - "emoji": "🔹", - "name": "small blue diamond" - }, - { - "code": [ - "1F53A" - ], - "emoji": "🔺", - "name": "red triangle pointed up" - }, - { - "code": [ - "1F53B" - ], - "emoji": "🔻", - "name": "red triangle pointed down" - }, - { - "code": [ - "1F4A0" - ], - "emoji": "💠", - "name": "diamond with a dot" - }, - { - "code": [ - "1F518" - ], - "emoji": "🔘", - "name": "radio button" - }, - { - "code": [ - "1F533" - ], - "emoji": "🔳", - "name": "white square button" - }, - { - "code": [ - "1F532" - ], - "emoji": "🔲", - "name": "black square button" - } - ] - }, - "Flags": { - "flag": [ - { - "code": [ - "1F3C1" - ], - "emoji": "🏁", - "name": "chequered flag" - }, - { - "code": [ - "1F6A9" - ], - "emoji": "🚩", - "name": "triangular flag" - }, - { - "code": [ - "1F38C" - ], - "emoji": "🎌", - "name": "crossed flags" - }, - { - "code": [ - "1F3F4" - ], - "emoji": "🏴", - "name": "black flag" - }, - { - "code": [ - "1F3F3" - ], - "emoji": "🏳", - "name": "white flag" - }, - { - "code": [ - "1F3F3", - "FE0F", - "200D", - "1F308" - ], - "emoji": "🏳️‍🌈", - "name": "rainbow flag" - }, - { - "code": [ - "1F3F3", - "FE0F", - "200D", - "26A7", - "FE0F" - ], - "emoji": "🏳️‍⚧️", - "name": "transgender flag" - }, - { - "code": [ - "1F3F4", - "200D", - "2620", - "FE0F" - ], - "emoji": "🏴‍☠️", - "name": "pirate flag" - } - ], - "country-flag": [ - { - "code": [ - "1F1E6", - "1F1E8" - ], - "emoji": "🇦🇨", - "name": "flag: Ascension Island" - }, - { - "code": [ - "1F1E6", - "1F1E9" - ], - "emoji": "🇦🇩", - "name": "flag: Andorra" - }, - { - "code": [ - "1F1E6", - "1F1EA" - ], - "emoji": "🇦🇪", - "name": "flag: United Arab Emirates" - }, - { - "code": [ - "1F1E6", - "1F1EB" - ], - "emoji": "🇦🇫", - "name": "flag: Afghanistan" - }, - { - "code": [ - "1F1E6", - "1F1EC" - ], - "emoji": "🇦🇬", - "name": "flag: Antigua & Barbuda" - }, - { - "code": [ - "1F1E6", - "1F1EE" - ], - "emoji": "🇦🇮", - "name": "flag: Anguilla" - }, - { - "code": [ - "1F1E6", - "1F1F1" - ], - "emoji": "🇦🇱", - "name": "flag: Albania" - }, - { - "code": [ - "1F1E6", - "1F1F2" - ], - "emoji": "🇦🇲", - "name": "flag: Armenia" - }, - { - "code": [ - "1F1E6", - "1F1F4" - ], - "emoji": "🇦🇴", - "name": "flag: Angola" - }, - { - "code": [ - "1F1E6", - "1F1F6" - ], - "emoji": "🇦🇶", - "name": "flag: Antarctica" - }, - { - "code": [ - "1F1E6", - "1F1F7" - ], - "emoji": "🇦🇷", - "name": "flag: Argentina" - }, - { - "code": [ - "1F1E6", - "1F1F8" - ], - "emoji": "🇦🇸", - "name": "flag: American Samoa" - }, - { - "code": [ - "1F1E6", - "1F1F9" - ], - "emoji": "🇦🇹", - "name": "flag: Austria" - }, - { - "code": [ - "1F1E6", - "1F1FA" - ], - "emoji": "🇦🇺", - "name": "flag: Australia" - }, - { - "code": [ - "1F1E6", - "1F1FC" - ], - "emoji": "🇦🇼", - "name": "flag: Aruba" - }, - { - "code": [ - "1F1E6", - "1F1FD" - ], - "emoji": "🇦🇽", - "name": "flag: Åland Islands" - }, - { - "code": [ - "1F1E6", - "1F1FF" - ], - "emoji": "🇦🇿", - "name": "flag: Azerbaijan" - }, - { - "code": [ - "1F1E7", - "1F1E6" - ], - "emoji": "🇧🇦", - "name": "flag: Bosnia & Herzegovina" - }, - { - "code": [ - "1F1E7", - "1F1E7" - ], - "emoji": "🇧🇧", - "name": "flag: Barbados" - }, - { - "code": [ - "1F1E7", - "1F1E9" - ], - "emoji": "🇧🇩", - "name": "flag: Bangladesh" - }, - { - "code": [ - "1F1E7", - "1F1EA" - ], - "emoji": "🇧🇪", - "name": "flag: Belgium" - }, - { - "code": [ - "1F1E7", - "1F1EB" - ], - "emoji": "🇧🇫", - "name": "flag: Burkina Faso" - }, - { - "code": [ - "1F1E7", - "1F1EC" - ], - "emoji": "🇧🇬", - "name": "flag: Bulgaria" - }, - { - "code": [ - "1F1E7", - "1F1ED" - ], - "emoji": "🇧🇭", - "name": "flag: Bahrain" - }, - { - "code": [ - "1F1E7", - "1F1EE" - ], - "emoji": "🇧🇮", - "name": "flag: Burundi" - }, - { - "code": [ - "1F1E7", - "1F1EF" - ], - "emoji": "🇧🇯", - "name": "flag: Benin" - }, - { - "code": [ - "1F1E7", - "1F1F1" - ], - "emoji": "🇧🇱", - "name": "flag: St. Barthélemy" - }, - { - "code": [ - "1F1E7", - "1F1F2" - ], - "emoji": "🇧🇲", - "name": "flag: Bermuda" - }, - { - "code": [ - "1F1E7", - "1F1F3" - ], - "emoji": "🇧🇳", - "name": "flag: Brunei" - }, - { - "code": [ - "1F1E7", - "1F1F4" - ], - "emoji": "🇧🇴", - "name": "flag: Bolivia" - }, - { - "code": [ - "1F1E7", - "1F1F6" - ], - "emoji": "🇧🇶", - "name": "flag: Caribbean Netherlands" - }, - { - "code": [ - "1F1E7", - "1F1F7" - ], - "emoji": "🇧🇷", - "name": "flag: Brazil" - }, - { - "code": [ - "1F1E7", - "1F1F8" - ], - "emoji": "🇧🇸", - "name": "flag: Bahamas" - }, - { - "code": [ - "1F1E7", - "1F1F9" - ], - "emoji": "🇧🇹", - "name": "flag: Bhutan" - }, - { - "code": [ - "1F1E7", - "1F1FB" - ], - "emoji": "🇧🇻", - "name": "flag: Bouvet Island" - }, - { - "code": [ - "1F1E7", - "1F1FC" - ], - "emoji": "🇧🇼", - "name": "flag: Botswana" - }, - { - "code": [ - "1F1E7", - "1F1FE" - ], - "emoji": "🇧🇾", - "name": "flag: Belarus" - }, - { - "code": [ - "1F1E7", - "1F1FF" - ], - "emoji": "🇧🇿", - "name": "flag: Belize" - }, - { - "code": [ - "1F1E8", - "1F1E6" - ], - "emoji": "🇨🇦", - "name": "flag: Canada" - }, - { - "code": [ - "1F1E8", - "1F1E8" - ], - "emoji": "🇨🇨", - "name": "flag: Cocos (Keeling) Islands" - }, - { - "code": [ - "1F1E8", - "1F1E9" - ], - "emoji": "🇨🇩", - "name": "flag: Congo - Kinshasa" - }, - { - "code": [ - "1F1E8", - "1F1EB" - ], - "emoji": "🇨🇫", - "name": "flag: Central African Republic" - }, - { - "code": [ - "1F1E8", - "1F1EC" - ], - "emoji": "🇨🇬", - "name": "flag: Congo - Brazzaville" - }, - { - "code": [ - "1F1E8", - "1F1ED" - ], - "emoji": "🇨🇭", - "name": "flag: Switzerland" - }, - { - "code": [ - "1F1E8", - "1F1EE" - ], - "emoji": "🇨🇮", - "name": "flag: Côte d’Ivoire" - }, - { - "code": [ - "1F1E8", - "1F1F0" - ], - "emoji": "🇨🇰", - "name": "flag: Cook Islands" - }, - { - "code": [ - "1F1E8", - "1F1F1" - ], - "emoji": "🇨🇱", - "name": "flag: Chile" - }, - { - "code": [ - "1F1E8", - "1F1F2" - ], - "emoji": "🇨🇲", - "name": "flag: Cameroon" - }, - { - "code": [ - "1F1E8", - "1F1F3" - ], - "emoji": "🇨🇳", - "name": "flag: China" - }, - { - "code": [ - "1F1E8", - "1F1F4" - ], - "emoji": "🇨🇴", - "name": "flag: Colombia" - }, - { - "code": [ - "1F1E8", - "1F1F5" - ], - "emoji": "🇨🇵", - "name": "flag: Clipperton Island" - }, - { - "code": [ - "1F1E8", - "1F1F6" - ], - "emoji": "🇨🇶", - "name": "flag: Sark" - }, - { - "code": [ - "1F1E8", - "1F1F7" - ], - "emoji": "🇨🇷", - "name": "flag: Costa Rica" - }, - { - "code": [ - "1F1E8", - "1F1FA" - ], - "emoji": "🇨🇺", - "name": "flag: Cuba" - }, - { - "code": [ - "1F1E8", - "1F1FB" - ], - "emoji": "🇨🇻", - "name": "flag: Cape Verde" - }, - { - "code": [ - "1F1E8", - "1F1FC" - ], - "emoji": "🇨🇼", - "name": "flag: Curaçao" - }, - { - "code": [ - "1F1E8", - "1F1FD" - ], - "emoji": "🇨🇽", - "name": "flag: Christmas Island" - }, - { - "code": [ - "1F1E8", - "1F1FE" - ], - "emoji": "🇨🇾", - "name": "flag: Cyprus" - }, - { - "code": [ - "1F1E8", - "1F1FF" - ], - "emoji": "🇨🇿", - "name": "flag: Czechia" - }, - { - "code": [ - "1F1E9", - "1F1EA" - ], - "emoji": "🇩🇪", - "name": "flag: Germany" - }, - { - "code": [ - "1F1E9", - "1F1EC" - ], - "emoji": "🇩🇬", - "name": "flag: Diego Garcia" - }, - { - "code": [ - "1F1E9", - "1F1EF" - ], - "emoji": "🇩🇯", - "name": "flag: Djibouti" - }, - { - "code": [ - "1F1E9", - "1F1F0" - ], - "emoji": "🇩🇰", - "name": "flag: Denmark" - }, - { - "code": [ - "1F1E9", - "1F1F2" - ], - "emoji": "🇩🇲", - "name": "flag: Dominica" - }, - { - "code": [ - "1F1E9", - "1F1F4" - ], - "emoji": "🇩🇴", - "name": "flag: Dominican Republic" - }, - { - "code": [ - "1F1E9", - "1F1FF" - ], - "emoji": "🇩🇿", - "name": "flag: Algeria" - }, - { - "code": [ - "1F1EA", - "1F1E6" - ], - "emoji": "🇪🇦", - "name": "flag: Ceuta & Melilla" - }, - { - "code": [ - "1F1EA", - "1F1E8" - ], - "emoji": "🇪🇨", - "name": "flag: Ecuador" - }, - { - "code": [ - "1F1EA", - "1F1EA" - ], - "emoji": "🇪🇪", - "name": "flag: Estonia" - }, - { - "code": [ - "1F1EA", - "1F1EC" - ], - "emoji": "🇪🇬", - "name": "flag: Egypt" - }, - { - "code": [ - "1F1EA", - "1F1ED" - ], - "emoji": "🇪🇭", - "name": "flag: Western Sahara" - }, - { - "code": [ - "1F1EA", - "1F1F7" - ], - "emoji": "🇪🇷", - "name": "flag: Eritrea" - }, - { - "code": [ - "1F1EA", - "1F1F8" - ], - "emoji": "🇪🇸", - "name": "flag: Spain" - }, - { - "code": [ - "1F1EA", - "1F1F9" - ], - "emoji": "🇪🇹", - "name": "flag: Ethiopia" - }, - { - "code": [ - "1F1EA", - "1F1FA" - ], - "emoji": "🇪🇺", - "name": "flag: European Union" - }, - { - "code": [ - "1F1EB", - "1F1EE" - ], - "emoji": "🇫🇮", - "name": "flag: Finland" - }, - { - "code": [ - "1F1EB", - "1F1EF" - ], - "emoji": "🇫🇯", - "name": "flag: Fiji" - }, - { - "code": [ - "1F1EB", - "1F1F0" - ], - "emoji": "🇫🇰", - "name": "flag: Falkland Islands" - }, - { - "code": [ - "1F1EB", - "1F1F2" - ], - "emoji": "🇫🇲", - "name": "flag: Micronesia" - }, - { - "code": [ - "1F1EB", - "1F1F4" - ], - "emoji": "🇫🇴", - "name": "flag: Faroe Islands" - }, - { - "code": [ - "1F1EB", - "1F1F7" - ], - "emoji": "🇫🇷", - "name": "flag: France" - }, - { - "code": [ - "1F1EC", - "1F1E6" - ], - "emoji": "🇬🇦", - "name": "flag: Gabon" - }, - { - "code": [ - "1F1EC", - "1F1E7" - ], - "emoji": "🇬🇧", - "name": "flag: United Kingdom" - }, - { - "code": [ - "1F1EC", - "1F1E9" - ], - "emoji": "🇬🇩", - "name": "flag: Grenada" - }, - { - "code": [ - "1F1EC", - "1F1EA" - ], - "emoji": "🇬🇪", - "name": "flag: Georgia" - }, - { - "code": [ - "1F1EC", - "1F1EB" - ], - "emoji": "🇬🇫", - "name": "flag: French Guiana" - }, - { - "code": [ - "1F1EC", - "1F1EC" - ], - "emoji": "🇬🇬", - "name": "flag: Guernsey" - }, - { - "code": [ - "1F1EC", - "1F1ED" - ], - "emoji": "🇬🇭", - "name": "flag: Ghana" - }, - { - "code": [ - "1F1EC", - "1F1EE" - ], - "emoji": "🇬🇮", - "name": "flag: Gibraltar" - }, - { - "code": [ - "1F1EC", - "1F1F1" - ], - "emoji": "🇬🇱", - "name": "flag: Greenland" - }, - { - "code": [ - "1F1EC", - "1F1F2" - ], - "emoji": "🇬🇲", - "name": "flag: Gambia" - }, - { - "code": [ - "1F1EC", - "1F1F3" - ], - "emoji": "🇬🇳", - "name": "flag: Guinea" - }, - { - "code": [ - "1F1EC", - "1F1F5" - ], - "emoji": "🇬🇵", - "name": "flag: Guadeloupe" - }, - { - "code": [ - "1F1EC", - "1F1F6" - ], - "emoji": "🇬🇶", - "name": "flag: Equatorial Guinea" - }, - { - "code": [ - "1F1EC", - "1F1F7" - ], - "emoji": "🇬🇷", - "name": "flag: Greece" - }, - { - "code": [ - "1F1EC", - "1F1F8" - ], - "emoji": "🇬🇸", - "name": "flag: South Georgia & South Sandwich Islands" - }, - { - "code": [ - "1F1EC", - "1F1F9" - ], - "emoji": "🇬🇹", - "name": "flag: Guatemala" - }, - { - "code": [ - "1F1EC", - "1F1FA" - ], - "emoji": "🇬🇺", - "name": "flag: Guam" - }, - { - "code": [ - "1F1EC", - "1F1FC" - ], - "emoji": "🇬🇼", - "name": "flag: Guinea-Bissau" - }, - { - "code": [ - "1F1EC", - "1F1FE" - ], - "emoji": "🇬🇾", - "name": "flag: Guyana" - }, - { - "code": [ - "1F1ED", - "1F1F0" - ], - "emoji": "🇭🇰", - "name": "flag: Hong Kong SAR China" - }, - { - "code": [ - "1F1ED", - "1F1F2" - ], - "emoji": "🇭🇲", - "name": "flag: Heard & McDonald Islands" - }, - { - "code": [ - "1F1ED", - "1F1F3" - ], - "emoji": "🇭🇳", - "name": "flag: Honduras" - }, - { - "code": [ - "1F1ED", - "1F1F7" - ], - "emoji": "🇭🇷", - "name": "flag: Croatia" - }, - { - "code": [ - "1F1ED", - "1F1F9" - ], - "emoji": "🇭🇹", - "name": "flag: Haiti" - }, - { - "code": [ - "1F1ED", - "1F1FA" - ], - "emoji": "🇭🇺", - "name": "flag: Hungary" - }, - { - "code": [ - "1F1EE", - "1F1E8" - ], - "emoji": "🇮🇨", - "name": "flag: Canary Islands" - }, - { - "code": [ - "1F1EE", - "1F1E9" - ], - "emoji": "🇮🇩", - "name": "flag: Indonesia" - }, - { - "code": [ - "1F1EE", - "1F1EA" - ], - "emoji": "🇮🇪", - "name": "flag: Ireland" - }, - { - "code": [ - "1F1EE", - "1F1F1" - ], - "emoji": "🇮🇱", - "name": "flag: Israel" - }, - { - "code": [ - "1F1EE", - "1F1F2" - ], - "emoji": "🇮🇲", - "name": "flag: Isle of Man" - }, - { - "code": [ - "1F1EE", - "1F1F3" - ], - "emoji": "🇮🇳", - "name": "flag: India" - }, - { - "code": [ - "1F1EE", - "1F1F4" - ], - "emoji": "🇮🇴", - "name": "flag: British Indian Ocean Territory" - }, - { - "code": [ - "1F1EE", - "1F1F6" - ], - "emoji": "🇮🇶", - "name": "flag: Iraq" - }, - { - "code": [ - "1F1EE", - "1F1F7" - ], - "emoji": "🇮🇷", - "name": "flag: Iran" - }, - { - "code": [ - "1F1EE", - "1F1F8" - ], - "emoji": "🇮🇸", - "name": "flag: Iceland" - }, - { - "code": [ - "1F1EE", - "1F1F9" - ], - "emoji": "🇮🇹", - "name": "flag: Italy" - }, - { - "code": [ - "1F1EF", - "1F1EA" - ], - "emoji": "🇯🇪", - "name": "flag: Jersey" - }, - { - "code": [ - "1F1EF", - "1F1F2" - ], - "emoji": "🇯🇲", - "name": "flag: Jamaica" - }, - { - "code": [ - "1F1EF", - "1F1F4" - ], - "emoji": "🇯🇴", - "name": "flag: Jordan" - }, - { - "code": [ - "1F1EF", - "1F1F5" - ], - "emoji": "🇯🇵", - "name": "flag: Japan" - }, - { - "code": [ - "1F1F0", - "1F1EA" - ], - "emoji": "🇰🇪", - "name": "flag: Kenya" - }, - { - "code": [ - "1F1F0", - "1F1EC" - ], - "emoji": "🇰🇬", - "name": "flag: Kyrgyzstan" - }, - { - "code": [ - "1F1F0", - "1F1ED" - ], - "emoji": "🇰🇭", - "name": "flag: Cambodia" - }, - { - "code": [ - "1F1F0", - "1F1EE" - ], - "emoji": "🇰🇮", - "name": "flag: Kiribati" - }, - { - "code": [ - "1F1F0", - "1F1F2" - ], - "emoji": "🇰🇲", - "name": "flag: Comoros" - }, - { - "code": [ - "1F1F0", - "1F1F3" - ], - "emoji": "🇰🇳", - "name": "flag: St. Kitts & Nevis" - }, - { - "code": [ - "1F1F0", - "1F1F5" - ], - "emoji": "🇰🇵", - "name": "flag: North Korea" - }, - { - "code": [ - "1F1F0", - "1F1F7" - ], - "emoji": "🇰🇷", - "name": "flag: South Korea" - }, - { - "code": [ - "1F1F0", - "1F1FC" - ], - "emoji": "🇰🇼", - "name": "flag: Kuwait" - }, - { - "code": [ - "1F1F0", - "1F1FE" - ], - "emoji": "🇰🇾", - "name": "flag: Cayman Islands" - }, - { - "code": [ - "1F1F0", - "1F1FF" - ], - "emoji": "🇰🇿", - "name": "flag: Kazakhstan" - }, - { - "code": [ - "1F1F1", - "1F1E6" - ], - "emoji": "🇱🇦", - "name": "flag: Laos" - }, - { - "code": [ - "1F1F1", - "1F1E7" - ], - "emoji": "🇱🇧", - "name": "flag: Lebanon" - }, - { - "code": [ - "1F1F1", - "1F1E8" - ], - "emoji": "🇱🇨", - "name": "flag: St. Lucia" - }, - { - "code": [ - "1F1F1", - "1F1EE" - ], - "emoji": "🇱🇮", - "name": "flag: Liechtenstein" - }, - { - "code": [ - "1F1F1", - "1F1F0" - ], - "emoji": "🇱🇰", - "name": "flag: Sri Lanka" - }, - { - "code": [ - "1F1F1", - "1F1F7" - ], - "emoji": "🇱🇷", - "name": "flag: Liberia" - }, - { - "code": [ - "1F1F1", - "1F1F8" - ], - "emoji": "🇱🇸", - "name": "flag: Lesotho" - }, - { - "code": [ - "1F1F1", - "1F1F9" - ], - "emoji": "🇱🇹", - "name": "flag: Lithuania" - }, - { - "code": [ - "1F1F1", - "1F1FA" - ], - "emoji": "🇱🇺", - "name": "flag: Luxembourg" - }, - { - "code": [ - "1F1F1", - "1F1FB" - ], - "emoji": "🇱🇻", - "name": "flag: Latvia" - }, - { - "code": [ - "1F1F1", - "1F1FE" - ], - "emoji": "🇱🇾", - "name": "flag: Libya" - }, - { - "code": [ - "1F1F2", - "1F1E6" - ], - "emoji": "🇲🇦", - "name": "flag: Morocco" - }, - { - "code": [ - "1F1F2", - "1F1E8" - ], - "emoji": "🇲🇨", - "name": "flag: Monaco" - }, - { - "code": [ - "1F1F2", - "1F1E9" - ], - "emoji": "🇲🇩", - "name": "flag: Moldova" - }, - { - "code": [ - "1F1F2", - "1F1EA" - ], - "emoji": "🇲🇪", - "name": "flag: Montenegro" - }, - { - "code": [ - "1F1F2", - "1F1EB" - ], - "emoji": "🇲🇫", - "name": "flag: St. Martin" - }, - { - "code": [ - "1F1F2", - "1F1EC" - ], - "emoji": "🇲🇬", - "name": "flag: Madagascar" - }, - { - "code": [ - "1F1F2", - "1F1ED" - ], - "emoji": "🇲🇭", - "name": "flag: Marshall Islands" - }, - { - "code": [ - "1F1F2", - "1F1F0" - ], - "emoji": "🇲🇰", - "name": "flag: North Macedonia" - }, - { - "code": [ - "1F1F2", - "1F1F1" - ], - "emoji": "🇲🇱", - "name": "flag: Mali" - }, - { - "code": [ - "1F1F2", - "1F1F2" - ], - "emoji": "🇲🇲", - "name": "flag: Myanmar (Burma)" - }, - { - "code": [ - "1F1F2", - "1F1F3" - ], - "emoji": "🇲🇳", - "name": "flag: Mongolia" - }, - { - "code": [ - "1F1F2", - "1F1F4" - ], - "emoji": "🇲🇴", - "name": "flag: Macao SAR China" - }, - { - "code": [ - "1F1F2", - "1F1F5" - ], - "emoji": "🇲🇵", - "name": "flag: Northern Mariana Islands" - }, - { - "code": [ - "1F1F2", - "1F1F6" - ], - "emoji": "🇲🇶", - "name": "flag: Martinique" - }, - { - "code": [ - "1F1F2", - "1F1F7" - ], - "emoji": "🇲🇷", - "name": "flag: Mauritania" - }, - { - "code": [ - "1F1F2", - "1F1F8" - ], - "emoji": "🇲🇸", - "name": "flag: Montserrat" - }, - { - "code": [ - "1F1F2", - "1F1F9" - ], - "emoji": "🇲🇹", - "name": "flag: Malta" - }, - { - "code": [ - "1F1F2", - "1F1FA" - ], - "emoji": "🇲🇺", - "name": "flag: Mauritius" - }, - { - "code": [ - "1F1F2", - "1F1FB" - ], - "emoji": "🇲🇻", - "name": "flag: Maldives" - }, - { - "code": [ - "1F1F2", - "1F1FC" - ], - "emoji": "🇲🇼", - "name": "flag: Malawi" - }, - { - "code": [ - "1F1F2", - "1F1FD" - ], - "emoji": "🇲🇽", - "name": "flag: Mexico" - }, - { - "code": [ - "1F1F2", - "1F1FE" - ], - "emoji": "🇲🇾", - "name": "flag: Malaysia" - }, - { - "code": [ - "1F1F2", - "1F1FF" - ], - "emoji": "🇲🇿", - "name": "flag: Mozambique" - }, - { - "code": [ - "1F1F3", - "1F1E6" - ], - "emoji": "🇳🇦", - "name": "flag: Namibia" - }, - { - "code": [ - "1F1F3", - "1F1E8" - ], - "emoji": "🇳🇨", - "name": "flag: New Caledonia" - }, - { - "code": [ - "1F1F3", - "1F1EA" - ], - "emoji": "🇳🇪", - "name": "flag: Niger" - }, - { - "code": [ - "1F1F3", - "1F1EB" - ], - "emoji": "🇳🇫", - "name": "flag: Norfolk Island" - }, - { - "code": [ - "1F1F3", - "1F1EC" - ], - "emoji": "🇳🇬", - "name": "flag: Nigeria" - }, - { - "code": [ - "1F1F3", - "1F1EE" - ], - "emoji": "🇳🇮", - "name": "flag: Nicaragua" - }, - { - "code": [ - "1F1F3", - "1F1F1" - ], - "emoji": "🇳🇱", - "name": "flag: Netherlands" - }, - { - "code": [ - "1F1F3", - "1F1F4" - ], - "emoji": "🇳🇴", - "name": "flag: Norway" - }, - { - "code": [ - "1F1F3", - "1F1F5" - ], - "emoji": "🇳🇵", - "name": "flag: Nepal" - }, - { - "code": [ - "1F1F3", - "1F1F7" - ], - "emoji": "🇳🇷", - "name": "flag: Nauru" - }, - { - "code": [ - "1F1F3", - "1F1FA" - ], - "emoji": "🇳🇺", - "name": "flag: Niue" - }, - { - "code": [ - "1F1F3", - "1F1FF" - ], - "emoji": "🇳🇿", - "name": "flag: New Zealand" - }, - { - "code": [ - "1F1F4", - "1F1F2" - ], - "emoji": "🇴🇲", - "name": "flag: Oman" - }, - { - "code": [ - "1F1F5", - "1F1E6" - ], - "emoji": "🇵🇦", - "name": "flag: Panama" - }, - { - "code": [ - "1F1F5", - "1F1EA" - ], - "emoji": "🇵🇪", - "name": "flag: Peru" - }, - { - "code": [ - "1F1F5", - "1F1EB" - ], - "emoji": "🇵🇫", - "name": "flag: French Polynesia" - }, - { - "code": [ - "1F1F5", - "1F1EC" - ], - "emoji": "🇵🇬", - "name": "flag: Papua New Guinea" - }, - { - "code": [ - "1F1F5", - "1F1ED" - ], - "emoji": "🇵🇭", - "name": "flag: Philippines" - }, - { - "code": [ - "1F1F5", - "1F1F0" - ], - "emoji": "🇵🇰", - "name": "flag: Pakistan" - }, - { - "code": [ - "1F1F5", - "1F1F1" - ], - "emoji": "🇵🇱", - "name": "flag: Poland" - }, - { - "code": [ - "1F1F5", - "1F1F2" - ], - "emoji": "🇵🇲", - "name": "flag: St. Pierre & Miquelon" - }, - { - "code": [ - "1F1F5", - "1F1F3" - ], - "emoji": "🇵🇳", - "name": "flag: Pitcairn Islands" - }, - { - "code": [ - "1F1F5", - "1F1F7" - ], - "emoji": "🇵🇷", - "name": "flag: Puerto Rico" - }, - { - "code": [ - "1F1F5", - "1F1F8" - ], - "emoji": "🇵🇸", - "name": "flag: Palestinian Territories" - }, - { - "code": [ - "1F1F5", - "1F1F9" - ], - "emoji": "🇵🇹", - "name": "flag: Portugal" - }, - { - "code": [ - "1F1F5", - "1F1FC" - ], - "emoji": "🇵🇼", - "name": "flag: Palau" - }, - { - "code": [ - "1F1F5", - "1F1FE" - ], - "emoji": "🇵🇾", - "name": "flag: Paraguay" - }, - { - "code": [ - "1F1F6", - "1F1E6" - ], - "emoji": "🇶🇦", - "name": "flag: Qatar" - }, - { - "code": [ - "1F1F7", - "1F1EA" - ], - "emoji": "🇷🇪", - "name": "flag: Réunion" - }, - { - "code": [ - "1F1F7", - "1F1F4" - ], - "emoji": "🇷🇴", - "name": "flag: Romania" - }, - { - "code": [ - "1F1F7", - "1F1F8" - ], - "emoji": "🇷🇸", - "name": "flag: Serbia" - }, - { - "code": [ - "1F1F7", - "1F1FA" - ], - "emoji": "🇷🇺", - "name": "flag: Russia" - }, - { - "code": [ - "1F1F7", - "1F1FC" - ], - "emoji": "🇷🇼", - "name": "flag: Rwanda" - }, - { - "code": [ - "1F1F8", - "1F1E6" - ], - "emoji": "🇸🇦", - "name": "flag: Saudi Arabia" - }, - { - "code": [ - "1F1F8", - "1F1E7" - ], - "emoji": "🇸🇧", - "name": "flag: Solomon Islands" - }, - { - "code": [ - "1F1F8", - "1F1E8" - ], - "emoji": "🇸🇨", - "name": "flag: Seychelles" - }, - { - "code": [ - "1F1F8", - "1F1E9" - ], - "emoji": "🇸🇩", - "name": "flag: Sudan" - }, - { - "code": [ - "1F1F8", - "1F1EA" - ], - "emoji": "🇸🇪", - "name": "flag: Sweden" - }, - { - "code": [ - "1F1F8", - "1F1EC" - ], - "emoji": "🇸🇬", - "name": "flag: Singapore" - }, - { - "code": [ - "1F1F8", - "1F1ED" - ], - "emoji": "🇸🇭", - "name": "flag: St. Helena" - }, - { - "code": [ - "1F1F8", - "1F1EE" - ], - "emoji": "🇸🇮", - "name": "flag: Slovenia" - }, - { - "code": [ - "1F1F8", - "1F1EF" - ], - "emoji": "🇸🇯", - "name": "flag: Svalbard & Jan Mayen" - }, - { - "code": [ - "1F1F8", - "1F1F0" - ], - "emoji": "🇸🇰", - "name": "flag: Slovakia" - }, - { - "code": [ - "1F1F8", - "1F1F1" - ], - "emoji": "🇸🇱", - "name": "flag: Sierra Leone" - }, - { - "code": [ - "1F1F8", - "1F1F2" - ], - "emoji": "🇸🇲", - "name": "flag: San Marino" - }, - { - "code": [ - "1F1F8", - "1F1F3" - ], - "emoji": "🇸🇳", - "name": "flag: Senegal" - }, - { - "code": [ - "1F1F8", - "1F1F4" - ], - "emoji": "🇸🇴", - "name": "flag: Somalia" - }, - { - "code": [ - "1F1F8", - "1F1F7" - ], - "emoji": "🇸🇷", - "name": "flag: Suriname" - }, - { - "code": [ - "1F1F8", - "1F1F8" - ], - "emoji": "🇸🇸", - "name": "flag: South Sudan" - }, - { - "code": [ - "1F1F8", - "1F1F9" - ], - "emoji": "🇸🇹", - "name": "flag: São Tomé & Príncipe" - }, - { - "code": [ - "1F1F8", - "1F1FB" - ], - "emoji": "🇸🇻", - "name": "flag: El Salvador" - }, - { - "code": [ - "1F1F8", - "1F1FD" - ], - "emoji": "🇸🇽", - "name": "flag: Sint Maarten" - }, - { - "code": [ - "1F1F8", - "1F1FE" - ], - "emoji": "🇸🇾", - "name": "flag: Syria" - }, - { - "code": [ - "1F1F8", - "1F1FF" - ], - "emoji": "🇸🇿", - "name": "flag: Eswatini" - }, - { - "code": [ - "1F1F9", - "1F1E6" - ], - "emoji": "🇹🇦", - "name": "flag: Tristan da Cunha" - }, - { - "code": [ - "1F1F9", - "1F1E8" - ], - "emoji": "🇹🇨", - "name": "flag: Turks & Caicos Islands" - }, - { - "code": [ - "1F1F9", - "1F1E9" - ], - "emoji": "🇹🇩", - "name": "flag: Chad" - }, - { - "code": [ - "1F1F9", - "1F1EB" - ], - "emoji": "🇹🇫", - "name": "flag: French Southern Territories" - }, - { - "code": [ - "1F1F9", - "1F1EC" - ], - "emoji": "🇹🇬", - "name": "flag: Togo" - }, - { - "code": [ - "1F1F9", - "1F1ED" - ], - "emoji": "🇹🇭", - "name": "flag: Thailand" - }, - { - "code": [ - "1F1F9", - "1F1EF" - ], - "emoji": "🇹🇯", - "name": "flag: Tajikistan" - }, - { - "code": [ - "1F1F9", - "1F1F0" - ], - "emoji": "🇹🇰", - "name": "flag: Tokelau" - }, - { - "code": [ - "1F1F9", - "1F1F1" - ], - "emoji": "🇹🇱", - "name": "flag: Timor-Leste" - }, - { - "code": [ - "1F1F9", - "1F1F2" - ], - "emoji": "🇹🇲", - "name": "flag: Turkmenistan" - }, - { - "code": [ - "1F1F9", - "1F1F3" - ], - "emoji": "🇹🇳", - "name": "flag: Tunisia" - }, - { - "code": [ - "1F1F9", - "1F1F4" - ], - "emoji": "🇹🇴", - "name": "flag: Tonga" - }, - { - "code": [ - "1F1F9", - "1F1F7" - ], - "emoji": "🇹🇷", - "name": "flag: Türkiye" - }, - { - "code": [ - "1F1F9", - "1F1F9" - ], - "emoji": "🇹🇹", - "name": "flag: Trinidad & Tobago" - }, - { - "code": [ - "1F1F9", - "1F1FB" - ], - "emoji": "🇹🇻", - "name": "flag: Tuvalu" - }, - { - "code": [ - "1F1F9", - "1F1FC" - ], - "emoji": "🇹🇼", - "name": "flag: Taiwan" - }, - { - "code": [ - "1F1F9", - "1F1FF" - ], - "emoji": "🇹🇿", - "name": "flag: Tanzania" - }, - { - "code": [ - "1F1FA", - "1F1E6" - ], - "emoji": "🇺🇦", - "name": "flag: Ukraine" - }, - { - "code": [ - "1F1FA", - "1F1EC" - ], - "emoji": "🇺🇬", - "name": "flag: Uganda" - }, - { - "code": [ - "1F1FA", - "1F1F2" - ], - "emoji": "🇺🇲", - "name": "flag: U.S. Outlying Islands" - }, - { - "code": [ - "1F1FA", - "1F1F3" - ], - "emoji": "🇺🇳", - "name": "flag: United Nations" - }, - { - "code": [ - "1F1FA", - "1F1F8" - ], - "emoji": "🇺🇸", - "name": "flag: United States" - }, - { - "code": [ - "1F1FA", - "1F1FE" - ], - "emoji": "🇺🇾", - "name": "flag: Uruguay" - }, - { - "code": [ - "1F1FA", - "1F1FF" - ], - "emoji": "🇺🇿", - "name": "flag: Uzbekistan" - }, - { - "code": [ - "1F1FB", - "1F1E6" - ], - "emoji": "🇻🇦", - "name": "flag: Vatican City" - }, - { - "code": [ - "1F1FB", - "1F1E8" - ], - "emoji": "🇻🇨", - "name": "flag: St. Vincent & Grenadines" - }, - { - "code": [ - "1F1FB", - "1F1EA" - ], - "emoji": "🇻🇪", - "name": "flag: Venezuela" - }, - { - "code": [ - "1F1FB", - "1F1EC" - ], - "emoji": "🇻🇬", - "name": "flag: British Virgin Islands" - }, - { - "code": [ - "1F1FB", - "1F1EE" - ], - "emoji": "🇻🇮", - "name": "flag: U.S. Virgin Islands" - }, - { - "code": [ - "1F1FB", - "1F1F3" - ], - "emoji": "🇻🇳", - "name": "flag: Vietnam" - }, - { - "code": [ - "1F1FB", - "1F1FA" - ], - "emoji": "🇻🇺", - "name": "flag: Vanuatu" - }, - { - "code": [ - "1F1FC", - "1F1EB" - ], - "emoji": "🇼🇫", - "name": "flag: Wallis & Futuna" - }, - { - "code": [ - "1F1FC", - "1F1F8" - ], - "emoji": "🇼🇸", - "name": "flag: Samoa" - }, - { - "code": [ - "1F1FD", - "1F1F0" - ], - "emoji": "🇽🇰", - "name": "flag: Kosovo" - }, - { - "code": [ - "1F1FE", - "1F1EA" - ], - "emoji": "🇾🇪", - "name": "flag: Yemen" - }, - { - "code": [ - "1F1FE", - "1F1F9" - ], - "emoji": "🇾🇹", - "name": "flag: Mayotte" - }, - { - "code": [ - "1F1FF", - "1F1E6" - ], - "emoji": "🇿🇦", - "name": "flag: South Africa" - }, - { - "code": [ - "1F1FF", - "1F1F2" - ], - "emoji": "🇿🇲", - "name": "flag: Zambia" - }, - { - "code": [ - "1F1FF", - "1F1FC" - ], - "emoji": "🇿🇼", - "name": "flag: Zimbabwe" - } - ], - "subdivision-flag": [ - { - "code": [ - "1F3F4", - "E0067", - "E0062", - "E0065", - "E006E", - "E0067", - "E007F" - ], - "emoji": "🏴󠁧󠁢󠁥󠁮󠁧󠁿", - "name": "flag: England" - }, - { - "code": [ - "1F3F4", - "E0067", - "E0062", - "E0073", - "E0063", - "E0074", - "E007F" - ], - "emoji": "🏴󠁧󠁢󠁳󠁣󠁴󠁿", - "name": "flag: Scotland" - }, - { - "code": [ - "1F3F4", - "E0067", - "E0062", - "E0077", - "E006C", - "E0073", - "E007F" - ], - "emoji": "🏴󠁧󠁢󠁷󠁬󠁳󠁿", - "name": "flag: Wales" - } - ] + "@version": "16.0.0", + "@author": "Chalda Pnuzig ", + "@copyright": "Chalda Pnuzig 2021-2024", + "@see": "{@link https://github.com/chalda-pnuzig/emojis.json|GitHub}", + "@license": "ISC", + "emojis": { + "Smileys & Emotion": { + "face-smiling": [ + { + "code": [ + "1F600" + ], + "emoji": "😀", + "name": "grinning face" + }, + { + "code": [ + "1F603" + ], + "emoji": "😃", + "name": "grinning face with big eyes" + }, + { + "code": [ + "1F604" + ], + "emoji": "😄", + "name": "grinning face with smiling eyes" + }, + { + "code": [ + "1F601" + ], + "emoji": "😁", + "name": "beaming face with smiling eyes" + }, + { + "code": [ + "1F606" + ], + "emoji": "😆", + "name": "grinning squinting face" + }, + { + "code": [ + "1F605" + ], + "emoji": "😅", + "name": "grinning face with sweat" + }, + { + "code": [ + "1F923" + ], + "emoji": "🤣", + "name": "rolling on the floor laughing" + }, + { + "code": [ + "1F602" + ], + "emoji": "😂", + "name": "face with tears of joy" + }, + { + "code": [ + "1F642" + ], + "emoji": "🙂", + "name": "slightly smiling face" + }, + { + "code": [ + "1F643" + ], + "emoji": "🙃", + "name": "upside-down face" + }, + { + "code": [ + "1FAE0" + ], + "emoji": "🫠", + "name": "melting face" + }, + { + "code": [ + "1F609" + ], + "emoji": "😉", + "name": "winking face" + }, + { + "code": [ + "1F60A" + ], + "emoji": "😊", + "name": "smiling face with smiling eyes" + }, + { + "code": [ + "1F607" + ], + "emoji": "😇", + "name": "smiling face with halo" + } + ], + "face-affection": [ + { + "code": [ + "1F970" + ], + "emoji": "🥰", + "name": "smiling face with hearts" + }, + { + "code": [ + "1F60D" + ], + "emoji": "😍", + "name": "smiling face with heart-eyes" + }, + { + "code": [ + "1F929" + ], + "emoji": "🤩", + "name": "star-struck" + }, + { + "code": [ + "1F618" + ], + "emoji": "😘", + "name": "face blowing a kiss" + }, + { + "code": [ + "1F617" + ], + "emoji": "😗", + "name": "kissing face" + }, + { + "code": [ + "263A" + ], + "emoji": "☺", + "name": "smiling face" + }, + { + "code": [ + "1F61A" + ], + "emoji": "😚", + "name": "kissing face with closed eyes" + }, + { + "code": [ + "1F619" + ], + "emoji": "😙", + "name": "kissing face with smiling eyes" + }, + { + "code": [ + "1F972" + ], + "emoji": "🥲", + "name": "smiling face with tear" + } + ], + "face-tongue": [ + { + "code": [ + "1F60B" + ], + "emoji": "😋", + "name": "face savoring food" + }, + { + "code": [ + "1F61B" + ], + "emoji": "😛", + "name": "face with tongue" + }, + { + "code": [ + "1F61C" + ], + "emoji": "😜", + "name": "winking face with tongue" + }, + { + "code": [ + "1F92A" + ], + "emoji": "🤪", + "name": "zany face" + }, + { + "code": [ + "1F61D" + ], + "emoji": "😝", + "name": "squinting face with tongue" + }, + { + "code": [ + "1F911" + ], + "emoji": "🤑", + "name": "money-mouth face" + } + ], + "face-hand": [ + { + "code": [ + "1F917" + ], + "emoji": "🤗", + "name": "smiling face with open hands" + }, + { + "code": [ + "1F92D" + ], + "emoji": "🤭", + "name": "face with hand over mouth" + }, + { + "code": [ + "1FAE2" + ], + "emoji": "🫢", + "name": "face with open eyes and hand over mouth" + }, + { + "code": [ + "1FAE3" + ], + "emoji": "🫣", + "name": "face with peeking eye" + }, + { + "code": [ + "1F92B" + ], + "emoji": "🤫", + "name": "shushing face" + }, + { + "code": [ + "1F914" + ], + "emoji": "🤔", + "name": "thinking face" + }, + { + "code": [ + "1FAE1" + ], + "emoji": "🫡", + "name": "saluting face" + } + ], + "face-neutral-skeptical": [ + { + "code": [ + "1F910" + ], + "emoji": "🤐", + "name": "zipper-mouth face" + }, + { + "code": [ + "1F928" + ], + "emoji": "🤨", + "name": "face with raised eyebrow" + }, + { + "code": [ + "1F610" + ], + "emoji": "😐", + "name": "neutral face" + }, + { + "code": [ + "1F611" + ], + "emoji": "😑", + "name": "expressionless face" + }, + { + "code": [ + "1F636" + ], + "emoji": "😶", + "name": "face without mouth" + }, + { + "code": [ + "1FAE5" + ], + "emoji": "🫥", + "name": "dotted line face" + }, + { + "code": [ + "1F636", + "200D", + "1F32B", + "FE0F" + ], + "emoji": "😶‍🌫️", + "name": "face in clouds" + }, + { + "code": [ + "1F60F" + ], + "emoji": "😏", + "name": "smirking face" + }, + { + "code": [ + "1F612" + ], + "emoji": "😒", + "name": "unamused face" + }, + { + "code": [ + "1F644" + ], + "emoji": "🙄", + "name": "face with rolling eyes" + }, + { + "code": [ + "1F62C" + ], + "emoji": "😬", + "name": "grimacing face" + }, + { + "code": [ + "1F62E", + "200D", + "1F4A8" + ], + "emoji": "😮‍💨", + "name": "face exhaling" + }, + { + "code": [ + "1F925" + ], + "emoji": "🤥", + "name": "lying face" + }, + { + "code": [ + "1FAE8" + ], + "emoji": "🫨", + "name": "shaking face" + }, + { + "code": [ + "1F642", + "200D", + "2194", + "FE0F" + ], + "emoji": "🙂‍↔️", + "name": "head shaking horizontally" + }, + { + "code": [ + "1F642", + "200D", + "2195", + "FE0F" + ], + "emoji": "🙂‍↕️", + "name": "head shaking vertically" + } + ], + "face-sleepy": [ + { + "code": [ + "1F60C" + ], + "emoji": "😌", + "name": "relieved face" + }, + { + "code": [ + "1F614" + ], + "emoji": "😔", + "name": "pensive face" + }, + { + "code": [ + "1F62A" + ], + "emoji": "😪", + "name": "sleepy face" + }, + { + "code": [ + "1F924" + ], + "emoji": "🤤", + "name": "drooling face" + }, + { + "code": [ + "1F634" + ], + "emoji": "😴", + "name": "sleeping face" + }, + { + "code": [ + "1FAE9" + ], + "emoji": "🫩", + "name": "face with bags under eyes" + } + ], + "face-unwell": [ + { + "code": [ + "1F637" + ], + "emoji": "😷", + "name": "face with medical mask" + }, + { + "code": [ + "1F912" + ], + "emoji": "🤒", + "name": "face with thermometer" + }, + { + "code": [ + "1F915" + ], + "emoji": "🤕", + "name": "face with head-bandage" + }, + { + "code": [ + "1F922" + ], + "emoji": "🤢", + "name": "nauseated face" + }, + { + "code": [ + "1F92E" + ], + "emoji": "🤮", + "name": "face vomiting" + }, + { + "code": [ + "1F927" + ], + "emoji": "🤧", + "name": "sneezing face" + }, + { + "code": [ + "1F975" + ], + "emoji": "🥵", + "name": "hot face" + }, + { + "code": [ + "1F976" + ], + "emoji": "🥶", + "name": "cold face" + }, + { + "code": [ + "1F974" + ], + "emoji": "🥴", + "name": "woozy face" + }, + { + "code": [ + "1F635" + ], + "emoji": "😵", + "name": "face with crossed-out eyes" + }, + { + "code": [ + "1F635", + "200D", + "1F4AB" + ], + "emoji": "😵‍💫", + "name": "face with spiral eyes" + }, + { + "code": [ + "1F92F" + ], + "emoji": "🤯", + "name": "exploding head" + } + ], + "face-hat": [ + { + "code": [ + "1F920" + ], + "emoji": "🤠", + "name": "cowboy hat face" + }, + { + "code": [ + "1F973" + ], + "emoji": "🥳", + "name": "partying face" + }, + { + "code": [ + "1F978" + ], + "emoji": "🥸", + "name": "disguised face" + } + ], + "face-glasses": [ + { + "code": [ + "1F60E" + ], + "emoji": "😎", + "name": "smiling face with sunglasses" + }, + { + "code": [ + "1F913" + ], + "emoji": "🤓", + "name": "nerd face" + }, + { + "code": [ + "1F9D0" + ], + "emoji": "🧐", + "name": "face with monocle" + } + ], + "face-concerned": [ + { + "code": [ + "1F615" + ], + "emoji": "😕", + "name": "confused face" + }, + { + "code": [ + "1FAE4" + ], + "emoji": "🫤", + "name": "face with diagonal mouth" + }, + { + "code": [ + "1F61F" + ], + "emoji": "😟", + "name": "worried face" + }, + { + "code": [ + "1F641" + ], + "emoji": "🙁", + "name": "slightly frowning face" + }, + { + "code": [ + "2639" + ], + "emoji": "☹", + "name": "frowning face" + }, + { + "code": [ + "1F62E" + ], + "emoji": "😮", + "name": "face with open mouth" + }, + { + "code": [ + "1F62F" + ], + "emoji": "😯", + "name": "hushed face" + }, + { + "code": [ + "1F632" + ], + "emoji": "😲", + "name": "astonished face" + }, + { + "code": [ + "1F633" + ], + "emoji": "😳", + "name": "flushed face" + }, + { + "code": [ + "1F97A" + ], + "emoji": "🥺", + "name": "pleading face" + }, + { + "code": [ + "1F979" + ], + "emoji": "🥹", + "name": "face holding back tears" + }, + { + "code": [ + "1F626" + ], + "emoji": "😦", + "name": "frowning face with open mouth" + }, + { + "code": [ + "1F627" + ], + "emoji": "😧", + "name": "anguished face" + }, + { + "code": [ + "1F628" + ], + "emoji": "😨", + "name": "fearful face" + }, + { + "code": [ + "1F630" + ], + "emoji": "😰", + "name": "anxious face with sweat" + }, + { + "code": [ + "1F625" + ], + "emoji": "😥", + "name": "sad but relieved face" + }, + { + "code": [ + "1F622" + ], + "emoji": "😢", + "name": "crying face" + }, + { + "code": [ + "1F62D" + ], + "emoji": "😭", + "name": "loudly crying face" + }, + { + "code": [ + "1F631" + ], + "emoji": "😱", + "name": "face screaming in fear" + }, + { + "code": [ + "1F616" + ], + "emoji": "😖", + "name": "confounded face" + }, + { + "code": [ + "1F623" + ], + "emoji": "😣", + "name": "persevering face" + }, + { + "code": [ + "1F61E" + ], + "emoji": "😞", + "name": "disappointed face" + }, + { + "code": [ + "1F613" + ], + "emoji": "😓", + "name": "downcast face with sweat" + }, + { + "code": [ + "1F629" + ], + "emoji": "😩", + "name": "weary face" + }, + { + "code": [ + "1F62B" + ], + "emoji": "😫", + "name": "tired face" + }, + { + "code": [ + "1F971" + ], + "emoji": "🥱", + "name": "yawning face" + } + ], + "face-negative": [ + { + "code": [ + "1F624" + ], + "emoji": "😤", + "name": "face with steam from nose" + }, + { + "code": [ + "1F621" + ], + "emoji": "😡", + "name": "enraged face" + }, + { + "code": [ + "1F620" + ], + "emoji": "😠", + "name": "angry face" + }, + { + "code": [ + "1F92C" + ], + "emoji": "🤬", + "name": "face with symbols on mouth" + }, + { + "code": [ + "1F608" + ], + "emoji": "😈", + "name": "smiling face with horns" + }, + { + "code": [ + "1F47F" + ], + "emoji": "👿", + "name": "angry face with horns" + }, + { + "code": [ + "1F480" + ], + "emoji": "💀", + "name": "skull" + }, + { + "code": [ + "2620" + ], + "emoji": "☠", + "name": "skull and crossbones" + } + ], + "face-costume": [ + { + "code": [ + "1F4A9" + ], + "emoji": "💩", + "name": "pile of poo" + }, + { + "code": [ + "1F921" + ], + "emoji": "🤡", + "name": "clown face" + }, + { + "code": [ + "1F479" + ], + "emoji": "👹", + "name": "ogre" + }, + { + "code": [ + "1F47A" + ], + "emoji": "👺", + "name": "goblin" + }, + { + "code": [ + "1F47B" + ], + "emoji": "👻", + "name": "ghost" + }, + { + "code": [ + "1F47D" + ], + "emoji": "👽", + "name": "alien" + }, + { + "code": [ + "1F47E" + ], + "emoji": "👾", + "name": "alien monster" + }, + { + "code": [ + "1F916" + ], + "emoji": "🤖", + "name": "robot" + } + ], + "cat-face": [ + { + "code": [ + "1F63A" + ], + "emoji": "😺", + "name": "grinning cat" + }, + { + "code": [ + "1F638" + ], + "emoji": "😸", + "name": "grinning cat with smiling eyes" + }, + { + "code": [ + "1F639" + ], + "emoji": "😹", + "name": "cat with tears of joy" + }, + { + "code": [ + "1F63B" + ], + "emoji": "😻", + "name": "smiling cat with heart-eyes" + }, + { + "code": [ + "1F63C" + ], + "emoji": "😼", + "name": "cat with wry smile" + }, + { + "code": [ + "1F63D" + ], + "emoji": "😽", + "name": "kissing cat" + }, + { + "code": [ + "1F640" + ], + "emoji": "🙀", + "name": "weary cat" + }, + { + "code": [ + "1F63F" + ], + "emoji": "😿", + "name": "crying cat" + }, + { + "code": [ + "1F63E" + ], + "emoji": "😾", + "name": "pouting cat" + } + ], + "monkey-face": [ + { + "code": [ + "1F648" + ], + "emoji": "🙈", + "name": "see-no-evil monkey" + }, + { + "code": [ + "1F649" + ], + "emoji": "🙉", + "name": "hear-no-evil monkey" + }, + { + "code": [ + "1F64A" + ], + "emoji": "🙊", + "name": "speak-no-evil monkey" + } + ], + "heart": [ + { + "code": [ + "1F48C" + ], + "emoji": "💌", + "name": "love letter" + }, + { + "code": [ + "1F498" + ], + "emoji": "💘", + "name": "heart with arrow" + }, + { + "code": [ + "1F49D" + ], + "emoji": "💝", + "name": "heart with ribbon" + }, + { + "code": [ + "1F496" + ], + "emoji": "💖", + "name": "sparkling heart" + }, + { + "code": [ + "1F497" + ], + "emoji": "💗", + "name": "growing heart" + }, + { + "code": [ + "1F493" + ], + "emoji": "💓", + "name": "beating heart" + }, + { + "code": [ + "1F49E" + ], + "emoji": "💞", + "name": "revolving hearts" + }, + { + "code": [ + "1F495" + ], + "emoji": "💕", + "name": "two hearts" + }, + { + "code": [ + "1F49F" + ], + "emoji": "💟", + "name": "heart decoration" + }, + { + "code": [ + "2763" + ], + "emoji": "❣", + "name": "heart exclamation" + }, + { + "code": [ + "1F494" + ], + "emoji": "💔", + "name": "broken heart" + }, + { + "code": [ + "2764", + "FE0F", + "200D", + "1F525" + ], + "emoji": "❤️‍🔥", + "name": "heart on fire" + }, + { + "code": [ + "2764", + "FE0F", + "200D", + "1FA79" + ], + "emoji": "❤️‍🩹", + "name": "mending heart" + }, + { + "code": [ + "2764" + ], + "emoji": "❤", + "name": "red heart" + }, + { + "code": [ + "1FA77" + ], + "emoji": "🩷", + "name": "pink heart" + }, + { + "code": [ + "1F9E1" + ], + "emoji": "🧡", + "name": "orange heart" + }, + { + "code": [ + "1F49B" + ], + "emoji": "💛", + "name": "yellow heart" + }, + { + "code": [ + "1F49A" + ], + "emoji": "💚", + "name": "green heart" + }, + { + "code": [ + "1F499" + ], + "emoji": "💙", + "name": "blue heart" + }, + { + "code": [ + "1FA75" + ], + "emoji": "🩵", + "name": "light blue heart" + }, + { + "code": [ + "1F49C" + ], + "emoji": "💜", + "name": "purple heart" + }, + { + "code": [ + "1F90E" + ], + "emoji": "🤎", + "name": "brown heart" + }, + { + "code": [ + "1F5A4" + ], + "emoji": "🖤", + "name": "black heart" + }, + { + "code": [ + "1FA76" + ], + "emoji": "🩶", + "name": "grey heart" + }, + { + "code": [ + "1F90D" + ], + "emoji": "🤍", + "name": "white heart" + } + ], + "emotion": [ + { + "code": [ + "1F48B" + ], + "emoji": "💋", + "name": "kiss mark" + }, + { + "code": [ + "1F4AF" + ], + "emoji": "💯", + "name": "hundred points" + }, + { + "code": [ + "1F4A2" + ], + "emoji": "💢", + "name": "anger symbol" + }, + { + "code": [ + "1F4A5" + ], + "emoji": "💥", + "name": "collision" + }, + { + "code": [ + "1F4AB" + ], + "emoji": "💫", + "name": "dizzy" + }, + { + "code": [ + "1F4A6" + ], + "emoji": "💦", + "name": "sweat droplets" + }, + { + "code": [ + "1F4A8" + ], + "emoji": "💨", + "name": "dashing away" + }, + { + "code": [ + "1F573" + ], + "emoji": "🕳", + "name": "hole" + }, + { + "code": [ + "1F4AC" + ], + "emoji": "💬", + "name": "speech balloon" + }, + { + "code": [ + "1F441", + "FE0F", + "200D", + "1F5E8", + "FE0F" + ], + "emoji": "👁️‍🗨️", + "name": "eye in speech bubble" + }, + { + "code": [ + "1F5E8" + ], + "emoji": "🗨", + "name": "left speech bubble" + }, + { + "code": [ + "1F5EF" + ], + "emoji": "🗯", + "name": "right anger bubble" + }, + { + "code": [ + "1F4AD" + ], + "emoji": "💭", + "name": "thought balloon" + }, + { + "code": [ + "1F4A4" + ], + "emoji": "💤", + "name": "ZZZ" + } + ] + }, + "People & Body": { + "hand-fingers-open": [ + { + "code": [ + "1F44B" + ], + "emoji": "👋", + "name": "waving hand" + }, + { + "code": [ + "1F91A" + ], + "emoji": "🤚", + "name": "raised back of hand" + }, + { + "code": [ + "1F590" + ], + "emoji": "🖐", + "name": "hand with fingers splayed" + }, + { + "code": [ + "270B" + ], + "emoji": "✋", + "name": "raised hand" + }, + { + "code": [ + "1F596" + ], + "emoji": "🖖", + "name": "vulcan salute" + }, + { + "code": [ + "1FAF1" + ], + "emoji": "🫱", + "name": "rightwards hand" + }, + { + "code": [ + "1FAF2" + ], + "emoji": "🫲", + "name": "leftwards hand" + }, + { + "code": [ + "1FAF3" + ], + "emoji": "🫳", + "name": "palm down hand" + }, + { + "code": [ + "1FAF4" + ], + "emoji": "🫴", + "name": "palm up hand" + }, + { + "code": [ + "1FAF7" + ], + "emoji": "🫷", + "name": "leftwards pushing hand" + }, + { + "code": [ + "1FAF8" + ], + "emoji": "🫸", + "name": "rightwards pushing hand" + } + ], + "hand-fingers-partial": [ + { + "code": [ + "1F44C" + ], + "emoji": "👌", + "name": "OK hand" + }, + { + "code": [ + "1F90C" + ], + "emoji": "🤌", + "name": "pinched fingers" + }, + { + "code": [ + "1F90F" + ], + "emoji": "🤏", + "name": "pinching hand" + }, + { + "code": [ + "270C" + ], + "emoji": "✌", + "name": "victory hand" + }, + { + "code": [ + "1F91E" + ], + "emoji": "🤞", + "name": "crossed fingers" + }, + { + "code": [ + "1FAF0" + ], + "emoji": "🫰", + "name": "hand with index finger and thumb crossed" + }, + { + "code": [ + "1F91F" + ], + "emoji": "🤟", + "name": "love-you gesture" + }, + { + "code": [ + "1F918" + ], + "emoji": "🤘", + "name": "sign of the horns" + }, + { + "code": [ + "1F919" + ], + "emoji": "🤙", + "name": "call me hand" + } + ], + "hand-single-finger": [ + { + "code": [ + "1F448" + ], + "emoji": "👈", + "name": "backhand index pointing left" + }, + { + "code": [ + "1F449" + ], + "emoji": "👉", + "name": "backhand index pointing right" + }, + { + "code": [ + "1F446" + ], + "emoji": "👆", + "name": "backhand index pointing up" + }, + { + "code": [ + "1F595" + ], + "emoji": "🖕", + "name": "middle finger" + }, + { + "code": [ + "1F447" + ], + "emoji": "👇", + "name": "backhand index pointing down" + }, + { + "code": [ + "261D" + ], + "emoji": "☝", + "name": "index pointing up" + }, + { + "code": [ + "1FAF5" + ], + "emoji": "🫵", + "name": "index pointing at the viewer" + } + ], + "hand-fingers-closed": [ + { + "code": [ + "1F44D" + ], + "emoji": "👍", + "name": "thumbs up" + }, + { + "code": [ + "1F44E" + ], + "emoji": "👎", + "name": "thumbs down" + }, + { + "code": [ + "270A" + ], + "emoji": "✊", + "name": "raised fist" + }, + { + "code": [ + "1F44A" + ], + "emoji": "👊", + "name": "oncoming fist" + }, + { + "code": [ + "1F91B" + ], + "emoji": "🤛", + "name": "left-facing fist" + }, + { + "code": [ + "1F91C" + ], + "emoji": "🤜", + "name": "right-facing fist" + } + ], + "hands": [ + { + "code": [ + "1F44F" + ], + "emoji": "👏", + "name": "clapping hands" + }, + { + "code": [ + "1F64C" + ], + "emoji": "🙌", + "name": "raising hands" + }, + { + "code": [ + "1FAF6" + ], + "emoji": "🫶", + "name": "heart hands" + }, + { + "code": [ + "1F450" + ], + "emoji": "👐", + "name": "open hands" + }, + { + "code": [ + "1F932" + ], + "emoji": "🤲", + "name": "palms up together" + }, + { + "code": [ + "1F91D" + ], + "emoji": "🤝", + "name": "handshake" + }, + { + "code": [ + "1F64F" + ], + "emoji": "🙏", + "name": "folded hands" + } + ], + "hand-prop": [ + { + "code": [ + "270D" + ], + "emoji": "✍", + "name": "writing hand" + }, + { + "code": [ + "1F485" + ], + "emoji": "💅", + "name": "nail polish" + }, + { + "code": [ + "1F933" + ], + "emoji": "🤳", + "name": "selfie" + } + ], + "body-parts": [ + { + "code": [ + "1F4AA" + ], + "emoji": "💪", + "name": "flexed biceps" + }, + { + "code": [ + "1F9BE" + ], + "emoji": "🦾", + "name": "mechanical arm" + }, + { + "code": [ + "1F9BF" + ], + "emoji": "🦿", + "name": "mechanical leg" + }, + { + "code": [ + "1F9B5" + ], + "emoji": "🦵", + "name": "leg" + }, + { + "code": [ + "1F9B6" + ], + "emoji": "🦶", + "name": "foot" + }, + { + "code": [ + "1F442" + ], + "emoji": "👂", + "name": "ear" + }, + { + "code": [ + "1F9BB" + ], + "emoji": "🦻", + "name": "ear with hearing aid" + }, + { + "code": [ + "1F443" + ], + "emoji": "👃", + "name": "nose" + }, + { + "code": [ + "1F9E0" + ], + "emoji": "🧠", + "name": "brain" + }, + { + "code": [ + "1FAC0" + ], + "emoji": "🫀", + "name": "anatomical heart" + }, + { + "code": [ + "1FAC1" + ], + "emoji": "🫁", + "name": "lungs" + }, + { + "code": [ + "1F9B7" + ], + "emoji": "🦷", + "name": "tooth" + }, + { + "code": [ + "1F9B4" + ], + "emoji": "🦴", + "name": "bone" + }, + { + "code": [ + "1F440" + ], + "emoji": "👀", + "name": "eyes" + }, + { + "code": [ + "1F441" + ], + "emoji": "👁", + "name": "eye" + }, + { + "code": [ + "1F445" + ], + "emoji": "👅", + "name": "tongue" + }, + { + "code": [ + "1F444" + ], + "emoji": "👄", + "name": "mouth" + }, + { + "code": [ + "1FAE6" + ], + "emoji": "🫦", + "name": "biting lip" + } + ], + "person": [ + { + "code": [ + "1F476" + ], + "emoji": "👶", + "name": "baby" + }, + { + "code": [ + "1F9D2" + ], + "emoji": "🧒", + "name": "child" + }, + { + "code": [ + "1F466" + ], + "emoji": "👦", + "name": "boy" + }, + { + "code": [ + "1F467" + ], + "emoji": "👧", + "name": "girl" + }, + { + "code": [ + "1F9D1" + ], + "emoji": "🧑", + "name": "person" + }, + { + "code": [ + "1F471" + ], + "emoji": "👱", + "name": "person: blond hair" + }, + { + "code": [ + "1F468" + ], + "emoji": "👨", + "name": "man" + }, + { + "code": [ + "1F9D4" + ], + "emoji": "🧔", + "name": "person: beard" + }, + { + "code": [ + "1F9D4", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧔‍♂️", + "name": "man: beard" + }, + { + "code": [ + "1F9D4", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧔‍♀️", + "name": "woman: beard" + }, + { + "code": [ + "1F468", + "200D", + "1F9B0" + ], + "emoji": "👨‍🦰", + "name": "man: red hair" + }, + { + "code": [ + "1F468", + "200D", + "1F9B1" + ], + "emoji": "👨‍🦱", + "name": "man: curly hair" + }, + { + "code": [ + "1F468", + "200D", + "1F9B3" + ], + "emoji": "👨‍🦳", + "name": "man: white hair" + }, + { + "code": [ + "1F468", + "200D", + "1F9B2" + ], + "emoji": "👨‍🦲", + "name": "man: bald" + }, + { + "code": [ + "1F469" + ], + "emoji": "👩", + "name": "woman" + }, + { + "code": [ + "1F469", + "200D", + "1F9B0" + ], + "emoji": "👩‍🦰", + "name": "woman: red hair" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9B0" + ], + "emoji": "🧑‍🦰", + "name": "person: red hair" + }, + { + "code": [ + "1F469", + "200D", + "1F9B1" + ], + "emoji": "👩‍🦱", + "name": "woman: curly hair" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9B1" + ], + "emoji": "🧑‍🦱", + "name": "person: curly hair" + }, + { + "code": [ + "1F469", + "200D", + "1F9B3" + ], + "emoji": "👩‍🦳", + "name": "woman: white hair" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9B3" + ], + "emoji": "🧑‍🦳", + "name": "person: white hair" + }, + { + "code": [ + "1F469", + "200D", + "1F9B2" + ], + "emoji": "👩‍🦲", + "name": "woman: bald" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9B2" + ], + "emoji": "🧑‍🦲", + "name": "person: bald" + }, + { + "code": [ + "1F471", + "200D", + "2640", + "FE0F" + ], + "emoji": "👱‍♀️", + "name": "woman: blond hair" + }, + { + "code": [ + "1F471", + "200D", + "2642", + "FE0F" + ], + "emoji": "👱‍♂️", + "name": "man: blond hair" + }, + { + "code": [ + "1F9D3" + ], + "emoji": "🧓", + "name": "older person" + }, + { + "code": [ + "1F474" + ], + "emoji": "👴", + "name": "old man" + }, + { + "code": [ + "1F475" + ], + "emoji": "👵", + "name": "old woman" + } + ], + "person-gesture": [ + { + "code": [ + "1F64D" + ], + "emoji": "🙍", + "name": "person frowning" + }, + { + "code": [ + "1F64D", + "200D", + "2642", + "FE0F" + ], + "emoji": "🙍‍♂️", + "name": "man frowning" + }, + { + "code": [ + "1F64D", + "200D", + "2640", + "FE0F" + ], + "emoji": "🙍‍♀️", + "name": "woman frowning" + }, + { + "code": [ + "1F64E" + ], + "emoji": "🙎", + "name": "person pouting" + }, + { + "code": [ + "1F64E", + "200D", + "2642", + "FE0F" + ], + "emoji": "🙎‍♂️", + "name": "man pouting" + }, + { + "code": [ + "1F64E", + "200D", + "2640", + "FE0F" + ], + "emoji": "🙎‍♀️", + "name": "woman pouting" + }, + { + "code": [ + "1F645" + ], + "emoji": "🙅", + "name": "person gesturing NO" + }, + { + "code": [ + "1F645", + "200D", + "2642", + "FE0F" + ], + "emoji": "🙅‍♂️", + "name": "man gesturing NO" + }, + { + "code": [ + "1F645", + "200D", + "2640", + "FE0F" + ], + "emoji": "🙅‍♀️", + "name": "woman gesturing NO" + }, + { + "code": [ + "1F646" + ], + "emoji": "🙆", + "name": "person gesturing OK" + }, + { + "code": [ + "1F646", + "200D", + "2642", + "FE0F" + ], + "emoji": "🙆‍♂️", + "name": "man gesturing OK" + }, + { + "code": [ + "1F646", + "200D", + "2640", + "FE0F" + ], + "emoji": "🙆‍♀️", + "name": "woman gesturing OK" + }, + { + "code": [ + "1F481" + ], + "emoji": "💁", + "name": "person tipping hand" + }, + { + "code": [ + "1F481", + "200D", + "2642", + "FE0F" + ], + "emoji": "💁‍♂️", + "name": "man tipping hand" + }, + { + "code": [ + "1F481", + "200D", + "2640", + "FE0F" + ], + "emoji": "💁‍♀️", + "name": "woman tipping hand" + }, + { + "code": [ + "1F64B" + ], + "emoji": "🙋", + "name": "person raising hand" + }, + { + "code": [ + "1F64B", + "200D", + "2642", + "FE0F" + ], + "emoji": "🙋‍♂️", + "name": "man raising hand" + }, + { + "code": [ + "1F64B", + "200D", + "2640", + "FE0F" + ], + "emoji": "🙋‍♀️", + "name": "woman raising hand" + }, + { + "code": [ + "1F9CF" + ], + "emoji": "🧏", + "name": "deaf person" + }, + { + "code": [ + "1F9CF", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧏‍♂️", + "name": "deaf man" + }, + { + "code": [ + "1F9CF", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧏‍♀️", + "name": "deaf woman" + }, + { + "code": [ + "1F647" + ], + "emoji": "🙇", + "name": "person bowing" + }, + { + "code": [ + "1F647", + "200D", + "2642", + "FE0F" + ], + "emoji": "🙇‍♂️", + "name": "man bowing" + }, + { + "code": [ + "1F647", + "200D", + "2640", + "FE0F" + ], + "emoji": "🙇‍♀️", + "name": "woman bowing" + }, + { + "code": [ + "1F926" + ], + "emoji": "🤦", + "name": "person facepalming" + }, + { + "code": [ + "1F926", + "200D", + "2642", + "FE0F" + ], + "emoji": "🤦‍♂️", + "name": "man facepalming" + }, + { + "code": [ + "1F926", + "200D", + "2640", + "FE0F" + ], + "emoji": "🤦‍♀️", + "name": "woman facepalming" + }, + { + "code": [ + "1F937" + ], + "emoji": "🤷", + "name": "person shrugging" + }, + { + "code": [ + "1F937", + "200D", + "2642", + "FE0F" + ], + "emoji": "🤷‍♂️", + "name": "man shrugging" + }, + { + "code": [ + "1F937", + "200D", + "2640", + "FE0F" + ], + "emoji": "🤷‍♀️", + "name": "woman shrugging" + } + ], + "person-role": [ + { + "code": [ + "1F9D1", + "200D", + "2695", + "FE0F" + ], + "emoji": "🧑‍⚕️", + "name": "health worker" + }, + { + "code": [ + "1F468", + "200D", + "2695", + "FE0F" + ], + "emoji": "👨‍⚕️", + "name": "man health worker" + }, + { + "code": [ + "1F469", + "200D", + "2695", + "FE0F" + ], + "emoji": "👩‍⚕️", + "name": "woman health worker" + }, + { + "code": [ + "1F9D1", + "200D", + "1F393" + ], + "emoji": "🧑‍🎓", + "name": "student" + }, + { + "code": [ + "1F468", + "200D", + "1F393" + ], + "emoji": "👨‍🎓", + "name": "man student" + }, + { + "code": [ + "1F469", + "200D", + "1F393" + ], + "emoji": "👩‍🎓", + "name": "woman student" + }, + { + "code": [ + "1F9D1", + "200D", + "1F3EB" + ], + "emoji": "🧑‍🏫", + "name": "teacher" + }, + { + "code": [ + "1F468", + "200D", + "1F3EB" + ], + "emoji": "👨‍🏫", + "name": "man teacher" + }, + { + "code": [ + "1F469", + "200D", + "1F3EB" + ], + "emoji": "👩‍🏫", + "name": "woman teacher" + }, + { + "code": [ + "1F9D1", + "200D", + "2696", + "FE0F" + ], + "emoji": "🧑‍⚖️", + "name": "judge" + }, + { + "code": [ + "1F468", + "200D", + "2696", + "FE0F" + ], + "emoji": "👨‍⚖️", + "name": "man judge" + }, + { + "code": [ + "1F469", + "200D", + "2696", + "FE0F" + ], + "emoji": "👩‍⚖️", + "name": "woman judge" + }, + { + "code": [ + "1F9D1", + "200D", + "1F33E" + ], + "emoji": "🧑‍🌾", + "name": "farmer" + }, + { + "code": [ + "1F468", + "200D", + "1F33E" + ], + "emoji": "👨‍🌾", + "name": "man farmer" + }, + { + "code": [ + "1F469", + "200D", + "1F33E" + ], + "emoji": "👩‍🌾", + "name": "woman farmer" + }, + { + "code": [ + "1F9D1", + "200D", + "1F373" + ], + "emoji": "🧑‍🍳", + "name": "cook" + }, + { + "code": [ + "1F468", + "200D", + "1F373" + ], + "emoji": "👨‍🍳", + "name": "man cook" + }, + { + "code": [ + "1F469", + "200D", + "1F373" + ], + "emoji": "👩‍🍳", + "name": "woman cook" + }, + { + "code": [ + "1F9D1", + "200D", + "1F527" + ], + "emoji": "🧑‍🔧", + "name": "mechanic" + }, + { + "code": [ + "1F468", + "200D", + "1F527" + ], + "emoji": "👨‍🔧", + "name": "man mechanic" + }, + { + "code": [ + "1F469", + "200D", + "1F527" + ], + "emoji": "👩‍🔧", + "name": "woman mechanic" + }, + { + "code": [ + "1F9D1", + "200D", + "1F3ED" + ], + "emoji": "🧑‍🏭", + "name": "factory worker" + }, + { + "code": [ + "1F468", + "200D", + "1F3ED" + ], + "emoji": "👨‍🏭", + "name": "man factory worker" + }, + { + "code": [ + "1F469", + "200D", + "1F3ED" + ], + "emoji": "👩‍🏭", + "name": "woman factory worker" + }, + { + "code": [ + "1F9D1", + "200D", + "1F4BC" + ], + "emoji": "🧑‍💼", + "name": "office worker" + }, + { + "code": [ + "1F468", + "200D", + "1F4BC" + ], + "emoji": "👨‍💼", + "name": "man office worker" + }, + { + "code": [ + "1F469", + "200D", + "1F4BC" + ], + "emoji": "👩‍💼", + "name": "woman office worker" + }, + { + "code": [ + "1F9D1", + "200D", + "1F52C" + ], + "emoji": "🧑‍🔬", + "name": "scientist" + }, + { + "code": [ + "1F468", + "200D", + "1F52C" + ], + "emoji": "👨‍🔬", + "name": "man scientist" + }, + { + "code": [ + "1F469", + "200D", + "1F52C" + ], + "emoji": "👩‍🔬", + "name": "woman scientist" + }, + { + "code": [ + "1F9D1", + "200D", + "1F4BB" + ], + "emoji": "🧑‍💻", + "name": "technologist" + }, + { + "code": [ + "1F468", + "200D", + "1F4BB" + ], + "emoji": "👨‍💻", + "name": "man technologist" + }, + { + "code": [ + "1F469", + "200D", + "1F4BB" + ], + "emoji": "👩‍💻", + "name": "woman technologist" + }, + { + "code": [ + "1F9D1", + "200D", + "1F3A4" + ], + "emoji": "🧑‍🎤", + "name": "singer" + }, + { + "code": [ + "1F468", + "200D", + "1F3A4" + ], + "emoji": "👨‍🎤", + "name": "man singer" + }, + { + "code": [ + "1F469", + "200D", + "1F3A4" + ], + "emoji": "👩‍🎤", + "name": "woman singer" + }, + { + "code": [ + "1F9D1", + "200D", + "1F3A8" + ], + "emoji": "🧑‍🎨", + "name": "artist" + }, + { + "code": [ + "1F468", + "200D", + "1F3A8" + ], + "emoji": "👨‍🎨", + "name": "man artist" + }, + { + "code": [ + "1F469", + "200D", + "1F3A8" + ], + "emoji": "👩‍🎨", + "name": "woman artist" + }, + { + "code": [ + "1F9D1", + "200D", + "2708", + "FE0F" + ], + "emoji": "🧑‍✈️", + "name": "pilot" + }, + { + "code": [ + "1F468", + "200D", + "2708", + "FE0F" + ], + "emoji": "👨‍✈️", + "name": "man pilot" + }, + { + "code": [ + "1F469", + "200D", + "2708", + "FE0F" + ], + "emoji": "👩‍✈️", + "name": "woman pilot" + }, + { + "code": [ + "1F9D1", + "200D", + "1F680" + ], + "emoji": "🧑‍🚀", + "name": "astronaut" + }, + { + "code": [ + "1F468", + "200D", + "1F680" + ], + "emoji": "👨‍🚀", + "name": "man astronaut" + }, + { + "code": [ + "1F469", + "200D", + "1F680" + ], + "emoji": "👩‍🚀", + "name": "woman astronaut" + }, + { + "code": [ + "1F9D1", + "200D", + "1F692" + ], + "emoji": "🧑‍🚒", + "name": "firefighter" + }, + { + "code": [ + "1F468", + "200D", + "1F692" + ], + "emoji": "👨‍🚒", + "name": "man firefighter" + }, + { + "code": [ + "1F469", + "200D", + "1F692" + ], + "emoji": "👩‍🚒", + "name": "woman firefighter" + }, + { + "code": [ + "1F46E" + ], + "emoji": "👮", + "name": "police officer" + }, + { + "code": [ + "1F46E", + "200D", + "2642", + "FE0F" + ], + "emoji": "👮‍♂️", + "name": "man police officer" + }, + { + "code": [ + "1F46E", + "200D", + "2640", + "FE0F" + ], + "emoji": "👮‍♀️", + "name": "woman police officer" + }, + { + "code": [ + "1F575" + ], + "emoji": "🕵", + "name": "detective" + }, + { + "code": [ + "1F575", + "FE0F", + "200D", + "2642", + "FE0F" + ], + "emoji": "🕵️‍♂️", + "name": "man detective" + }, + { + "code": [ + "1F575", + "FE0F", + "200D", + "2640", + "FE0F" + ], + "emoji": "🕵️‍♀️", + "name": "woman detective" + }, + { + "code": [ + "1F482" + ], + "emoji": "💂", + "name": "guard" + }, + { + "code": [ + "1F482", + "200D", + "2642", + "FE0F" + ], + "emoji": "💂‍♂️", + "name": "man guard" + }, + { + "code": [ + "1F482", + "200D", + "2640", + "FE0F" + ], + "emoji": "💂‍♀️", + "name": "woman guard" + }, + { + "code": [ + "1F977" + ], + "emoji": "🥷", + "name": "ninja" + }, + { + "code": [ + "1F477" + ], + "emoji": "👷", + "name": "construction worker" + }, + { + "code": [ + "1F477", + "200D", + "2642", + "FE0F" + ], + "emoji": "👷‍♂️", + "name": "man construction worker" + }, + { + "code": [ + "1F477", + "200D", + "2640", + "FE0F" + ], + "emoji": "👷‍♀️", + "name": "woman construction worker" + }, + { + "code": [ + "1FAC5" + ], + "emoji": "🫅", + "name": "person with crown" + }, + { + "code": [ + "1F934" + ], + "emoji": "🤴", + "name": "prince" + }, + { + "code": [ + "1F478" + ], + "emoji": "👸", + "name": "princess" + }, + { + "code": [ + "1F473" + ], + "emoji": "👳", + "name": "person wearing turban" + }, + { + "code": [ + "1F473", + "200D", + "2642", + "FE0F" + ], + "emoji": "👳‍♂️", + "name": "man wearing turban" + }, + { + "code": [ + "1F473", + "200D", + "2640", + "FE0F" + ], + "emoji": "👳‍♀️", + "name": "woman wearing turban" + }, + { + "code": [ + "1F472" + ], + "emoji": "👲", + "name": "person with skullcap" + }, + { + "code": [ + "1F9D5" + ], + "emoji": "🧕", + "name": "woman with headscarf" + }, + { + "code": [ + "1F935" + ], + "emoji": "🤵", + "name": "person in tuxedo" + }, + { + "code": [ + "1F935", + "200D", + "2642", + "FE0F" + ], + "emoji": "🤵‍♂️", + "name": "man in tuxedo" + }, + { + "code": [ + "1F935", + "200D", + "2640", + "FE0F" + ], + "emoji": "🤵‍♀️", + "name": "woman in tuxedo" + }, + { + "code": [ + "1F470" + ], + "emoji": "👰", + "name": "person with veil" + }, + { + "code": [ + "1F470", + "200D", + "2642", + "FE0F" + ], + "emoji": "👰‍♂️", + "name": "man with veil" + }, + { + "code": [ + "1F470", + "200D", + "2640", + "FE0F" + ], + "emoji": "👰‍♀️", + "name": "woman with veil" + }, + { + "code": [ + "1F930" + ], + "emoji": "🤰", + "name": "pregnant woman" + }, + { + "code": [ + "1FAC3" + ], + "emoji": "🫃", + "name": "pregnant man" + }, + { + "code": [ + "1FAC4" + ], + "emoji": "🫄", + "name": "pregnant person" + }, + { + "code": [ + "1F931" + ], + "emoji": "🤱", + "name": "breast-feeding" + }, + { + "code": [ + "1F469", + "200D", + "1F37C" + ], + "emoji": "👩‍🍼", + "name": "woman feeding baby" + }, + { + "code": [ + "1F468", + "200D", + "1F37C" + ], + "emoji": "👨‍🍼", + "name": "man feeding baby" + }, + { + "code": [ + "1F9D1", + "200D", + "1F37C" + ], + "emoji": "🧑‍🍼", + "name": "person feeding baby" + } + ], + "person-fantasy": [ + { + "code": [ + "1F47C" + ], + "emoji": "👼", + "name": "baby angel" + }, + { + "code": [ + "1F385" + ], + "emoji": "🎅", + "name": "Santa Claus" + }, + { + "code": [ + "1F936" + ], + "emoji": "🤶", + "name": "Mrs. Claus" + }, + { + "code": [ + "1F9D1", + "200D", + "1F384" + ], + "emoji": "🧑‍🎄", + "name": "Mx Claus" + }, + { + "code": [ + "1F9B8" + ], + "emoji": "🦸", + "name": "superhero" + }, + { + "code": [ + "1F9B8", + "200D", + "2642", + "FE0F" + ], + "emoji": "🦸‍♂️", + "name": "man superhero" + }, + { + "code": [ + "1F9B8", + "200D", + "2640", + "FE0F" + ], + "emoji": "🦸‍♀️", + "name": "woman superhero" + }, + { + "code": [ + "1F9B9" + ], + "emoji": "🦹", + "name": "supervillain" + }, + { + "code": [ + "1F9B9", + "200D", + "2642", + "FE0F" + ], + "emoji": "🦹‍♂️", + "name": "man supervillain" + }, + { + "code": [ + "1F9B9", + "200D", + "2640", + "FE0F" + ], + "emoji": "🦹‍♀️", + "name": "woman supervillain" + }, + { + "code": [ + "1F9D9" + ], + "emoji": "🧙", + "name": "mage" + }, + { + "code": [ + "1F9D9", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧙‍♂️", + "name": "man mage" + }, + { + "code": [ + "1F9D9", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧙‍♀️", + "name": "woman mage" + }, + { + "code": [ + "1F9DA" + ], + "emoji": "🧚", + "name": "fairy" + }, + { + "code": [ + "1F9DA", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧚‍♂️", + "name": "man fairy" + }, + { + "code": [ + "1F9DA", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧚‍♀️", + "name": "woman fairy" + }, + { + "code": [ + "1F9DB" + ], + "emoji": "🧛", + "name": "vampire" + }, + { + "code": [ + "1F9DB", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧛‍♂️", + "name": "man vampire" + }, + { + "code": [ + "1F9DB", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧛‍♀️", + "name": "woman vampire" + }, + { + "code": [ + "1F9DC" + ], + "emoji": "🧜", + "name": "merperson" + }, + { + "code": [ + "1F9DC", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧜‍♂️", + "name": "merman" + }, + { + "code": [ + "1F9DC", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧜‍♀️", + "name": "mermaid" + }, + { + "code": [ + "1F9DD" + ], + "emoji": "🧝", + "name": "elf" + }, + { + "code": [ + "1F9DD", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧝‍♂️", + "name": "man elf" + }, + { + "code": [ + "1F9DD", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧝‍♀️", + "name": "woman elf" + }, + { + "code": [ + "1F9DE" + ], + "emoji": "🧞", + "name": "genie" + }, + { + "code": [ + "1F9DE", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧞‍♂️", + "name": "man genie" + }, + { + "code": [ + "1F9DE", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧞‍♀️", + "name": "woman genie" + }, + { + "code": [ + "1F9DF" + ], + "emoji": "🧟", + "name": "zombie" + }, + { + "code": [ + "1F9DF", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧟‍♂️", + "name": "man zombie" + }, + { + "code": [ + "1F9DF", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧟‍♀️", + "name": "woman zombie" + }, + { + "code": [ + "1F9CC" + ], + "emoji": "🧌", + "name": "troll" + } + ], + "person-activity": [ + { + "code": [ + "1F486" + ], + "emoji": "💆", + "name": "person getting massage" + }, + { + "code": [ + "1F486", + "200D", + "2642", + "FE0F" + ], + "emoji": "💆‍♂️", + "name": "man getting massage" + }, + { + "code": [ + "1F486", + "200D", + "2640", + "FE0F" + ], + "emoji": "💆‍♀️", + "name": "woman getting massage" + }, + { + "code": [ + "1F487" + ], + "emoji": "💇", + "name": "person getting haircut" + }, + { + "code": [ + "1F487", + "200D", + "2642", + "FE0F" + ], + "emoji": "💇‍♂️", + "name": "man getting haircut" + }, + { + "code": [ + "1F487", + "200D", + "2640", + "FE0F" + ], + "emoji": "💇‍♀️", + "name": "woman getting haircut" + }, + { + "code": [ + "1F6B6" + ], + "emoji": "🚶", + "name": "person walking" + }, + { + "code": [ + "1F6B6", + "200D", + "2642", + "FE0F" + ], + "emoji": "🚶‍♂️", + "name": "man walking" + }, + { + "code": [ + "1F6B6", + "200D", + "2640", + "FE0F" + ], + "emoji": "🚶‍♀️", + "name": "woman walking" + }, + { + "code": [ + "1F6B6", + "200D", + "27A1", + "FE0F" + ], + "emoji": "🚶‍➡️", + "name": "person walking facing right" + }, + { + "code": [ + "1F6B6", + "200D", + "2640", + "FE0F", + "200D", + "27A1", + "FE0F" + ], + "emoji": "🚶‍♀️‍➡️", + "name": "woman walking facing right" + }, + { + "code": [ + "1F6B6", + "200D", + "2642", + "FE0F", + "200D", + "27A1", + "FE0F" + ], + "emoji": "🚶‍♂️‍➡️", + "name": "man walking facing right" + }, + { + "code": [ + "1F9CD" + ], + "emoji": "🧍", + "name": "person standing" + }, + { + "code": [ + "1F9CD", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧍‍♂️", + "name": "man standing" + }, + { + "code": [ + "1F9CD", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧍‍♀️", + "name": "woman standing" + }, + { + "code": [ + "1F9CE" + ], + "emoji": "🧎", + "name": "person kneeling" + }, + { + "code": [ + "1F9CE", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧎‍♂️", + "name": "man kneeling" + }, + { + "code": [ + "1F9CE", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧎‍♀️", + "name": "woman kneeling" + }, + { + "code": [ + "1F9CE", + "200D", + "27A1", + "FE0F" + ], + "emoji": "🧎‍➡️", + "name": "person kneeling facing right" + }, + { + "code": [ + "1F9CE", + "200D", + "2640", + "FE0F", + "200D", + "27A1", + "FE0F" + ], + "emoji": "🧎‍♀️‍➡️", + "name": "woman kneeling facing right" + }, + { + "code": [ + "1F9CE", + "200D", + "2642", + "FE0F", + "200D", + "27A1", + "FE0F" + ], + "emoji": "🧎‍♂️‍➡️", + "name": "man kneeling facing right" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9AF" + ], + "emoji": "🧑‍🦯", + "name": "person with white cane" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9AF", + "200D", + "27A1", + "FE0F" + ], + "emoji": "🧑‍🦯‍➡️", + "name": "person with white cane facing right" + }, + { + "code": [ + "1F468", + "200D", + "1F9AF" + ], + "emoji": "👨‍🦯", + "name": "man with white cane" + }, + { + "code": [ + "1F468", + "200D", + "1F9AF", + "200D", + "27A1", + "FE0F" + ], + "emoji": "👨‍🦯‍➡️", + "name": "man with white cane facing right" + }, + { + "code": [ + "1F469", + "200D", + "1F9AF" + ], + "emoji": "👩‍🦯", + "name": "woman with white cane" + }, + { + "code": [ + "1F469", + "200D", + "1F9AF", + "200D", + "27A1", + "FE0F" + ], + "emoji": "👩‍🦯‍➡️", + "name": "woman with white cane facing right" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9BC" + ], + "emoji": "🧑‍🦼", + "name": "person in motorized wheelchair" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9BC", + "200D", + "27A1", + "FE0F" + ], + "emoji": "🧑‍🦼‍➡️", + "name": "person in motorized wheelchair facing right" + }, + { + "code": [ + "1F468", + "200D", + "1F9BC" + ], + "emoji": "👨‍🦼", + "name": "man in motorized wheelchair" + }, + { + "code": [ + "1F468", + "200D", + "1F9BC", + "200D", + "27A1", + "FE0F" + ], + "emoji": "👨‍🦼‍➡️", + "name": "man in motorized wheelchair facing right" + }, + { + "code": [ + "1F469", + "200D", + "1F9BC" + ], + "emoji": "👩‍🦼", + "name": "woman in motorized wheelchair" + }, + { + "code": [ + "1F469", + "200D", + "1F9BC", + "200D", + "27A1", + "FE0F" + ], + "emoji": "👩‍🦼‍➡️", + "name": "woman in motorized wheelchair facing right" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9BD" + ], + "emoji": "🧑‍🦽", + "name": "person in manual wheelchair" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9BD", + "200D", + "27A1", + "FE0F" + ], + "emoji": "🧑‍🦽‍➡️", + "name": "person in manual wheelchair facing right" + }, + { + "code": [ + "1F468", + "200D", + "1F9BD" + ], + "emoji": "👨‍🦽", + "name": "man in manual wheelchair" + }, + { + "code": [ + "1F468", + "200D", + "1F9BD", + "200D", + "27A1", + "FE0F" + ], + "emoji": "👨‍🦽‍➡️", + "name": "man in manual wheelchair facing right" + }, + { + "code": [ + "1F469", + "200D", + "1F9BD" + ], + "emoji": "👩‍🦽", + "name": "woman in manual wheelchair" + }, + { + "code": [ + "1F469", + "200D", + "1F9BD", + "200D", + "27A1", + "FE0F" + ], + "emoji": "👩‍🦽‍➡️", + "name": "woman in manual wheelchair facing right" + }, + { + "code": [ + "1F3C3" + ], + "emoji": "🏃", + "name": "person running" + }, + { + "code": [ + "1F3C3", + "200D", + "2642", + "FE0F" + ], + "emoji": "🏃‍♂️", + "name": "man running" + }, + { + "code": [ + "1F3C3", + "200D", + "2640", + "FE0F" + ], + "emoji": "🏃‍♀️", + "name": "woman running" + }, + { + "code": [ + "1F3C3", + "200D", + "27A1", + "FE0F" + ], + "emoji": "🏃‍➡️", + "name": "person running facing right" + }, + { + "code": [ + "1F3C3", + "200D", + "2640", + "FE0F", + "200D", + "27A1", + "FE0F" + ], + "emoji": "🏃‍♀️‍➡️", + "name": "woman running facing right" + }, + { + "code": [ + "1F3C3", + "200D", + "2642", + "FE0F", + "200D", + "27A1", + "FE0F" + ], + "emoji": "🏃‍♂️‍➡️", + "name": "man running facing right" + }, + { + "code": [ + "1F483" + ], + "emoji": "💃", + "name": "woman dancing" + }, + { + "code": [ + "1F57A" + ], + "emoji": "🕺", + "name": "man dancing" + }, + { + "code": [ + "1F574" + ], + "emoji": "🕴", + "name": "person in suit levitating" + }, + { + "code": [ + "1F46F" + ], + "emoji": "👯", + "name": "people with bunny ears" + }, + { + "code": [ + "1F46F", + "200D", + "2642", + "FE0F" + ], + "emoji": "👯‍♂️", + "name": "men with bunny ears" + }, + { + "code": [ + "1F46F", + "200D", + "2640", + "FE0F" + ], + "emoji": "👯‍♀️", + "name": "women with bunny ears" + }, + { + "code": [ + "1F9D6" + ], + "emoji": "🧖", + "name": "person in steamy room" + }, + { + "code": [ + "1F9D6", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧖‍♂️", + "name": "man in steamy room" + }, + { + "code": [ + "1F9D6", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧖‍♀️", + "name": "woman in steamy room" + }, + { + "code": [ + "1F9D7" + ], + "emoji": "🧗", + "name": "person climbing" + }, + { + "code": [ + "1F9D7", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧗‍♂️", + "name": "man climbing" + }, + { + "code": [ + "1F9D7", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧗‍♀️", + "name": "woman climbing" + } + ], + "person-sport": [ + { + "code": [ + "1F93A" + ], + "emoji": "🤺", + "name": "person fencing" + }, + { + "code": [ + "1F3C7" + ], + "emoji": "🏇", + "name": "horse racing" + }, + { + "code": [ + "26F7" + ], + "emoji": "⛷", + "name": "skier" + }, + { + "code": [ + "1F3C2" + ], + "emoji": "🏂", + "name": "snowboarder" + }, + { + "code": [ + "1F3CC" + ], + "emoji": "🏌", + "name": "person golfing" + }, + { + "code": [ + "1F3CC", + "FE0F", + "200D", + "2642", + "FE0F" + ], + "emoji": "🏌️‍♂️", + "name": "man golfing" + }, + { + "code": [ + "1F3CC", + "FE0F", + "200D", + "2640", + "FE0F" + ], + "emoji": "🏌️‍♀️", + "name": "woman golfing" + }, + { + "code": [ + "1F3C4" + ], + "emoji": "🏄", + "name": "person surfing" + }, + { + "code": [ + "1F3C4", + "200D", + "2642", + "FE0F" + ], + "emoji": "🏄‍♂️", + "name": "man surfing" + }, + { + "code": [ + "1F3C4", + "200D", + "2640", + "FE0F" + ], + "emoji": "🏄‍♀️", + "name": "woman surfing" + }, + { + "code": [ + "1F6A3" + ], + "emoji": "🚣", + "name": "person rowing boat" + }, + { + "code": [ + "1F6A3", + "200D", + "2642", + "FE0F" + ], + "emoji": "🚣‍♂️", + "name": "man rowing boat" + }, + { + "code": [ + "1F6A3", + "200D", + "2640", + "FE0F" + ], + "emoji": "🚣‍♀️", + "name": "woman rowing boat" + }, + { + "code": [ + "1F3CA" + ], + "emoji": "🏊", + "name": "person swimming" + }, + { + "code": [ + "1F3CA", + "200D", + "2642", + "FE0F" + ], + "emoji": "🏊‍♂️", + "name": "man swimming" + }, + { + "code": [ + "1F3CA", + "200D", + "2640", + "FE0F" + ], + "emoji": "🏊‍♀️", + "name": "woman swimming" + }, + { + "code": [ + "26F9" + ], + "emoji": "⛹", + "name": "person bouncing ball" + }, + { + "code": [ + "26F9", + "FE0F", + "200D", + "2642", + "FE0F" + ], + "emoji": "⛹️‍♂️", + "name": "man bouncing ball" + }, + { + "code": [ + "26F9", + "FE0F", + "200D", + "2640", + "FE0F" + ], + "emoji": "⛹️‍♀️", + "name": "woman bouncing ball" + }, + { + "code": [ + "1F3CB" + ], + "emoji": "🏋", + "name": "person lifting weights" + }, + { + "code": [ + "1F3CB", + "FE0F", + "200D", + "2642", + "FE0F" + ], + "emoji": "🏋️‍♂️", + "name": "man lifting weights" + }, + { + "code": [ + "1F3CB", + "FE0F", + "200D", + "2640", + "FE0F" + ], + "emoji": "🏋️‍♀️", + "name": "woman lifting weights" + }, + { + "code": [ + "1F6B4" + ], + "emoji": "🚴", + "name": "person biking" + }, + { + "code": [ + "1F6B4", + "200D", + "2642", + "FE0F" + ], + "emoji": "🚴‍♂️", + "name": "man biking" + }, + { + "code": [ + "1F6B4", + "200D", + "2640", + "FE0F" + ], + "emoji": "🚴‍♀️", + "name": "woman biking" + }, + { + "code": [ + "1F6B5" + ], + "emoji": "🚵", + "name": "person mountain biking" + }, + { + "code": [ + "1F6B5", + "200D", + "2642", + "FE0F" + ], + "emoji": "🚵‍♂️", + "name": "man mountain biking" + }, + { + "code": [ + "1F6B5", + "200D", + "2640", + "FE0F" + ], + "emoji": "🚵‍♀️", + "name": "woman mountain biking" + }, + { + "code": [ + "1F938" + ], + "emoji": "🤸", + "name": "person cartwheeling" + }, + { + "code": [ + "1F938", + "200D", + "2642", + "FE0F" + ], + "emoji": "🤸‍♂️", + "name": "man cartwheeling" + }, + { + "code": [ + "1F938", + "200D", + "2640", + "FE0F" + ], + "emoji": "🤸‍♀️", + "name": "woman cartwheeling" + }, + { + "code": [ + "1F93C" + ], + "emoji": "🤼", + "name": "people wrestling" + }, + { + "code": [ + "1F93C", + "200D", + "2642", + "FE0F" + ], + "emoji": "🤼‍♂️", + "name": "men wrestling" + }, + { + "code": [ + "1F93C", + "200D", + "2640", + "FE0F" + ], + "emoji": "🤼‍♀️", + "name": "women wrestling" + }, + { + "code": [ + "1F93D" + ], + "emoji": "🤽", + "name": "person playing water polo" + }, + { + "code": [ + "1F93D", + "200D", + "2642", + "FE0F" + ], + "emoji": "🤽‍♂️", + "name": "man playing water polo" + }, + { + "code": [ + "1F93D", + "200D", + "2640", + "FE0F" + ], + "emoji": "🤽‍♀️", + "name": "woman playing water polo" + }, + { + "code": [ + "1F93E" + ], + "emoji": "🤾", + "name": "person playing handball" + }, + { + "code": [ + "1F93E", + "200D", + "2642", + "FE0F" + ], + "emoji": "🤾‍♂️", + "name": "man playing handball" + }, + { + "code": [ + "1F93E", + "200D", + "2640", + "FE0F" + ], + "emoji": "🤾‍♀️", + "name": "woman playing handball" + }, + { + "code": [ + "1F939" + ], + "emoji": "🤹", + "name": "person juggling" + }, + { + "code": [ + "1F939", + "200D", + "2642", + "FE0F" + ], + "emoji": "🤹‍♂️", + "name": "man juggling" + }, + { + "code": [ + "1F939", + "200D", + "2640", + "FE0F" + ], + "emoji": "🤹‍♀️", + "name": "woman juggling" + } + ], + "person-resting": [ + { + "code": [ + "1F9D8" + ], + "emoji": "🧘", + "name": "person in lotus position" + }, + { + "code": [ + "1F9D8", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧘‍♂️", + "name": "man in lotus position" + }, + { + "code": [ + "1F9D8", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧘‍♀️", + "name": "woman in lotus position" + }, + { + "code": [ + "1F6C0" + ], + "emoji": "🛀", + "name": "person taking bath" + }, + { + "code": [ + "1F6CC" + ], + "emoji": "🛌", + "name": "person in bed" + } + ], + "family": [ + { + "code": [ + "1F9D1", + "200D", + "1F91D", + "200D", + "1F9D1" + ], + "emoji": "🧑‍🤝‍🧑", + "name": "people holding hands" + }, + { + "code": [ + "1F46D" + ], + "emoji": "👭", + "name": "women holding hands" + }, + { + "code": [ + "1F46B" + ], + "emoji": "👫", + "name": "woman and man holding hands" + }, + { + "code": [ + "1F46C" + ], + "emoji": "👬", + "name": "men holding hands" + }, + { + "code": [ + "1F48F" + ], + "emoji": "💏", + "name": "kiss" + }, + { + "code": [ + "1F469", + "200D", + "2764", + "FE0F", + "200D", + "1F48B", + "200D", + "1F468" + ], + "emoji": "👩‍❤️‍💋‍👨", + "name": "kiss: woman, man" + }, + { + "code": [ + "1F468", + "200D", + "2764", + "FE0F", + "200D", + "1F48B", + "200D", + "1F468" + ], + "emoji": "👨‍❤️‍💋‍👨", + "name": "kiss: man, man" + }, + { + "code": [ + "1F469", + "200D", + "2764", + "FE0F", + "200D", + "1F48B", + "200D", + "1F469" + ], + "emoji": "👩‍❤️‍💋‍👩", + "name": "kiss: woman, woman" + }, + { + "code": [ + "1F491" + ], + "emoji": "💑", + "name": "couple with heart" + }, + { + "code": [ + "1F469", + "200D", + "2764", + "FE0F", + "200D", + "1F468" + ], + "emoji": "👩‍❤️‍👨", + "name": "couple with heart: woman, man" + }, + { + "code": [ + "1F468", + "200D", + "2764", + "FE0F", + "200D", + "1F468" + ], + "emoji": "👨‍❤️‍👨", + "name": "couple with heart: man, man" + }, + { + "code": [ + "1F469", + "200D", + "2764", + "FE0F", + "200D", + "1F469" + ], + "emoji": "👩‍❤️‍👩", + "name": "couple with heart: woman, woman" + }, + { + "code": [ + "1F468", + "200D", + "1F469", + "200D", + "1F466" + ], + "emoji": "👨‍👩‍👦", + "name": "family: man, woman, boy" + }, + { + "code": [ + "1F468", + "200D", + "1F469", + "200D", + "1F467" + ], + "emoji": "👨‍👩‍👧", + "name": "family: man, woman, girl" + }, + { + "code": [ + "1F468", + "200D", + "1F469", + "200D", + "1F467", + "200D", + "1F466" + ], + "emoji": "👨‍👩‍👧‍👦", + "name": "family: man, woman, girl, boy" + }, + { + "code": [ + "1F468", + "200D", + "1F469", + "200D", + "1F466", + "200D", + "1F466" + ], + "emoji": "👨‍👩‍👦‍👦", + "name": "family: man, woman, boy, boy" + }, + { + "code": [ + "1F468", + "200D", + "1F469", + "200D", + "1F467", + "200D", + "1F467" + ], + "emoji": "👨‍👩‍👧‍👧", + "name": "family: man, woman, girl, girl" + }, + { + "code": [ + "1F468", + "200D", + "1F468", + "200D", + "1F466" + ], + "emoji": "👨‍👨‍👦", + "name": "family: man, man, boy" + }, + { + "code": [ + "1F468", + "200D", + "1F468", + "200D", + "1F467" + ], + "emoji": "👨‍👨‍👧", + "name": "family: man, man, girl" + }, + { + "code": [ + "1F468", + "200D", + "1F468", + "200D", + "1F467", + "200D", + "1F466" + ], + "emoji": "👨‍👨‍👧‍👦", + "name": "family: man, man, girl, boy" + }, + { + "code": [ + "1F468", + "200D", + "1F468", + "200D", + "1F466", + "200D", + "1F466" + ], + "emoji": "👨‍👨‍👦‍👦", + "name": "family: man, man, boy, boy" + }, + { + "code": [ + "1F468", + "200D", + "1F468", + "200D", + "1F467", + "200D", + "1F467" + ], + "emoji": "👨‍👨‍👧‍👧", + "name": "family: man, man, girl, girl" + }, + { + "code": [ + "1F469", + "200D", + "1F469", + "200D", + "1F466" + ], + "emoji": "👩‍👩‍👦", + "name": "family: woman, woman, boy" + }, + { + "code": [ + "1F469", + "200D", + "1F469", + "200D", + "1F467" + ], + "emoji": "👩‍👩‍👧", + "name": "family: woman, woman, girl" + }, + { + "code": [ + "1F469", + "200D", + "1F469", + "200D", + "1F467", + "200D", + "1F466" + ], + "emoji": "👩‍👩‍👧‍👦", + "name": "family: woman, woman, girl, boy" + }, + { + "code": [ + "1F469", + "200D", + "1F469", + "200D", + "1F466", + "200D", + "1F466" + ], + "emoji": "👩‍👩‍👦‍👦", + "name": "family: woman, woman, boy, boy" + }, + { + "code": [ + "1F469", + "200D", + "1F469", + "200D", + "1F467", + "200D", + "1F467" + ], + "emoji": "👩‍👩‍👧‍👧", + "name": "family: woman, woman, girl, girl" + }, + { + "code": [ + "1F468", + "200D", + "1F466" + ], + "emoji": "👨‍👦", + "name": "family: man, boy" + }, + { + "code": [ + "1F468", + "200D", + "1F466", + "200D", + "1F466" + ], + "emoji": "👨‍👦‍👦", + "name": "family: man, boy, boy" + }, + { + "code": [ + "1F468", + "200D", + "1F467" + ], + "emoji": "👨‍👧", + "name": "family: man, girl" + }, + { + "code": [ + "1F468", + "200D", + "1F467", + "200D", + "1F466" + ], + "emoji": "👨‍👧‍👦", + "name": "family: man, girl, boy" + }, + { + "code": [ + "1F468", + "200D", + "1F467", + "200D", + "1F467" + ], + "emoji": "👨‍👧‍👧", + "name": "family: man, girl, girl" + }, + { + "code": [ + "1F469", + "200D", + "1F466" + ], + "emoji": "👩‍👦", + "name": "family: woman, boy" + }, + { + "code": [ + "1F469", + "200D", + "1F466", + "200D", + "1F466" + ], + "emoji": "👩‍👦‍👦", + "name": "family: woman, boy, boy" + }, + { + "code": [ + "1F469", + "200D", + "1F467" + ], + "emoji": "👩‍👧", + "name": "family: woman, girl" + }, + { + "code": [ + "1F469", + "200D", + "1F467", + "200D", + "1F466" + ], + "emoji": "👩‍👧‍👦", + "name": "family: woman, girl, boy" + }, + { + "code": [ + "1F469", + "200D", + "1F467", + "200D", + "1F467" + ], + "emoji": "👩‍👧‍👧", + "name": "family: woman, girl, girl" + } + ], + "person-symbol": [ + { + "code": [ + "1F5E3" + ], + "emoji": "🗣", + "name": "speaking head" + }, + { + "code": [ + "1F464" + ], + "emoji": "👤", + "name": "bust in silhouette" + }, + { + "code": [ + "1F465" + ], + "emoji": "👥", + "name": "busts in silhouette" + }, + { + "code": [ + "1FAC2" + ], + "emoji": "🫂", + "name": "people hugging" + }, + { + "code": [ + "1F46A" + ], + "emoji": "👪", + "name": "family" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9D1", + "200D", + "1F9D2" + ], + "emoji": "🧑‍🧑‍🧒", + "name": "family: adult, adult, child" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9D1", + "200D", + "1F9D2", + "200D", + "1F9D2" + ], + "emoji": "🧑‍🧑‍🧒‍🧒", + "name": "family: adult, adult, child, child" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9D2" + ], + "emoji": "🧑‍🧒", + "name": "family: adult, child" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9D2", + "200D", + "1F9D2" + ], + "emoji": "🧑‍🧒‍🧒", + "name": "family: adult, child, child" + }, + { + "code": [ + "1F463" + ], + "emoji": "👣", + "name": "footprints" + }, + { + "code": [ + "1FAC6" + ], + "emoji": "🫆", + "name": "fingerprint" + } + ] + }, + "Component": { + "hair-style": [ + { + "code": [ + "1F9B0" + ], + "emoji": "🦰", + "name": "red hair" + }, + { + "code": [ + "1F9B1" + ], + "emoji": "🦱", + "name": "curly hair" + }, + { + "code": [ + "1F9B3" + ], + "emoji": "🦳", + "name": "white hair" + }, + { + "code": [ + "1F9B2" + ], + "emoji": "🦲", + "name": "bald" + } + ] + }, + "Animals & Nature": { + "animal-mammal": [ + { + "code": [ + "1F435" + ], + "emoji": "🐵", + "name": "monkey face" + }, + { + "code": [ + "1F412" + ], + "emoji": "🐒", + "name": "monkey" + }, + { + "code": [ + "1F98D" + ], + "emoji": "🦍", + "name": "gorilla" + }, + { + "code": [ + "1F9A7" + ], + "emoji": "🦧", + "name": "orangutan" + }, + { + "code": [ + "1F436" + ], + "emoji": "🐶", + "name": "dog face" + }, + { + "code": [ + "1F415" + ], + "emoji": "🐕", + "name": "dog" + }, + { + "code": [ + "1F9AE" + ], + "emoji": "🦮", + "name": "guide dog" + }, + { + "code": [ + "1F415", + "200D", + "1F9BA" + ], + "emoji": "🐕‍🦺", + "name": "service dog" + }, + { + "code": [ + "1F429" + ], + "emoji": "🐩", + "name": "poodle" + }, + { + "code": [ + "1F43A" + ], + "emoji": "🐺", + "name": "wolf" + }, + { + "code": [ + "1F98A" + ], + "emoji": "🦊", + "name": "fox" + }, + { + "code": [ + "1F99D" + ], + "emoji": "🦝", + "name": "raccoon" + }, + { + "code": [ + "1F431" + ], + "emoji": "🐱", + "name": "cat face" + }, + { + "code": [ + "1F408" + ], + "emoji": "🐈", + "name": "cat" + }, + { + "code": [ + "1F408", + "200D", + "2B1B" + ], + "emoji": "🐈‍⬛", + "name": "black cat" + }, + { + "code": [ + "1F981" + ], + "emoji": "🦁", + "name": "lion" + }, + { + "code": [ + "1F42F" + ], + "emoji": "🐯", + "name": "tiger face" + }, + { + "code": [ + "1F405" + ], + "emoji": "🐅", + "name": "tiger" + }, + { + "code": [ + "1F406" + ], + "emoji": "🐆", + "name": "leopard" + }, + { + "code": [ + "1F434" + ], + "emoji": "🐴", + "name": "horse face" + }, + { + "code": [ + "1FACE" + ], + "emoji": "🫎", + "name": "moose" + }, + { + "code": [ + "1FACF" + ], + "emoji": "🫏", + "name": "donkey" + }, + { + "code": [ + "1F40E" + ], + "emoji": "🐎", + "name": "horse" + }, + { + "code": [ + "1F984" + ], + "emoji": "🦄", + "name": "unicorn" + }, + { + "code": [ + "1F993" + ], + "emoji": "🦓", + "name": "zebra" + }, + { + "code": [ + "1F98C" + ], + "emoji": "🦌", + "name": "deer" + }, + { + "code": [ + "1F9AC" + ], + "emoji": "🦬", + "name": "bison" + }, + { + "code": [ + "1F42E" + ], + "emoji": "🐮", + "name": "cow face" + }, + { + "code": [ + "1F402" + ], + "emoji": "🐂", + "name": "ox" + }, + { + "code": [ + "1F403" + ], + "emoji": "🐃", + "name": "water buffalo" + }, + { + "code": [ + "1F404" + ], + "emoji": "🐄", + "name": "cow" + }, + { + "code": [ + "1F437" + ], + "emoji": "🐷", + "name": "pig face" + }, + { + "code": [ + "1F416" + ], + "emoji": "🐖", + "name": "pig" + }, + { + "code": [ + "1F417" + ], + "emoji": "🐗", + "name": "boar" + }, + { + "code": [ + "1F43D" + ], + "emoji": "🐽", + "name": "pig nose" + }, + { + "code": [ + "1F40F" + ], + "emoji": "🐏", + "name": "ram" + }, + { + "code": [ + "1F411" + ], + "emoji": "🐑", + "name": "ewe" + }, + { + "code": [ + "1F410" + ], + "emoji": "🐐", + "name": "goat" + }, + { + "code": [ + "1F42A" + ], + "emoji": "🐪", + "name": "camel" + }, + { + "code": [ + "1F42B" + ], + "emoji": "🐫", + "name": "two-hump camel" + }, + { + "code": [ + "1F999" + ], + "emoji": "🦙", + "name": "llama" + }, + { + "code": [ + "1F992" + ], + "emoji": "🦒", + "name": "giraffe" + }, + { + "code": [ + "1F418" + ], + "emoji": "🐘", + "name": "elephant" + }, + { + "code": [ + "1F9A3" + ], + "emoji": "🦣", + "name": "mammoth" + }, + { + "code": [ + "1F98F" + ], + "emoji": "🦏", + "name": "rhinoceros" + }, + { + "code": [ + "1F99B" + ], + "emoji": "🦛", + "name": "hippopotamus" + }, + { + "code": [ + "1F42D" + ], + "emoji": "🐭", + "name": "mouse face" + }, + { + "code": [ + "1F401" + ], + "emoji": "🐁", + "name": "mouse" + }, + { + "code": [ + "1F400" + ], + "emoji": "🐀", + "name": "rat" + }, + { + "code": [ + "1F439" + ], + "emoji": "🐹", + "name": "hamster" + }, + { + "code": [ + "1F430" + ], + "emoji": "🐰", + "name": "rabbit face" + }, + { + "code": [ + "1F407" + ], + "emoji": "🐇", + "name": "rabbit" + }, + { + "code": [ + "1F43F" + ], + "emoji": "🐿", + "name": "chipmunk" + }, + { + "code": [ + "1F9AB" + ], + "emoji": "🦫", + "name": "beaver" + }, + { + "code": [ + "1F994" + ], + "emoji": "🦔", + "name": "hedgehog" + }, + { + "code": [ + "1F987" + ], + "emoji": "🦇", + "name": "bat" + }, + { + "code": [ + "1F43B" + ], + "emoji": "🐻", + "name": "bear" + }, + { + "code": [ + "1F43B", + "200D", + "2744", + "FE0F" + ], + "emoji": "🐻‍❄️", + "name": "polar bear" + }, + { + "code": [ + "1F428" + ], + "emoji": "🐨", + "name": "koala" + }, + { + "code": [ + "1F43C" + ], + "emoji": "🐼", + "name": "panda" + }, + { + "code": [ + "1F9A5" + ], + "emoji": "🦥", + "name": "sloth" + }, + { + "code": [ + "1F9A6" + ], + "emoji": "🦦", + "name": "otter" + }, + { + "code": [ + "1F9A8" + ], + "emoji": "🦨", + "name": "skunk" + }, + { + "code": [ + "1F998" + ], + "emoji": "🦘", + "name": "kangaroo" + }, + { + "code": [ + "1F9A1" + ], + "emoji": "🦡", + "name": "badger" + }, + { + "code": [ + "1F43E" + ], + "emoji": "🐾", + "name": "paw prints" + } + ], + "animal-bird": [ + { + "code": [ + "1F983" + ], + "emoji": "🦃", + "name": "turkey" + }, + { + "code": [ + "1F414" + ], + "emoji": "🐔", + "name": "chicken" + }, + { + "code": [ + "1F413" + ], + "emoji": "🐓", + "name": "rooster" + }, + { + "code": [ + "1F423" + ], + "emoji": "🐣", + "name": "hatching chick" + }, + { + "code": [ + "1F424" + ], + "emoji": "🐤", + "name": "baby chick" + }, + { + "code": [ + "1F425" + ], + "emoji": "🐥", + "name": "front-facing baby chick" + }, + { + "code": [ + "1F426" + ], + "emoji": "🐦", + "name": "bird" + }, + { + "code": [ + "1F427" + ], + "emoji": "🐧", + "name": "penguin" + }, + { + "code": [ + "1F54A" + ], + "emoji": "🕊", + "name": "dove" + }, + { + "code": [ + "1F985" + ], + "emoji": "🦅", + "name": "eagle" + }, + { + "code": [ + "1F986" + ], + "emoji": "🦆", + "name": "duck" + }, + { + "code": [ + "1F9A2" + ], + "emoji": "🦢", + "name": "swan" + }, + { + "code": [ + "1F989" + ], + "emoji": "🦉", + "name": "owl" + }, + { + "code": [ + "1F9A4" + ], + "emoji": "🦤", + "name": "dodo" + }, + { + "code": [ + "1FAB6" + ], + "emoji": "🪶", + "name": "feather" + }, + { + "code": [ + "1F9A9" + ], + "emoji": "🦩", + "name": "flamingo" + }, + { + "code": [ + "1F99A" + ], + "emoji": "🦚", + "name": "peacock" + }, + { + "code": [ + "1F99C" + ], + "emoji": "🦜", + "name": "parrot" + }, + { + "code": [ + "1FABD" + ], + "emoji": "🪽", + "name": "wing" + }, + { + "code": [ + "1F426", + "200D", + "2B1B" + ], + "emoji": "🐦‍⬛", + "name": "black bird" + }, + { + "code": [ + "1FABF" + ], + "emoji": "🪿", + "name": "goose" + }, + { + "code": [ + "1F426", + "200D", + "1F525" + ], + "emoji": "🐦‍🔥", + "name": "phoenix" + } + ], + "animal-amphibian": [ + { + "code": [ + "1F438" + ], + "emoji": "🐸", + "name": "frog" + } + ], + "animal-reptile": [ + { + "code": [ + "1F40A" + ], + "emoji": "🐊", + "name": "crocodile" + }, + { + "code": [ + "1F422" + ], + "emoji": "🐢", + "name": "turtle" + }, + { + "code": [ + "1F98E" + ], + "emoji": "🦎", + "name": "lizard" + }, + { + "code": [ + "1F40D" + ], + "emoji": "🐍", + "name": "snake" + }, + { + "code": [ + "1F432" + ], + "emoji": "🐲", + "name": "dragon face" + }, + { + "code": [ + "1F409" + ], + "emoji": "🐉", + "name": "dragon" + }, + { + "code": [ + "1F995" + ], + "emoji": "🦕", + "name": "sauropod" + }, + { + "code": [ + "1F996" + ], + "emoji": "🦖", + "name": "T-Rex" + } + ], + "animal-marine": [ + { + "code": [ + "1F433" + ], + "emoji": "🐳", + "name": "spouting whale" + }, + { + "code": [ + "1F40B" + ], + "emoji": "🐋", + "name": "whale" + }, + { + "code": [ + "1F42C" + ], + "emoji": "🐬", + "name": "dolphin" + }, + { + "code": [ + "1F9AD" + ], + "emoji": "🦭", + "name": "seal" + }, + { + "code": [ + "1F41F" + ], + "emoji": "🐟", + "name": "fish" + }, + { + "code": [ + "1F420" + ], + "emoji": "🐠", + "name": "tropical fish" + }, + { + "code": [ + "1F421" + ], + "emoji": "🐡", + "name": "blowfish" + }, + { + "code": [ + "1F988" + ], + "emoji": "🦈", + "name": "shark" + }, + { + "code": [ + "1F419" + ], + "emoji": "🐙", + "name": "octopus" + }, + { + "code": [ + "1F41A" + ], + "emoji": "🐚", + "name": "spiral shell" + }, + { + "code": [ + "1FAB8" + ], + "emoji": "🪸", + "name": "coral" + }, + { + "code": [ + "1FABC" + ], + "emoji": "🪼", + "name": "jellyfish" + }, + { + "code": [ + "1F980" + ], + "emoji": "🦀", + "name": "crab" + }, + { + "code": [ + "1F99E" + ], + "emoji": "🦞", + "name": "lobster" + }, + { + "code": [ + "1F990" + ], + "emoji": "🦐", + "name": "shrimp" + }, + { + "code": [ + "1F991" + ], + "emoji": "🦑", + "name": "squid" + }, + { + "code": [ + "1F9AA" + ], + "emoji": "🦪", + "name": "oyster" + } + ], + "animal-bug": [ + { + "code": [ + "1F40C" + ], + "emoji": "🐌", + "name": "snail" + }, + { + "code": [ + "1F98B" + ], + "emoji": "🦋", + "name": "butterfly" + }, + { + "code": [ + "1F41B" + ], + "emoji": "🐛", + "name": "bug" + }, + { + "code": [ + "1F41C" + ], + "emoji": "🐜", + "name": "ant" + }, + { + "code": [ + "1F41D" + ], + "emoji": "🐝", + "name": "honeybee" + }, + { + "code": [ + "1FAB2" + ], + "emoji": "🪲", + "name": "beetle" + }, + { + "code": [ + "1F41E" + ], + "emoji": "🐞", + "name": "lady beetle" + }, + { + "code": [ + "1F997" + ], + "emoji": "🦗", + "name": "cricket" + }, + { + "code": [ + "1FAB3" + ], + "emoji": "🪳", + "name": "cockroach" + }, + { + "code": [ + "1F577" + ], + "emoji": "🕷", + "name": "spider" + }, + { + "code": [ + "1F578" + ], + "emoji": "🕸", + "name": "spider web" + }, + { + "code": [ + "1F982" + ], + "emoji": "🦂", + "name": "scorpion" + }, + { + "code": [ + "1F99F" + ], + "emoji": "🦟", + "name": "mosquito" + }, + { + "code": [ + "1FAB0" + ], + "emoji": "🪰", + "name": "fly" + }, + { + "code": [ + "1FAB1" + ], + "emoji": "🪱", + "name": "worm" + }, + { + "code": [ + "1F9A0" + ], + "emoji": "🦠", + "name": "microbe" + } + ], + "plant-flower": [ + { + "code": [ + "1F490" + ], + "emoji": "💐", + "name": "bouquet" + }, + { + "code": [ + "1F338" + ], + "emoji": "🌸", + "name": "cherry blossom" + }, + { + "code": [ + "1F4AE" + ], + "emoji": "💮", + "name": "white flower" + }, + { + "code": [ + "1FAB7" + ], + "emoji": "🪷", + "name": "lotus" + }, + { + "code": [ + "1F3F5" + ], + "emoji": "🏵", + "name": "rosette" + }, + { + "code": [ + "1F339" + ], + "emoji": "🌹", + "name": "rose" + }, + { + "code": [ + "1F940" + ], + "emoji": "🥀", + "name": "wilted flower" + }, + { + "code": [ + "1F33A" + ], + "emoji": "🌺", + "name": "hibiscus" + }, + { + "code": [ + "1F33B" + ], + "emoji": "🌻", + "name": "sunflower" + }, + { + "code": [ + "1F33C" + ], + "emoji": "🌼", + "name": "blossom" + }, + { + "code": [ + "1F337" + ], + "emoji": "🌷", + "name": "tulip" + }, + { + "code": [ + "1FABB" + ], + "emoji": "🪻", + "name": "hyacinth" + } + ], + "plant-other": [ + { + "code": [ + "1F331" + ], + "emoji": "🌱", + "name": "seedling" + }, + { + "code": [ + "1FAB4" + ], + "emoji": "🪴", + "name": "potted plant" + }, + { + "code": [ + "1F332" + ], + "emoji": "🌲", + "name": "evergreen tree" + }, + { + "code": [ + "1F333" + ], + "emoji": "🌳", + "name": "deciduous tree" + }, + { + "code": [ + "1F334" + ], + "emoji": "🌴", + "name": "palm tree" + }, + { + "code": [ + "1F335" + ], + "emoji": "🌵", + "name": "cactus" + }, + { + "code": [ + "1F33E" + ], + "emoji": "🌾", + "name": "sheaf of rice" + }, + { + "code": [ + "1F33F" + ], + "emoji": "🌿", + "name": "herb" + }, + { + "code": [ + "2618" + ], + "emoji": "☘", + "name": "shamrock" + }, + { + "code": [ + "1F340" + ], + "emoji": "🍀", + "name": "four leaf clover" + }, + { + "code": [ + "1F341" + ], + "emoji": "🍁", + "name": "maple leaf" + }, + { + "code": [ + "1F342" + ], + "emoji": "🍂", + "name": "fallen leaf" + }, + { + "code": [ + "1F343" + ], + "emoji": "🍃", + "name": "leaf fluttering in wind" + }, + { + "code": [ + "1FAB9" + ], + "emoji": "🪹", + "name": "empty nest" + }, + { + "code": [ + "1FABA" + ], + "emoji": "🪺", + "name": "nest with eggs" + }, + { + "code": [ + "1F344" + ], + "emoji": "🍄", + "name": "mushroom" + }, + { + "code": [ + "1FABE" + ], + "emoji": "🪾", + "name": "leafless tree" + } + ] + }, + "Food & Drink": { + "food-fruit": [ + { + "code": [ + "1F347" + ], + "emoji": "🍇", + "name": "grapes" + }, + { + "code": [ + "1F348" + ], + "emoji": "🍈", + "name": "melon" + }, + { + "code": [ + "1F349" + ], + "emoji": "🍉", + "name": "watermelon" + }, + { + "code": [ + "1F34A" + ], + "emoji": "🍊", + "name": "tangerine" + }, + { + "code": [ + "1F34B" + ], + "emoji": "🍋", + "name": "lemon" + }, + { + "code": [ + "1F34B", + "200D", + "1F7E9" + ], + "emoji": "🍋‍🟩", + "name": "lime" + }, + { + "code": [ + "1F34C" + ], + "emoji": "🍌", + "name": "banana" + }, + { + "code": [ + "1F34D" + ], + "emoji": "🍍", + "name": "pineapple" + }, + { + "code": [ + "1F96D" + ], + "emoji": "🥭", + "name": "mango" + }, + { + "code": [ + "1F34E" + ], + "emoji": "🍎", + "name": "red apple" + }, + { + "code": [ + "1F34F" + ], + "emoji": "🍏", + "name": "green apple" + }, + { + "code": [ + "1F350" + ], + "emoji": "🍐", + "name": "pear" + }, + { + "code": [ + "1F351" + ], + "emoji": "🍑", + "name": "peach" + }, + { + "code": [ + "1F352" + ], + "emoji": "🍒", + "name": "cherries" + }, + { + "code": [ + "1F353" + ], + "emoji": "🍓", + "name": "strawberry" + }, + { + "code": [ + "1FAD0" + ], + "emoji": "🫐", + "name": "blueberries" + }, + { + "code": [ + "1F95D" + ], + "emoji": "🥝", + "name": "kiwi fruit" + }, + { + "code": [ + "1F345" + ], + "emoji": "🍅", + "name": "tomato" + }, + { + "code": [ + "1FAD2" + ], + "emoji": "🫒", + "name": "olive" + }, + { + "code": [ + "1F965" + ], + "emoji": "🥥", + "name": "coconut" + } + ], + "food-vegetable": [ + { + "code": [ + "1F951" + ], + "emoji": "🥑", + "name": "avocado" + }, + { + "code": [ + "1F346" + ], + "emoji": "🍆", + "name": "eggplant" + }, + { + "code": [ + "1F954" + ], + "emoji": "🥔", + "name": "potato" + }, + { + "code": [ + "1F955" + ], + "emoji": "🥕", + "name": "carrot" + }, + { + "code": [ + "1F33D" + ], + "emoji": "🌽", + "name": "ear of corn" + }, + { + "code": [ + "1F336" + ], + "emoji": "🌶", + "name": "hot pepper" + }, + { + "code": [ + "1FAD1" + ], + "emoji": "🫑", + "name": "bell pepper" + }, + { + "code": [ + "1F952" + ], + "emoji": "🥒", + "name": "cucumber" + }, + { + "code": [ + "1F96C" + ], + "emoji": "🥬", + "name": "leafy green" + }, + { + "code": [ + "1F966" + ], + "emoji": "🥦", + "name": "broccoli" + }, + { + "code": [ + "1F9C4" + ], + "emoji": "🧄", + "name": "garlic" + }, + { + "code": [ + "1F9C5" + ], + "emoji": "🧅", + "name": "onion" + }, + { + "code": [ + "1F95C" + ], + "emoji": "🥜", + "name": "peanuts" + }, + { + "code": [ + "1FAD8" + ], + "emoji": "🫘", + "name": "beans" + }, + { + "code": [ + "1F330" + ], + "emoji": "🌰", + "name": "chestnut" + }, + { + "code": [ + "1FADA" + ], + "emoji": "🫚", + "name": "ginger root" + }, + { + "code": [ + "1FADB" + ], + "emoji": "🫛", + "name": "pea pod" + }, + { + "code": [ + "1F344", + "200D", + "1F7EB" + ], + "emoji": "🍄‍🟫", + "name": "brown mushroom" + }, + { + "code": [ + "1FADC" + ], + "emoji": "🫜", + "name": "root vegetable" + } + ], + "food-prepared": [ + { + "code": [ + "1F35E" + ], + "emoji": "🍞", + "name": "bread" + }, + { + "code": [ + "1F950" + ], + "emoji": "🥐", + "name": "croissant" + }, + { + "code": [ + "1F956" + ], + "emoji": "🥖", + "name": "baguette bread" + }, + { + "code": [ + "1FAD3" + ], + "emoji": "🫓", + "name": "flatbread" + }, + { + "code": [ + "1F968" + ], + "emoji": "🥨", + "name": "pretzel" + }, + { + "code": [ + "1F96F" + ], + "emoji": "🥯", + "name": "bagel" + }, + { + "code": [ + "1F95E" + ], + "emoji": "🥞", + "name": "pancakes" + }, + { + "code": [ + "1F9C7" + ], + "emoji": "🧇", + "name": "waffle" + }, + { + "code": [ + "1F9C0" + ], + "emoji": "🧀", + "name": "cheese wedge" + }, + { + "code": [ + "1F356" + ], + "emoji": "🍖", + "name": "meat on bone" + }, + { + "code": [ + "1F357" + ], + "emoji": "🍗", + "name": "poultry leg" + }, + { + "code": [ + "1F969" + ], + "emoji": "🥩", + "name": "cut of meat" + }, + { + "code": [ + "1F953" + ], + "emoji": "🥓", + "name": "bacon" + }, + { + "code": [ + "1F354" + ], + "emoji": "🍔", + "name": "hamburger" + }, + { + "code": [ + "1F35F" + ], + "emoji": "🍟", + "name": "french fries" + }, + { + "code": [ + "1F355" + ], + "emoji": "🍕", + "name": "pizza" + }, + { + "code": [ + "1F32D" + ], + "emoji": "🌭", + "name": "hot dog" + }, + { + "code": [ + "1F96A" + ], + "emoji": "🥪", + "name": "sandwich" + }, + { + "code": [ + "1F32E" + ], + "emoji": "🌮", + "name": "taco" + }, + { + "code": [ + "1F32F" + ], + "emoji": "🌯", + "name": "burrito" + }, + { + "code": [ + "1FAD4" + ], + "emoji": "🫔", + "name": "tamale" + }, + { + "code": [ + "1F959" + ], + "emoji": "🥙", + "name": "stuffed flatbread" + }, + { + "code": [ + "1F9C6" + ], + "emoji": "🧆", + "name": "falafel" + }, + { + "code": [ + "1F95A" + ], + "emoji": "🥚", + "name": "egg" + }, + { + "code": [ + "1F373" + ], + "emoji": "🍳", + "name": "cooking" + }, + { + "code": [ + "1F958" + ], + "emoji": "🥘", + "name": "shallow pan of food" + }, + { + "code": [ + "1F372" + ], + "emoji": "🍲", + "name": "pot of food" + }, + { + "code": [ + "1FAD5" + ], + "emoji": "🫕", + "name": "fondue" + }, + { + "code": [ + "1F963" + ], + "emoji": "🥣", + "name": "bowl with spoon" + }, + { + "code": [ + "1F957" + ], + "emoji": "🥗", + "name": "green salad" + }, + { + "code": [ + "1F37F" + ], + "emoji": "🍿", + "name": "popcorn" + }, + { + "code": [ + "1F9C8" + ], + "emoji": "🧈", + "name": "butter" + }, + { + "code": [ + "1F9C2" + ], + "emoji": "🧂", + "name": "salt" + }, + { + "code": [ + "1F96B" + ], + "emoji": "🥫", + "name": "canned food" + } + ], + "food-asian": [ + { + "code": [ + "1F371" + ], + "emoji": "🍱", + "name": "bento box" + }, + { + "code": [ + "1F358" + ], + "emoji": "🍘", + "name": "rice cracker" + }, + { + "code": [ + "1F359" + ], + "emoji": "🍙", + "name": "rice ball" + }, + { + "code": [ + "1F35A" + ], + "emoji": "🍚", + "name": "cooked rice" + }, + { + "code": [ + "1F35B" + ], + "emoji": "🍛", + "name": "curry rice" + }, + { + "code": [ + "1F35C" + ], + "emoji": "🍜", + "name": "steaming bowl" + }, + { + "code": [ + "1F35D" + ], + "emoji": "🍝", + "name": "spaghetti" + }, + { + "code": [ + "1F360" + ], + "emoji": "🍠", + "name": "roasted sweet potato" + }, + { + "code": [ + "1F362" + ], + "emoji": "🍢", + "name": "oden" + }, + { + "code": [ + "1F363" + ], + "emoji": "🍣", + "name": "sushi" + }, + { + "code": [ + "1F364" + ], + "emoji": "🍤", + "name": "fried shrimp" + }, + { + "code": [ + "1F365" + ], + "emoji": "🍥", + "name": "fish cake with swirl" + }, + { + "code": [ + "1F96E" + ], + "emoji": "🥮", + "name": "moon cake" + }, + { + "code": [ + "1F361" + ], + "emoji": "🍡", + "name": "dango" + }, + { + "code": [ + "1F95F" + ], + "emoji": "🥟", + "name": "dumpling" + }, + { + "code": [ + "1F960" + ], + "emoji": "🥠", + "name": "fortune cookie" + }, + { + "code": [ + "1F961" + ], + "emoji": "🥡", + "name": "takeout box" + } + ], + "food-sweet": [ + { + "code": [ + "1F366" + ], + "emoji": "🍦", + "name": "soft ice cream" + }, + { + "code": [ + "1F367" + ], + "emoji": "🍧", + "name": "shaved ice" + }, + { + "code": [ + "1F368" + ], + "emoji": "🍨", + "name": "ice cream" + }, + { + "code": [ + "1F369" + ], + "emoji": "🍩", + "name": "doughnut" + }, + { + "code": [ + "1F36A" + ], + "emoji": "🍪", + "name": "cookie" + }, + { + "code": [ + "1F382" + ], + "emoji": "🎂", + "name": "birthday cake" + }, + { + "code": [ + "1F370" + ], + "emoji": "🍰", + "name": "shortcake" + }, + { + "code": [ + "1F9C1" + ], + "emoji": "🧁", + "name": "cupcake" + }, + { + "code": [ + "1F967" + ], + "emoji": "🥧", + "name": "pie" + }, + { + "code": [ + "1F36B" + ], + "emoji": "🍫", + "name": "chocolate bar" + }, + { + "code": [ + "1F36C" + ], + "emoji": "🍬", + "name": "candy" + }, + { + "code": [ + "1F36D" + ], + "emoji": "🍭", + "name": "lollipop" + }, + { + "code": [ + "1F36E" + ], + "emoji": "🍮", + "name": "custard" + }, + { + "code": [ + "1F36F" + ], + "emoji": "🍯", + "name": "honey pot" + } + ], + "drink": [ + { + "code": [ + "1F37C" + ], + "emoji": "🍼", + "name": "baby bottle" + }, + { + "code": [ + "1F95B" + ], + "emoji": "🥛", + "name": "glass of milk" + }, + { + "code": [ + "2615" + ], + "emoji": "☕", + "name": "hot beverage" + }, + { + "code": [ + "1FAD6" + ], + "emoji": "🫖", + "name": "teapot" + }, + { + "code": [ + "1F375" + ], + "emoji": "🍵", + "name": "teacup without handle" + }, + { + "code": [ + "1F376" + ], + "emoji": "🍶", + "name": "sake" + }, + { + "code": [ + "1F37E" + ], + "emoji": "🍾", + "name": "bottle with popping cork" + }, + { + "code": [ + "1F377" + ], + "emoji": "🍷", + "name": "wine glass" + }, + { + "code": [ + "1F378" + ], + "emoji": "🍸", + "name": "cocktail glass" + }, + { + "code": [ + "1F379" + ], + "emoji": "🍹", + "name": "tropical drink" + }, + { + "code": [ + "1F37A" + ], + "emoji": "🍺", + "name": "beer mug" + }, + { + "code": [ + "1F37B" + ], + "emoji": "🍻", + "name": "clinking beer mugs" + }, + { + "code": [ + "1F942" + ], + "emoji": "🥂", + "name": "clinking glasses" + }, + { + "code": [ + "1F943" + ], + "emoji": "🥃", + "name": "tumbler glass" + }, + { + "code": [ + "1FAD7" + ], + "emoji": "🫗", + "name": "pouring liquid" + }, + { + "code": [ + "1F964" + ], + "emoji": "🥤", + "name": "cup with straw" + }, + { + "code": [ + "1F9CB" + ], + "emoji": "🧋", + "name": "bubble tea" + }, + { + "code": [ + "1F9C3" + ], + "emoji": "🧃", + "name": "beverage box" + }, + { + "code": [ + "1F9C9" + ], + "emoji": "🧉", + "name": "mate" + }, + { + "code": [ + "1F9CA" + ], + "emoji": "🧊", + "name": "ice" + } + ], + "dishware": [ + { + "code": [ + "1F962" + ], + "emoji": "🥢", + "name": "chopsticks" + }, + { + "code": [ + "1F37D" + ], + "emoji": "🍽", + "name": "fork and knife with plate" + }, + { + "code": [ + "1F374" + ], + "emoji": "🍴", + "name": "fork and knife" + }, + { + "code": [ + "1F944" + ], + "emoji": "🥄", + "name": "spoon" + }, + { + "code": [ + "1F52A" + ], + "emoji": "🔪", + "name": "kitchen knife" + }, + { + "code": [ + "1FAD9" + ], + "emoji": "🫙", + "name": "jar" + }, + { + "code": [ + "1F3FA" + ], + "emoji": "🏺", + "name": "amphora" + } + ] + }, + "Travel & Places": { + "place-map": [ + { + "code": [ + "1F30D" + ], + "emoji": "🌍", + "name": "globe showing Europe-Africa" + }, + { + "code": [ + "1F30E" + ], + "emoji": "🌎", + "name": "globe showing Americas" + }, + { + "code": [ + "1F30F" + ], + "emoji": "🌏", + "name": "globe showing Asia-Australia" + }, + { + "code": [ + "1F310" + ], + "emoji": "🌐", + "name": "globe with meridians" + }, + { + "code": [ + "1F5FA" + ], + "emoji": "🗺", + "name": "world map" + }, + { + "code": [ + "1F5FE" + ], + "emoji": "🗾", + "name": "map of Japan" + }, + { + "code": [ + "1F9ED" + ], + "emoji": "🧭", + "name": "compass" + } + ], + "place-geographic": [ + { + "code": [ + "1F3D4" + ], + "emoji": "🏔", + "name": "snow-capped mountain" + }, + { + "code": [ + "26F0" + ], + "emoji": "⛰", + "name": "mountain" + }, + { + "code": [ + "1F30B" + ], + "emoji": "🌋", + "name": "volcano" + }, + { + "code": [ + "1F5FB" + ], + "emoji": "🗻", + "name": "mount fuji" + }, + { + "code": [ + "1F3D5" + ], + "emoji": "🏕", + "name": "camping" + }, + { + "code": [ + "1F3D6" + ], + "emoji": "🏖", + "name": "beach with umbrella" + }, + { + "code": [ + "1F3DC" + ], + "emoji": "🏜", + "name": "desert" + }, + { + "code": [ + "1F3DD" + ], + "emoji": "🏝", + "name": "desert island" + }, + { + "code": [ + "1F3DE" + ], + "emoji": "🏞", + "name": "national park" + } + ], + "place-building": [ + { + "code": [ + "1F3DF" + ], + "emoji": "🏟", + "name": "stadium" + }, + { + "code": [ + "1F3DB" + ], + "emoji": "🏛", + "name": "classical building" + }, + { + "code": [ + "1F3D7" + ], + "emoji": "🏗", + "name": "building construction" + }, + { + "code": [ + "1F9F1" + ], + "emoji": "🧱", + "name": "brick" + }, + { + "code": [ + "1FAA8" + ], + "emoji": "🪨", + "name": "rock" + }, + { + "code": [ + "1FAB5" + ], + "emoji": "🪵", + "name": "wood" + }, + { + "code": [ + "1F6D6" + ], + "emoji": "🛖", + "name": "hut" + }, + { + "code": [ + "1F3D8" + ], + "emoji": "🏘", + "name": "houses" + }, + { + "code": [ + "1F3DA" + ], + "emoji": "🏚", + "name": "derelict house" + }, + { + "code": [ + "1F3E0" + ], + "emoji": "🏠", + "name": "house" + }, + { + "code": [ + "1F3E1" + ], + "emoji": "🏡", + "name": "house with garden" + }, + { + "code": [ + "1F3E2" + ], + "emoji": "🏢", + "name": "office building" + }, + { + "code": [ + "1F3E3" + ], + "emoji": "🏣", + "name": "Japanese post office" + }, + { + "code": [ + "1F3E4" + ], + "emoji": "🏤", + "name": "post office" + }, + { + "code": [ + "1F3E5" + ], + "emoji": "🏥", + "name": "hospital" + }, + { + "code": [ + "1F3E6" + ], + "emoji": "🏦", + "name": "bank" + }, + { + "code": [ + "1F3E8" + ], + "emoji": "🏨", + "name": "hotel" + }, + { + "code": [ + "1F3E9" + ], + "emoji": "🏩", + "name": "love hotel" + }, + { + "code": [ + "1F3EA" + ], + "emoji": "🏪", + "name": "convenience store" + }, + { + "code": [ + "1F3EB" + ], + "emoji": "🏫", + "name": "school" + }, + { + "code": [ + "1F3EC" + ], + "emoji": "🏬", + "name": "department store" + }, + { + "code": [ + "1F3ED" + ], + "emoji": "🏭", + "name": "factory" + }, + { + "code": [ + "1F3EF" + ], + "emoji": "🏯", + "name": "Japanese castle" + }, + { + "code": [ + "1F3F0" + ], + "emoji": "🏰", + "name": "castle" + }, + { + "code": [ + "1F492" + ], + "emoji": "💒", + "name": "wedding" + }, + { + "code": [ + "1F5FC" + ], + "emoji": "🗼", + "name": "Tokyo tower" + }, + { + "code": [ + "1F5FD" + ], + "emoji": "🗽", + "name": "Statue of Liberty" + } + ], + "place-religious": [ + { + "code": [ + "26EA" + ], + "emoji": "⛪", + "name": "church" + }, + { + "code": [ + "1F54C" + ], + "emoji": "🕌", + "name": "mosque" + }, + { + "code": [ + "1F6D5" + ], + "emoji": "🛕", + "name": "hindu temple" + }, + { + "code": [ + "1F54D" + ], + "emoji": "🕍", + "name": "synagogue" + }, + { + "code": [ + "26E9" + ], + "emoji": "⛩", + "name": "shinto shrine" + }, + { + "code": [ + "1F54B" + ], + "emoji": "🕋", + "name": "kaaba" + } + ], + "place-other": [ + { + "code": [ + "26F2" + ], + "emoji": "⛲", + "name": "fountain" + }, + { + "code": [ + "26FA" + ], + "emoji": "⛺", + "name": "tent" + }, + { + "code": [ + "1F301" + ], + "emoji": "🌁", + "name": "foggy" + }, + { + "code": [ + "1F303" + ], + "emoji": "🌃", + "name": "night with stars" + }, + { + "code": [ + "1F3D9" + ], + "emoji": "🏙", + "name": "cityscape" + }, + { + "code": [ + "1F304" + ], + "emoji": "🌄", + "name": "sunrise over mountains" + }, + { + "code": [ + "1F305" + ], + "emoji": "🌅", + "name": "sunrise" + }, + { + "code": [ + "1F306" + ], + "emoji": "🌆", + "name": "cityscape at dusk" + }, + { + "code": [ + "1F307" + ], + "emoji": "🌇", + "name": "sunset" + }, + { + "code": [ + "1F309" + ], + "emoji": "🌉", + "name": "bridge at night" + }, + { + "code": [ + "2668" + ], + "emoji": "♨", + "name": "hot springs" + }, + { + "code": [ + "1F3A0" + ], + "emoji": "🎠", + "name": "carousel horse" + }, + { + "code": [ + "1F6DD" + ], + "emoji": "🛝", + "name": "playground slide" + }, + { + "code": [ + "1F3A1" + ], + "emoji": "🎡", + "name": "ferris wheel" + }, + { + "code": [ + "1F3A2" + ], + "emoji": "🎢", + "name": "roller coaster" + }, + { + "code": [ + "1F488" + ], + "emoji": "💈", + "name": "barber pole" + }, + { + "code": [ + "1F3AA" + ], + "emoji": "🎪", + "name": "circus tent" + } + ], + "transport-ground": [ + { + "code": [ + "1F682" + ], + "emoji": "🚂", + "name": "locomotive" + }, + { + "code": [ + "1F683" + ], + "emoji": "🚃", + "name": "railway car" + }, + { + "code": [ + "1F684" + ], + "emoji": "🚄", + "name": "high-speed train" + }, + { + "code": [ + "1F685" + ], + "emoji": "🚅", + "name": "bullet train" + }, + { + "code": [ + "1F686" + ], + "emoji": "🚆", + "name": "train" + }, + { + "code": [ + "1F687" + ], + "emoji": "🚇", + "name": "metro" + }, + { + "code": [ + "1F688" + ], + "emoji": "🚈", + "name": "light rail" + }, + { + "code": [ + "1F689" + ], + "emoji": "🚉", + "name": "station" + }, + { + "code": [ + "1F68A" + ], + "emoji": "🚊", + "name": "tram" + }, + { + "code": [ + "1F69D" + ], + "emoji": "🚝", + "name": "monorail" + }, + { + "code": [ + "1F69E" + ], + "emoji": "🚞", + "name": "mountain railway" + }, + { + "code": [ + "1F68B" + ], + "emoji": "🚋", + "name": "tram car" + }, + { + "code": [ + "1F68C" + ], + "emoji": "🚌", + "name": "bus" + }, + { + "code": [ + "1F68D" + ], + "emoji": "🚍", + "name": "oncoming bus" + }, + { + "code": [ + "1F68E" + ], + "emoji": "🚎", + "name": "trolleybus" + }, + { + "code": [ + "1F690" + ], + "emoji": "🚐", + "name": "minibus" + }, + { + "code": [ + "1F691" + ], + "emoji": "🚑", + "name": "ambulance" + }, + { + "code": [ + "1F692" + ], + "emoji": "🚒", + "name": "fire engine" + }, + { + "code": [ + "1F693" + ], + "emoji": "🚓", + "name": "police car" + }, + { + "code": [ + "1F694" + ], + "emoji": "🚔", + "name": "oncoming police car" + }, + { + "code": [ + "1F695" + ], + "emoji": "🚕", + "name": "taxi" + }, + { + "code": [ + "1F696" + ], + "emoji": "🚖", + "name": "oncoming taxi" + }, + { + "code": [ + "1F697" + ], + "emoji": "🚗", + "name": "automobile" + }, + { + "code": [ + "1F698" + ], + "emoji": "🚘", + "name": "oncoming automobile" + }, + { + "code": [ + "1F699" + ], + "emoji": "🚙", + "name": "sport utility vehicle" + }, + { + "code": [ + "1F6FB" + ], + "emoji": "🛻", + "name": "pickup truck" + }, + { + "code": [ + "1F69A" + ], + "emoji": "🚚", + "name": "delivery truck" + }, + { + "code": [ + "1F69B" + ], + "emoji": "🚛", + "name": "articulated lorry" + }, + { + "code": [ + "1F69C" + ], + "emoji": "🚜", + "name": "tractor" + }, + { + "code": [ + "1F3CE" + ], + "emoji": "🏎", + "name": "racing car" + }, + { + "code": [ + "1F3CD" + ], + "emoji": "🏍", + "name": "motorcycle" + }, + { + "code": [ + "1F6F5" + ], + "emoji": "🛵", + "name": "motor scooter" + }, + { + "code": [ + "1F9BD" + ], + "emoji": "🦽", + "name": "manual wheelchair" + }, + { + "code": [ + "1F9BC" + ], + "emoji": "🦼", + "name": "motorized wheelchair" + }, + { + "code": [ + "1F6FA" + ], + "emoji": "🛺", + "name": "auto rickshaw" + }, + { + "code": [ + "1F6B2" + ], + "emoji": "🚲", + "name": "bicycle" + }, + { + "code": [ + "1F6F4" + ], + "emoji": "🛴", + "name": "kick scooter" + }, + { + "code": [ + "1F6F9" + ], + "emoji": "🛹", + "name": "skateboard" + }, + { + "code": [ + "1F6FC" + ], + "emoji": "🛼", + "name": "roller skate" + }, + { + "code": [ + "1F68F" + ], + "emoji": "🚏", + "name": "bus stop" + }, + { + "code": [ + "1F6E3" + ], + "emoji": "🛣", + "name": "motorway" + }, + { + "code": [ + "1F6E4" + ], + "emoji": "🛤", + "name": "railway track" + }, + { + "code": [ + "1F6E2" + ], + "emoji": "🛢", + "name": "oil drum" + }, + { + "code": [ + "26FD" + ], + "emoji": "⛽", + "name": "fuel pump" + }, + { + "code": [ + "1F6DE" + ], + "emoji": "🛞", + "name": "wheel" + }, + { + "code": [ + "1F6A8" + ], + "emoji": "🚨", + "name": "police car light" + }, + { + "code": [ + "1F6A5" + ], + "emoji": "🚥", + "name": "horizontal traffic light" + }, + { + "code": [ + "1F6A6" + ], + "emoji": "🚦", + "name": "vertical traffic light" + }, + { + "code": [ + "1F6D1" + ], + "emoji": "🛑", + "name": "stop sign" + }, + { + "code": [ + "1F6A7" + ], + "emoji": "🚧", + "name": "construction" + } + ], + "transport-water": [ + { + "code": [ + "2693" + ], + "emoji": "⚓", + "name": "anchor" + }, + { + "code": [ + "1F6DF" + ], + "emoji": "🛟", + "name": "ring buoy" + }, + { + "code": [ + "26F5" + ], + "emoji": "⛵", + "name": "sailboat" + }, + { + "code": [ + "1F6F6" + ], + "emoji": "🛶", + "name": "canoe" + }, + { + "code": [ + "1F6A4" + ], + "emoji": "🚤", + "name": "speedboat" + }, + { + "code": [ + "1F6F3" + ], + "emoji": "🛳", + "name": "passenger ship" + }, + { + "code": [ + "26F4" + ], + "emoji": "⛴", + "name": "ferry" + }, + { + "code": [ + "1F6E5" + ], + "emoji": "🛥", + "name": "motor boat" + }, + { + "code": [ + "1F6A2" + ], + "emoji": "🚢", + "name": "ship" + } + ], + "transport-air": [ + { + "code": [ + "2708" + ], + "emoji": "✈", + "name": "airplane" + }, + { + "code": [ + "1F6E9" + ], + "emoji": "🛩", + "name": "small airplane" + }, + { + "code": [ + "1F6EB" + ], + "emoji": "🛫", + "name": "airplane departure" + }, + { + "code": [ + "1F6EC" + ], + "emoji": "🛬", + "name": "airplane arrival" + }, + { + "code": [ + "1FA82" + ], + "emoji": "🪂", + "name": "parachute" + }, + { + "code": [ + "1F4BA" + ], + "emoji": "💺", + "name": "seat" + }, + { + "code": [ + "1F681" + ], + "emoji": "🚁", + "name": "helicopter" + }, + { + "code": [ + "1F69F" + ], + "emoji": "🚟", + "name": "suspension railway" + }, + { + "code": [ + "1F6A0" + ], + "emoji": "🚠", + "name": "mountain cableway" + }, + { + "code": [ + "1F6A1" + ], + "emoji": "🚡", + "name": "aerial tramway" + }, + { + "code": [ + "1F6F0" + ], + "emoji": "🛰", + "name": "satellite" + }, + { + "code": [ + "1F680" + ], + "emoji": "🚀", + "name": "rocket" + }, + { + "code": [ + "1F6F8" + ], + "emoji": "🛸", + "name": "flying saucer" + } + ], + "hotel": [ + { + "code": [ + "1F6CE" + ], + "emoji": "🛎", + "name": "bellhop bell" + }, + { + "code": [ + "1F9F3" + ], + "emoji": "🧳", + "name": "luggage" + } + ], + "time": [ + { + "code": [ + "231B" + ], + "emoji": "⌛", + "name": "hourglass done" + }, + { + "code": [ + "23F3" + ], + "emoji": "⏳", + "name": "hourglass not done" + }, + { + "code": [ + "231A" + ], + "emoji": "⌚", + "name": "watch" + }, + { + "code": [ + "23F0" + ], + "emoji": "⏰", + "name": "alarm clock" + }, + { + "code": [ + "23F1" + ], + "emoji": "⏱", + "name": "stopwatch" + }, + { + "code": [ + "23F2" + ], + "emoji": "⏲", + "name": "timer clock" + }, + { + "code": [ + "1F570" + ], + "emoji": "🕰", + "name": "mantelpiece clock" + }, + { + "code": [ + "1F55B" + ], + "emoji": "🕛", + "name": "twelve o’clock" + }, + { + "code": [ + "1F567" + ], + "emoji": "🕧", + "name": "twelve-thirty" + }, + { + "code": [ + "1F550" + ], + "emoji": "🕐", + "name": "one o’clock" + }, + { + "code": [ + "1F55C" + ], + "emoji": "🕜", + "name": "one-thirty" + }, + { + "code": [ + "1F551" + ], + "emoji": "🕑", + "name": "two o’clock" + }, + { + "code": [ + "1F55D" + ], + "emoji": "🕝", + "name": "two-thirty" + }, + { + "code": [ + "1F552" + ], + "emoji": "🕒", + "name": "three o’clock" + }, + { + "code": [ + "1F55E" + ], + "emoji": "🕞", + "name": "three-thirty" + }, + { + "code": [ + "1F553" + ], + "emoji": "🕓", + "name": "four o’clock" + }, + { + "code": [ + "1F55F" + ], + "emoji": "🕟", + "name": "four-thirty" + }, + { + "code": [ + "1F554" + ], + "emoji": "🕔", + "name": "five o’clock" + }, + { + "code": [ + "1F560" + ], + "emoji": "🕠", + "name": "five-thirty" + }, + { + "code": [ + "1F555" + ], + "emoji": "🕕", + "name": "six o’clock" + }, + { + "code": [ + "1F561" + ], + "emoji": "🕡", + "name": "six-thirty" + }, + { + "code": [ + "1F556" + ], + "emoji": "🕖", + "name": "seven o’clock" + }, + { + "code": [ + "1F562" + ], + "emoji": "🕢", + "name": "seven-thirty" + }, + { + "code": [ + "1F557" + ], + "emoji": "🕗", + "name": "eight o’clock" + }, + { + "code": [ + "1F563" + ], + "emoji": "🕣", + "name": "eight-thirty" + }, + { + "code": [ + "1F558" + ], + "emoji": "🕘", + "name": "nine o’clock" + }, + { + "code": [ + "1F564" + ], + "emoji": "🕤", + "name": "nine-thirty" + }, + { + "code": [ + "1F559" + ], + "emoji": "🕙", + "name": "ten o’clock" + }, + { + "code": [ + "1F565" + ], + "emoji": "🕥", + "name": "ten-thirty" + }, + { + "code": [ + "1F55A" + ], + "emoji": "🕚", + "name": "eleven o’clock" + }, + { + "code": [ + "1F566" + ], + "emoji": "🕦", + "name": "eleven-thirty" + } + ], + "sky & weather": [ + { + "code": [ + "1F311" + ], + "emoji": "🌑", + "name": "new moon" + }, + { + "code": [ + "1F312" + ], + "emoji": "🌒", + "name": "waxing crescent moon" + }, + { + "code": [ + "1F313" + ], + "emoji": "🌓", + "name": "first quarter moon" + }, + { + "code": [ + "1F314" + ], + "emoji": "🌔", + "name": "waxing gibbous moon" + }, + { + "code": [ + "1F315" + ], + "emoji": "🌕", + "name": "full moon" + }, + { + "code": [ + "1F316" + ], + "emoji": "🌖", + "name": "waning gibbous moon" + }, + { + "code": [ + "1F317" + ], + "emoji": "🌗", + "name": "last quarter moon" + }, + { + "code": [ + "1F318" + ], + "emoji": "🌘", + "name": "waning crescent moon" + }, + { + "code": [ + "1F319" + ], + "emoji": "🌙", + "name": "crescent moon" + }, + { + "code": [ + "1F31A" + ], + "emoji": "🌚", + "name": "new moon face" + }, + { + "code": [ + "1F31B" + ], + "emoji": "🌛", + "name": "first quarter moon face" + }, + { + "code": [ + "1F31C" + ], + "emoji": "🌜", + "name": "last quarter moon face" + }, + { + "code": [ + "1F321" + ], + "emoji": "🌡", + "name": "thermometer" + }, + { + "code": [ + "2600" + ], + "emoji": "☀", + "name": "sun" + }, + { + "code": [ + "1F31D" + ], + "emoji": "🌝", + "name": "full moon face" + }, + { + "code": [ + "1F31E" + ], + "emoji": "🌞", + "name": "sun with face" + }, + { + "code": [ + "1FA90" + ], + "emoji": "🪐", + "name": "ringed planet" + }, + { + "code": [ + "2B50" + ], + "emoji": "⭐", + "name": "star" + }, + { + "code": [ + "1F31F" + ], + "emoji": "🌟", + "name": "glowing star" + }, + { + "code": [ + "1F320" + ], + "emoji": "🌠", + "name": "shooting star" + }, + { + "code": [ + "1F30C" + ], + "emoji": "🌌", + "name": "milky way" + }, + { + "code": [ + "2601" + ], + "emoji": "☁", + "name": "cloud" + }, + { + "code": [ + "26C5" + ], + "emoji": "⛅", + "name": "sun behind cloud" + }, + { + "code": [ + "26C8" + ], + "emoji": "⛈", + "name": "cloud with lightning and rain" + }, + { + "code": [ + "1F324" + ], + "emoji": "🌤", + "name": "sun behind small cloud" + }, + { + "code": [ + "1F325" + ], + "emoji": "🌥", + "name": "sun behind large cloud" + }, + { + "code": [ + "1F326" + ], + "emoji": "🌦", + "name": "sun behind rain cloud" + }, + { + "code": [ + "1F327" + ], + "emoji": "🌧", + "name": "cloud with rain" + }, + { + "code": [ + "1F328" + ], + "emoji": "🌨", + "name": "cloud with snow" + }, + { + "code": [ + "1F329" + ], + "emoji": "🌩", + "name": "cloud with lightning" + }, + { + "code": [ + "1F32A" + ], + "emoji": "🌪", + "name": "tornado" + }, + { + "code": [ + "1F32B" + ], + "emoji": "🌫", + "name": "fog" + }, + { + "code": [ + "1F32C" + ], + "emoji": "🌬", + "name": "wind face" + }, + { + "code": [ + "1F300" + ], + "emoji": "🌀", + "name": "cyclone" + }, + { + "code": [ + "1F308" + ], + "emoji": "🌈", + "name": "rainbow" + }, + { + "code": [ + "1F302" + ], + "emoji": "🌂", + "name": "closed umbrella" + }, + { + "code": [ + "2602" + ], + "emoji": "☂", + "name": "umbrella" + }, + { + "code": [ + "2614" + ], + "emoji": "☔", + "name": "umbrella with rain drops" + }, + { + "code": [ + "26F1" + ], + "emoji": "⛱", + "name": "umbrella on ground" + }, + { + "code": [ + "26A1" + ], + "emoji": "⚡", + "name": "high voltage" + }, + { + "code": [ + "2744" + ], + "emoji": "❄", + "name": "snowflake" + }, + { + "code": [ + "2603" + ], + "emoji": "☃", + "name": "snowman" + }, + { + "code": [ + "26C4" + ], + "emoji": "⛄", + "name": "snowman without snow" + }, + { + "code": [ + "2604" + ], + "emoji": "☄", + "name": "comet" + }, + { + "code": [ + "1F525" + ], + "emoji": "🔥", + "name": "fire" + }, + { + "code": [ + "1F4A7" + ], + "emoji": "💧", + "name": "droplet" + }, + { + "code": [ + "1F30A" + ], + "emoji": "🌊", + "name": "water wave" + } + ] + }, + "Activities": { + "event": [ + { + "code": [ + "1F383" + ], + "emoji": "🎃", + "name": "jack-o-lantern" + }, + { + "code": [ + "1F384" + ], + "emoji": "🎄", + "name": "Christmas tree" + }, + { + "code": [ + "1F386" + ], + "emoji": "🎆", + "name": "fireworks" + }, + { + "code": [ + "1F387" + ], + "emoji": "🎇", + "name": "sparkler" + }, + { + "code": [ + "1F9E8" + ], + "emoji": "🧨", + "name": "firecracker" + }, + { + "code": [ + "2728" + ], + "emoji": "✨", + "name": "sparkles" + }, + { + "code": [ + "1F388" + ], + "emoji": "🎈", + "name": "balloon" + }, + { + "code": [ + "1F389" + ], + "emoji": "🎉", + "name": "party popper" + }, + { + "code": [ + "1F38A" + ], + "emoji": "🎊", + "name": "confetti ball" + }, + { + "code": [ + "1F38B" + ], + "emoji": "🎋", + "name": "tanabata tree" + }, + { + "code": [ + "1F38D" + ], + "emoji": "🎍", + "name": "pine decoration" + }, + { + "code": [ + "1F38E" + ], + "emoji": "🎎", + "name": "Japanese dolls" + }, + { + "code": [ + "1F38F" + ], + "emoji": "🎏", + "name": "carp streamer" + }, + { + "code": [ + "1F390" + ], + "emoji": "🎐", + "name": "wind chime" + }, + { + "code": [ + "1F391" + ], + "emoji": "🎑", + "name": "moon viewing ceremony" + }, + { + "code": [ + "1F9E7" + ], + "emoji": "🧧", + "name": "red envelope" + }, + { + "code": [ + "1F380" + ], + "emoji": "🎀", + "name": "ribbon" + }, + { + "code": [ + "1F381" + ], + "emoji": "🎁", + "name": "wrapped gift" + }, + { + "code": [ + "1F397" + ], + "emoji": "🎗", + "name": "reminder ribbon" + }, + { + "code": [ + "1F39F" + ], + "emoji": "🎟", + "name": "admission tickets" + }, + { + "code": [ + "1F3AB" + ], + "emoji": "🎫", + "name": "ticket" + } + ], + "award-medal": [ + { + "code": [ + "1F396" + ], + "emoji": "🎖", + "name": "military medal" + }, + { + "code": [ + "1F3C6" + ], + "emoji": "🏆", + "name": "trophy" + }, + { + "code": [ + "1F3C5" + ], + "emoji": "🏅", + "name": "sports medal" + }, + { + "code": [ + "1F947" + ], + "emoji": "🥇", + "name": "1st place medal" + }, + { + "code": [ + "1F948" + ], + "emoji": "🥈", + "name": "2nd place medal" + }, + { + "code": [ + "1F949" + ], + "emoji": "🥉", + "name": "3rd place medal" + } + ], + "sport": [ + { + "code": [ + "26BD" + ], + "emoji": "⚽", + "name": "soccer ball" + }, + { + "code": [ + "26BE" + ], + "emoji": "⚾", + "name": "baseball" + }, + { + "code": [ + "1F94E" + ], + "emoji": "🥎", + "name": "softball" + }, + { + "code": [ + "1F3C0" + ], + "emoji": "🏀", + "name": "basketball" + }, + { + "code": [ + "1F3D0" + ], + "emoji": "🏐", + "name": "volleyball" + }, + { + "code": [ + "1F3C8" + ], + "emoji": "🏈", + "name": "american football" + }, + { + "code": [ + "1F3C9" + ], + "emoji": "🏉", + "name": "rugby football" + }, + { + "code": [ + "1F3BE" + ], + "emoji": "🎾", + "name": "tennis" + }, + { + "code": [ + "1F94F" + ], + "emoji": "🥏", + "name": "flying disc" + }, + { + "code": [ + "1F3B3" + ], + "emoji": "🎳", + "name": "bowling" + }, + { + "code": [ + "1F3CF" + ], + "emoji": "🏏", + "name": "cricket game" + }, + { + "code": [ + "1F3D1" + ], + "emoji": "🏑", + "name": "field hockey" + }, + { + "code": [ + "1F3D2" + ], + "emoji": "🏒", + "name": "ice hockey" + }, + { + "code": [ + "1F94D" + ], + "emoji": "🥍", + "name": "lacrosse" + }, + { + "code": [ + "1F3D3" + ], + "emoji": "🏓", + "name": "ping pong" + }, + { + "code": [ + "1F3F8" + ], + "emoji": "🏸", + "name": "badminton" + }, + { + "code": [ + "1F94A" + ], + "emoji": "🥊", + "name": "boxing glove" + }, + { + "code": [ + "1F94B" + ], + "emoji": "🥋", + "name": "martial arts uniform" + }, + { + "code": [ + "1F945" + ], + "emoji": "🥅", + "name": "goal net" + }, + { + "code": [ + "26F3" + ], + "emoji": "⛳", + "name": "flag in hole" + }, + { + "code": [ + "26F8" + ], + "emoji": "⛸", + "name": "ice skate" + }, + { + "code": [ + "1F3A3" + ], + "emoji": "🎣", + "name": "fishing pole" + }, + { + "code": [ + "1F93F" + ], + "emoji": "🤿", + "name": "diving mask" + }, + { + "code": [ + "1F3BD" + ], + "emoji": "🎽", + "name": "running shirt" + }, + { + "code": [ + "1F3BF" + ], + "emoji": "🎿", + "name": "skis" + }, + { + "code": [ + "1F6F7" + ], + "emoji": "🛷", + "name": "sled" + }, + { + "code": [ + "1F94C" + ], + "emoji": "🥌", + "name": "curling stone" + } + ], + "game": [ + { + "code": [ + "1F3AF" + ], + "emoji": "🎯", + "name": "bullseye" + }, + { + "code": [ + "1FA80" + ], + "emoji": "🪀", + "name": "yo-yo" + }, + { + "code": [ + "1FA81" + ], + "emoji": "🪁", + "name": "kite" + }, + { + "code": [ + "1F52B" + ], + "emoji": "🔫", + "name": "water pistol" + }, + { + "code": [ + "1F3B1" + ], + "emoji": "🎱", + "name": "pool 8 ball" + }, + { + "code": [ + "1F52E" + ], + "emoji": "🔮", + "name": "crystal ball" + }, + { + "code": [ + "1FA84" + ], + "emoji": "🪄", + "name": "magic wand" + }, + { + "code": [ + "1F3AE" + ], + "emoji": "🎮", + "name": "video game" + }, + { + "code": [ + "1F579" + ], + "emoji": "🕹", + "name": "joystick" + }, + { + "code": [ + "1F3B0" + ], + "emoji": "🎰", + "name": "slot machine" + }, + { + "code": [ + "1F3B2" + ], + "emoji": "🎲", + "name": "game die" + }, + { + "code": [ + "1F9E9" + ], + "emoji": "🧩", + "name": "puzzle piece" + }, + { + "code": [ + "1F9F8" + ], + "emoji": "🧸", + "name": "teddy bear" + }, + { + "code": [ + "1FA85" + ], + "emoji": "🪅", + "name": "piñata" + }, + { + "code": [ + "1FAA9" + ], + "emoji": "🪩", + "name": "mirror ball" + }, + { + "code": [ + "1FA86" + ], + "emoji": "🪆", + "name": "nesting dolls" + }, + { + "code": [ + "2660" + ], + "emoji": "♠", + "name": "spade suit" + }, + { + "code": [ + "2665" + ], + "emoji": "♥", + "name": "heart suit" + }, + { + "code": [ + "2666" + ], + "emoji": "♦", + "name": "diamond suit" + }, + { + "code": [ + "2663" + ], + "emoji": "♣", + "name": "club suit" + }, + { + "code": [ + "265F" + ], + "emoji": "♟", + "name": "chess pawn" + }, + { + "code": [ + "1F0CF" + ], + "emoji": "🃏", + "name": "joker" + }, + { + "code": [ + "1F004" + ], + "emoji": "🀄", + "name": "mahjong red dragon" + }, + { + "code": [ + "1F3B4" + ], + "emoji": "🎴", + "name": "flower playing cards" + } + ], + "arts & crafts": [ + { + "code": [ + "1F3AD" + ], + "emoji": "🎭", + "name": "performing arts" + }, + { + "code": [ + "1F5BC" + ], + "emoji": "🖼", + "name": "framed picture" + }, + { + "code": [ + "1F3A8" + ], + "emoji": "🎨", + "name": "artist palette" + }, + { + "code": [ + "1F9F5" + ], + "emoji": "🧵", + "name": "thread" + }, + { + "code": [ + "1FAA1" + ], + "emoji": "🪡", + "name": "sewing needle" + }, + { + "code": [ + "1F9F6" + ], + "emoji": "🧶", + "name": "yarn" + }, + { + "code": [ + "1FAA2" + ], + "emoji": "🪢", + "name": "knot" + } + ] + }, + "Objects": { + "clothing": [ + { + "code": [ + "1F453" + ], + "emoji": "👓", + "name": "glasses" + }, + { + "code": [ + "1F576" + ], + "emoji": "🕶", + "name": "sunglasses" + }, + { + "code": [ + "1F97D" + ], + "emoji": "🥽", + "name": "goggles" + }, + { + "code": [ + "1F97C" + ], + "emoji": "🥼", + "name": "lab coat" + }, + { + "code": [ + "1F9BA" + ], + "emoji": "🦺", + "name": "safety vest" + }, + { + "code": [ + "1F454" + ], + "emoji": "👔", + "name": "necktie" + }, + { + "code": [ + "1F455" + ], + "emoji": "👕", + "name": "t-shirt" + }, + { + "code": [ + "1F456" + ], + "emoji": "👖", + "name": "jeans" + }, + { + "code": [ + "1F9E3" + ], + "emoji": "🧣", + "name": "scarf" + }, + { + "code": [ + "1F9E4" + ], + "emoji": "🧤", + "name": "gloves" + }, + { + "code": [ + "1F9E5" + ], + "emoji": "🧥", + "name": "coat" + }, + { + "code": [ + "1F9E6" + ], + "emoji": "🧦", + "name": "socks" + }, + { + "code": [ + "1F457" + ], + "emoji": "👗", + "name": "dress" + }, + { + "code": [ + "1F458" + ], + "emoji": "👘", + "name": "kimono" + }, + { + "code": [ + "1F97B" + ], + "emoji": "🥻", + "name": "sari" + }, + { + "code": [ + "1FA71" + ], + "emoji": "🩱", + "name": "one-piece swimsuit" + }, + { + "code": [ + "1FA72" + ], + "emoji": "🩲", + "name": "briefs" + }, + { + "code": [ + "1FA73" + ], + "emoji": "🩳", + "name": "shorts" + }, + { + "code": [ + "1F459" + ], + "emoji": "👙", + "name": "bikini" + }, + { + "code": [ + "1F45A" + ], + "emoji": "👚", + "name": "woman’s clothes" + }, + { + "code": [ + "1FAAD" + ], + "emoji": "🪭", + "name": "folding hand fan" + }, + { + "code": [ + "1F45B" + ], + "emoji": "👛", + "name": "purse" + }, + { + "code": [ + "1F45C" + ], + "emoji": "👜", + "name": "handbag" + }, + { + "code": [ + "1F45D" + ], + "emoji": "👝", + "name": "clutch bag" + }, + { + "code": [ + "1F6CD" + ], + "emoji": "🛍", + "name": "shopping bags" + }, + { + "code": [ + "1F392" + ], + "emoji": "🎒", + "name": "backpack" + }, + { + "code": [ + "1FA74" + ], + "emoji": "🩴", + "name": "thong sandal" + }, + { + "code": [ + "1F45E" + ], + "emoji": "👞", + "name": "man’s shoe" + }, + { + "code": [ + "1F45F" + ], + "emoji": "👟", + "name": "running shoe" + }, + { + "code": [ + "1F97E" + ], + "emoji": "🥾", + "name": "hiking boot" + }, + { + "code": [ + "1F97F" + ], + "emoji": "🥿", + "name": "flat shoe" + }, + { + "code": [ + "1F460" + ], + "emoji": "👠", + "name": "high-heeled shoe" + }, + { + "code": [ + "1F461" + ], + "emoji": "👡", + "name": "woman’s sandal" + }, + { + "code": [ + "1FA70" + ], + "emoji": "🩰", + "name": "ballet shoes" + }, + { + "code": [ + "1F462" + ], + "emoji": "👢", + "name": "woman’s boot" + }, + { + "code": [ + "1FAAE" + ], + "emoji": "🪮", + "name": "hair pick" + }, + { + "code": [ + "1F451" + ], + "emoji": "👑", + "name": "crown" + }, + { + "code": [ + "1F452" + ], + "emoji": "👒", + "name": "woman’s hat" + }, + { + "code": [ + "1F3A9" + ], + "emoji": "🎩", + "name": "top hat" + }, + { + "code": [ + "1F393" + ], + "emoji": "🎓", + "name": "graduation cap" + }, + { + "code": [ + "1F9E2" + ], + "emoji": "🧢", + "name": "billed cap" + }, + { + "code": [ + "1FA96" + ], + "emoji": "🪖", + "name": "military helmet" + }, + { + "code": [ + "26D1" + ], + "emoji": "⛑", + "name": "rescue worker’s helmet" + }, + { + "code": [ + "1F4FF" + ], + "emoji": "📿", + "name": "prayer beads" + }, + { + "code": [ + "1F484" + ], + "emoji": "💄", + "name": "lipstick" + }, + { + "code": [ + "1F48D" + ], + "emoji": "💍", + "name": "ring" + }, + { + "code": [ + "1F48E" + ], + "emoji": "💎", + "name": "gem stone" + } + ], + "sound": [ + { + "code": [ + "1F507" + ], + "emoji": "🔇", + "name": "muted speaker" + }, + { + "code": [ + "1F508" + ], + "emoji": "🔈", + "name": "speaker low volume" + }, + { + "code": [ + "1F509" + ], + "emoji": "🔉", + "name": "speaker medium volume" + }, + { + "code": [ + "1F50A" + ], + "emoji": "🔊", + "name": "speaker high volume" + }, + { + "code": [ + "1F4E2" + ], + "emoji": "📢", + "name": "loudspeaker" + }, + { + "code": [ + "1F4E3" + ], + "emoji": "📣", + "name": "megaphone" + }, + { + "code": [ + "1F4EF" + ], + "emoji": "📯", + "name": "postal horn" + }, + { + "code": [ + "1F514" + ], + "emoji": "🔔", + "name": "bell" + }, + { + "code": [ + "1F515" + ], + "emoji": "🔕", + "name": "bell with slash" + } + ], + "music": [ + { + "code": [ + "1F3BC" + ], + "emoji": "🎼", + "name": "musical score" + }, + { + "code": [ + "1F3B5" + ], + "emoji": "🎵", + "name": "musical note" + }, + { + "code": [ + "1F3B6" + ], + "emoji": "🎶", + "name": "musical notes" + }, + { + "code": [ + "1F399" + ], + "emoji": "🎙", + "name": "studio microphone" + }, + { + "code": [ + "1F39A" + ], + "emoji": "🎚", + "name": "level slider" + }, + { + "code": [ + "1F39B" + ], + "emoji": "🎛", + "name": "control knobs" + }, + { + "code": [ + "1F3A4" + ], + "emoji": "🎤", + "name": "microphone" + }, + { + "code": [ + "1F3A7" + ], + "emoji": "🎧", + "name": "headphone" + }, + { + "code": [ + "1F4FB" + ], + "emoji": "📻", + "name": "radio" + } + ], + "musical-instrument": [ + { + "code": [ + "1F3B7" + ], + "emoji": "🎷", + "name": "saxophone" + }, + { + "code": [ + "1FA97" + ], + "emoji": "🪗", + "name": "accordion" + }, + { + "code": [ + "1F3B8" + ], + "emoji": "🎸", + "name": "guitar" + }, + { + "code": [ + "1F3B9" + ], + "emoji": "🎹", + "name": "musical keyboard" + }, + { + "code": [ + "1F3BA" + ], + "emoji": "🎺", + "name": "trumpet" + }, + { + "code": [ + "1F3BB" + ], + "emoji": "🎻", + "name": "violin" + }, + { + "code": [ + "1FA95" + ], + "emoji": "🪕", + "name": "banjo" + }, + { + "code": [ + "1F941" + ], + "emoji": "🥁", + "name": "drum" + }, + { + "code": [ + "1FA98" + ], + "emoji": "🪘", + "name": "long drum" + }, + { + "code": [ + "1FA87" + ], + "emoji": "🪇", + "name": "maracas" + }, + { + "code": [ + "1FA88" + ], + "emoji": "🪈", + "name": "flute" + }, + { + "code": [ + "1FA89" + ], + "emoji": "🪉", + "name": "harp" + } + ], + "phone": [ + { + "code": [ + "1F4F1" + ], + "emoji": "📱", + "name": "mobile phone" + }, + { + "code": [ + "1F4F2" + ], + "emoji": "📲", + "name": "mobile phone with arrow" + }, + { + "code": [ + "260E" + ], + "emoji": "☎", + "name": "telephone" + }, + { + "code": [ + "1F4DE" + ], + "emoji": "📞", + "name": "telephone receiver" + }, + { + "code": [ + "1F4DF" + ], + "emoji": "📟", + "name": "pager" + }, + { + "code": [ + "1F4E0" + ], + "emoji": "📠", + "name": "fax machine" + } + ], + "computer": [ + { + "code": [ + "1F50B" + ], + "emoji": "🔋", + "name": "battery" + }, + { + "code": [ + "1FAAB" + ], + "emoji": "🪫", + "name": "low battery" + }, + { + "code": [ + "1F50C" + ], + "emoji": "🔌", + "name": "electric plug" + }, + { + "code": [ + "1F4BB" + ], + "emoji": "💻", + "name": "laptop" + }, + { + "code": [ + "1F5A5" + ], + "emoji": "🖥", + "name": "desktop computer" + }, + { + "code": [ + "1F5A8" + ], + "emoji": "🖨", + "name": "printer" + }, + { + "code": [ + "2328" + ], + "emoji": "⌨", + "name": "keyboard" + }, + { + "code": [ + "1F5B1" + ], + "emoji": "🖱", + "name": "computer mouse" + }, + { + "code": [ + "1F5B2" + ], + "emoji": "🖲", + "name": "trackball" + }, + { + "code": [ + "1F4BD" + ], + "emoji": "💽", + "name": "computer disk" + }, + { + "code": [ + "1F4BE" + ], + "emoji": "💾", + "name": "floppy disk" + }, + { + "code": [ + "1F4BF" + ], + "emoji": "💿", + "name": "optical disk" + }, + { + "code": [ + "1F4C0" + ], + "emoji": "📀", + "name": "dvd" + }, + { + "code": [ + "1F9EE" + ], + "emoji": "🧮", + "name": "abacus" + } + ], + "light & video": [ + { + "code": [ + "1F3A5" + ], + "emoji": "🎥", + "name": "movie camera" + }, + { + "code": [ + "1F39E" + ], + "emoji": "🎞", + "name": "film frames" + }, + { + "code": [ + "1F4FD" + ], + "emoji": "📽", + "name": "film projector" + }, + { + "code": [ + "1F3AC" + ], + "emoji": "🎬", + "name": "clapper board" + }, + { + "code": [ + "1F4FA" + ], + "emoji": "📺", + "name": "television" + }, + { + "code": [ + "1F4F7" + ], + "emoji": "📷", + "name": "camera" + }, + { + "code": [ + "1F4F8" + ], + "emoji": "📸", + "name": "camera with flash" + }, + { + "code": [ + "1F4F9" + ], + "emoji": "📹", + "name": "video camera" + }, + { + "code": [ + "1F4FC" + ], + "emoji": "📼", + "name": "videocassette" + }, + { + "code": [ + "1F50D" + ], + "emoji": "🔍", + "name": "magnifying glass tilted left" + }, + { + "code": [ + "1F50E" + ], + "emoji": "🔎", + "name": "magnifying glass tilted right" + }, + { + "code": [ + "1F56F" + ], + "emoji": "🕯", + "name": "candle" + }, + { + "code": [ + "1F4A1" + ], + "emoji": "💡", + "name": "light bulb" + }, + { + "code": [ + "1F526" + ], + "emoji": "🔦", + "name": "flashlight" + }, + { + "code": [ + "1F3EE" + ], + "emoji": "🏮", + "name": "red paper lantern" + }, + { + "code": [ + "1FA94" + ], + "emoji": "🪔", + "name": "diya lamp" + } + ], + "book-paper": [ + { + "code": [ + "1F4D4" + ], + "emoji": "📔", + "name": "notebook with decorative cover" + }, + { + "code": [ + "1F4D5" + ], + "emoji": "📕", + "name": "closed book" + }, + { + "code": [ + "1F4D6" + ], + "emoji": "📖", + "name": "open book" + }, + { + "code": [ + "1F4D7" + ], + "emoji": "📗", + "name": "green book" + }, + { + "code": [ + "1F4D8" + ], + "emoji": "📘", + "name": "blue book" + }, + { + "code": [ + "1F4D9" + ], + "emoji": "📙", + "name": "orange book" + }, + { + "code": [ + "1F4DA" + ], + "emoji": "📚", + "name": "books" + }, + { + "code": [ + "1F4D3" + ], + "emoji": "📓", + "name": "notebook" + }, + { + "code": [ + "1F4D2" + ], + "emoji": "📒", + "name": "ledger" + }, + { + "code": [ + "1F4C3" + ], + "emoji": "📃", + "name": "page with curl" + }, + { + "code": [ + "1F4DC" + ], + "emoji": "📜", + "name": "scroll" + }, + { + "code": [ + "1F4C4" + ], + "emoji": "📄", + "name": "page facing up" + }, + { + "code": [ + "1F4F0" + ], + "emoji": "📰", + "name": "newspaper" + }, + { + "code": [ + "1F5DE" + ], + "emoji": "🗞", + "name": "rolled-up newspaper" + }, + { + "code": [ + "1F4D1" + ], + "emoji": "📑", + "name": "bookmark tabs" + }, + { + "code": [ + "1F516" + ], + "emoji": "🔖", + "name": "bookmark" + }, + { + "code": [ + "1F3F7" + ], + "emoji": "🏷", + "name": "label" + } + ], + "money": [ + { + "code": [ + "1F4B0" + ], + "emoji": "💰", + "name": "money bag" + }, + { + "code": [ + "1FA99" + ], + "emoji": "🪙", + "name": "coin" + }, + { + "code": [ + "1F4B4" + ], + "emoji": "💴", + "name": "yen banknote" + }, + { + "code": [ + "1F4B5" + ], + "emoji": "💵", + "name": "dollar banknote" + }, + { + "code": [ + "1F4B6" + ], + "emoji": "💶", + "name": "euro banknote" + }, + { + "code": [ + "1F4B7" + ], + "emoji": "💷", + "name": "pound banknote" + }, + { + "code": [ + "1F4B8" + ], + "emoji": "💸", + "name": "money with wings" + }, + { + "code": [ + "1F4B3" + ], + "emoji": "💳", + "name": "credit card" + }, + { + "code": [ + "1F9FE" + ], + "emoji": "🧾", + "name": "receipt" + }, + { + "code": [ + "1F4B9" + ], + "emoji": "💹", + "name": "chart increasing with yen" + } + ], + "mail": [ + { + "code": [ + "2709" + ], + "emoji": "✉", + "name": "envelope" + }, + { + "code": [ + "1F4E7" + ], + "emoji": "📧", + "name": "e-mail" + }, + { + "code": [ + "1F4E8" + ], + "emoji": "📨", + "name": "incoming envelope" + }, + { + "code": [ + "1F4E9" + ], + "emoji": "📩", + "name": "envelope with arrow" + }, + { + "code": [ + "1F4E4" + ], + "emoji": "📤", + "name": "outbox tray" + }, + { + "code": [ + "1F4E5" + ], + "emoji": "📥", + "name": "inbox tray" + }, + { + "code": [ + "1F4E6" + ], + "emoji": "📦", + "name": "package" + }, + { + "code": [ + "1F4EB" + ], + "emoji": "📫", + "name": "closed mailbox with raised flag" + }, + { + "code": [ + "1F4EA" + ], + "emoji": "📪", + "name": "closed mailbox with lowered flag" + }, + { + "code": [ + "1F4EC" + ], + "emoji": "📬", + "name": "open mailbox with raised flag" + }, + { + "code": [ + "1F4ED" + ], + "emoji": "📭", + "name": "open mailbox with lowered flag" + }, + { + "code": [ + "1F4EE" + ], + "emoji": "📮", + "name": "postbox" + }, + { + "code": [ + "1F5F3" + ], + "emoji": "🗳", + "name": "ballot box with ballot" + } + ], + "writing": [ + { + "code": [ + "270F" + ], + "emoji": "✏", + "name": "pencil" + }, + { + "code": [ + "2712" + ], + "emoji": "✒", + "name": "black nib" + }, + { + "code": [ + "1F58B" + ], + "emoji": "🖋", + "name": "fountain pen" + }, + { + "code": [ + "1F58A" + ], + "emoji": "🖊", + "name": "pen" + }, + { + "code": [ + "1F58C" + ], + "emoji": "🖌", + "name": "paintbrush" + }, + { + "code": [ + "1F58D" + ], + "emoji": "🖍", + "name": "crayon" + }, + { + "code": [ + "1F4DD" + ], + "emoji": "📝", + "name": "memo" + } + ], + "office": [ + { + "code": [ + "1F4BC" + ], + "emoji": "💼", + "name": "briefcase" + }, + { + "code": [ + "1F4C1" + ], + "emoji": "📁", + "name": "file folder" + }, + { + "code": [ + "1F4C2" + ], + "emoji": "📂", + "name": "open file folder" + }, + { + "code": [ + "1F5C2" + ], + "emoji": "🗂", + "name": "card index dividers" + }, + { + "code": [ + "1F4C5" + ], + "emoji": "📅", + "name": "calendar" + }, + { + "code": [ + "1F4C6" + ], + "emoji": "📆", + "name": "tear-off calendar" + }, + { + "code": [ + "1F5D2" + ], + "emoji": "🗒", + "name": "spiral notepad" + }, + { + "code": [ + "1F5D3" + ], + "emoji": "🗓", + "name": "spiral calendar" + }, + { + "code": [ + "1F4C7" + ], + "emoji": "📇", + "name": "card index" + }, + { + "code": [ + "1F4C8" + ], + "emoji": "📈", + "name": "chart increasing" + }, + { + "code": [ + "1F4C9" + ], + "emoji": "📉", + "name": "chart decreasing" + }, + { + "code": [ + "1F4CA" + ], + "emoji": "📊", + "name": "bar chart" + }, + { + "code": [ + "1F4CB" + ], + "emoji": "📋", + "name": "clipboard" + }, + { + "code": [ + "1F4CC" + ], + "emoji": "📌", + "name": "pushpin" + }, + { + "code": [ + "1F4CD" + ], + "emoji": "📍", + "name": "round pushpin" + }, + { + "code": [ + "1F4CE" + ], + "emoji": "📎", + "name": "paperclip" + }, + { + "code": [ + "1F587" + ], + "emoji": "🖇", + "name": "linked paperclips" + }, + { + "code": [ + "1F4CF" + ], + "emoji": "📏", + "name": "straight ruler" + }, + { + "code": [ + "1F4D0" + ], + "emoji": "📐", + "name": "triangular ruler" + }, + { + "code": [ + "2702" + ], + "emoji": "✂", + "name": "scissors" + }, + { + "code": [ + "1F5C3" + ], + "emoji": "🗃", + "name": "card file box" + }, + { + "code": [ + "1F5C4" + ], + "emoji": "🗄", + "name": "file cabinet" + }, + { + "code": [ + "1F5D1" + ], + "emoji": "🗑", + "name": "wastebasket" + } + ], + "lock": [ + { + "code": [ + "1F512" + ], + "emoji": "🔒", + "name": "locked" + }, + { + "code": [ + "1F513" + ], + "emoji": "🔓", + "name": "unlocked" + }, + { + "code": [ + "1F50F" + ], + "emoji": "🔏", + "name": "locked with pen" + }, + { + "code": [ + "1F510" + ], + "emoji": "🔐", + "name": "locked with key" + }, + { + "code": [ + "1F511" + ], + "emoji": "🔑", + "name": "key" + }, + { + "code": [ + "1F5DD" + ], + "emoji": "🗝", + "name": "old key" + } + ], + "tool": [ + { + "code": [ + "1F528" + ], + "emoji": "🔨", + "name": "hammer" + }, + { + "code": [ + "1FA93" + ], + "emoji": "🪓", + "name": "axe" + }, + { + "code": [ + "26CF" + ], + "emoji": "⛏", + "name": "pick" + }, + { + "code": [ + "2692" + ], + "emoji": "⚒", + "name": "hammer and pick" + }, + { + "code": [ + "1F6E0" + ], + "emoji": "🛠", + "name": "hammer and wrench" + }, + { + "code": [ + "1F5E1" + ], + "emoji": "🗡", + "name": "dagger" + }, + { + "code": [ + "2694" + ], + "emoji": "⚔", + "name": "crossed swords" + }, + { + "code": [ + "1F4A3" + ], + "emoji": "💣", + "name": "bomb" + }, + { + "code": [ + "1FA83" + ], + "emoji": "🪃", + "name": "boomerang" + }, + { + "code": [ + "1F3F9" + ], + "emoji": "🏹", + "name": "bow and arrow" + }, + { + "code": [ + "1F6E1" + ], + "emoji": "🛡", + "name": "shield" + }, + { + "code": [ + "1FA9A" + ], + "emoji": "🪚", + "name": "carpentry saw" + }, + { + "code": [ + "1F527" + ], + "emoji": "🔧", + "name": "wrench" + }, + { + "code": [ + "1FA9B" + ], + "emoji": "🪛", + "name": "screwdriver" + }, + { + "code": [ + "1F529" + ], + "emoji": "🔩", + "name": "nut and bolt" + }, + { + "code": [ + "2699" + ], + "emoji": "⚙", + "name": "gear" + }, + { + "code": [ + "1F5DC" + ], + "emoji": "🗜", + "name": "clamp" + }, + { + "code": [ + "2696" + ], + "emoji": "⚖", + "name": "balance scale" + }, + { + "code": [ + "1F9AF" + ], + "emoji": "🦯", + "name": "white cane" + }, + { + "code": [ + "1F517" + ], + "emoji": "🔗", + "name": "link" + }, + { + "code": [ + "26D3", + "FE0F", + "200D", + "1F4A5" + ], + "emoji": "⛓️‍💥", + "name": "broken chain" + }, + { + "code": [ + "26D3" + ], + "emoji": "⛓", + "name": "chains" + }, + { + "code": [ + "1FA9D" + ], + "emoji": "🪝", + "name": "hook" + }, + { + "code": [ + "1F9F0" + ], + "emoji": "🧰", + "name": "toolbox" + }, + { + "code": [ + "1F9F2" + ], + "emoji": "🧲", + "name": "magnet" + }, + { + "code": [ + "1FA9C" + ], + "emoji": "🪜", + "name": "ladder" + }, + { + "code": [ + "1FA8F" + ], + "emoji": "🪏", + "name": "shovel" + } + ], + "science": [ + { + "code": [ + "2697" + ], + "emoji": "⚗", + "name": "alembic" + }, + { + "code": [ + "1F9EA" + ], + "emoji": "🧪", + "name": "test tube" + }, + { + "code": [ + "1F9EB" + ], + "emoji": "🧫", + "name": "petri dish" + }, + { + "code": [ + "1F9EC" + ], + "emoji": "🧬", + "name": "dna" + }, + { + "code": [ + "1F52C" + ], + "emoji": "🔬", + "name": "microscope" + }, + { + "code": [ + "1F52D" + ], + "emoji": "🔭", + "name": "telescope" + }, + { + "code": [ + "1F4E1" + ], + "emoji": "📡", + "name": "satellite antenna" + } + ], + "medical": [ + { + "code": [ + "1F489" + ], + "emoji": "💉", + "name": "syringe" + }, + { + "code": [ + "1FA78" + ], + "emoji": "🩸", + "name": "drop of blood" + }, + { + "code": [ + "1F48A" + ], + "emoji": "💊", + "name": "pill" + }, + { + "code": [ + "1FA79" + ], + "emoji": "🩹", + "name": "adhesive bandage" + }, + { + "code": [ + "1FA7C" + ], + "emoji": "🩼", + "name": "crutch" + }, + { + "code": [ + "1FA7A" + ], + "emoji": "🩺", + "name": "stethoscope" + }, + { + "code": [ + "1FA7B" + ], + "emoji": "🩻", + "name": "x-ray" + } + ], + "household": [ + { + "code": [ + "1F6AA" + ], + "emoji": "🚪", + "name": "door" + }, + { + "code": [ + "1F6D7" + ], + "emoji": "🛗", + "name": "elevator" + }, + { + "code": [ + "1FA9E" + ], + "emoji": "🪞", + "name": "mirror" + }, + { + "code": [ + "1FA9F" + ], + "emoji": "🪟", + "name": "window" + }, + { + "code": [ + "1F6CF" + ], + "emoji": "🛏", + "name": "bed" + }, + { + "code": [ + "1F6CB" + ], + "emoji": "🛋", + "name": "couch and lamp" + }, + { + "code": [ + "1FA91" + ], + "emoji": "🪑", + "name": "chair" + }, + { + "code": [ + "1F6BD" + ], + "emoji": "🚽", + "name": "toilet" + }, + { + "code": [ + "1FAA0" + ], + "emoji": "🪠", + "name": "plunger" + }, + { + "code": [ + "1F6BF" + ], + "emoji": "🚿", + "name": "shower" + }, + { + "code": [ + "1F6C1" + ], + "emoji": "🛁", + "name": "bathtub" + }, + { + "code": [ + "1FAA4" + ], + "emoji": "🪤", + "name": "mouse trap" + }, + { + "code": [ + "1FA92" + ], + "emoji": "🪒", + "name": "razor" + }, + { + "code": [ + "1F9F4" + ], + "emoji": "🧴", + "name": "lotion bottle" + }, + { + "code": [ + "1F9F7" + ], + "emoji": "🧷", + "name": "safety pin" + }, + { + "code": [ + "1F9F9" + ], + "emoji": "🧹", + "name": "broom" + }, + { + "code": [ + "1F9FA" + ], + "emoji": "🧺", + "name": "basket" + }, + { + "code": [ + "1F9FB" + ], + "emoji": "🧻", + "name": "roll of paper" + }, + { + "code": [ + "1FAA3" + ], + "emoji": "🪣", + "name": "bucket" + }, + { + "code": [ + "1F9FC" + ], + "emoji": "🧼", + "name": "soap" + }, + { + "code": [ + "1FAE7" + ], + "emoji": "🫧", + "name": "bubbles" + }, + { + "code": [ + "1FAA5" + ], + "emoji": "🪥", + "name": "toothbrush" + }, + { + "code": [ + "1F9FD" + ], + "emoji": "🧽", + "name": "sponge" + }, + { + "code": [ + "1F9EF" + ], + "emoji": "🧯", + "name": "fire extinguisher" + }, + { + "code": [ + "1F6D2" + ], + "emoji": "🛒", + "name": "shopping cart" + } + ], + "other-object": [ + { + "code": [ + "1F6AC" + ], + "emoji": "🚬", + "name": "cigarette" + }, + { + "code": [ + "26B0" + ], + "emoji": "⚰", + "name": "coffin" + }, + { + "code": [ + "1FAA6" + ], + "emoji": "🪦", + "name": "headstone" + }, + { + "code": [ + "26B1" + ], + "emoji": "⚱", + "name": "funeral urn" + }, + { + "code": [ + "1F9FF" + ], + "emoji": "🧿", + "name": "nazar amulet" + }, + { + "code": [ + "1FAAC" + ], + "emoji": "🪬", + "name": "hamsa" + }, + { + "code": [ + "1F5FF" + ], + "emoji": "🗿", + "name": "moai" + }, + { + "code": [ + "1FAA7" + ], + "emoji": "🪧", + "name": "placard" + }, + { + "code": [ + "1FAAA" + ], + "emoji": "🪪", + "name": "identification card" + } + ] + }, + "Symbols": { + "transport-sign": [ + { + "code": [ + "1F3E7" + ], + "emoji": "🏧", + "name": "ATM sign" + }, + { + "code": [ + "1F6AE" + ], + "emoji": "🚮", + "name": "litter in bin sign" + }, + { + "code": [ + "1F6B0" + ], + "emoji": "🚰", + "name": "potable water" + }, + { + "code": [ + "267F" + ], + "emoji": "♿", + "name": "wheelchair symbol" + }, + { + "code": [ + "1F6B9" + ], + "emoji": "🚹", + "name": "men’s room" + }, + { + "code": [ + "1F6BA" + ], + "emoji": "🚺", + "name": "women’s room" + }, + { + "code": [ + "1F6BB" + ], + "emoji": "🚻", + "name": "restroom" + }, + { + "code": [ + "1F6BC" + ], + "emoji": "🚼", + "name": "baby symbol" + }, + { + "code": [ + "1F6BE" + ], + "emoji": "🚾", + "name": "water closet" + }, + { + "code": [ + "1F6C2" + ], + "emoji": "🛂", + "name": "passport control" + }, + { + "code": [ + "1F6C3" + ], + "emoji": "🛃", + "name": "customs" + }, + { + "code": [ + "1F6C4" + ], + "emoji": "🛄", + "name": "baggage claim" + }, + { + "code": [ + "1F6C5" + ], + "emoji": "🛅", + "name": "left luggage" + } + ], + "warning": [ + { + "code": [ + "26A0" + ], + "emoji": "⚠", + "name": "warning" + }, + { + "code": [ + "1F6B8" + ], + "emoji": "🚸", + "name": "children crossing" + }, + { + "code": [ + "26D4" + ], + "emoji": "⛔", + "name": "no entry" + }, + { + "code": [ + "1F6AB" + ], + "emoji": "🚫", + "name": "prohibited" + }, + { + "code": [ + "1F6B3" + ], + "emoji": "🚳", + "name": "no bicycles" + }, + { + "code": [ + "1F6AD" + ], + "emoji": "🚭", + "name": "no smoking" + }, + { + "code": [ + "1F6AF" + ], + "emoji": "🚯", + "name": "no littering" + }, + { + "code": [ + "1F6B1" + ], + "emoji": "🚱", + "name": "non-potable water" + }, + { + "code": [ + "1F6B7" + ], + "emoji": "🚷", + "name": "no pedestrians" + }, + { + "code": [ + "1F4F5" + ], + "emoji": "📵", + "name": "no mobile phones" + }, + { + "code": [ + "1F51E" + ], + "emoji": "🔞", + "name": "no one under eighteen" + }, + { + "code": [ + "2622" + ], + "emoji": "☢", + "name": "radioactive" + }, + { + "code": [ + "2623" + ], + "emoji": "☣", + "name": "biohazard" + } + ], + "arrow": [ + { + "code": [ + "2B06" + ], + "emoji": "⬆", + "name": "up arrow" + }, + { + "code": [ + "2197" + ], + "emoji": "↗", + "name": "up-right arrow" + }, + { + "code": [ + "27A1" + ], + "emoji": "➡", + "name": "right arrow" + }, + { + "code": [ + "2198" + ], + "emoji": "↘", + "name": "down-right arrow" + }, + { + "code": [ + "2B07" + ], + "emoji": "⬇", + "name": "down arrow" + }, + { + "code": [ + "2199" + ], + "emoji": "↙", + "name": "down-left arrow" + }, + { + "code": [ + "2B05" + ], + "emoji": "⬅", + "name": "left arrow" + }, + { + "code": [ + "2196" + ], + "emoji": "↖", + "name": "up-left arrow" + }, + { + "code": [ + "2195" + ], + "emoji": "↕", + "name": "up-down arrow" + }, + { + "code": [ + "2194" + ], + "emoji": "↔", + "name": "left-right arrow" + }, + { + "code": [ + "21A9" + ], + "emoji": "↩", + "name": "right arrow curving left" + }, + { + "code": [ + "21AA" + ], + "emoji": "↪", + "name": "left arrow curving right" + }, + { + "code": [ + "2934" + ], + "emoji": "⤴", + "name": "right arrow curving up" + }, + { + "code": [ + "2935" + ], + "emoji": "⤵", + "name": "right arrow curving down" + }, + { + "code": [ + "1F503" + ], + "emoji": "🔃", + "name": "clockwise vertical arrows" + }, + { + "code": [ + "1F504" + ], + "emoji": "🔄", + "name": "counterclockwise arrows button" + }, + { + "code": [ + "1F519" + ], + "emoji": "🔙", + "name": "BACK arrow" + }, + { + "code": [ + "1F51A" + ], + "emoji": "🔚", + "name": "END arrow" + }, + { + "code": [ + "1F51B" + ], + "emoji": "🔛", + "name": "ON! arrow" + }, + { + "code": [ + "1F51C" + ], + "emoji": "🔜", + "name": "SOON arrow" + }, + { + "code": [ + "1F51D" + ], + "emoji": "🔝", + "name": "TOP arrow" + } + ], + "religion": [ + { + "code": [ + "1F6D0" + ], + "emoji": "🛐", + "name": "place of worship" + }, + { + "code": [ + "269B" + ], + "emoji": "⚛", + "name": "atom symbol" + }, + { + "code": [ + "1F549" + ], + "emoji": "🕉", + "name": "om" + }, + { + "code": [ + "2721" + ], + "emoji": "✡", + "name": "star of David" + }, + { + "code": [ + "2638" + ], + "emoji": "☸", + "name": "wheel of dharma" + }, + { + "code": [ + "262F" + ], + "emoji": "☯", + "name": "yin yang" + }, + { + "code": [ + "271D" + ], + "emoji": "✝", + "name": "latin cross" + }, + { + "code": [ + "2626" + ], + "emoji": "☦", + "name": "orthodox cross" + }, + { + "code": [ + "262A" + ], + "emoji": "☪", + "name": "star and crescent" + }, + { + "code": [ + "262E" + ], + "emoji": "☮", + "name": "peace symbol" + }, + { + "code": [ + "1F54E" + ], + "emoji": "🕎", + "name": "menorah" + }, + { + "code": [ + "1F52F" + ], + "emoji": "🔯", + "name": "dotted six-pointed star" + }, + { + "code": [ + "1FAAF" + ], + "emoji": "🪯", + "name": "khanda" + } + ], + "zodiac": [ + { + "code": [ + "2648" + ], + "emoji": "♈", + "name": "Aries" + }, + { + "code": [ + "2649" + ], + "emoji": "♉", + "name": "Taurus" + }, + { + "code": [ + "264A" + ], + "emoji": "♊", + "name": "Gemini" + }, + { + "code": [ + "264B" + ], + "emoji": "♋", + "name": "Cancer" + }, + { + "code": [ + "264C" + ], + "emoji": "♌", + "name": "Leo" + }, + { + "code": [ + "264D" + ], + "emoji": "♍", + "name": "Virgo" + }, + { + "code": [ + "264E" + ], + "emoji": "♎", + "name": "Libra" + }, + { + "code": [ + "264F" + ], + "emoji": "♏", + "name": "Scorpio" + }, + { + "code": [ + "2650" + ], + "emoji": "♐", + "name": "Sagittarius" + }, + { + "code": [ + "2651" + ], + "emoji": "♑", + "name": "Capricorn" + }, + { + "code": [ + "2652" + ], + "emoji": "♒", + "name": "Aquarius" + }, + { + "code": [ + "2653" + ], + "emoji": "♓", + "name": "Pisces" + }, + { + "code": [ + "26CE" + ], + "emoji": "⛎", + "name": "Ophiuchus" + } + ], + "av-symbol": [ + { + "code": [ + "1F500" + ], + "emoji": "🔀", + "name": "shuffle tracks button" + }, + { + "code": [ + "1F501" + ], + "emoji": "🔁", + "name": "repeat button" + }, + { + "code": [ + "1F502" + ], + "emoji": "🔂", + "name": "repeat single button" + }, + { + "code": [ + "25B6" + ], + "emoji": "▶", + "name": "play button" + }, + { + "code": [ + "23E9" + ], + "emoji": "⏩", + "name": "fast-forward button" + }, + { + "code": [ + "23ED" + ], + "emoji": "⏭", + "name": "next track button" + }, + { + "code": [ + "23EF" + ], + "emoji": "⏯", + "name": "play or pause button" + }, + { + "code": [ + "25C0" + ], + "emoji": "◀", + "name": "reverse button" + }, + { + "code": [ + "23EA" + ], + "emoji": "⏪", + "name": "fast reverse button" + }, + { + "code": [ + "23EE" + ], + "emoji": "⏮", + "name": "last track button" + }, + { + "code": [ + "1F53C" + ], + "emoji": "🔼", + "name": "upwards button" + }, + { + "code": [ + "23EB" + ], + "emoji": "⏫", + "name": "fast up button" + }, + { + "code": [ + "1F53D" + ], + "emoji": "🔽", + "name": "downwards button" + }, + { + "code": [ + "23EC" + ], + "emoji": "⏬", + "name": "fast down button" + }, + { + "code": [ + "23F8" + ], + "emoji": "⏸", + "name": "pause button" + }, + { + "code": [ + "23F9" + ], + "emoji": "⏹", + "name": "stop button" + }, + { + "code": [ + "23FA" + ], + "emoji": "⏺", + "name": "record button" + }, + { + "code": [ + "23CF" + ], + "emoji": "⏏", + "name": "eject button" + }, + { + "code": [ + "1F3A6" + ], + "emoji": "🎦", + "name": "cinema" + }, + { + "code": [ + "1F505" + ], + "emoji": "🔅", + "name": "dim button" + }, + { + "code": [ + "1F506" + ], + "emoji": "🔆", + "name": "bright button" + }, + { + "code": [ + "1F4F6" + ], + "emoji": "📶", + "name": "antenna bars" + }, + { + "code": [ + "1F6DC" + ], + "emoji": "🛜", + "name": "wireless" + }, + { + "code": [ + "1F4F3" + ], + "emoji": "📳", + "name": "vibration mode" + }, + { + "code": [ + "1F4F4" + ], + "emoji": "📴", + "name": "mobile phone off" + } + ], + "gender": [ + { + "code": [ + "2640" + ], + "emoji": "♀", + "name": "female sign" + }, + { + "code": [ + "2642" + ], + "emoji": "♂", + "name": "male sign" + }, + { + "code": [ + "26A7" + ], + "emoji": "⚧", + "name": "transgender symbol" + } + ], + "math": [ + { + "code": [ + "2716" + ], + "emoji": "✖", + "name": "multiply" + }, + { + "code": [ + "2795" + ], + "emoji": "➕", + "name": "plus" + }, + { + "code": [ + "2796" + ], + "emoji": "➖", + "name": "minus" + }, + { + "code": [ + "2797" + ], + "emoji": "➗", + "name": "divide" + }, + { + "code": [ + "1F7F0" + ], + "emoji": "🟰", + "name": "heavy equals sign" + }, + { + "code": [ + "267E" + ], + "emoji": "♾", + "name": "infinity" + } + ], + "punctuation": [ + { + "code": [ + "203C" + ], + "emoji": "‼", + "name": "double exclamation mark" + }, + { + "code": [ + "2049" + ], + "emoji": "⁉", + "name": "exclamation question mark" + }, + { + "code": [ + "2753" + ], + "emoji": "❓", + "name": "red question mark" + }, + { + "code": [ + "2754" + ], + "emoji": "❔", + "name": "white question mark" + }, + { + "code": [ + "2755" + ], + "emoji": "❕", + "name": "white exclamation mark" + }, + { + "code": [ + "2757" + ], + "emoji": "❗", + "name": "red exclamation mark" + }, + { + "code": [ + "3030" + ], + "emoji": "〰", + "name": "wavy dash" + } + ], + "currency": [ + { + "code": [ + "1F4B1" + ], + "emoji": "💱", + "name": "currency exchange" + }, + { + "code": [ + "1F4B2" + ], + "emoji": "💲", + "name": "heavy dollar sign" + } + ], + "other-symbol": [ + { + "code": [ + "2695" + ], + "emoji": "⚕", + "name": "medical symbol" + }, + { + "code": [ + "267B" + ], + "emoji": "♻", + "name": "recycling symbol" + }, + { + "code": [ + "269C" + ], + "emoji": "⚜", + "name": "fleur-de-lis" + }, + { + "code": [ + "1F531" + ], + "emoji": "🔱", + "name": "trident emblem" + }, + { + "code": [ + "1F4DB" + ], + "emoji": "📛", + "name": "name badge" + }, + { + "code": [ + "1F530" + ], + "emoji": "🔰", + "name": "Japanese symbol for beginner" + }, + { + "code": [ + "2B55" + ], + "emoji": "⭕", + "name": "hollow red circle" + }, + { + "code": [ + "2705" + ], + "emoji": "✅", + "name": "check mark button" + }, + { + "code": [ + "2611" + ], + "emoji": "☑", + "name": "check box with check" + }, + { + "code": [ + "2714" + ], + "emoji": "✔", + "name": "check mark" + }, + { + "code": [ + "274C" + ], + "emoji": "❌", + "name": "cross mark" + }, + { + "code": [ + "274E" + ], + "emoji": "❎", + "name": "cross mark button" + }, + { + "code": [ + "27B0" + ], + "emoji": "➰", + "name": "curly loop" + }, + { + "code": [ + "27BF" + ], + "emoji": "➿", + "name": "double curly loop" + }, + { + "code": [ + "303D" + ], + "emoji": "〽", + "name": "part alternation mark" + }, + { + "code": [ + "2733" + ], + "emoji": "✳", + "name": "eight-spoked asterisk" + }, + { + "code": [ + "2734" + ], + "emoji": "✴", + "name": "eight-pointed star" + }, + { + "code": [ + "2747" + ], + "emoji": "❇", + "name": "sparkle" + }, + { + "code": [ + "00A9" + ], + "emoji": "©", + "name": "copyright" + }, + { + "code": [ + "00AE" + ], + "emoji": "®", + "name": "registered" + }, + { + "code": [ + "2122" + ], + "emoji": "™", + "name": "trade mark" + }, + { + "code": [ + "1FADF" + ], + "emoji": "🫟", + "name": "splatter" + } + ], + "keycap": [ + { + "code": [ + "0023", + "FE0F", + "20E3" + ], + "emoji": "#️⃣", + "name": "keycap: #" + }, + { + "code": [ + "002A", + "FE0F", + "20E3" + ], + "emoji": "*️⃣", + "name": "keycap: *" + }, + { + "code": [ + "0030", + "FE0F", + "20E3" + ], + "emoji": "0️⃣", + "name": "keycap: 0" + }, + { + "code": [ + "0031", + "FE0F", + "20E3" + ], + "emoji": "1️⃣", + "name": "keycap: 1" + }, + { + "code": [ + "0032", + "FE0F", + "20E3" + ], + "emoji": "2️⃣", + "name": "keycap: 2" + }, + { + "code": [ + "0033", + "FE0F", + "20E3" + ], + "emoji": "3️⃣", + "name": "keycap: 3" + }, + { + "code": [ + "0034", + "FE0F", + "20E3" + ], + "emoji": "4️⃣", + "name": "keycap: 4" + }, + { + "code": [ + "0035", + "FE0F", + "20E3" + ], + "emoji": "5️⃣", + "name": "keycap: 5" + }, + { + "code": [ + "0036", + "FE0F", + "20E3" + ], + "emoji": "6️⃣", + "name": "keycap: 6" + }, + { + "code": [ + "0037", + "FE0F", + "20E3" + ], + "emoji": "7️⃣", + "name": "keycap: 7" + }, + { + "code": [ + "0038", + "FE0F", + "20E3" + ], + "emoji": "8️⃣", + "name": "keycap: 8" + }, + { + "code": [ + "0039", + "FE0F", + "20E3" + ], + "emoji": "9️⃣", + "name": "keycap: 9" + }, + { + "code": [ + "1F51F" + ], + "emoji": "🔟", + "name": "keycap: 10" + } + ], + "alphanum": [ + { + "code": [ + "1F520" + ], + "emoji": "🔠", + "name": "input latin uppercase" + }, + { + "code": [ + "1F521" + ], + "emoji": "🔡", + "name": "input latin lowercase" + }, + { + "code": [ + "1F522" + ], + "emoji": "🔢", + "name": "input numbers" + }, + { + "code": [ + "1F523" + ], + "emoji": "🔣", + "name": "input symbols" + }, + { + "code": [ + "1F524" + ], + "emoji": "🔤", + "name": "input latin letters" + }, + { + "code": [ + "1F170" + ], + "emoji": "🅰", + "name": "A button (blood type)" + }, + { + "code": [ + "1F18E" + ], + "emoji": "🆎", + "name": "AB button (blood type)" + }, + { + "code": [ + "1F171" + ], + "emoji": "🅱", + "name": "B button (blood type)" + }, + { + "code": [ + "1F191" + ], + "emoji": "🆑", + "name": "CL button" + }, + { + "code": [ + "1F192" + ], + "emoji": "🆒", + "name": "COOL button" + }, + { + "code": [ + "1F193" + ], + "emoji": "🆓", + "name": "FREE button" + }, + { + "code": [ + "2139" + ], + "emoji": "ℹ", + "name": "information" + }, + { + "code": [ + "1F194" + ], + "emoji": "🆔", + "name": "ID button" + }, + { + "code": [ + "24C2" + ], + "emoji": "Ⓜ", + "name": "circled M" + }, + { + "code": [ + "1F195" + ], + "emoji": "🆕", + "name": "NEW button" + }, + { + "code": [ + "1F196" + ], + "emoji": "🆖", + "name": "NG button" + }, + { + "code": [ + "1F17E" + ], + "emoji": "🅾", + "name": "O button (blood type)" + }, + { + "code": [ + "1F197" + ], + "emoji": "🆗", + "name": "OK button" + }, + { + "code": [ + "1F17F" + ], + "emoji": "🅿", + "name": "P button" + }, + { + "code": [ + "1F198" + ], + "emoji": "🆘", + "name": "SOS button" + }, + { + "code": [ + "1F199" + ], + "emoji": "🆙", + "name": "UP! button" + }, + { + "code": [ + "1F19A" + ], + "emoji": "🆚", + "name": "VS button" + }, + { + "code": [ + "1F201" + ], + "emoji": "🈁", + "name": "Japanese “here” button" + }, + { + "code": [ + "1F202" + ], + "emoji": "🈂", + "name": "Japanese “service charge” button" + }, + { + "code": [ + "1F237" + ], + "emoji": "🈷", + "name": "Japanese “monthly amount” button" + }, + { + "code": [ + "1F236" + ], + "emoji": "🈶", + "name": "Japanese “not free of charge” button" + }, + { + "code": [ + "1F22F" + ], + "emoji": "🈯", + "name": "Japanese “reserved” button" + }, + { + "code": [ + "1F250" + ], + "emoji": "🉐", + "name": "Japanese “bargain” button" + }, + { + "code": [ + "1F239" + ], + "emoji": "🈹", + "name": "Japanese “discount” button" + }, + { + "code": [ + "1F21A" + ], + "emoji": "🈚", + "name": "Japanese “free of charge” button" + }, + { + "code": [ + "1F232" + ], + "emoji": "🈲", + "name": "Japanese “prohibited” button" + }, + { + "code": [ + "1F251" + ], + "emoji": "🉑", + "name": "Japanese “acceptable” button" + }, + { + "code": [ + "1F238" + ], + "emoji": "🈸", + "name": "Japanese “application” button" + }, + { + "code": [ + "1F234" + ], + "emoji": "🈴", + "name": "Japanese “passing grade” button" + }, + { + "code": [ + "1F233" + ], + "emoji": "🈳", + "name": "Japanese “vacancy” button" + }, + { + "code": [ + "3297" + ], + "emoji": "㊗", + "name": "Japanese “congratulations” button" + }, + { + "code": [ + "3299" + ], + "emoji": "㊙", + "name": "Japanese “secret” button" + }, + { + "code": [ + "1F23A" + ], + "emoji": "🈺", + "name": "Japanese “open for business” button" + }, + { + "code": [ + "1F235" + ], + "emoji": "🈵", + "name": "Japanese “no vacancy” button" + } + ], + "geometric": [ + { + "code": [ + "1F534" + ], + "emoji": "🔴", + "name": "red circle" + }, + { + "code": [ + "1F7E0" + ], + "emoji": "🟠", + "name": "orange circle" + }, + { + "code": [ + "1F7E1" + ], + "emoji": "🟡", + "name": "yellow circle" + }, + { + "code": [ + "1F7E2" + ], + "emoji": "🟢", + "name": "green circle" + }, + { + "code": [ + "1F535" + ], + "emoji": "🔵", + "name": "blue circle" + }, + { + "code": [ + "1F7E3" + ], + "emoji": "🟣", + "name": "purple circle" + }, + { + "code": [ + "1F7E4" + ], + "emoji": "🟤", + "name": "brown circle" + }, + { + "code": [ + "26AB" + ], + "emoji": "⚫", + "name": "black circle" + }, + { + "code": [ + "26AA" + ], + "emoji": "⚪", + "name": "white circle" + }, + { + "code": [ + "1F7E5" + ], + "emoji": "🟥", + "name": "red square" + }, + { + "code": [ + "1F7E7" + ], + "emoji": "🟧", + "name": "orange square" + }, + { + "code": [ + "1F7E8" + ], + "emoji": "🟨", + "name": "yellow square" + }, + { + "code": [ + "1F7E9" + ], + "emoji": "🟩", + "name": "green square" + }, + { + "code": [ + "1F7E6" + ], + "emoji": "🟦", + "name": "blue square" + }, + { + "code": [ + "1F7EA" + ], + "emoji": "🟪", + "name": "purple square" + }, + { + "code": [ + "1F7EB" + ], + "emoji": "🟫", + "name": "brown square" + }, + { + "code": [ + "2B1B" + ], + "emoji": "⬛", + "name": "black large square" + }, + { + "code": [ + "2B1C" + ], + "emoji": "⬜", + "name": "white large square" + }, + { + "code": [ + "25FC" + ], + "emoji": "◼", + "name": "black medium square" + }, + { + "code": [ + "25FB" + ], + "emoji": "◻", + "name": "white medium square" + }, + { + "code": [ + "25FE" + ], + "emoji": "◾", + "name": "black medium-small square" + }, + { + "code": [ + "25FD" + ], + "emoji": "◽", + "name": "white medium-small square" + }, + { + "code": [ + "25AA" + ], + "emoji": "▪", + "name": "black small square" + }, + { + "code": [ + "25AB" + ], + "emoji": "▫", + "name": "white small square" + }, + { + "code": [ + "1F536" + ], + "emoji": "🔶", + "name": "large orange diamond" + }, + { + "code": [ + "1F537" + ], + "emoji": "🔷", + "name": "large blue diamond" + }, + { + "code": [ + "1F538" + ], + "emoji": "🔸", + "name": "small orange diamond" + }, + { + "code": [ + "1F539" + ], + "emoji": "🔹", + "name": "small blue diamond" + }, + { + "code": [ + "1F53A" + ], + "emoji": "🔺", + "name": "red triangle pointed up" + }, + { + "code": [ + "1F53B" + ], + "emoji": "🔻", + "name": "red triangle pointed down" + }, + { + "code": [ + "1F4A0" + ], + "emoji": "💠", + "name": "diamond with a dot" + }, + { + "code": [ + "1F518" + ], + "emoji": "🔘", + "name": "radio button" + }, + { + "code": [ + "1F533" + ], + "emoji": "🔳", + "name": "white square button" + }, + { + "code": [ + "1F532" + ], + "emoji": "🔲", + "name": "black square button" + } + ] + }, + "Flags": { + "flag": [ + { + "code": [ + "1F3C1" + ], + "emoji": "🏁", + "name": "chequered flag" + }, + { + "code": [ + "1F6A9" + ], + "emoji": "🚩", + "name": "triangular flag" + }, + { + "code": [ + "1F38C" + ], + "emoji": "🎌", + "name": "crossed flags" + }, + { + "code": [ + "1F3F4" + ], + "emoji": "🏴", + "name": "black flag" + }, + { + "code": [ + "1F3F3" + ], + "emoji": "🏳", + "name": "white flag" + }, + { + "code": [ + "1F3F3", + "FE0F", + "200D", + "1F308" + ], + "emoji": "🏳️‍🌈", + "name": "rainbow flag" + }, + { + "code": [ + "1F3F3", + "FE0F", + "200D", + "26A7", + "FE0F" + ], + "emoji": "🏳️‍⚧️", + "name": "transgender flag" + }, + { + "code": [ + "1F3F4", + "200D", + "2620", + "FE0F" + ], + "emoji": "🏴‍☠️", + "name": "pirate flag" + } + ], + "country-flag": [ + { + "code": [ + "1F1E6", + "1F1E8" + ], + "emoji": "🇦🇨", + "name": "flag: Ascension Island" + }, + { + "code": [ + "1F1E6", + "1F1E9" + ], + "emoji": "🇦🇩", + "name": "flag: Andorra" + }, + { + "code": [ + "1F1E6", + "1F1EA" + ], + "emoji": "🇦🇪", + "name": "flag: United Arab Emirates" + }, + { + "code": [ + "1F1E6", + "1F1EB" + ], + "emoji": "🇦🇫", + "name": "flag: Afghanistan" + }, + { + "code": [ + "1F1E6", + "1F1EC" + ], + "emoji": "🇦🇬", + "name": "flag: Antigua & Barbuda" + }, + { + "code": [ + "1F1E6", + "1F1EE" + ], + "emoji": "🇦🇮", + "name": "flag: Anguilla" + }, + { + "code": [ + "1F1E6", + "1F1F1" + ], + "emoji": "🇦🇱", + "name": "flag: Albania" + }, + { + "code": [ + "1F1E6", + "1F1F2" + ], + "emoji": "🇦🇲", + "name": "flag: Armenia" + }, + { + "code": [ + "1F1E6", + "1F1F4" + ], + "emoji": "🇦🇴", + "name": "flag: Angola" + }, + { + "code": [ + "1F1E6", + "1F1F6" + ], + "emoji": "🇦🇶", + "name": "flag: Antarctica" + }, + { + "code": [ + "1F1E6", + "1F1F7" + ], + "emoji": "🇦🇷", + "name": "flag: Argentina" + }, + { + "code": [ + "1F1E6", + "1F1F8" + ], + "emoji": "🇦🇸", + "name": "flag: American Samoa" + }, + { + "code": [ + "1F1E6", + "1F1F9" + ], + "emoji": "🇦🇹", + "name": "flag: Austria" + }, + { + "code": [ + "1F1E6", + "1F1FA" + ], + "emoji": "🇦🇺", + "name": "flag: Australia" + }, + { + "code": [ + "1F1E6", + "1F1FC" + ], + "emoji": "🇦🇼", + "name": "flag: Aruba" + }, + { + "code": [ + "1F1E6", + "1F1FD" + ], + "emoji": "🇦🇽", + "name": "flag: Åland Islands" + }, + { + "code": [ + "1F1E6", + "1F1FF" + ], + "emoji": "🇦🇿", + "name": "flag: Azerbaijan" + }, + { + "code": [ + "1F1E7", + "1F1E6" + ], + "emoji": "🇧🇦", + "name": "flag: Bosnia & Herzegovina" + }, + { + "code": [ + "1F1E7", + "1F1E7" + ], + "emoji": "🇧🇧", + "name": "flag: Barbados" + }, + { + "code": [ + "1F1E7", + "1F1E9" + ], + "emoji": "🇧🇩", + "name": "flag: Bangladesh" + }, + { + "code": [ + "1F1E7", + "1F1EA" + ], + "emoji": "🇧🇪", + "name": "flag: Belgium" + }, + { + "code": [ + "1F1E7", + "1F1EB" + ], + "emoji": "🇧🇫", + "name": "flag: Burkina Faso" + }, + { + "code": [ + "1F1E7", + "1F1EC" + ], + "emoji": "🇧🇬", + "name": "flag: Bulgaria" + }, + { + "code": [ + "1F1E7", + "1F1ED" + ], + "emoji": "🇧🇭", + "name": "flag: Bahrain" + }, + { + "code": [ + "1F1E7", + "1F1EE" + ], + "emoji": "🇧🇮", + "name": "flag: Burundi" + }, + { + "code": [ + "1F1E7", + "1F1EF" + ], + "emoji": "🇧🇯", + "name": "flag: Benin" + }, + { + "code": [ + "1F1E7", + "1F1F1" + ], + "emoji": "🇧🇱", + "name": "flag: St. Barthélemy" + }, + { + "code": [ + "1F1E7", + "1F1F2" + ], + "emoji": "🇧🇲", + "name": "flag: Bermuda" + }, + { + "code": [ + "1F1E7", + "1F1F3" + ], + "emoji": "🇧🇳", + "name": "flag: Brunei" + }, + { + "code": [ + "1F1E7", + "1F1F4" + ], + "emoji": "🇧🇴", + "name": "flag: Bolivia" + }, + { + "code": [ + "1F1E7", + "1F1F6" + ], + "emoji": "🇧🇶", + "name": "flag: Caribbean Netherlands" + }, + { + "code": [ + "1F1E7", + "1F1F7" + ], + "emoji": "🇧🇷", + "name": "flag: Brazil" + }, + { + "code": [ + "1F1E7", + "1F1F8" + ], + "emoji": "🇧🇸", + "name": "flag: Bahamas" + }, + { + "code": [ + "1F1E7", + "1F1F9" + ], + "emoji": "🇧🇹", + "name": "flag: Bhutan" + }, + { + "code": [ + "1F1E7", + "1F1FB" + ], + "emoji": "🇧🇻", + "name": "flag: Bouvet Island" + }, + { + "code": [ + "1F1E7", + "1F1FC" + ], + "emoji": "🇧🇼", + "name": "flag: Botswana" + }, + { + "code": [ + "1F1E7", + "1F1FE" + ], + "emoji": "🇧🇾", + "name": "flag: Belarus" + }, + { + "code": [ + "1F1E7", + "1F1FF" + ], + "emoji": "🇧🇿", + "name": "flag: Belize" + }, + { + "code": [ + "1F1E8", + "1F1E6" + ], + "emoji": "🇨🇦", + "name": "flag: Canada" + }, + { + "code": [ + "1F1E8", + "1F1E8" + ], + "emoji": "🇨🇨", + "name": "flag: Cocos (Keeling) Islands" + }, + { + "code": [ + "1F1E8", + "1F1E9" + ], + "emoji": "🇨🇩", + "name": "flag: Congo - Kinshasa" + }, + { + "code": [ + "1F1E8", + "1F1EB" + ], + "emoji": "🇨🇫", + "name": "flag: Central African Republic" + }, + { + "code": [ + "1F1E8", + "1F1EC" + ], + "emoji": "🇨🇬", + "name": "flag: Congo - Brazzaville" + }, + { + "code": [ + "1F1E8", + "1F1ED" + ], + "emoji": "🇨🇭", + "name": "flag: Switzerland" + }, + { + "code": [ + "1F1E8", + "1F1EE" + ], + "emoji": "🇨🇮", + "name": "flag: Côte d’Ivoire" + }, + { + "code": [ + "1F1E8", + "1F1F0" + ], + "emoji": "🇨🇰", + "name": "flag: Cook Islands" + }, + { + "code": [ + "1F1E8", + "1F1F1" + ], + "emoji": "🇨🇱", + "name": "flag: Chile" + }, + { + "code": [ + "1F1E8", + "1F1F2" + ], + "emoji": "🇨🇲", + "name": "flag: Cameroon" + }, + { + "code": [ + "1F1E8", + "1F1F3" + ], + "emoji": "🇨🇳", + "name": "flag: China" + }, + { + "code": [ + "1F1E8", + "1F1F4" + ], + "emoji": "🇨🇴", + "name": "flag: Colombia" + }, + { + "code": [ + "1F1E8", + "1F1F5" + ], + "emoji": "🇨🇵", + "name": "flag: Clipperton Island" + }, + { + "code": [ + "1F1E8", + "1F1F6" + ], + "emoji": "🇨🇶", + "name": "flag: Sark" + }, + { + "code": [ + "1F1E8", + "1F1F7" + ], + "emoji": "🇨🇷", + "name": "flag: Costa Rica" + }, + { + "code": [ + "1F1E8", + "1F1FA" + ], + "emoji": "🇨🇺", + "name": "flag: Cuba" + }, + { + "code": [ + "1F1E8", + "1F1FB" + ], + "emoji": "🇨🇻", + "name": "flag: Cape Verde" + }, + { + "code": [ + "1F1E8", + "1F1FC" + ], + "emoji": "🇨🇼", + "name": "flag: Curaçao" + }, + { + "code": [ + "1F1E8", + "1F1FD" + ], + "emoji": "🇨🇽", + "name": "flag: Christmas Island" + }, + { + "code": [ + "1F1E8", + "1F1FE" + ], + "emoji": "🇨🇾", + "name": "flag: Cyprus" + }, + { + "code": [ + "1F1E8", + "1F1FF" + ], + "emoji": "🇨🇿", + "name": "flag: Czechia" + }, + { + "code": [ + "1F1E9", + "1F1EA" + ], + "emoji": "🇩🇪", + "name": "flag: Germany" + }, + { + "code": [ + "1F1E9", + "1F1EC" + ], + "emoji": "🇩🇬", + "name": "flag: Diego Garcia" + }, + { + "code": [ + "1F1E9", + "1F1EF" + ], + "emoji": "🇩🇯", + "name": "flag: Djibouti" + }, + { + "code": [ + "1F1E9", + "1F1F0" + ], + "emoji": "🇩🇰", + "name": "flag: Denmark" + }, + { + "code": [ + "1F1E9", + "1F1F2" + ], + "emoji": "🇩🇲", + "name": "flag: Dominica" + }, + { + "code": [ + "1F1E9", + "1F1F4" + ], + "emoji": "🇩🇴", + "name": "flag: Dominican Republic" + }, + { + "code": [ + "1F1E9", + "1F1FF" + ], + "emoji": "🇩🇿", + "name": "flag: Algeria" + }, + { + "code": [ + "1F1EA", + "1F1E6" + ], + "emoji": "🇪🇦", + "name": "flag: Ceuta & Melilla" + }, + { + "code": [ + "1F1EA", + "1F1E8" + ], + "emoji": "🇪🇨", + "name": "flag: Ecuador" + }, + { + "code": [ + "1F1EA", + "1F1EA" + ], + "emoji": "🇪🇪", + "name": "flag: Estonia" + }, + { + "code": [ + "1F1EA", + "1F1EC" + ], + "emoji": "🇪🇬", + "name": "flag: Egypt" + }, + { + "code": [ + "1F1EA", + "1F1ED" + ], + "emoji": "🇪🇭", + "name": "flag: Western Sahara" + }, + { + "code": [ + "1F1EA", + "1F1F7" + ], + "emoji": "🇪🇷", + "name": "flag: Eritrea" + }, + { + "code": [ + "1F1EA", + "1F1F8" + ], + "emoji": "🇪🇸", + "name": "flag: Spain" + }, + { + "code": [ + "1F1EA", + "1F1F9" + ], + "emoji": "🇪🇹", + "name": "flag: Ethiopia" + }, + { + "code": [ + "1F1EA", + "1F1FA" + ], + "emoji": "🇪🇺", + "name": "flag: European Union" + }, + { + "code": [ + "1F1EB", + "1F1EE" + ], + "emoji": "🇫🇮", + "name": "flag: Finland" + }, + { + "code": [ + "1F1EB", + "1F1EF" + ], + "emoji": "🇫🇯", + "name": "flag: Fiji" + }, + { + "code": [ + "1F1EB", + "1F1F0" + ], + "emoji": "🇫🇰", + "name": "flag: Falkland Islands" + }, + { + "code": [ + "1F1EB", + "1F1F2" + ], + "emoji": "🇫🇲", + "name": "flag: Micronesia" + }, + { + "code": [ + "1F1EB", + "1F1F4" + ], + "emoji": "🇫🇴", + "name": "flag: Faroe Islands" + }, + { + "code": [ + "1F1EB", + "1F1F7" + ], + "emoji": "🇫🇷", + "name": "flag: France" + }, + { + "code": [ + "1F1EC", + "1F1E6" + ], + "emoji": "🇬🇦", + "name": "flag: Gabon" + }, + { + "code": [ + "1F1EC", + "1F1E7" + ], + "emoji": "🇬🇧", + "name": "flag: United Kingdom" + }, + { + "code": [ + "1F1EC", + "1F1E9" + ], + "emoji": "🇬🇩", + "name": "flag: Grenada" + }, + { + "code": [ + "1F1EC", + "1F1EA" + ], + "emoji": "🇬🇪", + "name": "flag: Georgia" + }, + { + "code": [ + "1F1EC", + "1F1EB" + ], + "emoji": "🇬🇫", + "name": "flag: French Guiana" + }, + { + "code": [ + "1F1EC", + "1F1EC" + ], + "emoji": "🇬🇬", + "name": "flag: Guernsey" + }, + { + "code": [ + "1F1EC", + "1F1ED" + ], + "emoji": "🇬🇭", + "name": "flag: Ghana" + }, + { + "code": [ + "1F1EC", + "1F1EE" + ], + "emoji": "🇬🇮", + "name": "flag: Gibraltar" + }, + { + "code": [ + "1F1EC", + "1F1F1" + ], + "emoji": "🇬🇱", + "name": "flag: Greenland" + }, + { + "code": [ + "1F1EC", + "1F1F2" + ], + "emoji": "🇬🇲", + "name": "flag: Gambia" + }, + { + "code": [ + "1F1EC", + "1F1F3" + ], + "emoji": "🇬🇳", + "name": "flag: Guinea" + }, + { + "code": [ + "1F1EC", + "1F1F5" + ], + "emoji": "🇬🇵", + "name": "flag: Guadeloupe" + }, + { + "code": [ + "1F1EC", + "1F1F6" + ], + "emoji": "🇬🇶", + "name": "flag: Equatorial Guinea" + }, + { + "code": [ + "1F1EC", + "1F1F7" + ], + "emoji": "🇬🇷", + "name": "flag: Greece" + }, + { + "code": [ + "1F1EC", + "1F1F8" + ], + "emoji": "🇬🇸", + "name": "flag: South Georgia & South Sandwich Islands" + }, + { + "code": [ + "1F1EC", + "1F1F9" + ], + "emoji": "🇬🇹", + "name": "flag: Guatemala" + }, + { + "code": [ + "1F1EC", + "1F1FA" + ], + "emoji": "🇬🇺", + "name": "flag: Guam" + }, + { + "code": [ + "1F1EC", + "1F1FC" + ], + "emoji": "🇬🇼", + "name": "flag: Guinea-Bissau" + }, + { + "code": [ + "1F1EC", + "1F1FE" + ], + "emoji": "🇬🇾", + "name": "flag: Guyana" + }, + { + "code": [ + "1F1ED", + "1F1F0" + ], + "emoji": "🇭🇰", + "name": "flag: Hong Kong SAR China" + }, + { + "code": [ + "1F1ED", + "1F1F2" + ], + "emoji": "🇭🇲", + "name": "flag: Heard & McDonald Islands" + }, + { + "code": [ + "1F1ED", + "1F1F3" + ], + "emoji": "🇭🇳", + "name": "flag: Honduras" + }, + { + "code": [ + "1F1ED", + "1F1F7" + ], + "emoji": "🇭🇷", + "name": "flag: Croatia" + }, + { + "code": [ + "1F1ED", + "1F1F9" + ], + "emoji": "🇭🇹", + "name": "flag: Haiti" + }, + { + "code": [ + "1F1ED", + "1F1FA" + ], + "emoji": "🇭🇺", + "name": "flag: Hungary" + }, + { + "code": [ + "1F1EE", + "1F1E8" + ], + "emoji": "🇮🇨", + "name": "flag: Canary Islands" + }, + { + "code": [ + "1F1EE", + "1F1E9" + ], + "emoji": "🇮🇩", + "name": "flag: Indonesia" + }, + { + "code": [ + "1F1EE", + "1F1EA" + ], + "emoji": "🇮🇪", + "name": "flag: Ireland" + }, + { + "code": [ + "1F1EE", + "1F1F1" + ], + "emoji": "🇮🇱", + "name": "flag: Israel" + }, + { + "code": [ + "1F1EE", + "1F1F2" + ], + "emoji": "🇮🇲", + "name": "flag: Isle of Man" + }, + { + "code": [ + "1F1EE", + "1F1F3" + ], + "emoji": "🇮🇳", + "name": "flag: India" + }, + { + "code": [ + "1F1EE", + "1F1F4" + ], + "emoji": "🇮🇴", + "name": "flag: British Indian Ocean Territory" + }, + { + "code": [ + "1F1EE", + "1F1F6" + ], + "emoji": "🇮🇶", + "name": "flag: Iraq" + }, + { + "code": [ + "1F1EE", + "1F1F7" + ], + "emoji": "🇮🇷", + "name": "flag: Iran" + }, + { + "code": [ + "1F1EE", + "1F1F8" + ], + "emoji": "🇮🇸", + "name": "flag: Iceland" + }, + { + "code": [ + "1F1EE", + "1F1F9" + ], + "emoji": "🇮🇹", + "name": "flag: Italy" + }, + { + "code": [ + "1F1EF", + "1F1EA" + ], + "emoji": "🇯🇪", + "name": "flag: Jersey" + }, + { + "code": [ + "1F1EF", + "1F1F2" + ], + "emoji": "🇯🇲", + "name": "flag: Jamaica" + }, + { + "code": [ + "1F1EF", + "1F1F4" + ], + "emoji": "🇯🇴", + "name": "flag: Jordan" + }, + { + "code": [ + "1F1EF", + "1F1F5" + ], + "emoji": "🇯🇵", + "name": "flag: Japan" + }, + { + "code": [ + "1F1F0", + "1F1EA" + ], + "emoji": "🇰🇪", + "name": "flag: Kenya" + }, + { + "code": [ + "1F1F0", + "1F1EC" + ], + "emoji": "🇰🇬", + "name": "flag: Kyrgyzstan" + }, + { + "code": [ + "1F1F0", + "1F1ED" + ], + "emoji": "🇰🇭", + "name": "flag: Cambodia" + }, + { + "code": [ + "1F1F0", + "1F1EE" + ], + "emoji": "🇰🇮", + "name": "flag: Kiribati" + }, + { + "code": [ + "1F1F0", + "1F1F2" + ], + "emoji": "🇰🇲", + "name": "flag: Comoros" + }, + { + "code": [ + "1F1F0", + "1F1F3" + ], + "emoji": "🇰🇳", + "name": "flag: St. Kitts & Nevis" + }, + { + "code": [ + "1F1F0", + "1F1F5" + ], + "emoji": "🇰🇵", + "name": "flag: North Korea" + }, + { + "code": [ + "1F1F0", + "1F1F7" + ], + "emoji": "🇰🇷", + "name": "flag: South Korea" + }, + { + "code": [ + "1F1F0", + "1F1FC" + ], + "emoji": "🇰🇼", + "name": "flag: Kuwait" + }, + { + "code": [ + "1F1F0", + "1F1FE" + ], + "emoji": "🇰🇾", + "name": "flag: Cayman Islands" + }, + { + "code": [ + "1F1F0", + "1F1FF" + ], + "emoji": "🇰🇿", + "name": "flag: Kazakhstan" + }, + { + "code": [ + "1F1F1", + "1F1E6" + ], + "emoji": "🇱🇦", + "name": "flag: Laos" + }, + { + "code": [ + "1F1F1", + "1F1E7" + ], + "emoji": "🇱🇧", + "name": "flag: Lebanon" + }, + { + "code": [ + "1F1F1", + "1F1E8" + ], + "emoji": "🇱🇨", + "name": "flag: St. Lucia" + }, + { + "code": [ + "1F1F1", + "1F1EE" + ], + "emoji": "🇱🇮", + "name": "flag: Liechtenstein" + }, + { + "code": [ + "1F1F1", + "1F1F0" + ], + "emoji": "🇱🇰", + "name": "flag: Sri Lanka" + }, + { + "code": [ + "1F1F1", + "1F1F7" + ], + "emoji": "🇱🇷", + "name": "flag: Liberia" + }, + { + "code": [ + "1F1F1", + "1F1F8" + ], + "emoji": "🇱🇸", + "name": "flag: Lesotho" + }, + { + "code": [ + "1F1F1", + "1F1F9" + ], + "emoji": "🇱🇹", + "name": "flag: Lithuania" + }, + { + "code": [ + "1F1F1", + "1F1FA" + ], + "emoji": "🇱🇺", + "name": "flag: Luxembourg" + }, + { + "code": [ + "1F1F1", + "1F1FB" + ], + "emoji": "🇱🇻", + "name": "flag: Latvia" + }, + { + "code": [ + "1F1F1", + "1F1FE" + ], + "emoji": "🇱🇾", + "name": "flag: Libya" + }, + { + "code": [ + "1F1F2", + "1F1E6" + ], + "emoji": "🇲🇦", + "name": "flag: Morocco" + }, + { + "code": [ + "1F1F2", + "1F1E8" + ], + "emoji": "🇲🇨", + "name": "flag: Monaco" + }, + { + "code": [ + "1F1F2", + "1F1E9" + ], + "emoji": "🇲🇩", + "name": "flag: Moldova" + }, + { + "code": [ + "1F1F2", + "1F1EA" + ], + "emoji": "🇲🇪", + "name": "flag: Montenegro" + }, + { + "code": [ + "1F1F2", + "1F1EB" + ], + "emoji": "🇲🇫", + "name": "flag: St. Martin" + }, + { + "code": [ + "1F1F2", + "1F1EC" + ], + "emoji": "🇲🇬", + "name": "flag: Madagascar" + }, + { + "code": [ + "1F1F2", + "1F1ED" + ], + "emoji": "🇲🇭", + "name": "flag: Marshall Islands" + }, + { + "code": [ + "1F1F2", + "1F1F0" + ], + "emoji": "🇲🇰", + "name": "flag: North Macedonia" + }, + { + "code": [ + "1F1F2", + "1F1F1" + ], + "emoji": "🇲🇱", + "name": "flag: Mali" + }, + { + "code": [ + "1F1F2", + "1F1F2" + ], + "emoji": "🇲🇲", + "name": "flag: Myanmar (Burma)" + }, + { + "code": [ + "1F1F2", + "1F1F3" + ], + "emoji": "🇲🇳", + "name": "flag: Mongolia" + }, + { + "code": [ + "1F1F2", + "1F1F4" + ], + "emoji": "🇲🇴", + "name": "flag: Macao SAR China" + }, + { + "code": [ + "1F1F2", + "1F1F5" + ], + "emoji": "🇲🇵", + "name": "flag: Northern Mariana Islands" + }, + { + "code": [ + "1F1F2", + "1F1F6" + ], + "emoji": "🇲🇶", + "name": "flag: Martinique" + }, + { + "code": [ + "1F1F2", + "1F1F7" + ], + "emoji": "🇲🇷", + "name": "flag: Mauritania" + }, + { + "code": [ + "1F1F2", + "1F1F8" + ], + "emoji": "🇲🇸", + "name": "flag: Montserrat" + }, + { + "code": [ + "1F1F2", + "1F1F9" + ], + "emoji": "🇲🇹", + "name": "flag: Malta" + }, + { + "code": [ + "1F1F2", + "1F1FA" + ], + "emoji": "🇲🇺", + "name": "flag: Mauritius" + }, + { + "code": [ + "1F1F2", + "1F1FB" + ], + "emoji": "🇲🇻", + "name": "flag: Maldives" + }, + { + "code": [ + "1F1F2", + "1F1FC" + ], + "emoji": "🇲🇼", + "name": "flag: Malawi" + }, + { + "code": [ + "1F1F2", + "1F1FD" + ], + "emoji": "🇲🇽", + "name": "flag: Mexico" + }, + { + "code": [ + "1F1F2", + "1F1FE" + ], + "emoji": "🇲🇾", + "name": "flag: Malaysia" + }, + { + "code": [ + "1F1F2", + "1F1FF" + ], + "emoji": "🇲🇿", + "name": "flag: Mozambique" + }, + { + "code": [ + "1F1F3", + "1F1E6" + ], + "emoji": "🇳🇦", + "name": "flag: Namibia" + }, + { + "code": [ + "1F1F3", + "1F1E8" + ], + "emoji": "🇳🇨", + "name": "flag: New Caledonia" + }, + { + "code": [ + "1F1F3", + "1F1EA" + ], + "emoji": "🇳🇪", + "name": "flag: Niger" + }, + { + "code": [ + "1F1F3", + "1F1EB" + ], + "emoji": "🇳🇫", + "name": "flag: Norfolk Island" + }, + { + "code": [ + "1F1F3", + "1F1EC" + ], + "emoji": "🇳🇬", + "name": "flag: Nigeria" + }, + { + "code": [ + "1F1F3", + "1F1EE" + ], + "emoji": "🇳🇮", + "name": "flag: Nicaragua" + }, + { + "code": [ + "1F1F3", + "1F1F1" + ], + "emoji": "🇳🇱", + "name": "flag: Netherlands" + }, + { + "code": [ + "1F1F3", + "1F1F4" + ], + "emoji": "🇳🇴", + "name": "flag: Norway" + }, + { + "code": [ + "1F1F3", + "1F1F5" + ], + "emoji": "🇳🇵", + "name": "flag: Nepal" + }, + { + "code": [ + "1F1F3", + "1F1F7" + ], + "emoji": "🇳🇷", + "name": "flag: Nauru" + }, + { + "code": [ + "1F1F3", + "1F1FA" + ], + "emoji": "🇳🇺", + "name": "flag: Niue" + }, + { + "code": [ + "1F1F3", + "1F1FF" + ], + "emoji": "🇳🇿", + "name": "flag: New Zealand" + }, + { + "code": [ + "1F1F4", + "1F1F2" + ], + "emoji": "🇴🇲", + "name": "flag: Oman" + }, + { + "code": [ + "1F1F5", + "1F1E6" + ], + "emoji": "🇵🇦", + "name": "flag: Panama" + }, + { + "code": [ + "1F1F5", + "1F1EA" + ], + "emoji": "🇵🇪", + "name": "flag: Peru" + }, + { + "code": [ + "1F1F5", + "1F1EB" + ], + "emoji": "🇵🇫", + "name": "flag: French Polynesia" + }, + { + "code": [ + "1F1F5", + "1F1EC" + ], + "emoji": "🇵🇬", + "name": "flag: Papua New Guinea" + }, + { + "code": [ + "1F1F5", + "1F1ED" + ], + "emoji": "🇵🇭", + "name": "flag: Philippines" + }, + { + "code": [ + "1F1F5", + "1F1F0" + ], + "emoji": "🇵🇰", + "name": "flag: Pakistan" + }, + { + "code": [ + "1F1F5", + "1F1F1" + ], + "emoji": "🇵🇱", + "name": "flag: Poland" + }, + { + "code": [ + "1F1F5", + "1F1F2" + ], + "emoji": "🇵🇲", + "name": "flag: St. Pierre & Miquelon" + }, + { + "code": [ + "1F1F5", + "1F1F3" + ], + "emoji": "🇵🇳", + "name": "flag: Pitcairn Islands" + }, + { + "code": [ + "1F1F5", + "1F1F7" + ], + "emoji": "🇵🇷", + "name": "flag: Puerto Rico" + }, + { + "code": [ + "1F1F5", + "1F1F8" + ], + "emoji": "🇵🇸", + "name": "flag: Palestinian Territories" + }, + { + "code": [ + "1F1F5", + "1F1F9" + ], + "emoji": "🇵🇹", + "name": "flag: Portugal" + }, + { + "code": [ + "1F1F5", + "1F1FC" + ], + "emoji": "🇵🇼", + "name": "flag: Palau" + }, + { + "code": [ + "1F1F5", + "1F1FE" + ], + "emoji": "🇵🇾", + "name": "flag: Paraguay" + }, + { + "code": [ + "1F1F6", + "1F1E6" + ], + "emoji": "🇶🇦", + "name": "flag: Qatar" + }, + { + "code": [ + "1F1F7", + "1F1EA" + ], + "emoji": "🇷🇪", + "name": "flag: Réunion" + }, + { + "code": [ + "1F1F7", + "1F1F4" + ], + "emoji": "🇷🇴", + "name": "flag: Romania" + }, + { + "code": [ + "1F1F7", + "1F1F8" + ], + "emoji": "🇷🇸", + "name": "flag: Serbia" + }, + { + "code": [ + "1F1F7", + "1F1FA" + ], + "emoji": "🇷🇺", + "name": "flag: Russia" + }, + { + "code": [ + "1F1F7", + "1F1FC" + ], + "emoji": "🇷🇼", + "name": "flag: Rwanda" + }, + { + "code": [ + "1F1F8", + "1F1E6" + ], + "emoji": "🇸🇦", + "name": "flag: Saudi Arabia" + }, + { + "code": [ + "1F1F8", + "1F1E7" + ], + "emoji": "🇸🇧", + "name": "flag: Solomon Islands" + }, + { + "code": [ + "1F1F8", + "1F1E8" + ], + "emoji": "🇸🇨", + "name": "flag: Seychelles" + }, + { + "code": [ + "1F1F8", + "1F1E9" + ], + "emoji": "🇸🇩", + "name": "flag: Sudan" + }, + { + "code": [ + "1F1F8", + "1F1EA" + ], + "emoji": "🇸🇪", + "name": "flag: Sweden" + }, + { + "code": [ + "1F1F8", + "1F1EC" + ], + "emoji": "🇸🇬", + "name": "flag: Singapore" + }, + { + "code": [ + "1F1F8", + "1F1ED" + ], + "emoji": "🇸🇭", + "name": "flag: St. Helena" + }, + { + "code": [ + "1F1F8", + "1F1EE" + ], + "emoji": "🇸🇮", + "name": "flag: Slovenia" + }, + { + "code": [ + "1F1F8", + "1F1EF" + ], + "emoji": "🇸🇯", + "name": "flag: Svalbard & Jan Mayen" + }, + { + "code": [ + "1F1F8", + "1F1F0" + ], + "emoji": "🇸🇰", + "name": "flag: Slovakia" + }, + { + "code": [ + "1F1F8", + "1F1F1" + ], + "emoji": "🇸🇱", + "name": "flag: Sierra Leone" + }, + { + "code": [ + "1F1F8", + "1F1F2" + ], + "emoji": "🇸🇲", + "name": "flag: San Marino" + }, + { + "code": [ + "1F1F8", + "1F1F3" + ], + "emoji": "🇸🇳", + "name": "flag: Senegal" + }, + { + "code": [ + "1F1F8", + "1F1F4" + ], + "emoji": "🇸🇴", + "name": "flag: Somalia" + }, + { + "code": [ + "1F1F8", + "1F1F7" + ], + "emoji": "🇸🇷", + "name": "flag: Suriname" + }, + { + "code": [ + "1F1F8", + "1F1F8" + ], + "emoji": "🇸🇸", + "name": "flag: South Sudan" + }, + { + "code": [ + "1F1F8", + "1F1F9" + ], + "emoji": "🇸🇹", + "name": "flag: São Tomé & Príncipe" + }, + { + "code": [ + "1F1F8", + "1F1FB" + ], + "emoji": "🇸🇻", + "name": "flag: El Salvador" + }, + { + "code": [ + "1F1F8", + "1F1FD" + ], + "emoji": "🇸🇽", + "name": "flag: Sint Maarten" + }, + { + "code": [ + "1F1F8", + "1F1FE" + ], + "emoji": "🇸🇾", + "name": "flag: Syria" + }, + { + "code": [ + "1F1F8", + "1F1FF" + ], + "emoji": "🇸🇿", + "name": "flag: Eswatini" + }, + { + "code": [ + "1F1F9", + "1F1E6" + ], + "emoji": "🇹🇦", + "name": "flag: Tristan da Cunha" + }, + { + "code": [ + "1F1F9", + "1F1E8" + ], + "emoji": "🇹🇨", + "name": "flag: Turks & Caicos Islands" + }, + { + "code": [ + "1F1F9", + "1F1E9" + ], + "emoji": "🇹🇩", + "name": "flag: Chad" + }, + { + "code": [ + "1F1F9", + "1F1EB" + ], + "emoji": "🇹🇫", + "name": "flag: French Southern Territories" + }, + { + "code": [ + "1F1F9", + "1F1EC" + ], + "emoji": "🇹🇬", + "name": "flag: Togo" + }, + { + "code": [ + "1F1F9", + "1F1ED" + ], + "emoji": "🇹🇭", + "name": "flag: Thailand" + }, + { + "code": [ + "1F1F9", + "1F1EF" + ], + "emoji": "🇹🇯", + "name": "flag: Tajikistan" + }, + { + "code": [ + "1F1F9", + "1F1F0" + ], + "emoji": "🇹🇰", + "name": "flag: Tokelau" + }, + { + "code": [ + "1F1F9", + "1F1F1" + ], + "emoji": "🇹🇱", + "name": "flag: Timor-Leste" + }, + { + "code": [ + "1F1F9", + "1F1F2" + ], + "emoji": "🇹🇲", + "name": "flag: Turkmenistan" + }, + { + "code": [ + "1F1F9", + "1F1F3" + ], + "emoji": "🇹🇳", + "name": "flag: Tunisia" + }, + { + "code": [ + "1F1F9", + "1F1F4" + ], + "emoji": "🇹🇴", + "name": "flag: Tonga" + }, + { + "code": [ + "1F1F9", + "1F1F7" + ], + "emoji": "🇹🇷", + "name": "flag: Türkiye" + }, + { + "code": [ + "1F1F9", + "1F1F9" + ], + "emoji": "🇹🇹", + "name": "flag: Trinidad & Tobago" + }, + { + "code": [ + "1F1F9", + "1F1FB" + ], + "emoji": "🇹🇻", + "name": "flag: Tuvalu" + }, + { + "code": [ + "1F1F9", + "1F1FC" + ], + "emoji": "🇹🇼", + "name": "flag: Taiwan" + }, + { + "code": [ + "1F1F9", + "1F1FF" + ], + "emoji": "🇹🇿", + "name": "flag: Tanzania" + }, + { + "code": [ + "1F1FA", + "1F1E6" + ], + "emoji": "🇺🇦", + "name": "flag: Ukraine" + }, + { + "code": [ + "1F1FA", + "1F1EC" + ], + "emoji": "🇺🇬", + "name": "flag: Uganda" + }, + { + "code": [ + "1F1FA", + "1F1F2" + ], + "emoji": "🇺🇲", + "name": "flag: U.S. Outlying Islands" + }, + { + "code": [ + "1F1FA", + "1F1F3" + ], + "emoji": "🇺🇳", + "name": "flag: United Nations" + }, + { + "code": [ + "1F1FA", + "1F1F8" + ], + "emoji": "🇺🇸", + "name": "flag: United States" + }, + { + "code": [ + "1F1FA", + "1F1FE" + ], + "emoji": "🇺🇾", + "name": "flag: Uruguay" + }, + { + "code": [ + "1F1FA", + "1F1FF" + ], + "emoji": "🇺🇿", + "name": "flag: Uzbekistan" + }, + { + "code": [ + "1F1FB", + "1F1E6" + ], + "emoji": "🇻🇦", + "name": "flag: Vatican City" + }, + { + "code": [ + "1F1FB", + "1F1E8" + ], + "emoji": "🇻🇨", + "name": "flag: St. Vincent & Grenadines" + }, + { + "code": [ + "1F1FB", + "1F1EA" + ], + "emoji": "🇻🇪", + "name": "flag: Venezuela" + }, + { + "code": [ + "1F1FB", + "1F1EC" + ], + "emoji": "🇻🇬", + "name": "flag: British Virgin Islands" + }, + { + "code": [ + "1F1FB", + "1F1EE" + ], + "emoji": "🇻🇮", + "name": "flag: U.S. Virgin Islands" + }, + { + "code": [ + "1F1FB", + "1F1F3" + ], + "emoji": "🇻🇳", + "name": "flag: Vietnam" + }, + { + "code": [ + "1F1FB", + "1F1FA" + ], + "emoji": "🇻🇺", + "name": "flag: Vanuatu" + }, + { + "code": [ + "1F1FC", + "1F1EB" + ], + "emoji": "🇼🇫", + "name": "flag: Wallis & Futuna" + }, + { + "code": [ + "1F1FC", + "1F1F8" + ], + "emoji": "🇼🇸", + "name": "flag: Samoa" + }, + { + "code": [ + "1F1FD", + "1F1F0" + ], + "emoji": "🇽🇰", + "name": "flag: Kosovo" + }, + { + "code": [ + "1F1FE", + "1F1EA" + ], + "emoji": "🇾🇪", + "name": "flag: Yemen" + }, + { + "code": [ + "1F1FE", + "1F1F9" + ], + "emoji": "🇾🇹", + "name": "flag: Mayotte" + }, + { + "code": [ + "1F1FF", + "1F1E6" + ], + "emoji": "🇿🇦", + "name": "flag: South Africa" + }, + { + "code": [ + "1F1FF", + "1F1F2" + ], + "emoji": "🇿🇲", + "name": "flag: Zambia" + }, + { + "code": [ + "1F1FF", + "1F1FC" + ], + "emoji": "🇿🇼", + "name": "flag: Zimbabwe" + } + ], + "subdivision-flag": [ + { + "code": [ + "1F3F4", + "E0067", + "E0062", + "E0065", + "E006E", + "E0067", + "E007F" + ], + "emoji": "🏴󠁧󠁢󠁥󠁮󠁧󠁿", + "name": "flag: England" + }, + { + "code": [ + "1F3F4", + "E0067", + "E0062", + "E0073", + "E0063", + "E0074", + "E007F" + ], + "emoji": "🏴󠁧󠁢󠁳󠁣󠁴󠁿", + "name": "flag: Scotland" + }, + { + "code": [ + "1F3F4", + "E0067", + "E0062", + "E0077", + "E006C", + "E0073", + "E007F" + ], + "emoji": "🏴󠁧󠁢󠁷󠁬󠁳󠁿", + "name": "flag: Wales" } + ] } + } } \ No newline at end of file diff --git a/app/src/main/assets/kaomoji.json b/app/src/main/assets/kaomoji.json index dac7dd4ca..9988e9882 100644 --- a/app/src/main/assets/kaomoji.json +++ b/app/src/main/assets/kaomoji.json @@ -1,3032 +1,3032 @@ { - "kaomoji": [ - { - "category": "joy", - "value": "(* ^ ω ^)" - }, - { - "category": "joy", - "value": "(´ ∀ ` *)" - }, - { - "category": "joy", - "value": "٩(◕‿◕。)۶" - }, - { - "category": "joy", - "value": "☆*:.。.o(≧▽≦)o.。.:*☆" - }, - { - "category": "joy", - "value": "(o^▽^o)" - }, - { - "category": "joy", - "value": "(⌒▽⌒)☆" - }, - { - "category": "joy", - "value": "<( ̄︶ ̄)>" - }, - { - "category": "joy", - "value": "。.:☆*:・'(*⌒―⌒*)))" - }, - { - "category": "joy", - "value": "ヽ(・∀・)ノ" - }, - { - "category": "joy", - "value": "(´。• ω •。`)" - }, - { - "category": "joy", - "value": "( ̄ω ̄)" - }, - { - "category": "joy", - "value": "`;:゛;`;・(°ε° )" - }, - { - "category": "joy", - "value": "(o・ω・o)" - }, - { - "category": "joy", - "value": "(@^◡^)" - }, - { - "category": "joy", - "value": "ヽ(*・ω・)ノ" - }, - { - "category": "joy", - "value": "(o_ _)ノ彡☆" - }, - { - "category": "joy", - "value": "(^人^)" - }, - { - "category": "joy", - "value": "(o´▽`o)" - }, - { - "category": "joy", - "value": "(*´▽`*)" - }, - { - "category": "joy", - "value": "。゚( ゚^∀^゚)゚。" - }, - { - "category": "joy", - "value": "( ´ ω ` )" - }, - { - "category": "joy", - "value": "(((o(*°▽°*)o)))" - }, - { - "category": "joy", - "value": "(≧◡≦)" - }, - { - "category": "joy", - "value": "(o´∀`o)" - }, - { - "category": "joy", - "value": "(´• ω •`)" - }, - { - "category": "joy", - "value": "(^▽^)" - }, - { - "category": "joy", - "value": "(⌒ω⌒)" - }, - { - "category": "joy", - "value": "∑d(°∀°d)" - }, - { - "category": "joy", - "value": "╰(▔∀▔)╯" - }, - { - "category": "joy", - "value": "(─‿‿─)" - }, - { - "category": "joy", - "value": "(*^‿^*)" - }, - { - "category": "joy", - "value": "ヽ(o^ ^o)ノ" - }, - { - "category": "joy", - "value": "(✯◡✯)" - }, - { - "category": "joy", - "value": "(◕‿◕)" - }, - { - "category": "joy", - "value": "(*≧ω≦*)" - }, - { - "category": "joy", - "value": "(☆▽☆)" - }, - { - "category": "joy", - "value": "(⌒‿⌒)" - }, - { - "category": "joy", - "value": "\(≧▽≦)/" - }, - { - "category": "joy", - "value": "ヽ(o^▽^o)ノ" - }, - { - "category": "joy", - "value": "☆ ~('▽^人)" - }, - { - "category": "joy", - "value": "(*°▽°*)" - }, - { - "category": "joy", - "value": "٩(。•́‿•̀。)۶" - }, - { - "category": "joy", - "value": "(✧ω✧)" - }, - { - "category": "joy", - "value": "ヽ(*⌒▽⌒*)ノ" - }, - { - "category": "joy", - "value": "(´。• ᵕ •。`)" - }, - { - "category": "joy", - "value": "( ´ ▽ ` )" - }, - { - "category": "joy", - "value": "( ̄▽ ̄)" - }, - { - "category": "joy", - "value": "╰(*´︶`*)╯" - }, - { - "category": "joy", - "value": "ヽ(>∀<☆)ノ" - }, - { - "category": "joy", - "value": "o(≧▽≦)o" - }, - { - "category": "joy", - "value": "(☆ω☆)" - }, - { - "category": "joy", - "value": "(っ˘ω˘ς )" - }, - { - "category": "joy", - "value": "\( ̄▽ ̄)/" - }, - { - "category": "joy", - "value": "(*¯︶¯*)" - }, - { - "category": "joy", - "value": "\(^▽^)/" - }, - { - "category": "joy", - "value": "٩(◕‿◕)۶" - }, - { - "category": "joy", - "value": "(o˘◡˘o)" - }, - { - "category": "joy", - "value": "(★ω★)/" - }, - { - "category": "joy", - "value": "(^ヮ^)/" - }, - { - "category": "joy", - "value": "(〃^▽^〃)" - }, - { - "category": "joy", - "value": "(╯✧▽✧)╯" - }, - { - "category": "joy", - "value": "o(>ω<)o" - }, - { - "category": "joy", - "value": "o( ❛ᴗ❛ )o" - }, - { - "category": "joy", - "value": "。゚(TヮT)゚。" - }, - { - "category": "joy", - "value": "( ‾́ ◡ ‾́ )" - }, - { - "category": "joy", - "value": "(ノ´ヮ`)ノ*: ・゚" - }, - { - "category": "joy", - "value": "(b ᵔ▽ᵔ)b" - }, - { - "category": "joy", - "value": "(๑˃ᴗ˂)ﻭ" - }, - { - "category": "joy", - "value": "(๑˘︶˘๑)" - }, - { - "category": "joy", - "value": "( ˙꒳​˙ )" - }, - { - "category": "joy", - "value": "(*꒦ິ꒳꒦ີ)" - }, - { - "category": "joy", - "value": "°˖✧◝(⁰▿⁰)◜✧˖°" - }, - { - "category": "joy", - "value": "(´・ᴗ・ ` )" - }, - { - "category": "joy", - "value": "(ノ◕ヮ◕)ノ*:・゚✧" - }, - { - "category": "joy", - "value": "(„• ֊ •„)" - }, - { - "category": "joy", - "value": "(.❛ ᴗ ❛.)" - }, - { - "category": "joy", - "value": "(⁀ᗢ⁀)" - }, - { - "category": "joy", - "value": "(¬‿¬ )" - }, - { - "category": "joy", - "value": "(¬‿¬ )" - }, - { - "category": "joy", - "value": "(* ̄▽ ̄)b" - }, - { - "category": "joy", - "value": "( ˙▿˙ )" - }, - { - "category": "joy", - "value": "(¯▿¯)" - }, - { - "category": "joy", - "value": "( ◕▿◕ )" - }, - { - "category": "joy", - "value": "\(٥⁀▽⁀ )/" - }, - { - "category": "joy", - "value": "(„• ᴗ •„)" - }, - { - "category": "joy", - "value": "(ᵔ◡ᵔ)" - }, - { - "category": "joy", - "value": "( ´ ▿ ` )" - }, - { - "category": "love", - "value": "(ノ´ з `)ノ" - }, - { - "category": "love", - "value": "(♡μ_μ)" - }, - { - "category": "love", - "value": "(*^^*)♡" - }, - { - "category": "love", - "value": "☆⌒ヽ(*'、^*)chu" - }, - { - "category": "love", - "value": "(♡-_-♡)" - }, - { - "category": "love", - "value": "( ̄ε ̄@)" - }, - { - "category": "love", - "value": "ヽ(♡‿♡)ノ" - }, - { - "category": "love", - "value": "( ´ ∀ `)ノ~ ♡" - }, - { - "category": "love", - "value": "(─‿‿─)♡" - }, - { - "category": "love", - "value": "(´。• ᵕ •。`) ♡" - }, - { - "category": "love", - "value": "(*♡∀♡)" - }, - { - "category": "love", - "value": "(。・//ε//・。)" - }, - { - "category": "love", - "value": "(´ ω `♡)" - }, - { - "category": "love", - "value": "♡( ◡‿◡ )" - }, - { - "category": "love", - "value": "(◕‿◕)♡" - }, - { - "category": "love", - "value": "(/▽\*)。o○♡" - }, - { - "category": "love", - "value": "(ღ˘⌣˘ღ)" - }, - { - "category": "love", - "value": "(♡°▽°♡)" - }, - { - "category": "love", - "value": "♡(。- ω -)" - }, - { - "category": "love", - "value": "♡ ~('▽^人)" - }, - { - "category": "love", - "value": "(´• ω •`) ♡" - }, - { - "category": "love", - "value": "(´ ε ` )♡" - }, - { - "category": "love", - "value": "(´。• ω •。`) ♡" - }, - { - "category": "love", - "value": "( ´ ▽ ` ).。o♡" - }, - { - "category": "love", - "value": "╰(*´︶`*)╯♡" - }, - { - "category": "love", - "value": "(*˘︶˘*).。.:*♡" - }, - { - "category": "love", - "value": "(♡˙︶˙♡)" - }, - { - "category": "love", - "value": "♡\( ̄▽ ̄)/♡" - }, - { - "category": "love", - "value": "(≧◡≦) ♡" - }, - { - "category": "love", - "value": "(⌒▽⌒)♡" - }, - { - "category": "love", - "value": "(*¯ ³¯*)♡" - }, - { - "category": "love", - "value": "(っ˘з(˘⌣˘ ) ♡" - }, - { - "category": "love", - "value": "♡ (˘▽˘>ԅ( ˘⌣˘)" - }, - { - "category": "love", - "value": "( ˘⌣˘)♡(˘⌣˘ )" - }, - { - "category": "love", - "value": "(/^-^(^ ^*)/ ♡" - }, - { - "category": "love", - "value": "٩(♡ε♡)۶" - }, - { - "category": "love", - "value": "σ(≧ε≦σ) ♡" - }, - { - "category": "love", - "value": "♡ (⇀ 3 ↼)" - }, - { - "category": "love", - "value": "♡ ( ̄З ̄)" - }, - { - "category": "love", - "value": "(❤ω❤)" - }, - { - "category": "love", - "value": "(˘∀˘)/(μ‿μ) ❤" - }, - { - "category": "love", - "value": "❤ (ɔˆз(ˆ⌣ˆc)" - }, - { - "category": "love", - "value": "(´♡‿♡`)" - }, - { - "category": "love", - "value": "(°◡°♡)" - }, - { - "category": "love", - "value": "Σ>―(〃°ω°〃)♡→" - }, - { - "category": "love", - "value": "(´,,•ω•,,)♡" - }, - { - "category": "love", - "value": "(´꒳`)♡" - }, - { - "category": "embarassment", - "value": "(⌒_⌒;)" - }, - { - "category": "embarassment", - "value": "(o^ ^o)" - }, - { - "category": "embarassment", - "value": "(*/ω\)" - }, - { - "category": "embarassment", - "value": "(*/。\)" - }, - { - "category": "embarassment", - "value": "(*/_\)" - }, - { - "category": "embarassment", - "value": "(*ノωノ)" - }, - { - "category": "embarassment", - "value": "(o-_-o)" - }, - { - "category": "embarassment", - "value": "(*μ_μ)" - }, - { - "category": "embarassment", - "value": "( ◡‿◡ *)" - }, - { - "category": "embarassment", - "value": "(ᵔ.ᵔ)" - }, - { - "category": "embarassment", - "value": "(*ノ∀`*)" - }, - { - "category": "embarassment", - "value": "(//▽//)" - }, - { - "category": "embarassment", - "value": "(//ω//)" - }, - { - "category": "embarassment", - "value": "(ノ*°▽°*)" - }, - { - "category": "embarassment", - "value": "(*^.^*)" - }, - { - "category": "embarassment", - "value": "(*ノ▽ノ)" - }, - { - "category": "embarassment", - "value": "( ̄▽ ̄*)ゞ" - }, - { - "category": "embarassment", - "value": "(⁄ ⁄•⁄ω⁄•⁄ ⁄)" - }, - { - "category": "embarassment", - "value": "(*/▽\*)" - }, - { - "category": "embarassment", - "value": "(⁄ ⁄>⁄ ▽ ⁄<⁄ ⁄)" - }, - { - "category": "embarassment", - "value": "(„ಡωಡ„)" - }, - { - "category": "embarassment", - "value": "(ง ื▿ ื)ว" - }, - { - "category": "embarassment", - "value": "( 〃▽〃)" - }, - { - "category": "embarassment", - "value": "(/▿\ )" - }, - { - "category": "embarassment", - "value": "(/// ̄  ̄///)" - }, - { - "category": "sympathy", - "value": "(ノ_<。)ヾ(´ ▽ ` )" - }, - { - "category": "sympathy", - "value": "。・゚・(ノД`)ヽ( ̄ω ̄ )" - }, - { - "category": "sympathy", - "value": "ρ(- ω -、)ヾ( ̄ω ̄; )" - }, - { - "category": "sympathy", - "value": "ヽ( ̄ω ̄(。。 )ゝ" - }, - { - "category": "sympathy", - "value": "(*´ I `)ノ゚(ノД`゚)゚。" - }, - { - "category": "sympathy", - "value": "ヽ(~_~(・_・ )ゝ" - }, - { - "category": "sympathy", - "value": "(ノ_;)ヾ(´ ∀ ` )" - }, - { - "category": "sympathy", - "value": "(; ω ; )ヾ(´∀`* )" - }, - { - "category": "sympathy", - "value": "(*´ー)ノ(ノд`)" - }, - { - "category": "sympathy", - "value": "(´-ω-`( _ _ )" - }, - { - "category": "sympathy", - "value": "(っ´ω`)ノ(╥ω╥)" - }, - { - "category": "sympathy", - "value": "(o・_・)ノ”(ノ_<、)" - }, - { - "category": "dissatisfaction", - "value": "(#><)" - }, - { - "category": "dissatisfaction", - "value": "(;⌣̀_⌣́)" - }, - { - "category": "dissatisfaction", - "value": "☆o(><;)○" - }, - { - "category": "dissatisfaction", - "value": "( ̄  ̄|||)" - }, - { - "category": "dissatisfaction", - "value": "(; ̄Д ̄)" - }, - { - "category": "dissatisfaction", - "value": "( ̄□ ̄」)" - }, - { - "category": "dissatisfaction", - "value": "(# ̄0 ̄)" - }, - { - "category": "dissatisfaction", - "value": "(# ̄ω ̄)" - }, - { - "category": "dissatisfaction", - "value": "(¬_¬;)" - }, - { - "category": "dissatisfaction", - "value": "(>m<)" - }, - { - "category": "dissatisfaction", - "value": "(」°ロ°)」" - }, - { - "category": "dissatisfaction", - "value": "(〃>_<;〃)" - }, - { - "category": "dissatisfaction", - "value": "(^^#)" - }, - { - "category": "dissatisfaction", - "value": "(︶︹︺)" - }, - { - "category": "dissatisfaction", - "value": "( ̄ヘ ̄)" - }, - { - "category": "dissatisfaction", - "value": "<( ̄ ﹌  ̄)>" - }, - { - "category": "dissatisfaction", - "value": "( ̄︿ ̄)" - }, - { - "category": "dissatisfaction", - "value": "(>﹏<)" - }, - { - "category": "dissatisfaction", - "value": "(--_--)" - }, - { - "category": "dissatisfaction", - "value": "凸( ̄ヘ ̄)" - }, - { - "category": "dissatisfaction", - "value": "ヾ(  ̄O ̄)ツ" - }, - { - "category": "dissatisfaction", - "value": "(⇀‸↼‶)" - }, - { - "category": "dissatisfaction", - "value": "o(>< )o" - }, - { - "category": "dissatisfaction", - "value": "(」><)」" - }, - { - "category": "dissatisfaction", - "value": "(ᗒᗣᗕ)՞" - }, - { - "category": "dissatisfaction", - "value": "(눈_눈)" - }, - { - "category": "anger", - "value": "(#`Д´)" - }, - { - "category": "anger", - "value": "(`皿´#)" - }, - { - "category": "anger", - "value": "( ` ω ´ )" - }, - { - "category": "anger", - "value": "ヽ( `д´*)ノ" - }, - { - "category": "anger", - "value": "(・`ω´・)" - }, - { - "category": "anger", - "value": "(`ー´)" - }, - { - "category": "anger", - "value": "ヽ(`⌒´メ)ノ" - }, - { - "category": "anger", - "value": "凸(`△´#)" - }, - { - "category": "anger", - "value": "( `ε´ )" - }, - { - "category": "anger", - "value": "ψ( ` ∇ ´ )ψ" - }, - { - "category": "anger", - "value": "ヾ(`ヘ´)ノ゙" - }, - { - "category": "anger", - "value": "ヽ(‵﹏´)ノ" - }, - { - "category": "anger", - "value": "(メ` ロ ´)" - }, - { - "category": "anger", - "value": "(╬`益´)" - }, - { - "category": "anger", - "value": "┌∩┐(◣_◢)┌∩┐" - }, - { - "category": "anger", - "value": "凸( ` ロ ´ )凸" - }, - { - "category": "anger", - "value": "Σ(▼□▼メ)" - }, - { - "category": "anger", - "value": "(°ㅂ°╬)" - }, - { - "category": "anger", - "value": "ψ(▼へ▼メ)~→" - }, - { - "category": "anger", - "value": "(ノ°益°)ノ" - }, - { - "category": "anger", - "value": "(҂ `з´ )" - }, - { - "category": "anger", - "value": "(‡▼益▼)" - }, - { - "category": "anger", - "value": "(҂` ロ ´)凸" - }, - { - "category": "anger", - "value": "((╬◣﹏◢))" - }, - { - "category": "anger", - "value": "٩(╬ʘ益ʘ╬)۶" - }, - { - "category": "anger", - "value": "(╬ Ò﹏Ó)" - }, - { - "category": "anger", - "value": "\\٩(๑`^´๑)۶//" - }, - { - "category": "anger", - "value": "(凸ಠ益ಠ)凸" - }, - { - "category": "anger", - "value": "↑_(ΦwΦ)Ψ" - }, - { - "category": "anger", - "value": "←~(Ψ▼ー▼)∈" - }, - { - "category": "anger", - "value": "୧((#Φ益Φ#))୨" - }, - { - "category": "anger", - "value": "٩(ఠ益ఠ)۶" - }, - { - "category": "anger", - "value": "(ノಥ益ಥ)ノ" - }, - { - "category": "sadness", - "value": "(ノ_<。)" - }, - { - "category": "sadness", - "value": "(-_-)" - }, - { - "category": "sadness", - "value": "(´-ω-`)" - }, - { - "category": "sadness", - "value": ".・゚゚・(/ω\)・゚゚・." - }, - { - "category": "sadness", - "value": "(μ_μ)" - }, - { - "category": "sadness", - "value": "(ノД`)" - }, - { - "category": "sadness", - "value": "(-ω-、)" - }, - { - "category": "sadness", - "value": "。゜゜(´O`) ゜゜。" - }, - { - "category": "sadness", - "value": "o(TヘTo)" - }, - { - "category": "sadness", - "value": "( ; ω ; )" - }, - { - "category": "sadness", - "value": "(。╯︵╰。)" - }, - { - "category": "sadness", - "value": "。・゚゚*(>д<)*゚゚・。" - }, - { - "category": "sadness", - "value": "( ゚,_ゝ`)" - }, - { - "category": "sadness", - "value": "(个_个)" - }, - { - "category": "sadness", - "value": "(╯︵╰,)" - }, - { - "category": "sadness", - "value": "。・゚(゚><゚)゚・。" - }, - { - "category": "sadness", - "value": "( ╥ω╥ )" - }, - { - "category": "sadness", - "value": "(╯_╰)" - }, - { - "category": "sadness", - "value": "(╥_╥)" - }, - { - "category": "sadness", - "value": ".。・゚゚・(>_<)・゚゚・。." - }, - { - "category": "sadness", - "value": "(/ˍ・、)" - }, - { - "category": "sadness", - "value": "(ノ_<、)" - }, - { - "category": "sadness", - "value": "(╥﹏╥)" - }, - { - "category": "sadness", - "value": "。゚(。ノωヽ。)゚。" - }, - { - "category": "sadness", - "value": "(つω`。)" - }, - { - "category": "sadness", - "value": "(。T ω T。)" - }, - { - "category": "sadness", - "value": "(ノω・、)" - }, - { - "category": "sadness", - "value": "・゚・(。>ω<。)・゚・" - }, - { - "category": "sadness", - "value": "(T_T)" - }, - { - "category": "sadness", - "value": "(>_<)" - }, - { - "category": "sadness", - "value": "(っ˘̩╭╮˘̩)っ" - }, - { - "category": "sadness", - "value": "。゚・ (>﹏<) ・゚。" - }, - { - "category": "sadness", - "value": "o(〒﹏〒)o" - }, - { - "category": "sadness", - "value": "(。•́︿•̀。)" - }, - { - "category": "sadness", - "value": "(ಥ﹏ಥ)" - }, - { - "category": "sadness", - "value": "(ಡ‸ಡ)" - }, - { - "category": "pain", - "value": "~(>_<~)" - }, - { - "category": "pain", - "value": "☆⌒(> _ <)" - }, - { - "category": "pain", - "value": "☆⌒(>。<)" - }, - { - "category": "pain", - "value": "(☆_@)" - }, - { - "category": "pain", - "value": "(×_×)" - }, - { - "category": "pain", - "value": "(x_x)" - }, - { - "category": "pain", - "value": "(×_×)⌒☆" - }, - { - "category": "pain", - "value": "(x_x)⌒☆" - }, - { - "category": "pain", - "value": "(×﹏×)" - }, - { - "category": "pain", - "value": "☆(#××)" - }, - { - "category": "pain", - "value": "(+_+)" - }, - { - "category": "pain", - "value": "[ ± _ ± ]" - }, - { - "category": "pain", - "value": "٩(× ×)۶" - }, - { - "category": "pain", - "value": "_:(´ཀ`」 ∠):_" - }, - { - "category": "pain", - "value": "(メ﹏メ)" - }, - { - "category": "fear", - "value": "(ノωヽ)" - }, - { - "category": "fear", - "value": "(/。\)" - }, - { - "category": "fear", - "value": "(ノ_ヽ)" - }, - { - "category": "fear", - "value": "..・ヾ(。><)シ" - }, - { - "category": "fear", - "value": "(″ロ゛)" - }, - { - "category": "fear", - "value": "(;;;*_*)" - }, - { - "category": "fear", - "value": "(・人・)" - }, - { - "category": "fear", - "value": "\(〇_o)/" - }, - { - "category": "fear", - "value": "(/ω\)" - }, - { - "category": "fear", - "value": "(/_\)" - }, - { - "category": "fear", - "value": "〜(><)〜" - }, - { - "category": "fear", - "value": "Σ(°△°|||)︴" - }, - { - "category": "fear", - "value": "(((><)))" - }, - { - "category": "fear", - "value": "{{ (>_<) }}" - }, - { - "category": "fear", - "value": "\(º □ º l|l)/" - }, - { - "category": "fear", - "value": "〣( ºΔº )〣" - }, - { - "category": "fear", - "value": "▓▒░(°◡°)░▒▓" - }, - { - "category": "indifference", - "value": "ヽ(ー_ー )ノ" - }, - { - "category": "indifference", - "value": "ヽ(´ー` )┌" - }, - { - "category": "indifference", - "value": "┐(‘~` )┌" - }, - { - "category": "indifference", - "value": "ヽ(  ̄д ̄)ノ" - }, - { - "category": "indifference", - "value": "┐( ̄ヘ ̄)┌" - }, - { - "category": "indifference", - "value": "ヽ( ̄~ ̄ )ノ" - }, - { - "category": "indifference", - "value": "╮( ̄_ ̄)╭" - }, - { - "category": "indifference", - "value": "ヽ(ˇヘˇ)ノ" - }, - { - "category": "indifference", - "value": "┐( ̄~ ̄)┌" - }, - { - "category": "indifference", - "value": "┐(︶▽︶)┌" - }, - { - "category": "indifference", - "value": "╮( ̄~ ̄)╭" - }, - { - "category": "indifference", - "value": "¯_(ツ)_/¯" - }, - { - "category": "indifference", - "value": "┐( ´ д ` )┌" - }, - { - "category": "indifference", - "value": "╮(︶︿︶)╭" - }, - { - "category": "indifference", - "value": "┐( ̄∀ ̄)┌" - }, - { - "category": "indifference", - "value": "┐( ˘ 、 ˘ )┌" - }, - { - "category": "indifference", - "value": "╮(︶▽︶)╭" - }, - { - "category": "indifference", - "value": "╮( ˘ 、 ˘ )╭" - }, - { - "category": "indifference", - "value": "┐( ˘_˘ )┌" - }, - { - "category": "indifference", - "value": "╮( ˘_˘ )╭" - }, - { - "category": "indifference", - "value": "┐( ̄ヮ ̄)┌" - }, - { - "category": "indifference", - "value": "ᕕ( ᐛ )ᕗ" - }, - { - "category": "indifference", - "value": "┐(シ)┌" - }, - { - "category": "confusion", - "value": "( ̄ω ̄;)" - }, - { - "category": "confusion", - "value": "σ( ̄、 ̄〃)" - }, - { - "category": "confusion", - "value": "( ̄~ ̄;)" - }, - { - "category": "confusion", - "value": "(-_-;)・・・" - }, - { - "category": "confusion", - "value": "┐('~`;)┌" - }, - { - "category": "confusion", - "value": "(・_・ヾ" - }, - { - "category": "confusion", - "value": "(〃 ̄ω ̄〃ゞ" - }, - { - "category": "confusion", - "value": "┐( ̄ヘ ̄;)┌" - }, - { - "category": "confusion", - "value": "(・_・;)" - }, - { - "category": "confusion", - "value": "( ̄_ ̄)・・・" - }, - { - "category": "confusion", - "value": "╮( ̄ω ̄;)╭" - }, - { - "category": "confusion", - "value": "(¯ . ¯;)" - }, - { - "category": "confusion", - "value": "(@_@)" - }, - { - "category": "confusion", - "value": "(・・;)ゞ" - }, - { - "category": "confusion", - "value": "Σ( ̄。 ̄ノ)" - }, - { - "category": "confusion", - "value": "(・・ ) ?" - }, - { - "category": "confusion", - "value": "(•ิ_•ิ)?" - }, - { - "category": "confusion", - "value": "(◎ ◎)ゞ" - }, - { - "category": "confusion", - "value": "(ーー;)" - }, - { - "category": "confusion", - "value": "ლ(ಠ_ಠ ლ)" - }, - { - "category": "confusion", - "value": "ლ(¯ロ¯\"ლ)" - }, - { - "category": "confusion", - "value": "(¯ . ¯٥)" - }, - { - "category": "confusion", - "value": "(¯ ¯٥)" - }, - { - "category": "doubt", - "value": "(¬_¬)" - }, - { - "category": "doubt", - "value": "(→_→)" - }, - { - "category": "doubt", - "value": "(¬ ¬)" - }, - { - "category": "doubt", - "value": "(¬‿¬ )" - }, - { - "category": "doubt", - "value": "(¬_¬ )" - }, - { - "category": "doubt", - "value": "(←_←)" - }, - { - "category": "doubt", - "value": "(¬ ¬ )" - }, - { - "category": "doubt", - "value": "(¬‿¬ )" - }, - { - "category": "doubt", - "value": "(↼_↼)" - }, - { - "category": "doubt", - "value": "(⇀_⇀)" - }, - { - "category": "doubt", - "value": "(ᓀ ᓀ)" - }, - { - "category": "surprise", - "value": "w(°o°)w" - }, - { - "category": "surprise", - "value": "ヽ(°〇°)ノ" - }, - { - "category": "surprise", - "value": "Σ(O_O)" - }, - { - "category": "surprise", - "value": "Σ(°ロ°)" - }, - { - "category": "surprise", - "value": "(⊙_⊙)" - }, - { - "category": "surprise", - "value": "(o_O)" - }, - { - "category": "surprise", - "value": "(O_O;)" - }, - { - "category": "surprise", - "value": "(O.O)" - }, - { - "category": "surprise", - "value": "(°ロ°) !" - }, - { - "category": "surprise", - "value": "(o_O) !" - }, - { - "category": "surprise", - "value": "(□_□)" - }, - { - "category": "surprise", - "value": "Σ(□_□)" - }, - { - "category": "surprise", - "value": "∑(O_O;)" - }, - { - "category": "surprise", - "value": "( : ౦ ‸ ౦ : )" - }, - { - "category": "greeting", - "value": "(*・ω・)ノ" - }, - { - "category": "greeting", - "value": "( ̄▽ ̄)ノ" - }, - { - "category": "greeting", - "value": "(°▽°)/" - }, - { - "category": "greeting", - "value": "( ´ ∀ ` )ノ" - }, - { - "category": "greeting", - "value": "(^-^*)/" - }, - { - "category": "greeting", - "value": "(@´ー`)ノ゙" - }, - { - "category": "greeting", - "value": "(´• ω •`)ノ" - }, - { - "category": "greeting", - "value": "( ° ∀ ° )ノ゙" - }, - { - "category": "greeting", - "value": "ヾ(*'▽'*)" - }, - { - "category": "greeting", - "value": "\(⌒▽⌒)" - }, - { - "category": "greeting", - "value": "ヾ(☆▽☆)" - }, - { - "category": "greeting", - "value": "( ´ ▽ ` )ノ" - }, - { - "category": "greeting", - "value": "(^0^)ノ" - }, - { - "category": "greeting", - "value": "~ヾ(・ω・)" - }, - { - "category": "greeting", - "value": "(・∀・)ノ" - }, - { - "category": "greeting", - "value": "ヾ(・ω・*)" - }, - { - "category": "greeting", - "value": "(*°ー°)ノ" - }, - { - "category": "greeting", - "value": "(・_・)ノ" - }, - { - "category": "greeting", - "value": "(o´ω`o)ノ" - }, - { - "category": "greeting", - "value": "( ´ ▽ ` )/" - }, - { - "category": "greeting", - "value": "( ̄ω ̄)/" - }, - { - "category": "greeting", - "value": "( ´ ω ` )ノ゙" - }, - { - "category": "greeting", - "value": "(⌒ω⌒)ノ" - }, - { - "category": "greeting", - "value": "(o^ ^o)/" - }, - { - "category": "greeting", - "value": "(≧▽≦)/" - }, - { - "category": "greeting", - "value": "(✧∀✧)/" - }, - { - "category": "greeting", - "value": "(o´▽`o)ノ" - }, - { - "category": "greeting", - "value": "( ̄▽ ̄)/" - }, - { - "category": "hugging", - "value": "(づ ̄ ³ ̄)づ" - }, - { - "category": "hugging", - "value": "(つ≧▽≦)つ" - }, - { - "category": "hugging", - "value": "(つ✧ω✧)つ" - }, - { - "category": "hugging", - "value": "(づ ◕‿◕ )づ" - }, - { - "category": "hugging", - "value": "(⊃。•́‿•̀。)⊃" - }, - { - "category": "hugging", - "value": "(つ . •́ _ʖ •̀ .)つ" - }, - { - "category": "hugging", - "value": "(っಠ‿ಠ)っ" - }, - { - "category": "hugging", - "value": "(づ◡﹏◡)づ" - }, - { - "category": "hugging", - "value": "⊂(´• ω •`⊂)" - }, - { - "category": "hugging", - "value": "⊂(・ω・*⊂)" - }, - { - "category": "hugging", - "value": "⊂( ̄▽ ̄)⊃" - }, - { - "category": "hugging", - "value": "⊂( ´ ▽ ` )⊃" - }, - { - "category": "hugging", - "value": "( ~*-*)~" - }, - { - "category": "hugging", - "value": "(。•̀ᴗ-)✧" - }, - { - "category": "winking", - "value": "(^_~)" - }, - { - "category": "winking", - "value": "( ゚o⌒)" - }, - { - "category": "winking", - "value": "(^_-)≡☆" - }, - { - "category": "winking", - "value": "(^ω~)" - }, - { - "category": "winking", - "value": "(>ω^)" - }, - { - "category": "winking", - "value": "(~人^)" - }, - { - "category": "winking", - "value": "(^_-)" - }, - { - "category": "winking", - "value": "( -_・)" - }, - { - "category": "winking", - "value": "(^_<)〜☆" - }, - { - "category": "winking", - "value": "(^人<)〜☆" - }, - { - "category": "winking", - "value": "☆⌒(≧▽​° )" - }, - { - "category": "winking", - "value": "☆⌒(ゝ。∂)" - }, - { - "category": "winking", - "value": "(^_<)" - }, - { - "category": "winking", - "value": "(^_−)☆" - }, - { - "category": "winking", - "value": "(・ω<)☆" - }, - { - "category": "winking", - "value": "(^.~)☆" - }, - { - "category": "winking", - "value": "(^.~)" - }, - { - "category": "apologizing", - "value": "m(_ _)m" - }, - { - "category": "apologizing", - "value": "(シ_ _)シ" - }, - { - "category": "apologizing", - "value": "m(. .)m" - }, - { - "category": "apologizing", - "value": "<(_ _)>" - }, - { - "category": "apologizing", - "value": "人(_ _*)" - }, - { - "category": "apologizing", - "value": "(*_ _)人" - }, - { - "category": "apologizing", - "value": "m(_ _;m)" - }, - { - "category": "apologizing", - "value": "(m;_ _)m" - }, - { - "category": "apologizing", - "value": "(シ. .)シ" - }, - { - "category": "nosebleeding", - "value": "(* ̄ii ̄)" - }, - { - "category": "nosebleeding", - "value": "( ̄ハ ̄*)" - }, - { - "category": "nosebleeding", - "value": "( ̄ハ ̄)" - }, - { - "category": "nosebleeding", - "value": "(^་།^)" - }, - { - "category": "nosebleeding", - "value": "(^〃^)" - }, - { - "category": "nosebleeding", - "value": "( ̄ ¨ヽ ̄)" - }, - { - "category": "nosebleeding", - "value": "( ̄ ; ̄)" - }, - { - "category": "nosebleeding", - "value": "( ̄ ;; ̄)" - }, - { - "category": "hiding", - "value": "|・ω・)" - }, - { - "category": "hiding", - "value": "ヘ(・_|" - }, - { - "category": "hiding", - "value": "|ω・)ノ" - }, - { - "category": "hiding", - "value": "ヾ(・|" - }, - { - "category": "hiding", - "value": "|д・)" - }, - { - "category": "hiding", - "value": "|_ ̄))" - }, - { - "category": "hiding", - "value": "|▽//)" - }, - { - "category": "hiding", - "value": "┬┴┬┴┤(・_├┬┴┬┴" - }, - { - "category": "hiding", - "value": "┬┴┬┴┤・ω・)ノ" - }, - { - "category": "hiding", - "value": "┬┴┬┴┤( ͡° ͜ʖ├┬┴┬┴" - }, - { - "category": "hiding", - "value": "┬┴┬┴┤(・_├┬┴┬┴" - }, - { - "category": "hiding", - "value": "|_・)" - }, - { - "category": "hiding", - "value": "|・д・)ノ" - }, - { - "category": "hiding", - "value": "|ʘ‿ʘ)╯" - }, - { - "category": "writing", - "value": "__φ(..)" - }, - { - "category": "writing", - "value": "(  ̄ー ̄)φ__" - }, - { - "category": "writing", - "value": "__φ(。。)" - }, - { - "category": "writing", - "value": "__φ(..;)" - }, - { - "category": "writing", - "value": "ヾ( `ー´)シφ__" - }, - { - "category": "writing", - "value": "__〆( ̄ー ̄ )" - }, - { - "category": "writing", - "value": "....φ(・∀・*)" - }, - { - "category": "writing", - "value": "___〆(・∀・)" - }, - { - "category": "writing", - "value": "( ^▽^)ψ__" - }, - { - "category": "writing", - "value": "....φ(︶▽︶)φ...." - }, - { - "category": "writing", - "value": "( . .)φ__" - }, - { - "category": "writing", - "value": "__φ(◎◎ヘ)" - }, - { - "category": "running", - "value": "☆ミ(o*・ω・)ノ" - }, - { - "category": "running", - "value": "C= C= C= C= C=┌(;・ω・)┘" - }, - { - "category": "running", - "value": "─=≡Σ((( つ><)つ" - }, - { - "category": "running", - "value": "ε=ε=ε=ε=┌(; ̄▽ ̄)┘" - }, - { - "category": "running", - "value": "ε=ε=┌( >_<)┘" - }, - { - "category": "running", - "value": "C= C= C= C=┌( `ー´)┘" - }, - { - "category": "running", - "value": "ε===(っ≧ω≦)っ" - }, - { - "category": "running", - "value": "ヽ( ̄д ̄;)ノ=3=3=3" - }, - { - "category": "running", - "value": "。。。ミヽ(。><)ノ" - }, - { - "category": "sleeping", - "value": "[(--)]..zzZ" - }, - { - "category": "sleeping", - "value": "(-_-) zzZ" - }, - { - "category": "sleeping", - "value": "(∪。∪)。。。zzZ" - }, - { - "category": "sleeping", - "value": "(-ω-) zzZ" - }, - { - "category": "sleeping", - "value": "( ̄o ̄) zzZZzzZZ" - }, - { - "category": "sleeping", - "value": "(( _ _ ))..zzzZZ" - }, - { - "category": "sleeping", - "value": "( ̄ρ ̄)..zzZZ" - }, - { - "category": "sleeping", - "value": "(-.-)...zzz" - }, - { - "category": "sleeping", - "value": "(_ _*) Z z z" - }, - { - "category": "cat", - "value": "(=^・ω・^=)" - }, - { - "category": "cat", - "value": "(=^・ェ・^=)" - }, - { - "category": "cat", - "value": "(=①ω①=)" - }, - { - "category": "cat", - "value": "( =ω=)..nyaa" - }, - { - "category": "cat", - "value": "(= ; ェ ; =)" - }, - { - "category": "cat", - "value": "(=`ω´=)" - }, - { - "category": "cat", - "value": "(=^‥^=)" - }, - { - "category": "cat", - "value": "( =ノωヽ=)" - }, - { - "category": "cat", - "value": "(=⌒‿‿⌒=)" - }, - { - "category": "cat", - "value": "(=^ ◡ ^=)" - }, - { - "category": "cat", - "value": "(=^-ω-^=)" - }, - { - "category": "cat", - "value": "ヾ(=`ω´=)ノ”" - }, - { - "category": "cat", - "value": "(^• ω •^)" - }, - { - "category": "cat", - "value": "(/ =ω=)/" - }, - { - "category": "cat", - "value": "ฅ(•ㅅ•❀)ฅ" - }, - { - "category": "cat", - "value": "ฅ(• ɪ •)ฅ" - }, - { - "category": "cat", - "value": "ଲ(ⓛ ω ⓛ)ଲ" - }, - { - "category": "cat", - "value": "(^=◕ᴥ◕=^)" - }, - { - "category": "cat", - "value": "( =ω= )" - }, - { - "category": "cat", - "value": "(^˵◕ω◕˵^)" - }, - { - "category": "cat", - "value": "(^◔ᴥ◔^)" - }, - { - "category": "cat", - "value": "(^◕ᴥ◕^)" - }, - { - "category": "cat", - "value": "ต(=ω=)ต" - }, - { - "category": "cat", - "value": "( Φ ω Φ )" - }, - { - "category": "cat", - "value": "ฅ(^◕ᴥ◕^)ฅ" - }, - { - "category": "bear", - "value": "( ´(エ)ˋ )" - }, - { - "category": "bear", - "value": "(* ̄(エ) ̄*)" - }, - { - "category": "bear", - "value": "ヽ( ̄(エ) ̄)ノ" - }, - { - "category": "bear", - "value": "(/ ̄(エ) ̄)/" - }, - { - "category": "bear", - "value": "( ̄(エ) ̄)" - }, - { - "category": "bear", - "value": "ヽ( ˋ(エ)´ )ノ" - }, - { - "category": "bear", - "value": "⊂( ̄(エ) ̄)⊃" - }, - { - "category": "bear", - "value": "(/(エ)\)" - }, - { - "category": "bear", - "value": "⊂(´(ェ)ˋ)⊃" - }, - { - "category": "bear", - "value": "(/-(エ)-\)" - }, - { - "category": "bear", - "value": "(/°(エ)°)/" - }, - { - "category": "bear", - "value": "ʕ ᵔᴥᵔ ʔ" - }, - { - "category": "bear", - "value": "ʕ •ᴥ• ʔ" - }, - { - "category": "bear", - "value": "ʕ •̀ ω •́ ʔ" - }, - { - "category": "bear", - "value": "ʕ •̀ o •́ ʔ" - }, - { - "category": "bear", - "value": "ʕಠᴥಠʔ" - }, - { - "category": "dog", - "value": "∪^ェ^∪" - }, - { - "category": "dog", - "value": "∪・ω・∪" - }, - { - "category": "dog", - "value": "∪ ̄- ̄∪" - }, - { - "category": "dog", - "value": "∪・ェ・∪" - }, - { - "category": "dog", - "value": "U^皿^U" - }, - { - "category": "dog", - "value": "UTェTU" - }, - { - "category": "dog", - "value": "U^ェ^U" - }, - { - "category": "dog", - "value": "V●ᴥ●V" - }, - { - "category": "dog", - "value": "U・ᴥ・U" - }, - { - "category": "rabbit", - "value": "/(≧ x ≦)\" - }, - { - "category": "rabbit", - "value": "/(・ × ・)\" - }, - { - "category": "rabbit", - "value": "/(=´x`=)\" - }, - { - "category": "rabbit", - "value": "/(^ x ^)\" - }, - { - "category": "rabbit", - "value": "/(=・ x ・=)\" - }, - { - "category": "rabbit", - "value": "/(^ × ^)\" - }, - { - "category": "rabbit", - "value": "/(>×<)\" - }, - { - "category": "rabbit", - "value": "/(˃ᆺ˂)\" - }, - { - "category": "pig", - "value": "( ´(00)ˋ )" - }, - { - "category": "pig", - "value": "( ̄(ω) ̄)" - }, - { - "category": "pig", - "value": "ヽ( ˋ(00)´ )ノ" - }, - { - "category": "pig", - "value": "( ´(oo)ˋ )" - }, - { - "category": "pig", - "value": "\( ̄(oo) ̄)/" - }, - { - "category": "pig", - "value": "。゚(゚´(00)`゚)゚。" - }, - { - "category": "pig", - "value": "( ̄(00) ̄)" - }, - { - "category": "pig", - "value": "(ˆ(oo)ˆ)" - }, - { - "category": "bird", - "value": "( ̄Θ ̄)" - }, - { - "category": "bird", - "value": "(`・Θ・´)" - }, - { - "category": "bird", - "value": "( ˋ Θ ´ )" - }, - { - "category": "bird", - "value": "(◉Θ◉)" - }, - { - "category": "bird", - "value": "\( ˋ Θ ´ )/" - }, - { - "category": "bird", - "value": "(・θ・)" - }, - { - "category": "bird", - "value": "(・Θ・)" - }, - { - "category": "bird", - "value": "ヾ( ̄◇ ̄)ノ〃" - }, - { - "category": "bird", - "value": "(・Θ・)" - }, - { - "category": "fish", - "value": "(°)#))<<" - }, - { - "category": "fish", - "value": "<・ )))><<" - }, - { - "category": "fish", - "value": "ζ°)))彡" - }, - { - "category": "fish", - "value": ">°))))彡" - }, - { - "category": "fish", - "value": "(°))<<" - }, - { - "category": "fish", - "value": ">^)))<~~" - }, - { - "category": "fish", - "value": "≧( ° ° )≦" - }, - { - "category": "spider", - "value": "/╲/╭(ఠఠ益ఠఠ)╮/╱" - }, - { - "category": "spider", - "value": "/╲/╭(ರರ⌓ರರ)╮/╱" - }, - { - "category": "spider", - "value": "/╲/╭༼ ººل͟ºº ༽╮/╱" - }, - { - "category": "spider", - "value": "/╲/╭( ͡°͡° ͜ʖ ͡°͡°)╮/╱" - }, - { - "category": "spider", - "value": "/╲/╭[ ᴼᴼ ౪ ᴼᴼ]╮/╱" - }, - { - "category": "spider", - "value": "/╲/( •̀ ω •́ )/╱" - }, - { - "category": "spider", - "value": "/╲/╭[☉﹏☉]╮/╱" - }, - { - "category": "friends", - "value": "ヾ(・ω・)メ(・ω・)ノ" - }, - { - "category": "friends", - "value": "ヽ(∀° )人( °∀)ノ" - }, - { - "category": "friends", - "value": "ヽ( ⌒o⌒)人(⌒-⌒ )ノ" - }, - { - "category": "friends", - "value": "(*^ω^)八(⌒▽⌒)八(-‿‿- )ヽ" - }, - { - "category": "friends", - "value": "\(^∀^)メ(^∀^)ノ" - }, - { - "category": "friends", - "value": "ヾ( ̄ー ̄(≧ω≦*)ゝ" - }, - { - "category": "friends", - "value": "ヽ( ⌒ω⌒)人(=^‥^= )ノ" - }, - { - "category": "friends", - "value": "ヽ(≧◡≦)八(o^ ^o)ノ" - }, - { - "category": "friends", - "value": "(*・∀・)爻(・∀・*)" - }, - { - "category": "friends", - "value": "。*:☆(・ω・人・ω・)。:゜☆。" - }, - { - "category": "friends", - "value": "o(^^o)(o^^o)(o^^o)(o^^)o" - }, - { - "category": "friends", - "value": "((( ̄( ̄( ̄▽ ̄) ̄) ̄)))" - }, - { - "category": "friends", - "value": "(°(°ω(°ω°(☆ω☆)°ω°)ω°)°)" - }, - { - "category": "friends", - "value": "ヾ(・ω・`)ノヾ(´・ω・)ノ゛" - }, - { - "category": "friends", - "value": "Ψ( `∀)(∀´ )Ψ" - }, - { - "category": "friends", - "value": "(っ˘▽˘)(˘▽˘)˘▽˘ς)" - }, - { - "category": "friends", - "value": "(((*°▽°*)八(*°▽°*)))" - }, - { - "category": "friends", - "value": "☆ヾ(*´・∀・)ノヾ(・∀・`*)ノ☆" - }, - { - "category": "friends", - "value": "(*^ω^)人(^ω^*)" - }, - { - "category": "friends", - "value": "٩(๑・ิᴗ・ิ)۶٩(・ิᴗ・ิ๑)۶" - }, - { - "category": "friends", - "value": "(☞°ヮ°)☞ ☜(°ヮ°☜)" - }, - { - "category": "friends", - "value": "\(▽ ̄ ( ̄▽ ̄) /  ̄▽)/" - }, - { - "category": "friends", - "value": "( ˙▿˙ )/( ˙▿˙ )/" - }, - { - "category": "enemies", - "value": "ヽ( ・∀・)ノ_θ彡☆Σ(ノ `Д´)ノ" - }, - { - "category": "enemies", - "value": "(*´∇`)┌θ☆(ノ>_<)ノ" - }, - { - "category": "enemies", - "value": "(  ̄ω ̄)ノ゙⌒☆ミ(o _ _)o" - }, - { - "category": "enemies", - "value": "(*`0´)θ☆(メ°皿°)ノ" - }, - { - "category": "enemies", - "value": "(o¬‿¬o )...☆ミ(*x_x)" - }, - { - "category": "enemies", - "value": "(╬ ̄皿 ̄)=○#( ̄#)3 ̄)" - }, - { - "category": "enemies", - "value": "(; -_-)――――――C<―_-)" - }, - { - "category": "enemies", - "value": "<(  ̄︿ ̄)︵θ︵θ︵☆(>口<-)" - }, - { - "category": "enemies", - "value": "( ̄ε(# ̄)☆╰╮o( ̄▽ ̄///)" - }, - { - "category": "enemies", - "value": "ヽ(>_<ヽ) ―⊂|=0ヘ(^‿^ )" - }, - { - "category": "enemies", - "value": "ヘ(>_<ヘ) ¬o( ̄‿ ̄メ)" - }, - { - "category": "enemies", - "value": ",,(((  ̄□)_/ \_(○ ̄ ))),," - }, - { - "category": "enemies", - "value": "(҂` ロ ´)︻デ═一 \(º □ º l|l)/" - }, - { - "category": "enemies", - "value": "(╯°Д°)╯︵ /(.□ . \)" - }, - { - "category": "enemies", - "value": "(¬_¬'')ԅ( ̄ε ̄ԅ)" - }, - { - "category": "enemies", - "value": "/( .□.)\ ︵╰(°益°)╯︵ /(.□. /)" - }, - { - "category": "enemies", - "value": "(ノ-.-)ノ….((((((((((((●~* ( >_<)" - }, - { - "category": "enemies", - "value": "!!(メ ̄  ̄)_θ☆°0°)/" - }, - { - "category": "enemies", - "value": "(`⌒*)O-(`⌒´Q)" - }, - { - "category": "enemies", - "value": "(((ง’ω’)و三 ง’ω’)ڡ≡ ☆⌒ミ((x_x)" - }, - { - "category": "enemies", - "value": "(งಠ_ಠ)ง σ( •̀ ω •́ σ)" - }, - { - "category": "enemies", - "value": "(っ•﹏•)っ ✴==≡눈٩(`皿´҂)ง" - }, - { - "category": "enemies", - "value": "(「• ω •)「 (⌒ω⌒`)" - }, - { - "category": "enemies", - "value": "( °ᴗ°)~ð (/❛o❛)" - }, - { - "category": "weapons", - "value": "( ・∀・)・・・--------☆" - }, - { - "category": "weapons", - "value": "(/-_・)/D・・・・・------ →" - }, - { - "category": "weapons", - "value": "(^ω^)ノ゙(((((((((●~*" - }, - { - "category": "weapons", - "value": "( -ω-)/占~~~~~" - }, - { - "category": "weapons", - "value": "(/・・)ノ   (( く ((へ" - }, - { - "category": "weapons", - "value": "―⊂|=0ヘ(^^ )" - }, - { - "category": "weapons", - "value": "○∞∞∞∞ヽ(^ー^ )" - }, - { - "category": "weapons", - "value": "(; ・_・)――――C" - }, - { - "category": "weapons", - "value": "(ಠ o ಠ)¤=[]:::::>" - }, - { - "category": "weapons", - "value": "(*^^)/~~~~~~~~~~◎" - }, - { - "category": "weapons", - "value": "¬o( ̄- ̄メ)" - }, - { - "category": "weapons", - "value": "―(T_T)→" - }, - { - "category": "weapons", - "value": "(((  ̄□)_/" - }, - { - "category": "weapons", - "value": "(メ` ロ ´)︻デ═一" - }, - { - "category": "weapons", - "value": "( ´-ω・)︻┻┳══━一" - }, - { - "category": "weapons", - "value": "(メ ̄▽ ̄)︻┳═一" - }, - { - "category": "weapons", - "value": "✴==≡눈٩(`皿´҂)ง" - }, - { - "category": "weapons", - "value": "Q(`⌒´Q)" - }, - { - "category": "magic", - "value": "(ノ ˘_˘)ノ ζ|||ζ ζ|||ζ ζ|||ζ" - }, - { - "category": "magic", - "value": "(ノ≧∀≦)ノ ‥…━━━★" - }, - { - "category": "magic", - "value": "(ノ>ω<)ノ :。・:*:・゚’★,。・:*:・゚’☆" - }, - { - "category": "magic", - "value": "(ノ°∀°)ノ⌒・*:.。. .。.:*・゜゚・*☆" - }, - { - "category": "magic", - "value": "╰( ͡° ͜ʖ ͡° )つ──☆*:・゚" - }, - { - "category": "magic", - "value": "(# ̄□ ̄)o━∈・・━━━━☆" - }, - { - "category": "magic", - "value": "(⊃。•́‿•̀。)⊃━✿✿✿✿✿✿" - }, - { - "category": "magic", - "value": "(∩ᄑ_ᄑ)⊃━☆゚*・。*・:≡( ε:)" - }, - { - "category": "magic", - "value": "(/ ̄ー ̄)/~~☆’.・.・:★’.・.・:☆" - }, - { - "category": "magic", - "value": "(∩` ロ ´)⊃━炎炎炎炎炎" - }, - { - "category": "food", - "value": "(っ˘ڡ˘ς)" - }, - { - "category": "food", - "value": "( o˘◡˘o) ┌iii┐" - }, - { - "category": "food", - "value": "( ’ω’)旦~~" - }, - { - "category": "food", - "value": "( ˘▽˘)っ♨" - }, - { - "category": "food", - "value": "♨o(>_<)o♨" - }, - { - "category": "food", - "value": "( ・ω・)o-{{[〃]}}" - }, - { - "category": "food", - "value": "( ・ω・)⊃-[二二]" - }, - { - "category": "food", - "value": "( ・・)つ―{}@{}@{}-" - }, - { - "category": "food", - "value": "( ・・)つ-●●●" - }, - { - "category": "food", - "value": "(*´ー`)旦 旦( ̄ω ̄*)" - }, - { - "category": "food", - "value": "(*´з`)口゚。゚口(・∀・ )" - }, - { - "category": "food", - "value": "( o^ ^o)且 且(´ω`*)" - }, - { - "category": "food", - "value": "(  ̄▽ ̄)[] [](≧▽≦ )" - }, - { - "category": "food", - "value": "( *^^)o∀*∀o(^^* )" - }, - { - "category": "food", - "value": "( ^^)_旦~~  ~~U_(^^ )" - }, - { - "category": "food", - "value": "(* ̄▽ ̄)旦 且(´∀`*)" - }, - { - "category": "food", - "value": "-●●●-c(・・ )" - }, - { - "category": "food", - "value": "( ・・)つ―●○◎-" - }, - { - "category": "music", - "value": "ヾ(´〇`)ノ♪♪♪" - }, - { - "category": "music", - "value": "ヘ( ̄ω ̄ヘ)" - }, - { - "category": "music", - "value": "(〜 ̄▽ ̄)〜" - }, - { - "category": "music", - "value": "〜( ̄▽ ̄〜)" - }, - { - "category": "music", - "value": "ヽ(o´∀`)ノ♪♬" - }, - { - "category": "music", - "value": "(ノ≧∀≦)ノ" - }, - { - "category": "music", - "value": "♪ヽ(^^ヽ)♪" - }, - { - "category": "music", - "value": "♪(/_ _ )/♪" - }, - { - "category": "music", - "value": "♪♬((d⌒ω⌒b))♬♪" - }, - { - "category": "music", - "value": "└( ̄- ̄└))" - }, - { - "category": "music", - "value": "((┘ ̄ω ̄)┘" - }, - { - "category": "music", - "value": "√( ̄‥ ̄√)" - }, - { - "category": "music", - "value": "└(^^)┐" - }, - { - "category": "music", - "value": "┌(^^)┘" - }, - { - "category": "music", - "value": "\( ̄▽ ̄)\" - }, - { - "category": "music", - "value": "/( ̄▽ ̄)/" - }, - { - "category": "music", - "value": "( ̄▽ ̄)/♫•*¨*•.¸¸♪" - }, - { - "category": "music", - "value": "(^_^♪)" - }, - { - "category": "music", - "value": "(~˘▽˘)~" - }, - { - "category": "music", - "value": "~(˘▽˘~)" - }, - { - "category": "music", - "value": "ヾ(⌐■_■)ノ♪" - }, - { - "category": "music", - "value": "(〜 ̄△ ̄)〜" - }, - { - "category": "music", - "value": "(~‾▽‾)~" - }, - { - "category": "music", - "value": "~(˘▽˘)~" - }, - { - "category": "music", - "value": "乁( • ω •乁)" - }, - { - "category": "music", - "value": "(「• ω •)「" - }, - { - "category": "music", - "value": "⁽⁽◝( • ω • )◜⁾⁾" - }, - { - "category": "music", - "value": "✺◟( • ω • )◞✺" - }, - { - "category": "music", - "value": "♬♫♪◖(● o ●)◗♪♫♬" - }, - { - "category": "music", - "value": "( ˘ ɜ˘) ♬♪♫" - }, - { - "category": "music", - "value": "♪♪♪ ヽ(ˇ∀ˇ )ゞ" - }, - { - "category": "music", - "value": "(ˇ▽ˇ)ノ♪♬♫" - }, - { - "category": "games", - "value": "( ^^)p_____|_o____q(^^ )" - }, - { - "category": "games", - "value": "(/o^)/ °⊥ \(^o\)" - }, - { - "category": "games", - "value": "!(;゚o゚)o/ ̄ ̄ ̄ ̄ ̄ ̄ ̄~ >゚))))彡" - }, - { - "category": "games", - "value": "ヽ(^o^)ρ┳┻┳°σ(^o^)ノ" - }, - { - "category": "games", - "value": "(/_^)/  ● \(^_\)" - }, - { - "category": "games", - "value": "( (≡|≡))_/ \_((≡|≡) )" - }, - { - "category": "games", - "value": "( ノ-_-)ノ゙_□ VS □_ヾ(^-^ヽ)" - }, - { - "category": "games", - "value": "ヽ(;^ ^)ノ゙ ......___〇" - }, - { - "category": "games", - "value": "(=O*_*)=O Q(*_*Q)" - }, - { - "category": "games", - "value": "Ю ○三 \( ̄^ ̄\)" - }, - { - "category": "faces", - "value": "( ͡° ͜ʖ ͡°)" - }, - { - "category": "faces", - "value": "( ͡° ʖ̯ ͡°)" - }, - { - "category": "faces", - "value": "( ͠° ͟ʖ ͡°)" - }, - { - "category": "faces", - "value": "( ͡ᵔ ͜ʖ ͡ᵔ)" - }, - { - "category": "faces", - "value": "( . •́ _ʖ •̀ .)" - }, - { - "category": "faces", - "value": "( ఠ ͟ʖ ఠ)" - }, - { - "category": "faces", - "value": "( ͡ಠ ʖ̯ ͡ಠ)" - }, - { - "category": "faces", - "value": "( ಠ ʖ̯ ಠ)" - }, - { - "category": "faces", - "value": "( ಠ ͜ʖ ಠ)" - }, - { - "category": "faces", - "value": "( ಥ ʖ̯ ಥ)" - }, - { - "category": "faces", - "value": "( ͡• ͜ʖ ͡• )" - }, - { - "category": "faces", - "value": "( ・ิ ͜ʖ ・ิ)" - }, - { - "category": "faces", - "value": "( ͡ ͜ʖ ͡ )" - }, - { - "category": "faces", - "value": "(≖ ͜ʖ≖)" - }, - { - "category": "faces", - "value": "(ʘ ʖ̯ ʘ)" - }, - { - "category": "faces", - "value": "(ʘ ͟ʖ ʘ)" - }, - { - "category": "faces", - "value": "(ʘ ͜ʖ ʘ)" - }, - { - "category": "faces", - "value": "(;´༎ຶٹ༎ຶ`)" - }, - { - "category": "special", - "value": "٩(ˊ〇ˋ*)و" - }, - { - "category": "special", - "value": "( ̄^ ̄)ゞ" - }, - { - "category": "special", - "value": "(-‸ლ)" - }, - { - "category": "special", - "value": "(╯°益°)╯彡┻━┻" - }, - { - "category": "special", - "value": "(╮°-°)╮┳━━┳ ( ╯°□°)╯ ┻━━┻" - }, - { - "category": "special", - "value": "┬─┬ノ( º _ ºノ)" - }, - { - "category": "special", - "value": "(oT-T)尸" - }, - { - "category": "special", - "value": "( ͡° ͜ʖ ͡°)" - }, - { - "category": "special", - "value": "[̲̅$̲̅(̲̅ ͡° ͜ʖ ͡°̲̅)̲̅$̲̅]" - }, - { - "category": "special", - "value": "(ಠ_ಠ)" - }, - { - "category": "special", - "value": "౦0o 。 (‾́。‾́ )y~~" - }, - { - "category": "special", - "value": "( ̄﹃ ̄)" - }, - { - "category": "special", - "value": "(x(x_(x_x(O_o)x_x)_x)x)" - }, - { - "category": "special", - "value": "( ・ω・)☞" - }, - { - "category": "special", - "value": "(⌐■_■)" - }, - { - "category": "special", - "value": "(◕‿◕✿)" - }, - { - "category": "special", - "value": "(  ̄.)o-  【 TV 】" - }, - { - "category": "special", - "value": "`、ヽ`ヽ`、ヽ(ノ><)ノ `、ヽ`☂ヽ`、ヽ" - }, - { - "category": "special", - "value": "‿︵‿︵‿︵‿ヽ(°□° )ノ︵‿︵‿︵‿︵" - }, - { - "category": "special", - "value": "( • )( • )ԅ(≖‿≖ԅ)" - }, - { - "category": "special", - "value": "( ^▽^)っ✂╰⋃╯" - }, - { - "category": "special", - "value": "〜〜(/ ̄▽)/ 〜ф" - }, - { - "category": "special", - "value": "ଘ(੭ˊᵕˋ)੭* ੈ✩‧₊˚" - }, - { - "category": "special", - "value": "ଘ(੭ˊ꒳​ˋ)੭✧" - }, - { - "category": "special", - "value": "_(:3 」∠)_" - }, - { - "category": "special", - "value": "∠( ᐛ 」∠)_" - } - ] + "kaomoji": [ + { + "category": "joy", + "value": "(* ^ ω ^)" + }, + { + "category": "joy", + "value": "(´ ∀ ` *)" + }, + { + "category": "joy", + "value": "٩(◕‿◕。)۶" + }, + { + "category": "joy", + "value": "☆*:.。.o(≧▽≦)o.。.:*☆" + }, + { + "category": "joy", + "value": "(o^▽^o)" + }, + { + "category": "joy", + "value": "(⌒▽⌒)☆" + }, + { + "category": "joy", + "value": "<( ̄︶ ̄)>" + }, + { + "category": "joy", + "value": "。.:☆*:・'(*⌒―⌒*)))" + }, + { + "category": "joy", + "value": "ヽ(・∀・)ノ" + }, + { + "category": "joy", + "value": "(´。• ω •。`)" + }, + { + "category": "joy", + "value": "( ̄ω ̄)" + }, + { + "category": "joy", + "value": "`;:゛;`;・(°ε° )" + }, + { + "category": "joy", + "value": "(o・ω・o)" + }, + { + "category": "joy", + "value": "(@^◡^)" + }, + { + "category": "joy", + "value": "ヽ(*・ω・)ノ" + }, + { + "category": "joy", + "value": "(o_ _)ノ彡☆" + }, + { + "category": "joy", + "value": "(^人^)" + }, + { + "category": "joy", + "value": "(o´▽`o)" + }, + { + "category": "joy", + "value": "(*´▽`*)" + }, + { + "category": "joy", + "value": "。゚( ゚^∀^゚)゚。" + }, + { + "category": "joy", + "value": "( ´ ω ` )" + }, + { + "category": "joy", + "value": "(((o(*°▽°*)o)))" + }, + { + "category": "joy", + "value": "(≧◡≦)" + }, + { + "category": "joy", + "value": "(o´∀`o)" + }, + { + "category": "joy", + "value": "(´• ω •`)" + }, + { + "category": "joy", + "value": "(^▽^)" + }, + { + "category": "joy", + "value": "(⌒ω⌒)" + }, + { + "category": "joy", + "value": "∑d(°∀°d)" + }, + { + "category": "joy", + "value": "╰(▔∀▔)╯" + }, + { + "category": "joy", + "value": "(─‿‿─)" + }, + { + "category": "joy", + "value": "(*^‿^*)" + }, + { + "category": "joy", + "value": "ヽ(o^ ^o)ノ" + }, + { + "category": "joy", + "value": "(✯◡✯)" + }, + { + "category": "joy", + "value": "(◕‿◕)" + }, + { + "category": "joy", + "value": "(*≧ω≦*)" + }, + { + "category": "joy", + "value": "(☆▽☆)" + }, + { + "category": "joy", + "value": "(⌒‿⌒)" + }, + { + "category": "joy", + "value": "\(≧▽≦)/" + }, + { + "category": "joy", + "value": "ヽ(o^▽^o)ノ" + }, + { + "category": "joy", + "value": "☆ ~('▽^人)" + }, + { + "category": "joy", + "value": "(*°▽°*)" + }, + { + "category": "joy", + "value": "٩(。•́‿•̀。)۶" + }, + { + "category": "joy", + "value": "(✧ω✧)" + }, + { + "category": "joy", + "value": "ヽ(*⌒▽⌒*)ノ" + }, + { + "category": "joy", + "value": "(´。• ᵕ •。`)" + }, + { + "category": "joy", + "value": "( ´ ▽ ` )" + }, + { + "category": "joy", + "value": "( ̄▽ ̄)" + }, + { + "category": "joy", + "value": "╰(*´︶`*)╯" + }, + { + "category": "joy", + "value": "ヽ(>∀<☆)ノ" + }, + { + "category": "joy", + "value": "o(≧▽≦)o" + }, + { + "category": "joy", + "value": "(☆ω☆)" + }, + { + "category": "joy", + "value": "(っ˘ω˘ς )" + }, + { + "category": "joy", + "value": "\( ̄▽ ̄)/" + }, + { + "category": "joy", + "value": "(*¯︶¯*)" + }, + { + "category": "joy", + "value": "\(^▽^)/" + }, + { + "category": "joy", + "value": "٩(◕‿◕)۶" + }, + { + "category": "joy", + "value": "(o˘◡˘o)" + }, + { + "category": "joy", + "value": "(★ω★)/" + }, + { + "category": "joy", + "value": "(^ヮ^)/" + }, + { + "category": "joy", + "value": "(〃^▽^〃)" + }, + { + "category": "joy", + "value": "(╯✧▽✧)╯" + }, + { + "category": "joy", + "value": "o(>ω<)o" + }, + { + "category": "joy", + "value": "o( ❛ᴗ❛ )o" + }, + { + "category": "joy", + "value": "。゚(TヮT)゚。" + }, + { + "category": "joy", + "value": "( ‾́ ◡ ‾́ )" + }, + { + "category": "joy", + "value": "(ノ´ヮ`)ノ*: ・゚" + }, + { + "category": "joy", + "value": "(b ᵔ▽ᵔ)b" + }, + { + "category": "joy", + "value": "(๑˃ᴗ˂)ﻭ" + }, + { + "category": "joy", + "value": "(๑˘︶˘๑)" + }, + { + "category": "joy", + "value": "( ˙꒳​˙ )" + }, + { + "category": "joy", + "value": "(*꒦ິ꒳꒦ີ)" + }, + { + "category": "joy", + "value": "°˖✧◝(⁰▿⁰)◜✧˖°" + }, + { + "category": "joy", + "value": "(´・ᴗ・ ` )" + }, + { + "category": "joy", + "value": "(ノ◕ヮ◕)ノ*:・゚✧" + }, + { + "category": "joy", + "value": "(„• ֊ •„)" + }, + { + "category": "joy", + "value": "(.❛ ᴗ ❛.)" + }, + { + "category": "joy", + "value": "(⁀ᗢ⁀)" + }, + { + "category": "joy", + "value": "(¬‿¬ )" + }, + { + "category": "joy", + "value": "(¬‿¬ )" + }, + { + "category": "joy", + "value": "(* ̄▽ ̄)b" + }, + { + "category": "joy", + "value": "( ˙▿˙ )" + }, + { + "category": "joy", + "value": "(¯▿¯)" + }, + { + "category": "joy", + "value": "( ◕▿◕ )" + }, + { + "category": "joy", + "value": "\(٥⁀▽⁀ )/" + }, + { + "category": "joy", + "value": "(„• ᴗ •„)" + }, + { + "category": "joy", + "value": "(ᵔ◡ᵔ)" + }, + { + "category": "joy", + "value": "( ´ ▿ ` )" + }, + { + "category": "love", + "value": "(ノ´ з `)ノ" + }, + { + "category": "love", + "value": "(♡μ_μ)" + }, + { + "category": "love", + "value": "(*^^*)♡" + }, + { + "category": "love", + "value": "☆⌒ヽ(*'、^*)chu" + }, + { + "category": "love", + "value": "(♡-_-♡)" + }, + { + "category": "love", + "value": "( ̄ε ̄@)" + }, + { + "category": "love", + "value": "ヽ(♡‿♡)ノ" + }, + { + "category": "love", + "value": "( ´ ∀ `)ノ~ ♡" + }, + { + "category": "love", + "value": "(─‿‿─)♡" + }, + { + "category": "love", + "value": "(´。• ᵕ •。`) ♡" + }, + { + "category": "love", + "value": "(*♡∀♡)" + }, + { + "category": "love", + "value": "(。・//ε//・。)" + }, + { + "category": "love", + "value": "(´ ω `♡)" + }, + { + "category": "love", + "value": "♡( ◡‿◡ )" + }, + { + "category": "love", + "value": "(◕‿◕)♡" + }, + { + "category": "love", + "value": "(/▽\*)。o○♡" + }, + { + "category": "love", + "value": "(ღ˘⌣˘ღ)" + }, + { + "category": "love", + "value": "(♡°▽°♡)" + }, + { + "category": "love", + "value": "♡(。- ω -)" + }, + { + "category": "love", + "value": "♡ ~('▽^人)" + }, + { + "category": "love", + "value": "(´• ω •`) ♡" + }, + { + "category": "love", + "value": "(´ ε ` )♡" + }, + { + "category": "love", + "value": "(´。• ω •。`) ♡" + }, + { + "category": "love", + "value": "( ´ ▽ ` ).。o♡" + }, + { + "category": "love", + "value": "╰(*´︶`*)╯♡" + }, + { + "category": "love", + "value": "(*˘︶˘*).。.:*♡" + }, + { + "category": "love", + "value": "(♡˙︶˙♡)" + }, + { + "category": "love", + "value": "♡\( ̄▽ ̄)/♡" + }, + { + "category": "love", + "value": "(≧◡≦) ♡" + }, + { + "category": "love", + "value": "(⌒▽⌒)♡" + }, + { + "category": "love", + "value": "(*¯ ³¯*)♡" + }, + { + "category": "love", + "value": "(っ˘з(˘⌣˘ ) ♡" + }, + { + "category": "love", + "value": "♡ (˘▽˘>ԅ( ˘⌣˘)" + }, + { + "category": "love", + "value": "( ˘⌣˘)♡(˘⌣˘ )" + }, + { + "category": "love", + "value": "(/^-^(^ ^*)/ ♡" + }, + { + "category": "love", + "value": "٩(♡ε♡)۶" + }, + { + "category": "love", + "value": "σ(≧ε≦σ) ♡" + }, + { + "category": "love", + "value": "♡ (⇀ 3 ↼)" + }, + { + "category": "love", + "value": "♡ ( ̄З ̄)" + }, + { + "category": "love", + "value": "(❤ω❤)" + }, + { + "category": "love", + "value": "(˘∀˘)/(μ‿μ) ❤" + }, + { + "category": "love", + "value": "❤ (ɔˆз(ˆ⌣ˆc)" + }, + { + "category": "love", + "value": "(´♡‿♡`)" + }, + { + "category": "love", + "value": "(°◡°♡)" + }, + { + "category": "love", + "value": "Σ>―(〃°ω°〃)♡→" + }, + { + "category": "love", + "value": "(´,,•ω•,,)♡" + }, + { + "category": "love", + "value": "(´꒳`)♡" + }, + { + "category": "embarassment", + "value": "(⌒_⌒;)" + }, + { + "category": "embarassment", + "value": "(o^ ^o)" + }, + { + "category": "embarassment", + "value": "(*/ω\)" + }, + { + "category": "embarassment", + "value": "(*/。\)" + }, + { + "category": "embarassment", + "value": "(*/_\)" + }, + { + "category": "embarassment", + "value": "(*ノωノ)" + }, + { + "category": "embarassment", + "value": "(o-_-o)" + }, + { + "category": "embarassment", + "value": "(*μ_μ)" + }, + { + "category": "embarassment", + "value": "( ◡‿◡ *)" + }, + { + "category": "embarassment", + "value": "(ᵔ.ᵔ)" + }, + { + "category": "embarassment", + "value": "(*ノ∀`*)" + }, + { + "category": "embarassment", + "value": "(//▽//)" + }, + { + "category": "embarassment", + "value": "(//ω//)" + }, + { + "category": "embarassment", + "value": "(ノ*°▽°*)" + }, + { + "category": "embarassment", + "value": "(*^.^*)" + }, + { + "category": "embarassment", + "value": "(*ノ▽ノ)" + }, + { + "category": "embarassment", + "value": "( ̄▽ ̄*)ゞ" + }, + { + "category": "embarassment", + "value": "(⁄ ⁄•⁄ω⁄•⁄ ⁄)" + }, + { + "category": "embarassment", + "value": "(*/▽\*)" + }, + { + "category": "embarassment", + "value": "(⁄ ⁄>⁄ ▽ ⁄<⁄ ⁄)" + }, + { + "category": "embarassment", + "value": "(„ಡωಡ„)" + }, + { + "category": "embarassment", + "value": "(ง ื▿ ื)ว" + }, + { + "category": "embarassment", + "value": "( 〃▽〃)" + }, + { + "category": "embarassment", + "value": "(/▿\ )" + }, + { + "category": "embarassment", + "value": "(/// ̄  ̄///)" + }, + { + "category": "sympathy", + "value": "(ノ_<。)ヾ(´ ▽ ` )" + }, + { + "category": "sympathy", + "value": "。・゚・(ノД`)ヽ( ̄ω ̄ )" + }, + { + "category": "sympathy", + "value": "ρ(- ω -、)ヾ( ̄ω ̄; )" + }, + { + "category": "sympathy", + "value": "ヽ( ̄ω ̄(。。 )ゝ" + }, + { + "category": "sympathy", + "value": "(*´ I `)ノ゚(ノД`゚)゚。" + }, + { + "category": "sympathy", + "value": "ヽ(~_~(・_・ )ゝ" + }, + { + "category": "sympathy", + "value": "(ノ_;)ヾ(´ ∀ ` )" + }, + { + "category": "sympathy", + "value": "(; ω ; )ヾ(´∀`* )" + }, + { + "category": "sympathy", + "value": "(*´ー)ノ(ノд`)" + }, + { + "category": "sympathy", + "value": "(´-ω-`( _ _ )" + }, + { + "category": "sympathy", + "value": "(っ´ω`)ノ(╥ω╥)" + }, + { + "category": "sympathy", + "value": "(o・_・)ノ”(ノ_<、)" + }, + { + "category": "dissatisfaction", + "value": "(#><)" + }, + { + "category": "dissatisfaction", + "value": "(;⌣̀_⌣́)" + }, + { + "category": "dissatisfaction", + "value": "☆o(><;)○" + }, + { + "category": "dissatisfaction", + "value": "( ̄  ̄|||)" + }, + { + "category": "dissatisfaction", + "value": "(; ̄Д ̄)" + }, + { + "category": "dissatisfaction", + "value": "( ̄□ ̄」)" + }, + { + "category": "dissatisfaction", + "value": "(# ̄0 ̄)" + }, + { + "category": "dissatisfaction", + "value": "(# ̄ω ̄)" + }, + { + "category": "dissatisfaction", + "value": "(¬_¬;)" + }, + { + "category": "dissatisfaction", + "value": "(>m<)" + }, + { + "category": "dissatisfaction", + "value": "(」°ロ°)」" + }, + { + "category": "dissatisfaction", + "value": "(〃>_<;〃)" + }, + { + "category": "dissatisfaction", + "value": "(^^#)" + }, + { + "category": "dissatisfaction", + "value": "(︶︹︺)" + }, + { + "category": "dissatisfaction", + "value": "( ̄ヘ ̄)" + }, + { + "category": "dissatisfaction", + "value": "<( ̄ ﹌  ̄)>" + }, + { + "category": "dissatisfaction", + "value": "( ̄︿ ̄)" + }, + { + "category": "dissatisfaction", + "value": "(>﹏<)" + }, + { + "category": "dissatisfaction", + "value": "(--_--)" + }, + { + "category": "dissatisfaction", + "value": "凸( ̄ヘ ̄)" + }, + { + "category": "dissatisfaction", + "value": "ヾ(  ̄O ̄)ツ" + }, + { + "category": "dissatisfaction", + "value": "(⇀‸↼‶)" + }, + { + "category": "dissatisfaction", + "value": "o(>< )o" + }, + { + "category": "dissatisfaction", + "value": "(」><)」" + }, + { + "category": "dissatisfaction", + "value": "(ᗒᗣᗕ)՞" + }, + { + "category": "dissatisfaction", + "value": "(눈_눈)" + }, + { + "category": "anger", + "value": "(#`Д´)" + }, + { + "category": "anger", + "value": "(`皿´#)" + }, + { + "category": "anger", + "value": "( ` ω ´ )" + }, + { + "category": "anger", + "value": "ヽ( `д´*)ノ" + }, + { + "category": "anger", + "value": "(・`ω´・)" + }, + { + "category": "anger", + "value": "(`ー´)" + }, + { + "category": "anger", + "value": "ヽ(`⌒´メ)ノ" + }, + { + "category": "anger", + "value": "凸(`△´#)" + }, + { + "category": "anger", + "value": "( `ε´ )" + }, + { + "category": "anger", + "value": "ψ( ` ∇ ´ )ψ" + }, + { + "category": "anger", + "value": "ヾ(`ヘ´)ノ゙" + }, + { + "category": "anger", + "value": "ヽ(‵﹏´)ノ" + }, + { + "category": "anger", + "value": "(メ` ロ ´)" + }, + { + "category": "anger", + "value": "(╬`益´)" + }, + { + "category": "anger", + "value": "┌∩┐(◣_◢)┌∩┐" + }, + { + "category": "anger", + "value": "凸( ` ロ ´ )凸" + }, + { + "category": "anger", + "value": "Σ(▼□▼メ)" + }, + { + "category": "anger", + "value": "(°ㅂ°╬)" + }, + { + "category": "anger", + "value": "ψ(▼へ▼メ)~→" + }, + { + "category": "anger", + "value": "(ノ°益°)ノ" + }, + { + "category": "anger", + "value": "(҂ `з´ )" + }, + { + "category": "anger", + "value": "(‡▼益▼)" + }, + { + "category": "anger", + "value": "(҂` ロ ´)凸" + }, + { + "category": "anger", + "value": "((╬◣﹏◢))" + }, + { + "category": "anger", + "value": "٩(╬ʘ益ʘ╬)۶" + }, + { + "category": "anger", + "value": "(╬ Ò﹏Ó)" + }, + { + "category": "anger", + "value": "\\٩(๑`^´๑)۶//" + }, + { + "category": "anger", + "value": "(凸ಠ益ಠ)凸" + }, + { + "category": "anger", + "value": "↑_(ΦwΦ)Ψ" + }, + { + "category": "anger", + "value": "←~(Ψ▼ー▼)∈" + }, + { + "category": "anger", + "value": "୧((#Φ益Φ#))୨" + }, + { + "category": "anger", + "value": "٩(ఠ益ఠ)۶" + }, + { + "category": "anger", + "value": "(ノಥ益ಥ)ノ" + }, + { + "category": "sadness", + "value": "(ノ_<。)" + }, + { + "category": "sadness", + "value": "(-_-)" + }, + { + "category": "sadness", + "value": "(´-ω-`)" + }, + { + "category": "sadness", + "value": ".・゚゚・(/ω\)・゚゚・." + }, + { + "category": "sadness", + "value": "(μ_μ)" + }, + { + "category": "sadness", + "value": "(ノД`)" + }, + { + "category": "sadness", + "value": "(-ω-、)" + }, + { + "category": "sadness", + "value": "。゜゜(´O`) ゜゜。" + }, + { + "category": "sadness", + "value": "o(TヘTo)" + }, + { + "category": "sadness", + "value": "( ; ω ; )" + }, + { + "category": "sadness", + "value": "(。╯︵╰。)" + }, + { + "category": "sadness", + "value": "。・゚゚*(>д<)*゚゚・。" + }, + { + "category": "sadness", + "value": "( ゚,_ゝ`)" + }, + { + "category": "sadness", + "value": "(个_个)" + }, + { + "category": "sadness", + "value": "(╯︵╰,)" + }, + { + "category": "sadness", + "value": "。・゚(゚><゚)゚・。" + }, + { + "category": "sadness", + "value": "( ╥ω╥ )" + }, + { + "category": "sadness", + "value": "(╯_╰)" + }, + { + "category": "sadness", + "value": "(╥_╥)" + }, + { + "category": "sadness", + "value": ".。・゚゚・(>_<)・゚゚・。." + }, + { + "category": "sadness", + "value": "(/ˍ・、)" + }, + { + "category": "sadness", + "value": "(ノ_<、)" + }, + { + "category": "sadness", + "value": "(╥﹏╥)" + }, + { + "category": "sadness", + "value": "。゚(。ノωヽ。)゚。" + }, + { + "category": "sadness", + "value": "(つω`。)" + }, + { + "category": "sadness", + "value": "(。T ω T。)" + }, + { + "category": "sadness", + "value": "(ノω・、)" + }, + { + "category": "sadness", + "value": "・゚・(。>ω<。)・゚・" + }, + { + "category": "sadness", + "value": "(T_T)" + }, + { + "category": "sadness", + "value": "(>_<)" + }, + { + "category": "sadness", + "value": "(っ˘̩╭╮˘̩)っ" + }, + { + "category": "sadness", + "value": "。゚・ (>﹏<) ・゚。" + }, + { + "category": "sadness", + "value": "o(〒﹏〒)o" + }, + { + "category": "sadness", + "value": "(。•́︿•̀。)" + }, + { + "category": "sadness", + "value": "(ಥ﹏ಥ)" + }, + { + "category": "sadness", + "value": "(ಡ‸ಡ)" + }, + { + "category": "pain", + "value": "~(>_<~)" + }, + { + "category": "pain", + "value": "☆⌒(> _ <)" + }, + { + "category": "pain", + "value": "☆⌒(>。<)" + }, + { + "category": "pain", + "value": "(☆_@)" + }, + { + "category": "pain", + "value": "(×_×)" + }, + { + "category": "pain", + "value": "(x_x)" + }, + { + "category": "pain", + "value": "(×_×)⌒☆" + }, + { + "category": "pain", + "value": "(x_x)⌒☆" + }, + { + "category": "pain", + "value": "(×﹏×)" + }, + { + "category": "pain", + "value": "☆(#××)" + }, + { + "category": "pain", + "value": "(+_+)" + }, + { + "category": "pain", + "value": "[ ± _ ± ]" + }, + { + "category": "pain", + "value": "٩(× ×)۶" + }, + { + "category": "pain", + "value": "_:(´ཀ`」 ∠):_" + }, + { + "category": "pain", + "value": "(メ﹏メ)" + }, + { + "category": "fear", + "value": "(ノωヽ)" + }, + { + "category": "fear", + "value": "(/。\)" + }, + { + "category": "fear", + "value": "(ノ_ヽ)" + }, + { + "category": "fear", + "value": "..・ヾ(。><)シ" + }, + { + "category": "fear", + "value": "(″ロ゛)" + }, + { + "category": "fear", + "value": "(;;;*_*)" + }, + { + "category": "fear", + "value": "(・人・)" + }, + { + "category": "fear", + "value": "\(〇_o)/" + }, + { + "category": "fear", + "value": "(/ω\)" + }, + { + "category": "fear", + "value": "(/_\)" + }, + { + "category": "fear", + "value": "〜(><)〜" + }, + { + "category": "fear", + "value": "Σ(°△°|||)︴" + }, + { + "category": "fear", + "value": "(((><)))" + }, + { + "category": "fear", + "value": "{{ (>_<) }}" + }, + { + "category": "fear", + "value": "\(º □ º l|l)/" + }, + { + "category": "fear", + "value": "〣( ºΔº )〣" + }, + { + "category": "fear", + "value": "▓▒░(°◡°)░▒▓" + }, + { + "category": "indifference", + "value": "ヽ(ー_ー )ノ" + }, + { + "category": "indifference", + "value": "ヽ(´ー` )┌" + }, + { + "category": "indifference", + "value": "┐(‘~` )┌" + }, + { + "category": "indifference", + "value": "ヽ(  ̄д ̄)ノ" + }, + { + "category": "indifference", + "value": "┐( ̄ヘ ̄)┌" + }, + { + "category": "indifference", + "value": "ヽ( ̄~ ̄ )ノ" + }, + { + "category": "indifference", + "value": "╮( ̄_ ̄)╭" + }, + { + "category": "indifference", + "value": "ヽ(ˇヘˇ)ノ" + }, + { + "category": "indifference", + "value": "┐( ̄~ ̄)┌" + }, + { + "category": "indifference", + "value": "┐(︶▽︶)┌" + }, + { + "category": "indifference", + "value": "╮( ̄~ ̄)╭" + }, + { + "category": "indifference", + "value": "¯_(ツ)_/¯" + }, + { + "category": "indifference", + "value": "┐( ´ д ` )┌" + }, + { + "category": "indifference", + "value": "╮(︶︿︶)╭" + }, + { + "category": "indifference", + "value": "┐( ̄∀ ̄)┌" + }, + { + "category": "indifference", + "value": "┐( ˘ 、 ˘ )┌" + }, + { + "category": "indifference", + "value": "╮(︶▽︶)╭" + }, + { + "category": "indifference", + "value": "╮( ˘ 、 ˘ )╭" + }, + { + "category": "indifference", + "value": "┐( ˘_˘ )┌" + }, + { + "category": "indifference", + "value": "╮( ˘_˘ )╭" + }, + { + "category": "indifference", + "value": "┐( ̄ヮ ̄)┌" + }, + { + "category": "indifference", + "value": "ᕕ( ᐛ )ᕗ" + }, + { + "category": "indifference", + "value": "┐(シ)┌" + }, + { + "category": "confusion", + "value": "( ̄ω ̄;)" + }, + { + "category": "confusion", + "value": "σ( ̄、 ̄〃)" + }, + { + "category": "confusion", + "value": "( ̄~ ̄;)" + }, + { + "category": "confusion", + "value": "(-_-;)・・・" + }, + { + "category": "confusion", + "value": "┐('~`;)┌" + }, + { + "category": "confusion", + "value": "(・_・ヾ" + }, + { + "category": "confusion", + "value": "(〃 ̄ω ̄〃ゞ" + }, + { + "category": "confusion", + "value": "┐( ̄ヘ ̄;)┌" + }, + { + "category": "confusion", + "value": "(・_・;)" + }, + { + "category": "confusion", + "value": "( ̄_ ̄)・・・" + }, + { + "category": "confusion", + "value": "╮( ̄ω ̄;)╭" + }, + { + "category": "confusion", + "value": "(¯ . ¯;)" + }, + { + "category": "confusion", + "value": "(@_@)" + }, + { + "category": "confusion", + "value": "(・・;)ゞ" + }, + { + "category": "confusion", + "value": "Σ( ̄。 ̄ノ)" + }, + { + "category": "confusion", + "value": "(・・ ) ?" + }, + { + "category": "confusion", + "value": "(•ิ_•ิ)?" + }, + { + "category": "confusion", + "value": "(◎ ◎)ゞ" + }, + { + "category": "confusion", + "value": "(ーー;)" + }, + { + "category": "confusion", + "value": "ლ(ಠ_ಠ ლ)" + }, + { + "category": "confusion", + "value": "ლ(¯ロ¯\"ლ)" + }, + { + "category": "confusion", + "value": "(¯ . ¯٥)" + }, + { + "category": "confusion", + "value": "(¯ ¯٥)" + }, + { + "category": "doubt", + "value": "(¬_¬)" + }, + { + "category": "doubt", + "value": "(→_→)" + }, + { + "category": "doubt", + "value": "(¬ ¬)" + }, + { + "category": "doubt", + "value": "(¬‿¬ )" + }, + { + "category": "doubt", + "value": "(¬_¬ )" + }, + { + "category": "doubt", + "value": "(←_←)" + }, + { + "category": "doubt", + "value": "(¬ ¬ )" + }, + { + "category": "doubt", + "value": "(¬‿¬ )" + }, + { + "category": "doubt", + "value": "(↼_↼)" + }, + { + "category": "doubt", + "value": "(⇀_⇀)" + }, + { + "category": "doubt", + "value": "(ᓀ ᓀ)" + }, + { + "category": "surprise", + "value": "w(°o°)w" + }, + { + "category": "surprise", + "value": "ヽ(°〇°)ノ" + }, + { + "category": "surprise", + "value": "Σ(O_O)" + }, + { + "category": "surprise", + "value": "Σ(°ロ°)" + }, + { + "category": "surprise", + "value": "(⊙_⊙)" + }, + { + "category": "surprise", + "value": "(o_O)" + }, + { + "category": "surprise", + "value": "(O_O;)" + }, + { + "category": "surprise", + "value": "(O.O)" + }, + { + "category": "surprise", + "value": "(°ロ°) !" + }, + { + "category": "surprise", + "value": "(o_O) !" + }, + { + "category": "surprise", + "value": "(□_□)" + }, + { + "category": "surprise", + "value": "Σ(□_□)" + }, + { + "category": "surprise", + "value": "∑(O_O;)" + }, + { + "category": "surprise", + "value": "( : ౦ ‸ ౦ : )" + }, + { + "category": "greeting", + "value": "(*・ω・)ノ" + }, + { + "category": "greeting", + "value": "( ̄▽ ̄)ノ" + }, + { + "category": "greeting", + "value": "(°▽°)/" + }, + { + "category": "greeting", + "value": "( ´ ∀ ` )ノ" + }, + { + "category": "greeting", + "value": "(^-^*)/" + }, + { + "category": "greeting", + "value": "(@´ー`)ノ゙" + }, + { + "category": "greeting", + "value": "(´• ω •`)ノ" + }, + { + "category": "greeting", + "value": "( ° ∀ ° )ノ゙" + }, + { + "category": "greeting", + "value": "ヾ(*'▽'*)" + }, + { + "category": "greeting", + "value": "\(⌒▽⌒)" + }, + { + "category": "greeting", + "value": "ヾ(☆▽☆)" + }, + { + "category": "greeting", + "value": "( ´ ▽ ` )ノ" + }, + { + "category": "greeting", + "value": "(^0^)ノ" + }, + { + "category": "greeting", + "value": "~ヾ(・ω・)" + }, + { + "category": "greeting", + "value": "(・∀・)ノ" + }, + { + "category": "greeting", + "value": "ヾ(・ω・*)" + }, + { + "category": "greeting", + "value": "(*°ー°)ノ" + }, + { + "category": "greeting", + "value": "(・_・)ノ" + }, + { + "category": "greeting", + "value": "(o´ω`o)ノ" + }, + { + "category": "greeting", + "value": "( ´ ▽ ` )/" + }, + { + "category": "greeting", + "value": "( ̄ω ̄)/" + }, + { + "category": "greeting", + "value": "( ´ ω ` )ノ゙" + }, + { + "category": "greeting", + "value": "(⌒ω⌒)ノ" + }, + { + "category": "greeting", + "value": "(o^ ^o)/" + }, + { + "category": "greeting", + "value": "(≧▽≦)/" + }, + { + "category": "greeting", + "value": "(✧∀✧)/" + }, + { + "category": "greeting", + "value": "(o´▽`o)ノ" + }, + { + "category": "greeting", + "value": "( ̄▽ ̄)/" + }, + { + "category": "hugging", + "value": "(づ ̄ ³ ̄)づ" + }, + { + "category": "hugging", + "value": "(つ≧▽≦)つ" + }, + { + "category": "hugging", + "value": "(つ✧ω✧)つ" + }, + { + "category": "hugging", + "value": "(づ ◕‿◕ )づ" + }, + { + "category": "hugging", + "value": "(⊃。•́‿•̀。)⊃" + }, + { + "category": "hugging", + "value": "(つ . •́ _ʖ •̀ .)つ" + }, + { + "category": "hugging", + "value": "(っಠ‿ಠ)っ" + }, + { + "category": "hugging", + "value": "(づ◡﹏◡)づ" + }, + { + "category": "hugging", + "value": "⊂(´• ω •`⊂)" + }, + { + "category": "hugging", + "value": "⊂(・ω・*⊂)" + }, + { + "category": "hugging", + "value": "⊂( ̄▽ ̄)⊃" + }, + { + "category": "hugging", + "value": "⊂( ´ ▽ ` )⊃" + }, + { + "category": "hugging", + "value": "( ~*-*)~" + }, + { + "category": "hugging", + "value": "(。•̀ᴗ-)✧" + }, + { + "category": "winking", + "value": "(^_~)" + }, + { + "category": "winking", + "value": "( ゚o⌒)" + }, + { + "category": "winking", + "value": "(^_-)≡☆" + }, + { + "category": "winking", + "value": "(^ω~)" + }, + { + "category": "winking", + "value": "(>ω^)" + }, + { + "category": "winking", + "value": "(~人^)" + }, + { + "category": "winking", + "value": "(^_-)" + }, + { + "category": "winking", + "value": "( -_・)" + }, + { + "category": "winking", + "value": "(^_<)〜☆" + }, + { + "category": "winking", + "value": "(^人<)〜☆" + }, + { + "category": "winking", + "value": "☆⌒(≧▽​° )" + }, + { + "category": "winking", + "value": "☆⌒(ゝ。∂)" + }, + { + "category": "winking", + "value": "(^_<)" + }, + { + "category": "winking", + "value": "(^_−)☆" + }, + { + "category": "winking", + "value": "(・ω<)☆" + }, + { + "category": "winking", + "value": "(^.~)☆" + }, + { + "category": "winking", + "value": "(^.~)" + }, + { + "category": "apologizing", + "value": "m(_ _)m" + }, + { + "category": "apologizing", + "value": "(シ_ _)シ" + }, + { + "category": "apologizing", + "value": "m(. .)m" + }, + { + "category": "apologizing", + "value": "<(_ _)>" + }, + { + "category": "apologizing", + "value": "人(_ _*)" + }, + { + "category": "apologizing", + "value": "(*_ _)人" + }, + { + "category": "apologizing", + "value": "m(_ _;m)" + }, + { + "category": "apologizing", + "value": "(m;_ _)m" + }, + { + "category": "apologizing", + "value": "(シ. .)シ" + }, + { + "category": "nosebleeding", + "value": "(* ̄ii ̄)" + }, + { + "category": "nosebleeding", + "value": "( ̄ハ ̄*)" + }, + { + "category": "nosebleeding", + "value": "( ̄ハ ̄)" + }, + { + "category": "nosebleeding", + "value": "(^་།^)" + }, + { + "category": "nosebleeding", + "value": "(^〃^)" + }, + { + "category": "nosebleeding", + "value": "( ̄ ¨ヽ ̄)" + }, + { + "category": "nosebleeding", + "value": "( ̄ ; ̄)" + }, + { + "category": "nosebleeding", + "value": "( ̄ ;; ̄)" + }, + { + "category": "hiding", + "value": "|・ω・)" + }, + { + "category": "hiding", + "value": "ヘ(・_|" + }, + { + "category": "hiding", + "value": "|ω・)ノ" + }, + { + "category": "hiding", + "value": "ヾ(・|" + }, + { + "category": "hiding", + "value": "|д・)" + }, + { + "category": "hiding", + "value": "|_ ̄))" + }, + { + "category": "hiding", + "value": "|▽//)" + }, + { + "category": "hiding", + "value": "┬┴┬┴┤(・_├┬┴┬┴" + }, + { + "category": "hiding", + "value": "┬┴┬┴┤・ω・)ノ" + }, + { + "category": "hiding", + "value": "┬┴┬┴┤( ͡° ͜ʖ├┬┴┬┴" + }, + { + "category": "hiding", + "value": "┬┴┬┴┤(・_├┬┴┬┴" + }, + { + "category": "hiding", + "value": "|_・)" + }, + { + "category": "hiding", + "value": "|・д・)ノ" + }, + { + "category": "hiding", + "value": "|ʘ‿ʘ)╯" + }, + { + "category": "writing", + "value": "__φ(..)" + }, + { + "category": "writing", + "value": "(  ̄ー ̄)φ__" + }, + { + "category": "writing", + "value": "__φ(。。)" + }, + { + "category": "writing", + "value": "__φ(..;)" + }, + { + "category": "writing", + "value": "ヾ( `ー´)シφ__" + }, + { + "category": "writing", + "value": "__〆( ̄ー ̄ )" + }, + { + "category": "writing", + "value": "....φ(・∀・*)" + }, + { + "category": "writing", + "value": "___〆(・∀・)" + }, + { + "category": "writing", + "value": "( ^▽^)ψ__" + }, + { + "category": "writing", + "value": "....φ(︶▽︶)φ...." + }, + { + "category": "writing", + "value": "( . .)φ__" + }, + { + "category": "writing", + "value": "__φ(◎◎ヘ)" + }, + { + "category": "running", + "value": "☆ミ(o*・ω・)ノ" + }, + { + "category": "running", + "value": "C= C= C= C= C=┌(;・ω・)┘" + }, + { + "category": "running", + "value": "─=≡Σ((( つ><)つ" + }, + { + "category": "running", + "value": "ε=ε=ε=ε=┌(; ̄▽ ̄)┘" + }, + { + "category": "running", + "value": "ε=ε=┌( >_<)┘" + }, + { + "category": "running", + "value": "C= C= C= C=┌( `ー´)┘" + }, + { + "category": "running", + "value": "ε===(っ≧ω≦)っ" + }, + { + "category": "running", + "value": "ヽ( ̄д ̄;)ノ=3=3=3" + }, + { + "category": "running", + "value": "。。。ミヽ(。><)ノ" + }, + { + "category": "sleeping", + "value": "[(--)]..zzZ" + }, + { + "category": "sleeping", + "value": "(-_-) zzZ" + }, + { + "category": "sleeping", + "value": "(∪。∪)。。。zzZ" + }, + { + "category": "sleeping", + "value": "(-ω-) zzZ" + }, + { + "category": "sleeping", + "value": "( ̄o ̄) zzZZzzZZ" + }, + { + "category": "sleeping", + "value": "(( _ _ ))..zzzZZ" + }, + { + "category": "sleeping", + "value": "( ̄ρ ̄)..zzZZ" + }, + { + "category": "sleeping", + "value": "(-.-)...zzz" + }, + { + "category": "sleeping", + "value": "(_ _*) Z z z" + }, + { + "category": "cat", + "value": "(=^・ω・^=)" + }, + { + "category": "cat", + "value": "(=^・ェ・^=)" + }, + { + "category": "cat", + "value": "(=①ω①=)" + }, + { + "category": "cat", + "value": "( =ω=)..nyaa" + }, + { + "category": "cat", + "value": "(= ; ェ ; =)" + }, + { + "category": "cat", + "value": "(=`ω´=)" + }, + { + "category": "cat", + "value": "(=^‥^=)" + }, + { + "category": "cat", + "value": "( =ノωヽ=)" + }, + { + "category": "cat", + "value": "(=⌒‿‿⌒=)" + }, + { + "category": "cat", + "value": "(=^ ◡ ^=)" + }, + { + "category": "cat", + "value": "(=^-ω-^=)" + }, + { + "category": "cat", + "value": "ヾ(=`ω´=)ノ”" + }, + { + "category": "cat", + "value": "(^• ω •^)" + }, + { + "category": "cat", + "value": "(/ =ω=)/" + }, + { + "category": "cat", + "value": "ฅ(•ㅅ•❀)ฅ" + }, + { + "category": "cat", + "value": "ฅ(• ɪ •)ฅ" + }, + { + "category": "cat", + "value": "ଲ(ⓛ ω ⓛ)ଲ" + }, + { + "category": "cat", + "value": "(^=◕ᴥ◕=^)" + }, + { + "category": "cat", + "value": "( =ω= )" + }, + { + "category": "cat", + "value": "(^˵◕ω◕˵^)" + }, + { + "category": "cat", + "value": "(^◔ᴥ◔^)" + }, + { + "category": "cat", + "value": "(^◕ᴥ◕^)" + }, + { + "category": "cat", + "value": "ต(=ω=)ต" + }, + { + "category": "cat", + "value": "( Φ ω Φ )" + }, + { + "category": "cat", + "value": "ฅ(^◕ᴥ◕^)ฅ" + }, + { + "category": "bear", + "value": "( ´(エ)ˋ )" + }, + { + "category": "bear", + "value": "(* ̄(エ) ̄*)" + }, + { + "category": "bear", + "value": "ヽ( ̄(エ) ̄)ノ" + }, + { + "category": "bear", + "value": "(/ ̄(エ) ̄)/" + }, + { + "category": "bear", + "value": "( ̄(エ) ̄)" + }, + { + "category": "bear", + "value": "ヽ( ˋ(エ)´ )ノ" + }, + { + "category": "bear", + "value": "⊂( ̄(エ) ̄)⊃" + }, + { + "category": "bear", + "value": "(/(エ)\)" + }, + { + "category": "bear", + "value": "⊂(´(ェ)ˋ)⊃" + }, + { + "category": "bear", + "value": "(/-(エ)-\)" + }, + { + "category": "bear", + "value": "(/°(エ)°)/" + }, + { + "category": "bear", + "value": "ʕ ᵔᴥᵔ ʔ" + }, + { + "category": "bear", + "value": "ʕ •ᴥ• ʔ" + }, + { + "category": "bear", + "value": "ʕ •̀ ω •́ ʔ" + }, + { + "category": "bear", + "value": "ʕ •̀ o •́ ʔ" + }, + { + "category": "bear", + "value": "ʕಠᴥಠʔ" + }, + { + "category": "dog", + "value": "∪^ェ^∪" + }, + { + "category": "dog", + "value": "∪・ω・∪" + }, + { + "category": "dog", + "value": "∪ ̄- ̄∪" + }, + { + "category": "dog", + "value": "∪・ェ・∪" + }, + { + "category": "dog", + "value": "U^皿^U" + }, + { + "category": "dog", + "value": "UTェTU" + }, + { + "category": "dog", + "value": "U^ェ^U" + }, + { + "category": "dog", + "value": "V●ᴥ●V" + }, + { + "category": "dog", + "value": "U・ᴥ・U" + }, + { + "category": "rabbit", + "value": "/(≧ x ≦)\" + }, + { + "category": "rabbit", + "value": "/(・ × ・)\" + }, + { + "category": "rabbit", + "value": "/(=´x`=)\" + }, + { + "category": "rabbit", + "value": "/(^ x ^)\" + }, + { + "category": "rabbit", + "value": "/(=・ x ・=)\" + }, + { + "category": "rabbit", + "value": "/(^ × ^)\" + }, + { + "category": "rabbit", + "value": "/(>×<)\" + }, + { + "category": "rabbit", + "value": "/(˃ᆺ˂)\" + }, + { + "category": "pig", + "value": "( ´(00)ˋ )" + }, + { + "category": "pig", + "value": "( ̄(ω) ̄)" + }, + { + "category": "pig", + "value": "ヽ( ˋ(00)´ )ノ" + }, + { + "category": "pig", + "value": "( ´(oo)ˋ )" + }, + { + "category": "pig", + "value": "\( ̄(oo) ̄)/" + }, + { + "category": "pig", + "value": "。゚(゚´(00)`゚)゚。" + }, + { + "category": "pig", + "value": "( ̄(00) ̄)" + }, + { + "category": "pig", + "value": "(ˆ(oo)ˆ)" + }, + { + "category": "bird", + "value": "( ̄Θ ̄)" + }, + { + "category": "bird", + "value": "(`・Θ・´)" + }, + { + "category": "bird", + "value": "( ˋ Θ ´ )" + }, + { + "category": "bird", + "value": "(◉Θ◉)" + }, + { + "category": "bird", + "value": "\( ˋ Θ ´ )/" + }, + { + "category": "bird", + "value": "(・θ・)" + }, + { + "category": "bird", + "value": "(・Θ・)" + }, + { + "category": "bird", + "value": "ヾ( ̄◇ ̄)ノ〃" + }, + { + "category": "bird", + "value": "(・Θ・)" + }, + { + "category": "fish", + "value": "(°)#))<<" + }, + { + "category": "fish", + "value": "<・ )))><<" + }, + { + "category": "fish", + "value": "ζ°)))彡" + }, + { + "category": "fish", + "value": ">°))))彡" + }, + { + "category": "fish", + "value": "(°))<<" + }, + { + "category": "fish", + "value": ">^)))<~~" + }, + { + "category": "fish", + "value": "≧( ° ° )≦" + }, + { + "category": "spider", + "value": "/╲/╭(ఠఠ益ఠఠ)╮/╱" + }, + { + "category": "spider", + "value": "/╲/╭(ರರ⌓ರರ)╮/╱" + }, + { + "category": "spider", + "value": "/╲/╭༼ ººل͟ºº ༽╮/╱" + }, + { + "category": "spider", + "value": "/╲/╭( ͡°͡° ͜ʖ ͡°͡°)╮/╱" + }, + { + "category": "spider", + "value": "/╲/╭[ ᴼᴼ ౪ ᴼᴼ]╮/╱" + }, + { + "category": "spider", + "value": "/╲/( •̀ ω •́ )/╱" + }, + { + "category": "spider", + "value": "/╲/╭[☉﹏☉]╮/╱" + }, + { + "category": "friends", + "value": "ヾ(・ω・)メ(・ω・)ノ" + }, + { + "category": "friends", + "value": "ヽ(∀° )人( °∀)ノ" + }, + { + "category": "friends", + "value": "ヽ( ⌒o⌒)人(⌒-⌒ )ノ" + }, + { + "category": "friends", + "value": "(*^ω^)八(⌒▽⌒)八(-‿‿- )ヽ" + }, + { + "category": "friends", + "value": "\(^∀^)メ(^∀^)ノ" + }, + { + "category": "friends", + "value": "ヾ( ̄ー ̄(≧ω≦*)ゝ" + }, + { + "category": "friends", + "value": "ヽ( ⌒ω⌒)人(=^‥^= )ノ" + }, + { + "category": "friends", + "value": "ヽ(≧◡≦)八(o^ ^o)ノ" + }, + { + "category": "friends", + "value": "(*・∀・)爻(・∀・*)" + }, + { + "category": "friends", + "value": "。*:☆(・ω・人・ω・)。:゜☆。" + }, + { + "category": "friends", + "value": "o(^^o)(o^^o)(o^^o)(o^^)o" + }, + { + "category": "friends", + "value": "((( ̄( ̄( ̄▽ ̄) ̄) ̄)))" + }, + { + "category": "friends", + "value": "(°(°ω(°ω°(☆ω☆)°ω°)ω°)°)" + }, + { + "category": "friends", + "value": "ヾ(・ω・`)ノヾ(´・ω・)ノ゛" + }, + { + "category": "friends", + "value": "Ψ( `∀)(∀´ )Ψ" + }, + { + "category": "friends", + "value": "(っ˘▽˘)(˘▽˘)˘▽˘ς)" + }, + { + "category": "friends", + "value": "(((*°▽°*)八(*°▽°*)))" + }, + { + "category": "friends", + "value": "☆ヾ(*´・∀・)ノヾ(・∀・`*)ノ☆" + }, + { + "category": "friends", + "value": "(*^ω^)人(^ω^*)" + }, + { + "category": "friends", + "value": "٩(๑・ิᴗ・ิ)۶٩(・ิᴗ・ิ๑)۶" + }, + { + "category": "friends", + "value": "(☞°ヮ°)☞ ☜(°ヮ°☜)" + }, + { + "category": "friends", + "value": "\(▽ ̄ ( ̄▽ ̄) /  ̄▽)/" + }, + { + "category": "friends", + "value": "( ˙▿˙ )/( ˙▿˙ )/" + }, + { + "category": "enemies", + "value": "ヽ( ・∀・)ノ_θ彡☆Σ(ノ `Д´)ノ" + }, + { + "category": "enemies", + "value": "(*´∇`)┌θ☆(ノ>_<)ノ" + }, + { + "category": "enemies", + "value": "(  ̄ω ̄)ノ゙⌒☆ミ(o _ _)o" + }, + { + "category": "enemies", + "value": "(*`0´)θ☆(メ°皿°)ノ" + }, + { + "category": "enemies", + "value": "(o¬‿¬o )...☆ミ(*x_x)" + }, + { + "category": "enemies", + "value": "(╬ ̄皿 ̄)=○#( ̄#)3 ̄)" + }, + { + "category": "enemies", + "value": "(; -_-)――――――C<―_-)" + }, + { + "category": "enemies", + "value": "<(  ̄︿ ̄)︵θ︵θ︵☆(>口<-)" + }, + { + "category": "enemies", + "value": "( ̄ε(# ̄)☆╰╮o( ̄▽ ̄///)" + }, + { + "category": "enemies", + "value": "ヽ(>_<ヽ) ―⊂|=0ヘ(^‿^ )" + }, + { + "category": "enemies", + "value": "ヘ(>_<ヘ) ¬o( ̄‿ ̄メ)" + }, + { + "category": "enemies", + "value": ",,(((  ̄□)_/ \_(○ ̄ ))),," + }, + { + "category": "enemies", + "value": "(҂` ロ ´)︻デ═一 \(º □ º l|l)/" + }, + { + "category": "enemies", + "value": "(╯°Д°)╯︵ /(.□ . \)" + }, + { + "category": "enemies", + "value": "(¬_¬'')ԅ( ̄ε ̄ԅ)" + }, + { + "category": "enemies", + "value": "/( .□.)\ ︵╰(°益°)╯︵ /(.□. /)" + }, + { + "category": "enemies", + "value": "(ノ-.-)ノ….((((((((((((●~* ( >_<)" + }, + { + "category": "enemies", + "value": "!!(メ ̄  ̄)_θ☆°0°)/" + }, + { + "category": "enemies", + "value": "(`⌒*)O-(`⌒´Q)" + }, + { + "category": "enemies", + "value": "(((ง’ω’)و三 ง’ω’)ڡ≡ ☆⌒ミ((x_x)" + }, + { + "category": "enemies", + "value": "(งಠ_ಠ)ง σ( •̀ ω •́ σ)" + }, + { + "category": "enemies", + "value": "(っ•﹏•)っ ✴==≡눈٩(`皿´҂)ง" + }, + { + "category": "enemies", + "value": "(「• ω •)「 (⌒ω⌒`)" + }, + { + "category": "enemies", + "value": "( °ᴗ°)~ð (/❛o❛)" + }, + { + "category": "weapons", + "value": "( ・∀・)・・・--------☆" + }, + { + "category": "weapons", + "value": "(/-_・)/D・・・・・------ →" + }, + { + "category": "weapons", + "value": "(^ω^)ノ゙(((((((((●~*" + }, + { + "category": "weapons", + "value": "( -ω-)/占~~~~~" + }, + { + "category": "weapons", + "value": "(/・・)ノ   (( く ((へ" + }, + { + "category": "weapons", + "value": "―⊂|=0ヘ(^^ )" + }, + { + "category": "weapons", + "value": "○∞∞∞∞ヽ(^ー^ )" + }, + { + "category": "weapons", + "value": "(; ・_・)――――C" + }, + { + "category": "weapons", + "value": "(ಠ o ಠ)¤=[]:::::>" + }, + { + "category": "weapons", + "value": "(*^^)/~~~~~~~~~~◎" + }, + { + "category": "weapons", + "value": "¬o( ̄- ̄メ)" + }, + { + "category": "weapons", + "value": "―(T_T)→" + }, + { + "category": "weapons", + "value": "(((  ̄□)_/" + }, + { + "category": "weapons", + "value": "(メ` ロ ´)︻デ═一" + }, + { + "category": "weapons", + "value": "( ´-ω・)︻┻┳══━一" + }, + { + "category": "weapons", + "value": "(メ ̄▽ ̄)︻┳═一" + }, + { + "category": "weapons", + "value": "✴==≡눈٩(`皿´҂)ง" + }, + { + "category": "weapons", + "value": "Q(`⌒´Q)" + }, + { + "category": "magic", + "value": "(ノ ˘_˘)ノ ζ|||ζ ζ|||ζ ζ|||ζ" + }, + { + "category": "magic", + "value": "(ノ≧∀≦)ノ ‥…━━━★" + }, + { + "category": "magic", + "value": "(ノ>ω<)ノ :。・:*:・゚’★,。・:*:・゚’☆" + }, + { + "category": "magic", + "value": "(ノ°∀°)ノ⌒・*:.。. .。.:*・゜゚・*☆" + }, + { + "category": "magic", + "value": "╰( ͡° ͜ʖ ͡° )つ──☆*:・゚" + }, + { + "category": "magic", + "value": "(# ̄□ ̄)o━∈・・━━━━☆" + }, + { + "category": "magic", + "value": "(⊃。•́‿•̀。)⊃━✿✿✿✿✿✿" + }, + { + "category": "magic", + "value": "(∩ᄑ_ᄑ)⊃━☆゚*・。*・:≡( ε:)" + }, + { + "category": "magic", + "value": "(/ ̄ー ̄)/~~☆’.・.・:★’.・.・:☆" + }, + { + "category": "magic", + "value": "(∩` ロ ´)⊃━炎炎炎炎炎" + }, + { + "category": "food", + "value": "(っ˘ڡ˘ς)" + }, + { + "category": "food", + "value": "( o˘◡˘o) ┌iii┐" + }, + { + "category": "food", + "value": "( ’ω’)旦~~" + }, + { + "category": "food", + "value": "( ˘▽˘)っ♨" + }, + { + "category": "food", + "value": "♨o(>_<)o♨" + }, + { + "category": "food", + "value": "( ・ω・)o-{{[〃]}}" + }, + { + "category": "food", + "value": "( ・ω・)⊃-[二二]" + }, + { + "category": "food", + "value": "( ・・)つ―{}@{}@{}-" + }, + { + "category": "food", + "value": "( ・・)つ-●●●" + }, + { + "category": "food", + "value": "(*´ー`)旦 旦( ̄ω ̄*)" + }, + { + "category": "food", + "value": "(*´з`)口゚。゚口(・∀・ )" + }, + { + "category": "food", + "value": "( o^ ^o)且 且(´ω`*)" + }, + { + "category": "food", + "value": "(  ̄▽ ̄)[] [](≧▽≦ )" + }, + { + "category": "food", + "value": "( *^^)o∀*∀o(^^* )" + }, + { + "category": "food", + "value": "( ^^)_旦~~  ~~U_(^^ )" + }, + { + "category": "food", + "value": "(* ̄▽ ̄)旦 且(´∀`*)" + }, + { + "category": "food", + "value": "-●●●-c(・・ )" + }, + { + "category": "food", + "value": "( ・・)つ―●○◎-" + }, + { + "category": "music", + "value": "ヾ(´〇`)ノ♪♪♪" + }, + { + "category": "music", + "value": "ヘ( ̄ω ̄ヘ)" + }, + { + "category": "music", + "value": "(〜 ̄▽ ̄)〜" + }, + { + "category": "music", + "value": "〜( ̄▽ ̄〜)" + }, + { + "category": "music", + "value": "ヽ(o´∀`)ノ♪♬" + }, + { + "category": "music", + "value": "(ノ≧∀≦)ノ" + }, + { + "category": "music", + "value": "♪ヽ(^^ヽ)♪" + }, + { + "category": "music", + "value": "♪(/_ _ )/♪" + }, + { + "category": "music", + "value": "♪♬((d⌒ω⌒b))♬♪" + }, + { + "category": "music", + "value": "└( ̄- ̄└))" + }, + { + "category": "music", + "value": "((┘ ̄ω ̄)┘" + }, + { + "category": "music", + "value": "√( ̄‥ ̄√)" + }, + { + "category": "music", + "value": "└(^^)┐" + }, + { + "category": "music", + "value": "┌(^^)┘" + }, + { + "category": "music", + "value": "\( ̄▽ ̄)\" + }, + { + "category": "music", + "value": "/( ̄▽ ̄)/" + }, + { + "category": "music", + "value": "( ̄▽ ̄)/♫•*¨*•.¸¸♪" + }, + { + "category": "music", + "value": "(^_^♪)" + }, + { + "category": "music", + "value": "(~˘▽˘)~" + }, + { + "category": "music", + "value": "~(˘▽˘~)" + }, + { + "category": "music", + "value": "ヾ(⌐■_■)ノ♪" + }, + { + "category": "music", + "value": "(〜 ̄△ ̄)〜" + }, + { + "category": "music", + "value": "(~‾▽‾)~" + }, + { + "category": "music", + "value": "~(˘▽˘)~" + }, + { + "category": "music", + "value": "乁( • ω •乁)" + }, + { + "category": "music", + "value": "(「• ω •)「" + }, + { + "category": "music", + "value": "⁽⁽◝( • ω • )◜⁾⁾" + }, + { + "category": "music", + "value": "✺◟( • ω • )◞✺" + }, + { + "category": "music", + "value": "♬♫♪◖(● o ●)◗♪♫♬" + }, + { + "category": "music", + "value": "( ˘ ɜ˘) ♬♪♫" + }, + { + "category": "music", + "value": "♪♪♪ ヽ(ˇ∀ˇ )ゞ" + }, + { + "category": "music", + "value": "(ˇ▽ˇ)ノ♪♬♫" + }, + { + "category": "games", + "value": "( ^^)p_____|_o____q(^^ )" + }, + { + "category": "games", + "value": "(/o^)/ °⊥ \(^o\)" + }, + { + "category": "games", + "value": "!(;゚o゚)o/ ̄ ̄ ̄ ̄ ̄ ̄ ̄~ >゚))))彡" + }, + { + "category": "games", + "value": "ヽ(^o^)ρ┳┻┳°σ(^o^)ノ" + }, + { + "category": "games", + "value": "(/_^)/  ● \(^_\)" + }, + { + "category": "games", + "value": "( (≡|≡))_/ \_((≡|≡) )" + }, + { + "category": "games", + "value": "( ノ-_-)ノ゙_□ VS □_ヾ(^-^ヽ)" + }, + { + "category": "games", + "value": "ヽ(;^ ^)ノ゙ ......___〇" + }, + { + "category": "games", + "value": "(=O*_*)=O Q(*_*Q)" + }, + { + "category": "games", + "value": "Ю ○三 \( ̄^ ̄\)" + }, + { + "category": "faces", + "value": "( ͡° ͜ʖ ͡°)" + }, + { + "category": "faces", + "value": "( ͡° ʖ̯ ͡°)" + }, + { + "category": "faces", + "value": "( ͠° ͟ʖ ͡°)" + }, + { + "category": "faces", + "value": "( ͡ᵔ ͜ʖ ͡ᵔ)" + }, + { + "category": "faces", + "value": "( . •́ _ʖ •̀ .)" + }, + { + "category": "faces", + "value": "( ఠ ͟ʖ ఠ)" + }, + { + "category": "faces", + "value": "( ͡ಠ ʖ̯ ͡ಠ)" + }, + { + "category": "faces", + "value": "( ಠ ʖ̯ ಠ)" + }, + { + "category": "faces", + "value": "( ಠ ͜ʖ ಠ)" + }, + { + "category": "faces", + "value": "( ಥ ʖ̯ ಥ)" + }, + { + "category": "faces", + "value": "( ͡• ͜ʖ ͡• )" + }, + { + "category": "faces", + "value": "( ・ิ ͜ʖ ・ิ)" + }, + { + "category": "faces", + "value": "( ͡ ͜ʖ ͡ )" + }, + { + "category": "faces", + "value": "(≖ ͜ʖ≖)" + }, + { + "category": "faces", + "value": "(ʘ ʖ̯ ʘ)" + }, + { + "category": "faces", + "value": "(ʘ ͟ʖ ʘ)" + }, + { + "category": "faces", + "value": "(ʘ ͜ʖ ʘ)" + }, + { + "category": "faces", + "value": "(;´༎ຶٹ༎ຶ`)" + }, + { + "category": "special", + "value": "٩(ˊ〇ˋ*)و" + }, + { + "category": "special", + "value": "( ̄^ ̄)ゞ" + }, + { + "category": "special", + "value": "(-‸ლ)" + }, + { + "category": "special", + "value": "(╯°益°)╯彡┻━┻" + }, + { + "category": "special", + "value": "(╮°-°)╮┳━━┳ ( ╯°□°)╯ ┻━━┻" + }, + { + "category": "special", + "value": "┬─┬ノ( º _ ºノ)" + }, + { + "category": "special", + "value": "(oT-T)尸" + }, + { + "category": "special", + "value": "( ͡° ͜ʖ ͡°)" + }, + { + "category": "special", + "value": "[̲̅$̲̅(̲̅ ͡° ͜ʖ ͡°̲̅)̲̅$̲̅]" + }, + { + "category": "special", + "value": "(ಠ_ಠ)" + }, + { + "category": "special", + "value": "౦0o 。 (‾́。‾́ )y~~" + }, + { + "category": "special", + "value": "( ̄﹃ ̄)" + }, + { + "category": "special", + "value": "(x(x_(x_x(O_o)x_x)_x)x)" + }, + { + "category": "special", + "value": "( ・ω・)☞" + }, + { + "category": "special", + "value": "(⌐■_■)" + }, + { + "category": "special", + "value": "(◕‿◕✿)" + }, + { + "category": "special", + "value": "(  ̄.)o-  【 TV 】" + }, + { + "category": "special", + "value": "`、ヽ`ヽ`、ヽ(ノ><)ノ `、ヽ`☂ヽ`、ヽ" + }, + { + "category": "special", + "value": "‿︵‿︵‿︵‿ヽ(°□° )ノ︵‿︵‿︵‿︵" + }, + { + "category": "special", + "value": "( • )( • )ԅ(≖‿≖ԅ)" + }, + { + "category": "special", + "value": "( ^▽^)っ✂╰⋃╯" + }, + { + "category": "special", + "value": "〜〜(/ ̄▽)/ 〜ф" + }, + { + "category": "special", + "value": "ଘ(੭ˊᵕˋ)੭* ੈ✩‧₊˚" + }, + { + "category": "special", + "value": "ଘ(੭ˊ꒳​ˋ)੭✧" + }, + { + "category": "special", + "value": "_(:3 」∠)_" + }, + { + "category": "special", + "value": "∠( ᐛ 」∠)_" + } + ] } diff --git a/app/src/main/java/com/sameerasw/essentials/FeatureSettingsActivity.kt b/app/src/main/java/com/sameerasw/essentials/FeatureSettingsActivity.kt index 451602336..b624484d4 100644 --- a/app/src/main/java/com/sameerasw/essentials/FeatureSettingsActivity.kt +++ b/app/src/main/java/com/sameerasw/essentials/FeatureSettingsActivity.kt @@ -72,10 +72,10 @@ import com.sameerasw.essentials.ui.composables.configs.LockScreenClockSettingsUI import com.sameerasw.essentials.ui.composables.configs.MapsPowerSavingSettingsUI import com.sameerasw.essentials.ui.composables.configs.NotificationLightingSettingsUI import com.sameerasw.essentials.ui.composables.configs.OtherCustomizationsSettingsUI +import com.sameerasw.essentials.ui.composables.configs.PocketModeSettingsUI import com.sameerasw.essentials.ui.composables.configs.QuickSettingsTilesSettingsUI import com.sameerasw.essentials.ui.composables.configs.RefreshRateSettingsUI import com.sameerasw.essentials.ui.composables.configs.RemoteLockSettingsUI -import com.sameerasw.essentials.ui.composables.configs.PocketModeSettingsUI import com.sameerasw.essentials.ui.composables.configs.ScreenLockedSecuritySettingsUI import com.sameerasw.essentials.ui.composables.configs.ScreenOffWidgetSettingsUI import com.sameerasw.essentials.ui.composables.configs.ShutUpSettingsUI @@ -83,11 +83,11 @@ import com.sameerasw.essentials.ui.composables.configs.SnoozeNotificationsSettin import com.sameerasw.essentials.ui.composables.configs.SoundModeTileSettingsUI import com.sameerasw.essentials.ui.composables.configs.StatusBarIconSettingsUI import com.sameerasw.essentials.ui.composables.configs.TextAnimationsSettingsUI -import com.sameerasw.essentials.ui.composables.configs.WatchSettingsUI import com.sameerasw.essentials.ui.composables.configs.WatchControlsSettingsUI +import com.sameerasw.essentials.ui.composables.configs.WatchSettingsUI import com.sameerasw.essentials.ui.modifiers.BlurDirection -import com.sameerasw.essentials.ui.modifiers.progressiveBlur import com.sameerasw.essentials.ui.modifiers.highlight +import com.sameerasw.essentials.ui.modifiers.progressiveBlur import com.sameerasw.essentials.ui.theme.EssentialsTheme import com.sameerasw.essentials.utils.BiometricSecurityHelper import com.sameerasw.essentials.utils.HapticUtil @@ -227,13 +227,14 @@ class FeatureSettingsActivity : AppCompatActivity() { mutableStateOf(prefs.getBoolean("watch_sync_sound_mode_enabled", false)) } androidx.compose.runtime.DisposableEffect(prefs) { - val listener = android.content.SharedPreferences.OnSharedPreferenceChangeListener { p, key -> - if (key == "watch_adb_wifi_enabled") { - watchAdbWifiEnabled = p.getBoolean(key, false) - } else if (key == "watch_sync_sound_mode_enabled") { - watchSyncSoundModeEnabled = p.getBoolean(key, false) + val listener = + android.content.SharedPreferences.OnSharedPreferenceChangeListener { p, key -> + if (key == "watch_adb_wifi_enabled") { + watchAdbWifiEnabled = p.getBoolean(key, false) + } else if (key == "watch_sync_sound_mode_enabled") { + watchSyncSoundModeEnabled = p.getBoolean(key, false) + } } - } prefs.registerOnSharedPreferenceChangeListener(listener) onDispose { prefs.unregisterOnSharedPreferenceChangeListener(listener) @@ -249,11 +250,17 @@ class FeatureSettingsActivity : AppCompatActivity() { fabExpanded = false } if (featureId == "Watch") { - val messageClient = com.google.android.gms.wearable.Wearable.getMessageClient(context) - val nodeClient = com.google.android.gms.wearable.Wearable.getNodeClient(context) + val messageClient = + com.google.android.gms.wearable.Wearable.getMessageClient(context) + val nodeClient = + com.google.android.gms.wearable.Wearable.getNodeClient(context) nodeClient.connectedNodes.addOnSuccessListener { nodes -> for (node in nodes) { - messageClient.sendMessage(node.id, "/request_watch_status", byteArrayOf()) + messageClient.sendMessage( + node.id, + "/request_watch_status", + byteArrayOf() + ) } } } @@ -603,7 +610,9 @@ class FeatureSettingsActivity : AppCompatActivity() { modifier = Modifier.padding(top = 16.dp), highlightSetting = highlightSetting, onShowPermissionSheet = { showPermissionSheet = it }, - onSetChildFeatureForPermissions = { childFeatureForPermissions = it } + onSetChildFeatureForPermissions = { + childFeatureForPermissions = it + } ) } diff --git a/app/src/main/java/com/sameerasw/essentials/MainActivity.kt b/app/src/main/java/com/sameerasw/essentials/MainActivity.kt index 2e9a2f9c4..101e44fb1 100644 --- a/app/src/main/java/com/sameerasw/essentials/MainActivity.kt +++ b/app/src/main/java/com/sameerasw/essentials/MainActivity.kt @@ -14,29 +14,25 @@ import androidx.activity.enableEdgeToEdge import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity -import androidx.compose.animation.AnimatedContent import androidx.compose.animation.core.Animatable -import androidx.compose.animation.core.animateFloatAsState import androidx.compose.animation.core.tween import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.compose.animation.slideInVertically import androidx.compose.animation.slideOutVertically -import androidx.compose.animation.togetherWith import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.pager.HorizontalPager -import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.asPaddingValues import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.statusBars +import androidx.compose.foundation.pager.HorizontalPager +import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.FloatingToolbarDefaults import androidx.compose.material3.FloatingToolbarExitDirection.Companion.Bottom import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.ProgressIndicatorDefaults import androidx.compose.material3.Scaffold import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue diff --git a/app/src/main/java/com/sameerasw/essentials/SettingsActivity.kt b/app/src/main/java/com/sameerasw/essentials/SettingsActivity.kt index e3f807977..05a7117e1 100644 --- a/app/src/main/java/com/sameerasw/essentials/SettingsActivity.kt +++ b/app/src/main/java/com/sameerasw/essentials/SettingsActivity.kt @@ -5,6 +5,7 @@ import android.content.ClipData import android.content.ClipboardManager import android.content.Context import android.content.Intent +import android.net.Uri import android.os.Build import android.os.Bundle import android.provider.Settings @@ -42,21 +43,18 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.ButtonGroupDefaults +import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.Icon -import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ModalBottomSheet -import androidx.compose.material3.rememberModalBottomSheetState -import androidx.compose.material3.CircularProgressIndicator -import androidx.compose.material3.TextButton -import androidx.compose.ui.text.font.FontWeight -import android.net.Uri -import androidx.compose.material3.ButtonGroupDefaults import androidx.compose.material3.OutlinedButton import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue @@ -70,6 +68,7 @@ import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalView import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex import androidx.core.app.ActivityCompat @@ -472,7 +471,10 @@ fun SettingsContent( Row( modifier = Modifier .fillMaxWidth() - .background(MaterialTheme.colorScheme.surfaceBright, shape = MaterialTheme.shapes.extraSmall) + .background( + MaterialTheme.colorScheme.surfaceBright, + shape = MaterialTheme.shapes.extraSmall + ) .padding(16.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(8.dp) @@ -863,7 +865,10 @@ fun SettingsContent( Row( modifier = Modifier .fillMaxWidth() - .background(MaterialTheme.colorScheme.surfaceBright, shape = MaterialTheme.shapes.extraSmall) + .background( + MaterialTheme.colorScheme.surfaceBright, + shape = MaterialTheme.shapes.extraSmall + ) .padding(8.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(8.dp) @@ -886,7 +891,10 @@ fun SettingsContent( modifier = Modifier.size(24.dp) ) Spacer(modifier = Modifier.width(8.dp)) - Text("Check for updates", fontWeight = androidx.compose.ui.text.font.FontWeight.Bold) + Text( + "Check for updates", + fontWeight = androidx.compose.ui.text.font.FontWeight.Bold + ) } } @@ -1065,7 +1073,7 @@ fun SettingsContent( ) val workflowAuthState by viewModel.workflowAuthState - + when (workflowAuthState) { is com.sameerasw.essentials.viewmodels.AuthState.Idle -> { Button( @@ -1077,6 +1085,7 @@ fun SettingsContent( Text("Grant Workflow Access") } } + is com.sameerasw.essentials.viewmodels.AuthState.Loading -> { Box( modifier = Modifier.fillMaxWidth(), @@ -1085,8 +1094,10 @@ fun SettingsContent( CircularProgressIndicator(modifier = Modifier.size(24.dp)) } } + is com.sameerasw.essentials.viewmodels.AuthState.CodeReceived -> { - val codeData = workflowAuthState as com.sameerasw.essentials.viewmodels.AuthState.CodeReceived + val codeData = + workflowAuthState as com.sameerasw.essentials.viewmodels.AuthState.CodeReceived Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally, @@ -1098,7 +1109,9 @@ fun SettingsContent( ) Text( text = codeData.userCode, - style = MaterialTheme.typography.headlineMedium.copy(fontWeight = FontWeight.Bold), + style = MaterialTheme.typography.headlineMedium.copy( + fontWeight = FontWeight.Bold + ), color = MaterialTheme.colorScheme.primary ) Text( @@ -1106,13 +1119,16 @@ fun SettingsContent( style = MaterialTheme.typography.bodySmall, color = MaterialTheme.colorScheme.onSurfaceVariant ) - + Row( horizontalArrangement = Arrangement.spacedBy(8.dp) ) { Button( onClick = { - val intent = Intent(Intent.ACTION_VIEW, Uri.parse(codeData.verificationUri)) + val intent = Intent( + Intent.ACTION_VIEW, + Uri.parse(codeData.verificationUri) + ) context.startActivity(intent) } ) { @@ -1128,8 +1144,10 @@ fun SettingsContent( } } } + is com.sameerasw.essentials.viewmodels.AuthState.Error -> { - val err = workflowAuthState as com.sameerasw.essentials.viewmodels.AuthState.Error + val err = + workflowAuthState as com.sameerasw.essentials.viewmodels.AuthState.Error Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally, @@ -1149,6 +1167,7 @@ fun SettingsContent( } } } + is com.sameerasw.essentials.viewmodels.AuthState.Authenticated -> { // Handled by token recomposition } @@ -1211,14 +1230,14 @@ fun SettingsContent( val triggerState by viewModel.wallpaperTriggerState if (triggerState != null) { Text( - text = when(triggerState) { + text = when (triggerState) { "loading" -> "Sending trigger request..." "success" -> "Trigger sent successfully!" "error" -> "Failed to send trigger." else -> "" }, style = MaterialTheme.typography.bodySmall, - color = when(triggerState) { + color = when (triggerState) { "success" -> MaterialTheme.colorScheme.primary "error" -> MaterialTheme.colorScheme.error else -> MaterialTheme.colorScheme.onSurfaceVariant diff --git a/app/src/main/java/com/sameerasw/essentials/ShutUpShortcutActivity.kt b/app/src/main/java/com/sameerasw/essentials/ShutUpShortcutActivity.kt index 263bf0fb3..1c0cbb82e 100644 --- a/app/src/main/java/com/sameerasw/essentials/ShutUpShortcutActivity.kt +++ b/app/src/main/java/com/sameerasw/essentials/ShutUpShortcutActivity.kt @@ -165,7 +165,11 @@ class ShutUpShortcutActivity : ComponentActivity() { // as some apps check this specific setting directly. if (config.disableUsbDebugging) { val current = - safeReadSetting(contentResolver, SettingsTable.GLOBAL, Settings.Global.ADB_ENABLED) + safeReadSetting( + contentResolver, + SettingsTable.GLOBAL, + Settings.Global.ADB_ENABLED + ) ?: "0" if (current == "1") { if (!originalSettings.containsKey("global:${Settings.Global.ADB_ENABLED}")) { @@ -177,7 +181,8 @@ class ShutUpShortcutActivity : ComponentActivity() { if (config.disableWirelessDebugging) { val current = - safeReadSetting(contentResolver, SettingsTable.GLOBAL, "adb_wifi_enabled") ?: "0" + safeReadSetting(contentResolver, SettingsTable.GLOBAL, "adb_wifi_enabled") + ?: "0" if (current == "1") { if (!originalSettings.containsKey("global:adb_wifi_enabled")) { originalSettings["global:adb_wifi_enabled"] = "1" diff --git a/app/src/main/java/com/sameerasw/essentials/data/repository/GitHubRepository.kt b/app/src/main/java/com/sameerasw/essentials/data/repository/GitHubRepository.kt index ae3be566b..ad9207f4d 100644 --- a/app/src/main/java/com/sameerasw/essentials/data/repository/GitHubRepository.kt +++ b/app/src/main/java/com/sameerasw/essentials/data/repository/GitHubRepository.kt @@ -135,7 +135,8 @@ class GitHubRepository { inputs: Map ): Boolean = withContext(Dispatchers.IO) { try { - val url = URL("https://api.github.com/repos/$owner/$repo/actions/workflows/$workflowFile/dispatches") + val url = + URL("https://api.github.com/repos/$owner/$repo/actions/workflows/$workflowFile/dispatches") val connection = url.openConnection() as HttpURLConnection connection.requestMethod = "POST" connection.doOutput = true @@ -143,10 +144,12 @@ class GitHubRepository { connection.setRequestProperty("Accept", "application/vnd.github+json") connection.setRequestProperty("Content-Type", "application/json") - val payload = gson.toJson(mapOf( - "ref" to ref, - "inputs" to inputs - )) + val payload = gson.toJson( + mapOf( + "ref" to ref, + "inputs" to inputs + ) + ) connection.outputStream.use { os -> os.write(payload.toByteArray(Charsets.UTF_8)) diff --git a/app/src/main/java/com/sameerasw/essentials/data/repository/SettingsRepository.kt b/app/src/main/java/com/sameerasw/essentials/data/repository/SettingsRepository.kt index 9efd86f16..767d2ebbc 100644 --- a/app/src/main/java/com/sameerasw/essentials/data/repository/SettingsRepository.kt +++ b/app/src/main/java/com/sameerasw/essentials/data/repository/SettingsRepository.kt @@ -548,6 +548,7 @@ class SettingsRepository(private val context: Context) { fun loadPocketModeExcludedApps() = loadAppSelection(KEY_POCKET_MODE_EXCLUDED_APPS) fun savePocketModeExcludedApps(apps: List) = saveAppSelection(KEY_POCKET_MODE_EXCLUDED_APPS, apps) + fun updatePocketModeExcludedAppSelection(packageName: String, enabled: Boolean) = updateAppSelection(KEY_POCKET_MODE_EXCLUDED_APPS, packageName, enabled) @@ -943,7 +944,10 @@ class SettingsRepository(private val context: Context) { putBoolean(KEY_PIXEL_SEARCHBAR_BACKGROUND_PILL, enabled) fun getPixelSearchbarWidgetId(): Int = - prefs.getInt(KEY_PIXEL_SEARCHBAR_WIDGET_ID, android.appwidget.AppWidgetManager.INVALID_APPWIDGET_ID) + prefs.getInt( + KEY_PIXEL_SEARCHBAR_WIDGET_ID, + android.appwidget.AppWidgetManager.INVALID_APPWIDGET_ID + ) fun setPixelSearchbarWidgetId(id: Int) = prefs.edit().putInt(KEY_PIXEL_SEARCHBAR_WIDGET_ID, id).apply() @@ -1012,7 +1016,9 @@ class SettingsRepository(private val context: Context) { putString(KEY_PIXEL_SEARCHBAR_MUSIC_PACKAGE, value) fun getEdgeLightingSweepSelectedShapes(): Set { - val defaultShapes = com.sameerasw.essentials.utils.AmbientMusicShapeHelper.allShapesWithNames.map { it.first }.toSet() + val defaultShapes = + com.sameerasw.essentials.utils.AmbientMusicShapeHelper.allShapesWithNames.map { it.first } + .toSet() val json = prefs.getString(KEY_EDGE_LIGHTING_SWEEP_SELECTED_SHAPES, null) return if (json != null) { try { @@ -1149,7 +1155,10 @@ class SettingsRepository(private val context: Context) { fun saveLiveWallpaperCustomVideos(videos: List) = liveWallpaperPrefs.edit() - .putString(KEY_LIVE_WALLPAPER_CUSTOM_VIDEOS, videos.filter { it.isNotEmpty() }.distinct().joinToString("\n")).apply() + .putString( + KEY_LIVE_WALLPAPER_CUSTOM_VIDEOS, + videos.filter { it.isNotEmpty() }.distinct().joinToString("\n") + ).apply() fun addLiveWallpaperCustomVideo(uri: String) { val current = getLiveWallpaperCustomVideos().toMutableList() diff --git a/app/src/main/java/com/sameerasw/essentials/data/repository/WallpaperRepository.kt b/app/src/main/java/com/sameerasw/essentials/data/repository/WallpaperRepository.kt index df5d64550..73296649a 100644 --- a/app/src/main/java/com/sameerasw/essentials/data/repository/WallpaperRepository.kt +++ b/app/src/main/java/com/sameerasw/essentials/data/repository/WallpaperRepository.kt @@ -5,7 +5,6 @@ import android.content.Context import android.content.Intent import android.graphics.Bitmap import android.graphics.BitmapFactory -import android.net.Uri import androidx.core.content.FileProvider import com.google.gson.Gson import com.sameerasw.essentials.domain.model.WallpaperInfo @@ -75,51 +74,57 @@ class WallpaperRepository { } } - suspend fun applyWallpaper(context: Context, urlString: String): Boolean = withContext(Dispatchers.IO) { - try { - val bitmap = downloadBitmap(urlString) ?: return@withContext false - val cacheFile = File(context.cacheDir, "today_wallpaper.jpg") - FileOutputStream(cacheFile).use { out -> - bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out) + suspend fun applyWallpaper(context: Context, urlString: String): Boolean = + withContext(Dispatchers.IO) { + try { + val bitmap = downloadBitmap(urlString) ?: return@withContext false + val cacheFile = File(context.cacheDir, "today_wallpaper.jpg") + FileOutputStream(cacheFile).use { out -> + bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out) + } + + val uri = FileProvider.getUriForFile( + context, + "${context.packageName}.fileprovider", + cacheFile + ) + + val wallpaperManager = WallpaperManager.getInstance(context) + val intent = wallpaperManager.getCropAndSetWallpaperIntent(uri) + intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + context.startActivity(intent) + true + } catch (e: Exception) { + e.printStackTrace() + false } - - val uri = FileProvider.getUriForFile( - context, - "${context.packageName}.fileprovider", - cacheFile - ) - - val wallpaperManager = WallpaperManager.getInstance(context) - val intent = wallpaperManager.getCropAndSetWallpaperIntent(uri) - intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - context.startActivity(intent) - true - } catch (e: Exception) { - e.printStackTrace() - false } - } - suspend fun autoApplyWallpaper(context: Context, urlString: String, flags: Int): Boolean = withContext(Dispatchers.IO) { - try { - val rawBitmap = downloadBitmap(urlString) ?: return@withContext false - val bitmap = centerCropToScreen(context, rawBitmap) - withContext(Dispatchers.Main) { - android.widget.Toast.makeText(context, com.sameerasw.essentials.R.string.label_wallpaper_applying, android.widget.Toast.LENGTH_SHORT).show() - } - val wallpaperManager = WallpaperManager.getInstance(context) - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { - wallpaperManager.setBitmap(bitmap, null, true, flags) - } else { - wallpaperManager.setBitmap(bitmap) + suspend fun autoApplyWallpaper(context: Context, urlString: String, flags: Int): Boolean = + withContext(Dispatchers.IO) { + try { + val rawBitmap = downloadBitmap(urlString) ?: return@withContext false + val bitmap = centerCropToScreen(context, rawBitmap) + withContext(Dispatchers.Main) { + android.widget.Toast.makeText( + context, + com.sameerasw.essentials.R.string.label_wallpaper_applying, + android.widget.Toast.LENGTH_SHORT + ).show() + } + val wallpaperManager = WallpaperManager.getInstance(context) + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { + wallpaperManager.setBitmap(bitmap, null, true, flags) + } else { + wallpaperManager.setBitmap(bitmap) + } + true + } catch (e: Exception) { + e.printStackTrace() + false } - true - } catch (e: Exception) { - e.printStackTrace() - false } - } private fun centerCropToScreen(context: Context, bitmap: Bitmap): Bitmap { val displayMetrics = context.resources.displayMetrics diff --git a/app/src/main/java/com/sameerasw/essentials/domain/diy/Action.kt b/app/src/main/java/com/sameerasw/essentials/domain/diy/Action.kt index 1e3a2dafd..19e5bd8a3 100644 --- a/app/src/main/java/com/sameerasw/essentials/domain/diy/Action.kt +++ b/app/src/main/java/com/sameerasw/essentials/domain/diy/Action.kt @@ -5,8 +5,8 @@ import androidx.annotation.Keep import androidx.annotation.StringRes import com.google.gson.annotations.SerializedName import com.sameerasw.essentials.R -import com.sameerasw.essentials.domain.ScreenOffMethod import com.sameerasw.essentials.domain.HapticFeedbackType +import com.sameerasw.essentials.domain.ScreenOffMethod @Keep sealed interface Action { diff --git a/app/src/main/java/com/sameerasw/essentials/domain/diy/DIYRepository.kt b/app/src/main/java/com/sameerasw/essentials/domain/diy/DIYRepository.kt index 7536122ec..38a88d8a5 100644 --- a/app/src/main/java/com/sameerasw/essentials/domain/diy/DIYRepository.kt +++ b/app/src/main/java/com/sameerasw/essentials/domain/diy/DIYRepository.kt @@ -124,8 +124,12 @@ object DIYRepository { private fun updateActionShortcutLauncherState() { val context = appContext ?: return - val showLauncher = _automations.value.any { it.type == Automation.Type.ACTION_SHORTCUT && it.isEnabled } - val componentName = android.content.ComponentName(context, "com.sameerasw.essentials.ActionShortcutLauncher") + val showLauncher = + _automations.value.any { it.type == Automation.Type.ACTION_SHORTCUT && it.isEnabled } + val componentName = android.content.ComponentName( + context, + "com.sameerasw.essentials.ActionShortcutLauncher" + ) try { val targetState = if (showLauncher) { android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED diff --git a/app/src/main/java/com/sameerasw/essentials/domain/model/Feature.kt b/app/src/main/java/com/sameerasw/essentials/domain/model/Feature.kt index 093be395c..c7e17759a 100644 --- a/app/src/main/java/com/sameerasw/essentials/domain/model/Feature.kt +++ b/app/src/main/java/com/sameerasw/essentials/domain/model/Feature.kt @@ -50,7 +50,8 @@ abstract class Feature( abstract fun onToggle(viewModel: MainViewModel, context: Context, enabled: Boolean) open fun onClick(context: Context, viewModel: MainViewModel) { - val targetFeatureId = if (!hasMoreSettings && parentFeatureId != null) parentFeatureId else id + val targetFeatureId = + if (!hasMoreSettings && parentFeatureId != null) parentFeatureId else id context.startActivity(Intent(context, FeatureSettingsActivity::class.java).apply { putExtra("feature", targetFeatureId) if (!hasMoreSettings && parentFeatureId != null) { diff --git a/app/src/main/java/com/sameerasw/essentials/domain/registry/FeatureRegistry.kt b/app/src/main/java/com/sameerasw/essentials/domain/registry/FeatureRegistry.kt index 51cb8abec..35c2e0bea 100644 --- a/app/src/main/java/com/sameerasw/essentials/domain/registry/FeatureRegistry.kt +++ b/app/src/main/java/com/sameerasw/essentials/domain/registry/FeatureRegistry.kt @@ -6,8 +6,8 @@ import com.sameerasw.essentials.EssentialsApp import com.sameerasw.essentials.R import com.sameerasw.essentials.domain.model.Feature import com.sameerasw.essentials.domain.model.SearchSetting -import com.sameerasw.essentials.ui.activities.WatermarkActivity import com.sameerasw.essentials.ui.activities.PixelSearchbarSettingsActivity +import com.sameerasw.essentials.ui.activities.WatermarkActivity import com.sameerasw.essentials.utils.DeviceUtils import com.sameerasw.essentials.utils.ShellUtils import com.sameerasw.essentials.viewmodels.MainViewModel @@ -299,7 +299,7 @@ object FeatureRegistry { override fun isEnabled(viewModel: MainViewModel) = true override fun onToggle(viewModel: MainViewModel, context: Context, enabled: Boolean) {} }, - + object : Feature( id = "Pixel Searchbar", title = R.string.feat_pixel_searchbar_title, @@ -313,15 +313,20 @@ object FeatureRegistry { isBeta = true, parentFeatureId = "Widgets" ) { - override fun isEnabled(viewModel: MainViewModel) = viewModel.isPixelSearchbarEnabled.value + override fun isEnabled(viewModel: MainViewModel) = + viewModel.isPixelSearchbarEnabled.value + override fun isToggleEnabled(viewModel: MainViewModel, context: Context) = viewModel.isWriteSecureSettingsEnabled.value || viewModel.isShizukuPermissionGranted.value || viewModel.isRootPermissionGranted.value + override fun onToggle(viewModel: MainViewModel, context: Context, enabled: Boolean) { viewModel.setPixelSearchbarEnabled(enabled, context) } + override fun onClick(context: Context, viewModel: MainViewModel) { context.startActivity(Intent(context, PixelSearchbarSettingsActivity::class.java)) } + override fun isDeviceSupported(context: Context) = DeviceUtils.isGoogleDevice() }, @@ -958,6 +963,7 @@ object FeatureRegistry { override fun onToggle(viewModel: MainViewModel, context: Context, enabled: Boolean) = viewModel.setPocketModeEnabled(enabled) + override fun isDeviceSupported(context: Context) = !DeviceUtils.isGoogleDevice() }, object : Feature( @@ -1101,7 +1107,12 @@ object FeatureRegistry { override fun isEnabled(viewModel: MainViewModel) = true override fun onToggle(viewModel: MainViewModel, context: Context, enabled: Boolean) {} override fun onClick(context: Context, viewModel: MainViewModel) { - context.startActivity(Intent(context, com.sameerasw.essentials.ui.activities.WallpaperActivity::class.java)) + context.startActivity( + Intent( + context, + com.sameerasw.essentials.ui.activities.WallpaperActivity::class.java + ) + ) } }, @@ -1166,7 +1177,8 @@ object FeatureRegistry { override fun onToggle(viewModel: MainViewModel, context: Context, enabled: Boolean) { // Send message to watch to toggle ADB Wifi - val messageClient = com.google.android.gms.wearable.Wearable.getMessageClient(context) + val messageClient = + com.google.android.gms.wearable.Wearable.getMessageClient(context) val nodeClient = com.google.android.gms.wearable.Wearable.getNodeClient(context) nodeClient.connectedNodes.addOnSuccessListener { nodes -> for (node in nodes) { diff --git a/app/src/main/java/com/sameerasw/essentials/domain/registry/SearchRegistry.kt b/app/src/main/java/com/sameerasw/essentials/domain/registry/SearchRegistry.kt index 5d29a46b3..c5b084729 100644 --- a/app/src/main/java/com/sameerasw/essentials/domain/registry/SearchRegistry.kt +++ b/app/src/main/java/com/sameerasw/essentials/domain/registry/SearchRegistry.kt @@ -11,53 +11,58 @@ object SearchRegistry { fun search(context: Context, query: String): List = search(context, query, SettingsRepository(context).isEnableUnsupportedFeatures()) - fun search(context: Context, query: String, includeUnsupportedFeatures: Boolean = false): List { + fun search( + context: Context, + query: String, + includeUnsupportedFeatures: Boolean = false + ): List { val q = query.trim().lowercase() if (q.isEmpty()) return emptyList() val allItems = mutableListOf() // --- Index Features and Sub-settings --- - FeatureRegistry.getFilteredFeatures(context, includeUnsupportedFeatures).forEach { feature -> - val featureTitle = context.getString(feature.title) - val featureCategory = context.getString(feature.category) + FeatureRegistry.getFilteredFeatures(context, includeUnsupportedFeatures) + .forEach { feature -> + val featureTitle = context.getString(feature.title) + val featureCategory = context.getString(feature.category) - // Index the feature itself - allItems.add( - SearchableItem( - title = featureTitle, - description = context.getString(feature.description), - category = featureCategory, - icon = feature.iconRes, - featureKey = feature.id, - keywords = listOf( - context.getString(R.string.keyword_feature), - context.getString(R.string.keyword_settings) - ), - isBeta = feature.isBeta - ) - ) - - // Index sub-settings - feature.searchableSettings.forEach { setting -> + // Index the feature itself allItems.add( SearchableItem( - title = context.getString(setting.title), - description = context.getString(setting.description), - category = setting.category?.let { context.getString(it) } - ?: featureCategory, + title = featureTitle, + description = context.getString(feature.description), + category = featureCategory, icon = feature.iconRes, featureKey = feature.id, - parentFeature = featureTitle, - targetSettingHighlightKey = setting.targetSettingHighlightKey, - keywords = if (setting.keywordRes != 0) context.resources.getStringArray( - setting.keywordRes - ).toList() else emptyList(), + keywords = listOf( + context.getString(R.string.keyword_feature), + context.getString(R.string.keyword_settings) + ), isBeta = feature.isBeta ) ) + + // Index sub-settings + feature.searchableSettings.forEach { setting -> + allItems.add( + SearchableItem( + title = context.getString(setting.title), + description = context.getString(setting.description), + category = setting.category?.let { context.getString(it) } + ?: featureCategory, + icon = feature.iconRes, + featureKey = feature.id, + parentFeature = featureTitle, + targetSettingHighlightKey = setting.targetSettingHighlightKey, + keywords = if (setting.keywordRes != 0) context.resources.getStringArray( + setting.keywordRes + ).toList() else emptyList(), + isBeta = feature.isBeta + ) + ) + } } - } // --- Dynamic Status Bar Icons --- StatusBarIconRegistry.ALL_ICONS.forEach { icon -> diff --git a/app/src/main/java/com/sameerasw/essentials/domain/watermark/WatermarkEngine.kt b/app/src/main/java/com/sameerasw/essentials/domain/watermark/WatermarkEngine.kt index fe9027201..2a182b637 100644 --- a/app/src/main/java/com/sameerasw/essentials/domain/watermark/WatermarkEngine.kt +++ b/app/src/main/java/com/sameerasw/essentials/domain/watermark/WatermarkEngine.kt @@ -168,29 +168,58 @@ class WatermarkEngine( android.graphics.Matrix().apply { postRotate(options.rotation.toFloat()) } val rb = Bitmap.createBitmap(bitmap, 0, 0, bitmap.width, bitmap.height, matrix, true) - + // If we have a gainmap, rotate its contents as well to align with the base image if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE && currentGainmap != null) { try { val gmContents = currentGainmap.gainmapContents - val rotatedGmContents = Bitmap.createBitmap(gmContents, 0, 0, gmContents.width, gmContents.height, matrix, true) + val rotatedGmContents = Bitmap.createBitmap( + gmContents, + 0, + 0, + gmContents.width, + gmContents.height, + matrix, + true + ) val newGm = android.graphics.Gainmap(rotatedGmContents) - - newGm.setRatioMin(currentGainmap.ratioMin[0], currentGainmap.ratioMin[1], currentGainmap.ratioMin[2]) - newGm.setRatioMax(currentGainmap.ratioMax[0], currentGainmap.ratioMax[1], currentGainmap.ratioMax[2]) - newGm.setGamma(currentGainmap.gamma[0], currentGainmap.gamma[1], currentGainmap.gamma[2]) - newGm.setEpsilonSdr(currentGainmap.epsilonSdr[0], currentGainmap.epsilonSdr[1], currentGainmap.epsilonSdr[2]) - newGm.setEpsilonHdr(currentGainmap.epsilonHdr[0], currentGainmap.epsilonHdr[1], currentGainmap.epsilonHdr[2]) + + newGm.setRatioMin( + currentGainmap.ratioMin[0], + currentGainmap.ratioMin[1], + currentGainmap.ratioMin[2] + ) + newGm.setRatioMax( + currentGainmap.ratioMax[0], + currentGainmap.ratioMax[1], + currentGainmap.ratioMax[2] + ) + newGm.setGamma( + currentGainmap.gamma[0], + currentGainmap.gamma[1], + currentGainmap.gamma[2] + ) + newGm.setEpsilonSdr( + currentGainmap.epsilonSdr[0], + currentGainmap.epsilonSdr[1], + currentGainmap.epsilonSdr[2] + ) + newGm.setEpsilonHdr( + currentGainmap.epsilonHdr[0], + currentGainmap.epsilonHdr[1], + currentGainmap.epsilonHdr[2] + ) newGm.displayRatioForFullHdr = currentGainmap.displayRatioForFullHdr - newGm.minDisplayRatioForHdrTransition = currentGainmap.minDisplayRatioForHdrTransition - + newGm.minDisplayRatioForHdrTransition = + currentGainmap.minDisplayRatioForHdrTransition + currentGainmap = newGm rb.gainmap = newGm } catch (e: Exception) { e.printStackTrace() } } - + if (rb != bitmap) bitmap.recycle() rb } else { @@ -209,7 +238,7 @@ class WatermarkEngine( try { val gmContents = currentGainmap.gainmapContents val scale = gmContents.width.toFloat() / rotated.width.toFloat() - + var xOffset = 0f var yOffset = 0f @@ -218,46 +247,50 @@ class WatermarkEngine( val baseFrameHeight = (rotated.height * 0.10f).roundToInt() val brandScale = 0.5f + (options.brandTextSize / 100f) val dataScale = 0.5f + (options.dataTextSize / 100f) - + val brandPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply { textSize = (baseFrameHeight * 0.3f) * brandScale } val exifPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply { textSize = (baseFrameHeight * 0.2f) * dataScale } - + val margin = rotated.width * (options.padding / 1000f) val maxAvailableWidth = if (options.showDeviceBrand) { (rotated.width - margin * 2) * 0.6f } else { (rotated.width - margin * 2) } - + var totalExifHeight = 0f if (options.showExif) { val exifItems = buildExifList(exifData, options) if (exifItems.isNotEmpty()) { - val exifRows = wrapExifItems(exifItems, exifPaint, maxAvailableWidth) + val exifRows = + wrapExifItems(exifItems, exifPaint, maxAvailableWidth) totalExifHeight = exifRows.size * (exifPaint.textSize * 1.5f) } } - + var leftSideHeight = 0f if (options.showDeviceBrand) leftSideHeight += brandPaint.textSize if (options.showCustomText && options.customText.isNotEmpty()) { val customScale = 0.5f + (options.customTextSize / 100f) val customPaint = Paint(brandPaint).apply { - textSize = brandPaint.textSize * (customScale / (0.5f + (options.brandTextSize / 100f))) + textSize = + brandPaint.textSize * (customScale / (0.5f + (options.brandTextSize / 100f))) } if (options.showDeviceBrand) leftSideHeight += (brandPaint.textSize * 0.2f) leftSideHeight += customPaint.textSize } - + val minHeight = max(brandPaint.textSize, exifPaint.textSize) * 2f val strokeSpacer = (rotated.width * (options.borderStroke / 1000f)).toInt() - val calculatedHeight = max(leftSideHeight, totalExifHeight) + (margin * 2) + strokeSpacer - val finalFrameHeight = max(minHeight.roundToInt(), calculatedHeight.roundToInt()) - + val calculatedHeight = + max(leftSideHeight, totalExifHeight) + (margin * 2) + strokeSpacer + val finalFrameHeight = + max(minHeight.roundToInt(), calculatedHeight.roundToInt()) + if (options.moveToTop) { yOffset += finalFrameHeight } @@ -272,11 +305,12 @@ class WatermarkEngine( val newGmWidth = (finalResult.width * scale).roundToInt() val newGmHeight = (finalResult.height * scale).roundToInt() - - val newGmContents = Bitmap.createBitmap(newGmWidth, newGmHeight, Bitmap.Config.ARGB_8888) + + val newGmContents = + Bitmap.createBitmap(newGmWidth, newGmHeight, Bitmap.Config.ARGB_8888) val gmCanvas = Canvas(newGmContents) gmCanvas.drawColor(Color.BLACK) // fill with neutral black - + val destRect = RectF( xOffset * scale, yOffset * scale, @@ -284,16 +318,37 @@ class WatermarkEngine( (yOffset + rotated.height) * scale ) gmCanvas.drawBitmap(gmContents, null, destRect, null) - + val newGm = android.graphics.Gainmap(newGmContents) - newGm.setRatioMin(currentGainmap.ratioMin[0], currentGainmap.ratioMin[1], currentGainmap.ratioMin[2]) - newGm.setRatioMax(currentGainmap.ratioMax[0], currentGainmap.ratioMax[1], currentGainmap.ratioMax[2]) - newGm.setGamma(currentGainmap.gamma[0], currentGainmap.gamma[1], currentGainmap.gamma[2]) - newGm.setEpsilonSdr(currentGainmap.epsilonSdr[0], currentGainmap.epsilonSdr[1], currentGainmap.epsilonSdr[2]) - newGm.setEpsilonHdr(currentGainmap.epsilonHdr[0], currentGainmap.epsilonHdr[1], currentGainmap.epsilonHdr[2]) + newGm.setRatioMin( + currentGainmap.ratioMin[0], + currentGainmap.ratioMin[1], + currentGainmap.ratioMin[2] + ) + newGm.setRatioMax( + currentGainmap.ratioMax[0], + currentGainmap.ratioMax[1], + currentGainmap.ratioMax[2] + ) + newGm.setGamma( + currentGainmap.gamma[0], + currentGainmap.gamma[1], + currentGainmap.gamma[2] + ) + newGm.setEpsilonSdr( + currentGainmap.epsilonSdr[0], + currentGainmap.epsilonSdr[1], + currentGainmap.epsilonSdr[2] + ) + newGm.setEpsilonHdr( + currentGainmap.epsilonHdr[0], + currentGainmap.epsilonHdr[1], + currentGainmap.epsilonHdr[2] + ) newGm.displayRatioForFullHdr = currentGainmap.displayRatioForFullHdr - newGm.minDisplayRatioForHdrTransition = currentGainmap.minDisplayRatioForHdrTransition - + newGm.minDisplayRatioForHdrTransition = + currentGainmap.minDisplayRatioForHdrTransition + finalResult.gainmap = newGm } catch (e: Exception) { e.printStackTrace() diff --git a/app/src/main/java/com/sameerasw/essentials/external/ExternalActionReceiver.kt b/app/src/main/java/com/sameerasw/essentials/external/ExternalActionReceiver.kt index 173d20929..d26690a33 100644 --- a/app/src/main/java/com/sameerasw/essentials/external/ExternalActionReceiver.kt +++ b/app/src/main/java/com/sameerasw/essentials/external/ExternalActionReceiver.kt @@ -20,7 +20,10 @@ class ExternalActionReceiver : BroadcastReceiver() { val action = intent.getStringExtra(EXTRA_ACTION) val value = intent.getStringExtra(EXTRA_VALUE) - Log.d("ExternalActionReceiver", "Received external control request: path=$path, action=$action, value=$value") + Log.d( + "ExternalActionReceiver", + "Received external control request: path=$path, action=$action, value=$value" + ) if (action == "update") { ExternalRouter.update(context, path, value, intent.extras) diff --git a/app/src/main/java/com/sameerasw/essentials/external/ExternalControlProvider.kt b/app/src/main/java/com/sameerasw/essentials/external/ExternalControlProvider.kt index 8d0669e12..bae9a42a9 100644 --- a/app/src/main/java/com/sameerasw/essentials/external/ExternalControlProvider.kt +++ b/app/src/main/java/com/sameerasw/essentials/external/ExternalControlProvider.kt @@ -3,7 +3,6 @@ package com.sameerasw.essentials.external import android.content.ContentProvider import android.content.ContentValues import android.database.Cursor -import android.database.MatrixCursor import android.net.Uri import android.os.Bundle diff --git a/app/src/main/java/com/sameerasw/essentials/external/LocationAlarmExternalHandler.kt b/app/src/main/java/com/sameerasw/essentials/external/LocationAlarmExternalHandler.kt index ed572d1d2..e705052a5 100644 --- a/app/src/main/java/com/sameerasw/essentials/external/LocationAlarmExternalHandler.kt +++ b/app/src/main/java/com/sameerasw/essentials/external/LocationAlarmExternalHandler.kt @@ -17,43 +17,57 @@ class LocationAlarmExternalHandler : ExternalHandler { val alarms = repository.getAlarms() val activeId = repository.getActiveAlarmId() - val cursor = MatrixCursor(arrayOf( - "id", - "name", - "latitude", - "longitude", - "radius", - "isEnabled", - "isPaused", - "lastTravelled", - "isActive", - "iconResName" - )) + val cursor = MatrixCursor( + arrayOf( + "id", + "name", + "latitude", + "longitude", + "radius", + "isEnabled", + "isPaused", + "lastTravelled", + "isActive", + "iconResName" + ) + ) for (alarm in alarms) { - cursor.addRow(arrayOf( - alarm.id, - alarm.name, - alarm.latitude, - alarm.longitude, - alarm.radius, - if (alarm.isEnabled) 1 else 0, - if (alarm.isPaused) 1 else 0, - alarm.lastTravelled ?: 0L, - if (alarm.id == activeId) 1 else 0, - alarm.iconResName - )) + cursor.addRow( + arrayOf( + alarm.id, + alarm.name, + alarm.latitude, + alarm.longitude, + alarm.radius, + if (alarm.isEnabled) 1 else 0, + if (alarm.isPaused) 1 else 0, + alarm.lastTravelled ?: 0L, + if (alarm.id == activeId) 1 else 0, + alarm.iconResName + ) + ) } return cursor } return null } - override fun onUpdate(context: Context, remainingPath: String, value: String?, extras: Bundle?): Boolean { + override fun onUpdate( + context: Context, + remainingPath: String, + value: String?, + extras: Bundle? + ): Boolean { return false } - override fun onAction(context: Context, remainingPath: String, action: String?, extras: Bundle?): Bundle? { + override fun onAction( + context: Context, + remainingPath: String, + action: String?, + extras: Bundle? + ): Bundle? { val repository = LocationReachedRepository(context) val targetAction = action ?: remainingPath when (targetAction) { @@ -63,6 +77,7 @@ class LocationAlarmExternalHandler : ExternalHandler { LocationReachedService.start(context) return Bundle().apply { putBoolean("success", true) } } + "stop" -> { repository.saveActiveAlarmId(null) val intent = Intent(context, LocationReachedService::class.java).apply { diff --git a/app/src/main/java/com/sameerasw/essentials/external/SettingsExternalHandler.kt b/app/src/main/java/com/sameerasw/essentials/external/SettingsExternalHandler.kt index c158d9c36..4e9781c85 100644 --- a/app/src/main/java/com/sameerasw/essentials/external/SettingsExternalHandler.kt +++ b/app/src/main/java/com/sameerasw/essentials/external/SettingsExternalHandler.kt @@ -11,7 +11,8 @@ class SettingsExternalHandler : ExternalHandler { override fun onQuery(context: Context, remainingPath: String, extras: Bundle?): Cursor? { val key = remainingPath - val prefs = context.getSharedPreferences(SettingsRepository.PREFS_NAME, Context.MODE_PRIVATE) + val prefs = + context.getSharedPreferences(SettingsRepository.PREFS_NAME, Context.MODE_PRIVATE) if (!prefs.contains(key)) return null val value = prefs.all[key] ?: return null @@ -20,9 +21,15 @@ class SettingsExternalHandler : ExternalHandler { return cursor } - override fun onUpdate(context: Context, remainingPath: String, value: String?, extras: Bundle?): Boolean { + override fun onUpdate( + context: Context, + remainingPath: String, + value: String?, + extras: Bundle? + ): Boolean { val key = remainingPath - val prefs = context.getSharedPreferences(SettingsRepository.PREFS_NAME, Context.MODE_PRIVATE) + val prefs = + context.getSharedPreferences(SettingsRepository.PREFS_NAME, Context.MODE_PRIVATE) if (!prefs.contains(key)) return false val currentValue = prefs.all[key] ?: return false @@ -43,10 +50,16 @@ class SettingsExternalHandler : ExternalHandler { } } - override fun onAction(context: Context, remainingPath: String, action: String?, extras: Bundle?): Bundle? { + override fun onAction( + context: Context, + remainingPath: String, + action: String?, + extras: Bundle? + ): Bundle? { if (action == "toggle") { val key = remainingPath - val prefs = context.getSharedPreferences(SettingsRepository.PREFS_NAME, Context.MODE_PRIVATE) + val prefs = + context.getSharedPreferences(SettingsRepository.PREFS_NAME, Context.MODE_PRIVATE) val currentValue = prefs.all[key] if (currentValue is Boolean) { val repository = SettingsRepository(context) diff --git a/app/src/main/java/com/sameerasw/essentials/services/DailyWallpaperWorker.kt b/app/src/main/java/com/sameerasw/essentials/services/DailyWallpaperWorker.kt index 51eef09ce..eff3528b7 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/DailyWallpaperWorker.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/DailyWallpaperWorker.kt @@ -19,7 +19,10 @@ class DailyWallpaperWorker( val wallpaperRepository = WallpaperRepository() return try { - val isEnabled = settingsRepository.getBoolean(SettingsRepository.KEY_DAILY_WALLPAPER_AUTO_UPDATE, false) + val isEnabled = settingsRepository.getBoolean( + SettingsRepository.KEY_DAILY_WALLPAPER_AUTO_UPDATE, + false + ) if (!isEnabled) { return Result.success() } @@ -27,8 +30,10 @@ class DailyWallpaperWorker( val force = inputData.getBoolean("force", false) val todayWallpaper = wallpaperRepository.fetchTodayWallpaper() if (todayWallpaper != null) { - val cachedId = settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_ID) ?: "" - + val cachedId = + settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_ID) + ?: "" + // If it is a new wallpaper (or forced run), fetch and apply if (force || todayWallpaper.id != cachedId) { val applyHome = settingsRepository.getDailyWallpaperApplyHome() @@ -38,16 +43,44 @@ class DailyWallpaperWorker( if (applyLock) flags = flags or android.app.WallpaperManager.FLAG_LOCK if (flags != 0) { - val applied = wallpaperRepository.autoApplyWallpaper(context, todayWallpaper.urlMobile, flags) + val applied = wallpaperRepository.autoApplyWallpaper( + context, + todayWallpaper.urlMobile, + flags + ) if (applied) { - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_ID, todayWallpaper.id) - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL, todayWallpaper.url) - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL_MOBILE, todayWallpaper.urlMobile) - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_AUTHOR_NAME, todayWallpaper.authorName) - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_AUTHOR_LINK, todayWallpaper.authorLink) - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_PHOTO_LINK, todayWallpaper.photoLink) - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_UPDATED_AT, todayWallpaper.updatedAt) - Log.d("DailyWallpaperWorker", "Successfully auto-applied wallpaper (force=$force, flags=$flags): ${todayWallpaper.id}") + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_LAST_ID, + todayWallpaper.id + ) + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL, + todayWallpaper.url + ) + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL_MOBILE, + todayWallpaper.urlMobile + ) + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_AUTHOR_NAME, + todayWallpaper.authorName + ) + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_AUTHOR_LINK, + todayWallpaper.authorLink + ) + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_PHOTO_LINK, + todayWallpaper.photoLink + ) + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_UPDATED_AT, + todayWallpaper.updatedAt + ) + Log.d( + "DailyWallpaperWorker", + "Successfully auto-applied wallpaper (force=$force, flags=$flags): ${todayWallpaper.id}" + ) } } } diff --git a/app/src/main/java/com/sameerasw/essentials/services/DeviceInfoSyncManager.kt b/app/src/main/java/com/sameerasw/essentials/services/DeviceInfoSyncManager.kt index 2fa80d4bd..aaa8e759d 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/DeviceInfoSyncManager.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/DeviceInfoSyncManager.kt @@ -62,7 +62,8 @@ object DeviceInfoSyncManager { } private var currentContext: Context? = null - private var prefChangeListener: android.content.SharedPreferences.OnSharedPreferenceChangeListener? = null + private var prefChangeListener: android.content.SharedPreferences.OnSharedPreferenceChangeListener? = + null private var aodContentObserver: android.database.ContentObserver? = null private var tapToWakeContentObserver: android.database.ContentObserver? = null @@ -111,15 +112,20 @@ object DeviceInfoSyncManager { syncDeviceInfo(context) } } - context.contentResolver.registerContentObserver(tapToWakeUri, true, tapToWakeContentObserver!!) + context.contentResolver.registerContentObserver( + tapToWakeUri, + true, + tapToWakeContentObserver!! + ) // Sync on preference change (flashlight pulse, glance, watch controls) val p = context.getSharedPreferences("essentials_prefs", Context.MODE_PRIVATE) - prefChangeListener = android.content.SharedPreferences.OnSharedPreferenceChangeListener { _, key -> - if (key == "flashlight_pulse_enabled" || key == "notification_glance_enabled" || key == "watch_controls_layout" || key == "watch_sync_sound_mode_enabled") { - syncDeviceInfo(context) + prefChangeListener = + android.content.SharedPreferences.OnSharedPreferenceChangeListener { _, key -> + if (key == "flashlight_pulse_enabled" || key == "notification_glance_enabled" || key == "watch_controls_layout" || key == "watch_sync_sound_mode_enabled") { + syncDeviceInfo(context) + } } - } p.registerOnSharedPreferenceChangeListener(prefChangeListener) } @@ -178,13 +184,24 @@ object DeviceInfoSyncManager { val flashlightPulseEnabled = prefs.getBoolean("flashlight_pulse_enabled", false) val aodState = when { prefs.getBoolean("notification_glance_enabled", false) -> 2 - android.provider.Settings.Secure.getInt(context.contentResolver, "doze_always_on", 0) == 1 -> 1 + android.provider.Settings.Secure.getInt( + context.contentResolver, + "doze_always_on", + 0 + ) == 1 -> 1 + else -> 0 } - val watchControlsLayout = prefs.getString("watch_controls_layout", "LOCK,SOUND,FLASHLIGHT,FLASHLIGHT_PULSE,AOD") ?: "LOCK,SOUND,FLASHLIGHT,FLASHLIGHT_PULSE,AOD" + val watchControlsLayout = + prefs.getString("watch_controls_layout", "LOCK,SOUND,FLASHLIGHT,FLASHLIGHT_PULSE,AOD") + ?: "LOCK,SOUND,FLASHLIGHT,FLASHLIGHT_PULSE,AOD" - val tapToWakeEnabled = android.provider.Settings.Secure.getInt(context.contentResolver, "doze_tap_gesture", 1) == 1 + val tapToWakeEnabled = android.provider.Settings.Secure.getInt( + context.contentResolver, + "doze_tap_gesture", + 1 + ) == 1 val watchSyncSoundModeEnabled = prefs.getBoolean("watch_sync_sound_mode_enabled", false) val dataMap = putDataMapReq.dataMap @@ -201,7 +218,7 @@ object DeviceInfoSyncManager { dataMap.putBoolean("tap_to_wake_enabled", tapToWakeEnabled) dataMap.putString("watch_controls_layout", watchControlsLayout) dataMap.putBoolean("watch_sync_sound_mode_enabled", watchSyncSoundModeEnabled) - + dataMap.putBoolean("travel_active", travelActive) dataMap.putString("travel_name", travelName) dataMap.putFloat("travel_progress", travelProgress) diff --git a/app/src/main/java/com/sameerasw/essentials/services/EssentialsWearableListenerService.kt b/app/src/main/java/com/sameerasw/essentials/services/EssentialsWearableListenerService.kt index b04db21fc..cc6ed7b57 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/EssentialsWearableListenerService.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/EssentialsWearableListenerService.kt @@ -1,10 +1,9 @@ package com.sameerasw.essentials.services -import com.google.android.gms.wearable.MessageEvent -import com.google.android.gms.wearable.WearableListenerService - import android.content.Context import androidx.core.content.edit +import com.google.android.gms.wearable.MessageEvent +import com.google.android.gms.wearable.WearableListenerService class EssentialsWearableListenerService : WearableListenerService() { companion object { @@ -96,7 +95,11 @@ class EssentialsWearableListenerService : WearableListenerService() { "/toggle_aod" -> { val prefs = getSharedPreferences("essentials_prefs", MODE_PRIVATE) val isGlanceEnabled = prefs.getBoolean("notification_glance_enabled", false) - val isAodEnabled = android.provider.Settings.Secure.getInt(contentResolver, "doze_always_on", 0) == 1 + val isAodEnabled = android.provider.Settings.Secure.getInt( + contentResolver, + "doze_always_on", + 0 + ) == 1 when { isGlanceEnabled -> { @@ -104,41 +107,75 @@ class EssentialsWearableListenerService : WearableListenerService() { putBoolean("notification_glance_enabled", false) } try { - android.provider.Settings.Secure.putInt(contentResolver, "doze_always_on", 1) + android.provider.Settings.Secure.putInt( + contentResolver, + "doze_always_on", + 1 + ) } catch (_: Exception) { - com.sameerasw.essentials.utils.ShellUtils.runCommand(this, "settings put secure doze_always_on 1") + com.sameerasw.essentials.utils.ShellUtils.runCommand( + this, + "settings put secure doze_always_on 1" + ) } } + isAodEnabled -> { try { - android.provider.Settings.Secure.putInt(contentResolver, "doze_always_on", 0) + android.provider.Settings.Secure.putInt( + contentResolver, + "doze_always_on", + 0 + ) } catch (_: Exception) { - com.sameerasw.essentials.utils.ShellUtils.runCommand(this, "settings put secure doze_always_on 0") + com.sameerasw.essentials.utils.ShellUtils.runCommand( + this, + "settings put secure doze_always_on 0" + ) } prefs.edit(commit = true) { putBoolean("notification_glance_enabled", false) } } + else -> { prefs.edit(commit = true) { putBoolean("notification_glance_enabled", true) } try { - android.provider.Settings.Secure.putInt(contentResolver, "doze_always_on", 0) + android.provider.Settings.Secure.putInt( + contentResolver, + "doze_always_on", + 0 + ) } catch (_: Exception) { - com.sameerasw.essentials.utils.ShellUtils.runCommand(this, "settings put secure doze_always_on 0") + com.sameerasw.essentials.utils.ShellUtils.runCommand( + this, + "settings put secure doze_always_on 0" + ) } } } } "/toggle_tap_to_wake" -> { - val isEnabled = android.provider.Settings.Secure.getInt(contentResolver, "doze_tap_gesture", 1) == 1 + val isEnabled = android.provider.Settings.Secure.getInt( + contentResolver, + "doze_tap_gesture", + 1 + ) == 1 val newState = if (isEnabled) 0 else 1 try { - android.provider.Settings.Secure.putInt(contentResolver, "doze_tap_gesture", newState) + android.provider.Settings.Secure.putInt( + contentResolver, + "doze_tap_gesture", + newState + ) } catch (_: Exception) { - com.sameerasw.essentials.utils.ShellUtils.runCommand(this, "settings put secure doze_tap_gesture $newState") + com.sameerasw.essentials.utils.ShellUtils.runCommand( + this, + "settings put secure doze_tap_gesture $newState" + ) } } @@ -173,7 +210,8 @@ class EssentialsWearableListenerService : WearableListenerService() { val isSyncEnabled = prefs.getBoolean("watch_sync_sound_mode_enabled", false) if (isSyncEnabled) { val ringerMode = messageEvent.data?.firstOrNull()?.toInt() ?: 2 - val audioManager = getSystemService(Context.AUDIO_SERVICE) as? android.media.AudioManager + val audioManager = + getSystemService(Context.AUDIO_SERVICE) as? android.media.AudioManager try { audioManager?.ringerMode = ringerMode } catch (e: Exception) { diff --git a/app/src/main/java/com/sameerasw/essentials/services/LocationReachedService.kt b/app/src/main/java/com/sameerasw/essentials/services/LocationReachedService.kt index 3f8ee7b7d..d5c7deaea 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/LocationReachedService.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/LocationReachedService.kt @@ -126,15 +126,27 @@ class LocationReachedService : Service() { } } - private fun saveTravelProgress(active: Boolean, alarm: LocationAlarm?, progressPercent: Int, etaText: String?, distanceText: String?) { + private fun saveTravelProgress( + active: Boolean, + alarm: LocationAlarm?, + progressPercent: Int, + etaText: String?, + distanceText: String? + ) { val prefs = getSharedPreferences("essentials_prefs", MODE_PRIVATE) val editor = prefs.edit() if (active && alarm != null) { editor.putBoolean("travel_active", true) editor.putString("travel_name", alarm.name) editor.putFloat("travel_progress", progressPercent.toFloat() / 100f) - editor.putString("travel_remaining_time", etaText ?: getString(R.string.location_reached_calculating)) - editor.putString("travel_remaining_distance", distanceText ?: getString(R.string.location_reached_calculating)) + editor.putString( + "travel_remaining_time", + etaText ?: getString(R.string.location_reached_calculating) + ) + editor.putString( + "travel_remaining_distance", + distanceText ?: getString(R.string.location_reached_calculating) + ) editor.putString("travel_icon_name", alarm.iconResName) editor.putBoolean("travel_is_paused", alarm.isPaused) if (progressPercent >= 100) { diff --git a/app/src/main/java/com/sameerasw/essentials/services/NotificationListener.kt b/app/src/main/java/com/sameerasw/essentials/services/NotificationListener.kt index 34962476d..cc908c1c1 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/NotificationListener.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/NotificationListener.kt @@ -20,14 +20,13 @@ import com.sameerasw.essentials.domain.model.NotificationLightingColorMode import com.sameerasw.essentials.domain.model.NotificationLightingSide import com.sameerasw.essentials.services.receivers.FlashlightActionReceiver import com.sameerasw.essentials.services.tiles.ScreenOffAccessibilityService +import com.sameerasw.essentials.services.widgets.PixelSearchbarWidget import com.sameerasw.essentials.utils.AppUtil import com.sameerasw.essentials.utils.HapticUtil import com.sameerasw.essentials.utils.PermissionUtils +import kotlinx.coroutines.launch import java.io.File import java.io.FileOutputStream -import com.sameerasw.essentials.services.widgets.PixelSearchbarWidget - -import kotlinx.coroutines.launch class NotificationListener : NotificationListenerService() { @@ -631,15 +630,18 @@ class NotificationListener : NotificationListenerService() { val metadata = controller.metadata val playbackState = controller.playbackState - val title = metadata?.getString(android.media.MediaMetadata.METADATA_KEY_TITLE) ?: "" - val artist = metadata?.getString(android.media.MediaMetadata.METADATA_KEY_ARTIST) ?: "" + val title = + metadata?.getString(android.media.MediaMetadata.METADATA_KEY_TITLE) ?: "" + val artist = + metadata?.getString(android.media.MediaMetadata.METADATA_KEY_ARTIST) ?: "" val isPlaying = playbackState?.state == android.media.session.PlaybackState.STATE_PLAYING // Extract and save album art - val artwork = metadata?.getBitmap(android.media.MediaMetadata.METADATA_KEY_ALBUM_ART) - ?: metadata?.getBitmap(android.media.MediaMetadata.METADATA_KEY_ART) - ?: metadata?.getBitmap(android.media.MediaMetadata.METADATA_KEY_DISPLAY_ICON) + val artwork = + metadata?.getBitmap(android.media.MediaMetadata.METADATA_KEY_ALBUM_ART) + ?: metadata?.getBitmap(android.media.MediaMetadata.METADATA_KEY_ART) + ?: metadata?.getBitmap(android.media.MediaMetadata.METADATA_KEY_DISPLAY_ICON) val filesDirFile = File(filesDir, "music_artwork.png") if (artwork != null) { @@ -647,7 +649,8 @@ class NotificationListener : NotificationListenerService() { FileOutputStream(filesDirFile).use { out -> artwork.compress(Bitmap.CompressFormat.PNG, 100, out) } - } catch (_: Exception) {} + } catch (_: Exception) { + } } else { if (filesDirFile.exists()) filesDirFile.delete() } @@ -661,13 +664,15 @@ class NotificationListener : NotificationListenerService() { kotlinx.coroutines.MainScope().launch { try { - val managerGlance = androidx.glance.appwidget.GlanceAppWidgetManager(this@NotificationListener) + val managerGlance = + androidx.glance.appwidget.GlanceAppWidgetManager(this@NotificationListener) val widgetGlance = PixelSearchbarWidget() val glanceIds = managerGlance.getGlanceIds(PixelSearchbarWidget::class.java) for (glanceId in glanceIds) { widgetGlance.update(this@NotificationListener, glanceId) } - } catch (_: Exception) {} + } catch (_: Exception) { + } } val lastState = lastMediaStates[sbn.packageName] diff --git a/app/src/main/java/com/sameerasw/essentials/services/ScreenOffWidgetProvider.kt b/app/src/main/java/com/sameerasw/essentials/services/ScreenOffWidgetProvider.kt index aef73d368..335907a5e 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/ScreenOffWidgetProvider.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/ScreenOffWidgetProvider.kt @@ -6,7 +6,6 @@ import android.appwidget.AppWidgetProvider import android.content.Context import android.content.Intent import android.os.Build -import android.os.PowerManager import android.os.SystemClock import android.os.Vibrator import android.os.VibratorManager @@ -14,12 +13,10 @@ import android.provider.Settings import android.view.KeyEvent import android.widget.RemoteViews import android.widget.Toast -import androidx.core.content.getSystemService import com.sameerasw.essentials.R import com.sameerasw.essentials.domain.HapticFeedbackType import com.sameerasw.essentials.domain.ScreenOffMethod import com.sameerasw.essentials.services.tiles.ScreenOffAccessibilityService -import com.sameerasw.essentials.utils.HapticUtil import com.sameerasw.essentials.utils.ShellUtils import com.sameerasw.essentials.utils.performHapticFeedback @@ -75,11 +72,17 @@ class ScreenOffWidgetProvider : AppWidgetProvider() { override fun onReceive(context: Context, intent: Intent) { super.onReceive(context, intent) if (intent.action == "WIDGET_CLICK") { - val appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID) + val appWidgetId = intent.getIntExtra( + AppWidgetManager.EXTRA_APPWIDGET_ID, + AppWidgetManager.INVALID_APPWIDGET_ID + ) val prefs = context.getSharedPreferences("essentials_prefs", Context.MODE_PRIVATE) - + val isDoubleTapRequired = if (appWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID) { - prefs.getBoolean("screen_off_double_tap_$appWidgetId", prefs.getBoolean("screen_off_double_tap", false)) + prefs.getBoolean( + "screen_off_double_tap_$appWidgetId", + prefs.getBoolean("screen_off_double_tap", false) + ) } else { prefs.getBoolean("screen_off_double_tap", false) } @@ -100,7 +103,7 @@ class ScreenOffWidgetProvider : AppWidgetProvider() { } else { // First tap prefs.edit().putLong(lastTapTimeKey, currentTime).apply() - + val vibrator = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { context.getSystemService(VibratorManager::class.java)?.defaultVibrator } else { @@ -121,13 +124,23 @@ class ScreenOffWidgetProvider : AppWidgetProvider() { private fun triggerScreenOff(context: Context) { val prefs = context.getSharedPreferences("essentials_prefs", Context.MODE_PRIVATE) val selectedScreenOffMethod = try { - ScreenOffMethod.valueOf(prefs.getString("screen_off_method", ScreenOffMethod.ACCESSIBILITY.name) ?: ScreenOffMethod.ACCESSIBILITY.name) + ScreenOffMethod.valueOf( + prefs.getString( + "screen_off_method", + ScreenOffMethod.ACCESSIBILITY.name + ) ?: ScreenOffMethod.ACCESSIBILITY.name + ) } catch (e: IllegalArgumentException) { ScreenOffMethod.ACCESSIBILITY } val hapticFeedbackType = try { - HapticFeedbackType.valueOf(prefs.getString("haptic_feedback_type", HapticFeedbackType.NONE.name) ?: HapticFeedbackType.NONE.name) + HapticFeedbackType.valueOf( + prefs.getString( + "haptic_feedback_type", + HapticFeedbackType.NONE.name + ) ?: HapticFeedbackType.NONE.name + ) } catch (e: IllegalArgumentException) { HapticFeedbackType.NONE } @@ -152,17 +165,26 @@ class ScreenOffWidgetProvider : AppWidgetProvider() { } context.startService(serviceIntent) } else { - Toast.makeText(context, "Missing Accessibility permission, Check the app", Toast.LENGTH_SHORT) + Toast.makeText( + context, + "Missing Accessibility permission, Check the app", + Toast.LENGTH_SHORT + ) .show() } } + ScreenOffMethod.INPUT -> { if (ShellUtils.hasPermission(context)) { // Simulate power button press using input keyevent // Requires root or Shizuku, which ShellUtils handles ShellUtils.runCommand(context, "input keyevent ${KeyEvent.KEYCODE_POWER}") } else { - Toast.makeText(context, "Missing Shizuku/Root permission for Input method, Check the app", Toast.LENGTH_SHORT) + Toast.makeText( + context, + "Missing Shizuku/Root permission for Input method, Check the app", + Toast.LENGTH_SHORT + ) .show() } } diff --git a/app/src/main/java/com/sameerasw/essentials/services/automation/executors/CombinedActionExecutor.kt b/app/src/main/java/com/sameerasw/essentials/services/automation/executors/CombinedActionExecutor.kt index 4f0a4a93e..22a51fe8a 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/automation/executors/CombinedActionExecutor.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/automation/executors/CombinedActionExecutor.kt @@ -6,14 +6,12 @@ import android.content.Intent import android.hardware.camera2.CameraManager import android.media.AudioManager import android.os.Build -import android.os.Vibrator -import android.os.VibratorManager import android.provider.Settings import android.view.KeyEvent import android.widget.Toast -import com.sameerasw.essentials.domain.diy.Action -import com.sameerasw.essentials.domain.ScreenOffMethod import com.sameerasw.essentials.domain.HapticFeedbackType +import com.sameerasw.essentials.domain.ScreenOffMethod +import com.sameerasw.essentials.domain.diy.Action import com.sameerasw.essentials.services.tiles.ScreenOffAccessibilityService import com.sameerasw.essentials.utils.ShellUtils import com.sameerasw.essentials.utils.performHapticFeedback @@ -229,21 +227,37 @@ object CombinedActionExecutor { context.contentResolver, Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES ) - val hasAccess = enabledServices?.contains("com.sameerasw.essentials.services.tiles.ScreenOffAccessibilityService") == true + val hasAccess = + enabledServices?.contains("com.sameerasw.essentials.services.tiles.ScreenOffAccessibilityService") == true if (hasAccess) { - val serviceIntent = Intent(context, ScreenOffAccessibilityService::class.java).apply { + val serviceIntent = Intent( + context, + ScreenOffAccessibilityService::class.java + ).apply { this.action = "LOCK_SCREEN" } context.startService(serviceIntent) } else { - Toast.makeText(context, "Missing Accessibility permission", Toast.LENGTH_SHORT).show() + Toast.makeText( + context, + "Missing Accessibility permission", + Toast.LENGTH_SHORT + ).show() } } + ScreenOffMethod.INPUT -> { if (ShellUtils.hasPermission(context)) { - ShellUtils.runCommand(context, "input keyevent ${KeyEvent.KEYCODE_POWER}") + ShellUtils.runCommand( + context, + "input keyevent ${KeyEvent.KEYCODE_POWER}" + ) } else { - Toast.makeText(context, "Missing Shizuku/Root permission", Toast.LENGTH_SHORT).show() + Toast.makeText( + context, + "Missing Shizuku/Root permission", + Toast.LENGTH_SHORT + ).show() } } } @@ -251,20 +265,50 @@ object CombinedActionExecutor { is Action.MediaPlayPause -> { val am = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager - am.dispatchMediaKeyEvent(KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE)) - am.dispatchMediaKeyEvent(KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE)) + am.dispatchMediaKeyEvent( + KeyEvent( + KeyEvent.ACTION_DOWN, + KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE + ) + ) + am.dispatchMediaKeyEvent( + KeyEvent( + KeyEvent.ACTION_UP, + KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE + ) + ) } is Action.MediaNext -> { val am = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager - am.dispatchMediaKeyEvent(KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_NEXT)) - am.dispatchMediaKeyEvent(KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_NEXT)) + am.dispatchMediaKeyEvent( + KeyEvent( + KeyEvent.ACTION_DOWN, + KeyEvent.KEYCODE_MEDIA_NEXT + ) + ) + am.dispatchMediaKeyEvent( + KeyEvent( + KeyEvent.ACTION_UP, + KeyEvent.KEYCODE_MEDIA_NEXT + ) + ) } is Action.MediaPrevious -> { val am = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager - am.dispatchMediaKeyEvent(KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PREVIOUS)) - am.dispatchMediaKeyEvent(KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_PREVIOUS)) + am.dispatchMediaKeyEvent( + KeyEvent( + KeyEvent.ACTION_DOWN, + KeyEvent.KEYCODE_MEDIA_PREVIOUS + ) + ) + am.dispatchMediaKeyEvent( + KeyEvent( + KeyEvent.ACTION_UP, + KeyEvent.KEYCODE_MEDIA_PREVIOUS + ) + ) } is Action.AIAssistant -> { @@ -284,7 +328,11 @@ object CombinedActionExecutor { if (serviceInst != null) { serviceInst.performGlobalAction(android.accessibilityservice.AccessibilityService.GLOBAL_ACTION_TAKE_SCREENSHOT) } else { - Toast.makeText(context, "Accessibility service is not running", Toast.LENGTH_SHORT).show() + Toast.makeText( + context, + "Accessibility service is not running", + Toast.LENGTH_SHORT + ).show() } } } @@ -292,7 +340,8 @@ object CombinedActionExecutor { is Action.ToggleMediaVolume -> { val am = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager val currentVolume = am.getStreamVolume(AudioManager.STREAM_MUSIC) - val prefs = context.getSharedPreferences("essentials_prefs", Context.MODE_PRIVATE) + val prefs = + context.getSharedPreferences("essentials_prefs", Context.MODE_PRIVATE) if (currentVolume > 0) { prefs.edit().putInt("last_media_volume", currentVolume).apply() @@ -302,7 +351,11 @@ object CombinedActionExecutor { "last_media_volume", am.getStreamMaxVolume(AudioManager.STREAM_MUSIC) / 2 ) - am.setStreamVolume(AudioManager.STREAM_MUSIC, lastVolume, AudioManager.FLAG_SHOW_UI) + am.setStreamVolume( + AudioManager.STREAM_MUSIC, + lastVolume, + AudioManager.FLAG_SHOW_UI + ) } } @@ -321,18 +374,27 @@ object CombinedActionExecutor { is Action.PinApp -> { try { val useActivityTask = Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q - val serviceName = if (useActivityTask) "activity_task" else Context.ACTIVITY_SERVICE - val stubClassName = if (useActivityTask) "android.app.IActivityTaskManager\$Stub" else "android.app.IActivityManager\$Stub" - val interfaceClassName = if (useActivityTask) "android.app.IActivityTaskManager" else "android.app.IActivityManager" + val serviceName = + if (useActivityTask) "activity_task" else Context.ACTIVITY_SERVICE + val stubClassName = + if (useActivityTask) "android.app.IActivityTaskManager\$Stub" else "android.app.IActivityManager\$Stub" + val interfaceClassName = + if (useActivityTask) "android.app.IActivityTaskManager" else "android.app.IActivityManager" val binder = SystemServiceHelper.getSystemService(serviceName) val stubClass = Class.forName(stubClassName) val interfaceClass = Class.forName(interfaceClassName) val serviceInstance = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - org.lsposed.hiddenapibypass.HiddenApiBypass.invoke(stubClass, null, "asInterface", ShizukuBinderWrapper(binder)) + org.lsposed.hiddenapibypass.HiddenApiBypass.invoke( + stubClass, + null, + "asInterface", + ShizukuBinderWrapper(binder) + ) } else { - val asInterfaceMethod = stubClass.getMethod("asInterface", android.os.IBinder::class.java) + val asInterfaceMethod = + stubClass.getMethod("asInterface", android.os.IBinder::class.java) asInterfaceMethod.invoke(null, ShizukuBinderWrapper(binder)) } @@ -356,11 +418,15 @@ object CombinedActionExecutor { 0 ) as List<*> } else { - val getTasksMethod = interfaceClass.getMethod("getTasks", Int::class.javaPrimitiveType, Int::class.javaPrimitiveType) + val getTasksMethod = interfaceClass.getMethod( + "getTasks", + Int::class.javaPrimitiveType, + Int::class.javaPrimitiveType + ) getTasksMethod.invoke(serviceInstance, 5, 0) as List<*> } } - + var targetTaskId = -1 for (task in tasks) { val taskInfo = task as? ActivityManager.RunningTaskInfo ?: continue @@ -370,7 +436,7 @@ object CombinedActionExecutor { break } } - + if (targetTaskId == -1 && tasks.isNotEmpty()) { val firstTask = tasks.firstOrNull() as? ActivityManager.RunningTaskInfo if (firstTask != null) { @@ -387,15 +453,26 @@ object CombinedActionExecutor { targetTaskId ) } else { - val startLockTaskMethod = interfaceClass.getMethod("startSystemLockTaskMode", Int::class.javaPrimitiveType) + val startLockTaskMethod = interfaceClass.getMethod( + "startSystemLockTaskMode", + Int::class.javaPrimitiveType + ) startLockTaskMethod.invoke(serviceInstance, targetTaskId) } } else { - Toast.makeText(context, "No active foreground task found", Toast.LENGTH_SHORT).show() + Toast.makeText( + context, + "No active foreground task found", + Toast.LENGTH_SHORT + ).show() } } catch (e: Exception) { e.printStackTrace() - Toast.makeText(context, "Failed to pin app: ${e.message}", Toast.LENGTH_SHORT).show() + Toast.makeText( + context, + "Failed to pin app: ${e.message}", + Toast.LENGTH_SHORT + ).show() } } } diff --git a/app/src/main/java/com/sameerasw/essentials/services/handlers/AppFlowHandler.kt b/app/src/main/java/com/sameerasw/essentials/services/handlers/AppFlowHandler.kt index b0bce19b0..1a6b75f94 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/handlers/AppFlowHandler.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/handlers/AppFlowHandler.kt @@ -61,7 +61,9 @@ class AppFlowHandler( cancelRestoreNotification() val autoPkg = intent.getStringExtra(EXTRA_AUTO_ARCHIVE_PACKAGE) val pkgName = intent.getStringExtra(EXTRA_PACKAGE_NAME) - val settingsRepo = com.sameerasw.essentials.data.repository.SettingsRepository(context ?: return) + val settingsRepo = com.sameerasw.essentials.data.repository.SettingsRepository( + context ?: return + ) val config = if (pkgName != null) { settingsRepo.loadShutUpConfigs().find { it.packageName == pkgName } } else null @@ -656,62 +658,63 @@ class AppFlowHandler( val text = "Do you want to restore now?" val criticalText = "Restore Now" - val notification = if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) { - val builder = android.app.Notification.Builder(context, "shutup_restore_channel") - .setSmallIcon(com.sameerasw.essentials.R.drawable.rounded_code_24) - .setContentTitle(title) - .setContentText(text) - .setCategory(android.app.Notification.CATEGORY_SERVICE) - .setVisibility(android.app.Notification.VISIBILITY_PUBLIC) - .setOnlyAlertOnce(true) - .setOngoing(true) - .addAction( - android.app.Notification.Action.Builder( - android.graphics.drawable.Icon.createWithResource( - context, - com.sameerasw.essentials.R.drawable.rounded_code_24 - ), + val notification = + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) { + val builder = android.app.Notification.Builder(context, "shutup_restore_channel") + .setSmallIcon(com.sameerasw.essentials.R.drawable.rounded_code_24) + .setContentTitle(title) + .setContentText(text) + .setCategory(android.app.Notification.CATEGORY_SERVICE) + .setVisibility(android.app.Notification.VISIBILITY_PUBLIC) + .setOnlyAlertOnce(true) + .setOngoing(true) + .addAction( + android.app.Notification.Action.Builder( + android.graphics.drawable.Icon.createWithResource( + context, + com.sameerasw.essentials.R.drawable.rounded_code_24 + ), + "Restore Now", + restorePendingIntent + ).build() + ) + + try { + val setShortCriticalText = builder.javaClass.getMethod( + "setShortCriticalText", + CharSequence::class.java + ) + setShortCriticalText.invoke(builder, criticalText) + } catch (_: Throwable) { + } + + val extras = android.os.Bundle() + extras.putBoolean("android.requestPromotedOngoing", true) + extras.putString("android.shortCriticalText", criticalText) + builder.addExtras(extras) + builder.build() + } else { + NotificationCompat.Builder(context, "shutup_restore_channel") + .setSmallIcon(com.sameerasw.essentials.R.drawable.rounded_code_24) + .setContentTitle(title) + .setContentText(text) + .setPriority(NotificationCompat.PRIORITY_MAX) + .setCategory(NotificationCompat.CATEGORY_SERVICE) + .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) + .setOnlyAlertOnce(true) + .setOngoing(true) + .addAction( + com.sameerasw.essentials.R.drawable.rounded_code_24, "Restore Now", restorePendingIntent - ).build() - ) - - try { - val setShortCriticalText = builder.javaClass.getMethod( - "setShortCriticalText", - CharSequence::class.java - ) - setShortCriticalText.invoke(builder, criticalText) - } catch (_: Throwable) { + ) + .addExtras(android.os.Bundle().apply { + putBoolean("android.requestPromotedOngoing", true) + putString("android.shortCriticalText", criticalText) + }) + .build() } - val extras = android.os.Bundle() - extras.putBoolean("android.requestPromotedOngoing", true) - extras.putString("android.shortCriticalText", criticalText) - builder.addExtras(extras) - builder.build() - } else { - NotificationCompat.Builder(context, "shutup_restore_channel") - .setSmallIcon(com.sameerasw.essentials.R.drawable.rounded_code_24) - .setContentTitle(title) - .setContentText(text) - .setPriority(NotificationCompat.PRIORITY_MAX) - .setCategory(NotificationCompat.CATEGORY_SERVICE) - .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) - .setOnlyAlertOnce(true) - .setOngoing(true) - .addAction( - com.sameerasw.essentials.R.drawable.rounded_code_24, - "Restore Now", - restorePendingIntent - ) - .addExtras(android.os.Bundle().apply { - putBoolean("android.requestPromotedOngoing", true) - putString("android.shortCriticalText", criticalText) - }) - .build() - } - notificationManager.notify(NOTIFICATION_ID_SHUTUP_RESTORE, notification) } @@ -811,7 +814,8 @@ class AppFlowHandler( } private fun restartShizuku() { - val settingsRepository = com.sameerasw.essentials.data.repository.SettingsRepository(context) + val settingsRepository = + com.sameerasw.essentials.data.repository.SettingsRepository(context) val token = settingsRepository.getShizukuAuthToken() if (token.isEmpty()) { Log.w("AppFlowHandler", "Shizuku auth token is missing, cannot restart Shizuku") diff --git a/app/src/main/java/com/sameerasw/essentials/services/handlers/FlashlightHandler.kt b/app/src/main/java/com/sameerasw/essentials/services/handlers/FlashlightHandler.kt index 4a5b2d04a..80f4fdc69 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/handlers/FlashlightHandler.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/handlers/FlashlightHandler.kt @@ -9,6 +9,10 @@ import android.content.Context import android.content.Intent import android.graphics.Color import android.graphics.drawable.Icon +import android.hardware.Sensor +import android.hardware.SensorEvent +import android.hardware.SensorEventListener +import android.hardware.SensorManager import android.hardware.camera2.CameraCharacteristics import android.hardware.camera2.CameraManager import android.os.Build @@ -18,6 +22,7 @@ import android.os.Vibrator import android.os.VibratorManager import android.util.Log import androidx.core.app.NotificationCompat +import androidx.core.content.edit import com.sameerasw.essentials.R import com.sameerasw.essentials.domain.HapticFeedbackType import com.sameerasw.essentials.services.receivers.FlashlightActionReceiver @@ -26,15 +31,10 @@ import com.sameerasw.essentials.utils.performHapticFeedback import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job import kotlinx.coroutines.launch -import android.hardware.Sensor -import android.hardware.SensorEvent -import android.hardware.SensorEventListener -import android.hardware.SensorManager import kotlinx.coroutines.suspendCancellableCoroutine import kotlinx.coroutines.withTimeoutOrNull import kotlin.coroutines.resume import kotlin.time.Duration.Companion.milliseconds -import androidx.core.content.edit class FlashlightHandler( private val service: AccessibilityService, @@ -68,7 +68,8 @@ class FlashlightHandler( super.onTorchModeChanged(cameraId, enabled) isTorchOn = enabled - val screenOffService = service as? com.sameerasw.essentials.services.tiles.ScreenOffAccessibilityService + val screenOffService = + service as? com.sameerasw.essentials.services.tiles.ScreenOffAccessibilityService screenOffService?.updateFlashlightProximityRegistration(enabled) val prefs = service.getSharedPreferences("essentials_prefs", Context.MODE_PRIVATE) @@ -343,7 +344,8 @@ class FlashlightHandler( } private suspend fun getProximityStatus(context: Context): Boolean { - val sensorManager = context.getSystemService(Context.SENSOR_SERVICE) as? SensorManager ?: return false + val sensorManager = + context.getSystemService(Context.SENSOR_SERVICE) as? SensorManager ?: return false val proximitySensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY) ?: return false return withTimeoutOrNull(250L.milliseconds) { @@ -364,7 +366,11 @@ class FlashlightHandler( override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {} } - sensorManager.registerListener(listener, proximitySensor, SensorManager.SENSOR_DELAY_FASTEST) + sensorManager.registerListener( + listener, + proximitySensor, + SensorManager.SENSOR_DELAY_FASTEST + ) continuation.invokeOnCancellation { sensorManager.unregisterListener(listener) } diff --git a/app/src/main/java/com/sameerasw/essentials/services/handlers/PocketModeHandler.kt b/app/src/main/java/com/sameerasw/essentials/services/handlers/PocketModeHandler.kt index 1a02c200f..9a9bd1aa7 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/handlers/PocketModeHandler.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/handlers/PocketModeHandler.kt @@ -134,7 +134,12 @@ class PocketModeHandler(private val service: AccessibilityService) { isBypassed = false } - fun onProximityChanged(isBlocked: Boolean, isLightDark: Boolean, useLightSensor: Boolean, triggerDelayMs: Long = 3000L) { + fun onProximityChanged( + isBlocked: Boolean, + isLightDark: Boolean, + useLightSensor: Boolean, + triggerDelayMs: Long = 3000L + ) { val shouldShow = isBlocked && (!useLightSensor || isLightDark) if (shouldShow) { if (!isBypassed && !isOverlayVisible && !isPending) { @@ -158,13 +163,15 @@ class PocketModeHandler(private val service: AccessibilityService) { isBypassed = false } - private class OverlayLifecycleOwner : LifecycleOwner, SavedStateRegistryOwner, ViewModelStoreOwner { + private class OverlayLifecycleOwner : LifecycleOwner, SavedStateRegistryOwner, + ViewModelStoreOwner { private val lifecycleRegistry = LifecycleRegistry(this) private val savedStateRegistryController = SavedStateRegistryController.create(this) private val store = ViewModelStore() override val lifecycle: Lifecycle = lifecycleRegistry - override val savedStateRegistry: SavedStateRegistry = savedStateRegistryController.savedStateRegistry + override val savedStateRegistry: SavedStateRegistry = + savedStateRegistryController.savedStateRegistry override val viewModelStore: ViewModelStore = store fun onCreate() { diff --git a/app/src/main/java/com/sameerasw/essentials/services/tiles/BaseTileService.kt b/app/src/main/java/com/sameerasw/essentials/services/tiles/BaseTileService.kt index e69d40f9e..82d265879 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/tiles/BaseTileService.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/tiles/BaseTileService.kt @@ -5,7 +5,6 @@ import android.os.Build import android.provider.Settings import android.service.quicksettings.Tile import android.service.quicksettings.TileService -import androidx.annotation.RequiresApi import androidx.core.content.edit import com.sameerasw.essentials.R import com.sameerasw.essentials.data.repository.SettingsRepository diff --git a/app/src/main/java/com/sameerasw/essentials/services/tiles/ChargeQuickTileService.kt b/app/src/main/java/com/sameerasw/essentials/services/tiles/ChargeQuickTileService.kt index 94d4e9ebe..6a93936b7 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/tiles/ChargeQuickTileService.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/tiles/ChargeQuickTileService.kt @@ -2,9 +2,7 @@ package com.sameerasw.essentials.services.tiles import android.content.Intent import android.graphics.drawable.Icon -import android.os.Build import android.service.quicksettings.Tile -import androidx.annotation.RequiresApi import com.sameerasw.essentials.FeatureSettingsActivity import com.sameerasw.essentials.R import com.sameerasw.essentials.utils.DeviceUtils diff --git a/app/src/main/java/com/sameerasw/essentials/services/tiles/PrivateDnsTileService.kt b/app/src/main/java/com/sameerasw/essentials/services/tiles/PrivateDnsTileService.kt index 919ac8c1d..b8b18fc40 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/tiles/PrivateDnsTileService.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/tiles/PrivateDnsTileService.kt @@ -84,6 +84,7 @@ class PrivateDnsTileService : BaseTileService() { MODE_AUTO -> { if (getPrivateDnsHostname().isNullOrEmpty()) MODE_OFF else MODE_HOSTNAME } + MODE_HOSTNAME -> MODE_OFF else -> MODE_OFF } @@ -92,9 +93,11 @@ class PrivateDnsTileService : BaseTileService() { MODE_OFF -> { if (getPrivateDnsHostname().isNullOrEmpty()) MODE_OFF else MODE_HOSTNAME } + MODE_AUTO -> { if (getPrivateDnsHostname().isNullOrEmpty()) MODE_OFF else MODE_HOSTNAME } + MODE_HOSTNAME -> MODE_OFF else -> MODE_OFF } diff --git a/app/src/main/java/com/sameerasw/essentials/services/tiles/ScreenOffAccessibilityService.kt b/app/src/main/java/com/sameerasw/essentials/services/tiles/ScreenOffAccessibilityService.kt index cc30768ab..26d8eaf1d 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/tiles/ScreenOffAccessibilityService.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/tiles/ScreenOffAccessibilityService.kt @@ -2,6 +2,7 @@ package com.sameerasw.essentials.services.tiles import android.accessibilityservice.AccessibilityService import android.accessibilityservice.AccessibilityServiceInfo +import android.app.KeyguardManager import android.content.BroadcastReceiver import android.content.Context import android.content.Intent @@ -14,7 +15,6 @@ import android.media.session.MediaSessionManager import android.os.Handler import android.os.Looper import android.os.Vibrator -import android.app.KeyguardManager import android.view.KeyEvent import android.view.accessibility.AccessibilityEvent import com.sameerasw.essentials.data.repository.SettingsRepository @@ -24,12 +24,12 @@ import com.sameerasw.essentials.services.InputEventListenerService import com.sameerasw.essentials.services.NotificationListener import com.sameerasw.essentials.services.handlers.AmbientGlanceHandler import com.sameerasw.essentials.services.handlers.AodForceTurnOffHandler -import com.sameerasw.essentials.services.handlers.PocketModeHandler import com.sameerasw.essentials.services.handlers.AppFlowHandler import com.sameerasw.essentials.services.handlers.ButtonRemapHandler import com.sameerasw.essentials.services.handlers.FlashlightHandler import com.sameerasw.essentials.services.handlers.NotificationLightingHandler import com.sameerasw.essentials.services.handlers.OmniGestureOverlayHandler +import com.sameerasw.essentials.services.handlers.PocketModeHandler import com.sameerasw.essentials.services.handlers.StatusBarIconHandler import com.sameerasw.essentials.services.receivers.FlashlightActionReceiver import com.sameerasw.essentials.utils.FreezeManager @@ -90,14 +90,16 @@ class ScreenOffAccessibilityService : AccessibilityService(), SensorEventListene return appCategoryCache.getOrPut(packageName) { try { val info = packageManager.getApplicationInfo(packageName, 0) - val isLegacyGame = (info.flags and android.content.pm.ApplicationInfo.FLAG_IS_GAME) != 0 - val isCategoryMatch = if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { - val category = info.category - category == android.content.pm.ApplicationInfo.CATEGORY_GAME || - category == android.content.pm.ApplicationInfo.CATEGORY_VIDEO - } else { - false - } + val isLegacyGame = + (info.flags and android.content.pm.ApplicationInfo.FLAG_IS_GAME) != 0 + val isCategoryMatch = + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { + val category = info.category + category == android.content.pm.ApplicationInfo.CATEGORY_GAME || + category == android.content.pm.ApplicationInfo.CATEGORY_VIDEO + } else { + false + } isLegacyGame || isCategoryMatch } catch (e: Exception) { false @@ -108,11 +110,12 @@ class ScreenOffAccessibilityService : AccessibilityService(), SensorEventListene private fun hasActiveMediaSession(packageName: String): Boolean { return try { val msm = getSystemService(MEDIA_SESSION_SERVICE) as MediaSessionManager - val componentName = android.content.ComponentName(this, NotificationListener::class.java) + val componentName = + android.content.ComponentName(this, NotificationListener::class.java) val sessions = msm.getActiveSessions(componentName) sessions.any { it.packageName == packageName && - it.playbackState?.state == android.media.session.PlaybackState.STATE_PLAYING + it.playbackState?.state == android.media.session.PlaybackState.STATE_PLAYING } } catch (e: Exception) { false @@ -435,10 +438,10 @@ class ScreenOffAccessibilityService : AccessibilityService(), SensorEventListene if (pocketModeEnabled && !pocketModeHandler.isBypassed) { val currentApp = appFlowHandler.currentPackage val shouldBypass = (currentApp != null && ( - pocketModeExcludedAppsSet.contains(currentApp) || - isGameOrVideoApp(currentApp) || - hasActiveMediaSession(currentApp) - )) || (lockScreenOnly && !keyguardManager.isKeyguardLocked) + pocketModeExcludedAppsSet.contains(currentApp) || + isGameOrVideoApp(currentApp) || + hasActiveMediaSession(currentApp) + )) || (lockScreenOnly && !keyguardManager.isKeyguardLocked) if (!shouldBypass) { pocketModeHandler.onProximityChanged( isBlocked = flashlightHandler.isProximityBlocked, @@ -471,10 +474,10 @@ class ScreenOffAccessibilityService : AccessibilityService(), SensorEventListene if (pocketModeEnabled && !pocketModeHandler.isBypassed) { val currentApp = appFlowHandler.currentPackage val shouldBypass = (currentApp != null && ( - pocketModeExcludedAppsSet.contains(currentApp) || - isGameOrVideoApp(currentApp) || - hasActiveMediaSession(currentApp) - )) || (lockScreenOnly && !keyguardManager.isKeyguardLocked) + pocketModeExcludedAppsSet.contains(currentApp) || + isGameOrVideoApp(currentApp) || + hasActiveMediaSession(currentApp) + )) || (lockScreenOnly && !keyguardManager.isKeyguardLocked) if (!shouldBypass) { pocketModeHandler.onProximityChanged( isBlocked = isBlocked, diff --git a/app/src/main/java/com/sameerasw/essentials/services/widgets/FavoritesWidget.kt b/app/src/main/java/com/sameerasw/essentials/services/widgets/FavoritesWidget.kt index b5d1c9bcd..751b58d19 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/widgets/FavoritesWidget.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/widgets/FavoritesWidget.kt @@ -13,7 +13,6 @@ import androidx.glance.GlanceTheme import androidx.glance.Image import androidx.glance.ImageProvider import androidx.glance.LocalSize -import androidx.glance.action.actionStartActivity import androidx.glance.action.clickable import androidx.glance.appwidget.GlanceAppWidget import androidx.glance.appwidget.action.actionStartActivity @@ -116,26 +115,40 @@ class FavoritesWidget : GlanceAppWidget() { val rowFeatures = rows.getOrNull(rowIndex) if (rowFeatures != null) { Row( - modifier = GlanceModifier.fillMaxWidth().height(cellHeight), + modifier = GlanceModifier.fillMaxWidth() + .height(cellHeight), verticalAlignment = Alignment.CenterVertically, horizontalAlignment = Alignment.CenterHorizontally ) { for (colIndex in 0 until columnsCount) { val feature = rowFeatures.getOrNull(colIndex) if (feature != null) { - val resolvedTitle = context.getString(feature.title) - val pastelColor = ColorUtil.getPastelColorFor(resolvedTitle) - val vibrantColor = ColorUtil.getVibrantColorFor(resolvedTitle) + val resolvedTitle = + context.getString(feature.title) + val pastelColor = + ColorUtil.getPastelColorFor( + resolvedTitle + ) + val vibrantColor = + ColorUtil.getVibrantColorFor( + resolvedTitle + ) - val intent = Intent(context, FeatureSettingsActivity::class.java).apply { + val intent = Intent( + context, + FeatureSettingsActivity::class.java + ).apply { putExtra("feature", feature.id) addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) } - val isVertical = cellHeight >= (cellWidth - 40.dp) + val isVertical = + cellHeight >= (cellWidth - 40.dp) val isSmall = cellHeight < 90.dp - val iconBoxSize = if (isSmall) 36.dp else 48.dp - val iconCornerRadius = if (isSmall) 8.dp else 12.dp + val iconBoxSize = + if (isSmall) 36.dp else 48.dp + val iconCornerRadius = + if (isSmall) 8.dp else 12.dp val iconSize = if (isSmall) 22.dp else 28.dp val fontSize = if (isSmall) 12.sp else 15.sp val spacerSize = if (isSmall) 4.dp else 8.dp @@ -144,37 +157,60 @@ class FavoritesWidget : GlanceAppWidget() { modifier = GlanceModifier .defaultWeight() .fillMaxHeight() - .padding(horizontal = halfSpacing, vertical = halfSpacing), + .padding( + horizontal = halfSpacing, + vertical = halfSpacing + ), contentAlignment = Alignment.Center ) { val cardModifier = GlanceModifier .fillMaxSize() .cornerRadius(16.dp) .background(GlanceTheme.colors.widgetBackground) - .clickable(actionStartActivity(intent)) + .clickable( + actionStartActivity( + intent + ) + ) if (isVertical) { Column( - modifier = cardModifier.padding(8.dp), + modifier = cardModifier.padding( + 8.dp + ), horizontalAlignment = Alignment.CenterHorizontally, verticalAlignment = Alignment.CenterVertically ) { Box( modifier = GlanceModifier .size(iconBoxSize) - .cornerRadius(iconCornerRadius) + .cornerRadius( + iconCornerRadius + ) .background(pastelColor), contentAlignment = Alignment.Center ) { Image( - provider = ImageProvider(feature.iconRes), + provider = ImageProvider( + feature.iconRes + ), contentDescription = resolvedTitle, - colorFilter = ColorFilter.tint(ColorProvider(vibrantColor)), - modifier = GlanceModifier.size(iconSize) + colorFilter = ColorFilter.tint( + ColorProvider( + vibrantColor + ) + ), + modifier = GlanceModifier.size( + iconSize + ) ) } - Spacer(modifier = GlanceModifier.height(spacerSize)) + Spacer( + modifier = GlanceModifier.height( + spacerSize + ) + ) Text( text = resolvedTitle, @@ -182,33 +218,52 @@ class FavoritesWidget : GlanceAppWidget() { color = GlanceTheme.colors.onSurface, fontSize = fontSize, fontWeight = FontWeight.Normal, - fontFamily = FontFamily("google-sans-flex"), + fontFamily = FontFamily( + "google-sans-flex" + ), textAlign = TextAlign.Center ) ) } } else { Row( - modifier = cardModifier.padding(horizontal = 12.dp, vertical = 6.dp), + modifier = cardModifier.padding( + horizontal = 12.dp, + vertical = 6.dp + ), horizontalAlignment = Alignment.CenterHorizontally, verticalAlignment = Alignment.CenterVertically ) { Box( modifier = GlanceModifier .size(iconBoxSize) - .cornerRadius(iconCornerRadius) + .cornerRadius( + iconCornerRadius + ) .background(pastelColor), contentAlignment = Alignment.Center ) { Image( - provider = ImageProvider(feature.iconRes), + provider = ImageProvider( + feature.iconRes + ), contentDescription = resolvedTitle, - colorFilter = ColorFilter.tint(ColorProvider(vibrantColor)), - modifier = GlanceModifier.size(iconSize) + colorFilter = ColorFilter.tint( + ColorProvider( + vibrantColor + ) + ), + modifier = GlanceModifier.size( + iconSize + ) ) } - Spacer(modifier = GlanceModifier.width(spacerSize)) + Spacer( + modifier = GlanceModifier.width( + spacerSize + ) + ) Text( text = resolvedTitle, @@ -216,7 +271,9 @@ class FavoritesWidget : GlanceAppWidget() { color = GlanceTheme.colors.onSurface, fontSize = fontSize, fontWeight = FontWeight.Normal, - fontFamily = FontFamily("google-sans-flex"), + fontFamily = FontFamily( + "google-sans-flex" + ), textAlign = TextAlign.Start ), modifier = GlanceModifier.defaultWeight() @@ -229,7 +286,10 @@ class FavoritesWidget : GlanceAppWidget() { modifier = GlanceModifier .defaultWeight() .fillMaxHeight() - .padding(horizontal = halfSpacing, vertical = halfSpacing) + .padding( + horizontal = halfSpacing, + vertical = halfSpacing + ) ) } } diff --git a/app/src/main/java/com/sameerasw/essentials/services/widgets/FavoritesWidgetReceiver.kt b/app/src/main/java/com/sameerasw/essentials/services/widgets/FavoritesWidgetReceiver.kt index 9a656cc22..a8277ff13 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/widgets/FavoritesWidgetReceiver.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/widgets/FavoritesWidgetReceiver.kt @@ -19,7 +19,8 @@ class FavoritesWidgetReceiver : GlanceAppWidgetReceiver() { ) { kotlinx.coroutines.MainScope().launch { try { - val glanceAppWidgetManager = androidx.glance.appwidget.GlanceAppWidgetManager(context) + val glanceAppWidgetManager = + androidx.glance.appwidget.GlanceAppWidgetManager(context) if (action == Intent.ACTION_CONFIGURATION_CHANGED) { kotlinx.coroutines.delay(500) } diff --git a/app/src/main/java/com/sameerasw/essentials/services/widgets/MusicBroadcastReceiver.kt b/app/src/main/java/com/sameerasw/essentials/services/widgets/MusicBroadcastReceiver.kt index bb4b40a96..6d4a3e292 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/widgets/MusicBroadcastReceiver.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/widgets/MusicBroadcastReceiver.kt @@ -23,11 +23,16 @@ class MusicBroadcastReceiver : BroadcastReceiver() { // Update media info from the current active session try { - val manager = context.getSystemService(Context.MEDIA_SESSION_SERVICE) as? MediaSessionManager ?: return - val componentName = android.content.ComponentName(context, com.sameerasw.essentials.services.NotificationListener::class.java) + val manager = + context.getSystemService(Context.MEDIA_SESSION_SERVICE) as? MediaSessionManager + ?: return + val componentName = android.content.ComponentName( + context, + com.sameerasw.essentials.services.NotificationListener::class.java + ) val sessions = manager.getActiveSessions(componentName) val activeSession = sessions?.sortedWith( - compareByDescending { + compareByDescending { val state = it.playbackState?.state state == PlaybackState.STATE_PLAYING || state == PlaybackState.STATE_BUFFERING }.thenByDescending { @@ -52,7 +57,8 @@ class MusicBroadcastReceiver : BroadcastReceiver() { FileOutputStream(filesDirFile).use { out -> artwork.compress(Bitmap.CompressFormat.PNG, 100, out) } - } catch (_: Exception) {} + } catch (_: Exception) { + } } else { if (filesDirFile.exists()) filesDirFile.delete() } @@ -65,7 +71,8 @@ class MusicBroadcastReceiver : BroadcastReceiver() { // Trigger immediate Glance widget redraw CoroutineScope(Dispatchers.IO).launch { runCatching { - val managerGlance = androidx.glance.appwidget.GlanceAppWidgetManager(context) + val managerGlance = + androidx.glance.appwidget.GlanceAppWidgetManager(context) val widgetGlance = PixelSearchbarWidget() val glanceIds = managerGlance.getGlanceIds(PixelSearchbarWidget::class.java) for (glanceId in glanceIds) { @@ -74,6 +81,7 @@ class MusicBroadcastReceiver : BroadcastReceiver() { } } } - } catch (_: Exception) {} + } catch (_: Exception) { + } } } diff --git a/app/src/main/java/com/sameerasw/essentials/services/widgets/MusicClickActionCallback.kt b/app/src/main/java/com/sameerasw/essentials/services/widgets/MusicClickActionCallback.kt index c7ee379ce..c88d7396b 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/widgets/MusicClickActionCallback.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/widgets/MusicClickActionCallback.kt @@ -8,7 +8,11 @@ import androidx.glance.appwidget.action.ActionCallback import com.sameerasw.essentials.data.repository.SettingsRepository class MusicClickActionCallback : ActionCallback { - override suspend fun onAction(context: Context, glanceId: GlanceId, parameters: ActionParameters) { + override suspend fun onAction( + context: Context, + glanceId: GlanceId, + parameters: ActionParameters + ) { val settings = SettingsRepository(context) val packageName = settings.getPixelSearchbarMusicPackage() if (packageName.isNotEmpty()) { @@ -18,7 +22,8 @@ class MusicClickActionCallback : ActionCallback { launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) context.startActivity(launchIntent) } - } catch (_: Exception) {} + } catch (_: Exception) { + } } } } diff --git a/app/src/main/java/com/sameerasw/essentials/services/widgets/PixelSearchbarWidget.kt b/app/src/main/java/com/sameerasw/essentials/services/widgets/PixelSearchbarWidget.kt index eac470c8b..67972a075 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/widgets/PixelSearchbarWidget.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/widgets/PixelSearchbarWidget.kt @@ -2,17 +2,20 @@ package com.sameerasw.essentials.services.widgets import android.content.Context import android.graphics.BitmapFactory -import android.widget.RemoteViews +import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import androidx.compose.ui.graphics.Color import androidx.glance.GlanceId import androidx.glance.GlanceModifier import androidx.glance.GlanceTheme import androidx.glance.Image import androidx.glance.ImageProvider -import androidx.glance.appwidget.GlanceAppWidget +import androidx.glance.action.actionStartActivity +import androidx.glance.action.clickable import androidx.glance.appwidget.AndroidRemoteViews +import androidx.glance.appwidget.GlanceAppWidget +import androidx.glance.appwidget.action.actionRunCallback +import androidx.glance.appwidget.cornerRadius import androidx.glance.appwidget.provideContent import androidx.glance.background import androidx.glance.layout.Alignment @@ -21,22 +24,18 @@ import androidx.glance.layout.Column import androidx.glance.layout.ContentScale import androidx.glance.layout.fillMaxSize import androidx.glance.layout.padding -import androidx.glance.text.Text -import androidx.glance.text.TextStyle import androidx.glance.text.FontWeight +import androidx.glance.text.Text import androidx.glance.text.TextAlign -import androidx.glance.appwidget.cornerRadius +import androidx.glance.text.TextStyle import androidx.glance.unit.ColorProvider import com.sameerasw.essentials.data.repository.SettingsRepository +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext import java.io.File import java.text.SimpleDateFormat import java.util.Date import java.util.Locale -import androidx.glance.action.clickable -import androidx.glance.action.actionStartActivity -import androidx.glance.appwidget.action.actionRunCallback -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.withContext class PixelSearchbarWidget : GlanceAppWidget() { override val sizeMode = androidx.glance.appwidget.SizeMode.Exact @@ -183,7 +182,8 @@ class PixelSearchbarWidget : GlanceAppWidget() { else -> { // "date" (default) val dateFormat = settingsRepository.getPixelSearchbarDateFormat() val hasPill = settingsRepository.getPixelSearchbarBackgroundPill() - val dateStr = SimpleDateFormat(dateFormat, Locale.getDefault()).format(Date()) + val dateStr = + SimpleDateFormat(dateFormat, Locale.getDefault()).format(Date()) Box( modifier = boxModifier, contentAlignment = Alignment.Center diff --git a/app/src/main/java/com/sameerasw/essentials/services/widgets/PixelSearchbarWidgetReceiver.kt b/app/src/main/java/com/sameerasw/essentials/services/widgets/PixelSearchbarWidgetReceiver.kt index 61d6c373a..d784a7edc 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/widgets/PixelSearchbarWidgetReceiver.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/widgets/PixelSearchbarWidgetReceiver.kt @@ -18,12 +18,14 @@ class PixelSearchbarWidgetReceiver : GlanceAppWidgetReceiver() { ) { kotlinx.coroutines.MainScope().launch { try { - val glanceAppWidgetManager = androidx.glance.appwidget.GlanceAppWidgetManager(context) + val glanceAppWidgetManager = + androidx.glance.appwidget.GlanceAppWidgetManager(context) if (action == Intent.ACTION_CONFIGURATION_CHANGED) { kotlinx.coroutines.delay(500) } - val glanceIds = glanceAppWidgetManager.getGlanceIds(PixelSearchbarWidget::class.java) + val glanceIds = + glanceAppWidgetManager.getGlanceIds(PixelSearchbarWidget::class.java) glanceIds.forEach { glanceId -> glanceAppWidget.update(context, glanceId) } diff --git a/app/src/main/java/com/sameerasw/essentials/services/widgets/WidgetScraperService.kt b/app/src/main/java/com/sameerasw/essentials/services/widgets/WidgetScraperService.kt index 5cada0691..1e89bca75 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/widgets/WidgetScraperService.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/widgets/WidgetScraperService.kt @@ -17,7 +17,6 @@ import android.os.Handler import android.os.IBinder import android.os.Looper import android.view.View -import android.view.ViewGroup import android.view.ViewTreeObserver import android.widget.RemoteViews import com.sameerasw.essentials.data.repository.SettingsRepository @@ -33,7 +32,7 @@ import java.io.FileOutputStream class WidgetScraperService : Service() { private inner class ScrapingHostView(context: Context) : AppWidgetHostView(context) { - + private val drawListener = ViewTreeObserver.OnDrawListener { notifyWidgetChanged() } @@ -70,7 +69,8 @@ class WidgetScraperService : Service() { } } - private inner class ScrapingWidgetHost(context: Context, hostId: Int) : AppWidgetHost(context, hostId) { + private inner class ScrapingWidgetHost(context: Context, hostId: Int) : + AppWidgetHost(context, hostId) { override fun onCreateView( context: Context, appWidgetId: Int, @@ -108,14 +108,16 @@ class WidgetScraperService : Service() { override fun onMetadataChanged(metadata: MediaMetadata?) { updateMediaMetadata(currentController) } + override fun onPlaybackStateChanged(state: PlaybackState?) { updateMediaMetadata(currentController) } } - private val activeSessionsListener = MediaSessionManager.OnActiveSessionsChangedListener { controllers -> - updateActiveSession(controllers) - } + private val activeSessionsListener = + MediaSessionManager.OnActiveSessionsChangedListener { controllers -> + updateActiveSession(controllers) + } override fun onCreate() { super.onCreate() @@ -139,7 +141,9 @@ class WidgetScraperService : Service() { cleanupMediaListener() val widgetId = settingsRepository.getPixelSearchbarWidgetId() - if (widgetId == AppWidgetManager.INVALID_APPWIDGET_ID) { stopSelf(); return } + if (widgetId == AppWidgetManager.INVALID_APPWIDGET_ID) { + stopSelf(); return + } val awm = AppWidgetManager.getInstance(this) val host = ScrapingWidgetHost(this, HOST_ID) @@ -164,7 +168,8 @@ class WidgetScraperService : Service() { updateActiveSession(initialSessions) manager.addOnActiveSessionsChangedListener(activeSessionsListener, componentName) } - } catch (_: Exception) {} + } catch (_: Exception) { + } // Dynamically register the MusicBroadcastReceiver try { @@ -192,12 +197,13 @@ class WidgetScraperService : Service() { androidx.core.content.ContextCompat.RECEIVER_EXPORTED ) } - } catch (_: Exception) {} + } catch (_: Exception) { + } } private fun updateActiveSession(controllers: List?) { val active = controllers?.sortedWith( - compareByDescending { + compareByDescending { val state = it.playbackState?.state state == PlaybackState.STATE_PLAYING || state == PlaybackState.STATE_BUFFERING }.thenByDescending { @@ -231,7 +237,8 @@ class WidgetScraperService : Service() { FileOutputStream(filesDirFile).use { out -> artwork.compress(Bitmap.CompressFormat.PNG, 100, out) } - } catch (_: Exception) {} + } catch (_: Exception) { + } } else { if (filesDirFile.exists()) filesDirFile.delete() } @@ -251,14 +258,15 @@ class WidgetScraperService : Service() { private fun notifyWidgetChanged() { if (updatePending) return updatePending = true - + handler.postDelayed({ updatePending = false settingsRepository.incrementPixelSearchbarWidgetRevision() serviceScope.launch { runCatching { - val manager = androidx.glance.appwidget.GlanceAppWidgetManager(this@WidgetScraperService) + val manager = + androidx.glance.appwidget.GlanceAppWidgetManager(this@WidgetScraperService) val widget = PixelSearchbarWidget() val glanceIds = manager.getGlanceIds(PixelSearchbarWidget::class.java) for (glanceId in glanceIds) widget.update(this@WidgetScraperService, glanceId) @@ -276,7 +284,8 @@ class WidgetScraperService : Service() { private fun cleanupMediaListener() { try { mediaSessionManager?.removeOnActiveSessionsChangedListener(activeSessionsListener) - } catch (_: Exception) {} + } catch (_: Exception) { + } currentController?.unregisterCallback(mediaCallback) currentController = null mediaSessionManager = null @@ -287,7 +296,8 @@ class WidgetScraperService : Service() { unregisterReceiver(it) } musicBroadcastReceiver = null - } catch (_: Exception) {} + } catch (_: Exception) { + } } override fun onDestroy() { diff --git a/app/src/main/java/com/sameerasw/essentials/ui/activities/ActionShortcutActivity.kt b/app/src/main/java/com/sameerasw/essentials/ui/activities/ActionShortcutActivity.kt index c25249519..ca20c896d 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/activities/ActionShortcutActivity.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/activities/ActionShortcutActivity.kt @@ -12,10 +12,11 @@ import kotlinx.coroutines.launch class ActionShortcutActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - + DIYRepository.init(applicationContext) - val automation = DIYRepository.automations.value.find { it.type == Automation.Type.ACTION_SHORTCUT } - + val automation = + DIYRepository.automations.value.find { it.type == Automation.Type.ACTION_SHORTCUT } + if (automation != null && automation.actions.isNotEmpty()) { lifecycleScope.launch { automation.actions.forEach { action -> @@ -24,7 +25,8 @@ class ActionShortcutActivity : ComponentActivity() { finish() } } else { - Toast.makeText(this, "No customized action shortcut configured", Toast.LENGTH_SHORT).show() + Toast.makeText(this, "No customized action shortcut configured", Toast.LENGTH_SHORT) + .show() finish() } } diff --git a/app/src/main/java/com/sameerasw/essentials/ui/activities/AutomationEditorActivity.kt b/app/src/main/java/com/sameerasw/essentials/ui/activities/AutomationEditorActivity.kt index 436219693..264b570de 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/activities/AutomationEditorActivity.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/activities/AutomationEditorActivity.kt @@ -452,16 +452,18 @@ class AutomationEditorActivity : ComponentActivity() { ) RoundedCardContainer(spacing = 2.dp) { - val editorTitle = if (automationType == Automation.Type.PIXEL_SEARCHBAR) { - stringResource(R.string.diy_create_pixel_searchbar_title) - } else { - stringResource(R.string.diy_create_action_shortcut_title) - } - val editorIcon = if (automationType == Automation.Type.PIXEL_SEARCHBAR) { - R.drawable.rounded_search_24 - } else { - R.drawable.rounded_rocket_launch_24 - } + val editorTitle = + if (automationType == Automation.Type.PIXEL_SEARCHBAR) { + stringResource(R.string.diy_create_pixel_searchbar_title) + } else { + stringResource(R.string.diy_create_action_shortcut_title) + } + val editorIcon = + if (automationType == Automation.Type.PIXEL_SEARCHBAR) { + R.drawable.rounded_search_24 + } else { + R.drawable.rounded_rocket_launch_24 + } EditorActionItem( title = editorTitle, iconRes = editorIcon, @@ -630,6 +632,7 @@ class AutomationEditorActivity : ComponentActivity() { when (automationType) { Automation.Type.TRIGGER -> selectedAction = null + Automation.Type.ACTION_SHORTCUT, Automation.Type.PIXEL_SEARCHBAR -> selectedAction = null @@ -656,6 +659,7 @@ class AutomationEditorActivity : ComponentActivity() { when (automationType) { Automation.Type.TRIGGER -> selectedAction = resolvedAction + Automation.Type.ACTION_SHORTCUT, Automation.Type.PIXEL_SEARCHBAR -> selectedAction = resolvedAction @@ -681,16 +685,16 @@ class AutomationEditorActivity : ComponentActivity() { } }, onSettingsClick = { - configAction = resolvedAction - if (resolvedAction is Action.DimWallpaper) { - showDimSettings = true - } else if (resolvedAction is Action.ScreenOff) { - showScreenOffSettings = true - } else if (resolvedAction is Action.DeviceEffects) { - showDeviceEffectsSettings = true - } else if (resolvedAction is Action.SoundMode) { - showSoundModeSettings = true - } + configAction = resolvedAction + if (resolvedAction is Action.DimWallpaper) { + showDimSettings = true + } else if (resolvedAction is Action.ScreenOff) { + showScreenOffSettings = true + } else if (resolvedAction is Action.DeviceEffects) { + showDeviceEffectsSettings = true + } else if (resolvedAction is Action.SoundMode) { + showSoundModeSettings = true + } } ) } @@ -723,9 +727,11 @@ class AutomationEditorActivity : ComponentActivity() { onSave = { newAction -> showDimSettings = false // Update the selection with configured action - when (automationType) { + when (automationType) { Automation.Type.TRIGGER -> selectedAction = newAction - Automation.Type.ACTION_SHORTCUT, Automation.Type.PIXEL_SEARCHBAR -> selectedAction = newAction + Automation.Type.ACTION_SHORTCUT, Automation.Type.PIXEL_SEARCHBAR -> selectedAction = + newAction + Automation.Type.STATE, Automation.Type.APP -> { if (selectedActionTab == 0) selectedInAction = newAction else selectedOutAction = newAction @@ -744,7 +750,9 @@ class AutomationEditorActivity : ComponentActivity() { showScreenOffSettings = false when (automationType) { Automation.Type.TRIGGER -> selectedAction = newAction - Automation.Type.ACTION_SHORTCUT, Automation.Type.PIXEL_SEARCHBAR -> selectedAction = newAction + Automation.Type.ACTION_SHORTCUT, Automation.Type.PIXEL_SEARCHBAR -> selectedAction = + newAction + Automation.Type.STATE, Automation.Type.APP -> { if (selectedActionTab == 0) selectedInAction = newAction else selectedOutAction = newAction @@ -763,7 +771,9 @@ class AutomationEditorActivity : ComponentActivity() { showDeviceEffectsSettings = false when (automationType) { Automation.Type.TRIGGER -> selectedAction = newAction - Automation.Type.ACTION_SHORTCUT, Automation.Type.PIXEL_SEARCHBAR -> selectedAction = newAction + Automation.Type.ACTION_SHORTCUT, Automation.Type.PIXEL_SEARCHBAR -> selectedAction = + newAction + Automation.Type.STATE, Automation.Type.APP -> { if (selectedActionTab == 0) selectedInAction = newAction else selectedOutAction = newAction @@ -782,7 +792,9 @@ class AutomationEditorActivity : ComponentActivity() { showSoundModeSettings = false when (automationType) { Automation.Type.TRIGGER -> selectedAction = newAction - Automation.Type.ACTION_SHORTCUT, Automation.Type.PIXEL_SEARCHBAR -> selectedAction = newAction + Automation.Type.ACTION_SHORTCUT, Automation.Type.PIXEL_SEARCHBAR -> selectedAction = + newAction + Automation.Type.STATE, Automation.Type.APP -> { if (selectedActionTab == 0) selectedInAction = newAction else selectedOutAction = newAction diff --git a/app/src/main/java/com/sameerasw/essentials/ui/activities/PixelSearchbarSettingsActivity.kt b/app/src/main/java/com/sameerasw/essentials/ui/activities/PixelSearchbarSettingsActivity.kt index 1ca316dca..df086fba3 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/activities/PixelSearchbarSettingsActivity.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/activities/PixelSearchbarSettingsActivity.kt @@ -3,6 +3,8 @@ package com.sameerasw.essentials.ui.activities import android.app.Activity import android.appwidget.AppWidgetHost import android.appwidget.AppWidgetManager +import android.content.Context +import android.content.Intent import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.rememberLauncherForActivityResult @@ -34,6 +36,7 @@ import androidx.compose.material3.ListItemDefaults import androidx.compose.material3.MaterialTheme import androidx.compose.material3.RadioButton import androidx.compose.material3.Scaffold +import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue @@ -58,19 +61,15 @@ import com.sameerasw.essentials.services.widgets.WidgetScraperService import com.sameerasw.essentials.ui.components.EssentialsFloatingToolbar import com.sameerasw.essentials.ui.components.cards.IconToggleItem import com.sameerasw.essentials.ui.components.containers.RoundedCardContainer -import com.sameerasw.essentials.ui.components.sliders.ConfigSliderItem -import androidx.compose.material3.Switch - import com.sameerasw.essentials.ui.components.pickers.SegmentedPicker import com.sameerasw.essentials.ui.components.sheets.FeatureHelpBottomSheet import com.sameerasw.essentials.ui.components.sheets.PermissionsBottomSheet +import com.sameerasw.essentials.ui.components.sliders.ConfigSliderItem import com.sameerasw.essentials.ui.modifiers.BlurDirection import com.sameerasw.essentials.ui.modifiers.progressiveBlur import com.sameerasw.essentials.ui.theme.EssentialsTheme import com.sameerasw.essentials.utils.HapticUtil import com.sameerasw.essentials.viewmodels.MainViewModel -import android.content.Context -import android.content.Intent class PixelSearchbarSettingsActivity : ComponentActivity() { @OptIn(ExperimentalMaterial3ExpressiveApi::class) @@ -98,8 +97,14 @@ class PixelSearchbarSettingsActivity : ComponentActivity() { showToggle = true, hasMoreSettings = true ) { - override fun isEnabled(viewModel: MainViewModel) = viewModel.isPixelSearchbarEnabled.value - override fun onToggle(viewModel: MainViewModel, context: Context, enabled: Boolean) { + override fun isEnabled(viewModel: MainViewModel) = + viewModel.isPixelSearchbarEnabled.value + + override fun onToggle( + viewModel: MainViewModel, + context: Context, + enabled: Boolean + ) { viewModel.setPixelSearchbarEnabled(enabled, context) } } @@ -149,7 +154,8 @@ class PixelSearchbarSettingsActivity : ComponentActivity() { Spacer( modifier = Modifier.height( - WindowInsets.navigationBars.asPaddingValues().calculateBottomPadding() + 150.dp + WindowInsets.navigationBars.asPaddingValues() + .calculateBottomPadding() + 150.dp ) ) } @@ -211,7 +217,10 @@ fun PixelSearchbarSettingsUI( ) { result -> if (result.resultCode == Activity.RESULT_OK) { val data = result.data ?: return@rememberLauncherForActivityResult - val widgetId = data.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID) + val widgetId = data.getIntExtra( + AppWidgetManager.EXTRA_APPWIDGET_ID, + AppWidgetManager.INVALID_APPWIDGET_ID + ) if (widgetId != AppWidgetManager.INVALID_APPWIDGET_ID) { val info = awm.getAppWidgetInfo(widgetId) val providerName = info?.provider?.flattenToString() @@ -287,10 +296,12 @@ fun PixelSearchbarSettingsUI( WidgetScraperService.start(context) viewModel.setPixelSearchbarType(type, context) } + currentType == "widget" || currentType == "music" -> { WidgetScraperService.stop(context) viewModel.setPixelSearchbarType(type, context) } + else -> viewModel.setPixelSearchbarType(type, context) } }, @@ -445,7 +456,8 @@ fun PixelSearchbarSettingsUI( "dd/MM/yyyy" ) val currentDate = remember { java.util.Date() } - val googleSansFlexRound = remember { FontFamily(Font(R.font.google_sans_flex_round)) } + val googleSansFlexRound = + remember { FontFamily(Font(R.font.google_sans_flex_round)) } Column( modifier = Modifier @@ -480,7 +492,10 @@ fun PixelSearchbarSettingsUI( val isSelected = currentDateFormat == format val formattedDate = remember(format, currentDate) { try { - java.text.SimpleDateFormat(format, java.util.Locale.getDefault()).format(currentDate) + java.text.SimpleDateFormat( + format, + java.util.Locale.getDefault() + ).format(currentDate) } catch (e: Exception) { format } @@ -497,7 +512,10 @@ fun PixelSearchbarSettingsUI( selected = isSelected, onClick = { HapticUtil.performVirtualKeyHaptic(view) - viewModel.setPixelSearchbarDateFormat(format, context) + viewModel.setPixelSearchbarDateFormat( + format, + context + ) } ) }, @@ -533,8 +551,14 @@ fun PixelSearchbarSettingsUI( onClick = { if (tapActionEnabled) { HapticUtil.performVirtualKeyHaptic(view) - val intent = Intent(context, com.sameerasw.essentials.MainActivity::class.java).apply { - putExtra("target_tab", com.sameerasw.essentials.domain.DIYTabs.DIY.name) + val intent = Intent( + context, + com.sameerasw.essentials.MainActivity::class.java + ).apply { + putExtra( + "target_tab", + com.sameerasw.essentials.domain.DIYTabs.DIY.name + ) } context.startActivity(intent) } @@ -545,7 +569,9 @@ fun PixelSearchbarSettingsUI( painter = painterResource(id = R.drawable.rounded_rocket_launch_24), contentDescription = null, modifier = Modifier.size(24.dp), - tint = if (tapActionEnabled) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.38f) + tint = if (tapActionEnabled) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.onSurfaceVariant.copy( + alpha = 0.38f + ) ) }, trailingContent = { @@ -561,7 +587,9 @@ fun PixelSearchbarSettingsUI( Text( text = stringResource(R.string.pixel_searchbar_tap_action_enabled_desc), style = MaterialTheme.typography.labelMedium, - color = if (tapActionEnabled) MaterialTheme.colorScheme.onSurfaceVariant else MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.38f) + color = if (tapActionEnabled) MaterialTheme.colorScheme.onSurfaceVariant else MaterialTheme.colorScheme.onSurfaceVariant.copy( + alpha = 0.38f + ) ) }, colors = ListItemDefaults.colors( @@ -571,7 +599,9 @@ fun PixelSearchbarSettingsUI( Text( text = stringResource(R.string.pixel_searchbar_tap_action_enabled), style = MaterialTheme.typography.bodyMedium, - color = if (tapActionEnabled) MaterialTheme.colorScheme.onSurface else MaterialTheme.colorScheme.onSurface.copy(alpha = 0.38f) + color = if (tapActionEnabled) MaterialTheme.colorScheme.onSurface else MaterialTheme.colorScheme.onSurface.copy( + alpha = 0.38f + ) ) } } @@ -581,7 +611,11 @@ fun PixelSearchbarSettingsUI( if (showPermissionSheet) { val permissionItem = remember(context, viewModel) { - com.sameerasw.essentials.utils.PermissionUIHelper.getPermissionItem("WRITE_SECURE_SETTINGS", context, viewModel) + com.sameerasw.essentials.utils.PermissionUIHelper.getPermissionItem( + "WRITE_SECURE_SETTINGS", + context, + viewModel + ) } if (permissionItem != null) { PermissionsBottomSheet( diff --git a/app/src/main/java/com/sameerasw/essentials/ui/activities/PixelSearchbarTapActivity.kt b/app/src/main/java/com/sameerasw/essentials/ui/activities/PixelSearchbarTapActivity.kt index d45789672..d6e643cdf 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/activities/PixelSearchbarTapActivity.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/activities/PixelSearchbarTapActivity.kt @@ -11,10 +11,11 @@ import kotlinx.coroutines.launch class PixelSearchbarTapActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - + DIYRepository.init(applicationContext) - val automation = DIYRepository.automations.value.find { it.type == Automation.Type.PIXEL_SEARCHBAR } - + val automation = + DIYRepository.automations.value.find { it.type == Automation.Type.PIXEL_SEARCHBAR } + if (automation != null && automation.actions.isNotEmpty() && automation.isEnabled) { lifecycleScope.launch { automation.actions.forEach { action -> diff --git a/app/src/main/java/com/sameerasw/essentials/ui/activities/QSPreferencesActivity.kt b/app/src/main/java/com/sameerasw/essentials/ui/activities/QSPreferencesActivity.kt index 154ec504e..93265925d 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/activities/QSPreferencesActivity.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/activities/QSPreferencesActivity.kt @@ -61,7 +61,8 @@ class QSPreferencesActivity : ComponentActivity() { } if (componentName.className == "com.sameerasw.essentials.services.tiles.DeveloperOptionsTileService" || - componentName.className == "com.sameerasw.essentials.services.tiles.UsbDebuggingTileService") { + componentName.className == "com.sameerasw.essentials.services.tiles.UsbDebuggingTileService" + ) { val devIntent = Intent(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS).apply { flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP } diff --git a/app/src/main/java/com/sameerasw/essentials/ui/activities/ScreenOffWidgetConfigureActivity.kt b/app/src/main/java/com/sameerasw/essentials/ui/activities/ScreenOffWidgetConfigureActivity.kt index 43634fb61..3d1c162fb 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/activities/ScreenOffWidgetConfigureActivity.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/activities/ScreenOffWidgetConfigureActivity.kt @@ -1,6 +1,5 @@ package com.sameerasw.essentials.ui.activities -import android.app.Activity import android.appwidget.AppWidgetManager import android.content.Context import android.content.Intent diff --git a/app/src/main/java/com/sameerasw/essentials/ui/activities/TravelCompassActivity.kt b/app/src/main/java/com/sameerasw/essentials/ui/activities/TravelCompassActivity.kt index a87319cce..36d44e492 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/activities/TravelCompassActivity.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/activities/TravelCompassActivity.kt @@ -12,24 +12,12 @@ import android.view.WindowManager import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge -import androidx.compose.ui.platform.LocalConfiguration -import androidx.compose.ui.platform.LocalView -import androidx.core.view.WindowCompat -import androidx.core.view.WindowInsetsCompat -import androidx.core.view.WindowInsetsControllerCompat -import com.sameerasw.essentials.utils.HapticUtil import androidx.compose.animation.core.Spring import androidx.compose.animation.core.animateFloatAsState import androidx.compose.animation.core.spring import androidx.compose.animation.core.tween import androidx.compose.foundation.Canvas -import androidx.compose.foundation.clickable import androidx.compose.foundation.gestures.detectTapGestures -import androidx.compose.foundation.interaction.MutableInteractionSource -import androidx.compose.material3.Icon -import androidx.compose.ui.input.pointer.pointerInput -import androidx.compose.ui.res.painterResource -import com.sameerasw.essentials.R import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -41,6 +29,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.rememberPagerState +import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -57,15 +46,24 @@ import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.asComposePath import androidx.compose.ui.graphics.drawscope.Stroke import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.input.pointer.pointerInput +import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalView +import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import androidx.core.view.WindowCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat import androidx.graphics.shapes.toPath import com.google.android.gms.location.LocationServices import com.google.android.gms.location.Priority +import com.sameerasw.essentials.R import com.sameerasw.essentials.data.repository.LocationReachedRepository import com.sameerasw.essentials.ui.theme.EssentialsTheme +import com.sameerasw.essentials.utils.HapticUtil import com.sameerasw.essentials.viewmodels.MainViewModel import kotlinx.coroutines.delay import java.util.Calendar @@ -87,11 +85,13 @@ class TravelCompassActivity : ComponentActivity(), SensorEventListener { // Make activity truly full screen (hide status/navigation bars, fit system windows false, allow display cutout) WindowCompat.setDecorFitsSystemWindows(window, false) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - window.attributes.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES + window.attributes.layoutInDisplayCutoutMode = + WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES } val controller = WindowCompat.getInsetsController(window, window.decorView) controller.hide(WindowInsetsCompat.Type.systemBars()) - controller.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE + controller.systemBarsBehavior = + WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE sensorManager = getSystemService(SENSOR_SERVICE) as SensorManager rotationVectorSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR) @@ -161,8 +161,20 @@ private fun CompassScreen( val repository = remember { LocationReachedRepository(context) } val fusedLocation = remember { LocationServices.getFusedLocationProviderClient(context) } val is24h = remember { DateFormat.is24HourFormat(context) } - val sharedPrefs = remember { context.getSharedPreferences("essentials_prefs", android.content.Context.MODE_PRIVATE) } - var useIcon by remember { mutableStateOf(sharedPrefs.getBoolean("location_reached_compass_use_icon", false)) } + val sharedPrefs = remember { + context.getSharedPreferences( + "essentials_prefs", + android.content.Context.MODE_PRIVATE + ) + } + var useIcon by remember { + mutableStateOf( + sharedPrefs.getBoolean( + "location_reached_compass_use_icon", + false + ) + ) + } var currentTime by remember { mutableStateOf("") } var distanceText by remember { mutableStateOf("") } @@ -252,7 +264,10 @@ private fun CompassScreen( val animatedRotation by animateFloatAsState( targetValue = continuousTargetRotation, - animationSpec = spring(stiffness = Spring.StiffnessLow, dampingRatio = Spring.DampingRatioMediumBouncy), + animationSpec = spring( + stiffness = Spring.StiffnessLow, + dampingRatio = Spring.DampingRatioMediumBouncy + ), label = "arrowRotation" ) @@ -303,7 +318,8 @@ private fun CompassScreen( onLongPress = { HapticUtil.performHeavyHaptic(view) useIcon = !useIcon - sharedPrefs.edit().putBoolean("location_reached_compass_use_icon", useIcon).apply() + sharedPrefs.edit().putBoolean("location_reached_compass_use_icon", useIcon) + .apply() } ) }, @@ -322,7 +338,8 @@ private fun CompassScreen( modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center ) { - val isLandscape = LocalConfiguration.current.orientation == Configuration.ORIENTATION_LANDSCAPE + val isLandscape = + LocalConfiguration.current.orientation == Configuration.ORIENTATION_LANDSCAPE val arrowSize = if (isLandscape) 180.dp else 220.dp when (page) { @@ -417,6 +434,7 @@ private fun CompassScreen( } } } + 1 -> { // Minimal CompassArrowContainer( rotationDegrees = animatedRotation, @@ -427,6 +445,7 @@ private fun CompassScreen( .align(Alignment.Center) ) } + 2 -> { // Most Details if (isLandscape) { Row( diff --git a/app/src/main/java/com/sameerasw/essentials/ui/components/diy/AutomationItem.kt b/app/src/main/java/com/sameerasw/essentials/ui/components/diy/AutomationItem.kt index b3f5ec2d6..0c52c67f1 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/components/diy/AutomationItem.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/components/diy/AutomationItem.kt @@ -163,6 +163,7 @@ fun AutomationItem( it ) } + Automation.Type.ACTION_SHORTCUT -> stringResource(R.string.diy_create_action_shortcut_title) Automation.Type.PIXEL_SEARCHBAR -> stringResource(R.string.diy_create_pixel_searchbar_title) Automation.Type.STATE -> automation.state?.title?.let { stringResource(it) } diff --git a/app/src/main/java/com/sameerasw/essentials/ui/components/pickers/CrashReportingPicker.kt b/app/src/main/java/com/sameerasw/essentials/ui/components/pickers/CrashReportingPicker.kt index 8a73a9bcf..79c5a742a 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/components/pickers/CrashReportingPicker.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/components/pickers/CrashReportingPicker.kt @@ -45,7 +45,10 @@ fun CrashReportingPicker( Column( modifier = modifier .fillMaxWidth() - .background(MaterialTheme.colorScheme.surfaceBright, shape = MaterialTheme.shapes.extraSmall), + .background( + MaterialTheme.colorScheme.surfaceBright, + shape = MaterialTheme.shapes.extraSmall + ), verticalArrangement = Arrangement.spacedBy(0.dp) ) { ListItem( diff --git a/app/src/main/java/com/sameerasw/essentials/ui/components/pickers/DefaultTabPicker.kt b/app/src/main/java/com/sameerasw/essentials/ui/components/pickers/DefaultTabPicker.kt index cfb6cdee4..08686a282 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/components/pickers/DefaultTabPicker.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/components/pickers/DefaultTabPicker.kt @@ -41,7 +41,10 @@ fun DefaultTabPicker( Column( modifier = modifier .fillMaxWidth() - .background(MaterialTheme.colorScheme.surfaceBright, shape = MaterialTheme.shapes.extraSmall), + .background( + MaterialTheme.colorScheme.surfaceBright, + shape = MaterialTheme.shapes.extraSmall + ), verticalArrangement = Arrangement.spacedBy(0.dp) ) { ListItem( diff --git a/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/NewAutomationSheet.kt b/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/NewAutomationSheet.kt index 5cc937b3b..ad94a40cf 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/NewAutomationSheet.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/NewAutomationSheet.kt @@ -22,18 +22,18 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalView import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import com.sameerasw.essentials.R +import com.sameerasw.essentials.data.repository.SettingsRepository import com.sameerasw.essentials.domain.diy.Automation import com.sameerasw.essentials.domain.diy.DIYRepository import com.sameerasw.essentials.ui.components.containers.RoundedCardContainer import com.sameerasw.essentials.utils.HapticUtil -import androidx.compose.ui.platform.LocalContext -import com.sameerasw.essentials.data.repository.SettingsRepository @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -154,7 +154,9 @@ private fun AutomationTypeOption( ) { val view = LocalView.current Surface( - color = if (enabled) MaterialTheme.colorScheme.surfaceContainerHighest else MaterialTheme.colorScheme.surfaceContainerHighest.copy(alpha = 0.5f), + color = if (enabled) MaterialTheme.colorScheme.surfaceContainerHighest else MaterialTheme.colorScheme.surfaceContainerHighest.copy( + alpha = 0.5f + ), shape = RoundedCornerShape(4.dp), modifier = modifier .fillMaxWidth() @@ -174,7 +176,9 @@ private fun AutomationTypeOption( painter = painterResource(id = iconRes), contentDescription = null, modifier = Modifier.size(24.dp), - tint = if (enabled) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.5f) + tint = if (enabled) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.onSurfaceVariant.copy( + alpha = 0.5f + ) ) Spacer(modifier = Modifier.width(16.dp)) Column(modifier = Modifier.weight(1f)) { @@ -182,12 +186,16 @@ private fun AutomationTypeOption( text = title, style = MaterialTheme.typography.titleMedium, fontWeight = FontWeight.SemiBold, - color = if (enabled) MaterialTheme.colorScheme.onSurface else MaterialTheme.colorScheme.onSurface.copy(alpha = 0.5f) + color = if (enabled) MaterialTheme.colorScheme.onSurface else MaterialTheme.colorScheme.onSurface.copy( + alpha = 0.5f + ) ) Text( text = description, style = MaterialTheme.typography.bodyMedium, - color = if (enabled) MaterialTheme.colorScheme.onSurfaceVariant else MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.5f) + color = if (enabled) MaterialTheme.colorScheme.onSurfaceVariant else MaterialTheme.colorScheme.onSurfaceVariant.copy( + alpha = 0.5f + ) ) } Spacer(modifier = Modifier.width(8.dp)) @@ -197,7 +205,9 @@ private fun AutomationTypeOption( modifier = Modifier .padding(end = 4.dp) .size(24.dp), - tint = if (enabled) MaterialTheme.colorScheme.onSurfaceVariant else MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.5f) + tint = if (enabled) MaterialTheme.colorScheme.onSurfaceVariant else MaterialTheme.colorScheme.onSurfaceVariant.copy( + alpha = 0.5f + ) ) } } diff --git a/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/ScreenOffSettingsSheet.kt b/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/ScreenOffSettingsSheet.kt index 4b9385c49..6644e73a8 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/ScreenOffSettingsSheet.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/ScreenOffSettingsSheet.kt @@ -30,7 +30,6 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import com.sameerasw.essentials.R -import com.sameerasw.essentials.domain.HapticFeedbackType import com.sameerasw.essentials.domain.ScreenOffMethod import com.sameerasw.essentials.domain.diy.Action import com.sameerasw.essentials.ui.components.containers.RoundedCardContainer @@ -86,7 +85,11 @@ fun ScreenOffSettingsSheet( onMethodSelected = { type -> HapticUtil.performUIHaptic(view) if (type == ScreenOffMethod.INPUT && !ShellUtils.hasPermission(context)) { - android.widget.Toast.makeText(context, "Shizuku/Root permission required for Input method", android.widget.Toast.LENGTH_SHORT).show() + android.widget.Toast.makeText( + context, + "Shizuku/Root permission required for Input method", + android.widget.Toast.LENGTH_SHORT + ).show() } else { selectedMethod = type } diff --git a/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/SweepShapesBottomSheet.kt b/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/SweepShapesBottomSheet.kt index ecf682b96..738e41d5a 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/SweepShapesBottomSheet.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/SweepShapesBottomSheet.kt @@ -8,7 +8,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.grid.GridCells @@ -121,7 +120,8 @@ fun SweepShapesBottomSheet( OutlinedButton( onClick = { HapticUtil.performVirtualKeyHaptic(view) - val allNames = AmbientMusicShapeHelper.allShapesWithNames.map { it.first }.toSet() + val allNames = + AmbientMusicShapeHelper.allShapesWithNames.map { it.first }.toSet() selectedShapes = allNames - selectedShapes }, modifier = Modifier.weight(1f) diff --git a/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/WatchInstallHelpBottomSheet.kt b/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/WatchInstallHelpBottomSheet.kt index 6b3b4471e..57a994fc8 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/WatchInstallHelpBottomSheet.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/WatchInstallHelpBottomSheet.kt @@ -1,8 +1,6 @@ package com.sameerasw.essentials.ui.components.sheets import androidx.compose.foundation.background -import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -13,7 +11,9 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width +import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ExperimentalMaterial3Api @@ -135,7 +135,9 @@ fun WatchInstallHelpBottomSheet( Text( text = "Watch ADB Permissions", style = MaterialTheme.typography.titleMedium, - modifier = Modifier.align(Alignment.Start).padding(start = 8.dp) + modifier = Modifier + .align(Alignment.Start) + .padding(start = 8.dp) ) val context = LocalContext.current @@ -204,10 +206,15 @@ private fun AdbCommandCard( androidx.compose.material3.IconButton( onClick = { HapticUtil.performUIHaptic(view) - val clipboard = context.getSystemService(android.content.Context.CLIPBOARD_SERVICE) as android.content.ClipboardManager + val clipboard = + context.getSystemService(android.content.Context.CLIPBOARD_SERVICE) as android.content.ClipboardManager val clip = android.content.ClipData.newPlainText("adb_command", command) clipboard.setPrimaryClip(clip) - android.widget.Toast.makeText(context, "Command copied", android.widget.Toast.LENGTH_SHORT).show() + android.widget.Toast.makeText( + context, + "Command copied", + android.widget.Toast.LENGTH_SHORT + ).show() } ) { Icon( diff --git a/app/src/main/java/com/sameerasw/essentials/ui/components/text/SimpleMarkdown.kt b/app/src/main/java/com/sameerasw/essentials/ui/components/text/SimpleMarkdown.kt index 61f9425a7..a788a9f8a 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/components/text/SimpleMarkdown.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/components/text/SimpleMarkdown.kt @@ -455,7 +455,7 @@ private fun parseMarkdown(text: String): AnnotatedString { } } - ((matchValue.startsWith("*") && matchValue.endsWith("*") && !matchValue.startsWith("**")) || + ((matchValue.startsWith("*") && matchValue.endsWith("*") && !matchValue.startsWith("**")) || (matchValue.startsWith("_") && matchValue.endsWith("_"))) && matchValue.length >= 2 -> { withStyle(style = SpanStyle(fontStyle = FontStyle.Italic)) { append(matchValue.substring(1, matchValue.length - 1)) diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/SetupFeatures.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/SetupFeatures.kt index 03664b124..82683d8bd 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/SetupFeatures.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/SetupFeatures.kt @@ -1,12 +1,12 @@ package com.sameerasw.essentials.ui.composables -import androidx.activity.compose.BackHandler import android.app.Activity import android.content.ClipData import android.content.ClipboardManager import android.content.Context import android.content.Intent import android.provider.Settings +import androidx.activity.compose.BackHandler import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.expandVertically import androidx.compose.animation.fadeIn @@ -1345,32 +1345,44 @@ private fun RecentSearchesSection( viewModel.addRecentSearch(result) val feature = allFeatures.find { it.id == result.featureKey } if (feature != null) { - val targetFeatureKey = if (!feature.hasMoreSettings && feature.parentFeatureId != null) { - feature.parentFeatureId - } else { - feature.id - } - val highlightKey = if (!feature.hasMoreSettings && feature.parentFeatureId != null) { - feature.id - } else { - result.targetSettingHighlightKey - } + val targetFeatureKey = + if (!feature.hasMoreSettings && feature.parentFeatureId != null) { + feature.parentFeatureId + } else { + feature.id + } + val highlightKey = + if (!feature.hasMoreSettings && feature.parentFeatureId != null) { + feature.id + } else { + result.targetSettingHighlightKey + } BiometricSecurityHelper.runWithAuth( activity = context as FragmentActivity, feature = feature, action = { - val intent = if (targetFeatureKey == "LiveWallpaper" || targetFeatureKey == "Daily Wallpaper") { - Intent(context, com.sameerasw.essentials.ui.activities.WallpaperActivity::class.java).apply { - putExtra("tab", if (targetFeatureKey == "LiveWallpaper") "live" else "daily") - } - } else { - Intent(context, FeatureSettingsActivity::class.java).apply { - putExtra("feature", targetFeatureKey) - highlightKey?.let { - putExtra("highlight_setting", it) + val intent = + if (targetFeatureKey == "LiveWallpaper" || targetFeatureKey == "Daily Wallpaper") { + Intent( + context, + com.sameerasw.essentials.ui.activities.WallpaperActivity::class.java + ).apply { + putExtra( + "tab", + if (targetFeatureKey == "LiveWallpaper") "live" else "daily" + ) + } + } else { + Intent( + context, + FeatureSettingsActivity::class.java + ).apply { + putExtra("feature", targetFeatureKey) + highlightKey?.let { + putExtra("highlight_setting", it) + } } } - } context.startActivity(intent) } ) @@ -1419,48 +1431,67 @@ private fun SearchResultsSection( viewModel.addRecentSearch(result) val feature = allFeatures.find { it.id == result.featureKey } if (feature != null) { - val targetFeatureKey = if (!feature.hasMoreSettings && feature.parentFeatureId != null) { - feature.parentFeatureId - } else { - feature.id - } - val highlightKey = if (!feature.hasMoreSettings && feature.parentFeatureId != null) { - feature.id - } else { - result.targetSettingHighlightKey - } + val targetFeatureKey = + if (!feature.hasMoreSettings && feature.parentFeatureId != null) { + feature.parentFeatureId + } else { + feature.id + } + val highlightKey = + if (!feature.hasMoreSettings && feature.parentFeatureId != null) { + feature.id + } else { + result.targetSettingHighlightKey + } BiometricSecurityHelper.runWithAuth( activity = context as FragmentActivity, feature = feature, action = { - val intent = if (targetFeatureKey == "LiveWallpaper" || targetFeatureKey == "Daily Wallpaper") { - Intent(context, com.sameerasw.essentials.ui.activities.WallpaperActivity::class.java).apply { - putExtra("tab", if (targetFeatureKey == "LiveWallpaper") "live" else "daily") - } - } else { - Intent(context, FeatureSettingsActivity::class.java).apply { - putExtra("feature", targetFeatureKey) - highlightKey?.let { - putExtra("highlight_setting", it) + val intent = + if (targetFeatureKey == "LiveWallpaper" || targetFeatureKey == "Daily Wallpaper") { + Intent( + context, + com.sameerasw.essentials.ui.activities.WallpaperActivity::class.java + ).apply { + putExtra( + "tab", + if (targetFeatureKey == "LiveWallpaper") "live" else "daily" + ) + } + } else { + Intent( + context, + FeatureSettingsActivity::class.java + ).apply { + putExtra("feature", targetFeatureKey) + highlightKey?.let { + putExtra("highlight_setting", it) + } } } - } context.startActivity(intent) } ) } else { - val intent = if (result.featureKey == "LiveWallpaper" || result.featureKey == "Daily Wallpaper") { - Intent(context, com.sameerasw.essentials.ui.activities.WallpaperActivity::class.java).apply { - putExtra("tab", if (result.featureKey == "LiveWallpaper") "live" else "daily") - } - } else { - Intent(context, FeatureSettingsActivity::class.java).apply { - putExtra("feature", result.featureKey) - result.targetSettingHighlightKey?.let { - putExtra("highlight_setting", it) + val intent = + if (result.featureKey == "LiveWallpaper" || result.featureKey == "Daily Wallpaper") { + Intent( + context, + com.sameerasw.essentials.ui.activities.WallpaperActivity::class.java + ).apply { + putExtra( + "tab", + if (result.featureKey == "LiveWallpaper") "live" else "daily" + ) + } + } else { + Intent(context, FeatureSettingsActivity::class.java).apply { + putExtra("feature", result.featureKey) + result.targetSettingHighlightKey?.let { + putExtra("highlight_setting", it) + } } } - } context.startActivity(intent) } }, diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/ButtonRemapSettingsUI.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/ButtonRemapSettingsUI.kt index d5661efe5..95bf90340 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/ButtonRemapSettingsUI.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/ButtonRemapSettingsUI.kt @@ -43,7 +43,6 @@ import com.sameerasw.essentials.R import com.sameerasw.essentials.domain.HapticFeedbackType import com.sameerasw.essentials.shizuku.ShizukuPermissionHelper import com.sameerasw.essentials.shizuku.ShizukuStatus -import com.sameerasw.essentials.ui.components.cards.FeatureCard import com.sameerasw.essentials.ui.components.cards.IconToggleItem import com.sameerasw.essentials.ui.components.containers.RoundedCardContainer import com.sameerasw.essentials.ui.components.pickers.HapticFeedbackPicker @@ -463,7 +462,12 @@ fun ButtonRemapSettingsUI( title = stringResource(R.string.flashlight_always_off_title), description = stringResource(R.string.flashlight_always_off_desc), isChecked = viewModel.isFlashlightAlwaysTurnOffEnabled.value, - onCheckedChange = { viewModel.setFlashlightAlwaysTurnOffEnabled(it, context) } + onCheckedChange = { + viewModel.setFlashlightAlwaysTurnOffEnabled( + it, + context + ) + } ) } diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/FlashlightSettingsUI.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/FlashlightSettingsUI.kt index d1763d987..3ccea7595 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/FlashlightSettingsUI.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/FlashlightSettingsUI.kt @@ -1,6 +1,5 @@ package com.sameerasw.essentials.ui.composables.configs -import android.content.Context import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/LocationReachedSettingsUI.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/LocationReachedSettingsUI.kt index 5f5c654fc..7628e2cff 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/LocationReachedSettingsUI.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/LocationReachedSettingsUI.kt @@ -2,9 +2,8 @@ package com.sameerasw.essentials.ui.composables.configs import android.content.Intent import android.os.Build -import androidx.compose.foundation.clickable -import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.background +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -109,7 +108,10 @@ fun LocationReachedSettingsUI( onCompassClick = { HapticUtil.performVirtualKeyHaptic(view) context.startActivity( - Intent(context, com.sameerasw.essentials.ui.activities.TravelCompassActivity::class.java) + Intent( + context, + com.sameerasw.essentials.ui.activities.TravelCompassActivity::class.java + ) ) } ) diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/NotificationLightingSettingsUI.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/NotificationLightingSettingsUI.kt index 8c485fe7b..284c9a559 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/NotificationLightingSettingsUI.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/NotificationLightingSettingsUI.kt @@ -49,6 +49,7 @@ import com.sameerasw.essentials.R import com.sameerasw.essentials.domain.model.NotificationLightingColorMode import com.sameerasw.essentials.domain.model.NotificationLightingStyle import com.sameerasw.essentials.domain.model.NotificationLightingSweepPosition +import com.sameerasw.essentials.ui.components.cards.FeatureCard import com.sameerasw.essentials.ui.components.cards.IconToggleItem import com.sameerasw.essentials.ui.components.containers.RoundedCardContainer import com.sameerasw.essentials.ui.components.pickers.GlowSidesPicker @@ -59,7 +60,6 @@ import com.sameerasw.essentials.ui.components.sheets.AppSelectionSheet import com.sameerasw.essentials.ui.components.sheets.PermissionItem import com.sameerasw.essentials.ui.components.sheets.PermissionsBottomSheet import com.sameerasw.essentials.ui.components.sheets.SweepShapesBottomSheet -import com.sameerasw.essentials.ui.components.cards.FeatureCard import com.sameerasw.essentials.ui.components.sliders.ConfigSliderItem import com.sameerasw.essentials.ui.modifiers.highlight import com.sameerasw.essentials.utils.HapticUtil diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/OtherCustomizationsSettingsUI.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/OtherCustomizationsSettingsUI.kt index 9129ab415..5560f871e 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/OtherCustomizationsSettingsUI.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/OtherCustomizationsSettingsUI.kt @@ -30,7 +30,6 @@ import com.sameerasw.essentials.ui.components.sheets.PermissionsBottomSheet import com.sameerasw.essentials.ui.components.sliders.ConfigSliderItem import com.sameerasw.essentials.ui.modifiers.highlight import com.sameerasw.essentials.viewmodels.MainViewModel -import com.sameerasw.essentials.ui.activities.PixelSearchbarSettingsActivity enum class PermissionModule { HIDE_GESTURE_BAR, diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/PocketModeSettingsUI.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/PocketModeSettingsUI.kt index b687e477f..0e82ae603 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/PocketModeSettingsUI.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/PocketModeSettingsUI.kt @@ -3,31 +3,31 @@ package com.sameerasw.essentials.ui.composables.configs import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.material3.Button import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.unit.dp -import com.sameerasw.essentials.R -import com.sameerasw.essentials.ui.components.cards.IconToggleItem -import com.sameerasw.essentials.ui.components.containers.RoundedCardContainer -import com.sameerasw.essentials.ui.modifiers.highlight -import com.sameerasw.essentials.viewmodels.MainViewModel -import androidx.compose.material3.Button import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalView +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import com.sameerasw.essentials.R +import com.sameerasw.essentials.ui.components.cards.IconToggleItem +import com.sameerasw.essentials.ui.components.containers.RoundedCardContainer import com.sameerasw.essentials.ui.components.sheets.AppSelectionSheet import com.sameerasw.essentials.ui.components.sliders.ConfigSliderItem +import com.sameerasw.essentials.ui.modifiers.highlight import com.sameerasw.essentials.utils.HapticUtil +import com.sameerasw.essentials.viewmodels.MainViewModel @Composable fun PocketModeSettingsUI( diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/QuickSettingsTilesSettingsUI.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/QuickSettingsTilesSettingsUI.kt index f5a7f13cd..53a3b9b99 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/QuickSettingsTilesSettingsUI.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/QuickSettingsTilesSettingsUI.kt @@ -2,8 +2,8 @@ package com.sameerasw.essentials.ui.composables.configs import android.app.Activity import android.app.StatusBarManager -import android.content.Context import android.content.ComponentName +import android.content.Context import android.graphics.drawable.Icon import android.os.Build import android.widget.Toast @@ -36,7 +36,6 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue -import androidx.compose.ui.res.stringResource import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha @@ -45,6 +44,7 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalView import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.sameerasw.essentials.R diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/ScreenOffWidgetSettingsUI.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/ScreenOffWidgetSettingsUI.kt index 9911ddecb..84b079d5f 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/ScreenOffWidgetSettingsUI.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/ScreenOffWidgetSettingsUI.kt @@ -21,8 +21,6 @@ import androidx.core.content.edit import com.sameerasw.essentials.R import com.sameerasw.essentials.domain.HapticFeedbackType import com.sameerasw.essentials.domain.ScreenOffMethod -import com.sameerasw.essentials.ui.components.cards.FeatureCard -import com.sameerasw.essentials.ui.components.cards.IconToggleItem import com.sameerasw.essentials.ui.components.containers.RoundedCardContainer import com.sameerasw.essentials.ui.components.pickers.HapticFeedbackPicker import com.sameerasw.essentials.ui.components.pickers.ScreenOffMethodPicker diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/ShutUpSettingsUI.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/ShutUpSettingsUI.kt index 298688234..03e1e8a1b 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/ShutUpSettingsUI.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/ShutUpSettingsUI.kt @@ -1,37 +1,24 @@ package com.sameerasw.essentials.ui.composables.configs -import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size -import androidx.compose.material3.ButtonGroupDefaults import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.Icon import androidx.compose.material3.IconButton -import androidx.compose.material3.ListItem -import androidx.compose.material3.ListItemDefaults import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text -import androidx.compose.material3.ToggleButton import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.asImageBitmap import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource -import androidx.compose.ui.semantics.Role -import androidx.compose.ui.semantics.role -import androidx.compose.ui.semantics.semantics -import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import com.sameerasw.essentials.R import com.sameerasw.essentials.domain.model.AppSelection @@ -39,9 +26,9 @@ import com.sameerasw.essentials.domain.model.ShutUpAppConfig import com.sameerasw.essentials.ui.components.cards.FeatureCard import com.sameerasw.essentials.ui.components.containers.RoundedCardContainer import com.sameerasw.essentials.ui.components.menus.SegmentedDropdownMenuItem +import com.sameerasw.essentials.ui.components.pickers.RestoreModePicker import com.sameerasw.essentials.ui.components.sheets.AppSelectionSheet import com.sameerasw.essentials.ui.components.sheets.ShutUpPerAppSettingsSheet -import com.sameerasw.essentials.ui.components.pickers.RestoreModePicker import com.sameerasw.essentials.ui.components.sliders.ConfigSliderItem import com.sameerasw.essentials.utils.AppUtil import com.sameerasw.essentials.viewmodels.MainViewModel diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/WatchControlsSettingsUI.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/WatchControlsSettingsUI.kt index f16439bc5..d4228bc48 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/WatchControlsSettingsUI.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/WatchControlsSettingsUI.kt @@ -12,7 +12,6 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material3.Card -import androidx.compose.material3.CardDefaults import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -52,9 +51,13 @@ fun WatchControlsSettingsUI( val defaultLayout = "LOCK,SOUND,FLASHLIGHT,FLASHLIGHT_PULSE,AOD,TAP_TO_WAKE" val savedLayout = prefs.getString("watch_controls_layout", defaultLayout) ?: defaultLayout - var activeControls by remember { mutableStateOf(savedLayout.split(",").filter { it.isNotBlank() }) } + var activeControls by remember { + mutableStateOf( + savedLayout.split(",").filter { it.isNotBlank() }) + } - val allPossible = listOf("LOCK", "SOUND", "FLASHLIGHT", "FLASHLIGHT_PULSE", "AOD", "TAP_TO_WAKE") + val allPossible = + listOf("LOCK", "SOUND", "FLASHLIGHT", "FLASHLIGHT_PULSE", "AOD", "TAP_TO_WAKE") var disabledControls by remember { mutableStateOf(allPossible.filter { it !in activeControls }) } @@ -91,6 +94,7 @@ fun WatchControlsSettingsUI( val fromKey: String = when { from.index < originalActiveSize -> activeControls.getOrNull(from.index) ?: return@rememberReorderableLazyListState + from.index == originalActiveSize -> "separator" else -> disabledControls.getOrNull(from.index - originalActiveSize - 1) ?: return@rememberReorderableLazyListState @@ -150,7 +154,8 @@ fun WatchControlsSettingsUI( detectTapGestures(onLongPress = { if (activeControls.size > 1) { val toDisable = activeControls[index] - activeControls = activeControls.toMutableList().apply { removeAt(index) } + activeControls = + activeControls.toMutableList().apply { removeAt(index) } disabledControls = disabledControls + toDisable } save() @@ -163,7 +168,9 @@ fun WatchControlsSettingsUI( verticalAlignment = Alignment.CenterVertically ) { Icon( - painter = painterResource(id = controlIcons[key] ?: R.drawable.rounded_watch_24), + painter = painterResource( + id = controlIcons[key] ?: R.drawable.rounded_watch_24 + ), contentDescription = key, modifier = Modifier.size(24.dp), tint = MaterialTheme.colorScheme.primary @@ -222,7 +229,8 @@ fun WatchControlsSettingsUI( .pointerInput(Unit) { detectTapGestures(onLongPress = { val toEnable = disabledControls[index] - disabledControls = disabledControls.toMutableList().apply { removeAt(index) } + disabledControls = + disabledControls.toMutableList().apply { removeAt(index) } activeControls = activeControls + toEnable save() hapticFeedback.performHapticFeedback(HapticFeedbackType.LongPress) @@ -234,7 +242,9 @@ fun WatchControlsSettingsUI( verticalAlignment = Alignment.CenterVertically ) { Icon( - painter = painterResource(id = controlIcons[key] ?: R.drawable.rounded_watch_24), + painter = painterResource( + id = controlIcons[key] ?: R.drawable.rounded_watch_24 + ), contentDescription = key, modifier = Modifier.size(24.dp), tint = MaterialTheme.colorScheme.onSurfaceVariant diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/WatchSettingsUI.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/WatchSettingsUI.kt index 0951f9ce4..33942d7d2 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/WatchSettingsUI.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/WatchSettingsUI.kt @@ -62,8 +62,14 @@ fun WatchSettingsUI( .background(MaterialTheme.colorScheme.surfaceBright) .clickable { HapticUtil.performUIHaptic(view) - android.widget.Toast.makeText(context, "Syncing...", android.widget.Toast.LENGTH_SHORT).show() - com.sameerasw.essentials.services.DeviceInfoSyncManager.forceSync(context) + android.widget.Toast.makeText( + context, + "Syncing...", + android.widget.Toast.LENGTH_SHORT + ).show() + com.sameerasw.essentials.services.DeviceInfoSyncManager.forceSync( + context + ) com.sameerasw.essentials.services.CalendarSyncManager.forceSync(context) } .padding(24.dp), diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/wallpaper/WallpaperScreen.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/wallpaper/WallpaperScreen.kt index 59c06f514..6633e91cd 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/wallpaper/WallpaperScreen.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/wallpaper/WallpaperScreen.kt @@ -10,13 +10,35 @@ import android.widget.Toast import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.PickVisualMediaRequest import androidx.activity.result.contract.ActivityResultContracts -import androidx.compose.animation.* +import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.core.tween +import androidx.compose.animation.expandVertically +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.shrinkVertically +import androidx.compose.animation.slideInVertically +import androidx.compose.animation.slideOutVertically import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.combinedClickable -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.asPaddingValues +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.navigationBars +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.statusBars +import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.lazy.grid.items @@ -26,10 +48,33 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll -import androidx.compose.material3.* +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.ButtonGroupDefaults +import androidx.compose.material3.Card +import androidx.compose.material3.CardDefaults +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi +import androidx.compose.material3.Icon +import androidx.compose.material3.LoadingIndicator +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.ModalBottomSheet +import androidx.compose.material3.SplitButtonDefaults +import androidx.compose.material3.SplitButtonLayout +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.material3.ToggleButton import androidx.compose.material3.pulltorefresh.PullToRefreshBox import androidx.compose.material3.pulltorefresh.rememberPullToRefreshState -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue +import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip @@ -117,8 +162,9 @@ fun WallpaperScreen( LaunchedEffect(availableVideos) { if (selectedVideo == SettingsRepository.LIVE_WALLPAPER_DEFAULT_VIDEO && availableVideos.isNotEmpty()) { - val first = availableVideos.firstOrNull { it != SettingsRepository.LIVE_WALLPAPER_DEFAULT_VIDEO } - ?: availableVideos.firstOrNull() + val first = + availableVideos.firstOrNull { it != SettingsRepository.LIVE_WALLPAPER_DEFAULT_VIDEO } + ?: availableVideos.firstOrNull() if (first != null) { selectedVideo = first repository.saveLiveWallpaperSelectedVideo(first) @@ -285,7 +331,11 @@ fun WallpaperScreen( .padding(top = statusBarHeight + 64.dp), contentAlignment = Alignment.TopCenter ) { - val scale = if (isLoading) 1f else pullRefreshState.distanceFraction.coerceIn(0f, 1f) + val scale = + if (isLoading) 1f else pullRefreshState.distanceFraction.coerceIn( + 0f, + 1f + ) if (scale > 0f) { Card( shape = CircleShape, @@ -356,10 +406,16 @@ fun WallpaperScreen( selectedVideo = video repository.saveLiveWallpaperSelectedVideo(video) }, - onRemove = if (context.resources.getIdentifier(video, "raw", context.packageName) == 0) { + onRemove = if (context.resources.getIdentifier( + video, + "raw", + context.packageName + ) == 0 + ) { { repository.removeLiveWallpaperCustomVideo(video) - availableVideos = repository.getLiveWallpaperAvailableVideos() + availableVideos = + repository.getLiveWallpaperAvailableVideos() selectedVideo = repository.getLiveWallpaperSelectedVideo() } } else null @@ -373,7 +429,11 @@ fun WallpaperScreen( AnimatedVisibility( visible = (pagerState.currentPage == 0 && wallpaperInfo != null) || pagerState.currentPage == 1, enter = fadeIn(animationSpec = tween(400)) + slideInVertically(animationSpec = tween(400)) { it / 2 }, - exit = fadeOut(animationSpec = tween(400)) + slideOutVertically(animationSpec = tween(400)) { it / 2 }, + exit = fadeOut(animationSpec = tween(400)) + slideOutVertically( + animationSpec = tween( + 400 + ) + ) { it / 2 }, modifier = Modifier .align(Alignment.BottomCenter) .padding(horizontal = 24.dp) @@ -386,8 +446,16 @@ fun WallpaperScreen( ) { AnimatedVisibility( visible = showSettingsCard, - enter = expandVertically(animationSpec = tween(300)) + fadeIn(animationSpec = tween(300)), - exit = shrinkVertically(animationSpec = tween(300)) + fadeOut(animationSpec = tween(300)) + enter = expandVertically(animationSpec = tween(300)) + fadeIn( + animationSpec = tween( + 300 + ) + ), + exit = shrinkVertically(animationSpec = tween(300)) + fadeOut( + animationSpec = tween( + 300 + ) + ) ) { Card( shape = RoundedCornerShape(16.dp), @@ -475,13 +543,18 @@ fun WallpaperScreen( ) val options = listOf( - SettingsRepository.LIVE_WALLPAPER_TRIGGER_UNLOCK to stringResource(R.string.live_wallpaper_trigger_unlock), - SettingsRepository.LIVE_WALLPAPER_TRIGGER_SCREEN_ON to stringResource(R.string.live_wallpaper_trigger_screen_on) + SettingsRepository.LIVE_WALLPAPER_TRIGGER_UNLOCK to stringResource( + R.string.live_wallpaper_trigger_unlock + ), + SettingsRepository.LIVE_WALLPAPER_TRIGGER_SCREEN_ON to stringResource( + R.string.live_wallpaper_trigger_screen_on + ) ) SegmentedPicker( items = options, - selectedItem = options.find { it.first == playbackTrigger } ?: options.first(), + selectedItem = options.find { it.first == playbackTrigger } + ?: options.first(), onItemSelected = { option -> HapticUtil.performUIHaptic(view) playbackTrigger = option.first @@ -498,8 +571,10 @@ fun WallpaperScreen( onClick = { HapticUtil.performHeavyHaptic(view) repository.saveLiveWallpaperCustomVideos(emptyList()) - availableVideos = repository.getLiveWallpaperAvailableVideos() - selectedVideo = repository.getLiveWallpaperSelectedVideo() + availableVideos = + repository.getLiveWallpaperAvailableVideos() + selectedVideo = + repository.getLiveWallpaperSelectedVideo() }, colors = ButtonDefaults.buttonColors( containerColor = MaterialTheme.colorScheme.errorContainer, @@ -532,18 +607,26 @@ fun WallpaperScreen( wallpaperInfo?.urlMobile?.let { url -> viewModel.applyWallpaper(context, url) { success -> if (!success) { - Toast.makeText(context, R.string.label_wallpaper_apply_failed, Toast.LENGTH_SHORT).show() + Toast.makeText( + context, + R.string.label_wallpaper_apply_failed, + Toast.LENGTH_SHORT + ).show() } } } } else { HapticUtil.performCustomHaptic(view, 0.8f) - val intent = Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER).apply { - putExtra( - WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, - ComponentName(context, LiveWallpaperService::class.java) - ) - } + val intent = + Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER).apply { + putExtra( + WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, + ComponentName( + context, + LiveWallpaperService::class.java + ) + ) + } context.startActivity(intent) } }, @@ -602,7 +685,8 @@ fun WallpaperScreen( wallpaperInfo = wallpaperInfo, onViewImage = { try { - val intent = Intent(Intent.ACTION_VIEW, Uri.parse(wallpaperInfo?.photoLink ?: "")) + val intent = + Intent(Intent.ACTION_VIEW, Uri.parse(wallpaperInfo?.photoLink ?: "")) context.startActivity(intent) } catch (e: Exception) { e.printStackTrace() @@ -610,7 +694,8 @@ fun WallpaperScreen( }, onViewAuthor = { try { - val intent = Intent(Intent.ACTION_VIEW, Uri.parse(wallpaperInfo?.authorLink ?: "")) + val intent = + Intent(Intent.ACTION_VIEW, Uri.parse(wallpaperInfo?.authorLink ?: "")) context.startActivity(intent) } catch (e: Exception) { e.printStackTrace() @@ -618,7 +703,10 @@ fun WallpaperScreen( }, onViewCollection = { try { - val intent = Intent(Intent.ACTION_VIEW, Uri.parse("https://unsplash.com/collections/LqO9knU9z2A/Likes")) + val intent = Intent( + Intent.ACTION_VIEW, + Uri.parse("https://unsplash.com/collections/LqO9knU9z2A/Likes") + ) context.startActivity(intent) } catch (e: Exception) { e.printStackTrace() @@ -665,7 +753,10 @@ fun WallpaperHelpBottomSheet( RoundedCardContainer { Column( modifier = Modifier - .background(MaterialTheme.colorScheme.surfaceBright, shape = MaterialTheme.shapes.extraSmall) + .background( + MaterialTheme.colorScheme.surfaceBright, + shape = MaterialTheme.shapes.extraSmall + ) .padding(16.dp), verticalArrangement = Arrangement.spacedBy(12.dp) ) { @@ -711,7 +802,10 @@ fun WallpaperHelpBottomSheet( RoundedCardContainer { Column( modifier = Modifier - .background(MaterialTheme.colorScheme.surfaceBright, shape = MaterialTheme.shapes.extraSmall) + .background( + MaterialTheme.colorScheme.surfaceBright, + shape = MaterialTheme.shapes.extraSmall + ) .padding(16.dp), verticalArrangement = Arrangement.spacedBy(12.dp) ) { @@ -719,8 +813,8 @@ fun WallpaperHelpBottomSheet( onClick = onViewCollection, modifier = Modifier.fillMaxWidth(), colors = ButtonDefaults.buttonColors( - containerColor = MaterialTheme.colorScheme.primaryContainer, - contentColor = MaterialTheme.colorScheme.onPrimaryContainer + containerColor = MaterialTheme.colorScheme.primaryContainer, + contentColor = MaterialTheme.colorScheme.onPrimaryContainer ) ) { Text(text = "View Sameera's Collection") @@ -742,7 +836,10 @@ fun WallpaperHelpBottomSheet( RoundedCardContainer { Column( modifier = Modifier - .background(MaterialTheme.colorScheme.surfaceBright, shape = MaterialTheme.shapes.extraSmall) + .background( + MaterialTheme.colorScheme.surfaceBright, + shape = MaterialTheme.shapes.extraSmall + ) .padding(16.dp), verticalArrangement = Arrangement.spacedBy(12.dp) ) { diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/watermark/WatermarkScreen.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/watermark/WatermarkScreen.kt index 12d74fe1e..ff69af537 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/watermark/WatermarkScreen.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/watermark/WatermarkScreen.kt @@ -1,8 +1,8 @@ package com.sameerasw.essentials.ui.composables.watermark import android.app.Activity -import android.content.pm.ActivityInfo import android.content.Intent +import android.content.pm.ActivityInfo import android.net.Uri import android.widget.Toast import androidx.compose.foundation.layout.Box diff --git a/app/src/main/java/com/sameerasw/essentials/utils/DeviceUtils.kt b/app/src/main/java/com/sameerasw/essentials/utils/DeviceUtils.kt index b675d1cfa..0ff4dba6b 100644 --- a/app/src/main/java/com/sameerasw/essentials/utils/DeviceUtils.kt +++ b/app/src/main/java/com/sameerasw/essentials/utils/DeviceUtils.kt @@ -34,8 +34,8 @@ data class DeviceInfo( object DeviceUtils { fun isGoogleDevice(): Boolean { return Build.MANUFACTURER.equalsIgnoreCase("google") || - Build.BRAND.equalsIgnoreCase("google") || - Build.PRODUCT.contains("pixel", ignoreCase = true) + Build.BRAND.equalsIgnoreCase("google") || + Build.PRODUCT.contains("pixel", ignoreCase = true) } fun getDeviceInfo(context: Context): DeviceInfo { diff --git a/app/src/main/java/com/sameerasw/essentials/utils/OverlayHelper.kt b/app/src/main/java/com/sameerasw/essentials/utils/OverlayHelper.kt index cf42a372c..fc1ae9678 100644 --- a/app/src/main/java/com/sameerasw/essentials/utils/OverlayHelper.kt +++ b/app/src/main/java/com/sameerasw/essentials/utils/OverlayHelper.kt @@ -31,9 +31,9 @@ import androidx.savedstate.SavedStateRegistry import androidx.savedstate.SavedStateRegistryController import androidx.savedstate.SavedStateRegistryOwner import androidx.savedstate.setViewTreeSavedStateRegistryOwner +import com.sameerasw.essentials.data.repository.SettingsRepository import com.sameerasw.essentials.domain.model.NotificationLightingSide import com.sameerasw.essentials.domain.model.NotificationLightingStyle -import com.sameerasw.essentials.data.repository.SettingsRepository import androidx.compose.ui.graphics.Color as ComposeColor /** @@ -241,14 +241,15 @@ object OverlayHelper { } val selectedShapes = SettingsRepository(context).getEdgeLightingSweepSelectedShapes() - val sweepView = SweepShapeView(context, color, strokeDp, randomShapes, selectedShapes).apply { - tag = "sweep_view" - alpha = 0f - layoutParams = FrameLayout.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.MATCH_PARENT - ) - } + val sweepView = + SweepShapeView(context, color, strokeDp, randomShapes, selectedShapes).apply { + tag = "sweep_view" + alpha = 0f + layoutParams = FrameLayout.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT + ) + } overlay.addView(sweepView) return overlay diff --git a/app/src/main/java/com/sameerasw/essentials/utils/ShellUtils.kt b/app/src/main/java/com/sameerasw/essentials/utils/ShellUtils.kt index dcf451e59..c4d396ac3 100644 --- a/app/src/main/java/com/sameerasw/essentials/utils/ShellUtils.kt +++ b/app/src/main/java/com/sameerasw/essentials/utils/ShellUtils.kt @@ -42,11 +42,19 @@ object ShellUtils { RootUtils.runCommand(command) } else { if (!ShizukuUtils.isShizukuAvailable()) { - notifyShizukuError(context, "Shizuku is not running", "Please start Shizuku from its app to enable features.") + notifyShizukuError( + context, + "Shizuku is not running", + "Please start Shizuku from its app to enable features." + ) return } if (!ShizukuUtils.hasPermission()) { - notifyShizukuError(context, "Shizuku permission missing", "Please grant Shizuku permission for Essentials.") + notifyShizukuError( + context, + "Shizuku permission missing", + "Please grant Shizuku permission for Essentials." + ) return } ShizukuUtils.runCommand(command) @@ -67,17 +75,29 @@ object ShellUtils { RootUtils.newProcess(command) } else { if (!ShizukuUtils.isShizukuAvailable()) { - notifyShizukuError(context, "Shizuku is not running", "Please start Shizuku to enable features.") + notifyShizukuError( + context, + "Shizuku is not running", + "Please start Shizuku to enable features." + ) return null } if (!ShizukuUtils.hasPermission()) { - notifyShizukuError(context, "Shizuku permission missing", "Please grant Shizuku permission for Essentials.") + notifyShizukuError( + context, + "Shizuku permission missing", + "Please grant Shizuku permission for Essentials." + ) return null } try { com.sameerasw.essentials.shizuku.ShizukuProcessHelper.newProcess(command) } catch (e: Exception) { - notifyShizukuError(context, "Shizuku execution error", "An error occurred while running command: ${e.localizedMessage}") + notifyShizukuError( + context, + "Shizuku execution error", + "An error occurred while running command: ${e.localizedMessage}" + ) null } } @@ -110,7 +130,10 @@ object ShellUtils { PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE ) - val restartIntent = Intent(context, com.sameerasw.essentials.services.receivers.ShizukuActionReceiver::class.java).apply { + val restartIntent = Intent( + context, + com.sameerasw.essentials.services.receivers.ShizukuActionReceiver::class.java + ).apply { action = "com.sameerasw.essentials.ACTION_RESTART_SHIZUKU" } val restartPendingIntent = PendingIntent.getBroadcast( diff --git a/app/src/main/java/com/sameerasw/essentials/utils/ShortcutUtil.kt b/app/src/main/java/com/sameerasw/essentials/utils/ShortcutUtil.kt index dae89cd46..b0401ac83 100644 --- a/app/src/main/java/com/sameerasw/essentials/utils/ShortcutUtil.kt +++ b/app/src/main/java/com/sameerasw/essentials/utils/ShortcutUtil.kt @@ -50,28 +50,40 @@ object ShortcutUtil { val shortcuts = mutableListOf() // Wallpaper - val wallpaperIntent = Intent(context, com.sameerasw.essentials.ui.activities.WallpaperActivity::class.java).apply { + val wallpaperIntent = Intent( + context, + com.sameerasw.essentials.ui.activities.WallpaperActivity::class.java + ).apply { action = Intent.ACTION_VIEW } val wallpaperShortcut = ShortcutInfo.Builder(context, "shortcut_wallpaper") .setShortLabel(context.getString(com.sameerasw.essentials.R.string.feat_daily_wallpaper_title)) .setLongLabel(context.getString(com.sameerasw.essentials.R.string.feat_daily_wallpaper_title)) - .setIcon(Icon.createWithResource(context, com.sameerasw.essentials.R.drawable.rounded_wallpaper_24)) + .setIcon( + Icon.createWithResource( + context, + com.sameerasw.essentials.R.drawable.rounded_wallpaper_24 + ) + ) .setIntent(wallpaperIntent) .build() shortcuts.add(wallpaperShortcut) // Dynamic shortcuts val pinnedKeys = repository.getPinnedFeatures() - val featuresMap = com.sameerasw.essentials.domain.registry.FeatureRegistry.ALL_FEATURES.associateBy { it.id } + val featuresMap = + com.sameerasw.essentials.domain.registry.FeatureRegistry.ALL_FEATURES.associateBy { it.id } var count = 0 for (key in pinnedKeys) { - if (count >= 2) break + if (count >= 2) break val feature = featuresMap[key] ?: continue if (feature.id == "DailyWallpaper" || feature.id == "LiveWallpaper") continue - val intent = Intent(context, com.sameerasw.essentials.FeatureSettingsActivity::class.java).apply { + val intent = Intent( + context, + com.sameerasw.essentials.FeatureSettingsActivity::class.java + ).apply { action = Intent.ACTION_VIEW putExtra("feature", feature.id) } diff --git a/app/src/main/java/com/sameerasw/essentials/viewmodels/MainViewModel.kt b/app/src/main/java/com/sameerasw/essentials/viewmodels/MainViewModel.kt index d99908eb5..30de864cb 100644 --- a/app/src/main/java/com/sameerasw/essentials/viewmodels/MainViewModel.kt +++ b/app/src/main/java/com/sameerasw/essentials/viewmodels/MainViewModel.kt @@ -11,6 +11,7 @@ import android.content.Intent import android.content.IntentFilter import android.content.pm.PackageManager import android.database.ContentObserver +import android.graphics.Bitmap import android.net.Uri import android.os.Handler import android.os.Looper @@ -48,7 +49,6 @@ import com.sameerasw.essentials.domain.model.SearchableItem import com.sameerasw.essentials.domain.model.UpdateInfo import com.sameerasw.essentials.domain.registry.SearchRegistry import com.sameerasw.essentials.services.CaffeinateWakeLockService -import com.sameerasw.essentials.services.widgets.FavoritesWidgetReceiver import com.sameerasw.essentials.services.NotificationLightingService import com.sameerasw.essentials.services.receivers.FlashlightActionReceiver import com.sameerasw.essentials.services.receivers.SecurityDeviceAdminReceiver @@ -58,18 +58,17 @@ import com.sameerasw.essentials.utils.DeviceUtils import com.sameerasw.essentials.utils.PermissionUtils import com.sameerasw.essentials.utils.RefreshRateUtils import com.sameerasw.essentials.utils.RootUtils -import java.io.File -import java.io.FileOutputStream -import android.graphics.Bitmap import com.sameerasw.essentials.utils.ShellUtils import com.sameerasw.essentials.utils.ShizukuUtils import com.sameerasw.essentials.utils.UpdateNotificationHelper import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.delay -import kotlinx.coroutines.launch import kotlinx.coroutines.isActive +import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import java.io.File +import java.io.FileOutputStream class MainViewModel : ViewModel() { val isAccessibilityEnabled = mutableStateOf(false) @@ -155,7 +154,8 @@ class MainViewModel : ViewModel() { val pixelSearchbarType = mutableStateOf("empty") val pixelSearchbarDateFormat = mutableStateOf("EEEE, MMMM d") val pixelSearchbarBackgroundPill = mutableStateOf(false) - val pixelSearchbarWidgetId = mutableIntStateOf(android.appwidget.AppWidgetManager.INVALID_APPWIDGET_ID) + val pixelSearchbarWidgetId = + mutableIntStateOf(android.appwidget.AppWidgetManager.INVALID_APPWIDGET_ID) val pixelSearchbarWidgetProvider = mutableStateOf(null) val pixelSearchbarScrapedLine1 = mutableStateOf("") val pixelSearchbarScrapedLine2 = mutableStateOf("") @@ -326,7 +326,8 @@ class MainViewModel : ViewModel() { val gitHubToken = mutableStateOf(null) val gitHubWorkflowToken = mutableStateOf(null) val wallpaperTriggerState = mutableStateOf(null) - val workflowAuthState = mutableStateOf(com.sameerasw.essentials.viewmodels.AuthState.Idle) + val workflowAuthState = + mutableStateOf(com.sameerasw.essentials.viewmodels.AuthState.Idle) private var workflowPollingJob: kotlinx.coroutines.Job? = null val gitHubUser = mutableStateOf(null) @@ -468,7 +469,8 @@ class MainViewModel : ViewModel() { settingsRepository.getBoolean(key) SettingsRepository.KEY_ENABLE_UNSUPPORTED_FEATURES -> { - isEnableUnsupportedFeatures.value = settingsRepository.isEnableUnsupportedFeatures() + isEnableUnsupportedFeatures.value = + settingsRepository.isEnableUnsupportedFeatures() if (searchQuery.value.isNotBlank()) { appContext?.let { onSearchQueryChanged(searchQuery.value, it) } } @@ -930,7 +932,8 @@ class MainViewModel : ViewModel() { loadShutUpConfigs() recentSearches.value = settingsRepository.getRecentSearches() loadCachedWallpaper() - isDailyWallpaperAutoUpdateEnabled.value = settingsRepository.getBoolean(SettingsRepository.KEY_DAILY_WALLPAPER_AUTO_UPDATE, false) + isDailyWallpaperAutoUpdateEnabled.value = + settingsRepository.getBoolean(SettingsRepository.KEY_DAILY_WALLPAPER_AUTO_UPDATE, false) if (isDailyWallpaperAutoUpdateEnabled.value) { schedulePeriodicWallpaperCheck(context) } @@ -1195,7 +1198,8 @@ class MainViewModel : ViewModel() { MapsState.isEnabled = isMapsPowerSavingEnabled.value hapticFeedbackType.value = settingsRepository.getHapticFeedbackType() defaultTab.value = settingsRepository.getDIYTab() - isSwipeTabsEnabled.value = settingsRepository.getBoolean(SettingsRepository.KEY_SWIPE_TABS, true) + isSwipeTabsEnabled.value = + settingsRepository.getBoolean(SettingsRepository.KEY_SWIPE_TABS, true) sentryReportMode.value = settingsRepository.getString(SettingsRepository.KEY_SENTRY_REPORT_MODE, "auto") ?: "auto" @@ -1609,13 +1613,15 @@ class MainViewModel : ViewModel() { val authRepo = com.sameerasw.essentials.data.repository.GitHubAuthRepository() val response = authRepo.requestDeviceCodeWithWorkflow() if (response != null) { - workflowAuthState.value = com.sameerasw.essentials.viewmodels.AuthState.CodeReceived( - userCode = response.userCode, - verificationUri = response.verificationUri - ) + workflowAuthState.value = + com.sameerasw.essentials.viewmodels.AuthState.CodeReceived( + userCode = response.userCode, + verificationUri = response.verificationUri + ) startWorkflowPolling(response.deviceCode, response.interval, context) } else { - workflowAuthState.value = com.sameerasw.essentials.viewmodels.AuthState.Error("Failed to request device code") + workflowAuthState.value = + com.sameerasw.essentials.viewmodels.AuthState.Error("Failed to request device code") } } } @@ -1632,24 +1638,33 @@ class MainViewModel : ViewModel() { if (tokenResponse != null) { when { tokenResponse.accessToken != null -> { - workflowAuthState.value = com.sameerasw.essentials.viewmodels.AuthState.Authenticated(tokenResponse.accessToken) + workflowAuthState.value = + com.sameerasw.essentials.viewmodels.AuthState.Authenticated( + tokenResponse.accessToken + ) settingsRepository.saveGitHubWorkflowToken(tokenResponse.accessToken) workflowPollingJob?.cancel() return@launch } + tokenResponse.error == "authorization_pending" -> { // continue } + tokenResponse.error == "slow_down" -> { currentInterval += 5000L } + tokenResponse.error == "expired_token" -> { - workflowAuthState.value = com.sameerasw.essentials.viewmodels.AuthState.Error("Code expired. Please try again.") + workflowAuthState.value = + com.sameerasw.essentials.viewmodels.AuthState.Error("Code expired. Please try again.") workflowPollingJob?.cancel() return@launch } + else -> { - workflowAuthState.value = com.sameerasw.essentials.viewmodels.AuthState.Error("Authentication failed: ${tokenResponse.error}") + workflowAuthState.value = + com.sameerasw.essentials.viewmodels.AuthState.Error("Authentication failed: ${tokenResponse.error}") workflowPollingJob?.cancel() return@launch } @@ -2092,7 +2107,12 @@ class MainViewModel : ViewModel() { pixelSearchbarWidgetProvider.value = null settingsRepository.setPixelSearchbarWidgetId(android.appwidget.AppWidgetManager.INVALID_APPWIDGET_ID) settingsRepository.setPixelSearchbarWidgetProvider(null) - context.stopService(android.content.Intent(context, com.sameerasw.essentials.services.widgets.WidgetScraperService::class.java)) + context.stopService( + android.content.Intent( + context, + com.sameerasw.essentials.services.widgets.WidgetScraperService::class.java + ) + ) updatePixelSearchbarWidget(context) } @@ -2122,7 +2142,12 @@ class MainViewModel : ViewModel() { updatePixelSearchbarWidget(context) } - fun updatePixelSearchbarMusic(title: String, artist: String, packageName: String, context: Context) { + fun updatePixelSearchbarMusic( + title: String, + artist: String, + packageName: String, + context: Context + ) { pixelSearchbarMusicTitle.value = title pixelSearchbarMusicArtist.value = artist pixelSearchbarMusicPackage.value = packageName @@ -2135,11 +2160,16 @@ class MainViewModel : ViewModel() { fun updateMediaFromActiveSession(context: Context) { try { - val manager = context.getSystemService(Context.MEDIA_SESSION_SERVICE) as? android.media.session.MediaSessionManager ?: return - val componentName = android.content.ComponentName(context, com.sameerasw.essentials.services.NotificationListener::class.java) + val manager = + context.getSystemService(Context.MEDIA_SESSION_SERVICE) as? android.media.session.MediaSessionManager + ?: return + val componentName = android.content.ComponentName( + context, + com.sameerasw.essentials.services.NotificationListener::class.java + ) val sessions = manager.getActiveSessions(componentName) val activeSession = sessions?.sortedWith( - compareByDescending { + compareByDescending { val state = it.playbackState?.state state == android.media.session.PlaybackState.STATE_PLAYING || state == android.media.session.PlaybackState.STATE_BUFFERING }.thenByDescending { @@ -2150,13 +2180,16 @@ class MainViewModel : ViewModel() { if (activeSession != null) { val metadata = activeSession.metadata - val title = metadata?.getString(android.media.MediaMetadata.METADATA_KEY_TITLE) ?: "" - val artist = metadata?.getString(android.media.MediaMetadata.METADATA_KEY_ARTIST) ?: "" + val title = + metadata?.getString(android.media.MediaMetadata.METADATA_KEY_TITLE) ?: "" + val artist = + metadata?.getString(android.media.MediaMetadata.METADATA_KEY_ARTIST) ?: "" val packageName = activeSession.packageName - val artwork = metadata?.getBitmap(android.media.MediaMetadata.METADATA_KEY_ALBUM_ART) - ?: metadata?.getBitmap(android.media.MediaMetadata.METADATA_KEY_ART) - ?: metadata?.getBitmap(android.media.MediaMetadata.METADATA_KEY_DISPLAY_ICON) + val artwork = + metadata?.getBitmap(android.media.MediaMetadata.METADATA_KEY_ALBUM_ART) + ?: metadata?.getBitmap(android.media.MediaMetadata.METADATA_KEY_ART) + ?: metadata?.getBitmap(android.media.MediaMetadata.METADATA_KEY_DISPLAY_ICON) val filesDirFile = File(context.filesDir, "music_artwork.png") if (artwork != null) { @@ -2164,7 +2197,8 @@ class MainViewModel : ViewModel() { FileOutputStream(filesDirFile).use { out -> artwork.compress(Bitmap.CompressFormat.PNG, 100, out) } - } catch (_: Exception) {} + } catch (_: Exception) { + } } else { if (filesDirFile.exists()) filesDirFile.delete() } @@ -2177,7 +2211,8 @@ class MainViewModel : ViewModel() { settingsRepository.setPixelSearchbarMusicPackage(packageName) settingsRepository.incrementPixelSearchbarWidgetRevision() } - } catch (_: Exception) {} + } catch (_: Exception) { + } } fun updatePixelSearchbarWidget(context: Context) { @@ -2185,7 +2220,8 @@ class MainViewModel : ViewModel() { try { val manager = androidx.glance.appwidget.GlanceAppWidgetManager(context) val widget = com.sameerasw.essentials.services.widgets.PixelSearchbarWidget() - val glanceIds = manager.getGlanceIds(com.sameerasw.essentials.services.widgets.PixelSearchbarWidget::class.java) + val glanceIds = + manager.getGlanceIds(com.sameerasw.essentials.services.widgets.PixelSearchbarWidget::class.java) for (glanceId in glanceIds) { widget.update(context, glanceId) } @@ -4116,20 +4152,30 @@ class MainViewModel : ViewModel() { } // Daily Wallpaper Support - val dailyWallpaperInfo = mutableStateOf(null) + val dailyWallpaperInfo = + mutableStateOf(null) val isWallpaperLoading = mutableStateOf(false) private val wallpaperRepository = com.sameerasw.essentials.data.repository.WallpaperRepository() fun loadCachedWallpaper() { if (!::settingsRepository.isInitialized) return - val id = settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_ID) ?: return - val url = settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL) ?: "" - val urlMobile = settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL_MOBILE) ?: "" - val urlFull = settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL) ?: "" - val authorName = settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_AUTHOR_NAME) ?: "" - val authorLink = settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_AUTHOR_LINK) ?: "" - val photoLink = settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_PHOTO_LINK) ?: "" - val updatedAt = settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_UPDATED_AT) ?: "" + val id = + settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_ID) ?: return + val url = + settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL) ?: "" + val urlMobile = + settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL_MOBILE) + ?: "" + val urlFull = + settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL) ?: "" + val authorName = + settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_AUTHOR_NAME) ?: "" + val authorLink = + settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_AUTHOR_LINK) ?: "" + val photoLink = + settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_PHOTO_LINK) ?: "" + val updatedAt = + settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_UPDATED_AT) ?: "" dailyWallpaperInfo.value = com.sameerasw.essentials.domain.model.WallpaperInfo( id = id, @@ -4150,13 +4196,34 @@ class MainViewModel : ViewModel() { val info = wallpaperRepository.fetchTodayWallpaper() if (info != null) { dailyWallpaperInfo.value = info - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_ID, info.id) - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL, info.url) - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL_MOBILE, info.urlMobile) - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_AUTHOR_NAME, info.authorName) - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_AUTHOR_LINK, info.authorLink) - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_PHOTO_LINK, info.photoLink) - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_UPDATED_AT, info.updatedAt) + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_LAST_ID, + info.id + ) + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL, + info.url + ) + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL_MOBILE, + info.urlMobile + ) + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_AUTHOR_NAME, + info.authorName + ) + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_AUTHOR_LINK, + info.authorLink + ) + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_PHOTO_LINK, + info.photoLink + ) + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_UPDATED_AT, + info.updatedAt + ) } isWallpaperLoading.value = false } @@ -4188,9 +4255,10 @@ class MainViewModel : ViewModel() { val data = androidx.work.Data.Builder() .putBoolean("force", true) .build() - val workRequest = androidx.work.OneTimeWorkRequestBuilder() - .setInputData(data) - .build() + val workRequest = + androidx.work.OneTimeWorkRequestBuilder() + .setInputData(data) + .build() androidx.work.WorkManager.getInstance(context).enqueue(workRequest) } @@ -4208,6 +4276,7 @@ class MainViewModel : ViewModel() { } private fun cancelPeriodicWallpaperCheck(context: Context) { - androidx.work.WorkManager.getInstance(context).cancelUniqueWork("daily_wallpaper_check_work") + androidx.work.WorkManager.getInstance(context) + .cancelUniqueWork("daily_wallpaper_check_work") } } diff --git a/app/src/main/java/com/sameerasw/essentials/viewmodels/WatermarkViewModel.kt b/app/src/main/java/com/sameerasw/essentials/viewmodels/WatermarkViewModel.kt index 117e1ee87..bb344445e 100644 --- a/app/src/main/java/com/sameerasw/essentials/viewmodels/WatermarkViewModel.kt +++ b/app/src/main/java/com/sameerasw/essentials/viewmodels/WatermarkViewModel.kt @@ -24,7 +24,9 @@ import java.io.File sealed class WatermarkUiState { data object Idle : WatermarkUiState() data object Processing : WatermarkUiState() - data class Success(val file: File, val bitmap: android.graphics.Bitmap? = null) : WatermarkUiState() + data class Success(val file: File, val bitmap: android.graphics.Bitmap? = null) : + WatermarkUiState() + data class Error(val message: String) : WatermarkUiState() } diff --git a/app/src/main/res/anim/anim_slide_in_top.xml b/app/src/main/res/anim/anim_slide_in_top.xml index 05dec16f4..0dcc1d77c 100644 --- a/app/src/main/res/anim/anim_slide_in_top.xml +++ b/app/src/main/res/anim/anim_slide_in_top.xml @@ -2,7 +2,7 @@ + android:toYDelta="0" /> diff --git a/app/src/main/res/anim/anim_slide_out_top.xml b/app/src/main/res/anim/anim_slide_out_top.xml index 4fe9a7c79..78b4ffb0b 100644 --- a/app/src/main/res/anim/anim_slide_out_top.xml +++ b/app/src/main/res/anim/anim_slide_out_top.xml @@ -2,7 +2,7 @@ + android:toYDelta="-100%" /> diff --git a/app/src/main/res/anim/anim_stay.xml b/app/src/main/res/anim/anim_stay.xml index 0307f5cb6..8a9daa927 100644 --- a/app/src/main/res/anim/anim_stay.xml +++ b/app/src/main/res/anim/anim_stay.xml @@ -1,7 +1,7 @@ + android:toYDelta="0" /> diff --git a/app/src/main/res/drawable-v24/ic_launcher_background.xml b/app/src/main/res/drawable-v24/ic_launcher_background.xml index cc445bd2a..c2d5f195e 100644 --- a/app/src/main/res/drawable-v24/ic_launcher_background.xml +++ b/app/src/main/res/drawable-v24/ic_launcher_background.xml @@ -4,21 +4,24 @@ android:height="108dp" android:viewportWidth="108" android:viewportHeight="108"> - - - - - - - - - + + + + + + + + + diff --git a/app/src/main/res/drawable/app_logo.xml b/app/src/main/res/drawable/app_logo.xml index 0eef118e8..887b03888 100644 --- a/app/src/main/res/drawable/app_logo.xml +++ b/app/src/main/res/drawable/app_logo.xml @@ -3,51 +3,45 @@ android:height="192dp" android:viewportWidth="192" android:viewportHeight="192"> - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/apple.xml b/app/src/main/res/drawable/apple.xml index 1c20b8002..1e0746fee 100644 --- a/app/src/main/res/drawable/apple.xml +++ b/app/src/main/res/drawable/apple.xml @@ -3,7 +3,7 @@ android:height="800dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/app/src/main/res/drawable/brand_github.xml b/app/src/main/res/drawable/brand_github.xml index e26e25c0c..492db5d6c 100644 --- a/app/src/main/res/drawable/brand_github.xml +++ b/app/src/main/res/drawable/brand_github.xml @@ -28,9 +28,9 @@ SOFTWARE. android:viewportWidth="24" android:viewportHeight="24"> + android:strokeLineJoin="round" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/brand_telegram.xml b/app/src/main/res/drawable/brand_telegram.xml index 6c3318ef6..4cba053c9 100644 --- a/app/src/main/res/drawable/brand_telegram.xml +++ b/app/src/main/res/drawable/brand_telegram.xml @@ -28,9 +28,9 @@ SOFTWARE. android:viewportWidth="24" android:viewportHeight="24"> + android:strokeLineJoin="round" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/cmf.xml b/app/src/main/res/drawable/cmf.xml index 464772b2d..30a2a5d70 100644 --- a/app/src/main/res/drawable/cmf.xml +++ b/app/src/main/res/drawable/cmf.xml @@ -3,143 +3,142 @@ android:height="258.65dp" android:viewportWidth="426" android:viewportHeight="285"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/frame_inspect_24px.xml b/app/src/main/res/drawable/frame_inspect_24px.xml index eddca4fc2..b4e6daa83 100644 --- a/app/src/main/res/drawable/frame_inspect_24px.xml +++ b/app/src/main/res/drawable/frame_inspect_24px.xml @@ -1,10 +1,10 @@ - + android:viewportHeight="960"> + diff --git a/app/src/main/res/drawable/ic_clipboard.xml b/app/src/main/res/drawable/ic_clipboard.xml index 2fc64975e..ece8defc9 100644 --- a/app/src/main/res/drawable/ic_clipboard.xml +++ b/app/src/main/res/drawable/ic_clipboard.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/app/src/main/res/drawable/ic_emoji.xml b/app/src/main/res/drawable/ic_emoji.xml index 7c66b4452..3aa1d101a 100644 --- a/app/src/main/res/drawable/ic_emoji.xml +++ b/app/src/main/res/drawable/ic_emoji.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml index 0ad213730..e2dac88a1 100644 --- a/app/src/main/res/drawable/ic_launcher_foreground.xml +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -3,56 +3,51 @@ android:height="108dp" android:viewportWidth="192" android:viewportHeight="192"> - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - diff --git a/app/src/main/res/drawable/ic_launcher_foreground_light.xml b/app/src/main/res/drawable/ic_launcher_foreground_light.xml index c6367716e..83c4489d0 100644 --- a/app/src/main/res/drawable/ic_launcher_foreground_light.xml +++ b/app/src/main/res/drawable/ic_launcher_foreground_light.xml @@ -3,48 +3,43 @@ android:height="108dp" android:viewportWidth="108" android:viewportHeight="108"> - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + android:pathData="M55.83,27.05C58.26,27.05 60.34,28.72 60.79,31.03L61,32.05C61.8,36.09 66.1,38.5 70.1,37.15L71.12,36.81C73.41,36.04 75.95,36.95 77.16,38.99L78.99,42.06C80.2,44.1 79.75,46.68 77.92,48.22L77.1,48.9C73.9,51.59 73.9,56.41 77.1,59.1L77.92,59.78C79.75,61.32 80.2,63.9 78.99,65.94L77.16,69.01C75.95,71.05 73.41,71.96 71.12,71.19L70.1,70.85C66.1,69.5 61.8,71.91 61,75.94L60.79,76.97C60.34,79.28 58.26,80.95 55.83,80.95H52.17C49.74,80.95 47.66,79.28 47.2,76.97L47,75.94C46.2,71.91 41.9,69.5 37.9,70.85L36.88,71.19C34.59,71.96 32.05,71.05 30.84,69.01L29.01,65.94C27.8,63.9 28.25,61.32 30.08,59.78L30.9,59.1C34.1,56.41 34.1,51.59 30.9,48.9L30.08,48.22C28.25,46.68 27.8,44.1 29.01,42.06L30.84,38.99C32.05,36.95 34.59,36.04 36.88,36.81L37.9,37.15C41.9,38.5 46.2,36.09 47,32.06L47.2,31.03C47.66,28.72 49.74,27.05 52.17,27.05H55.83ZM57.7,39.19C55.41,38.62 53,38.58 50.67,39.1C47.25,39.87 44.19,41.79 42.02,44.55C39.84,47.3 38.69,50.72 38.74,54.23C38.8,57.74 40.06,61.12 42.32,63.81C44.57,66.5 47.69,68.33 51.13,68.98C54.58,69.64 58.15,69.09 61.24,67.43C64.33,65.76 66.75,63.08 68.09,59.84C69.01,57.64 69.39,55.26 69.22,52.9C69.09,51.07 67.19,50.06 65.43,50.59C63.67,51.11 62.74,53 62.56,54.83C62.47,55.67 62.27,56.5 61.94,57.29C61.18,59.12 59.82,60.63 58.08,61.56C56.34,62.5 54.33,62.81 52.39,62.44C51.7,62.31 51.04,62.1 50.42,61.81C49.61,61.44 49.78,60.36 50.62,60.08L52.45,59.46C52.55,59.44 52.64,59.42 52.74,59.38L54.03,58.96L55.3,58.52C56.07,58.26 56.64,57.61 56.81,56.81L57.09,55.49L57.34,54.17C57.5,53.37 57.22,52.55 56.62,52.01L55.61,51.11L54.59,50.22C53.98,49.69 53.13,49.52 52.36,49.77L51.23,50.14C51.03,50.18 50.83,50.23 50.64,50.3L47.56,51.34C46.73,51.62 45.94,50.87 46.34,50.09C46.59,49.59 46.9,49.12 47.25,48.67C48.47,47.12 50.19,46.04 52.12,45.61C52.96,45.42 53.81,45.36 54.65,45.42C56.49,45.56 58.51,44.97 59.33,43.32C60.15,41.68 59.49,39.64 57.7,39.19Z" /> diff --git a/app/src/main/res/drawable/ic_launcher_monochrome.xml b/app/src/main/res/drawable/ic_launcher_monochrome.xml index 1cd199948..0ac3de753 100644 --- a/app/src/main/res/drawable/ic_launcher_monochrome.xml +++ b/app/src/main/res/drawable/ic_launcher_monochrome.xml @@ -3,56 +3,51 @@ android:height="108dp" android:viewportWidth="192" android:viewportHeight="192"> - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - diff --git a/app/src/main/res/drawable/ic_light_sensor.xml b/app/src/main/res/drawable/ic_light_sensor.xml index 4b544d16f..8980a3d65 100644 --- a/app/src/main/res/drawable/ic_light_sensor.xml +++ b/app/src/main/res/drawable/ic_light_sensor.xml @@ -1,13 +1,12 @@ - - + android:viewportHeight="15.998"> diff --git a/app/src/main/res/drawable/ic_pocket_mode.xml b/app/src/main/res/drawable/ic_pocket_mode.xml index 935458725..faa28cd66 100644 --- a/app/src/main/res/drawable/ic_pocket_mode.xml +++ b/app/src/main/res/drawable/ic_pocket_mode.xml @@ -1,10 +1,10 @@ + android:width="24.0dp" + android:height="24.0dp" + android:tint="?android:attr/colorControlNormal" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> diff --git a/app/src/main/res/drawable/ic_splash_launcher_foreground.xml b/app/src/main/res/drawable/ic_splash_launcher_foreground.xml index 20c88bb20..64a36a249 100644 --- a/app/src/main/res/drawable/ic_splash_launcher_foreground.xml +++ b/app/src/main/res/drawable/ic_splash_launcher_foreground.xml @@ -1,50 +1,45 @@ - - + android:viewportHeight="108"> + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + android:pathData="M55.83,27.05C58.26,27.05 60.34,28.72 60.79,31.03L61,32.05C61.8,36.09 66.1,38.5 70.1,37.15L71.12,36.81C73.41,36.04 75.95,36.95 77.16,38.99L78.99,42.06C80.2,44.1 79.75,46.68 77.92,48.22L77.1,48.9C73.9,51.59 73.9,56.41 77.1,59.1L77.92,59.78C79.75,61.32 80.2,63.9 78.99,65.94L77.16,69.01C75.95,71.05 73.41,71.96 71.12,71.19L70.1,70.85C66.1,69.5 61.8,71.91 61,75.94L60.79,76.97C60.34,79.28 58.26,80.95 55.83,80.95H52.17C49.74,80.95 47.66,79.28 47.2,76.97L47,75.94C46.2,71.91 41.9,69.5 37.9,70.85L36.88,71.19C34.59,71.96 32.05,71.05 30.84,69.01L29.01,65.94C27.8,63.9 28.25,61.32 30.08,59.78L30.9,59.1C34.1,56.41 34.1,51.59 30.9,48.9L30.08,48.22C28.25,46.68 27.8,44.1 29.01,42.06L30.84,38.99C32.05,36.95 34.59,36.04 36.88,36.81L37.9,37.15C41.9,38.5 46.2,36.09 47,32.06L47.2,31.03C47.66,28.72 49.74,27.05 52.17,27.05H55.83ZM57.7,39.19C55.41,38.62 53,38.58 50.67,39.1C47.25,39.87 44.19,41.79 42.02,44.55C39.84,47.3 38.69,50.72 38.74,54.23C38.8,57.74 40.06,61.12 42.32,63.81C44.57,66.5 47.69,68.33 51.13,68.98C54.58,69.64 58.15,69.09 61.24,67.43C64.33,65.76 66.75,63.08 68.09,59.84C69.01,57.64 69.39,55.26 69.22,52.9C69.09,51.07 67.19,50.06 65.43,50.59C63.67,51.11 62.74,53 62.56,54.83C62.47,55.67 62.27,56.5 61.94,57.29C61.18,59.12 59.82,60.63 58.08,61.56C56.34,62.5 54.33,62.81 52.39,62.44C51.7,62.31 51.04,62.1 50.42,61.81C49.61,61.44 49.78,60.36 50.62,60.08L52.45,59.46C52.55,59.44 52.64,59.42 52.74,59.38L54.03,58.96L55.3,58.52C56.07,58.26 56.64,57.61 56.81,56.81L57.09,55.49L57.34,54.17C57.5,53.37 57.22,52.55 56.62,52.01L55.61,51.11L54.59,50.22C53.98,49.69 53.13,49.52 52.36,49.77L51.23,50.14C51.03,50.18 50.83,50.23 50.64,50.3L47.56,51.34C46.73,51.62 45.94,50.87 46.34,50.09C46.59,49.59 46.9,49.12 47.25,48.67C48.47,47.12 50.19,46.04 52.12,45.61C52.96,45.42 53.81,45.36 54.65,45.42C56.49,45.56 58.51,44.97 59.33,43.32C60.15,41.68 59.49,39.64 57.7,39.19Z" /> diff --git a/app/src/main/res/drawable/ic_splash_launcher_foreground_light.xml b/app/src/main/res/drawable/ic_splash_launcher_foreground_light.xml index e5fede4ed..7eb7ac358 100644 --- a/app/src/main/res/drawable/ic_splash_launcher_foreground_light.xml +++ b/app/src/main/res/drawable/ic_splash_launcher_foreground_light.xml @@ -1,50 +1,45 @@ - - + android:viewportHeight="108"> + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + android:pathData="M55.83,27.05C58.26,27.05 60.34,28.72 60.79,31.03L61,32.05C61.8,36.09 66.1,38.5 70.1,37.15L71.12,36.81C73.41,36.04 75.95,36.95 77.16,38.99L78.99,42.06C80.2,44.1 79.75,46.68 77.92,48.22L77.1,48.9C73.9,51.59 73.9,56.41 77.1,59.1L77.92,59.78C79.75,61.32 80.2,63.9 78.99,65.94L77.16,69.01C75.95,71.05 73.41,71.96 71.12,71.19L70.1,70.85C66.1,69.5 61.8,71.91 61,75.94L60.79,76.97C60.34,79.28 58.26,80.95 55.83,80.95H52.17C49.74,80.95 47.66,79.28 47.2,76.97L47,75.94C46.2,71.91 41.9,69.5 37.9,70.85L36.88,71.19C34.59,71.96 32.05,71.05 30.84,69.01L29.01,65.94C27.8,63.9 28.25,61.32 30.08,59.78L30.9,59.1C34.1,56.41 34.1,51.59 30.9,48.9L30.08,48.22C28.25,46.68 27.8,44.1 29.01,42.06L30.84,38.99C32.05,36.95 34.59,36.04 36.88,36.81L37.9,37.15C41.9,38.5 46.2,36.09 47,32.06L47.2,31.03C47.66,28.72 49.74,27.05 52.17,27.05H55.83ZM57.7,39.19C55.41,38.62 53,38.58 50.67,39.1C47.25,39.87 44.19,41.79 42.02,44.55C39.84,47.3 38.69,50.72 38.74,54.23C38.8,57.74 40.06,61.12 42.32,63.81C44.57,66.5 47.69,68.33 51.13,68.98C54.58,69.64 58.15,69.09 61.24,67.43C64.33,65.76 66.75,63.08 68.09,59.84C69.01,57.64 69.39,55.26 69.22,52.9C69.09,51.07 67.19,50.06 65.43,50.59C63.67,51.11 62.74,53 62.56,54.83C62.47,55.67 62.27,56.5 61.94,57.29C61.18,59.12 59.82,60.63 58.08,61.56C56.34,62.5 54.33,62.81 52.39,62.44C51.7,62.31 51.04,62.1 50.42,61.81C49.61,61.44 49.78,60.36 50.62,60.08L52.45,59.46C52.55,59.44 52.64,59.42 52.74,59.38L54.03,58.96L55.3,58.52C56.07,58.26 56.64,57.61 56.81,56.81L57.09,55.49L57.34,54.17C57.5,53.37 57.22,52.55 56.62,52.01L55.61,51.11L54.59,50.22C53.98,49.69 53.13,49.52 52.36,49.77L51.23,50.14C51.03,50.18 50.83,50.23 50.64,50.3L47.56,51.34C46.73,51.62 45.94,50.87 46.34,50.09C46.59,49.59 46.9,49.12 47.25,48.67C48.47,47.12 50.19,46.04 52.12,45.61C52.96,45.42 53.81,45.36 54.65,45.42C56.49,45.56 58.51,44.97 59.33,43.32C60.15,41.68 59.49,39.64 57.7,39.19Z" /> diff --git a/app/src/main/res/drawable/ic_undo.xml b/app/src/main/res/drawable/ic_undo.xml index c7e9eddce..52701858e 100644 --- a/app/src/main/res/drawable/ic_undo.xml +++ b/app/src/main/res/drawable/ic_undo.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/app/src/main/res/drawable/key_shift.xml b/app/src/main/res/drawable/key_shift.xml index 0294fd9e0..8ec55b485 100644 --- a/app/src/main/res/drawable/key_shift.xml +++ b/app/src/main/res/drawable/key_shift.xml @@ -3,7 +3,7 @@ android:height="800dp" android:viewportWidth="56" android:viewportHeight="56"> - + diff --git a/app/src/main/res/drawable/moto.xml b/app/src/main/res/drawable/moto.xml index e56836411..8e06d4877 100644 --- a/app/src/main/res/drawable/moto.xml +++ b/app/src/main/res/drawable/moto.xml @@ -3,12 +3,12 @@ android:height="307.23dp" android:viewportWidth="264.58" android:viewportHeight="81.29"> - - + + diff --git a/app/src/main/res/drawable/nothing.xml b/app/src/main/res/drawable/nothing.xml index b4153c1be..e80969cba 100644 --- a/app/src/main/res/drawable/nothing.xml +++ b/app/src/main/res/drawable/nothing.xml @@ -3,9 +3,9 @@ android:height="67.2dp" android:viewportWidth="99.02" android:viewportHeight="17.78"> - + diff --git a/app/src/main/res/drawable/oppo.xml b/app/src/main/res/drawable/oppo.xml index 1875ee4f6..c97ea7c5f 100644 --- a/app/src/main/res/drawable/oppo.xml +++ b/app/src/main/res/drawable/oppo.xml @@ -3,8 +3,8 @@ android:height="237.7dp" android:viewportWidth="1000" android:viewportHeight="237.7"> - + diff --git a/app/src/main/res/drawable/outline_backlight_high_24.xml b/app/src/main/res/drawable/outline_backlight_high_24.xml index a38e97da3..16c3dd49d 100644 --- a/app/src/main/res/drawable/outline_backlight_high_24.xml +++ b/app/src/main/res/drawable/outline_backlight_high_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/outline_battery_android_frame_bolt_24.xml b/app/src/main/res/drawable/outline_battery_android_frame_bolt_24.xml index 56fd38250..8c35cb459 100644 --- a/app/src/main/res/drawable/outline_battery_android_frame_bolt_24.xml +++ b/app/src/main/res/drawable/outline_battery_android_frame_bolt_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/outline_bubble_chart_24.xml b/app/src/main/res/drawable/outline_bubble_chart_24.xml index f733c97ea..d2007fc1a 100644 --- a/app/src/main/res/drawable/outline_bubble_chart_24.xml +++ b/app/src/main/res/drawable/outline_bubble_chart_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/outline_circle_notifications_24.xml b/app/src/main/res/drawable/outline_circle_notifications_24.xml index 8f61586a3..232d2105b 100644 --- a/app/src/main/res/drawable/outline_circle_notifications_24.xml +++ b/app/src/main/res/drawable/outline_circle_notifications_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/outline_highlight_mouse_cursor_24.xml b/app/src/main/res/drawable/outline_highlight_mouse_cursor_24.xml index 0562f1969..745b77dc5 100644 --- a/app/src/main/res/drawable/outline_highlight_mouse_cursor_24.xml +++ b/app/src/main/res/drawable/outline_highlight_mouse_cursor_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/outline_interests_24.xml b/app/src/main/res/drawable/outline_interests_24.xml index 340362735..33e06529f 100644 --- a/app/src/main/res/drawable/outline_interests_24.xml +++ b/app/src/main/res/drawable/outline_interests_24.xml @@ -13,8 +13,15 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/outline_mobile_chat_24.xml b/app/src/main/res/drawable/outline_mobile_chat_24.xml index ba33a32e7..a17916690 100644 --- a/app/src/main/res/drawable/outline_mobile_chat_24.xml +++ b/app/src/main/res/drawable/outline_mobile_chat_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/round_android_24.xml b/app/src/main/res/drawable/round_android_24.xml index 4db0bf42c..76645eb59 100644 --- a/app/src/main/res/drawable/round_android_24.xml +++ b/app/src/main/res/drawable/round_android_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/round_arrow_upward_24.xml b/app/src/main/res/drawable/round_arrow_upward_24.xml index 73f4a370e..f0eb746f8 100644 --- a/app/src/main/res/drawable/round_arrow_upward_24.xml +++ b/app/src/main/res/drawable/round_arrow_upward_24.xml @@ -13,8 +13,15 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/round_favorite_24.xml b/app/src/main/res/drawable/round_favorite_24.xml index 36f7780a9..7e4644b91 100644 --- a/app/src/main/res/drawable/round_favorite_24.xml +++ b/app/src/main/res/drawable/round_favorite_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/round_flashlight_on_24.xml b/app/src/main/res/drawable/round_flashlight_on_24.xml index e1702730d..8ff2165ad 100644 --- a/app/src/main/res/drawable/round_flashlight_on_24.xml +++ b/app/src/main/res/drawable/round_flashlight_on_24.xml @@ -1,7 +1,16 @@ - - - - - - + + + + + + diff --git a/app/src/main/res/drawable/round_front_hand_24.xml b/app/src/main/res/drawable/round_front_hand_24.xml index 7fc450a7a..bdce37876 100644 --- a/app/src/main/res/drawable/round_front_hand_24.xml +++ b/app/src/main/res/drawable/round_front_hand_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/round_navigation_24.xml b/app/src/main/res/drawable/round_navigation_24.xml index 52778d649..4be8e680e 100644 --- a/app/src/main/res/drawable/round_navigation_24.xml +++ b/app/src/main/res/drawable/round_navigation_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/round_play_arrow_24.xml b/app/src/main/res/drawable/round_play_arrow_24.xml index 42c14a76c..a7b77cce6 100644 --- a/app/src/main/res/drawable/round_play_arrow_24.xml +++ b/app/src/main/res/drawable/round_play_arrow_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/round_star_24.xml b/app/src/main/res/drawable/round_star_24.xml index 1e0f11749..ce2a9e6f3 100644 --- a/app/src/main/res/drawable/round_star_24.xml +++ b/app/src/main/res/drawable/round_star_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_accessibility_new_24.xml b/app/src/main/res/drawable/rounded_accessibility_new_24.xml index 79845dc90..2885906a2 100644 --- a/app/src/main/res/drawable/rounded_accessibility_new_24.xml +++ b/app/src/main/res/drawable/rounded_accessibility_new_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_account_balance_24.xml b/app/src/main/res/drawable/rounded_account_balance_24.xml index 0dc270577..70b680f7e 100644 --- a/app/src/main/res/drawable/rounded_account_balance_24.xml +++ b/app/src/main/res/drawable/rounded_account_balance_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_action_key_24.xml b/app/src/main/res/drawable/rounded_action_key_24.xml index e1c19955b..e16f77c2a 100644 --- a/app/src/main/res/drawable/rounded_action_key_24.xml +++ b/app/src/main/res/drawable/rounded_action_key_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_adb_24.xml b/app/src/main/res/drawable/rounded_adb_24.xml index 5f84c3ac8..a5ee6ec5c 100644 --- a/app/src/main/res/drawable/rounded_adb_24.xml +++ b/app/src/main/res/drawable/rounded_adb_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_add_24.xml b/app/src/main/res/drawable/rounded_add_24.xml index 6ec9fed9b..5b3f0f8a9 100644 --- a/app/src/main/res/drawable/rounded_add_24.xml +++ b/app/src/main/res/drawable/rounded_add_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_add_location_alt_24.xml b/app/src/main/res/drawable/rounded_add_location_alt_24.xml index a759d6ce6..54c1baee6 100644 --- a/app/src/main/res/drawable/rounded_add_location_alt_24.xml +++ b/app/src/main/res/drawable/rounded_add_location_alt_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_add_photo_alternate_24.xml b/app/src/main/res/drawable/rounded_add_photo_alternate_24.xml index 0b44125a5..40a5b661c 100644 --- a/app/src/main/res/drawable/rounded_add_photo_alternate_24.xml +++ b/app/src/main/res/drawable/rounded_add_photo_alternate_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_admin_panel_settings_24.xml b/app/src/main/res/drawable/rounded_admin_panel_settings_24.xml index 9c2b0bcfc..ebcabf7f3 100644 --- a/app/src/main/res/drawable/rounded_admin_panel_settings_24.xml +++ b/app/src/main/res/drawable/rounded_admin_panel_settings_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_alarm_24.xml b/app/src/main/res/drawable/rounded_alarm_24.xml index dffeb1d39..3ba7ced29 100644 --- a/app/src/main/res/drawable/rounded_alarm_24.xml +++ b/app/src/main/res/drawable/rounded_alarm_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_android_24.xml b/app/src/main/res/drawable/rounded_android_24.xml index ea55a9981..971a5d21a 100644 --- a/app/src/main/res/drawable/rounded_android_24.xml +++ b/app/src/main/res/drawable/rounded_android_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_android_cell_dual_4_bar_24.xml b/app/src/main/res/drawable/rounded_android_cell_dual_4_bar_24.xml index 9f70e5eb4..1fc6b80bb 100644 --- a/app/src/main/res/drawable/rounded_android_cell_dual_4_bar_24.xml +++ b/app/src/main/res/drawable/rounded_android_cell_dual_4_bar_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_android_cell_dual_5_bar_alert_24.xml b/app/src/main/res/drawable/rounded_android_cell_dual_5_bar_alert_24.xml index a0c176b0e..3d693bd85 100644 --- a/app/src/main/res/drawable/rounded_android_cell_dual_5_bar_alert_24.xml +++ b/app/src/main/res/drawable/rounded_android_cell_dual_5_bar_alert_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_android_wifi_3_bar_24.xml b/app/src/main/res/drawable/rounded_android_wifi_3_bar_24.xml index 322082ae0..106327caf 100644 --- a/app/src/main/res/drawable/rounded_android_wifi_3_bar_24.xml +++ b/app/src/main/res/drawable/rounded_android_wifi_3_bar_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_android_wifi_4_bar_plus_24.xml b/app/src/main/res/drawable/rounded_android_wifi_4_bar_plus_24.xml index bdb2df84e..cbe12f7cc 100644 --- a/app/src/main/res/drawable/rounded_android_wifi_4_bar_plus_24.xml +++ b/app/src/main/res/drawable/rounded_android_wifi_4_bar_plus_24.xml @@ -13,8 +13,15 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_apartment_24.xml b/app/src/main/res/drawable/rounded_apartment_24.xml index a9bb974bf..ae2e2de97 100644 --- a/app/src/main/res/drawable/rounded_apartment_24.xml +++ b/app/src/main/res/drawable/rounded_apartment_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_app_badging_24.xml b/app/src/main/res/drawable/rounded_app_badging_24.xml index 76ecb6888..33ed0e109 100644 --- a/app/src/main/res/drawable/rounded_app_badging_24.xml +++ b/app/src/main/res/drawable/rounded_app_badging_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_app_registration_24.xml b/app/src/main/res/drawable/rounded_app_registration_24.xml index 941d420fe..2f92130ba 100644 --- a/app/src/main/res/drawable/rounded_app_registration_24.xml +++ b/app/src/main/res/drawable/rounded_app_registration_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_apps_24.xml b/app/src/main/res/drawable/rounded_apps_24.xml index 889124d9e..be643a79c 100644 --- a/app/src/main/res/drawable/rounded_apps_24.xml +++ b/app/src/main/res/drawable/rounded_apps_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_arrow_back_24.xml b/app/src/main/res/drawable/rounded_arrow_back_24.xml index f6012a30b..ce6c5a8c2 100644 --- a/app/src/main/res/drawable/rounded_arrow_back_24.xml +++ b/app/src/main/res/drawable/rounded_arrow_back_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_arrow_cool_down_24.xml b/app/src/main/res/drawable/rounded_arrow_cool_down_24.xml index 7e37f1a68..2a5dd80c9 100644 --- a/app/src/main/res/drawable/rounded_arrow_cool_down_24.xml +++ b/app/src/main/res/drawable/rounded_arrow_cool_down_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_arrow_forward_24.xml b/app/src/main/res/drawable/rounded_arrow_forward_24.xml index c72c75d8c..2217c4723 100644 --- a/app/src/main/res/drawable/rounded_arrow_forward_24.xml +++ b/app/src/main/res/drawable/rounded_arrow_forward_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_arrow_warm_up_24.xml b/app/src/main/res/drawable/rounded_arrow_warm_up_24.xml index d94b36920..a7d929cd7 100644 --- a/app/src/main/res/drawable/rounded_arrow_warm_up_24.xml +++ b/app/src/main/res/drawable/rounded_arrow_warm_up_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_arrows_outward_24.xml b/app/src/main/res/drawable/rounded_arrows_outward_24.xml index b8aeb3703..1d4e04f3d 100644 --- a/app/src/main/res/drawable/rounded_arrows_outward_24.xml +++ b/app/src/main/res/drawable/rounded_arrows_outward_24.xml @@ -13,8 +13,15 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_av_timer_24.xml b/app/src/main/res/drawable/rounded_av_timer_24.xml index c00ce1df7..abe2df385 100644 --- a/app/src/main/res/drawable/rounded_av_timer_24.xml +++ b/app/src/main/res/drawable/rounded_av_timer_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_award_star_24.xml b/app/src/main/res/drawable/rounded_award_star_24.xml index 60f83b3a4..6a9735a16 100644 --- a/app/src/main/res/drawable/rounded_award_star_24.xml +++ b/app/src/main/res/drawable/rounded_award_star_24.xml @@ -13,8 +13,15 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_backspace_24.xml b/app/src/main/res/drawable/rounded_backspace_24.xml index 43c57d5a6..69f092042 100644 --- a/app/src/main/res/drawable/rounded_backspace_24.xml +++ b/app/src/main/res/drawable/rounded_backspace_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_battery_android_0_24.xml b/app/src/main/res/drawable/rounded_battery_android_0_24.xml index 570cf5068..a97c4599e 100644 --- a/app/src/main/res/drawable/rounded_battery_android_0_24.xml +++ b/app/src/main/res/drawable/rounded_battery_android_0_24.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="960" android:viewportHeight="960"> - + diff --git a/app/src/main/res/drawable/rounded_battery_android_frame_3_24.xml b/app/src/main/res/drawable/rounded_battery_android_frame_3_24.xml index 5857b3ba6..d545f67e9 100644 --- a/app/src/main/res/drawable/rounded_battery_android_frame_3_24.xml +++ b/app/src/main/res/drawable/rounded_battery_android_frame_3_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_battery_android_frame_6_24.xml b/app/src/main/res/drawable/rounded_battery_android_frame_6_24.xml index 85f8dd21b..036c60fda 100644 --- a/app/src/main/res/drawable/rounded_battery_android_frame_6_24.xml +++ b/app/src/main/res/drawable/rounded_battery_android_frame_6_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_battery_android_frame_alert_24.xml b/app/src/main/res/drawable/rounded_battery_android_frame_alert_24.xml index 994cdbe3f..1fb8aa9b1 100644 --- a/app/src/main/res/drawable/rounded_battery_android_frame_alert_24.xml +++ b/app/src/main/res/drawable/rounded_battery_android_frame_alert_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_battery_android_frame_plus_24.xml b/app/src/main/res/drawable/rounded_battery_android_frame_plus_24.xml index 47731b2f3..7e67fb298 100644 --- a/app/src/main/res/drawable/rounded_battery_android_frame_plus_24.xml +++ b/app/src/main/res/drawable/rounded_battery_android_frame_plus_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_battery_android_frame_shield_24.xml b/app/src/main/res/drawable/rounded_battery_android_frame_shield_24.xml index c8b08abd0..deadfcce4 100644 --- a/app/src/main/res/drawable/rounded_battery_android_frame_shield_24.xml +++ b/app/src/main/res/drawable/rounded_battery_android_frame_shield_24.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="960" android:viewportHeight="960"> - + diff --git a/app/src/main/res/drawable/rounded_battery_charging_60_24.xml b/app/src/main/res/drawable/rounded_battery_charging_60_24.xml index afe2b22bc..61e3e00d4 100644 --- a/app/src/main/res/drawable/rounded_battery_charging_60_24.xml +++ b/app/src/main/res/drawable/rounded_battery_charging_60_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_beach_access_24.xml b/app/src/main/res/drawable/rounded_beach_access_24.xml index cd3c2e5b8..f6637908a 100644 --- a/app/src/main/res/drawable/rounded_beach_access_24.xml +++ b/app/src/main/res/drawable/rounded_beach_access_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_bed_24.xml b/app/src/main/res/drawable/rounded_bed_24.xml index 8260d43ed..901988a44 100644 --- a/app/src/main/res/drawable/rounded_bed_24.xml +++ b/app/src/main/res/drawable/rounded_bed_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_bluetooth_24.xml b/app/src/main/res/drawable/rounded_bluetooth_24.xml index d4bc834fa..a4769ceed 100644 --- a/app/src/main/res/drawable/rounded_bluetooth_24.xml +++ b/app/src/main/res/drawable/rounded_bluetooth_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_blur_linear_24.xml b/app/src/main/res/drawable/rounded_blur_linear_24.xml index 599ecdd6f..22cf3cc5c 100644 --- a/app/src/main/res/drawable/rounded_blur_linear_24.xml +++ b/app/src/main/res/drawable/rounded_blur_linear_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_blur_off_24.xml b/app/src/main/res/drawable/rounded_blur_off_24.xml index f2920311d..69a846565 100644 --- a/app/src/main/res/drawable/rounded_blur_off_24.xml +++ b/app/src/main/res/drawable/rounded_blur_off_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_blur_on_24.xml b/app/src/main/res/drawable/rounded_blur_on_24.xml index 760ffba99..e6b47eedb 100644 --- a/app/src/main/res/drawable/rounded_blur_on_24.xml +++ b/app/src/main/res/drawable/rounded_blur_on_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_bolt_24.xml b/app/src/main/res/drawable/rounded_bolt_24.xml index 3d7c205e9..7164d7b6f 100644 --- a/app/src/main/res/drawable/rounded_bolt_24.xml +++ b/app/src/main/res/drawable/rounded_bolt_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_book_2_24.xml b/app/src/main/res/drawable/rounded_book_2_24.xml index 317af1f1e..c802de3a6 100644 --- a/app/src/main/res/drawable/rounded_book_2_24.xml +++ b/app/src/main/res/drawable/rounded_book_2_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_bookmark_24.xml b/app/src/main/res/drawable/rounded_bookmark_24.xml index 18fbf84e0..db2fa571d 100644 --- a/app/src/main/res/drawable/rounded_bookmark_24.xml +++ b/app/src/main/res/drawable/rounded_bookmark_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_bookmark_remove_24.xml b/app/src/main/res/drawable/rounded_bookmark_remove_24.xml index 605e32aba..ee9beb684 100644 --- a/app/src/main/res/drawable/rounded_bookmark_remove_24.xml +++ b/app/src/main/res/drawable/rounded_bookmark_remove_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_border_bottom_24.xml b/app/src/main/res/drawable/rounded_border_bottom_24.xml index 740a89dab..a98ac8b56 100644 --- a/app/src/main/res/drawable/rounded_border_bottom_24.xml +++ b/app/src/main/res/drawable/rounded_border_bottom_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_border_left_24.xml b/app/src/main/res/drawable/rounded_border_left_24.xml index 63767198b..1f73f183f 100644 --- a/app/src/main/res/drawable/rounded_border_left_24.xml +++ b/app/src/main/res/drawable/rounded_border_left_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_border_right_24.xml b/app/src/main/res/drawable/rounded_border_right_24.xml index dc052348b..c63388658 100644 --- a/app/src/main/res/drawable/rounded_border_right_24.xml +++ b/app/src/main/res/drawable/rounded_border_right_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_border_top_24.xml b/app/src/main/res/drawable/rounded_border_top_24.xml index 7162a3fe2..0824aa692 100644 --- a/app/src/main/res/drawable/rounded_border_top_24.xml +++ b/app/src/main/res/drawable/rounded_border_top_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_brightness_6_24.xml b/app/src/main/res/drawable/rounded_brightness_6_24.xml index 6811f5b34..33293ccd5 100644 --- a/app/src/main/res/drawable/rounded_brightness_6_24.xml +++ b/app/src/main/res/drawable/rounded_brightness_6_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_brightness_auto_24.xml b/app/src/main/res/drawable/rounded_brightness_auto_24.xml index b10d0ec17..ac348afff 100644 --- a/app/src/main/res/drawable/rounded_brightness_auto_24.xml +++ b/app/src/main/res/drawable/rounded_brightness_auto_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_brightness_medium_24.xml b/app/src/main/res/drawable/rounded_brightness_medium_24.xml index 6811f5b34..33293ccd5 100644 --- a/app/src/main/res/drawable/rounded_brightness_medium_24.xml +++ b/app/src/main/res/drawable/rounded_brightness_medium_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_bubble_24.xml b/app/src/main/res/drawable/rounded_bubble_24.xml index b8dfed077..9ddad4123 100644 --- a/app/src/main/res/drawable/rounded_bubble_24.xml +++ b/app/src/main/res/drawable/rounded_bubble_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_bubble_chart_24.xml b/app/src/main/res/drawable/rounded_bubble_chart_24.xml index f733c97ea..d2007fc1a 100644 --- a/app/src/main/res/drawable/rounded_bubble_chart_24.xml +++ b/app/src/main/res/drawable/rounded_bubble_chart_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_bug_report_24.xml b/app/src/main/res/drawable/rounded_bug_report_24.xml index 82dc37d9b..6fe1ddff1 100644 --- a/app/src/main/res/drawable/rounded_bug_report_24.xml +++ b/app/src/main/res/drawable/rounded_bug_report_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_calendar_today_24.xml b/app/src/main/res/drawable/rounded_calendar_today_24.xml index 89e2b18b8..77c134c78 100644 --- a/app/src/main/res/drawable/rounded_calendar_today_24.xml +++ b/app/src/main/res/drawable/rounded_calendar_today_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_call_log_24.xml b/app/src/main/res/drawable/rounded_call_log_24.xml index eeeca9f21..1caf606d5 100644 --- a/app/src/main/res/drawable/rounded_call_log_24.xml +++ b/app/src/main/res/drawable/rounded_call_log_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_camera_24.xml b/app/src/main/res/drawable/rounded_camera_24.xml index 3a01dc0cc..7c6c4cb56 100644 --- a/app/src/main/res/drawable/rounded_camera_24.xml +++ b/app/src/main/res/drawable/rounded_camera_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_cancel_24.xml b/app/src/main/res/drawable/rounded_cancel_24.xml index 8d26e4fee..141a67d15 100644 --- a/app/src/main/res/drawable/rounded_cancel_24.xml +++ b/app/src/main/res/drawable/rounded_cancel_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_cast_24.xml b/app/src/main/res/drawable/rounded_cast_24.xml index 403d6bc9a..96427144b 100644 --- a/app/src/main/res/drawable/rounded_cast_24.xml +++ b/app/src/main/res/drawable/rounded_cast_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_cell_wifi_24.xml b/app/src/main/res/drawable/rounded_cell_wifi_24.xml index 3a65f1c5d..990af130f 100644 --- a/app/src/main/res/drawable/rounded_cell_wifi_24.xml +++ b/app/src/main/res/drawable/rounded_cell_wifi_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_center_focus_strong_24.xml b/app/src/main/res/drawable/rounded_center_focus_strong_24.xml index b99219ab2..6f1cb1b55 100644 --- a/app/src/main/res/drawable/rounded_center_focus_strong_24.xml +++ b/app/src/main/res/drawable/rounded_center_focus_strong_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_charger_24.xml b/app/src/main/res/drawable/rounded_charger_24.xml index 535e722e1..881c8d550 100644 --- a/app/src/main/res/drawable/rounded_charger_24.xml +++ b/app/src/main/res/drawable/rounded_charger_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_chat_info_24.xml b/app/src/main/res/drawable/rounded_chat_info_24.xml index 0dd301874..1eac625fb 100644 --- a/app/src/main/res/drawable/rounded_chat_info_24.xml +++ b/app/src/main/res/drawable/rounded_chat_info_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_check_24.xml b/app/src/main/res/drawable/rounded_check_24.xml index eb2564dff..e8b1c6511 100644 --- a/app/src/main/res/drawable/rounded_check_24.xml +++ b/app/src/main/res/drawable/rounded_check_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_check_circle_24.xml b/app/src/main/res/drawable/rounded_check_circle_24.xml index a426909f2..c8762feb8 100644 --- a/app/src/main/res/drawable/rounded_check_circle_24.xml +++ b/app/src/main/res/drawable/rounded_check_circle_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_chevron_right_24.xml b/app/src/main/res/drawable/rounded_chevron_right_24.xml index f00e768d1..ae1ffa877 100644 --- a/app/src/main/res/drawable/rounded_chevron_right_24.xml +++ b/app/src/main/res/drawable/rounded_chevron_right_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_circles_24.xml b/app/src/main/res/drawable/rounded_circles_24.xml index ec987364c..a07d8b602 100644 --- a/app/src/main/res/drawable/rounded_circles_24.xml +++ b/app/src/main/res/drawable/rounded_circles_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_close_24.xml b/app/src/main/res/drawable/rounded_close_24.xml index a5dd7dbec..d45b04238 100644 --- a/app/src/main/res/drawable/rounded_close_24.xml +++ b/app/src/main/res/drawable/rounded_close_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_code_24.xml b/app/src/main/res/drawable/rounded_code_24.xml index f61a7f515..7551067a3 100644 --- a/app/src/main/res/drawable/rounded_code_24.xml +++ b/app/src/main/res/drawable/rounded_code_24.xml @@ -13,8 +13,15 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_coffee_24.xml b/app/src/main/res/drawable/rounded_coffee_24.xml index 8c21e420d..531508c6c 100644 --- a/app/src/main/res/drawable/rounded_coffee_24.xml +++ b/app/src/main/res/drawable/rounded_coffee_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_colorize_24.xml b/app/src/main/res/drawable/rounded_colorize_24.xml index 1a75f5a03..72e17434e 100644 --- a/app/src/main/res/drawable/rounded_colorize_24.xml +++ b/app/src/main/res/drawable/rounded_colorize_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_content_copy_24.xml b/app/src/main/res/drawable/rounded_content_copy_24.xml index edc172af3..33da99fd5 100644 --- a/app/src/main/res/drawable/rounded_content_copy_24.xml +++ b/app/src/main/res/drawable/rounded_content_copy_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_content_paste_24.xml b/app/src/main/res/drawable/rounded_content_paste_24.xml index 1c5b5eb07..c4e3c53ea 100644 --- a/app/src/main/res/drawable/rounded_content_paste_24.xml +++ b/app/src/main/res/drawable/rounded_content_paste_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_control_camera_24.xml b/app/src/main/res/drawable/rounded_control_camera_24.xml index a02edfd2c..0d9d874f1 100644 --- a/app/src/main/res/drawable/rounded_control_camera_24.xml +++ b/app/src/main/res/drawable/rounded_control_camera_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_data_saver_on_24.xml b/app/src/main/res/drawable/rounded_data_saver_on_24.xml index 6569e0f46..56df30801 100644 --- a/app/src/main/res/drawable/rounded_data_saver_on_24.xml +++ b/app/src/main/res/drawable/rounded_data_saver_on_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_data_usage_24.xml b/app/src/main/res/drawable/rounded_data_usage_24.xml index 13121660f..e7e6ad6ea 100644 --- a/app/src/main/res/drawable/rounded_data_usage_24.xml +++ b/app/src/main/res/drawable/rounded_data_usage_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_date_range_24.xml b/app/src/main/res/drawable/rounded_date_range_24.xml index 52f34f064..4c2f17409 100644 --- a/app/src/main/res/drawable/rounded_date_range_24.xml +++ b/app/src/main/res/drawable/rounded_date_range_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_delete_24.xml b/app/src/main/res/drawable/rounded_delete_24.xml index 7a1c4d87d..a80eb2ca2 100644 --- a/app/src/main/res/drawable/rounded_delete_24.xml +++ b/app/src/main/res/drawable/rounded_delete_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_devices_24.xml b/app/src/main/res/drawable/rounded_devices_24.xml index 6c6c4b6c5..6014e542e 100644 --- a/app/src/main/res/drawable/rounded_devices_24.xml +++ b/app/src/main/res/drawable/rounded_devices_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_diagnosis_24.xml b/app/src/main/res/drawable/rounded_diagnosis_24.xml index 54c9ea95d..04dde3023 100644 --- a/app/src/main/res/drawable/rounded_diagnosis_24.xml +++ b/app/src/main/res/drawable/rounded_diagnosis_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_directions_boat_24.xml b/app/src/main/res/drawable/rounded_directions_boat_24.xml index a0057825e..08d24e183 100644 --- a/app/src/main/res/drawable/rounded_directions_boat_24.xml +++ b/app/src/main/res/drawable/rounded_directions_boat_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_directions_bus_24.xml b/app/src/main/res/drawable/rounded_directions_bus_24.xml index e58032b7b..47ee21113 100644 --- a/app/src/main/res/drawable/rounded_directions_bus_24.xml +++ b/app/src/main/res/drawable/rounded_directions_bus_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_dns_24.xml b/app/src/main/res/drawable/rounded_dns_24.xml index 1cce0c460..2463a6aa3 100644 --- a/app/src/main/res/drawable/rounded_dns_24.xml +++ b/app/src/main/res/drawable/rounded_dns_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_do_not_disturb_on_24.xml b/app/src/main/res/drawable/rounded_do_not_disturb_on_24.xml index ddaa850ba..28dbd1320 100644 --- a/app/src/main/res/drawable/rounded_do_not_disturb_on_24.xml +++ b/app/src/main/res/drawable/rounded_do_not_disturb_on_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_do_not_touch_24.xml b/app/src/main/res/drawable/rounded_do_not_touch_24.xml index 76d531dba..a702d5472 100644 --- a/app/src/main/res/drawable/rounded_do_not_touch_24.xml +++ b/app/src/main/res/drawable/rounded_do_not_touch_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_domino_mask_24.xml b/app/src/main/res/drawable/rounded_domino_mask_24.xml index 322ff2fd3..243de64ca 100644 --- a/app/src/main/res/drawable/rounded_domino_mask_24.xml +++ b/app/src/main/res/drawable/rounded_domino_mask_24.xml @@ -13,8 +13,15 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_download_24.xml b/app/src/main/res/drawable/rounded_download_24.xml index 786601a95..8a2fbca09 100644 --- a/app/src/main/res/drawable/rounded_download_24.xml +++ b/app/src/main/res/drawable/rounded_download_24.xml @@ -1,10 +1,10 @@ + android:viewportHeight="24.0"> + android:pathData="M16.59,9H15V4c0,-0.55 -0.45,-1 -1,-1h-4c-0.55,0 -1,0.45 -1,1v5H7.41c-0.89,0 -1.34,1.08 -0.71,1.71l4.59,4.59c0.39,0.39 1.02,0.39 1.41,0l4.59,-4.59C17.48,10.08 17.03,9 16.59,9zM5,19c0,0.55 0.45,1 1,1h12c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1H6C5.45,18 5,18.45 5,19z" /> diff --git a/app/src/main/res/drawable/rounded_downloading_24.xml b/app/src/main/res/drawable/rounded_downloading_24.xml index b6b59a661..6471e0c33 100644 --- a/app/src/main/res/drawable/rounded_downloading_24.xml +++ b/app/src/main/res/drawable/rounded_downloading_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_drag_handle_24.xml b/app/src/main/res/drawable/rounded_drag_handle_24.xml index 8908ec2d3..7a487bb00 100644 --- a/app/src/main/res/drawable/rounded_drag_handle_24.xml +++ b/app/src/main/res/drawable/rounded_drag_handle_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_draw_24.xml b/app/src/main/res/drawable/rounded_draw_24.xml index ac3976f22..eae58adc1 100644 --- a/app/src/main/res/drawable/rounded_draw_24.xml +++ b/app/src/main/res/drawable/rounded_draw_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_edit_24.xml b/app/src/main/res/drawable/rounded_edit_24.xml index f378d2f35..4872e73ad 100644 --- a/app/src/main/res/drawable/rounded_edit_24.xml +++ b/app/src/main/res/drawable/rounded_edit_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_emoji_language_24.xml b/app/src/main/res/drawable/rounded_emoji_language_24.xml index 4f1b76a17..4bca0d931 100644 --- a/app/src/main/res/drawable/rounded_emoji_language_24.xml +++ b/app/src/main/res/drawable/rounded_emoji_language_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_experiment_24.xml b/app/src/main/res/drawable/rounded_experiment_24.xml index 5c9ac15cd..5983bfc7f 100644 --- a/app/src/main/res/drawable/rounded_experiment_24.xml +++ b/app/src/main/res/drawable/rounded_experiment_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_favorite_24.xml b/app/src/main/res/drawable/rounded_favorite_24.xml index a9e9a09bf..fcb9e427d 100644 --- a/app/src/main/res/drawable/rounded_favorite_24.xml +++ b/app/src/main/res/drawable/rounded_favorite_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_fiber_smart_record_24.xml b/app/src/main/res/drawable/rounded_fiber_smart_record_24.xml index cc9866e3e..0b21ce766 100644 --- a/app/src/main/res/drawable/rounded_fiber_smart_record_24.xml +++ b/app/src/main/res/drawable/rounded_fiber_smart_record_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_flash_on_24.xml b/app/src/main/res/drawable/rounded_flash_on_24.xml index 61ba59e5c..5aa0fa8a4 100644 --- a/app/src/main/res/drawable/rounded_flash_on_24.xml +++ b/app/src/main/res/drawable/rounded_flash_on_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_flashlight_on_24.xml b/app/src/main/res/drawable/rounded_flashlight_on_24.xml index e9feb7806..8f71f988c 100644 --- a/app/src/main/res/drawable/rounded_flashlight_on_24.xml +++ b/app/src/main/res/drawable/rounded_flashlight_on_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_flight_24.xml b/app/src/main/res/drawable/rounded_flight_24.xml index a9c739854..71394bb02 100644 --- a/app/src/main/res/drawable/rounded_flight_24.xml +++ b/app/src/main/res/drawable/rounded_flight_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_fork_spoon_24.xml b/app/src/main/res/drawable/rounded_fork_spoon_24.xml index bc43432cd..076bbbf8f 100644 --- a/app/src/main/res/drawable/rounded_fork_spoon_24.xml +++ b/app/src/main/res/drawable/rounded_fork_spoon_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_front_hand_24.xml b/app/src/main/res/drawable/rounded_front_hand_24.xml index 88c9fecbd..bbff6ff70 100644 --- a/app/src/main/res/drawable/rounded_front_hand_24.xml +++ b/app/src/main/res/drawable/rounded_front_hand_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_fullscreen_portrait_24.xml b/app/src/main/res/drawable/rounded_fullscreen_portrait_24.xml index bc4057cdc..5a8f3fb95 100644 --- a/app/src/main/res/drawable/rounded_fullscreen_portrait_24.xml +++ b/app/src/main/res/drawable/rounded_fullscreen_portrait_24.xml @@ -13,8 +13,15 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_garage_home_24.xml b/app/src/main/res/drawable/rounded_garage_home_24.xml index 82ab52e7f..55dfb347c 100644 --- a/app/src/main/res/drawable/rounded_garage_home_24.xml +++ b/app/src/main/res/drawable/rounded_garage_home_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_globe_24.xml b/app/src/main/res/drawable/rounded_globe_24.xml index d8394b98c..95b3ec5ad 100644 --- a/app/src/main/res/drawable/rounded_globe_24.xml +++ b/app/src/main/res/drawable/rounded_globe_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_grain_24.xml b/app/src/main/res/drawable/rounded_grain_24.xml index 1cb3e4b31..347834433 100644 --- a/app/src/main/res/drawable/rounded_grain_24.xml +++ b/app/src/main/res/drawable/rounded_grain_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_headphones_24.xml b/app/src/main/res/drawable/rounded_headphones_24.xml index 3457c0f09..e853562a7 100644 --- a/app/src/main/res/drawable/rounded_headphones_24.xml +++ b/app/src/main/res/drawable/rounded_headphones_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_headset_mic_24.xml b/app/src/main/res/drawable/rounded_headset_mic_24.xml index 2abdad74c..2ee1cee36 100644 --- a/app/src/main/res/drawable/rounded_headset_mic_24.xml +++ b/app/src/main/res/drawable/rounded_headset_mic_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_heart_smile_24.xml b/app/src/main/res/drawable/rounded_heart_smile_24.xml index 436ff14c4..f17a0c5f0 100644 --- a/app/src/main/res/drawable/rounded_heart_smile_24.xml +++ b/app/src/main/res/drawable/rounded_heart_smile_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_help_24.xml b/app/src/main/res/drawable/rounded_help_24.xml index bedeb12c6..6cec8cbdd 100644 --- a/app/src/main/res/drawable/rounded_help_24.xml +++ b/app/src/main/res/drawable/rounded_help_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_history_24.xml b/app/src/main/res/drawable/rounded_history_24.xml index 948b8d34c..36ae4cb99 100644 --- a/app/src/main/res/drawable/rounded_history_24.xml +++ b/app/src/main/res/drawable/rounded_history_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_home_24.xml b/app/src/main/res/drawable/rounded_home_24.xml index d971995e4..1961096cd 100644 --- a/app/src/main/res/drawable/rounded_home_24.xml +++ b/app/src/main/res/drawable/rounded_home_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_home_health_24.xml b/app/src/main/res/drawable/rounded_home_health_24.xml index 43c5c05a1..69a71faca 100644 --- a/app/src/main/res/drawable/rounded_home_health_24.xml +++ b/app/src/main/res/drawable/rounded_home_health_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_image_24.xml b/app/src/main/res/drawable/rounded_image_24.xml index 5544c3817..e055f6c88 100644 --- a/app/src/main/res/drawable/rounded_image_24.xml +++ b/app/src/main/res/drawable/rounded_image_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_image_search_24.xml b/app/src/main/res/drawable/rounded_image_search_24.xml index 1fc7cba99..bb30d3c6a 100644 --- a/app/src/main/res/drawable/rounded_image_search_24.xml +++ b/app/src/main/res/drawable/rounded_image_search_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_info_24.xml b/app/src/main/res/drawable/rounded_info_24.xml index ccb4a26b0..f5d2b8c9e 100644 --- a/app/src/main/res/drawable/rounded_info_24.xml +++ b/app/src/main/res/drawable/rounded_info_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_interests_24.xml b/app/src/main/res/drawable/rounded_interests_24.xml index bd88d8abe..7580df2c9 100644 --- a/app/src/main/res/drawable/rounded_interests_24.xml +++ b/app/src/main/res/drawable/rounded_interests_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_invert_colors_24.xml b/app/src/main/res/drawable/rounded_invert_colors_24.xml index 4a137ecc1..d5656bc3d 100644 --- a/app/src/main/res/drawable/rounded_invert_colors_24.xml +++ b/app/src/main/res/drawable/rounded_invert_colors_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_keyboard_24.xml b/app/src/main/res/drawable/rounded_keyboard_24.xml index f182d78fc..155b241b9 100644 --- a/app/src/main/res/drawable/rounded_keyboard_24.xml +++ b/app/src/main/res/drawable/rounded_keyboard_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_keyboard_arrow_down_24.xml b/app/src/main/res/drawable/rounded_keyboard_arrow_down_24.xml index 25ee1612b..149abce26 100644 --- a/app/src/main/res/drawable/rounded_keyboard_arrow_down_24.xml +++ b/app/src/main/res/drawable/rounded_keyboard_arrow_down_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_keyboard_arrow_up_24.xml b/app/src/main/res/drawable/rounded_keyboard_arrow_up_24.xml index a5975315e..f662f816f 100644 --- a/app/src/main/res/drawable/rounded_keyboard_arrow_up_24.xml +++ b/app/src/main/res/drawable/rounded_keyboard_arrow_up_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_keyboard_double_arrow_up_24.xml b/app/src/main/res/drawable/rounded_keyboard_double_arrow_up_24.xml index 06396256a..ca58a6898 100644 --- a/app/src/main/res/drawable/rounded_keyboard_double_arrow_up_24.xml +++ b/app/src/main/res/drawable/rounded_keyboard_double_arrow_up_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_keyboard_return_24.xml b/app/src/main/res/drawable/rounded_keyboard_return_24.xml index 7952b9ec3..7376b5da5 100644 --- a/app/src/main/res/drawable/rounded_keyboard_return_24.xml +++ b/app/src/main/res/drawable/rounded_keyboard_return_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_lan_24.xml b/app/src/main/res/drawable/rounded_lan_24.xml index 9845af1a6..8a389972d 100644 --- a/app/src/main/res/drawable/rounded_lan_24.xml +++ b/app/src/main/res/drawable/rounded_lan_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_laptop_mac_24.xml b/app/src/main/res/drawable/rounded_laptop_mac_24.xml index b8c1fd914..404807f36 100644 --- a/app/src/main/res/drawable/rounded_laptop_mac_24.xml +++ b/app/src/main/res/drawable/rounded_laptop_mac_24.xml @@ -1,10 +1,10 @@ - + android:viewportHeight="24"> + diff --git a/app/src/main/res/drawable/rounded_line_weight_24.xml b/app/src/main/res/drawable/rounded_line_weight_24.xml index f3bfcf2d9..cdd4da52d 100644 --- a/app/src/main/res/drawable/rounded_line_weight_24.xml +++ b/app/src/main/res/drawable/rounded_line_weight_24.xml @@ -13,8 +13,15 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_link_24.xml b/app/src/main/res/drawable/rounded_link_24.xml index ffad4579c..d21bb1f53 100644 --- a/app/src/main/res/drawable/rounded_link_24.xml +++ b/app/src/main/res/drawable/rounded_link_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_local_pizza_24.xml b/app/src/main/res/drawable/rounded_local_pizza_24.xml index 7c555d8a8..0037e5e69 100644 --- a/app/src/main/res/drawable/rounded_local_pizza_24.xml +++ b/app/src/main/res/drawable/rounded_local_pizza_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_location_on_24.xml b/app/src/main/res/drawable/rounded_location_on_24.xml index 411209590..07a938f59 100644 --- a/app/src/main/res/drawable/rounded_location_on_24.xml +++ b/app/src/main/res/drawable/rounded_location_on_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_lock_24.xml b/app/src/main/res/drawable/rounded_lock_24.xml index 427742d4f..074780415 100644 --- a/app/src/main/res/drawable/rounded_lock_24.xml +++ b/app/src/main/res/drawable/rounded_lock_24.xml @@ -13,8 +13,15 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_lock_clock_24.xml b/app/src/main/res/drawable/rounded_lock_clock_24.xml index b7f9c80b3..17b4acdc8 100644 --- a/app/src/main/res/drawable/rounded_lock_clock_24.xml +++ b/app/src/main/res/drawable/rounded_lock_clock_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_logout_24.xml b/app/src/main/res/drawable/rounded_logout_24.xml index bac4cb1ef..a81c96edb 100644 --- a/app/src/main/res/drawable/rounded_logout_24.xml +++ b/app/src/main/res/drawable/rounded_logout_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_magnify_fullscreen_24.xml b/app/src/main/res/drawable/rounded_magnify_fullscreen_24.xml index 0de249bef..78f3841e3 100644 --- a/app/src/main/res/drawable/rounded_magnify_fullscreen_24.xml +++ b/app/src/main/res/drawable/rounded_magnify_fullscreen_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mail_24.xml b/app/src/main/res/drawable/rounded_mail_24.xml index f0039ab37..7faed755e 100644 --- a/app/src/main/res/drawable/rounded_mail_24.xml +++ b/app/src/main/res/drawable/rounded_mail_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_map_24.xml b/app/src/main/res/drawable/rounded_map_24.xml index 97b61e1b9..18cf631b4 100644 --- a/app/src/main/res/drawable/rounded_map_24.xml +++ b/app/src/main/res/drawable/rounded_map_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_memory_alt_24.xml b/app/src/main/res/drawable/rounded_memory_alt_24.xml index c490af0b2..b6cdd79e6 100644 --- a/app/src/main/res/drawable/rounded_memory_alt_24.xml +++ b/app/src/main/res/drawable/rounded_memory_alt_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_24.xml b/app/src/main/res/drawable/rounded_mobile_24.xml index 8fb439012..3becd4442 100644 --- a/app/src/main/res/drawable/rounded_mobile_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_arrow_down_24.xml b/app/src/main/res/drawable/rounded_mobile_arrow_down_24.xml index 428436b02..9501a7cc6 100644 --- a/app/src/main/res/drawable/rounded_mobile_arrow_down_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_arrow_down_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_charge_24.xml b/app/src/main/res/drawable/rounded_mobile_charge_24.xml index 66b2de51a..0657952c0 100644 --- a/app/src/main/res/drawable/rounded_mobile_charge_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_charge_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_check_24.xml b/app/src/main/res/drawable/rounded_mobile_check_24.xml index a1b8d88b9..39d1b48da 100644 --- a/app/src/main/res/drawable/rounded_mobile_check_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_check_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_code_24.xml b/app/src/main/res/drawable/rounded_mobile_code_24.xml index 4ce840a8a..399358a81 100644 --- a/app/src/main/res/drawable/rounded_mobile_code_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_code_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_hand_24.xml b/app/src/main/res/drawable/rounded_mobile_hand_24.xml index d525d3a4a..2d92c9165 100644 --- a/app/src/main/res/drawable/rounded_mobile_hand_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_hand_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_layout_24.xml b/app/src/main/res/drawable/rounded_mobile_layout_24.xml index 5e4e63c0a..2f5b3371a 100644 --- a/app/src/main/res/drawable/rounded_mobile_layout_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_layout_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_lock_portrait_24.xml b/app/src/main/res/drawable/rounded_mobile_lock_portrait_24.xml index 5cd373d5f..777e7d16d 100644 --- a/app/src/main/res/drawable/rounded_mobile_lock_portrait_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_lock_portrait_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_off_24.xml b/app/src/main/res/drawable/rounded_mobile_off_24.xml index 000f365b8..fe78a9bb5 100644 --- a/app/src/main/res/drawable/rounded_mobile_off_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_off_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_rotate_24.xml b/app/src/main/res/drawable/rounded_mobile_rotate_24.xml index f677133e6..bd378ec40 100644 --- a/app/src/main/res/drawable/rounded_mobile_rotate_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_rotate_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_screensaver_24.xml b/app/src/main/res/drawable/rounded_mobile_screensaver_24.xml index 4344fcb58..e388ffb0c 100644 --- a/app/src/main/res/drawable/rounded_mobile_screensaver_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_screensaver_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_sound_24.xml b/app/src/main/res/drawable/rounded_mobile_sound_24.xml index c4267e263..67cdefbb0 100644 --- a/app/src/main/res/drawable/rounded_mobile_sound_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_sound_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_text_24.xml b/app/src/main/res/drawable/rounded_mobile_text_24.xml index c922df93f..e5e77d459 100644 --- a/app/src/main/res/drawable/rounded_mobile_text_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_text_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_text_2_24.xml b/app/src/main/res/drawable/rounded_mobile_text_2_24.xml index 918e60991..1b5fa9235 100644 --- a/app/src/main/res/drawable/rounded_mobile_text_2_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_text_2_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_unlock_24.xml b/app/src/main/res/drawable/rounded_mobile_unlock_24.xml index 6cb81fdcc..ef9de0ac4 100644 --- a/app/src/main/res/drawable/rounded_mobile_unlock_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_unlock_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_vibrate_24.xml b/app/src/main/res/drawable/rounded_mobile_vibrate_24.xml index dcbcaf79b..e9922793d 100644 --- a/app/src/main/res/drawable/rounded_mobile_vibrate_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_vibrate_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mode_cool_24.xml b/app/src/main/res/drawable/rounded_mode_cool_24.xml index 3f1c6e4be..cfb287bee 100644 --- a/app/src/main/res/drawable/rounded_mode_cool_24.xml +++ b/app/src/main/res/drawable/rounded_mode_cool_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mode_cool_off_24.xml b/app/src/main/res/drawable/rounded_mode_cool_off_24.xml index 19aca4dec..3f1fd1ec5 100644 --- a/app/src/main/res/drawable/rounded_mode_cool_off_24.xml +++ b/app/src/main/res/drawable/rounded_mode_cool_off_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_more_vert_24.xml b/app/src/main/res/drawable/rounded_more_vert_24.xml index 2913c59a3..2cefeebbf 100644 --- a/app/src/main/res/drawable/rounded_more_vert_24.xml +++ b/app/src/main/res/drawable/rounded_more_vert_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_music_note_24.xml b/app/src/main/res/drawable/rounded_music_note_24.xml index 91cfd4e4f..c01099eee 100644 --- a/app/src/main/res/drawable/rounded_music_note_24.xml +++ b/app/src/main/res/drawable/rounded_music_note_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_music_video_24.xml b/app/src/main/res/drawable/rounded_music_video_24.xml index 0a0f5647f..b8d83dfa3 100644 --- a/app/src/main/res/drawable/rounded_music_video_24.xml +++ b/app/src/main/res/drawable/rounded_music_video_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_my_location_24.xml b/app/src/main/res/drawable/rounded_my_location_24.xml index d4be0b670..dbb502c5a 100644 --- a/app/src/main/res/drawable/rounded_my_location_24.xml +++ b/app/src/main/res/drawable/rounded_my_location_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_navigation_24.xml b/app/src/main/res/drawable/rounded_navigation_24.xml index 676c711b8..87e932eea 100644 --- a/app/src/main/res/drawable/rounded_navigation_24.xml +++ b/app/src/main/res/drawable/rounded_navigation_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_nest_clock_farsight_analog_24.xml b/app/src/main/res/drawable/rounded_nest_clock_farsight_analog_24.xml index e0e417874..10446f3ea 100644 --- a/app/src/main/res/drawable/rounded_nest_clock_farsight_analog_24.xml +++ b/app/src/main/res/drawable/rounded_nest_clock_farsight_analog_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_nest_farsight_cool_24.xml b/app/src/main/res/drawable/rounded_nest_farsight_cool_24.xml index f401acb68..b1b0f2930 100644 --- a/app/src/main/res/drawable/rounded_nest_farsight_cool_24.xml +++ b/app/src/main/res/drawable/rounded_nest_farsight_cool_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_nfc_24.xml b/app/src/main/res/drawable/rounded_nfc_24.xml index 289682517..fe2954dda 100644 --- a/app/src/main/res/drawable/rounded_nfc_24.xml +++ b/app/src/main/res/drawable/rounded_nfc_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_nightlight_24.xml b/app/src/main/res/drawable/rounded_nightlight_24.xml index 95c1d5f17..ab238f090 100644 --- a/app/src/main/res/drawable/rounded_nightlight_24.xml +++ b/app/src/main/res/drawable/rounded_nightlight_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_notification_settings_24.xml b/app/src/main/res/drawable/rounded_notification_settings_24.xml index 391761801..3e7aa19fe 100644 --- a/app/src/main/res/drawable/rounded_notification_settings_24.xml +++ b/app/src/main/res/drawable/rounded_notification_settings_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_notification_sound_24.xml b/app/src/main/res/drawable/rounded_notification_sound_24.xml index ee5313e3d..5f7f770fa 100644 --- a/app/src/main/res/drawable/rounded_notification_sound_24.xml +++ b/app/src/main/res/drawable/rounded_notification_sound_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_notifications_off_24.xml b/app/src/main/res/drawable/rounded_notifications_off_24.xml index ed435880d..8269843e6 100644 --- a/app/src/main/res/drawable/rounded_notifications_off_24.xml +++ b/app/src/main/res/drawable/rounded_notifications_off_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_notifications_unread_24.xml b/app/src/main/res/drawable/rounded_notifications_unread_24.xml index e7a346f57..8879c49f4 100644 --- a/app/src/main/res/drawable/rounded_notifications_unread_24.xml +++ b/app/src/main/res/drawable/rounded_notifications_unread_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_numbers_24.xml b/app/src/main/res/drawable/rounded_numbers_24.xml index a819c8683..893afa3eb 100644 --- a/app/src/main/res/drawable/rounded_numbers_24.xml +++ b/app/src/main/res/drawable/rounded_numbers_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_open_in_browser_24.xml b/app/src/main/res/drawable/rounded_open_in_browser_24.xml index 7258963b8..2f90075d8 100644 --- a/app/src/main/res/drawable/rounded_open_in_browser_24.xml +++ b/app/src/main/res/drawable/rounded_open_in_browser_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_open_in_new_24.xml b/app/src/main/res/drawable/rounded_open_in_new_24.xml index c296f97ac..de529b529 100644 --- a/app/src/main/res/drawable/rounded_open_in_new_24.xml +++ b/app/src/main/res/drawable/rounded_open_in_new_24.xml @@ -13,8 +13,16 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_palette_24.xml b/app/src/main/res/drawable/rounded_palette_24.xml index afe0f1329..df383db52 100644 --- a/app/src/main/res/drawable/rounded_palette_24.xml +++ b/app/src/main/res/drawable/rounded_palette_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_pause_24.xml b/app/src/main/res/drawable/rounded_pause_24.xml index 76350ba64..1df9ed816 100644 --- a/app/src/main/res/drawable/rounded_pause_24.xml +++ b/app/src/main/res/drawable/rounded_pause_24.xml @@ -1,3 +1,10 @@ - - + + diff --git a/app/src/main/res/drawable/rounded_play_arrow_24.xml b/app/src/main/res/drawable/rounded_play_arrow_24.xml index 7aa61e7fc..139f135cb 100644 --- a/app/src/main/res/drawable/rounded_play_arrow_24.xml +++ b/app/src/main/res/drawable/rounded_play_arrow_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_play_pause_24.xml b/app/src/main/res/drawable/rounded_play_pause_24.xml index d37997c65..b129b5ca9 100644 --- a/app/src/main/res/drawable/rounded_play_pause_24.xml +++ b/app/src/main/res/drawable/rounded_play_pause_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_position_bottom_left_24.xml b/app/src/main/res/drawable/rounded_position_bottom_left_24.xml index a78a00cc1..cb679723e 100644 --- a/app/src/main/res/drawable/rounded_position_bottom_left_24.xml +++ b/app/src/main/res/drawable/rounded_position_bottom_left_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_power_settings_new_24.xml b/app/src/main/res/drawable/rounded_power_settings_new_24.xml index 1441b411e..cd732c601 100644 --- a/app/src/main/res/drawable/rounded_power_settings_new_24.xml +++ b/app/src/main/res/drawable/rounded_power_settings_new_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_refresh_24.xml b/app/src/main/res/drawable/rounded_refresh_24.xml index c56a99258..b8d54af50 100644 --- a/app/src/main/res/drawable/rounded_refresh_24.xml +++ b/app/src/main/res/drawable/rounded_refresh_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_release_alert_24.xml b/app/src/main/res/drawable/rounded_release_alert_24.xml index 8115c4e1e..51b078d76 100644 --- a/app/src/main/res/drawable/rounded_release_alert_24.xml +++ b/app/src/main/res/drawable/rounded_release_alert_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_remove_24.xml b/app/src/main/res/drawable/rounded_remove_24.xml index d0b84241f..8d9550cc9 100644 --- a/app/src/main/res/drawable/rounded_remove_24.xml +++ b/app/src/main/res/drawable/rounded_remove_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_rocket_launch_24.xml b/app/src/main/res/drawable/rounded_rocket_launch_24.xml index 42d9598bc..a2bb9cd0a 100644 --- a/app/src/main/res/drawable/rounded_rocket_launch_24.xml +++ b/app/src/main/res/drawable/rounded_rocket_launch_24.xml @@ -13,8 +13,15 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_rotate_left_24.xml b/app/src/main/res/drawable/rounded_rotate_left_24.xml index f06f310fe..8c1af8dea 100644 --- a/app/src/main/res/drawable/rounded_rotate_left_24.xml +++ b/app/src/main/res/drawable/rounded_rotate_left_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_rotate_right_24.xml b/app/src/main/res/drawable/rounded_rotate_right_24.xml index 050879a7a..8f39ca84b 100644 --- a/app/src/main/res/drawable/rounded_rotate_right_24.xml +++ b/app/src/main/res/drawable/rounded_rotate_right_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_rounded_corner_24.xml b/app/src/main/res/drawable/rounded_rounded_corner_24.xml index d6e98beed..1217fc430 100644 --- a/app/src/main/res/drawable/rounded_rounded_corner_24.xml +++ b/app/src/main/res/drawable/rounded_rounded_corner_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_save_24.xml b/app/src/main/res/drawable/rounded_save_24.xml index fb4a10de4..d65f47099 100644 --- a/app/src/main/res/drawable/rounded_save_24.xml +++ b/app/src/main/res/drawable/rounded_save_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_school_24.xml b/app/src/main/res/drawable/rounded_school_24.xml index fdf7a026f..ca8aaf68d 100644 --- a/app/src/main/res/drawable/rounded_school_24.xml +++ b/app/src/main/res/drawable/rounded_school_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_screenshot_region_24.xml b/app/src/main/res/drawable/rounded_screenshot_region_24.xml index 276e349ba..70b8ef9c6 100644 --- a/app/src/main/res/drawable/rounded_screenshot_region_24.xml +++ b/app/src/main/res/drawable/rounded_screenshot_region_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_search_24.xml b/app/src/main/res/drawable/rounded_search_24.xml index 3371c9796..6511fb199 100644 --- a/app/src/main/res/drawable/rounded_search_24.xml +++ b/app/src/main/res/drawable/rounded_search_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_search_check_2_24.xml b/app/src/main/res/drawable/rounded_search_check_2_24.xml index a185dd830..d1219d134 100644 --- a/app/src/main/res/drawable/rounded_search_check_2_24.xml +++ b/app/src/main/res/drawable/rounded_search_check_2_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_security_24.xml b/app/src/main/res/drawable/rounded_security_24.xml index 4c5c7e69c..26faeb3dd 100644 --- a/app/src/main/res/drawable/rounded_security_24.xml +++ b/app/src/main/res/drawable/rounded_security_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_send_24.xml b/app/src/main/res/drawable/rounded_send_24.xml index 3910eb808..5773a2c9a 100644 --- a/app/src/main/res/drawable/rounded_send_24.xml +++ b/app/src/main/res/drawable/rounded_send_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_settings_24.xml b/app/src/main/res/drawable/rounded_settings_24.xml index 05d1dffdb..cc6d16890 100644 --- a/app/src/main/res/drawable/rounded_settings_24.xml +++ b/app/src/main/res/drawable/rounded_settings_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_settings_accessibility_24.xml b/app/src/main/res/drawable/rounded_settings_accessibility_24.xml index 9840dfcea..4f932a3a8 100644 --- a/app/src/main/res/drawable/rounded_settings_accessibility_24.xml +++ b/app/src/main/res/drawable/rounded_settings_accessibility_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_settings_heart_24.xml b/app/src/main/res/drawable/rounded_settings_heart_24.xml index 4422c441a..352cc9f3f 100644 --- a/app/src/main/res/drawable/rounded_settings_heart_24.xml +++ b/app/src/main/res/drawable/rounded_settings_heart_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_settings_motion_mode_24.xml b/app/src/main/res/drawable/rounded_settings_motion_mode_24.xml index 65290a7bb..279d8935d 100644 --- a/app/src/main/res/drawable/rounded_settings_motion_mode_24.xml +++ b/app/src/main/res/drawable/rounded_settings_motion_mode_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_share_24.xml b/app/src/main/res/drawable/rounded_share_24.xml index 5e5d9c9b0..13dcf1357 100644 --- a/app/src/main/res/drawable/rounded_share_24.xml +++ b/app/src/main/res/drawable/rounded_share_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_shield_24.xml b/app/src/main/res/drawable/rounded_shield_24.xml index d05ea62c3..322a1c789 100644 --- a/app/src/main/res/drawable/rounded_shield_24.xml +++ b/app/src/main/res/drawable/rounded_shield_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_shield_lock_24.xml b/app/src/main/res/drawable/rounded_shield_lock_24.xml index 9b0f17fba..1189b1802 100644 --- a/app/src/main/res/drawable/rounded_shield_lock_24.xml +++ b/app/src/main/res/drawable/rounded_shield_lock_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_shopping_cart_24.xml b/app/src/main/res/drawable/rounded_shopping_cart_24.xml index fffc5b47f..52c0f656f 100644 --- a/app/src/main/res/drawable/rounded_shopping_cart_24.xml +++ b/app/src/main/res/drawable/rounded_shopping_cart_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_shutter_speed_24.xml b/app/src/main/res/drawable/rounded_shutter_speed_24.xml index 6ab968471..1343f2eb9 100644 --- a/app/src/main/res/drawable/rounded_shutter_speed_24.xml +++ b/app/src/main/res/drawable/rounded_shutter_speed_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_signal_cellular_alt_24.xml b/app/src/main/res/drawable/rounded_signal_cellular_alt_24.xml index f10f8f883..588e09283 100644 --- a/app/src/main/res/drawable/rounded_signal_cellular_alt_24.xml +++ b/app/src/main/res/drawable/rounded_signal_cellular_alt_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_skip_next_24.xml b/app/src/main/res/drawable/rounded_skip_next_24.xml index 3cf471bb7..da30c3687 100644 --- a/app/src/main/res/drawable/rounded_skip_next_24.xml +++ b/app/src/main/res/drawable/rounded_skip_next_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_skip_previous_24.xml b/app/src/main/res/drawable/rounded_skip_previous_24.xml index 54f05535d..b69cfb3b7 100644 --- a/app/src/main/res/drawable/rounded_skip_previous_24.xml +++ b/app/src/main/res/drawable/rounded_skip_previous_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_slow_motion_video_24.xml b/app/src/main/res/drawable/rounded_slow_motion_video_24.xml index 026f30182..275457a39 100644 --- a/app/src/main/res/drawable/rounded_slow_motion_video_24.xml +++ b/app/src/main/res/drawable/rounded_slow_motion_video_24.xml @@ -13,8 +13,15 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_snooze_24.xml b/app/src/main/res/drawable/rounded_snooze_24.xml index c4a2eb596..2b3692f19 100644 --- a/app/src/main/res/drawable/rounded_snooze_24.xml +++ b/app/src/main/res/drawable/rounded_snooze_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_snowflake_24.xml b/app/src/main/res/drawable/rounded_snowflake_24.xml index 765e8054a..86f11cc94 100644 --- a/app/src/main/res/drawable/rounded_snowflake_24.xml +++ b/app/src/main/res/drawable/rounded_snowflake_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_stop_circle_24.xml b/app/src/main/res/drawable/rounded_stop_circle_24.xml index e3f1992f0..9c4b3ef1d 100644 --- a/app/src/main/res/drawable/rounded_stop_circle_24.xml +++ b/app/src/main/res/drawable/rounded_stop_circle_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_storefront_24.xml b/app/src/main/res/drawable/rounded_storefront_24.xml index 545e73bde..15fe6779e 100644 --- a/app/src/main/res/drawable/rounded_storefront_24.xml +++ b/app/src/main/res/drawable/rounded_storefront_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_switch_access_3_24.xml b/app/src/main/res/drawable/rounded_switch_access_3_24.xml index b3b97618b..cff91e0de 100644 --- a/app/src/main/res/drawable/rounded_switch_access_3_24.xml +++ b/app/src/main/res/drawable/rounded_switch_access_3_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_sync_24.xml b/app/src/main/res/drawable/rounded_sync_24.xml index 5a55ffc8d..ece40c49c 100644 --- a/app/src/main/res/drawable/rounded_sync_24.xml +++ b/app/src/main/res/drawable/rounded_sync_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_target_24.xml b/app/src/main/res/drawable/rounded_target_24.xml index 046cd58c0..285c5601a 100644 --- a/app/src/main/res/drawable/rounded_target_24.xml +++ b/app/src/main/res/drawable/rounded_target_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_task_alt_24.xml b/app/src/main/res/drawable/rounded_task_alt_24.xml index fa0ffe7d6..cd9cfaf16 100644 --- a/app/src/main/res/drawable/rounded_task_alt_24.xml +++ b/app/src/main/res/drawable/rounded_task_alt_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_tile_small_24.xml b/app/src/main/res/drawable/rounded_tile_small_24.xml index 65f8a323c..99001c3bb 100644 --- a/app/src/main/res/drawable/rounded_tile_small_24.xml +++ b/app/src/main/res/drawable/rounded_tile_small_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_timelapse_24.xml b/app/src/main/res/drawable/rounded_timelapse_24.xml index b965e5921..ff0a1fc36 100644 --- a/app/src/main/res/drawable/rounded_timelapse_24.xml +++ b/app/src/main/res/drawable/rounded_timelapse_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_timer_24.xml b/app/src/main/res/drawable/rounded_timer_24.xml index 7c34db24f..828f9f2e5 100644 --- a/app/src/main/res/drawable/rounded_timer_24.xml +++ b/app/src/main/res/drawable/rounded_timer_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_timer_off_24.xml b/app/src/main/res/drawable/rounded_timer_off_24.xml index 2da2c83c6..cc5a3d03a 100644 --- a/app/src/main/res/drawable/rounded_timer_off_24.xml +++ b/app/src/main/res/drawable/rounded_timer_off_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_toggle_on_24.xml b/app/src/main/res/drawable/rounded_toggle_on_24.xml index 13e6dd3bb..b497505c2 100644 --- a/app/src/main/res/drawable/rounded_toggle_on_24.xml +++ b/app/src/main/res/drawable/rounded_toggle_on_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_top_panel_close_24.xml b/app/src/main/res/drawable/rounded_top_panel_close_24.xml index 3116aa89e..e207b532b 100644 --- a/app/src/main/res/drawable/rounded_top_panel_close_24.xml +++ b/app/src/main/res/drawable/rounded_top_panel_close_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_touch_app_24.xml b/app/src/main/res/drawable/rounded_touch_app_24.xml index 315730328..e8100e111 100644 --- a/app/src/main/res/drawable/rounded_touch_app_24.xml +++ b/app/src/main/res/drawable/rounded_touch_app_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_train_24.xml b/app/src/main/res/drawable/rounded_train_24.xml index 442a455f4..41286315e 100644 --- a/app/src/main/res/drawable/rounded_train_24.xml +++ b/app/src/main/res/drawable/rounded_train_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_upcoming_24.xml b/app/src/main/res/drawable/rounded_upcoming_24.xml index 1f53f7a14..c1d18117d 100644 --- a/app/src/main/res/drawable/rounded_upcoming_24.xml +++ b/app/src/main/res/drawable/rounded_upcoming_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_usb_24.xml b/app/src/main/res/drawable/rounded_usb_24.xml index a83ce738f..a706c1ce8 100644 --- a/app/src/main/res/drawable/rounded_usb_24.xml +++ b/app/src/main/res/drawable/rounded_usb_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_volume_down_24.xml b/app/src/main/res/drawable/rounded_volume_down_24.xml index 0bdf04d02..71e6bc24b 100644 --- a/app/src/main/res/drawable/rounded_volume_down_24.xml +++ b/app/src/main/res/drawable/rounded_volume_down_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_volume_off_24.xml b/app/src/main/res/drawable/rounded_volume_off_24.xml index ced2891f1..cdad5a2ea 100644 --- a/app/src/main/res/drawable/rounded_volume_off_24.xml +++ b/app/src/main/res/drawable/rounded_volume_off_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_volume_up_24.xml b/app/src/main/res/drawable/rounded_volume_up_24.xml index d9a59b447..f81ddaf4f 100644 --- a/app/src/main/res/drawable/rounded_volume_up_24.xml +++ b/app/src/main/res/drawable/rounded_volume_up_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_vpn_key_24.xml b/app/src/main/res/drawable/rounded_vpn_key_24.xml index b09c58149..d845db144 100644 --- a/app/src/main/res/drawable/rounded_vpn_key_24.xml +++ b/app/src/main/res/drawable/rounded_vpn_key_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_wallpaper_24.xml b/app/src/main/res/drawable/rounded_wallpaper_24.xml index 0da0de483..9ae683b29 100644 --- a/app/src/main/res/drawable/rounded_wallpaper_24.xml +++ b/app/src/main/res/drawable/rounded_wallpaper_24.xml @@ -13,8 +13,15 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_watch_24.xml b/app/src/main/res/drawable/rounded_watch_24.xml index 305c0ba6a..069531d38 100644 --- a/app/src/main/res/drawable/rounded_watch_24.xml +++ b/app/src/main/res/drawable/rounded_watch_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_web_24.xml b/app/src/main/res/drawable/rounded_web_24.xml index 22faee8b0..fa59d3687 100644 --- a/app/src/main/res/drawable/rounded_web_24.xml +++ b/app/src/main/res/drawable/rounded_web_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_web_traffic_24.xml b/app/src/main/res/drawable/rounded_web_traffic_24.xml index bd74b6ac8..b399bb6ca 100644 --- a/app/src/main/res/drawable/rounded_web_traffic_24.xml +++ b/app/src/main/res/drawable/rounded_web_traffic_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_widgets_24.xml b/app/src/main/res/drawable/rounded_widgets_24.xml index a5bae0978..22da1b22c 100644 --- a/app/src/main/res/drawable/rounded_widgets_24.xml +++ b/app/src/main/res/drawable/rounded_widgets_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_wifi_calling_bar_3_24.xml b/app/src/main/res/drawable/rounded_wifi_calling_bar_3_24.xml index 24367800e..0b241b823 100644 --- a/app/src/main/res/drawable/rounded_wifi_calling_bar_3_24.xml +++ b/app/src/main/res/drawable/rounded_wifi_calling_bar_3_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_wifi_tethering_24.xml b/app/src/main/res/drawable/rounded_wifi_tethering_24.xml index e180c3c36..e702a77d7 100644 --- a/app/src/main/res/drawable/rounded_wifi_tethering_24.xml +++ b/app/src/main/res/drawable/rounded_wifi_tethering_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_window_open_24.xml b/app/src/main/res/drawable/rounded_window_open_24.xml index 08c6cc65d..d2b0e82f9 100644 --- a/app/src/main/res/drawable/rounded_window_open_24.xml +++ b/app/src/main/res/drawable/rounded_window_open_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_work_24.xml b/app/src/main/res/drawable/rounded_work_24.xml index 66c3b8a69..952e3cb5f 100644 --- a/app/src/main/res/drawable/rounded_work_24.xml +++ b/app/src/main/res/drawable/rounded_work_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/router_24px.xml b/app/src/main/res/drawable/router_24px.xml index 32b27bb18..acf21895e 100644 --- a/app/src/main/res/drawable/router_24px.xml +++ b/app/src/main/res/drawable/router_24px.xml @@ -1,10 +1,10 @@ - + android:viewportHeight="960"> + diff --git a/app/src/main/res/drawable/router_24px_filled.xml b/app/src/main/res/drawable/router_24px_filled.xml index 9c625a572..33def0e31 100644 --- a/app/src/main/res/drawable/router_24px_filled.xml +++ b/app/src/main/res/drawable/router_24px_filled.xml @@ -1,10 +1,10 @@ - + android:viewportHeight="960"> + diff --git a/app/src/main/res/drawable/router_off_24px.xml b/app/src/main/res/drawable/router_off_24px.xml index cbb5ac25a..d87d15b89 100644 --- a/app/src/main/res/drawable/router_off_24px.xml +++ b/app/src/main/res/drawable/router_off_24px.xml @@ -1,10 +1,10 @@ - + android:viewportHeight="960"> + diff --git a/app/src/main/res/drawable/sameerasw_com.xml b/app/src/main/res/drawable/sameerasw_com.xml index 2fb41372f..68f758acd 100644 --- a/app/src/main/res/drawable/sameerasw_com.xml +++ b/app/src/main/res/drawable/sameerasw_com.xml @@ -1,18 +1,18 @@ - - - + android:viewportHeight="12"> + + + diff --git a/app/src/main/res/drawable/samsung.xml b/app/src/main/res/drawable/samsung.xml index 7fc874f30..d585e8f89 100644 --- a/app/src/main/res/drawable/samsung.xml +++ b/app/src/main/res/drawable/samsung.xml @@ -3,7 +3,7 @@ android:height="800dp" android:viewportWidth="200.78" android:viewportHeight="200.78"> - + diff --git a/app/src/main/res/drawable/sony.xml b/app/src/main/res/drawable/sony.xml index cded39aba..5171225ed 100644 --- a/app/src/main/res/drawable/sony.xml +++ b/app/src/main/res/drawable/sony.xml @@ -3,8 +3,8 @@ android:height="225.3dp" android:viewportWidth="1280" android:viewportHeight="225.3"> - + diff --git a/app/src/main/res/drawable/twotone_dns_24.xml b/app/src/main/res/drawable/twotone_dns_24.xml index 034dd7b2e..9b78abf2a 100644 --- a/app/src/main/res/drawable/twotone_dns_24.xml +++ b/app/src/main/res/drawable/twotone_dns_24.xml @@ -1,7 +1,18 @@ - - - - - - + + + + + + diff --git a/app/src/main/res/drawable/vivo.xml b/app/src/main/res/drawable/vivo.xml index 8d6174fe6..3dc9aa270 100644 --- a/app/src/main/res/drawable/vivo.xml +++ b/app/src/main/res/drawable/vivo.xml @@ -3,20 +3,20 @@ android:height="292dp" android:viewportWidth="1115.6" android:viewportHeight="292"> - - + + diff --git a/app/src/main/res/drawable/xiaomi.xml b/app/src/main/res/drawable/xiaomi.xml index 95cd9fc44..585b48728 100644 --- a/app/src/main/res/drawable/xiaomi.xml +++ b/app/src/main/res/drawable/xiaomi.xml @@ -3,7 +3,7 @@ android:height="800dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/app/src/main/res/font/google_sans_flex_round.xml b/app/src/main/res/font/google_sans_flex_round.xml index eb54ae546..d73dee5f4 100644 --- a/app/src/main/res/font/google_sans_flex_round.xml +++ b/app/src/main/res/font/google_sans_flex_round.xml @@ -4,19 +4,19 @@ + app:fontVariationSettings="'ROND' 100" /> + app:fontVariationSettings="'ROND' 100" /> + app:fontVariationSettings="'ROND' 100" /> diff --git a/app/src/main/res/layout/screen_off_widget.xml b/app/src/main/res/layout/screen_off_widget.xml index 7742af370..f70f5d69a 100644 --- a/app/src/main/res/layout/screen_off_widget.xml +++ b/app/src/main/res/layout/screen_off_widget.xml @@ -3,6 +3,5 @@ android:id="@+id/widget_container" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@android:color/transparent"> - + android:background="@android:color/transparent"> diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml index 1084c2408..f30783b21 100644 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -1,6 +1,6 @@ - - - + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml index 1084c2408..f30783b21 100644 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -1,6 +1,6 @@ - - - + + + \ No newline at end of file diff --git a/app/src/main/res/values-night-v31/splash.xml b/app/src/main/res/values-night-v31/splash.xml index a768473b7..d9a24b930 100644 --- a/app/src/main/res/values-night-v31/splash.xml +++ b/app/src/main/res/values-night-v31/splash.xml @@ -1,5 +1,6 @@ + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 484496506..2e5fb0df6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -295,8 +295,8 @@ Authenticate to enable this feature Authenticate to disable this feature Disable quick setting tiles when the device is locked -Disable QS Locked -Prevent expanding Quick Settings when device is locked + Disable QS Locked + Prevent expanding Quick Settings when device is locked Re-order modes Long press to toggle @@ -347,7 +347,7 @@ Samsung Smart Features Samsung Services Ethernet - + Show Seconds in Clock Battery Percentage @@ -865,7 +865,7 @@ Start Time End Time Repeat on - + Charging Screen On @@ -902,7 +902,7 @@ Delete Enable Disable - + Automation Service Automations Active Monitoring system events for your automations @@ -1218,7 +1218,7 @@ What the hell is this app? Good question,\n\nI always wanted to extract the most out of my devices as I\'ve been a rooted user for ever since I got my first Project Treble device. And I\'ve been loving the Tasker app which is like the god when comes automation and utilizing every possible API and internal features of Android.\n\nSo I am not unrooted and back on stock Android beta experience and wanted to get the most out from what is possible with given privileges. Might as well share them. So with my beginner knowledge in Kotlin Jetpack and with the support of many research and assist tools and also the great community, I built an all-in-one app containing everything I wanted to be in my Android with given permissions. And here it is.\n\nFeature requests are welcome, I will consider and see if they are achievable with available permissions and my skills. Nowadays what is not possible. :)\n\nWhy not on Play Store?\nI don\'t wanna risk getting my Developer account banned due to the highly sensitive and internal permissions and APIs being used in the app. But with the way Android sideloading is headed, let\'s see what we have to do. I do understand the concerns of sideloaded apps being malicious.\nWhile we are at the topic, Checkout my other app AirSync if you are a mac + Android user. *shameless plug*\n\nEnjoy, Keep building! (っ◕‿◕)っ - + Bug report copied to clipboard Bug report @@ -1273,7 +1273,8 @@ Keys Customize layout and behavior Keyboard Height - Adjust the total vertical size of the keyboard> + Adjust the total vertical size of the keyboard + > Bottom Padding Add space below the keyboard Haptic Feedback @@ -1353,26 +1354,26 @@ Show volume slider in tile Cycle Behavior Choose modes to cycle through - - + + Sound and Haptics Volume and haptic features - + Security and Privacy Protect and secure your device - + Notifications and Alerts Never miss your priorities - + Input and Actions Control your device with ease - + Widgets At a glance on your home screen - + Display Visuals to enhance your experience - + Watch Integrations with WearOS No Watch detected @@ -1528,7 +1529,7 @@ What\'s in Premium? April Fools! Just kidding, Essentials is and will always be free and open source. Enjoy! (っ◕‿◕)っ - + System Ripple Animation Bottom @@ -1611,7 +1612,7 @@ Purple Pink Teal - + Device Specs Retired Inaccurate GSMArena-powered specifications have been removed to keep device insights clean, fast, and completely reliable. diff --git a/app/src/main/res/xml/accessibility_service_config.xml b/app/src/main/res/xml/accessibility_service_config.xml index 3ab033113..ea94d4704 100644 --- a/app/src/main/res/xml/accessibility_service_config.xml +++ b/app/src/main/res/xml/accessibility_service_config.xml @@ -1,11 +1,11 @@ diff --git a/app/src/main/res/xml/batteries_widget_info.xml b/app/src/main/res/xml/batteries_widget_info.xml index 34f47dd95..fbacc626c 100644 --- a/app/src/main/res/xml/batteries_widget_info.xml +++ b/app/src/main/res/xml/batteries_widget_info.xml @@ -4,9 +4,9 @@ android:initialLayout="@layout/glance_default_loading_layout" android:minWidth="40dp" android:minHeight="40dp" - android:resizeMode="horizontal|vertical" android:minResizeWidth="40dp" android:minResizeHeight="40dp" + android:resizeMode="horizontal|vertical" android:targetCellWidth="1" android:targetCellHeight="1" android:updatePeriodMillis="1800000" diff --git a/app/src/main/res/xml/favorites_widget_info.xml b/app/src/main/res/xml/favorites_widget_info.xml index 3437da818..804fbad47 100644 --- a/app/src/main/res/xml/favorites_widget_info.xml +++ b/app/src/main/res/xml/favorites_widget_info.xml @@ -4,9 +4,9 @@ android:initialLayout="@layout/glance_default_loading_layout" android:minWidth="80dp" android:minHeight="80dp" - android:resizeMode="horizontal|vertical" android:minResizeWidth="40dp" android:minResizeHeight="40dp" + android:resizeMode="horizontal|vertical" android:targetCellWidth="2" android:targetCellHeight="1" android:updatePeriodMillis="0" diff --git a/app/src/main/res/xml/file_paths.xml b/app/src/main/res/xml/file_paths.xml index d4e9e40e8..a0f2a03ba 100644 --- a/app/src/main/res/xml/file_paths.xml +++ b/app/src/main/res/xml/file_paths.xml @@ -1,5 +1,9 @@ - - + + diff --git a/app/src/main/res/xml/locales_config.xml b/app/src/main/res/xml/locales_config.xml index c59e4e531..344539713 100644 --- a/app/src/main/res/xml/locales_config.xml +++ b/app/src/main/res/xml/locales_config.xml @@ -1,34 +1,34 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/method.xml b/app/src/main/res/xml/method.xml index 47c1d5720..b2ea3fd55 100644 --- a/app/src/main/res/xml/method.xml +++ b/app/src/main/res/xml/method.xml @@ -2,7 +2,7 @@ + android:imeSubtypeMode="keyboard" + android:label="@string/subtype_en_us" /> diff --git a/app/src/main/res/xml/pixel_searchbar_widget_info.xml b/app/src/main/res/xml/pixel_searchbar_widget_info.xml index b077b029b..cef5711b4 100644 --- a/app/src/main/res/xml/pixel_searchbar_widget_info.xml +++ b/app/src/main/res/xml/pixel_searchbar_widget_info.xml @@ -4,9 +4,9 @@ android:initialLayout="@layout/glance_default_loading_layout" android:minWidth="40dp" android:minHeight="40dp" - android:resizeMode="horizontal|vertical" android:minResizeWidth="40dp" android:minResizeHeight="40dp" + android:resizeMode="horizontal|vertical" android:targetCellWidth="4" android:targetCellHeight="1" android:updatePeriodMillis="1800000" diff --git a/app/src/main/res/xml/screen_off_widget_info.xml b/app/src/main/res/xml/screen_off_widget_info.xml index 26dd15327..900231c01 100644 --- a/app/src/main/res/xml/screen_off_widget_info.xml +++ b/app/src/main/res/xml/screen_off_widget_info.xml @@ -1,15 +1,15 @@ diff --git a/app/src/main/res/xml/shortcuts.xml b/app/src/main/res/xml/shortcuts.xml index 77b3812c6..7fa80e118 100644 --- a/app/src/main/res/xml/shortcuts.xml +++ b/app/src/main/res/xml/shortcuts.xml @@ -1,15 +1,15 @@ + android:shortcutId="app_freezing" + android:shortcutLongLabel="@string/freeze_shortcut_long_label" + android:shortcutShortLabel="@string/freeze_shortcut_short_label"> + android:targetClass="com.sameerasw.essentials.ui.activities.AppFreezingActivity" + android:targetPackage="com.sameerasw.essentials" /> diff --git a/app/src/test/java/com/sameerasw/essentials/ExampleUnitTest.kt b/app/src/test/java/com/sameerasw/essentials/ExampleUnitTest.kt index 5102900f4..4f09cd7bf 100644 --- a/app/src/test/java/com/sameerasw/essentials/ExampleUnitTest.kt +++ b/app/src/test/java/com/sameerasw/essentials/ExampleUnitTest.kt @@ -1,9 +1,8 @@ package com.sameerasw.essentials +import org.junit.Assert.assertEquals import org.junit.Test -import org.junit.Assert.* - /** * Example local unit test, which will execute on the development machine (host). *