diff --git a/desktop/src/apps/AgentsApp.tsx b/desktop/src/apps/AgentsApp.tsx index b48f85c3..23891472 100644 --- a/desktop/src/apps/AgentsApp.tsx +++ b/desktop/src/apps/AgentsApp.tsx @@ -1,9 +1,11 @@ import { useState, useEffect, useRef, useCallback } from "react"; -import { Bot, Plus, Trash2, ScrollText, Play, Server, X, ChevronRight, ChevronLeft, Check, Wrench, MessageSquare, PauseCircle, RotateCcw, Archive, HardDrive } from "lucide-react"; +import { Bot, Box, Plus, Trash2, ScrollText, Play, Server, X, ChevronRight, ChevronLeft, Check, Wrench, MessageSquare, PauseCircle, RotateCcw, Archive, HardDrive } from "lucide-react"; +import { fetchLatestFrameworks, LatestVersion } from "@/lib/framework-api"; import { AgentSkillsPanel } from "./AgentSkillsPanel"; import { AgentMessagesPanel } from "./AgentMessagesPanel"; import { PersonaTab } from "@/components/agent-settings/PersonaTab"; import { MemoryTab } from "@/components/agent-settings/MemoryTab"; +import { FrameworkTab } from "@/components/agent-settings/FrameworkTab"; import { fetchClusterWorkers, workersToAggregated, @@ -53,6 +55,7 @@ interface Agent { agent_md?: string; source_persona_id?: string | null; migrated_to_v2_personas?: boolean; + framework_version_sha?: string | null; } interface DiskState { @@ -115,6 +118,7 @@ const STATUS_STYLES: Record = { function AgentRow({ agent, diskState, + latestByFramework, onViewLogs, onViewSkills, onViewMessages, @@ -123,6 +127,7 @@ function AgentRow({ }: { agent: Agent; diskState?: DiskState | null; + latestByFramework: Record; onViewLogs: (name: string) => void; onViewSkills: (name: string) => void; onViewMessages: (name: string) => void; @@ -130,6 +135,11 @@ function AgentRow({ onResume: (name: string) => void; }) { const emoji = resolveAgentEmoji(agent.emoji, agent.framework); + const latestForAgent = agent.framework ? latestByFramework[agent.framework] : undefined; + const updateAvailable = + agent.framework_version_sha && + latestForAgent && + latestForAgent.sha !== agent.framework_version_sha; return (
@@ -145,6 +155,13 @@ function AgentRow({ {emoji} {agent.display_name || agent.name} + {updateAvailable && ( + + )} {agent.paused && ( Memory + + + Framework + Skills @@ -381,6 +402,9 @@ function AgentDetailPanel({ + + + (null); const [diskStates, setDiskStates] = useState>({}); const [quotaErrors, setQuotaErrors] = useState>({}); + const [latestByFramework, setLatestByFramework] = useState>({}); const fetchAgents = useCallback(async () => { try { @@ -1554,6 +1579,7 @@ export function AgentsApp({ windowId: _windowId }: { windowId: string }) { kv_cache_quant_k: a.kv_cache_quant_k ? String(a.kv_cache_quant_k) : (a.kv_cache_quant ? String(a.kv_cache_quant) : "fp16"), kv_cache_quant_v: a.kv_cache_quant_v ? String(a.kv_cache_quant_v) : (a.kv_cache_quant ? String(a.kv_cache_quant) : "fp16"), kv_cache_quant_boundary_layers: typeof a.kv_cache_quant_boundary_layers === "number" ? a.kv_cache_quant_boundary_layers : 0, + framework_version_sha: a.framework_version_sha != null ? String(a.framework_version_sha) : null, })) ); setLoading(false); @@ -1629,6 +1655,10 @@ export function AgentsApp({ windowId: _windowId }: { windowId: string }) { return () => window.removeEventListener("taos:agent-resumed", handler); }, [fetchAgents]); + useEffect(() => { + fetchLatestFrameworks().then(setLatestByFramework).catch(() => {}); + }, []); + async function handleResume(name: string) { try { const res = await fetch(`/api/agents/${encodeURIComponent(name)}/resume`, { @@ -1881,6 +1911,7 @@ export function AgentsApp({ windowId: _windowId }: { windowId: string }) { key={agent.name} agent={agent} diskState={diskStates[agent.name] ?? null} + latestByFramework={latestByFramework} onViewLogs={(name) => setDetail({ name, tab: "logs" })} onViewSkills={(name) => setDetail({ name, tab: "skills" })} onViewMessages={(name) => setDetail({ name, tab: "messages" })} diff --git a/desktop/src/apps/StoreApp.tsx b/desktop/src/apps/StoreApp.tsx index e2e647ea..bd6b76e6 100644 --- a/desktop/src/apps/StoreApp.tsx +++ b/desktop/src/apps/StoreApp.tsx @@ -1,6 +1,7 @@ import { useState, useEffect, useCallback } from "react"; import { ShoppingBag, Search, Download, Trash2, Check, Package, Loader2, Bot, Brain, Server, Plug, Wrench, Image, Music, Video, Globe, Home, Cpu } from "lucide-react"; import { Button, Card, CardContent, CardFooter, CardHeader, Input } from "@/components/ui"; +import { fetchLatestFrameworks, LatestVersion } from "@/lib/framework-api"; /* ------------------------------------------------------------------ */ /* Types */ @@ -392,7 +393,7 @@ function resolveIconUrl(appId: string): string | null { /* AppCard */ /* ------------------------------------------------------------------ */ -function AppCard({ app, onInstall, onUninstall }: { app: CatalogApp; onInstall: (id: string) => void; onUninstall: (id: string) => void }) { +function AppCard({ app, affected, onInstall, onUninstall }: { app: CatalogApp; affected: number; onInstall: (id: string) => void; onUninstall: (id: string) => void }) { const [busy, setBusy] = useState(false); const [iconFailed, setIconFailed] = useState(false); @@ -448,9 +449,14 @@ function AppCard({ app, onInstall, onUninstall }: { app: CatalogApp; onInstall: )}
-
+
{app.name} {app.installed && } + {affected > 0 && ( + + Update available · {affected} {affected === 1 ? "agent" : "agents"} + + )}
v{app.version}
@@ -497,6 +503,8 @@ export function StoreApp({ windowId: _windowId }: { windowId: string }) { const [search, setSearch] = useState(""); const [activeCategory, setActiveCategory] = useState("all"); const [loading, setLoading] = useState(true); + const [latest, setLatest] = useState>({}); + const [agentList, setAgentList] = useState([]); const fetchCatalog = useCallback(async () => { try { @@ -540,6 +548,14 @@ export function StoreApp({ windowId: _windowId }: { windowId: string }) { if (cat) setActiveCategory(cat); }, []); + useEffect(() => { + fetchLatestFrameworks().then(setLatest).catch(() => {}); + fetch("/api/agents") + .then((r) => r.ok ? r.json() : []) + .then((j) => setAgentList(Array.isArray(j) ? j : (j?.agents ?? []))) + .catch(() => {}); + }, []); + const activeCat = CATEGORIES.find((c) => c.id === activeCategory); const filtered = apps.filter((app) => { @@ -660,9 +676,21 @@ export function StoreApp({ windowId: _windowId }: { windowId: string }) {
) : (
- {filtered.map((app) => ( - - ))} + {filtered.map((app) => { + const latestForApp = latest[app.id]; + const affected = app.type === "agent-framework" + ? agentList.filter( + (a: any) => + a.framework === app.id && + a.framework_version_sha && + latestForApp && + latestForApp.sha !== a.framework_version_sha + ).length + : 0; + return ( + + ); + })}
)} diff --git a/desktop/src/components/agent-settings/FrameworkTab.tsx b/desktop/src/components/agent-settings/FrameworkTab.tsx new file mode 100644 index 00000000..8839a7a2 --- /dev/null +++ b/desktop/src/components/agent-settings/FrameworkTab.tsx @@ -0,0 +1,114 @@ +import { useEffect, useState } from "react"; +import { fetchFrameworkState, FrameworkState, startFrameworkUpdate } from "@/lib/framework-api"; + +export function FrameworkTab({ agent, onUpdated }: { agent: { name: string }; onUpdated: () => void }) { + const [state, setState] = useState(null); + const [err, setErr] = useState(null); + const [confirming, setConfirming] = useState(false); + const [submitting, setSubmitting] = useState(false); + const [elapsed, setElapsed] = useState(0); + + async function load() { + try { setState(await fetchFrameworkState(agent.name)); setErr(null); } + catch (e: any) { setErr(String(e)); } + } + + useEffect(() => { load(); }, [agent.name]); + + useEffect(() => { + if (state?.update_status !== "updating") return; + const id = setInterval(() => { load(); }, 2000); + return () => clearInterval(id); + }, [state?.update_status]); + + useEffect(() => { + if (state?.update_status !== "updating" || !state.update_started_at) { setElapsed(0); return; } + const tick = () => setElapsed(Math.floor(Date.now() / 1000) - (state.update_started_at ?? 0)); + tick(); + const id = setInterval(tick, 1000); + return () => clearInterval(id); + }, [state?.update_status, state?.update_started_at]); + + async function doUpdate() { + setSubmitting(true); + try { + // Pin the request to the exact tag the user just confirmed so the + // backend can't drift to a newer release if its cache advances mid-click. + await startFrameworkUpdate(agent.name, state?.latest?.tag); + // Optimistically flip to "updating" so the polling effect arms even + // if a racing load() reads an idle status before the backend writes. + setState((prev) => prev ? { ...prev, update_status: "updating", update_started_at: Math.floor(Date.now() / 1000) } : prev); + await load(); + onUpdated(); + } catch (e: any) { setErr(String(e)); } + finally { setSubmitting(false); setConfirming(false); } + } + + if (err) return
Error: {err}
; + if (!state) return
Loading…
; + + return ( +
+
This agent runs {state.framework}
+
+
Installed
+
{state.installed.tag ?? "(unknown)"} · {state.installed.sha ?? "—"}
+
Latest
+
+ {state.latest + ? <>{state.latest.tag} · {state.latest.sha} + {state.latest.published_at && published {state.latest.published_at}} + : (not available)} +
+
+ + {state.update_available && state.update_status === "idle" && ( +
+ Update available + +
+ )} + + {!state.update_available && state.update_status === "idle" && state.latest && ( +
✓ You're on the latest version
+ )} + + {state.update_status === "updating" && ( +
+ Updating {state.framework}… started {elapsed}s ago. +
+ )} + + {state.update_status === "failed" && ( +
+
Update failed: {state.last_error}
+ {state.last_snapshot && ( +
Snapshot retained: {state.last_snapshot}
+ )} +
+ )} + + {confirming && ( +
+
+

+ Update {agent.name}'s {state.framework} to {state.latest?.tag ?? "latest"}? + The agent will go offline for up to 2 minutes. Messages will queue. +

+
+ + +
+
+
+ )} + +
Switch framework — coming soon
+
+ ); +} diff --git a/desktop/src/lib/framework-api.ts b/desktop/src/lib/framework-api.ts new file mode 100644 index 00000000..11fb1835 --- /dev/null +++ b/desktop/src/lib/framework-api.ts @@ -0,0 +1,37 @@ +export type FrameworkVersion = { tag: string | null; sha: string | null }; +export type LatestVersion = { tag: string; sha: string; published_at?: string }; + +export interface FrameworkState { + framework: string; + installed: FrameworkVersion; + latest: LatestVersion | null; + update_available: boolean; + update_status: "idle" | "updating" | "failed"; + update_started_at: number | null; + last_error: string | null; + last_snapshot: string | null; +} + +export async function fetchFrameworkState(slug: string): Promise { + const r = await fetch(`/api/agents/${encodeURIComponent(slug)}/framework`); + if (!r.ok) throw new Error(`framework fetch ${r.status}`); + return r.json(); +} + +export async function startFrameworkUpdate(slug: string, targetVersion?: string): Promise { + const r = await fetch(`/api/agents/${encodeURIComponent(slug)}/framework/update`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(targetVersion ? { target_version: targetVersion } : {}), + }); + if (!r.ok) { + const body = await r.json().catch(() => ({})); + throw new Error(body.error || `update start ${r.status}`); + } +} + +export async function fetchLatestFrameworks(refresh = false): Promise> { + const r = await fetch(`/api/frameworks/latest${refresh ? "?refresh=true" : ""}`); + if (!r.ok) throw new Error(`latest frameworks ${r.status}`); + return r.json(); +} diff --git a/desktop/tsconfig.tsbuildinfo b/desktop/tsconfig.tsbuildinfo index f5589a36..aafdacb4 100644 --- a/desktop/tsconfig.tsbuildinfo +++ b/desktop/tsconfig.tsbuildinfo @@ -1 +1 @@ -{"root":["./src/app.tsx","./src/chatstandalone.tsx","./src/chat-main.tsx","./src/main.tsx","./src/apps/activityapp.tsx","./src/apps/agentbrowsersapp.tsx","./src/apps/agentmessagespanel.tsx","./src/apps/agentskillspanel.tsx","./src/apps/agentsapp.tsx","./src/apps/browserapp.tsx","./src/apps/calculatorapp.tsx","./src/apps/calendarapp.tsx","./src/apps/channelsapp.tsx","./src/apps/chessapp.tsx","./src/apps/clusterapp.tsx","./src/apps/contactsapp.tsx","./src/apps/crosswordsapp.tsx","./src/apps/filesapp.tsx","./src/apps/githubapp.tsx","./src/apps/imageviewerapp.tsx","./src/apps/imagesapp.tsx","./src/apps/importapp.tsx","./src/apps/libraryapp.tsx","./src/apps/mcpapp.tsx","./src/apps/mediaplayerapp.tsx","./src/apps/memoryapp.tsx","./src/apps/messagesapp.tsx","./src/apps/modelsapp.tsx","./src/apps/placeholderapp.tsx","./src/apps/providersapp.tsx","./src/apps/redditapp.tsx","./src/apps/secretsapp.tsx","./src/apps/settingsapp.tsx","./src/apps/storeapp.tsx","./src/apps/tasksapp.tsx","./src/apps/terminalapp.tsx","./src/apps/texteditorapp.tsx","./src/apps/weatherapp.tsx","./src/apps/wordleapp.tsx","./src/apps/xapp.tsx","./src/apps/youtubeapp.tsx","./src/apps/__tests__/agentsapp.archived.test.tsx","./src/components/contextmenu.tsx","./src/components/desktop.tsx","./src/components/dock.tsx","./src/components/dockicon.tsx","./src/components/emojipicker.tsx","./src/components/launchpad.tsx","./src/components/launchpadicon.tsx","./src/components/logingate.tsx","./src/components/loginscreen.tsx","./src/components/migrationbanner.tsx","./src/components/modelbrowser.tsx","./src/components/modelpickerflow.tsx","./src/components/modelpickermodal.tsx","./src/components/notificationcentre.tsx","./src/components/notificationtoast.tsx","./src/components/onboardingscreen.tsx","./src/components/searchpalette.tsx","./src/components/snapoverlay.tsx","./src/components/statusindicators.tsx","./src/components/topbar.tsx","./src/components/wallpaperpicker.tsx","./src/components/widgetlayer.tsx","./src/components/window.tsx","./src/components/windowcontent.tsx","./src/components/agent-settings/memorytab.tsx","./src/components/agent-settings/personatab.tsx","./src/components/memory/agentmemorytable.tsx","./src/components/memory/dashboard.tsx","./src/components/memory/memorysettings.tsx","./src/components/memory/pipelinecontrol.tsx","./src/components/memory/schemaformrenderer.tsx","./src/components/memory/sessionbrowser.tsx","./src/components/memory/sessiondetail.tsx","./src/components/mobile/cardswitcher.tsx","./src/components/mobile/mobileapp.tsx","./src/components/mobile/mobileappwindow.tsx","./src/components/mobile/mobilebottomnav.tsx","./src/components/mobile/mobiledock.tsx","./src/components/mobile/mobilehomepages.tsx","./src/components/mobile/mobilelist.tsx","./src/components/mobile/mobilesplitview.tsx","./src/components/mobile/mobiletopbar.tsx","./src/components/mobile/pillbar.tsx","./src/components/persona-picker/personablank.tsx","./src/components/persona-picker/personabrowse.tsx","./src/components/persona-picker/personacreate.tsx","./src/components/persona-picker/personapicker.tsx","./src/components/persona-picker/types.ts","./src/components/ui/button.tsx","./src/components/ui/card.tsx","./src/components/ui/index.ts","./src/components/ui/input.tsx","./src/components/ui/label.tsx","./src/components/ui/switch.tsx","./src/components/ui/tabs.tsx","./src/components/ui/textarea.tsx","./src/components/ui/toolbar.tsx","./src/components/widgets/agentstatuswidget.tsx","./src/components/widgets/clockwidget.tsx","./src/components/widgets/greetingwidget.tsx","./src/components/widgets/quicknoteswidget.tsx","./src/components/widgets/systemstatswidget.tsx","./src/components/widgets/weatherwidget.tsx","./src/hooks/use-clock.ts","./src/hooks/use-device-mode.ts","./src/hooks/use-focus-trap.ts","./src/hooks/use-is-mobile.ts","./src/hooks/use-list-nav.ts","./src/hooks/use-server-preference.ts","./src/hooks/use-session-persistence.ts","./src/hooks/use-shortcut-registry.tsx","./src/hooks/use-snap-zones.ts","./src/hooks/use-widget-size.ts","./src/lib/agent-browsers.ts","./src/lib/agent-emoji.ts","./src/lib/cluster.ts","./src/lib/github.ts","./src/lib/hw-detect.ts","./src/lib/knowledge.ts","./src/lib/memory.ts","./src/lib/models.ts","./src/lib/personas-api.ts","./src/lib/reddit.ts","./src/lib/slug.ts","./src/lib/utils.ts","./src/lib/x-monitor.ts","./src/lib/youtube.ts","./src/registry/app-registry.ts","./src/stores/dock-store.ts","./src/stores/mobile-home-store.ts","./src/stores/notification-store.ts","./src/stores/process-store.ts","./src/stores/theme-store.ts","./src/stores/widget-store.ts","./src/types/pell.d.ts","./src/types/plyr.d.ts","./src/types/react-grid-layout.d.ts"],"version":"5.9.3"} \ No newline at end of file +{"root":["./src/app.tsx","./src/chatstandalone.tsx","./src/chat-main.tsx","./src/main.tsx","./src/apps/activityapp.tsx","./src/apps/agentbrowsersapp.tsx","./src/apps/agentmessagespanel.tsx","./src/apps/agentskillspanel.tsx","./src/apps/agentsapp.tsx","./src/apps/browserapp.tsx","./src/apps/calculatorapp.tsx","./src/apps/calendarapp.tsx","./src/apps/channelsapp.tsx","./src/apps/chessapp.tsx","./src/apps/clusterapp.tsx","./src/apps/contactsapp.tsx","./src/apps/crosswordsapp.tsx","./src/apps/filesapp.tsx","./src/apps/githubapp.tsx","./src/apps/imageviewerapp.tsx","./src/apps/imagesapp.tsx","./src/apps/importapp.tsx","./src/apps/libraryapp.tsx","./src/apps/mcpapp.tsx","./src/apps/mediaplayerapp.tsx","./src/apps/memoryapp.tsx","./src/apps/messagesapp.tsx","./src/apps/modelsapp.tsx","./src/apps/placeholderapp.tsx","./src/apps/providersapp.tsx","./src/apps/redditapp.tsx","./src/apps/secretsapp.tsx","./src/apps/settingsapp.tsx","./src/apps/storeapp.tsx","./src/apps/tasksapp.tsx","./src/apps/terminalapp.tsx","./src/apps/texteditorapp.tsx","./src/apps/weatherapp.tsx","./src/apps/wordleapp.tsx","./src/apps/xapp.tsx","./src/apps/youtubeapp.tsx","./src/apps/__tests__/agentsapp.archived.test.tsx","./src/components/contextmenu.tsx","./src/components/desktop.tsx","./src/components/dock.tsx","./src/components/dockicon.tsx","./src/components/emojipicker.tsx","./src/components/launchpad.tsx","./src/components/launchpadicon.tsx","./src/components/logingate.tsx","./src/components/loginscreen.tsx","./src/components/migrationbanner.tsx","./src/components/modelbrowser.tsx","./src/components/modelpickerflow.tsx","./src/components/modelpickermodal.tsx","./src/components/notificationcentre.tsx","./src/components/notificationtoast.tsx","./src/components/onboardingscreen.tsx","./src/components/searchpalette.tsx","./src/components/snapoverlay.tsx","./src/components/statusindicators.tsx","./src/components/topbar.tsx","./src/components/wallpaperpicker.tsx","./src/components/widgetlayer.tsx","./src/components/window.tsx","./src/components/windowcontent.tsx","./src/components/agent-settings/frameworktab.tsx","./src/components/agent-settings/memorytab.tsx","./src/components/agent-settings/personatab.tsx","./src/components/memory/agentmemorytable.tsx","./src/components/memory/dashboard.tsx","./src/components/memory/memorysettings.tsx","./src/components/memory/pipelinecontrol.tsx","./src/components/memory/schemaformrenderer.tsx","./src/components/memory/sessionbrowser.tsx","./src/components/memory/sessiondetail.tsx","./src/components/mobile/cardswitcher.tsx","./src/components/mobile/mobileapp.tsx","./src/components/mobile/mobileappwindow.tsx","./src/components/mobile/mobilebottomnav.tsx","./src/components/mobile/mobiledock.tsx","./src/components/mobile/mobilehomepages.tsx","./src/components/mobile/mobilelist.tsx","./src/components/mobile/mobilesplitview.tsx","./src/components/mobile/mobiletopbar.tsx","./src/components/mobile/pillbar.tsx","./src/components/persona-picker/personablank.tsx","./src/components/persona-picker/personabrowse.tsx","./src/components/persona-picker/personacreate.tsx","./src/components/persona-picker/personapicker.tsx","./src/components/persona-picker/types.ts","./src/components/ui/button.tsx","./src/components/ui/card.tsx","./src/components/ui/index.ts","./src/components/ui/input.tsx","./src/components/ui/label.tsx","./src/components/ui/switch.tsx","./src/components/ui/tabs.tsx","./src/components/ui/textarea.tsx","./src/components/ui/toolbar.tsx","./src/components/widgets/agentstatuswidget.tsx","./src/components/widgets/clockwidget.tsx","./src/components/widgets/greetingwidget.tsx","./src/components/widgets/quicknoteswidget.tsx","./src/components/widgets/systemstatswidget.tsx","./src/components/widgets/weatherwidget.tsx","./src/hooks/use-clock.ts","./src/hooks/use-device-mode.ts","./src/hooks/use-focus-trap.ts","./src/hooks/use-is-mobile.ts","./src/hooks/use-list-nav.ts","./src/hooks/use-server-preference.ts","./src/hooks/use-session-persistence.ts","./src/hooks/use-shortcut-registry.tsx","./src/hooks/use-snap-zones.ts","./src/hooks/use-widget-size.ts","./src/lib/agent-browsers.ts","./src/lib/agent-emoji.ts","./src/lib/cluster.ts","./src/lib/framework-api.ts","./src/lib/github.ts","./src/lib/hw-detect.ts","./src/lib/knowledge.ts","./src/lib/memory.ts","./src/lib/models.ts","./src/lib/personas-api.ts","./src/lib/reddit.ts","./src/lib/slug.ts","./src/lib/utils.ts","./src/lib/x-monitor.ts","./src/lib/youtube.ts","./src/registry/app-registry.ts","./src/stores/dock-store.ts","./src/stores/mobile-home-store.ts","./src/stores/notification-store.ts","./src/stores/process-store.ts","./src/stores/theme-store.ts","./src/stores/widget-store.ts","./src/types/pell.d.ts","./src/types/plyr.d.ts","./src/types/react-grid-layout.d.ts"],"version":"5.9.3"} \ No newline at end of file diff --git a/static/desktop/assets/ActivityApp-D30Dsi6I.js b/static/desktop/assets/ActivityApp-DLf5-AAB.js similarity index 95% rename from static/desktop/assets/ActivityApp-D30Dsi6I.js rename to static/desktop/assets/ActivityApp-DLf5-AAB.js index e85276eb..1b363dfe 100644 --- a/static/desktop/assets/ActivityApp-D30Dsi6I.js +++ b/static/desktop/assets/ActivityApp-DLf5-AAB.js @@ -1 +1 @@ -import{r as p,j as e}from"./vendor-react-l6srOxy7.js";import{B as Z,C as h,c as u}from"./toolbar-UW6q5pkx.js";import{w as ae,b as le,S as K,c as re,d as ie}from"./cluster-Ca85Gm-W.js";import{Y as ne,A as I,a9 as O,C as ce,Z as xe,M as de,a as oe,a1 as me,m as pe,u as he,az as ue,aA as je,aB as be}from"./vendor-icons-CiM_hUpN.js";import"./vendor-radix-BhM7AEEG.js";import"./vendor-layout-B-pp9n1f.js";function fe(l){return l?l.replace(/\(R\)|\(TM\)|\(r\)|\(tm\)/g,"").replace(/\s+CPU\s+@.*$/i,"").replace(/\s+@\s+.*$/,"").replace(/\s+/g," ").trim():""}function S(l,n){var g,A,L;if(!n)return"";if(l==="cpu"){if((g=n.cpu)!=null&&g.soc)return n.cpu.soc.toUpperCase();const t=fe((A=n.cpu)==null?void 0:A.model);return t||(((L=n.cpu)==null?void 0:L.arch)==="aarch64"?"ARM64":"CPU")}if(l==="gpu"){const t=n.gpu;if(!t||!t.type||t.type==="none")return"";if(t.type==="nvidia"){const w=(t.model||"").replace(/NVIDIA\s*GeForce\s*/i,"").replace(/^NVIDIA\s*/i,"").trim()||"GPU",M=t.vram_mb?` ${Math.round(t.vram_mb/1024)}GB`:"";return`NVIDIA ${w}${M}`}if(t.type==="amd"){const w=t.vram_mb?` ${Math.round(t.vram_mb/1024)}GB`:"";return`AMD ${t.model||"GPU"}${w}`}return t.type==="apple"?t.model||"Apple Silicon":t.type==="mali"?t.model||"Mali GPU":t.model||t.type.toUpperCase()}if(l==="npu"){const t=n.npu;return!t||!t.type||t.type==="none"?"":t.type==="rknpu"?`RK3588${t.tops?` · ${t.tops} TOPS`:""}`:t.device?t.device.toUpperCase():t.type.toUpperCase()}return""}function P(l){return l<1024?`${l} B/s`:l<1024*1024?`${(l/1024).toFixed(1)} KB/s`:l<1024*1024*1024?`${(l/(1024*1024)).toFixed(1)} MB/s`:`${(l/(1024*1024*1024)).toFixed(2)} GB/s`}function j(l){return l==null?"—":l>=1024?`${(l/1024).toFixed(1)} GB`:`${l} MB`}function Ne(l){return l<50?"#43e97b":l<80?"#febc2e":"#ff5f57"}function v({value:l,label:n,unit:g="%"}){return e.jsxs("div",{className:"flex items-center gap-2",children:[n&&e.jsx("span",{className:"text-[10px] text-shell-text-tertiary w-12 shrink-0",children:n}),e.jsx("div",{className:"flex-1 h-1.5 rounded-full bg-white/5 overflow-hidden",children:e.jsx("div",{className:"h-full transition-all rounded-full",style:{width:`${Math.min(100,Math.max(0,l))}%`,backgroundColor:Ne(l)}})}),e.jsxs("span",{className:"text-[10px] text-shell-text-secondary w-10 text-right tabular-nums",children:[l.toFixed(0),g]})]})}function Se({windowId:l}){var H,q;const[n,g]=p.useState(null),[A,L]=p.useState([]),[t,w]=p.useState(null),[M,Y]=p.useState([]),[_,J]=p.useState([]),[Q,X]=p.useState(!0),[B,G]=p.useState(null),U=p.useCallback(async()=>{try{const[s,a,c,i]=await Promise.all([fetch("/api/activity",{headers:{Accept:"application/json"}}),fetch("/api/models/loaded",{headers:{Accept:"application/json"}}).catch(()=>null),fetch("/api/scheduler/stats",{headers:{Accept:"application/json"}}).catch(()=>null),fetch("/api/scheduler/tasks?limit=8",{headers:{Accept:"application/json"}}).catch(()=>null)]);if(s.ok){const d=await s.json();g(d),G(null)}if(a&&a.ok){const d=await a.json();L(d.loaded??[])}if(c&&c.ok&&w(await c.json()),i&&i.ok){const d=await i.json();Y(d.tasks??[])}}catch(s){G(s instanceof Error?s.message:"Failed to load")}X(!1)},[]),R=p.useCallback(async()=>{try{const s=await fetch("/api/cluster/workers",{headers:{Accept:"application/json"}});if(s.ok){const a=await s.json();Array.isArray(a)&&J(a)}}catch{}},[]);p.useEffect(()=>{U();const s=setInterval(U,2e3);return()=>clearInterval(s)},[U]),p.useEffect(()=>{R();const s=setInterval(R,1e4);return()=>clearInterval(s)},[R]);const z=[...A.map(s=>({...s,host:s.host??"controller"})),..._.flatMap(s=>{const a=[];for(const c of s.backends??[]){const i=c.name??c.type??"backend",d=c.loaded_models,m=Array.isArray(d)?d:[];for(const r of m)if(typeof r=="string")a.push({name:r,backend:i,purpose:"",host:s.name});else if(r&&typeof r=="object"){const x=r;a.push({name:String(x.name??x.id??"model"),backend:i,purpose:String(x.purpose??x.capability??""),size_mb:typeof x.size_mb=="number"?x.size_mb:null,vram_mb:typeof x.vram_mb=="number"?x.vram_mb:null,ram_mb:typeof x.ram_mb=="number"?x.ram_mb:null,host:s.name})}}return a})];if(Q&&!n)return e.jsx("div",{className:"flex items-center justify-center h-full",children:e.jsx(ne,{size:24,className:"animate-spin text-shell-text-tertiary"})});if(!n)return e.jsxs("div",{className:"flex flex-col items-center justify-center h-full gap-2 text-shell-text-tertiary",children:[e.jsx(I,{size:32}),e.jsx("p",{className:"text-sm",children:"Activity data unavailable"}),B&&e.jsx("p",{className:"text-xs",children:B})]});const{hardware:k,cpu:F,memory:N,npu:b,gpu:o,thermal:T,zram:D,disk:C,network:E,processes:ee}=n;return e.jsxs("div",{className:"flex flex-col h-full bg-shell-bg-deep overflow-hidden",children:[e.jsxs("div",{className:"flex items-center justify-between px-5 py-3 border-b border-white/5",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(I,{size:16,className:"text-accent"}),e.jsx("h1",{className:"text-base font-semibold text-shell-text",children:"Activity"})]}),e.jsxs("p",{className:"text-xs text-shell-text-tertiary mt-0.5",children:[k.board??((H=k.cpu)==null?void 0:H.model)??"System",((q=k.cpu)==null?void 0:q.arch)&&` · ${k.cpu.arch}`,k.ram_mb&&` · ${(k.ram_mb/1024).toFixed(0)} GB RAM`]})]}),e.jsx(Z,{variant:"ghost",size:"icon",onClick:U,"aria-label":"Refresh",children:e.jsx(O,{size:14})})]}),e.jsxs("div",{className:"flex-1 overflow-y-auto p-4 grid grid-cols-12 gap-3 auto-rows-min",children:[e.jsx(h,{className:"col-span-12 md:col-span-6 p-4",children:e.jsxs(u,{className:"p-0",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{size:14,className:"text-blue-400"}),e.jsx("h3",{className:"text-xs font-semibold text-shell-text",children:"CPU"})]}),e.jsxs("span",{className:"text-[10px] text-shell-text-tertiary",children:[F.overall_percent.toFixed(0),"% overall",F.load_avg&&` · ${F.load_avg.map(s=>s.toFixed(2)).join(" ")}`]})]}),e.jsx("div",{className:"space-y-1.5",children:F.cores.map(s=>e.jsx(v,{label:`C${s.core}${s.freq_khz?` ${(s.freq_khz/1e6).toFixed(1)}G`:""}`,value:s.load_percent},s.core))})]})}),(b.cores||b.type)&&e.jsx(h,{className:"col-span-12 md:col-span-6 p-4",children:e.jsxs(u,{className:"p-0",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(xe,{size:14,className:"text-slate-400"}),e.jsx("h3",{className:"text-xs font-semibold text-shell-text",children:"NPU"})]}),e.jsxs("span",{className:"text-[10px] text-shell-text-tertiary",children:[b.type??"Unknown",b.tops&&` · ${b.tops} TOPS`,b.freq_hz&&` · ${(b.freq_hz/1e9).toFixed(2)} GHz`]})]}),b.cores&&b.cores.length>0?e.jsx("div",{className:"space-y-1.5",children:b.cores.map(s=>e.jsx(v,{label:`Core ${s.core}`,value:s.load_percent},s.core))}):e.jsxs("p",{className:"text-xs text-shell-text-tertiary",children:["Per-core stats require debugfs access."," ",e.jsx("span",{className:"text-shell-text-secondary",children:"Run as root or grant cap_dac_read_search."})]})]})}),e.jsx(h,{className:"col-span-12 md:col-span-6 lg:col-span-4 p-4",children:e.jsxs(u,{className:"p-0",children:[e.jsx("div",{className:"flex items-center justify-between mb-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(de,{size:14,className:"text-emerald-400"}),e.jsx("h3",{className:"text-xs font-semibold text-shell-text",children:"Memory"})]})}),e.jsx(v,{label:"RAM",value:N.percent}),e.jsxs("p",{className:"text-[10px] text-shell-text-tertiary mt-1",children:[j(N.used_mb)," / ",j(N.total_mb)]}),N.swap_total_mb>0&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mt-3",children:e.jsx(v,{label:"Swap",value:N.swap_percent})}),e.jsxs("p",{className:"text-[10px] text-shell-text-tertiary mt-1",children:[j(N.swap_used_mb)," / ",j(N.swap_total_mb)]})]}),D.length>0&&e.jsxs("div",{className:"mt-3 pt-2 border-t border-white/5",children:[e.jsx("p",{className:"text-[10px] text-shell-text-tertiary mb-1",children:"ZRAM compression"}),D.map(s=>e.jsxs("div",{className:"flex items-center justify-between text-[10px]",children:[e.jsx("span",{className:"text-shell-text-secondary",children:s.device}),e.jsxs("span",{className:"text-shell-text-tertiary",children:[j(s.compr_mb)," ← ",j(s.orig_mb)," (",s.ratio.toFixed(1),"×)"]})]},s.device))]})]})}),o.type&&o.type!=="none"&&e.jsx(h,{className:"col-span-12 md:col-span-6 lg:col-span-4 p-4",children:e.jsxs(u,{className:"p-0",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(oe,{size:14,className:"text-cyan-400"}),e.jsx("h3",{className:"text-xs font-semibold text-shell-text",children:"GPU"})]}),e.jsx("span",{className:"text-[10px] text-shell-text-tertiary",children:o.type})]}),o.load&&e.jsx(v,{label:"Load",value:o.load.load_percent}),o.vram_percent!==null&&e.jsxs("div",{className:"mt-2",children:[e.jsx(v,{label:"VRAM",value:o.vram_percent}),e.jsxs("p",{className:"text-[10px] text-shell-text-tertiary mt-1",children:[j(o.vram_used_mb)," / ",j(o.vram_total_mb)]})]}),!o.load&&o.vram_percent===null&&e.jsx("p",{className:"text-xs text-shell-text-tertiary",children:"Stats unavailable"})]})}),e.jsx(h,{className:"col-span-12 md:col-span-6 lg:col-span-4 p-4",children:e.jsxs(u,{className:"p-0",children:[e.jsx("div",{className:"flex items-center justify-between mb-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(me,{size:14,className:"text-amber-400"}),e.jsx("h3",{className:"text-xs font-semibold text-shell-text",children:"Disk"})]})}),e.jsx(v,{label:"Used",value:C.usage_percent}),e.jsxs("p",{className:"text-[10px] text-shell-text-tertiary mt-1",children:[C.used_gb," / ",C.total_gb," GB"]}),e.jsxs("div",{className:"mt-3 pt-2 border-t border-white/5 space-y-0.5 text-[10px]",children:[e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-shell-text-tertiary",children:"Read"}),e.jsx("span",{className:"text-shell-text-secondary tabular-nums",children:P(C.io_rate.read_bps)})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-shell-text-tertiary",children:"Write"}),e.jsx("span",{className:"text-shell-text-secondary tabular-nums",children:P(C.io_rate.write_bps)})]})]})]})}),e.jsx(h,{className:"col-span-12 p-4",children:e.jsxs(u,{className:"p-0",children:[e.jsx("div",{className:"flex items-center justify-between mb-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(pe,{size:14,className:"text-pink-400"}),e.jsxs("h3",{className:"text-xs font-semibold text-shell-text",children:["Loaded Models (",z.length,")"]})]})}),z.length===0?e.jsx("p",{className:"text-[11px] text-shell-text-tertiary italic",children:"No models currently loaded — backends report here when they hold a model in memory, on this host or any cluster worker."}):e.jsx("div",{className:"space-y-1.5",children:z.map((s,a)=>e.jsxs("div",{className:"flex items-center gap-2 p-2 rounded-lg bg-white/[0.02] border border-white/5",children:[e.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-emerald-400 animate-pulse shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-1.5 min-w-0",children:[e.jsx("span",{className:"text-[11px] font-medium text-shell-text truncate",children:s.name}),s.host&&s.host!=="controller"&&e.jsx("span",{className:"text-[9px] px-1.5 py-0.5 rounded-full bg-teal-500/15 text-teal-200 font-semibold whitespace-nowrap",children:s.host})]}),e.jsxs("div",{className:"flex items-center gap-2 text-[10px] text-shell-text-tertiary flex-wrap",children:[s.purpose&&e.jsx("span",{children:s.purpose}),s.purpose&&e.jsx("span",{children:"·"}),e.jsx("span",{children:s.backend}),s.ram_mb!=null&&s.ram_mb>0&&e.jsxs(e.Fragment,{children:[e.jsx("span",{children:"·"}),e.jsx("span",{children:j(s.ram_mb)})]}),s.vram_mb!=null&&s.vram_mb>0&&e.jsxs(e.Fragment,{children:[e.jsx("span",{children:"·"}),e.jsxs("span",{className:"text-blue-400",children:["VRAM ",j(s.vram_mb)]})]})]})]})]},`${s.host??"controller"}-${s.name}-${a}`))})]})}),e.jsx(h,{className:"col-span-12 p-4",children:e.jsxs(u,{className:"p-0",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(he,{size:14,className:"text-teal-400"}),e.jsxs("h3",{className:"text-xs font-semibold text-shell-text",children:["Cluster (",_.length," worker",_.length===1?"":"s",")"]})]}),e.jsx(Z,{variant:"ghost",size:"icon",onClick:R,"aria-label":"Refresh cluster workers",children:e.jsx(O,{size:12})})]}),_.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center gap-2 py-6 text-center",children:[e.jsx("p",{className:"text-[11px] text-shell-text-tertiary",children:"No workers registered yet."}),e.jsx("a",{href:"https://github.com/jaylfc/tinyagentos#distributed-compute-cluster",target:"_blank",rel:"noopener noreferrer",className:"text-[11px] px-3 py-1.5 rounded-md bg-white/5 border border-white/10 text-shell-text-secondary hover:bg-white/10 transition-colors","aria-label":"How to add a worker (opens docs in new tab)",children:"How to add a worker"})]}):e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-2",role:"list","aria-label":"Cluster workers",children:_.map(s=>{const a=ae(s),c=s.backends??[],i=s.capabilities??[],d=new Set(i),m=s.tier_id?(s.potential_capabilities??[]).filter(r=>!d.has(r)):[];return e.jsxs("div",{role:"listitem",className:"p-2.5 rounded-lg bg-white/[0.02] border border-white/5",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2 mb-1",children:[e.jsxs("div",{className:"flex items-center gap-1.5 min-w-0",children:[e.jsx("span",{className:"text-[11px] font-semibold text-shell-text truncate",children:s.name}),e.jsxs("span",{className:"text-[10px] text-shell-text-tertiary",children:["·"," ",le(s)]}),s.tier_id&&e.jsx("span",{className:"text-[9px] px-1.5 py-0.5 rounded-full bg-white/[0.05] border border-white/10 text-shell-text-tertiary font-mono","aria-label":`Hardware tier: ${s.tier_id}`,children:s.tier_id})]}),e.jsx("span",{className:`text-[9px] px-1.5 py-0.5 rounded-full font-semibold border ${re[a]}`,"aria-label":`Status: ${K[a]}`,children:K[a]})]}),e.jsx("div",{className:"text-[10px] text-shell-text-tertiary truncate",children:ie(s)}),e.jsx("div",{className:"mt-1.5 flex flex-wrap gap-1",children:c.length===0?e.jsx("span",{className:"text-[9px] text-shell-text-tertiary italic",children:"No backends loaded"}):c.map((r,x)=>e.jsx("span",{className:"text-[9px] px-1.5 py-0.5 rounded-full bg-sky-500/15 text-sky-200 font-medium",title:r.type??r.name??"",children:r.name??r.type??"backend"},`${s.name}-b-${x}`))}),e.jsx("div",{className:"mt-1 flex flex-wrap gap-1",children:i.length===0&&m.length===0?e.jsx("span",{className:"text-[9px] text-shell-text-tertiary italic",children:"No capabilities yet"}):e.jsxs(e.Fragment,{children:[i.map(r=>e.jsx("span",{className:"text-[9px] px-1.5 py-0.5 rounded-full bg-violet-500/15 text-violet-200 font-medium","aria-label":`Current capability: ${r}`,children:r},`${s.name}-c-${r}`)),m.map(r=>e.jsx("span",{className:"text-[9px] px-1.5 py-0.5 rounded-full bg-white/[0.03] border border-white/10 text-shell-text-tertiary font-medium","aria-label":`Potential capability: ${r}`,title:"Hardware can support this — install a model with this capability to enable it",children:r},`${s.name}-p-${r}`))]})})]},s.name)})})]})}),T.length>0&&e.jsx(h,{className:"col-span-12 md:col-span-6 p-4",children:e.jsxs(u,{className:"p-0",children:[e.jsx("div",{className:"flex items-center justify-between mb-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ue,{size:14,className:"text-red-400"}),e.jsx("h3",{className:"text-xs font-semibold text-shell-text",children:"Thermal"})]})}),e.jsx("div",{className:"grid grid-cols-2 gap-x-3 gap-y-1.5 text-[11px]",children:T.map(s=>{const a=s.temp_c>70,c=s.temp_c>55,i=a?"text-red-400":c?"text-amber-400":"text-emerald-400";return e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-shell-text-tertiary truncate",children:s.name}),e.jsxs("span",{className:`${i} tabular-nums`,children:[s.temp_c.toFixed(1),"°C"]})]},s.name)})})]})}),E.length>0&&e.jsx(h,{className:"col-span-12 md:col-span-6 p-4",children:e.jsxs(u,{className:"p-0",children:[e.jsx("div",{className:"flex items-center justify-between mb-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(je,{size:14,className:"text-indigo-400"}),e.jsx("h3",{className:"text-xs font-semibold text-shell-text",children:"Network"})]})}),e.jsx("div",{className:"space-y-2",children:E.map(s=>e.jsx("div",{className:"text-[11px]",children:e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-shell-text-secondary",children:s.name}),e.jsxs("span",{className:"text-shell-text-tertiary tabular-nums",children:["↓ ",P(s.rx_bps)," · ↑ ",P(s.tx_bps)]})]})},s.name))})]})}),t&&e.jsx(h,{className:"col-span-12 p-4",children:e.jsxs(u,{className:"p-0",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(I,{size:14,className:"text-violet-400"}),e.jsx("h3",{className:"text-xs font-semibold text-shell-text",children:"Scheduler"})]}),e.jsxs("div",{className:"flex items-center gap-3 text-[10px] text-shell-text-tertiary tabular-nums",children:[e.jsxs("span",{children:["submitted ",t.submitted]}),e.jsxs("span",{children:["done ",t.completed]}),t.errors>0&&e.jsxs("span",{className:"text-red-400",children:["err ",t.errors]}),t.rejected>0&&e.jsxs("span",{className:"text-amber-400",children:["rejected ",t.rejected]}),e.jsxs("span",{className:"text-emerald-400",children:["active ",t.active]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-2 mb-3",children:[t.resources.map(s=>{const a=["GPU","NPU","CPU","CLUSTER"][s.tier]??"?",c=["text-emerald-400 bg-emerald-500/10","text-violet-400 bg-violet-500/10","text-sky-400 bg-sky-500/10","text-amber-400 bg-amber-500/10"][s.tier]??"text-shell-text-tertiary bg-white/5",i=new Set(s.capabilities),d=s.potential_capabilities.filter(f=>!i.has(f)),m=n==null?void 0:n.hardware;let r="";s.tier===0?r=S("gpu",m):s.tier===1?r=S("npu",m):s.tier===2&&(r=S("cpu",m));const x=r||s.name;return e.jsxs("div",{className:"p-2 rounded-lg bg-white/[0.02] border border-white/5",children:[e.jsxs("div",{className:"flex items-center justify-between mb-1 gap-2",children:[e.jsxs("div",{className:"flex items-center gap-1.5 min-w-0",children:[e.jsx("span",{className:`text-[9px] px-1.5 py-0.5 rounded-full font-semibold ${c}`,children:a}),e.jsx("span",{className:"text-[11px] font-medium text-shell-text truncate",children:x})]}),e.jsxs("span",{className:"text-[10px] text-shell-text-tertiary tabular-nums shrink-0",title:`${s.in_flight} tasks running, ${s.concurrency-s.in_flight} slots free`,children:[s.in_flight," active · ",s.concurrency," slots"]})]}),e.jsxs("div",{className:"text-[10px] text-shell-text-tertiary truncate",children:[e.jsx("span",{className:"text-shell-text/60",children:"controller"})," · ",s.platform," · ",s.runtime,s.runtime_version&&` ${s.runtime_version}`]}),e.jsxs("div",{className:"mt-1 flex flex-wrap gap-1",children:[s.capabilities.map(f=>e.jsx("span",{className:"text-[9px] px-1.5 py-0.5 rounded-full bg-violet-500/20 text-violet-200 font-medium",title:"Ready now — backend is loaded",children:f},`ready-${f}`)),d.map(f=>e.jsx("span",{className:"text-[9px] px-1.5 py-0.5 rounded-full bg-white/[0.03] text-shell-text-tertiary border border-white/5",title:"Latent — supported by this hardware class but no backend loaded",children:f},`latent-${f}`))]})]},s.name)}),_.flatMap(s=>{const a=s.hardware,c=s.status==="online",i=[],d=S("gpu",a);d&&i.push({kind:"gpu",label:d,tierIdx:0});const m=S("npu",a);m&&i.push({kind:"npu",label:m,tierIdx:1});const r=S("cpu",a);r&&i.push({kind:"cpu",label:r,tierIdx:2});const x=["GPU","NPU","CPU"],f=["text-emerald-400 bg-emerald-500/10","text-violet-400 bg-violet-500/10","text-sky-400 bg-sky-500/10"];return i.map($=>{var V,W;return e.jsxs("div",{className:`p-2 rounded-lg border ${c?"bg-white/[0.02] border-white/5":"bg-white/[0.01] border-white/5 opacity-60"}`,children:[e.jsxs("div",{className:"flex items-center justify-between mb-1 gap-2",children:[e.jsxs("div",{className:"flex items-center gap-1.5 min-w-0",children:[e.jsx("span",{className:`text-[9px] px-1.5 py-0.5 rounded-full font-semibold ${f[$.tierIdx]}`,children:x[$.tierIdx]}),e.jsx("span",{className:"text-[11px] font-medium text-shell-text truncate",children:$.label})]}),e.jsx("span",{className:"text-[10px] text-shell-text-tertiary shrink-0",children:c?"online":s.status})]}),e.jsxs("div",{className:"text-[10px] text-shell-text-tertiary truncate",children:[e.jsx("span",{className:"text-blue-400/80",children:"worker"})," · ",s.name,((V=a==null?void 0:a.cpu)==null?void 0:V.cores)&&$.kind==="cpu"&&` · ${a.cpu.cores} cores`,((W=a==null?void 0:a.npu)==null?void 0:W.cores)&&$.kind==="npu"&&` · ${a.npu.cores} cores`]}),e.jsx("div",{className:"mt-1 flex flex-wrap gap-1",children:(()=>{const se=new Set(s.capabilities||[]),te=(s.potential_capabilities||[]).filter(y=>!se.has(y));return[...(s.capabilities||[]).map(y=>e.jsx("span",{className:"text-[9px] px-1.5 py-0.5 rounded-full bg-violet-500/20 text-violet-200 font-medium",title:"Ready now — backend is loaded",children:y},`worker-ready-${y}`)),...te.map(y=>e.jsx("span",{className:"text-[9px] px-1.5 py-0.5 rounded-full bg-white/[0.03] text-shell-text-tertiary border border-white/5",title:"Latent — supported by this hardware but no backend loaded yet",children:y},`worker-latent-${y}`))]})()})]},`${s.name}-${$.kind}`)})})]}),M.length>0&&e.jsxs("div",{className:"mt-2 space-y-0.5",children:[e.jsx("div",{className:"text-[10px] text-shell-text-tertiary mb-1",children:"Recent tasks"}),M.slice(0,8).map(s=>{const a=s.status==="complete"?"text-emerald-400":s.status==="running"?"text-violet-400":s.status==="error"?"text-red-400":s.status==="rejected"?"text-amber-400":"text-shell-text-tertiary";return e.jsxs("div",{className:"flex items-center gap-2 text-[10px] py-0.5 tabular-nums",children:[e.jsx("span",{className:`${a} w-16`,children:s.status}),e.jsx("span",{className:"text-shell-text-secondary w-28 truncate",children:s.capability}),e.jsx("span",{className:"text-shell-text w-28 truncate",children:s.resource??"-"}),e.jsx("span",{className:"text-shell-text-tertiary flex-1 truncate",children:s.submitter}),e.jsx("span",{className:"text-shell-text-tertiary w-14 text-right",children:s.elapsed_seconds!=null?`${s.elapsed_seconds.toFixed(1)}s`:""})]},s.task_id)})]})]})}),e.jsx(h,{className:"col-span-12 p-4",children:e.jsxs(u,{className:"p-0",children:[e.jsx("div",{className:"flex items-center justify-between mb-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(be,{size:14,className:"text-white/70"}),e.jsx("h3",{className:"text-xs font-semibold text-shell-text",children:"Top Processes"})]})}),e.jsx("div",{className:"space-y-1",children:ee.map(s=>e.jsxs("div",{className:"flex items-center gap-2 text-[11px] py-0.5",children:[e.jsx("span",{className:"text-shell-text-tertiary w-12 tabular-nums",children:s.pid}),e.jsx("span",{className:"text-shell-text-secondary w-16 truncate",children:s.user}),e.jsx("span",{className:"text-shell-text flex-1 truncate",children:s.name}),e.jsxs("span",{className:"text-shell-text-tertiary w-16 text-right tabular-nums",children:[s.cpu_percent.toFixed(0),"%"]}),e.jsx("span",{className:"text-shell-text-secondary w-20 text-right tabular-nums",children:j(s.rss_mb)})]},s.pid))})]})})]})]})}export{Se as ActivityApp}; +import{r as p,j as e}from"./vendor-react-l6srOxy7.js";import{B as Z,C as h,c as u}from"./toolbar-UW6q5pkx.js";import{w as ae,b as le,S as K,c as re,d as ie}from"./cluster-Ca85Gm-W.js";import{Y as ne,A as I,aa as O,C as ce,Z as xe,M as de,a as oe,a1 as me,m as pe,u as he,aA as ue,aB as je,aC as be}from"./vendor-icons-DcMSPw1y.js";import"./vendor-radix-BhM7AEEG.js";import"./vendor-layout-B-pp9n1f.js";function fe(l){return l?l.replace(/\(R\)|\(TM\)|\(r\)|\(tm\)/g,"").replace(/\s+CPU\s+@.*$/i,"").replace(/\s+@\s+.*$/,"").replace(/\s+/g," ").trim():""}function C(l,n){var g,A,L;if(!n)return"";if(l==="cpu"){if((g=n.cpu)!=null&&g.soc)return n.cpu.soc.toUpperCase();const t=fe((A=n.cpu)==null?void 0:A.model);return t||(((L=n.cpu)==null?void 0:L.arch)==="aarch64"?"ARM64":"CPU")}if(l==="gpu"){const t=n.gpu;if(!t||!t.type||t.type==="none")return"";if(t.type==="nvidia"){const w=(t.model||"").replace(/NVIDIA\s*GeForce\s*/i,"").replace(/^NVIDIA\s*/i,"").trim()||"GPU",M=t.vram_mb?` ${Math.round(t.vram_mb/1024)}GB`:"";return`NVIDIA ${w}${M}`}if(t.type==="amd"){const w=t.vram_mb?` ${Math.round(t.vram_mb/1024)}GB`:"";return`AMD ${t.model||"GPU"}${w}`}return t.type==="apple"?t.model||"Apple Silicon":t.type==="mali"?t.model||"Mali GPU":t.model||t.type.toUpperCase()}if(l==="npu"){const t=n.npu;return!t||!t.type||t.type==="none"?"":t.type==="rknpu"?`RK3588${t.tops?` · ${t.tops} TOPS`:""}`:t.device?t.device.toUpperCase():t.type.toUpperCase()}return""}function P(l){return l<1024?`${l} B/s`:l<1024*1024?`${(l/1024).toFixed(1)} KB/s`:l<1024*1024*1024?`${(l/(1024*1024)).toFixed(1)} MB/s`:`${(l/(1024*1024*1024)).toFixed(2)} GB/s`}function j(l){return l==null?"—":l>=1024?`${(l/1024).toFixed(1)} GB`:`${l} MB`}function Ne(l){return l<50?"#43e97b":l<80?"#febc2e":"#ff5f57"}function v({value:l,label:n,unit:g="%"}){return e.jsxs("div",{className:"flex items-center gap-2",children:[n&&e.jsx("span",{className:"text-[10px] text-shell-text-tertiary w-12 shrink-0",children:n}),e.jsx("div",{className:"flex-1 h-1.5 rounded-full bg-white/5 overflow-hidden",children:e.jsx("div",{className:"h-full transition-all rounded-full",style:{width:`${Math.min(100,Math.max(0,l))}%`,backgroundColor:Ne(l)}})}),e.jsxs("span",{className:"text-[10px] text-shell-text-secondary w-10 text-right tabular-nums",children:[l.toFixed(0),g]})]})}function Ce({windowId:l}){var H,q;const[n,g]=p.useState(null),[A,L]=p.useState([]),[t,w]=p.useState(null),[M,Y]=p.useState([]),[_,J]=p.useState([]),[Q,X]=p.useState(!0),[B,G]=p.useState(null),U=p.useCallback(async()=>{try{const[s,a,c,i]=await Promise.all([fetch("/api/activity",{headers:{Accept:"application/json"}}),fetch("/api/models/loaded",{headers:{Accept:"application/json"}}).catch(()=>null),fetch("/api/scheduler/stats",{headers:{Accept:"application/json"}}).catch(()=>null),fetch("/api/scheduler/tasks?limit=8",{headers:{Accept:"application/json"}}).catch(()=>null)]);if(s.ok){const d=await s.json();g(d),G(null)}if(a&&a.ok){const d=await a.json();L(d.loaded??[])}if(c&&c.ok&&w(await c.json()),i&&i.ok){const d=await i.json();Y(d.tasks??[])}}catch(s){G(s instanceof Error?s.message:"Failed to load")}X(!1)},[]),R=p.useCallback(async()=>{try{const s=await fetch("/api/cluster/workers",{headers:{Accept:"application/json"}});if(s.ok){const a=await s.json();Array.isArray(a)&&J(a)}}catch{}},[]);p.useEffect(()=>{U();const s=setInterval(U,2e3);return()=>clearInterval(s)},[U]),p.useEffect(()=>{R();const s=setInterval(R,1e4);return()=>clearInterval(s)},[R]);const z=[...A.map(s=>({...s,host:s.host??"controller"})),..._.flatMap(s=>{const a=[];for(const c of s.backends??[]){const i=c.name??c.type??"backend",d=c.loaded_models,m=Array.isArray(d)?d:[];for(const r of m)if(typeof r=="string")a.push({name:r,backend:i,purpose:"",host:s.name});else if(r&&typeof r=="object"){const x=r;a.push({name:String(x.name??x.id??"model"),backend:i,purpose:String(x.purpose??x.capability??""),size_mb:typeof x.size_mb=="number"?x.size_mb:null,vram_mb:typeof x.vram_mb=="number"?x.vram_mb:null,ram_mb:typeof x.ram_mb=="number"?x.ram_mb:null,host:s.name})}}return a})];if(Q&&!n)return e.jsx("div",{className:"flex items-center justify-center h-full",children:e.jsx(ne,{size:24,className:"animate-spin text-shell-text-tertiary"})});if(!n)return e.jsxs("div",{className:"flex flex-col items-center justify-center h-full gap-2 text-shell-text-tertiary",children:[e.jsx(I,{size:32}),e.jsx("p",{className:"text-sm",children:"Activity data unavailable"}),B&&e.jsx("p",{className:"text-xs",children:B})]});const{hardware:k,cpu:F,memory:N,npu:b,gpu:o,thermal:T,zram:D,disk:S,network:E,processes:ee}=n;return e.jsxs("div",{className:"flex flex-col h-full bg-shell-bg-deep overflow-hidden",children:[e.jsxs("div",{className:"flex items-center justify-between px-5 py-3 border-b border-white/5",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(I,{size:16,className:"text-accent"}),e.jsx("h1",{className:"text-base font-semibold text-shell-text",children:"Activity"})]}),e.jsxs("p",{className:"text-xs text-shell-text-tertiary mt-0.5",children:[k.board??((H=k.cpu)==null?void 0:H.model)??"System",((q=k.cpu)==null?void 0:q.arch)&&` · ${k.cpu.arch}`,k.ram_mb&&` · ${(k.ram_mb/1024).toFixed(0)} GB RAM`]})]}),e.jsx(Z,{variant:"ghost",size:"icon",onClick:U,"aria-label":"Refresh",children:e.jsx(O,{size:14})})]}),e.jsxs("div",{className:"flex-1 overflow-y-auto p-4 grid grid-cols-12 gap-3 auto-rows-min",children:[e.jsx(h,{className:"col-span-12 md:col-span-6 p-4",children:e.jsxs(u,{className:"p-0",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{size:14,className:"text-blue-400"}),e.jsx("h3",{className:"text-xs font-semibold text-shell-text",children:"CPU"})]}),e.jsxs("span",{className:"text-[10px] text-shell-text-tertiary",children:[F.overall_percent.toFixed(0),"% overall",F.load_avg&&` · ${F.load_avg.map(s=>s.toFixed(2)).join(" ")}`]})]}),e.jsx("div",{className:"space-y-1.5",children:F.cores.map(s=>e.jsx(v,{label:`C${s.core}${s.freq_khz?` ${(s.freq_khz/1e6).toFixed(1)}G`:""}`,value:s.load_percent},s.core))})]})}),(b.cores||b.type)&&e.jsx(h,{className:"col-span-12 md:col-span-6 p-4",children:e.jsxs(u,{className:"p-0",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(xe,{size:14,className:"text-slate-400"}),e.jsx("h3",{className:"text-xs font-semibold text-shell-text",children:"NPU"})]}),e.jsxs("span",{className:"text-[10px] text-shell-text-tertiary",children:[b.type??"Unknown",b.tops&&` · ${b.tops} TOPS`,b.freq_hz&&` · ${(b.freq_hz/1e9).toFixed(2)} GHz`]})]}),b.cores&&b.cores.length>0?e.jsx("div",{className:"space-y-1.5",children:b.cores.map(s=>e.jsx(v,{label:`Core ${s.core}`,value:s.load_percent},s.core))}):e.jsxs("p",{className:"text-xs text-shell-text-tertiary",children:["Per-core stats require debugfs access."," ",e.jsx("span",{className:"text-shell-text-secondary",children:"Run as root or grant cap_dac_read_search."})]})]})}),e.jsx(h,{className:"col-span-12 md:col-span-6 lg:col-span-4 p-4",children:e.jsxs(u,{className:"p-0",children:[e.jsx("div",{className:"flex items-center justify-between mb-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(de,{size:14,className:"text-emerald-400"}),e.jsx("h3",{className:"text-xs font-semibold text-shell-text",children:"Memory"})]})}),e.jsx(v,{label:"RAM",value:N.percent}),e.jsxs("p",{className:"text-[10px] text-shell-text-tertiary mt-1",children:[j(N.used_mb)," / ",j(N.total_mb)]}),N.swap_total_mb>0&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mt-3",children:e.jsx(v,{label:"Swap",value:N.swap_percent})}),e.jsxs("p",{className:"text-[10px] text-shell-text-tertiary mt-1",children:[j(N.swap_used_mb)," / ",j(N.swap_total_mb)]})]}),D.length>0&&e.jsxs("div",{className:"mt-3 pt-2 border-t border-white/5",children:[e.jsx("p",{className:"text-[10px] text-shell-text-tertiary mb-1",children:"ZRAM compression"}),D.map(s=>e.jsxs("div",{className:"flex items-center justify-between text-[10px]",children:[e.jsx("span",{className:"text-shell-text-secondary",children:s.device}),e.jsxs("span",{className:"text-shell-text-tertiary",children:[j(s.compr_mb)," ← ",j(s.orig_mb)," (",s.ratio.toFixed(1),"×)"]})]},s.device))]})]})}),o.type&&o.type!=="none"&&e.jsx(h,{className:"col-span-12 md:col-span-6 lg:col-span-4 p-4",children:e.jsxs(u,{className:"p-0",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(oe,{size:14,className:"text-cyan-400"}),e.jsx("h3",{className:"text-xs font-semibold text-shell-text",children:"GPU"})]}),e.jsx("span",{className:"text-[10px] text-shell-text-tertiary",children:o.type})]}),o.load&&e.jsx(v,{label:"Load",value:o.load.load_percent}),o.vram_percent!==null&&e.jsxs("div",{className:"mt-2",children:[e.jsx(v,{label:"VRAM",value:o.vram_percent}),e.jsxs("p",{className:"text-[10px] text-shell-text-tertiary mt-1",children:[j(o.vram_used_mb)," / ",j(o.vram_total_mb)]})]}),!o.load&&o.vram_percent===null&&e.jsx("p",{className:"text-xs text-shell-text-tertiary",children:"Stats unavailable"})]})}),e.jsx(h,{className:"col-span-12 md:col-span-6 lg:col-span-4 p-4",children:e.jsxs(u,{className:"p-0",children:[e.jsx("div",{className:"flex items-center justify-between mb-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(me,{size:14,className:"text-amber-400"}),e.jsx("h3",{className:"text-xs font-semibold text-shell-text",children:"Disk"})]})}),e.jsx(v,{label:"Used",value:S.usage_percent}),e.jsxs("p",{className:"text-[10px] text-shell-text-tertiary mt-1",children:[S.used_gb," / ",S.total_gb," GB"]}),e.jsxs("div",{className:"mt-3 pt-2 border-t border-white/5 space-y-0.5 text-[10px]",children:[e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-shell-text-tertiary",children:"Read"}),e.jsx("span",{className:"text-shell-text-secondary tabular-nums",children:P(S.io_rate.read_bps)})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-shell-text-tertiary",children:"Write"}),e.jsx("span",{className:"text-shell-text-secondary tabular-nums",children:P(S.io_rate.write_bps)})]})]})]})}),e.jsx(h,{className:"col-span-12 p-4",children:e.jsxs(u,{className:"p-0",children:[e.jsx("div",{className:"flex items-center justify-between mb-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(pe,{size:14,className:"text-pink-400"}),e.jsxs("h3",{className:"text-xs font-semibold text-shell-text",children:["Loaded Models (",z.length,")"]})]})}),z.length===0?e.jsx("p",{className:"text-[11px] text-shell-text-tertiary italic",children:"No models currently loaded — backends report here when they hold a model in memory, on this host or any cluster worker."}):e.jsx("div",{className:"space-y-1.5",children:z.map((s,a)=>e.jsxs("div",{className:"flex items-center gap-2 p-2 rounded-lg bg-white/[0.02] border border-white/5",children:[e.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-emerald-400 animate-pulse shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-1.5 min-w-0",children:[e.jsx("span",{className:"text-[11px] font-medium text-shell-text truncate",children:s.name}),s.host&&s.host!=="controller"&&e.jsx("span",{className:"text-[9px] px-1.5 py-0.5 rounded-full bg-teal-500/15 text-teal-200 font-semibold whitespace-nowrap",children:s.host})]}),e.jsxs("div",{className:"flex items-center gap-2 text-[10px] text-shell-text-tertiary flex-wrap",children:[s.purpose&&e.jsx("span",{children:s.purpose}),s.purpose&&e.jsx("span",{children:"·"}),e.jsx("span",{children:s.backend}),s.ram_mb!=null&&s.ram_mb>0&&e.jsxs(e.Fragment,{children:[e.jsx("span",{children:"·"}),e.jsx("span",{children:j(s.ram_mb)})]}),s.vram_mb!=null&&s.vram_mb>0&&e.jsxs(e.Fragment,{children:[e.jsx("span",{children:"·"}),e.jsxs("span",{className:"text-blue-400",children:["VRAM ",j(s.vram_mb)]})]})]})]})]},`${s.host??"controller"}-${s.name}-${a}`))})]})}),e.jsx(h,{className:"col-span-12 p-4",children:e.jsxs(u,{className:"p-0",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(he,{size:14,className:"text-teal-400"}),e.jsxs("h3",{className:"text-xs font-semibold text-shell-text",children:["Cluster (",_.length," worker",_.length===1?"":"s",")"]})]}),e.jsx(Z,{variant:"ghost",size:"icon",onClick:R,"aria-label":"Refresh cluster workers",children:e.jsx(O,{size:12})})]}),_.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center gap-2 py-6 text-center",children:[e.jsx("p",{className:"text-[11px] text-shell-text-tertiary",children:"No workers registered yet."}),e.jsx("a",{href:"https://github.com/jaylfc/tinyagentos#distributed-compute-cluster",target:"_blank",rel:"noopener noreferrer",className:"text-[11px] px-3 py-1.5 rounded-md bg-white/5 border border-white/10 text-shell-text-secondary hover:bg-white/10 transition-colors","aria-label":"How to add a worker (opens docs in new tab)",children:"How to add a worker"})]}):e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-2",role:"list","aria-label":"Cluster workers",children:_.map(s=>{const a=ae(s),c=s.backends??[],i=s.capabilities??[],d=new Set(i),m=s.tier_id?(s.potential_capabilities??[]).filter(r=>!d.has(r)):[];return e.jsxs("div",{role:"listitem",className:"p-2.5 rounded-lg bg-white/[0.02] border border-white/5",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2 mb-1",children:[e.jsxs("div",{className:"flex items-center gap-1.5 min-w-0",children:[e.jsx("span",{className:"text-[11px] font-semibold text-shell-text truncate",children:s.name}),e.jsxs("span",{className:"text-[10px] text-shell-text-tertiary",children:["·"," ",le(s)]}),s.tier_id&&e.jsx("span",{className:"text-[9px] px-1.5 py-0.5 rounded-full bg-white/[0.05] border border-white/10 text-shell-text-tertiary font-mono","aria-label":`Hardware tier: ${s.tier_id}`,children:s.tier_id})]}),e.jsx("span",{className:`text-[9px] px-1.5 py-0.5 rounded-full font-semibold border ${re[a]}`,"aria-label":`Status: ${K[a]}`,children:K[a]})]}),e.jsx("div",{className:"text-[10px] text-shell-text-tertiary truncate",children:ie(s)}),e.jsx("div",{className:"mt-1.5 flex flex-wrap gap-1",children:c.length===0?e.jsx("span",{className:"text-[9px] text-shell-text-tertiary italic",children:"No backends loaded"}):c.map((r,x)=>e.jsx("span",{className:"text-[9px] px-1.5 py-0.5 rounded-full bg-sky-500/15 text-sky-200 font-medium",title:r.type??r.name??"",children:r.name??r.type??"backend"},`${s.name}-b-${x}`))}),e.jsx("div",{className:"mt-1 flex flex-wrap gap-1",children:i.length===0&&m.length===0?e.jsx("span",{className:"text-[9px] text-shell-text-tertiary italic",children:"No capabilities yet"}):e.jsxs(e.Fragment,{children:[i.map(r=>e.jsx("span",{className:"text-[9px] px-1.5 py-0.5 rounded-full bg-violet-500/15 text-violet-200 font-medium","aria-label":`Current capability: ${r}`,children:r},`${s.name}-c-${r}`)),m.map(r=>e.jsx("span",{className:"text-[9px] px-1.5 py-0.5 rounded-full bg-white/[0.03] border border-white/10 text-shell-text-tertiary font-medium","aria-label":`Potential capability: ${r}`,title:"Hardware can support this — install a model with this capability to enable it",children:r},`${s.name}-p-${r}`))]})})]},s.name)})})]})}),T.length>0&&e.jsx(h,{className:"col-span-12 md:col-span-6 p-4",children:e.jsxs(u,{className:"p-0",children:[e.jsx("div",{className:"flex items-center justify-between mb-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ue,{size:14,className:"text-red-400"}),e.jsx("h3",{className:"text-xs font-semibold text-shell-text",children:"Thermal"})]})}),e.jsx("div",{className:"grid grid-cols-2 gap-x-3 gap-y-1.5 text-[11px]",children:T.map(s=>{const a=s.temp_c>70,c=s.temp_c>55,i=a?"text-red-400":c?"text-amber-400":"text-emerald-400";return e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-shell-text-tertiary truncate",children:s.name}),e.jsxs("span",{className:`${i} tabular-nums`,children:[s.temp_c.toFixed(1),"°C"]})]},s.name)})})]})}),E.length>0&&e.jsx(h,{className:"col-span-12 md:col-span-6 p-4",children:e.jsxs(u,{className:"p-0",children:[e.jsx("div",{className:"flex items-center justify-between mb-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(je,{size:14,className:"text-indigo-400"}),e.jsx("h3",{className:"text-xs font-semibold text-shell-text",children:"Network"})]})}),e.jsx("div",{className:"space-y-2",children:E.map(s=>e.jsx("div",{className:"text-[11px]",children:e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-shell-text-secondary",children:s.name}),e.jsxs("span",{className:"text-shell-text-tertiary tabular-nums",children:["↓ ",P(s.rx_bps)," · ↑ ",P(s.tx_bps)]})]})},s.name))})]})}),t&&e.jsx(h,{className:"col-span-12 p-4",children:e.jsxs(u,{className:"p-0",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(I,{size:14,className:"text-violet-400"}),e.jsx("h3",{className:"text-xs font-semibold text-shell-text",children:"Scheduler"})]}),e.jsxs("div",{className:"flex items-center gap-3 text-[10px] text-shell-text-tertiary tabular-nums",children:[e.jsxs("span",{children:["submitted ",t.submitted]}),e.jsxs("span",{children:["done ",t.completed]}),t.errors>0&&e.jsxs("span",{className:"text-red-400",children:["err ",t.errors]}),t.rejected>0&&e.jsxs("span",{className:"text-amber-400",children:["rejected ",t.rejected]}),e.jsxs("span",{className:"text-emerald-400",children:["active ",t.active]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-2 mb-3",children:[t.resources.map(s=>{const a=["GPU","NPU","CPU","CLUSTER"][s.tier]??"?",c=["text-emerald-400 bg-emerald-500/10","text-violet-400 bg-violet-500/10","text-sky-400 bg-sky-500/10","text-amber-400 bg-amber-500/10"][s.tier]??"text-shell-text-tertiary bg-white/5",i=new Set(s.capabilities),d=s.potential_capabilities.filter(f=>!i.has(f)),m=n==null?void 0:n.hardware;let r="";s.tier===0?r=C("gpu",m):s.tier===1?r=C("npu",m):s.tier===2&&(r=C("cpu",m));const x=r||s.name;return e.jsxs("div",{className:"p-2 rounded-lg bg-white/[0.02] border border-white/5",children:[e.jsxs("div",{className:"flex items-center justify-between mb-1 gap-2",children:[e.jsxs("div",{className:"flex items-center gap-1.5 min-w-0",children:[e.jsx("span",{className:`text-[9px] px-1.5 py-0.5 rounded-full font-semibold ${c}`,children:a}),e.jsx("span",{className:"text-[11px] font-medium text-shell-text truncate",children:x})]}),e.jsxs("span",{className:"text-[10px] text-shell-text-tertiary tabular-nums shrink-0",title:`${s.in_flight} tasks running, ${s.concurrency-s.in_flight} slots free`,children:[s.in_flight," active · ",s.concurrency," slots"]})]}),e.jsxs("div",{className:"text-[10px] text-shell-text-tertiary truncate",children:[e.jsx("span",{className:"text-shell-text/60",children:"controller"})," · ",s.platform," · ",s.runtime,s.runtime_version&&` ${s.runtime_version}`]}),e.jsxs("div",{className:"mt-1 flex flex-wrap gap-1",children:[s.capabilities.map(f=>e.jsx("span",{className:"text-[9px] px-1.5 py-0.5 rounded-full bg-violet-500/20 text-violet-200 font-medium",title:"Ready now — backend is loaded",children:f},`ready-${f}`)),d.map(f=>e.jsx("span",{className:"text-[9px] px-1.5 py-0.5 rounded-full bg-white/[0.03] text-shell-text-tertiary border border-white/5",title:"Latent — supported by this hardware class but no backend loaded",children:f},`latent-${f}`))]})]},s.name)}),_.flatMap(s=>{const a=s.hardware,c=s.status==="online",i=[],d=C("gpu",a);d&&i.push({kind:"gpu",label:d,tierIdx:0});const m=C("npu",a);m&&i.push({kind:"npu",label:m,tierIdx:1});const r=C("cpu",a);r&&i.push({kind:"cpu",label:r,tierIdx:2});const x=["GPU","NPU","CPU"],f=["text-emerald-400 bg-emerald-500/10","text-violet-400 bg-violet-500/10","text-sky-400 bg-sky-500/10"];return i.map($=>{var V,W;return e.jsxs("div",{className:`p-2 rounded-lg border ${c?"bg-white/[0.02] border-white/5":"bg-white/[0.01] border-white/5 opacity-60"}`,children:[e.jsxs("div",{className:"flex items-center justify-between mb-1 gap-2",children:[e.jsxs("div",{className:"flex items-center gap-1.5 min-w-0",children:[e.jsx("span",{className:`text-[9px] px-1.5 py-0.5 rounded-full font-semibold ${f[$.tierIdx]}`,children:x[$.tierIdx]}),e.jsx("span",{className:"text-[11px] font-medium text-shell-text truncate",children:$.label})]}),e.jsx("span",{className:"text-[10px] text-shell-text-tertiary shrink-0",children:c?"online":s.status})]}),e.jsxs("div",{className:"text-[10px] text-shell-text-tertiary truncate",children:[e.jsx("span",{className:"text-blue-400/80",children:"worker"})," · ",s.name,((V=a==null?void 0:a.cpu)==null?void 0:V.cores)&&$.kind==="cpu"&&` · ${a.cpu.cores} cores`,((W=a==null?void 0:a.npu)==null?void 0:W.cores)&&$.kind==="npu"&&` · ${a.npu.cores} cores`]}),e.jsx("div",{className:"mt-1 flex flex-wrap gap-1",children:(()=>{const se=new Set(s.capabilities||[]),te=(s.potential_capabilities||[]).filter(y=>!se.has(y));return[...(s.capabilities||[]).map(y=>e.jsx("span",{className:"text-[9px] px-1.5 py-0.5 rounded-full bg-violet-500/20 text-violet-200 font-medium",title:"Ready now — backend is loaded",children:y},`worker-ready-${y}`)),...te.map(y=>e.jsx("span",{className:"text-[9px] px-1.5 py-0.5 rounded-full bg-white/[0.03] text-shell-text-tertiary border border-white/5",title:"Latent — supported by this hardware but no backend loaded yet",children:y},`worker-latent-${y}`))]})()})]},`${s.name}-${$.kind}`)})})]}),M.length>0&&e.jsxs("div",{className:"mt-2 space-y-0.5",children:[e.jsx("div",{className:"text-[10px] text-shell-text-tertiary mb-1",children:"Recent tasks"}),M.slice(0,8).map(s=>{const a=s.status==="complete"?"text-emerald-400":s.status==="running"?"text-violet-400":s.status==="error"?"text-red-400":s.status==="rejected"?"text-amber-400":"text-shell-text-tertiary";return e.jsxs("div",{className:"flex items-center gap-2 text-[10px] py-0.5 tabular-nums",children:[e.jsx("span",{className:`${a} w-16`,children:s.status}),e.jsx("span",{className:"text-shell-text-secondary w-28 truncate",children:s.capability}),e.jsx("span",{className:"text-shell-text w-28 truncate",children:s.resource??"-"}),e.jsx("span",{className:"text-shell-text-tertiary flex-1 truncate",children:s.submitter}),e.jsx("span",{className:"text-shell-text-tertiary w-14 text-right",children:s.elapsed_seconds!=null?`${s.elapsed_seconds.toFixed(1)}s`:""})]},s.task_id)})]})]})}),e.jsx(h,{className:"col-span-12 p-4",children:e.jsxs(u,{className:"p-0",children:[e.jsx("div",{className:"flex items-center justify-between mb-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(be,{size:14,className:"text-white/70"}),e.jsx("h3",{className:"text-xs font-semibold text-shell-text",children:"Top Processes"})]})}),e.jsx("div",{className:"space-y-1",children:ee.map(s=>e.jsxs("div",{className:"flex items-center gap-2 text-[11px] py-0.5",children:[e.jsx("span",{className:"text-shell-text-tertiary w-12 tabular-nums",children:s.pid}),e.jsx("span",{className:"text-shell-text-secondary w-16 truncate",children:s.user}),e.jsx("span",{className:"text-shell-text flex-1 truncate",children:s.name}),e.jsxs("span",{className:"text-shell-text-tertiary w-16 text-right tabular-nums",children:[s.cpu_percent.toFixed(0),"%"]}),e.jsx("span",{className:"text-shell-text-secondary w-20 text-right tabular-nums",children:j(s.rss_mb)})]},s.pid))})]})})]})]})}export{Ce as ActivityApp}; diff --git a/static/desktop/assets/AgentBrowsersApp-Cq4Y3dWk.js b/static/desktop/assets/AgentBrowsersApp-wWjBRYht.js similarity index 93% rename from static/desktop/assets/AgentBrowsersApp-Cq4Y3dWk.js rename to static/desktop/assets/AgentBrowsersApp-wWjBRYht.js index 8958a107..a000e378 100644 --- a/static/desktop/assets/AgentBrowsersApp-Cq4Y3dWk.js +++ b/static/desktop/assets/AgentBrowsersApp-wWjBRYht.js @@ -1 +1 @@ -import{r,j as e}from"./vendor-react-l6srOxy7.js";import{B as o,I as we,C as Y,c as Z}from"./toolbar-UW6q5pkx.js";import{a0 as W,g as Q,ap as z,a9 as A,aN as ee,a5 as se,l as je,y as X}from"./vendor-icons-CiM_hUpN.js";import"./vendor-radix-BhM7AEEG.js";import"./vendor-layout-B-pp9n1f.js";async function y(a,s,n){try{const c=await fetch(a,{...n,headers:{Accept:"application/json",...n==null?void 0:n.headers}});return!c.ok||!(c.headers.get("content-type")??"").includes("application/json")?s:await c.json()}catch{return s}}async function te(a,s,n){return y(a,n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)})}async function ae(a,s,n){return y(a,n,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)})}async function Ne(a){const n=await y("/api/agent-browsers/profiles",{profiles:[]});return Array.isArray(n.profiles)?n.profiles:[]}async function ye(a,s,n){try{const c=await fetch("/api/agent-browsers/profiles",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({profile_name:a,agent_name:s??null,node:n??"local"})});return!c.ok||!(c.headers.get("content-type")??"").includes("application/json")?null:await c.json()}catch{return null}}async function ve(a){try{return(await fetch(`/api/agent-browsers/profiles/${encodeURIComponent(a)}`,{method:"DELETE",headers:{Accept:"application/json"}})).ok}catch{return!1}}async function ke(a){try{return(await fetch(`/api/agent-browsers/profiles/${encodeURIComponent(a)}/data`,{method:"DELETE",headers:{Accept:"application/json"}})).ok}catch{return!1}}async function Ce(a){return await te(`/api/agent-browsers/profiles/${encodeURIComponent(a)}/start`,{},null)}async function Se(a){return await te(`/api/agent-browsers/profiles/${encodeURIComponent(a)}/stop`,{},null)}async function ze(a){return(await y(`/api/agent-browsers/profiles/${encodeURIComponent(a)}/screenshot`,{})).data??null}async function Ae(a){try{const s=await fetch(`/api/agent-browsers/profiles/${encodeURIComponent(a)}/login-status`,{headers:{Accept:"application/json"}});return!s.ok||!(s.headers.get("content-type")??"").includes("application/json")?null:await s.json()}catch{return null}}async function De(a,s){return await ae(`/api/agent-browsers/profiles/${encodeURIComponent(a)}/assign`,{agent_name:s},null)}async function Pe(a,s){return await ae(`/api/agent-browsers/profiles/${encodeURIComponent(a)}/move`,{node:s},null)}const ne=[{key:"x",label:"X / Twitter"},{key:"github",label:"GitHub"},{key:"youtube",label:"YouTube"},{key:"reddit",label:"Reddit"}];function re({status:a}){const s=a==="running"?"bg-green-500/15 text-green-400 border border-green-500/30":a==="error"?"bg-red-500/15 text-red-400 border border-red-500/30":"bg-white/10 text-shell-text-tertiary border border-white/10";return e.jsx("span",{className:`inline-flex items-center px-1.5 py-0.5 rounded text-[10px] font-medium ${s}`,children:a})}function le({node:a}){return e.jsx("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded text-[10px] font-medium bg-accent/10 text-accent border border-accent/20",children:a})}function $e({status:a}){return e.jsx("div",{className:"flex gap-1","aria-label":"Login status indicators",children:ne.map(({key:s,label:n})=>e.jsx("span",{title:n,"aria-label":`${n}: ${a?a[s]?"logged in":"not logged in":"unknown"}`,className:`w-2 h-2 rounded-full ${a?a[s]?"bg-green-400":"bg-white/20":"bg-white/10"}`},s))})}function Ie({profile:a,loginStatus:s,selected:n,onSelect:c,onToggle:x,toggling:m}){return e.jsx(Y,{role:"button",tabIndex:0,"aria-selected":n,"aria-label":`Browser profile: ${a.profile_name}`,onClick:c,onKeyDown:h=>{(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),c())},className:`cursor-pointer transition-colors select-none ${n?"border-accent/50 bg-accent/5":"border-white/5 hover:border-white/15 hover:bg-white/3"}`,children:e.jsxs(Z,{className:"p-3 space-y-2",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-sm font-semibold truncate",children:a.profile_name}),a.agent_name&&e.jsx("p",{className:"text-xs text-shell-text-tertiary truncate",children:a.agent_name})]}),e.jsx(re,{status:a.status})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(le,{node:a.node}),e.jsx($e,{status:s})]}),e.jsx(o,{variant:"ghost",size:"sm","aria-label":a.status==="running"?"Stop browser":"Start browser",disabled:m,onClick:x,className:"h-6 w-6 p-0 shrink-0",children:a.status==="running"?e.jsx(ee,{size:12,className:"text-red-400"}):e.jsx(se,{size:12,className:"text-green-400"})})]})]})})}function Te({onSelect:a,selected:s}){return e.jsx(Y,{role:"button",tabIndex:0,"aria-label":"Create new browser profile","aria-selected":s,onClick:a,onKeyDown:n=>{(n.key==="Enter"||n.key===" ")&&(n.preventDefault(),a())},className:`cursor-pointer transition-colors border-dashed ${s?"border-accent/50 bg-accent/5":"border-white/10 hover:border-accent/30 hover:bg-white/3"}`,children:e.jsxs(Z,{className:"p-3 flex items-center gap-2 text-shell-text-tertiary",children:[e.jsx(Q,{size:14}),e.jsx("span",{className:"text-sm",children:"New Profile"})]})})}function Ue({windowId:a}){const[s,n]=r.useState(null),[c,x]=r.useState(null),[m,h]=r.useState([]),[D,ie]=r.useState({}),[P,ce]=r.useState({}),[$,oe]=r.useState([]),[de,I]=r.useState(!0),[v,T]=r.useState(null),[w,L]=r.useState(!1),[f,B]=r.useState(""),[k,E]=r.useState(""),[C,_]=r.useState(!1),[xe,j]=r.useState(!1),[g,R]=r.useState(""),[S,U]=r.useState("local"),d=typeof window<"u"&&window.innerWidth<640,[he,p]=r.useState(!1),N=r.useCallback(async()=>{I(!0);const t=await Ne();h(t),I(!1)},[]);r.useEffect(()=>{N()},[N]);const O=r.useCallback(async()=>{try{const t=await fetch("/api/agents",{headers:{Accept:"application/json"}});if(t.ok&&(t.headers.get("content-type")??"").includes("application/json")){const l=await t.json();Array.isArray(l)&&oe(l.map(u=>({name:String(u.name??"unknown"),color:String(u.color??"#3b82f6")})))}}catch{}},[]);r.useEffect(()=>{O()},[O]);const V=r.useCallback(async t=>{const i=await Ae(t);i&&ie(l=>({...l,[t]:i}))},[]);r.useEffect(()=>{for(const t of m)V(t.id)},[m,V]);const b=r.useCallback(async t=>{L(!0);const i=await ze(t);i&&ce(l=>({...l,[t]:i})),L(!1)},[]),ue=r.useCallback(t=>{n(t),x("detail"),j(!1),R(t.agent_name??""),U(t.node),t.status==="running"&&b(t.id),d&&p(!0)},[b,d]),me=r.useCallback(()=>{n(null),x("create"),B(""),E(""),d&&p(!0)},[d]),F=r.useCallback(()=>{p(!1),x(null),n(null)},[]),J=r.useCallback(async(t,i)=>{i==null||i.stopPropagation(),T(t.id);let l=null;t.status==="running"?l=await Se(t.id):l=await Ce(t.id),l&&(h(u=>u.map(H=>H.id===l.id?l:H)),(s==null?void 0:s.id)===l.id&&(n(l),l.status==="running"&&b(l.id))),T(null)},[s,b]),M=r.useCallback(async()=>{if(!f.trim())return;_(!0),await ye(f.trim(),k||void 0,"local")&&(await N(),x(null),n(null),d&&p(!1)),_(!1)},[f,k,N,d]),fe=r.useCallback(async()=>{if(!s)return;await ve(s.id)&&(h(i=>i.filter(l=>l.id!==s.id)),n(null),x(null),d&&p(!1))},[s,d]),ge=r.useCallback(async()=>{if(!s)return;await ke(s.id)&&j(!1)},[s]),pe=r.useCallback(async()=>{if(!s||!g)return;const t=await De(s.id,g);t&&(h(i=>i.map(l=>l.id===t.id?t:l)),n(t))},[s,g]),be=r.useCallback(async()=>{if(!s)return;const t=await Pe(s.id,S);t&&(h(i=>i.map(l=>l.id===t.id?t:l)),n(t))},[s,S]),q=e.jsxs("div",{className:"flex flex-col h-full","aria-label":"Create new browser profile",children:[e.jsxs("div",{className:"flex items-center gap-2 px-4 py-3 border-b border-white/5 shrink-0",children:[d&&e.jsx(o,{variant:"ghost",size:"sm","aria-label":"Back",onClick:F,className:"h-7 w-7 p-0 mr-1",children:e.jsx(W,{size:14})}),e.jsx(Q,{size:14,className:"text-accent"}),e.jsx("h2",{className:"text-sm font-semibold",children:"New Profile"})]}),e.jsxs("div",{className:"flex-1 overflow-y-auto p-4 space-y-4",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{htmlFor:"new-profile-name",className:"text-xs text-shell-text-tertiary",children:"Profile name"}),e.jsx(we,{id:"new-profile-name",placeholder:"e.g. research-main",value:f,onChange:t=>B(t.target.value),onKeyDown:t=>{t.key==="Enter"&&M()},"aria-required":"true"})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{htmlFor:"new-profile-agent",className:"text-xs text-shell-text-tertiary",children:"Assign agent (optional)"}),e.jsxs("select",{id:"new-profile-agent",value:k,onChange:t=>E(t.target.value),className:"w-full h-9 rounded-md border border-white/10 bg-shell-surface/50 px-3 text-sm text-shell-text focus:outline-none focus:ring-1 focus:ring-accent",children:[e.jsx("option",{value:"",children:"Unassigned"}),$.map(t=>e.jsx("option",{value:t.name,children:t.name},t.name))]})]}),e.jsx(o,{onClick:M,disabled:!f.trim()||C,className:"w-full","aria-busy":C,children:C?"Creating…":"Create Profile"})]})]}),G=s?e.jsxs("div",{className:"flex flex-col h-full","aria-label":`Browser profile details: ${s.profile_name}`,children:[e.jsxs("div",{className:"flex items-center gap-2 px-4 py-3 border-b border-white/5 shrink-0",children:[d&&e.jsx(o,{variant:"ghost",size:"sm","aria-label":"Back",onClick:F,className:"h-7 w-7 p-0 mr-1",children:e.jsx(W,{size:14})}),e.jsx(z,{size:14,className:"text-accent shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h2",{className:"text-sm font-semibold truncate",children:s.profile_name}),s.agent_name&&e.jsx("p",{className:"text-xs text-shell-text-tertiary truncate",children:s.agent_name})]}),e.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[e.jsx(le,{node:s.node}),e.jsx(re,{status:s.status})]})]}),e.jsxs("div",{className:"flex-1 overflow-y-auto p-4 space-y-4",children:[e.jsxs("section",{"aria-labelledby":"screenshot-heading",children:[e.jsx("h3",{id:"screenshot-heading",className:"text-xs font-medium text-shell-text-tertiary uppercase tracking-wider mb-2",children:"Preview"}),e.jsx("div",{className:"relative w-full aspect-video bg-shell-surface/50 border border-white/5 rounded-md overflow-hidden flex items-center justify-center",children:w?e.jsxs("div",{className:"flex items-center gap-2 text-shell-text-tertiary text-xs",children:[e.jsx(A,{size:12,className:"animate-spin"}),e.jsx("span",{children:"Loading preview…"})]}):P[s.id]?e.jsx("img",{src:P[s.id],alt:`Screenshot of ${s.profile_name}`,className:"w-full h-full object-contain"}):e.jsx("p",{className:"text-xs text-shell-text-tertiary text-center px-4",children:s.status==="running"?"No screenshot available":"Start browser to see preview"})})]}),e.jsxs("section",{"aria-labelledby":"login-status-heading",children:[e.jsx("h3",{id:"login-status-heading",className:"text-xs font-medium text-shell-text-tertiary uppercase tracking-wider mb-2",children:"Login Status"}),e.jsx("div",{className:"space-y-1",children:ne.map(({key:t,label:i})=>{const l=D[s.id],u=l?l[t]:null;return e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[e.jsx("span",{className:`w-2 h-2 rounded-full shrink-0 ${u===!0?"bg-green-400":u===!1?"bg-red-400/60":"bg-white/20"}`,"aria-hidden":"true"}),e.jsx("span",{className:"text-shell-text-secondary",children:i}),e.jsx("span",{className:"ml-auto text-xs text-shell-text-tertiary",children:u===!0?"Logged in":u===!1?"Not logged in":"Unknown"})]},t)})})]}),e.jsxs("section",{"aria-labelledby":"actions-heading",children:[e.jsx("h3",{id:"actions-heading",className:"text-xs font-medium text-shell-text-tertiary uppercase tracking-wider mb-2",children:"Actions"}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx(o,{variant:s.status==="running"?"secondary":"default",size:"sm",disabled:v===s.id,onClick:()=>J(s),"aria-busy":v===s.id,className:"flex-1 flex items-center gap-1.5",children:s.status==="running"?e.jsxs(e.Fragment,{children:[e.jsx(ee,{size:12}),"Stop"]}):e.jsxs(e.Fragment,{children:[e.jsx(se,{size:12}),"Start"]})}),e.jsxs(o,{variant:"secondary",size:"sm",disabled:s.status!=="running",title:"Opens browser in a taOS window","aria-label":"Connect to browser via noVNC — opens browser in a taOS window",className:"flex-1 flex items-center gap-1.5",onClick:()=>{},children:[e.jsx(je,{size:12}),"Connect"]})]}),s.status==="running"&&e.jsxs(o,{variant:"ghost",size:"sm",onClick:()=>b(s.id),disabled:w,"aria-busy":w,className:"w-full flex items-center gap-1.5 text-xs",children:[e.jsx(A,{size:11,className:w?"animate-spin":""}),"Refresh screenshot"]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("label",{htmlFor:"assign-agent-select",className:"text-xs text-shell-text-tertiary",children:"Assign agent"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs("select",{id:"assign-agent-select",value:g,onChange:t=>R(t.target.value),className:"flex-1 h-8 rounded-md border border-white/10 bg-shell-surface/50 px-2 text-xs text-shell-text focus:outline-none focus:ring-1 focus:ring-accent",children:[e.jsx("option",{value:"",children:"Unassigned"}),$.map(t=>e.jsx("option",{value:t.name,children:t.name},t.name))]}),e.jsx(o,{variant:"secondary",size:"sm",onClick:pe,disabled:!g,className:"shrink-0",children:"Assign"})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("label",{htmlFor:"move-node-select",className:"text-xs text-shell-text-tertiary",children:"Node"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("select",{id:"move-node-select",value:S,onChange:t=>U(t.target.value),className:"flex-1 h-8 rounded-md border border-white/10 bg-shell-surface/50 px-2 text-xs text-shell-text focus:outline-none focus:ring-1 focus:ring-accent",children:e.jsx("option",{value:"local",children:"local"})}),e.jsx(o,{variant:"secondary",size:"sm",onClick:be,className:"shrink-0",children:"Move"})]})]})]})]}),e.jsxs("section",{"aria-labelledby":"danger-heading",children:[e.jsx("h3",{id:"danger-heading",className:"text-xs font-medium text-red-400/70 uppercase tracking-wider mb-2",children:"Danger Zone"}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(o,{variant:"ghost",size:"sm",onClick:fe,className:"w-full flex items-center gap-1.5 text-red-400 hover:text-red-300 hover:bg-red-500/10 border border-red-500/20","aria-label":"Delete container",children:[e.jsx(X,{size:12}),"Delete container"]}),xe?e.jsxs("div",{className:"rounded-md border border-red-500/30 bg-red-500/5 p-3 space-y-2",children:[e.jsx("p",{className:"text-xs text-red-300",children:"This permanently removes all passwords, bookmarks, cookies, and browsing history."}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(o,{variant:"ghost",size:"sm",onClick:()=>j(!1),className:"flex-1 text-xs",children:"Cancel"}),e.jsx(o,{size:"sm",onClick:ge,className:"flex-1 text-xs bg-red-600 hover:bg-red-700 text-white border-0","aria-label":"Confirm delete all browser data",children:"Delete all data"})]})]}):e.jsxs(o,{variant:"ghost",size:"sm",onClick:()=>j(!0),className:"w-full flex items-center gap-1.5 text-red-400 hover:text-red-300 hover:bg-red-500/10 border border-red-500/20","aria-label":"Delete browser data",children:[e.jsx(X,{size:12}),"Delete data"]})]})]})]})]}):null,K=e.jsxs("div",{className:"flex flex-col h-full",role:"region","aria-label":"Browser profiles",children:[e.jsxs("div",{className:"flex items-center gap-2 px-4 py-3 border-b border-white/5 shrink-0",children:[e.jsx(z,{size:15,className:"text-accent"}),e.jsx("h1",{className:"text-sm font-semibold",children:"Agent Browsers"})]}),e.jsx("div",{className:"flex-1 overflow-y-auto p-3",children:de?e.jsxs("div",{className:"flex items-center justify-center h-24 text-shell-text-tertiary text-sm",children:[e.jsx(A,{size:14,className:"animate-spin mr-2"}),"Loading profiles…"]}):e.jsxs("div",{role:"list","aria-label":"Browser profile cards",className:"grid grid-cols-1 gap-2",children:[m.map(t=>e.jsx("div",{role:"listitem",children:e.jsx(Ie,{profile:t,loginStatus:D[t.id]??null,selected:(s==null?void 0:s.id)===t.id,onSelect:()=>ue(t),onToggle:i=>J(t,i),toggling:v===t.id})},t.id)),e.jsx("div",{role:"listitem",children:e.jsx(Te,{onSelect:me,selected:c==="create"})})]})})]});return d?e.jsx("div",{className:"w-full h-full bg-shell-bg text-shell-text overflow-hidden",children:he?c==="create"?q:G:K}):e.jsxs("div",{className:"w-full h-full bg-shell-bg text-shell-text flex overflow-hidden",children:[e.jsx("div",{className:"w-72 shrink-0 border-r border-white/5 flex flex-col overflow-hidden",children:K}),e.jsx("div",{className:"flex-1 min-w-0 overflow-hidden",children:c==="create"?q:c==="detail"&&s?G:e.jsx("div",{className:"flex items-center justify-center h-full text-shell-text-tertiary",children:e.jsxs("div",{className:"text-center space-y-2",children:[e.jsx(z,{size:32,className:"mx-auto opacity-20"}),e.jsx("p",{className:"text-sm",children:"Select a profile to view details"}),e.jsx("p",{className:"text-xs opacity-60",children:"or create a new one"})]})})})]})}export{Ue as AgentBrowsersApp}; +import{r,j as e}from"./vendor-react-l6srOxy7.js";import{B as o,I as we,C as Y,c as Z}from"./toolbar-UW6q5pkx.js";import{a0 as W,g as Q,aq as z,aa as A,aO as ee,a6 as se,l as je,y as X}from"./vendor-icons-DcMSPw1y.js";import"./vendor-radix-BhM7AEEG.js";import"./vendor-layout-B-pp9n1f.js";async function N(a,s,n){try{const c=await fetch(a,{...n,headers:{Accept:"application/json",...n==null?void 0:n.headers}});return!c.ok||!(c.headers.get("content-type")??"").includes("application/json")?s:await c.json()}catch{return s}}async function te(a,s,n){return N(a,n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)})}async function ae(a,s,n){return N(a,n,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)})}async function ye(a){const n=await N("/api/agent-browsers/profiles",{profiles:[]});return Array.isArray(n.profiles)?n.profiles:[]}async function Ne(a,s,n){try{const c=await fetch("/api/agent-browsers/profiles",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({profile_name:a,agent_name:s??null,node:n??"local"})});return!c.ok||!(c.headers.get("content-type")??"").includes("application/json")?null:await c.json()}catch{return null}}async function ve(a){try{return(await fetch(`/api/agent-browsers/profiles/${encodeURIComponent(a)}`,{method:"DELETE",headers:{Accept:"application/json"}})).ok}catch{return!1}}async function ke(a){try{return(await fetch(`/api/agent-browsers/profiles/${encodeURIComponent(a)}/data`,{method:"DELETE",headers:{Accept:"application/json"}})).ok}catch{return!1}}async function Ce(a){return await te(`/api/agent-browsers/profiles/${encodeURIComponent(a)}/start`,{},null)}async function Se(a){return await te(`/api/agent-browsers/profiles/${encodeURIComponent(a)}/stop`,{},null)}async function ze(a){return(await N(`/api/agent-browsers/profiles/${encodeURIComponent(a)}/screenshot`,{})).data??null}async function Ae(a){try{const s=await fetch(`/api/agent-browsers/profiles/${encodeURIComponent(a)}/login-status`,{headers:{Accept:"application/json"}});return!s.ok||!(s.headers.get("content-type")??"").includes("application/json")?null:await s.json()}catch{return null}}async function De(a,s){return await ae(`/api/agent-browsers/profiles/${encodeURIComponent(a)}/assign`,{agent_name:s},null)}async function Pe(a,s){return await ae(`/api/agent-browsers/profiles/${encodeURIComponent(a)}/move`,{node:s},null)}const ne=[{key:"x",label:"X / Twitter"},{key:"github",label:"GitHub"},{key:"youtube",label:"YouTube"},{key:"reddit",label:"Reddit"}];function re({status:a}){const s=a==="running"?"bg-green-500/15 text-green-400 border border-green-500/30":a==="error"?"bg-red-500/15 text-red-400 border border-red-500/30":"bg-white/10 text-shell-text-tertiary border border-white/10";return e.jsx("span",{className:`inline-flex items-center px-1.5 py-0.5 rounded text-[10px] font-medium ${s}`,children:a})}function le({node:a}){return e.jsx("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded text-[10px] font-medium bg-accent/10 text-accent border border-accent/20",children:a})}function $e({status:a}){return e.jsx("div",{className:"flex gap-1","aria-label":"Login status indicators",children:ne.map(({key:s,label:n})=>e.jsx("span",{title:n,"aria-label":`${n}: ${a?a[s]?"logged in":"not logged in":"unknown"}`,className:`w-2 h-2 rounded-full ${a?a[s]?"bg-green-400":"bg-white/20":"bg-white/10"}`},s))})}function Ie({profile:a,loginStatus:s,selected:n,onSelect:c,onToggle:x,toggling:m}){return e.jsx(Y,{role:"button",tabIndex:0,"aria-selected":n,"aria-label":`Browser profile: ${a.profile_name}`,onClick:c,onKeyDown:h=>{(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),c())},className:`cursor-pointer transition-colors select-none ${n?"border-accent/50 bg-accent/5":"border-white/5 hover:border-white/15 hover:bg-white/3"}`,children:e.jsxs(Z,{className:"p-3 space-y-2",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-sm font-semibold truncate",children:a.profile_name}),a.agent_name&&e.jsx("p",{className:"text-xs text-shell-text-tertiary truncate",children:a.agent_name})]}),e.jsx(re,{status:a.status})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(le,{node:a.node}),e.jsx($e,{status:s})]}),e.jsx(o,{variant:"ghost",size:"sm","aria-label":a.status==="running"?"Stop browser":"Start browser",disabled:m,onClick:x,className:"h-6 w-6 p-0 shrink-0",children:a.status==="running"?e.jsx(ee,{size:12,className:"text-red-400"}):e.jsx(se,{size:12,className:"text-green-400"})})]})]})})}function Te({onSelect:a,selected:s}){return e.jsx(Y,{role:"button",tabIndex:0,"aria-label":"Create new browser profile","aria-selected":s,onClick:a,onKeyDown:n=>{(n.key==="Enter"||n.key===" ")&&(n.preventDefault(),a())},className:`cursor-pointer transition-colors border-dashed ${s?"border-accent/50 bg-accent/5":"border-white/10 hover:border-accent/30 hover:bg-white/3"}`,children:e.jsxs(Z,{className:"p-3 flex items-center gap-2 text-shell-text-tertiary",children:[e.jsx(Q,{size:14}),e.jsx("span",{className:"text-sm",children:"New Profile"})]})})}function Ue({windowId:a}){const[s,n]=r.useState(null),[c,x]=r.useState(null),[m,h]=r.useState([]),[D,ie]=r.useState({}),[P,ce]=r.useState({}),[$,oe]=r.useState([]),[de,I]=r.useState(!0),[v,T]=r.useState(null),[w,L]=r.useState(!1),[f,B]=r.useState(""),[k,E]=r.useState(""),[C,_]=r.useState(!1),[xe,j]=r.useState(!1),[g,R]=r.useState(""),[S,U]=r.useState("local"),d=typeof window<"u"&&window.innerWidth<640,[he,p]=r.useState(!1),y=r.useCallback(async()=>{I(!0);const t=await ye();h(t),I(!1)},[]);r.useEffect(()=>{y()},[y]);const O=r.useCallback(async()=>{try{const t=await fetch("/api/agents",{headers:{Accept:"application/json"}});if(t.ok&&(t.headers.get("content-type")??"").includes("application/json")){const l=await t.json();Array.isArray(l)&&oe(l.map(u=>({name:String(u.name??"unknown"),color:String(u.color??"#3b82f6")})))}}catch{}},[]);r.useEffect(()=>{O()},[O]);const V=r.useCallback(async t=>{const i=await Ae(t);i&&ie(l=>({...l,[t]:i}))},[]);r.useEffect(()=>{for(const t of m)V(t.id)},[m,V]);const b=r.useCallback(async t=>{L(!0);const i=await ze(t);i&&ce(l=>({...l,[t]:i})),L(!1)},[]),ue=r.useCallback(t=>{n(t),x("detail"),j(!1),R(t.agent_name??""),U(t.node),t.status==="running"&&b(t.id),d&&p(!0)},[b,d]),me=r.useCallback(()=>{n(null),x("create"),B(""),E(""),d&&p(!0)},[d]),F=r.useCallback(()=>{p(!1),x(null),n(null)},[]),J=r.useCallback(async(t,i)=>{i==null||i.stopPropagation(),T(t.id);let l=null;t.status==="running"?l=await Se(t.id):l=await Ce(t.id),l&&(h(u=>u.map(H=>H.id===l.id?l:H)),(s==null?void 0:s.id)===l.id&&(n(l),l.status==="running"&&b(l.id))),T(null)},[s,b]),q=r.useCallback(async()=>{if(!f.trim())return;_(!0),await Ne(f.trim(),k||void 0,"local")&&(await y(),x(null),n(null),d&&p(!1)),_(!1)},[f,k,y,d]),fe=r.useCallback(async()=>{if(!s)return;await ve(s.id)&&(h(i=>i.filter(l=>l.id!==s.id)),n(null),x(null),d&&p(!1))},[s,d]),ge=r.useCallback(async()=>{if(!s)return;await ke(s.id)&&j(!1)},[s]),pe=r.useCallback(async()=>{if(!s||!g)return;const t=await De(s.id,g);t&&(h(i=>i.map(l=>l.id===t.id?t:l)),n(t))},[s,g]),be=r.useCallback(async()=>{if(!s)return;const t=await Pe(s.id,S);t&&(h(i=>i.map(l=>l.id===t.id?t:l)),n(t))},[s,S]),M=e.jsxs("div",{className:"flex flex-col h-full","aria-label":"Create new browser profile",children:[e.jsxs("div",{className:"flex items-center gap-2 px-4 py-3 border-b border-white/5 shrink-0",children:[d&&e.jsx(o,{variant:"ghost",size:"sm","aria-label":"Back",onClick:F,className:"h-7 w-7 p-0 mr-1",children:e.jsx(W,{size:14})}),e.jsx(Q,{size:14,className:"text-accent"}),e.jsx("h2",{className:"text-sm font-semibold",children:"New Profile"})]}),e.jsxs("div",{className:"flex-1 overflow-y-auto p-4 space-y-4",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{htmlFor:"new-profile-name",className:"text-xs text-shell-text-tertiary",children:"Profile name"}),e.jsx(we,{id:"new-profile-name",placeholder:"e.g. research-main",value:f,onChange:t=>B(t.target.value),onKeyDown:t=>{t.key==="Enter"&&q()},"aria-required":"true"})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{htmlFor:"new-profile-agent",className:"text-xs text-shell-text-tertiary",children:"Assign agent (optional)"}),e.jsxs("select",{id:"new-profile-agent",value:k,onChange:t=>E(t.target.value),className:"w-full h-9 rounded-md border border-white/10 bg-shell-surface/50 px-3 text-sm text-shell-text focus:outline-none focus:ring-1 focus:ring-accent",children:[e.jsx("option",{value:"",children:"Unassigned"}),$.map(t=>e.jsx("option",{value:t.name,children:t.name},t.name))]})]}),e.jsx(o,{onClick:q,disabled:!f.trim()||C,className:"w-full","aria-busy":C,children:C?"Creating…":"Create Profile"})]})]}),G=s?e.jsxs("div",{className:"flex flex-col h-full","aria-label":`Browser profile details: ${s.profile_name}`,children:[e.jsxs("div",{className:"flex items-center gap-2 px-4 py-3 border-b border-white/5 shrink-0",children:[d&&e.jsx(o,{variant:"ghost",size:"sm","aria-label":"Back",onClick:F,className:"h-7 w-7 p-0 mr-1",children:e.jsx(W,{size:14})}),e.jsx(z,{size:14,className:"text-accent shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h2",{className:"text-sm font-semibold truncate",children:s.profile_name}),s.agent_name&&e.jsx("p",{className:"text-xs text-shell-text-tertiary truncate",children:s.agent_name})]}),e.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[e.jsx(le,{node:s.node}),e.jsx(re,{status:s.status})]})]}),e.jsxs("div",{className:"flex-1 overflow-y-auto p-4 space-y-4",children:[e.jsxs("section",{"aria-labelledby":"screenshot-heading",children:[e.jsx("h3",{id:"screenshot-heading",className:"text-xs font-medium text-shell-text-tertiary uppercase tracking-wider mb-2",children:"Preview"}),e.jsx("div",{className:"relative w-full aspect-video bg-shell-surface/50 border border-white/5 rounded-md overflow-hidden flex items-center justify-center",children:w?e.jsxs("div",{className:"flex items-center gap-2 text-shell-text-tertiary text-xs",children:[e.jsx(A,{size:12,className:"animate-spin"}),e.jsx("span",{children:"Loading preview…"})]}):P[s.id]?e.jsx("img",{src:P[s.id],alt:`Screenshot of ${s.profile_name}`,className:"w-full h-full object-contain"}):e.jsx("p",{className:"text-xs text-shell-text-tertiary text-center px-4",children:s.status==="running"?"No screenshot available":"Start browser to see preview"})})]}),e.jsxs("section",{"aria-labelledby":"login-status-heading",children:[e.jsx("h3",{id:"login-status-heading",className:"text-xs font-medium text-shell-text-tertiary uppercase tracking-wider mb-2",children:"Login Status"}),e.jsx("div",{className:"space-y-1",children:ne.map(({key:t,label:i})=>{const l=D[s.id],u=l?l[t]:null;return e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[e.jsx("span",{className:`w-2 h-2 rounded-full shrink-0 ${u===!0?"bg-green-400":u===!1?"bg-red-400/60":"bg-white/20"}`,"aria-hidden":"true"}),e.jsx("span",{className:"text-shell-text-secondary",children:i}),e.jsx("span",{className:"ml-auto text-xs text-shell-text-tertiary",children:u===!0?"Logged in":u===!1?"Not logged in":"Unknown"})]},t)})})]}),e.jsxs("section",{"aria-labelledby":"actions-heading",children:[e.jsx("h3",{id:"actions-heading",className:"text-xs font-medium text-shell-text-tertiary uppercase tracking-wider mb-2",children:"Actions"}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx(o,{variant:s.status==="running"?"secondary":"default",size:"sm",disabled:v===s.id,onClick:()=>J(s),"aria-busy":v===s.id,className:"flex-1 flex items-center gap-1.5",children:s.status==="running"?e.jsxs(e.Fragment,{children:[e.jsx(ee,{size:12}),"Stop"]}):e.jsxs(e.Fragment,{children:[e.jsx(se,{size:12}),"Start"]})}),e.jsxs(o,{variant:"secondary",size:"sm",disabled:s.status!=="running",title:"Opens browser in a taOS window","aria-label":"Connect to browser via noVNC — opens browser in a taOS window",className:"flex-1 flex items-center gap-1.5",onClick:()=>{},children:[e.jsx(je,{size:12}),"Connect"]})]}),s.status==="running"&&e.jsxs(o,{variant:"ghost",size:"sm",onClick:()=>b(s.id),disabled:w,"aria-busy":w,className:"w-full flex items-center gap-1.5 text-xs",children:[e.jsx(A,{size:11,className:w?"animate-spin":""}),"Refresh screenshot"]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("label",{htmlFor:"assign-agent-select",className:"text-xs text-shell-text-tertiary",children:"Assign agent"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs("select",{id:"assign-agent-select",value:g,onChange:t=>R(t.target.value),className:"flex-1 h-8 rounded-md border border-white/10 bg-shell-surface/50 px-2 text-xs text-shell-text focus:outline-none focus:ring-1 focus:ring-accent",children:[e.jsx("option",{value:"",children:"Unassigned"}),$.map(t=>e.jsx("option",{value:t.name,children:t.name},t.name))]}),e.jsx(o,{variant:"secondary",size:"sm",onClick:pe,disabled:!g,className:"shrink-0",children:"Assign"})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("label",{htmlFor:"move-node-select",className:"text-xs text-shell-text-tertiary",children:"Node"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("select",{id:"move-node-select",value:S,onChange:t=>U(t.target.value),className:"flex-1 h-8 rounded-md border border-white/10 bg-shell-surface/50 px-2 text-xs text-shell-text focus:outline-none focus:ring-1 focus:ring-accent",children:e.jsx("option",{value:"local",children:"local"})}),e.jsx(o,{variant:"secondary",size:"sm",onClick:be,className:"shrink-0",children:"Move"})]})]})]})]}),e.jsxs("section",{"aria-labelledby":"danger-heading",children:[e.jsx("h3",{id:"danger-heading",className:"text-xs font-medium text-red-400/70 uppercase tracking-wider mb-2",children:"Danger Zone"}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(o,{variant:"ghost",size:"sm",onClick:fe,className:"w-full flex items-center gap-1.5 text-red-400 hover:text-red-300 hover:bg-red-500/10 border border-red-500/20","aria-label":"Delete container",children:[e.jsx(X,{size:12}),"Delete container"]}),xe?e.jsxs("div",{className:"rounded-md border border-red-500/30 bg-red-500/5 p-3 space-y-2",children:[e.jsx("p",{className:"text-xs text-red-300",children:"This permanently removes all passwords, bookmarks, cookies, and browsing history."}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(o,{variant:"ghost",size:"sm",onClick:()=>j(!1),className:"flex-1 text-xs",children:"Cancel"}),e.jsx(o,{size:"sm",onClick:ge,className:"flex-1 text-xs bg-red-600 hover:bg-red-700 text-white border-0","aria-label":"Confirm delete all browser data",children:"Delete all data"})]})]}):e.jsxs(o,{variant:"ghost",size:"sm",onClick:()=>j(!0),className:"w-full flex items-center gap-1.5 text-red-400 hover:text-red-300 hover:bg-red-500/10 border border-red-500/20","aria-label":"Delete browser data",children:[e.jsx(X,{size:12}),"Delete data"]})]})]})]})]}):null,K=e.jsxs("div",{className:"flex flex-col h-full",role:"region","aria-label":"Browser profiles",children:[e.jsxs("div",{className:"flex items-center gap-2 px-4 py-3 border-b border-white/5 shrink-0",children:[e.jsx(z,{size:15,className:"text-accent"}),e.jsx("h1",{className:"text-sm font-semibold",children:"Agent Browsers"})]}),e.jsx("div",{className:"flex-1 overflow-y-auto p-3",children:de?e.jsxs("div",{className:"flex items-center justify-center h-24 text-shell-text-tertiary text-sm",children:[e.jsx(A,{size:14,className:"animate-spin mr-2"}),"Loading profiles…"]}):e.jsxs("div",{role:"list","aria-label":"Browser profile cards",className:"grid grid-cols-1 gap-2",children:[m.map(t=>e.jsx("div",{role:"listitem",children:e.jsx(Ie,{profile:t,loginStatus:D[t.id]??null,selected:(s==null?void 0:s.id)===t.id,onSelect:()=>ue(t),onToggle:i=>J(t,i),toggling:v===t.id})},t.id)),e.jsx("div",{role:"listitem",children:e.jsx(Te,{onSelect:me,selected:c==="create"})})]})})]});return d?e.jsx("div",{className:"w-full h-full bg-shell-bg text-shell-text overflow-hidden",children:he?c==="create"?M:G:K}):e.jsxs("div",{className:"w-full h-full bg-shell-bg text-shell-text flex overflow-hidden",children:[e.jsx("div",{className:"w-72 shrink-0 border-r border-white/5 flex flex-col overflow-hidden",children:K}),e.jsx("div",{className:"flex-1 min-w-0 overflow-hidden",children:c==="create"?M:c==="detail"&&s?G:e.jsx("div",{className:"flex items-center justify-center h-full text-shell-text-tertiary",children:e.jsxs("div",{className:"text-center space-y-2",children:[e.jsx(z,{size:32,className:"mx-auto opacity-20"}),e.jsx("p",{className:"text-sm",children:"Select a profile to view details"}),e.jsx("p",{className:"text-xs opacity-60",children:"or create a new one"})]})})})]})}export{Ue as AgentBrowsersApp}; diff --git a/static/desktop/assets/AgentsApp-DcLTqnmh.js b/static/desktop/assets/AgentsApp-D8hlDDmJ.js similarity index 71% rename from static/desktop/assets/AgentsApp-DcLTqnmh.js rename to static/desktop/assets/AgentsApp-D8hlDDmJ.js index 021cecac..dbfd10c4 100644 --- a/static/desktop/assets/AgentsApp-DcLTqnmh.js +++ b/static/desktop/assets/AgentsApp-D8hlDDmJ.js @@ -1,5 +1,5 @@ -import{r as i,j as n,b as ne}from"./vendor-react-l6srOxy7.js";import{Y as Ff,f as Mn,_ as mf,t as $t,$ as Xt,V as qt,a0 as sf,S as ei,X as Be,j as fi,u as hn,l as ai,v as _f,g as Vf,a1 as Ln,a2 as na,D as Kf,E as pn,a3 as ni,R as jn,a4 as yn,y as vn,a5 as Za}from"./vendor-icons-CiM_hUpN.js";import{C as Ge,L as ae,I as lf,T as ti,B as G,r as ta,d as ii,e as ri,f as Qe,g as Re}from"./toolbar-UW6q5pkx.js";import{H as Cn,f as oi,w as si,C as li}from"./models-D8xGfVt0.js";import{a as ui}from"./cluster-Ca85Gm-W.js";import"./vendor-radix-BhM7AEEG.js";import"./vendor-layout-B-pp9n1f.js";const ci={search:"bg-blue-500/20 text-blue-400",files:"bg-amber-500/20 text-amber-400",code:"bg-slate-500/20 text-slate-400",media:"bg-pink-500/20 text-pink-400",browser:"bg-cyan-500/20 text-cyan-400",data:"bg-emerald-500/20 text-emerald-400",comms:"bg-indigo-500/20 text-indigo-400",system:"bg-slate-500/20 text-slate-400"};function di({agentId:e,framework:f}){const[a,t]=i.useState([]),[r,o]=i.useState(new Set),[s,l]=i.useState(!0),[u,c]=i.useState(new Set),d=i.useCallback(async()=>{try{const[w,k]=await Promise.all([fetch("/api/skills").then(I=>I.json()),fetch(`/api/agents/${e}/skills`).then(I=>I.json())]);t(w.skills??[]),o(new Set((k.skills??[]).map(I=>I.id)))}catch{t([]),o(new Set)}l(!1)},[e]);i.useEffect(()=>{d()},[d]);const g=i.useCallback(async(w,k)=>{c(I=>new Set([...I,w.id]));try{k?(await fetch(`/api/agents/${e}/skills`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({skill_id:w.id})}),o(I=>new Set([...I,w.id]))):(await fetch(`/api/agents/${e}/skills/${w.id}`,{method:"DELETE"}),o(I=>{const S=new Set(I);return S.delete(w.id),S}))}catch{}c(I=>{const S=new Set(I);return S.delete(w.id),S})},[e]);if(s)return n.jsx("div",{className:"flex items-center justify-center h-full",children:n.jsx(Ff,{className:"w-5 h-5 animate-spin text-shell-text-tertiary"})});const M=w=>w.frameworks[f]??"unsupported",h=a.filter(w=>r.has(w.id)),p=a.filter(w=>!r.has(w.id)&&M(w)!=="unsupported"),j=a.filter(w=>M(w)==="unsupported"),m=(w,k,I=!1)=>{const S=M(w),x=u.has(w.id);return n.jsxs("div",{className:`flex items-start gap-3 p-3 rounded-xl border border-white/5 bg-white/[0.02] hover:bg-white/[0.04] transition-colors ${I?"opacity-40":""}`,children:[n.jsx("div",{className:"w-8 h-8 rounded-lg bg-white/5 flex items-center justify-center shrink-0",children:n.jsx(mf,{size:14,className:"text-shell-text-secondary"})}),n.jsxs("div",{className:"flex-1 min-w-0",children:[n.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[n.jsx("span",{className:"text-sm font-medium text-shell-text",children:w.name}),n.jsx("span",{className:`text-[10px] px-1.5 py-0.5 rounded-full ${ci[w.category]??"bg-white/10 text-white/60"}`,children:w.category}),!I&&n.jsx("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full bg-white/5 text-white/50",children:S})]}),n.jsx("p",{className:"text-xs text-shell-text-secondary",children:w.description}),I&&n.jsxs("p",{className:"text-[10px] text-shell-text-tertiary mt-1 italic",children:["Not supported by ",f]}),w.requires_services&&w.requires_services.length>0&&n.jsxs("div",{className:"flex items-center gap-1 mt-1 text-[10px] text-shell-text-tertiary",children:[n.jsx($t,{size:10}),n.jsxs("span",{children:["Requires: ",w.requires_services.join(", ")]})]})]}),!I&&n.jsx("button",{onClick:()=>g(w,!k),disabled:x,className:`relative w-10 h-6 rounded-full transition-colors ${k?"bg-accent":"bg-white/10"} disabled:opacity-50`,"aria-label":k?"Disable skill":"Enable skill",children:n.jsx("div",{className:`absolute top-0.5 w-5 h-5 rounded-full bg-white transition-transform ${k?"translate-x-4":"translate-x-0.5"}`})})]},w.id)};return n.jsxs("div",{className:"flex flex-col gap-4 p-4 overflow-y-auto h-full",children:[h.length>0&&n.jsxs("section",{children:[n.jsxs("h3",{className:"text-[10px] font-semibold uppercase tracking-wider text-shell-text-tertiary mb-2 flex items-center gap-1.5",children:[n.jsx(Mn,{size:12,className:"text-emerald-400"}),"Enabled (",h.length,")"]}),n.jsx("div",{className:"flex flex-col gap-2",children:h.map(w=>m(w,!0))})]}),p.length>0&&n.jsxs("section",{children:[n.jsxs("h3",{className:"text-[10px] font-semibold uppercase tracking-wider text-shell-text-tertiary mb-2",children:["Available (",p.length,")"]}),n.jsx("div",{className:"flex flex-col gap-2",children:p.map(w=>m(w,!1))})]}),j.length>0&&n.jsxs("section",{children:[n.jsxs("h3",{className:"text-[10px] font-semibold uppercase tracking-wider text-shell-text-tertiary mb-2",children:["Incompatible (",j.length,")"]}),n.jsx("div",{className:"flex flex-col gap-2",children:j.map(w=>m(w,!1,!0))})]}),a.length===0&&n.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-shell-text-tertiary",children:[n.jsx(mf,{size:32,className:"mb-3"}),n.jsx("p",{className:"text-sm",children:"No skills available"}),n.jsx("p",{className:"text-xs mt-1",children:"Skills will appear here once registered"})]})]})}function gi(e){return{id:String(e.id),from_agent:e.from_agent??e.from??"",to_agent:e.to_agent??e.to??"",message:e.message,tool_calls:e.tool_calls??[],tool_results:e.tool_results??[],reasoning:e.reasoning??"",depth:e.depth,created_at:e.created_at??e.timestamp??0}}function mi(e){const f=Date.now()-e*1e3;return f<6e4?"just now":f<36e5?`${Math.floor(f/6e4)}m ago`:f<864e5?`${Math.floor(f/36e5)}h ago`:new Date(e*1e3).toLocaleDateString()}function bi({agentName:e}){const[f,a]=i.useState([]),[t,r]=i.useState(!0),[o,s]=i.useState(!1),[l,u]=i.useState("user"),[c,d]=i.useState(""),[g,M]=i.useState({}),h=i.useCallback(async()=>{try{const m=await fetch(`/api/agents/${encodeURIComponent(e)}/messages?limit=50&depth=3`);if(m.ok&&(m.headers.get("content-type")??"").includes("application/json")){const w=await m.json(),k=Array.isArray(w)?w:w.messages??[];a(k.map(gi))}else a([])}catch{a([])}r(!1)},[e]);i.useEffect(()=>{h();const m=setInterval(h,1e4);return()=>clearInterval(m)},[h]);const p=async()=>{if(c.trim()){s(!0);try{await fetch(`/api/agents/${encodeURIComponent(e)}/messages`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({from_agent:l,message:c,depth:2})}),d(""),await h()}catch{}s(!1)}},j=m=>{M(w=>({...w,[m]:!w[m]}))};return t?n.jsx("div",{className:"flex items-center justify-center h-full",children:n.jsx(Ff,{size:20,className:"animate-spin text-shell-text-tertiary"})}):n.jsxs("div",{className:"flex flex-col h-full",children:[n.jsx("div",{className:"flex-1 overflow-y-auto p-3 space-y-2",children:f.length===0?n.jsxs("div",{className:"flex flex-col items-center justify-center h-full text-shell-text-tertiary gap-2",children:[n.jsx(Xt,{size:24}),n.jsx("p",{className:"text-sm",children:"No messages yet"}),n.jsx("p",{className:"text-xs",children:"Inter-agent messages will appear here"})]}):f.map(m=>{const w=g[m.id],k=m.tool_calls&&m.tool_calls.length>0||m.tool_results&&m.tool_results.length>0||m.reasoning&&m.reasoning.length>0;return n.jsxs(Ge,{className:"p-3 cursor-pointer hover:bg-shell-surface/40 transition-colors",onClick:()=>k&&j(m.id),children:[n.jsxs("div",{className:"flex items-center justify-between mb-1",children:[n.jsxs("span",{className:"text-xs text-shell-text-secondary font-medium",children:[m.from_agent," → ",m.to_agent]}),n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsxs("span",{className:"text-[10px] text-shell-text-tertiary",children:["depth ",m.depth]}),n.jsx("span",{className:"text-[10px] text-shell-text-tertiary",children:mi(m.created_at)})]})]}),n.jsx("p",{className:`text-sm text-shell-text whitespace-pre-wrap ${w?"":"line-clamp-3"}`,children:m.message}),w&&m.reasoning&&n.jsxs("div",{className:"mt-2",children:[n.jsx("p",{className:"text-[10px] text-shell-text-tertiary uppercase tracking-wide mb-0.5",children:"Reasoning"}),n.jsx("p",{className:"text-xs text-shell-text-secondary pl-2 border-l border-white/10 whitespace-pre-wrap",children:m.reasoning})]}),w&&m.tool_calls&&m.tool_calls.length>0&&n.jsxs("div",{className:"mt-2",children:[n.jsx("p",{className:"text-[10px] text-shell-text-tertiary uppercase tracking-wide mb-0.5",children:"Tool Calls"}),n.jsx("pre",{className:"text-[10px] text-shell-text-secondary p-2 rounded bg-shell-bg-deep border border-white/5 overflow-x-auto",children:JSON.stringify(m.tool_calls,null,2)})]}),w&&m.tool_results&&m.tool_results.length>0&&n.jsxs("div",{className:"mt-2",children:[n.jsx("p",{className:"text-[10px] text-shell-text-tertiary uppercase tracking-wide mb-0.5",children:"Tool Results"}),n.jsx("pre",{className:"text-[10px] text-shell-text-secondary p-2 rounded bg-shell-bg-deep border border-white/5 overflow-x-auto",children:JSON.stringify(m.tool_results,null,2)})]})]},m.id)})}),n.jsxs("div",{className:"border-t border-white/10 p-3 space-y-2 bg-shell-surface/30 shrink-0",children:[n.jsx("div",{className:"flex gap-2",children:n.jsxs("div",{className:"flex-1",children:[n.jsx(ae,{htmlFor:"from-agent",className:"text-[10px] mb-0.5 block",children:"From"}),n.jsx(lf,{id:"from-agent",value:l,onChange:m=>u(m.target.value),placeholder:"user"})]})}),n.jsxs("div",{children:[n.jsx(ae,{htmlFor:"msg-content",className:"text-[10px] mb-0.5 block",children:"Message"}),n.jsx(ti,{id:"msg-content",value:c,onChange:m=>d(m.target.value),placeholder:`Send a message to ${e}...`,rows:3})]}),n.jsxs(G,{onClick:p,disabled:o||!c.trim(),size:"sm",className:"w-full",children:[o?n.jsx(Ff,{size:14,className:"animate-spin"}):n.jsx(qt,{size:14}),"Send to ",e]})]})]})}async function wi(e){const f=new URLSearchParams;return e.source&&f.set("source",e.source),e.q&&f.set("q",e.q),e.limit&&f.set("limit",String(e.limit)),e.offset&&f.set("offset",String(e.offset)),(await(await fetch(`/api/personas/library?${f}`)).json()).personas}async function Mi(e,f){if(e==="builtin"){const a=await fetch(`/api/templates/${encodeURIComponent(f)}`);if(!a.ok)throw new Error(`Template not found: ${f}`);const t=await a.json();return{id:t.id,name:t.name,source:"builtin",soul_md:t.system_prompt??"",agent_md:void 0}}if(e==="user"){const a=await fetch(`/api/user-personas/${encodeURIComponent(f)}`);if(!a.ok)throw new Error(`User persona not found: ${f}`);const t=await a.json();return{id:t.id,name:t.name,source:"user",soul_md:t.soul_md??"",agent_md:t.agent_md}}throw new Error(`Unsupported source for detail fetch: ${e}`)}const hi=[{value:"",label:"All sources"},{value:"builtin",label:"Built-in"},{value:"awesome-openclaw",label:"awesome-openclaw"},{value:"prompt-library",label:"prompt-library"},{value:"user",label:"My library"}];function Li({onSelect:e}){const[f,a]=i.useState(""),[t,r]=i.useState(""),[o,s]=i.useState([]),[l,u]=i.useState(!1),[c,d]=i.useState(null),[g,M]=i.useState(null),[h,p]=i.useState(!1),[j,m]=i.useState(null),[w,k]=i.useState(null);i.useEffect(()=>{u(!0),d(null),wi({source:f||void 0,q:t||void 0}).then(s).catch(x=>d(String(x))).finally(()=>u(!1))},[f,t]);function I(x){M(x),k(null),m(null),p(!0),Mi(x.source,x.id).then(k).catch(E=>m(String(E))).finally(()=>p(!1))}function S(){w&&e({kind:"library",source_persona_id:`${w.source}:${w.id}`,soul_md:w.soul_md,agent_md:w.agent_md??""})}return n.jsxs("div",{className:"flex gap-3 min-h-0",children:[n.jsxs("div",{className:"flex flex-col gap-2 w-56 shrink-0",children:[n.jsx("input",{type:"search","aria-label":"Search personas",placeholder:"Search…",value:t,onChange:x=>r(x.target.value),className:"w-full rounded border border-white/20 bg-white/5 px-2 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-blue-400"}),n.jsx("select",{"aria-label":"Filter by source",value:f,onChange:x=>a(x.target.value),className:"w-full rounded border border-white/20 bg-white/5 px-2 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-blue-400",children:hi.map(x=>n.jsx("option",{value:x.value,children:x.label},x.value))}),c&&n.jsx("div",{role:"alert",className:"rounded bg-red-900/40 px-2 py-1 text-xs text-red-300",children:c}),n.jsxs("ul",{"aria-label":"Persona list",className:"flex flex-col gap-1 overflow-y-auto",children:[l&&n.jsx("li",{className:"py-4 text-center text-sm opacity-50",children:"Loading…"}),!l&&o.length===0&&!c&&n.jsx("li",{className:"py-4 text-center text-sm opacity-50",children:"No personas found."}),o.map(x=>n.jsx("li",{children:n.jsxs("button",{onClick:()=>I(x),"aria-pressed":(g==null?void 0:g.id)===x.id&&(g==null?void 0:g.source)===x.source,className:`w-full rounded px-2 py-1.5 text-left text-sm transition-colors ${(g==null?void 0:g.id)===x.id&&(g==null?void 0:g.source)===x.source?"bg-blue-600/40 text-blue-200":"hover:bg-white/10"}`,children:[n.jsx("div",{className:"font-medium truncate",children:x.name}),n.jsx("div",{className:"text-xs opacity-50 capitalize",children:x.source})]})},`${x.source}:${x.id}`))]})]}),n.jsxs("div",{className:"flex flex-1 flex-col gap-2 min-w-0",children:[!g&&n.jsx("p",{className:"text-sm opacity-40 mt-4",children:"Select a persona to preview it."}),g&&n.jsxs(n.Fragment,{children:[n.jsx("h3",{className:"font-semibold text-sm",children:g.name}),n.jsx("span",{className:"text-xs opacity-50 capitalize",children:g.source}),j&&n.jsx("div",{role:"alert",className:"rounded bg-red-900/40 px-2 py-1 text-xs text-red-300",children:j}),h&&n.jsx("p",{className:"text-sm opacity-40",children:"Loading…"}),w&&n.jsxs(n.Fragment,{children:[n.jsx("pre",{className:"flex-1 overflow-y-auto whitespace-pre-wrap rounded bg-black/30 p-2 text-xs leading-relaxed font-mono",children:w.soul_md||"(no persona content)"}),n.jsx("button",{onClick:S,className:"self-start rounded bg-blue-600 px-3 py-1.5 text-sm font-medium hover:bg-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-400",children:"Use this persona"})]})]})]})]})}function pi({onSelect:e}){const[f,a]=i.useState(""),[t,r]=i.useState(""),[o,s]=i.useState(!1),[l,u]=i.useState("");return n.jsxs("div",{className:"flex flex-col gap-3",children:[n.jsxs("label",{className:"flex flex-col gap-1",children:[n.jsx("span",{className:"text-xs uppercase opacity-60",children:"Soul (identity)"}),n.jsx("textarea",{"aria-label":"Soul (identity)",value:f,onChange:c=>a(c.target.value),rows:6,className:"rounded border border-white/20 bg-white/5 px-2 py-1 font-mono text-sm focus:outline-none focus:ring-1 focus:ring-blue-400",placeholder:"You are…"})]}),n.jsxs("label",{className:"flex flex-col gap-1",children:[n.jsx("span",{className:"text-xs uppercase opacity-60",children:"Agent.md (operational rules)"}),n.jsx("textarea",{"aria-label":"Agent.md (operational rules)",value:t,onChange:c=>r(c.target.value),rows:5,className:"rounded border border-white/20 bg-white/5 px-2 py-1 font-mono text-sm focus:outline-none focus:ring-1 focus:ring-blue-400",placeholder:"Guardrails, project context, tool guidance…"})]}),n.jsxs("label",{className:"flex items-center gap-2 text-sm",children:[n.jsx("input",{type:"checkbox",checked:o,onChange:c=>s(c.target.checked)}),"Save to my persona library for reuse"]}),o&&n.jsx("input",{"aria-label":"Persona library name",value:l,onChange:c=>u(c.target.value),placeholder:"Name for your library entry",className:"rounded border border-white/20 bg-white/5 px-2 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-blue-400"}),n.jsx("button",{disabled:!f.trim()&&!t.trim(),onClick:()=>e({kind:"custom",soul_md:f,agent_md:t,save_to_library:o?{name:l||"Untitled"}:void 0}),className:"self-start rounded bg-blue-600 px-3 py-1.5 text-sm font-medium hover:bg-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-400 disabled:opacity-50",children:"Use this persona"})]})}function ji({onSelect:e}){return n.jsxs("div",{className:"flex flex-col items-center justify-center min-h-[320px] gap-3 text-center",children:[n.jsx("p",{className:"opacity-70 max-w-sm text-sm",children:"Deploy with no persona. You can add one later from the Agent Settings → Persona tab."}),n.jsx("button",{onClick:()=>e({kind:"blank",soul_md:"",agent_md:""}),className:"rounded bg-blue-600 px-3 py-1.5 text-sm font-medium hover:bg-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-400",children:"Deploy with no persona →"})]})}function xn({onSelect:e}){const[f,a]=i.useState("browse");return n.jsxs("div",{className:"flex flex-col gap-3",children:[n.jsx("div",{role:"tablist",className:"flex gap-2 border-b",children:["browse","create","blank"].map(t=>n.jsx("button",{role:"tab","aria-selected":f===t,onClick:()=>a(t),className:`px-3 py-1.5 ${f===t?"border-b-2 border-blue-400 text-blue-400":"opacity-60"}`,children:t==="browse"?"Browse":t==="create"?"Create new":"Blank"},t))}),f==="browse"&&n.jsx(Li,{onSelect:e}),f==="create"&&n.jsx(pi,{onSelect:e}),f==="blank"&&n.jsx(ji,{onSelect:e})]})}function yi({agent:e,onUpdated:f}){var m;const[a,t]=i.useState(e.soul_md??""),[r,o]=i.useState(e.agent_md??""),[s,l]=i.useState(!1),[u,c]=i.useState(!1),[d,g]=i.useState(null);i.useEffect(()=>{t(e.soul_md??""),o(e.agent_md??"")},[e.name]);const M=async()=>{l(!0),await fetch(`/api/agents/${e.name}/persona`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({soul_md:a,agent_md:r})}),l(!1),f()},h=async()=>{if(!d)return;const w=d.kind==="blank"?{soul_md:"",source_persona_id:null}:{soul_md:d.soul_md,source_persona_id:d.source_persona_id??null};await fetch(`/api/agents/${e.name}/persona`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(w)}),t(w.soul_md),g(null),c(!1),f()},p=(d==null?void 0:d.kind)==="blank"?"Blank":(d==null?void 0:d.kind)==="custom"?"Custom":((m=d==null?void 0:d.save_to_library)==null?void 0:m.name)??(d==null?void 0:d.source_persona_id)??"this persona",j=e.source_persona_id?`From: ${e.source_persona_id}`:a||r?"Custom":"Blank";return n.jsxs("div",{className:"h-full overflow-auto p-4 flex flex-col gap-3",children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx("span",{className:"text-xs uppercase opacity-60",children:j}),n.jsx("button",{onClick:()=>c(!0),className:"text-xs px-2 py-1 rounded border border-white/10 hover:bg-white/5 transition-colors",children:"Swap persona…"})]}),n.jsxs("label",{className:"flex flex-col gap-1",children:[n.jsx("span",{className:"text-xs uppercase opacity-60",children:"Soul"}),n.jsx("textarea",{value:a,onChange:w=>t(w.target.value),rows:10,className:"border border-white/10 rounded bg-shell-bg px-2 py-1 font-mono text-xs text-shell-text-secondary resize-none focus:outline-none focus:ring-1 focus:ring-white/20","aria-label":"Agent soul (identity)"})]}),n.jsxs("label",{className:"flex flex-col gap-1",children:[n.jsx("span",{className:"text-xs uppercase opacity-60",children:"Agent.md — operational rules"}),n.jsx("textarea",{value:r,onChange:w=>o(w.target.value),rows:8,className:"border border-white/10 rounded bg-shell-bg px-2 py-1 font-mono text-xs text-shell-text-secondary resize-none focus:outline-none focus:ring-1 focus:ring-white/20","aria-label":"Agent operational rules"})]}),n.jsx("button",{disabled:s,onClick:M,className:"self-end bg-blue-600 hover:bg-blue-500 disabled:opacity-50 px-3 py-1.5 rounded text-sm text-white transition-colors",children:s?"Saving…":"Save"}),u&&n.jsx("div",{className:"fixed inset-0 bg-black/60 flex items-center justify-center z-50",onClick:()=>{g(null),c(!1)},children:n.jsxs("div",{className:"bg-shell-bg border border-white/10 rounded-lg p-4 w-[480px] max-h-[80vh] overflow-auto flex flex-col gap-3",onClick:w=>w.stopPropagation(),children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx("span",{className:"text-sm font-medium",children:"Swap persona"}),n.jsx("button",{onClick:()=>{g(null),c(!1)},className:"text-xs opacity-60 hover:opacity-100","aria-label":"Close",children:"✕"})]}),n.jsx(xn,{onSelect:g})]})}),d&&n.jsx("div",{className:"fixed inset-0 bg-black/70 flex items-center justify-center z-60",onClick:()=>g(null),children:n.jsxs("div",{className:"bg-shell-bg border border-white/10 rounded-lg p-5 w-[360px] flex flex-col gap-4",onClick:w=>w.stopPropagation(),children:[n.jsxs("p",{className:"text-sm",children:["Replace Soul with ",n.jsx("strong",{children:p}),"? Agent.md stays as-is."]}),n.jsxs("div",{className:"flex justify-end gap-2",children:[n.jsx("button",{onClick:()=>g(null),className:"text-xs px-3 py-1.5 rounded border border-white/10 hover:bg-white/5 transition-colors",children:"Cancel"}),n.jsx("button",{onClick:h,className:"text-xs px-3 py-1.5 rounded bg-blue-600 hover:bg-blue-500 text-white transition-colors",children:"Confirm"})]})]})})]})}let ee=null;async function vi(){if(ee)return ee;try{const e=await fetch("/api/cluster/workers");if(!e.ok)return ee="cpu",ee;const f=await e.json();for(const a of Array.isArray(f)?f:[]){const t=(a==null?void 0:a.capabilities)||[];if(t.some(r=>/rk3588|npu/i.test(r)))return ee="rk3588",ee;if(t.some(r=>/gpu|cuda|rocm|metal/i.test(r)))return ee="gpu",ee}return ee="cpu",ee}catch{return ee="cpu",ee}}function Ci({agent:e,onUpdated:f}){var p,j;const[a,t]=i.useState(e.memory_plugin||"taosmd"),[r,o]=i.useState(null),[s,l]=i.useState(null),[u,c]=i.useState(!1),[d,g]=i.useState("cpu");i.useEffect(()=>{vi().then(g)},[]),i.useEffect(()=>{fetch(`/api/agents/${e.name}/librarian`).then(m=>m.ok?m.json():null).then(o).catch(()=>o(null)),fetch(`/api/memory/stats?agent=${e.name}`).then(m=>m.ok?m.json():null).then(m=>l(m?{notes:m.notes,edges:m.edges,lastWrite:m.last_write}:null)).catch(()=>l(null))},[e.name]);const M=async m=>{t(m),await fetch(`/api/agents/${e.name}/memory`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({memory_plugin:m})}),f()},h=async m=>{const w=await fetch(`/api/agents/${e.name}/librarian`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(m)});w.ok&&o(await w.json())};return n.jsxs("div",{className:"flex flex-col gap-4 p-4 h-full overflow-auto",children:[n.jsxs("section",{children:[n.jsx("div",{className:"text-xs uppercase opacity-60 mb-1",children:"Memory plugin"}),n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsxs("select",{value:a,onChange:m=>M(m.target.value),className:"border border-white/10 rounded bg-shell-bg px-2 py-1 text-sm text-shell-text-secondary focus:outline-none focus:ring-1 focus:ring-white/20","aria-label":"Memory plugin",children:[n.jsx("option",{value:"taosmd",children:"taOSmd (built-in)"}),n.jsx("option",{value:"none",children:"None"})]}),n.jsx("a",{href:"#store?category=memory",className:"text-blue-400 text-sm hover:text-blue-300 transition-colors",children:"Get more plugins →"})]}),a==="taosmd"&&n.jsx("p",{className:"text-xs opacity-60 mt-2",children:"Persistent memory: knowledge graph, archive, crystal store. Usage contract injected at top of every conversation."})]}),a==="taosmd"&&n.jsx("section",{className:"grid grid-cols-3 gap-2",children:[{label:"Notes",value:(s==null?void 0:s.notes)??"—"},{label:"Graph edges",value:(s==null?void 0:s.edges)??"—"},{label:"Last write",value:(s==null?void 0:s.lastWrite)??"—"}].map(m=>n.jsxs("div",{className:"bg-blue-950/30 rounded p-2",children:[n.jsx("div",{className:"text-lg font-semibold",children:m.value}),n.jsx("div",{className:"text-[10px] uppercase opacity-60",children:m.label})]},m.label))}),a==="taosmd"&&r&&n.jsxs("section",{className:"border-t border-white/5 pt-4 flex flex-col gap-3",children:[n.jsx("div",{className:"text-xs uppercase opacity-60",children:"Librarian"}),n.jsxs("label",{className:"flex items-center justify-between text-sm",children:[n.jsx("span",{children:"Enable Librarian"}),n.jsx("input",{type:"checkbox",checked:!!r.enabled,onChange:m=>h({enabled:m.target.checked}),"aria-label":"Enable Librarian"})]}),n.jsxs("label",{className:"flex flex-col gap-1",children:[n.jsx("span",{className:"text-xs uppercase opacity-60",children:"Model"}),n.jsxs("select",{value:r.model??"",onChange:m=>h(m.target.value?{model:m.target.value}:{clear_model:!0}),className:"border border-white/10 rounded bg-shell-bg px-2 py-1 text-sm text-shell-text-secondary focus:outline-none focus:ring-1 focus:ring-white/20","aria-label":"Librarian model",children:[n.jsx("option",{value:"",children:"Use install default"}),n.jsx("option",{value:"ollama:qwen3:4b",children:d==="rk3588"?"ollama:qwen3:4b":"ollama:qwen3:4b ✓ recommended"}),n.jsx("option",{value:"dulimov/Qwen3-4B-rk3588-1.2.1-base",children:d==="rk3588"?"Qwen3-4B NPU (RK3588) ✓ recommended":"Qwen3-4B NPU (RK3588)"})]})]}),n.jsx("button",{onClick:()=>c(m=>!m),className:"self-start text-sm text-blue-400 hover:text-blue-300 transition-colors",children:u?"Hide advanced":"Show advanced…"}),u&&n.jsxs("div",{className:"flex flex-col gap-2 pl-4 border-l border-white/10",children:[Object.entries(r.tasks||{}).map(([m,w])=>n.jsxs("label",{className:"flex items-center justify-between text-sm",children:[n.jsx("span",{children:m}),n.jsx("input",{type:"checkbox",checked:!!w,onChange:k=>h({tasks:{[m]:k.target.checked}}),"aria-label":`Task: ${m}`})]},m)),n.jsxs("label",{className:"flex items-center justify-between text-sm",children:[n.jsx("span",{children:"Fanout"}),n.jsx("select",{value:((p=r.fanout)==null?void 0:p.default)||"low",onChange:m=>h({fanout:m.target.value}),className:"border border-white/10 rounded bg-shell-bg px-2 py-1 text-sm text-shell-text-secondary focus:outline-none focus:ring-1 focus:ring-white/20","aria-label":"Librarian fanout level",children:["off","low","med","high"].map(m=>n.jsx("option",{value:m,children:m},m))})]}),n.jsxs("label",{className:"flex items-center justify-between text-sm",children:[n.jsx("span",{children:"Auto-scale"}),n.jsx("input",{type:"checkbox",checked:!!((j=r.fanout)!=null&&j.auto_scale),onChange:m=>h({fanout_auto_scale:m.target.checked}),"aria-label":"Librarian auto-scale fanout"})]})]})]})]})}function $f(e){return[].concat(e)}function ia(e){return e.startsWith(":")}function kn(e){return Lf(e)&&(e==="*"||e.length>1&&":>~.+*".includes(e.slice(0,1))||Dn(e))}function In(e,f){return(Lf(f)||typeof f=="number")&&!Sn(e)&&!ia(e)&&!Nn(e)}function Nn(e){return e.startsWith("@media")}function xi(e){return e==="."}function Sn(e){return e==="--"}function Lf(e){return e+""===e}function Dn(e){return Lf(e)&&(e.startsWith("&")||ia(e))}function bf(e,f=""){return e.filter(Boolean).join(f)}function Tn(e,f){let a=0;if(f.length===0)return a.toString();for(let t=0;tia(o)?r+o:Dn(o)?r+o.slice(1):bf([r,o]," "),f);return bf([t,Ni(a)]," ")}var Di=class uf{constructor(f,a=null,{preconditions:t,postconditions:r}={}){this.sheet=f,this.preconditions=[],this.scopeClassName=null,this.scopeName=null,this.postconditions=[],this.preconditions=t?$f(t):[],this.postconditions=r?$f(r):[],this.setScope(a)}setScope(f){return f?(this.scopeClassName||(this.scopeName=f,this.scopeClassName=Tn(this.sheet.name,f+this.sheet.count)),this):this}get hasConditions(){return this.preconditions.length>0||this.postconditions.length>0}addScope(f){return new uf(this.sheet,f,{preconditions:this.preconditions,postconditions:this.postconditions})}addPrecondition(f){return new uf(this.sheet,this.scopeClassName,{postconditions:this.postconditions,preconditions:this.preconditions.concat(f)})}addPostcondition(f){return new uf(this.sheet,this.scopeClassName,{preconditions:this.preconditions,postconditions:this.postconditions.concat(f)})}createRule(f,a){return new zn(this.sheet,f,a,this)}},Ti=class{constructor(e,f){this.name=e,this.rootNode=f,this.storedStyles={},this.storedClasses={},this.style="",this.count=0,this.id=`flairup-${e}`,this.styleTag=this.createStyleTag()}getStyle(){return this.style}append(e){this.style=Si(this.style,e)}apply(){this.count++,this.styleTag&&(this.styleTag.innerHTML=this.style)}isApplied(){return!!this.styleTag}createStyleTag(){if(typeof document>"u"||this.isApplied()||this.rootNode===null)return this.styleTag;const e=document.createElement("style");return e.type="text/css",e.id=this.id,(this.rootNode??document.head).appendChild(e),e}addRule(e){const f=this.storedClasses[e.key];return Lf(f)?f:(this.storedClasses[e.key]=e.hash,this.storedStyles[e.hash]=[e.property,e.value],this.append(e.toString()),e.hash)}};function ra(e,f){for(const a in e)f(a.trim(),e[a])}function A(...e){const f=e.reduce((a,t)=>(t instanceof Set?a.push(...t):typeof t=="string"?a.push(t):Array.isArray(t)?a.push(A(...t)):typeof t=="object"&&Object.entries(t).forEach(([r,o])=>{o&&a.push(r)}),a),[]);return bf(f," ").trim()}function zi(e,f){const a=new Ti(e,f);return{create:t,getStyle:a.getStyle.bind(a),isApplied:a.isApplied.bind(a)};function t(r){const o={};return An(a,r,new Di(a)).forEach(([l,u,c])=>{pf(a,u,c).forEach(d=>{s(l,d)})}),a.apply(),o;function s(l,u){o[l]=o[l]??new Set,o[l].add(u)}}}function An(e,f,a){const t=[];return ra(f,(r,o)=>{if(kn(r))return An(e,o,a.addPrecondition(r)).forEach(s=>t.push(s));t.push([r,f[r],a.addScope(r)])}),t}function pf(e,f,a){const t=new Set;return ra(f,(r,o)=>{let s=[];if(kn(r))s=pf(e,o,a.addPostcondition(r));else if(xi(r))s=$f(o);else if(Nn(r))s=Ai(e,o,r,a);else if(Sn(r))s=Ei(e,o,a);else if(In(r,o)){const l=a.createRule(r,o);e.addRule(l),t.add(l.hash)}return Pn(s,t)}),t}function Pn(e,f){return e.forEach(a=>f.add(a)),f}function Ei(e,f,a){const t=new Set,r=[];if(ra(f,(o,s)=>{if(In(o,s)){r.push(zn.genRule(o,s));return}const l=pf(e,s??{},a);Pn(l,t)}),!a.scopeClassName)return t;if(r.length){const o=r.join(" ");e.append(`${Xf(a.preconditions,{right:a.scopeClassName})} {${o}}`)}return t.add(a.scopeClassName),t}function Ai(e,f,a,t){e.append(a+" {");const r=pf(e,f,t);return e.append("}"),r}function Wa(e,f){(f==null||f>e.length)&&(f=e.length);for(var a=0,t=Array(f);a=e.length?{done:!0}:{done:!1,value:e[t++]}}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function R(){return R=Object.assign?Object.assign.bind():function(e){for(var f=1;f0}function Vi(e,f){return f?la(e).find(function(a){return a.includes(f)}):pe(e)}function Ki(e){var f=e.split("-"),a=f[1];return Object.keys(sa).includes(a)?a:null}var fe,$i=[z.SUGGESTED,z.CUSTOM,z.SMILEYS_PEOPLE,z.ANIMALS_NATURE,z.FOOD_DRINK,z.TRAVEL_PLACES,z.ACTIVITIES,z.OBJECTS,z.SYMBOLS,z.FLAGS],Xi={name:"Recently Used",category:z.SUGGESTED},On=(fe={},fe[z.SUGGESTED]={category:z.SUGGESTED,name:"Frequently Used"},fe[z.CUSTOM]={category:z.CUSTOM,name:"Custom Emojis"},fe[z.SMILEYS_PEOPLE]={category:z.SMILEYS_PEOPLE,name:"Smileys & People"},fe[z.ANIMALS_NATURE]={category:z.ANIMALS_NATURE,name:"Animals & Nature"},fe[z.FOOD_DRINK]={category:z.FOOD_DRINK,name:"Food & Drink"},fe[z.TRAVEL_PLACES]={category:z.TRAVEL_PLACES,name:"Travel & Places"},fe[z.ACTIVITIES]={category:z.ACTIVITIES,name:"Activities"},fe[z.OBJECTS]={category:z.OBJECTS,name:"Objects"},fe[z.SYMBOLS]={category:z.SYMBOLS,name:"Symbols"},fe[z.FLAGS]={category:z.FLAGS,name:"Flags"},fe);function Bn(e){return $i.map(function(f){return R({},On[f],e&&e[f]&&e[f])})}function jf(e){return e.category}function Gn(e){return e.name}function qi(e,f,a){var t;e===void 0&&(e=[]),f===void 0&&(f={});var r=(function(){var s=a!=null&&a.categories?Object.fromEntries(Object.entries(a.categories).filter(function(c){var d=c[1];return!!d})):{};if(f.suggestionMode===Ze.RECENT){var l,u=a==null||(l=a.categories)==null?void 0:l.suggested_recent;s[z.SUGGESTED]=u?{category:z.SUGGESTED,name:u.name}:Xi}return s})(),o=Bn(r);return(t=e)!=null&&t.length?e.map(function(s){return typeof s=="string"?Fa(s,r[s]):R({},Fa(s.category,r[s.category]),s)}):o}function Fa(e,f){return f===void 0&&(f={}),Object.assign(On[e],f)}var er=["2640-fe0f","2642-fe0f","2695-fe0f"],Mf="Search",Zn="Clear",fr="No results found",Hn=" found. Use up and down arrow keys to navigate.",ar="1 result"+Hn,nr="%n results"+Hn;function _a(e){var f,a,t,r,o;e===void 0&&(e={});var s=Wn(),l=(f=e.emojiData)==null||(a=f.categories)==null||(t=a.preview_mood)==null?void 0:t.name,u=R({},s.previewConfig,l&&!((r=e.previewConfig)!=null&&r.defaultCaption)?{defaultCaption:l}:{},(o=e.previewConfig)!=null?o:{}),c=Object.assign(s,e),d=qi(e.categories,{suggestionMode:c.suggestedEmojisMode},e.emojiData);c.hiddenEmojis.forEach(function(M){c.unicodeToHide.add(M)});var g=c.searchDisabled?De.PREVIEW:c.skinTonePickerLocation;return R({},c,{categories:d,previewConfig:u,skinTonePickerLocation:g})}function Wn(){return{autoFocusSearch:!0,categories:Bn(),className:"",customEmojis:[],defaultSkinTone:re.NEUTRAL,emojiStyle:V.APPLE,emojiVersion:null,getEmojiUrl:Un,height:450,lazyLoadEmojis:!1,previewConfig:R({},tr),searchDisabled:!1,searchPlaceHolder:Mf,searchPlaceholder:Mf,searchClearButtonLabel:Zn,skinTonePickerLocation:De.SEARCH,skinTonesDisabled:!1,style:{},suggestedEmojisMode:Ze.FREQUENT,theme:Se.LIGHT,unicodeToHide:new Set(er),width:350,reactionsDefaultOpen:!1,reactions:Ji,open:!0,allowExpandReactions:!0,hiddenEmojis:[],emojiData:void 0,categoryIcons:{}}}var tr={defaultEmoji:"1f60a",defaultCaption:"What's your mood?",showPreview:!0},ir=["children"],Fn=i.createContext(Wn());function rr(e){var f=e.children,a=Qn(e,ir),t=or(a);return i.createElement(Fn.Provider,{value:t},f)}function or(e){var f,a=i.useState(function(){return _a(e)}),t=a[0],r=a[1];return i.useEffect(function(){Rn(t,e)||r(_a(e))},[(f=e.customEmojis)==null?void 0:f.length,e.open,e.emojiVersion,e.reactionsDefaultOpen,e.searchPlaceHolder,e.searchPlaceholder,e.searchClearButtonLabel,e.defaultSkinTone,e.skinTonesDisabled,e.autoFocusSearch,e.emojiStyle,e.theme,e.suggestedEmojisMode,e.lazyLoadEmojis,e.className,e.height,e.width,e.searchDisabled,e.skinTonePickerLocation,e.allowExpandReactions,e.emojiData]),t}function J(){return i.useContext(Fn)}function Va(e,f){f===void 0&&(f=0);var a=i.useState(e),t=a[0],r=a[1],o=i.useRef(null);function s(l){return new Promise(function(u){var c;o.current&&clearTimeout(o.current),o.current=(c=window)==null?void 0:c.setTimeout(function(){r(l),u(l)},f)})}return[t,s]}var sr={smileys_people:{category:"smileys_people",name:"people & body"},animals_nature:{category:"animals_nature",name:"animals & nature"},food_drink:{category:"food_drink",name:"food & drink"},travel_places:{category:"travel_places",name:"travel & places"},activities:{category:"activities",name:"activities"},objects:{category:"objects",name:"objects"},symbols:{category:"symbols",name:"symbols"},flags:{category:"flags",name:"flags"},suggested:{category:"suggested",name:"Frequently Used"},custom:{category:"custom",name:"Custom Emojis"},suggested_recent:{category:"suggested",name:"Recently Used"},preview_mood:{category:"preview_mood",name:"What's your mood?"}},lr={custom:[],smileys_people:[{n:["face","grin","grinning face"],u:"1f600",a:"1"},{n:["face","open","mouth","smile","grinning face with big eyes"],u:"1f603",a:"0.6"},{n:["eye","face","open","mouth","smile","grinning face with smiling eyes"],u:"1f604",a:"0.6"},{n:["eye","face","grin","smile","beaming face with smiling eyes"],u:"1f601",a:"0.6"},{n:["face","laugh","mouth","smile","satisfied","grinning squinting face"],u:"1f606",a:"0.6"},{n:["cold","face","open","smile","sweat","grinning face with sweat"],u:"1f605",a:"0.6"},{n:["face","rofl","floor","laugh","rotfl","rolling","rolling on the floor laughing"],u:"1f923",a:"3"},{n:["joy","face","tear","laugh","face with tears of joy"],u:"1f602",a:"0.6"},{n:["face","smile","slightly smiling face"],u:"1f642",a:"1"},{n:["face","upside down","upside down face"],u:"1f643",a:"1"},{n:["melt","liquid","dissolve","disappear","melting face"],u:"1fae0",a:"14"},{n:["face","wink","winking face"],u:"1f609",a:"0.6"},{n:["eye","face","blush","smile","smiling face with smiling eyes"],u:"1f60a",a:"0.6"},{n:["face","halo","angel","fantasy","innocent","smiling face with halo"],u:"1f607",a:"1"},{n:["adore","crush","hearts","in love","smiling face with hearts"],u:"1f970",a:"11"},{n:["eye","face","love","smile","smiling face with heart eyes"],u:"1f60d",a:"0.6"},{n:["eyes","face","star","grinning","star struck"],u:"1f929",a:"5"},{n:["face","kiss","face blowing a kiss"],u:"1f618",a:"0.6"},{n:["face","kiss","kissing face"],u:"1f617",a:"1"},{n:["face","smile","relaxed","outlined","smiling face"],u:"263a-fe0f",a:"0.6"},{n:["eye","face","kiss","closed","kissing face with closed eyes"],u:"1f61a",a:"0.6"},{n:["eye","face","kiss","smile","kissing face with smiling eyes"],u:"1f619",a:"1"},{n:["tear","proud","smiling","touched","grateful","relieved","smiling face with tear"],u:"1f972",a:"13"},{n:["yum","face","smile","delicious","savouring","face savoring food"],u:"1f60b",a:"0.6"},{n:["face","tongue","face with tongue"],u:"1f61b",a:"1"},{n:["eye","face","joke","wink","tongue","winking face with tongue"],u:"1f61c",a:"0.6"},{n:["eye","goofy","large","small","zany face"],u:"1f92a",a:"5"},{n:["eye","face","taste","tongue","horrible","squinting face with tongue"],u:"1f61d",a:"0.6"},{n:["face","money","mouth","money mouth face"],u:"1f911",a:"1"},{n:["hug","face","hugging","open hands","smiling face","smiling face with open hands"],u:"1f917",a:"1"},{n:["whoops","face with hand over mouth"],u:"1f92d",a:"5"},{n:["awe","scared","surprise","amazement","disbelief","embarrass","face with open eyes and hand over mouth"],u:"1fae2",a:"14"},{n:["peep","stare","captivated","face with peeking eye"],u:"1fae3",a:"14"},{n:["quiet","shush","shushing face"],u:"1f92b",a:"5"},{n:["face","thinking","thinking face"],u:"1f914",a:"1"},{n:["ok","yes","sunny","salute","troops","saluting face"],u:"1fae1",a:"14"},{n:["zip","face","mouth","zipper","zipper mouth face"],u:"1f910",a:"1"},{n:["skeptic","distrust","face with raised eyebrow"],u:"1f928",a:"5"},{n:["meh","face","deadpan","neutral","neutral face"],u:"1f610",a:"0.7"},{n:["meh","face","inexpressive","unexpressive","expressionless","expressionless face"],u:"1f611",a:"1"},{n:["face","mouth","quiet","silent","face without mouth"],u:"1f636",a:"1"},{n:["hide","depressed","disappear","introvert","invisible","dotted line face"],u:"1fae5",a:"14"},{n:["absentminded","face in clouds","head in clouds","face in the fog"],u:"1f636-200d-1f32b-fe0f",a:"13.1"},{n:["face","smirk","smirking face"],u:"1f60f",a:"0.6"},{n:["face","unhappy","unamused","unamused face"],u:"1f612",a:"0.6"},{n:["eyes","face","eyeroll","rolling","face with rolling eyes"],u:"1f644",a:"1"},{n:["face","grimace","grimacing face"],u:"1f62c",a:"1"},{n:["gasp","groan","exhale","relief","whisper","whistle","face exhaling"],u:"1f62e-200d-1f4a8",a:"13.1"},{n:["lie","face","pinocchio","lying face"],u:"1f925",a:"3"},{n:["face","shock","shaking","vibrate","earthquake","shaking face"],u:"1fae8",a:"15"},{n:["no","shake","head shaking horizontally"],u:"1f642-200d-2194-fe0f",a:"15.1"},{n:["nod","yes","head shaking vertically"],u:"1f642-200d-2195-fe0f",a:"15.1"},{n:["face","relieved","relieved face"],u:"1f60c",a:"0.6"},{n:["face","pensive","dejected","pensive face"],u:"1f614",a:"0.6"},{n:["face","sleep","good night","sleepy face"],u:"1f62a",a:"0.6"},{n:["face","drooling","drooling face"],u:"1f924",a:"3"},{n:["zzz","face","sleep","good night","sleeping face"],u:"1f634",a:"1"},{n:["cold","face","mask","sick","doctor","face with medical mask"],u:"1f637",a:"0.6"},{n:["ill","face","sick","thermometer","face with thermometer"],u:"1f912",a:"1"},{n:["face","hurt","injury","bandage","face with head bandage"],u:"1f915",a:"1"},{n:["face","vomit","nauseated","nauseated face"],u:"1f922",a:"3"},{n:["puke","sick","vomit","face vomiting"],u:"1f92e",a:"5"},{n:["face","sneeze","gesundheit","sneezing face"],u:"1f927",a:"3"},{n:["hot","hot face","feverish","sweating","red faced","heat stroke"],u:"1f975",a:"11"},{n:["cold","icicles","freezing","cold face","frostbite","blue faced"],u:"1f976",a:"11"},{n:["dizzy","tipsy","woozy face","wavy mouth","intoxicated","uneven eyes"],u:"1f974",a:"11"},{n:["dead","face","knocked out","crossed out eyes","face with crossed out eyes"],u:"1f635",a:"0.6"},{n:["whoa","dizzy","spiral","trouble","hypnotized","face with spiral eyes"],u:"1f635-200d-1f4ab",a:"13.1"},{n:["shocked","mind blown","exploding head"],u:"1f92f",a:"5"},{n:["hat","face","cowboy","cowgirl","cowboy hat face"],u:"1f920",a:"3"},{n:["hat","horn","party","celebration","partying face"],u:"1f973",a:"11"},{n:["face","nose","glasses","disguise","incognito","disguised face"],u:"1f978",a:"13"},{n:["sun","cool","face","bright","sunglasses","smiling face with sunglasses"],u:"1f60e",a:"1"},{n:["face","geek","nerd","nerd face"],u:"1f913",a:"1"},{n:["face","stuffy","monocle","face with monocle"],u:"1f9d0",a:"5"},{n:["meh","face","confused","confused face"],u:"1f615",a:"1"},{n:["meh","unsure","skeptical","disappointed","face with diagonal mouth"],u:"1fae4",a:"14"},{n:["face","worried","worried face"],u:"1f61f",a:"1"},{n:["face","frown","slightly frowning face"],u:"1f641",a:"1"},{n:["face","frown","frowning face"],u:"2639-fe0f",a:"0.7"},{n:["face","open","mouth","sympathy","face with open mouth"],u:"1f62e",a:"1"},{n:["face","hushed","stunned","surprised","hushed face"],u:"1f62f",a:"1"},{n:["face","shocked","totally","astonished","astonished face"],u:"1f632",a:"0.6"},{n:["face","dazed","flushed","flushed face"],u:"1f633",a:"0.6"},{n:["mercy","begging","puppy eyes","pleading face"],u:"1f97a",a:"11"},{n:["cry","sad","angry","proud","resist","face holding back tears"],u:"1f979",a:"14"},{n:["face","open","frown","mouth","frowning face with open mouth"],u:"1f626",a:"1"},{n:["face","anguished","anguished face"],u:"1f627",a:"1"},{n:["face","fear","scared","fearful","fearful face"],u:"1f628",a:"0.6"},{n:["blue","cold","face","sweat","rushed","anxious face with sweat"],u:"1f630",a:"0.6"},{n:["face","whew","relieved","disappointed","sad but relieved face"],u:"1f625",a:"0.6"},{n:["cry","sad","face","tear","crying face"],u:"1f622",a:"0.6"},{n:["cry","sad","sob","face","tear","loudly crying face"],u:"1f62d",a:"0.6"},{n:["face","fear","munch","scared","scream","face screaming in fear"],u:"1f631",a:"0.6"},{n:["face","confounded","confounded face"],u:"1f616",a:"0.6"},{n:["face","persevere","persevering face"],u:"1f623",a:"0.6"},{n:["face","disappointed","disappointed face"],u:"1f61e",a:"0.6"},{n:["cold","face","sweat","downcast face with sweat"],u:"1f613",a:"0.6"},{n:["face","tired","weary","weary face"],u:"1f629",a:"0.6"},{n:["face","tired","tired face"],u:"1f62b",a:"0.6"},{n:["yawn","bored","tired","yawning face"],u:"1f971",a:"12"},{n:["won","face","triumph","face with steam from nose"],u:"1f624",a:"0.6"},{n:["mad","red","face","rage","angry","enraged","pouting","enraged face"],u:"1f621",a:"0.6"},{n:["mad","face","anger","angry","angry face"],u:"1f620",a:"0.6"},{n:["swearing","face with symbols on mouth"],u:"1f92c",a:"5"},{n:["face","horns","smile","fantasy","fairy tale","smiling face with horns"],u:"1f608",a:"1"},{n:["imp","face","demon","devil","fantasy","angry face with horns"],u:"1f47f",a:"0.6"},{n:["face","skull","death","monster","fairy tale"],u:"1f480",a:"0.6"},{n:["face","death","skull","monster","crossbones","skull and crossbones"],u:"2620-fe0f",a:"1"},{n:["poo","dung","face","poop","monster","pile of poo"],u:"1f4a9",a:"0.6"},{n:["face","clown","clown face"],u:"1f921",a:"3"},{n:["ogre","face","fantasy","monster","creature","fairy tale"],u:"1f479",a:"0.6"},{n:["face","goblin","fantasy","monster","creature","fairy tale"],u:"1f47a",a:"0.6"},{n:["face","ghost","fantasy","monster","creature","fairy tale"],u:"1f47b",a:"0.6"},{n:["ufo","face","alien","fantasy","creature","extraterrestrial"],u:"1f47d",a:"0.6"},{n:["ufo","face","alien","monster","creature","alien monster","extraterrestrial"],u:"1f47e",a:"0.6"},{n:["face","robot","monster"],u:"1f916",a:"1"},{n:["cat","face","open","mouth","smile","grinning","grinning cat"],u:"1f63a",a:"0.6"},{n:["cat","eye","face","grin","smile","grinning cat with smiling eyes"],u:"1f638",a:"0.6"},{n:["cat","joy","face","tear","cat with tears of joy"],u:"1f639",a:"0.6"},{n:["cat","eye","face","love","heart","smile","smiling cat with heart eyes"],u:"1f63b",a:"0.6"},{n:["cat","wry","face","smile","ironic","cat with wry smile"],u:"1f63c",a:"0.6"},{n:["cat","eye","face","kiss","kissing cat"],u:"1f63d",a:"0.6"},{n:["oh","cat","face","weary","weary cat","surprised"],u:"1f640",a:"0.6"},{n:["cat","cry","sad","face","tear","crying cat"],u:"1f63f",a:"0.6"},{n:["cat","face","pouting","pouting cat"],u:"1f63e",a:"0.6"},{n:["see","evil","face","monkey","forbidden","see no evil monkey"],u:"1f648",a:"0.6"},{n:["evil","face","hear","monkey","forbidden","hear no evil monkey"],u:"1f649",a:"0.6"},{n:["evil","face","speak","monkey","forbidden","speak no evil monkey"],u:"1f64a",a:"0.6"},{n:["love","mail","heart","letter","love letter"],u:"1f48c",a:"0.6"},{n:["arrow","cupid","heart with arrow"],u:"1f498",a:"0.6"},{n:["ribbon","valentine","heart with ribbon"],u:"1f49d",a:"0.6"},{n:["excited","sparkle","sparkling heart"],u:"1f496",a:"0.6"},{n:["pulse","excited","growing","nervous","growing heart"],u:"1f497",a:"0.6"},{n:["beating","heartbeat","pulsating","beating heart"],u:"1f493",a:"0.6"},{n:["revolving","revolving hearts"],u:"1f49e",a:"0.6"},{n:["love","two hearts"],u:"1f495",a:"0.6"},{n:["heart","heart decoration"],u:"1f49f",a:"0.6"},{n:["mark","exclamation","punctuation","heart exclamation"],u:"2763-fe0f",a:"1"},{n:["break","broken","broken heart"],u:"1f494",a:"0.6"},{n:["burn","love","lust","heart","sacred heart","heart on fire"],u:"2764-fe0f-200d-1f525",a:"13.1"},{n:["well","mending","healthier","improving","recovering","recuperating","mending heart"],u:"2764-fe0f-200d-1fa79",a:"13.1"},{n:["heart","red heart"],u:"2764-fe0f",a:"0.6"},{n:["cute","like","love","pink","heart","pink heart"],u:"1fa77",a:"15"},{n:["orange","orange heart"],u:"1f9e1",a:"5"},{n:["yellow","yellow heart"],u:"1f49b",a:"0.6"},{n:["green","green heart"],u:"1f49a",a:"0.6"},{n:["blue","blue heart"],u:"1f499",a:"0.6"},{n:["cyan","teal","heart","light blue","light blue heart"],u:"1fa75",a:"15"},{n:["purple","purple heart"],u:"1f49c",a:"0.6"},{n:["brown","heart","brown heart"],u:"1f90e",a:"12"},{n:["evil","black","wicked","black heart"],u:"1f5a4",a:"3"},{n:["gray","heart","slate","silver","grey heart"],u:"1fa76",a:"15"},{n:["heart","white","white heart"],u:"1f90d",a:"12"},{n:["kiss","lips","kiss mark"],u:"1f48b",a:"0.6"},{n:["100","full","score","hundred","hundred points"],u:"1f4af",a:"0.6"},{n:["mad","angry","comic","anger symbol"],u:"1f4a2",a:"0.6"},{n:["boom","comic","collision"],u:"1f4a5",a:"0.6"},{n:["star","dizzy","comic"],u:"1f4ab",a:"0.6"},{n:["comic","sweat","splashing","sweat droplets"],u:"1f4a6",a:"0.6"},{n:["dash","comic","running","dashing away"],u:"1f4a8",a:"0.6"},{n:["hole"],u:"1f573-fe0f",a:"0.7"},{n:["comic","bubble","dialog","speech","balloon","speech balloon"],u:"1f4ac",a:"0.6"},{n:["eye","bubble","speech","balloon","witness","eye in speech bubble"],u:"1f441-fe0f-200d-1f5e8-fe0f",a:"2"},{n:["bubble","dialog","speech","balloon","left speech bubble"],u:"1f5e8-fe0f",a:"2"},{n:["mad","angry","bubble","balloon","right anger bubble"],u:"1f5ef-fe0f",a:"0.7"},{n:["comic","bubble","balloon","thought","thought balloon"],u:"1f4ad",a:"1"},{n:["ZZZ","zzz","comic","sleep","good night"],u:"1f4a4",a:"0.6"},{n:["hand","wave","waving","waving hand"],u:"1f44b",v:["1f44b-1f3fb","1f44b-1f3fc","1f44b-1f3fd","1f44b-1f3fe","1f44b-1f3ff"],a:"0.6"},{n:["raised","backhand","raised back of hand"],u:"1f91a",v:["1f91a-1f3fb","1f91a-1f3fc","1f91a-1f3fd","1f91a-1f3fe","1f91a-1f3ff"],a:"3"},{n:["hand","finger","splayed","hand with fingers splayed"],u:"1f590-fe0f",v:["1f590-1f3fb","1f590-1f3fc","1f590-1f3fd","1f590-1f3fe","1f590-1f3ff"],a:"0.7"},{n:["hand","high 5","high five","raised hand"],u:"270b",v:["270b-1f3fb","270b-1f3fc","270b-1f3fd","270b-1f3fe","270b-1f3ff"],a:"0.6"},{n:["hand","spock","finger","vulcan","vulcan salute"],u:"1f596",v:["1f596-1f3fb","1f596-1f3fc","1f596-1f3fd","1f596-1f3fe","1f596-1f3ff"],a:"1"},{n:["hand","right","rightward","rightwards hand"],u:"1faf1",v:["1faf1-1f3fb","1faf1-1f3fc","1faf1-1f3fd","1faf1-1f3fe","1faf1-1f3ff"],a:"14"},{n:["hand","left","leftward","leftwards hand"],u:"1faf2",v:["1faf2-1f3fb","1faf2-1f3fc","1faf2-1f3fd","1faf2-1f3fe","1faf2-1f3ff"],a:"14"},{n:["drop","shoo","dismiss","palm down hand"],u:"1faf3",v:["1faf3-1f3fb","1faf3-1f3fc","1faf3-1f3fd","1faf3-1f3fe","1faf3-1f3ff"],a:"14"},{n:["come","catch","offer","beckon","palm up hand"],u:"1faf4",v:["1faf4-1f3fb","1faf4-1f3fc","1faf4-1f3fd","1faf4-1f3fe","1faf4-1f3ff"],a:"14"},{n:["push","stop","wait","refuse","leftward","high five","leftwards pushing hand"],u:"1faf7",v:["1faf7-1f3fb","1faf7-1f3fc","1faf7-1f3fd","1faf7-1f3fe","1faf7-1f3ff"],a:"15"},{n:["push","stop","wait","refuse","high five","rightward","rightwards pushing hand"],u:"1faf8",v:["1faf8-1f3fb","1faf8-1f3fc","1faf8-1f3fd","1faf8-1f3fe","1faf8-1f3ff"],a:"15"},{n:["ok","hand","OK hand"],u:"1f44c",v:["1f44c-1f3fb","1f44c-1f3fc","1f44c-1f3fd","1f44c-1f3fe","1f44c-1f3ff"],a:"0.6"},{n:["fingers","pinched","sarcastic","hand gesture","interrogation","pinched fingers"],u:"1f90c",v:["1f90c-1f3fb","1f90c-1f3fc","1f90c-1f3fd","1f90c-1f3fe","1f90c-1f3ff"],a:"13"},{n:["small amount","pinching hand"],u:"1f90f",v:["1f90f-1f3fb","1f90f-1f3fc","1f90f-1f3fd","1f90f-1f3fe","1f90f-1f3ff"],a:"12"},{n:["v","hand","victory","victory hand"],u:"270c-fe0f",v:["270c-1f3fb","270c-1f3fc","270c-1f3fd","270c-1f3fe","270c-1f3ff"],a:"0.6"},{n:["hand","luck","cross","finger","crossed fingers"],u:"1f91e",v:["1f91e-1f3fb","1f91e-1f3fc","1f91e-1f3fd","1f91e-1f3fe","1f91e-1f3ff"],a:"3"},{n:["love","snap","heart","money","expensive","hand with index finger and thumb crossed"],u:"1faf0",v:["1faf0-1f3fb","1faf0-1f3fc","1faf0-1f3fd","1faf0-1f3fe","1faf0-1f3ff"],a:"14"},{n:["ily","hand","love you gesture"],u:"1f91f",v:["1f91f-1f3fb","1f91f-1f3fc","1f91f-1f3fd","1f91f-1f3fe","1f91f-1f3ff"],a:"5"},{n:["hand","horns","finger","rock on","sign of the horns"],u:"1f918",v:["1f918-1f3fb","1f918-1f3fc","1f918-1f3fd","1f918-1f3fe","1f918-1f3ff"],a:"1"},{n:["call","hand","shaka","hang loose","call me hand"],u:"1f919",v:["1f919-1f3fb","1f919-1f3fc","1f919-1f3fd","1f919-1f3fe","1f919-1f3ff"],a:"3"},{n:["hand","index","point","finger","backhand","backhand index pointing left"],u:"1f448",v:["1f448-1f3fb","1f448-1f3fc","1f448-1f3fd","1f448-1f3fe","1f448-1f3ff"],a:"0.6"},{n:["hand","index","point","finger","backhand","backhand index pointing right"],u:"1f449",v:["1f449-1f3fb","1f449-1f3fc","1f449-1f3fd","1f449-1f3fe","1f449-1f3ff"],a:"0.6"},{n:["up","hand","point","finger","backhand","backhand index pointing up"],u:"1f446",v:["1f446-1f3fb","1f446-1f3fc","1f446-1f3fd","1f446-1f3fe","1f446-1f3ff"],a:"0.6"},{n:["hand","finger","middle finger"],u:"1f595",v:["1f595-1f3fb","1f595-1f3fc","1f595-1f3fd","1f595-1f3fe","1f595-1f3ff"],a:"1"},{n:["down","hand","point","finger","backhand","backhand index pointing down"],u:"1f447",v:["1f447-1f3fb","1f447-1f3fc","1f447-1f3fd","1f447-1f3fe","1f447-1f3ff"],a:"0.6"},{n:["up","hand","index","point","finger","index pointing up"],u:"261d-fe0f",v:["261d-1f3fb","261d-1f3fc","261d-1f3fd","261d-1f3fe","261d-1f3ff"],a:"0.6"},{n:["you","point","index pointing at the viewer"],u:"1faf5",v:["1faf5-1f3fb","1faf5-1f3fc","1faf5-1f3fd","1faf5-1f3fe","1faf5-1f3ff"],a:"14"},{n:["+1","up","hand","thumb","thumbs up"],u:"1f44d",v:["1f44d-1f3fb","1f44d-1f3fc","1f44d-1f3fd","1f44d-1f3fe","1f44d-1f3ff"],a:"0.6"},{n:[" 1","down","hand","thumb","thumbs down"],u:"1f44e",v:["1f44e-1f3fb","1f44e-1f3fc","1f44e-1f3fd","1f44e-1f3fe","1f44e-1f3ff"],a:"0.6"},{n:["fist","hand","punch","clenched","raised fist"],u:"270a",v:["270a-1f3fb","270a-1f3fc","270a-1f3fd","270a-1f3fe","270a-1f3ff"],a:"0.6"},{n:["fist","hand","punch","clenched","oncoming fist"],u:"1f44a",v:["1f44a-1f3fb","1f44a-1f3fc","1f44a-1f3fd","1f44a-1f3fe","1f44a-1f3ff"],a:"0.6"},{n:["fist","leftwards","left facing fist"],u:"1f91b",v:["1f91b-1f3fb","1f91b-1f3fc","1f91b-1f3fd","1f91b-1f3fe","1f91b-1f3ff"],a:"3"},{n:["fist","rightwards","right facing fist"],u:"1f91c",v:["1f91c-1f3fb","1f91c-1f3fc","1f91c-1f3fd","1f91c-1f3fe","1f91c-1f3ff"],a:"3"},{n:["clap","hand","clapping hands"],u:"1f44f",v:["1f44f-1f3fb","1f44f-1f3fc","1f44f-1f3fd","1f44f-1f3fe","1f44f-1f3ff"],a:"0.6"},{n:["hand","hooray","raised","gesture","celebration","raising hands"],u:"1f64c",v:["1f64c-1f3fb","1f64c-1f3fc","1f64c-1f3fd","1f64c-1f3fe","1f64c-1f3ff"],a:"0.6"},{n:["love","heart hands"],u:"1faf6",v:["1faf6-1f3fb","1faf6-1f3fc","1faf6-1f3fd","1faf6-1f3fe","1faf6-1f3ff"],a:"14"},{n:["hand","open","open hands"],u:"1f450",v:["1f450-1f3fb","1f450-1f3fc","1f450-1f3fd","1f450-1f3fe","1f450-1f3ff"],a:"0.6"},{n:["prayer","palms up together"],u:"1f932",v:["1f932-1f3fb","1f932-1f3fc","1f932-1f3fd","1f932-1f3fe","1f932-1f3ff"],a:"5"},{n:["hand","shake","meeting","handshake","agreement"],u:"1f91d",v:["1f91d-1f3fb","1f91d-1f3fc","1f91d-1f3fd","1f91d-1f3fe","1f91d-1f3ff","1faf1-1f3fb-200d-1faf2-1f3fc","1faf1-1f3fb-200d-1faf2-1f3fd","1faf1-1f3fb-200d-1faf2-1f3fe","1faf1-1f3fb-200d-1faf2-1f3ff","1faf1-1f3fc-200d-1faf2-1f3fb","1faf1-1f3fc-200d-1faf2-1f3fd","1faf1-1f3fc-200d-1faf2-1f3fe","1faf1-1f3fc-200d-1faf2-1f3ff","1faf1-1f3fd-200d-1faf2-1f3fb","1faf1-1f3fd-200d-1faf2-1f3fc","1faf1-1f3fd-200d-1faf2-1f3fe","1faf1-1f3fd-200d-1faf2-1f3ff","1faf1-1f3fe-200d-1faf2-1f3fb","1faf1-1f3fe-200d-1faf2-1f3fc","1faf1-1f3fe-200d-1faf2-1f3fd","1faf1-1f3fe-200d-1faf2-1f3ff","1faf1-1f3ff-200d-1faf2-1f3fb","1faf1-1f3ff-200d-1faf2-1f3fc","1faf1-1f3ff-200d-1faf2-1f3fd","1faf1-1f3ff-200d-1faf2-1f3fe"],a:"3"},{n:["ask","hand","pray","high 5","please","thanks","high five","folded hands"],u:"1f64f",v:["1f64f-1f3fb","1f64f-1f3fc","1f64f-1f3fd","1f64f-1f3fe","1f64f-1f3ff"],a:"0.6"},{n:["hand","write","writing hand"],u:"270d-fe0f",v:["270d-1f3fb","270d-1f3fc","270d-1f3fd","270d-1f3fe","270d-1f3ff"],a:"0.7"},{n:["care","nail","polish","manicure","cosmetics","nail polish"],u:"1f485",v:["1f485-1f3fb","1f485-1f3fc","1f485-1f3fd","1f485-1f3fe","1f485-1f3ff"],a:"0.6"},{n:["phone","selfie","camera"],u:"1f933",v:["1f933-1f3fb","1f933-1f3fc","1f933-1f3fd","1f933-1f3fe","1f933-1f3ff"],a:"3"},{n:["flex","comic","biceps","muscle","flexed biceps"],u:"1f4aa",v:["1f4aa-1f3fb","1f4aa-1f3fc","1f4aa-1f3fd","1f4aa-1f3fe","1f4aa-1f3ff"],a:"0.6"},{n:["prosthetic","accessibility","mechanical arm"],u:"1f9be",a:"12"},{n:["prosthetic","accessibility","mechanical leg"],u:"1f9bf",a:"12"},{n:["leg","kick","limb"],u:"1f9b5",v:["1f9b5-1f3fb","1f9b5-1f3fc","1f9b5-1f3fd","1f9b5-1f3fe","1f9b5-1f3ff"],a:"11"},{n:["foot","kick","stomp"],u:"1f9b6",v:["1f9b6-1f3fb","1f9b6-1f3fc","1f9b6-1f3fd","1f9b6-1f3fe","1f9b6-1f3ff"],a:"11"},{n:["ear","body"],u:"1f442",v:["1f442-1f3fb","1f442-1f3fc","1f442-1f3fd","1f442-1f3fe","1f442-1f3ff"],a:"0.6"},{n:["accessibility","hard of hearing","ear with hearing aid"],u:"1f9bb",v:["1f9bb-1f3fb","1f9bb-1f3fc","1f9bb-1f3fd","1f9bb-1f3fe","1f9bb-1f3ff"],a:"12"},{n:["nose","body"],u:"1f443",v:["1f443-1f3fb","1f443-1f3fc","1f443-1f3fd","1f443-1f3fe","1f443-1f3ff"],a:"0.6"},{n:["brain","intelligent"],u:"1f9e0",a:"5"},{n:["heart","organ","pulse","anatomical","cardiology","anatomical heart"],u:"1fac0",a:"13"},{n:["lungs","organ","breath","exhalation","inhalation","respiration"],u:"1fac1",a:"13"},{n:["tooth","dentist"],u:"1f9b7",a:"11"},{n:["bone","skeleton"],u:"1f9b4",a:"11"},{n:["eye","eyes","face"],u:"1f440",a:"0.6"},{n:["eye","body"],u:"1f441-fe0f",a:"0.7"},{n:["body","tongue"],u:"1f445",a:"0.6"},{n:["lips","mouth"],u:"1f444",a:"0.6"},{n:["fear","anxious","nervous","worried","flirting","biting lip","uncomfortable"],u:"1fae6",a:"14"},{n:["baby","young"],u:"1f476",v:["1f476-1f3fb","1f476-1f3fc","1f476-1f3fd","1f476-1f3fe","1f476-1f3ff"],a:"0.6"},{n:["child","young","gender neutral","unspecified gender"],u:"1f9d2",v:["1f9d2-1f3fb","1f9d2-1f3fc","1f9d2-1f3fd","1f9d2-1f3fe","1f9d2-1f3ff"],a:"5"},{n:["boy","young"],u:"1f466",v:["1f466-1f3fb","1f466-1f3fc","1f466-1f3fd","1f466-1f3fe","1f466-1f3ff"],a:"0.6"},{n:["girl","virgo","young","zodiac"],u:"1f467",v:["1f467-1f3fb","1f467-1f3fc","1f467-1f3fd","1f467-1f3fe","1f467-1f3ff"],a:"0.6"},{n:["adult","person","gender neutral","unspecified gender"],u:"1f9d1",v:["1f9d1-1f3fb","1f9d1-1f3fc","1f9d1-1f3fd","1f9d1-1f3fe","1f9d1-1f3ff"],a:"5"},{n:["hair","blond","person: blond hair","blond haired person"],u:"1f471",v:["1f471-1f3fb","1f471-1f3fc","1f471-1f3fd","1f471-1f3fe","1f471-1f3ff"],a:"0.6"},{n:["man","adult"],u:"1f468",v:["1f468-1f3fb","1f468-1f3fc","1f468-1f3fd","1f468-1f3fe","1f468-1f3ff"],a:"0.6"},{n:["beard","person","person: beard"],u:"1f9d4",v:["1f9d4-1f3fb","1f9d4-1f3fc","1f9d4-1f3fd","1f9d4-1f3fe","1f9d4-1f3ff"],a:"5"},{n:["man","beard","man: beard"],u:"1f9d4-200d-2642-fe0f",v:["1f9d4-1f3fb-200d-2642-fe0f","1f9d4-1f3fc-200d-2642-fe0f","1f9d4-1f3fd-200d-2642-fe0f","1f9d4-1f3fe-200d-2642-fe0f","1f9d4-1f3ff-200d-2642-fe0f"],a:"13.1"},{n:["beard","woman","woman: beard"],u:"1f9d4-200d-2640-fe0f",v:["1f9d4-1f3fb-200d-2640-fe0f","1f9d4-1f3fc-200d-2640-fe0f","1f9d4-1f3fd-200d-2640-fe0f","1f9d4-1f3fe-200d-2640-fe0f","1f9d4-1f3ff-200d-2640-fe0f"],a:"13.1"},{n:["man","adult","red hair","man: red hair"],u:"1f468-200d-1f9b0",v:["1f468-1f3fb-200d-1f9b0","1f468-1f3fc-200d-1f9b0","1f468-1f3fd-200d-1f9b0","1f468-1f3fe-200d-1f9b0","1f468-1f3ff-200d-1f9b0"],a:"11"},{n:["man","adult","curly hair","man: curly hair"],u:"1f468-200d-1f9b1",v:["1f468-1f3fb-200d-1f9b1","1f468-1f3fc-200d-1f9b1","1f468-1f3fd-200d-1f9b1","1f468-1f3fe-200d-1f9b1","1f468-1f3ff-200d-1f9b1"],a:"11"},{n:["man","adult","white hair","man: white hair"],u:"1f468-200d-1f9b3",v:["1f468-1f3fb-200d-1f9b3","1f468-1f3fc-200d-1f9b3","1f468-1f3fd-200d-1f9b3","1f468-1f3fe-200d-1f9b3","1f468-1f3ff-200d-1f9b3"],a:"11"},{n:["man","bald","adult","man: bald"],u:"1f468-200d-1f9b2",v:["1f468-1f3fb-200d-1f9b2","1f468-1f3fc-200d-1f9b2","1f468-1f3fd-200d-1f9b2","1f468-1f3fe-200d-1f9b2","1f468-1f3ff-200d-1f9b2"],a:"11"},{n:["woman","adult"],u:"1f469",v:["1f469-1f3fb","1f469-1f3fc","1f469-1f3fd","1f469-1f3fe","1f469-1f3ff"],a:"0.6"},{n:["adult","woman","red hair","woman: red hair"],u:"1f469-200d-1f9b0",v:["1f469-1f3fb-200d-1f9b0","1f469-1f3fc-200d-1f9b0","1f469-1f3fd-200d-1f9b0","1f469-1f3fe-200d-1f9b0","1f469-1f3ff-200d-1f9b0"],a:"11"},{n:["adult","person","red hair","gender neutral","person: red hair","unspecified gender"],u:"1f9d1-200d-1f9b0",v:["1f9d1-1f3fb-200d-1f9b0","1f9d1-1f3fc-200d-1f9b0","1f9d1-1f3fd-200d-1f9b0","1f9d1-1f3fe-200d-1f9b0","1f9d1-1f3ff-200d-1f9b0"],a:"12.1"},{n:["adult","woman","curly hair","woman: curly hair"],u:"1f469-200d-1f9b1",v:["1f469-1f3fb-200d-1f9b1","1f469-1f3fc-200d-1f9b1","1f469-1f3fd-200d-1f9b1","1f469-1f3fe-200d-1f9b1","1f469-1f3ff-200d-1f9b1"],a:"11"},{n:["adult","person","curly hair","gender neutral","person: curly hair","unspecified gender"],u:"1f9d1-200d-1f9b1",v:["1f9d1-1f3fb-200d-1f9b1","1f9d1-1f3fc-200d-1f9b1","1f9d1-1f3fd-200d-1f9b1","1f9d1-1f3fe-200d-1f9b1","1f9d1-1f3ff-200d-1f9b1"],a:"12.1"},{n:["adult","woman","white hair","woman: white hair"],u:"1f469-200d-1f9b3",v:["1f469-1f3fb-200d-1f9b3","1f469-1f3fc-200d-1f9b3","1f469-1f3fd-200d-1f9b3","1f469-1f3fe-200d-1f9b3","1f469-1f3ff-200d-1f9b3"],a:"11"},{n:["adult","person","white hair","gender neutral","person: white hair","unspecified gender"],u:"1f9d1-200d-1f9b3",v:["1f9d1-1f3fb-200d-1f9b3","1f9d1-1f3fc-200d-1f9b3","1f9d1-1f3fd-200d-1f9b3","1f9d1-1f3fe-200d-1f9b3","1f9d1-1f3ff-200d-1f9b3"],a:"12.1"},{n:["bald","adult","woman","woman: bald"],u:"1f469-200d-1f9b2",v:["1f469-1f3fb-200d-1f9b2","1f469-1f3fc-200d-1f9b2","1f469-1f3fd-200d-1f9b2","1f469-1f3fe-200d-1f9b2","1f469-1f3ff-200d-1f9b2"],a:"11"},{n:["bald","adult","person","person: bald","gender neutral","unspecified gender"],u:"1f9d1-200d-1f9b2",v:["1f9d1-1f3fb-200d-1f9b2","1f9d1-1f3fc-200d-1f9b2","1f9d1-1f3fd-200d-1f9b2","1f9d1-1f3fe-200d-1f9b2","1f9d1-1f3ff-200d-1f9b2"],a:"12.1"},{n:["hair","woman","blonde","woman: blond hair","blond haired woman"],u:"1f471-200d-2640-fe0f",v:["1f471-1f3fb-200d-2640-fe0f","1f471-1f3fc-200d-2640-fe0f","1f471-1f3fd-200d-2640-fe0f","1f471-1f3fe-200d-2640-fe0f","1f471-1f3ff-200d-2640-fe0f"],a:"4"},{n:["man","hair","blond","man: blond hair","blond haired man"],u:"1f471-200d-2642-fe0f",v:["1f471-1f3fb-200d-2642-fe0f","1f471-1f3fc-200d-2642-fe0f","1f471-1f3fd-200d-2642-fe0f","1f471-1f3fe-200d-2642-fe0f","1f471-1f3ff-200d-2642-fe0f"],a:"4"},{n:["old","adult","older person","gender neutral","unspecified gender"],u:"1f9d3",v:["1f9d3-1f3fb","1f9d3-1f3fc","1f9d3-1f3fd","1f9d3-1f3fe","1f9d3-1f3ff"],a:"5"},{n:["man","old","adult","old man"],u:"1f474",v:["1f474-1f3fb","1f474-1f3fc","1f474-1f3fd","1f474-1f3fe","1f474-1f3ff"],a:"0.6"},{n:["old","adult","woman","old woman"],u:"1f475",v:["1f475-1f3fb","1f475-1f3fc","1f475-1f3fd","1f475-1f3fe","1f475-1f3ff"],a:"0.6"},{n:["frown","gesture","person frowning"],u:"1f64d",v:["1f64d-1f3fb","1f64d-1f3fc","1f64d-1f3fd","1f64d-1f3fe","1f64d-1f3ff"],a:"0.6"},{n:["man","gesture","frowning","man frowning"],u:"1f64d-200d-2642-fe0f",v:["1f64d-1f3fb-200d-2642-fe0f","1f64d-1f3fc-200d-2642-fe0f","1f64d-1f3fd-200d-2642-fe0f","1f64d-1f3fe-200d-2642-fe0f","1f64d-1f3ff-200d-2642-fe0f"],a:"4"},{n:["woman","gesture","frowning","woman frowning"],u:"1f64d-200d-2640-fe0f",v:["1f64d-1f3fb-200d-2640-fe0f","1f64d-1f3fc-200d-2640-fe0f","1f64d-1f3fd-200d-2640-fe0f","1f64d-1f3fe-200d-2640-fe0f","1f64d-1f3ff-200d-2640-fe0f"],a:"4"},{n:["gesture","pouting","person pouting"],u:"1f64e",v:["1f64e-1f3fb","1f64e-1f3fc","1f64e-1f3fd","1f64e-1f3fe","1f64e-1f3ff"],a:"0.6"},{n:["man","gesture","pouting","man pouting"],u:"1f64e-200d-2642-fe0f",v:["1f64e-1f3fb-200d-2642-fe0f","1f64e-1f3fc-200d-2642-fe0f","1f64e-1f3fd-200d-2642-fe0f","1f64e-1f3fe-200d-2642-fe0f","1f64e-1f3ff-200d-2642-fe0f"],a:"4"},{n:["woman","gesture","pouting","woman pouting"],u:"1f64e-200d-2640-fe0f",v:["1f64e-1f3fb-200d-2640-fe0f","1f64e-1f3fc-200d-2640-fe0f","1f64e-1f3fd-200d-2640-fe0f","1f64e-1f3fe-200d-2640-fe0f","1f64e-1f3ff-200d-2640-fe0f"],a:"4"},{n:["hand","gesture","forbidden","prohibited","person gesturing NO","person gesturing no"],u:"1f645",v:["1f645-1f3fb","1f645-1f3fc","1f645-1f3fd","1f645-1f3fe","1f645-1f3ff"],a:"0.6"},{n:["man","hand","gesture","forbidden","prohibited","man gesturing NO","man gesturing no"],u:"1f645-200d-2642-fe0f",v:["1f645-1f3fb-200d-2642-fe0f","1f645-1f3fc-200d-2642-fe0f","1f645-1f3fd-200d-2642-fe0f","1f645-1f3fe-200d-2642-fe0f","1f645-1f3ff-200d-2642-fe0f"],a:"4"},{n:["hand","woman","gesture","forbidden","prohibited","woman gesturing NO","woman gesturing no"],u:"1f645-200d-2640-fe0f",v:["1f645-1f3fb-200d-2640-fe0f","1f645-1f3fc-200d-2640-fe0f","1f645-1f3fd-200d-2640-fe0f","1f645-1f3fe-200d-2640-fe0f","1f645-1f3ff-200d-2640-fe0f"],a:"4"},{n:["ok","hand","gesture","person gesturing OK","person gesturing ok"],u:"1f646",v:["1f646-1f3fb","1f646-1f3fc","1f646-1f3fd","1f646-1f3fe","1f646-1f3ff"],a:"0.6"},{n:["ok","man","hand","gesture","man gesturing OK","man gesturing ok"],u:"1f646-200d-2642-fe0f",v:["1f646-1f3fb-200d-2642-fe0f","1f646-1f3fc-200d-2642-fe0f","1f646-1f3fd-200d-2642-fe0f","1f646-1f3fe-200d-2642-fe0f","1f646-1f3ff-200d-2642-fe0f"],a:"4"},{n:["ok","hand","woman","gesture","woman gesturing OK","woman gesturing ok"],u:"1f646-200d-2640-fe0f",v:["1f646-1f3fb-200d-2640-fe0f","1f646-1f3fc-200d-2640-fe0f","1f646-1f3fd-200d-2640-fe0f","1f646-1f3fe-200d-2640-fe0f","1f646-1f3ff-200d-2640-fe0f"],a:"4"},{n:["hand","help","sassy","tipping","information","person tipping hand"],u:"1f481",v:["1f481-1f3fb","1f481-1f3fc","1f481-1f3fd","1f481-1f3fe","1f481-1f3ff"],a:"0.6"},{n:["man","sassy","tipping hand","man tipping hand"],u:"1f481-200d-2642-fe0f",v:["1f481-1f3fb-200d-2642-fe0f","1f481-1f3fc-200d-2642-fe0f","1f481-1f3fd-200d-2642-fe0f","1f481-1f3fe-200d-2642-fe0f","1f481-1f3ff-200d-2642-fe0f"],a:"4"},{n:["sassy","woman","tipping hand","woman tipping hand"],u:"1f481-200d-2640-fe0f",v:["1f481-1f3fb-200d-2640-fe0f","1f481-1f3fc-200d-2640-fe0f","1f481-1f3fd-200d-2640-fe0f","1f481-1f3fe-200d-2640-fe0f","1f481-1f3ff-200d-2640-fe0f"],a:"4"},{n:["hand","happy","raised","gesture","person raising hand"],u:"1f64b",v:["1f64b-1f3fb","1f64b-1f3fc","1f64b-1f3fd","1f64b-1f3fe","1f64b-1f3ff"],a:"0.6"},{n:["man","gesture","raising hand","man raising hand"],u:"1f64b-200d-2642-fe0f",v:["1f64b-1f3fb-200d-2642-fe0f","1f64b-1f3fc-200d-2642-fe0f","1f64b-1f3fd-200d-2642-fe0f","1f64b-1f3fe-200d-2642-fe0f","1f64b-1f3ff-200d-2642-fe0f"],a:"4"},{n:["woman","gesture","raising hand","woman raising hand"],u:"1f64b-200d-2640-fe0f",v:["1f64b-1f3fb-200d-2640-fe0f","1f64b-1f3fc-200d-2640-fe0f","1f64b-1f3fd-200d-2640-fe0f","1f64b-1f3fe-200d-2640-fe0f","1f64b-1f3ff-200d-2640-fe0f"],a:"4"},{n:["ear","deaf","hear","deaf person","accessibility"],u:"1f9cf",v:["1f9cf-1f3fb","1f9cf-1f3fc","1f9cf-1f3fd","1f9cf-1f3fe","1f9cf-1f3ff"],a:"12"},{n:["man","deaf","deaf man"],u:"1f9cf-200d-2642-fe0f",v:["1f9cf-1f3fb-200d-2642-fe0f","1f9cf-1f3fc-200d-2642-fe0f","1f9cf-1f3fd-200d-2642-fe0f","1f9cf-1f3fe-200d-2642-fe0f","1f9cf-1f3ff-200d-2642-fe0f"],a:"12"},{n:["deaf","woman","deaf woman"],u:"1f9cf-200d-2640-fe0f",v:["1f9cf-1f3fb-200d-2640-fe0f","1f9cf-1f3fc-200d-2640-fe0f","1f9cf-1f3fd-200d-2640-fe0f","1f9cf-1f3fe-200d-2640-fe0f","1f9cf-1f3ff-200d-2640-fe0f"],a:"12"},{n:["bow","sorry","apology","gesture","person bowing"],u:"1f647",v:["1f647-1f3fb","1f647-1f3fc","1f647-1f3fd","1f647-1f3fe","1f647-1f3ff"],a:"0.6"},{n:["man","favor","sorry","bowing","apology","gesture","man bowing"],u:"1f647-200d-2642-fe0f",v:["1f647-1f3fb-200d-2642-fe0f","1f647-1f3fc-200d-2642-fe0f","1f647-1f3fd-200d-2642-fe0f","1f647-1f3fe-200d-2642-fe0f","1f647-1f3ff-200d-2642-fe0f"],a:"4"},{n:["favor","sorry","woman","bowing","apology","gesture","woman bowing"],u:"1f647-200d-2640-fe0f",v:["1f647-1f3fb-200d-2640-fe0f","1f647-1f3fc-200d-2640-fe0f","1f647-1f3fd-200d-2640-fe0f","1f647-1f3fe-200d-2640-fe0f","1f647-1f3ff-200d-2640-fe0f"],a:"4"},{n:["face","palm","disbelief","exasperation","person facepalming"],u:"1f926",v:["1f926-1f3fb","1f926-1f3fc","1f926-1f3fd","1f926-1f3fe","1f926-1f3ff"],a:"3"},{n:["man","facepalm","disbelief","exasperation","man facepalming"],u:"1f926-200d-2642-fe0f",v:["1f926-1f3fb-200d-2642-fe0f","1f926-1f3fc-200d-2642-fe0f","1f926-1f3fd-200d-2642-fe0f","1f926-1f3fe-200d-2642-fe0f","1f926-1f3ff-200d-2642-fe0f"],a:"4"},{n:["woman","facepalm","disbelief","exasperation","woman facepalming"],u:"1f926-200d-2640-fe0f",v:["1f926-1f3fb-200d-2640-fe0f","1f926-1f3fc-200d-2640-fe0f","1f926-1f3fd-200d-2640-fe0f","1f926-1f3fe-200d-2640-fe0f","1f926-1f3ff-200d-2640-fe0f"],a:"4"},{n:["doubt","shrug","ignorance","indifference","person shrugging"],u:"1f937",v:["1f937-1f3fb","1f937-1f3fc","1f937-1f3fd","1f937-1f3fe","1f937-1f3ff"],a:"3"},{n:["man","doubt","shrug","ignorance","indifference","man shrugging"],u:"1f937-200d-2642-fe0f",v:["1f937-1f3fb-200d-2642-fe0f","1f937-1f3fc-200d-2642-fe0f","1f937-1f3fd-200d-2642-fe0f","1f937-1f3fe-200d-2642-fe0f","1f937-1f3ff-200d-2642-fe0f"],a:"4"},{n:["doubt","shrug","woman","ignorance","indifference","woman shrugging"],u:"1f937-200d-2640-fe0f",v:["1f937-1f3fb-200d-2640-fe0f","1f937-1f3fc-200d-2640-fe0f","1f937-1f3fd-200d-2640-fe0f","1f937-1f3fe-200d-2640-fe0f","1f937-1f3ff-200d-2640-fe0f"],a:"4"},{n:["nurse","doctor","therapist","healthcare","health worker"],u:"1f9d1-200d-2695-fe0f",v:["1f9d1-1f3fb-200d-2695-fe0f","1f9d1-1f3fc-200d-2695-fe0f","1f9d1-1f3fd-200d-2695-fe0f","1f9d1-1f3fe-200d-2695-fe0f","1f9d1-1f3ff-200d-2695-fe0f"],a:"12.1"},{n:["man","nurse","doctor","therapist","healthcare","man health worker"],u:"1f468-200d-2695-fe0f",v:["1f468-1f3fb-200d-2695-fe0f","1f468-1f3fc-200d-2695-fe0f","1f468-1f3fd-200d-2695-fe0f","1f468-1f3fe-200d-2695-fe0f","1f468-1f3ff-200d-2695-fe0f"],a:"4"},{n:["nurse","woman","doctor","therapist","healthcare","woman health worker"],u:"1f469-200d-2695-fe0f",v:["1f469-1f3fb-200d-2695-fe0f","1f469-1f3fc-200d-2695-fe0f","1f469-1f3fd-200d-2695-fe0f","1f469-1f3fe-200d-2695-fe0f","1f469-1f3ff-200d-2695-fe0f"],a:"4"},{n:["student","graduate"],u:"1f9d1-200d-1f393",v:["1f9d1-1f3fb-200d-1f393","1f9d1-1f3fc-200d-1f393","1f9d1-1f3fd-200d-1f393","1f9d1-1f3fe-200d-1f393","1f9d1-1f3ff-200d-1f393"],a:"12.1"},{n:["man","student","graduate","man student"],u:"1f468-200d-1f393",v:["1f468-1f3fb-200d-1f393","1f468-1f3fc-200d-1f393","1f468-1f3fd-200d-1f393","1f468-1f3fe-200d-1f393","1f468-1f3ff-200d-1f393"],a:"4"},{n:["woman","student","graduate","woman student"],u:"1f469-200d-1f393",v:["1f469-1f3fb-200d-1f393","1f469-1f3fc-200d-1f393","1f469-1f3fd-200d-1f393","1f469-1f3fe-200d-1f393","1f469-1f3ff-200d-1f393"],a:"4"},{n:["teacher","lecturer","professor","instructor"],u:"1f9d1-200d-1f3eb",v:["1f9d1-1f3fb-200d-1f3eb","1f9d1-1f3fc-200d-1f3eb","1f9d1-1f3fd-200d-1f3eb","1f9d1-1f3fe-200d-1f3eb","1f9d1-1f3ff-200d-1f3eb"],a:"12.1"},{n:["man","teacher","lecturer","professor","instructor","man teacher"],u:"1f468-200d-1f3eb",v:["1f468-1f3fb-200d-1f3eb","1f468-1f3fc-200d-1f3eb","1f468-1f3fd-200d-1f3eb","1f468-1f3fe-200d-1f3eb","1f468-1f3ff-200d-1f3eb"],a:"4"},{n:["woman","teacher","lecturer","professor","instructor","woman teacher"],u:"1f469-200d-1f3eb",v:["1f469-1f3fb-200d-1f3eb","1f469-1f3fc-200d-1f3eb","1f469-1f3fd-200d-1f3eb","1f469-1f3fe-200d-1f3eb","1f469-1f3ff-200d-1f3eb"],a:"4"},{n:["law","judge","scales","justice"],u:"1f9d1-200d-2696-fe0f",v:["1f9d1-1f3fb-200d-2696-fe0f","1f9d1-1f3fc-200d-2696-fe0f","1f9d1-1f3fd-200d-2696-fe0f","1f9d1-1f3fe-200d-2696-fe0f","1f9d1-1f3ff-200d-2696-fe0f"],a:"12.1"},{n:["law","man","judge","scales","justice","man judge"],u:"1f468-200d-2696-fe0f",v:["1f468-1f3fb-200d-2696-fe0f","1f468-1f3fc-200d-2696-fe0f","1f468-1f3fd-200d-2696-fe0f","1f468-1f3fe-200d-2696-fe0f","1f468-1f3ff-200d-2696-fe0f"],a:"4"},{n:["law","judge","woman","scales","justice","woman judge"],u:"1f469-200d-2696-fe0f",v:["1f469-1f3fb-200d-2696-fe0f","1f469-1f3fc-200d-2696-fe0f","1f469-1f3fd-200d-2696-fe0f","1f469-1f3fe-200d-2696-fe0f","1f469-1f3ff-200d-2696-fe0f"],a:"4"},{n:["farmer","rancher","gardener"],u:"1f9d1-200d-1f33e",v:["1f9d1-1f3fb-200d-1f33e","1f9d1-1f3fc-200d-1f33e","1f9d1-1f3fd-200d-1f33e","1f9d1-1f3fe-200d-1f33e","1f9d1-1f3ff-200d-1f33e"],a:"12.1"},{n:["man","farmer","rancher","gardener","man farmer"],u:"1f468-200d-1f33e",v:["1f468-1f3fb-200d-1f33e","1f468-1f3fc-200d-1f33e","1f468-1f3fd-200d-1f33e","1f468-1f3fe-200d-1f33e","1f468-1f3ff-200d-1f33e"],a:"4"},{n:["woman","farmer","rancher","gardener","woman farmer"],u:"1f469-200d-1f33e",v:["1f469-1f3fb-200d-1f33e","1f469-1f3fc-200d-1f33e","1f469-1f3fd-200d-1f33e","1f469-1f3fe-200d-1f33e","1f469-1f3ff-200d-1f33e"],a:"4"},{n:["cook","chef"],u:"1f9d1-200d-1f373",v:["1f9d1-1f3fb-200d-1f373","1f9d1-1f3fc-200d-1f373","1f9d1-1f3fd-200d-1f373","1f9d1-1f3fe-200d-1f373","1f9d1-1f3ff-200d-1f373"],a:"12.1"},{n:["man","chef","cook","man cook"],u:"1f468-200d-1f373",v:["1f468-1f3fb-200d-1f373","1f468-1f3fc-200d-1f373","1f468-1f3fd-200d-1f373","1f468-1f3fe-200d-1f373","1f468-1f3ff-200d-1f373"],a:"4"},{n:["chef","cook","woman","woman cook"],u:"1f469-200d-1f373",v:["1f469-1f3fb-200d-1f373","1f469-1f3fc-200d-1f373","1f469-1f3fd-200d-1f373","1f469-1f3fe-200d-1f373","1f469-1f3ff-200d-1f373"],a:"4"},{n:["plumber","mechanic","electrician","tradesperson"],u:"1f9d1-200d-1f527",v:["1f9d1-1f3fb-200d-1f527","1f9d1-1f3fc-200d-1f527","1f9d1-1f3fd-200d-1f527","1f9d1-1f3fe-200d-1f527","1f9d1-1f3ff-200d-1f527"],a:"12.1"},{n:["man","plumber","mechanic","electrician","man mechanic","tradesperson"],u:"1f468-200d-1f527",v:["1f468-1f3fb-200d-1f527","1f468-1f3fc-200d-1f527","1f468-1f3fd-200d-1f527","1f468-1f3fe-200d-1f527","1f468-1f3ff-200d-1f527"],a:"4"},{n:["woman","plumber","mechanic","electrician","tradesperson","woman mechanic"],u:"1f469-200d-1f527",v:["1f469-1f3fb-200d-1f527","1f469-1f3fc-200d-1f527","1f469-1f3fd-200d-1f527","1f469-1f3fe-200d-1f527","1f469-1f3ff-200d-1f527"],a:"4"},{n:["worker","factory","assembly","industrial","factory worker"],u:"1f9d1-200d-1f3ed",v:["1f9d1-1f3fb-200d-1f3ed","1f9d1-1f3fc-200d-1f3ed","1f9d1-1f3fd-200d-1f3ed","1f9d1-1f3fe-200d-1f3ed","1f9d1-1f3ff-200d-1f3ed"],a:"12.1"},{n:["man","worker","factory","assembly","industrial","man factory worker"],u:"1f468-200d-1f3ed",v:["1f468-1f3fb-200d-1f3ed","1f468-1f3fc-200d-1f3ed","1f468-1f3fd-200d-1f3ed","1f468-1f3fe-200d-1f3ed","1f468-1f3ff-200d-1f3ed"],a:"4"},{n:["woman","worker","factory","assembly","industrial","woman factory worker"],u:"1f469-200d-1f3ed",v:["1f469-1f3fb-200d-1f3ed","1f469-1f3fc-200d-1f3ed","1f469-1f3fd-200d-1f3ed","1f469-1f3fe-200d-1f3ed","1f469-1f3ff-200d-1f3ed"],a:"4"},{n:["manager","business","architect","white collar","office worker"],u:"1f9d1-200d-1f4bc",v:["1f9d1-1f3fb-200d-1f4bc","1f9d1-1f3fc-200d-1f4bc","1f9d1-1f3fd-200d-1f4bc","1f9d1-1f3fe-200d-1f4bc","1f9d1-1f3ff-200d-1f4bc"],a:"12.1"},{n:["man","manager","business","architect","white collar","man office worker"],u:"1f468-200d-1f4bc",v:["1f468-1f3fb-200d-1f4bc","1f468-1f3fc-200d-1f4bc","1f468-1f3fd-200d-1f4bc","1f468-1f3fe-200d-1f4bc","1f468-1f3ff-200d-1f4bc"],a:"4"},{n:["woman","manager","business","architect","white collar","woman office worker"],u:"1f469-200d-1f4bc",v:["1f469-1f3fb-200d-1f4bc","1f469-1f3fc-200d-1f4bc","1f469-1f3fd-200d-1f4bc","1f469-1f3fe-200d-1f4bc","1f469-1f3ff-200d-1f4bc"],a:"4"},{n:["chemist","engineer","scientist","biologist","physicist"],u:"1f9d1-200d-1f52c",v:["1f9d1-1f3fb-200d-1f52c","1f9d1-1f3fc-200d-1f52c","1f9d1-1f3fd-200d-1f52c","1f9d1-1f3fe-200d-1f52c","1f9d1-1f3ff-200d-1f52c"],a:"12.1"},{n:["man","chemist","engineer","biologist","physicist","scientist","man scientist"],u:"1f468-200d-1f52c",v:["1f468-1f3fb-200d-1f52c","1f468-1f3fc-200d-1f52c","1f468-1f3fd-200d-1f52c","1f468-1f3fe-200d-1f52c","1f468-1f3ff-200d-1f52c"],a:"4"},{n:["woman","chemist","engineer","biologist","physicist","scientist","woman scientist"],u:"1f469-200d-1f52c",v:["1f469-1f3fb-200d-1f52c","1f469-1f3fc-200d-1f52c","1f469-1f3fd-200d-1f52c","1f469-1f3fe-200d-1f52c","1f469-1f3ff-200d-1f52c"],a:"4"},{n:["coder","inventor","software","developer","technologist"],u:"1f9d1-200d-1f4bb",v:["1f9d1-1f3fb-200d-1f4bb","1f9d1-1f3fc-200d-1f4bb","1f9d1-1f3fd-200d-1f4bb","1f9d1-1f3fe-200d-1f4bb","1f9d1-1f3ff-200d-1f4bb"],a:"12.1"},{n:["man","coder","inventor","software","developer","technologist","man technologist"],u:"1f468-200d-1f4bb",v:["1f468-1f3fb-200d-1f4bb","1f468-1f3fc-200d-1f4bb","1f468-1f3fd-200d-1f4bb","1f468-1f3fe-200d-1f4bb","1f468-1f3ff-200d-1f4bb"],a:"4"},{n:["coder","woman","inventor","software","developer","technologist","woman technologist"],u:"1f469-200d-1f4bb",v:["1f469-1f3fb-200d-1f4bb","1f469-1f3fc-200d-1f4bb","1f469-1f3fd-200d-1f4bb","1f469-1f3fe-200d-1f4bb","1f469-1f3ff-200d-1f4bb"],a:"4"},{n:["rock","star","actor","singer","entertainer"],u:"1f9d1-200d-1f3a4",v:["1f9d1-1f3fb-200d-1f3a4","1f9d1-1f3fc-200d-1f3a4","1f9d1-1f3fd-200d-1f3a4","1f9d1-1f3fe-200d-1f3a4","1f9d1-1f3ff-200d-1f3a4"],a:"12.1"},{n:["man","rock","star","actor","singer","man singer","entertainer"],u:"1f468-200d-1f3a4",v:["1f468-1f3fb-200d-1f3a4","1f468-1f3fc-200d-1f3a4","1f468-1f3fd-200d-1f3a4","1f468-1f3fe-200d-1f3a4","1f468-1f3ff-200d-1f3a4"],a:"4"},{n:["rock","star","actor","woman","singer","entertainer","woman singer"],u:"1f469-200d-1f3a4",v:["1f469-1f3fb-200d-1f3a4","1f469-1f3fc-200d-1f3a4","1f469-1f3fd-200d-1f3a4","1f469-1f3fe-200d-1f3a4","1f469-1f3ff-200d-1f3a4"],a:"4"},{n:["artist","palette"],u:"1f9d1-200d-1f3a8",v:["1f9d1-1f3fb-200d-1f3a8","1f9d1-1f3fc-200d-1f3a8","1f9d1-1f3fd-200d-1f3a8","1f9d1-1f3fe-200d-1f3a8","1f9d1-1f3ff-200d-1f3a8"],a:"12.1"},{n:["man","artist","palette","man artist"],u:"1f468-200d-1f3a8",v:["1f468-1f3fb-200d-1f3a8","1f468-1f3fc-200d-1f3a8","1f468-1f3fd-200d-1f3a8","1f468-1f3fe-200d-1f3a8","1f468-1f3ff-200d-1f3a8"],a:"4"},{n:["woman","artist","palette","woman artist"],u:"1f469-200d-1f3a8",v:["1f469-1f3fb-200d-1f3a8","1f469-1f3fc-200d-1f3a8","1f469-1f3fd-200d-1f3a8","1f469-1f3fe-200d-1f3a8","1f469-1f3ff-200d-1f3a8"],a:"4"},{n:["pilot","plane"],u:"1f9d1-200d-2708-fe0f",v:["1f9d1-1f3fb-200d-2708-fe0f","1f9d1-1f3fc-200d-2708-fe0f","1f9d1-1f3fd-200d-2708-fe0f","1f9d1-1f3fe-200d-2708-fe0f","1f9d1-1f3ff-200d-2708-fe0f"],a:"12.1"},{n:["man","pilot","plane","man pilot"],u:"1f468-200d-2708-fe0f",v:["1f468-1f3fb-200d-2708-fe0f","1f468-1f3fc-200d-2708-fe0f","1f468-1f3fd-200d-2708-fe0f","1f468-1f3fe-200d-2708-fe0f","1f468-1f3ff-200d-2708-fe0f"],a:"4"},{n:["pilot","plane","woman","woman pilot"],u:"1f469-200d-2708-fe0f",v:["1f469-1f3fb-200d-2708-fe0f","1f469-1f3fc-200d-2708-fe0f","1f469-1f3fd-200d-2708-fe0f","1f469-1f3fe-200d-2708-fe0f","1f469-1f3ff-200d-2708-fe0f"],a:"4"},{n:["rocket","astronaut"],u:"1f9d1-200d-1f680",v:["1f9d1-1f3fb-200d-1f680","1f9d1-1f3fc-200d-1f680","1f9d1-1f3fd-200d-1f680","1f9d1-1f3fe-200d-1f680","1f9d1-1f3ff-200d-1f680"],a:"12.1"},{n:["man","rocket","astronaut","man astronaut"],u:"1f468-200d-1f680",v:["1f468-1f3fb-200d-1f680","1f468-1f3fc-200d-1f680","1f468-1f3fd-200d-1f680","1f468-1f3fe-200d-1f680","1f468-1f3ff-200d-1f680"],a:"4"},{n:["woman","rocket","astronaut","woman astronaut"],u:"1f469-200d-1f680",v:["1f469-1f3fb-200d-1f680","1f469-1f3fc-200d-1f680","1f469-1f3fd-200d-1f680","1f469-1f3fe-200d-1f680","1f469-1f3ff-200d-1f680"],a:"4"},{n:["fire","firetruck","firefighter"],u:"1f9d1-200d-1f692",v:["1f9d1-1f3fb-200d-1f692","1f9d1-1f3fc-200d-1f692","1f9d1-1f3fd-200d-1f692","1f9d1-1f3fe-200d-1f692","1f9d1-1f3ff-200d-1f692"],a:"12.1"},{n:["man","firetruck","firefighter","man firefighter"],u:"1f468-200d-1f692",v:["1f468-1f3fb-200d-1f692","1f468-1f3fc-200d-1f692","1f468-1f3fd-200d-1f692","1f468-1f3fe-200d-1f692","1f468-1f3ff-200d-1f692"],a:"4"},{n:["woman","firetruck","firefighter","woman firefighter"],u:"1f469-200d-1f692",v:["1f469-1f3fb-200d-1f692","1f469-1f3fc-200d-1f692","1f469-1f3fd-200d-1f692","1f469-1f3fe-200d-1f692","1f469-1f3ff-200d-1f692"],a:"4"},{n:["cop","police","officer","police officer"],u:"1f46e",v:["1f46e-1f3fb","1f46e-1f3fc","1f46e-1f3fd","1f46e-1f3fe","1f46e-1f3ff"],a:"0.6"},{n:["cop","man","police","officer","man police officer"],u:"1f46e-200d-2642-fe0f",v:["1f46e-1f3fb-200d-2642-fe0f","1f46e-1f3fc-200d-2642-fe0f","1f46e-1f3fd-200d-2642-fe0f","1f46e-1f3fe-200d-2642-fe0f","1f46e-1f3ff-200d-2642-fe0f"],a:"4"},{n:["cop","woman","police","officer","woman police officer"],u:"1f46e-200d-2640-fe0f",v:["1f46e-1f3fb-200d-2640-fe0f","1f46e-1f3fc-200d-2640-fe0f","1f46e-1f3fd-200d-2640-fe0f","1f46e-1f3fe-200d-2640-fe0f","1f46e-1f3ff-200d-2640-fe0f"],a:"4"},{n:["spy","sleuth","detective"],u:"1f575-fe0f",v:["1f575-1f3fb","1f575-1f3fc","1f575-1f3fd","1f575-1f3fe","1f575-1f3ff"],a:"0.7"},{n:["man","spy","sleuth","detective","man detective"],u:"1f575-fe0f-200d-2642-fe0f",v:["1f575-1f3fb-200d-2642-fe0f","1f575-1f3fc-200d-2642-fe0f","1f575-1f3fd-200d-2642-fe0f","1f575-1f3fe-200d-2642-fe0f","1f575-1f3ff-200d-2642-fe0f"],a:"4"},{n:["spy","woman","sleuth","detective","woman detective"],u:"1f575-fe0f-200d-2640-fe0f",v:["1f575-1f3fb-200d-2640-fe0f","1f575-1f3fc-200d-2640-fe0f","1f575-1f3fd-200d-2640-fe0f","1f575-1f3fe-200d-2640-fe0f","1f575-1f3ff-200d-2640-fe0f"],a:"4"},{n:["guard"],u:"1f482",v:["1f482-1f3fb","1f482-1f3fc","1f482-1f3fd","1f482-1f3fe","1f482-1f3ff"],a:"0.6"},{n:["man","guard","man guard"],u:"1f482-200d-2642-fe0f",v:["1f482-1f3fb-200d-2642-fe0f","1f482-1f3fc-200d-2642-fe0f","1f482-1f3fd-200d-2642-fe0f","1f482-1f3fe-200d-2642-fe0f","1f482-1f3ff-200d-2642-fe0f"],a:"4"},{n:["guard","woman","woman guard"],u:"1f482-200d-2640-fe0f",v:["1f482-1f3fb-200d-2640-fe0f","1f482-1f3fc-200d-2640-fe0f","1f482-1f3fd-200d-2640-fe0f","1f482-1f3fe-200d-2640-fe0f","1f482-1f3ff-200d-2640-fe0f"],a:"4"},{n:["ninja","hidden","fighter","stealth"],u:"1f977",v:["1f977-1f3fb","1f977-1f3fc","1f977-1f3fd","1f977-1f3fe","1f977-1f3ff"],a:"13"},{n:["hat","worker","construction","construction worker"],u:"1f477",v:["1f477-1f3fb","1f477-1f3fc","1f477-1f3fd","1f477-1f3fe","1f477-1f3ff"],a:"0.6"},{n:["man","worker","construction","man construction worker"],u:"1f477-200d-2642-fe0f",v:["1f477-1f3fb-200d-2642-fe0f","1f477-1f3fc-200d-2642-fe0f","1f477-1f3fd-200d-2642-fe0f","1f477-1f3fe-200d-2642-fe0f","1f477-1f3ff-200d-2642-fe0f"],a:"4"},{n:["woman","worker","construction","woman construction worker"],u:"1f477-200d-2640-fe0f",v:["1f477-1f3fb-200d-2640-fe0f","1f477-1f3fc-200d-2640-fe0f","1f477-1f3fd-200d-2640-fe0f","1f477-1f3fe-200d-2640-fe0f","1f477-1f3ff-200d-2640-fe0f"],a:"4"},{n:["noble","regal","monarch","royalty","person with crown"],u:"1fac5",v:["1fac5-1f3fb","1fac5-1f3fc","1fac5-1f3fd","1fac5-1f3fe","1fac5-1f3ff"],a:"14"},{n:["prince"],u:"1f934",v:["1f934-1f3fb","1f934-1f3fc","1f934-1f3fd","1f934-1f3fe","1f934-1f3ff"],a:"3"},{n:["fantasy","princess","fairy tale"],u:"1f478",v:["1f478-1f3fb","1f478-1f3fc","1f478-1f3fd","1f478-1f3fe","1f478-1f3ff"],a:"0.6"},{n:["turban","person wearing turban"],u:"1f473",v:["1f473-1f3fb","1f473-1f3fc","1f473-1f3fd","1f473-1f3fe","1f473-1f3ff"],a:"0.6"},{n:["man","turban","man wearing turban"],u:"1f473-200d-2642-fe0f",v:["1f473-1f3fb-200d-2642-fe0f","1f473-1f3fc-200d-2642-fe0f","1f473-1f3fd-200d-2642-fe0f","1f473-1f3fe-200d-2642-fe0f","1f473-1f3ff-200d-2642-fe0f"],a:"4"},{n:["woman","turban","woman wearing turban"],u:"1f473-200d-2640-fe0f",v:["1f473-1f3fb-200d-2640-fe0f","1f473-1f3fc-200d-2640-fe0f","1f473-1f3fd-200d-2640-fe0f","1f473-1f3fe-200d-2640-fe0f","1f473-1f3ff-200d-2640-fe0f"],a:"4"},{n:["cap","hat","person","skullcap","gua pi mao","person with skullcap"],u:"1f472",v:["1f472-1f3fb","1f472-1f3fc","1f472-1f3fd","1f472-1f3fe","1f472-1f3ff"],a:"0.6"},{n:["hijab","tichel","mantilla","headscarf","woman with headscarf"],u:"1f9d5",v:["1f9d5-1f3fb","1f9d5-1f3fc","1f9d5-1f3fd","1f9d5-1f3fe","1f9d5-1f3ff"],a:"5"},{n:["groom","person","tuxedo","person in tuxedo"],u:"1f935",v:["1f935-1f3fb","1f935-1f3fc","1f935-1f3fd","1f935-1f3fe","1f935-1f3ff"],a:"3"},{n:["man","tuxedo","man in tuxedo"],u:"1f935-200d-2642-fe0f",v:["1f935-1f3fb-200d-2642-fe0f","1f935-1f3fc-200d-2642-fe0f","1f935-1f3fd-200d-2642-fe0f","1f935-1f3fe-200d-2642-fe0f","1f935-1f3ff-200d-2642-fe0f"],a:"13"},{n:["woman","tuxedo","woman in tuxedo"],u:"1f935-200d-2640-fe0f",v:["1f935-1f3fb-200d-2640-fe0f","1f935-1f3fc-200d-2640-fe0f","1f935-1f3fd-200d-2640-fe0f","1f935-1f3fe-200d-2640-fe0f","1f935-1f3ff-200d-2640-fe0f"],a:"13"},{n:["veil","bride","person","wedding","person with veil"],u:"1f470",v:["1f470-1f3fb","1f470-1f3fc","1f470-1f3fd","1f470-1f3fe","1f470-1f3ff"],a:"0.6"},{n:["man","veil","man with veil"],u:"1f470-200d-2642-fe0f",v:["1f470-1f3fb-200d-2642-fe0f","1f470-1f3fc-200d-2642-fe0f","1f470-1f3fd-200d-2642-fe0f","1f470-1f3fe-200d-2642-fe0f","1f470-1f3ff-200d-2642-fe0f"],a:"13"},{n:["veil","woman","woman with veil"],u:"1f470-200d-2640-fe0f",v:["1f470-1f3fb-200d-2640-fe0f","1f470-1f3fc-200d-2640-fe0f","1f470-1f3fd-200d-2640-fe0f","1f470-1f3fe-200d-2640-fe0f","1f470-1f3ff-200d-2640-fe0f"],a:"13"},{n:["woman","pregnant","pregnant woman"],u:"1f930",v:["1f930-1f3fb","1f930-1f3fc","1f930-1f3fd","1f930-1f3fe","1f930-1f3ff"],a:"3"},{n:["full","belly","bloated","pregnant","pregnant man"],u:"1fac3",v:["1fac3-1f3fb","1fac3-1f3fc","1fac3-1f3fd","1fac3-1f3fe","1fac3-1f3ff"],a:"14"},{n:["full","belly","bloated","pregnant","pregnant person"],u:"1fac4",v:["1fac4-1f3fb","1fac4-1f3fc","1fac4-1f3fd","1fac4-1f3fe","1fac4-1f3ff"],a:"14"},{n:["baby","breast","nursing","breast feeding"],u:"1f931",v:["1f931-1f3fb","1f931-1f3fc","1f931-1f3fd","1f931-1f3fe","1f931-1f3ff"],a:"5"},{n:["baby","woman","feeding","nursing","woman feeding baby"],u:"1f469-200d-1f37c",v:["1f469-1f3fb-200d-1f37c","1f469-1f3fc-200d-1f37c","1f469-1f3fd-200d-1f37c","1f469-1f3fe-200d-1f37c","1f469-1f3ff-200d-1f37c"],a:"13"},{n:["man","baby","feeding","nursing","man feeding baby"],u:"1f468-200d-1f37c",v:["1f468-1f3fb-200d-1f37c","1f468-1f3fc-200d-1f37c","1f468-1f3fd-200d-1f37c","1f468-1f3fe-200d-1f37c","1f468-1f3ff-200d-1f37c"],a:"13"},{n:["baby","person","feeding","nursing","person feeding baby"],u:"1f9d1-200d-1f37c",v:["1f9d1-1f3fb-200d-1f37c","1f9d1-1f3fc-200d-1f37c","1f9d1-1f3fd-200d-1f37c","1f9d1-1f3fe-200d-1f37c","1f9d1-1f3ff-200d-1f37c"],a:"13"},{n:["baby","face","angel","fantasy","baby angel","fairy tale"],u:"1f47c",v:["1f47c-1f3fb","1f47c-1f3fc","1f47c-1f3fd","1f47c-1f3fe","1f47c-1f3ff"],a:"0.6"},{n:["claus","santa","father","christmas","Santa Claus","celebration"],u:"1f385",v:["1f385-1f3fb","1f385-1f3fc","1f385-1f3fd","1f385-1f3fe","1f385-1f3ff"],a:"0.6"},{n:["mrs.","claus","mother","christmas","Mrs. Claus","celebration"],u:"1f936",v:["1f936-1f3fb","1f936-1f3fc","1f936-1f3fd","1f936-1f3fe","1f936-1f3ff"],a:"3"},{n:["claus","mx claus","christmas"],u:"1f9d1-200d-1f384",v:["1f9d1-1f3fb-200d-1f384","1f9d1-1f3fc-200d-1f384","1f9d1-1f3fd-200d-1f384","1f9d1-1f3fe-200d-1f384","1f9d1-1f3ff-200d-1f384"],a:"13"},{n:["good","hero","heroine","superhero","superpower"],u:"1f9b8",v:["1f9b8-1f3fb","1f9b8-1f3fc","1f9b8-1f3fd","1f9b8-1f3fe","1f9b8-1f3ff"],a:"11"},{n:["man","good","hero","superpower","man superhero"],u:"1f9b8-200d-2642-fe0f",v:["1f9b8-1f3fb-200d-2642-fe0f","1f9b8-1f3fc-200d-2642-fe0f","1f9b8-1f3fd-200d-2642-fe0f","1f9b8-1f3fe-200d-2642-fe0f","1f9b8-1f3ff-200d-2642-fe0f"],a:"11"},{n:["good","hero","woman","heroine","superpower","woman superhero"],u:"1f9b8-200d-2640-fe0f",v:["1f9b8-1f3fb-200d-2640-fe0f","1f9b8-1f3fc-200d-2640-fe0f","1f9b8-1f3fd-200d-2640-fe0f","1f9b8-1f3fe-200d-2640-fe0f","1f9b8-1f3ff-200d-2640-fe0f"],a:"11"},{n:["evil","villain","criminal","superpower","supervillain"],u:"1f9b9",v:["1f9b9-1f3fb","1f9b9-1f3fc","1f9b9-1f3fd","1f9b9-1f3fe","1f9b9-1f3ff"],a:"11"},{n:["man","evil","villain","criminal","superpower","man supervillain"],u:"1f9b9-200d-2642-fe0f",v:["1f9b9-1f3fb-200d-2642-fe0f","1f9b9-1f3fc-200d-2642-fe0f","1f9b9-1f3fd-200d-2642-fe0f","1f9b9-1f3fe-200d-2642-fe0f","1f9b9-1f3ff-200d-2642-fe0f"],a:"11"},{n:["evil","woman","villain","criminal","superpower","woman supervillain"],u:"1f9b9-200d-2640-fe0f",v:["1f9b9-1f3fb-200d-2640-fe0f","1f9b9-1f3fc-200d-2640-fe0f","1f9b9-1f3fd-200d-2640-fe0f","1f9b9-1f3fe-200d-2640-fe0f","1f9b9-1f3ff-200d-2640-fe0f"],a:"11"},{n:["mage","witch","wizard","sorcerer","sorceress"],u:"1f9d9",v:["1f9d9-1f3fb","1f9d9-1f3fc","1f9d9-1f3fd","1f9d9-1f3fe","1f9d9-1f3ff"],a:"5"},{n:["wizard","man mage","sorcerer"],u:"1f9d9-200d-2642-fe0f",v:["1f9d9-1f3fb-200d-2642-fe0f","1f9d9-1f3fc-200d-2642-fe0f","1f9d9-1f3fd-200d-2642-fe0f","1f9d9-1f3fe-200d-2642-fe0f","1f9d9-1f3ff-200d-2642-fe0f"],a:"5"},{n:["witch","sorceress","woman mage"],u:"1f9d9-200d-2640-fe0f",v:["1f9d9-1f3fb-200d-2640-fe0f","1f9d9-1f3fc-200d-2640-fe0f","1f9d9-1f3fd-200d-2640-fe0f","1f9d9-1f3fe-200d-2640-fe0f","1f9d9-1f3ff-200d-2640-fe0f"],a:"5"},{n:["puck","fairy","oberon","titania"],u:"1f9da",v:["1f9da-1f3fb","1f9da-1f3fc","1f9da-1f3fd","1f9da-1f3fe","1f9da-1f3ff"],a:"5"},{n:["puck","oberon","man fairy"],u:"1f9da-200d-2642-fe0f",v:["1f9da-1f3fb-200d-2642-fe0f","1f9da-1f3fc-200d-2642-fe0f","1f9da-1f3fd-200d-2642-fe0f","1f9da-1f3fe-200d-2642-fe0f","1f9da-1f3ff-200d-2642-fe0f"],a:"5"},{n:["titania","woman fairy"],u:"1f9da-200d-2640-fe0f",v:["1f9da-1f3fb-200d-2640-fe0f","1f9da-1f3fc-200d-2640-fe0f","1f9da-1f3fd-200d-2640-fe0f","1f9da-1f3fe-200d-2640-fe0f","1f9da-1f3ff-200d-2640-fe0f"],a:"5"},{n:["undead","vampire","dracula"],u:"1f9db",v:["1f9db-1f3fb","1f9db-1f3fc","1f9db-1f3fd","1f9db-1f3fe","1f9db-1f3ff"],a:"5"},{n:["undead","dracula","man vampire"],u:"1f9db-200d-2642-fe0f",v:["1f9db-1f3fb-200d-2642-fe0f","1f9db-1f3fc-200d-2642-fe0f","1f9db-1f3fd-200d-2642-fe0f","1f9db-1f3fe-200d-2642-fe0f","1f9db-1f3ff-200d-2642-fe0f"],a:"5"},{n:["undead","woman vampire"],u:"1f9db-200d-2640-fe0f",v:["1f9db-1f3fb-200d-2640-fe0f","1f9db-1f3fc-200d-2640-fe0f","1f9db-1f3fd-200d-2640-fe0f","1f9db-1f3fe-200d-2640-fe0f","1f9db-1f3ff-200d-2640-fe0f"],a:"5"},{n:["merman","mermaid","merwoman","merperson"],u:"1f9dc",v:["1f9dc-1f3fb","1f9dc-1f3fc","1f9dc-1f3fd","1f9dc-1f3fe","1f9dc-1f3ff"],a:"5"},{n:["merman","triton"],u:"1f9dc-200d-2642-fe0f",v:["1f9dc-1f3fb-200d-2642-fe0f","1f9dc-1f3fc-200d-2642-fe0f","1f9dc-1f3fd-200d-2642-fe0f","1f9dc-1f3fe-200d-2642-fe0f","1f9dc-1f3ff-200d-2642-fe0f"],a:"5"},{n:["mermaid","merwoman"],u:"1f9dc-200d-2640-fe0f",v:["1f9dc-1f3fb-200d-2640-fe0f","1f9dc-1f3fc-200d-2640-fe0f","1f9dc-1f3fd-200d-2640-fe0f","1f9dc-1f3fe-200d-2640-fe0f","1f9dc-1f3ff-200d-2640-fe0f"],a:"5"},{n:["elf","magical"],u:"1f9dd",v:["1f9dd-1f3fb","1f9dd-1f3fc","1f9dd-1f3fd","1f9dd-1f3fe","1f9dd-1f3ff"],a:"5"},{n:["man elf","magical"],u:"1f9dd-200d-2642-fe0f",v:["1f9dd-1f3fb-200d-2642-fe0f","1f9dd-1f3fc-200d-2642-fe0f","1f9dd-1f3fd-200d-2642-fe0f","1f9dd-1f3fe-200d-2642-fe0f","1f9dd-1f3ff-200d-2642-fe0f"],a:"5"},{n:["magical","woman elf"],u:"1f9dd-200d-2640-fe0f",v:["1f9dd-1f3fb-200d-2640-fe0f","1f9dd-1f3fc-200d-2640-fe0f","1f9dd-1f3fd-200d-2640-fe0f","1f9dd-1f3fe-200d-2640-fe0f","1f9dd-1f3ff-200d-2640-fe0f"],a:"5"},{n:["genie","djinn"],u:"1f9de",a:"5"},{n:["djinn","man genie"],u:"1f9de-200d-2642-fe0f",a:"5"},{n:["djinn","woman genie"],u:"1f9de-200d-2640-fe0f",a:"5"},{n:["zombie","undead","walking dead"],u:"1f9df",a:"5"},{n:["undead","man zombie","walking dead"],u:"1f9df-200d-2642-fe0f",a:"5"},{n:["undead","woman zombie","walking dead"],u:"1f9df-200d-2640-fe0f",a:"5"},{n:["troll","fantasy","monster","fairy tale"],u:"1f9cc",a:"14"},{n:["face","salon","massage","person getting massage"],u:"1f486",v:["1f486-1f3fb","1f486-1f3fc","1f486-1f3fd","1f486-1f3fe","1f486-1f3ff"],a:"0.6"},{n:["man","face","massage","man getting massage"],u:"1f486-200d-2642-fe0f",v:["1f486-1f3fb-200d-2642-fe0f","1f486-1f3fc-200d-2642-fe0f","1f486-1f3fd-200d-2642-fe0f","1f486-1f3fe-200d-2642-fe0f","1f486-1f3ff-200d-2642-fe0f"],a:"4"},{n:["face","woman","massage","woman getting massage"],u:"1f486-200d-2640-fe0f",v:["1f486-1f3fb-200d-2640-fe0f","1f486-1f3fc-200d-2640-fe0f","1f486-1f3fd-200d-2640-fe0f","1f486-1f3fe-200d-2640-fe0f","1f486-1f3ff-200d-2640-fe0f"],a:"4"},{n:["barber","beauty","parlor","haircut","person getting haircut"],u:"1f487",v:["1f487-1f3fb","1f487-1f3fc","1f487-1f3fd","1f487-1f3fe","1f487-1f3ff"],a:"0.6"},{n:["man","haircut","man getting haircut"],u:"1f487-200d-2642-fe0f",v:["1f487-1f3fb-200d-2642-fe0f","1f487-1f3fc-200d-2642-fe0f","1f487-1f3fd-200d-2642-fe0f","1f487-1f3fe-200d-2642-fe0f","1f487-1f3ff-200d-2642-fe0f"],a:"4"},{n:["woman","haircut","woman getting haircut"],u:"1f487-200d-2640-fe0f",v:["1f487-1f3fb-200d-2640-fe0f","1f487-1f3fc-200d-2640-fe0f","1f487-1f3fd-200d-2640-fe0f","1f487-1f3fe-200d-2640-fe0f","1f487-1f3ff-200d-2640-fe0f"],a:"4"},{n:["hike","walk","walking","person walking"],u:"1f6b6",v:["1f6b6-1f3fb","1f6b6-1f3fc","1f6b6-1f3fd","1f6b6-1f3fe","1f6b6-1f3ff"],a:"0.6"},{n:["man","hike","walk","man walking"],u:"1f6b6-200d-2642-fe0f",v:["1f6b6-1f3fb-200d-2642-fe0f","1f6b6-1f3fc-200d-2642-fe0f","1f6b6-1f3fd-200d-2642-fe0f","1f6b6-1f3fe-200d-2642-fe0f","1f6b6-1f3ff-200d-2642-fe0f"],a:"4"},{n:["hike","walk","woman","woman walking"],u:"1f6b6-200d-2640-fe0f",v:["1f6b6-1f3fb-200d-2640-fe0f","1f6b6-1f3fc-200d-2640-fe0f","1f6b6-1f3fd-200d-2640-fe0f","1f6b6-1f3fe-200d-2640-fe0f","1f6b6-1f3ff-200d-2640-fe0f"],a:"4"},{n:["hike","walk","walking","person walking","person walking facing right"],u:"1f6b6-200d-27a1-fe0f",v:["1f6b6-1f3fb-200d-27a1-fe0f","1f6b6-1f3fc-200d-27a1-fe0f","1f6b6-1f3fd-200d-27a1-fe0f","1f6b6-1f3fe-200d-27a1-fe0f","1f6b6-1f3ff-200d-27a1-fe0f"],a:"15.1"},{n:["hike","walk","woman","woman walking","woman walking facing right"],u:"1f6b6-200d-2640-fe0f-200d-27a1-fe0f",v:["1f6b6-1f3fb-200d-2640-fe0f-200d-27a1-fe0f","1f6b6-1f3fc-200d-2640-fe0f-200d-27a1-fe0f","1f6b6-1f3fd-200d-2640-fe0f-200d-27a1-fe0f","1f6b6-1f3fe-200d-2640-fe0f-200d-27a1-fe0f","1f6b6-1f3ff-200d-2640-fe0f-200d-27a1-fe0f"],a:"15.1"},{n:["man","hike","walk","man walking","man walking facing right"],u:"1f6b6-200d-2642-fe0f-200d-27a1-fe0f",v:["1f6b6-1f3fb-200d-2642-fe0f-200d-27a1-fe0f","1f6b6-1f3fc-200d-2642-fe0f-200d-27a1-fe0f","1f6b6-1f3fd-200d-2642-fe0f-200d-27a1-fe0f","1f6b6-1f3fe-200d-2642-fe0f-200d-27a1-fe0f","1f6b6-1f3ff-200d-2642-fe0f-200d-27a1-fe0f"],a:"15.1"},{n:["stand","standing","person standing"],u:"1f9cd",v:["1f9cd-1f3fb","1f9cd-1f3fc","1f9cd-1f3fd","1f9cd-1f3fe","1f9cd-1f3ff"],a:"12"},{n:["man","standing","man standing"],u:"1f9cd-200d-2642-fe0f",v:["1f9cd-1f3fb-200d-2642-fe0f","1f9cd-1f3fc-200d-2642-fe0f","1f9cd-1f3fd-200d-2642-fe0f","1f9cd-1f3fe-200d-2642-fe0f","1f9cd-1f3ff-200d-2642-fe0f"],a:"12"},{n:["woman","standing","woman standing"],u:"1f9cd-200d-2640-fe0f",v:["1f9cd-1f3fb-200d-2640-fe0f","1f9cd-1f3fc-200d-2640-fe0f","1f9cd-1f3fd-200d-2640-fe0f","1f9cd-1f3fe-200d-2640-fe0f","1f9cd-1f3ff-200d-2640-fe0f"],a:"12"},{n:["kneel","kneeling","person kneeling"],u:"1f9ce",v:["1f9ce-1f3fb","1f9ce-1f3fc","1f9ce-1f3fd","1f9ce-1f3fe","1f9ce-1f3ff"],a:"12"},{n:["man","kneeling","man kneeling"],u:"1f9ce-200d-2642-fe0f",v:["1f9ce-1f3fb-200d-2642-fe0f","1f9ce-1f3fc-200d-2642-fe0f","1f9ce-1f3fd-200d-2642-fe0f","1f9ce-1f3fe-200d-2642-fe0f","1f9ce-1f3ff-200d-2642-fe0f"],a:"12"},{n:["woman","kneeling","woman kneeling"],u:"1f9ce-200d-2640-fe0f",v:["1f9ce-1f3fb-200d-2640-fe0f","1f9ce-1f3fc-200d-2640-fe0f","1f9ce-1f3fd-200d-2640-fe0f","1f9ce-1f3fe-200d-2640-fe0f","1f9ce-1f3ff-200d-2640-fe0f"],a:"12"},{n:["kneel","kneeling","person kneeling","person kneeling facing right"],u:"1f9ce-200d-27a1-fe0f",v:["1f9ce-1f3fb-200d-27a1-fe0f","1f9ce-1f3fc-200d-27a1-fe0f","1f9ce-1f3fd-200d-27a1-fe0f","1f9ce-1f3fe-200d-27a1-fe0f","1f9ce-1f3ff-200d-27a1-fe0f"],a:"15.1"},{n:["woman","kneeling","woman kneeling facing right"],u:"1f9ce-200d-2640-fe0f-200d-27a1-fe0f",v:["1f9ce-1f3fb-200d-2640-fe0f-200d-27a1-fe0f","1f9ce-1f3fc-200d-2640-fe0f-200d-27a1-fe0f","1f9ce-1f3fd-200d-2640-fe0f-200d-27a1-fe0f","1f9ce-1f3fe-200d-2640-fe0f-200d-27a1-fe0f","1f9ce-1f3ff-200d-2640-fe0f-200d-27a1-fe0f"],a:"15.1"},{n:["man","kneeling","man kneeling facing right"],u:"1f9ce-200d-2642-fe0f-200d-27a1-fe0f",v:["1f9ce-1f3fb-200d-2642-fe0f-200d-27a1-fe0f","1f9ce-1f3fc-200d-2642-fe0f-200d-27a1-fe0f","1f9ce-1f3fd-200d-2642-fe0f-200d-27a1-fe0f","1f9ce-1f3fe-200d-2642-fe0f-200d-27a1-fe0f","1f9ce-1f3ff-200d-2642-fe0f-200d-27a1-fe0f"],a:"15.1"},{n:["blind","accessibility","person with white cane"],u:"1f9d1-200d-1f9af",v:["1f9d1-1f3fb-200d-1f9af","1f9d1-1f3fc-200d-1f9af","1f9d1-1f3fd-200d-1f9af","1f9d1-1f3fe-200d-1f9af","1f9d1-1f3ff-200d-1f9af"],a:"12.1"},{n:["blind","accessibility","person with white cane","person with white cane facing right"],u:"1f9d1-200d-1f9af-200d-27a1-fe0f",v:["1f9d1-1f3fb-200d-1f9af-200d-27a1-fe0f","1f9d1-1f3fc-200d-1f9af-200d-27a1-fe0f","1f9d1-1f3fd-200d-1f9af-200d-27a1-fe0f","1f9d1-1f3fe-200d-1f9af-200d-27a1-fe0f","1f9d1-1f3ff-200d-1f9af-200d-27a1-fe0f"],a:"15.1"},{n:["man","blind","accessibility","man with white cane"],u:"1f468-200d-1f9af",v:["1f468-1f3fb-200d-1f9af","1f468-1f3fc-200d-1f9af","1f468-1f3fd-200d-1f9af","1f468-1f3fe-200d-1f9af","1f468-1f3ff-200d-1f9af"],a:"12"},{n:["man","blind","accessibility","man with white cane","man with white cane facing right"],u:"1f468-200d-1f9af-200d-27a1-fe0f",v:["1f468-1f3fb-200d-1f9af-200d-27a1-fe0f","1f468-1f3fc-200d-1f9af-200d-27a1-fe0f","1f468-1f3fd-200d-1f9af-200d-27a1-fe0f","1f468-1f3fe-200d-1f9af-200d-27a1-fe0f","1f468-1f3ff-200d-1f9af-200d-27a1-fe0f"],a:"15.1"},{n:["blind","woman","accessibility","woman with white cane"],u:"1f469-200d-1f9af",v:["1f469-1f3fb-200d-1f9af","1f469-1f3fc-200d-1f9af","1f469-1f3fd-200d-1f9af","1f469-1f3fe-200d-1f9af","1f469-1f3ff-200d-1f9af"],a:"12"},{n:["blind","woman","accessibility","woman with white cane","woman with white cane facing right"],u:"1f469-200d-1f9af-200d-27a1-fe0f",v:["1f469-1f3fb-200d-1f9af-200d-27a1-fe0f","1f469-1f3fc-200d-1f9af-200d-27a1-fe0f","1f469-1f3fd-200d-1f9af-200d-27a1-fe0f","1f469-1f3fe-200d-1f9af-200d-27a1-fe0f","1f469-1f3ff-200d-1f9af-200d-27a1-fe0f"],a:"15.1"},{n:["wheelchair","accessibility","person in motorized wheelchair"],u:"1f9d1-200d-1f9bc",v:["1f9d1-1f3fb-200d-1f9bc","1f9d1-1f3fc-200d-1f9bc","1f9d1-1f3fd-200d-1f9bc","1f9d1-1f3fe-200d-1f9bc","1f9d1-1f3ff-200d-1f9bc"],a:"12.1"},{n:["wheelchair","accessibility","person in motorized wheelchair","person in motorized wheelchair facing right"],u:"1f9d1-200d-1f9bc-200d-27a1-fe0f",v:["1f9d1-1f3fb-200d-1f9bc-200d-27a1-fe0f","1f9d1-1f3fc-200d-1f9bc-200d-27a1-fe0f","1f9d1-1f3fd-200d-1f9bc-200d-27a1-fe0f","1f9d1-1f3fe-200d-1f9bc-200d-27a1-fe0f","1f9d1-1f3ff-200d-1f9bc-200d-27a1-fe0f"],a:"15.1"},{n:["man","wheelchair","accessibility","man in motorized wheelchair"],u:"1f468-200d-1f9bc",v:["1f468-1f3fb-200d-1f9bc","1f468-1f3fc-200d-1f9bc","1f468-1f3fd-200d-1f9bc","1f468-1f3fe-200d-1f9bc","1f468-1f3ff-200d-1f9bc"],a:"12"},{n:["man","wheelchair","accessibility","man in motorized wheelchair","man in motorized wheelchair facing right"],u:"1f468-200d-1f9bc-200d-27a1-fe0f",v:["1f468-1f3fb-200d-1f9bc-200d-27a1-fe0f","1f468-1f3fc-200d-1f9bc-200d-27a1-fe0f","1f468-1f3fd-200d-1f9bc-200d-27a1-fe0f","1f468-1f3fe-200d-1f9bc-200d-27a1-fe0f","1f468-1f3ff-200d-1f9bc-200d-27a1-fe0f"],a:"15.1"},{n:["woman","wheelchair","accessibility","woman in motorized wheelchair"],u:"1f469-200d-1f9bc",v:["1f469-1f3fb-200d-1f9bc","1f469-1f3fc-200d-1f9bc","1f469-1f3fd-200d-1f9bc","1f469-1f3fe-200d-1f9bc","1f469-1f3ff-200d-1f9bc"],a:"12"},{n:["woman","wheelchair","accessibility","woman in motorized wheelchair","woman in motorized wheelchair facing right"],u:"1f469-200d-1f9bc-200d-27a1-fe0f",v:["1f469-1f3fb-200d-1f9bc-200d-27a1-fe0f","1f469-1f3fc-200d-1f9bc-200d-27a1-fe0f","1f469-1f3fd-200d-1f9bc-200d-27a1-fe0f","1f469-1f3fe-200d-1f9bc-200d-27a1-fe0f","1f469-1f3ff-200d-1f9bc-200d-27a1-fe0f"],a:"15.1"},{n:["wheelchair","accessibility","person in manual wheelchair"],u:"1f9d1-200d-1f9bd",v:["1f9d1-1f3fb-200d-1f9bd","1f9d1-1f3fc-200d-1f9bd","1f9d1-1f3fd-200d-1f9bd","1f9d1-1f3fe-200d-1f9bd","1f9d1-1f3ff-200d-1f9bd"],a:"12.1"},{n:["wheelchair","accessibility","person in manual wheelchair","person in manual wheelchair facing right"],u:"1f9d1-200d-1f9bd-200d-27a1-fe0f",v:["1f9d1-1f3fb-200d-1f9bd-200d-27a1-fe0f","1f9d1-1f3fc-200d-1f9bd-200d-27a1-fe0f","1f9d1-1f3fd-200d-1f9bd-200d-27a1-fe0f","1f9d1-1f3fe-200d-1f9bd-200d-27a1-fe0f","1f9d1-1f3ff-200d-1f9bd-200d-27a1-fe0f"],a:"15.1"},{n:["man","wheelchair","accessibility","man in manual wheelchair"],u:"1f468-200d-1f9bd",v:["1f468-1f3fb-200d-1f9bd","1f468-1f3fc-200d-1f9bd","1f468-1f3fd-200d-1f9bd","1f468-1f3fe-200d-1f9bd","1f468-1f3ff-200d-1f9bd"],a:"12"},{n:["man","wheelchair","accessibility","man in manual wheelchair","man in manual wheelchair facing right"],u:"1f468-200d-1f9bd-200d-27a1-fe0f",v:["1f468-1f3fb-200d-1f9bd-200d-27a1-fe0f","1f468-1f3fc-200d-1f9bd-200d-27a1-fe0f","1f468-1f3fd-200d-1f9bd-200d-27a1-fe0f","1f468-1f3fe-200d-1f9bd-200d-27a1-fe0f","1f468-1f3ff-200d-1f9bd-200d-27a1-fe0f"],a:"15.1"},{n:["woman","wheelchair","accessibility","woman in manual wheelchair"],u:"1f469-200d-1f9bd",v:["1f469-1f3fb-200d-1f9bd","1f469-1f3fc-200d-1f9bd","1f469-1f3fd-200d-1f9bd","1f469-1f3fe-200d-1f9bd","1f469-1f3ff-200d-1f9bd"],a:"12"},{n:["woman","wheelchair","accessibility","woman in manual wheelchair","woman in manual wheelchair facing right"],u:"1f469-200d-1f9bd-200d-27a1-fe0f",v:["1f469-1f3fb-200d-1f9bd-200d-27a1-fe0f","1f469-1f3fc-200d-1f9bd-200d-27a1-fe0f","1f469-1f3fd-200d-1f9bd-200d-27a1-fe0f","1f469-1f3fe-200d-1f9bd-200d-27a1-fe0f","1f469-1f3ff-200d-1f9bd-200d-27a1-fe0f"],a:"15.1"},{n:["running","marathon","person running"],u:"1f3c3",v:["1f3c3-1f3fb","1f3c3-1f3fc","1f3c3-1f3fd","1f3c3-1f3fe","1f3c3-1f3ff"],a:"0.6"},{n:["man","racing","running","marathon","man running"],u:"1f3c3-200d-2642-fe0f",v:["1f3c3-1f3fb-200d-2642-fe0f","1f3c3-1f3fc-200d-2642-fe0f","1f3c3-1f3fd-200d-2642-fe0f","1f3c3-1f3fe-200d-2642-fe0f","1f3c3-1f3ff-200d-2642-fe0f"],a:"4"},{n:["woman","racing","running","marathon","woman running"],u:"1f3c3-200d-2640-fe0f",v:["1f3c3-1f3fb-200d-2640-fe0f","1f3c3-1f3fc-200d-2640-fe0f","1f3c3-1f3fd-200d-2640-fe0f","1f3c3-1f3fe-200d-2640-fe0f","1f3c3-1f3ff-200d-2640-fe0f"],a:"4"},{n:["running","marathon","person running","person running facing right"],u:"1f3c3-200d-27a1-fe0f",v:["1f3c3-1f3fb-200d-27a1-fe0f","1f3c3-1f3fc-200d-27a1-fe0f","1f3c3-1f3fd-200d-27a1-fe0f","1f3c3-1f3fe-200d-27a1-fe0f","1f3c3-1f3ff-200d-27a1-fe0f"],a:"15.1"},{n:["woman","racing","running","marathon","woman running facing right"],u:"1f3c3-200d-2640-fe0f-200d-27a1-fe0f",v:["1f3c3-1f3fb-200d-2640-fe0f-200d-27a1-fe0f","1f3c3-1f3fc-200d-2640-fe0f-200d-27a1-fe0f","1f3c3-1f3fd-200d-2640-fe0f-200d-27a1-fe0f","1f3c3-1f3fe-200d-2640-fe0f-200d-27a1-fe0f","1f3c3-1f3ff-200d-2640-fe0f-200d-27a1-fe0f"],a:"15.1"},{n:["man","racing","running","marathon","man running facing right"],u:"1f3c3-200d-2642-fe0f-200d-27a1-fe0f",v:["1f3c3-1f3fb-200d-2642-fe0f-200d-27a1-fe0f","1f3c3-1f3fc-200d-2642-fe0f-200d-27a1-fe0f","1f3c3-1f3fd-200d-2642-fe0f-200d-27a1-fe0f","1f3c3-1f3fe-200d-2642-fe0f-200d-27a1-fe0f","1f3c3-1f3ff-200d-2642-fe0f-200d-27a1-fe0f"],a:"15.1"},{n:["dance","woman","dancing","woman dancing"],u:"1f483",v:["1f483-1f3fb","1f483-1f3fc","1f483-1f3fd","1f483-1f3fe","1f483-1f3ff"],a:"0.6"},{n:["man","dance","dancing","man dancing"],u:"1f57a",v:["1f57a-1f3fb","1f57a-1f3fc","1f57a-1f3fd","1f57a-1f3fe","1f57a-1f3ff"],a:"3"},{n:["suit","person","business","person in suit levitating"],u:"1f574-fe0f",v:["1f574-1f3fb","1f574-1f3fc","1f574-1f3fd","1f574-1f3fe","1f574-1f3ff"],a:"0.7"},{n:["dancer","partying","bunny ear","people with bunny ears"],u:"1f46f",a:"0.6"},{n:["men","dancer","partying","bunny ear","men with bunny ears"],u:"1f46f-200d-2642-fe0f",a:"4"},{n:["women","dancer","partying","bunny ear","women with bunny ears"],u:"1f46f-200d-2640-fe0f",a:"4"},{n:["sauna","steam room","person in steamy room"],u:"1f9d6",v:["1f9d6-1f3fb","1f9d6-1f3fc","1f9d6-1f3fd","1f9d6-1f3fe","1f9d6-1f3ff"],a:"5"},{n:["sauna","steam room","man in steamy room"],u:"1f9d6-200d-2642-fe0f",v:["1f9d6-1f3fb-200d-2642-fe0f","1f9d6-1f3fc-200d-2642-fe0f","1f9d6-1f3fd-200d-2642-fe0f","1f9d6-1f3fe-200d-2642-fe0f","1f9d6-1f3ff-200d-2642-fe0f"],a:"5"},{n:["sauna","steam room","woman in steamy room"],u:"1f9d6-200d-2640-fe0f",v:["1f9d6-1f3fb-200d-2640-fe0f","1f9d6-1f3fc-200d-2640-fe0f","1f9d6-1f3fd-200d-2640-fe0f","1f9d6-1f3fe-200d-2640-fe0f","1f9d6-1f3ff-200d-2640-fe0f"],a:"5"},{n:["climber","person climbing"],u:"1f9d7",v:["1f9d7-1f3fb","1f9d7-1f3fc","1f9d7-1f3fd","1f9d7-1f3fe","1f9d7-1f3ff"],a:"5"},{n:["climber","man climbing"],u:"1f9d7-200d-2642-fe0f",v:["1f9d7-1f3fb-200d-2642-fe0f","1f9d7-1f3fc-200d-2642-fe0f","1f9d7-1f3fd-200d-2642-fe0f","1f9d7-1f3fe-200d-2642-fe0f","1f9d7-1f3ff-200d-2642-fe0f"],a:"5"},{n:["climber","woman climbing"],u:"1f9d7-200d-2640-fe0f",v:["1f9d7-1f3fb-200d-2640-fe0f","1f9d7-1f3fc-200d-2640-fe0f","1f9d7-1f3fd-200d-2640-fe0f","1f9d7-1f3fe-200d-2640-fe0f","1f9d7-1f3ff-200d-2640-fe0f"],a:"5"},{n:["sword","fencer","fencing","person fencing"],u:"1f93a",a:"3"},{n:["horse","jockey","racing","racehorse","horse racing"],u:"1f3c7",v:["1f3c7-1f3fb","1f3c7-1f3fc","1f3c7-1f3fd","1f3c7-1f3fe","1f3c7-1f3ff"],a:"1"},{n:["ski","snow","skier"],u:"26f7-fe0f",a:"0.7"},{n:["ski","snow","snowboard","snowboarder"],u:"1f3c2",v:["1f3c2-1f3fb","1f3c2-1f3fc","1f3c2-1f3fd","1f3c2-1f3fe","1f3c2-1f3ff"],a:"0.6"},{n:["ball","golf","person golfing"],u:"1f3cc-fe0f",v:["1f3cc-1f3fb","1f3cc-1f3fc","1f3cc-1f3fd","1f3cc-1f3fe","1f3cc-1f3ff"],a:"0.7"},{n:["man","golf","man golfing"],u:"1f3cc-fe0f-200d-2642-fe0f",v:["1f3cc-1f3fb-200d-2642-fe0f","1f3cc-1f3fc-200d-2642-fe0f","1f3cc-1f3fd-200d-2642-fe0f","1f3cc-1f3fe-200d-2642-fe0f","1f3cc-1f3ff-200d-2642-fe0f"],a:"4"},{n:["golf","woman","woman golfing"],u:"1f3cc-fe0f-200d-2640-fe0f",v:["1f3cc-1f3fb-200d-2640-fe0f","1f3cc-1f3fc-200d-2640-fe0f","1f3cc-1f3fd-200d-2640-fe0f","1f3cc-1f3fe-200d-2640-fe0f","1f3cc-1f3ff-200d-2640-fe0f"],a:"4"},{n:["surfing","person surfing"],u:"1f3c4",v:["1f3c4-1f3fb","1f3c4-1f3fc","1f3c4-1f3fd","1f3c4-1f3fe","1f3c4-1f3ff"],a:"0.6"},{n:["man","surfing","man surfing"],u:"1f3c4-200d-2642-fe0f",v:["1f3c4-1f3fb-200d-2642-fe0f","1f3c4-1f3fc-200d-2642-fe0f","1f3c4-1f3fd-200d-2642-fe0f","1f3c4-1f3fe-200d-2642-fe0f","1f3c4-1f3ff-200d-2642-fe0f"],a:"4"},{n:["woman","surfing","woman surfing"],u:"1f3c4-200d-2640-fe0f",v:["1f3c4-1f3fb-200d-2640-fe0f","1f3c4-1f3fc-200d-2640-fe0f","1f3c4-1f3fd-200d-2640-fe0f","1f3c4-1f3fe-200d-2640-fe0f","1f3c4-1f3ff-200d-2640-fe0f"],a:"4"},{n:["boat","rowboat","person rowing boat"],u:"1f6a3",v:["1f6a3-1f3fb","1f6a3-1f3fc","1f6a3-1f3fd","1f6a3-1f3fe","1f6a3-1f3ff"],a:"1"},{n:["man","boat","rowboat","man rowing boat"],u:"1f6a3-200d-2642-fe0f",v:["1f6a3-1f3fb-200d-2642-fe0f","1f6a3-1f3fc-200d-2642-fe0f","1f6a3-1f3fd-200d-2642-fe0f","1f6a3-1f3fe-200d-2642-fe0f","1f6a3-1f3ff-200d-2642-fe0f"],a:"4"},{n:["boat","woman","rowboat","woman rowing boat"],u:"1f6a3-200d-2640-fe0f",v:["1f6a3-1f3fb-200d-2640-fe0f","1f6a3-1f3fc-200d-2640-fe0f","1f6a3-1f3fd-200d-2640-fe0f","1f6a3-1f3fe-200d-2640-fe0f","1f6a3-1f3ff-200d-2640-fe0f"],a:"4"},{n:["swim","person swimming"],u:"1f3ca",v:["1f3ca-1f3fb","1f3ca-1f3fc","1f3ca-1f3fd","1f3ca-1f3fe","1f3ca-1f3ff"],a:"0.6"},{n:["man","swim","man swimming"],u:"1f3ca-200d-2642-fe0f",v:["1f3ca-1f3fb-200d-2642-fe0f","1f3ca-1f3fc-200d-2642-fe0f","1f3ca-1f3fd-200d-2642-fe0f","1f3ca-1f3fe-200d-2642-fe0f","1f3ca-1f3ff-200d-2642-fe0f"],a:"4"},{n:["swim","woman","woman swimming"],u:"1f3ca-200d-2640-fe0f",v:["1f3ca-1f3fb-200d-2640-fe0f","1f3ca-1f3fc-200d-2640-fe0f","1f3ca-1f3fd-200d-2640-fe0f","1f3ca-1f3fe-200d-2640-fe0f","1f3ca-1f3ff-200d-2640-fe0f"],a:"4"},{n:["ball","person bouncing ball"],u:"26f9-fe0f",v:["26f9-1f3fb","26f9-1f3fc","26f9-1f3fd","26f9-1f3fe","26f9-1f3ff"],a:"0.7"},{n:["man","ball","man bouncing ball"],u:"26f9-fe0f-200d-2642-fe0f",v:["26f9-1f3fb-200d-2642-fe0f","26f9-1f3fc-200d-2642-fe0f","26f9-1f3fd-200d-2642-fe0f","26f9-1f3fe-200d-2642-fe0f","26f9-1f3ff-200d-2642-fe0f"],a:"4"},{n:["ball","woman","woman bouncing ball"],u:"26f9-fe0f-200d-2640-fe0f",v:["26f9-1f3fb-200d-2640-fe0f","26f9-1f3fc-200d-2640-fe0f","26f9-1f3fd-200d-2640-fe0f","26f9-1f3fe-200d-2640-fe0f","26f9-1f3ff-200d-2640-fe0f"],a:"4"},{n:["lifter","weight","person lifting weights"],u:"1f3cb-fe0f",v:["1f3cb-1f3fb","1f3cb-1f3fc","1f3cb-1f3fd","1f3cb-1f3fe","1f3cb-1f3ff"],a:"0.7"},{n:["man","weight lifter","man lifting weights"],u:"1f3cb-fe0f-200d-2642-fe0f",v:["1f3cb-1f3fb-200d-2642-fe0f","1f3cb-1f3fc-200d-2642-fe0f","1f3cb-1f3fd-200d-2642-fe0f","1f3cb-1f3fe-200d-2642-fe0f","1f3cb-1f3ff-200d-2642-fe0f"],a:"4"},{n:["woman","weight lifter","woman lifting weights"],u:"1f3cb-fe0f-200d-2640-fe0f",v:["1f3cb-1f3fb-200d-2640-fe0f","1f3cb-1f3fc-200d-2640-fe0f","1f3cb-1f3fd-200d-2640-fe0f","1f3cb-1f3fe-200d-2640-fe0f","1f3cb-1f3ff-200d-2640-fe0f"],a:"4"},{n:["biking","bicycle","cyclist","person biking"],u:"1f6b4",v:["1f6b4-1f3fb","1f6b4-1f3fc","1f6b4-1f3fd","1f6b4-1f3fe","1f6b4-1f3ff"],a:"1"},{n:["man","biking","bicycle","cyclist","man biking"],u:"1f6b4-200d-2642-fe0f",v:["1f6b4-1f3fb-200d-2642-fe0f","1f6b4-1f3fc-200d-2642-fe0f","1f6b4-1f3fd-200d-2642-fe0f","1f6b4-1f3fe-200d-2642-fe0f","1f6b4-1f3ff-200d-2642-fe0f"],a:"4"},{n:["woman","biking","bicycle","cyclist","woman biking"],u:"1f6b4-200d-2640-fe0f",v:["1f6b4-1f3fb-200d-2640-fe0f","1f6b4-1f3fc-200d-2640-fe0f","1f6b4-1f3fd-200d-2640-fe0f","1f6b4-1f3fe-200d-2640-fe0f","1f6b4-1f3ff-200d-2640-fe0f"],a:"4"},{n:["bike","bicycle","cyclist","mountain","bicyclist","person mountain biking"],u:"1f6b5",v:["1f6b5-1f3fb","1f6b5-1f3fc","1f6b5-1f3fd","1f6b5-1f3fe","1f6b5-1f3ff"],a:"1"},{n:["man","bike","bicycle","cyclist","mountain","man mountain biking"],u:"1f6b5-200d-2642-fe0f",v:["1f6b5-1f3fb-200d-2642-fe0f","1f6b5-1f3fc-200d-2642-fe0f","1f6b5-1f3fd-200d-2642-fe0f","1f6b5-1f3fe-200d-2642-fe0f","1f6b5-1f3ff-200d-2642-fe0f"],a:"4"},{n:["bike","woman","biking","bicycle","cyclist","mountain","woman mountain biking"],u:"1f6b5-200d-2640-fe0f",v:["1f6b5-1f3fb-200d-2640-fe0f","1f6b5-1f3fc-200d-2640-fe0f","1f6b5-1f3fd-200d-2640-fe0f","1f6b5-1f3fe-200d-2640-fe0f","1f6b5-1f3ff-200d-2640-fe0f"],a:"4"},{n:["cartwheel","gymnastics","person cartwheeling"],u:"1f938",v:["1f938-1f3fb","1f938-1f3fc","1f938-1f3fd","1f938-1f3fe","1f938-1f3ff"],a:"3"},{n:["man","cartwheel","gymnastics","man cartwheeling"],u:"1f938-200d-2642-fe0f",v:["1f938-1f3fb-200d-2642-fe0f","1f938-1f3fc-200d-2642-fe0f","1f938-1f3fd-200d-2642-fe0f","1f938-1f3fe-200d-2642-fe0f","1f938-1f3ff-200d-2642-fe0f"],a:"4"},{n:["woman","cartwheel","gymnastics","woman cartwheeling"],u:"1f938-200d-2640-fe0f",v:["1f938-1f3fb-200d-2640-fe0f","1f938-1f3fc-200d-2640-fe0f","1f938-1f3fd-200d-2640-fe0f","1f938-1f3fe-200d-2640-fe0f","1f938-1f3ff-200d-2640-fe0f"],a:"4"},{n:["wrestle","wrestler","people wrestling"],u:"1f93c",a:"3"},{n:["men","wrestle","men wrestling"],u:"1f93c-200d-2642-fe0f",a:"4"},{n:["women","wrestle","women wrestling"],u:"1f93c-200d-2640-fe0f",a:"4"},{n:["polo","water","person playing water polo"],u:"1f93d",v:["1f93d-1f3fb","1f93d-1f3fc","1f93d-1f3fd","1f93d-1f3fe","1f93d-1f3ff"],a:"3"},{n:["man","water polo","man playing water polo"],u:"1f93d-200d-2642-fe0f",v:["1f93d-1f3fb-200d-2642-fe0f","1f93d-1f3fc-200d-2642-fe0f","1f93d-1f3fd-200d-2642-fe0f","1f93d-1f3fe-200d-2642-fe0f","1f93d-1f3ff-200d-2642-fe0f"],a:"4"},{n:["woman","water polo","woman playing water polo"],u:"1f93d-200d-2640-fe0f",v:["1f93d-1f3fb-200d-2640-fe0f","1f93d-1f3fc-200d-2640-fe0f","1f93d-1f3fd-200d-2640-fe0f","1f93d-1f3fe-200d-2640-fe0f","1f93d-1f3ff-200d-2640-fe0f"],a:"4"},{n:["ball","handball","person playing handball"],u:"1f93e",v:["1f93e-1f3fb","1f93e-1f3fc","1f93e-1f3fd","1f93e-1f3fe","1f93e-1f3ff"],a:"3"},{n:["man","handball","man playing handball"],u:"1f93e-200d-2642-fe0f",v:["1f93e-1f3fb-200d-2642-fe0f","1f93e-1f3fc-200d-2642-fe0f","1f93e-1f3fd-200d-2642-fe0f","1f93e-1f3fe-200d-2642-fe0f","1f93e-1f3ff-200d-2642-fe0f"],a:"4"},{n:["woman","handball","woman playing handball"],u:"1f93e-200d-2640-fe0f",v:["1f93e-1f3fb-200d-2640-fe0f","1f93e-1f3fc-200d-2640-fe0f","1f93e-1f3fd-200d-2640-fe0f","1f93e-1f3fe-200d-2640-fe0f","1f93e-1f3ff-200d-2640-fe0f"],a:"4"},{n:["skill","juggle","balance","multitask","person juggling"],u:"1f939",v:["1f939-1f3fb","1f939-1f3fc","1f939-1f3fd","1f939-1f3fe","1f939-1f3ff"],a:"3"},{n:["man","juggling","multitask","man juggling"],u:"1f939-200d-2642-fe0f",v:["1f939-1f3fb-200d-2642-fe0f","1f939-1f3fc-200d-2642-fe0f","1f939-1f3fd-200d-2642-fe0f","1f939-1f3fe-200d-2642-fe0f","1f939-1f3ff-200d-2642-fe0f"],a:"4"},{n:["woman","juggling","multitask","woman juggling"],u:"1f939-200d-2640-fe0f",v:["1f939-1f3fb-200d-2640-fe0f","1f939-1f3fc-200d-2640-fe0f","1f939-1f3fd-200d-2640-fe0f","1f939-1f3fe-200d-2640-fe0f","1f939-1f3ff-200d-2640-fe0f"],a:"4"},{n:["yoga","meditation","person in lotus position"],u:"1f9d8",v:["1f9d8-1f3fb","1f9d8-1f3fc","1f9d8-1f3fd","1f9d8-1f3fe","1f9d8-1f3ff"],a:"5"},{n:["yoga","meditation","man in lotus position"],u:"1f9d8-200d-2642-fe0f",v:["1f9d8-1f3fb-200d-2642-fe0f","1f9d8-1f3fc-200d-2642-fe0f","1f9d8-1f3fd-200d-2642-fe0f","1f9d8-1f3fe-200d-2642-fe0f","1f9d8-1f3ff-200d-2642-fe0f"],a:"5"},{n:["yoga","meditation","woman in lotus position"],u:"1f9d8-200d-2640-fe0f",v:["1f9d8-1f3fb-200d-2640-fe0f","1f9d8-1f3fc-200d-2640-fe0f","1f9d8-1f3fd-200d-2640-fe0f","1f9d8-1f3fe-200d-2640-fe0f","1f9d8-1f3ff-200d-2640-fe0f"],a:"5"},{n:["bath","bathtub","person taking bath"],u:"1f6c0",v:["1f6c0-1f3fb","1f6c0-1f3fc","1f6c0-1f3fd","1f6c0-1f3fe","1f6c0-1f3ff"],a:"0.6"},{n:["hotel","sleep","good night","person in bed"],u:"1f6cc",v:["1f6cc-1f3fb","1f6cc-1f3fc","1f6cc-1f3fd","1f6cc-1f3fe","1f6cc-1f3ff"],a:"1"},{n:["hand","hold","couple","person","holding hands","people holding hands"],u:"1f9d1-200d-1f91d-200d-1f9d1",v:["1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fb","1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fc","1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fd","1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fe","1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3ff","1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fb","1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fc","1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fd","1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fe","1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3ff","1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fb","1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fc","1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fd","1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fe","1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3ff","1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fb","1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fc","1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fd","1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fe","1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3ff","1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fb","1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fc","1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fd","1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fe","1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3ff"],a:"12"},{n:["hand","women","couple","holding hands","women holding hands"],u:"1f46d",v:["1f46d-1f3fb","1f46d-1f3fc","1f46d-1f3fd","1f46d-1f3fe","1f46d-1f3ff","1f469-1f3fb-200d-1f91d-200d-1f469-1f3fc","1f469-1f3fb-200d-1f91d-200d-1f469-1f3fd","1f469-1f3fb-200d-1f91d-200d-1f469-1f3fe","1f469-1f3fb-200d-1f91d-200d-1f469-1f3ff","1f469-1f3fc-200d-1f91d-200d-1f469-1f3fb","1f469-1f3fc-200d-1f91d-200d-1f469-1f3fd","1f469-1f3fc-200d-1f91d-200d-1f469-1f3fe","1f469-1f3fc-200d-1f91d-200d-1f469-1f3ff","1f469-1f3fd-200d-1f91d-200d-1f469-1f3fb","1f469-1f3fd-200d-1f91d-200d-1f469-1f3fc","1f469-1f3fd-200d-1f91d-200d-1f469-1f3fe","1f469-1f3fd-200d-1f91d-200d-1f469-1f3ff","1f469-1f3fe-200d-1f91d-200d-1f469-1f3fb","1f469-1f3fe-200d-1f91d-200d-1f469-1f3fc","1f469-1f3fe-200d-1f91d-200d-1f469-1f3fd","1f469-1f3fe-200d-1f91d-200d-1f469-1f3ff","1f469-1f3ff-200d-1f91d-200d-1f469-1f3fb","1f469-1f3ff-200d-1f91d-200d-1f469-1f3fc","1f469-1f3ff-200d-1f91d-200d-1f469-1f3fd","1f469-1f3ff-200d-1f91d-200d-1f469-1f3fe"],a:"1"},{n:["man","hand","hold","woman","couple","holding hands","woman and man holding hands"],u:"1f46b",v:["1f46b-1f3fb","1f46b-1f3fc","1f46b-1f3fd","1f46b-1f3fe","1f46b-1f3ff","1f469-1f3fb-200d-1f91d-200d-1f468-1f3fc","1f469-1f3fb-200d-1f91d-200d-1f468-1f3fd","1f469-1f3fb-200d-1f91d-200d-1f468-1f3fe","1f469-1f3fb-200d-1f91d-200d-1f468-1f3ff","1f469-1f3fc-200d-1f91d-200d-1f468-1f3fb","1f469-1f3fc-200d-1f91d-200d-1f468-1f3fd","1f469-1f3fc-200d-1f91d-200d-1f468-1f3fe","1f469-1f3fc-200d-1f91d-200d-1f468-1f3ff","1f469-1f3fd-200d-1f91d-200d-1f468-1f3fb","1f469-1f3fd-200d-1f91d-200d-1f468-1f3fc","1f469-1f3fd-200d-1f91d-200d-1f468-1f3fe","1f469-1f3fd-200d-1f91d-200d-1f468-1f3ff","1f469-1f3fe-200d-1f91d-200d-1f468-1f3fb","1f469-1f3fe-200d-1f91d-200d-1f468-1f3fc","1f469-1f3fe-200d-1f91d-200d-1f468-1f3fd","1f469-1f3fe-200d-1f91d-200d-1f468-1f3ff","1f469-1f3ff-200d-1f91d-200d-1f468-1f3fb","1f469-1f3ff-200d-1f91d-200d-1f468-1f3fc","1f469-1f3ff-200d-1f91d-200d-1f468-1f3fd","1f469-1f3ff-200d-1f91d-200d-1f468-1f3fe"],a:"0.6"},{n:["man","men","twins","couple","gemini","zodiac","holding hands","men holding hands"],u:"1f46c",v:["1f46c-1f3fb","1f46c-1f3fc","1f46c-1f3fd","1f46c-1f3fe","1f46c-1f3ff","1f468-1f3fb-200d-1f91d-200d-1f468-1f3fc","1f468-1f3fb-200d-1f91d-200d-1f468-1f3fd","1f468-1f3fb-200d-1f91d-200d-1f468-1f3fe","1f468-1f3fb-200d-1f91d-200d-1f468-1f3ff","1f468-1f3fc-200d-1f91d-200d-1f468-1f3fb","1f468-1f3fc-200d-1f91d-200d-1f468-1f3fd","1f468-1f3fc-200d-1f91d-200d-1f468-1f3fe","1f468-1f3fc-200d-1f91d-200d-1f468-1f3ff","1f468-1f3fd-200d-1f91d-200d-1f468-1f3fb","1f468-1f3fd-200d-1f91d-200d-1f468-1f3fc","1f468-1f3fd-200d-1f91d-200d-1f468-1f3fe","1f468-1f3fd-200d-1f91d-200d-1f468-1f3ff","1f468-1f3fe-200d-1f91d-200d-1f468-1f3fb","1f468-1f3fe-200d-1f91d-200d-1f468-1f3fc","1f468-1f3fe-200d-1f91d-200d-1f468-1f3fd","1f468-1f3fe-200d-1f91d-200d-1f468-1f3ff","1f468-1f3ff-200d-1f91d-200d-1f468-1f3fb","1f468-1f3ff-200d-1f91d-200d-1f468-1f3fc","1f468-1f3ff-200d-1f91d-200d-1f468-1f3fd","1f468-1f3ff-200d-1f91d-200d-1f468-1f3fe"],a:"1"},{n:["kiss","couple"],u:"1f48f",v:["1f48f-1f3fb","1f48f-1f3fc","1f48f-1f3fd","1f48f-1f3fe","1f48f-1f3ff","1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe"],a:"0.6"},{n:["man","kiss","woman","couple","kiss: woman, man"],u:"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468",v:["1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff"],a:"2"},{n:["man","kiss","couple","kiss: man, man"],u:"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468",v:["1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff"],a:"2"},{n:["kiss","woman","couple","kiss: woman, woman"],u:"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469",v:["1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff"],a:"2"},{n:["love","couple","couple with heart"],u:"1f491",v:["1f491-1f3fb","1f491-1f3fc","1f491-1f3fd","1f491-1f3fe","1f491-1f3ff","1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fc","1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fd","1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fe","1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3ff","1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fb","1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fd","1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fe","1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3ff","1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fb","1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fc","1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fe","1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3ff","1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fb","1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fc","1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fd","1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3ff","1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fb","1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fc","1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fd","1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fe"],a:"0.6"},{n:["man","love","woman","couple","couple with heart","couple with heart: woman, man"],u:"1f469-200d-2764-fe0f-200d-1f468",v:["1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff"],a:"2"},{n:["man","love","couple","couple with heart","couple with heart: man, man"],u:"1f468-200d-2764-fe0f-200d-1f468",v:["1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff"],a:"2"},{n:["love","woman","couple","couple with heart","couple with heart: woman, woman"],u:"1f469-200d-2764-fe0f-200d-1f469",v:["1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fb","1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fc","1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fd","1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fe","1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3ff","1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fb","1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fc","1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fd","1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fe","1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3ff","1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fb","1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fc","1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fd","1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fe","1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3ff","1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fb","1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fc","1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fd","1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fe","1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3ff","1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fb","1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fc","1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fd","1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fe","1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3ff"],a:"2"},{n:["boy","man","woman","family","family: man, woman, boy"],u:"1f468-200d-1f469-200d-1f466",a:"2"},{n:["man","girl","woman","family","family: man, woman, girl"],u:"1f468-200d-1f469-200d-1f467",a:"2"},{n:["boy","man","girl","woman","family","family: man, woman, girl, boy"],u:"1f468-200d-1f469-200d-1f467-200d-1f466",a:"2"},{n:["boy","man","woman","family","family: man, woman, boy, boy"],u:"1f468-200d-1f469-200d-1f466-200d-1f466",a:"2"},{n:["man","girl","woman","family","family: man, woman, girl, girl"],u:"1f468-200d-1f469-200d-1f467-200d-1f467",a:"2"},{n:["boy","man","family","family: man, man, boy"],u:"1f468-200d-1f468-200d-1f466",a:"2"},{n:["man","girl","family","family: man, man, girl"],u:"1f468-200d-1f468-200d-1f467",a:"2"},{n:["boy","man","girl","family","family: man, man, girl, boy"],u:"1f468-200d-1f468-200d-1f467-200d-1f466",a:"2"},{n:["boy","man","family","family: man, man, boy, boy"],u:"1f468-200d-1f468-200d-1f466-200d-1f466",a:"2"},{n:["man","girl","family","family: man, man, girl, girl"],u:"1f468-200d-1f468-200d-1f467-200d-1f467",a:"2"},{n:["boy","woman","family","family: woman, woman, boy"],u:"1f469-200d-1f469-200d-1f466",a:"2"},{n:["girl","woman","family","family: woman, woman, girl"],u:"1f469-200d-1f469-200d-1f467",a:"2"},{n:["boy","girl","woman","family","family: woman, woman, girl, boy"],u:"1f469-200d-1f469-200d-1f467-200d-1f466",a:"2"},{n:["boy","woman","family","family: woman, woman, boy, boy"],u:"1f469-200d-1f469-200d-1f466-200d-1f466",a:"2"},{n:["girl","woman","family","family: woman, woman, girl, girl"],u:"1f469-200d-1f469-200d-1f467-200d-1f467",a:"2"},{n:["boy","man","family","family: man, boy"],u:"1f468-200d-1f466",a:"4"},{n:["boy","man","family","family: man, boy, boy"],u:"1f468-200d-1f466-200d-1f466",a:"4"},{n:["man","girl","family","family: man, girl"],u:"1f468-200d-1f467",a:"4"},{n:["boy","man","girl","family","family: man, girl, boy"],u:"1f468-200d-1f467-200d-1f466",a:"4"},{n:["man","girl","family","family: man, girl, girl"],u:"1f468-200d-1f467-200d-1f467",a:"4"},{n:["boy","woman","family","family: woman, boy"],u:"1f469-200d-1f466",a:"4"},{n:["boy","woman","family","family: woman, boy, boy"],u:"1f469-200d-1f466-200d-1f466",a:"4"},{n:["girl","woman","family","family: woman, girl"],u:"1f469-200d-1f467",a:"4"},{n:["boy","girl","woman","family","family: woman, girl, boy"],u:"1f469-200d-1f467-200d-1f466",a:"4"},{n:["girl","woman","family","family: woman, girl, girl"],u:"1f469-200d-1f467-200d-1f467",a:"4"},{n:["face","head","speak","speaking","silhouette","speaking head"],u:"1f5e3-fe0f",a:"0.7"},{n:["bust","silhouette","bust in silhouette"],u:"1f464",a:"0.6"},{n:["bust","silhouette","busts in silhouette"],u:"1f465",a:"1"},{n:["hug","hello","thanks","goodbye","people hugging"],u:"1fac2",a:"13"},{n:["family"],u:"1f46a",a:"0.6"},{n:["family: adult, adult, child"],u:"1f9d1-200d-1f9d1-200d-1f9d2",a:"15.1"},{n:["family: adult, adult, child, child"],u:"1f9d1-200d-1f9d1-200d-1f9d2-200d-1f9d2",a:"15.1"},{n:["family: adult, child"],u:"1f9d1-200d-1f9d2",a:"15.1"},{n:["family: adult, child, child"],u:"1f9d1-200d-1f9d2-200d-1f9d2",a:"15.1"},{n:["print","clothing","footprint","footprints"],u:"1f463",a:"0.6"}],animals_nature:[{n:["face","monkey","monkey face"],u:"1f435",a:"0.6"},{n:["monkey"],u:"1f412",a:"0.6"},{n:["gorilla"],u:"1f98d",a:"3"},{n:["ape","orangutan"],u:"1f9a7",a:"12"},{n:["dog","pet","face","dog face"],u:"1f436",a:"0.6"},{n:["dog","pet"],u:"1f415",a:"0.7"},{n:["blind","guide","guide dog","accessibility"],u:"1f9ae",a:"12"},{n:["dog","service","assistance","service dog","accessibility"],u:"1f415-200d-1f9ba",a:"12"},{n:["dog","poodle"],u:"1f429",a:"0.6"},{n:["wolf","face"],u:"1f43a",a:"0.6"},{n:["fox","face"],u:"1f98a",a:"3"},{n:["sly","raccoon","curious"],u:"1f99d",a:"11"},{n:["cat","pet","face","cat face"],u:"1f431",a:"0.6"},{n:["cat","pet"],u:"1f408",a:"0.7"},{n:["cat","black","unlucky","black cat"],u:"1f408-200d-2b1b",a:"13"},{n:["leo","lion","face","zodiac"],u:"1f981",a:"1"},{n:["face","tiger","tiger face"],u:"1f42f",a:"0.6"},{n:["tiger"],u:"1f405",a:"1"},{n:["leopard"],u:"1f406",a:"1"},{n:["face","horse","horse face"],u:"1f434",a:"0.6"},{n:["elk","moose","animal","mammal","antlers"],u:"1face",a:"15"},{n:["ass","mule","burro","donkey","animal","mammal","stubborn"],u:"1facf",a:"15"},{n:["horse","racing","racehorse","equestrian"],u:"1f40e",a:"0.6"},{n:["face","unicorn"],u:"1f984",a:"1"},{n:["zebra","stripe"],u:"1f993",a:"5"},{n:["deer"],u:"1f98c",a:"3"},{n:["herd","bison","wisent","buffalo"],u:"1f9ac",a:"13"},{n:["cow","face","cow face"],u:"1f42e",a:"0.6"},{n:["ox","bull","taurus","zodiac"],u:"1f402",a:"1"},{n:["water","buffalo","water buffalo"],u:"1f403",a:"1"},{n:["cow"],u:"1f404",a:"1"},{n:["pig","face","pig face"],u:"1f437",a:"0.6"},{n:["pig","sow"],u:"1f416",a:"1"},{n:["pig","boar"],u:"1f417",a:"0.6"},{n:["pig","face","nose","pig nose"],u:"1f43d",a:"0.6"},{n:["ram","male","aries","sheep","zodiac"],u:"1f40f",a:"1"},{n:["ewe","sheep","female"],u:"1f411",a:"0.6"},{n:["goat","zodiac","capricorn"],u:"1f410",a:"1"},{n:["hump","camel","dromedary"],u:"1f42a",a:"1"},{n:["hump","camel","bactrian","two hump camel"],u:"1f42b",a:"0.6"},{n:["wool","llama","alpaca","vicuña","guanaco"],u:"1f999",a:"11"},{n:["spots","giraffe"],u:"1f992",a:"5"},{n:["elephant"],u:"1f418",a:"0.6"},{n:["tusk","large","woolly","mammoth","extinction"],u:"1f9a3",a:"13"},{n:["rhinoceros"],u:"1f98f",a:"3"},{n:["hippo","hippopotamus"],u:"1f99b",a:"11"},{n:["face","mouse","mouse face"],u:"1f42d",a:"0.6"},{n:["mouse"],u:"1f401",a:"1"},{n:["rat"],u:"1f400",a:"1"},{n:["pet","face","hamster"],u:"1f439",a:"0.6"},{n:["pet","face","bunny","rabbit","rabbit face"],u:"1f430",a:"0.6"},{n:["pet","bunny","rabbit"],u:"1f407",a:"1"},{n:["chipmunk","squirrel"],u:"1f43f-fe0f",a:"0.7"},{n:["dam","beaver"],u:"1f9ab",a:"13"},{n:["spiny","hedgehog"],u:"1f994",a:"5"},{n:["bat","vampire"],u:"1f987",a:"3"},{n:["bear","face"],u:"1f43b",a:"0.6"},{n:["bear","white","arctic","polar bear"],u:"1f43b-200d-2744-fe0f",a:"13"},{n:["face","koala","marsupial"],u:"1f428",a:"0.6"},{n:["face","panda"],u:"1f43c",a:"0.6"},{n:["lazy","slow","sloth"],u:"1f9a5",a:"12"},{n:["otter","fishing","playful"],u:"1f9a6",a:"12"},{n:["skunk","stink"],u:"1f9a8",a:"12"},{n:["joey","jump","kangaroo","marsupial"],u:"1f998",a:"11"},{n:["badger","pester","honey badger"],u:"1f9a1",a:"11"},{n:["paw","feet","print","paw prints"],u:"1f43e",a:"0.6"},{n:["bird","turkey"],u:"1f983",a:"1"},{n:["bird","chicken"],u:"1f414",a:"0.6"},{n:["bird","rooster"],u:"1f413",a:"1"},{n:["baby","bird","chick","hatching","hatching chick"],u:"1f423",a:"0.6"},{n:["baby","bird","chick","baby chick"],u:"1f424",a:"0.6"},{n:["baby","bird","chick","front facing baby chick"],u:"1f425",a:"0.6"},{n:["bird"],u:"1f426",a:"0.6"},{n:["bird","penguin"],u:"1f427",a:"0.6"},{n:["fly","dove","bird","peace"],u:"1f54a-fe0f",a:"0.7"},{n:["bird","eagle"],u:"1f985",a:"3"},{n:["duck","bird"],u:"1f986",a:"3"},{n:["swan","bird","cygnet","ugly duckling"],u:"1f9a2",a:"11"},{n:["owl","bird","wise"],u:"1f989",a:"3"},{n:["dodo","large","mauritius","extinction"],u:"1f9a4",a:"13"},{n:["bird","light","flight","feather","plumage"],u:"1fab6",a:"13"},{n:["flamingo","tropical","flamboyant"],u:"1f9a9",a:"12"},{n:["bird","proud","peahen","peacock","ostentatious"],u:"1f99a",a:"11"},{n:["bird","talk","parrot","pirate"],u:"1f99c",a:"11"},{n:["wing","bird","flying","angelic","aviation","mythology"],u:"1fabd",a:"15"},{n:["bird","crow","rook","black","raven","black bird"],u:"1f426-200d-2b1b",a:"15"},{n:["bird","fowl","honk","goose","silly"],u:"1fabf",a:"15"},{n:["phoenix","fantasy","rebirth","firebird","reincarnation"],u:"1f426-200d-1f525",a:"15.1"},{n:["frog","face"],u:"1f438",a:"0.6"},{n:["crocodile"],u:"1f40a",a:"1"},{n:["turtle","terrapin","tortoise"],u:"1f422",a:"0.6"},{n:["lizard","reptile"],u:"1f98e",a:"3"},{n:["snake","bearer","zodiac","serpent","ophiuchus"],u:"1f40d",a:"0.6"},{n:["face","dragon","fairy tale","dragon face"],u:"1f432",a:"0.6"},{n:["dragon","fairy tale"],u:"1f409",a:"1"},{n:["sauropod","diplodocus","brontosaurus","brachiosaurus"],u:"1f995",a:"5"},{n:["T Rex","t rex","tyrannosaurus rex"],u:"1f996",a:"5"},{n:["face","whale","spouting","spouting whale"],u:"1f433",a:"0.6"},{n:["whale"],u:"1f40b",a:"1"},{n:["dolphin","flipper"],u:"1f42c",a:"0.6"},{n:["seal","sea lion"],u:"1f9ad",a:"13"},{n:["fish","pisces","zodiac"],u:"1f41f",a:"0.6"},{n:["fish","tropical","tropical fish"],u:"1f420",a:"0.6"},{n:["fish","blowfish"],u:"1f421",a:"0.6"},{n:["fish","shark"],u:"1f988",a:"3"},{n:["octopus"],u:"1f419",a:"0.6"},{n:["shell","spiral","spiral shell"],u:"1f41a",a:"0.6"},{n:["reef","coral","ocean"],u:"1fab8",a:"14"},{n:["burn","ouch","jelly","marine","stinger","jellyfish","invertebrate"],u:"1fabc",a:"15"},{n:["snail"],u:"1f40c",a:"0.6"},{n:["insect","pretty","butterfly"],u:"1f98b",a:"3"},{n:["bug","insect"],u:"1f41b",a:"0.6"},{n:["ant","insect"],u:"1f41c",a:"0.6"},{n:["bee","insect","honeybee"],u:"1f41d",a:"0.6"},{n:["bug","beetle","insect"],u:"1fab2",a:"13"},{n:["beetle","insect","ladybug","ladybird","lady beetle"],u:"1f41e",a:"0.6"},{n:["cricket","grasshopper"],u:"1f997",a:"5"},{n:["pest","roach","insect","cockroach"],u:"1fab3",a:"13"},{n:["spider","insect"],u:"1f577-fe0f",a:"0.7"},{n:["web","spider","spider web"],u:"1f578-fe0f",a:"0.7"},{n:["zodiac","scorpio","scorpion"],u:"1f982",a:"1"},{n:["pest","fever","virus","disease","malaria","mosquito"],u:"1f99f",a:"11"},{n:["fly","pest","maggot","disease","rotting"],u:"1fab0",a:"13"},{n:["worm","annelid","parasite","earthworm"],u:"1fab1",a:"13"},{n:["virus","amoeba","microbe","bacteria"],u:"1f9a0",a:"11"},{n:["flower","bouquet"],u:"1f490",a:"0.6"},{n:["cherry","flower","blossom","cherry blossom"],u:"1f338",a:"0.6"},{n:["flower","white flower"],u:"1f4ae",a:"0.6"},{n:["lotus","flower","purity","buddhism","hinduism"],u:"1fab7",a:"14"},{n:["plant","rosette"],u:"1f3f5-fe0f",a:"0.7"},{n:["rose","flower"],u:"1f339",a:"0.6"},{n:["flower","wilted","wilted flower"],u:"1f940",a:"3"},{n:["flower","hibiscus"],u:"1f33a",a:"0.6"},{n:["sun","flower","sunflower"],u:"1f33b",a:"0.6"},{n:["flower","blossom"],u:"1f33c",a:"0.6"},{n:["tulip","flower"],u:"1f337",a:"0.6"},{n:["flower","lupine","hyacinth","lavender","bluebonnet","snapdragon"],u:"1fabb",a:"15"},{n:["young","seedling"],u:"1f331",a:"0.6"},{n:["grow","house","plant","boring","useless","nurturing","potted plant"],u:"1fab4",a:"13"},{n:["tree","evergreen tree"],u:"1f332",a:"1"},{n:["tree","shedding","deciduous","deciduous tree"],u:"1f333",a:"1"},{n:["palm","tree","palm tree"],u:"1f334",a:"0.6"},{n:["plant","cactus"],u:"1f335",a:"0.6"},{n:["ear","rice","grain","sheaf of rice"],u:"1f33e",a:"0.6"},{n:["herb","leaf"],u:"1f33f",a:"0.6"},{n:["plant","shamrock"],u:"2618-fe0f",a:"1"},{n:["4","four","leaf","clover","four leaf clover"],u:"1f340",a:"0.6"},{n:["leaf","maple","falling","maple leaf"],u:"1f341",a:"0.6"},{n:["leaf","falling","fallen leaf"],u:"1f342",a:"0.6"},{n:["blow","leaf","wind","flutter","leaf fluttering in wind"],u:"1f343",a:"0.6"},{n:["nesting","empty nest"],u:"1fab9",a:"14"},{n:["nesting","nest with eggs"],u:"1faba",a:"14"},{n:["mushroom","toadstool"],u:"1f344",a:"0.6"}],food_drink:[{n:["fruit","grape","grapes"],u:"1f347",a:"0.6"},{n:["melon","fruit"],u:"1f348",a:"0.6"},{n:["fruit","watermelon"],u:"1f349",a:"0.6"},{n:["fruit","orange","tangerine"],u:"1f34a",a:"0.6"},{n:["lemon","fruit","citrus"],u:"1f34b",a:"1"},{n:["lime","fruit","citrus","tropical"],u:"1f34b-200d-1f7e9",a:"15.1"},{n:["fruit","banana"],u:"1f34c",a:"0.6"},{n:["fruit","pineapple"],u:"1f34d",a:"0.6"},{n:["mango","fruit","tropical"],u:"1f96d",a:"11"},{n:["red","apple","fruit","red apple"],u:"1f34e",a:"0.6"},{n:["apple","fruit","green","green apple"],u:"1f34f",a:"0.6"},{n:["pear","fruit"],u:"1f350",a:"1"},{n:["peach","fruit"],u:"1f351",a:"0.6"},{n:["red","fruit","cherry","berries","cherries"],u:"1f352",a:"0.6"},{n:["berry","fruit","strawberry"],u:"1f353",a:"0.6"},{n:["blue","berry","bilberry","blueberry","blueberries"],u:"1fad0",a:"13"},{n:["food","kiwi","fruit","kiwi fruit"],u:"1f95d",a:"3"},{n:["fruit","tomato","vegetable"],u:"1f345",a:"0.6"},{n:["food","olive"],u:"1fad2",a:"13"},{n:["palm","coconut","piña colada"],u:"1f965",a:"5"},{n:["food","fruit","avocado"],u:"1f951",a:"3"},{n:["eggplant","aubergine","vegetable"],u:"1f346",a:"0.6"},{n:["food","potato","vegetable"],u:"1f954",a:"3"},{n:["food","carrot","vegetable"],u:"1f955",a:"3"},{n:["ear","corn","maze","maize","ear of corn"],u:"1f33d",a:"0.6"},{n:["hot","pepper","hot pepper"],u:"1f336-fe0f",a:"0.7"},{n:["pepper","capsicum","vegetable","bell pepper"],u:"1fad1",a:"13"},{n:["food","pickle","cucumber","vegetable"],u:"1f952",a:"3"},{n:["kale","cabbage","lettuce","bok choy","leafy green"],u:"1f96c",a:"11"},{n:["broccoli","wild cabbage"],u:"1f966",a:"5"},{n:["garlic","flavoring"],u:"1f9c4",a:"12"},{n:["onion","flavoring"],u:"1f9c5",a:"12"},{n:["nut","food","peanut","peanuts","vegetable"],u:"1f95c",a:"3"},{n:["food","beans","kidney","legume"],u:"1fad8",a:"14"},{n:["plant","chestnut"],u:"1f330",a:"0.6"},{n:["beer","root","spice","ginger root"],u:"1fada",a:"15"},{n:["pea","pod","beans","legume","pea pod","edamame","vegetable"],u:"1fadb",a:"15"},{n:["food","fungus","nature","vegetable","brown mushroom"],u:"1f344-200d-1f7eb",a:"15.1"},{n:["loaf","bread"],u:"1f35e",a:"0.6"},{n:["food","roll","bread","french","croissant","breakfast"],u:"1f950",a:"3"},{n:["food","bread","french","baguette","baguette bread"],u:"1f956",a:"3"},{n:["naan","pita","arepa","lavash","flatbread"],u:"1fad3",a:"13"},{n:["pretzel","twisted"],u:"1f968",a:"5"},{n:["bagel","bakery","schmear","breakfast"],u:"1f96f",a:"11"},{n:["food","crêpe","hotcake","pancake","pancakes","breakfast"],u:"1f95e",a:"3"},{n:["iron","waffle","breakfast","indecisive"],u:"1f9c7",a:"12"},{n:["cheese","cheese wedge"],u:"1f9c0",a:"1"},{n:["bone","meat","meat on bone"],u:"1f356",a:"0.6"},{n:["leg","bone","chicken","poultry","drumstick","poultry leg"],u:"1f357",a:"0.6"},{n:["chop","steak","lambchop","porkchop","cut of meat"],u:"1f969",a:"5"},{n:["food","meat","bacon","breakfast"],u:"1f953",a:"3"},{n:["burger","hamburger"],u:"1f354",a:"0.6"},{n:["fries","french","french fries"],u:"1f35f",a:"0.6"},{n:["pizza","slice","cheese"],u:"1f355",a:"0.6"},{n:["hotdog","hot dog","sausage","frankfurter"],u:"1f32d",a:"1"},{n:["bread","sandwich"],u:"1f96a",a:"5"},{n:["taco","mexican"],u:"1f32e",a:"1"},{n:["wrap","burrito","mexican"],u:"1f32f",a:"1"},{n:["tamale","mexican","wrapped"],u:"1fad4",a:"13"},{n:["food","gyro","kebab","falafel","stuffed","flatbread","stuffed flatbread"],u:"1f959",a:"3"},{n:["falafel","chickpea","meatball"],u:"1f9c6",a:"12"},{n:["egg","food","breakfast"],u:"1f95a",a:"3"},{n:["egg","pan","frying","cooking","breakfast"],u:"1f373",a:"0.6"},{n:["pan","food","paella","shallow","casserole","shallow pan of food"],u:"1f958",a:"3"},{n:["pot","stew","pot of food"],u:"1f372",a:"0.6"},{n:["pot","swiss","fondue","cheese","melted","chocolate"],u:"1fad5",a:"13"},{n:["cereal","congee","breakfast","bowl with spoon"],u:"1f963",a:"5"},{n:["food","green","salad","green salad"],u:"1f957",a:"3"},{n:["popcorn"],u:"1f37f",a:"1"},{n:["dairy","butter"],u:"1f9c8",a:"12"},{n:["salt","shaker","condiment"],u:"1f9c2",a:"11"},{n:["can","canned food"],u:"1f96b",a:"5"},{n:["box","bento","bento box"],u:"1f371",a:"0.6"},{n:["rice","cracker","rice cracker"],u:"1f358",a:"0.6"},{n:["ball","rice","japanese","rice ball"],u:"1f359",a:"0.6"},{n:["rice","cooked","cooked rice"],u:"1f35a",a:"0.6"},{n:["rice","curry","curry rice"],u:"1f35b",a:"0.6"},{n:["bowl","ramen","noodle","steaming","steaming bowl"],u:"1f35c",a:"0.6"},{n:["pasta","spaghetti"],u:"1f35d",a:"0.6"},{n:["sweet","potato","roasted","roasted sweet potato"],u:"1f360",a:"0.6"},{n:["oden","kebab","stick","skewer","seafood"],u:"1f362",a:"0.6"},{n:["sushi"],u:"1f363",a:"0.6"},{n:["fried","prawn","shrimp","tempura","fried shrimp"],u:"1f364",a:"0.6"},{n:["cake","fish","swirl","pastry","fish cake with swirl"],u:"1f365",a:"0.6"},{n:["autumn","yuèbǐng","festival","moon cake"],u:"1f96e",a:"11"},{n:["dango","stick","sweet","skewer","dessert","japanese"],u:"1f361",a:"0.6"},{n:["gyōza","jiaozi","pierogi","dumpling","empanada","potsticker"],u:"1f95f",a:"5"},{n:["prophecy","fortune cookie"],u:"1f960",a:"5"},{n:["takeout box","oyster pail"],u:"1f961",a:"5"},{n:["crab","cancer","zodiac"],u:"1f980",a:"1"},{n:["claws","bisque","lobster","seafood"],u:"1f99e",a:"11"},{n:["food","small","shrimp","shellfish"],u:"1f990",a:"3"},{n:["food","squid","molusc"],u:"1f991",a:"3"},{n:["pearl","oyster","diving"],u:"1f9aa",a:"12"},{n:["ice","soft","cream","sweet","dessert","icecream","soft ice cream"],u:"1f366",a:"0.6"},{n:["ice","sweet","shaved","dessert","shaved ice"],u:"1f367",a:"0.6"},{n:["ice","cream","sweet","dessert","ice cream"],u:"1f368",a:"0.6"},{n:["donut","sweet","dessert","doughnut","breakfast"],u:"1f369",a:"0.6"},{n:["sweet","cookie","dessert"],u:"1f36a",a:"0.6"},{n:["cake","sweet","pastry","dessert","birthday","celebration","birthday cake"],u:"1f382",a:"0.6"},{n:["cake","slice","sweet","pastry","dessert","shortcake"],u:"1f370",a:"0.6"},{n:["sweet","bakery","cupcake"],u:"1f9c1",a:"11"},{n:["pie","pastry","filling"],u:"1f967",a:"5"},{n:["bar","sweet","dessert","chocolate","chocolate bar"],u:"1f36b",a:"0.6"},{n:["candy","sweet","dessert"],u:"1f36c",a:"0.6"},{n:["candy","sweet","dessert","lollipop"],u:"1f36d",a:"0.6"},{n:["sweet","custard","dessert","pudding"],u:"1f36e",a:"0.6"},{n:["pot","honey","sweet","honeypot","honey pot"],u:"1f36f",a:"0.6"},{n:["baby","milk","drink","bottle","baby bottle"],u:"1f37c",a:"1"},{n:["milk","drink","glass","glass of milk"],u:"1f95b",a:"3"},{n:["hot","tea","drink","coffee","beverage","steaming","hot beverage"],u:"2615",a:"0.6"},{n:["pot","tea","drink","teapot"],u:"1fad6",a:"13"},{n:["cup","tea","drink","teacup","beverage","teacup without handle"],u:"1f375",a:"0.6"},{n:["bar","cup","sake","drink","bottle","beverage"],u:"1f376",a:"0.6"},{n:["bar","cork","drink","bottle","popping","bottle with popping cork"],u:"1f37e",a:"1"},{n:["bar","wine","drink","glass","beverage","wine glass"],u:"1f377",a:"0.6"},{n:["bar","drink","glass","cocktail","cocktail glass"],u:"1f378",a:"0.6"},{n:["bar","drink","tropical","tropical drink"],u:"1f379",a:"0.6"},{n:["bar","mug","beer","drink","beer mug"],u:"1f37a",a:"0.6"},{n:["bar","mug","beer","clink","drink","clinking beer mugs"],u:"1f37b",a:"0.6"},{n:["clink","drink","glass","celebrate","clinking glasses"],u:"1f942",a:"3"},{n:["shot","glass","liquor","whisky","tumbler","tumbler glass"],u:"1f943",a:"3"},{n:["drink","empty","glass","spill","pouring liquid"],u:"1fad7",a:"14"},{n:["soda","juice","cup with straw"],u:"1f964",a:"5"},{n:["tea","milk","pearl","bubble","bubble tea"],u:"1f9cb",a:"13"},{n:["box","juice","straw","sweet","beverage","beverage box"],u:"1f9c3",a:"12"},{n:["mate","drink"],u:"1f9c9",a:"12"},{n:["ice","cold","iceberg","ice cube"],u:"1f9ca",a:"12"},{n:["hashi","chopsticks"],u:"1f962",a:"5"},{n:["fork","knife","plate","cooking","fork and knife with plate"],u:"1f37d-fe0f",a:"0.7"},{n:["fork","knife","cooking","cutlery","fork and knife"],u:"1f374",a:"0.6"},{n:["spoon","tableware"],u:"1f944",a:"3"},{n:["tool","hocho","knife","weapon","cooking","kitchen knife"],u:"1f52a",a:"0.6"},{n:["jar","empty","sauce","store","condiment","container"],u:"1fad9",a:"14"},{n:["jug","drink","zodiac","amphora","cooking","aquarius"],u:"1f3fa",a:"1"}],travel_places:[{n:["earth","globe","world","africa","europe","globe showing Europe Africa","globe showing europe africa"],u:"1f30d",a:"0.7"},{n:["earth","globe","world","americas","globe showing Americas","globe showing americas"],u:"1f30e",a:"0.7"},{n:["asia","earth","globe","world","australia","globe showing Asia Australia","globe showing asia australia"],u:"1f30f",a:"0.6"},{n:["earth","globe","world","meridians","globe with meridians"],u:"1f310",a:"1"},{n:["map","world","world map"],u:"1f5fa-fe0f",a:"0.7"},{n:["map","japan","map of Japan","map of japan"],u:"1f5fe",a:"0.6"},{n:["compass","magnetic","navigation","orienteering"],u:"1f9ed",a:"11"},{n:["cold","snow","mountain","snow capped mountain"],u:"1f3d4-fe0f",a:"0.7"},{n:["mountain"],u:"26f0-fe0f",a:"0.7"},{n:["volcano","eruption","mountain"],u:"1f30b",a:"0.6"},{n:["fuji","mountain","mount fuji"],u:"1f5fb",a:"0.6"},{n:["camping"],u:"1f3d5-fe0f",a:"0.7"},{n:["beach","umbrella","beach with umbrella"],u:"1f3d6-fe0f",a:"0.7"},{n:["desert"],u:"1f3dc-fe0f",a:"0.7"},{n:["desert","island","desert island"],u:"1f3dd-fe0f",a:"0.7"},{n:["park","national park"],u:"1f3de-fe0f",a:"0.7"},{n:["stadium"],u:"1f3df-fe0f",a:"0.7"},{n:["classical","classical building"],u:"1f3db-fe0f",a:"0.7"},{n:["construction","building construction"],u:"1f3d7-fe0f",a:"0.7"},{n:["clay","wall","brick","bricks","mortar"],u:"1f9f1",a:"11"},{n:["rock","heavy","solid","stone","boulder"],u:"1faa8",a:"13"},{n:["log","wood","lumber","timber"],u:"1fab5",a:"13"},{n:["hut","yurt","house","roundhouse"],u:"1f6d6",a:"13"},{n:["houses"],u:"1f3d8-fe0f",a:"0.7"},{n:["house","derelict","derelict house"],u:"1f3da-fe0f",a:"0.7"},{n:["home","house"],u:"1f3e0",a:"0.6"},{n:["home","house","garden","house with garden"],u:"1f3e1",a:"0.6"},{n:["building","office building"],u:"1f3e2",a:"0.6"},{n:["post","japanese","Japanese post office","japanese post office"],u:"1f3e3",a:"0.6"},{n:["post","european","post office"],u:"1f3e4",a:"1"},{n:["doctor","hospital","medicine"],u:"1f3e5",a:"0.6"},{n:["bank","building"],u:"1f3e6",a:"0.6"},{n:["hotel","building"],u:"1f3e8",a:"0.6"},{n:["love","hotel","love hotel"],u:"1f3e9",a:"0.6"},{n:["store","convenience","convenience store"],u:"1f3ea",a:"0.6"},{n:["school","building"],u:"1f3eb",a:"0.6"},{n:["store","department","department store"],u:"1f3ec",a:"0.6"},{n:["factory","building"],u:"1f3ed",a:"0.6"},{n:["castle","japanese","Japanese castle"],u:"1f3ef",a:"0.6"},{n:["castle","european"],u:"1f3f0",a:"0.6"},{n:["chapel","wedding","romance"],u:"1f492",a:"0.6"},{n:["tokyo","tower","Tokyo tower"],u:"1f5fc",a:"0.6"},{n:["statue","liberty","Statue of Liberty","statue of liberty"],u:"1f5fd",a:"0.6"},{n:["cross","church","religion","christian"],u:"26ea",a:"0.6"},{n:["islam","mosque","muslim","religion"],u:"1f54c",a:"1"},{n:["hindu","temple","hindu temple"],u:"1f6d5",a:"12"},{n:["jew","jewish","temple","religion","synagogue"],u:"1f54d",a:"1"},{n:["shinto","shrine","religion","shinto shrine"],u:"26e9-fe0f",a:"0.7"},{n:["kaaba","islam","muslim","religion"],u:"1f54b",a:"1"},{n:["fountain"],u:"26f2",a:"0.6"},{n:["tent","camping"],u:"26fa",a:"0.6"},{n:["fog","foggy"],u:"1f301",a:"0.6"},{n:["star","night","night with stars"],u:"1f303",a:"0.6"},{n:["city","cityscape"],u:"1f3d9-fe0f",a:"0.7"},{n:["sun","morning","sunrise","mountain","sunrise over mountains"],u:"1f304",a:"0.6"},{n:["sun","sunrise","morning"],u:"1f305",a:"0.6"},{n:["city","dusk","sunset","evening","landscape","cityscape at dusk"],u:"1f306",a:"0.6"},{n:["sun","dusk","sunset"],u:"1f307",a:"0.6"},{n:["night","bridge","bridge at night"],u:"1f309",a:"0.6"},{n:["hot","springs","steaming","hotsprings","hot springs"],u:"2668-fe0f",a:"0.6"},{n:["horse","carousel","carousel horse"],u:"1f3a0",a:"0.6"},{n:["play","theme park","amusement park","playground slide"],u:"1f6dd",a:"14"},{n:["wheel","ferris","theme park","ferris wheel","amusement park"],u:"1f3a1",a:"0.6"},{n:["roller","coaster","theme park","roller coaster","amusement park"],u:"1f3a2",a:"0.6"},{n:["pole","barber","haircut","barber pole"],u:"1f488",a:"0.6"},{n:["tent","circus","circus tent"],u:"1f3aa",a:"0.6"},{n:["steam","train","engine","railway","locomotive"],u:"1f682",a:"1"},{n:["car","tram","train","railway","electric","trolleybus","railway car"],u:"1f683",a:"0.6"},{n:["speed","train","railway","shinkansen","high speed train"],u:"1f684",a:"0.6"},{n:["speed","train","bullet","railway","shinkansen","bullet train"],u:"1f685",a:"0.6"},{n:["train","railway"],u:"1f686",a:"1"},{n:["metro","subway"],u:"1f687",a:"0.6"},{n:["railway","light rail"],u:"1f688",a:"1"},{n:["train","station","railway"],u:"1f689",a:"0.6"},{n:["tram","trolleybus"],u:"1f68a",a:"1"},{n:["vehicle","monorail"],u:"1f69d",a:"1"},{n:["car","railway","mountain","mountain railway"],u:"1f69e",a:"1"},{n:["car","tram","tram car","trolleybus"],u:"1f68b",a:"1"},{n:["bus","vehicle"],u:"1f68c",a:"0.6"},{n:["bus","oncoming","oncoming bus"],u:"1f68d",a:"0.7"},{n:["bus","tram","trolley","trolleybus"],u:"1f68e",a:"1"},{n:["bus","minibus"],u:"1f690",a:"1"},{n:["vehicle","ambulance"],u:"1f691",a:"0.6"},{n:["fire","truck","engine","fire engine"],u:"1f692",a:"0.6"},{n:["car","patrol","police","police car"],u:"1f693",a:"0.6"},{n:["car","police","oncoming","oncoming police car"],u:"1f694",a:"0.7"},{n:["taxi","vehicle"],u:"1f695",a:"0.6"},{n:["taxi","oncoming","oncoming taxi"],u:"1f696",a:"1"},{n:["car","automobile"],u:"1f697",a:"0.6"},{n:["car","oncoming","automobile","oncoming automobile"],u:"1f698",a:"0.7"},{n:["recreational","sport utility","sport utility vehicle"],u:"1f699",a:"0.6"},{n:["truck","pickup","pick up","pickup truck"],u:"1f6fb",a:"13"},{n:["truck","delivery","delivery truck"],u:"1f69a",a:"0.6"},{n:["semi","lorry","truck","articulated lorry"],u:"1f69b",a:"1"},{n:["tractor","vehicle"],u:"1f69c",a:"1"},{n:["car","racing","racing car"],u:"1f3ce-fe0f",a:"0.7"},{n:["racing","motorcycle"],u:"1f3cd-fe0f",a:"0.7"},{n:["motor","scooter","motor scooter"],u:"1f6f5",a:"3"},{n:["accessibility","manual wheelchair"],u:"1f9bd",a:"12"},{n:["accessibility","motorized wheelchair"],u:"1f9bc",a:"12"},{n:["tuk tuk","auto rickshaw"],u:"1f6fa",a:"12"},{n:["bike","bicycle"],u:"1f6b2",a:"0.6"},{n:["kick","scooter","kick scooter"],u:"1f6f4",a:"3"},{n:["board","skateboard"],u:"1f6f9",a:"11"},{n:["skate","roller","roller skate"],u:"1f6fc",a:"13"},{n:["bus","stop","bus stop"],u:"1f68f",a:"0.6"},{n:["road","highway","motorway"],u:"1f6e3-fe0f",a:"0.7"},{n:["train","railway","railway track"],u:"1f6e4-fe0f",a:"0.7"},{n:["oil","drum","oil drum"],u:"1f6e2-fe0f",a:"0.7"},{n:["gas","fuel","pump","diesel","station","fuelpump","fuel pump"],u:"26fd",a:"0.6"},{n:["tire","turn","wheel","circle"],u:"1f6de",a:"14"},{n:["car","light","beacon","police","revolving","police car light"],u:"1f6a8",a:"0.6"},{n:["light","signal","traffic","horizontal traffic light"],u:"1f6a5",a:"0.6"},{n:["light","signal","traffic","vertical traffic light"],u:"1f6a6",a:"1"},{n:["sign","stop","stop sign","octagonal"],u:"1f6d1",a:"3"},{n:["barrier","construction"],u:"1f6a7",a:"0.6"},{n:["ship","tool","anchor"],u:"2693",a:"0.6"},{n:["float","rescue","safety","ring buoy","life saver","life preserver"],u:"1f6df",a:"14"},{n:["sea","boat","yacht","resort","sailboat"],u:"26f5",a:"0.6"},{n:["boat","canoe"],u:"1f6f6",a:"3"},{n:["boat","speedboat"],u:"1f6a4",a:"0.6"},{n:["ship","passenger","passenger ship"],u:"1f6f3-fe0f",a:"0.7"},{n:["boat","ferry","passenger"],u:"26f4-fe0f",a:"0.7"},{n:["boat","motorboat","motor boat"],u:"1f6e5-fe0f",a:"0.7"},{n:["ship","boat","passenger"],u:"1f6a2",a:"0.6"},{n:["airplane","aeroplane"],u:"2708-fe0f",a:"0.6"},{n:["airplane","aeroplane","small airplane"],u:"1f6e9-fe0f",a:"0.7"},{n:["airplane","check in","aeroplane","departure","departures","airplane departure"],u:"1f6eb",a:"1"},{n:["landing","airplane","arrivals","arriving","aeroplane","airplane arrival"],u:"1f6ec",a:"1"},{n:["skydive","parasail","parachute","hang glide"],u:"1fa82",a:"12"},{n:["seat","chair"],u:"1f4ba",a:"0.6"},{n:["vehicle","helicopter"],u:"1f681",a:"1"},{n:["railway","suspension","suspension railway"],u:"1f69f",a:"1"},{n:["cable","gondola","mountain","mountain cableway"],u:"1f6a0",a:"1"},{n:["car","cable","aerial","gondola","tramway","aerial tramway"],u:"1f6a1",a:"1"},{n:["space","satellite"],u:"1f6f0-fe0f",a:"0.7"},{n:["space","rocket"],u:"1f680",a:"0.6"},{n:["ufo","flying saucer"],u:"1f6f8",a:"5"},{n:["bell","hotel","bellhop","bellhop bell"],u:"1f6ce-fe0f",a:"0.7"},{n:["travel","luggage","packing"],u:"1f9f3",a:"11"},{n:["sand","timer","hourglass done"],u:"231b",a:"0.6"},{n:["sand","timer","hourglass","hourglass not done"],u:"23f3",a:"0.6"},{n:["watch","clock"],u:"231a",a:"0.6"},{n:["alarm","clock","alarm clock"],u:"23f0",a:"0.6"},{n:["clock","stopwatch"],u:"23f1-fe0f",a:"1"},{n:["clock","timer","timer clock"],u:"23f2-fe0f",a:"1"},{n:["clock","mantelpiece clock"],u:"1f570-fe0f",a:"0.7"},{n:["00","12","12:00","clock","twelve","o’clock","twelve o’clock"],u:"1f55b",a:"0.6"},{n:["12","12:30","clock","thirty","twelve","twelve thirty"],u:"1f567",a:"0.7"},{n:["1","00","one","1:00","clock","o’clock","one o’clock"],u:"1f550",a:"0.6"},{n:["1","one","1:30","clock","thirty","one thirty"],u:"1f55c",a:"0.7"},{n:["2","00","two","2:00","clock","o’clock","two o’clock"],u:"1f551",a:"0.6"},{n:["2","two","2:30","clock","thirty","two thirty"],u:"1f55d",a:"0.7"},{n:["3","00","3:00","clock","three","o’clock","three o’clock"],u:"1f552",a:"0.6"},{n:["3","3:30","clock","three","thirty","three thirty"],u:"1f55e",a:"0.7"},{n:["4","00","4:00","four","clock","o’clock","four o’clock"],u:"1f553",a:"0.6"},{n:["4","4:30","four","clock","thirty","four thirty"],u:"1f55f",a:"0.7"},{n:["5","00","5:00","five","clock","o’clock","five o’clock"],u:"1f554",a:"0.6"},{n:["5","5:30","five","clock","thirty","five thirty"],u:"1f560",a:"0.7"},{n:["6","00","six","6:00","clock","o’clock","six o’clock"],u:"1f555",a:"0.6"},{n:["6","six","6:30","clock","thirty","six thirty"],u:"1f561",a:"0.7"},{n:["7","00","7:00","clock","seven","o’clock","seven o’clock"],u:"1f556",a:"0.6"},{n:["7","7:30","clock","seven","thirty","seven thirty"],u:"1f562",a:"0.7"},{n:["8","00","8:00","clock","eight","o’clock","eight o’clock"],u:"1f557",a:"0.6"},{n:["8","8:30","clock","eight","thirty","eight thirty"],u:"1f563",a:"0.7"},{n:["9","00","9:00","nine","clock","o’clock","nine o’clock"],u:"1f558",a:"0.6"},{n:["9","9:30","nine","clock","thirty","nine thirty"],u:"1f564",a:"0.7"},{n:["00","10","ten","10:00","clock","o’clock","ten o’clock"],u:"1f559",a:"0.6"},{n:["10","ten","10:30","clock","thirty","ten thirty"],u:"1f565",a:"0.7"},{n:["00","11","11:00","clock","eleven","o’clock","eleven o’clock"],u:"1f55a",a:"0.6"},{n:["11","11:30","clock","eleven","thirty","eleven thirty"],u:"1f566",a:"0.7"},{n:["dark","moon","new moon"],u:"1f311",a:"0.6"},{n:["moon","waxing","crescent","waxing crescent moon"],u:"1f312",a:"1"},{n:["moon","quarter","first quarter moon"],u:"1f313",a:"0.6"},{n:["moon","waxing","gibbous","waxing gibbous moon"],u:"1f314",a:"0.6"},{n:["full","moon","full moon"],u:"1f315",a:"0.6"},{n:["moon","waning","gibbous","waning gibbous moon"],u:"1f316",a:"1"},{n:["moon","quarter","last quarter moon"],u:"1f317",a:"1"},{n:["moon","waning","crescent","waning crescent moon"],u:"1f318",a:"1"},{n:["moon","crescent","crescent moon"],u:"1f319",a:"0.6"},{n:["face","moon","new moon face"],u:"1f31a",a:"1"},{n:["face","moon","quarter","first quarter moon face"],u:"1f31b",a:"0.6"},{n:["face","moon","quarter","last quarter moon face"],u:"1f31c",a:"0.7"},{n:["weather","thermometer"],u:"1f321-fe0f",a:"0.7"},{n:["sun","rays","sunny","bright"],u:"2600-fe0f",a:"0.6"},{n:["face","full","moon","bright","full moon face"],u:"1f31d",a:"1"},{n:["sun","face","bright","sun with face"],u:"1f31e",a:"1"},{n:["saturn","saturnine","ringed planet"],u:"1fa90",a:"12"},{n:["star"],u:"2b50",a:"0.6"},{n:["glow","star","shining","sparkle","glittery","glowing star"],u:"1f31f",a:"0.6"},{n:["star","falling","shooting","shooting star"],u:"1f320",a:"0.6"},{n:["space","milky way"],u:"1f30c",a:"0.6"},{n:["cloud","weather"],u:"2601-fe0f",a:"0.6"},{n:["sun","cloud","sun behind cloud"],u:"26c5",a:"0.6"},{n:["rain","cloud","thunder","cloud with lightning and rain"],u:"26c8-fe0f",a:"0.7"},{n:["sun","cloud","sun behind small cloud"],u:"1f324-fe0f",a:"0.7"},{n:["sun","cloud","sun behind large cloud"],u:"1f325-fe0f",a:"0.7"},{n:["sun","rain","cloud","sun behind rain cloud"],u:"1f326-fe0f",a:"0.7"},{n:["rain","cloud","cloud with rain"],u:"1f327-fe0f",a:"0.7"},{n:["cold","snow","cloud","cloud with snow"],u:"1f328-fe0f",a:"0.7"},{n:["cloud","lightning","cloud with lightning"],u:"1f329-fe0f",a:"0.7"},{n:["cloud","tornado","whirlwind"],u:"1f32a-fe0f",a:"0.7"},{n:["fog","cloud"],u:"1f32b-fe0f",a:"0.7"},{n:["blow","face","wind","cloud","wind face"],u:"1f32c-fe0f",a:"0.7"},{n:["dizzy","cyclone","twister","typhoon","hurricane"],u:"1f300",a:"0.6"},{n:["rain","rainbow"],u:"1f308",a:"0.6"},{n:["rain","clothing","umbrella","closed umbrella"],u:"1f302",a:"0.6"},{n:["rain","umbrella","clothing"],u:"2602-fe0f",a:"0.7"},{n:["drop","rain","clothing","umbrella","umbrella with rain drops"],u:"2614",a:"0.6"},{n:["sun","rain","umbrella","umbrella on ground"],u:"26f1-fe0f",a:"0.7"},{n:["zap","danger","voltage","electric","lightning","high voltage"],u:"26a1",a:"0.6"},{n:["cold","snow","snowflake"],u:"2744-fe0f",a:"0.6"},{n:["cold","snow","snowman"],u:"2603-fe0f",a:"0.7"},{n:["cold","snow","snowman","snowman without snow"],u:"26c4",a:"0.6"},{n:["comet","space"],u:"2604-fe0f",a:"1"},{n:["fire","tool","flame"],u:"1f525",a:"0.6"},{n:["cold","drop","comic","sweat","droplet"],u:"1f4a7",a:"0.6"},{n:["wave","ocean","water","water wave"],u:"1f30a",a:"0.6"}],activities:[{n:["jack","lantern","halloween","celebration","jack o lantern"],u:"1f383",a:"0.6"},{n:["tree","christmas","celebration","Christmas tree"],u:"1f384",a:"0.6"},{n:["fireworks","celebration"],u:"1f386",a:"0.6"},{n:["sparkle","sparkler","fireworks","celebration"],u:"1f387",a:"0.6"},{n:["dynamite","explosive","fireworks","firecracker"],u:"1f9e8",a:"11"},{n:["*","star","sparkle","sparkles"],u:"2728",a:"0.6"},{n:["balloon","celebration"],u:"1f388",a:"0.6"},{n:["tada","party","popper","celebration","party popper"],u:"1f389",a:"0.6"},{n:["ball","confetti","celebration","confetti ball"],u:"1f38a",a:"0.6"},{n:["tree","banner","japanese","celebration","tanabata tree"],u:"1f38b",a:"0.6"},{n:["pine","bamboo","japanese","celebration","pine decoration"],u:"1f38d",a:"0.6"},{n:["doll","festival","japanese","celebration","Japanese dolls","japanese dolls"],u:"1f38e",a:"0.6"},{n:["carp","streamer","celebration","carp streamer"],u:"1f38f",a:"0.6"},{n:["bell","wind","chime","wind chime","celebration"],u:"1f390",a:"0.6"},{n:["moon","ceremony","celebration","moon viewing ceremony"],u:"1f391",a:"0.6"},{n:["gift","money","hóngbāo","lai see","good luck","red envelope"],u:"1f9e7",a:"11"},{n:["ribbon","celebration"],u:"1f380",a:"0.6"},{n:["box","gift","present","wrapped","celebration","wrapped gift"],u:"1f381",a:"0.6"},{n:["ribbon","reminder","celebration","reminder ribbon"],u:"1f397-fe0f",a:"0.7"},{n:["ticket","admission","admission tickets"],u:"1f39f-fe0f",a:"0.7"},{n:["ticket","admission"],u:"1f3ab",a:"0.6"},{n:["medal","military","celebration","military medal"],u:"1f396-fe0f",a:"0.7"},{n:["prize","trophy"],u:"1f3c6",a:"0.6"},{n:["medal","sports medal"],u:"1f3c5",a:"1"},{n:["gold","first","medal","1st place medal"],u:"1f947",a:"3"},{n:["medal","second","silver","2nd place medal"],u:"1f948",a:"3"},{n:["medal","third","bronze","3rd place medal"],u:"1f949",a:"3"},{n:["ball","soccer","football","soccer ball"],u:"26bd",a:"0.6"},{n:["ball","baseball"],u:"26be",a:"0.6"},{n:["ball","glove","softball","underarm"],u:"1f94e",a:"11"},{n:["ball","hoop","basketball"],u:"1f3c0",a:"0.6"},{n:["ball","game","volleyball"],u:"1f3d0",a:"1"},{n:["ball","american","football","american football"],u:"1f3c8",a:"0.6"},{n:["ball","rugby","football","rugby football"],u:"1f3c9",a:"1"},{n:["ball","tennis","racquet"],u:"1f3be",a:"0.6"},{n:["ultimate","flying disc"],u:"1f94f",a:"11"},{n:["ball","game","bowling"],u:"1f3b3",a:"0.6"},{n:["bat","ball","game","cricket game"],u:"1f3cf",a:"1"},{n:["ball","game","field","stick","hockey","field hockey"],u:"1f3d1",a:"1"},{n:["ice","game","puck","stick","hockey","ice hockey"],u:"1f3d2",a:"1"},{n:["ball","goal","stick","lacrosse"],u:"1f94d",a:"11"},{n:["bat","ball","game","paddle","ping pong","table tennis"],u:"1f3d3",a:"1"},{n:["game","birdie","racquet","badminton","shuttlecock"],u:"1f3f8",a:"1"},{n:["glove","boxing","boxing glove"],u:"1f94a",a:"3"},{n:["judo","karate","uniform","taekwondo","martial arts","martial arts uniform"],u:"1f94b",a:"3"},{n:["net","goal","goal net"],u:"1f945",a:"3"},{n:["golf","hole","flag in hole"],u:"26f3",a:"0.6"},{n:["ice","skate","ice skate"],u:"26f8-fe0f",a:"0.7"},{n:["fish","pole","fishing pole"],u:"1f3a3",a:"0.6"},{n:["scuba","diving","snorkeling","diving mask"],u:"1f93f",a:"12"},{n:["sash","shirt","running","athletics","running shirt"],u:"1f3bd",a:"0.6"},{n:["ski","skis","snow"],u:"1f3bf",a:"0.6"},{n:["sled","sledge","sleigh"],u:"1f6f7",a:"5"},{n:["game","rock","curling stone"],u:"1f94c",a:"5"},{n:["hit","dart","game","target","bullseye","direct hit"],u:"1f3af",a:"0.6"},{n:["toy","yo yo","fluctuate"],u:"1fa80",a:"12"},{n:["fly","kite","soar"],u:"1fa81",a:"12"},{n:["gun","tool","water","pistol","weapon","handgun","revolver","water pistol"],u:"1f52b",a:"0.6"},{n:["8","ball","game","eight","billiard","pool 8 ball"],u:"1f3b1",a:"0.6"},{n:["ball","tool","crystal","fantasy","fortune","fairy tale","crystal ball"],u:"1f52e",a:"0.6"},{n:["magic","witch","wizard","magic wand"],u:"1fa84",a:"13"},{n:["game","video game","controller"],u:"1f3ae",a:"0.6"},{n:["game","joystick","video game"],u:"1f579-fe0f",a:"0.7"},{n:["game","slot","slot machine"],u:"1f3b0",a:"0.6"},{n:["die","dice","game","game die"],u:"1f3b2",a:"0.6"},{n:["clue","piece","jigsaw","puzzle","puzzle piece","interlocking"],u:"1f9e9",a:"11"},{n:["toy","plush","stuffed","plaything","teddy bear"],u:"1f9f8",a:"11"},{n:["party","piñata","celebration"],u:"1fa85",a:"13"},{n:["dance","disco","party","glitter","mirror ball"],u:"1faa9",a:"14"},{n:["doll","russia","nesting","nesting dolls"],u:"1fa86",a:"13"},{n:["card","game","spade suit"],u:"2660-fe0f",a:"0.6"},{n:["card","game","heart suit"],u:"2665-fe0f",a:"0.6"},{n:["card","game","diamond suit"],u:"2666-fe0f",a:"0.6"},{n:["card","game","club suit"],u:"2663-fe0f",a:"0.6"},{n:["dupe","chess","chess pawn","expendable"],u:"265f-fe0f",a:"11"},{n:["card","game","joker","wildcard"],u:"1f0cf",a:"0.6"},{n:["red","game","mahjong","mahjong red dragon"],u:"1f004",a:"0.6"},{n:["card","game","flower","playing","japanese","flower playing cards"],u:"1f3b4",a:"0.6"},{n:["art","mask","theater","theatre","performing","performing arts"],u:"1f3ad",a:"0.6"},{n:["art","frame","museum","picture","painting","framed picture"],u:"1f5bc-fe0f",a:"0.7"},{n:["art","museum","palette","painting","artist palette"],u:"1f3a8",a:"0.6"},{n:["spool","thread","needle","sewing","string"],u:"1f9f5",a:"11"},{n:["needle","sewing","sutures","stitches","tailoring","embroidery","sewing needle"],u:"1faa1",a:"13"},{n:["yarn","ball","knit","crochet"],u:"1f9f6",a:"11"},{n:["tie","knot","rope","twine","twist","tangled"],u:"1faa2",a:"13"}],objects:[{n:["eye","glasses","eyewear","clothing","eyeglasses"],u:"1f453",a:"0.6"},{n:["eye","dark","eyewear","glasses","sunglasses"],u:"1f576-fe0f",a:"0.7"},{n:["goggles","welding","swimming","eye protection"],u:"1f97d",a:"11"},{n:["doctor","lab coat","scientist","experiment"],u:"1f97c",a:"11"},{n:["vest","safety","emergency","safety vest"],u:"1f9ba",a:"12"},{n:["tie","necktie","clothing"],u:"1f454",a:"0.6"},{n:["shirt","tshirt","t shirt","clothing"],u:"1f455",a:"0.6"},{n:["jeans","pants","clothing","trousers"],u:"1f456",a:"0.6"},{n:["neck","scarf"],u:"1f9e3",a:"5"},{n:["hand","gloves"],u:"1f9e4",a:"5"},{n:["coat","jacket"],u:"1f9e5",a:"5"},{n:["socks","stocking"],u:"1f9e6",a:"5"},{n:["dress","clothing"],u:"1f457",a:"0.6"},{n:["kimono","clothing"],u:"1f458",a:"0.6"},{n:["sari","dress","clothing"],u:"1f97b",a:"12"},{n:["bathing suit","one piece swimsuit"],u:"1fa71",a:"12"},{n:["briefs","swimsuit","one piece","underwear","bathing suit"],u:"1fa72",a:"12"},{n:["pants","shorts","underwear","bathing suit"],u:"1fa73",a:"12"},{n:["swim","bikini","clothing"],u:"1f459",a:"0.6"},{n:["woman","clothing","woman’s clothes"],u:"1f45a",a:"0.6"},{n:["fan","hot","shy","dance","cooling","flutter","folding hand fan"],u:"1faad",a:"15"},{n:["coin","purse","clothing"],u:"1f45b",a:"0.6"},{n:["bag","purse","handbag","clothing"],u:"1f45c",a:"0.6"},{n:["bag","pouch","clothing","clutch bag"],u:"1f45d",a:"0.6"},{n:["bag","hotel","shopping","shopping bags"],u:"1f6cd-fe0f",a:"0.7"},{n:["bag","school","satchel","backpack","rucksack"],u:"1f392",a:"0.6"},{n:["zōri","thongs","sandals","thong sandal","beach sandals","thong sandals"],u:"1fa74",a:"13"},{n:["man","shoe","clothing","man’s shoe"],u:"1f45e",a:"0.6"},{n:["shoe","sneaker","athletic","clothing","running shoe"],u:"1f45f",a:"0.6"},{n:["boot","hiking","camping","hiking boot","backpacking"],u:"1f97e",a:"11"},{n:["slip on","slipper","flat shoe","ballet flat"],u:"1f97f",a:"11"},{n:["heel","shoe","woman","clothing","high heeled shoe"],u:"1f460",a:"0.6"},{n:["shoe","woman","sandal","clothing","woman’s sandal"],u:"1f461",a:"0.6"},{n:["dance","ballet","ballet shoes"],u:"1fa70",a:"12"},{n:["boot","shoe","woman","clothing","woman’s boot"],u:"1f462",a:"0.6"},{n:["afro","comb","hair","pick","hair pick"],u:"1faae",a:"15"},{n:["king","crown","queen","clothing"],u:"1f451",a:"0.6"},{n:["hat","woman","clothing","woman’s hat"],u:"1f452",a:"0.6"},{n:["hat","top","tophat","top hat","clothing"],u:"1f3a9",a:"0.6"},{n:["cap","hat","clothing","graduation","celebration","graduation cap"],u:"1f393",a:"0.6"},{n:["billed cap","baseball cap"],u:"1f9e2",a:"5"},{n:["army","helmet","soldier","warrior","military","military helmet"],u:"1fa96",a:"13"},{n:["aid","hat","face","cross","helmet","rescue worker’s helmet"],u:"26d1-fe0f",a:"0.7"},{n:["beads","prayer","clothing","necklace","religion","prayer beads"],u:"1f4ff",a:"1"},{n:["makeup","lipstick","cosmetics"],u:"1f484",a:"0.6"},{n:["ring","diamond"],u:"1f48d",a:"0.6"},{n:["gem","jewel","diamond","gem stone"],u:"1f48e",a:"0.6"},{n:["mute","quiet","silent","speaker","muted speaker"],u:"1f507",a:"1"},{n:["soft","speaker low volume"],u:"1f508",a:"0.7"},{n:["medium","speaker medium volume"],u:"1f509",a:"1"},{n:["loud","speaker high volume"],u:"1f50a",a:"0.6"},{n:["loud","loudspeaker","public address"],u:"1f4e2",a:"0.6"},{n:["cheering","megaphone"],u:"1f4e3",a:"0.6"},{n:["horn","post","postal","postal horn"],u:"1f4ef",a:"1"},{n:["bell"],u:"1f514",a:"0.6"},{n:["bell","mute","quiet","silent","forbidden","bell with slash"],u:"1f515",a:"1"},{n:["music","score","musical score"],u:"1f3bc",a:"0.6"},{n:["note","music","musical note"],u:"1f3b5",a:"0.6"},{n:["note","music","notes","musical notes"],u:"1f3b6",a:"0.6"},{n:["mic","music","studio","microphone","studio microphone"],u:"1f399-fe0f",a:"0.7"},{n:["level","music","slider","level slider"],u:"1f39a-fe0f",a:"0.7"},{n:["knobs","music","control","control knobs"],u:"1f39b-fe0f",a:"0.7"},{n:["mic","karaoke","microphone"],u:"1f3a4",a:"0.6"},{n:["earbud","headphone"],u:"1f3a7",a:"0.6"},{n:["radio","video"],u:"1f4fb",a:"0.6"},{n:["sax","music","saxophone","instrument"],u:"1f3b7",a:"0.6"},{n:["accordion","concertina","squeeze box"],u:"1fa97",a:"13"},{n:["music","guitar","instrument"],u:"1f3b8",a:"0.6"},{n:["music","piano","keyboard","instrument","musical keyboard"],u:"1f3b9",a:"0.6"},{n:["music","trumpet","instrument"],u:"1f3ba",a:"0.6"},{n:["music","violin","instrument"],u:"1f3bb",a:"0.6"},{n:["banjo","music","stringed"],u:"1fa95",a:"12"},{n:["drum","music","drumsticks"],u:"1f941",a:"3"},{n:["beat","drum","conga","rhythm","long drum"],u:"1fa98",a:"13"},{n:["music","shake","rattle","maracas","instrument","percussion"],u:"1fa87",a:"15"},{n:["fife","pipe","flute","music","recorder","woodwind"],u:"1fa88",a:"15"},{n:["cell","phone","mobile","telephone","mobile phone"],u:"1f4f1",a:"0.6"},{n:["cell","arrow","phone","mobile","receive","mobile phone with arrow"],u:"1f4f2",a:"0.6"},{n:["phone","telephone"],u:"260e-fe0f",a:"0.6"},{n:["phone","receiver","telephone","telephone receiver"],u:"1f4de",a:"0.6"},{n:["pager"],u:"1f4df",a:"0.6"},{n:["fax","fax machine"],u:"1f4e0",a:"0.6"},{n:["battery"],u:"1f50b",a:"0.6"},{n:["electronic","low energy","low battery"],u:"1faab",a:"14"},{n:["plug","electric","electricity","electric plug"],u:"1f50c",a:"0.6"},{n:["pc","laptop","computer","personal"],u:"1f4bb",a:"0.6"},{n:["desktop","computer","desktop computer"],u:"1f5a5-fe0f",a:"0.7"},{n:["printer","computer"],u:"1f5a8-fe0f",a:"0.7"},{n:["keyboard","computer"],u:"2328-fe0f",a:"1"},{n:["computer","computer mouse"],u:"1f5b1-fe0f",a:"0.7"},{n:["computer","trackball"],u:"1f5b2-fe0f",a:"0.7"},{n:["disk","optical","computer","minidisk","computer disk"],u:"1f4bd",a:"0.6"},{n:["disk","floppy","computer","floppy disk"],u:"1f4be",a:"0.6"},{n:["cd","disk","optical","computer","optical disk"],u:"1f4bf",a:"0.6"},{n:["dvd","disk","blu ray","optical","computer"],u:"1f4c0",a:"0.6"},{n:["abacus","calculation"],u:"1f9ee",a:"11"},{n:["movie","camera","cinema","movie camera"],u:"1f3a5",a:"0.6"},{n:["film","movie","cinema","frames","film frames"],u:"1f39e-fe0f",a:"0.7"},{n:["film","movie","video","cinema","projector","film projector"],u:"1f4fd-fe0f",a:"0.7"},{n:["movie","clapper","clapper board"],u:"1f3ac",a:"0.6"},{n:["tv","video","television"],u:"1f4fa",a:"0.6"},{n:["video","camera"],u:"1f4f7",a:"0.6"},{n:["flash","video","camera","camera with flash"],u:"1f4f8",a:"1"},{n:["video","camera","video camera"],u:"1f4f9",a:"0.6"},{n:["vhs","tape","video","videocassette"],u:"1f4fc",a:"0.6"},{n:["tool","glass","search","magnifying","magnifying glass tilted left"],u:"1f50d",a:"0.6"},{n:["tool","glass","search","magnifying","magnifying glass tilted right"],u:"1f50e",a:"0.6"},{n:["light","candle"],u:"1f56f-fe0f",a:"0.7"},{n:["bulb","idea","comic","light","electric","light bulb"],u:"1f4a1",a:"0.6"},{n:["tool","light","torch","electric","flashlight"],u:"1f526",a:"0.6"},{n:["bar","red","light","lantern","red paper lantern"],u:"1f3ee",a:"0.6"},{n:["oil","diya","lamp","diya lamp"],u:"1fa94",a:"12"},{n:["book","cover","notebook","decorated","notebook with decorative cover"],u:"1f4d4",a:"0.6"},{n:["book","closed","closed book"],u:"1f4d5",a:"0.6"},{n:["book","open","open book"],u:"1f4d6",a:"0.6"},{n:["book","green","green book"],u:"1f4d7",a:"0.6"},{n:["blue","book","blue book"],u:"1f4d8",a:"0.6"},{n:["book","orange","orange book"],u:"1f4d9",a:"0.6"},{n:["book","books"],u:"1f4da",a:"0.6"},{n:["notebook"],u:"1f4d3",a:"0.6"},{n:["ledger","notebook"],u:"1f4d2",a:"0.6"},{n:["curl","page","document","page with curl"],u:"1f4c3",a:"0.6"},{n:["paper","scroll"],u:"1f4dc",a:"0.6"},{n:["page","document","page facing up"],u:"1f4c4",a:"0.6"},{n:["news","paper","newspaper"],u:"1f4f0",a:"0.6"},{n:["news","paper","rolled","newspaper","rolled up newspaper"],u:"1f5de-fe0f",a:"0.7"},{n:["mark","tabs","marker","bookmark","bookmark tabs"],u:"1f4d1",a:"0.6"},{n:["mark","bookmark"],u:"1f516",a:"0.6"},{n:["label"],u:"1f3f7-fe0f",a:"0.7"},{n:["bag","money","dollar","moneybag","money bag"],u:"1f4b0",a:"0.6"},{n:["coin","gold","metal","money","silver","treasure"],u:"1fa99",a:"13"},{n:["yen","bill","note","money","banknote","currency","yen banknote"],u:"1f4b4",a:"0.6"},{n:["bill","note","money","dollar","banknote","currency","dollar banknote"],u:"1f4b5",a:"0.6"},{n:["bill","euro","note","money","banknote","currency","euro banknote"],u:"1f4b6",a:"1"},{n:["bill","note","money","pound","banknote","currency","pound banknote"],u:"1f4b7",a:"1"},{n:["fly","bill","money","wings","banknote","money with wings"],u:"1f4b8",a:"0.6"},{n:["card","money","credit","credit card"],u:"1f4b3",a:"0.6"},{n:["proof","receipt","evidence","accounting","bookkeeping"],u:"1f9fe",a:"11"},{n:["yen","chart","graph","money","growth","chart increasing with yen"],u:"1f4b9",a:"0.6"},{n:["email","letter","envelope"],u:"2709-fe0f",a:"0.6"},{n:["mail","email","e mail","letter"],u:"1f4e7",a:"0.6"},{n:["email","e mail","letter","receive","envelope","incoming","incoming envelope"],u:"1f4e8",a:"0.6"},{n:["arrow","email","e mail","envelope","outgoing","envelope with arrow"],u:"1f4e9",a:"0.6"},{n:["box","mail","sent","tray","letter","outbox","outbox tray"],u:"1f4e4",a:"0.6"},{n:["box","mail","tray","inbox","letter","receive","inbox tray"],u:"1f4e5",a:"0.6"},{n:["box","parcel","package"],u:"1f4e6",a:"0.6"},{n:["mail","closed","mailbox","postbox","closed mailbox with raised flag"],u:"1f4eb",a:"0.6"},{n:["mail","closed","lowered","mailbox","postbox","closed mailbox with lowered flag"],u:"1f4ea",a:"0.6"},{n:["mail","open","mailbox","postbox","open mailbox with raised flag"],u:"1f4ec",a:"0.7"},{n:["mail","open","lowered","mailbox","postbox","open mailbox with lowered flag"],u:"1f4ed",a:"0.7"},{n:["mail","postbox","mailbox"],u:"1f4ee",a:"0.6"},{n:["box","ballot","ballot box with ballot"],u:"1f5f3-fe0f",a:"0.7"},{n:["pencil"],u:"270f-fe0f",a:"0.6"},{n:["nib","pen","black nib"],u:"2712-fe0f",a:"0.6"},{n:["pen","fountain","fountain pen"],u:"1f58b-fe0f",a:"0.7"},{n:["pen","ballpoint"],u:"1f58a-fe0f",a:"0.7"},{n:["painting","paintbrush"],u:"1f58c-fe0f",a:"0.7"},{n:["crayon"],u:"1f58d-fe0f",a:"0.7"},{n:["memo","pencil"],u:"1f4dd",a:"0.6"},{n:["briefcase"],u:"1f4bc",a:"0.6"},{n:["file","folder","file folder"],u:"1f4c1",a:"0.6"},{n:["file","open","folder","open file folder"],u:"1f4c2",a:"0.6"},{n:["card","index","dividers","card index dividers"],u:"1f5c2-fe0f",a:"0.7"},{n:["date","calendar"],u:"1f4c5",a:"0.6"},{n:["calendar","tear off calendar"],u:"1f4c6",a:"0.6"},{n:["pad","note","spiral","spiral notepad"],u:"1f5d2-fe0f",a:"0.7"},{n:["pad","spiral","calendar","spiral calendar"],u:"1f5d3-fe0f",a:"0.7"},{n:["card","index","rolodex","card index"],u:"1f4c7",a:"0.6"},{n:["chart","graph","trend","growth","upward","chart increasing"],u:"1f4c8",a:"0.6"},{n:["down","chart","graph","trend","chart decreasing"],u:"1f4c9",a:"0.6"},{n:["bar","chart","graph","bar chart"],u:"1f4ca",a:"0.6"},{n:["clipboard"],u:"1f4cb",a:"0.6"},{n:["pin","pushpin"],u:"1f4cc",a:"0.6"},{n:["pin","pushpin","round pushpin"],u:"1f4cd",a:"0.6"},{n:["paperclip"],u:"1f4ce",a:"0.6"},{n:["link","paperclip","linked paperclips"],u:"1f587-fe0f",a:"0.7"},{n:["ruler","straight edge","straight ruler"],u:"1f4cf",a:"0.6"},{n:["set","ruler","triangle","triangular ruler"],u:"1f4d0",a:"0.6"},{n:["tool","cutting","scissors"],u:"2702-fe0f",a:"0.6"},{n:["box","card","file","card file box"],u:"1f5c3-fe0f",a:"0.7"},{n:["file","filing","cabinet","file cabinet"],u:"1f5c4-fe0f",a:"0.7"},{n:["wastebasket"],u:"1f5d1-fe0f",a:"0.7"},{n:["locked","closed"],u:"1f512",a:"0.6"},{n:["lock","open","unlock","unlocked"],u:"1f513",a:"0.6"},{n:["ink","nib","pen","lock","privacy","locked with pen"],u:"1f50f",a:"0.6"},{n:["key","lock","closed","secure","locked with key"],u:"1f510",a:"0.6"},{n:["key","lock","password"],u:"1f511",a:"0.6"},{n:["key","old","clue","lock","old key"],u:"1f5dd-fe0f",a:"0.7"},{n:["tool","hammer"],u:"1f528",a:"0.6"},{n:["axe","chop","wood","split","hatchet"],u:"1fa93",a:"12"},{n:["pick","tool","mining"],u:"26cf-fe0f",a:"0.7"},{n:["pick","tool","hammer","hammer and pick"],u:"2692-fe0f",a:"1"},{n:["tool","hammer","wrench","spanner","hammer and wrench"],u:"1f6e0-fe0f",a:"0.7"},{n:["knife","dagger","weapon"],u:"1f5e1-fe0f",a:"0.7"},{n:["swords","weapon","crossed","crossed swords"],u:"2694-fe0f",a:"1"},{n:["bomb","comic"],u:"1f4a3",a:"0.6"},{n:["rebound","boomerang","repercussion"],u:"1fa83",a:"13"},{n:["bow","arrow","archer","zodiac","sagittarius","bow and arrow"],u:"1f3f9",a:"1"},{n:["shield","weapon"],u:"1f6e1-fe0f",a:"0.7"},{n:["saw","tool","lumber","carpenter","carpentry saw"],u:"1fa9a",a:"13"},{n:["tool","wrench","spanner"],u:"1f527",a:"0.6"},{n:["tool","screw","screwdriver"],u:"1fa9b",a:"13"},{n:["nut","bolt","tool","nut and bolt"],u:"1f529",a:"0.6"},{n:["cog","gear","tool","cogwheel"],u:"2699-fe0f",a:"1"},{n:["tool","vice","clamp","compress"],u:"1f5dc-fe0f",a:"0.7"},{n:["libra","scale","zodiac","balance","justice","balance scale"],u:"2696-fe0f",a:"1"},{n:["blind","white cane","accessibility"],u:"1f9af",a:"12"},{n:["link"],u:"1f517",a:"0.6"},{n:["break","chain","cuffs","freedom","breaking","broken chain"],u:"26d3-fe0f-200d-1f4a5",a:"15.1"},{n:["chain","chains"],u:"26d3-fe0f",a:"0.7"},{n:["hook","catch","crook","curve","ensnare","selling point"],u:"1fa9d",a:"13"},{n:["tool","chest","toolbox","mechanic"],u:"1f9f0",a:"11"},{n:["magnet","magnetic","horseshoe","attraction"],u:"1f9f2",a:"11"},{n:["rung","step","climb","ladder"],u:"1fa9c",a:"13"},{n:["tool","alembic","chemistry"],u:"2697-fe0f",a:"1"},{n:["lab","chemist","science","test tube","chemistry","experiment"],u:"1f9ea",a:"11"},{n:["lab","biology","culture","bacteria","biologist","petri dish"],u:"1f9eb",a:"11"},{n:["dna","gene","life","genetics","biologist","evolution"],u:"1f9ec",a:"11"},{n:["tool","science","microscope"],u:"1f52c",a:"1"},{n:["tool","science","telescope"],u:"1f52d",a:"1"},{n:["dish","antenna","satellite","satellite antenna"],u:"1f4e1",a:"0.6"},{n:["shot","sick","needle","syringe","medicine"],u:"1f489",a:"0.6"},{n:["bleed","injury","medicine","menstruation","drop of blood","blood donation"],u:"1fa78",a:"12"},{n:["pill","sick","doctor","medicine"],u:"1f48a",a:"0.6"},{n:["bandage","adhesive bandage"],u:"1fa79",a:"12"},{n:["cane","hurt","stick","crutch","disability","mobility aid"],u:"1fa7c",a:"14"},{n:["heart","doctor","medicine","stethoscope"],u:"1fa7a",a:"12"},{n:["x ray","bones","doctor","medical","skeleton"],u:"1fa7b",a:"14"},{n:["door"],u:"1f6aa",a:"0.6"},{n:["lift","hoist","elevator","accessibility"],u:"1f6d7",a:"13"},{n:["mirror","speculum","reflector","reflection"],u:"1fa9e",a:"13"},{n:["view","frame","window","opening","fresh air","transparent"],u:"1fa9f",a:"13"},{n:["bed","hotel","sleep"],u:"1f6cf-fe0f",a:"0.7"},{n:["lamp","couch","hotel","couch and lamp"],u:"1f6cb-fe0f",a:"0.7"},{n:["sit","seat","chair"],u:"1fa91",a:"12"},{n:["toilet"],u:"1f6bd",a:"0.6"},{n:["toilet","plunger","plumber","suction","force cup"],u:"1faa0",a:"13"},{n:["water","shower"],u:"1f6bf",a:"1"},{n:["bath","bathtub"],u:"1f6c1",a:"1"},{n:["bait","trap","snare","mousetrap","mouse trap"],u:"1faa4",a:"13"},{n:["razor","sharp","shave"],u:"1fa92",a:"12"},{n:["lotion","shampoo","sunscreen","moisturizer","lotion bottle"],u:"1f9f4",a:"11"},{n:["diaper","punk rock","safety pin"],u:"1f9f7",a:"11"},{n:["broom","witch","cleaning","sweeping"],u:"1f9f9",a:"11"},{n:["basket","picnic","farming","laundry"],u:"1f9fa",a:"11"},{n:["paper towels","toilet paper","roll of paper"],u:"1f9fb",a:"11"},{n:["vat","cask","pail","bucket"],u:"1faa3",a:"13"},{n:["bar","soap","lather","bathing","cleaning","soapdish"],u:"1f9fc",a:"11"},{n:["burp","soap","clean","bubbles","underwater"],u:"1fae7",a:"14"},{n:["brush","clean","teeth","dental","hygiene","bathroom","toothbrush"],u:"1faa5",a:"13"},{n:["sponge","porous","cleaning","absorbing"],u:"1f9fd",a:"11"},{n:["fire","quench","extinguish","fire extinguisher"],u:"1f9ef",a:"11"},{n:["cart","trolley","shopping","shopping cart"],u:"1f6d2",a:"3"},{n:["smoking","cigarette"],u:"1f6ac",a:"0.6"},{n:["death","coffin"],u:"26b0-fe0f",a:"1"},{n:["grave","cemetery","headstone","graveyard","tombstone"],u:"1faa6",a:"13"},{n:["urn","ashes","death","funeral","funeral urn"],u:"26b1-fe0f",a:"1"},{n:["bead","charm","nazar","evil eye","talisman","nazar amulet"],u:"1f9ff",a:"11"},{n:["hand","mary","hamsa","amulet","fatima","miriam","protection"],u:"1faac",a:"14"},{n:["moai","face","moyai","statue"],u:"1f5ff",a:"0.6"},{n:["sign","picket","placard","protest","demonstration"],u:"1faa7",a:"13"},{n:["id","license","security","credentials","identification card"],u:"1faaa",a:"14"}],symbols:[{n:["atm","bank","teller","ATM sign","atm sign","automated"],u:"1f3e7",a:"0.6"},{n:["litter","litter bin","litter in bin sign"],u:"1f6ae",a:"1"},{n:["water","potable","drinking","potable water"],u:"1f6b0",a:"1"},{n:["access","wheelchair symbol"],u:"267f",a:"0.6"},{n:["wc","man","toilet","bathroom","lavatory","restroom","men’s room"],u:"1f6b9",a:"0.6"},{n:["wc","woman","toilet","bathroom","lavatory","restroom","women’s room"],u:"1f6ba",a:"0.6"},{n:["wc","toilet","restroom","bathroom","lavatory"],u:"1f6bb",a:"0.6"},{n:["baby","changing","baby symbol"],u:"1f6bc",a:"0.6"},{n:["wc","water","closet","toilet","bathroom","lavatory","restroom","water closet"],u:"1f6be",a:"0.6"},{n:["control","passport","passport control"],u:"1f6c2",a:"1"},{n:["customs"],u:"1f6c3",a:"1"},{n:["claim","baggage","baggage claim"],u:"1f6c4",a:"1"},{n:["locker","baggage","luggage","left luggage"],u:"1f6c5",a:"1"},{n:["warning"],u:"26a0-fe0f",a:"0.6"},{n:["child","traffic","crossing","pedestrian","children crossing"],u:"1f6b8",a:"1"},{n:["no","not","entry","traffic","no entry","forbidden","prohibited"],u:"26d4",a:"0.6"},{n:["no","not","entry","forbidden","prohibited"],u:"1f6ab",a:"0.6"},{n:["no","bike","bicycle","forbidden","prohibited","no bicycles"],u:"1f6b3",a:"1"},{n:["no","not","smoking","forbidden","no smoking","prohibited"],u:"1f6ad",a:"0.6"},{n:["no","not","litter","forbidden","prohibited","no littering"],u:"1f6af",a:"1"},{n:["water","non potable","non drinking","non potable water"],u:"1f6b1",a:"1"},{n:["no","not","forbidden","pedestrian","prohibited","no pedestrians"],u:"1f6b7",a:"1"},{n:["no","cell","phone","mobile","forbidden","no mobile phones"],u:"1f4f5",a:"1"},{n:["18","eighteen","underage","prohibited","age restriction","no one under eighteen"],u:"1f51e",a:"0.6"},{n:["sign","radioactive"],u:"2622-fe0f",a:"1"},{n:["sign","biohazard"],u:"2623-fe0f",a:"1"},{n:["arrow","north","up arrow","cardinal","direction"],u:"2b06-fe0f",a:"0.6"},{n:["arrow","direction","northeast","intercardinal","up right arrow"],u:"2197-fe0f",a:"0.6"},{n:["east","arrow","cardinal","direction","right arrow"],u:"27a1-fe0f",a:"0.6"},{n:["arrow","direction","southeast","intercardinal","down right arrow"],u:"2198-fe0f",a:"0.6"},{n:["down","arrow","south","cardinal","direction","down arrow"],u:"2b07-fe0f",a:"0.6"},{n:["arrow","direction","southwest","intercardinal","down left arrow"],u:"2199-fe0f",a:"0.6"},{n:["west","arrow","cardinal","direction","left arrow"],u:"2b05-fe0f",a:"0.6"},{n:["arrow","direction","northwest","up left arrow","intercardinal"],u:"2196-fe0f",a:"0.6"},{n:["arrow","up down arrow"],u:"2195-fe0f",a:"0.6"},{n:["arrow","left right arrow"],u:"2194-fe0f",a:"0.6"},{n:["arrow","right arrow curving left"],u:"21a9-fe0f",a:"0.6"},{n:["arrow","left arrow curving right"],u:"21aa-fe0f",a:"0.6"},{n:["arrow","right arrow curving up"],u:"2934-fe0f",a:"0.6"},{n:["down","arrow","right arrow curving down"],u:"2935-fe0f",a:"0.6"},{n:["arrow","reload","clockwise","clockwise vertical arrows"],u:"1f503",a:"0.6"},{n:["arrow","withershins","anticlockwise","counterclockwise","counterclockwise arrows button"],u:"1f504",a:"1"},{n:["back","arrow","BACK arrow"],u:"1f519",a:"0.6"},{n:["end","arrow","END arrow"],u:"1f51a",a:"0.6"},{n:["on","on!","mark","arrow","ON! arrow"],u:"1f51b",a:"0.6"},{n:["soon","arrow","SOON arrow"],u:"1f51c",a:"0.6"},{n:["up","top","arrow","TOP arrow"],u:"1f51d",a:"0.6"},{n:["worship","religion","place of worship"],u:"1f6d0",a:"1"},{n:["atom","atheist","atom symbol"],u:"269b-fe0f",a:"1"},{n:["om","hindu","religion"],u:"1f549-fe0f",a:"0.7"},{n:["jew","star","david","jewish","religion","star of David","star of david"],u:"2721-fe0f",a:"0.7"},{n:["wheel","dharma","buddhist","religion","wheel of dharma"],u:"2638-fe0f",a:"0.7"},{n:["tao","yin","yang","taoist","yin yang","religion"],u:"262f-fe0f",a:"0.7"},{n:["cross","religion","christian","latin cross"],u:"271d-fe0f",a:"0.7"},{n:["cross","religion","christian","orthodox cross"],u:"2626-fe0f",a:"1"},{n:["islam","muslim","religion","star and crescent"],u:"262a-fe0f",a:"0.7"},{n:["peace","peace symbol"],u:"262e-fe0f",a:"1"},{n:["menorah","religion","candelabrum","candlestick"],u:"1f54e",a:"1"},{n:["star","fortune","dotted six pointed star"],u:"1f52f",a:"0.6"},{n:["sikh","khanda","religion"],u:"1faaf",a:"15"},{n:["ram","Aries","aries","zodiac"],u:"2648",a:"0.6"},{n:["ox","bull","Taurus","taurus","zodiac"],u:"2649",a:"0.6"},{n:["twins","Gemini","gemini","zodiac"],u:"264a",a:"0.6"},{n:["crab","Cancer","cancer","zodiac"],u:"264b",a:"0.6"},{n:["Leo","leo","lion","zodiac"],u:"264c",a:"0.6"},{n:["Virgo","virgo","zodiac"],u:"264d",a:"0.6"},{n:["Libra","libra","scales","zodiac","balance","justice"],u:"264e",a:"0.6"},{n:["zodiac","Scorpio","scorpio","scorpion","scorpius"],u:"264f",a:"0.6"},{n:["archer","zodiac","Sagittarius","sagittarius"],u:"2650",a:"0.6"},{n:["goat","zodiac","Capricorn","capricorn"],u:"2651",a:"0.6"},{n:["water","bearer","zodiac","Aquarius","aquarius"],u:"2652",a:"0.6"},{n:["fish","Pisces","pisces","zodiac"],u:"2653",a:"0.6"},{n:["snake","bearer","zodiac","serpent","Ophiuchus","ophiuchus"],u:"26ce",a:"0.6"},{n:["arrow","crossed","shuffle tracks button"],u:"1f500",a:"1"},{n:["arrow","repeat","clockwise","repeat button"],u:"1f501",a:"1"},{n:["once","arrow","clockwise","repeat single button"],u:"1f502",a:"1"},{n:["play","arrow","right","triangle","play button"],u:"25b6-fe0f",a:"0.6"},{n:["fast","arrow","double","forward","fast forward button"],u:"23e9",a:"0.6"},{n:["arrow","triangle","next scene","next track","next track button"],u:"23ed-fe0f",a:"0.7"},{n:["play","arrow","pause","right","triangle","play or pause button"],u:"23ef-fe0f",a:"1"},{n:["left","arrow","reverse","triangle","reverse button"],u:"25c0-fe0f",a:"0.6"},{n:["arrow","double","rewind","fast reverse button"],u:"23ea",a:"0.6"},{n:["arrow","triangle","previous scene","previous track","last track button"],u:"23ee-fe0f",a:"0.7"},{n:["arrow","button","upwards button"],u:"1f53c",a:"0.6"},{n:["arrow","double","fast up button"],u:"23eb",a:"0.6"},{n:["down","arrow","button","downwards button"],u:"1f53d",a:"0.6"},{n:["down","arrow","double","fast down button"],u:"23ec",a:"0.6"},{n:["bar","pause","double","vertical","pause button"],u:"23f8-fe0f",a:"0.7"},{n:["stop","square","stop button"],u:"23f9-fe0f",a:"0.7"},{n:["circle","record","record button"],u:"23fa-fe0f",a:"0.7"},{n:["eject","eject button"],u:"23cf-fe0f",a:"1"},{n:["film","movie","cinema","camera"],u:"1f3a6",a:"0.6"},{n:["dim","low","dim button","brightness"],u:"1f505",a:"1"},{n:["bright","brightness","bright button"],u:"1f506",a:"1"},{n:["bar","cell","phone","mobile","antenna","antenna bars"],u:"1f4f6",a:"0.6"},{n:["wifi","wi fi","network","wireless","computer","internet"],u:"1f6dc",a:"15"},{n:["cell","mode","phone","mobile","telephone","vibration","vibration mode"],u:"1f4f3",a:"0.6"},{n:["off","cell","phone","mobile","telephone","mobile phone off"],u:"1f4f4",a:"0.6"},{n:["woman","female sign"],u:"2640-fe0f",a:"4"},{n:["man","male sign"],u:"2642-fe0f",a:"4"},{n:["transgender","transgender symbol"],u:"26a7-fe0f",a:"13"},{n:["x","×","sign","cancel","multiply","multiplication"],u:"2716-fe0f",a:"0.6"},{n:["+","plus","math","sign"],u:"2795",a:"0.6"},{n:[" ","−","math","sign","minus"],u:"2796",a:"0.6"},{n:["÷","math","sign","divide","division"],u:"2797",a:"0.6"},{n:["math","equality","heavy equals sign"],u:"1f7f0",a:"14"},{n:["forever","infinity","unbounded","universal"],u:"267e-fe0f",a:"11"},{n:["!","!!","mark","bangbang","exclamation","double exclamation mark"],u:"203c-fe0f",a:"0.6"},{n:["!","?","!?","mark","question","exclamation","interrobang","punctuation","exclamation question mark"],u:"2049-fe0f",a:"0.6"},{n:["?","mark","question","punctuation","red question mark"],u:"2753",a:"0.6"},{n:["?","mark","outlined","question","punctuation","white question mark"],u:"2754",a:"0.6"},{n:["!","mark","outlined","exclamation","punctuation","white exclamation mark"],u:"2755",a:"0.6"},{n:["!","mark","exclamation","punctuation","red exclamation mark"],u:"2757",a:"0.6"},{n:["dash","wavy","wavy dash","punctuation"],u:"3030-fe0f",a:"0.6"},{n:["bank","money","currency","exchange","currency exchange"],u:"1f4b1",a:"0.6"},{n:["money","dollar","currency","heavy dollar sign"],u:"1f4b2",a:"0.6"},{n:["staff","medicine","aesculapius","medical symbol"],u:"2695-fe0f",a:"4"},{n:["recycle","recycling symbol"],u:"267b-fe0f",a:"0.6"},{n:["fleur de lis"],u:"269c-fe0f",a:"1"},{n:["ship","tool","anchor","emblem","trident","trident emblem"],u:"1f531",a:"0.6"},{n:["name","badge","name badge"],u:"1f4db",a:"0.6"},{n:["leaf","chevron","beginner","japanese","Japanese symbol for beginner","japanese symbol for beginner"],u:"1f530",a:"0.6"},{n:["o","red","large","circle","hollow red circle"],u:"2b55",a:"0.6"},{n:["✓","mark","check","button","check mark button"],u:"2705",a:"0.6"},{n:["✓","box","check","check box with check"],u:"2611-fe0f",a:"0.6"},{n:["✓","mark","check","check mark"],u:"2714-fe0f",a:"0.6"},{n:["x","×","mark","cross","cancel","multiply","cross mark","multiplication"],u:"274c",a:"0.6"},{n:["x","×","mark","square","cross mark button"],u:"274e",a:"0.6"},{n:["curl","loop","curly loop"],u:"27b0",a:"0.6"},{n:["curl","loop","double","double curly loop"],u:"27bf",a:"1"},{n:["mark","part","part alternation mark"],u:"303d-fe0f",a:"0.6"},{n:["*","asterisk","eight spoked asterisk"],u:"2733-fe0f",a:"0.6"},{n:["*","star","eight pointed star"],u:"2734-fe0f",a:"0.6"},{n:["*","sparkle"],u:"2747-fe0f",a:"0.6"},{n:["c","copyright"],u:"00a9-fe0f",a:"0.6"},{n:["r","registered"],u:"00ae-fe0f",a:"0.6"},{n:["tm","mark","trademark","trade mark"],u:"2122-fe0f",a:"0.6"},{n:["keycap","keycap: #"],u:"0023-fe0f-20e3",a:"0.6"},{n:["keycap","keycap: *"],u:"002a-fe0f-20e3",a:"2"},{n:["keycap","keycap: 0"],u:"0030-fe0f-20e3",a:"0.6"},{n:["keycap","keycap: 1"],u:"0031-fe0f-20e3",a:"0.6"},{n:["keycap","keycap: 2"],u:"0032-fe0f-20e3",a:"0.6"},{n:["keycap","keycap: 3"],u:"0033-fe0f-20e3",a:"0.6"},{n:["keycap","keycap: 4"],u:"0034-fe0f-20e3",a:"0.6"},{n:["keycap","keycap: 5"],u:"0035-fe0f-20e3",a:"0.6"},{n:["keycap","keycap: 6"],u:"0036-fe0f-20e3",a:"0.6"},{n:["keycap","keycap: 7"],u:"0037-fe0f-20e3",a:"0.6"},{n:["keycap","keycap: 8"],u:"0038-fe0f-20e3",a:"0.6"},{n:["keycap","keycap: 9"],u:"0039-fe0f-20e3",a:"0.6"},{n:["keycap","keycap: 10"],u:"1f51f",a:"0.6"},{n:["abcd","input","latin","letters","uppercase","input latin uppercase"],u:"1f520",a:"0.6"},{n:["abcd","input","latin","letters","lowercase","input latin lowercase"],u:"1f521",a:"0.6"},{n:["1234","input","numbers","input numbers"],u:"1f522",a:"0.6"},{n:["〒♪&%","input","input symbols"],u:"1f523",a:"0.6"},{n:["abc","input","latin","letters","alphabet","input latin letters"],u:"1f524",a:"0.6"},{n:["a","blood type","A button (blood type)","a button (blood type)"],u:"1f170-fe0f",a:"0.6"},{n:["ab","blood type","AB button (blood type)","ab button (blood type)"],u:"1f18e",a:"0.6"},{n:["b","blood type","B button (blood type)","b button (blood type)"],u:"1f171-fe0f",a:"0.6"},{n:["cl","CL button","cl button"],u:"1f191",a:"0.6"},{n:["cool","COOL button","cool button"],u:"1f192",a:"0.6"},{n:["free","FREE button","free button"],u:"1f193",a:"0.6"},{n:["i","information"],u:"2139-fe0f",a:"0.6"},{n:["id","identity","ID button","id button"],u:"1f194",a:"0.6"},{n:["m","circle","circled M","circled m"],u:"24c2-fe0f",a:"0.6"},{n:["new","NEW button","new button"],u:"1f195",a:"0.6"},{n:["ng","NG button","ng button"],u:"1f196",a:"0.6"},{n:["o","blood type","O button (blood type)","o button (blood type)"],u:"1f17e-fe0f",a:"0.6"},{n:["ok","OK button","ok button"],u:"1f197",a:"0.6"},{n:["p","parking","P button","p button"],u:"1f17f-fe0f",a:"0.6"},{n:["sos","help","SOS button","sos button"],u:"1f198",a:"0.6"},{n:["up","up!","mark","UP! button","up! button"],u:"1f199",a:"0.6"},{n:["vs","versus","VS button","vs button"],u:"1f19a",a:"0.6"},{n:["ココ","“here”","japanese","katakana","Japanese “here” button","japanese “here” button"],u:"1f201",a:"0.6"},{n:["サ","japanese","katakana","“service charge”","Japanese “service charge” button","japanese “service charge” button"],u:"1f202-fe0f",a:"0.6"},{n:["月","japanese","ideograph","“monthly amount”","Japanese “monthly amount” button","japanese “monthly amount” button"],u:"1f237-fe0f",a:"0.6"},{n:["有","japanese","ideograph","“not free of charge”","Japanese “not free of charge” button","japanese “not free of charge” button"],u:"1f236",a:"0.6"},{n:["指","japanese","ideograph","“reserved”","Japanese “reserved” button","japanese “reserved” button"],u:"1f22f",a:"0.6"},{n:["得","japanese","ideograph","“bargain”","Japanese “bargain” button","japanese “bargain” button"],u:"1f250",a:"0.6"},{n:["割","japanese","ideograph","“discount”","Japanese “discount” button","japanese “discount” button"],u:"1f239",a:"0.6"},{n:["無","japanese","ideograph","“free of charge”","Japanese “free of charge” button","japanese “free of charge” button"],u:"1f21a",a:"0.6"},{n:["禁","japanese","ideograph","“prohibited”","Japanese “prohibited” button","japanese “prohibited” button"],u:"1f232",a:"0.6"},{n:["可","japanese","ideograph","“acceptable”","Japanese “acceptable” button","japanese “acceptable” button"],u:"1f251",a:"0.6"},{n:["申","japanese","ideograph","“application”","Japanese “application” button","japanese “application” button"],u:"1f238",a:"0.6"},{n:["合","japanese","ideograph","“passing grade”","Japanese “passing grade” button","japanese “passing grade” button"],u:"1f234",a:"0.6"},{n:["空","japanese","ideograph","“vacancy”","Japanese “vacancy” button","japanese “vacancy” button"],u:"1f233",a:"0.6"},{n:["祝","japanese","ideograph","“congratulations”","Japanese “congratulations” button","japanese “congratulations” button"],u:"3297-fe0f",a:"0.6"},{n:["秘","japanese","“secret”","ideograph","Japanese “secret” button","japanese “secret” button"],u:"3299-fe0f",a:"0.6"},{n:["営","japanese","ideograph","“open for business”","Japanese “open for business” button","japanese “open for business” button"],u:"1f23a",a:"0.6"},{n:["満","japanese","ideograph","“no vacancy”","Japanese “no vacancy” button","japanese “no vacancy” button"],u:"1f235",a:"0.6"},{n:["red","circle","geometric","red circle"],u:"1f534",a:"0.6"},{n:["circle","orange","orange circle"],u:"1f7e0",a:"12"},{n:["circle","yellow","yellow circle"],u:"1f7e1",a:"12"},{n:["green","circle","green circle"],u:"1f7e2",a:"12"},{n:["blue","circle","geometric","blue circle"],u:"1f535",a:"0.6"},{n:["circle","purple","purple circle"],u:"1f7e3",a:"12"},{n:["brown","circle","brown circle"],u:"1f7e4",a:"12"},{n:["circle","geometric","black circle"],u:"26ab",a:"0.6"},{n:["circle","geometric","white circle"],u:"26aa",a:"0.6"},{n:["red","square","red square"],u:"1f7e5",a:"12"},{n:["orange","square","orange square"],u:"1f7e7",a:"12"},{n:["square","yellow","yellow square"],u:"1f7e8",a:"12"},{n:["green","square","green square"],u:"1f7e9",a:"12"},{n:["blue","square","blue square"],u:"1f7e6",a:"12"},{n:["purple","square","purple square"],u:"1f7ea",a:"12"},{n:["brown","square","brown square"],u:"1f7eb",a:"12"},{n:["square","geometric","black large square"],u:"2b1b",a:"0.6"},{n:["square","geometric","white large square"],u:"2b1c",a:"0.6"},{n:["square","geometric","black medium square"],u:"25fc-fe0f",a:"0.6"},{n:["square","geometric","white medium square"],u:"25fb-fe0f",a:"0.6"},{n:["square","geometric","black medium small square"],u:"25fe",a:"0.6"},{n:["square","geometric","white medium small square"],u:"25fd",a:"0.6"},{n:["square","geometric","black small square"],u:"25aa-fe0f",a:"0.6"},{n:["square","geometric","white small square"],u:"25ab-fe0f",a:"0.6"},{n:["orange","diamond","geometric","large orange diamond"],u:"1f536",a:"0.6"},{n:["blue","diamond","geometric","large blue diamond"],u:"1f537",a:"0.6"},{n:["orange","diamond","geometric","small orange diamond"],u:"1f538",a:"0.6"},{n:["blue","diamond","geometric","small blue diamond"],u:"1f539",a:"0.6"},{n:["red","geometric","red triangle pointed up"],u:"1f53a",a:"0.6"},{n:["red","down","geometric","red triangle pointed down"],u:"1f53b",a:"0.6"},{n:["comic","inside","diamond","geometric","diamond with a dot"],u:"1f4a0",a:"0.6"},{n:["radio","button","geometric","radio button"],u:"1f518",a:"0.6"},{n:["button","square","outlined","geometric","white square button"],u:"1f533",a:"0.6"},{n:["button","square","geometric","black square button"],u:"1f532",a:"0.6"}],flags:[{n:["racing","checkered","chequered","chequered flag"],u:"1f3c1",a:"0.6"},{n:["post","triangular flag"],u:"1f6a9",a:"0.6"},{n:["cross","crossed","japanese","celebration","crossed flags"],u:"1f38c",a:"0.6"},{n:["waving","black flag"],u:"1f3f4",a:"1"},{n:["waving","white flag"],u:"1f3f3-fe0f",a:"0.7"},{n:["pride","rainbow","rainbow flag"],u:"1f3f3-fe0f-200d-1f308",a:"4"},{n:["flag","pink","white","light blue","transgender","transgender flag"],u:"1f3f3-fe0f-200d-26a7-fe0f",a:"13"},{n:["pirate","plunder","treasure","pirate flag","jolly roger"],u:"1f3f4-200d-2620-fe0f",a:"11"},{n:["AC","flag","flag: Ascension Island","flag: ascension island"],u:"1f1e6-1f1e8",a:"2"},{n:["AD","flag","flag: Andorra","flag: andorra"],u:"1f1e6-1f1e9",a:"2"},{n:["AE","flag","flag: United Arab Emirates","flag: united arab emirates"],u:"1f1e6-1f1ea",a:"2"},{n:["AF","flag","flag: Afghanistan","flag: afghanistan"],u:"1f1e6-1f1eb",a:"2"},{n:["AG","flag","flag: Antigua & Barbuda","flag: antigua & barbuda"],u:"1f1e6-1f1ec",a:"2"},{n:["AI","flag","flag: Anguilla","flag: anguilla"],u:"1f1e6-1f1ee",a:"2"},{n:["AL","flag","flag: Albania","flag: albania"],u:"1f1e6-1f1f1",a:"2"},{n:["AM","flag","flag: Armenia","flag: armenia"],u:"1f1e6-1f1f2",a:"2"},{n:["AO","flag","flag: Angola","flag: angola"],u:"1f1e6-1f1f4",a:"2"},{n:["AQ","flag","flag: Antarctica","flag: antarctica"],u:"1f1e6-1f1f6",a:"2"},{n:["AR","flag","flag: Argentina","flag: argentina"],u:"1f1e6-1f1f7",a:"2"},{n:["AS","flag","flag: American Samoa","flag: american samoa"],u:"1f1e6-1f1f8",a:"2"},{n:["AT","flag","flag: Austria","flag: austria"],u:"1f1e6-1f1f9",a:"2"},{n:["AU","flag","flag: Australia","flag: australia"],u:"1f1e6-1f1fa",a:"2"},{n:["AW","flag","flag: Aruba","flag: aruba"],u:"1f1e6-1f1fc",a:"2"},{n:["AX","flag","flag: Åland Islands","flag: åland islands"],u:"1f1e6-1f1fd",a:"2"},{n:["AZ","flag","flag: Azerbaijan","flag: azerbaijan"],u:"1f1e6-1f1ff",a:"2"},{n:["BA","flag","flag: Bosnia & Herzegovina","flag: bosnia & herzegovina"],u:"1f1e7-1f1e6",a:"2"},{n:["BB","flag","flag: Barbados","flag: barbados"],u:"1f1e7-1f1e7",a:"2"},{n:["BD","flag","flag: Bangladesh","flag: bangladesh"],u:"1f1e7-1f1e9",a:"2"},{n:["BE","flag","flag: Belgium","flag: belgium"],u:"1f1e7-1f1ea",a:"2"},{n:["BF","flag","flag: Burkina Faso","flag: burkina faso"],u:"1f1e7-1f1eb",a:"2"},{n:["BG","flag","flag: Bulgaria","flag: bulgaria"],u:"1f1e7-1f1ec",a:"2"},{n:["BH","flag","flag: Bahrain","flag: bahrain"],u:"1f1e7-1f1ed",a:"2"},{n:["BI","flag","flag: Burundi","flag: burundi"],u:"1f1e7-1f1ee",a:"2"},{n:["BJ","flag","flag: Benin","flag: benin"],u:"1f1e7-1f1ef",a:"2"},{n:["BL","flag","flag: St. Barthélemy","flag: st. barthélemy"],u:"1f1e7-1f1f1",a:"2"},{n:["BM","flag","flag: Bermuda","flag: bermuda"],u:"1f1e7-1f1f2",a:"2"},{n:["BN","flag","flag: Brunei","flag: brunei"],u:"1f1e7-1f1f3",a:"2"},{n:["BO","flag","flag: Bolivia","flag: bolivia"],u:"1f1e7-1f1f4",a:"2"},{n:["BQ","flag","flag: Caribbean Netherlands","flag: caribbean netherlands"],u:"1f1e7-1f1f6",a:"2"},{n:["BR","flag","flag: Brazil","flag: brazil"],u:"1f1e7-1f1f7",a:"2"},{n:["BS","flag","flag: Bahamas","flag: bahamas"],u:"1f1e7-1f1f8",a:"2"},{n:["BT","flag","flag: Bhutan","flag: bhutan"],u:"1f1e7-1f1f9",a:"2"},{n:["BV","flag","flag: Bouvet Island","flag: bouvet island"],u:"1f1e7-1f1fb",a:"2"},{n:["BW","flag","flag: Botswana","flag: botswana"],u:"1f1e7-1f1fc",a:"2"},{n:["BY","flag","flag: Belarus","flag: belarus"],u:"1f1e7-1f1fe",a:"2"},{n:["BZ","flag","flag: Belize","flag: belize"],u:"1f1e7-1f1ff",a:"2"},{n:["CA","flag","flag: Canada","flag: canada"],u:"1f1e8-1f1e6",a:"2"},{n:["CC","flag","flag: Cocos (Keeling) Islands","flag: cocos (keeling) islands"],u:"1f1e8-1f1e8",a:"2"},{n:["CD","flag","flag: Congo Kinshasa","flag: congo kinshasa"],u:"1f1e8-1f1e9",a:"2"},{n:["CF","flag","flag: Central African Republic","flag: central african republic"],u:"1f1e8-1f1eb",a:"2"},{n:["CG","flag","flag: Congo Brazzaville","flag: congo brazzaville"],u:"1f1e8-1f1ec",a:"2"},{n:["CH","flag","flag: Switzerland","flag: switzerland"],u:"1f1e8-1f1ed",a:"2"},{n:["CI","flag","flag: Côte d’Ivoire","flag: côte d’ivoire"],u:"1f1e8-1f1ee",a:"2"},{n:["CK","flag","flag: Cook Islands","flag: cook islands"],u:"1f1e8-1f1f0",a:"2"},{n:["CL","flag","flag: Chile","flag: chile"],u:"1f1e8-1f1f1",a:"2"},{n:["CM","flag","flag: Cameroon","flag: cameroon"],u:"1f1e8-1f1f2",a:"2"},{n:["CN","flag","flag: China","flag: china"],u:"1f1e8-1f1f3",a:"0.6"},{n:["CO","flag","flag: Colombia","flag: colombia"],u:"1f1e8-1f1f4",a:"2"},{n:["CP","flag","flag: Clipperton Island","flag: clipperton island"],u:"1f1e8-1f1f5",a:"2"},{n:["CR","flag","flag: Costa Rica","flag: costa rica"],u:"1f1e8-1f1f7",a:"2"},{n:["CU","flag","flag: Cuba","flag: cuba"],u:"1f1e8-1f1fa",a:"2"},{n:["CV","flag","flag: Cape Verde","flag: cape verde"],u:"1f1e8-1f1fb",a:"2"},{n:["CW","flag","flag: Curaçao","flag: curaçao"],u:"1f1e8-1f1fc",a:"2"},{n:["CX","flag","flag: Christmas Island","flag: christmas island"],u:"1f1e8-1f1fd",a:"2"},{n:["CY","flag","flag: Cyprus","flag: cyprus"],u:"1f1e8-1f1fe",a:"2"},{n:["CZ","flag","flag: Czechia","flag: czechia"],u:"1f1e8-1f1ff",a:"2"},{n:["DE","flag","flag: Germany","flag: germany"],u:"1f1e9-1f1ea",a:"0.6"},{n:["DG","flag","flag: Diego Garcia","flag: diego garcia"],u:"1f1e9-1f1ec",a:"2"},{n:["DJ","flag","flag: Djibouti","flag: djibouti"],u:"1f1e9-1f1ef",a:"2"},{n:["DK","flag","flag: Denmark","flag: denmark"],u:"1f1e9-1f1f0",a:"2"},{n:["DM","flag","flag: Dominica","flag: dominica"],u:"1f1e9-1f1f2",a:"2"},{n:["DO","flag","flag: Dominican Republic","flag: dominican republic"],u:"1f1e9-1f1f4",a:"2"},{n:["DZ","flag","flag: Algeria","flag: algeria"],u:"1f1e9-1f1ff",a:"2"},{n:["EA","flag","flag: Ceuta & Melilla","flag: ceuta & melilla"],u:"1f1ea-1f1e6",a:"2"},{n:["EC","flag","flag: Ecuador","flag: ecuador"],u:"1f1ea-1f1e8",a:"2"},{n:["EE","flag","flag: Estonia","flag: estonia"],u:"1f1ea-1f1ea",a:"2"},{n:["EG","flag","flag: Egypt","flag: egypt"],u:"1f1ea-1f1ec",a:"2"},{n:["EH","flag","flag: Western Sahara","flag: western sahara"],u:"1f1ea-1f1ed",a:"2"},{n:["ER","flag","flag: Eritrea","flag: eritrea"],u:"1f1ea-1f1f7",a:"2"},{n:["ES","flag","flag: Spain","flag: spain"],u:"1f1ea-1f1f8",a:"0.6"},{n:["ET","flag","flag: Ethiopia","flag: ethiopia"],u:"1f1ea-1f1f9",a:"2"},{n:["EU","flag","flag: European Union","flag: european union"],u:"1f1ea-1f1fa",a:"2"},{n:["FI","flag","flag: Finland","flag: finland"],u:"1f1eb-1f1ee",a:"2"},{n:["FJ","flag","flag: Fiji","flag: fiji"],u:"1f1eb-1f1ef",a:"2"},{n:["FK","flag","flag: Falkland Islands","flag: falkland islands"],u:"1f1eb-1f1f0",a:"2"},{n:["FM","flag","flag: Micronesia","flag: micronesia"],u:"1f1eb-1f1f2",a:"2"},{n:["FO","flag","flag: Faroe Islands","flag: faroe islands"],u:"1f1eb-1f1f4",a:"2"},{n:["FR","flag","flag: France","flag: france"],u:"1f1eb-1f1f7",a:"0.6"},{n:["GA","flag","flag: Gabon","flag: gabon"],u:"1f1ec-1f1e6",a:"2"},{n:["GB","flag","flag: United Kingdom","flag: united kingdom"],u:"1f1ec-1f1e7",a:"0.6"},{n:["GD","flag","flag: Grenada","flag: grenada"],u:"1f1ec-1f1e9",a:"2"},{n:["GE","flag","flag: Georgia","flag: georgia"],u:"1f1ec-1f1ea",a:"2"},{n:["GF","flag","flag: French Guiana","flag: french guiana"],u:"1f1ec-1f1eb",a:"2"},{n:["GG","flag","flag: Guernsey","flag: guernsey"],u:"1f1ec-1f1ec",a:"2"},{n:["GH","flag","flag: Ghana","flag: ghana"],u:"1f1ec-1f1ed",a:"2"},{n:["GI","flag","flag: Gibraltar","flag: gibraltar"],u:"1f1ec-1f1ee",a:"2"},{n:["GL","flag","flag: Greenland","flag: greenland"],u:"1f1ec-1f1f1",a:"2"},{n:["GM","flag","flag: Gambia","flag: gambia"],u:"1f1ec-1f1f2",a:"2"},{n:["GN","flag","flag: Guinea","flag: guinea"],u:"1f1ec-1f1f3",a:"2"},{n:["GP","flag","flag: Guadeloupe","flag: guadeloupe"],u:"1f1ec-1f1f5",a:"2"},{n:["GQ","flag","flag: Equatorial Guinea","flag: equatorial guinea"],u:"1f1ec-1f1f6",a:"2"},{n:["GR","flag","flag: Greece","flag: greece"],u:"1f1ec-1f1f7",a:"2"},{n:["GS","flag","flag: South Georgia & South Sandwich Islands","flag: south georgia & south sandwich islands"],u:"1f1ec-1f1f8",a:"2"},{n:["GT","flag","flag: Guatemala","flag: guatemala"],u:"1f1ec-1f1f9",a:"2"},{n:["GU","flag","flag: Guam","flag: guam"],u:"1f1ec-1f1fa",a:"2"},{n:["GW","flag","flag: Guinea Bissau","flag: guinea bissau"],u:"1f1ec-1f1fc",a:"2"},{n:["GY","flag","flag: Guyana","flag: guyana"],u:"1f1ec-1f1fe",a:"2"},{n:["HK","flag","flag: Hong Kong SAR China","flag: hong kong sar china"],u:"1f1ed-1f1f0",a:"2"},{n:["HM","flag","flag: Heard & McDonald Islands","flag: heard & mcdonald islands"],u:"1f1ed-1f1f2",a:"2"},{n:["HN","flag","flag: Honduras","flag: honduras"],u:"1f1ed-1f1f3",a:"2"},{n:["HR","flag","flag: Croatia","flag: croatia"],u:"1f1ed-1f1f7",a:"2"},{n:["HT","flag","flag: Haiti","flag: haiti"],u:"1f1ed-1f1f9",a:"2"},{n:["HU","flag","flag: Hungary","flag: hungary"],u:"1f1ed-1f1fa",a:"2"},{n:["IC","flag","flag: Canary Islands","flag: canary islands"],u:"1f1ee-1f1e8",a:"2"},{n:["ID","flag","flag: Indonesia","flag: indonesia"],u:"1f1ee-1f1e9",a:"2"},{n:["IE","flag","flag: Ireland","flag: ireland"],u:"1f1ee-1f1ea",a:"2"},{n:["IL","flag","flag: Israel","flag: israel"],u:"1f1ee-1f1f1",a:"2"},{n:["IM","flag","flag: Isle of Man","flag: isle of man"],u:"1f1ee-1f1f2",a:"2"},{n:["IN","flag","flag: India","flag: india"],u:"1f1ee-1f1f3",a:"2"},{n:["IO","flag","flag: British Indian Ocean Territory","flag: british indian ocean territory"],u:"1f1ee-1f1f4",a:"2"},{n:["IQ","flag","flag: Iraq","flag: iraq"],u:"1f1ee-1f1f6",a:"2"},{n:["IR","flag","flag: Iran","flag: iran"],u:"1f1ee-1f1f7",a:"2"},{n:["IS","flag","flag: Iceland","flag: iceland"],u:"1f1ee-1f1f8",a:"2"},{n:["IT","flag","flag: Italy","flag: italy"],u:"1f1ee-1f1f9",a:"0.6"},{n:["JE","flag","flag: Jersey","flag: jersey"],u:"1f1ef-1f1ea",a:"2"},{n:["JM","flag","flag: Jamaica","flag: jamaica"],u:"1f1ef-1f1f2",a:"2"},{n:["JO","flag","flag: Jordan","flag: jordan"],u:"1f1ef-1f1f4",a:"2"},{n:["JP","flag","flag: Japan","flag: japan"],u:"1f1ef-1f1f5",a:"0.6"},{n:["KE","flag","flag: Kenya","flag: kenya"],u:"1f1f0-1f1ea",a:"2"},{n:["KG","flag","flag: Kyrgyzstan","flag: kyrgyzstan"],u:"1f1f0-1f1ec",a:"2"},{n:["KH","flag","flag: Cambodia","flag: cambodia"],u:"1f1f0-1f1ed",a:"2"},{n:["KI","flag","flag: Kiribati","flag: kiribati"],u:"1f1f0-1f1ee",a:"2"},{n:["KM","flag","flag: Comoros","flag: comoros"],u:"1f1f0-1f1f2",a:"2"},{n:["KN","flag","flag: St. Kitts & Nevis","flag: st. kitts & nevis"],u:"1f1f0-1f1f3",a:"2"},{n:["KP","flag","flag: North Korea","flag: north korea"],u:"1f1f0-1f1f5",a:"2"},{n:["KR","flag","flag: South Korea","flag: south korea"],u:"1f1f0-1f1f7",a:"0.6"},{n:["KW","flag","flag: Kuwait","flag: kuwait"],u:"1f1f0-1f1fc",a:"2"},{n:["KY","flag","flag: Cayman Islands","flag: cayman islands"],u:"1f1f0-1f1fe",a:"2"},{n:["KZ","flag","flag: Kazakhstan","flag: kazakhstan"],u:"1f1f0-1f1ff",a:"2"},{n:["LA","flag","flag: Laos","flag: laos"],u:"1f1f1-1f1e6",a:"2"},{n:["LB","flag","flag: Lebanon","flag: lebanon"],u:"1f1f1-1f1e7",a:"2"},{n:["LC","flag","flag: St. Lucia","flag: st. lucia"],u:"1f1f1-1f1e8",a:"2"},{n:["LI","flag","flag: Liechtenstein","flag: liechtenstein"],u:"1f1f1-1f1ee",a:"2"},{n:["LK","flag","flag: Sri Lanka","flag: sri lanka"],u:"1f1f1-1f1f0",a:"2"},{n:["LR","flag","flag: Liberia","flag: liberia"],u:"1f1f1-1f1f7",a:"2"},{n:["LS","flag","flag: Lesotho","flag: lesotho"],u:"1f1f1-1f1f8",a:"2"},{n:["LT","flag","flag: Lithuania","flag: lithuania"],u:"1f1f1-1f1f9",a:"2"},{n:["LU","flag","flag: Luxembourg","flag: luxembourg"],u:"1f1f1-1f1fa",a:"2"},{n:["LV","flag","flag: Latvia","flag: latvia"],u:"1f1f1-1f1fb",a:"2"},{n:["LY","flag","flag: Libya","flag: libya"],u:"1f1f1-1f1fe",a:"2"},{n:["MA","flag","flag: Morocco","flag: morocco"],u:"1f1f2-1f1e6",a:"2"},{n:["MC","flag","flag: Monaco","flag: monaco"],u:"1f1f2-1f1e8",a:"2"},{n:["MD","flag","flag: Moldova","flag: moldova"],u:"1f1f2-1f1e9",a:"2"},{n:["ME","flag","flag: Montenegro","flag: montenegro"],u:"1f1f2-1f1ea",a:"2"},{n:["MF","flag","flag: St. Martin","flag: st. martin"],u:"1f1f2-1f1eb",a:"2"},{n:["MG","flag","flag: Madagascar","flag: madagascar"],u:"1f1f2-1f1ec",a:"2"},{n:["MH","flag","flag: Marshall Islands","flag: marshall islands"],u:"1f1f2-1f1ed",a:"2"},{n:["MK","flag","flag: North Macedonia","flag: north macedonia"],u:"1f1f2-1f1f0",a:"2"},{n:["ML","flag","flag: Mali","flag: mali"],u:"1f1f2-1f1f1",a:"2"},{n:["MM","flag","flag: Myanmar (Burma)","flag: myanmar (burma)"],u:"1f1f2-1f1f2",a:"2"},{n:["MN","flag","flag: Mongolia","flag: mongolia"],u:"1f1f2-1f1f3",a:"2"},{n:["MO","flag","flag: Macao SAR China","flag: macao sar china"],u:"1f1f2-1f1f4",a:"2"},{n:["MP","flag","flag: Northern Mariana Islands","flag: northern mariana islands"],u:"1f1f2-1f1f5",a:"2"},{n:["MQ","flag","flag: Martinique","flag: martinique"],u:"1f1f2-1f1f6",a:"2"},{n:["MR","flag","flag: Mauritania","flag: mauritania"],u:"1f1f2-1f1f7",a:"2"},{n:["MS","flag","flag: Montserrat","flag: montserrat"],u:"1f1f2-1f1f8",a:"2"},{n:["MT","flag","flag: Malta","flag: malta"],u:"1f1f2-1f1f9",a:"2"},{n:["MU","flag","flag: Mauritius","flag: mauritius"],u:"1f1f2-1f1fa",a:"2"},{n:["MV","flag","flag: Maldives","flag: maldives"],u:"1f1f2-1f1fb",a:"2"},{n:["MW","flag","flag: Malawi","flag: malawi"],u:"1f1f2-1f1fc",a:"2"},{n:["MX","flag","flag: Mexico","flag: mexico"],u:"1f1f2-1f1fd",a:"2"},{n:["MY","flag","flag: Malaysia","flag: malaysia"],u:"1f1f2-1f1fe",a:"2"},{n:["MZ","flag","flag: Mozambique","flag: mozambique"],u:"1f1f2-1f1ff",a:"2"},{n:["NA","flag","flag: Namibia","flag: namibia"],u:"1f1f3-1f1e6",a:"2"},{n:["NC","flag","flag: New Caledonia","flag: new caledonia"],u:"1f1f3-1f1e8",a:"2"},{n:["NE","flag","flag: Niger","flag: niger"],u:"1f1f3-1f1ea",a:"2"},{n:["NF","flag","flag: Norfolk Island","flag: norfolk island"],u:"1f1f3-1f1eb",a:"2"},{n:["NG","flag","flag: Nigeria","flag: nigeria"],u:"1f1f3-1f1ec",a:"2"},{n:["NI","flag","flag: Nicaragua","flag: nicaragua"],u:"1f1f3-1f1ee",a:"2"},{n:["NL","flag","flag: Netherlands","flag: netherlands"],u:"1f1f3-1f1f1",a:"2"},{n:["NO","flag","flag: Norway","flag: norway"],u:"1f1f3-1f1f4",a:"2"},{n:["NP","flag","flag: Nepal","flag: nepal"],u:"1f1f3-1f1f5",a:"2"},{n:["NR","flag","flag: Nauru","flag: nauru"],u:"1f1f3-1f1f7",a:"2"},{n:["NU","flag","flag: Niue","flag: niue"],u:"1f1f3-1f1fa",a:"2"},{n:["NZ","flag","flag: New Zealand","flag: new zealand"],u:"1f1f3-1f1ff",a:"2"},{n:["OM","flag","flag: Oman","flag: oman"],u:"1f1f4-1f1f2",a:"2"},{n:["PA","flag","flag: Panama","flag: panama"],u:"1f1f5-1f1e6",a:"2"},{n:["PE","flag","flag: Peru","flag: peru"],u:"1f1f5-1f1ea",a:"2"},{n:["PF","flag","flag: French Polynesia","flag: french polynesia"],u:"1f1f5-1f1eb",a:"2"},{n:["PG","flag","flag: Papua New Guinea","flag: papua new guinea"],u:"1f1f5-1f1ec",a:"2"},{n:["PH","flag","flag: Philippines","flag: philippines"],u:"1f1f5-1f1ed",a:"2"},{n:["PK","flag","flag: Pakistan","flag: pakistan"],u:"1f1f5-1f1f0",a:"2"},{n:["PL","flag","flag: Poland","flag: poland"],u:"1f1f5-1f1f1",a:"2"},{n:["PM","flag","flag: St. Pierre & Miquelon","flag: st. pierre & miquelon"],u:"1f1f5-1f1f2",a:"2"},{n:["PN","flag","flag: Pitcairn Islands","flag: pitcairn islands"],u:"1f1f5-1f1f3",a:"2"},{n:["PR","flag","flag: Puerto Rico","flag: puerto rico"],u:"1f1f5-1f1f7",a:"2"},{n:["PS","flag","flag: Palestinian Territories","flag: palestinian territories"],u:"1f1f5-1f1f8",a:"2"},{n:["PT","flag","flag: Portugal","flag: portugal"],u:"1f1f5-1f1f9",a:"2"},{n:["PW","flag","flag: Palau","flag: palau"],u:"1f1f5-1f1fc",a:"2"},{n:["PY","flag","flag: Paraguay","flag: paraguay"],u:"1f1f5-1f1fe",a:"2"},{n:["QA","flag","flag: Qatar","flag: qatar"],u:"1f1f6-1f1e6",a:"2"},{n:["RE","flag","flag: Réunion","flag: réunion"],u:"1f1f7-1f1ea",a:"2"},{n:["RO","flag","flag: Romania","flag: romania"],u:"1f1f7-1f1f4",a:"2"},{n:["RS","flag","flag: Serbia","flag: serbia"],u:"1f1f7-1f1f8",a:"2"},{n:["RU","flag","flag: Russia","flag: russia"],u:"1f1f7-1f1fa",a:"0.6"},{n:["RW","flag","flag: Rwanda","flag: rwanda"],u:"1f1f7-1f1fc",a:"2"},{n:["SA","flag","flag: Saudi Arabia","flag: saudi arabia"],u:"1f1f8-1f1e6",a:"2"},{n:["SB","flag","flag: Solomon Islands","flag: solomon islands"],u:"1f1f8-1f1e7",a:"2"},{n:["SC","flag","flag: Seychelles","flag: seychelles"],u:"1f1f8-1f1e8",a:"2"},{n:["SD","flag","flag: Sudan","flag: sudan"],u:"1f1f8-1f1e9",a:"2"},{n:["SE","flag","flag: Sweden","flag: sweden"],u:"1f1f8-1f1ea",a:"2"},{n:["SG","flag","flag: Singapore","flag: singapore"],u:"1f1f8-1f1ec",a:"2"},{n:["SH","flag","flag: St. Helena","flag: st. helena"],u:"1f1f8-1f1ed",a:"2"},{n:["SI","flag","flag: Slovenia","flag: slovenia"],u:"1f1f8-1f1ee",a:"2"},{n:["SJ","flag","flag: Svalbard & Jan Mayen","flag: svalbard & jan mayen"],u:"1f1f8-1f1ef",a:"2"},{n:["SK","flag","flag: Slovakia","flag: slovakia"],u:"1f1f8-1f1f0",a:"2"},{n:["SL","flag","flag: Sierra Leone","flag: sierra leone"],u:"1f1f8-1f1f1",a:"2"},{n:["SM","flag","flag: San Marino","flag: san marino"],u:"1f1f8-1f1f2",a:"2"},{n:["SN","flag","flag: Senegal","flag: senegal"],u:"1f1f8-1f1f3",a:"2"},{n:["SO","flag","flag: Somalia","flag: somalia"],u:"1f1f8-1f1f4",a:"2"},{n:["SR","flag","flag: Suriname","flag: suriname"],u:"1f1f8-1f1f7",a:"2"},{n:["SS","flag","flag: South Sudan","flag: south sudan"],u:"1f1f8-1f1f8",a:"2"},{n:["ST","flag","flag: São Tomé & Príncipe","flag: são tomé & príncipe"],u:"1f1f8-1f1f9",a:"2"},{n:["SV","flag","flag: El Salvador","flag: el salvador"],u:"1f1f8-1f1fb",a:"2"},{n:["SX","flag","flag: Sint Maarten","flag: sint maarten"],u:"1f1f8-1f1fd",a:"2"},{n:["SY","flag","flag: Syria","flag: syria"],u:"1f1f8-1f1fe",a:"2"},{n:["SZ","flag","flag: Eswatini","flag: eswatini"],u:"1f1f8-1f1ff",a:"2"},{n:["TA","flag","flag: Tristan da Cunha","flag: tristan da cunha"],u:"1f1f9-1f1e6",a:"2"},{n:["TC","flag","flag: Turks & Caicos Islands","flag: turks & caicos islands"],u:"1f1f9-1f1e8",a:"2"},{n:["TD","flag","flag: Chad","flag: chad"],u:"1f1f9-1f1e9",a:"2"},{n:["TF","flag","flag: French Southern Territories","flag: french southern territories"],u:"1f1f9-1f1eb",a:"2"},{n:["TG","flag","flag: Togo","flag: togo"],u:"1f1f9-1f1ec",a:"2"},{n:["TH","flag","flag: Thailand","flag: thailand"],u:"1f1f9-1f1ed",a:"2"},{n:["TJ","flag","flag: Tajikistan","flag: tajikistan"],u:"1f1f9-1f1ef",a:"2"},{n:["TK","flag","flag: Tokelau","flag: tokelau"],u:"1f1f9-1f1f0",a:"2"},{n:["TL","flag","flag: Timor Leste","flag: timor leste"],u:"1f1f9-1f1f1",a:"2"},{n:["TM","flag","flag: Turkmenistan","flag: turkmenistan"],u:"1f1f9-1f1f2",a:"2"},{n:["TN","flag","flag: Tunisia","flag: tunisia"],u:"1f1f9-1f1f3",a:"2"},{n:["TO","flag","flag: Tonga","flag: tonga"],u:"1f1f9-1f1f4",a:"2"},{n:["TR","flag","flag: Türkiye","flag: türkiye"],u:"1f1f9-1f1f7",a:"2"},{n:["TT","flag","flag: Trinidad & Tobago","flag: trinidad & tobago"],u:"1f1f9-1f1f9",a:"2"},{n:["TV","flag","flag: Tuvalu","flag: tuvalu"],u:"1f1f9-1f1fb",a:"2"},{n:["TW","flag","flag: Taiwan","flag: taiwan"],u:"1f1f9-1f1fc",a:"2"},{n:["TZ","flag","flag: Tanzania","flag: tanzania"],u:"1f1f9-1f1ff",a:"2"},{n:["UA","flag","flag: Ukraine","flag: ukraine"],u:"1f1fa-1f1e6",a:"2"},{n:["UG","flag","flag: Uganda","flag: uganda"],u:"1f1fa-1f1ec",a:"2"},{n:["UM","flag","flag: U.S. Outlying Islands","flag: u.s. outlying islands"],u:"1f1fa-1f1f2",a:"2"},{n:["UN","flag","flag: United Nations","flag: united nations"],u:"1f1fa-1f1f3",a:"4"},{n:["US","flag","flag: United States","flag: united states"],u:"1f1fa-1f1f8",a:"0.6"},{n:["UY","flag","flag: Uruguay","flag: uruguay"],u:"1f1fa-1f1fe",a:"2"},{n:["UZ","flag","flag: Uzbekistan","flag: uzbekistan"],u:"1f1fa-1f1ff",a:"2"},{n:["VA","flag","flag: Vatican City","flag: vatican city"],u:"1f1fb-1f1e6",a:"2"},{n:["VC","flag","flag: St. Vincent & Grenadines","flag: st. vincent & grenadines"],u:"1f1fb-1f1e8",a:"2"},{n:["VE","flag","flag: Venezuela","flag: venezuela"],u:"1f1fb-1f1ea",a:"2"},{n:["VG","flag","flag: British Virgin Islands","flag: british virgin islands"],u:"1f1fb-1f1ec",a:"2"},{n:["VI","flag","flag: U.S. Virgin Islands","flag: u.s. virgin islands"],u:"1f1fb-1f1ee",a:"2"},{n:["VN","flag","flag: Vietnam","flag: vietnam"],u:"1f1fb-1f1f3",a:"2"},{n:["VU","flag","flag: Vanuatu","flag: vanuatu"],u:"1f1fb-1f1fa",a:"2"},{n:["WF","flag","flag: Wallis & Futuna","flag: wallis & futuna"],u:"1f1fc-1f1eb",a:"2"},{n:["WS","flag","flag: Samoa","flag: samoa"],u:"1f1fc-1f1f8",a:"2"},{n:["XK","flag","flag: Kosovo","flag: kosovo"],u:"1f1fd-1f1f0",a:"2"},{n:["YE","flag","flag: Yemen","flag: yemen"],u:"1f1fe-1f1ea",a:"2"},{n:["YT","flag","flag: Mayotte","flag: mayotte"],u:"1f1fe-1f1f9",a:"2"},{n:["ZA","flag","flag: South Africa","flag: south africa"],u:"1f1ff-1f1e6",a:"2"},{n:["ZM","flag","flag: Zambia","flag: zambia"],u:"1f1ff-1f1f2",a:"2"},{n:["ZW","flag","flag: Zimbabwe","flag: zimbabwe"],u:"1f1ff-1f1fc",a:"2"},{n:["flag","gbeng","flag: England","flag: england"],u:"1f3f4-e0067-e0062-e0065-e006e-e0067-e007f",a:"5"},{n:["flag","gbsct","flag: Scotland","flag: scotland"],u:"1f3f4-e0067-e0062-e0073-e0063-e0074-e007f",a:"5"},{n:["flag","gbwls","flag: Wales","flag: wales"],u:"1f3f4-e0067-e0062-e0077-e006c-e0073-e007f",a:"5"}]},ua={categories:sr,emojis:lr},_n="epr_suggested";function ca(e){try{var f,a,t;if(!((f=window)!=null&&f.localStorage))return[];var r=JSON.parse((a=(t=window)==null?void 0:t.localStorage.getItem(_n))!=null?a:"[]");return e===Ze.FREQUENT?r.sort(function(o,s){return s.count-o.count}):r}catch{return[]}}function ur(e,f){var a=ca(),t=ue(e,f),r=ue(e),o=a.find(function(u){var c=u.unified;return c===t}),s;o?s=[o].concat(a.filter(function(u){return u!==o})):(o={unified:t,original:r,count:0},s=[o].concat(a)),o.count++,s.length=Math.min(s.length,14);try{var l;(l=window)==null||l.localStorage.setItem(_n,JSON.stringify(s))}catch{}}function da(e){var f;return(f=e[H.name])!=null?f:[]}function Ka(e){if(!e)return"";var f=da(e);return f[f.length-1]}function Vn(e){var f=e.split("-"),a=f.splice(1,1),t=a[0];return sa[t]?f.join("-"):e}function ue(e,f){var a,t=e[H.unified];return!f||!ze(e)?t:(a=dr(e,f))!=null?a:t}function cr(){var e=it(),f=wa(),a=f[0],t=ne.useMemo(function(){var r,o=(r=ca(e))!=null?r:[];return o.map(function(s){return vf(s.unified)}).filter(Boolean)},[a,e]);return function(o){var s;return o===z.SUGGESTED?t:(s=ua.emojis[o])!=null?s:[]}}function yf(e){var f;return(f=e[H.variations])!=null?f:[]}function ze(e){return yf(e).length>0}function dr(e,f){return f?yf(e).find(function(a){return a.includes(f)}):ue(e)}function vf(e){if(e){if(df[e])return df[e];var f=Vn(e);return df[f]}}var gr=Object.values(ua.emojis).flat(),df={};gr.reduce(function(e,f){return e[ue(f)]=f,ze(f)&&yf(f).forEach(function(a){e[a]=f}),e},df);function mr(e){var f=e.split("-"),a=f[1];return wf.includes(a)?a:null}var Kn=ne.createContext({emojiData:{},allEmojis:[],allEmojisByUnified:{},searchIndex:{},emojiByUnified:vf,activeVariationFromUnified:function(){return null}});function br(e){var f=e.children,a=J(),t=a.customEmojis,r=a.emojiData,o=ne.useMemo(function(){var l=r||ua,u=JSON.parse(JSON.stringify(l));t&&t.length>0&&(u.emojis[z.CUSTOM]=t.map(Mr));var c=u.emojis||{},d=Object.values(c).flat(),g={},M={};return d.forEach(function(h){var p=h[H.unified];if(g[p]=h,h[H.variations]){var j;(j=h[H.variations])==null||j.forEach(function(w){g[w]=h})}var m=(h[H.name]||[]).join("").toLowerCase().split("");m.forEach(function(w){var k;M[w]=(k=M[w])!=null?k:{},M[w][p]=h})}),{emojiData:u,allEmojis:d,allEmojisByUnified:g,searchIndex:M}},[r,t]),s=ne.useCallback(function(l){var u;if(l){var c=(u=o.allEmojisByUnified[l])!=null?u:o.allEmojisByUnified[Jn(l)];return c}},[o.allEmojisByUnified]);return ne.createElement(Kn.Provider,{value:R({},o,{emojiByUnified:s,activeVariationFromUnified:Ki})},f)}function Ee(){return ne.useContext(Kn)}function wr(){var e=Ee(),f=e.emojiData,a=e.emojiByUnified,t=it(),r=wa(),o=r[0],s=ne.useMemo(function(){var l,u=(l=ca(t))!=null?l:[];return u.map(function(c){var d,g=a(c.unified);if(g)return R({},g,(d={},d[H.unified]=c.unified,d))}).filter(Boolean)},[o,t,a]);return function(u){var c,d;return u===z.SUGGESTED?s:(c=(d=f.emojis)==null?void 0:d[u])!=null?c:[]}}function Mr(e){var f;return f={},f[H.name]=e.names.map(function(a){return a.toLowerCase()}),f[H.unified]=e.id.toLowerCase(),f[H.added_in]="0",f[H.imgUrl]=e.imgUrl,f}function hr(){var e=Jr();return function(f){return e.has(f)}}function $n(){var e=i.useRef({}),f=Yr(),a=Ee(),t=a.allEmojis;return i.useMemo(function(){var r=parseFloat(""+f);return!f||Number.isNaN(r)?e.current:t.reduce(function(o,s){return pr(s,r)&&(o[pe(s)]=!0),o},e.current)},[f,t])}function Lr(){var e=$n(),f=hr();return function(t){var r=Jn(pe(t));return!!(e[r]||f(r))}}function pr(e,f){return Wi(e)>f}function jr(e){i.useEffect(function(){e(!0)},[e])}function yr(e){var f=e.children,a=$n(),t=Ir(),r=Rr(),o=Ee(),s=o.searchIndex,l=i.useRef(s);i.useEffect(function(){l.current=s},[s]);var u=i.useRef(!1),c=i.useRef(!1),d=i.useRef(a),g=Va(Date.now(),200),M=Va("",100),h=i.useState(!1),p=i.useState(t),j=i.useState(null),m=i.useState(new Set),w=i.useState(null),k=i.useState(r),I=i.useState(!1),S=I[0],x=I[1],E=i.useState([]),Y=i.useState(null);return jr(x),i.createElement(K.Provider,{value:{activeCategoryState:j,activeSkinTone:p,disallowClickRef:u,disallowMouseRef:c,disallowedEmojisRef:d,emojiVariationPickerState:w,emojisThatFailedToLoadState:m,filterRef:l,isPastInitialLoad:S,searchTerm:M,skinToneFanOpenState:h,suggestedUpdateState:g,reactionsModeState:k,visibleCategoriesState:E,emojiSizeState:Y}},f)}var K=i.createContext({activeCategoryState:[null,function(){}],activeSkinTone:[re.NEUTRAL,function(){}],disallowClickRef:{current:!1},disallowMouseRef:{current:!1},disallowedEmojisRef:{current:{}},emojiVariationPickerState:[null,function(){}],emojisThatFailedToLoadState:[new Set,function(){}],filterRef:{current:{}},isPastInitialLoad:!0,searchTerm:["",function(){return new Promise(function(){})}],skinToneFanOpenState:[!1,function(){}],suggestedUpdateState:[Date.now(),function(){}],reactionsModeState:[!1,function(){}],visibleCategoriesState:[[],function(){return[]}],emojiSizeState:[null,function(){}]});function ga(){var e=i.useContext(K),f=e.filterRef;return f}function vr(){var e=i.useContext(K),f=e.disallowClickRef;return f}function ma(){var e=i.useContext(K),f=e.disallowMouseRef;return f}function je(){var e=i.useContext(K),f=e.reactionsModeState;return f}function Cf(){var e=i.useContext(K),f=e.searchTerm;return f}function xf(){var e=i.useContext(K),f=e.activeSkinTone;return f}function Xn(){var e=i.useContext(K),f=e.emojisThatFailedToLoadState;return f}function Ae(){var e=i.useContext(K),f=e.emojiVariationPickerState;return f}function Ke(){var e=i.useContext(K),f=e.skinToneFanOpenState;return f}function ba(){var e=i.useContext(K),f=e.visibleCategoriesState;return f}function qn(){var e=i.useContext(K),f=e.emojiSizeState;return f}function wa(){var e=i.useContext(K),f=e.suggestedUpdateState,a=f[0],t=f[1];return[a,function(){t(Date.now())}]}var et=ne.createContext({});function ft(){var e=ne.useContext(et);return e}function Cr(e){var f=ne.useRef({onEmojiClick:e.onEmojiClick||tf,onReactionClick:e.onReactionClick||e.onEmojiClick,onSkinToneChange:e.onSkinToneChange||tf});return ne.useEffect(function(){f.current.onEmojiClick=e.onEmojiClick||tf,f.current.onReactionClick=e.onReactionClick||e.onEmojiClick},[e.onEmojiClick,e.onReactionClick]),ne.useEffect(function(){f.current.onSkinToneChange=e.onSkinToneChange||tf},[e.onSkinToneChange]),f}function tf(){}var He;(function(e){e.REACTIONS="reactions",e.PICKER="picker"})(He||(He={}));function xr(){var e,f=J(),a=f.searchPlaceHolder,t=f.searchPlaceholder;return(e=[a,t].find(function(r){return r!==Mf}))!=null?e:Mf}function kr(){var e=J(),f=e.searchClearButtonLabel;return f??Zn}function Ir(){var e=J(),f=e.defaultSkinTone;return f}function at(){var e=J(),f=e.allowExpandReactions;return f}function nt(){var e=J(),f=e.skinTonesDisabled;return f}function ye(){var e=J(),f=e.emojiStyle;return f}function Nr(){var e=J(),f=e.autoFocusSearch;return f}function Ma(){var e=J(),f=e.categories;return f}function Sr(){var e=J(),f=e.categoryIcons;return f}function Dr(){var e=J(),f=e.customEmojis;return f}function Tr(){var e=J(),f=e.open;return f}function zr(e){var f=ft(),a=f.current,t=je(),r=t[1],o=a.onEmojiClick||function(){},s=a.onReactionClick;return e===He.REACTIONS&&s?function(){for(var l=arguments.length,u=new Array(l),c=0;c0,a=e>1;return f?a?nr.replace("%n",e.toString()):ar:fr}function kf(){var e=Cf(),f=e[0];return!!f}function $(e){e&&requestAnimationFrame(function(){e.focus()})}function lt(e){if(e){var f=e.previousElementSibling;$(f)}}function ut(e){if(e){var f=e.nextElementSibling;$(f)}}function ct(e){if(e){var f=e.firstElementChild;$(f)}}function We(){return document.activeElement}function Br(e){var f=e.children,a=i.useRef(null),t=i.useRef(null),r=i.useRef(null),o=i.useRef(null),s=i.useRef(null),l=i.useRef(null),u=i.useRef(null),c=i.useRef(null),d=i.useRef(null);return i.createElement(dt.Provider,{value:{AnchoredEmojiRef:t,BodyRef:r,EmojiListRef:o,CategoryNavigationRef:u,PickerMainRef:a,SearchInputRef:s,SkinTonePickerRef:l,VariationPickerRef:c,ReactionsRef:d}},f)}var dt=i.createContext({AnchoredEmojiRef:i.createRef(),BodyRef:i.createRef(),CategoryNavigationRef:i.createRef(),EmojiListRef:i.createRef(),PickerMainRef:i.createRef(),SearchInputRef:i.createRef(),SkinTonePickerRef:i.createRef(),VariationPickerRef:i.createRef(),ReactionsRef:i.createRef()});function ce(){return i.useContext(dt)}function gt(){return ce().EmojiListRef}function Pe(){return ce().PickerMainRef}function If(){return ce().AnchoredEmojiRef}function mt(){var e=If();return function(f){f===null&&e.current!==null&&$(e.current),e.current=f}}function X(){return ce().BodyRef}function Gr(){return ce().ReactionsRef}function be(){return ce().SearchInputRef}function ha(){return ce().SkinTonePickerRef}function La(){return ce().CategoryNavigationRef}function Zr(){return ce().VariationPickerRef}function bt(e,f){f===void 0&&(f=0);var a=St(e);a&&requestAnimationFrame(function(){a.scrollTop=f})}function Hr(e,f){var a=St(e);a&&requestAnimationFrame(function(){a.scrollTop=a.scrollTop+f})}function Wr(){var e=X();return i.useCallback(function(f){requestAnimationFrame(function(){e.current&&(e.current.scrollTop=f)})},[e])}function Nf(e){if(!(!e||!zo(e))&&!e.closest(te(P.variationPicker))){var f=Tt(e),a=Dt(e);Hr(f,-(va(we(e))-a))}}function Sf(e){var f=Na(e);$(f),Nf(f)}function Fr(e){var f=Na(e);$(f),f==null||f.click()}function _r(e){$(At(e))}function Vr(e){if(e){var f=Pt(e);if(!f)return Sf(Tf(e));$(f),Nf(f)}}function Kr(e){if(e){var f=Ia(e);if(!f)return _r(Df(e));$(f),Nf(f)}}function $r(e,f){if(e){var a=qr(e);if(!a)return f();$(a),Nf(a)}}function Xr(e){if(e){var f=eo(e);return $(f)}}function qr(e){if(!e)return null;var f=Qt(e),a=we(f),t=xt(f,e),r=Te(a),o=r.indexOf(e),s=o%t;if(o===-1)return null;if(r[o-t])return r[o-t];var l=Df(a);if(!l)return null;var u=Te(l),c=u.length%t-1;if(s>c)return u.at(-1);for(var d=u.length-1;d>=0;d--)if(d%t===s)return u[d];return u.at(-1)}function eo(e){var f;if(!e)return null;var a=Qt(e),t=we(a),r=xt(a,e),o=Te(t),s=o.indexOf(e);if(s===-1)return null;var l=r-s%r-1,u=s+l+1;if(o[u]){for(var c=s+r;c%r>=0;c--)if(o[c])return o[c]}var d=s%r,g=Tf(t),M=Te(g);return M[d]?M[d]:(f=M.at(0))!=null?f:null}function Ce(){var e=Ae(),f=e[0],a=e[1],t=Ke(),r=t[0],o=t[1],s=i.useCallback(function(){f&&a(null),r&&o(!1)},[f,r,a,o]);return s}function wt(){var e=Ae(),f=e[0],a=Ke(),t=a[0];return function(){return!!f||t}}function fo(){var e=ma();return function(){e.current=!0}}function Mt(){var e=ma();return function(){e.current=!1}}function ht(){var e=ma();return function(){return e.current}}function ao(){var e=X(),f=Mt(),a=ht();i.useEffect(function(){var t=e.current;t==null||t.addEventListener("mousemove",r,{passive:!0});function r(){a()&&f()}return function(){t==null||t.removeEventListener("mousemove",r)}},[e,f,a])}function xe(){var e=be();return i.useCallback(function(){$(e.current)},[e])}function no(){var e=ha();return i.useCallback(function(){e.current&&ct(e.current)},[e])}function Lt(){var e=La();return i.useCallback(function(){e.current&&ct(e.current)},[e])}function to(){var e=ga();return function f(a){if(typeof a=="function")return f(a(e.current));e.current=a}}function pt(){var e=pa(),f=be(),a=xe();return function(){f.current&&(f.current.value=""),e(""),a()}}function io(){var e=be(),f=pa();return function(t){e.current?(e.current.value=""+e.current.value+t,f(Xa(e.current.value))):f(Xa(t))}}function ro(){var e=be(),f=ga(),a=to(),t=pa(),r=Cf(),o=r[0],s=go(f.current,o);return{onChange:l,searchTerm:o,SearchInputRef:e,statusSearchResults:s};function l(u){var c=f.current,d=u.toLowerCase();if(c!=null&&c[d]||d.length<=1)return t(d);var g=co(d,c);if(!g)return t(d);a(function(M){var h;return Object.assign(M,(h={},h[d]=oo(g,d),h))}),t(d)}}function pa(){var e=Cf(),f=e[1],a=Pe();return function(r){requestAnimationFrame(function(){f(r&&(r==null?void 0:r.toLowerCase())).then(function(){bt(a.current,0)})})}}function oo(e,f){var a={};for(var t in e){var r=e[t];so(r,f)&&(a[t]=r)}return a}function so(e,f){return Yn(e).some(function(a){return a.includes(f)})}function lo(){var e=ga(),f=e.current,a=Cf(),t=a[0];return function(r){return uo(r,f,t)}}function uo(e,f,a){var t;return!f||!a?!1:!((t=f[a])!=null&&t[e])}function co(e,f){if(!f)return null;if(f[e])return f[e];var a=Object.keys(f).sort(function(t,r){return r.length-t.length}).find(function(t){return e.includes(t)});return a?f[a]:null}function Xa(e){return!e||typeof e!="string"?"":e.trim().toLowerCase()}function go(e,f){var a;if(!(e!=null&&e[f]))return"";var t=((a=Object.entries(e==null?void 0:e[f]))==null?void 0:a.length)||0;return Or(t)}function jt(){var e=mt(),f=Ae(),a=f[1];return function(r){var o=It(r),s=o[0];s&&(e(r),a(s))}}function ja(){var e=st();return e===De.SEARCH}function yt(){var e=st();return e===De.PREVIEW}var B;(function(e){e.ArrowDown="ArrowDown",e.ArrowUp="ArrowUp",e.ArrowLeft="ArrowLeft",e.ArrowRight="ArrowRight",e.Escape="Escape",e.Enter="Enter",e.Space=" "})(B||(B={}));function mo(){bo(),wo(),Mo(),ho(),Lo()}function bo(){var e=Pe(),f=pt(),a=Wr(),t=be(),r=xe(),o=wt(),s=fo(),l=Ce(),u=i.useMemo(function(){return function(d){var g=d.key;switch(s(),g){case B.Escape:if(d.preventDefault(),o()){l();return}f(),a(0),r();break}}},[a,f,l,r,o,s]);i.useEffect(function(){var c=e.current;if(c)return c.addEventListener("keydown",u),function(){c.removeEventListener("keydown",u)}},[e,t,a,u])}function wo(){var e=no(),f=Pe(),a=X(),t=be(),r=Ke(),o=r[1],s=vt(),l=ja(),u=i.useMemo(function(){return function(d){var g=d.key;switch(g){case B.ArrowRight:if(!l)return;d.preventDefault(),o(!0),e();break;case B.ArrowDown:d.preventDefault(),s();break;case B.Enter:d.preventDefault(),Fr(a.current);break}}},[e,s,o,a,l]);i.useEffect(function(){var c=t.current;if(c)return c.addEventListener("keydown",u),function(){c.removeEventListener("keydown",u)}},[f,t,u])}function Mo(){var e=ha(),f=xe(),a=be(),t=vt(),r=Ke(),o=r[0],s=r[1],l=yt(),u=ja(),c=ya(),d=i.useMemo(function(){return(function(M){var h=M.key;if(u)switch(h){case B.ArrowLeft:if(M.preventDefault(),!o)return f();qa(f);break;case B.ArrowRight:if(M.preventDefault(),!o)return f();en();break;case B.ArrowDown:M.preventDefault(),o&&s(!1),t();break;default:c(M);break}if(l)switch(h){case B.ArrowUp:if(M.preventDefault(),!o)return f();qa(f);break;case B.ArrowDown:if(M.preventDefault(),!o)return f();en();break;default:c(M);break}})},[o,f,s,t,c,l,u]);i.useEffect(function(){var g=e.current;if(g)return g.addEventListener("keydown",d),function(){g.removeEventListener("keydown",d)}},[e,a,o,d])}function ho(){var e=xe(),f=La(),a=X(),t=ya(),r=i.useMemo(function(){return function(s){var l=s.key;switch(l){case B.ArrowUp:s.preventDefault(),e();break;case B.ArrowRight:s.preventDefault(),ut(We());break;case B.ArrowLeft:s.preventDefault(),lt(We());break;case B.ArrowDown:s.preventDefault(),Sf(a.current);break;default:t(s);break}}},[a,e,t]);i.useEffect(function(){var o=f.current;if(o)return o.addEventListener("keydown",r),function(){o.removeEventListener("keydown",r)}},[f,a,r])}function Lo(){var e=X(),f=po(),a=jt(),t=wt(),r=Ce(),o=ya(),s=i.useMemo(function(){return(function(u){var c=u.key,d=oe(We());switch(c){case B.ArrowRight:u.preventDefault(),Vr(d);break;case B.ArrowLeft:u.preventDefault(),Kr(d);break;case B.ArrowDown:if(u.preventDefault(),t()){r();break}Xr(d);break;case B.ArrowUp:if(u.preventDefault(),t()){r();break}$r(d,f);break;case B.Space:u.preventDefault(),a(u.target);break;default:o(u);break}})},[f,o,a,t,r]);i.useEffect(function(){var l=e.current;if(l)return l.addEventListener("keydown",s),function(){l.removeEventListener("keydown",s)}},[e,s])}function vt(){var e=Lt(),f=kf(),a=X();return i.useCallback(function(){return f?Sf(a.current):e()},[a,e,f])}function po(){var e=xe(),f=Lt(),a=kf();return i.useCallback(function(){return a?e():f()},[e,a,f])}function qa(e){var f=We();f&&(So(f)||e(),ut(f))}function en(){var e=We();e&<(e)}function ya(){var e=io(),f=xe(),a=ot(),t=Ce();return function(o){var s=o.key;jo(o)||a||s.match(/(^[a-zA-Z0-9]$){1}/)&&(o.preventDefault(),t(),f(),e(s))}}function jo(e){var f=e.metaKey,a=e.ctrlKey,t=e.altKey;return f||a||t}function yo(e,f,a,t,r,o,s,l){if(e&&f!==V.NATIVE){var u=pe(e);ea.has(u)||!o||!s||setTimeout(function(){var c=r+o.top,d=a+t,g=c>=d&&c=t&&g<=r||M>=t&&M<=r});return s||null}function So(e){return!!e.nextElementSibling}function kt(e){if(!e)return fa;var f=e.querySelector(te(P.label));if(f){var a=f.getBoundingClientRect().height;if(a>0)return a}return fa}var Fe="button"+te(P.emoji),Do=[Fe,te(P.visible),":not("+te(P.hidden)+")"].join("");function oe(e){var f;return(f=e==null?void 0:e.closest(Fe))!=null?f:null}function It(e){var f=zt(e),a=Ca(e);if(!f)return[];var t=vf(a??f);return t?[t,a]:[]}function To(e){var f;return!!(e!=null&&e.matches(Fe)||!(e==null||(f=e.parentElement)==null)&&f.matches(Fe))}function an(e){var f;return(f=e==null?void 0:e.clientHeight)!=null?f:0}function Nt(e){if(!e)return 0;var f=oe(e),a=we(f),t=va(a);return nn(f)+nn(a)+t}function va(e){var f,a;if(!e)return 0;var t=e.querySelector(te(P.categoryContent));return((f=e==null?void 0:e.clientHeight)!=null?f:0)-((a=t==null?void 0:t.clientHeight)!=null?a:0)}function zo(e){return e?Dt(e)=f&&s<=f+a+o.emojiSize;return!u}function Ko(e,f){return e?{top:Math.floor(f/e.emojisPerRow)*e.emojiSize,left:f%e.emojisPerRow*e.emojiSize}:void 0}var $o=40;function Xo(e){var f=gt(),a=je(),t=a[0],r=Pe(),o=i.useRef(),s=ba(),l=s[0],u=qn(),c=u[0],d=i.useState(),g=d[0],M=d[1],h=i.useCallback(function(){var p=f.current;if(p){var j=p.querySelector(Fe),m=j==null?void 0:j.clientHeight;m&&(o.current=m);var w=c||m||o.current||$o,k=p.clientWidth;if(!(k===0||w===0)){var I=Math.max(1,Math.floor(k/w)),S=Math.ceil(e/I),x=S*w;M({categoryHeight:x,emojisPerRow:I,emojiSize:w})}}},[f,e,c]);return i.useEffect(function(){h()},[e,t,h,l.length]),i.useEffect(function(){var p=r.current;if(p){var j=function(w){var k=w,I=k.propertyName;(I==="width"||I==="max-width"||I==="min-width"||I==="height"||I==="max-height"||I==="min-height")&&(typeof queueMicrotask=="function"?queueMicrotask(function(){return h()}):requestAnimationFrame(function(){return h()}))};return p.addEventListener("transitionend",j,{passive:!0}),function(){p.removeEventListener("transitionend",j)}}},[r,h]),g}function qo(){var e=Xn(),f=e[0],a=lo();return function(t){var r=pe(t),o=f.has(r),s=a(r);return{failedToLoad:o,filteredOut:s,hidden:o||s}}}function es(e){var f=e.categoryEmojis,a=e.topOffset,t=e.onHeightReady,r=e.scrollTop,o=e.isCategoryVisible,s=qo(),l=rt(),u=ye(),c=xf(),d=c[0],g=Lr(),M=ve(),h=!nt(),p=X(),j=0,m=f.filter(function(S){var x=g(S),E=s(S),Y=E.failedToLoad,v=E.filteredOut,L=E.hidden;return!Y&&!v&&!L&&!x}),w=Xo(m.length);i.useEffect(function(){w&&t(w.categoryHeight)},[w,t,m.length]);var k=function(x){var E,Y;return w&&p.current&&Vo({scrollTop:r,clientHeight:(E=(Y=p.current)==null?void 0:Y.clientHeight)!=null?E:0,topOffset:a,style:x,dimensions:w})},I=m.reduce(function(S,x,E){var Y=pe(x,d),v=Ko(w,E);if(k(v)){var L,C;return j++,yo(x,u,r,(L=(C=p.current)==null?void 0:C.clientHeight)!=null?L:0,a,v,w,M),S}return o?(S.push(i.createElement(zf,{showVariations:h,key:Y,emoji:x,unified:Y,emojiStyle:u,lazyLoad:l,getEmojiUrl:M,style:R({},v,{position:"absolute"})})),S):(j++,S)},[]);return{virtualizedCounter:j,emojis:I,dimensions:w}}function fs(e){var f=e.categoryConfig,a=e.children,t=e.hidden,r=e.hiddenOnSearch,o=e.height,s=jf(f),l=Gn(f);return i.createElement("li",{className:A(Zf.category,t&&oa.hidden,r&&Le.hiddenOnSearch),"data-name":s,"aria-label":l},i.createElement("h2",{className:A(Zf.label)},l),i.createElement("div",{className:A(Zf.categoryContent),style:{height:o}},a))}var Zf=U.create({category:{".":P.category,minHeight:"calc(var(--epr-emoji-fullsize) + var(--epr-category-label-height))",position:"relative"},categoryContent:{".":P.categoryContent,display:"grid",gridGap:"0",gridTemplateColumns:"repeat(auto-fill, var(--epr-emoji-fullsize))",justifyContent:"space-between",margin:"var(--epr-category-padding)",position:"relative"},label:{".":P.label,alignItems:"center",backdropFilter:"blur(3px)",backgroundColor:"var(--epr-category-label-bg-color)",color:"var(--epr-category-label-text-color)",display:"flex",fontSize:"16px",fontWeight:"bold",height:"var(--epr-category-label-height)",margin:"0",padding:"var(--epr-category-label-padding)",position:"sticky",textTransform:"capitalize",top:"0",width:"100%",zIndex:"var(--epr-category-label-z-index)"}});function as(){var e=Ma(),f=cr(),a=ye(),t=ve(),r=rt(),o=xf(),s=o[0],l=qn(),u=l[0],c=l[1],d=i.useRef(null);if(i.useLayoutEffect(function(){d.current&&c(d.current.clientHeight)}),u)return null;var g=e[0],M=f(jf(g))[0],h=M?ue(M,s):"";return M?i.createElement("div",{ref:d},i.createElement(zf,{emoji:M,unified:h,emojiStyle:a,getEmojiUrl:t,lazyLoad:r,showVariations:!1,hidden:!1,style:{opacity:0,pointerEvents:"none",position:"absolute",top:0,left:0,zIndex:-1,height:"var(--epr-emoji-fullsize)",width:"var(--epr-emoji-fullsize)"}})):null}function ns(e){var f=e.scrollTop,a=Ma(),t=i.useState({}),r=t[0],o=t[1],s=gt(),l=wr(),u=kt(s.current),c=0;return i.createElement("ul",{className:A(is.emojiList),ref:s},i.createElement(as,null),a.map(function(d){var g=jf(d),M=c,h=r[g];return h&&(c+=h+u),i.createElement(i.Suspense,{key:g},i.createElement(ts,{categoryEmojis:l(g),categoryConfig:d,topOffset:M,onHeightReady:function(j){r[g]!==j&&o(function(m){var w;return R({},m,(w={},w[g]=j,w))})},scrollTop:f}))}))}function ts(e){var f=e.categoryEmojis,a=e.categoryConfig,t=e.topOffset,r=e.onHeightReady,o=e.scrollTop,s=ba(),l=s[0],u=es({categoryEmojis:f,topOffset:t,onHeightReady:r,scrollTop:o,isCategoryVisible:l.includes(a.category)}),c=u.virtualizedCounter,d=u.emojis,g=u.dimensions;return i.createElement(fs,{categoryConfig:a,height:g==null?void 0:g.categoryHeight,hidden:!d.length&&c===0},d)}var is=U.create({emojiList:{".":P.emojiList,listStyle:"none",margin:"0",padding:"0"}}),rs="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI2LjMuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI1MHB4IgoJIGhlaWdodD0iMTVweCIgdmlld0JveD0iMCAwIDUwIDE1IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1MCAxNSIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnIGlkPSJMYXllcl8xIj4KPC9nPgo8ZyBpZD0iTGF5ZXJfMiI+Cgk8cGF0aCBmaWxsPSIjRkZGRkZGIiBzdHJva2U9IiNFOEU3RTciIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgZD0iTTEuODYtMC40M2w5LjgzLDExLjUzYzAuNTksMC42OSwxLjU2LDAuNjksMi4xNCwwbDkuODMtMTEuNTMiLz4KCTxwYXRoIGZpbGw9IiMwMTAyMDIiIHN0cm9rZT0iIzE1MTYxNyIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBkPSJNMjYuODYtMC40M2w5LjgzLDExLjUzYzAuNTksMC42OSwxLjU2LDAuNjksMi4xNCwwbDkuODMtMTEuNTMiLz4KPC9nPgo8L3N2Zz4=",Ne;(function(e){e[e.Up=0]="Up",e[e.Down=1]="Down"})(Ne||(Ne={}));function os(){var e=If(),f=Zr(),a=Ae(),t=a[0],r=ye(),o=ls(f),s=o.getTop,l=o.getMenuDirection,u=mt(),c=ss(f),d=ve(),g=oe(e.current),M=!!(t&&g&&ze(t)&&g.classList.contains(P.emojiHasVariations));i.useEffect(function(){M&&Sf(f.current)},[f,M,e]);var h,p;return!M&&e.current?u(null):(h=s(),p=c()),i.createElement("div",{ref:f,className:A(rf.variationPicker,l()===Ne.Down&&rf.pointingUp,M&&rf.visible),style:{top:h}},M&&t?[ue(t)].concat(yf(t)).slice(0,6).map(function(j){return i.createElement(zf,{key:j,emoji:t,unified:j,emojiStyle:r,showVariations:!1,getEmojiUrl:d})}):null,i.createElement("div",{className:A(rf.pointer),style:p}))}function ss(e){var f=If();return function(){var t={};if(!e.current)return t;if(f.current){var r=oe(f.current),o=Eo(r);if(!r)return t;t.left=o+(r==null?void 0:r.clientWidth)/2}return t}}function ls(e){var f=If(),a=X(),t=Ne.Up;return{getMenuDirection:r,getTop:o};function r(){return t}function o(){t=Ne.Up;var s=0;if(!e.current)return 0;var l=an(e.current);if(f.current){var u,c=a.current,d=oe(f.current),g=an(d);s=Nt(d);var M=(u=c==null?void 0:c.scrollTop)!=null?u:0;M>s-l&&(t=Ne.Down,s+=g+l)}return s-l}}var rf=U.create(R({variationPicker:{".":P.variationPicker,position:"absolute",right:"15px",left:"15px",padding:"5px",boxShadow:"0px 2px 5px rgba(0, 0, 0, 0.2)",borderRadius:"3px",display:"flex",alignItems:"center",justifyContent:"space-around",opacity:"0",visibility:"hidden",pointerEvents:"none",top:"-100%",border:"1px solid var(--epr-picker-border-color)",height:"var(--epr-emoji-variation-picker-height)",zIndex:"var(--epr-skin-variation-picker-z-index)",background:"var(--epr-emoji-variation-picker-bg-color)",transform:"scale(0.9)",transition:"transform 0.1s ease-out, opacity 0.2s ease-out"},visible:{opacity:"1",visibility:"visible",pointerEvents:"all",transform:"scale(1)"},pointingUp:{".":"pointing-up",transformOrigin:"center 0%",transform:"scale(0.9)"},".pointing-up":{pointer:{top:"0",transform:"rotate(180deg) translateY(100%) translateX(18px)"}},pointer:{".":"epr-emoji-pointer",content:"",position:"absolute",width:"25px",height:"15px",backgroundRepeat:"no-repeat",backgroundPosition:"0 0",backgroundSize:"50px 15px",top:"100%",transform:"translateX(-18px)",backgroundImage:"url("+rs+")"}},me("pointer",{backgroundPosition:"-25px 0"})));function us(){var e=X(),f=_o(e);return Jt(e,He.PICKER),ao(),i.createElement("div",{className:A(cs.body,Le.hiddenOnReactions),ref:e},i.createElement(os,null),i.createElement(ns,{scrollTop:f}))}var cs=U.create({body:{".":P.scrollBody,flex:"1",overflowY:"scroll",overflowX:"hidden",position:"relative"}});function ds(e,f){if(!e||!f)return 0;var a=e.getBoundingClientRect(),t=f.getBoundingClientRect();return t.height-(a.y-t.y)}function gs(e,f){var a=X(),t=ht(),r=Mt();i.useEffect(function(){if(!e)return;var o=a.current;o==null||o.addEventListener("keydown",u,{passive:!0}),o==null||o.addEventListener("mouseover",c,!0),o==null||o.addEventListener("focus",s,!0),o==null||o.addEventListener("mouseout",l,{passive:!0}),o==null||o.addEventListener("blur",l,!0);function s(d){var g=oe(d.target);if(!g)return l();var M=xa(g),h=M.unified,p=M.originalUnified;if(!h||!p)return l();f({unified:h,originalUnified:p})}function l(d){if(d){var g=d.relatedTarget;if(!oe(g))return f(null)}f(null)}function u(d){d.key==="Escape"&&f(null)}function c(d){if(!t()){var g=oe(d.target);if(g){var M=ds(g,o),h=g.getBoundingClientRect().height;if(M0||o.get(E)}).map(function(x){var E=x[0];return E});a(p);var j=h[h.length-1];if((j==null?void 0:j[1])==1)return f(j[0]);for(var m=0,w=h;m .epr-icn-clear-search":{backgroundPositionY:"-60px"}}},gn=U.create(R({btnClearSearch:{".":"epr-btn-clear-search",position:"absolute",right:"var(--epr-search-bar-inner-padding)",height:"30px",width:"30px",display:"flex",alignItems:"center",justifyContent:"center",top:"50%",transform:"translateY(-50%)",padding:"0",borderRadius:"50%",":hover":{background:"var(--epr-hover-bg-color)"},":focus":{background:"var(--epr-hover-bg-color)"}},icnClearnSearch:{".":"epr-icn-clear-search",backgroundColor:"transparent",backgroundRepeat:"no-repeat",backgroundSize:"20px",height:"20px",width:"20px",backgroundImage:"url("+Bt+")",":hover":{backgroundPositionY:"-20px"},":focus":{backgroundPositionY:"-20px"}}},me("icnClearnSearch",{backgroundPositionY:"-40px"}),me("btnClearSearch",Ts))),zs="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI2LjMuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIyMHB4IiBoZWlnaHQ9IjQwcHgiIHZpZXdCb3g9IjAgMCAyMCA0MCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjAgNDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZmlsbD0iIzg2ODY4NiIgZD0iTTEyLDguODFjMCwyLjA4LTEuNjgsMy43Ni0zLjc2LDMuNzZjLTIuMDgsMC0zLjc2LTEuNjgtMy43Ni0zLjc2CgljMC0yLjA4LDEuNjgtMy43NiwzLjc2LTMuNzZDMTAuMzIsNS4wNSwxMiw2LjczLDEyLDguODF6IE0xMS4yMywxMi43MmMtMC44MywwLjY0LTEuODcsMS4wMS0yLjk5LDEuMDFjLTIuNzIsMC00LjkyLTIuMi00LjkyLTQuOTIKCWMwLTIuNzIsMi4yLTQuOTIsNC45Mi00LjkyYzIuNzIsMCw0LjkyLDIuMiw0LjkyLDQuOTJjMCwxLjEzLTAuMzgsMi4xNi0xLjAxLDIuOTlsMy45NCwzLjkzYzAuMjUsMC4yNSwwLjI1LDAuNjYsMCwwLjkyCgljLTAuMjUsMC4yNS0wLjY2LDAuMjUtMC45MiwwTDExLjIzLDEyLjcyeiIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZmlsbD0iI0MwQzBCRiIgZD0iTTEyLDI4LjgxYzAsMi4wOC0xLjY4LDMuNzYtMy43NiwzLjc2Yy0yLjA4LDAtMy43Ni0xLjY4LTMuNzYtMy43NgoJYzAtMi4wOCwxLjY4LTMuNzYsMy43Ni0zLjc2QzEwLjMyLDI1LjA1LDEyLDI2LjczLDEyLDI4LjgxeiBNMTEuMjMsMzIuNzJjLTAuODMsMC42NC0xLjg3LDEuMDEtMi45OSwxLjAxCgljLTIuNzIsMC00LjkyLTIuMi00LjkyLTQuOTJjMC0yLjcyLDIuMi00LjkyLDQuOTItNC45MmMyLjcyLDAsNC45MiwyLjIsNC45Miw0LjkyYzAsMS4xMy0wLjM4LDIuMTYtMS4wMSwyLjk5bDMuOTQsMy45MwoJYzAuMjUsMC4yNSwwLjI1LDAuNjYsMCwwLjkyYy0wLjI1LDAuMjUtMC42NiwwLjI1LTAuOTIsMEwxMS4yMywzMi43MnoiLz4KPC9zdmc+";function Es(){return i.createElement("div",{className:A(As.icnSearch)})}var As=U.create(R({icnSearch:{".":"epr-icn-search",content:"",position:"absolute",top:"50%",left:"var(--epr-search-bar-inner-padding)",transform:"translateY(-50%)",width:"20px",height:"20px",backgroundRepeat:"no-repeat",backgroundPosition:"0 0",backgroundSize:"20px",backgroundImage:"url("+zs+")"}},me("icnSearch",{backgroundPositionY:"-20px"})));function Ps(){var e=ot(),f=ja();return e?null:i.createElement(Ut,{className:A(gf.overlay)},i.createElement(Qs,null),f?i.createElement(Ot,null):null)}function Qs(){var e=Ce(),f=be(),a=xr(),t=Nr(),r=ro(),o=r.statusSearchResults,s=r.searchTerm,l=r.onChange,u=f==null?void 0:f.current,c=u==null?void 0:u.value;return i.createElement(Ef,{className:A(gf.searchContainer)},i.createElement("input",{autoFocus:t,"aria-label":"Type to search for an emoji",onFocus:e,className:A(gf.search),type:"text","aria-controls":"epr-search-id",placeholder:a,onChange:function(g){var M,h;l((M=g==null||(h=g.target)==null?void 0:h.value)!=null?M:c)},ref:f}),s?i.createElement("div",{role:"status",className:A("epr-status-search-results",gf.visuallyHidden),"aria-live":"polite",id:"epr-search-id","aria-atomic":"true"},o):null,i.createElement(Es,null),i.createElement(Ds,null))}var gf=U.create(R({overlay:{padding:"var(--epr-header-padding)",zIndex:"var(--epr-header-overlay-z-index)"},searchContainer:{".":"epr-search-container",flex:"1",display:"block",minWidth:"0"},visuallyHidden:{clip:"rect(0 0 0 0)",clipPath:"inset(50%)",height:"1px",overflow:"hidden",position:"absolute",whiteSpace:"nowrap",width:"1px"},search:{outline:"none",transition:"all 0.2s ease-in-out",color:"var(--epr-search-input-text-color)",borderRadius:"var(--epr-search-input-border-radius)",padding:"var(--epr-search-input-padding)",height:"var(--epr-search-input-height)",backgroundColor:"var(--epr-search-input-bg-color)",border:"1px solid var(--epr-search-border-color)",width:"100%",":focus":{backgroundColor:"var(--epr-search-input-bg-color-active)",border:"1px solid var(--epr-search-border-color-active)"},"::placeholder":{color:"var(--epr-search-input-placeholder-color)"}},btnClearSearch:{".":"epr-btn-clear-search",position:"absolute",right:"var(--epr-search-bar-inner-padding)",height:"30px",width:"30px",display:"flex",alignItems:"center",justifyContent:"center",top:"50%",transform:"translateY(-50%)",padding:"0",borderRadius:"50%",":hover":{background:"var(--epr-hover-bg-color)"},":focus":{background:"var(--epr-hover-bg-color)"}},icnClearnSearch:{".":"epr-icn-clear-search",backgroundColor:"transparent",backgroundRepeat:"no-repeat",backgroundSize:"20px",height:"20px",width:"20px",backgroundImage:"url("+Bt+")",":hover":{backgroundPositionY:"-20px"},":focus":{backgroundPositionY:"-20px"}}},me("icnClearnSearch",{backgroundPositionY:"-40px"}),me("btnClearSearch",{":hover > .epr-icn-clear-search":{backgroundPositionY:"-60px"}})));function Rs(){return i.createElement(Ef,{className:A("epr-header",Le.hiddenOnReactions)},i.createElement(Ps,null),i.createElement(Ns,null))}function Ys(e){return i.createElement(Br,null,i.createElement(Yi,null),i.createElement(rr,Object.assign({},e),i.createElement(br,null,i.createElement(Js,null))))}function Js(){var e=je(),f=e[0],a=at(),t=i.useState(!f),r=t[0],o=t[1],s=Tr();return i.useEffect(function(){f&&!a||r||o(!0)},[r,a,f]),s?i.createElement(ko,null,i.createElement(Fo,null),i.createElement(Us,{renderAll:r})):null}function Us(e){var f=e.renderAll;return f?i.createElement(i.Fragment,null,i.createElement(Rs,null),i.createElement(us,null),i.createElement(Ls,null)):null}var Os=i.memo(Ys,Rn),Bs=(function(e){Qi(f,e);function f(t){var r;return r=e.call(this,t)||this,r.state={hasError:!1},r}f.getDerivedStateFromError=function(){return{hasError:!0}};var a=f.prototype;return a.componentDidCatch=function(r,o){console.error("Emoji Picker React failed to render:",r,o)},a.render=function(){return this.state.hasError?null:this.props.children},f})(i.Component);function Gs(e){var f=Cr({onEmojiClick:e.onEmojiClick,onReactionClick:e.onReactionClick,onSkinToneChange:e.onSkinToneChange});return i.createElement(Bs,null,i.createElement(et.Provider,{value:f},i.createElement(Os,Object.assign({},e))))}function Zs({value:e,onChange:f}){const[a,t]=i.useState(!1),r=i.useRef(null);return i.useEffect(()=>{if(!a)return;function o(l){l.key==="Escape"&&t(!1)}function s(l){r.current&&!r.current.contains(l.target)&&t(!1)}return document.addEventListener("keydown",o),document.addEventListener("mousedown",s),()=>{document.removeEventListener("keydown",o),document.removeEventListener("mousedown",s)}},[a]),n.jsxs("div",{ref:r,className:"relative inline-block",children:[n.jsx("button",{type:"button",onClick:()=>t(o=>!o),className:"border border-white/10 rounded w-10 h-10 text-xl flex items-center justify-center bg-shell-bg-deep hover:bg-white/5 transition-colors","aria-label":"Open emoji picker","aria-expanded":a,"aria-haspopup":"dialog",children:e||"+"}),a&&n.jsx("div",{className:"absolute z-50 mt-1",role:"dialog","aria-label":"Emoji picker",children:n.jsx(Gs,{theme:Se.DARK,onEmojiClick:o=>{f(o.emoji),t(!1)}})})]})}const Hs={local:{label:"Local",icon:n.jsx(ai,{size:18}),desc:"Downloaded on this device"},worker:{label:"Worker",icon:n.jsx(hn,{size:18}),desc:"Hosted on cluster workers"},cloud:{label:"Cloud",icon:n.jsx(fi,{size:18}),desc:"Cloud provider API"}};function Gt({models:e,modelsLoaded:f,onSelect:a,onBack:t,onCancel:r}){const[o,s]=i.useState("source"),[l,u]=i.useState(null),[c,d]=i.useState(null),[g,M]=i.useState(""),h=i.useMemo(()=>e.filter(v=>v.hostKind==="controller"||!v.hostKind),[e]),p=i.useMemo(()=>e.filter(v=>v.hostKind==="worker"),[e]),j=i.useMemo(()=>e.filter(v=>v.hostKind==="cloud"),[e]),m=[...h.length>0?["local"]:[],...p.length>0?["worker"]:[],...j.length>0?["cloud"]:[]],w=i.useMemo(()=>[...new Set(p.map(v=>v.host??"unknown"))],[p]),k=i.useMemo(()=>[...new Set(j.map(v=>v.host??"unknown"))],[j]),I=v=>{const L=v==="worker"?w:k;L.length<=1?(d(L[0]??null),s("list")):s("provider")},S=v=>{u(v),M(""),v==="local"?(d(null),s("list")):I(v)};i.useEffect(()=>{f&&m.length===1&&m[0]&&S(m[0])},[f]);const x=v=>{d(v),M(""),s("list")},E=()=>{o==="source"?r?r():t==null||t():o==="provider"?(u(null),s("source")):l!=="local"&&(l==="worker"?w:k).length>1?(d(null),s("provider")):(u(null),s("source"))},Y=e.filter(v=>l==="local"?v.hostKind==="controller"||!v.hostKind:l==="worker"?v.hostKind==="worker"&&v.host===c:l==="cloud"?v.hostKind==="cloud"&&v.host===c:!1).filter(v=>{if(!g)return!0;const L=g.toLowerCase();return v.name.toLowerCase().includes(L)||v.id.toLowerCase().includes(L)});if(o==="source"){const v=r?"Cancel":"Back";return n.jsxs("div",{className:"space-y-2",children:[(t||r)&&n.jsxs("button",{onClick:E,className:"flex items-center gap-1 text-xs text-shell-text-tertiary hover:text-shell-text mb-3 transition-colors",children:[n.jsx(sf,{size:14}),v]}),n.jsx("span",{className:"block text-xs text-shell-text-secondary mb-2",children:"Where is the model?"}),!f&&n.jsx("p",{className:"text-xs text-shell-text-tertiary py-2",children:"Loading models…"}),f&&m.length===0&&n.jsx("p",{className:"text-xs text-shell-text-tertiary py-2",children:"No models available."}),n.jsx("div",{className:"grid grid-cols-1 gap-2",children:m.map(L=>{const{label:C,icon:T,desc:y}=Hs[L];return n.jsxs("button",{onClick:()=>S(L),"aria-label":`Select ${C} models`,className:"w-full text-left px-4 py-3 rounded-lg border border-white/5 bg-shell-bg-deep hover:bg-white/5 transition-colors flex items-center gap-3",children:[n.jsx("span",{className:"text-accent shrink-0",children:T}),n.jsxs("div",{children:[n.jsx("div",{className:"text-sm font-medium",children:C}),n.jsx("div",{className:"text-xs text-shell-text-tertiary",children:y})]})]},L)})})]})}if(o==="provider"){const v=l==="worker"?w:k,L=l==="worker"?"Select worker":"Select provider";return n.jsxs("div",{className:"space-y-2",children:[n.jsxs("button",{onClick:E,className:"flex items-center gap-1 text-xs text-shell-text-tertiary hover:text-shell-text mb-3 transition-colors",children:[n.jsx(sf,{size:14}),"Back"]}),n.jsx("span",{className:"block text-xs text-shell-text-secondary mb-2",children:L}),n.jsx("div",{className:"grid grid-cols-1 gap-2",children:v.map(C=>n.jsx("button",{onClick:()=>x(C),"aria-label":`Select ${C}`,className:"w-full text-left px-4 py-3 rounded-lg border border-white/5 bg-shell-bg-deep hover:bg-white/5 transition-colors",children:n.jsx("div",{className:"text-sm font-medium",children:C})},C))})]})}return n.jsxs("div",{className:"space-y-2",children:[n.jsxs("button",{onClick:E,className:"flex items-center gap-1 text-xs text-shell-text-tertiary hover:text-shell-text mb-1 transition-colors",children:[n.jsx(sf,{size:14}),"Back"]}),n.jsxs("div",{className:"relative mb-2",children:[n.jsx(ei,{size:14,className:"absolute left-2.5 top-1/2 -translate-y-1/2 text-shell-text-tertiary pointer-events-none"}),n.jsx("input",{type:"text",placeholder:"Search models…",value:g,onChange:v=>M(v.target.value),className:"w-full pl-8 pr-8 h-8 rounded-lg border border-white/10 bg-shell-bg-deep text-sm text-shell-text placeholder:text-shell-text-tertiary focus:outline-none focus:border-accent/40",autoFocus:!0}),g&&n.jsx("button",{onClick:()=>M(""),className:"absolute right-2.5 top-1/2 -translate-y-1/2 text-shell-text-tertiary hover:text-shell-text","aria-label":"Clear search",children:n.jsx(Be,{size:12})})]}),Y.length===0&&n.jsx("p",{className:"text-xs text-shell-text-tertiary py-4 text-center",children:"No models match your search."}),Y.map(v=>n.jsxs("button",{onClick:()=>a(v.id,v),className:"w-full text-left px-4 py-3 rounded-lg border border-white/5 bg-shell-bg-deep hover:bg-white/5 transition-colors",children:[n.jsxs("div",{className:"flex items-center gap-1.5 min-w-0",children:[n.jsx("div",{className:"text-sm font-medium truncate",children:v.name}),v.host&&v.hostKind!=="controller"&&n.jsx("span",{className:Cn,title:`Hosted on ${v.host}`,children:v.host})]}),n.jsx("div",{className:"text-xs text-shell-text-tertiary",children:v.id})]},`${v.hostKind??"?"}:${v.host??"?"}:${v.id}`))]})}function Ws({open:e,onClose:f,models:a,modelsLoaded:t,onSelect:r,title:o="Select Model"}){return e?n.jsx("div",{className:"absolute inset-0 z-[60] flex items-center justify-center bg-black/60 backdrop-blur-sm p-4",style:{paddingTop:"calc(1rem + env(safe-area-inset-top, 0px))",paddingBottom:"calc(1rem + env(safe-area-inset-bottom, 0px))"},onClick:f,onKeyDown:s=>{s.key==="Escape"&&f()},tabIndex:-1,role:"dialog","aria-modal":"true","aria-labelledby":"model-picker-modal-title",children:n.jsxs("div",{className:"w-full max-w-md max-h-full min-h-0 bg-shell-surface rounded-xl border border-white/10 shadow-2xl overflow-hidden flex flex-col",onClick:s=>s.stopPropagation(),children:[n.jsxs("div",{className:"flex items-center justify-between px-5 py-4 border-b border-white/5 shrink-0",children:[n.jsx("h2",{id:"model-picker-modal-title",className:"text-sm font-semibold",children:o}),n.jsx(G,{variant:"ghost",size:"icon",className:"h-7 w-7",onClick:f,"aria-label":"Close",children:n.jsx(Be,{size:16})})]}),n.jsx("div",{className:"px-5 py-5 flex-1 min-h-0 overflow-y-auto",children:n.jsx(Gt,{models:a,modelsLoaded:t,onSelect:(s,l)=>{r(s,l),f()},onCancel:f})})]})}):null}function Fs(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"").slice(0,63)}const Zt=/^[a-z0-9][a-z0-9-]{0,62}$/;function mn(e){return Zt.test(e)}function _s({agent:e,onDismiss:f,onAddPersona:a}){return e!=null&&e.migrated_to_v2_personas?null:n.jsxs("div",{className:"bg-yellow-950/30 border border-yellow-800 rounded px-3 py-2 flex items-center justify-between mb-3",children:[n.jsx("span",{className:"text-sm",children:"Memory upgraded — this agent now knows how to use taOSmd. Add a persona to give it character."}),n.jsxs("div",{className:"flex gap-2",children:[n.jsx("button",{onClick:a,className:"text-blue-400 text-sm",children:"Add persona →"}),n.jsx("button",{onClick:f,className:"opacity-60 text-sm",children:"Dismiss"})]})]})}const Vs=[256,512,1024,2048,4096,8192,16384,32768,65536,131072],Wf=["#3b82f6","#8b5cf6","#ec4899","#f59e0b","#10b981","#ef4444","#06b6d4","#f97316"],bn={running:"bg-emerald-500/20 text-emerald-400",stopped:"bg-zinc-500/20 text-zinc-400",error:"bg-red-500/20 text-red-400",deploying:"bg-amber-500/20 text-amber-400"};function Ks({agent:e,diskState:f,onViewLogs:a,onViewSkills:t,onViewMessages:r,onDelete:o,onResume:s}){const l=ta(e.emoji,e.framework);return n.jsxs(Ge,{className:"flex items-center gap-4 px-4 py-3 hover:bg-shell-surface/50 transition-colors",children:[n.jsxs("div",{className:"flex items-center gap-2.5 flex-1 min-w-0",children:[n.jsx("span",{className:"w-2.5 h-2.5 rounded-full shrink-0",style:{backgroundColor:e.color},"aria-label":`Color: ${e.color}`}),n.jsx("span",{className:"text-base leading-none shrink-0","aria-hidden":"true",children:l}),n.jsx("span",{className:"font-medium text-sm truncate",children:e.display_name||e.name}),e.paused&&n.jsxs("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded-full text-[10px] font-medium bg-amber-500/20 text-amber-400 border border-amber-500/20",title:"This agent is paused due to a worker failure",children:[n.jsx(ni,{size:10,"aria-hidden":"true"}),"paused"]}),f&&f.state!=="ok"&&n.jsxs("span",{className:`inline-flex items-center gap-1 px-1.5 py-0.5 rounded-full text-[10px] font-medium border ${f.state==="hard"?"bg-red-500/20 text-red-400 border-red-500/20":"bg-amber-500/20 text-amber-400 border-amber-500/20"}`,title:f.state==="hard"?"Full — agent paused until user action":`Used more than ${f.percent}% — needs audit or expand`,"aria-label":`Disk usage: ${f.used_gib}/${f.quota_gib} GiB (${f.percent}%)`,children:[n.jsx(Ln,{size:10,"aria-hidden":"true"}),f.used_gib,"/",f.quota_gib," GiB (",f.percent,"%)"]})]}),n.jsxs("div",{className:"flex items-center gap-1.5 text-sm text-shell-text-secondary min-w-0",children:[n.jsx(hn,{size:13,className:"text-shell-text-tertiary"}),n.jsx("span",{className:"truncate",children:e.host})]}),n.jsx("span",{className:`inline-block px-2 py-0.5 rounded-full text-xs font-medium capitalize ${bn[e.status]??bn.stopped}`,"aria-label":`Status: ${e.status}`,children:e.status}),n.jsx("span",{className:"text-sm text-shell-text-secondary tabular-nums w-20 text-right",children:e.vectors.toLocaleString()}),n.jsxs("div",{className:"flex items-center gap-1",children:[e.paused&&n.jsx(G,{variant:"ghost",size:"icon",className:"h-8 w-8 hover:bg-emerald-500/15 hover:text-emerald-400 text-amber-400",onClick:()=>s(e.name),"aria-label":`Resume ${e.name}`,title:"Resume agent",children:n.jsx(jn,{size:15})}),n.jsx(G,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:()=>a(e.name),"aria-label":`View logs for ${e.name}`,title:"View Logs",children:n.jsx(yn,{size:15})}),n.jsx(G,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:()=>t(e.name),"aria-label":`Manage skills for ${e.name}`,title:"Skills",children:n.jsx(mf,{size:15})}),n.jsx(G,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:()=>r(e.name),"aria-label":`View messages for ${e.name}`,title:"Messages",children:n.jsx(na,{size:15})}),n.jsx(G,{variant:"ghost",size:"icon",className:"h-8 w-8 hover:bg-red-500/15 hover:text-red-400",onClick:()=>o(e.name),"aria-label":`Delete ${e.name}`,title:"Delete",children:n.jsx(vn,{size:15})})]})]})}function $s({agent:e,initialTab:f,onClose:a,onAgentUpdated:t}){const[r,o]=i.useState(f),[s,l]=i.useState("Fetching logs..."),u=i.useRef(null),c=e.name,d=i.useCallback(async()=>{try{const h=await fetch(`/api/agents/${encodeURIComponent(c)}/logs?lines=100`,{headers:{Accept:"application/json"}});if(!h.ok){l(`[${new Date().toLocaleTimeString()}] Log fetch failed (${h.status}) for ${c}.`);return}const p=await h.json(),j=typeof(p==null?void 0:p.logs)=="string"?p.logs:Array.isArray(p==null?void 0:p.logs)?p.logs.join(` -`):JSON.stringify(p);l(j||`[${new Date().toLocaleTimeString()}] No logs available for ${c}.`)}catch{l(`[${new Date().toLocaleTimeString()}] Unable to reach log endpoint for ${c}. -[${new Date().toLocaleTimeString()}] Agent may not be running or the API is unavailable.`)}},[c]);i.useEffect(()=>{if(r!=="logs")return;d();const h=setInterval(d,1e4);return()=>clearInterval(h)},[d,r]),i.useEffect(()=>{u.current&&(u.current.scrollTop=u.current.scrollHeight)},[s]);const g=async()=>{await fetch(`/api/agents/${encodeURIComponent(c)}/dismiss-migration-banner`,{method:"POST"}),t()},M=async()=>{await g(),o("persona")};return n.jsxs(n.Fragment,{children:[n.jsx(_s,{agent:e,onDismiss:g,onAddPersona:M}),n.jsxs(ii,{value:r,onValueChange:h=>o(h),className:"border-t border-white/5 bg-shell-bg-deep flex flex-col",style:{height:"22rem"},children:[n.jsxs("div",{className:"flex items-center justify-between px-4 py-2 border-b border-white/5 shrink-0",children:[n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsxs("div",{className:"flex items-center gap-1.5 text-sm",children:[n.jsx("span",{className:"w-2 h-2 rounded-full",style:{backgroundColor:e.color},"aria-hidden":!0}),n.jsx("span",{className:"text-base leading-none","aria-hidden":"true",children:ta(e.emoji,e.framework)}),n.jsx("span",{className:"font-medium",children:c})]}),n.jsxs(ri,{"aria-label":"Agent detail tabs",children:[n.jsxs(Qe,{value:"logs",children:[n.jsx(yn,{size:13,className:"mr-1.5"}),"Logs"]}),n.jsxs(Qe,{value:"persona",children:[n.jsx(_f,{size:13,className:"mr-1.5"}),"Persona"]}),n.jsxs(Qe,{value:"memory",children:[n.jsx(pn,{size:13,className:"mr-1.5"}),"Memory"]}),n.jsxs(Qe,{value:"skills",children:[n.jsx(mf,{size:13,className:"mr-1.5"}),"Skills"]}),n.jsxs(Qe,{value:"messages",children:[n.jsx(na,{size:13,className:"mr-1.5"}),"Messages"]})]})]}),n.jsx(G,{variant:"ghost",size:"icon",className:"h-7 w-7",onClick:a,"aria-label":"Close detail panel",children:n.jsx(Be,{size:14})})]}),n.jsxs("div",{className:"flex-1 min-h-0 overflow-hidden",children:[n.jsx(Re,{value:"logs",className:"h-full mt-0",children:n.jsx("pre",{ref:u,className:"h-full overflow-auto p-4 text-xs font-mono text-shell-text-secondary leading-relaxed whitespace-pre-wrap",children:s})}),n.jsx(Re,{value:"persona",className:"h-full mt-0",children:n.jsx(yi,{agent:e,onUpdated:t})}),n.jsx(Re,{value:"memory",className:"h-full mt-0",children:n.jsx(Ci,{agent:e,onUpdated:t})}),n.jsx(Re,{value:"skills",className:"h-full mt-0",children:n.jsx(di,{agentId:e.name,framework:e.framework||"smolagents"})}),n.jsx(Re,{value:"messages",className:"h-full mt-0",children:n.jsx(bi,{agentName:e.name})})]})]})]})}function Xs({open:e,onClose:f}){var Ua,Oa,Ba;const[a,t]=i.useState(0),[r,o]=i.useState(null),[s,l]=i.useState(""),[u,c]=i.useState(null),[d,g]=i.useState(!1),[M,h]=i.useState(Wf[0]),[p,j]=i.useState(""),[m,w]=i.useState([]),[k,I]=i.useState(""),[S,x]=i.useState(!1),[E,Y]=i.useState([]),[v,L]=i.useState(!1),[C,T]=i.useState(""),[y,W]=i.useState(""),[F,Xe]=i.useState(""),[qe,Sa]=i.useState(!1),[de,Af]=i.useState("pause"),[Me,Pf]=i.useState([]),[Ht,Da]=i.useState(!1),[ef,Ta]=i.useState(!1),[Wt,Qf]=i.useState(!1),[za,Ea]=i.useState(null),[Ft,Aa]=i.useState(null),[ie,Rf]=i.useState({k:["fp16"],v:["fp16"],boundary:!1,flat:["fp16"]}),[Yf,Pa]=i.useState("fp16"),[Jf,Qa]=i.useState("fp16"),[Uf,Ra]=i.useState(0),[Ya,ff]=i.useState(!1),[Ja,af]=i.useState(null);if(i.useEffect(()=>{e&&((async()=>{try{const b=await fetch("/api/frameworks",{headers:{Accept:"application/json"}}),D=b.headers.get("content-type")??"";if(b.ok&&D.includes("application/json")){const N=await b.json();if(Array.isArray(N)&&N.length>0){const _=N.filter(Q=>Q.verification_status!=="broken").map(Q=>({id:String(Q.id),name:String(Q.name??Q.id),description:String(Q.description??""),verification_status:Q.verification_status??"alpha"}));_.sort((Q,O)=>Q.id==="openclaw"?-1:O.id==="openclaw"?1:0),w(_)}}}catch{}})(),(async()=>{try{const b=await fetch("/api/cluster/kv-quant-options",{headers:{Accept:"application/json"}}),D=b.headers.get("content-type")??"";if(b.ok&&D.includes("application/json")){const N=await b.json(),Z=Array.isArray(N==null?void 0:N.k)&&N.k.length>0?N.k:Array.isArray(N==null?void 0:N.options)&&N.options.length>0?N.options:["fp16"],_=Array.isArray(N==null?void 0:N.v)&&N.v.length>0?N.v:Array.isArray(N==null?void 0:N.options)&&N.options.length>0?N.options:["fp16"],Q=!!(N!=null&&N.boundary_layer_protect),O=new Set([...Z,..._]);Rf({k:Z,v:_,boundary:Q,flat:Array.from(O).sort()})}}catch{}})(),(async()=>{const b=[];try{const Q=await fetch("/api/models",{headers:{Accept:"application/json"}}),O=Q.headers.get("content-type")??"";if(Q.ok&&O.includes("application/json")){const se=await Q.json(),Bf=(Array.isArray(se)?se:Array.isArray(se==null?void 0:se.models)?se.models:[]).filter(q=>q.has_downloaded_variant===!0);b.push(...Bf.map(q=>({id:String(q.id),name:String(q.name??q.id),host:"controller",hostKind:"controller"})))}}catch{}const D=[];try{const Q=await oi();for(const O of si(Q))D.push({id:O.id,name:O.name,host:O.host,hostKind:"worker"});Rf(O=>O.k.length>1||O.v.length>1||O.boundary?O:ui(Q))}catch{}const N=[];try{const[Q,O]=await Promise.all([fetch("/api/providers/models?refresh=true",{headers:{Accept:"application/json"}}),fetch("/api/providers",{headers:{Accept:"application/json"}})]),se=new Map,Ga=new Set;try{const q=O.headers.get("content-type")??"";if(O.ok&&q.includes("application/json")){const nf=await O.json();for(const ge of Array.isArray(nf)?nf:[]){if(!li.includes(ge.type))continue;const ke=ge.name??ge.type;Ga.add(ke);const le=Array.isArray(ge.models)?ge.models:[];for(const he of le){const Ie=he.id??he.name;Ie&&!se.has(Ie)&&se.set(Ie,ke)}}}}catch{}const Bf=Q.headers.get("content-type")??"";if(Q.ok&&Bf.includes("application/json")){const q=await Q.json(),nf=Array.isArray(q==null?void 0:q.data)?q.data:[],ge=new Set;for(const ke of nf){const le=ke==null?void 0:ke.id;if(!le||typeof le!="string"||le==="default"||le==="taos-embedding-default")continue;const he=se.get(le);if(!he)continue;const Ie=`${he}:${le}`;ge.has(Ie)||(ge.add(Ie),N.push({id:le,name:`${le} (${he})`,host:he,hostKind:"cloud"}))}}}catch{}const Z=new Set,_=[];for(const Q of[...b,...D,...N]){const O=`${Q.hostKind??"?"}:${Q.host??"?"}:${Q.id}`;Z.has(O)||(Z.add(O),_.push(Q))}Y(_),L(!0)})())},[e]),i.useEffect(()=>{e&&(t(0),o(null),l(""),c(null),g(!1),h(Wf[0]),j(""),I(""),x(!1),T(""),Y([]),L(!1),W(""),Xe(""),Sa(!1),Af("pause"),Pf([]),Rf({k:["fp16"],v:["fp16"],boundary:!1,flat:["fp16"]}),Pa("fp16"),Qa("fp16"),Ra(0),Ta(!1),Qf(!1),Ea(null),Aa(null),ff(!1),af(null))},[e]),i.useEffect(()=>{Me.length>0&&de==="pause"&&Af("fallback")},[Me,de]),!e)return null;const Of=["Persona","Name & Color","Framework","Model","Permissions","Failure Policy","Review"],_t=()=>a===0?r!==null:a===1?!(s.trim().length===0||u!==null&&!mn(u)):a===2?k.length>0:a===3?C.length>0:!0,Vt=Of.length-1;async function Kt(){ff(!0),af(null);try{const b=y?parseInt(y,10):null,D=b===null?null:b>=1024?`${Math.round(b/1024)}GB`:`${b}MB`,N=await fetch("/api/agents/deploy",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({name:u||s.trim(),framework:k,model:C,color:M,emoji:p.trim()||null,memory_limit:D,cpu_limit:F?parseInt(F,10):null,can_read_user_memory:qe,on_worker_failure:de,fallback_models:Me,kv_cache_quant_k:Yf,kv_cache_quant_v:Jf,kv_cache_quant_boundary_layers:Uf,soul_md:(r==null?void 0:r.soul_md)??"",agent_md:(r==null?void 0:r.agent_md)??"",source_persona_id:(r==null?void 0:r.source_persona_id)??null,save_to_library:(r==null?void 0:r.save_to_library)??null})});if(!N.ok){let Z=`Deploy failed (${N.status})`;try{const _=await N.json();_!=null&&_.error&&(Z=String(_.error))}catch{}af(Z),ff(!1);return}f(!0)}catch(b){af(b instanceof Error?b.message:"Network error"),ff(!1)}}return n.jsx("div",{className:"absolute inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm p-4",style:{paddingTop:"calc(1rem + env(safe-area-inset-top, 0px))",paddingBottom:"calc(1rem + env(safe-area-inset-bottom, 0px))"},onClick:()=>f(),role:"dialog","aria-modal":"true","aria-label":"Deploy Agent",children:n.jsxs("div",{className:"w-full max-w-lg max-h-full min-h-0 bg-shell-surface rounded-xl border border-white/10 shadow-2xl overflow-hidden flex flex-col",onClick:b=>b.stopPropagation(),children:[n.jsxs("div",{className:"flex items-center justify-between px-5 py-4 border-b border-white/5 shrink-0",children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(Za,{size:16,className:"text-accent"}),n.jsx("h2",{className:"text-sm font-semibold",children:"Deploy Agent"})]}),n.jsx(G,{variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>f(),"aria-label":"Close wizard",children:n.jsx(Be,{size:16})})]}),n.jsx("div",{className:"flex items-center gap-1 px-5 py-3 border-b border-white/5 shrink-0 overflow-x-auto",children:Of.map((b,D)=>n.jsxs("div",{className:"flex items-center gap-1",children:[n.jsx("div",{className:`w-6 h-6 rounded-full flex items-center justify-center text-[10px] font-medium transition-colors ${D