@idosgames/mcp 0.1.37 → 0.1.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/dist/cli.js +2235 -27
- package/package.json +4 -1
- package/registry/host.json +3 -3
- package/registry/index.json +309 -156
- package/registry/modules/ai.json +7 -7
- package/registry/modules/board-game.json +14 -14
- package/registry/modules/boosts.json +3 -3
- package/registry/modules/character.json +32 -15
- package/registry/modules/chat.json +3 -3
- package/registry/modules/collections.json +7 -7
- package/registry/modules/coop-events.json +7 -7
- package/registry/modules/craft.json +3 -3
- package/registry/modules/deals.json +7 -7
- package/registry/modules/events.json +8 -8
- package/registry/modules/friends.json +9 -9
- package/registry/modules/hero-run.json +497 -0
- package/registry/modules/idle-rpg.json +70 -18
- package/registry/modules/inventory.json +3 -3
- package/registry/modules/invite.json +7 -7
- package/registry/modules/leaderboard.json +10 -10
- package/registry/modules/lootboxes.json +7 -7
- package/registry/modules/mailbox.json +8 -8
- package/registry/modules/marketplace.json +8 -8
- package/registry/modules/mini-game.json +8 -8
- package/registry/modules/multiplayer.json +7 -7
- package/registry/modules/premium.json +7 -7
- package/registry/modules/profile.json +7 -7
- package/registry/modules/pvp.json +7 -7
- package/registry/modules/quests.json +8 -8
- package/registry/modules/rewards.json +8 -8
- package/registry/modules/season.json +7 -7
- package/registry/modules/store.json +7 -7
- package/registry/modules/tutorials.json +7 -7
- package/registry/modules/video-studio.json +228 -0
- package/registry/modules/voxelcraft.json +42 -125
- package/registry/modules/workshop.json +3 -3
- package/registry/skills/hero-run.json +6 -0
- package/registry/skills/idosgames-module-contract.json +2 -2
- package/registry/skills/idosgames-project-structure.json +1 -1
- package/registry/skills/idosgames-ui-kit.json +1 -1
- package/registry/skills/video-studio.json +6 -0
- package/registry/video.json +9800 -0
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"catalog": {
|
|
9
9
|
"type": "feature",
|
|
10
10
|
"summary": "Heroes screen for any game: roster, ranks and stats with their costs, equipment slots with 'Equip best', item levels and skins.",
|
|
11
|
-
"description": "A ready heroes screen (the Hero button of the Unity SDK) for ANY game, built on the @idosgames/react/ui kit and client.character. The screen is the selected hero's equipment hub: portrait, class and rarity, rank and server-computed Power, 'Rank up' with its price, gear slots (locked ones show the rank they open at), 'Equip best' when better gear fits, 'Take off all', and the gear the player owns by class. Everything detailed is a popup: the hero list (select, unlock for currency), the stats (level/cap bars, upgrade prices, requirements, 'Upgrade all' — as many levels as the balances cover, cheapest first, in one batch —, and 'where this number comes from' — base, stat levels, rank, gear flat and percent bonuses), a slot's fitting gear, a piece of gear (equip / take off / level up) and skins (wear, buy). Prices and caps follow the title's curves (rank ladder, stat cost curve, StatMaxLevelCurve, item Upgrade); the server re-checks everything. Registers the 'character' feature; the inventory hands equipment to it with ctx.features.open('character', { itemInstanceID }). Its badge counts heroes to unlock or rank up and better gear. Ships title-seed.json: three heroes (Knight free, Archer and Mage for gems) with stats, ranks and slots. Emits character:hero-selected@1 with the hero the player plays with (on start-up and on every pick) so a game can field that hero.",
|
|
11
|
+
"description": "A ready heroes screen (the Hero button of the Unity SDK) for ANY game, built on the @idosgames/react/ui kit and client.character. The screen is the selected hero's equipment hub: portrait, class and rarity, rank and server-computed Power, 'Rank up' with its price, gear slots (locked ones show the rank they open at), 'Equip best' when better gear fits, 'Take off all', and the gear the player owns by class. Everything detailed is a popup: the hero list (select, unlock for currency), the stats (level/cap bars, upgrade prices, requirements, 'Upgrade all' — as many levels as the balances cover, cheapest first, in one batch —, and 'where this number comes from' — base, stat levels, rank, gear flat and percent bonuses), a slot's fitting gear, a piece of gear (equip / take off / level up) and skins (wear, buy). Prices and caps follow the title's curves (rank ladder, stat cost curve, StatMaxLevelCurve, item Upgrade); the server re-checks everything. Registers the 'character' feature; the inventory hands equipment to it with ctx.features.open('character', { itemInstanceID }). Its badge counts heroes to unlock or rank up and better gear. Ships title-seed.json: three heroes (Knight free, Archer and Mage for gems) with stats, ranks and slots. The hero is the game's own character when the game set ctx.characterArt (idle-rpg: its layered hero, live on the hub and the card, still in the list, redressed on every equip), else the screen's own picture by class. Emits character:hero-selected@1 with the hero the player plays with (on start-up and on every pick) so a game can field that hero.",
|
|
12
12
|
"provides": [
|
|
13
13
|
"hero roster with unlock for currency",
|
|
14
14
|
"rank up with price by the rank ladder",
|
|
@@ -21,7 +21,8 @@
|
|
|
21
21
|
"item level upgrades",
|
|
22
22
|
"character skins",
|
|
23
23
|
"demo heroes",
|
|
24
|
-
"selected hero for the game (event)"
|
|
24
|
+
"selected hero for the game (event)",
|
|
25
|
+
"the game's own hero drawn on the screen (ctx.characterArt)"
|
|
25
26
|
],
|
|
26
27
|
"tags": [
|
|
27
28
|
"heroes",
|
|
@@ -39,7 +40,7 @@
|
|
|
39
40
|
"name": "iDos Games",
|
|
40
41
|
"url": "https://idosgames.com"
|
|
41
42
|
},
|
|
42
|
-
"version": "0.
|
|
43
|
+
"version": "0.2.2",
|
|
43
44
|
"events": {
|
|
44
45
|
"emits": [
|
|
45
46
|
{
|
|
@@ -53,28 +54,44 @@
|
|
|
53
54
|
}
|
|
54
55
|
},
|
|
55
56
|
"dependencies": {
|
|
56
|
-
"@idosgames/core": "0.
|
|
57
|
-
"@idosgames/module-sdk": "0.
|
|
58
|
-
"@idosgames/react": "0.
|
|
57
|
+
"@idosgames/core": "0.23.0",
|
|
58
|
+
"@idosgames/module-sdk": "0.13.0",
|
|
59
|
+
"@idosgames/react": "0.6.0",
|
|
59
60
|
"react": "19.2.7"
|
|
60
61
|
},
|
|
61
|
-
"contentHash": "
|
|
62
|
+
"contentHash": "4757f0b379efc09799baad1a633ec697016eda834a8f4cc54be0bd6ad78243f9",
|
|
62
63
|
"files": [
|
|
63
64
|
{
|
|
64
65
|
"path": "CharacterScreen.tsx",
|
|
65
|
-
"content": "import {\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport {\n type FeatureRegistry,\n type FeatureScreenProps,\n} from \"@idosgames/module-sdk\";\nimport {\n Badge,\n EmptyState,\n ItemTile,\n KitPortal,\n ResourceList,\n canAfford,\n errorText,\n formatAmount,\n useCatalog,\n useSound,\n useToast,\n useUiKit,\n} from \"@idosgames/react/ui\";\nimport {\n bestLoadout,\n breakdown,\n rankCost,\n resolveLadder,\n resolveSlots,\n resolveStats,\n roster,\n statNumber,\n unequipAllSlots,\n type GearPiece,\n type ItemDefWithGear,\n type RosterEntry,\n type SlotView,\n type StatView,\n} from \"./model\";\nimport { t } from \"./i18n\";\nimport { readSelected, resolveSelected, saveSelected } from \"./selection\";\nimport { HeroesPopup } from \"./components/HeroesPopup\";\nimport { PiecePopup } from \"./components/PiecePopup\";\nimport { SkinsPopup } from \"./components/SkinsPopup\";\nimport { SlotPopup } from \"./components/SlotPopup\";\nimport { StatsPopup } from \"./components/StatsPopup\";\nimport { useData } from \"./components/useData\";\nimport {\n HeroArt,\n heroKind,\n LockArt,\n PATTERN,\n SlotSilhouette,\n classColor,\n slotKind,\n type SlotKind,\n} from \"./components/art\";\n\n// Heroes in the reference's look (BoardSurvival BoardScene: Equipment = EquipmentPanel,\n// Character_Detail = CharacterDetailPanel, Character_List, Character_Stat_Popup, Popup_EquipmentItem).\n// The main screen is the equipment hub: the hero in the middle of a blue backdrop with three gear\n// slots on each side, Damage and Health under the name, Detail / Unequip All / Equip All, and below\n// a bar of category tabs over the gear the player owns. Detail opens the hero's card (rarity, rank,\n// stats, lore, Upgrade Level, STATS). Everything is laid out in the reference's 1080-wide canvas\n// units and scaled to the screen, so the numbers come straight from the scene.\n\nconst W = 1080;\nconst INK = \"#10172e\";\n\nexport function makeCharacterScreen(\n features: FeatureRegistry,\n onSelect: (characterId: string) => void,\n) {\n return function CharacterScreen({ args }: FeatureScreenProps): ReactNode {\n return (\n <Heroes\n features={features}\n onSelect={onSelect}\n openInstance={\n typeof args?.itemInstanceID === \"string\" ? args.itemInstanceID : null\n }\n />\n );\n };\n}\n\ntype PopupState =\n | { kind: \"heroes\" }\n | { kind: \"stats\" }\n | { kind: \"skins\" }\n | { kind: \"detail\" }\n | { kind: \"detailStats\" }\n | { kind: \"slot\"; slot: SlotView }\n | { kind: \"piece\"; instanceID: string }\n | null;\n\n/** Slot positions (Group_Slots): weapon, ring, shoes on the left; helmet, torso, pants on the right. */\nconst SLOT_POS: Array<{ kind: SlotKind; x: number; y: number }> = [\n { kind: \"weapon\", x: -400, y: 210 },\n { kind: \"ring\", x: -400, y: 470 },\n { kind: \"shoes\", x: -400, y: 730 },\n { kind: \"helmet\", x: 400, y: 210 },\n { kind: \"torso\", x: 400, y: 470 },\n { kind: \"pants\", x: 400, y: 730 },\n];\n\n/** Places the hero's slots: each on its kind's spot, the rest on the free spots in order. */\nfunction placeSlots(\n slots: SlotView[],\n): Array<{ slot: SlotView; x: number; y: number; kind: SlotKind }> {\n const free = [...SLOT_POS];\n const placed: Array<{\n slot: SlotView;\n x: number;\n y: number;\n kind: SlotKind;\n }> = [];\n const rest: SlotView[] = [];\n for (const slot of slots) {\n const kind = slotKind(slot.id);\n const i = free.findIndex((p) => p.kind === kind);\n if (i >= 0) {\n const p = free.splice(i, 1)[0]!;\n placed.push({ slot, x: p.x, y: p.y, kind });\n } else rest.push(slot);\n }\n for (const slot of rest) {\n const p = free.shift();\n if (!p) break;\n placed.push({\n slot,\n x: p.x,\n y: p.y,\n kind: slotKind(slot.id) === \"other\" ? p.kind : slotKind(slot.id),\n });\n }\n return placed;\n}\n\n/** Damage and Health under the name (Stat_Attack / Stat_Hp), by the hero's stat ids. */\nfunction headlineStats(\n stats: StatView[],\n): [StatView | undefined, StatView | undefined] {\n const attack = stats.find(\n (s) => /att|dam|dmg|str|pow/i.test(s.id) || /att|dam/i.test(s.name),\n );\n const hp = stats.find(\n (s) => /^hp|health|life|vit/i.test(s.id) || /hp|health/i.test(s.name),\n );\n return [\n attack ?? stats[0],\n hp ?? stats.find((s) => s !== (attack ?? stats[0])),\n ];\n}\n\nfunction Heroes({\n features,\n onSelect,\n openInstance,\n}: {\n features: FeatureRegistry;\n onSelect: (characterId: string) => void;\n openInstance: string | null;\n}): ReactNode {\n const { client, section, owned, items, pieces, balances } = useData();\n const catalog = useCatalog();\n const toast = useToast();\n const kit = useUiKit();\n const heroRef = useRef<HTMLDivElement>(null);\n const [popup, setPopup] = useState<PopupState>(\n openInstance ? { kind: \"piece\", instanceID: openInstance } : null,\n );\n const [busy, setBusy] = useState<string | null>(null);\n const [selectedID, setSelectedID] = useState<string | null>(readSelected);\n const [tab, setTab] = useState<string>(\"all\");\n\n const list = roster(section, owned);\n if (list.length === 0)\n return <EmptyState glyph=\"hero\" text={t(\"noHeroes\")} />;\n const hero = resolveSelected(list, selectedID)!;\n const select = (id: string) => {\n setSelectedID(id);\n saveSelected(id);\n onSelect(id);\n };\n\n const slots = resolveSlots(section, hero.def);\n const changes =\n hero.state === \"locked\"\n ? []\n : bestLoadout(\n hero.id,\n hero.rank,\n slots,\n pieces,\n hero.model?.Equipment,\n items,\n );\n const heroName = catalog.localize(hero.def.Identity?.DisplayName ?? hero.id);\n const skinCount = Object.keys(hero.def.Skins?.Definitions ?? {}).length;\n const color = classColor(hero.def.Classification?.ClassID);\n const stats = resolveStats(section, hero.def);\n const worn = wornGear(hero, pieces, items);\n const levels = hero.model?.StatLevels ?? {};\n const value = (s: StatView | undefined): string =>\n s\n ? statNumber(\n breakdown(s, Number(levels[s.id] ?? 0), hero.rank, hero.def, worn)\n .total,\n )\n : \"—\";\n const [atk, hp] = headlineStats(stats);\n\n const equipAll = async () => {\n if (changes.length === 0) return;\n setBusy(\"best\");\n const res = await client.character.equipItems(hero.id, changes);\n setBusy(null);\n if (!res.ok) return toast(errorText(res.error), \"error\");\n kit.play(\"claim\");\n kit.fx.burst(heroRef.current);\n };\n\n // Always enabled (Unity EquipmentPanel.OnUnequipAllClicked): the way out of a local/server mismatch.\n const unequipAll = async () => {\n setBusy(\"off\");\n const slotIDs = unequipAllSlots(\n hero.id,\n slots,\n hero.model?.Equipment,\n pieces,\n );\n const res =\n slotIDs.length > 0\n ? await client.character.unequipItems(hero.id, slotIDs)\n : null;\n await client.cache.ensureState([\"Character\", \"InventoryV2\"], {\n force: true,\n });\n setBusy(null);\n if (res && !res.ok) return toast(errorText(res.error), \"error\");\n kit.play(\"click\");\n };\n\n // Category tabs (EquipmentCategoryTab): All, then one per slot kind the gear covers.\n const bagPieces = pieces.filter((p) => !p.equippedBy);\n const kindOf = (p: GearPiece): SlotKind =>\n slotKind(items.get(p.itemID)?.ItemClass ?? p.itemID);\n const tabs: Array<{ id: string; kind: SlotKind }> = [\n { id: \"all\", kind: \"bag\" },\n ...(\n [\n \"weapon\",\n \"ring\",\n \"shoes\",\n \"helmet\",\n \"torso\",\n \"pants\",\n \"other\",\n ] as SlotKind[]\n )\n .filter(\n (k) =>\n bagPieces.some((p) => kindOf(p) === k) ||\n placeSlots(slots).some((s) => s.kind === k),\n )\n .map((k) => ({ id: k, kind: k })),\n ];\n const shown =\n tab === \"all\" ? bagPieces : bagPieces.filter((p) => kindOf(p) === tab);\n const heroesBadge = list.filter(\n (h) =>\n h.state === \"locked\" &&\n h.unlockPrice.length > 0 &&\n canAfford(h.unlockPrice, balances),\n ).length;\n\n return (\n <div style={{ margin: \"-14px -14px -24px\" }}>\n {/* ── Middle: the hero on the blue backdrop (the backdrop spans the screen, the canvas fits it) ── */}\n <div style={{ position: \"relative\", overflow: \"hidden\" }}>\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n background:\n \"radial-gradient(ellipse at 50% 35%, #5d93f7 0%, #3d87f5 45%, #2c6fe0 100%)\",\n }}\n />\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n background: PATTERN,\n animation: \"idos-hero-pattern 6s linear infinite\",\n }}\n />\n <Fit height={1111}>\n <div style={{ position: \"relative\", height: 1111 }}>\n <div\n style={{\n ...center(0, 603, 174, 45),\n borderRadius: \"50%\",\n background: \"rgba(0,0,0,.2)\",\n }}\n />\n <div\n ref={heroRef}\n onClick={() => setPopup({ kind: \"heroes\" })}\n style={{\n ...center(0, 355, 384, 512),\n cursor: \"pointer\",\n animation: \"idos-hero-idle 2.4s ease-in-out infinite\",\n transformOrigin: \"50% 100%\",\n }}\n >\n <HeroArt\n color={color}\n kind={heroKind(hero.def.Classification?.ClassID)}\n style={{\n filter:\n hero.state === \"locked\"\n ? \"grayscale(1) brightness(.7)\"\n : undefined,\n }}\n />\n {heroesBadge > 0 ? (\n <span\n style={{\n position: \"absolute\",\n right: 50,\n top: 20,\n transform: \"scale(2.6)\",\n transformOrigin: \"100% 0\",\n }}\n >\n <Badge count={heroesBadge} />\n </span>\n ) : null}\n </div>\n <div\n style={{\n ...center(0, 665, 700, 81),\n display: \"grid\",\n placeItems: \"center\",\n ...text(64),\n }}\n >\n {heroName}\n </div>\n\n {placeSlots(slots).map(({ slot, x, y, kind }) => (\n <SlotFrame\n key={slot.id}\n style={center(x, y, 210, 210)}\n kind={kind}\n slot={slot}\n hero={hero}\n pieces={pieces}\n onClick={() => setPopup({ kind: \"slot\", slot })}\n />\n ))}\n\n <HeadStat\n style={center(-91, 809, 234, 103)}\n glyph=\"sword\"\n label={atk?.name ?? t(\"power\")}\n value={atk ? value(atk) : formatAmount(hero.power)}\n />\n <HeadStat\n style={center(142.5, 809, 234, 103)}\n glyph=\"heart\"\n label={hp?.name ?? t(\"rank\")}\n value={hp ? value(hp) : String(hero.rank)}\n />\n\n <UButton\n style={center(-400, 971, 250, 120)}\n tone=\"purple\"\n onClick={() => setPopup({ kind: \"detail\" })}\n >\n {t(\"detail\")}\n </UButton>\n {hero.state !== \"locked\" ? (\n <>\n <UButton\n style={center(-135, 971, 250, 120)}\n tone=\"sky\"\n size={34}\n busy={busy === \"off\"}\n onClick={() => void unequipAll()}\n >\n {t(\"unequipAll\")}\n </UButton>\n <UButton\n style={center(135, 971, 250, 120)}\n tone=\"yellow\"\n busy={busy === \"best\"}\n disabled={changes.length === 0}\n attract={changes.length > 0}\n onClick={() => void equipAll()}\n data-tutorial-anchor=\"heroes:equip-best\"\n >\n {t(\"equipAll\")}\n </UButton>\n {skinCount > 0 ? (\n <UButton\n style={center(400, 971, 250, 120)}\n tone=\"yellow\"\n onClick={() => setPopup({ kind: \"skins\" })}\n >\n {t(\"skins\")}\n </UButton>\n ) : null}\n </>\n ) : null}\n </div>\n </Fit>\n </div>\n\n {/* ── Category tabs (Menu_MiddleBtn) ── */}\n <div\n style={{\n height: 58,\n background: \"linear-gradient(180deg,#252a49 0%,#1f2440 100%)\",\n borderTop: `3px solid ${INK}`,\n boxShadow: \"inset 0 4px 0 rgba(255,255,255,.08)\",\n display: \"flex\",\n justifyContent: \"center\",\n overflowX: \"auto\",\n }}\n className=\"idos-scroll\"\n >\n {tabs.map((tb) => (\n <button\n key={tb.id}\n type=\"button\"\n onClick={() => {\n kit.play(\"tab\");\n setTab(tb.id);\n }}\n style={{\n flex: \"0 1 88px\",\n minWidth: 52,\n height: 56,\n border: \"none\",\n background:\n tab === tb.id ? \"rgba(255,255,255,.07)\" : \"transparent\",\n position: \"relative\",\n cursor: \"pointer\",\n display: \"grid\",\n placeItems: \"center\",\n }}\n >\n <span style={{ marginBottom: 6 }}>\n <SlotSilhouette\n kind={tb.kind}\n size={34}\n opacity={tab === tb.id ? 1 : 0.55}\n />\n </span>\n {tab === tb.id ? (\n <span\n style={{\n position: \"absolute\",\n left: 8,\n right: 8,\n bottom: 5,\n height: 8,\n borderRadius: 4,\n background: \"#3082ff\",\n boxShadow: \"0 0 8px #3082ff\",\n }}\n />\n ) : null}\n </button>\n ))}\n </div>\n\n {/* ── The gear (Scroll View) ── */}\n <div\n style={{\n background: \"#1a1f38\",\n padding: \"14px 12px 22px\",\n minHeight: 180,\n }}\n >\n {shown.length === 0 ? (\n <div\n style={{\n display: \"grid\",\n justifyItems: \"center\",\n gap: 14,\n padding: \"22px 16px\",\n }}\n >\n <div\n style={{\n ...text(15),\n opacity: 0.75,\n whiteSpace: \"normal\",\n textAlign: \"center\",\n maxWidth: 420,\n }}\n >\n {t(\"noGear\")}\n </div>\n {features.get(\"store\") ? (\n <UButton\n style={{ position: \"relative\", width: 140, height: 50 }}\n size={20}\n tone=\"green\"\n onClick={() => features.open(\"store\")}\n >\n {catalog.localize(\"Shop\")}\n </UButton>\n ) : null}\n </div>\n ) : (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(84px, 1fr))\",\n gap: 12,\n justifyItems: \"center\",\n maxWidth: 900,\n margin: \"0 auto\",\n }}\n >\n {shown.map((p, i) => (\n <div\n key={p.instanceID}\n style={{\n animation: `idos-hero-pop .3s cubic-bezier(.34,1.56,.64,1) ${Math.min(i, 12) * 0.03}s both`,\n }}\n >\n <ItemTile\n itemID={p.itemID}\n level={p.level}\n size={80}\n onClick={() =>\n setPopup({ kind: \"piece\", instanceID: p.instanceID })\n }\n />\n </div>\n ))}\n </div>\n )}\n </div>\n\n <style>{HERO_CSS}</style>\n\n {popup?.kind === \"detail\" || popup?.kind === \"detailStats\" ? (\n <DetailWindow\n hero={hero}\n stats={stats}\n value={value}\n balances={balances}\n section={section}\n onStats={() => setPopup({ kind: \"detailStats\" })}\n onClose={() => setPopup(null)}\n />\n ) : null}\n {popup?.kind === \"heroes\" ? (\n <HeroesPopup\n list={list}\n current={hero.id}\n balances={balances}\n onSelect={select}\n onClose={() => setPopup(null)}\n />\n ) : null}\n {popup?.kind === \"stats\" || popup?.kind === \"detailStats\" ? (\n <StatsPopup\n hero={hero}\n section={section}\n pieces={pieces}\n items={items}\n balances={balances}\n onClose={() =>\n setPopup(popup.kind === \"detailStats\" ? { kind: \"detail\" } : null)\n }\n />\n ) : null}\n {popup?.kind === \"skins\" ? (\n <SkinsPopup hero={hero} onClose={() => setPopup(null)} />\n ) : null}\n {popup?.kind === \"slot\" ? (\n <SlotPopup\n slot={popup.slot}\n hero={hero}\n pieces={pieces}\n items={items}\n onPick={(id) => setPopup({ kind: \"piece\", instanceID: id })}\n onClose={() => setPopup(null)}\n />\n ) : null}\n {popup?.kind === \"piece\" ? (\n <PiecePopup\n instanceID={popup.instanceID}\n hero={hero}\n slots={slots}\n pieces={pieces}\n items={items}\n balances={balances}\n onClose={() => setPopup(null)}\n />\n ) : null}\n </div>\n );\n}\n\nfunction wornGear(\n hero: RosterEntry,\n pieces: GearPiece[],\n items: Map<string, ItemDefWithGear>,\n): Array<{ def: ItemDefWithGear | undefined; level: number }> {\n return Object.values(hero.model?.Equipment ?? {})\n .filter((e) => e?.ItemInstanceID)\n .map((e) => {\n const p = pieces.find((x) => x.instanceID === e!.ItemInstanceID);\n return { def: items.get(e!.ItemID ?? \"\"), level: p?.level ?? 1 };\n });\n}\n\n// ── Layout helpers ───────────────────────────────────────────────────────────────────────────\n\n/**\n * The 1080-wide canvas of a section, scaled to fit both the width AND a share of the window height\n * (a phone fits it by width, a wide screen by height) and centred — the backdrop behind spans the\n * whole width, so a wide screen never shows a giant stretched hero nor a strip of empty page.\n */\nfunction Fit({\n height,\n children,\n}: {\n height: number;\n children: ReactNode;\n}): ReactNode {\n const outer = useRef<HTMLDivElement>(null);\n const [scale, setScale] = useState(0.35);\n useLayoutEffect(() => {\n const o = outer.current;\n if (!o) return;\n const fit = (): void => {\n const byWidth = o.clientWidth / W;\n const byHeight = (window.innerHeight * 0.56) / height;\n const s = Math.max(0.22, Math.min(byWidth, byHeight, 0.9));\n if (s > 0) setScale(s);\n };\n fit();\n const ro = new ResizeObserver(fit);\n ro.observe(o);\n window.addEventListener(\"resize\", fit);\n return () => {\n ro.disconnect();\n window.removeEventListener(\"resize\", fit);\n };\n }, [height]);\n return (\n <div\n ref={outer}\n style={{ position: \"relative\", width: \"100%\", height: height * scale }}\n >\n <div\n style={{\n position: \"absolute\",\n left: \"50%\",\n top: 0,\n width: W,\n height,\n marginLeft: -W / 2,\n transform: `scale(${scale})`,\n transformOrigin: \"50% 0\",\n }}\n >\n {children}\n </div>\n </div>\n );\n}\n\n/** A box centred at (x, y): x from the canvas centre, y from the top of its section. */\nfunction center(x: number, y: number, w: number, h: number): CSSProperties {\n return {\n position: \"absolute\",\n left: W / 2 + x - w / 2,\n top: y - h / 2,\n width: w,\n height: h,\n };\n}\n\n/** A font size that fits `label` into `width` canvas units (long translations shrink, never wrap). */\nfunction fitText(label: string, width: number, max: number): number {\n return Math.min(max, Math.floor(width / Math.max(1, label.length * 0.62)));\n}\n\n/** The reference's outlined white game text. */\nfunction text(size: number, color = \"#fff\"): CSSProperties {\n const w = Math.max(2, Math.round(size / 14));\n return {\n color,\n fontSize: size,\n fontWeight: 900,\n lineHeight: 1.1,\n WebkitTextStroke: `${w}px ${INK}`,\n paintOrder: \"stroke fill\",\n textShadow: `0 ${w + 1}px 0 ${INK}`,\n whiteSpace: \"nowrap\",\n };\n}\n\nconst TONES: Record<string, [string, string, string]> = {\n purple: [\"#b46cff\", \"#8a3cf0\", \"#5a1fb0\"],\n sky: [\"#5cc8ff\", \"#1c8fe6\", \"#0d5aa8\"],\n yellow: [\"#ffd84a\", \"#f5a90c\", \"#a8650a\"],\n green: [\"#7be34a\", \"#33b31d\", \"#1f7a10\"],\n};\n\n/** Button01 (purple / sky / yellow / green): a glossy plate, dark outline, a bottom lip. */\nfunction UButton({\n style,\n tone,\n size = 42,\n busy,\n disabled,\n attract,\n onClick,\n children,\n ...rest\n}: {\n style: CSSProperties;\n tone: keyof typeof TONES;\n size?: number;\n busy?: boolean;\n disabled?: boolean;\n attract?: boolean;\n onClick: () => void;\n children: ReactNode;\n \"data-tutorial-anchor\"?: string;\n}): ReactNode {\n const play = useSound();\n const [top, bottom, lip] = TONES[tone]!;\n const off = disabled || busy;\n return (\n <button\n type=\"button\"\n {...rest}\n disabled={off}\n onClick={() => {\n play(\"click\");\n onClick();\n }}\n style={{\n ...style,\n borderRadius: 34,\n border: `6px solid ${INK}`,\n background: `linear-gradient(180deg, ${top} 0%, ${bottom} 100%)`,\n boxShadow: `inset 0 8px 0 rgba(255,255,255,.4), 0 9px 0 ${lip}, 0 14px 0 rgba(0,0,0,.3)`,\n cursor: off ? \"default\" : \"pointer\",\n filter: disabled ? \"grayscale(.55) brightness(.85)\" : undefined,\n animation: attract\n ? \"idos-hero-attract 1.6s ease-in-out infinite\"\n : undefined,\n fontFamily: \"inherit\",\n padding: \"0 10px\",\n ...text(size),\n }}\n >\n {busy ? \"…\" : children}\n </button>\n );\n}\n\n/** An equipment slot (EquipmentSlotView): a blue frame, the slot's white silhouette, a lock. */\nfunction SlotFrame({\n style,\n kind,\n slot,\n hero,\n pieces,\n onClick,\n}: {\n style: CSSProperties;\n kind: SlotKind;\n slot: SlotView;\n hero: RosterEntry;\n pieces: GearPiece[];\n onClick: () => void;\n}): ReactNode {\n const play = useSound();\n const worn = hero.model?.Equipment?.[slot.id];\n const piece = worn?.ItemInstanceID\n ? pieces.find((p) => p.instanceID === worn.ItemInstanceID)\n : undefined;\n const locked = hero.rank < slot.minRank;\n return (\n <div style={style}>\n {worn?.ItemID ? (\n <ItemTile\n itemID={worn.ItemID}\n level={piece?.level}\n size={210}\n onClick={onClick}\n />\n ) : (\n <button\n type=\"button\"\n onClick={() => {\n play(\"click\");\n onClick();\n }}\n style={{\n width: \"100%\",\n height: \"100%\",\n borderRadius: 40,\n border: `6px solid ${INK}`,\n background:\n \"radial-gradient(circle at 50% 35%, #1a7de8 0%, #0a69d6 60%, #0858b8 100%)\",\n boxShadow:\n \"inset 0 7px 0 rgba(255,255,255,.28), 0 8px 0 rgba(0,0,0,.3)\",\n display: \"grid\",\n placeItems: \"center\",\n cursor: \"pointer\",\n position: \"relative\",\n }}\n >\n <SlotSilhouette kind={kind} size={130} opacity={0.39} />\n {locked ? (\n <span\n style={{\n position: \"absolute\",\n left: 105 + 77 - 25,\n top: 105 + 65 - 35,\n }}\n >\n <LockArt size={71} />\n </span>\n ) : null}\n </button>\n )}\n {locked ? (\n <div\n style={{\n position: \"absolute\",\n left: 0,\n right: 0,\n bottom: -44,\n textAlign: \"center\",\n ...text(28),\n }}\n >\n {t(\"slotLocked\")} {slot.minRank}\n </div>\n ) : null}\n </div>\n );\n}\n\n/** Stat_Attack / Stat_Hp: an icon, the stat's name and its value. */\nfunction HeadStat({\n style,\n glyph,\n label,\n value,\n}: {\n style: CSSProperties;\n glyph: \"sword\" | \"heart\";\n label: string;\n value: string;\n}): ReactNode {\n return (\n <div style={{ ...style, display: \"flex\", alignItems: \"center\", gap: 14 }}>\n <StatGlyph kind={glyph} size={78} />\n <div style={{ display: \"grid\" }}>\n <span style={text(30)}>{label}</span>\n <span style={text(44)}>{value}</span>\n </div>\n </div>\n );\n}\n\nfunction StatGlyph({\n kind,\n size,\n}: {\n kind: \"sword\" | \"heart\" | \"shield\" | \"crown\";\n size: number;\n}): ReactNode {\n const shapes = {\n sword: (\n <g stroke={INK} strokeWidth=\"5\" strokeLinejoin=\"round\">\n <path d=\"M60 6 L70 16 L32 54 L24 46 Z\" fill=\"#dfe8f5\" />\n <path d=\"M20 40 L38 58 L32 64 L14 46 Z\" fill=\"#ffc21a\" />\n <path d=\"M14 56 L22 64 L10 76 L2 68 Z\" fill=\"#8a5a2b\" />\n </g>\n ),\n heart: (\n <path\n d=\"M39 70 L10 40 Q0 28 8 16 Q18 4 32 12 Q36 15 39 20 Q42 15 46 12 Q60 4 70 16 Q78 28 68 40 Z\"\n fill=\"#f0353b\"\n stroke={INK}\n strokeWidth=\"5\"\n strokeLinejoin=\"round\"\n />\n ),\n shield: (\n <path\n d=\"M39 4 L70 16 Q70 52 39 74 Q8 52 8 16 Z\"\n fill=\"#3d8cf0\"\n stroke={INK}\n strokeWidth=\"5\"\n strokeLinejoin=\"round\"\n />\n ),\n crown: (\n <path\n d=\"M8 60 L8 22 L24 36 L39 12 L54 36 L70 22 L70 60 Z\"\n fill=\"#ffd23a\"\n stroke={INK}\n strokeWidth=\"5\"\n strokeLinejoin=\"round\"\n />\n ),\n };\n return (\n <svg\n viewBox=\"0 0 78 78\"\n width={size}\n height={size}\n aria-hidden\n style={{ flex: \"none\" }}\n >\n {shapes[kind]}\n </svg>\n );\n}\n\n// ── Character_Detail (CharacterDetailPanel) ─────────────────────────────────────────────────\n\nconst DH = 2340;\n/** A box in the detail canvas: x from the centre, y up from the centre (Unity), canvas 1080 × 2340. */\nfunction dAt(x: number, y: number, w: number, h: number): CSSProperties {\n return {\n position: \"absolute\",\n left: W / 2 + x - w / 2,\n top: DH / 2 - y - h / 2,\n width: w,\n height: h,\n };\n}\n\nfunction DetailWindow({\n hero,\n stats,\n value,\n balances,\n section,\n onStats,\n onClose,\n}: {\n hero: RosterEntry;\n stats: StatView[];\n value: (s: StatView | undefined) => string;\n balances: Record<string, { Amount?: number }> | undefined;\n section: Parameters<typeof resolveLadder>[0];\n onStats: () => void;\n onClose: () => void;\n}): ReactNode {\n const { client } = useData();\n const catalog = useCatalog();\n const kit = useUiKit();\n const toast = useToast();\n const host = useRef<HTMLDivElement>(null);\n const card = useRef<HTMLDivElement>(null);\n const [scale, setScale] = useState(0.35);\n const [shown, setShown] = useState(false);\n const [busy, setBusy] = useState(false);\n\n useLayoutEffect(() => {\n const el = host.current;\n if (!el) return;\n const fit = (): void =>\n setScale(Math.min(el.clientWidth / W, el.clientHeight / DH));\n fit();\n const ro = new ResizeObserver(fit);\n ro.observe(el);\n return () => ro.disconnect();\n }, []);\n useEffect(() => {\n kit.play(\"open\");\n const id = requestAnimationFrame(() => setShown(true));\n return () => cancelAnimationFrame(id);\n }, []);\n\n const close = (): void => {\n kit.play(\"close\");\n setShown(false);\n setTimeout(onClose, 220);\n };\n\n const ladder = resolveLadder(section, hero.def);\n const nextRank = rankCost(ladder, hero.rank);\n const affordable = nextRank !== null && canAfford(nextRank, balances);\n const rarityID = hero.def.Classification?.RarityID ?? \"\";\n const rarity = catalog.rarityColor(rarityID);\n const maxRank = Number(ladder?.MaxRank ?? 0);\n const stars = Math.max(\n 0,\n Math.min(\n 6,\n maxRank > 0\n ? Math.round((hero.rank / maxRank) * 6)\n : Math.min(6, hero.rank),\n ),\n );\n\n const rankUp = async (): Promise<void> => {\n setBusy(true);\n const res = await client.character.upgradeCharacterLevel(hero.id);\n setBusy(false);\n if (!res.ok) return toast(errorText(res.error), \"error\");\n kit.play(\"levelUp\");\n kit.fx.burst(card.current);\n };\n\n const four = stats.slice(0, 4);\n const statGlyph = (s: StatView): \"sword\" | \"heart\" | \"shield\" | \"crown\" =>\n /hp|health|life|vit/i.test(s.id)\n ? \"heart\"\n : /def|arm|block/i.test(s.id)\n ? \"shield\"\n : /att|dam|dmg|str/i.test(s.id)\n ? \"sword\"\n : \"crown\";\n\n return (\n <KitPortal>\n <div\n ref={host}\n style={{\n position: \"fixed\",\n inset: 0,\n // Below the kit's popups (20): STATS opens over the card, like Character_Stat_Popup.\n zIndex: 15,\n overflow: \"hidden\",\n pointerEvents: \"auto\",\n opacity: shown ? 1 : 0,\n transform: shown ? \"scale(1)\" : \"scale(1.06, .94)\",\n transition:\n \"opacity .22s ease, transform .3s cubic-bezier(.34,1.56,.64,1)\",\n background:\n \"radial-gradient(ellipse at 50% 30%, #6a5cff 0%, #3d87f5 55%, #2c6fe0 100%)\",\n }}\n >\n <div style={{ position: \"absolute\", inset: 0, background: PATTERN }} />\n <div\n style={{\n position: \"absolute\",\n left: \"50%\",\n top: \"50%\",\n width: W,\n height: DH,\n marginLeft: -W / 2,\n marginTop: -DH / 2,\n transform: `scale(${scale})`,\n }}\n >\n {/* Rarity label + name */}\n <div\n style={{\n ...dAt(0, 890, 220, 66),\n background: rarity,\n transform: \"skewX(-14deg)\",\n border: `5px solid ${INK}`,\n borderRadius: 10,\n display: \"grid\",\n placeItems: \"center\",\n }}\n >\n <span style={{ ...text(30), transform: \"skewX(14deg)\" }}>\n {(rarityID || \"—\").toUpperCase()}\n </span>\n </div>\n <div\n style={{\n ...dAt(0, 805, 900, 113),\n display: \"grid\",\n placeItems: \"center\",\n ...text(90),\n }}\n >\n {catalog.localize(hero.def.Identity?.DisplayName ?? hero.id)}\n </div>\n {/* The hero */}\n <div\n style={{\n ...dAt(-2, 104, 220, 56),\n borderRadius: \"50%\",\n background: \"rgba(0,0,0,.2)\",\n }}\n />\n <div\n ref={card}\n style={{\n ...dAt(0, 416, 480, 640),\n animation: \"idos-hero-idle 2.4s ease-in-out infinite\",\n transformOrigin: \"50% 100%\",\n }}\n >\n <HeroArt\n color={classColor(hero.def.Classification?.ClassID)}\n kind={heroKind(hero.def.Classification?.ClassID)}\n />\n </div>\n {/* Rank badge, stars, class */}\n <div\n style={{\n ...dAt(-208, 17, 102, 107),\n display: \"grid\",\n placeItems: \"center\",\n }}\n >\n <svg\n viewBox=\"0 0 102 107\"\n style={{ position: \"absolute\", inset: 0 }}\n aria-hidden\n >\n <path\n d=\"M51 4 L94 26 L94 76 L51 103 L8 76 L8 26 Z\"\n fill=\"#2f86f0\"\n stroke={INK}\n strokeWidth=\"6\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M51 14 L84 32 L84 50 L18 50 L18 32 Z\"\n fill=\"rgba(255,255,255,.25)\"\n />\n </svg>\n <span style={{ position: \"relative\", ...text(52) }}>\n {hero.rank}\n </span>\n </div>\n <div\n style={{\n ...dAt(0, 17, 300, 78),\n display: \"flex\",\n justifyContent: \"center\",\n }}\n >\n {Array.from({ length: 6 }, (_, k) => (\n <svg\n key={k}\n viewBox=\"0 0 71 76\"\n width={56}\n height={60}\n aria-hidden\n >\n <path\n d=\"M35.5 4 L45 26 L68 28 L50 44 L56 68 L35.5 55 L15 68 L21 44 L3 28 L26 26 Z\"\n fill={k < stars ? \"#ffd23a\" : \"rgba(16,23,46,.45)\"}\n stroke={INK}\n strokeWidth=\"5\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ))}\n </div>\n {hero.def.Classification?.ClassID ? (\n <div\n style={{\n ...dAt(195, 17, 78, 78),\n borderRadius: \"50%\",\n border: `6px solid ${INK}`,\n background: classColor(hero.def.Classification.ClassID),\n display: \"grid\",\n placeItems: \"center\",\n ...text(30),\n }}\n >\n {hero.def.Classification.ClassID.slice(0, 1).toUpperCase()}\n </div>\n ) : null}\n\n {/* Four stats */}\n {four.map((s, i) => (\n <div\n key={s.id}\n style={{\n ...dAt(i % 2 === 0 ? -230 : 230, i < 2 ? -232 : -392, 410, 115),\n borderRadius: 26,\n border: `5px solid ${INK}`,\n background: \"linear-gradient(180deg,#2c6bdf,#1d58c7)\",\n boxShadow: \"inset 0 6px 0 rgba(255,255,255,.2)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 16,\n padding: \"0 18px\",\n boxSizing: \"border-box\",\n }}\n >\n <StatGlyph kind={statGlyph(s)} size={86} />\n <div style={{ display: \"grid\", minWidth: 0 }}>\n <span\n style={{\n ...text(34),\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {s.name}\n </span>\n <span style={text(52)}>{value(s)}</span>\n </div>\n </div>\n ))}\n {/* Lore */}\n <div\n style={{\n ...dAt(0, -606, 870, 220),\n borderRadius: 26,\n border: `5px solid ${INK}`,\n background: \"linear-gradient(180deg,#b3c2d6,#9fb0c8)\",\n boxShadow: \"inset 0 6px 0 rgba(255,255,255,.45)\",\n padding: \"18px 34px\",\n boxSizing: \"border-box\",\n display: \"grid\",\n gridTemplateRows: \"auto 1fr\",\n justifyItems: \"center\",\n gap: 8,\n }}\n >\n <span style={text(38)}>{t(\"lore\")}</span>\n <span\n style={{\n fontSize: 30,\n fontWeight: 700,\n color: \"#1c2340\",\n textAlign: \"center\",\n lineHeight: 1.25,\n whiteSpace: \"normal\",\n }}\n >\n {catalog.localize(hero.def.Identity?.Description ?? \"\") || \"—\"}\n </span>\n </div>\n {/* Upgrade Level (= rank up) and STATS */}\n {hero.state !== \"locked\" ? (\n <>\n <UButton\n style={dAt(-220, -810, 400, 175)}\n tone=\"green\"\n busy={busy}\n disabled={nextRank === null || !affordable}\n attract={affordable}\n onClick={() => void rankUp()}\n data-tutorial-anchor=\"heroes:rank-up\"\n >\n <span\n style={{ display: \"grid\", justifyItems: \"center\", gap: 4 }}\n >\n <span\n style={text(\n fitText(\n nextRank === null ? t(\"maxRank\") : t(\"upgradeLevel\"),\n 360,\n 40,\n ),\n )}\n >\n {nextRank === null ? t(\"maxRank\") : t(\"upgradeLevel\")}\n </span>\n {nextRank && nextRank.length ? (\n <span\n style={{\n transform: \"scale(2.3)\",\n transformOrigin: \"50% 0\",\n marginBottom: 30,\n }}\n >\n <ResourceList\n lines={nextRank}\n size={22}\n dimIf={() => !affordable}\n />\n </span>\n ) : nextRank ? (\n <span style={text(40)}>{t(\"free\")}</span>\n ) : null}\n </span>\n </UButton>\n <UButton\n style={dAt(220, -810, 400, 175)}\n tone=\"yellow\"\n size={fitText(t(\"statsCaps\"), 360, 55)}\n onClick={onStats}\n >\n {t(\"statsCaps\")}\n </UButton>\n </>\n ) : null}\n {/* Bottom bar with the round close button */}\n <div\n style={{\n ...dAt(0, -1037, W, 266),\n background: \"linear-gradient(180deg,#252a49,#1f2440)\",\n borderTop: `6px solid ${INK}`,\n display: \"grid\",\n placeItems: \"center\",\n }}\n >\n <button\n type=\"button\"\n aria-label=\"Close\"\n onClick={close}\n style={{\n width: 117,\n height: 118,\n borderRadius: \"50%\",\n border: `6px solid ${INK}`,\n background: \"linear-gradient(180deg,#5d6a92,#3b4568)\",\n boxShadow:\n \"inset 0 7px 0 rgba(255,255,255,.25), 0 8px 0 rgba(0,0,0,.4)\",\n cursor: \"pointer\",\n ...text(56),\n lineHeight: 1,\n fontFamily: \"inherit\",\n }}\n >\n ✕\n </button>\n </div>\n </div>\n </div>\n </KitPortal>\n );\n}\n\nconst HERO_CSS = `\n@keyframes idos-hero-idle { 0%,100% { transform: scale(1, 1); } 50% { transform: scale(1.025, .975); } }\n@keyframes idos-hero-pattern { from { background-position: 0 0; } to { background-position: 72px 72px; } }\n@keyframes idos-hero-pop { from { opacity: 0; transform: scale(.4); } to { opacity: 1; transform: scale(1); } }\n@keyframes idos-hero-attract { 0%,100% { transform: scale(1); } 50% { transform: scale(1.05); } }\n`;\n"
|
|
66
|
+
"content": "import {\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport {\n type CharacterArtRegistry,\n type FeatureRegistry,\n type FeatureScreenProps,\n} from \"@idosgames/module-sdk\";\nimport {\n Badge,\n EmptyState,\n ItemTile,\n KitPortal,\n MovingPattern,\n ResourceList,\n canAfford,\n errorText,\n formatAmount,\n useCatalog,\n useSound,\n useToast,\n useUiKit,\n v,\n} from \"@idosgames/react/ui\";\nimport {\n bestLoadout,\n breakdown,\n rankCost,\n resolveLadder,\n resolveSlots,\n resolveStats,\n roster,\n statNumber,\n unequipAllSlots,\n type GearPiece,\n type ItemDefWithGear,\n type RosterEntry,\n type SlotView,\n type StatView,\n} from \"./model\";\nimport { t } from \"./i18n\";\nimport { readSelected, resolveSelected, saveSelected } from \"./selection\";\nimport { HeroesPopup } from \"./components/HeroesPopup\";\nimport { PiecePopup } from \"./components/PiecePopup\";\nimport { SkinsPopup } from \"./components/SkinsPopup\";\nimport { SlotPopup } from \"./components/SlotPopup\";\nimport { StatsPopup } from \"./components/StatsPopup\";\nimport { useData } from \"./components/useData\";\nimport {\n CharacterArtContext,\n HeroFigure,\n useCharacterArt,\n} from \"./components/HeroFigure\";\nimport {\n LockArt,\n SlotSilhouette,\n classColor,\n slotKind,\n type SlotKind,\n} from \"./components/art\";\n\n// Heroes in the reference's look (BoardSurvival BoardScene: Equipment = EquipmentPanel,\n// Character_Detail = CharacterDetailPanel, Character_List, Character_Stat_Popup, Popup_EquipmentItem).\n// The main screen is the equipment hub: the hero in the middle of a blue backdrop with three gear\n// slots on each side, Damage and Health under the name, Detail / Unequip All / Equip All, and below\n// a bar of category tabs over the gear the player owns. Detail opens the hero's card (rarity, rank,\n// stats, lore, Upgrade Level, STATS). Everything is laid out in the reference's 1080-wide canvas\n// units and scaled to the screen, so the numbers come straight from the scene.\n\nconst W = 1080;\n// The ink of the outlines — a literal: SVG attributes below cannot read a CSS variable.\nconst INK = \"#17193a\";\n\nexport function makeCharacterScreen(\n features: FeatureRegistry,\n onSelect: (characterId: string) => void,\n art: CharacterArtRegistry,\n) {\n return function CharacterScreen({ args }: FeatureScreenProps): ReactNode {\n return (\n <CharacterArtContext.Provider value={art}>\n <Heroes\n features={features}\n onSelect={onSelect}\n openInstance={\n typeof args?.itemInstanceID === \"string\"\n ? args.itemInstanceID\n : null\n }\n />\n </CharacterArtContext.Provider>\n );\n };\n}\n\ntype PopupState =\n | { kind: \"heroes\" }\n | { kind: \"stats\" }\n | { kind: \"skins\" }\n | { kind: \"detail\" }\n | { kind: \"detailStats\" }\n | { kind: \"slot\"; slot: SlotView }\n | { kind: \"piece\"; instanceID: string }\n | null;\n\n/** Slot positions (Group_Slots): weapon, ring, shoes on the left; helmet, torso, pants on the right. */\nconst SLOT_POS: Array<{ kind: SlotKind; x: number; y: number }> = [\n { kind: \"weapon\", x: -400, y: 210 },\n { kind: \"ring\", x: -400, y: 470 },\n { kind: \"shoes\", x: -400, y: 730 },\n { kind: \"helmet\", x: 400, y: 210 },\n { kind: \"torso\", x: 400, y: 470 },\n { kind: \"pants\", x: 400, y: 730 },\n];\n\n/** Places the hero's slots: each on its kind's spot, the rest on the free spots in order. */\nfunction placeSlots(\n slots: SlotView[],\n): Array<{ slot: SlotView; x: number; y: number; kind: SlotKind }> {\n const free = [...SLOT_POS];\n const placed: Array<{\n slot: SlotView;\n x: number;\n y: number;\n kind: SlotKind;\n }> = [];\n const rest: SlotView[] = [];\n for (const slot of slots) {\n const kind = slotKind(slot.id);\n const i = free.findIndex((p) => p.kind === kind);\n if (i >= 0) {\n const p = free.splice(i, 1)[0]!;\n placed.push({ slot, x: p.x, y: p.y, kind });\n } else rest.push(slot);\n }\n for (const slot of rest) {\n const p = free.shift();\n if (!p) break;\n placed.push({\n slot,\n x: p.x,\n y: p.y,\n kind: slotKind(slot.id) === \"other\" ? p.kind : slotKind(slot.id),\n });\n }\n return placed;\n}\n\n/** Damage and Health under the name (Stat_Attack / Stat_Hp), by the hero's stat ids. */\nfunction headlineStats(\n stats: StatView[],\n): [StatView | undefined, StatView | undefined] {\n const attack = stats.find(\n (s) => /att|dam|dmg|str|pow/i.test(s.id) || /att|dam/i.test(s.name),\n );\n const hp = stats.find(\n (s) => /^hp|health|life|vit/i.test(s.id) || /hp|health/i.test(s.name),\n );\n return [\n attack ?? stats[0],\n hp ?? stats.find((s) => s !== (attack ?? stats[0])),\n ];\n}\n\nfunction Heroes({\n features,\n onSelect,\n openInstance,\n}: {\n features: FeatureRegistry;\n onSelect: (characterId: string) => void;\n openInstance: string | null;\n}): ReactNode {\n const { client, section, owned, items, pieces, balances } = useData();\n const catalog = useCatalog();\n const toast = useToast();\n const kit = useUiKit();\n const heroRef = useRef<HTMLDivElement>(null);\n // the game's own hero moves by itself; the screen's picture bobs\n const bob = useCharacterArt()\n ? undefined\n : \"idos-hero-idle 2.4s ease-in-out infinite\";\n const [popup, setPopup] = useState<PopupState>(\n openInstance ? { kind: \"piece\", instanceID: openInstance } : null,\n );\n const [busy, setBusy] = useState<string | null>(null);\n const [selectedID, setSelectedID] = useState<string | null>(readSelected);\n const [tab, setTab] = useState<string>(\"all\");\n\n const list = roster(section, owned);\n if (list.length === 0)\n return <EmptyState glyph=\"hero\" text={t(\"noHeroes\")} />;\n const hero = resolveSelected(list, selectedID)!;\n const select = (id: string) => {\n setSelectedID(id);\n saveSelected(id);\n onSelect(id);\n };\n\n const slots = resolveSlots(section, hero.def);\n const changes =\n hero.state === \"locked\"\n ? []\n : bestLoadout(\n hero.id,\n hero.rank,\n slots,\n pieces,\n hero.model?.Equipment,\n items,\n );\n const heroName = catalog.localize(hero.def.Identity?.DisplayName ?? hero.id);\n const skinCount = Object.keys(hero.def.Skins?.Definitions ?? {}).length;\n const heroRarity = catalog.rarityColor(\n hero.def.Classification?.RarityID ?? \"\",\n );\n // The row of actions under the stats shares one width: three buttons get wider plates than four.\n const actions = hero.state === \"locked\" ? 1 : skinCount > 0 ? 4 : 3;\n const actionAt = (i: number): CSSProperties => {\n const gap = 20;\n const w = actions === 4 ? 250 : actions === 3 ? 320 : 340;\n const row = actions * w + (actions - 1) * gap;\n return center(-row / 2 + w / 2 + i * (w + gap), 971, w, 120);\n };\n const color = classColor(hero.def.Classification?.ClassID);\n const stats = resolveStats(section, hero.def);\n const worn = wornGear(hero, pieces, items);\n const levels = hero.model?.StatLevels ?? {};\n const value = (s: StatView | undefined): string =>\n s\n ? statNumber(\n breakdown(s, Number(levels[s.id] ?? 0), hero.rank, hero.def, worn)\n .total,\n )\n : \"—\";\n const [atk, hp] = headlineStats(stats);\n\n const equipAll = async () => {\n if (changes.length === 0) return;\n setBusy(\"best\");\n const res = await client.character.equipItems(hero.id, changes);\n setBusy(null);\n if (!res.ok) return toast(errorText(res.error), \"error\");\n kit.play(\"claim\");\n kit.fx.burst(heroRef.current);\n };\n\n // Always enabled (Unity EquipmentPanel.OnUnequipAllClicked): the way out of a local/server mismatch.\n const unequipAll = async () => {\n setBusy(\"off\");\n const slotIDs = unequipAllSlots(\n hero.id,\n slots,\n hero.model?.Equipment,\n pieces,\n );\n const res =\n slotIDs.length > 0\n ? await client.character.unequipItems(hero.id, slotIDs)\n : null;\n await client.cache.ensureState([\"Character\", \"InventoryV2\"], {\n force: true,\n });\n setBusy(null);\n if (res && !res.ok) return toast(errorText(res.error), \"error\");\n kit.play(\"click\");\n };\n\n // Category tabs (EquipmentCategoryTab): All, then one per slot kind the gear covers.\n const bagPieces = pieces.filter((p) => !p.equippedBy);\n const kindOf = (p: GearPiece): SlotKind =>\n slotKind(items.get(p.itemID)?.ItemClass ?? p.itemID);\n const tabs: Array<{ id: string; kind: SlotKind }> = [\n { id: \"all\", kind: \"bag\" },\n ...(\n [\n \"weapon\",\n \"ring\",\n \"shoes\",\n \"helmet\",\n \"torso\",\n \"pants\",\n \"other\",\n ] as SlotKind[]\n )\n .filter(\n (k) =>\n bagPieces.some((p) => kindOf(p) === k) ||\n placeSlots(slots).some((s) => s.kind === k),\n )\n .map((k) => ({ id: k, kind: k })),\n ];\n const shown =\n tab === \"all\" ? bagPieces : bagPieces.filter((p) => kindOf(p) === tab);\n const heroesBadge = list.filter(\n (h) =>\n h.state === \"locked\" &&\n h.unlockPrice.length > 0 &&\n canAfford(h.unlockPrice, balances),\n ).length;\n\n return (\n // fullBleed: the lobby gives this screen its whole area; the gear below the stage fills the rest\n <div style={{ flex: \"1 0 auto\", display: \"flex\", flexDirection: \"column\" }}>\n {/* ── Middle: the hero on the blue backdrop (the backdrop spans the screen, the canvas fits it) ── */}\n <div\n style={{\n position: \"relative\",\n overflow: \"hidden\",\n // the stage runs under the lobby's top row (fullBleed) and keeps the hero below it\n paddingTop: \"var(--idos-lobby-top, 0px)\",\n }}\n >\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n // the shown hero's rarity colours the stage, as on its card (Common blue, Rare green…)\n background: `radial-gradient(ellipse at 50% 35%, color-mix(in srgb, ${heroRarity} 60%, #fff) 0%, ${heroRarity} 45%, color-mix(in srgb, ${heroRarity} 62%, #000) 100%)`,\n }}\n />\n <MovingPattern />\n <Fit height={1111}>\n <div style={{ position: \"relative\", height: 1111 }}>\n <div\n style={{\n ...center(0, 603, 174, 45),\n borderRadius: \"50%\",\n background: \"rgba(0,0,0,.2)\",\n }}\n />\n <div\n ref={heroRef}\n onClick={() => setPopup({ kind: \"heroes\" })}\n style={{\n ...center(0, 355, 384, 512),\n cursor: \"pointer\",\n animation: bob,\n transformOrigin: \"50% 100%\",\n // over the slots: a long weapon reaches past them (the game's figure lets clicks through)\n zIndex: 1,\n filter:\n hero.state === \"locked\"\n ? \"grayscale(1) brightness(.7)\"\n : undefined,\n }}\n >\n <HeroFigure hero={hero} color={color} />\n {heroesBadge > 0 ? (\n <span\n style={{\n position: \"absolute\",\n right: 50,\n top: 20,\n transform: \"scale(2.6)\",\n transformOrigin: \"100% 0\",\n }}\n >\n <Badge count={heroesBadge} />\n </span>\n ) : null}\n </div>\n <div\n style={{\n ...center(0, 665, 700, 81),\n display: \"grid\",\n placeItems: \"center\",\n ...text(64),\n }}\n >\n {heroName}\n </div>\n\n {placeSlots(slots).map(({ slot, x, y, kind }) => (\n <SlotFrame\n key={slot.id}\n style={center(x, y, 210, 210)}\n kind={kind}\n slot={slot}\n hero={hero}\n pieces={pieces}\n onClick={() => setPopup({ kind: \"slot\", slot })}\n />\n ))}\n\n <HeadStat\n style={center(-91, 809, 234, 103)}\n glyph=\"sword\"\n label={atk?.name ?? t(\"power\")}\n value={atk ? value(atk) : formatAmount(hero.power)}\n />\n <HeadStat\n style={center(142.5, 809, 234, 103)}\n glyph=\"heart\"\n label={hp?.name ?? t(\"rank\")}\n value={hp ? value(hp) : String(hero.rank)}\n />\n\n <UButton\n style={actionAt(0)}\n tone=\"purple\"\n onClick={() => setPopup({ kind: \"detail\" })}\n >\n {t(\"detail\")}\n </UButton>\n {hero.state !== \"locked\" ? (\n <>\n <UButton\n style={actionAt(1)}\n tone=\"sky\"\n busy={busy === \"off\"}\n onClick={() => void unequipAll()}\n >\n {t(\"unequipAll\")}\n </UButton>\n <UButton\n style={actionAt(2)}\n tone=\"yellow\"\n busy={busy === \"best\"}\n disabled={changes.length === 0}\n attract={changes.length > 0}\n onClick={() => void equipAll()}\n data-tutorial-anchor=\"heroes:equip-best\"\n >\n {t(\"equipAll\")}\n </UButton>\n {skinCount > 0 ? (\n <UButton\n style={actionAt(3)}\n tone=\"yellow\"\n onClick={() => setPopup({ kind: \"skins\" })}\n >\n {t(\"skins\")}\n </UButton>\n ) : null}\n </>\n ) : null}\n </div>\n </Fit>\n </div>\n\n {/* ── Category tabs (Menu_MiddleBtn) ── */}\n <div\n style={{\n height: 58,\n background: `linear-gradient(180deg, color-mix(in srgb, ${v.nav} 85%, #fff) 0%, ${v.nav} 100%)`,\n borderTop: `3px solid ${INK}`,\n boxShadow: \"inset 0 4px 0 rgba(255,255,255,.08)\",\n display: \"flex\",\n justifyContent: \"center\",\n overflowX: \"auto\",\n // only sideways: the 56px tabs under the 3px line overflow by a hair, and auto here drew\n // a dark scrollbar at the right edge\n overflowY: \"hidden\",\n }}\n className=\"idos-scroll\"\n >\n {tabs.map((tb) => (\n <button\n key={tb.id}\n type=\"button\"\n onClick={() => {\n kit.play(\"tab\");\n setTab(tb.id);\n }}\n style={{\n flex: \"0 1 88px\",\n minWidth: 52,\n height: 56,\n border: \"none\",\n background:\n tab === tb.id ? \"rgba(255,255,255,.07)\" : \"transparent\",\n position: \"relative\",\n cursor: \"pointer\",\n display: \"grid\",\n placeItems: \"center\",\n }}\n >\n <span style={{ marginBottom: 6 }}>\n <SlotSilhouette\n kind={tb.kind}\n size={34}\n opacity={tab === tb.id ? 1 : 0.55}\n />\n </span>\n {tab === tb.id ? (\n <span\n style={{\n position: \"absolute\",\n left: 8,\n right: 8,\n bottom: 5,\n height: 8,\n borderRadius: 4,\n background: v.blue,\n boxShadow: `0 0 8px ${v.blue}`,\n }}\n />\n ) : null}\n </button>\n ))}\n </div>\n\n {/* ── The gear (Scroll View) ── */}\n <div\n style={{\n background: `color-mix(in srgb, ${v.nav} 70%, ${v.ink})`,\n padding: \"14px 12px 22px\",\n minHeight: 180,\n flex: \"1 0 auto\",\n }}\n >\n {shown.length === 0 ? (\n <div\n style={{\n display: \"grid\",\n justifyItems: \"center\",\n gap: 14,\n padding: \"22px 16px\",\n }}\n >\n <div\n style={{\n ...text(15),\n opacity: 0.75,\n whiteSpace: \"normal\",\n textAlign: \"center\",\n maxWidth: 420,\n }}\n >\n {t(\"noGear\")}\n </div>\n {features.get(\"store\") ? (\n <UButton\n style={{ position: \"relative\", width: 140, height: 50 }}\n size={20}\n tone=\"green\"\n onClick={() => features.open(\"store\")}\n >\n {catalog.localize(\"Shop\")}\n </UButton>\n ) : null}\n </div>\n ) : (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(84px, 1fr))\",\n gap: 12,\n justifyItems: \"center\",\n maxWidth: 900,\n margin: \"0 auto\",\n }}\n >\n {shown.map((p, i) => (\n <div\n key={p.instanceID}\n style={{\n animation: `idos-hero-pop .3s cubic-bezier(.34,1.56,.64,1) ${Math.min(i, 12) * 0.03}s both`,\n }}\n >\n <ItemTile\n itemID={p.itemID}\n level={p.level}\n size={80}\n onClick={() =>\n setPopup({ kind: \"piece\", instanceID: p.instanceID })\n }\n />\n </div>\n ))}\n </div>\n )}\n </div>\n\n <style>{HERO_CSS}</style>\n\n {popup?.kind === \"detail\" || popup?.kind === \"detailStats\" ? (\n <DetailWindow\n hero={hero}\n stats={stats}\n value={value}\n balances={balances}\n section={section}\n onStats={() => setPopup({ kind: \"detailStats\" })}\n onClose={() => setPopup(null)}\n />\n ) : null}\n {popup?.kind === \"heroes\" ? (\n <HeroesPopup\n list={list}\n current={hero.id}\n balances={balances}\n onSelect={select}\n onClose={() => setPopup(null)}\n />\n ) : null}\n {popup?.kind === \"stats\" || popup?.kind === \"detailStats\" ? (\n <StatsPopup\n hero={hero}\n section={section}\n pieces={pieces}\n items={items}\n balances={balances}\n onClose={() =>\n setPopup(popup.kind === \"detailStats\" ? { kind: \"detail\" } : null)\n }\n />\n ) : null}\n {popup?.kind === \"skins\" ? (\n <SkinsPopup hero={hero} onClose={() => setPopup(null)} />\n ) : null}\n {popup?.kind === \"slot\" ? (\n <SlotPopup\n slot={popup.slot}\n hero={hero}\n pieces={pieces}\n items={items}\n onPick={(id) => setPopup({ kind: \"piece\", instanceID: id })}\n onClose={() => setPopup(null)}\n />\n ) : null}\n {popup?.kind === \"piece\" ? (\n <PiecePopup\n instanceID={popup.instanceID}\n hero={hero}\n slots={slots}\n pieces={pieces}\n items={items}\n balances={balances}\n onClose={() => setPopup(null)}\n />\n ) : null}\n </div>\n );\n}\n\nfunction wornGear(\n hero: RosterEntry,\n pieces: GearPiece[],\n items: Map<string, ItemDefWithGear>,\n): Array<{ def: ItemDefWithGear | undefined; level: number }> {\n return Object.values(hero.model?.Equipment ?? {})\n .filter((e) => e?.ItemInstanceID)\n .map((e) => {\n const p = pieces.find((x) => x.instanceID === e!.ItemInstanceID);\n return { def: items.get(e!.ItemID ?? \"\"), level: p?.level ?? 1 };\n });\n}\n\n// ── Layout helpers ───────────────────────────────────────────────────────────────────────────\n\n/**\n * The 1080-wide canvas of a section, scaled to fit both the width AND a share of the window height\n * (a phone fits it by width, a wide screen by height) and centred — the backdrop behind spans the\n * whole width, so a wide screen never shows a giant stretched hero nor a strip of empty page.\n */\nfunction Fit({\n height,\n children,\n}: {\n height: number;\n children: ReactNode;\n}): ReactNode {\n const outer = useRef<HTMLDivElement>(null);\n const [scale, setScale] = useState(0.35);\n useLayoutEffect(() => {\n const o = outer.current;\n if (!o) return;\n const fit = (): void => {\n const byWidth = o.clientWidth / W;\n const byHeight = (window.innerHeight * 0.56) / height;\n const s = Math.max(0.22, Math.min(byWidth, byHeight, 0.9));\n if (s > 0) setScale(s);\n };\n fit();\n const ro = new ResizeObserver(fit);\n ro.observe(o);\n window.addEventListener(\"resize\", fit);\n return () => {\n ro.disconnect();\n window.removeEventListener(\"resize\", fit);\n };\n }, [height]);\n return (\n <div\n ref={outer}\n style={{ position: \"relative\", width: \"100%\", height: height * scale }}\n >\n <div\n style={{\n position: \"absolute\",\n left: \"50%\",\n top: 0,\n width: W,\n height,\n marginLeft: -W / 2,\n transform: `scale(${scale})`,\n transformOrigin: \"50% 0\",\n }}\n >\n {children}\n </div>\n </div>\n );\n}\n\n/** A box centred at (x, y): x from the canvas centre, y from the top of its section. */\nfunction center(x: number, y: number, w: number, h: number): CSSProperties {\n return {\n position: \"absolute\",\n left: W / 2 + x - w / 2,\n top: y - h / 2,\n width: w,\n height: h,\n };\n}\n\n/** A font size that fits `label` into `width` canvas units (long translations shrink, never wrap). */\nfunction fitText(label: string, width: number, max: number): number {\n return Math.min(max, Math.floor(width / Math.max(1, label.length * 0.62)));\n}\n\n/** The reference's outlined white game text. */\nfunction text(size: number, color = \"#fff\"): CSSProperties {\n const w = Math.max(2, Math.round(size / 14));\n return {\n color,\n fontSize: size,\n fontWeight: 900,\n lineHeight: 1.1,\n WebkitTextStroke: `${w}px ${INK}`,\n paintOrder: \"stroke fill\",\n textShadow: `0 ${w + 1}px 0 ${INK}`,\n whiteSpace: \"nowrap\",\n };\n}\n\nconst TONES: Record<string, [string, string, string]> = {\n purple: [\"#b46cff\", \"#8a3cf0\", \"#5a1fb0\"],\n sky: [\"#5cc8ff\", \"#1c8fe6\", \"#0d5aa8\"],\n yellow: [\"#ffd84a\", \"#f5a90c\", \"#a8650a\"],\n green: [\"#7be34a\", \"#33b31d\", \"#1f7a10\"],\n};\n\n/** Button01 (purple / sky / yellow / green): a glossy plate, dark outline, a bottom lip. */\nfunction UButton({\n style,\n tone,\n size = 42,\n busy,\n disabled,\n attract,\n onClick,\n children,\n ...rest\n}: {\n style: CSSProperties;\n tone: keyof typeof TONES;\n size?: number;\n busy?: boolean;\n disabled?: boolean;\n attract?: boolean;\n onClick: () => void;\n children: ReactNode;\n \"data-tutorial-anchor\"?: string;\n}): ReactNode {\n const play = useSound();\n const [top, bottom, lip] = TONES[tone]!;\n const off = disabled || busy;\n return (\n <button\n type=\"button\"\n {...rest}\n disabled={off}\n onClick={() => {\n play(\"click\");\n onClick();\n }}\n style={{\n ...style,\n borderRadius: 34,\n border: `6px solid ${INK}`,\n background: `linear-gradient(180deg, ${top} 0%, ${bottom} 100%)`,\n boxShadow: `inset 0 8px 0 rgba(255,255,255,.4), 0 9px 0 ${lip}, 0 14px 0 rgba(0,0,0,.3)`,\n cursor: off ? \"default\" : \"pointer\",\n filter: disabled ? \"grayscale(.55) brightness(.85)\" : undefined,\n animation: attract\n ? \"idos-hero-attract 1.6s ease-in-out infinite\"\n : undefined,\n fontFamily: \"inherit\",\n padding: \"0 28px\",\n ...text(size),\n }}\n >\n <FitLabel size={size}>{busy ? \"…\" : children}</FitLabel>\n </button>\n );\n}\n\n/**\n * What never runs past its button: a label longer than the room (\"Подробнее\", \"ПОВЫСИТЬ УРОВЕНЬ\"\n * over its price) is scaled down as a whole — whatever font sizes its own parts set — instead of\n * spilling over the plate's edges, and stays centred. Re-measured when the content, the size or the\n * button's width changes, and once the font has loaded.\n */\nfunction FitLabel({\n size,\n children,\n}: {\n size: number;\n children: ReactNode;\n}): ReactNode {\n const ref = useRef<HTMLSpanElement>(null);\n useLayoutEffect(() => {\n const el = ref.current;\n const box = el?.parentElement;\n if (!el || !box) return;\n const fit = () => {\n el.style.transform = \"\";\n el.style.marginLeft = el.style.marginRight = \"\";\n const cs = getComputedStyle(box);\n const room =\n box.clientWidth -\n parseFloat(cs.paddingLeft) -\n parseFloat(cs.paddingRight);\n const natural = el.offsetWidth;\n if (natural <= room || room <= 0) return;\n el.style.transform = `scale(${room / natural})`;\n // the layout box shrinks to the room too, so the scaled label sits in the middle\n el.style.marginLeft = el.style.marginRight = `${-(natural - room) / 2}px`;\n };\n fit();\n const ro =\n typeof ResizeObserver === \"undefined\" ? null : new ResizeObserver(fit);\n ro?.observe(box);\n void document.fonts?.ready.then(fit);\n return () => ro?.disconnect();\n }, [size, children]);\n return (\n <span\n ref={ref}\n style={{\n display: \"inline-block\",\n whiteSpace: \"nowrap\",\n transformOrigin: \"50% 50%\",\n }}\n >\n {children}\n </span>\n );\n}\n\n/** An equipment slot (EquipmentSlotView): a blue frame, the slot's white silhouette, a lock. */\nfunction SlotFrame({\n style,\n kind,\n slot,\n hero,\n pieces,\n onClick,\n}: {\n style: CSSProperties;\n kind: SlotKind;\n slot: SlotView;\n hero: RosterEntry;\n pieces: GearPiece[];\n onClick: () => void;\n}): ReactNode {\n const play = useSound();\n const worn = hero.model?.Equipment?.[slot.id];\n const piece = worn?.ItemInstanceID\n ? pieces.find((p) => p.instanceID === worn.ItemInstanceID)\n : undefined;\n const locked = hero.rank < slot.minRank;\n return (\n <div style={style}>\n {worn?.ItemID ? (\n <ItemTile\n itemID={worn.ItemID}\n level={piece?.level}\n size={210}\n onClick={onClick}\n />\n ) : (\n <button\n type=\"button\"\n onClick={() => {\n play(\"click\");\n onClick();\n }}\n style={{\n width: \"100%\",\n height: \"100%\",\n borderRadius: 40,\n border: `6px solid ${INK}`,\n background: `radial-gradient(circle at 50% 35%, color-mix(in srgb, ${v.panel} 75%, #fff) 0%, ${v.panel} 60%, ${v.panelDeep} 100%)`,\n boxShadow:\n \"inset 0 7px 0 rgba(255,255,255,.28), 0 8px 0 rgba(0,0,0,.3)\",\n display: \"grid\",\n placeItems: \"center\",\n cursor: \"pointer\",\n position: \"relative\",\n }}\n >\n <SlotSilhouette kind={kind} size={130} opacity={0.39} />\n {locked ? (\n <span\n style={{\n position: \"absolute\",\n left: 105 + 77 - 25,\n top: 105 + 65 - 35,\n }}\n >\n <LockArt size={71} />\n </span>\n ) : null}\n </button>\n )}\n {locked ? (\n <div\n style={{\n position: \"absolute\",\n left: 0,\n right: 0,\n bottom: -44,\n textAlign: \"center\",\n ...text(28),\n }}\n >\n {t(\"slotLocked\")} {slot.minRank}\n </div>\n ) : null}\n </div>\n );\n}\n\n/** Stat_Attack / Stat_Hp: an icon, the stat's name and its value. */\nfunction HeadStat({\n style,\n glyph,\n label,\n value,\n}: {\n style: CSSProperties;\n glyph: \"sword\" | \"heart\";\n label: string;\n value: string;\n}): ReactNode {\n return (\n <div style={{ ...style, display: \"flex\", alignItems: \"center\", gap: 14 }}>\n <StatGlyph kind={glyph} size={78} />\n <div style={{ display: \"grid\" }}>\n <span style={text(30)}>{label}</span>\n <span style={text(44)}>{value}</span>\n </div>\n </div>\n );\n}\n\nfunction StatGlyph({\n kind,\n size,\n}: {\n kind: \"sword\" | \"heart\" | \"shield\" | \"crown\";\n size: number;\n}): ReactNode {\n const shapes = {\n sword: (\n <g stroke={INK} strokeWidth=\"5\" strokeLinejoin=\"round\">\n <path d=\"M60 6 L70 16 L32 54 L24 46 Z\" fill=\"#dfe8f5\" />\n <path d=\"M20 40 L38 58 L32 64 L14 46 Z\" fill=\"#ffc21a\" />\n <path d=\"M14 56 L22 64 L10 76 L2 68 Z\" fill=\"#8a5a2b\" />\n </g>\n ),\n heart: (\n <path\n d=\"M39 70 L10 40 Q0 28 8 16 Q18 4 32 12 Q36 15 39 20 Q42 15 46 12 Q60 4 70 16 Q78 28 68 40 Z\"\n fill=\"#f0353b\"\n stroke={INK}\n strokeWidth=\"5\"\n strokeLinejoin=\"round\"\n />\n ),\n shield: (\n <path\n d=\"M39 4 L70 16 Q70 52 39 74 Q8 52 8 16 Z\"\n fill=\"#3d8cf0\"\n stroke={INK}\n strokeWidth=\"5\"\n strokeLinejoin=\"round\"\n />\n ),\n crown: (\n <path\n d=\"M8 60 L8 22 L24 36 L39 12 L54 36 L70 22 L70 60 Z\"\n fill=\"#ffd23a\"\n stroke={INK}\n strokeWidth=\"5\"\n strokeLinejoin=\"round\"\n />\n ),\n };\n return (\n <svg\n viewBox=\"0 0 78 78\"\n width={size}\n height={size}\n aria-hidden\n style={{ flex: \"none\" }}\n >\n {shapes[kind]}\n </svg>\n );\n}\n\n// ── Character_Detail (CharacterDetailPanel) ─────────────────────────────────────────────────\n\nconst DH = 2340;\n/** A box in the detail canvas: x from the centre, y up from the centre (Unity), canvas 1080 × 2340. */\nfunction dAt(x: number, y: number, w: number, h: number): CSSProperties {\n return {\n position: \"absolute\",\n left: W / 2 + x - w / 2,\n top: DH / 2 - y - h / 2,\n width: w,\n height: h,\n };\n}\n\nfunction DetailWindow({\n hero,\n stats,\n value,\n balances,\n section,\n onStats,\n onClose,\n}: {\n hero: RosterEntry;\n stats: StatView[];\n value: (s: StatView | undefined) => string;\n balances: Record<string, { Amount?: number }> | undefined;\n section: Parameters<typeof resolveLadder>[0];\n onStats: () => void;\n onClose: () => void;\n}): ReactNode {\n const { client } = useData();\n const catalog = useCatalog();\n const kit = useUiKit();\n const toast = useToast();\n const host = useRef<HTMLDivElement>(null);\n const card = useRef<HTMLDivElement>(null);\n const bob = useCharacterArt()\n ? undefined\n : \"idos-hero-idle 2.4s ease-in-out infinite\";\n const [scale, setScale] = useState(0.35);\n const [shown, setShown] = useState(false);\n const [busy, setBusy] = useState(false);\n\n useLayoutEffect(() => {\n const el = host.current;\n if (!el) return;\n const fit = (): void =>\n setScale(Math.min(el.clientWidth / W, el.clientHeight / DH));\n fit();\n const ro = new ResizeObserver(fit);\n ro.observe(el);\n return () => ro.disconnect();\n }, []);\n useEffect(() => {\n kit.play(\"open\");\n const id = requestAnimationFrame(() => setShown(true));\n return () => cancelAnimationFrame(id);\n }, []);\n\n const close = (): void => {\n kit.play(\"close\");\n setShown(false);\n setTimeout(onClose, 220);\n };\n\n const ladder = resolveLadder(section, hero.def);\n const nextRank = rankCost(ladder, hero.rank);\n const affordable = nextRank !== null && canAfford(nextRank, balances);\n const rarityID = hero.def.Classification?.RarityID ?? \"\";\n const rarity = catalog.rarityColor(rarityID);\n const maxRank = Number(ladder?.MaxRank ?? 0);\n const stars = Math.max(\n 0,\n Math.min(\n 6,\n maxRank > 0\n ? Math.round((hero.rank / maxRank) * 6)\n : Math.min(6, hero.rank),\n ),\n );\n\n const rankUp = async (): Promise<void> => {\n setBusy(true);\n const res = await client.character.upgradeCharacterLevel(hero.id);\n setBusy(false);\n if (!res.ok) return toast(errorText(res.error), \"error\");\n kit.play(\"levelUp\");\n kit.fx.burst(card.current);\n };\n\n const four = stats.slice(0, 4);\n const statGlyph = (s: StatView): \"sword\" | \"heart\" | \"shield\" | \"crown\" =>\n /hp|health|life|vit/i.test(s.id)\n ? \"heart\"\n : /def|arm|block/i.test(s.id)\n ? \"shield\"\n : /att|dam|dmg|str/i.test(s.id)\n ? \"sword\"\n : \"crown\";\n\n return (\n <KitPortal>\n <div\n ref={host}\n style={{\n position: \"fixed\",\n inset: 0,\n // Below the kit's popups (20): STATS opens over the card, like Character_Stat_Popup.\n zIndex: 15,\n overflow: \"hidden\",\n pointerEvents: \"auto\",\n opacity: shown ? 1 : 0,\n transform: shown ? \"scale(1)\" : \"scale(1.06, .94)\",\n transition:\n \"opacity .22s ease, transform .3s cubic-bezier(.34,1.56,.64,1)\",\n // the hero's rarity colours the whole card (Common blue, Rare green, Epic purple…)\n background: `radial-gradient(ellipse at 50% 30%, color-mix(in srgb, ${rarity} 55%, #fff) 0%, ${rarity} 55%, color-mix(in srgb, ${rarity} 62%, #000) 100%)`,\n }}\n >\n <MovingPattern />\n <div\n style={{\n position: \"absolute\",\n left: \"50%\",\n top: \"50%\",\n width: W,\n height: DH,\n marginLeft: -W / 2,\n marginTop: -DH / 2,\n transform: `scale(${scale})`,\n }}\n >\n {/* Rarity label + name */}\n <div\n style={{\n ...dAt(0, 890, 220, 66),\n background: rarity,\n transform: \"skewX(-14deg)\",\n border: `5px solid ${INK}`,\n borderRadius: 10,\n display: \"grid\",\n placeItems: \"center\",\n }}\n >\n <span style={{ ...text(30), transform: \"skewX(14deg)\" }}>\n {(rarityID || \"—\").toUpperCase()}\n </span>\n </div>\n <div\n style={{\n ...dAt(0, 805, 900, 113),\n display: \"grid\",\n placeItems: \"center\",\n ...text(90),\n }}\n >\n {catalog.localize(hero.def.Identity?.DisplayName ?? hero.id)}\n </div>\n {/* The hero */}\n <div\n style={{\n ...dAt(-2, 104, 220, 56),\n borderRadius: \"50%\",\n background: \"rgba(0,0,0,.2)\",\n }}\n />\n <div\n ref={card}\n style={{\n ...dAt(0, 416, 480, 640),\n animation: bob,\n transformOrigin: \"50% 100%\",\n }}\n >\n <HeroFigure\n hero={hero}\n color={classColor(hero.def.Classification?.ClassID)}\n />\n </div>\n {/* Rank badge, stars, class */}\n <div\n style={{\n ...dAt(-208, 17, 102, 107),\n display: \"grid\",\n placeItems: \"center\",\n }}\n >\n <svg\n viewBox=\"0 0 102 107\"\n style={{ position: \"absolute\", inset: 0 }}\n aria-hidden\n >\n <path\n d=\"M51 4 L94 26 L94 76 L51 103 L8 76 L8 26 Z\"\n fill=\"#2f86f0\"\n stroke={INK}\n strokeWidth=\"6\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M51 14 L84 32 L84 50 L18 50 L18 32 Z\"\n fill=\"rgba(255,255,255,.25)\"\n />\n </svg>\n <span style={{ position: \"relative\", ...text(52) }}>\n {hero.rank}\n </span>\n </div>\n <div\n style={{\n ...dAt(0, 17, 300, 78),\n display: \"flex\",\n justifyContent: \"center\",\n }}\n >\n {Array.from({ length: 6 }, (_, k) => (\n <svg\n key={k}\n viewBox=\"0 0 71 76\"\n width={56}\n height={60}\n aria-hidden\n >\n <path\n d=\"M35.5 4 L45 26 L68 28 L50 44 L56 68 L35.5 55 L15 68 L21 44 L3 28 L26 26 Z\"\n fill={k < stars ? \"#ffd23a\" : \"rgba(16,23,46,.45)\"}\n stroke={INK}\n strokeWidth=\"5\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ))}\n </div>\n {hero.def.Classification?.ClassID ? (\n <div\n style={{\n ...dAt(195, 17, 78, 78),\n borderRadius: \"50%\",\n border: `6px solid ${INK}`,\n background: classColor(hero.def.Classification.ClassID),\n display: \"grid\",\n placeItems: \"center\",\n ...text(30),\n }}\n >\n {hero.def.Classification.ClassID.slice(0, 1).toUpperCase()}\n </div>\n ) : null}\n\n {/* Four stats */}\n {four.map((s, i) => (\n <div\n key={s.id}\n style={{\n ...dAt(i % 2 === 0 ? -230 : 230, i < 2 ? -232 : -392, 410, 115),\n borderRadius: 26,\n border: `5px solid ${INK}`,\n background: `linear-gradient(180deg, ${v.blue}, ${v.blueDeep})`,\n boxShadow: \"inset 0 6px 0 rgba(255,255,255,.2)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 16,\n padding: \"0 18px\",\n boxSizing: \"border-box\",\n }}\n >\n <StatGlyph kind={statGlyph(s)} size={86} />\n <div style={{ display: \"grid\", minWidth: 0 }}>\n <span\n style={{\n ...text(34),\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {s.name}\n </span>\n <span style={text(52)}>{value(s)}</span>\n </div>\n </div>\n ))}\n {/* Lore */}\n <div\n style={{\n ...dAt(0, -606, 870, 220),\n borderRadius: 26,\n border: `5px solid ${INK}`,\n background: \"linear-gradient(180deg,#b3c2d6,#9fb0c8)\",\n boxShadow: \"inset 0 6px 0 rgba(255,255,255,.45)\",\n padding: \"18px 34px\",\n boxSizing: \"border-box\",\n display: \"grid\",\n gridTemplateRows: \"auto 1fr\",\n justifyItems: \"center\",\n gap: 8,\n }}\n >\n <span style={text(38)}>{t(\"lore\")}</span>\n <span\n style={{\n fontSize: 30,\n fontWeight: 700,\n color: \"#1c2340\",\n textAlign: \"center\",\n lineHeight: 1.25,\n whiteSpace: \"normal\",\n }}\n >\n {catalog.localize(hero.def.Identity?.Description ?? \"\") || \"—\"}\n </span>\n </div>\n {/* Upgrade Level (= rank up) and STATS */}\n {hero.state !== \"locked\" ? (\n <>\n <UButton\n style={dAt(-220, -810, 400, 175)}\n tone=\"green\"\n busy={busy}\n disabled={nextRank === null || !affordable}\n attract={affordable}\n onClick={() => void rankUp()}\n data-tutorial-anchor=\"heroes:rank-up\"\n >\n <span\n style={{ display: \"grid\", justifyItems: \"center\", gap: 4 }}\n >\n <span\n style={text(\n fitText(\n nextRank === null ? t(\"maxRank\") : t(\"upgradeLevel\"),\n 360,\n 40,\n ),\n )}\n >\n {nextRank === null ? t(\"maxRank\") : t(\"upgradeLevel\")}\n </span>\n {nextRank && nextRank.length ? (\n <span\n style={{\n transform: \"scale(2.3)\",\n transformOrigin: \"50% 0\",\n marginBottom: 30,\n }}\n >\n <ResourceList\n lines={nextRank}\n size={22}\n dimIf={() => !affordable}\n />\n </span>\n ) : nextRank ? (\n <span style={text(40)}>{t(\"free\")}</span>\n ) : null}\n </span>\n </UButton>\n <UButton\n style={dAt(220, -810, 400, 175)}\n tone=\"yellow\"\n size={fitText(t(\"statsCaps\"), 360, 55)}\n onClick={onStats}\n >\n {t(\"statsCaps\")}\n </UButton>\n </>\n ) : null}\n {/* Bottom bar with the round close button */}\n <div\n style={{\n ...dAt(0, -1037, W, 266),\n background: `linear-gradient(180deg, color-mix(in srgb, ${v.nav} 85%, #fff) 0%, ${v.nav} 100%)`,\n borderTop: `6px solid ${INK}`,\n display: \"grid\",\n placeItems: \"center\",\n }}\n >\n <button\n type=\"button\"\n aria-label=\"Close\"\n onClick={close}\n style={{\n width: 117,\n height: 118,\n borderRadius: \"50%\",\n border: `6px solid ${INK}`,\n background: \"linear-gradient(180deg,#5d6a92,#3b4568)\",\n boxShadow:\n \"inset 0 7px 0 rgba(255,255,255,.25), 0 8px 0 rgba(0,0,0,.4)\",\n cursor: \"pointer\",\n ...text(56),\n lineHeight: 1,\n fontFamily: \"inherit\",\n }}\n >\n ✕\n </button>\n </div>\n </div>\n </div>\n </KitPortal>\n );\n}\n\nconst HERO_CSS = `\n@keyframes idos-hero-idle { 0%,100% { transform: scale(1, 1); } 50% { transform: scale(1.025, .975); } }\n@keyframes idos-hero-pop { from { opacity: 0; transform: scale(.4); } to { opacity: 1; transform: scale(1); } }\n@keyframes idos-hero-attract { 0%,100% { transform: scale(1); } 50% { transform: scale(1.05); } }\n`;\n"
|
|
66
67
|
},
|
|
67
68
|
{
|
|
68
69
|
"path": "components/art.tsx",
|
|
69
|
-
"content": "import type { ReactNode } from \"react\";\n\n// The hero screen's art, redrawn in SVG after the reference (BoardSurvival Content/Sprites:\n// Characters, SlotIcons) — the module ships text only. Same look: chunky cartoon shapes, a heavy dark\n// outline, the slot silhouettes white and see-through on their frames.\n\nconst INK = \"#
|
|
70
|
+
"content": "import type { ReactNode } from \"react\";\n\n// The hero screen's art, redrawn in SVG after the reference (BoardSurvival Content/Sprites:\n// Characters, SlotIcons) — the module ships text only. Same look: chunky cartoon shapes, a heavy dark\n// outline, the slot silhouettes white and see-through on their frames.\n\nconst INK = \"#17193a\";\n\n/** Jacket colour of a hero by its class (a stable colour for any other class id). */\nexport function classColor(classID: string | null | undefined): string {\n const id = (classID ?? \"\").toLowerCase();\n if (/war|knight|tank|fighter/.test(id)) return \"#d9433b\";\n if (/arch|bow|hunt|range/.test(id)) return \"#3fa548\";\n if (/mag|wiz|sorc|caster/.test(id)) return \"#7d4ae0\";\n if (/rog|assas|thief/.test(id)) return \"#3b3f52\";\n if (!id) return \"#2f6fd6\";\n let h = 0;\n for (const c of id) h = (h * 31 + c.charCodeAt(0)) % 360;\n return `hsl(${h} 62% 48%)`;\n}\n\nexport { HeroArt, heroKind, type HeroKind } from \"./heroArt\";\n\nexport type SlotKind =\n \"weapon\" | \"helmet\" | \"ring\" | \"shoes\" | \"torso\" | \"pants\" | \"bag\" | \"other\";\n\n/** Slot kind by a slot or item-class id (\"Weapon\", \"MainHand\", \"Boots\", \"Chest\"…). */\nexport function slotKind(id: string | null | undefined): SlotKind {\n const s = (id ?? \"\").toLowerCase();\n if (/weap|sword|hand|bow|staff|wand/.test(s)) return \"weapon\";\n if (/helm|head|hat|cap/.test(s)) return \"helmet\";\n if (/ring|amul|neck|acces|trink/.test(s)) return \"ring\";\n if (/shoe|boot|feet|foot/.test(s)) return \"shoes\";\n if (/torso|chest|body|armor|armour|shirt/.test(s)) return \"torso\";\n if (/pant|leg|trous/.test(s)) return \"pants\";\n return \"other\";\n}\n\n/** White slot silhouette (SlotIcons/*), drawn see-through on an empty slot. */\nexport function SlotSilhouette({\n kind,\n size,\n opacity = 1,\n}: {\n kind: SlotKind;\n size: number;\n opacity?: number;\n}): ReactNode {\n const paths: Record<SlotKind, ReactNode> = {\n weapon: (\n <>\n <path d=\"M84 8 L96 20 L44 72 L36 64 Z\" />\n <path d=\"M30 58 L46 74 L40 80 L24 64 Z\" />\n <path d=\"M14 70 L34 90 L26 98 L6 78 Z\" />\n <path d=\"M26 82 L14 94\" strokeWidth=\"10\" stroke=\"#fff\" />\n </>\n ),\n helmet: (\n <>\n <path d=\"M14 62 Q14 14 52 14 Q90 14 90 62 L90 80 L66 80 L66 62 L38 62 L38 80 L14 80 Z\" />\n <rect x=\"46\" y=\"4\" width=\"12\" height=\"16\" rx=\"4\" />\n </>\n ),\n ring: (\n <>\n <path\n d=\"M52 32 A30 30 0 1 1 51.9 32 Z M52 44 A18 18 0 1 0 52.1 44 Z\"\n fillRule=\"evenodd\"\n />\n <path d=\"M40 8 L64 8 L72 22 L52 36 L32 22 Z\" />\n </>\n ),\n shoes: (\n <>\n <path d=\"M30 10 L58 10 L58 54 L90 64 Q98 70 96 82 L96 92 L14 92 Q8 92 8 86 L8 70 Q30 64 30 50 Z\" />\n </>\n ),\n torso: (\n <>\n <path d=\"M30 10 L42 6 Q52 20 62 6 L74 10 L98 30 L84 50 L76 44 L76 96 L28 96 L28 44 L20 50 L6 30 Z\" />\n </>\n ),\n pants: (\n <>\n <path d=\"M22 8 L82 8 L90 96 L62 96 L52 40 L42 96 L14 96 Z\" />\n </>\n ),\n bag: (\n <>\n <path\n d=\"M30 30 Q30 8 52 8 Q74 8 74 30\"\n fill=\"none\"\n stroke=\"#fff\"\n strokeWidth=\"9\"\n />\n <path d=\"M14 34 L90 34 L96 92 Q96 98 90 98 L14 98 Q8 98 8 92 Z\" />\n <rect\n x=\"38\"\n y=\"50\"\n width=\"28\"\n height=\"18\"\n rx=\"5\"\n fill=\"rgba(0,0,0,.25)\"\n />\n </>\n ),\n other: <circle cx=\"52\" cy=\"52\" r=\"34\" />,\n };\n return (\n <svg\n viewBox=\"0 0 104 104\"\n width={size}\n height={size}\n style={{ opacity, display: \"block\" }}\n aria-hidden\n >\n <g fill=\"#fff\">{paths[kind]}</g>\n </svg>\n );\n}\n\n/** A small padlock (Icon_Lock01_s). */\nexport function LockArt({ size }: { size: number }): ReactNode {\n return (\n <svg viewBox=\"0 0 51 71\" width={size * (51 / 71)} height={size} aria-hidden>\n <g stroke={INK} strokeWidth=\"5\" strokeLinejoin=\"round\">\n <path\n d=\"M12 32 L12 22 Q12 6 25.5 6 Q39 6 39 22 L39 32\"\n fill=\"none\"\n stroke={INK}\n strokeWidth=\"12\"\n />\n <path\n d=\"M12 32 L12 22 Q12 6 25.5 6 Q39 6 39 22 L39 32\"\n fill=\"none\"\n stroke=\"#c9d3e3\"\n strokeWidth=\"6\"\n />\n <rect x=\"4\" y=\"30\" width=\"43\" height=\"36\" rx=\"8\" fill=\"#ffc21a\" />\n <circle cx=\"25.5\" cy=\"46\" r=\"5\" fill={INK} />\n </g>\n </svg>\n );\n}\n"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"path": "components/figures/archer.ts",
|
|
74
|
+
"content": "// GENERATED by scripts/render-hero-figures.ts from idle-rpg's character system — do not edit.\n// The idle-rpg Ranger in its class look, still (the first frame of its idle), facing right.\n/** Where the body stands across the picture, 0..1 (its weapon and shield make it lopsided). */\nexport const center = 0.423;\nexport default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 395 512\\\" width=\\\"395\\\" height=\\\"512\\\"><defs><image id=\\\"i0\\\" width=\\\"29\\\" height=\\\"71\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='71' viewBox='0 0 29 71'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='29' height='71' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-2.34' dy='-4.67' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='0.98' dy='1.96' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 19 3.5 C 23.5 3.5 26 6.5 25.5 12 L 19.5 61 C 18.5 66.5 15 69 10 68.8 C 5.5 68.5 3.2 65 3.6 60 L 11 11 C 12 5 15 3 19 3 Z' fill='%23ffffff' stroke='%231f1a21' stroke-width='3.6'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i1\\\" width=\\\"34\\\" height=\\\"35\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='34' height='35' viewBox='0 0 34 35'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='34' height='35' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-2.69' dy='-5.5' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='1.13' dy='2.31' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 3 24 C 6 14 12 5 20 3 C 26 2 30 6 31 12 L 31 30 C 26 32 18 33 9 31 C 4 30 2 27 3 24 Z' fill='%237a4628' stroke='none'/%3E%3CclipPath id='flar'%3E%3Cpath d='M 3 24 C 6 14 12 5 20 3 C 26 2 30 6 31 12 L 31 30 C 26 32 18 33 9 31 C 4 30 2 27 3 24 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23flar)'%3E%3Cpath d='M 2 18 C 12 12 22 12 31 16' fill='none' stroke='%231f1a21' stroke-width='2'/%3E%3Cpath d='M 5 27 C 14 29 24 29 30 27' fill='none' stroke='%23a0663e' stroke-width='1.4' stroke-dasharray='3 2'/%3E%3C/g%3E%3Cpath d='M 3 24 C 6 14 12 5 20 3 C 26 2 30 6 31 12 L 31 30 C 26 32 18 33 9 31 C 4 30 2 27 3 24 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cellipse cx='14' cy='9' rx='1.8' ry='1.8' fill='%23e8b23a' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='13.46' cy='8.46' rx='0.63' ry='0.63' fill='%23ffe28a' stroke='none'/%3E%3Cellipse cx='24' cy='9' rx='1.8' ry='1.8' fill='%23e8b23a' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='23.46' cy='8.46' rx='0.63' ry='0.63' fill='%23ffe28a' stroke='none'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i2\\\" width=\\\"35\\\" height=\\\"40\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='35' height='40' viewBox='0 0 35 40'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='35' height='40' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-2.87' dy='-5.61' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='1.2' dy='2.36' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 7 3.5 L 28 3.5 C 30.5 3.5 31.5 5.5 31.5 8.5 L 31.5 30 C 31.5 35 27 36.5 17.5 36.5 C 8 36.5 3.5 35 3.5 30 L 3.5 8.5 C 3.5 5.5 4.5 3.5 7 3.5 Z' fill='%237a4628' stroke='none'/%3E%3CclipPath id='fbr'%3E%3Cpath d='M 7 3.5 L 28 3.5 C 30.5 3.5 31.5 5.5 31.5 8.5 L 31.5 30 C 31.5 35 27 36.5 17.5 36.5 C 8 36.5 3.5 35 3.5 30 L 3.5 8.5 C 3.5 5.5 4.5 3.5 7 3.5 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23fbr)'%3E%3Cpath d='M 4 22 L 31 22' fill='none' stroke='%23a0663e' stroke-width='1.4' stroke-dasharray='3 2'/%3E%3Crect x='0' y='0' width='35' height='17.5' rx='0' fill='%234a3226' stroke='none'/%3E%3Cpath d='M 0 17.5 L 35 17.5' fill='none' stroke='%231f1a21' stroke-width='2.6'/%3E%3C/g%3E%3Cpath d='M 7 3.5 L 28 3.5 C 30.5 3.5 31.5 5.5 31.5 8.5 L 31.5 30 C 31.5 35 27 36.5 17.5 36.5 C 8 36.5 3.5 35 3.5 30 L 3.5 8.5 C 3.5 5.5 4.5 3.5 7 3.5 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cellipse cx='17.5' cy='10.5' rx='2.2' ry='2.2' fill='%23e8b23a' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='16.84' cy='9.84' rx='0.77' ry='0.77' fill='%23ffe28a' stroke='none'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i3\\\" width=\\\"70\\\" height=\\\"112\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='70' height='112' viewBox='0 0 70 112'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='70' height='112' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='9.84' dy='-4.92' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='-4.13' dy='2.07' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 42 6 L 42 56 L 42 106' fill='none' stroke='%231f1a21' stroke-width='2.6'/%3E%3Cpath d='M 42 6 L 42 56 L 42 106' fill='none' stroke='%23f0e8d8' stroke-width='1.1'/%3E%3Cpath d='M 26 48 C 20 30 28 16 42 6' fill='none' stroke='%231f1a21' stroke-width='9'/%3E%3Cpath d='M 26 48 C 20 30 28 16 42 6' fill='none' stroke='%239a6236' stroke-width='5.4'/%3E%3Cpath d='M 26 48 C 20 30 28 16 42 6' fill='none' stroke='%23c08250' stroke-width='1.6'/%3E%3Cpath d='M 26 64 C 20 82 28 96 42 106' fill='none' stroke='%231f1a21' stroke-width='9'/%3E%3Cpath d='M 26 64 C 20 82 28 96 42 106' fill='none' stroke='%239a6236' stroke-width='5.4'/%3E%3Cpath d='M 26 64 C 20 82 28 96 42 106' fill='none' stroke='%23c08250' stroke-width='1.6'/%3E%3Cpath d='M 21.5 45 L 30.5 45 L 30.5 67 L 21.5 67 Z' fill='%237a4628' stroke='none'/%3E%3CclipPath id='bg'%3E%3Cpath d='M 21.5 45 L 30.5 45 L 30.5 67 L 21.5 67 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23bg)'%3E%3Cpath d='M 21 49 L 31 52 M 21 55 L 31 58 M 21 61 L 31 64' fill='none' stroke='%2355301a' stroke-width='1.4'/%3E%3C/g%3E%3Cpath d='M 21.5 45 L 30.5 45 L 30.5 67 L 21.5 67 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cellipse cx='42' cy='6' rx='2.4' ry='2.4' fill='%23e8b23a' stroke='%231f1a21' stroke-width='1.6'/%3E%3Cellipse cx='42' cy='106' rx='2.4' ry='2.4' fill='%23e8b23a' stroke='%231f1a21' stroke-width='1.6'/%3E%3Cpath d='M 43 56 L 10 56' fill='none' stroke='%231f1a21' stroke-width='4.6'/%3E%3Cpath d='M 43 56 L 10 56' fill='none' stroke='%23c8a070' stroke-width='2'/%3E%3Cpath d='M 10 52 L 2 56 L 10 60 Z' fill='%23b8c0c8' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cpath d='M 43 56 L 35 51.5 L 31 51.5 L 37 56 L 31 60.5 L 35 60.5 Z' fill='%23e04040' stroke='%231f1a21' stroke-width='1.4'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i4\\\" width=\\\"27\\\" height=\\\"55\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='27' height='55' viewBox='0 0 27 55'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='27' height='55' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-2.17' dy='-4.35' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='0.91' dy='1.83' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 5 2.5 L 24 2.5 L 24 47 C 24 51 21 53 16 53 L 8 53 C 3.5 53 2 50 3 47 C 4 44 6 43 6 40 Z' fill='%23ffffff' stroke='%231f1a21' stroke-width='3.6'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i5\\\" width=\\\"26\\\" height=\\\"30\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='26' height='30' viewBox='0 0 26 30'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='26' height='30' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-1.91' dy='-4.27' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='0.8' dy='1.79' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 5.8 2.3 L 16 2.3 C 19 2.5 21 3.5 22.2 4.8 L 22.2 24 C 22.2 26 20 27.2 16 27.2 L 8 27.2 C 4.5 27.2 2.8 25 2.8 22 C 2.8 19 4 17 5.8 15.5 Z' fill='%237a4628' stroke='none'/%3E%3CclipPath id='flbl'%3E%3Cpath d='M 5.8 2.3 L 16 2.3 C 19 2.5 21 3.5 22.2 4.8 L 22.2 24 C 22.2 26 20 27.2 16 27.2 L 8 27.2 C 4.5 27.2 2.8 25 2.8 22 C 2.8 19 4 17 5.8 15.5 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23flbl)'%3E%3Cpath d='M 0 0 L 26 0 L 26 8 L 0 8 Z' fill='%234a3226' stroke='none'/%3E%3Cpath d='M 0 8 L 26 8' fill='none' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cpath d='M 3 17 L 22 17' fill='none' stroke='%234a3226' stroke-width='3'/%3E%3Crect x='10' y='15' width='4.5' height='4.5' rx='1' fill='%23e8b23a' stroke='%231f1a21' stroke-width='1.4'/%3E%3C/g%3E%3Cpath d='M 5.8 2.3 L 16 2.3 C 19 2.5 21 3.5 22.2 4.8 L 22.2 24 C 22.2 26 20 27.2 16 27.2 L 8 27.2 C 4.5 27.2 2.8 25 2.8 22 C 2.8 19 4 17 5.8 15.5 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i6\\\" width=\\\"26\\\" height=\\\"30\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='26' height='30' viewBox='0 0 26 30'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='26' height='30' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-1.99' dy='-4.24' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='0.83' dy='1.78' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 5.8 2.3 L 16 2.3 C 19 2.5 21 3.5 22.2 4.8 L 22.2 24 C 22.2 26 20 27.2 16 27.2 L 8 27.2 C 4.5 27.2 2.8 25 2.8 22 C 2.8 19 4 17 5.8 15.5 Z' fill='%237a4628' stroke='none'/%3E%3CclipPath id='flbr'%3E%3Cpath d='M 5.8 2.3 L 16 2.3 C 19 2.5 21 3.5 22.2 4.8 L 22.2 24 C 22.2 26 20 27.2 16 27.2 L 8 27.2 C 4.5 27.2 2.8 25 2.8 22 C 2.8 19 4 17 5.8 15.5 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23flbr)'%3E%3Cpath d='M 0 0 L 26 0 L 26 8 L 0 8 Z' fill='%234a3226' stroke='none'/%3E%3Cpath d='M 0 8 L 26 8' fill='none' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cpath d='M 3 17 L 22 17' fill='none' stroke='%234a3226' stroke-width='3'/%3E%3Crect x='10' y='15' width='4.5' height='4.5' rx='1' fill='%23e8b23a' stroke='%231f1a21' stroke-width='1.4'/%3E%3C/g%3E%3Cpath d='M 5.8 2.3 L 16 2.3 C 19 2.5 21 3.5 22.2 4.8 L 22.2 24 C 22.2 26 20 27.2 16 27.2 L 8 27.2 C 4.5 27.2 2.8 25 2.8 22 C 2.8 19 4 17 5.8 15.5 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i7\\\" width=\\\"82\\\" height=\\\"37\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='82' height='37' viewBox='0 0 82 37'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='82' height='37' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-3.05' dy='-5.92' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='1.28' dy='2.49' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 4 4 C 20 4 30 5.5 41 5.5 C 52 5.5 62 4 78 3.5 L 79 30 C 66 32.5 54 34 41 34 C 28 34 16 32.5 4 30 Z' fill='%23b99a6c' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cpath d='M 31 6 L 31 12 M 31 18 L 31 26 M 70 6 L 70 12 M 70 18 L 70 26' fill='none' stroke='%238c7350' stroke-width='2.4'/%3E%3Cpath d='M 35 6 L 35 16 C 35 18 33 19 31 19' fill='none' stroke='%238c7350' stroke-width='2.4'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i8\\\" width=\\\"77\\\" height=\\\"50\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='77' height='50' viewBox='0 0 77 50'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='77' height='50' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-4.02' dy='-8.05' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='1.69' dy='3.38' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 2 47 L 2 22 C 2 18 3 16 5 14 C 15 4 60 2 68 10 C 72 14 75 20 75 28 L 75 47 Z' fill='%23ffffff' stroke='none'/%3E%3CclipPath id='torso'%3E%3Cpath d='M 2 47 L 2 22 C 2 18 3 16 5 14 C 15 4 60 2 68 10 C 72 14 75 20 75 28 L 75 47 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23torso)'%3E%3Cellipse cx='37' cy='13' rx='31' ry='15' fill='%23cfcfcf'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i9\\\" width=\\\"89\\\" height=\\\"92\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='89' height='92' viewBox='0 0 89 92'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='89' height='92' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-4.92' dy='-9.84' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='2.07' dy='4.13' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 63.2 3.9 Q 61.4 3.9 61.3 4 Q 61.2 4.1 61.5 6.4 Q 61.8 8.6 61.2 11.3 Q 60.6 14 59 17.2 Q 57.4 20.4 55.2 22.7 Q 53.1 25 50.5 26.3 Q 47.8 27.7 37.9 27.7 Q 28 27.8 26 26.5 Q 24.1 25.2 23.2 23.5 Q 22.3 21.8 22.3 17.5 Q 22.2 13.2 23.9 9 Q 25.6 4.9 25.8 5.1 Q 25.9 5.2 22.5 6.6 Q 19 8 16 11 Q 13.1 14 10.5 21 Q 7.9 28 6.7 37.5 Q 5.6 47 4.2 49 Q 2.8 51 2.9 53.5 Q 2.9 56 3.9 58 Q 4.8 60.1 4.8 71.6 Q 4.8 83.1 5.1 83.6 Q 5.3 84.1 9.2 85.6 Q 13.1 87.1 16.4 87.7 Q 19.6 88.2 40.4 88.1 Q 61.1 88.1 64.2 87 Q 67.3 86 68.2 80.8 Q 69.1 75.6 74.9 74.4 Q 80.7 73.2 81.4 72.7 Q 82.2 72.3 82.8 64.7 Q 83.4 57.1 84.3 55.5 Q 85.2 54 85.1 51.6 Q 85.1 49.3 84.2 48.1 Q 83.3 46.9 83.7 40.8 Q 84.2 34.7 83.7 33.3 Q 83.2 31.8 83.1 27.4 Q 83.1 23 81.5 19.5 Q 80 16 75.5 11.5 Q 70.9 7 67.9 5.4 Q 64.9 3.9 63.2 3.9 Z' fill='%237a4628' stroke='none' fill-rule='evenodd'/%3E%3CclipPath id='fla'%3E%3Cpath d='M 63.2 3.9 Q 61.4 3.9 61.3 4 Q 61.2 4.1 61.5 6.4 Q 61.8 8.6 61.2 11.3 Q 60.6 14 59 17.2 Q 57.4 20.4 55.2 22.7 Q 53.1 25 50.5 26.3 Q 47.8 27.7 37.9 27.7 Q 28 27.8 26 26.5 Q 24.1 25.2 23.2 23.5 Q 22.3 21.8 22.3 17.5 Q 22.2 13.2 23.9 9 Q 25.6 4.9 25.8 5.1 Q 25.9 5.2 22.5 6.6 Q 19 8 16 11 Q 13.1 14 10.5 21 Q 7.9 28 6.7 37.5 Q 5.6 47 4.2 49 Q 2.8 51 2.9 53.5 Q 2.9 56 3.9 58 Q 4.8 60.1 4.8 71.6 Q 4.8 83.1 5.1 83.6 Q 5.3 84.1 9.2 85.6 Q 13.1 87.1 16.4 87.7 Q 19.6 88.2 40.4 88.1 Q 61.1 88.1 64.2 87 Q 67.3 86 68.2 80.8 Q 69.1 75.6 74.9 74.4 Q 80.7 73.2 81.4 72.7 Q 82.2 72.3 82.8 64.7 Q 83.4 57.1 84.3 55.5 Q 85.2 54 85.1 51.6 Q 85.1 49.3 84.2 48.1 Q 83.3 46.9 83.7 40.8 Q 84.2 34.7 83.7 33.3 Q 83.2 31.8 83.1 27.4 Q 83.1 23 81.5 19.5 Q 80 16 75.5 11.5 Q 70.9 7 67.9 5.4 Q 64.9 3.9 63.2 3.9 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23fla)'%3E%3Cpath d='M 46 0 L 92 0 L 92 94 L 50 94 C 46 60 44 30 46 0 Z' fill='%2355301a' stroke='none' opacity='0.6'/%3E%3Cpath d='M 20 10 C 18 34 18 60 22 90 M 64 10 C 66 34 66 60 62 90' fill='none' stroke='%23a0663e' stroke-width='1.6' stroke-dasharray='3 3'/%3E%3Cpath d='M 0 8 L 92 84' fill='none' stroke='%231f1a21' stroke-width='12'/%3E%3Cpath d='M 0 8 L 92 84' fill='none' stroke='%234a3226' stroke-width='8'/%3E%3Cellipse cx='14' cy='20' rx='1.8' ry='1.8' fill='%23e8b23a' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='13.46' cy='19.46' rx='0.63' ry='0.63' fill='%23ffe28a' stroke='none'/%3E%3Cellipse cx='32' cy='35' rx='1.8' ry='1.8' fill='%23e8b23a' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='31.46' cy='34.46' rx='0.63' ry='0.63' fill='%23ffe28a' stroke='none'/%3E%3Cellipse cx='50' cy='50' rx='1.8' ry='1.8' fill='%23e8b23a' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='49.46' cy='49.46' rx='0.63' ry='0.63' fill='%23ffe28a' stroke='none'/%3E%3Cellipse cx='68' cy='65' rx='1.8' ry='1.8' fill='%23e8b23a' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='67.46' cy='64.46' rx='0.63' ry='0.63' fill='%23ffe28a' stroke='none'/%3E%3Crect x='-2' y='66' width='96' height='7' rx='0' fill='%2355301a' stroke='none'/%3E%3Cpath d='M -2 66 L 96 66 M -2 73 L 96 73' fill='none' stroke='%231f1a21' stroke-width='2'/%3E%3Crect x='25' y='64.5' width='10' height='10' rx='2' fill='%23e8b23a' stroke='%231f1a21' stroke-width='2'/%3E%3Crect x='28.2' y='67.5' width='3.6' height='4' rx='1' fill='%2355301a' stroke='none'/%3E%3Cpath d='M 56 72 L 72 72 L 72 86 C 72 88 70 89 68 89 L 60 89 C 58 89 56 88 56 86 Z' fill='%234a3226' stroke='%231f1a21' stroke-width='2.2'/%3E%3Cellipse cx='64' cy='77' rx='1.6' ry='1.6' fill='%23e8b23a' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='63.52' cy='76.52' rx='0.5599999999999999' ry='0.5599999999999999' fill='%23ffe28a' stroke='none'/%3E%3Cpath d='M 26 48 L 30 52 M 70 28 L 74 32' fill='none' stroke='%233e2212' stroke-width='1.2'/%3E%3C/g%3E%3Cpath d='M 63.2 3.9 Q 61.4 3.9 61.3 4 Q 61.2 4.1 61.5 6.4 Q 61.8 8.6 61.2 11.3 Q 60.6 14 59 17.2 Q 57.4 20.4 55.2 22.7 Q 53.1 25 50.5 26.3 Q 47.8 27.7 37.9 27.7 Q 28 27.8 26 26.5 Q 24.1 25.2 23.2 23.5 Q 22.3 21.8 22.3 17.5 Q 22.2 13.2 23.9 9 Q 25.6 4.9 25.8 5.1 Q 25.9 5.2 22.5 6.6 Q 19 8 16 11 Q 13.1 14 10.5 21 Q 7.9 28 6.7 37.5 Q 5.6 47 4.2 49 Q 2.8 51 2.9 53.5 Q 2.9 56 3.9 58 Q 4.8 60.1 4.8 71.6 Q 4.8 83.1 5.1 83.6 Q 5.3 84.1 9.2 85.6 Q 13.1 87.1 16.4 87.7 Q 19.6 88.2 40.4 88.1 Q 61.1 88.1 64.2 87 Q 67.3 86 68.2 80.8 Q 69.1 75.6 74.9 74.4 Q 80.7 73.2 81.4 72.7 Q 82.2 72.3 82.8 64.7 Q 83.4 57.1 84.3 55.5 Q 85.2 54 85.1 51.6 Q 85.1 49.3 84.2 48.1 Q 83.3 46.9 83.7 40.8 Q 84.2 34.7 83.7 33.3 Q 83.2 31.8 83.1 27.4 Q 83.1 23 81.5 19.5 Q 80 16 75.5 11.5 Q 70.9 7 67.9 5.4 Q 64.9 3.9 63.2 3.9 Z' fill='none' stroke='%231f1a21' stroke-width='3.6' fill-rule='evenodd'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i10\\\" width=\\\"103\\\" height=\\\"90\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='103' height='90' viewBox='0 0 103 90'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='103' height='90' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-4.95' dy='-9.82' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='2.08' dy='4.13' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 4 50 C 3 22 20 3 52 3 C 75 3 89 16 91 44 C 96 45 99 51 99 58 C 99 65 94 70 88 70 C 85 70 83 69 82 68 C 78 80 66 87 48 87 L 24 87 C 10 87 4 78 4 66 Z' fill='%23ffffff' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cpath d='M 81 48 C 82 47 84 46 86 46 M 81 67 C 82 68 83 69 85 69 M 83 54 C 85 52 88 51 91 52' fill='none' stroke='%231f1a21' stroke-width='3'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i11\\\" width=\\\"23\\\" height=\\\"12\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='23' height='12' viewBox='0 0 23 12'%3E%3Cg stroke-linejoin='round' stroke-linecap='round'%3E%3Cpath d='M 2.5 4.5 C 3 8.5 8 9.5 10 6.5 L 11.5 3 L 13 6.5 C 15 9.5 20 8.5 20.5 4' fill='none' stroke='%231f1a21' stroke-width='3.2'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i12\\\" width=\\\"61\\\" height=\\\"23\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='61' height='23' viewBox='0 0 61 23' color='%2322c79e'%3E%3Cg stroke-linejoin='round' stroke-linecap='round'%3E%3Cpath d='M 19.5 14.36 C 15.76 10.83 7.26 7.71 2.5 10.9 C 5.9 19.32 15.25 19.32 19.5 14.36 Z' fill='%23fffaf4' stroke='none'/%3E%3CclipPath id='el'%3E%3Cpath d='M 19.5 14.36 C 15.76 10.83 7.26 7.71 2.5 10.9 C 5.9 19.32 15.25 19.32 19.5 14.36 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23el)'%3E%3Cellipse cx='9.9' cy='14.12' rx='4.4' ry='4.928000000000001' fill='currentColor' stroke='%231f1a21' stroke-width='1.3'/%3E%3CclipPath id='el_i'%3E%3Cpath d='M 5.5 14.12 A 4.4 4.928000000000001 0 1 0 14.3 14.12 A 4.4 4.928000000000001 0 1 0 5.5 14.12 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23el_i)'%3E%3Cellipse cx='9.9' cy='11.064639999999999' rx='4.840000000000001' ry='3.3510400000000007' fill='%23000000' stroke='none' opacity='0.38'/%3E%3Cellipse cx='9.9' cy='17.66816' rx='3.5200000000000005' ry='1.9712000000000005' fill='%23ffffff' stroke='none' opacity='0.3'/%3E%3C/g%3E%3Cellipse cx='9.9' cy='13.52864' rx='2.2' ry='3.0553600000000003' fill='%23160f1a' stroke='none'/%3E%3Cellipse cx='11.66' cy='12.050239999999999' rx='1.32' ry='1.32' fill='%23ffffff' stroke='none'/%3E%3Cellipse cx='8.228' cy='16.18976' rx='0.6160000000000001' ry='0.6160000000000001' fill='%23ffffff' stroke='none'/%3E%3Cpath d='M -6 1.5 L 28 1.5 L 28 11.5144 L -6 11.5144 Z' fill='%23000000' stroke='none' opacity='0.12'/%3E%3C/g%3E%3Cpath d='M 19.5 14.36 C 15.76 10.83 7.26 7.71 2.5 10.9 C 5.9 19.32 15.25 19.32 19.5 14.36 Z' fill='none' stroke='%231f1a21' stroke-width='1.3'/%3E%3Cpath d='M 19.5 14.36 C 15.76 10.83 7.26 7.71 2.5 10.9 L -0.1 9.47 C 7.26 3.21 15.76 8.43 19.9 13.31 Z' fill='%231f1a21' stroke='none'/%3E%3Cpath d='M 14.4 19.47 Q 10.15 20.37 5.9 18.87' fill='none' stroke='%231f1a21' stroke-width='1.6'/%3E%3Cpath d='M 32.5 14.52 C 37.12 10.66 47.62 7.28 53.5 10.76 C 49.3 19.94 37.75 19.94 32.5 14.52 Z' fill='%23fffaf4' stroke='none'/%3E%3CclipPath id='er'%3E%3Cpath d='M 32.5 14.52 C 37.12 10.66 47.62 7.28 53.5 10.76 C 49.3 19.94 37.75 19.94 32.5 14.52 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23er)'%3E%3Cellipse cx='41.8' cy='14.26' rx='4.8' ry='5.376' fill='currentColor' stroke='%231f1a21' stroke-width='1.3'/%3E%3CclipPath id='er_i'%3E%3Cpath d='M 37 14.26 A 4.8 5.376 0 1 0 46.599999999999994 14.26 A 4.8 5.376 0 1 0 37 14.26 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23er_i)'%3E%3Cellipse cx='41.8' cy='10.92688' rx='5.28' ry='3.6556800000000007' fill='%23000000' stroke='none' opacity='0.38'/%3E%3Cellipse cx='41.8' cy='18.13072' rx='3.84' ry='2.1504000000000003' fill='%23ffffff' stroke='none' opacity='0.3'/%3E%3C/g%3E%3Cellipse cx='41.8' cy='13.61488' rx='2.4' ry='3.33312' fill='%23160f1a' stroke='none'/%3E%3Cellipse cx='43.72' cy='12.00208' rx='1.44' ry='1.44' fill='%23ffffff' stroke='none'/%3E%3Cellipse cx='39.976' cy='16.51792' rx='0.672' ry='0.672' fill='%23ffffff' stroke='none'/%3E%3Cpath d='M 22 0.5 L 64 0.5 L 64 11.424800000000001 L 22 11.424800000000001 Z' fill='%23000000' stroke='none' opacity='0.12'/%3E%3C/g%3E%3Cpath d='M 32.5 14.52 C 37.12 10.66 47.62 7.28 53.5 10.76 C 49.3 19.94 37.75 19.94 32.5 14.52 Z' fill='none' stroke='%231f1a21' stroke-width='1.3'/%3E%3Cpath d='M 32.5 14.52 C 37.12 10.66 47.62 7.28 53.5 10.76 L 57.1 8.78 C 47.62 2.48 37.12 8.10 32.1 13.40 Z' fill='%231f1a21' stroke='none'/%3E%3Cpath d='M 38.8 19.94 Q 44.05 20.84 49.3 19.34' fill='none' stroke='%231f1a21' stroke-width='1.6'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i13\\\" width=\\\"51\\\" height=\\\"11\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='51' height='11' viewBox='0 0 51 11'%3E%3Cg stroke-linejoin='round' stroke-linecap='round'%3E%3Cpath d='M 2.5 3 C 8 2.5 14 4 17.5 7.5' fill='none' stroke='%231f1a21' stroke-width='4.2'/%3E%3Cpath d='M 32.5 8.5 C 34 4.5 42 3.5 48.5 4.5' fill='none' stroke='%231f1a21' stroke-width='4.2'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i14\\\" width=\\\"111\\\" height=\\\"60\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='111' height='60' viewBox='0 0 111 60'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='111' height='60' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-4.86' dy='-9.64' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='2.04' dy='4.05' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 4 48 C 3 36 8 26 16 18 C 30 6 46 2 62 2 C 80 3 94 12 98 28 L 99 40 L 106 40 L 107 45 L 100 46 L 97 50 L 91 55 L 86 49 L 83 57 L 78 52 C 72 44 66 32 58 20 L 44 25 L 30 17 L 18 25 L 16 45 L 12 54 L 10 48 L 7 52 Z' fill='%23ffffff' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cpath d='M 64 30 C 74 34 86 36 98 36 L 99 40 L 106 40 L 107 45 L 100 46 L 97 50 L 91 55 L 86 49 L 83 57 L 78 52 C 72 44 68 38 64 30 Z' fill='%23dcdcdc' stroke='none'/%3E%3Cpath d='M 16 19 C 10 24 5 30 4 36 L 3 49 L 7 52 L 10 48 L 12 54 L 16 49 L 17 26 C 22 18 26 16 30 17 L 44 25 L 56 19 C 62 22 66 32 72 42 C 76 48 80 54 83 57 L 86 49 L 91 55 L 97 50 L 96 26 M 98 44 L 106 46 L 107 41 M 58 4 C 61 2 64 2 67 3' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i15\\\" width=\\\"114\\\" height=\\\"115\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='114' height='115' viewBox='0 0 114 115'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='114' height='115' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-4.95' dy='-9.82' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='2.08' dy='4.13' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 4 50 C 2 30 12 12 36 6 C 60 0 88 2 102 14 C 110 22 112 36 110 52 C 110 58 108 62 106 64 L 104 74 L 96 68 L 94 80 C 92 92 92 104 90 110 L 76 110 C 74 96 74 80 74 66 C 74 54 70 50 64 50 L 18 52 C 14 54 12 58 12 66 L 12 102 C 10 108 6 108 4 104 Z' fill='%233f7a3a' stroke='none'/%3E%3CclipPath id='rh'%3E%3Cpath d='M 4 50 C 2 30 12 12 36 6 C 60 0 88 2 102 14 C 110 22 112 36 110 52 C 110 58 108 62 106 64 L 104 74 L 96 68 L 94 80 C 92 92 92 104 90 110 L 76 110 C 74 96 74 80 74 66 C 74 54 70 50 64 50 L 18 52 C 14 54 12 58 12 66 L 12 102 C 10 108 6 108 4 104 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23rh)'%3E%3Cpath d='M 0 76 C 30 72 70 74 114 80 L 114 116 L 0 116 Z' fill='%232f5e2c' stroke='none'/%3E%3Cpath d='M 60 0 L 120 0 L 120 116 L 80 116 C 76 80 78 40 60 0 Z' fill='%23356a32' stroke='none'/%3E%3Cpath d='M 2 50 C 30 46 70 46 112 52' fill='none' stroke='%23244a22' stroke-width='10'/%3E%3Cpath d='M 2 49 C 30 45 70 45 112 51' fill='none' stroke='%235a9a50' stroke-width='3'/%3E%3Cpath d='M 8 30 C 30 18 60 14 84 22 C 94 26 102 34 108 46' fill='none' stroke='%23244a22' stroke-width='2' stroke-dasharray='4 3'/%3E%3C/g%3E%3Cpath d='M 4 50 C 2 30 12 12 36 6 C 60 0 88 2 102 14 C 110 22 112 36 110 52 C 110 58 108 62 106 64 L 104 74 L 96 68 L 94 80 C 92 92 92 104 90 110 L 76 110 C 74 96 74 80 74 66 C 74 54 70 50 64 50 L 18 52 C 14 54 12 58 12 66 L 12 102 C 10 108 6 108 4 104 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cpath d='M 74 66 C 76 80 76 96 78 108' fill='none' stroke='%23244a22' stroke-width='2'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i16\\\" width=\\\"23\\\" height=\\\"72\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='23' height='72' viewBox='0 0 23 72'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='23' height='72' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-1.85' dy='-3.7' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='0.78' dy='1.56' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 11.5 2.5 C 17 2.5 20 5 20 11 L 19.5 61 C 19.5 67 16 70 11 70 C 6 70 3 67 3 61 L 3 11 C 3 5 6 2.5 11.5 2.5 Z' fill='%23ffffff' stroke='%231f1a21' stroke-width='3.6'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i17\\\" width=\\\"37\\\" height=\\\"34\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='37' height='34' viewBox='0 0 37 34'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='37' height='34' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-2.81' dy='-5.44' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='1.18' dy='2.28' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 4 29 C 3 18 6 8 13 5 C 20 3 25 8 29 16 C 31 21 33 26 32 29 C 24 32 12 32 4 29 Z' fill='%237a4628' stroke='none'/%3E%3CclipPath id='flal'%3E%3Cpath d='M 4 29 C 3 18 6 8 13 5 C 20 3 25 8 29 16 C 31 21 33 26 32 29 C 24 32 12 32 4 29 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23flal)'%3E%3Cpath d='M 2 18 C 12 14 22 16 32 22' fill='none' stroke='%231f1a21' stroke-width='2'/%3E%3Cpath d='M 4 26 C 12 28 24 28 31 26' fill='none' stroke='%23a0663e' stroke-width='1.4' stroke-dasharray='3 2'/%3E%3C/g%3E%3Cpath d='M 4 29 C 3 18 6 8 13 5 C 20 3 25 8 29 16 C 31 21 33 26 32 29 C 24 32 12 32 4 29 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cellipse cx='12' cy='10' rx='1.8' ry='1.8' fill='%23e8b23a' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='11.46' cy='9.46' rx='0.63' ry='0.63' fill='%23ffe28a' stroke='none'/%3E%3Cellipse cx='22' cy='12' rx='1.8' ry='1.8' fill='%23e8b23a' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='21.46' cy='11.46' rx='0.63' ry='0.63' fill='%23ffe28a' stroke='none'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i18\\\" width=\\\"36\\\" height=\\\"40\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='40' viewBox='0 0 36 40'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='36' height='40' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-2.83' dy='-5.83' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='1.19' dy='2.45' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 7 3.5 L 29 3.5 C 31.5 3.5 32.5 5.5 32.5 8.5 L 32.5 30 C 32.5 35 28 36.5 18 36.5 C 8 36.5 3.5 35 3.5 30 L 3.5 8.5 C 3.5 5.5 4.5 3.5 7 3.5 Z' fill='%237a4628' stroke='none'/%3E%3CclipPath id='fbl'%3E%3Cpath d='M 7 3.5 L 29 3.5 C 31.5 3.5 32.5 5.5 32.5 8.5 L 32.5 30 C 32.5 35 28 36.5 18 36.5 C 8 36.5 3.5 35 3.5 30 L 3.5 8.5 C 3.5 5.5 4.5 3.5 7 3.5 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23fbl)'%3E%3Cpath d='M 4 22 L 32 22' fill='none' stroke='%23a0663e' stroke-width='1.4' stroke-dasharray='3 2'/%3E%3Crect x='0' y='0' width='36' height='17.5' rx='0' fill='%234a3226' stroke='none'/%3E%3Cpath d='M 0 17.5 L 36 17.5' fill='none' stroke='%231f1a21' stroke-width='2.6'/%3E%3C/g%3E%3Cpath d='M 7 3.5 L 29 3.5 C 31.5 3.5 32.5 5.5 32.5 8.5 L 32.5 30 C 32.5 35 28 36.5 18 36.5 C 8 36.5 3.5 35 3.5 30 L 3.5 8.5 C 3.5 5.5 4.5 3.5 7 3.5 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cellipse cx='18' cy='10.5' rx='2.2' ry='2.2' fill='%23e8b23a' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='17.34' cy='9.84' rx='0.77' ry='0.77' fill='%23ffe28a' stroke='none'/%3E%3C/g%3E%3C/svg%3E\\\"/><filter id=\\\"t0\\\" color-interpolation-filters=\\\"sRGB\\\"><feColorMatrix values=\\\"0.91 0 0 0 0 0 0.706 0 0 0 0 0 0.541 0 0 0 0 0 1 0\\\"/></filter><clipPath id=\\\"c0\\\"><path d=\\\"M280.6,250.7 280,263 261.9,250zM262.1,249.8 280.2,262.7 261.5,262.1zM263,249.9 262.3,262.3 244.2,249.3zM244.5,249 262.5,262 243.8,261.3zM245.3,249.2 244.6,261.5 226.6,248.5zM226.8,248.2 244.9,261.2 226.1,260.6zM227.6,248.4 227,260.8 208.9,247.8zM209.1,247.5 227.2,260.5 208.5,259.8zM280.2,262.2 279.5,274.6 261.4,261.6zM261.6,261.3 279.7,274.3 261,273.6zM262.5,261.5 261.8,273.8 243.7,260.8zM244,260.5 262,273.5 243.3,272.9zM244.8,260.7 244.2,273.1 226.1,260.1zM226.3,259.8 244.4,272.8 225.6,272.1zM227.2,260 226.5,272.3 208.4,259.3zM208.6,259 226.7,272 208,271.4zM279.7,273.8 279,286.1 260.9,273.1zM261.1,272.8 279.2,285.8 260.5,285.2zM262,273 261.3,285.3 243.2,272.4zM243.5,272.1 261.5,285.1 242.8,284.4zM244.3,272.3 243.7,284.6 225.6,271.6zM225.8,271.3 243.9,284.3 225.1,283.6zM226.7,271.5 226,283.8 207.9,270.8zM208.1,270.6 226.2,283.5 207.5,282.9zM279.2,285.3 278.5,297.6 260.4,284.6zM260.6,284.4 278.7,297.3 260,296.7zM261.5,284.5 260.8,296.9 242.8,283.9zM243,283.6 261.1,296.6 242.3,295.9zM243.8,283.8 243.2,296.1 225.1,283.1zM225.3,282.8 243.4,295.8 224.6,295.2zM226.2,283 225.5,295.4 207.4,282.4zM207.6,282.1 225.7,295.1 207,294.4zM278.7,296.8 278,309.2 259.9,296.2zM260.1,295.9 278.2,308.9 259.5,308.2zM261,296.1 260.3,308.4 242.3,295.4zM242.5,295.1 260.6,308.1 241.8,307.5zM243.3,295.3 242.7,307.7 224.6,294.7zM224.8,294.4 242.9,307.4 224.2,306.7zM225.7,294.6 225,306.9 206.9,293.9zM207.2,293.6 225.2,306.6 206.5,306zM260.5,307.6 259.8,319.9 241.8,307zM242,306.7 260.1,319.7 241.3,319zM242.8,306.9 242.2,319.2 224.1,306.2zM224.3,305.9 242.4,318.9 223.7,318.2zM225.2,306.1 224.5,318.4 206.4,305.4zM206.7,305.2 224.7,318.1 206,317.5z\\\"/></clipPath><clipPath id=\\\"c1\\\"><path d=\\\"M278.2,308.4 277.1,319.9 259.4,307.7z\\\"/></clipPath><clipPath id=\\\"c2\\\"><path d=\\\"M259.7,307.4 277.3,319.6 259,319.8z\\\"/></clipPath><clipPath id=\\\"c3\\\"><path d=\\\"M277.3,319.2 276.4,328.6 258.9,319.3z\\\"/></clipPath><clipPath id=\\\"c4\\\"><path d=\\\"M259.1,319 276.6,328.3 258.1,330z\\\"/></clipPath><clipPath id=\\\"c5\\\"><path d=\\\"M260,319.2 258.9,330.2 241.3,318.5z\\\"/></clipPath><clipPath id=\\\"c6\\\"><path d=\\\"M241.5,318.2 259.1,329.9 240.6,331z\\\"/></clipPath><clipPath id=\\\"c7\\\"><path d=\\\"M242.4,318.4 241.4,331.2 223.6,317.7zM223.8,317.4 241.7,330.9 223.1,330.5zM224.7,317.6 224,330.7 206,317z\\\"/></clipPath><clipPath id=\\\"c8\\\"><path d=\\\"M206.2,316.7 224.2,330.4 205.5,329z\\\"/></clipPath><clipPath id=\\\"c9\\\"><path d=\\\"M276.5,327.8 278,336.9 258,329.6z\\\"/></clipPath><clipPath id=\\\"c10\\\"><path d=\\\"M258.1,329.3 278.1,336.6 259.6,340.2z\\\"/></clipPath><clipPath id=\\\"c11\\\"><path d=\\\"M259,329.3 260.5,340.2 240.5,330.6z\\\"/></clipPath><clipPath id=\\\"c12\\\"><path d=\\\"M240.7,330.3 260.7,339.9 241.9,343.1z\\\"/></clipPath><clipPath id=\\\"c13\\\"><path d=\\\"M241.6,330.3 242.8,343.1 223.1,330z\\\"/></clipPath><clipPath id=\\\"c14\\\"><path d=\\\"M223.3,329.7 243,342.8 224.1,344.5z\\\"/></clipPath><clipPath id=\\\"c15\\\"><path d=\\\"M224.1,329.8 224.8,344.6 205.5,328.5z\\\"/></clipPath><clipPath id=\\\"c16\\\"><path d=\\\"M205.7,328.2 225.1,344.3 206.3,345.1z\\\"/></clipPath><clipPath id=\\\"c17\\\"><path d=\\\"M278,336.2 280.1,348.3 259.5,339.7zM259.7,339.4 280.2,348 261.8,351.5zM280,347.5 282.1,359.7 261.6,351zM261.8,350.7 282.3,359.4 263.8,362.9zM262.6,350.7 264.7,362.8 244.2,354.2zM244.4,353.8 264.9,362.5 246.4,366zM245.2,353.8 247.3,366 226.8,357.3zM227,357 247.5,365.7 229,369.2zM282.1,358.9 284.2,371.1 263.7,362.4zM263.8,362 284.3,370.7 265.9,374.2zM264.7,362 266.8,374.2 246.3,365.5zM246.4,365.2 266.9,373.9 248.5,377.4zM247.3,365.2 249.4,377.4 228.9,368.7zM229,368.3 249.5,377 231.1,380.5zM229.9,368.3 232,380.5 211.5,371.8zM211.6,371.5 232.1,380.2 213.7,383.7zM284.2,370.2 286.2,382.4 265.7,373.7zM265.9,373.4 286.4,382.1 267.9,385.6zM266.8,373.4 268.8,385.6 248.3,376.9zM248.5,376.5 269,385.2 250.6,388.7zM249.4,376.5 251.4,388.7 230.9,380zM231.1,379.7 251.6,388.4 233.2,391.9zM232,379.7 234,391.9 213.5,383.2zM213.7,382.9 234.2,391.5 215.8,395zM286.2,381.6 288.3,393.8 267.8,385.1zM267.9,384.8 288.4,393.4 270,396.9zM268.8,384.7 270.9,396.9 250.4,388.2zM250.5,387.9 271,396.6 252.6,400.1zM251.4,387.9 253.5,400.1 233,391.4zM233.1,391.1 253.6,399.8 235.2,403.2zM234,391.1 236.1,403.2 215.6,394.5zM215.7,394.2 236.2,402.9 217.8,406.4zM288.3,393 290.3,405.1 269.8,396.4zM270,396.1 290.5,404.8 272.1,408.3zM270.9,396.1 272.9,408.3 252.5,399.6zM252.6,399.3 273.1,408 254.7,411.4zM253.5,399.3 255.5,411.4 235.1,402.7zM235.2,402.4 255.7,411.1 237.3,414.6zM236.1,402.4 238.1,414.6 217.7,405.9zM217.8,405.6 238.3,414.3 219.9,417.7zM290.3,404.3 292.4,416.5 271.9,407.8zM272.1,407.5 292.6,416.2 274.1,419.6zM272.9,407.5 275,419.6 254.5,410.9zM254.7,410.6 275.2,419.3 256.7,422.8zM255.5,410.6 257.6,422.8 237.1,414.1zM237.3,413.8 257.8,422.5 239.3,426zM238.1,413.8 240.2,425.9 219.7,417.3zM219.9,416.9 240.4,425.6 221.9,429.1z\\\"/></clipPath><clipPath id=\\\"c18\\\"><path d=\\\"M260.5,339.4 262.7,351.5 241.8,342.6z\\\"/></clipPath><clipPath id=\\\"c19\\\"><path d=\\\"M241.9,342.3 262.8,351.2 244.4,354.7z\\\"/></clipPath><clipPath id=\\\"c20\\\"><path d=\\\"M242.8,342.3 245.2,354.6 223.9,343.9z\\\"/></clipPath><clipPath id=\\\"c21\\\"><path d=\\\"M224.1,343.6 245.4,354.3 227,357.8z\\\"/></clipPath><clipPath id=\\\"c22\\\"><path d=\\\"M224.9,343.6 227.8,357.8 206.2,344.5z\\\"/></clipPath><clipPath id=\\\"c23\\\"><path d=\\\"M206.4,344.3 228,357.5 209.6,361z\\\"/></clipPath><clipPath id=\\\"c24\\\"><path d=\\\"M227.9,357 229.9,369.1 209.4,360.4zM209.6,360.1 230.1,368.8 211.6,372.3z\\\"/></clipPath><clipPath id=\\\"c25\\\"><path d=\\\"M242.5,369.4 242.8,382.4 225,370.2zM225.2,369.9 243,382.1 225.5,382.9zM226,370 226.4,383 208.5,370.8zM208.8,370.5 226.6,382.7 209.1,383.5zM209.6,370.6 209.9,383.6 192.1,371.4zM192.3,371.1 210.1,383.3 192.6,384.1zM193.1,371.2 193.5,384.2 175.6,372zM175.9,371.7 193.7,383.9 176.2,384.7zM242.9,381.5 243.3,394.6 225.4,382.3zM225.7,382 243.5,394.3 226,395.1zM226.5,382.2 226.8,395.2 209,383zM209.2,382.7 227,394.9 209.6,395.7zM210,382.8 210.4,395.8 192.5,383.6zM192.8,383.3 210.6,395.5 193.1,396.3zM193.6,383.4 193.9,396.4 176.1,384.2zM176.3,383.9 194.1,396.1 176.6,396.9zM243.4,393.7 243.7,406.8 225.9,394.5zM226.1,394.2 243.9,406.5 226.5,407.3zM226.9,394.3 227.3,407.4 209.4,395.1zM209.7,394.8 227.5,407.1 210,407.9zM210.5,395 210.8,408 193,395.8zM193.2,395.5 211,407.7 193.6,408.5zM194,395.6 194.4,408.6 176.5,396.4zM176.8,396.1 194.6,408.3 177.1,409.1zM243.8,405.9 244.2,419 226.4,406.7zM226.6,406.4 244.4,418.7 226.9,419.5zM227.4,406.5 227.7,419.6 209.9,407.3zM210.1,407 228,419.3 210.5,420.1zM210.9,407.1 211.3,420.2 193.5,407.9zM193.7,407.6 211.5,419.9 194,420.7zM194.5,407.8 194.8,420.8 177,408.6zM177.2,408.3 195.1,420.5 177.6,421.3zM211.4,419.3 211.8,432.6 193.9,420.1zM194.1,419.8 212.1,432.3 194.6,432.6zM195,419.9 195.4,432.7 177.5,420.7z\\\"/></clipPath><clipPath id=\\\"c26\\\"><path d=\\\"M244.3,418.1 244.7,431.6 226.8,418.9zM227,418.6 244.9,431.3 227.4,432.1zM227.8,418.7 228.3,432.2 210.4,419.5zM210.6,419.2 228.5,431.9 211,432.5z\\\"/></clipPath><clipPath id=\\\"c27\\\"><path d=\\\"M177.7,420.5 195.6,432.5 178.2,432.6z\\\"/></clipPath><clipPath id=\\\"c28\\\"><path d=\\\"M244.8,430.7 244.6,445.5 227.3,431.5z\\\"/></clipPath><clipPath id=\\\"c29\\\"><path d=\\\"M227.6,431.2 244.9,445.2 227.3,445.3z\\\"/></clipPath><clipPath id=\\\"c30\\\"><path d=\\\"M228.4,431.3 228.1,445.5 210.9,431.9z\\\"/></clipPath><clipPath id=\\\"c31\\\"><path d=\\\"M211.2,431.6 228.4,445.2 210.8,445z\\\"/></clipPath><clipPath id=\\\"c32\\\"><path d=\\\"M212,431.8 211.6,445.2 194.5,432.1z\\\"/></clipPath><clipPath id=\\\"c33\\\"><path d=\\\"M194.7,431.8 211.9,444.9 194.3,444.5zM195.3,443.8 194.5,456.8 177.8,443.2zM178,442.9 194.8,456.5 177.3,455.9z\\\"/></clipPath><clipPath id=\\\"c34\\\"><path d=\\\"M195.6,431.9 195.1,444.7 178.1,432z\\\"/></clipPath><clipPath id=\\\"c35\\\"><path d=\\\"M178.3,431.7 195.4,444.4 177.8,443.8z\\\"/></clipPath><clipPath id=\\\"c36\\\"><path d=\\\"M244.8,444.6 243.8,459 227.3,444.7z\\\"/></clipPath><clipPath id=\\\"c37\\\"><path d=\\\"M227.5,444.4 244.1,458.7 226.6,458.1z\\\"/></clipPath><clipPath id=\\\"c38\\\"><path d=\\\"M228.3,444.6 227.4,458.2 210.8,444.5z\\\"/></clipPath><clipPath id=\\\"c39\\\"><path d=\\\"M211,444.2 227.7,458 210.2,457.3zM211.8,444.3 211,457.5 194.3,443.9zM194.5,443.7 211.2,457.2 193.7,456.6zM244,458.1 243.3,471.1 226.6,457.5zM226.8,457.2 243.6,470.8 226.1,470.2zM227.6,457.4 226.9,470.4 210.1,456.8zM210.3,456.5 227.1,470.1 209.6,469.5zM211.2,456.7 210.4,469.7 193.7,456.1zM193.9,455.8 210.7,469.4 193.2,468.8zM194.7,455.9 194,469 177.2,455.3zM177.5,455.1 194.2,468.7 176.7,468.1zM243.5,470.3 242.8,483.3 226,469.7zM226.3,469.4 243,483 225.5,482.4zM227.1,469.6 226.4,482.6 209.6,469zM209.8,468.7 226.6,482.3 209.1,481.7zM210.6,468.8 209.9,481.9 193.1,468.2zM193.4,468 210.2,481.6 192.7,481zM194.2,468.1 193.5,481.2 176.7,467.5zM176.9,467.2 193.7,480.9 176.2,480.3z\\\"/></clipPath><clipPath id=\\\"c40\\\"><path d=\\\"M243,482.5 242.3,495.5 225.5,481.8zM225.7,481.6 242.5,495.2 225,494.6zM226.5,481.7 225.8,494.8 209,481.1zM209.3,480.9 226.1,494.5 208.6,493.9zM210.1,481 209.4,494.1 192.6,480.4zM192.8,480.1 209.6,493.8 192.1,493.2zM193.6,480.3 192.9,493.3 176.2,479.7zM176.4,479.4 193.2,493.1 175.7,492.5zM242.5,494.6 241.7,507.7 225,494zM225.2,493.8 242,507.4 224.5,506.8zM226,493.9 225.3,507 208.5,493.3zM208.8,493 225.5,506.7 208,506.1zM209.6,493.2 208.9,506.2 192.1,492.6zM192.3,492.3 209.1,506 191.6,505.4zM193.1,492.5 192.4,505.5 175.6,491.9zM175.9,491.6 192.6,505.2 175.1,504.6z\\\"/></clipPath><clipPath id=\\\"c41\\\"><path d=\\\"M154.3,370 154.5,383.1 136.8,370.6zM137.1,370.3 154.7,382.8 137.2,383.3zM137.9,370.4 138,383.4 120.4,370.9zM120.6,370.6 138.2,383.1 120.7,383.7zM121.4,370.7 121.6,383.8 103.9,371.3zM104.2,371 121.8,383.5 104.3,384zM105,371.1 105.1,384.1 87.5,371.6zM87.7,371.3 105.3,383.8 87.8,384.4zM154.6,382.2 154.7,395.3 137.1,382.8zM137.3,382.5 155,395 137.5,395.5zM138.1,382.6 138.3,395.6 120.6,383.1zM120.9,382.8 138.5,395.3 121,395.9zM121.7,382.9 121.8,396 104.2,383.5zM104.4,383.2 122,395.7 104.5,396.2zM105.2,383.3 105.4,396.3 87.7,383.8zM88,383.5 105.6,396 88.1,396.6zM154.9,394.4 155,407.5 137.4,394.9zM137.6,394.7 155.2,407.2 137.7,407.7zM138.4,394.8 138.5,407.8 120.9,395.3zM121.1,395 138.8,407.5 121.3,408zM122,395.1 122.1,408.2 104.5,395.6zM104.7,395.3 122.3,407.9 104.8,408.4zM105.5,395.5 105.6,408.5 88,396zM88.2,395.7 105.8,408.2 88.3,408.7zM155.1,406.6 155.3,419.7 137.6,407.1zM137.8,406.8 155.5,419.4 138,419.9zM138.7,407 138.8,420 121.2,407.5zM121.4,407.2 139,419.7 121.5,420.2zM122.2,407.3 122.3,420.4 104.7,407.8zM104.9,407.5 122.6,420.1 105.1,420.6zM105.7,407.7 105.9,420.7 88.2,408.2zM88.5,407.9 106.1,420.4 88.6,420.9zM155.4,418.8 155.5,432.1 137.9,419.3zM138.1,419 155.8,431.8 138.3,432.3zM138.9,419.2 139.1,432.5 121.4,419.7zM121.6,419.4 139.3,432.2 121.8,432.6zM122.5,419.5 122.7,432.7 105,420zM105.2,419.7 122.9,432.4 105.4,432.6zM106,419.9 106.2,432.8 88.5,420.4z\\\"/></clipPath><clipPath id=\\\"c42\\\"><path d=\\\"M88.7,420.1 106.4,432.5 88.9,432.6z\\\"/></clipPath><clipPath id=\\\"c43\\\"><path d=\\\"M155.7,431.2 155.5,445.3 138.2,431.8zM138.4,431.5 155.8,445 138.2,445.1zM139.2,431.6 139,445.3 121.7,432z\\\"/></clipPath><clipPath id=\\\"c44\\\"><path d=\\\"M122,431.7 139.3,445 121.7,445zM122.8,431.8 122.5,445.1 105.3,432.1zM105.5,431.8 122.8,444.8 105.2,444.6zM106.4,431.9 106,444.8 88.9,432zM139.2,444.4 138.6,457.8 121.6,444.4zM121.9,444.1 138.8,457.5 121.3,457.2zM122.7,444.3 122.1,457.4 105.2,444.1z\\\"/></clipPath><clipPath id=\\\"c45\\\"><path d=\\\"M89.1,431.7 106.3,444.5 88.7,444.2z\\\"/></clipPath><clipPath id=\\\"c46\\\"><path d=\\\"M155.7,444.4 155,458.2 138.1,444.5z\\\"/></clipPath><clipPath id=\\\"c47\\\"><path d=\\\"M138.4,444.2 155.3,457.9 137.8,457.6zM105.4,443.8 122.4,457.1 104.9,456.8zM106.2,444 105.7,457 88.7,443.7zM88.9,443.4 105.9,456.7 88.4,456.4zM155.2,457.4 154.8,470.4 137.7,457.1zM138,456.8 155,470.1 137.5,469.8zM138.8,456.9 138.3,470 121.3,456.6zM121.5,456.4 138.5,469.7 121,469.4zM122.3,456.5 121.8,469.6 104.8,456.2zM105,456 122.1,469.3 104.6,469zM105.9,456.1 105.4,469.2 88.4,455.8zM88.6,455.5 105.6,468.9 88.1,468.6z\\\"/></clipPath><clipPath id=\\\"c48\\\"><path d=\\\"M154.9,469.5 154.4,482.6 137.4,469.3zM137.7,469 154.7,482.3 137.2,482zM138.5,469.1 138,482.2 121,468.8zM121.2,468.6 138.2,481.9 120.7,481.6zM122,468.7 121.5,481.8 104.5,468.4zM104.7,468.1 121.8,481.5 104.3,481.2zM105.6,468.3 105.1,481.3 88,468zM88.3,467.7 105.3,481.1 87.8,480.8zM154.6,481.7 154.1,494.8 137.1,481.4zM137.3,481.2 154.4,494.5 136.9,494.2zM138.2,481.3 137.7,494.4 120.7,481zM120.9,480.7 137.9,494.1 120.4,493.8zM121.7,480.9 121.2,493.9 104.2,480.6zM104.4,480.3 121.5,493.7 104,493.4zM105.2,480.5 104.8,493.5 87.7,480.2zM88,479.9 105,493.2 87.5,493zM154.3,493.9 153.8,507 136.8,493.6zM137,493.3 154.1,506.7 136.6,506.4zM137.9,493.5 137.4,506.6 120.3,493.2zM120.6,492.9 137.6,506.3 120.1,506zM121.4,493.1 120.9,506.1 103.9,492.8zM104.1,492.5 121.2,505.9 103.6,505.6zM104.9,492.7 104.5,505.7 87.4,492.4zM87.7,492.1 104.7,505.4 87.2,505.1z\\\"/></clipPath><clipPath id=\\\"c49\\\"><path d=\\\"M263.8,347.2 263.7,359.4 244.3,347.4zM244.5,347.1 263.9,359.1 244.3,359.2zM245.4,347.2 245.2,359.4 225.8,347.4zM226,347.1 245.4,359.1 225.9,359.2zM226.9,347.2 226.8,359.4 207.4,347.4zM207.6,347.1 227,359.1 207.5,359.2zM208.5,347.2 208.4,359.4 189,347.4zM189.2,347.1 208.5,359.1 189,359.2zM190,347.2 189.9,359.4 170.5,347.4zM170.7,347.1 190.1,359.1 170.6,359.2zM171.6,347.2 171.5,359.4 152.1,347.4zM152.3,347.1 171.7,359.1 152.2,359.2zM153.2,347.2 153,359.4 133.7,347.4zM133.9,347.1 153.2,359.1 133.7,359.2zM134.7,347.2 134.6,359.4 115.2,347.4zM115.4,347.1 134.8,359.1 115.3,359.2zM116.3,347.2 116.2,359.4 96.8,347.4zM97,347.1 116.4,359.1 96.9,359.2zM97.9,347.2 97.7,359.4 78.4,347.4zM78.6,347.1 97.9,359.1 78.4,359.2zM79.4,347.2 79.3,359.4 59.9,347.4zM60.1,347.1 79.5,359.1 60,359.2zM263.8,358.6 263.7,370.8 244.3,358.8zM244.5,358.5 263.9,370.5 244.3,370.6zM245.4,358.6 245.2,370.8 225.8,358.8zM226,358.5 245.4,370.5 225.9,370.6zM226.9,358.6 226.8,370.8 207.4,358.8zM207.6,358.5 227,370.5 207.5,370.6zM208.5,358.6 208.4,370.8 189,358.8zM189.2,358.5 208.5,370.5 189,370.6zM190,358.6 189.9,370.8 170.5,358.8zM170.7,358.5 190.1,370.5 170.6,370.6zM171.6,358.6 171.5,370.8 152.1,358.8zM152.3,358.5 171.7,370.5 152.2,370.6zM153.2,358.6 153,370.8 133.7,358.8zM133.9,358.5 153.2,370.5 133.7,370.6zM134.7,358.6 134.6,370.8 115.2,358.8zM115.4,358.5 134.8,370.5 115.3,370.6zM116.3,358.6 116.2,370.8 96.8,358.8zM97,358.5 116.4,370.5 96.9,370.6zM97.9,358.6 97.7,370.8 78.4,358.8zM78.6,358.5 97.9,370.5 78.4,370.6zM79.4,358.6 79.3,370.8 59.9,358.8zM60.1,358.5 79.5,370.5 60,370.6zM263.8,370 263.7,382.2 244.3,370.1zM244.5,369.9 263.9,381.9 244.3,382zM245.4,370 245.2,382.2 225.8,370.1zM226,369.9 245.4,381.9 225.9,382zM226.9,370 226.8,382.2 207.4,370.1zM207.6,369.9 227,381.9 207.5,382zM208.5,370 208.4,382.2 189,370.1zM189.2,369.9 208.5,381.9 189,382zM190,370 189.9,382.2 170.5,370.1zM170.7,369.9 190.1,381.9 170.6,382zM171.6,370 171.5,382.2 152.1,370.1zM152.3,369.9 171.7,381.9 152.2,382zM153.2,370 153,382.2 133.7,370.1zM133.9,369.9 153.2,381.9 133.7,382zM134.7,370 134.6,382.2 115.2,370.1zM115.4,369.9 134.8,381.9 115.3,382zM116.3,370 116.2,382.2 96.8,370.1zM97,369.9 116.4,381.9 96.9,382zM97.9,370 97.7,382.2 78.4,370.1zM78.6,369.9 97.9,381.9 78.4,382zM79.4,370 79.3,382.2 59.9,370.1zM60.1,369.9 79.5,381.9 60,382zM226.9,381.4 226.9,393.4 207.4,381.5zM207.6,381.3 227.1,393.1 207.5,393.4zM208.5,381.4 208.4,393.5 189,381.5zM189.2,381.3 208.6,393.3 189.1,393.6zM190,381.4 190,393.7 170.5,381.5zM170.7,381.2 190.2,393.4 170.7,393.8zM171.6,381.4 171.6,393.9 152.1,381.5zM152.3,381.3 171.8,393.6 152.2,393.2zM153.2,381.4 153.1,393.4 133.7,381.5zM133.9,381.3 153.3,393.1 133.8,393.3zM134.7,381.4 134.7,393.5 115.2,381.5zM115.4,381.3 134.9,393.2 115.3,393.4zM116.3,381.4 116.2,393.6 96.8,381.5zM97,381.3 116.4,393.3 96.9,393.5zM97.9,381.4 97.8,393.7 78.4,381.5zM78.6,381.3 98,393.4 78.5,393.7zM79.4,381.4 79.4,393.8 59.9,381.5zM60.1,381.2 79.6,393.5 60,393.8zM134.8,392.7 134.9,404.7 115.3,392.9zM115.5,392.7 135.1,404.4 115.6,404.8zM116.4,392.8 116.5,405 96.8,393.1zM97,392.8 116.6,404.7 97.1,405.1zM97.9,392.9 98,405.2 78.4,393.2z\\\"/></clipPath><clipPath id=\\\"c50\\\"><path d=\\\"M263.8,381.4 263.7,393 244.3,381.5zM244.5,381.3 263.9,392.7 244.4,393zM245.4,381.4 245.3,393.2 225.8,381.5zM226,381.3 245.5,392.9 226,393.2zM245.4,392.4 245.7,404 225.9,392.7z\\\"/></clipPath><clipPath id=\\\"c51\\\"><path d=\\\"M263.9,392.2 264.1,403.5 244.3,392.6zM244.5,392.3 264.3,403.2 244.8,403.8zM264.2,402.7 264.8,414.1 244.7,403.4z\\\"/></clipPath><clipPath id=\\\"c52\\\"><path d=\\\"M226.1,392.4 245.9,403.7 226.4,404.3zM227,392.6 227.3,404.4 207.5,392.9zM207.7,392.6 227.5,404.1 207.9,404.8zM245.8,403.2 246.4,414.8 226.3,403.8zM226.5,403.5 246.5,414.5 227,415.4zM227.4,403.6 227.9,415.5 207.9,404.3zM208,404 228.1,415.2 208.6,416.1zM208.9,404.1 209.5,416.2 189.4,404.7zM245.6,413.9 265.4,425.2 245.9,426.1zM246.5,414.1 246.8,426.2 227,414.9zM265.3,424.8 265.6,436.9 245.8,425.6z\\\"/></clipPath><clipPath id=\\\"c53\\\"><path d=\\\"M208.6,392.8 208.8,404.9 189,393.1zM189.2,392.8 209,404.6 189.5,405.2zM190.1,392.9 190.4,405.3 170.6,393.3z\\\"/></clipPath><clipPath id=\\\"c54\\\"><path d=\\\"M170.8,393 190.6,405 171.1,405.7z\\\"/></clipPath><clipPath id=\\\"c55\\\"><path d=\\\"M171.7,393.1 172,405.8 152.1,392.7z\\\"/></clipPath><clipPath id=\\\"c56\\\"><path d=\\\"M152.3,392.4 172.2,405.5 152.4,404.3z\\\"/></clipPath><clipPath id=\\\"c57\\\"><path d=\\\"M153.2,392.6 153.3,404.5 133.7,392.8zM133.9,392.6 153.5,404.2 134,404.6zM153.4,403.7 153.7,415.6 133.9,404.1zM134.1,403.8 153.9,415.3 134.4,415.9zM135,403.9 135.3,416 115.5,404.4zM153.8,414.8 153.9,427 134.3,415.4z\\\"/></clipPath><clipPath id=\\\"c58\\\"><path d=\\\"M78.6,392.9 98.2,405 78.7,405.4zM79.5,393 79.6,405.5 60,393.3zM60.2,393 79.8,405.2 60.3,405.6zM116.6,404.2 116.8,416.4 97.1,404.6zM97.3,404.3 117,416.1 97.5,416.6zM98.1,404.5 98.4,416.8 78.6,404.9zM78.8,404.6 98.6,416.5 79.1,417zM79.7,404.7 80,417.2 60.2,405.1zM60.4,404.8 80.2,416.9 60.7,417.4zM80.1,416.4 80.2,428.6 60.6,416.9zM60.8,416.6 80.4,428.3 60.9,428.8z\\\"/></clipPath><clipPath id=\\\"c59\\\"><path d=\\\"M244.9,403.1 265,413.9 245.5,414.7z\\\"/></clipPath><clipPath id=\\\"c60\\\"><path d=\\\"M189.6,404.4 209.7,415.9 190.2,416.8zM190.5,404.5 191.1,416.9 171,405.2zM171.2,404.9 191.3,416.6 171.8,417.5zM264.9,413.4 265.2,425.5 245.4,414.2zM227.1,414.6 247,425.9 227.5,426.8zM228,414.7 228.4,426.9 208.5,415.6zM208.7,415.3 228.5,426.6 209,427.5zM209.6,415.4 209.9,427.6 190.1,416.3zM190.3,416 210.1,427.3 190.6,428.2zM191.2,416.1 191.5,428.3 171.7,417zM171.9,416.7 191.7,428 172.2,428.9z\\\"/></clipPath><clipPath id=\\\"c61\\\"><path d=\\\"M172.1,405 172.6,417.6 152.4,403.8z\\\"/></clipPath><clipPath id=\\\"c62\\\"><path d=\\\"M152.6,403.5 172.8,417.4 152.8,415.4zM172.8,416.9 173.1,429 152.8,414.9zM152.9,414.7 173.3,428.8 153,426.8z\\\"/></clipPath><clipPath id=\\\"c63\\\"><path d=\\\"M115.7,404.1 135.5,415.7 115.9,416.2zM134.5,415.1 154.1,426.7 134.6,427.2zM135.4,415.2 135.5,427.4 115.9,415.8zM116.1,415.5 135.7,427.1 116.2,427.6zM117,415.6 117.1,427.8 97.4,416.1zM97.6,415.9 117.3,427.5 97.8,428zM98.5,416 98.6,428.2 79,416.5zM79.2,416.2 98.8,427.9 79.3,428.4zM154.1,426.2 154.2,438.4 134.5,426.8zM134.7,426.5 154.4,438.1 134.9,438.6zM135.6,426.6 135.8,438.8 116.1,427.1zM116.3,426.9 135.9,438.5 116.4,439zM117.2,427 117.3,439.2 97.7,427.5zM97.9,427.2 117.5,438.9 98,439.4zM98.8,427.4 98.9,439.6 79.3,427.9zM79.4,427.6 99.1,439.3 79.6,439.8zM80.3,427.8 80.5,439.9 60.8,428.3zM61,428 80.6,439.6 61.1,440.2z\\\"/></clipPath><clipPath id=\\\"c64\\\"><path d=\\\"M246,425.3 265.8,436.6 246.3,437.5zM246.9,425.4 247.2,437.6 227.4,426.3zM227.6,426 247.4,437.3 227.9,438.2zM228.5,426.1 228.8,438.3 209,427zM209.1,426.7 229,438 209.5,438.9zM210,426.8 210.4,439 190.5,427.7zM190.7,427.4 210.5,438.7 191.1,439.6zM191.6,427.5 191.9,439.7 172.1,428.4zM172.3,428.1 192.1,439.4 172.6,440.3z\\\"/></clipPath><clipPath id=\\\"c65\\\"><path d=\\\"M173.2,428.3 173.5,440.4 153,426.3zM153.2,426.1 173.7,440.1 153.3,438.2z\\\"/></clipPath><filter id=\\\"t1\\\" color-interpolation-filters=\\\"sRGB\\\"><feColorMatrix values=\\\"0.659 0 0 0 0 0 0.455 0 0 0 0 0 0.165 0 0 0 0 0 1 0\\\"/></filter><filter id=\\\"t2\\\" color-interpolation-filters=\\\"sRGB\\\"><feColorMatrix values=\\\"0.91 0 0 0 0 0 0.753 0 0 0 0 0 0.376 0 0 0 0 0 1 0\\\"/></filter><clipPath id=\\\"c66\\\"><path d=\\\"M97.3,253.2 95.2,265.5 77.7,250.3zM77.9,250 95.5,265.2 75.9,262.3zM78.8,250.3 76.7,262.6 59.2,247.4zM59.5,247.1 77,262.4 57.4,259.4zM60.3,247.4 58.3,259.7 40.7,244.5zM41,244.3 58.5,259.5 38.9,256.6zM95.5,264.7 93.4,277 75.9,261.8zM76.1,261.6 93.7,276.8 74.1,273.9zM77,261.9 74.9,274.2 57.4,258.9zM57.7,258.7 75.2,273.9 55.6,271zM58.5,259 56.5,271.3 38.9,256.1zM39.2,255.8 56.7,271 37.1,268.1zM93.7,276.3 91.6,288.6 74.1,273.4zM74.3,273.1 91.9,288.4 72.3,285.5zM75.2,273.4 73.1,285.7 55.6,270.5zM55.9,270.3 73.4,285.5 53.8,282.6zM56.7,270.5 54.7,282.9 37.1,267.6zM37.4,267.4 54.9,282.6 35.3,279.7zM91.9,287.9 89.8,300.2 72.3,285zM72.5,284.7 90.1,299.9 70.5,297zM73.4,285 71.3,297.3 53.8,282.1zM54.1,281.8 71.6,297.1 52,294.2zM54.9,282.1 52.9,294.4 35.4,279.2zM35.6,279 53.1,294.2 33.5,291.3zM90.1,299.4 88,311.7 70.5,296.5zM70.7,296.3 88.3,311.5 68.7,308.6zM71.6,296.6 69.5,308.9 52,293.7zM52.3,293.4 69.8,308.6 50.2,305.7zM53.1,293.7 51.1,306 33.6,290.8zM33.8,290.5 51.3,305.7 31.7,302.8zM88.3,311 86.2,323.3 68.7,308.1zM68.9,307.8 86.5,323.1 66.9,320.2zM69.8,308.1 67.7,320.4 50.2,305.2zM50.5,305 68,320.2 48.4,317.3zM51.3,305.2 49.3,317.6 31.8,302.3zM32,302.1 49.5,317.3 29.9,314.4z\\\"/></clipPath><clipPath id=\\\"c67\\\"><path d=\\\"M86.5,322.7 84.2,330.4 66.9,319.7z\\\"/></clipPath><clipPath id=\\\"c68\\\"><path d=\\\"M67.1,319.4 84.4,330.1 64.9,330.8z\\\"/></clipPath><clipPath id=\\\"c69\\\"><path d=\\\"M68,319.7 65.8,331 48.4,316.8z\\\"/></clipPath><clipPath id=\\\"c70\\\"><path d=\\\"M48.7,316.5 66,330.7 46.6,331.2z\\\"/></clipPath><clipPath id=\\\"c71\\\"><path d=\\\"M49.5,316.8 47.3,331.4 30,313.9z\\\"/></clipPath><clipPath id=\\\"c72\\\"><path d=\\\"M30.3,313.6 47.6,331.1 28.2,331.9z\\\"/></clipPath><clipPath id=\\\"c73\\\"><path d=\\\"M84.4,329.7 86.5,337.3 64.9,330.4z\\\"/></clipPath><clipPath id=\\\"c74\\\"><path d=\\\"M65,330.1 86.5,337.1 67.2,341.3z\\\"/></clipPath><clipPath id=\\\"c75\\\"><path d=\\\"M65.9,330.1 68.1,341.3 46.5,330.8z\\\"/></clipPath><clipPath id=\\\"c76\\\"><path d=\\\"M46.6,330.5 68.2,341 48.8,345z\\\"/></clipPath><clipPath id=\\\"c77\\\"><path d=\\\"M47.5,330.5 49.6,345 28.1,331.3z\\\"/></clipPath><clipPath id=\\\"c78\\\"><path d=\\\"M28.3,331 49.8,344.7 30.4,348.2z\\\"/></clipPath><clipPath id=\\\"c79\\\"><path d=\\\"M86.4,336.6 88.8,348.9 67,340.9zM67.1,340.6 89,348.5 69.7,352.8zM68,340.5 70.5,352.7 48.6,344.5zM48.7,344.2 70.7,352.4 51.4,356.6zM88.8,348.1 91.3,360.3 69.5,352.3zM69.6,352 91.4,360 72.1,364.2zM70.5,351.9 73,364.2 51.2,356.2zM51.3,355.8 73.1,363.9 53.8,368.1zM52.2,355.8 54.7,368.1 32.9,360zM33,359.7 54.8,367.7 35.5,372zM91.2,359.5 93.7,371.8 71.9,363.7zM72,363.4 93.8,371.4 74.5,375.7zM72.9,363.4 75.4,375.6 53.6,367.6zM53.8,367.3 75.5,375.3 56.2,379.5zM54.6,367.3 57.1,379.5 35.3,371.5zM35.5,371.2 57.2,379.2 37.9,383.4zM93.7,371 96.1,383.2 74.3,375.2zM74.5,374.9 96.2,382.9 76.9,387.1zM75.4,374.8 77.8,387.1 56,379.1zM56.2,378.7 78,386.8 58.6,391zM57.1,378.7 59.5,391 37.7,382.9zM37.9,382.6 59.7,390.6 40.3,394.9zM96.1,382.4 98.5,394.7 76.8,386.7zM76.9,386.3 98.7,394.4 79.3,398.6zM77.8,386.3 80.2,398.5 58.5,390.5zM58.6,390.2 80.4,398.2 61.1,402.5zM59.5,390.2 62,402.4 40.2,394.4zM40.3,394.1 62.1,402.1 42.8,406.3zM98.5,393.9 101,406.1 79.2,398.1zM79.3,397.8 101.1,405.8 81.8,410zM80.2,397.7 82.7,410 60.9,402zM61,401.7 82.8,409.7 63.5,413.9zM61.9,401.6 64.4,413.9 42.6,405.8zM42.7,405.5 64.5,413.5 45.2,417.8zM100.9,405.3 103.4,417.6 81.6,409.6zM81.7,409.2 103.5,417.3 84.2,421.5zM82.6,409.2 85.1,421.5 63.3,413.4zM63.4,413.1 85.2,421.1 65.9,425.4zM64.3,413.1 66.8,425.3 45,417.3zM45.2,417 66.9,425 47.6,429.2z\\\"/></clipPath><clipPath id=\\\"c80\\\"><path d=\\\"M49.6,344.2 52.3,356.6 30.2,347.7z\\\"/></clipPath><clipPath id=\\\"c81\\\"><path d=\\\"M30.3,347.4 52.4,356.3 33.1,360.5z\\\"/></clipPath></defs><g filter=\\\"url(#t0)\\\"><g clip-path=\\\"url(#c0)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.437 -0.104 -0.104 2.424 280.1 251)\\\"/></g><g clip-path=\\\"url(#c1)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.437 -0.104 -0.197 2.265 282.3 255.1)\\\"/></g><g clip-path=\\\"url(#c2)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.376 0 -0.105 2.424 279.7 250.6)\\\"/></g><g clip-path=\\\"url(#c3)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.376 0 -0.147 1.831 280.9 267.5)\\\"/></g><g clip-path=\\\"url(#c4)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.41 0.211 -0.199 2.152 282.6 256.8)\\\"/></g><g clip-path=\\\"url(#c5)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.436 -0.104 -0.199 2.152 282.8 259.1)\\\"/></g><g clip-path=\\\"url(#c6)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.406 0.138 -0.152 2.521 281 245.1)\\\"/></g><g clip-path=\\\"url(#c7)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.437 -0.104 -0.152 2.521 281.5 248.6)\\\"/></g><g clip-path=\\\"url(#c8)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.429 -0.2 -0.104 2.43 279.9 254)\\\"/></g><g clip-path=\\\"url(#c9)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.41 0.211 0.325 1.796 265.3 268.6)\\\"/></g><g clip-path=\\\"url(#c10)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.407 0.447 0.33 2.161 265.1 254.8)\\\"/></g><g clip-path=\\\"url(#c11)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.406 0.138 0.33 2.161 265.1 257)\\\"/></g><g clip-path=\\\"url(#c12)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.444 0.393 0.271 2.555 267.6 240.3)\\\"/></g><g clip-path=\\\"url(#c13)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.412 -0.068 0.271 2.555 267.1 247)\\\"/></g><g clip-path=\\\"url(#c14)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.466 0.193 0.187 2.958 271 227.9)\\\"/></g><g clip-path=\\\"url(#c15)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.429 -0.2 0.187 2.958 270.3 236.4)\\\"/></g><g clip-path=\\\"url(#c16)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.45 0.092 0.155 3.41 271.9 213)\\\"/></g><g clip-path=\\\"url(#c17)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.407 0.447 0.433 2.388 261.2 246.2)\\\"/></g><g clip-path=\\\"url(#c18)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.444 0.393 0.443 2.37 261 247.3)\\\"/></g><g clip-path=\\\"url(#c19)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.4 0.435 0.511 2.434 257.9 244.3)\\\"/></g><g clip-path=\\\"url(#c20)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.466 0.193 0.511 2.434 258.8 247.8)\\\"/></g><g clip-path=\\\"url(#c21)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.4 0.435 0.611 2.802 253.6 228.6)\\\"/></g><g clip-path=\\\"url(#c22)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.45 0.092 0.611 2.802 254.7 236)\\\"/></g><g clip-path=\\\"url(#c23)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.402 0.431 0.685 3.319 250.5 206.6)\\\"/></g><g clip-path=\\\"url(#c24)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.402 0.431 0.433 2.388 261.2 246.3)\\\"/></g></g><g><use href=\\\"#i1\\\" transform=\\\"matrix(-2.437 -0.104 -0.104 2.437 287.6 248.9)\\\"/></g><g><use href=\\\"#i2\\\" transform=\\\"matrix(-2.4 0.435 0.435 2.4 287.9 325.1)\\\"/></g><g><use href=\\\"#i3\\\" transform=\\\"matrix(-0.631 -2.356 -2.356 0.631 394.7 409.3)\\\"/></g><g filter=\\\"url(#t0)\\\"><g clip-path=\\\"url(#c25)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.437 0.091 0.091 2.435 242 369.7)\\\"/></g><g clip-path=\\\"url(#c26)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.437 0.091 0.099 2.521 241.8 368)\\\"/></g><g clip-path=\\\"url(#c27)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.434 -0.007 0.123 2.256 241.3 375.9)\\\"/></g><g clip-path=\\\"url(#c28)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.433 0.095 -0.001 2.813 244.4 360.7)\\\"/></g><g clip-path=\\\"url(#c29)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.445 -0.007 -0.019 2.674 244.9 364.9)\\\"/></g><g clip-path=\\\"url(#c30)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.432 0.059 -0.019 2.674 244.8 364.4)\\\"/></g><g clip-path=\\\"url(#c31)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.446 -0.042 -0.037 2.537 245.4 369.2)\\\"/></g><g clip-path=\\\"url(#c32)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.433 0.021 -0.037 2.537 245.3 368.3)\\\"/></g><g clip-path=\\\"url(#c33)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.445 -0.077 -0.053 2.403 245.9 373.7)\\\"/></g><g clip-path=\\\"url(#c34)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.434 -0.007 -0.053 2.403 245.7 372.3)\\\"/></g><g clip-path=\\\"url(#c35)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.443 -0.104 -0.066 2.27 246.2 378.2)\\\"/></g><g clip-path=\\\"url(#c36)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.445 -0.007 -0.154 2.682 248.9 364.6)\\\"/></g><g clip-path=\\\"url(#c37)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.436 -0.106 -0.142 2.549 248.5 369.3)\\\"/></g><g clip-path=\\\"url(#c38)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.446 -0.042 -0.142 2.549 248.6 368.9)\\\"/></g><g clip-path=\\\"url(#c39)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.436 -0.106 -0.13 2.461 248.1 372.3)\\\"/></g><g clip-path=\\\"url(#c40)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.436 -0.106 -0.106 2.434 247.3 373.3)\\\"/></g></g><g><use href=\\\"#i5\\\" transform=\\\"matrix(-2.436 -0.106 -0.105 2.431 243.6 438.9)\\\"/></g><g filter=\\\"url(#t0)\\\"><g clip-path=\\\"url(#c41)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.438 0.052 0.052 2.436 153.9 370.4)\\\"/></g><g clip-path=\\\"url(#c42)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.437 -0.006 0.07 2.331 153.5 374.1)\\\"/></g><g clip-path=\\\"url(#c43)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.436 0.057 0 2.661 155.2 365)\\\"/></g><g clip-path=\\\"url(#c44)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.444 -0.023 -0.022 2.505 155.9 369.8)\\\"/></g><g clip-path=\\\"url(#c45)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.442 -0.062 -0.04 2.352 156.4 375)\\\"/></g><g clip-path=\\\"url(#c46)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.443 -0.001 -0.091 2.585 157.9 367.3)\\\"/></g><g clip-path=\\\"url(#c47)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.438 -0.061 -0.083 2.504 157.6 370.1)\\\"/></g><g clip-path=\\\"url(#c48)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.438 -0.061 -0.061 2.435 156.9 372.5)\\\"/></g></g><g><use href=\\\"#i6\\\" transform=\\\"matrix(-2.438 -0.061 -0.061 2.433 153.4 438.1)\\\"/></g><g><g clip-path=\\\"url(#c49)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.471 0 0 2.463 263.3 347.5)\\\"/></g><g clip-path=\\\"url(#c50)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.471 0 0.015 2.337 263.1 349.3)\\\"/></g><g clip-path=\\\"url(#c51)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.47 0.025 0.082 2.278 261.8 350.4)\\\"/></g><g clip-path=\\\"url(#c52)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.469 0.061 0.084 2.395 261.8 347.7)\\\"/></g><g clip-path=\\\"url(#c53)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.47 0.025 0.085 2.453 261.8 347.1)\\\"/></g><g clip-path=\\\"url(#c54)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.469 0.061 0.087 2.569 261.7 343.6)\\\"/></g><g clip-path=\\\"url(#c55)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.504 -0.073 0.087 2.569 263 348.7)\\\"/></g><g clip-path=\\\"url(#c56)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.528 -0.18 0.048 2.4 264.8 356.5)\\\"/></g><g clip-path=\\\"url(#c57)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.47 0.014 0.048 2.4 262.2 347.9)\\\"/></g><g clip-path=\\\"url(#c58)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.47 0.034 0.049 2.532 262.2 343.9)\\\"/></g><g clip-path=\\\"url(#c59)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.469 0.092 0.143 2.351 260.4 348.5)\\\"/></g><g clip-path=\\\"url(#c60)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.469 0.092 0.146 2.504 260.3 344.2)\\\"/></g><g clip-path=\\\"url(#c61)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.528 -0.18 0.147 2.555 262.5 352.9)\\\"/></g><g clip-path=\\\"url(#c62)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.569 -0.272 0.082 2.407 265.9 360.5)\\\"/></g><g clip-path=\\\"url(#c63)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.47 0.052 0.083 2.465 261.4 344.4)\\\"/></g><g clip-path=\\\"url(#c64)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.469 0.092 0.092 2.462 261.8 345.4)\\\"/></g><g clip-path=\\\"url(#c65)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.594 -0.271 0.092 2.462 266.5 359)\\\"/></g></g><g filter=\\\"url(#t0)\\\"><use href=\\\"#i8\\\" transform=\\\"matrix(-2.439 0 0 2.439 247.4 222.3)\\\"/></g><g><use href=\\\"#i9\\\" transform=\\\"matrix(-2.439 0 0 2.439 264.5 222.3)\\\"/></g><g filter=\\\"url(#t0)\\\"><use href=\\\"#i10\\\" transform=\\\"matrix(-2.439 0.008 0.008 2.439 268.7 48.8)\\\"/></g><g><use href=\\\"#i11\\\" transform=\\\"matrix(-2.439 0.008 0.008 2.439 215.6 205.1)\\\"/></g><g><use href=\\\"#i12\\\" transform=\\\"matrix(-2.439 0.008 0.008 2.439 256.9 161.1)\\\"/></g><g filter=\\\"url(#t1)\\\"><use href=\\\"#i13\\\" transform=\\\"matrix(-2.439 0.008 0.008 2.439 242.2 139.2)\\\"/></g><g filter=\\\"url(#t2)\\\"><use href=\\\"#i14\\\" transform=\\\"matrix(-2.439 0.008 0.008 2.439 290.7 51.2)\\\"/></g><g><use href=\\\"#i15\\\" transform=\\\"matrix(-2.439 0.008 0.008 2.439 285.7 0)\\\"/></g><g filter=\\\"url(#t0)\\\"><g clip-path=\\\"url(#c66)\\\"><use href=\\\"#i16\\\" transform=\\\"matrix(-2.412 -0.375 -0.373 2.398 96.7 253.4)\\\"/></g><g clip-path=\\\"url(#c67)\\\"><use href=\\\"#i16\\\" transform=\\\"matrix(-2.412 -0.375 -0.434 1.489 98.4 279.9)\\\"/></g><g clip-path=\\\"url(#c68)\\\"><use href=\\\"#i16\\\" transform=\\\"matrix(-2.4 0.065 -0.415 2.188 97.8 256.4)\\\"/></g><g clip-path=\\\"url(#c69)\\\"><use href=\\\"#i16\\\" transform=\\\"matrix(-2.405 -0.374 -0.415 2.188 97.8 259.8)\\\"/></g><g clip-path=\\\"url(#c70)\\\"><use href=\\\"#i16\\\" transform=\\\"matrix(-2.393 0.054 -0.396 2.871 97.1 233.5)\\\"/></g><g clip-path=\\\"url(#c71)\\\"><use href=\\\"#i16\\\" transform=\\\"matrix(-2.412 -0.375 -0.396 2.871 97.4 240.1)\\\"/></g><g clip-path=\\\"url(#c72)\\\"><use href=\\\"#i16\\\" transform=\\\"matrix(-2.401 0.074 -0.377 3.584 96.6 209.2)\\\"/></g><g clip-path=\\\"url(#c73)\\\"><use href=\\\"#i16\\\" transform=\\\"matrix(-2.4 0.065 0.447 1.485 68.8 280)\\\"/></g><g clip-path=\\\"url(#c74)\\\"><use href=\\\"#i16\\\" transform=\\\"matrix(-2.395 0.508 0.456 2.199 68.5 252.6)\\\"/></g><g clip-path=\\\"url(#c75)\\\"><use href=\\\"#i16\\\" transform=\\\"matrix(-2.393 0.054 0.456 2.199 68.5 256.1)\\\"/></g><g clip-path=\\\"url(#c76)\\\"><use href=\\\"#i16\\\" transform=\\\"matrix(-2.395 0.476 0.452 2.881 68.6 226.7)\\\"/></g><g clip-path=\\\"url(#c77)\\\"><use href=\\\"#i16\\\" transform=\\\"matrix(-2.401 0.074 0.452 2.881 68.7 232.9)\\\"/></g><g clip-path=\\\"url(#c78)\\\"><use href=\\\"#i16\\\" transform=\\\"matrix(-2.409 0.416 0.438 3.431 69.4 206.6)\\\"/></g><g clip-path=\\\"url(#c79)\\\"><use href=\\\"#i16\\\" transform=\\\"matrix(-2.395 0.508 0.503 2.373 66.6 246)\\\"/></g><g clip-path=\\\"url(#c80)\\\"><use href=\\\"#i16\\\" transform=\\\"matrix(-2.409 0.416 0.536 2.412 65.6 245.7)\\\"/></g><g clip-path=\\\"url(#c81)\\\"><use href=\\\"#i16\\\" transform=\\\"matrix(-2.388 0.506 0.569 2.555 63.9 238.1)\\\"/></g></g><g><use href=\\\"#i17\\\" transform=\\\"matrix(-2.41 -0.375 -0.375 2.41 101.9 251.7)\\\"/></g><g><use href=\\\"#i18\\\" transform=\\\"matrix(-2.386 0.505 0.505 2.386 98.1 323.5)\\\"/></g></svg>\";\n"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"path": "components/figures/knight.ts",
|
|
78
|
+
"content": "// GENERATED by scripts/render-hero-figures.ts from idle-rpg's character system — do not edit.\n// The idle-rpg Warrior in its class look, still (the first frame of its idle), facing right.\n/** Where the body stands across the picture, 0..1 (its weapon and shield make it lopsided). */\nexport const center = 0.362;\nexport default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 634 512\\\" width=\\\"634\\\" height=\\\"512\\\"><defs><image id=\\\"i0\\\" width=\\\"29\\\" height=\\\"71\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='71' viewBox='0 0 29 71'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='29' height='71' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-2.34' dy='-4.67' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='0.98' dy='1.96' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 19 3.5 C 23.5 3.5 26 6.5 25.5 12 L 19.5 61 C 18.5 66.5 15 69 10 68.8 C 5.5 68.5 3.2 65 3.6 60 L 11 11 C 12 5 15 3 19 3 Z' fill='%23ffffff' stroke='%231f1a21' stroke-width='3.6'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i1\\\" width=\\\"34\\\" height=\\\"35\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='34' height='35' viewBox='0 0 34 35'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='34' height='35' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-2.69' dy='-5.5' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='1.13' dy='2.31' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 3 24 C 6 14 12 5 20 3 C 26 2 30 6 31 12 L 31 30 C 26 32 18 33 9 31 C 4 30 2 27 3 24 Z' fill='%23b8c0c8' stroke='none'/%3E%3CclipPath id='fpar'%3E%3Cpath d='M 3 24 C 6 14 12 5 20 3 C 26 2 30 6 31 12 L 31 30 C 26 32 18 33 9 31 C 4 30 2 27 3 24 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23fpar)'%3E%3Cpath d='M 2 14 C 12 8 22 8 31 12 M 2 22 C 12 16 22 16 31 20' fill='none' stroke='%231f1a21' stroke-width='2'/%3E%3Cpath d='M 0 0 L 36 0 L 36 8 C 24 5 12 6 0 9 Z' fill='%23eef2f5' stroke='none' opacity='0.6'/%3E%3Cpath d='M 4 29 C 14 32 24 32 30 30' fill='none' stroke='%23e8b23a' stroke-width='3'/%3E%3C/g%3E%3Cpath d='M 3 24 C 6 14 12 5 20 3 C 26 2 30 6 31 12 L 31 30 C 26 32 18 33 9 31 C 4 30 2 27 3 24 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cellipse cx='20' cy='7' rx='1.8' ry='1.8' fill='%23b8c0c8' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='19.46' cy='6.46' rx='0.63' ry='0.63' fill='%23eef2f5' stroke='none'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i2\\\" width=\\\"32\\\" height=\\\"35\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='35' viewBox='0 0 32 35'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='32' height='35' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-2.62' dy='-5.13' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='1.1' dy='2.15' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 7 3.5 L 25 3.5 C 27.5 3.5 28.5 5.5 28.5 8.5 L 28.5 25 C 28.5 30 24 31.5 16 31.5 C 8 31.5 3.5 30 3.5 25 L 3.5 8.5 C 3.5 5.5 4.5 3.5 7 3.5 Z' fill='%23b8c0c8' stroke='none'/%3E%3CclipPath id='fgr'%3E%3Cpath d='M 7 3.5 L 25 3.5 C 27.5 3.5 28.5 5.5 28.5 8.5 L 28.5 25 C 28.5 30 24 31.5 16 31.5 C 8 31.5 3.5 30 3.5 25 L 3.5 8.5 C 3.5 5.5 4.5 3.5 7 3.5 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23fgr)'%3E%3Cpath d='M 4 22 L 28 22 M 4 27 L 28 27' fill='none' stroke='%231f1a21' stroke-width='1.6'/%3E%3Cpath d='M 0 13 L 32 13 L 32 17 L 0 17 Z' fill='%23eef2f5' stroke='none' opacity='0.6'/%3E%3Crect x='0' y='0' width='32' height='12.5' rx='0' fill='%23848e99' stroke='none'/%3E%3Cpath d='M 0 12.5 L 32 12.5' fill='none' stroke='%231f1a21' stroke-width='2.6'/%3E%3C/g%3E%3Cpath d='M 7 3.5 L 25 3.5 C 27.5 3.5 28.5 5.5 28.5 8.5 L 28.5 25 C 28.5 30 24 31.5 16 31.5 C 8 31.5 3.5 30 3.5 25 L 3.5 8.5 C 3.5 5.5 4.5 3.5 7 3.5 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cellipse cx='16' cy='8' rx='1.8' ry='1.8' fill='%23e8b23a' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='15.46' cy='7.46' rx='0.63' ry='0.63' fill='%23ffe28a' stroke='none'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i3\\\" width=\\\"156\\\" height=\\\"51\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='156' height='51' viewBox='0 0 156 51'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='156' height='51' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-4.11' dy='-8.21' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='1.72' dy='3.45' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 3 25 L 25.1 16.5 L 106 16.5 L 106 33.5 L 25.1 33.5 Z' fill='%23b8c0c8' stroke='none'/%3E%3CclipPath id='ks'%3E%3Cpath d='M 3 25 L 25.1 16.5 L 106 16.5 L 106 33.5 L 25.1 33.5 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23ks)'%3E%3Cpath d='M 0 25.5 L 108 25.5 L 108 37.5 L 0 37.5 Z' fill='%23848e99' stroke='none'/%3E%3Cpath d='M 0 12.5 L 108 12.5 L 108 19.22 L 0 19.22 Z' fill='%23eef2f5' stroke='none'/%3E%3Cpath d='M 29.1 25 L 102 25' fill='none' stroke='%235e6873' stroke-width='2.3800000000000003'/%3E%3Cpath d='M 40 19 L 46 21 M 70 29 L 76 27 M 88 20 L 92 22' fill='none' stroke='%235e6873' stroke-width='1.2'/%3E%3C/g%3E%3Cpath d='M 3 25 L 25.1 16.5 L 106 16.5 L 106 33.5 L 25.1 33.5 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cpath d='M 114 19.5 L 140 19.5 L 140 30.5 L 114 30.5 Z' fill='%237a4628' stroke='none'/%3E%3CclipPath id='ksg'%3E%3Cpath d='M 114 19.5 L 140 19.5 L 140 30.5 L 114 30.5 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23ksg)'%3E%3Cpath d='M 114 26.375 L 140 26.375 L 140 30.5 L 114 30.5 Z' fill='%2355301a' stroke='none'/%3E%3Cpath d='M 117 19.5 L 121 30.5 M 122 19.5 L 126 30.5 M 127 19.5 L 131 30.5 M 132 19.5 L 136 30.5 M 137 19.5 L 141 30.5 ' fill='none' stroke='%233e2212' stroke-width='1.6'/%3E%3C/g%3E%3Cpath d='M 114 19.5 L 140 19.5 L 140 30.5 L 114 30.5 Z' fill='none' stroke='%231f1a21' stroke-width='3'/%3E%3Cpath d='M 104 8 C 104 5 106 4 108 4 C 110 4 112 5 112 8 L 112 42 C 112 45 110 46 108 46 C 106 46 104 45 104 42 Z' fill='%23e8b23a' stroke='none'/%3E%3CclipPath id='ksx'%3E%3Cpath d='M 104 8 C 104 5 106 4 108 4 C 110 4 112 5 112 8 L 112 42 C 112 45 110 46 108 46 C 106 46 104 45 104 42 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23ksx)'%3E%3Cpath d='M 100 32 L 120 32 L 120 50 L 100 50 Z' fill='%23b07818' stroke='none'/%3E%3Cpath d='M 100 0 L 108 0 L 108 50 L 100 50 Z' fill='%23ffe28a' stroke='none'/%3E%3C/g%3E%3Cpath d='M 104 8 C 104 5 106 4 108 4 C 110 4 112 5 112 8 L 112 42 C 112 45 110 46 108 46 C 106 46 104 45 104 42 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cellipse cx='108' cy='25' rx='3.2' ry='3.2' fill='%23d0202a' stroke='%231f1a21' stroke-width='2.2399999999999998'/%3E%3Cpath d='M 106.24 24.84 C 106.4 23.24 107.84 22.92 108.64 23.24 C 107.68 23.88 106.88 24.36 106.24 24.84 Z' fill='%23ffffff' stroke='none' opacity='0.85'/%3E%3Cellipse cx='146.5' cy='25' rx='6.2' ry='6.2' fill='%23e8b23a' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cellipse cx='146.5' cy='25' rx='2.8' ry='2.8' fill='%23d0202a' stroke='%231f1a21' stroke-width='1.9599999999999997'/%3E%3Cpath d='M 144.96 24.86 C 145.1 23.46 146.36 23.18 147.06 23.46 C 146.22 24.02 145.52 24.44 144.96 24.86 Z' fill='%23ffffff' stroke='none' opacity='0.85'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i4\\\" width=\\\"27\\\" height=\\\"55\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='27' height='55' viewBox='0 0 27 55'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='27' height='55' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-2.17' dy='-4.35' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='0.91' dy='1.83' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 5 2.5 L 24 2.5 L 24 47 C 24 51 21 53 16 53 L 8 53 C 3.5 53 2 50 3 47 C 4 44 6 43 6 40 Z' fill='%23ffffff' stroke='%231f1a21' stroke-width='3.6'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i5\\\" width=\\\"30\\\" height=\\\"23\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='23' viewBox='0 0 30 23'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='30' height='23' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-1.69' dy='-3.78' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='0.71' dy='1.59' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 12.5 2.8 C 16 2.8 18.3 5 18.3 8.3 L 22 8.5 C 25 8.6 26.2 10 26.2 12 L 26.2 15 C 26 18 23 19.3 19 19.3 L 7 19.3 C 4 19.3 2.8 17 2.8 15 C 2.8 12.5 4 11 7.5 10.5 L 7.5 8 C 7.5 4.5 9.5 2.8 12.5 2.8 Z' fill='%23b8c0c8' stroke='none'/%3E%3CclipPath id='fpbl'%3E%3Cpath d='M 12.5 2.8 C 16 2.8 18.3 5 18.3 8.3 L 22 8.5 C 25 8.6 26.2 10 26.2 12 L 26.2 15 C 26 18 23 19.3 19 19.3 L 7 19.3 C 4 19.3 2.8 17 2.8 15 C 2.8 12.5 4 11 7.5 10.5 L 7.5 8 C 7.5 4.5 9.5 2.8 12.5 2.8 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23fpbl)'%3E%3Cpath d='M 0 15 L 30 15 L 30 23 L 0 23 Z' fill='%23848e99' stroke='none'/%3E%3Cpath d='M 0 15 L 30 15' fill='none' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cpath d='M 8 9.5 L 18 9.5' fill='none' stroke='%231f1a21' stroke-width='1.6'/%3E%3Cpath d='M 8 3 L 17 3 L 17 6 L 8 6 Z' fill='%23eef2f5' stroke='none' opacity='0.6'/%3E%3C/g%3E%3Cpath d='M 12.5 2.8 C 16 2.8 18.3 5 18.3 8.3 L 22 8.5 C 25 8.6 26.2 10 26.2 12 L 26.2 15 C 26 18 23 19.3 19 19.3 L 7 19.3 C 4 19.3 2.8 17 2.8 15 C 2.8 12.5 4 11 7.5 10.5 L 7.5 8 C 7.5 4.5 9.5 2.8 12.5 2.8 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cellipse cx='13' cy='7' rx='1.5' ry='1.5' fill='%23e8b23a' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='12.55' cy='6.55' rx='0.5249999999999999' ry='0.5249999999999999' fill='%23ffe28a' stroke='none'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i6\\\" width=\\\"30\\\" height=\\\"23\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='23' viewBox='0 0 30 23'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='30' height='23' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-1.76' dy='-3.75' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='0.74' dy='1.57' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 12.5 2.8 C 16 2.8 18.3 5 18.3 8.3 L 22 8.5 C 25 8.6 26.2 10 26.2 12 L 26.2 15 C 26 18 23 19.3 19 19.3 L 7 19.3 C 4 19.3 2.8 17 2.8 15 C 2.8 12.5 4 11 7.5 10.5 L 7.5 8 C 7.5 4.5 9.5 2.8 12.5 2.8 Z' fill='%23b8c0c8' stroke='none'/%3E%3CclipPath id='fpbr'%3E%3Cpath d='M 12.5 2.8 C 16 2.8 18.3 5 18.3 8.3 L 22 8.5 C 25 8.6 26.2 10 26.2 12 L 26.2 15 C 26 18 23 19.3 19 19.3 L 7 19.3 C 4 19.3 2.8 17 2.8 15 C 2.8 12.5 4 11 7.5 10.5 L 7.5 8 C 7.5 4.5 9.5 2.8 12.5 2.8 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23fpbr)'%3E%3Cpath d='M 0 15 L 30 15 L 30 23 L 0 23 Z' fill='%23848e99' stroke='none'/%3E%3Cpath d='M 0 15 L 30 15' fill='none' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cpath d='M 8 9.5 L 18 9.5' fill='none' stroke='%231f1a21' stroke-width='1.6'/%3E%3Cpath d='M 8 3 L 17 3 L 17 6 L 8 6 Z' fill='%23eef2f5' stroke='none' opacity='0.6'/%3E%3C/g%3E%3Cpath d='M 12.5 2.8 C 16 2.8 18.3 5 18.3 8.3 L 22 8.5 C 25 8.6 26.2 10 26.2 12 L 26.2 15 C 26 18 23 19.3 19 19.3 L 7 19.3 C 4 19.3 2.8 17 2.8 15 C 2.8 12.5 4 11 7.5 10.5 L 7.5 8 C 7.5 4.5 9.5 2.8 12.5 2.8 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cellipse cx='13' cy='7' rx='1.5' ry='1.5' fill='%23e8b23a' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='12.55' cy='6.55' rx='0.5249999999999999' ry='0.5249999999999999' fill='%23ffe28a' stroke='none'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i7\\\" width=\\\"82\\\" height=\\\"37\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='82' height='37' viewBox='0 0 82 37'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='82' height='37' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-3.05' dy='-5.92' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='1.28' dy='2.49' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 4 4 C 20 4 30 5.5 41 5.5 C 52 5.5 62 4 78 3.5 L 79 30 C 66 32.5 54 34 41 34 C 28 34 16 32.5 4 30 Z' fill='%236b86ad' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cpath d='M 31 6 L 31 12 M 31 18 L 31 26 M 70 6 L 70 12 M 70 18 L 70 26' fill='none' stroke='%234a5f80' stroke-width='2.4'/%3E%3Cpath d='M 35 6 L 35 16 C 35 18 33 19 31 19' fill='none' stroke='%234a5f80' stroke-width='2.4'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i8\\\" width=\\\"77\\\" height=\\\"50\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='77' height='50' viewBox='0 0 77 50'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='77' height='50' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-4.02' dy='-8.05' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='1.69' dy='3.38' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 2 47 L 2 22 C 2 18 3 16 5 14 C 15 4 60 2 68 10 C 72 14 75 20 75 28 L 75 47 Z' fill='%23ffffff' stroke='none'/%3E%3CclipPath id='torso'%3E%3Cpath d='M 2 47 L 2 22 C 2 18 3 16 5 14 C 15 4 60 2 68 10 C 72 14 75 20 75 28 L 75 47 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23torso)'%3E%3Cellipse cx='37' cy='13' rx='31' ry='15' fill='%23cfcfcf'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i9\\\" width=\\\"87\\\" height=\\\"88\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='87' height='88' viewBox='0 0 87 88'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='87' height='88' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-4.92' dy='-9.84' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='2.07' dy='4.13' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 42.6 2.9 Q 35.9 2.9 32.1 3.9 Q 28.4 4.8 26.8 5.8 Q 25.2 6.9 20.1 12.9 Q 15 19 12.4 23.1 Q 9.8 27.3 7.3 40.5 Q 4.8 53.6 3.9 66.7 Q 3 79.7 3.3 80 Q 3.6 80.3 6.8 81.2 Q 10 82.1 18.2 83.2 Q 26.5 84.2 43.4 84.2 Q 60.3 84.2 70.9 82.2 Q 81.4 80.2 82.3 79.1 Q 83.2 77.9 83.2 61.6 Q 83.2 45.3 83.7 41.4 Q 84.2 37.5 83.7 34.3 Q 83.1 31.1 81.7 27.3 Q 80.3 23.5 77.5 20.2 Q 74.8 16.8 66.7 10.8 Q 58.6 4.8 54 3.8 Q 49.3 2.8 42.6 2.9 Z M 28.4 15.7 Q 32.3 14.3 38.9 14.3 Q 45.6 14.3 50.6 15.4 Q 55.7 16.6 56.4 18.2 Q 57 19.9 54 22.4 Q 51 25 42.1 30 Q 33.1 35 29 30.5 Q 25 26 24 23.8 Q 23.1 21.6 23.8 19.3 Q 24.6 17.1 28.4 15.7 Z' fill='%23b8c0c8' stroke='none' fill-rule='evenodd'/%3E%3CclipPath id='fpa'%3E%3Cpath d='M 42.6 2.9 Q 35.9 2.9 32.1 3.9 Q 28.4 4.8 26.8 5.8 Q 25.2 6.9 20.1 12.9 Q 15 19 12.4 23.1 Q 9.8 27.3 7.3 40.5 Q 4.8 53.6 3.9 66.7 Q 3 79.7 3.3 80 Q 3.6 80.3 6.8 81.2 Q 10 82.1 18.2 83.2 Q 26.5 84.2 43.4 84.2 Q 60.3 84.2 70.9 82.2 Q 81.4 80.2 82.3 79.1 Q 83.2 77.9 83.2 61.6 Q 83.2 45.3 83.7 41.4 Q 84.2 37.5 83.7 34.3 Q 83.1 31.1 81.7 27.3 Q 80.3 23.5 77.5 20.2 Q 74.8 16.8 66.7 10.8 Q 58.6 4.8 54 3.8 Q 49.3 2.8 42.6 2.9 Z M 28.4 15.7 Q 32.3 14.3 38.9 14.3 Q 45.6 14.3 50.6 15.4 Q 55.7 16.6 56.4 18.2 Q 57 19.9 54 22.4 Q 51 25 42.1 30 Q 33.1 35 29 30.5 Q 25 26 24 23.8 Q 23.1 21.6 23.8 19.3 Q 24.6 17.1 28.4 15.7 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23fpa)'%3E%3Cpath d='M -2 -2 L 92 -2 L 92 26 C 60 30 30 30 -2 26 Z' fill='%23eef2f5' stroke='none' opacity='0.6'/%3E%3Cpath d='M 44 34 C 60 34 76 40 92 44 L 92 92 L 44 92 Z' fill='%23848e99' stroke='none' opacity='0.55'/%3E%3Cpath d='M 40 34 C 41 42 42 50 42 56' fill='none' stroke='%23848e99' stroke-width='2.4'/%3E%3Cpath d='M -2 64 L 92 64 L 92 92 L -2 92 Z' fill='%23848e99' stroke='none'/%3E%3Cpath d='M -2 64 L 92 64 M -2 73 L 92 73 M -2 82 L 92 82' fill='none' stroke='%231f1a21' stroke-width='2'/%3E%3Cpath d='M -2 65 L 92 65 L 92 68 L -2 68 Z M -2 74 L 92 74 L 92 77 L -2 77 Z' fill='%23eef2f5' stroke='none' opacity='0.5'/%3E%3Crect x='-2' y='56' width='96' height='7' rx='0' fill='%2355301a' stroke='none'/%3E%3Cpath d='M -2 56 L 96 56 M -2 63 L 96 63' fill='none' stroke='%231f1a21' stroke-width='2'/%3E%3Crect x='35' y='54.5' width='10' height='10' rx='2' fill='%23e8b23a' stroke='%231f1a21' stroke-width='2'/%3E%3Crect x='38.2' y='57.5' width='3.6' height='4' rx='1' fill='%2355301a' stroke='none'/%3E%3Cpath d='M 16 40 L 22 44 M 60 26 L 66 30 M 70 48 L 74 52' fill='none' stroke='%235e6873' stroke-width='1.2'/%3E%3C/g%3E%3Cpath d='M 42.6 2.9 Q 35.9 2.9 32.1 3.9 Q 28.4 4.8 26.8 5.8 Q 25.2 6.9 20.1 12.9 Q 15 19 12.4 23.1 Q 9.8 27.3 7.3 40.5 Q 4.8 53.6 3.9 66.7 Q 3 79.7 3.3 80 Q 3.6 80.3 6.8 81.2 Q 10 82.1 18.2 83.2 Q 26.5 84.2 43.4 84.2 Q 60.3 84.2 70.9 82.2 Q 81.4 80.2 82.3 79.1 Q 83.2 77.9 83.2 61.6 Q 83.2 45.3 83.7 41.4 Q 84.2 37.5 83.7 34.3 Q 83.1 31.1 81.7 27.3 Q 80.3 23.5 77.5 20.2 Q 74.8 16.8 66.7 10.8 Q 58.6 4.8 54 3.8 Q 49.3 2.8 42.6 2.9 Z M 28.4 15.7 Q 32.3 14.3 38.9 14.3 Q 45.6 14.3 50.6 15.4 Q 55.7 16.6 56.4 18.2 Q 57 19.9 54 22.4 Q 51 25 42.1 30 Q 33.1 35 29 30.5 Q 25 26 24 23.8 Q 23.1 21.6 23.8 19.3 Q 24.6 17.1 28.4 15.7 Z' fill='none' stroke='%231f1a21' stroke-width='3.6' fill-rule='evenodd'/%3E%3CclipPath id='fpa_on'%3E%3Cpath d='M 42.6 2.9 Q 35.9 2.9 32.1 3.9 Q 28.4 4.8 26.8 5.8 Q 25.2 6.9 20.1 12.9 Q 15 19 12.4 23.1 Q 9.8 27.3 7.3 40.5 Q 4.8 53.6 3.9 66.7 Q 3 79.7 3.3 80 Q 3.6 80.3 6.8 81.2 Q 10 82.1 18.2 83.2 Q 26.5 84.2 43.4 84.2 Q 60.3 84.2 70.9 82.2 Q 81.4 80.2 82.3 79.1 Q 83.2 77.9 83.2 61.6 Q 83.2 45.3 83.7 41.4 Q 84.2 37.5 83.7 34.3 Q 83.1 31.1 81.7 27.3 Q 80.3 23.5 77.5 20.2 Q 74.8 16.8 66.7 10.8 Q 58.6 4.8 54 3.8 Q 49.3 2.8 42.6 2.9 Z M 28.4 15.7 Q 32.3 14.3 38.9 14.3 Q 45.6 14.3 50.6 15.4 Q 55.7 16.6 56.4 18.2 Q 57 19.9 54 22.4 Q 51 25 42.1 30 Q 33.1 35 29 30.5 Q 25 26 24 23.8 Q 23.1 21.6 23.8 19.3 Q 24.6 17.1 28.4 15.7 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23fpa_on)'%3E%3Cpath d='M 28.4 15.7 Q 32.3 14.3 38.9 14.3 Q 45.6 14.3 50.6 15.4 Q 55.7 16.6 56.4 18.2 Q 57 19.9 54 22.4 Q 51 25 42.1 30 Q 33.1 35 29 30.5 Q 25 26 24 23.8 Q 23.1 21.6 23.8 19.3 Q 24.6 17.1 28.4 15.7 Z' fill='none' stroke='%23e8b23a' stroke-width='6'/%3E%3Cpath d='M 28.4 15.7 Q 32.3 14.3 38.9 14.3 Q 45.6 14.3 50.6 15.4 Q 55.7 16.6 56.4 18.2 Q 57 19.9 54 22.4 Q 51 25 42.1 30 Q 33.1 35 29 30.5 Q 25 26 24 23.8 Q 23.1 21.6 23.8 19.3 Q 24.6 17.1 28.4 15.7 Z' fill='none' stroke='%231f1a21' stroke-width='2'/%3E%3Cellipse cx='12' cy='42' rx='1.8' ry='1.8' fill='%23b8c0c8' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='11.46' cy='41.46' rx='0.63' ry='0.63' fill='%23eef2f5' stroke='none'/%3E%3Cellipse cx='72' cy='40' rx='1.8' ry='1.8' fill='%23b8c0c8' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='71.46' cy='39.46' rx='0.63' ry='0.63' fill='%23eef2f5' stroke='none'/%3E%3C/g%3E%3Cpath d='M 42.6 2.9 Q 35.9 2.9 32.1 3.9 Q 28.4 4.8 26.8 5.8 Q 25.2 6.9 20.1 12.9 Q 15 19 12.4 23.1 Q 9.8 27.3 7.3 40.5 Q 4.8 53.6 3.9 66.7 Q 3 79.7 3.3 80 Q 3.6 80.3 6.8 81.2 Q 10 82.1 18.2 83.2 Q 26.5 84.2 43.4 84.2 Q 60.3 84.2 70.9 82.2 Q 81.4 80.2 82.3 79.1 Q 83.2 77.9 83.2 61.6 Q 83.2 45.3 83.7 41.4 Q 84.2 37.5 83.7 34.3 Q 83.1 31.1 81.7 27.3 Q 80.3 23.5 77.5 20.2 Q 74.8 16.8 66.7 10.8 Q 58.6 4.8 54 3.8 Q 49.3 2.8 42.6 2.9 Z M 28.4 15.7 Q 32.3 14.3 38.9 14.3 Q 45.6 14.3 50.6 15.4 Q 55.7 16.6 56.4 18.2 Q 57 19.9 54 22.4 Q 51 25 42.1 30 Q 33.1 35 29 30.5 Q 25 26 24 23.8 Q 23.1 21.6 23.8 19.3 Q 24.6 17.1 28.4 15.7 Z' fill='none' stroke='%231f1a21' stroke-width='3.6' fill-rule='evenodd'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i10\\\" width=\\\"103\\\" height=\\\"90\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='103' height='90' viewBox='0 0 103 90'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='103' height='90' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-4.95' dy='-9.82' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='2.08' dy='4.13' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 4 50 C 3 22 20 3 52 3 C 75 3 89 16 91 44 C 96 45 99 51 99 58 C 99 65 94 70 88 70 C 85 70 83 69 82 68 C 78 80 66 87 48 87 L 24 87 C 10 87 4 78 4 66 Z' fill='%23ffffff' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cpath d='M 81 48 C 82 47 84 46 86 46 M 81 67 C 82 68 83 69 85 69 M 83 54 C 85 52 88 51 91 52' fill='none' stroke='%231f1a21' stroke-width='3'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i11\\\" width=\\\"15\\\" height=\\\"7\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='15' height='7' viewBox='0 0 15 7'%3E%3Cg stroke-linejoin='round' stroke-linecap='round'%3E%3Cpath d='M 1.6 3.6 C 5 2.2 10 2 13.6 3 C 13.9 3.2 13.8 3.7 13.4 3.8 C 10 5 5 5.2 1.6 3.6 Z' fill='%231f1a21' stroke='none'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i12\\\" width=\\\"64\\\" height=\\\"31\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='31' viewBox='0 0 64 31' color='%239a6324'%3E%3Cg stroke-linejoin='round' stroke-linecap='round'%3E%3Cellipse cx='15' cy='16' rx='11.2' ry='11.2' fill='%23fffaf4' stroke='none'/%3E%3CclipPath id='rl'%3E%3Cpath d='M 3.8000000000000007 16 A 11.2 11.2 0 1 0 26.2 16 A 11.2 11.2 0 1 0 3.8000000000000007 16 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23rl)'%3E%3Cellipse cx='12.8' cy='16.5' rx='4.6' ry='5.152' fill='currentColor' stroke='%231f1a21' stroke-width='1.3'/%3E%3CclipPath id='rl_i'%3E%3Cpath d='M 8.200000000000001 16.5 A 4.6 5.152 0 1 0 17.4 16.5 A 4.6 5.152 0 1 0 8.200000000000001 16.5 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23rl_i)'%3E%3Cellipse cx='12.8' cy='13.30576' rx='5.06' ry='3.5033600000000003' fill='%23000000' stroke='none' opacity='0.38'/%3E%3Cellipse cx='12.8' cy='20.20944' rx='3.6799999999999997' ry='2.0608' fill='%23ffffff' stroke='none' opacity='0.3'/%3E%3C/g%3E%3Cellipse cx='12.8' cy='15.88176' rx='2.07' ry='2.9366400000000006' fill='%23160f1a' stroke='none'/%3E%3Cellipse cx='14.64' cy='14.33616' rx='1.38' ry='1.38' fill='%23ffffff' stroke='none'/%3E%3Cellipse cx='11.052000000000001' cy='18.66384' rx='0.644' ry='0.644' fill='%23ffffff' stroke='none'/%3E%3C/g%3E%3Cellipse cx='15' cy='16' rx='11.2' ry='11.2' fill='none' stroke='%231f1a21' stroke-width='2.8'/%3E%3Cpath d='M 6.040000000000001 7.600000000000001 C 11.64 3.4559999999999995 20.6 3.6799999999999997 25.08 9.280000000000001' fill='none' stroke='%231f1a21' stroke-width='3.4'/%3E%3Cellipse cx='48' cy='16' rx='11.8' ry='11.8' fill='%23fffaf4' stroke='none'/%3E%3CclipPath id='rr'%3E%3Cpath d='M 36.2 16 A 11.8 11.8 0 1 0 59.8 16 A 11.8 11.8 0 1 0 36.2 16 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23rr)'%3E%3Cellipse cx='45.6' cy='16.5' rx='4.8' ry='5.376' fill='currentColor' stroke='%231f1a21' stroke-width='1.3'/%3E%3CclipPath id='rr_i'%3E%3Cpath d='M 40.800000000000004 16.5 A 4.8 5.376 0 1 0 50.4 16.5 A 4.8 5.376 0 1 0 40.800000000000004 16.5 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23rr_i)'%3E%3Cellipse cx='45.6' cy='13.166879999999999' rx='5.28' ry='3.6556800000000007' fill='%23000000' stroke='none' opacity='0.38'/%3E%3Cellipse cx='45.6' cy='20.37072' rx='3.84' ry='2.1504000000000003' fill='%23ffffff' stroke='none' opacity='0.3'/%3E%3C/g%3E%3Cellipse cx='45.6' cy='15.85488' rx='2.16' ry='3.0643200000000004' fill='%23160f1a' stroke='none'/%3E%3Cellipse cx='47.52' cy='14.24208' rx='1.44' ry='1.44' fill='%23ffffff' stroke='none'/%3E%3Cellipse cx='43.776' cy='18.75792' rx='0.672' ry='0.672' fill='%23ffffff' stroke='none'/%3E%3C/g%3E%3Cellipse cx='48' cy='16' rx='11.8' ry='11.8' fill='none' stroke='%231f1a21' stroke-width='2.8'/%3E%3Cpath d='M 38.56 7.149999999999999 C 44.46 2.783999999999997 53.9 3.019999999999998 58.620000000000005 8.92' fill='none' stroke='%231f1a21' stroke-width='3.4'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i13\\\" width=\\\"85\\\" height=\\\"46\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='85' height='46' viewBox='0 0 85 46'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='85' height='46' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-3.73' dy='-7.39' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='1.56' dy='3.11' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 3.5 9 L 11 8.5 C 18 6 24 3.5 33 3.5 C 39 3.5 42 7 46 8.5 C 52 10 57 10 59.5 11.5 L 61 14.5 C 68 13 76 11 81.5 10 C 82.5 15 82.5 20 80.5 24 C 78.5 28 76 31 72 32.5 C 66 34 60 32 58 33 C 57 37 54 40 48 41.5 C 42 43 37 42 34 38.5 C 31 40 25 41 20 40 C 16 38 14 34 13.5 30 C 9 29 6 27 4.5 24 C 3 19 3 13 3.5 9 Z' fill='%23ffffff' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cpath d='M 5 10 C 9 13 12 17 16 17.5 C 22 18 28 16 33 13 C 36 16 38 19 42 20 C 48 21 54 20 59 17.5 L 60 13' fill='none' stroke='%231f1a21' stroke-width='3'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i14\\\" width=\\\"66\\\" height=\\\"19\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='66' height='19' viewBox='0 0 66 19'%3E%3Cg stroke-linejoin='round' stroke-linecap='round'%3E%3Cpath d='M 3.5 3 L 25 14.5' fill='none' stroke='%231f1a21' stroke-width='4.6'/%3E%3Cpath d='M 35 15.5 L 62 5' fill='none' stroke='%231f1a21' stroke-width='4.6'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i15\\\" width=\\\"97\\\" height=\\\"54\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='97' height='54' viewBox='0 0 97 54'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='97' height='54' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-4.37' dy='-8.68' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='1.84' dy='3.65' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 45.5 3.9 Q 35.9 3.9 29.6 5.9 Q 23.4 7.8 19.3 10.3 Q 15.1 12.9 12.6 15.4 Q 10.1 18 7.1 19.6 Q 4.1 21.2 4.1 21.5 Q 4 21.8 4.5 22.4 Q 5.1 23 9.1 24.5 Q 13.1 26.1 17.8 26.7 Q 22.6 27.2 45.2 28.3 Q 67.9 29.4 69.4 37.6 Q 70.9 45.9 71.8 48.4 Q 72.8 50.9 73 50.8 Q 73.1 50.8 75.6 48.4 Q 78 46 80.2 45.1 Q 82.4 44.3 87.1 44.7 Q 91.8 45 91.9 45 Q 91.9 45 92.3 43.4 Q 92.7 41.8 89.6 40.8 Q 86.5 39.7 85.8 34.4 Q 85.1 29.1 83.7 25.9 Q 82.3 22.6 77.1 16.8 Q 71.9 10.9 68.3 8.9 Q 64.7 6.8 59.9 5.4 Q 55.1 3.9 45.5 3.9 Z' fill='%23ffffff' stroke='%231f1a21' stroke-width='3.6' fill-rule='evenodd'/%3E%3Cpath d='M 70 36 L 88 36 L 92 40 L 93 45 L 80 46 C 76 48 74 52 72 53 Z' fill='%23dcdcdc' stroke='none'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i16\\\" width=\\\"114\\\" height=\\\"115\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='114' height='115' viewBox='0 0 114 115'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='114' height='115' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-4.95' dy='-9.82' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='2.08' dy='4.13' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 4 50 C 2 30 12 12 36 6 C 60 0 88 2 102 14 C 110 22 112 36 110 52 C 110 58 108 62 106 64 L 104 74 L 96 68 L 94 80 C 92 92 92 104 90 110 L 76 110 C 74 96 74 80 74 66 C 74 54 70 50 64 50 L 18 52 C 14 54 12 58 12 66 L 12 102 C 10 108 6 108 4 104 Z' fill='%23b8c0c8' stroke='none'/%3E%3CclipPath id='kh'%3E%3Cpath d='M 4 50 C 2 30 12 12 36 6 C 60 0 88 2 102 14 C 110 22 112 36 110 52 C 110 58 108 62 106 64 L 104 74 L 96 68 L 94 80 C 92 92 92 104 90 110 L 76 110 C 74 96 74 80 74 66 C 74 54 70 50 64 50 L 18 52 C 14 54 12 58 12 66 L 12 102 C 10 108 6 108 4 104 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23kh)'%3E%3Cpath d='M -5 -5 L 160 -5 L 160 20 C 110 26 50 26 -5 20 Z' fill='%23eef2f5' stroke='none' opacity='0.55'/%3E%3Cpath d='M 72 54 L 120 54 L 120 116 L 72 116 Z' fill='%238c939b' stroke='none'/%3E%3Cpath d='M 74 56 C 74 59 78 59 78 56 M 79 56 C 79 59 83 59 83 56 M 84 56 C 84 59 88 59 88 56 M 89 56 C 89 59 93 59 93 56 M 94 56 C 94 59 98 59 98 56 M 99 56 C 99 59 103 59 103 56 M 104 56 C 104 59 108 59 108 56 M 109 56 C 109 59 113 59 113 56 M 76.5 60.2 C 76.5 63.2 80.5 63.2 80.5 60.2 M 81.5 60.2 C 81.5 63.2 85.5 63.2 85.5 60.2 M 86.5 60.2 C 86.5 63.2 90.5 63.2 90.5 60.2 M 91.5 60.2 C 91.5 63.2 95.5 63.2 95.5 60.2 M 96.5 60.2 C 96.5 63.2 100.5 63.2 100.5 60.2 M 101.5 60.2 C 101.5 63.2 105.5 63.2 105.5 60.2 M 106.5 60.2 C 106.5 63.2 110.5 63.2 110.5 60.2 M 111.5 60.2 C 111.5 63.2 115.5 63.2 115.5 60.2 M 74 64.4 C 74 67.4 78 67.4 78 64.4 M 79 64.4 C 79 67.4 83 67.4 83 64.4 M 84 64.4 C 84 67.4 88 67.4 88 64.4 M 89 64.4 C 89 67.4 93 67.4 93 64.4 M 94 64.4 C 94 67.4 98 67.4 98 64.4 M 99 64.4 C 99 67.4 103 67.4 103 64.4 M 104 64.4 C 104 67.4 108 67.4 108 64.4 M 109 64.4 C 109 67.4 113 67.4 113 64.4 M 76.5 68.60000000000001 C 76.5 71.60000000000001 80.5 71.60000000000001 80.5 68.60000000000001 M 81.5 68.60000000000001 C 81.5 71.60000000000001 85.5 71.60000000000001 85.5 68.60000000000001 M 86.5 68.60000000000001 C 86.5 71.60000000000001 90.5 71.60000000000001 90.5 68.60000000000001 M 91.5 68.60000000000001 C 91.5 71.60000000000001 95.5 71.60000000000001 95.5 68.60000000000001 M 96.5 68.60000000000001 C 96.5 71.60000000000001 100.5 71.60000000000001 100.5 68.60000000000001 M 101.5 68.60000000000001 C 101.5 71.60000000000001 105.5 71.60000000000001 105.5 68.60000000000001 M 106.5 68.60000000000001 C 106.5 71.60000000000001 110.5 71.60000000000001 110.5 68.60000000000001 M 111.5 68.60000000000001 C 111.5 71.60000000000001 115.5 71.60000000000001 115.5 68.60000000000001 M 74 72.80000000000001 C 74 75.80000000000001 78 75.80000000000001 78 72.80000000000001 M 79 72.80000000000001 C 79 75.80000000000001 83 75.80000000000001 83 72.80000000000001 M 84 72.80000000000001 C 84 75.80000000000001 88 75.80000000000001 88 72.80000000000001 M 89 72.80000000000001 C 89 75.80000000000001 93 75.80000000000001 93 72.80000000000001 M 94 72.80000000000001 C 94 75.80000000000001 98 75.80000000000001 98 72.80000000000001 M 99 72.80000000000001 C 99 75.80000000000001 103 75.80000000000001 103 72.80000000000001 M 104 72.80000000000001 C 104 75.80000000000001 108 75.80000000000001 108 72.80000000000001 M 109 72.80000000000001 C 109 75.80000000000001 113 75.80000000000001 113 72.80000000000001 M 76.5 77.00000000000001 C 76.5 80.00000000000001 80.5 80.00000000000001 80.5 77.00000000000001 M 81.5 77.00000000000001 C 81.5 80.00000000000001 85.5 80.00000000000001 85.5 77.00000000000001 M 86.5 77.00000000000001 C 86.5 80.00000000000001 90.5 80.00000000000001 90.5 77.00000000000001 M 91.5 77.00000000000001 C 91.5 80.00000000000001 95.5 80.00000000000001 95.5 77.00000000000001 M 96.5 77.00000000000001 C 96.5 80.00000000000001 100.5 80.00000000000001 100.5 77.00000000000001 M 101.5 77.00000000000001 C 101.5 80.00000000000001 105.5 80.00000000000001 105.5 77.00000000000001 M 106.5 77.00000000000001 C 106.5 80.00000000000001 110.5 80.00000000000001 110.5 77.00000000000001 M 111.5 77.00000000000001 C 111.5 80.00000000000001 115.5 80.00000000000001 115.5 77.00000000000001 M 74 81.20000000000002 C 74 84.20000000000002 78 84.20000000000002 78 81.20000000000002 M 79 81.20000000000002 C 79 84.20000000000002 83 84.20000000000002 83 81.20000000000002 M 84 81.20000000000002 C 84 84.20000000000002 88 84.20000000000002 88 81.20000000000002 M 89 81.20000000000002 C 89 84.20000000000002 93 84.20000000000002 93 81.20000000000002 M 94 81.20000000000002 C 94 84.20000000000002 98 84.20000000000002 98 81.20000000000002 M 99 81.20000000000002 C 99 84.20000000000002 103 84.20000000000002 103 81.20000000000002 M 104 81.20000000000002 C 104 84.20000000000002 108 84.20000000000002 108 81.20000000000002 M 109 81.20000000000002 C 109 84.20000000000002 113 84.20000000000002 113 81.20000000000002 M 76.5 85.40000000000002 C 76.5 88.40000000000002 80.5 88.40000000000002 80.5 85.40000000000002 M 81.5 85.40000000000002 C 81.5 88.40000000000002 85.5 88.40000000000002 85.5 85.40000000000002 M 86.5 85.40000000000002 C 86.5 88.40000000000002 90.5 88.40000000000002 90.5 85.40000000000002 M 91.5 85.40000000000002 C 91.5 88.40000000000002 95.5 88.40000000000002 95.5 85.40000000000002 M 96.5 85.40000000000002 C 96.5 88.40000000000002 100.5 88.40000000000002 100.5 85.40000000000002 M 101.5 85.40000000000002 C 101.5 88.40000000000002 105.5 88.40000000000002 105.5 85.40000000000002 M 106.5 85.40000000000002 C 106.5 88.40000000000002 110.5 88.40000000000002 110.5 85.40000000000002 M 111.5 85.40000000000002 C 111.5 88.40000000000002 115.5 88.40000000000002 115.5 85.40000000000002 M 74 89.60000000000002 C 74 92.60000000000002 78 92.60000000000002 78 89.60000000000002 M 79 89.60000000000002 C 79 92.60000000000002 83 92.60000000000002 83 89.60000000000002 M 84 89.60000000000002 C 84 92.60000000000002 88 92.60000000000002 88 89.60000000000002 M 89 89.60000000000002 C 89 92.60000000000002 93 92.60000000000002 93 89.60000000000002 M 94 89.60000000000002 C 94 92.60000000000002 98 92.60000000000002 98 89.60000000000002 M 99 89.60000000000002 C 99 92.60000000000002 103 92.60000000000002 103 89.60000000000002 M 104 89.60000000000002 C 104 92.60000000000002 108 92.60000000000002 108 89.60000000000002 M 109 89.60000000000002 C 109 92.60000000000002 113 92.60000000000002 113 89.60000000000002 M 76.5 93.80000000000003 C 76.5 96.80000000000003 80.5 96.80000000000003 80.5 93.80000000000003 M 81.5 93.80000000000003 C 81.5 96.80000000000003 85.5 96.80000000000003 85.5 93.80000000000003 M 86.5 93.80000000000003 C 86.5 96.80000000000003 90.5 96.80000000000003 90.5 93.80000000000003 M 91.5 93.80000000000003 C 91.5 96.80000000000003 95.5 96.80000000000003 95.5 93.80000000000003 M 96.5 93.80000000000003 C 96.5 96.80000000000003 100.5 96.80000000000003 100.5 93.80000000000003 M 101.5 93.80000000000003 C 101.5 96.80000000000003 105.5 96.80000000000003 105.5 93.80000000000003 M 106.5 93.80000000000003 C 106.5 96.80000000000003 110.5 96.80000000000003 110.5 93.80000000000003 M 111.5 93.80000000000003 C 111.5 96.80000000000003 115.5 96.80000000000003 115.5 93.80000000000003 M 74 98.00000000000003 C 74 101.00000000000003 78 101.00000000000003 78 98.00000000000003 M 79 98.00000000000003 C 79 101.00000000000003 83 101.00000000000003 83 98.00000000000003 M 84 98.00000000000003 C 84 101.00000000000003 88 101.00000000000003 88 98.00000000000003 M 89 98.00000000000003 C 89 101.00000000000003 93 101.00000000000003 93 98.00000000000003 M 94 98.00000000000003 C 94 101.00000000000003 98 101.00000000000003 98 98.00000000000003 M 99 98.00000000000003 C 99 101.00000000000003 103 101.00000000000003 103 98.00000000000003 M 104 98.00000000000003 C 104 101.00000000000003 108 101.00000000000003 108 98.00000000000003 M 109 98.00000000000003 C 109 101.00000000000003 113 101.00000000000003 113 98.00000000000003 M 76.5 102.20000000000003 C 76.5 105.20000000000003 80.5 105.20000000000003 80.5 102.20000000000003 M 81.5 102.20000000000003 C 81.5 105.20000000000003 85.5 105.20000000000003 85.5 102.20000000000003 M 86.5 102.20000000000003 C 86.5 105.20000000000003 90.5 105.20000000000003 90.5 102.20000000000003 M 91.5 102.20000000000003 C 91.5 105.20000000000003 95.5 105.20000000000003 95.5 102.20000000000003 M 96.5 102.20000000000003 C 96.5 105.20000000000003 100.5 105.20000000000003 100.5 102.20000000000003 M 101.5 102.20000000000003 C 101.5 105.20000000000003 105.5 105.20000000000003 105.5 102.20000000000003 M 106.5 102.20000000000003 C 106.5 105.20000000000003 110.5 105.20000000000003 110.5 102.20000000000003 M 111.5 102.20000000000003 C 111.5 105.20000000000003 115.5 105.20000000000003 115.5 102.20000000000003 M 74 106.40000000000003 C 74 109.40000000000003 78 109.40000000000003 78 106.40000000000003 M 79 106.40000000000003 C 79 109.40000000000003 83 109.40000000000003 83 106.40000000000003 M 84 106.40000000000003 C 84 109.40000000000003 88 109.40000000000003 88 106.40000000000003 M 89 106.40000000000003 C 89 109.40000000000003 93 109.40000000000003 93 106.40000000000003 M 94 106.40000000000003 C 94 109.40000000000003 98 109.40000000000003 98 106.40000000000003 M 99 106.40000000000003 C 99 109.40000000000003 103 109.40000000000003 103 106.40000000000003 M 104 106.40000000000003 C 104 109.40000000000003 108 109.40000000000003 108 106.40000000000003 M 109 106.40000000000003 C 109 109.40000000000003 113 109.40000000000003 113 106.40000000000003 M 76.5 110.60000000000004 C 76.5 113.60000000000004 80.5 113.60000000000004 80.5 110.60000000000004 M 81.5 110.60000000000004 C 81.5 113.60000000000004 85.5 113.60000000000004 85.5 110.60000000000004 M 86.5 110.60000000000004 C 86.5 113.60000000000004 90.5 113.60000000000004 90.5 110.60000000000004 M 91.5 110.60000000000004 C 91.5 113.60000000000004 95.5 113.60000000000004 95.5 110.60000000000004 M 96.5 110.60000000000004 C 96.5 113.60000000000004 100.5 113.60000000000004 100.5 110.60000000000004 M 101.5 110.60000000000004 C 101.5 113.60000000000004 105.5 113.60000000000004 105.5 110.60000000000004 M 106.5 110.60000000000004 C 106.5 113.60000000000004 110.5 113.60000000000004 110.5 110.60000000000004 M 111.5 110.60000000000004 C 111.5 113.60000000000004 115.5 113.60000000000004 115.5 110.60000000000004 ' fill='none' stroke='%234e555e' stroke-width='1.3'/%3E%3Cpath d='M 0 56 L 13 56 L 13 110 L 0 110 Z' fill='%23848e99' stroke='none'/%3E%3Cpath d='M 2 50 C 30 44 70 44 112 50' fill='none' stroke='%23b07818' stroke-width='9'/%3E%3Cpath d='M 2 50 C 30 44 70 44 112 50' fill='none' stroke='%23e8b23a' stroke-width='5.4'/%3E%3Cpath d='M 56 4 C 50 16 48 30 50 46' fill='none' stroke='%23848e99' stroke-width='2.4'/%3E%3Cpath d='M 26 22 L 32 26 M 80 18 L 86 22' fill='none' stroke='%235e6873' stroke-width='1.2'/%3E%3C/g%3E%3Cpath d='M 4 50 C 2 30 12 12 36 6 C 60 0 88 2 102 14 C 110 22 112 36 110 52 C 110 58 108 62 106 64 L 104 74 L 96 68 L 94 80 C 92 92 92 104 90 110 L 76 110 C 74 96 74 80 74 66 C 74 54 70 50 64 50 L 18 52 C 14 54 12 58 12 66 L 12 102 C 10 108 6 108 4 104 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cpath d='M 4 51 C 30 45 70 45 108 51' fill='none' stroke='%231f1a21' stroke-width='1.6'/%3E%3Cellipse cx='8' cy='66' rx='2' ry='2' fill='%23b8c0c8' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='7.4' cy='65.4' rx='0.7' ry='0.7' fill='%23eef2f5' stroke='none'/%3E%3Cellipse cx='8' cy='92' rx='2' ry='2' fill='%23b8c0c8' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='7.4' cy='91.4' rx='0.7' ry='0.7' fill='%23eef2f5' stroke='none'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i17\\\" width=\\\"23\\\" height=\\\"72\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='23' height='72' viewBox='0 0 23 72'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='23' height='72' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-1.85' dy='-3.7' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='0.78' dy='1.56' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 11.5 2.5 C 17 2.5 20 5 20 11 L 19.5 61 C 19.5 67 16 70 11 70 C 6 70 3 67 3 61 L 3 11 C 3 5 6 2.5 11.5 2.5 Z' fill='%23ffffff' stroke='%231f1a21' stroke-width='3.6'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i18\\\" width=\\\"37\\\" height=\\\"34\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='37' height='34' viewBox='0 0 37 34'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='37' height='34' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-2.81' dy='-5.44' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='1.18' dy='2.28' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 4 29 C 3 18 6 8 13 5 C 20 3 25 8 29 16 C 31 21 33 26 32 29 C 24 32 12 32 4 29 Z' fill='%23b8c0c8' stroke='none'/%3E%3CclipPath id='fpal'%3E%3Cpath d='M 4 29 C 3 18 6 8 13 5 C 20 3 25 8 29 16 C 31 21 33 26 32 29 C 24 32 12 32 4 29 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23fpal)'%3E%3Cpath d='M 2 14 C 12 10 22 12 32 18 M 2 22 C 12 18 22 20 33 26' fill='none' stroke='%231f1a21' stroke-width='2'/%3E%3Cpath d='M 0 0 L 36 0 L 36 9 C 24 6 12 6 0 10 Z' fill='%23eef2f5' stroke='none' opacity='0.6'/%3E%3Cpath d='M 3 29 C 12 31 24 31 32 29' fill='none' stroke='%23e8b23a' stroke-width='3'/%3E%3C/g%3E%3Cpath d='M 4 29 C 3 18 6 8 13 5 C 20 3 25 8 29 16 C 31 21 33 26 32 29 C 24 32 12 32 4 29 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cellipse cx='14' cy='8' rx='1.8' ry='1.8' fill='%23b8c0c8' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='13.46' cy='7.46' rx='0.63' ry='0.63' fill='%23eef2f5' stroke='none'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i19\\\" width=\\\"34\\\" height=\\\"35\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='34' height='35' viewBox='0 0 34 35'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='34' height='35' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-2.67' dy='-5.51' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='1.12' dy='2.31' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 7 3.5 L 27 3.5 C 29.5 3.5 30.5 5.5 30.5 8.5 L 30.5 25 C 30.5 30 26 31.5 17 31.5 C 8 31.5 3.5 30 3.5 25 L 3.5 8.5 C 3.5 5.5 4.5 3.5 7 3.5 Z' fill='%23b8c0c8' stroke='none'/%3E%3CclipPath id='fgl'%3E%3Cpath d='M 7 3.5 L 27 3.5 C 29.5 3.5 30.5 5.5 30.5 8.5 L 30.5 25 C 30.5 30 26 31.5 17 31.5 C 8 31.5 3.5 30 3.5 25 L 3.5 8.5 C 3.5 5.5 4.5 3.5 7 3.5 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23fgl)'%3E%3Cpath d='M 4 22 L 30 22 M 4 27 L 30 27' fill='none' stroke='%231f1a21' stroke-width='1.6'/%3E%3Cpath d='M 0 13 L 34 13 L 34 17 L 0 17 Z' fill='%23eef2f5' stroke='none' opacity='0.6'/%3E%3Crect x='0' y='0' width='34' height='12.5' rx='0' fill='%23848e99' stroke='none'/%3E%3Cpath d='M 0 12.5 L 34 12.5' fill='none' stroke='%231f1a21' stroke-width='2.6'/%3E%3C/g%3E%3Cpath d='M 7 3.5 L 27 3.5 C 29.5 3.5 30.5 5.5 30.5 8.5 L 30.5 25 C 30.5 30 26 31.5 17 31.5 C 8 31.5 3.5 30 3.5 25 L 3.5 8.5 C 3.5 5.5 4.5 3.5 7 3.5 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cellipse cx='17' cy='8' rx='1.8' ry='1.8' fill='%23e8b23a' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='16.46' cy='7.46' rx='0.63' ry='0.63' fill='%23ffe28a' stroke='none'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i20\\\" width=\\\"85\\\" height=\\\"82\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='85' height='82' viewBox='0 0 85 82'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='85' height='82' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-4.74' dy='-9.93' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='1.99' dy='4.17' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 5.5 3.5 L 55 3.5 C 68 4.5 76 18 82.5 40 C 76.5 60 68 72 52 76 L 6 78.5 C 4.5 78.5 3.5 77.5 3.5 76 L 3.5 6 C 3.5 4.5 4.5 3.5 5.5 3.5 Z' fill='%23b8282c' stroke='none'/%3E%3CclipPath id='ks'%3E%3Cpath d='M 5.5 3.5 L 55 3.5 C 68 4.5 76 18 82.5 40 C 76.5 60 68 72 52 76 L 6 78.5 C 4.5 78.5 3.5 77.5 3.5 76 L 3.5 6 C 3.5 4.5 4.5 3.5 5.5 3.5 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23ks)'%3E%3Cpath d='M 0 35 L 90 35 L 90 46 L 0 46 Z M 33 0 L 44 0 L 44 82 L 33 82 Z' fill='%23f2eee8' stroke='none'/%3E%3Cpath d='M 38.5 30 L 44 35 L 38.5 40.5 L 33 35 Z' fill='%23e8b23a' stroke='none'/%3E%3Cpath d='M 14 14 L 20 18 M 56 58 L 62 54' fill='none' stroke='%235e6873' stroke-width='1.2'/%3E%3Cpath d='M 5.5 3.5 L 55 3.5 C 68 4.5 76 18 82.5 40 C 76.5 60 68 72 52 76 L 6 78.5 C 4.5 78.5 3.5 77.5 3.5 76 L 3.5 6 C 3.5 4.5 4.5 3.5 5.5 3.5 Z' fill='none' stroke='%23b8c0c8' stroke-width='8'/%3E%3Cpath d='M 5.5 3.5 L 55 3.5 C 68 4.5 76 18 82.5 40 C 76.5 60 68 72 52 76 L 6 78.5 C 4.5 78.5 3.5 77.5 3.5 76 L 3.5 6 C 3.5 4.5 4.5 3.5 5.5 3.5 Z' fill='none' stroke='%23eef2f5' stroke-width='2.4' opacity='0.6'/%3E%3C/g%3E%3Cpath d='M 5.5 3.5 L 55 3.5 C 68 4.5 76 18 82.5 40 C 76.5 60 68 72 52 76 L 6 78.5 C 4.5 78.5 3.5 77.5 3.5 76 L 3.5 6 C 3.5 4.5 4.5 3.5 5.5 3.5 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cellipse cx='8' cy='8' rx='2.2' ry='2.2' fill='%23b8c0c8' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='7.34' cy='7.34' rx='0.77' ry='0.77' fill='%23eef2f5' stroke='none'/%3E%3Cellipse cx='8' cy='73' rx='2.2' ry='2.2' fill='%23b8c0c8' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='7.34' cy='72.34' rx='0.77' ry='0.77' fill='%23eef2f5' stroke='none'/%3E%3Cellipse cx='52' cy='8' rx='2.2' ry='2.2' fill='%23b8c0c8' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='51.34' cy='7.34' rx='0.77' ry='0.77' fill='%23eef2f5' stroke='none'/%3E%3Cellipse cx='50' cy='72' rx='2.2' ry='2.2' fill='%23b8c0c8' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='49.34' cy='71.34' rx='0.77' ry='0.77' fill='%23eef2f5' stroke='none'/%3E%3Cellipse cx='76' cy='40' rx='2.2' ry='2.2' fill='%23b8c0c8' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='75.34' cy='39.34' rx='0.77' ry='0.77' fill='%23eef2f5' stroke='none'/%3E%3C/g%3E%3C/svg%3E\\\"/><filter id=\\\"t0\\\" color-interpolation-filters=\\\"sRGB\\\"><feColorMatrix values=\\\"0.965 0 0 0 0 0 0.824 0 0 0 0 0 0.69 0 0 0 0 0 1 0\\\"/></filter><clipPath id=\\\"c0\\\"><path d=\\\"M343.5,251.5 342.9,263.8 324.7,250.8zM325,250.5 343.1,263.5 324.3,262.9zM325.8,250.7 325.2,263.1 307,250zM307.2,249.8 325.4,262.8 306.6,262.1zM308.1,249.9 307.4,262.3 289.3,249.3zM289.5,249 307.7,262 288.9,261.4zM290.4,249.2 289.7,261.6 271.6,248.5zM271.8,248.3 289.9,261.3 271.1,260.6zM343.1,263 342.4,275.4 324.3,262.4zM324.5,262.1 342.6,275.1 323.8,274.5zM325.3,262.3 324.7,274.6 306.5,261.6zM306.8,261.3 324.9,274.4 306.1,273.7zM307.6,261.5 306.9,273.9 288.8,260.9zM289,260.6 307.2,273.6 288.4,272.9zM289.9,260.8 289.2,273.1 271.1,260.1zM271.3,259.8 289.4,272.8 270.6,272.2zM342.6,274.6 341.9,287 323.8,273.9zM324,273.7 342.1,286.7 323.3,286zM324.8,273.8 324.2,286.2 306,273.2zM306.3,272.9 324.4,285.9 305.6,285.3zM307.1,273.1 306.5,285.5 288.3,272.4zM288.5,272.1 306.7,285.2 287.9,284.5zM289.4,272.3 288.7,284.7 270.6,271.7zM270.8,271.4 289,284.4 270.2,283.8zM342.1,286.2 341.4,298.5 323.3,285.5zM323.5,285.2 341.6,298.3 322.8,297.6zM324.3,285.4 323.7,297.8 305.5,284.7zM305.8,284.5 323.9,297.5 305.1,296.8zM306.6,284.7 306,297 287.8,284zM288,283.7 306.2,296.7 287.4,296.1zM288.9,283.9 288.2,296.3 270.1,283.2zM270.3,283 288.5,296 269.7,295.3zM341.6,297.7 340.9,310.1 322.8,297.1zM323,296.8 341.1,309.8 322.3,309.2zM323.9,297 323.2,309.3 305.1,296.3zM305.3,296 323.4,309.1 304.6,308.4zM306.1,296.2 305.5,308.6 287.3,295.6zM287.6,295.3 305.7,308.3 286.9,307.6zM288.4,295.5 287.7,307.8 269.6,294.8zM269.8,294.5 288,307.6 269.2,306.9zM323.4,308.5 322.7,320.9 304.6,307.9zM304.8,307.6 322.9,320.6 304.1,320zM305.6,307.8 305,320.2 286.8,307.1zM287.1,306.8 305.2,319.9 286.4,319.2zM287.9,307 287.3,319.4 269.1,306.4zM269.3,306.1 287.5,319.1 268.7,318.5z\\\"/></clipPath><clipPath id=\\\"c1\\\"><path d=\\\"M341.1,309.3 340,320.9 322.3,308.7z\\\"/></clipPath><clipPath id=\\\"c2\\\"><path d=\\\"M322.5,308.4 340.2,320.6 321.8,320.7z\\\"/></clipPath><clipPath id=\\\"c3\\\"><path d=\\\"M340.2,320.2 339.3,329.6 321.8,320.3z\\\"/></clipPath><clipPath id=\\\"c4\\\"><path d=\\\"M322,320 339.5,329.3 320.9,331z\\\"/></clipPath><clipPath id=\\\"c5\\\"><path d=\\\"M322.9,320.1 321.8,331.2 304.1,319.5z\\\"/></clipPath><clipPath id=\\\"c6\\\"><path d=\\\"M304.3,319.2 322,330.9 303.4,332z\\\"/></clipPath><clipPath id=\\\"c7\\\"><path d=\\\"M305.1,319.4 304.2,332.2 286.3,318.7zM286.6,318.4 304.5,331.9 285.9,331.5zM287.4,318.6 286.7,331.7 268.6,317.9z\\\"/></clipPath><clipPath id=\\\"c8\\\"><path d=\\\"M268.9,317.7 286.9,331.4 268.2,330z\\\"/></clipPath><clipPath id=\\\"c9\\\"><path d=\\\"M339.4,328.8 340.9,338 320.8,330.6z\\\"/></clipPath><clipPath id=\\\"c10\\\"><path d=\\\"M320.9,330.3 341,337.7 322.5,341.2z\\\"/></clipPath><clipPath id=\\\"c11\\\"><path d=\\\"M321.9,330.3 323.4,341.3 303.3,331.6z\\\"/></clipPath><clipPath id=\\\"c12\\\"><path d=\\\"M303.5,331.3 323.5,340.9 304.7,344.1z\\\"/></clipPath><clipPath id=\\\"c13\\\"><path d=\\\"M304.4,331.3 305.6,344.2 285.8,331z\\\"/></clipPath><clipPath id=\\\"c14\\\"><path d=\\\"M286,330.7 305.7,343.9 286.8,345.5z\\\"/></clipPath><clipPath id=\\\"c15\\\"><path d=\\\"M286.8,330.8 287.6,345.6 268.2,329.5z\\\"/></clipPath><clipPath id=\\\"c16\\\"><path d=\\\"M268.4,329.2 287.8,345.3 269,346.2z\\\"/></clipPath><clipPath id=\\\"c17\\\"><path d=\\\"M340.9,337.2 343,349.4 322.3,340.8zM322.5,340.4 343.1,349.1 324.6,352.6zM342.9,348.6 345,360.8 324.5,352.1zM324.6,351.7 345.2,360.5 326.7,364zM325.5,351.7 327.6,363.9 307,355.2zM307.2,354.9 327.7,363.6 309.2,367.1zM308,354.9 310.1,367.1 289.6,358.4zM289.7,358.1 310.3,366.8 291.8,370.3zM345,360 347.1,372.2 326.5,363.5zM326.7,363.1 347.2,371.9 328.8,375.4zM327.6,363.1 329.6,375.3 309.1,366.6zM309.2,366.3 329.8,375 311.3,378.5zM310.1,366.3 312.2,378.5 291.6,369.8zM291.8,369.5 312.3,378.2 293.9,381.7zM347.1,371.4 349.1,383.6 328.6,374.9zM328.7,374.5 349.3,383.3 330.8,386.7zM329.6,374.5 331.7,386.7 311.1,378zM311.3,377.7 331.8,386.4 313.4,389.9zM312.2,377.7 314.2,389.9 293.7,381.2zM293.8,380.9 314.4,389.6 295.9,393.1zM294.7,380.8 296.8,393.1 276.2,384.3zM276.4,384 296.9,392.7 278.5,396.2zM349.1,382.8 351.2,395 330.7,386.3zM330.8,385.9 351.4,394.6 332.9,398.1zM331.7,385.9 333.8,398.1 313.2,389.4zM313.4,389.1 333.9,397.8 315.4,401.3zM314.2,389.1 316.3,401.3 295.8,392.6zM295.9,392.3 316.5,401 298,404.5zM296.8,392.2 298.9,404.5 278.3,395.7zM278.5,395.4 299,404.1 280.5,407.6zM351.2,394.2 353.3,406.4 332.7,397.6zM332.9,397.3 353.4,406 334.9,409.5zM333.8,397.3 335.8,409.5 315.3,400.8zM315.4,400.5 336,409.2 317.5,412.7zM316.3,400.5 318.4,412.7 297.8,404zM298,403.6 318.5,412.4 300,415.9zM298.8,403.6 300.9,415.8 280.4,407.1zM280.5,406.8 301.1,415.5 282.6,419zM353.3,405.5 355.3,417.8 334.8,409zM334.9,408.7 355.5,417.4 337,420.9zM335.8,408.7 337.9,420.9 317.3,412.2zM317.5,411.9 338,420.6 319.6,424.1zM318.4,411.9 320.4,424.1 299.9,415.4zM300,415 320.6,423.8 302.1,427.2zM300.9,415 303,427.2 282.4,418.5zM282.6,418.2 303.1,426.9 284.7,430.4z\\\"/></clipPath><clipPath id=\\\"c18\\\"><path d=\\\"M323.4,340.4 325.5,352.6 304.6,343.6z\\\"/></clipPath><clipPath id=\\\"c19\\\"><path d=\\\"M304.7,343.3 325.7,352.2 307.2,355.7z\\\"/></clipPath><clipPath id=\\\"c20\\\"><path d=\\\"M305.6,343.3 308,355.7 286.7,345z\\\"/></clipPath><clipPath id=\\\"c21\\\"><path d=\\\"M286.8,344.7 308.2,355.4 289.8,358.9z\\\"/></clipPath><clipPath id=\\\"c22\\\"><path d=\\\"M287.7,344.7 290.6,358.9 268.9,345.6z\\\"/></clipPath><clipPath id=\\\"c23\\\"><path d=\\\"M269,345.3 290.7,358.6 272.3,362.1z\\\"/></clipPath><clipPath id=\\\"c24\\\"><path d=\\\"M290.6,358.1 292.7,370.3 272.1,361.5zM272.2,361.2 292.8,370 274.3,373.4zM292.7,369.5 294.7,381.7 274.2,372.9zM274.3,372.6 294.9,381.3 276.4,384.8z\\\"/></clipPath><clipPath id=\\\"c25\\\"><path d=\\\"M305.3,370.5 305.6,383.6 287.7,371.3zM287.9,371 305.8,383.3 288.3,384.1zM288.8,371.1 289.1,384.2 271.2,371.9zM271.4,371.6 289.3,383.9 271.8,384.7zM272.3,371.7 272.6,384.8 254.7,372.5zM254.9,372.2 272.8,384.5 255.3,385.3zM255.8,372.3 256.1,385.4 238.2,373.1zM238.4,372.8 256.3,385.1 238.8,385.9zM305.7,382.7 306.1,395.8 288.2,383.5zM288.4,383.2 306.3,395.5 288.7,396.3zM289.2,383.3 289.6,396.4 271.7,384.1zM271.9,383.8 289.8,396.1 272.2,396.9zM272.7,383.9 273.1,397 255.2,384.7zM255.4,384.4 273.3,396.7 255.7,397.5zM256.2,384.6 256.6,397.6 238.7,385.4zM238.9,385.1 256.8,397.3 239.2,398.1zM306.2,394.9 306.5,408 288.6,395.7zM288.9,395.4 306.7,407.7 289.2,408.5zM289.7,395.5 290,408.6 272.1,396.3zM272.4,396 290.2,408.3 272.7,409.1zM273.2,396.2 273.5,409.2 255.6,397zM255.9,396.7 273.7,408.9 256.2,409.7zM256.7,396.8 257,409.9 239.1,397.6zM239.4,397.3 257.2,409.6 239.7,410.4zM306.6,407.1 307,420.2 289.1,408zM289.3,407.7 307.2,419.9 289.7,420.7zM290.1,407.8 290.5,420.8 272.6,408.6zM272.8,408.3 290.7,420.5 273.2,421.4zM273.6,408.4 274,421.5 256.1,409.2zM256.3,408.9 274.2,421.2 256.7,422zM257.1,409 257.5,422.1 239.6,409.8zM239.8,409.5 257.7,421.8 240.2,422.6zM274.1,420.6 274.5,433.9 256.6,421.4zM256.8,421.1 274.8,433.6 257.2,433.9zM257.6,421.2 258.1,434.1 240.1,422z\\\"/></clipPath><clipPath id=\\\"c26\\\"><path d=\\\"M307.1,419.4 307.5,432.9 289.6,420.2zM289.8,419.9 307.7,432.6 290.2,433.4zM290.6,420 291,433.5 273.1,420.8zM273.3,420.5 291.2,433.2 273.7,433.8z\\\"/></clipPath><clipPath id=\\\"c27\\\"><path d=\\\"M240.3,421.7 258.3,433.8 240.8,433.9z\\\"/></clipPath><clipPath id=\\\"c28\\\"><path d=\\\"M307.6,432 307.4,446.9 290.1,432.8z\\\"/></clipPath><clipPath id=\\\"c29\\\"><path d=\\\"M290.3,432.5 307.7,446.6 290.1,446.7z\\\"/></clipPath><clipPath id=\\\"c30\\\"><path d=\\\"M291.1,432.7 290.9,446.8 273.6,433.2z\\\"/></clipPath><clipPath id=\\\"c31\\\"><path d=\\\"M273.9,432.9 291.1,446.5 273.5,446.4z\\\"/></clipPath><clipPath id=\\\"c32\\\"><path d=\\\"M274.7,433.1 274.3,446.5 257.2,433.4z\\\"/></clipPath><clipPath id=\\\"c33\\\"><path d=\\\"M257.4,433.1 274.6,446.3 257,445.9zM257.9,445.2 257.2,458.2 240.4,444.6zM240.6,444.3 257.4,457.9 239.9,457.3z\\\"/></clipPath><clipPath id=\\\"c34\\\"><path d=\\\"M258.2,433.2 257.8,446 240.7,433.3z\\\"/></clipPath><clipPath id=\\\"c35\\\"><path d=\\\"M240.9,433 258,445.7 240.4,445.1z\\\"/></clipPath><clipPath id=\\\"c36\\\"><path d=\\\"M307.6,446 306.6,460.4 290,446.1z\\\"/></clipPath><clipPath id=\\\"c37\\\"><path d=\\\"M290.3,445.8 306.9,460.1 289.4,459.5z\\\"/></clipPath><clipPath id=\\\"c38\\\"><path d=\\\"M291,446 290.2,459.6 273.4,445.8z\\\"/></clipPath><clipPath id=\\\"c39\\\"><path d=\\\"M273.7,445.5 290.4,459.3 272.9,458.7zM274.5,445.7 273.7,458.9 256.9,445.3zM257.1,445 273.9,458.6 256.4,458zM306.8,459.5 306.1,472.6 289.3,458.9zM289.5,458.6 306.4,472.3 288.8,471.7zM290.3,458.8 289.6,471.8 272.8,458.2zM273,457.9 289.9,471.6 272.3,470.9zM273.8,458.1 273.1,471.1 256.3,457.4zM256.5,457.2 273.4,470.8 255.8,470.2zM257.4,457.3 256.6,470.4 239.8,456.7zM240,456.4 256.9,470.1 239.3,469.5zM306.3,471.7 305.6,484.8 288.8,471.1zM289,470.8 305.8,484.5 288.3,483.9zM289.8,471 289.1,484.1 272.3,470.4zM272.5,470.1 289.3,483.8 271.8,483.2zM273.3,470.3 272.6,483.3 255.8,469.7zM256,469.4 272.8,483.1 255.3,482.5zM256.8,469.6 256.1,482.6 239.3,468.9zM239.5,468.7 256.3,482.3 238.8,481.7z\\\"/></clipPath><clipPath id=\\\"c40\\\"><path d=\\\"M305.8,483.9 305.1,497 288.2,483.3zM288.5,483 305.3,496.7 287.8,496.1zM289.3,483.2 288.6,496.3 271.7,482.6zM272,482.3 288.8,496 271.3,495.4zM272.8,482.5 272.1,495.6 255.2,481.9zM255.5,481.6 272.3,495.3 254.8,494.7zM256.3,481.8 255.6,494.8 238.7,481.2zM239,480.9 255.8,494.6 238.3,494zM305.2,496.2 304.5,509.2 287.7,495.5zM287.9,495.3 304.8,508.9 287.2,508.3zM288.7,495.4 288,508.5 271.2,494.8zM271.4,494.5 288.3,508.2 270.7,507.6zM272.3,494.7 271.5,507.8 254.7,494.1zM254.9,493.8 271.8,507.5 254.2,506.9zM255.8,494 255,507.1 238.2,493.4zM238.4,493.1 255.3,506.8 237.7,506.2z\\\"/></clipPath><clipPath id=\\\"c41\\\"><path d=\\\"M216.9,371.2 217,384.3 199.3,371.7zM199.5,371.4 217.2,384 199.7,384.5zM200.4,371.5 200.5,384.6 182.8,372zM183,371.7 200.7,384.3 183.2,384.8zM183.8,371.9 184,385 166.3,372.4zM166.5,372.1 184.2,384.7 166.7,385.2zM167.3,372.2 167.5,385.3 149.8,372.7zM150,372.4 167.7,385 150.1,385.5zM217.1,383.4 217.3,396.5 199.6,383.9zM199.8,383.6 217.5,396.2 199.9,396.7zM200.6,383.7 200.7,396.8 183.1,384.3zM183.3,384 201,396.5 183.4,397.1zM184.1,384.1 184.2,397.2 166.6,384.6zM166.8,384.3 184.5,396.9 166.9,397.4zM167.6,384.5 167.7,397.5 150.1,385zM150.3,384.7 168,397.2 150.4,397.8zM217.4,395.6 217.5,408.7 199.8,396.1zM200.1,395.9 217.7,408.4 200.2,408.9zM200.9,396 201,409.1 183.3,396.5zM183.5,396.2 201.2,408.8 183.7,409.3zM184.4,396.3 184.5,409.4 166.8,396.8zM167,396.6 184.7,409.1 167.2,409.6zM167.9,396.7 168,409.8 150.3,397.2zM150.5,396.9 168.2,409.5 150.7,410zM217.6,407.9 217.8,420.9 200.1,408.4zM200.3,408.1 218,420.6 200.4,421.2zM201.1,408.2 201.3,421.3 183.6,408.7zM183.8,408.4 201.5,421 183.9,421.5zM184.6,408.6 184.8,421.6 167.1,409.1zM167.3,408.8 185,421.3 167.4,421.9zM168.1,408.9 168.3,422 150.6,409.4zM150.8,409.1 168.5,421.7 150.9,422.2zM217.9,420.1 218.1,433.4 200.4,420.6zM200.6,420.3 218.3,433.1 200.8,433.7zM201.4,420.4 201.6,433.8 183.8,421zM184.1,420.7 201.8,433.5 184.3,433.9zM184.9,420.8 185.1,434 167.3,421.3zM167.6,421 185.3,433.7 167.8,434zM168.4,421.1 168.6,434.1 150.8,421.7z\\\"/></clipPath><clipPath id=\\\"c42\\\"><path d=\\\"M151,421.4 168.8,433.8 151.3,433.9z\\\"/></clipPath><clipPath id=\\\"c43\\\"><path d=\\\"M218.2,432.5 218,446.6 200.7,433.1zM200.9,432.8 218.3,446.3 200.7,446.5zM201.7,432.9 201.5,446.6 184.2,433.3z\\\"/></clipPath><clipPath id=\\\"c44\\\"><path d=\\\"M184.4,433 201.7,446.3 184.1,446.3zM185.2,433.2 185,446.5 167.7,433.4zM167.9,433.1 185.2,446.2 167.6,446zM168.7,433.2 168.4,446.1 151.2,433.3zM201.7,445.8 201.1,459.2 184.1,445.7zM184.3,445.4 201.3,458.9 183.8,458.6zM185.1,445.6 184.6,458.8 167.5,445.4z\\\"/></clipPath><clipPath id=\\\"c45\\\"><path d=\\\"M151.4,433.1 168.6,445.9 151.1,445.6z\\\"/></clipPath><clipPath id=\\\"c46\\\"><path d=\\\"M218.2,445.8 217.6,459.6 200.6,445.9z\\\"/></clipPath><clipPath id=\\\"c47\\\"><path d=\\\"M200.9,445.6 217.8,459.3 200.3,459zM167.8,445.1 184.8,458.5 167.2,458.2zM168.6,445.3 168.1,458.4 151,445zM151.2,444.7 168.3,458.1 150.7,457.8zM217.7,458.7 217.3,471.8 200.2,458.5zM200.4,458.2 217.5,471.5 200,471.3zM201.2,458.3 200.8,471.4 183.7,458zM183.9,457.8 201,471.1 183.4,470.8zM184.7,457.9 184.3,471 167.2,457.6zM167.4,457.3 184.5,470.7 166.9,470.4zM168.2,457.5 167.8,470.6 150.7,457.2zM150.9,456.9 168,470.3 150.4,470z\\\"/></clipPath><clipPath id=\\\"c48\\\"><path d=\\\"M217.4,471 217,484.1 199.9,470.7zM200.1,470.4 217.2,483.8 199.6,483.5zM200.9,470.6 200.5,483.6 183.4,470.3zM183.6,470 200.7,483.4 183.1,483.1zM184.4,470.1 184,483.2 166.9,469.9zM167.1,469.6 184.2,482.9 166.6,482.6zM167.9,469.7 167.4,482.8 150.4,469.4zM150.6,469.2 167.7,482.5 150.1,482.2zM217.1,483.2 216.7,496.3 199.6,482.9zM199.8,482.6 216.9,496 199.3,495.7zM200.6,482.8 200.2,495.9 183.1,482.5zM183.3,482.2 200.4,495.6 182.8,495.3zM184.1,482.4 183.6,495.4 166.6,482.1zM166.8,481.8 183.9,495.2 166.3,494.9zM167.6,482 167.1,495 150.1,481.7zM150.3,481.4 167.4,494.8 149.8,494.5zM216.8,495.4 216.4,508.5 199.3,495.1zM199.5,494.9 216.6,508.2 199,507.9zM200.3,495 199.8,508.1 182.8,494.7zM183,494.4 200.1,507.8 182.5,507.5zM183.8,494.6 183.3,507.7 166.3,494.3zM166.5,494 183.6,507.4 166,507.1zM167.3,494.2 166.8,507.3 149.8,493.9zM150,493.6 167.1,507 149.5,506.7z\\\"/></clipPath><clipPath id=\\\"c49\\\"><path d=\\\"M326.6,348.3 326.5,360.5 307.1,348.4zM307.3,348.1 326.7,360.2 307.1,360.3zM308.1,348.3 308,360.5 288.6,348.4zM288.8,348.1 308.2,360.2 288.6,360.3zM289.7,348.3 289.5,360.5 270.1,348.4zM270.3,348.1 289.7,360.2 270.1,360.3zM271.2,348.3 271,360.5 251.6,348.4zM251.8,348.1 271.2,360.2 251.7,360.3zM252.7,348.3 252.5,360.5 233.1,348.4zM233.3,348.1 252.7,360.2 233.2,360.3zM234.2,348.3 234.1,360.5 214.6,348.4zM214.8,348.1 234.2,360.2 214.7,360.3zM215.7,348.3 215.6,360.5 196.1,348.4zM196.3,348.1 215.8,360.2 196.2,360.3zM197.2,348.3 197.1,360.5 177.6,348.4zM177.8,348.1 197.3,360.2 177.7,360.3zM178.7,348.3 178.6,360.5 159.1,348.4zM159.3,348.1 178.8,360.2 159.2,360.3zM160.2,348.3 160.1,360.5 140.6,348.4zM140.8,348.1 160.3,360.2 140.7,360.3zM141.7,348.3 141.6,360.5 122.2,348.4zM122.4,348.1 141.8,360.2 122.2,360.3zM326.6,359.7 326.5,371.9 307.1,359.8zM307.3,359.6 326.7,371.6 307.1,371.8zM308.1,359.7 308,371.9 288.6,359.8zM288.8,359.6 308.2,371.6 288.6,371.8zM289.7,359.7 289.5,371.9 270.1,359.8zM270.3,359.6 289.7,371.6 270.1,371.8zM271.2,359.7 271,371.9 251.6,359.8zM251.8,359.6 271.2,371.6 251.7,371.8zM252.7,359.7 252.5,371.9 233.1,359.8zM233.3,359.6 252.7,371.6 233.2,371.8zM234.2,359.7 234.1,371.9 214.6,359.8zM214.8,359.6 234.2,371.6 214.7,371.8zM215.7,359.7 215.6,371.9 196.1,359.8zM196.3,359.6 215.8,371.6 196.2,371.8zM197.2,359.7 197.1,371.9 177.6,359.8zM177.8,359.6 197.3,371.6 177.7,371.8zM178.7,359.7 178.6,371.9 159.1,359.8zM159.3,359.6 178.8,371.6 159.2,371.8zM160.2,359.7 160.1,371.9 140.6,359.8zM140.8,359.6 160.3,371.6 140.7,371.8zM141.7,359.7 141.6,371.9 122.2,359.8zM122.4,359.6 141.8,371.6 122.2,371.8zM326.6,371.1 326.5,383.3 307.1,371.3zM307.3,371 326.7,383.1 307.1,383.2zM308.1,371.1 308,383.3 288.6,371.3zM288.8,371 308.2,383.1 288.6,383.2zM289.7,371.1 289.5,383.3 270.1,371.3zM270.3,371 289.7,383.1 270.1,383.2zM271.2,371.1 271,383.3 251.6,371.3zM251.8,371 271.2,383.1 251.7,383.2zM252.7,371.1 252.5,383.3 233.1,371.3zM233.3,371 252.7,383.1 233.2,383.2zM234.2,371.1 234.1,383.3 214.6,371.3zM214.8,371 234.2,383.1 214.7,383.2zM215.7,371.1 215.6,383.3 196.1,371.3zM196.3,371 215.8,383.1 196.2,383.2zM197.2,371.1 197.1,383.3 177.6,371.3zM177.8,371 197.3,383.1 177.7,383.2zM178.7,371.1 178.6,383.3 159.1,371.3zM159.3,371 178.8,383.1 159.2,383.2zM160.2,371.1 160.1,383.3 140.6,371.3zM140.8,371 160.3,383.1 140.7,383.2zM141.7,371.1 141.6,383.3 122.2,371.3zM122.4,371 141.8,383.1 122.2,383.2zM289.7,382.6 289.6,394.6 270.1,382.7zM270.3,382.4 289.8,394.3 270.2,394.6zM271.2,382.6 271.1,394.7 251.6,382.7zM251.8,382.4 271.3,394.5 251.7,394.8zM252.7,382.6 252.6,394.9 233.1,382.7zM233.3,382.4 252.8,394.6 233.3,395zM234.2,382.6 234.1,395.1 214.6,382.7zM214.8,382.4 234.3,394.8 214.7,394.4zM215.7,382.6 215.6,394.6 196.1,382.7zM196.3,382.4 215.8,394.3 196.2,394.5zM197.2,382.6 197.1,394.7 177.6,382.7zM177.8,382.4 197.3,394.4 177.7,394.6zM178.7,382.6 178.6,394.8 159.1,382.7zM159.3,382.4 178.8,394.5 159.3,394.7zM160.2,382.6 160.1,394.9 140.6,382.7zM140.8,382.4 160.3,394.6 140.8,394.8zM141.7,382.6 141.6,395 122.2,382.7zM122.4,382.4 141.8,394.7 122.3,395zM197.2,393.9 197.3,406 177.7,394.1zM177.9,393.9 197.5,405.7 178,406.1zM178.8,394 178.9,406.2 159.2,394.2zM159.4,394 179,405.9 159.5,406.3zM160.3,394.1 160.4,406.5 140.7,394.4z\\\"/></clipPath><clipPath id=\\\"c50\\\"><path d=\\\"M326.6,382.6 326.6,394.2 307.1,382.7zM307.3,382.4 326.8,393.9 307.2,394.2zM308.2,382.6 308.1,394.4 288.6,382.7zM288.8,382.4 308.3,394.1 288.7,394.4zM308.2,393.6 308.5,405.2 288.6,393.9z\\\"/></clipPath><clipPath id=\\\"c51\\\"><path d=\\\"M326.7,393.4 327,404.7 307.1,393.8zM307.3,393.5 327.2,404.4 307.6,405.1zM327.1,404 327.7,415.4 307.5,404.6z\\\"/></clipPath><clipPath id=\\\"c52\\\"><path d=\\\"M288.8,393.6 308.7,404.9 289.1,405.5zM289.7,393.8 290,405.7 270.2,394.1zM270.3,393.8 290.2,405.4 270.6,406zM308.6,404.4 309.2,416.1 289,405zM289.2,404.8 309.3,415.8 289.8,416.7zM290.1,404.9 290.7,416.8 270.6,405.5zM270.7,405.2 290.9,416.5 271.3,417.4zM271.6,405.3 272.2,417.5 252.1,406zM308.4,415.2 328.2,426.5 308.7,427.4zM309.3,415.3 309.6,427.5 289.7,416.2zM328.2,426 328.5,438.3 308.6,426.9z\\\"/></clipPath><clipPath id=\\\"c53\\\"><path d=\\\"M271.2,394 271.5,406.1 251.7,394.3zM251.9,394 271.7,405.8 252.1,406.4zM252.8,394.1 253,406.6 233.2,394.5z\\\"/></clipPath><clipPath id=\\\"c54\\\"><path d=\\\"M233.4,394.2 253.2,406.3 233.7,406.9z\\\"/></clipPath><clipPath id=\\\"c55\\\"><path d=\\\"M234.3,394.3 234.5,407 214.7,393.9z\\\"/></clipPath><clipPath id=\\\"c56\\\"><path d=\\\"M214.8,393.6 234.7,406.8 214.9,405.5z\\\"/></clipPath><clipPath id=\\\"c57\\\"><path d=\\\"M215.7,393.8 215.8,405.7 196.2,394zM196.4,393.8 216,405.4 196.5,405.8zM216,404.9 216.2,416.9 196.4,405.3zM196.6,405 216.4,416.6 196.8,417.1zM197.5,405.2 197.7,417.3 177.9,405.6zM216.3,416.1 216.5,428.3 196.8,416.6z\\\"/></clipPath><clipPath id=\\\"c58\\\"><path d=\\\"M140.9,394.1 160.6,406.2 141,406.6zM141.8,394.2 141.9,406.7 122.2,394.5zM122.4,394.2 142.1,406.4 122.5,406.9zM179,405.4 179.2,417.6 159.4,405.8zM159.6,405.6 179.4,417.4 159.9,417.9zM160.5,405.7 160.8,418 140.9,406.1zM141.1,405.8 160.9,417.8 141.4,418.3zM142,405.9 142.3,418.4 122.4,406.4zM122.6,406.1 142.5,418.1 122.9,418.7z\\\"/></clipPath><clipPath id=\\\"c59\\\"><path d=\\\"M307.7,404.3 327.8,415.1 308.3,416z\\\"/></clipPath><clipPath id=\\\"c60\\\"><path d=\\\"M252.3,405.7 272.4,417.2 252.8,418.1zM253.1,405.8 253.7,418.2 233.6,406.4zM233.8,406.1 253.9,417.9 234.4,418.8zM327.7,414.6 328.1,426.8 308.2,415.5zM289.9,415.9 309.8,427.2 290.2,428.1zM290.8,416 291.1,428.2 271.2,416.9zM271.4,416.6 291.3,427.9 271.7,428.8zM272.3,416.7 272.6,428.9 252.7,417.6zM252.9,417.3 272.8,428.6 253.3,429.5zM253.8,417.4 254.1,429.6 234.3,418.3zM234.5,418 254.3,429.3 234.8,430.2z\\\"/></clipPath><clipPath id=\\\"c61\\\"><path d=\\\"M234.7,406.3 235.2,418.9 214.9,405z\\\"/></clipPath><clipPath id=\\\"c62\\\"><path d=\\\"M215.1,404.8 235.4,418.6 215.3,416.7zM235.4,418.2 235.7,430.3 215.3,416.2zM215.5,415.9 235.8,430.1 215.5,428.1z\\\"/></clipPath><clipPath id=\\\"c63\\\"><path d=\\\"M178.1,405.3 197.9,417 178.4,417.5zM197,416.3 216.6,428 197.1,428.5zM197.8,416.5 198,428.7 178.3,417zM178.5,416.7 198.2,428.4 178.6,428.9zM179.4,416.9 179.5,429.1 159.8,417.4zM160,417.1 179.7,428.8 160.1,429.3zM160.9,417.3 161,429.5 141.3,417.8zM141.5,417.5 161.2,429.2 141.6,429.7zM142.4,417.6 142.5,429.9 122.8,418.2zM123,417.9 142.7,429.6 123.1,430.1zM216.6,427.5 216.7,439.7 197,428.1zM197.2,427.8 216.9,439.4 197.3,440zM198.1,427.9 198.2,440.1 178.5,428.4zM178.7,428.2 198.4,439.8 178.8,440.4zM179.6,428.3 179.7,440.5 160,428.8zM160.2,428.5 179.9,440.2 160.4,440.8zM161.1,428.7 161.2,440.9 141.5,429.2zM141.7,428.9 161.4,440.6 141.9,441.1zM142.6,429.1 142.8,441.3 123.1,429.6zM123.2,429.3 142.9,441 123.4,441.5z\\\"/></clipPath><clipPath id=\\\"c64\\\"><path d=\\\"M308.8,426.6 328.7,438 309.1,438.8zM309.7,426.7 310,438.9 290.1,427.6zM290.3,427.3 310.2,438.6 290.6,439.5zM291.2,427.4 291.5,439.6 271.7,428.3zM271.8,428 291.7,439.3 272.2,440.2zM272.7,428.1 273.1,440.3 253.2,429zM253.4,428.7 273.2,440 253.7,440.9zM254.3,428.8 254.6,441 234.7,429.7zM234.9,429.4 254.8,440.7 235.2,441.6z\\\"/></clipPath><clipPath id=\\\"c65\\\"><path d=\\\"M235.8,429.6 236.1,441.7 215.5,427.6zM215.7,427.4 236.3,441.5 215.8,439.5z\\\"/></clipPath><filter id=\\\"t1\\\" color-interpolation-filters=\\\"sRGB\\\"><feColorMatrix values=\\\"0.71 0 0 0 0 0 0.325 0 0 0 0 0 0.184 0 0 0 0 0 1 0\\\"/></filter><filter id=\\\"t2\\\" color-interpolation-filters=\\\"sRGB\\\"><feColorMatrix values=\\\"0.478 0 0 0 0 0 0.204 0 0 0 0 0 0.094 0 0 0 0 0 1 0\\\"/></filter><clipPath id=\\\"c66\\\"><path d=\\\"M159.6,253.9 157.6,266.3 140,251zM140.2,250.8 157.8,266 138.2,263.1zM141.1,251 139,263.4 121.5,248.1zM121.7,247.9 139.3,263.2 119.6,260.2zM122.5,248.2 120.5,260.5 102.9,245.3zM103.2,245 120.7,260.3 101.1,257.4zM157.8,265.5 155.7,277.9 138.2,262.6zM138.4,262.4 156,277.6 136.4,274.7zM139.3,262.6 137.2,275 119.6,259.7zM119.9,259.5 137.5,274.8 117.8,271.8zM120.7,259.8 118.7,272.1 101.1,256.9zM101.4,256.6 118.9,271.9 99.3,269zM156,277.1 153.9,289.5 136.4,274.2zM136.6,274 154.2,289.2 134.6,286.3zM137.5,274.2 135.4,286.6 117.8,271.3zM118.1,271.1 135.7,286.4 116,283.4zM118.9,271.4 116.9,283.7 99.3,268.5zM99.6,268.2 117.1,283.5 97.5,280.6zM154.2,288.7 152.1,301.1 134.6,285.8zM134.8,285.6 152.4,300.8 132.8,297.9zM135.7,285.9 133.6,298.2 116,282.9zM116.3,282.7 133.8,298 114.2,295zM117.1,283 115.1,295.3 97.5,280.1zM97.7,279.8 115.3,295.1 95.7,292.2zM152.4,300.3 150.3,312.7 132.8,297.4zM133,297.2 150.6,312.4 131,309.5zM133.9,297.5 131.8,309.8 114.2,294.5zM114.5,294.3 132,309.6 112.4,306.7zM115.3,294.6 113.3,306.9 95.7,291.7zM95.9,291.4 113.5,306.7 93.9,303.8zM150.6,311.9 148.5,324.3 131,309zM131.2,308.8 148.8,324 129.1,321.1zM132.1,309.1 130,321.4 112.4,306.1zM112.7,305.9 130.2,321.2 110.6,318.3zM113.5,306.2 111.5,318.5 93.9,303.3zM94.1,303 111.7,318.3 92.1,315.4z\\\"/></clipPath><clipPath id=\\\"c67\\\"><path d=\\\"M148.8,323.7 146.5,331.4 129.1,320.7z\\\"/></clipPath><clipPath id=\\\"c68\\\"><path d=\\\"M129.4,320.4 146.7,331.1 127.2,331.8z\\\"/></clipPath><clipPath id=\\\"c69\\\"><path d=\\\"M130.3,320.7 128,332 110.6,317.8z\\\"/></clipPath><clipPath id=\\\"c70\\\"><path d=\\\"M110.9,317.5 128.3,331.7 108.8,332.3z\\\"/></clipPath><clipPath id=\\\"c71\\\"><path d=\\\"M111.7,317.7 109.5,332.4 92.1,314.8z\\\"/></clipPath><clipPath id=\\\"c72\\\"><path d=\\\"M92.4,314.6 109.8,332.2 90.4,332.9z\\\"/></clipPath><clipPath id=\\\"c73\\\"><path d=\\\"M146.7,330.7 148.8,338.4 127.1,331.4z\\\"/></clipPath><clipPath id=\\\"c74\\\"><path d=\\\"M127.2,331.1 148.9,338.1 129.4,342.4z\\\"/></clipPath><clipPath id=\\\"c75\\\"><path d=\\\"M128.2,331.2 130.3,342.4 108.7,331.8z\\\"/></clipPath><clipPath id=\\\"c76\\\"><path d=\\\"M108.8,331.5 130.5,342.1 111,346.1z\\\"/></clipPath><clipPath id=\\\"c77\\\"><path d=\\\"M109.7,331.5 111.8,346.1 90.2,332.3z\\\"/></clipPath><clipPath id=\\\"c78\\\"><path d=\\\"M90.4,332 112,345.8 92.5,349.3z\\\"/></clipPath><clipPath id=\\\"c79\\\"><path d=\\\"M148.7,337.6 151.2,349.9 129.3,341.9zM129.4,341.6 151.3,349.6 131.9,353.8zM130.3,341.6 132.8,353.8 110.8,345.6zM110.9,345.3 132.9,353.5 113.6,357.7zM151.1,349.1 153.6,361.4 131.8,353.4zM131.9,353 153.7,361.1 134.3,365.3zM132.8,353 135.2,365.3 113.4,357.3zM113.5,356.9 135.4,365 116,369.2zM114.4,356.9 116.9,369.2 95.1,361.1zM95.2,360.8 117,368.9 97.7,373.1zM153.6,360.6 156,372.9 134.2,364.9zM134.3,364.5 156.2,372.6 136.8,376.8zM135.2,364.5 137.7,376.8 115.8,368.7zM116,368.4 137.8,376.5 118.4,380.7zM116.9,368.4 119.3,380.7 97.5,372.6zM97.6,372.3 119.5,380.3 100.1,384.6zM156,372.1 158.5,384.4 136.6,376.3zM136.7,376 158.6,384.1 139.2,388.3zM137.6,376 140.1,388.3 118.3,380.2zM118.4,379.9 140.2,387.9 120.9,392.2zM119.3,379.9 121.8,392.2 99.9,384.1zM100,383.8 121.9,391.8 102.5,396.1zM158.4,383.6 160.9,395.9 139,387.8zM139.2,387.5 161,395.6 141.6,399.8zM140.1,387.5 142.5,399.8 120.7,391.7zM120.8,391.4 142.7,399.4 123.3,403.7zM121.7,391.4 124.2,403.6 102.3,395.6zM102.5,395.3 124.3,403.3 104.9,407.6zM160.9,395.1 163.3,407.4 141.5,399.3zM141.6,399 163.4,407 144.1,411.3zM142.5,399 145,411.2 123.1,403.2zM123.3,402.9 145.1,410.9 125.7,415.2zM124.2,402.8 126.6,415.1 104.8,407.1zM104.9,406.8 126.8,414.8 107.4,419zM163.3,406.6 165.7,418.9 143.9,410.8zM144,410.5 165.9,418.5 146.5,422.8zM144.9,410.4 147.4,422.7 125.6,414.7zM125.7,414.4 147.5,422.4 128.2,426.7zM126.6,414.3 129,426.6 107.2,418.6zM107.3,418.2 129.2,426.3 109.8,430.5z\\\"/></clipPath><clipPath id=\\\"c80\\\"><path d=\\\"M111.8,345.2 114.5,357.7 92.3,348.7z\\\"/></clipPath><clipPath id=\\\"c81\\\"><path d=\\\"M92.4,348.4 114.6,357.4 95.2,361.6z\\\"/></clipPath></defs><g filter=\\\"url(#t0)\\\"><g clip-path=\\\"url(#c0)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.444 -0.104 -0.104 2.432 343 251.8)\\\"/></g><g clip-path=\\\"url(#c1)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.444 -0.104 -0.198 2.272 345.2 255.9)\\\"/></g><g clip-path=\\\"url(#c2)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.383 0 -0.105 2.431 342.6 251.4)\\\"/></g><g clip-path=\\\"url(#c3)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.383 0 -0.148 1.836 343.8 268.3)\\\"/></g><g clip-path=\\\"url(#c4)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.417 0.212 -0.199 2.159 345.5 257.6)\\\"/></g><g clip-path=\\\"url(#c5)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.443 -0.104 -0.199 2.159 345.7 259.9)\\\"/></g><g clip-path=\\\"url(#c6)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.413 0.139 -0.153 2.529 344 245.8)\\\"/></g><g clip-path=\\\"url(#c7)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.444 -0.104 -0.153 2.529 344.4 249.4)\\\"/></g><g clip-path=\\\"url(#c8)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.437 -0.201 -0.104 2.438 342.8 254.7)\\\"/></g><g clip-path=\\\"url(#c9)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.417 0.212 0.326 1.802 328.1 269.4)\\\"/></g><g clip-path=\\\"url(#c10)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.414 0.448 0.331 2.168 327.9 255.6)\\\"/></g><g clip-path=\\\"url(#c11)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.413 0.139 0.331 2.168 327.9 257.8)\\\"/></g><g clip-path=\\\"url(#c12)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.451 0.394 0.272 2.562 330.4 241)\\\"/></g><g clip-path=\\\"url(#c13)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.419 -0.068 0.272 2.562 330 247.7)\\\"/></g><g clip-path=\\\"url(#c14)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.473 0.194 0.188 2.967 333.9 228.6)\\\"/></g><g clip-path=\\\"url(#c15)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.437 -0.201 0.188 2.967 333.1 237.2)\\\"/></g><g clip-path=\\\"url(#c16)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.458 0.092 0.155 3.42 334.8 213.7)\\\"/></g><g clip-path=\\\"url(#c17)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.414 0.448 0.434 2.395 324 247)\\\"/></g><g clip-path=\\\"url(#c18)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.451 0.394 0.445 2.377 323.9 248)\\\"/></g><g clip-path=\\\"url(#c19)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.407 0.436 0.512 2.441 320.7 245)\\\"/></g><g clip-path=\\\"url(#c20)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.473 0.194 0.512 2.441 321.7 248.5)\\\"/></g><g clip-path=\\\"url(#c21)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.407 0.436 0.613 2.81 316.4 229.3)\\\"/></g><g clip-path=\\\"url(#c22)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.458 0.092 0.613 2.81 317.5 236.8)\\\"/></g><g clip-path=\\\"url(#c23)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.409 0.433 0.687 3.329 313.3 207.3)\\\"/></g><g clip-path=\\\"url(#c24)\\\"><use href=\\\"#i0\\\" transform=\\\"matrix(-2.409 0.433 0.434 2.395 324.1 247)\\\"/></g></g><g><use href=\\\"#i1\\\" transform=\\\"matrix(-2.444 -0.104 -0.104 2.444 350.5 249.6)\\\"/></g><g><use href=\\\"#i2\\\" transform=\\\"matrix(-2.407 0.436 0.436 2.407 357.1 347.3)\\\"/></g><g><use href=\\\"#i3\\\" transform=\\\"matrix(-2.363 0.633 0.633 2.363 600.7 256.3)\\\"/></g><g filter=\\\"url(#t0)\\\"><g clip-path=\\\"url(#c25)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.445 0.091 0.091 2.442 304.8 370.9)\\\"/></g><g clip-path=\\\"url(#c26)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.445 0.091 0.1 2.529 304.6 369.1)\\\"/></g><g clip-path=\\\"url(#c27)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.441 -0.007 0.123 2.263 304.1 377.1)\\\"/></g><g clip-path=\\\"url(#c28)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.44 0.095 -0.001 2.821 307.2 361.8)\\\"/></g><g clip-path=\\\"url(#c29)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.453 -0.007 -0.019 2.682 307.7 366)\\\"/></g><g clip-path=\\\"url(#c30)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.44 0.059 -0.019 2.682 307.6 365.5)\\\"/></g><g clip-path=\\\"url(#c31)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.453 -0.042 -0.037 2.545 308.2 370.3)\\\"/></g><g clip-path=\\\"url(#c32)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.44 0.021 -0.037 2.545 308.1 369.5)\\\"/></g><g clip-path=\\\"url(#c33)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.452 -0.077 -0.054 2.41 308.7 374.8)\\\"/></g><g clip-path=\\\"url(#c34)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.441 -0.007 -0.054 2.41 308.5 373.4)\\\"/></g><g clip-path=\\\"url(#c35)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.45 -0.105 -0.066 2.277 309 379.4)\\\"/></g><g clip-path=\\\"url(#c36)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.453 -0.007 -0.154 2.69 311.7 365.7)\\\"/></g><g clip-path=\\\"url(#c37)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.444 -0.106 -0.143 2.556 311.3 370.4)\\\"/></g><g clip-path=\\\"url(#c38)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.453 -0.042 -0.143 2.556 311.4 370)\\\"/></g><g clip-path=\\\"url(#c39)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.444 -0.107 -0.13 2.469 310.9 373.5)\\\"/></g><g clip-path=\\\"url(#c40)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.444 -0.106 -0.106 2.441 310.1 374.4)\\\"/></g></g><g><use href=\\\"#i5\\\" transform=\\\"matrix(-2.444 -0.106 -0.106 2.444 311.4 455.8)\\\"/></g><g filter=\\\"url(#t0)\\\"><g clip-path=\\\"url(#c41)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.446 0.052 0.052 2.443 216.4 371.5)\\\"/></g><g clip-path=\\\"url(#c42)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.444 -0.006 0.07 2.338 216 375.2)\\\"/></g><g clip-path=\\\"url(#c43)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.443 0.057 0 2.67 217.7 366.1)\\\"/></g><g clip-path=\\\"url(#c44)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.451 -0.023 -0.022 2.513 218.4 370.9)\\\"/></g><g clip-path=\\\"url(#c45)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.449 -0.062 -0.04 2.359 218.9 376.2)\\\"/></g><g clip-path=\\\"url(#c46)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.451 -0.001 -0.091 2.593 220.4 368.4)\\\"/></g><g clip-path=\\\"url(#c47)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.445 -0.062 -0.083 2.511 220.2 371.3)\\\"/></g><g clip-path=\\\"url(#c48)\\\"><use href=\\\"#i4\\\" transform=\\\"matrix(-2.446 -0.062 -0.062 2.443 219.4 373.6)\\\"/></g></g><g><use href=\\\"#i6\\\" transform=\\\"matrix(-2.445 -0.062 -0.062 2.445 222.8 454.9)\\\"/></g><g><g clip-path=\\\"url(#c49)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.478 0 0 2.471 326.1 348.6)\\\"/></g><g clip-path=\\\"url(#c50)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.478 0 0.015 2.344 325.9 350.4)\\\"/></g><g clip-path=\\\"url(#c51)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.478 0.025 0.082 2.285 324.7 351.4)\\\"/></g><g clip-path=\\\"url(#c52)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.477 0.061 0.085 2.402 324.6 348.7)\\\"/></g><g clip-path=\\\"url(#c53)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.478 0.025 0.085 2.461 324.6 348.2)\\\"/></g><g clip-path=\\\"url(#c54)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.477 0.061 0.088 2.577 324.6 344.7)\\\"/></g><g clip-path=\\\"url(#c55)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.511 -0.074 0.088 2.577 325.8 349.7)\\\"/></g><g clip-path=\\\"url(#c56)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.536 -0.18 0.048 2.407 327.7 357.6)\\\"/></g><g clip-path=\\\"url(#c57)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.478 0.014 0.048 2.407 325.1 348.9)\\\"/></g><g clip-path=\\\"url(#c58)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.478 0.035 0.049 2.539 325 345)\\\"/></g><g clip-path=\\\"url(#c59)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.477 0.093 0.143 2.358 323.3 349.5)\\\"/></g><g clip-path=\\\"url(#c60)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.476 0.092 0.147 2.512 323.2 345.3)\\\"/></g><g clip-path=\\\"url(#c61)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.536 -0.18 0.148 2.563 325.4 354)\\\"/></g><g clip-path=\\\"url(#c62)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.577 -0.273 0.082 2.414 328.7 361.6)\\\"/></g><g clip-path=\\\"url(#c63)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.477 0.053 0.083 2.472 324.2 345.5)\\\"/></g><g clip-path=\\\"url(#c64)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.476 0.092 0.092 2.469 324.7 346.4)\\\"/></g><g clip-path=\\\"url(#c65)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.602 -0.272 0.092 2.469 329.4 360.1)\\\"/></g></g><g filter=\\\"url(#t0)\\\"><use href=\\\"#i8\\\" transform=\\\"matrix(-2.446 0 0 2.446 310.2 223)\\\"/></g><g><use href=\\\"#i9\\\" transform=\\\"matrix(-2.446 0 0 2.446 327.4 203.5)\\\"/></g><g filter=\\\"url(#t0)\\\"><use href=\\\"#i10\\\" transform=\\\"matrix(-2.446 0.008 0.008 2.446 331.6 49)\\\"/></g><g><use href=\\\"#i11\\\" transform=\\\"matrix(-2.446 0.008 0.008 2.446 269.7 214.3)\\\"/></g><g><use href=\\\"#i12\\\" transform=\\\"matrix(-2.446 0.008 0.008 2.446 322.1 146.9)\\\"/></g><g filter=\\\"url(#t1)\\\"><use href=\\\"#i13\\\" transform=\\\"matrix(-2.446 0.008 0.008 2.446 334.5 188.4)\\\"/></g><g filter=\\\"url(#t2)\\\"><use href=\\\"#i14\\\" transform=\\\"matrix(-2.446 0.008 0.008 2.446 319.6 127.3)\\\"/></g><g filter=\\\"url(#t1)\\\"><use href=\\\"#i15\\\" transform=\\\"matrix(-2.446 0.008 0.008 2.446 324.3 51.5)\\\"/></g><g><use href=\\\"#i16\\\" transform=\\\"matrix(-2.446 0.008 0.008 2.446 348.6 0)\\\"/></g><g filter=\\\"url(#t0)\\\"><g clip-path=\\\"url(#c66)\\\"><use href=\\\"#i17\\\" transform=\\\"matrix(-2.419 -0.376 -0.374 2.405 159.1 254.2)\\\"/></g><g clip-path=\\\"url(#c67)\\\"><use href=\\\"#i17\\\" transform=\\\"matrix(-2.42 -0.376 -0.435 1.494 160.8 280.8)\\\"/></g><g clip-path=\\\"url(#c68)\\\"><use href=\\\"#i17\\\" transform=\\\"matrix(-2.407 0.066 -0.416 2.195 160.1 257.2)\\\"/></g><g clip-path=\\\"url(#c69)\\\"><use href=\\\"#i17\\\" transform=\\\"matrix(-2.412 -0.375 -0.416 2.195 160.1 260.6)\\\"/></g><g clip-path=\\\"url(#c70)\\\"><use href=\\\"#i17\\\" transform=\\\"matrix(-2.4 0.054 -0.397 2.879 159.4 234.3)\\\"/></g><g clip-path=\\\"url(#c71)\\\"><use href=\\\"#i17\\\" transform=\\\"matrix(-2.42 -0.376 -0.397 2.879 159.7 240.9)\\\"/></g><g clip-path=\\\"url(#c72)\\\"><use href=\\\"#i17\\\" transform=\\\"matrix(-2.408 0.075 -0.378 3.595 158.9 209.9)\\\"/></g><g clip-path=\\\"url(#c73)\\\"><use href=\\\"#i17\\\" transform=\\\"matrix(-2.407 0.066 0.448 1.49 131.1 280.9)\\\"/></g><g clip-path=\\\"url(#c74)\\\"><use href=\\\"#i17\\\" transform=\\\"matrix(-2.402 0.51 0.457 2.206 130.7 253.4)\\\"/></g><g clip-path=\\\"url(#c75)\\\"><use href=\\\"#i17\\\" transform=\\\"matrix(-2.4 0.054 0.457 2.206 130.7 256.9)\\\"/></g><g clip-path=\\\"url(#c76)\\\"><use href=\\\"#i17\\\" transform=\\\"matrix(-2.403 0.477 0.453 2.89 130.9 227.4)\\\"/></g><g clip-path=\\\"url(#c77)\\\"><use href=\\\"#i17\\\" transform=\\\"matrix(-2.408 0.075 0.453 2.89 131 233.6)\\\"/></g><g clip-path=\\\"url(#c78)\\\"><use href=\\\"#i17\\\" transform=\\\"matrix(-2.417 0.417 0.439 3.441 131.6 207.2)\\\"/></g><g clip-path=\\\"url(#c79)\\\"><use href=\\\"#i17\\\" transform=\\\"matrix(-2.402 0.51 0.505 2.38 128.9 246.7)\\\"/></g><g clip-path=\\\"url(#c80)\\\"><use href=\\\"#i17\\\" transform=\\\"matrix(-2.417 0.417 0.537 2.419 127.9 246.4)\\\"/></g><g clip-path=\\\"url(#c81)\\\"><use href=\\\"#i17\\\" transform=\\\"matrix(-2.396 0.507 0.571 2.563 126.1 238.8)\\\"/></g></g><g><use href=\\\"#i18\\\" transform=\\\"matrix(-2.417 -0.376 -0.376 2.417 164.3 252.5)\\\"/></g><g><use href=\\\"#i19\\\" transform=\\\"matrix(-2.393 0.506 0.506 2.393 163.1 348.9)\\\"/></g><g><use href=\\\"#i20\\\" transform=\\\"matrix(-2.416 0.381 0.381 2.416 205.4 259.8)\\\"/></g></svg>\";\n"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"path": "components/figures/mage.ts",
|
|
82
|
+
"content": "// GENERATED by scripts/render-hero-figures.ts from idle-rpg's character system — do not edit.\n// The idle-rpg Mage in its class look, still (the first frame of its idle), facing right.\n/** Where the body stands across the picture, 0..1 (its weapon and shield make it lopsided). */\nexport const center = 0.362;\nexport default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 580 512\\\" width=\\\"580\\\" height=\\\"512\\\"><defs><image id=\\\"i0\\\" width=\\\"95\\\" height=\\\"124\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='95' height='124' viewBox='0 0 95 124'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='95' height='124' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-4.92' dy='-9.84' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='2.07' dy='4.13' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 22 4 L 74 4 C 80 30 86 70 92 118 C 70 121 26 121 4 118 C 10 70 16 30 22 4 Z' fill='%232a3a9a' stroke='none'/%3E%3CclipPath id='fmc'%3E%3Cpath d='M 22 4 L 74 4 C 80 30 86 70 92 118 C 70 121 26 121 4 118 C 10 70 16 30 22 4 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23fmc)'%3E%3Cpath d='M 48 0 L 100 0 L 100 130 L 56 130 C 54 90 52 40 48 0 Z' fill='%231e2a78' stroke='none'/%3E%3Cpath d='M 30 20 C 26 50 22 80 18 118 M 48 20 C 48 50 48 80 48 120 M 66 20 C 70 50 74 80 78 118' fill='none' stroke='%231e2a78' stroke-width='2.4'/%3E%3Cpath d='M 4 114 C 26 117 70 117 92 114' fill='none' stroke='%23c0c8ff' stroke-width='5'/%3E%3C/g%3E%3Cpath d='M 22 4 L 74 4 C 80 30 86 70 92 118 C 70 121 26 121 4 118 C 10 70 16 30 22 4 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cellipse cx='26' cy='8' rx='5' ry='5' fill='%23e8b23a' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cellipse cx='70' cy='8' rx='5' ry='5' fill='%23e8b23a' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cellipse cx='26' cy='8' rx='2.4' ry='2.4' fill='%233a7ad8' stroke='%231f1a21' stroke-width='1.68'/%3E%3Cpath d='M 24.68 7.88 C 24.8 6.68 25.88 6.4399999999999995 26.48 6.68 C 25.76 7.16 25.16 7.52 24.68 7.88 Z' fill='%23ffffff' stroke='none' opacity='0.85'/%3E%3Cellipse cx='70' cy='8' rx='2.4' ry='2.4' fill='%233a7ad8' stroke='%231f1a21' stroke-width='1.68'/%3E%3Cpath d='M 68.68 7.88 C 68.8 6.68 69.88 6.4399999999999995 70.48 6.68 C 69.76 7.16 69.16 7.52 68.68 7.88 Z' fill='%23ffffff' stroke='none' opacity='0.85'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i1\\\" width=\\\"29\\\" height=\\\"71\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='71' viewBox='0 0 29 71'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='29' height='71' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-2.34' dy='-4.67' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='0.98' dy='1.96' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 19 3.5 C 23.5 3.5 26 6.5 25.5 12 L 19.5 61 C 18.5 66.5 15 69 10 68.8 C 5.5 68.5 3.2 65 3.6 60 L 11 11 C 12 5 15 3 19 3 Z' fill='%23ffffff' stroke='%231f1a21' stroke-width='3.6'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i2\\\" width=\\\"34\\\" height=\\\"35\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='34' height='35' viewBox='0 0 34 35'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='34' height='35' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-2.69' dy='-5.5' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='1.13' dy='2.31' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 3 24 C 6 14 12 5 20 3 C 26 2 30 6 31 12 L 31 30 C 26 32 18 33 9 31 C 4 30 2 27 3 24 Z' fill='%232a3a9a' stroke='none'/%3E%3CclipPath id='fmrr'%3E%3Cpath d='M 3 24 C 6 14 12 5 20 3 C 26 2 30 6 31 12 L 31 30 C 26 32 18 33 9 31 C 4 30 2 27 3 24 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23fmrr)'%3E%3Cpath d='M 4 29 C 14 32 24 32 30 29' fill='none' stroke='%23e8b23a' stroke-width='4'/%3E%3Cpath d='M 18.0 12.0 L 18.8 13.9 L 20.9 14.1 L 19.3 15.4 L 19.8 17.4 L 18.0 16.4 L 16.2 17.4 L 16.7 15.4 L 15.1 14.1 L 17.2 13.9 Z' fill='%23ffe060' stroke='none'/%3E%3C/g%3E%3Cpath d='M 3 24 C 6 14 12 5 20 3 C 26 2 30 6 31 12 L 31 30 C 26 32 18 33 9 31 C 4 30 2 27 3 24 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i3\\\" width=\\\"35\\\" height=\\\"40\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='35' height='40' viewBox='0 0 35 40'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='35' height='40' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-2.87' dy='-5.61' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='1.2' dy='2.36' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 7 3.5 L 28 3.5 C 30.5 3.5 31.5 5.5 31.5 8.5 L 31.5 30 C 31.5 35 27 36.5 17.5 36.5 C 8 36.5 3.5 35 3.5 30 L 3.5 8.5 C 3.5 5.5 4.5 3.5 7 3.5 Z' fill='%237a4628' stroke='none'/%3E%3CclipPath id='fbr'%3E%3Cpath d='M 7 3.5 L 28 3.5 C 30.5 3.5 31.5 5.5 31.5 8.5 L 31.5 30 C 31.5 35 27 36.5 17.5 36.5 C 8 36.5 3.5 35 3.5 30 L 3.5 8.5 C 3.5 5.5 4.5 3.5 7 3.5 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23fbr)'%3E%3Cpath d='M 4 22 L 31 22' fill='none' stroke='%23a0663e' stroke-width='1.4' stroke-dasharray='3 2'/%3E%3Crect x='0' y='0' width='35' height='17.5' rx='0' fill='%234a3226' stroke='none'/%3E%3Cpath d='M 0 17.5 L 35 17.5' fill='none' stroke='%231f1a21' stroke-width='2.6'/%3E%3C/g%3E%3Cpath d='M 7 3.5 L 28 3.5 C 30.5 3.5 31.5 5.5 31.5 8.5 L 31.5 30 C 31.5 35 27 36.5 17.5 36.5 C 8 36.5 3.5 35 3.5 30 L 3.5 8.5 C 3.5 5.5 4.5 3.5 7 3.5 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cellipse cx='17.5' cy='10.5' rx='2.2' ry='2.2' fill='%23e8b23a' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='16.84' cy='9.84' rx='0.77' ry='0.77' fill='%23ffe28a' stroke='none'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i4\\\" width=\\\"135\\\" height=\\\"43\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='135' height='43' viewBox='0 0 135 43'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='135' height='43' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-3.46' dy='-6.92' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='1.45' dy='2.91' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cellipse cx='17' cy='21' rx='15.5' ry='15.5' fill='%237ad8ff' stroke='none' opacity='0.35'/%3E%3Cpath d='M 30 15.5 L 129 15.5 C 132.3 15.5 132.3 26.5 129 26.5 L 30 26.5 Z' fill='%239a6236' stroke='none'/%3E%3CclipPath id='wz'%3E%3Cpath d='M 30 15.5 L 129 15.5 C 132.3 15.5 132.3 26.5 129 26.5 L 30 26.5 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23wz)'%3E%3Cpath d='M 28 22.1 L 134.5 22.1 L 134.5 28.5 L 28 28.5 Z' fill='%236e4222' stroke='none'/%3E%3Cpath d='M 38 19.9 L 47 19.9 M 44 23.475 L 51 23.475 M 55 19.9 L 64 19.9 M 61 23.475 L 68 23.475 M 72 19.9 L 81 19.9 M 78 23.475 L 85 23.475 M 89 19.9 L 98 19.9 M 95 23.475 L 102 23.475 M 106 19.9 L 115 19.9 M 112 23.475 L 119 23.475' fill='none' stroke='%235a3418' stroke-width='1.3'/%3E%3C/g%3E%3Cpath d='M 30 15.5 L 129 15.5 C 132.3 15.5 132.3 26.5 129 26.5 L 30 26.5 Z' fill='none' stroke='%231f1a21' stroke-width='3'/%3E%3Cpath d='M 30 15 C 24 8 18 6 12 7 M 30 27 C 24 34 18 36 12 35 M 31 21 L 34 21' fill='none' stroke='%231f1a21' stroke-width='7'/%3E%3Cpath d='M 30 15 C 24 8 18 6 12 7 M 30 27 C 24 34 18 36 12 35' fill='none' stroke='%239a6236' stroke-width='3.4'/%3E%3Cpath d='M 6 21 A 11 11 0 1 0 28 21 A 11 11 0 1 0 6 21 Z' fill='%233a9ae0' stroke='none'/%3E%3CclipPath id='wzo'%3E%3Cpath d='M 6 21 A 11 11 0 1 0 28 21 A 11 11 0 1 0 6 21 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23wzo)'%3E%3Cpath d='M 0 24 C 10 30 22 30 32 24 L 32 40 L 0 40 Z' fill='%231d5aa8' stroke='none'/%3E%3Cellipse cx='14' cy='16' rx='3.6' ry='3.6' fill='%23ffffff' stroke='none' opacity='0.9'/%3E%3Cellipse cx='21' cy='26' rx='1.6' ry='1.6' fill='%23ffffff' stroke='none'/%3E%3C/g%3E%3Cpath d='M 6 21 A 11 11 0 1 0 28 21 A 11 11 0 1 0 6 21 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cpath d='M 42 14 L 48 14 L 48 28 L 42 28 Z' fill='%23e8b23a' stroke='none'/%3E%3CclipPath id='wz1'%3E%3Cpath d='M 42 14 L 48 14 L 48 28 L 42 28 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23wz1)'%3E%3C/g%3E%3Cpath d='M 42 14 L 48 14 L 48 28 L 42 28 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cpath d='M 118 14.5 L 123 14.5 L 123 27.5 L 118 27.5 Z' fill='%23e8b23a' stroke='none'/%3E%3CclipPath id='wz2'%3E%3Cpath d='M 118 14.5 L 123 14.5 L 123 27.5 L 118 27.5 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23wz2)'%3E%3C/g%3E%3Cpath d='M 118 14.5 L 123 14.5 L 123 27.5 L 118 27.5 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i5\\\" width=\\\"27\\\" height=\\\"55\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='27' height='55' viewBox='0 0 27 55'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='27' height='55' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-2.17' dy='-4.35' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='0.91' dy='1.83' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 5 2.5 L 24 2.5 L 24 47 C 24 51 21 53 16 53 L 8 53 C 3.5 53 2 50 3 47 C 4 44 6 43 6 40 Z' fill='%23ffffff' stroke='%231f1a21' stroke-width='3.6'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i6\\\" width=\\\"26\\\" height=\\\"30\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='26' height='30' viewBox='0 0 26 30'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='26' height='30' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-1.91' dy='-4.27' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='0.8' dy='1.79' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 5.8 2.3 L 16 2.3 C 19 2.5 21 3.5 22.2 4.8 L 22.2 24 C 22.2 26 20 27.2 16 27.2 L 8 27.2 C 4.5 27.2 2.8 25 2.8 22 C 2.8 19 4 17 5.8 15.5 Z' fill='%237a4628' stroke='none'/%3E%3CclipPath id='flbl'%3E%3Cpath d='M 5.8 2.3 L 16 2.3 C 19 2.5 21 3.5 22.2 4.8 L 22.2 24 C 22.2 26 20 27.2 16 27.2 L 8 27.2 C 4.5 27.2 2.8 25 2.8 22 C 2.8 19 4 17 5.8 15.5 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23flbl)'%3E%3Cpath d='M 0 0 L 26 0 L 26 8 L 0 8 Z' fill='%234a3226' stroke='none'/%3E%3Cpath d='M 0 8 L 26 8' fill='none' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cpath d='M 3 17 L 22 17' fill='none' stroke='%234a3226' stroke-width='3'/%3E%3Crect x='10' y='15' width='4.5' height='4.5' rx='1' fill='%23e8b23a' stroke='%231f1a21' stroke-width='1.4'/%3E%3C/g%3E%3Cpath d='M 5.8 2.3 L 16 2.3 C 19 2.5 21 3.5 22.2 4.8 L 22.2 24 C 22.2 26 20 27.2 16 27.2 L 8 27.2 C 4.5 27.2 2.8 25 2.8 22 C 2.8 19 4 17 5.8 15.5 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i7\\\" width=\\\"25\\\" height=\\\"41\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='41' viewBox='0 0 25 41'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='25' height='41' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-2.04' dy='-4.01' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='0.86' dy='1.68' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 6 3 L 19 3 C 21 3 22 4 22 6 L 22 35 C 22 37 21 38 19 38 L 6 38 C 4 38 3 37 3 35 L 3 6 C 3 4 4 3 6 3 Z' fill='%234b4aa3' stroke='none'/%3E%3CclipPath id='pants_far_3'%3E%3Cpath d='M 6 3 L 19 3 C 21 3 22 4 22 6 L 22 35 C 22 37 21 38 19 38 L 6 38 C 4 38 3 37 3 35 L 3 6 C 3 4 4 3 6 3 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23pants_far_3)'%3E%3Cpath d='M 5 13 C 9 10 16 11 20 13 C 16 16 9 16 5 13' fill='none' stroke='%231f1a21' stroke-width='2'/%3E%3C/g%3E%3Cpath d='M 6 3 L 19 3 C 21 3 22 4 22 6 L 22 35 C 22 37 21 38 19 38 L 6 38 C 4 38 3 37 3 35 L 3 6 C 3 4 4 3 6 3 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i8\\\" width=\\\"26\\\" height=\\\"30\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='26' height='30' viewBox='0 0 26 30'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='26' height='30' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-1.99' dy='-4.24' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='0.83' dy='1.78' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 5.8 2.3 L 16 2.3 C 19 2.5 21 3.5 22.2 4.8 L 22.2 24 C 22.2 26 20 27.2 16 27.2 L 8 27.2 C 4.5 27.2 2.8 25 2.8 22 C 2.8 19 4 17 5.8 15.5 Z' fill='%237a4628' stroke='none'/%3E%3CclipPath id='flbr'%3E%3Cpath d='M 5.8 2.3 L 16 2.3 C 19 2.5 21 3.5 22.2 4.8 L 22.2 24 C 22.2 26 20 27.2 16 27.2 L 8 27.2 C 4.5 27.2 2.8 25 2.8 22 C 2.8 19 4 17 5.8 15.5 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23flbr)'%3E%3Cpath d='M 0 0 L 26 0 L 26 8 L 0 8 Z' fill='%234a3226' stroke='none'/%3E%3Cpath d='M 0 8 L 26 8' fill='none' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cpath d='M 3 17 L 22 17' fill='none' stroke='%234a3226' stroke-width='3'/%3E%3Crect x='10' y='15' width='4.5' height='4.5' rx='1' fill='%23e8b23a' stroke='%231f1a21' stroke-width='1.4'/%3E%3C/g%3E%3Cpath d='M 5.8 2.3 L 16 2.3 C 19 2.5 21 3.5 22.2 4.8 L 22.2 24 C 22.2 26 20 27.2 16 27.2 L 8 27.2 C 4.5 27.2 2.8 25 2.8 22 C 2.8 19 4 17 5.8 15.5 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i9\\\" width=\\\"25\\\" height=\\\"41\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='41' viewBox='0 0 25 41'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='25' height='41' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-2.03' dy='-4.02' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='0.85' dy='1.69' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 6 3 L 19 3 C 21 3 22 4 22 6 L 22 35 C 22 37 21 38 19 38 L 6 38 C 4 38 3 37 3 35 L 3 6 C 3 4 4 3 6 3 Z' fill='%234b4aa3' stroke='none'/%3E%3CclipPath id='pants_near_3'%3E%3Cpath d='M 6 3 L 19 3 C 21 3 22 4 22 6 L 22 35 C 22 37 21 38 19 38 L 6 38 C 4 38 3 37 3 35 L 3 6 C 3 4 4 3 6 3 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23pants_near_3)'%3E%3Cpath d='M 5 13 C 9 10 16 11 20 13 C 16 16 9 16 5 13' fill='none' stroke='%231f1a21' stroke-width='2'/%3E%3C/g%3E%3Cpath d='M 6 3 L 19 3 C 21 3 22 4 22 6 L 22 35 C 22 37 21 38 19 38 L 6 38 C 4 38 3 37 3 35 L 3 6 C 3 4 4 3 6 3 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i10\\\" width=\\\"79\\\" height=\\\"26\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='79' height='26' viewBox='0 0 79 26'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='79' height='26' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-2.09' dy='-4.19' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='0.88' dy='1.76' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 3 4 L 76 3 C 78 16 62 23 40 23 C 18 23 2 16 3 4 Z' fill='%234b4aa3' stroke='none'/%3E%3CclipPath id='pants_3'%3E%3Cpath d='M 3 4 L 76 3 C 78 16 62 23 40 23 C 18 23 2 16 3 4 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23pants_3)'%3E%3C/g%3E%3Cpath d='M 3 4 L 76 3 C 78 16 62 23 40 23 C 18 23 2 16 3 4 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i11\\\" width=\\\"77\\\" height=\\\"50\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='77' height='50' viewBox='0 0 77 50'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='77' height='50' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-4.02' dy='-8.05' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='1.69' dy='3.38' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 2 47 L 2 22 C 2 18 3 16 5 14 C 15 4 60 2 68 10 C 72 14 75 20 75 28 L 75 47 Z' fill='%23ffffff' stroke='none'/%3E%3CclipPath id='torso'%3E%3Cpath d='M 2 47 L 2 22 C 2 18 3 16 5 14 C 15 4 60 2 68 10 C 72 14 75 20 75 28 L 75 47 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23torso)'%3E%3Cellipse cx='37' cy='13' rx='31' ry='15' fill='%23cfcfcf'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i12\\\" width=\\\"89\\\" height=\\\"74\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='89' height='74' viewBox='0 0 89 74'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='89' height='74' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-4.92' dy='-9.84' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='2.07' dy='4.13' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 66.6 4 Q 63.5 3.2 57.1 14.3 Q 50.8 25.4 48 26.7 Q 45.3 27.9 43.6 30.7 Q 41.9 33.6 38.7 30.7 Q 35.5 27.8 33.6 27.4 Q 31.7 27 28.4 29.1 Q 25.1 31.1 23.6 26.4 Q 22.2 21.7 22.8 15.5 Q 23.4 9.3 24.1 6.9 Q 24.9 4.5 24.9 4.3 Q 24.8 4.1 24.3 4.1 Q 23.9 4 21.3 5.3 Q 18.7 6.6 16.8 8.4 Q 14.9 10.1 11.9 15.7 Q 8.8 21.3 6.4 31.5 Q 3.9 41.8 4.4 49.2 Q 4.8 56.6 4.3 59.8 Q 3.9 63.1 4.5 64 Q 5.1 65 7.1 65.5 Q 9 66.1 16 66.7 Q 23 67.4 25.6 69.2 Q 28.2 71.1 30.7 71.1 Q 33.1 71.2 36.1 69.7 Q 39 68.2 55.2 67.7 Q 71.3 67.2 76.6 66.7 Q 81.8 66.1 82.6 65.7 Q 83.3 65.2 83.7 64 Q 84 62.7 82.4 58.9 Q 80.9 55.1 83.5 52.4 Q 86.1 49.6 86.1 44.7 Q 86.2 39.7 85.7 34.4 Q 85.1 29.1 83.7 23.2 Q 82.2 17.4 79 13.1 Q 75.7 8.8 72.7 6.8 Q 69.6 4.8 66.6 4 Z' fill='%232a3a9a' stroke='none' fill-rule='evenodd'/%3E%3CclipPath id='fmr'%3E%3Cpath d='M 66.6 4 Q 63.5 3.2 57.1 14.3 Q 50.8 25.4 48 26.7 Q 45.3 27.9 43.6 30.7 Q 41.9 33.6 38.7 30.7 Q 35.5 27.8 33.6 27.4 Q 31.7 27 28.4 29.1 Q 25.1 31.1 23.6 26.4 Q 22.2 21.7 22.8 15.5 Q 23.4 9.3 24.1 6.9 Q 24.9 4.5 24.9 4.3 Q 24.8 4.1 24.3 4.1 Q 23.9 4 21.3 5.3 Q 18.7 6.6 16.8 8.4 Q 14.9 10.1 11.9 15.7 Q 8.8 21.3 6.4 31.5 Q 3.9 41.8 4.4 49.2 Q 4.8 56.6 4.3 59.8 Q 3.9 63.1 4.5 64 Q 5.1 65 7.1 65.5 Q 9 66.1 16 66.7 Q 23 67.4 25.6 69.2 Q 28.2 71.1 30.7 71.1 Q 33.1 71.2 36.1 69.7 Q 39 68.2 55.2 67.7 Q 71.3 67.2 76.6 66.7 Q 81.8 66.1 82.6 65.7 Q 83.3 65.2 83.7 64 Q 84 62.7 82.4 58.9 Q 80.9 55.1 83.5 52.4 Q 86.1 49.6 86.1 44.7 Q 86.2 39.7 85.7 34.4 Q 85.1 29.1 83.7 23.2 Q 82.2 17.4 79 13.1 Q 75.7 8.8 72.7 6.8 Q 69.6 4.8 66.6 4 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23fmr)'%3E%3Cpath d='M 48 0 L 92 0 L 92 80 L 52 80 Z' fill='%231e2a78' stroke='none'/%3E%3Cpath d='M 24 0 L 40 34 L 56 0 L 50 0 L 40 22 L 30 0 Z' fill='%23e8b23a' stroke='%231f1a21' stroke-width='1.6'/%3E%3Cpath d='M 37 34 L 43 34 L 45 80 L 35 80 Z' fill='%23e8b23a' stroke='none'/%3E%3Cpath d='M 37 34 L 35 80 M 43 34 L 45 80' fill='none' stroke='%231f1a21' stroke-width='1.6'/%3E%3Cpath d='M -2 50 L 92 52 L 92 60 L -2 58 Z' fill='%237a2a9a' stroke='none'/%3E%3Cpath d='M -2 50 L 92 52 M -2 58 L 92 60' fill='none' stroke='%231f1a21' stroke-width='2'/%3E%3Cpath d='M 16.0 26.8 L 16.8 28.8 L 19.0 29.0 L 17.4 30.4 L 17.9 32.6 L 16.0 31.4 L 14.1 32.6 L 14.6 30.4 L 13.0 29.0 L 15.2 28.8 Z' fill='%23ffe060' stroke='none'/%3E%3Cpath d='M 66.6 19.3 L 66.9 21.2 L 68.8 21.7 L 67.1 22.6 L 67.1 24.6 L 65.7 23.2 L 63.9 23.9 L 64.7 22.1 L 63.6 20.6 L 65.5 20.8 Z' fill='%23ffe060' stroke='none'/%3E%3Cpath d='M 69.5 65.0 L 70.6 66.8 L 72.6 66.6 L 71.3 68.2 L 72.2 70.1 L 70.2 69.3 L 68.7 70.7 L 68.8 68.6 L 67.0 67.6 L 69.0 67.1 Z' fill='%23ffe060' stroke='none'/%3E%3Cpath d='M 14.9 65.6 L 15.0 67.3 L 16.6 68.1 L 14.9 68.7 L 14.7 70.5 L 13.6 69.1 L 11.8 69.5 L 12.8 68.0 L 12.0 66.4 L 13.7 66.9 Z' fill='%23ffe060' stroke='none'/%3E%3C/g%3E%3Cpath d='M 66.6 4 Q 63.5 3.2 57.1 14.3 Q 50.8 25.4 48 26.7 Q 45.3 27.9 43.6 30.7 Q 41.9 33.6 38.7 30.7 Q 35.5 27.8 33.6 27.4 Q 31.7 27 28.4 29.1 Q 25.1 31.1 23.6 26.4 Q 22.2 21.7 22.8 15.5 Q 23.4 9.3 24.1 6.9 Q 24.9 4.5 24.9 4.3 Q 24.8 4.1 24.3 4.1 Q 23.9 4 21.3 5.3 Q 18.7 6.6 16.8 8.4 Q 14.9 10.1 11.9 15.7 Q 8.8 21.3 6.4 31.5 Q 3.9 41.8 4.4 49.2 Q 4.8 56.6 4.3 59.8 Q 3.9 63.1 4.5 64 Q 5.1 65 7.1 65.5 Q 9 66.1 16 66.7 Q 23 67.4 25.6 69.2 Q 28.2 71.1 30.7 71.1 Q 33.1 71.2 36.1 69.7 Q 39 68.2 55.2 67.7 Q 71.3 67.2 76.6 66.7 Q 81.8 66.1 82.6 65.7 Q 83.3 65.2 83.7 64 Q 84 62.7 82.4 58.9 Q 80.9 55.1 83.5 52.4 Q 86.1 49.6 86.1 44.7 Q 86.2 39.7 85.7 34.4 Q 85.1 29.1 83.7 23.2 Q 82.2 17.4 79 13.1 Q 75.7 8.8 72.7 6.8 Q 69.6 4.8 66.6 4 Z' fill='none' stroke='%231f1a21' stroke-width='3.6' fill-rule='evenodd'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i13\\\" width=\\\"103\\\" height=\\\"90\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='103' height='90' viewBox='0 0 103 90'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='103' height='90' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-4.95' dy='-9.82' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='2.08' dy='4.13' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 4 50 C 3 22 20 3 52 3 C 75 3 89 16 91 44 C 96 45 99 51 99 58 C 99 65 94 70 88 70 C 85 70 83 69 82 68 C 78 80 66 87 48 87 L 24 87 C 10 87 4 78 4 66 Z' fill='%23ffffff' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cpath d='M 81 48 C 82 47 84 46 86 46 M 81 67 C 82 68 83 69 85 69 M 83 54 C 85 52 88 51 91 52' fill='none' stroke='%231f1a21' stroke-width='3'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i14\\\" width=\\\"15\\\" height=\\\"7\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='15' height='7' viewBox='0 0 15 7'%3E%3Cg stroke-linejoin='round' stroke-linecap='round'%3E%3Cpath d='M 1.6 3.6 C 5 2.2 10 2 13.6 3 C 13.9 3.2 13.8 3.7 13.4 3.8 C 10 5 5 5.2 1.6 3.6 Z' fill='%231f1a21' stroke='none'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i15\\\" width=\\\"61\\\" height=\\\"20\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='61' height='20' viewBox='0 0 61 20' color='%233a73e0'%3E%3Cg stroke-linejoin='round' stroke-linecap='round'%3E%3Cpath d='M 19 11.26 C 15.48 3.34 7.48 3.34 3 9.72 C 6.2 17.42 15 17.42 19 11.26 Z' fill='%23fffaf4' stroke='none'/%3E%3CclipPath id='el'%3E%3Cpath d='M 19 11.26 C 15.48 3.34 7.48 3.34 3 9.72 C 6.2 17.42 15 17.42 19 11.26 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23el)'%3E%3Cellipse cx='9.9' cy='11.26' rx='4.4' ry='4.928000000000001' fill='currentColor' stroke='%231f1a21' stroke-width='1.3'/%3E%3CclipPath id='el_i'%3E%3Cpath d='M 5.5 11.26 A 4.4 4.928000000000001 0 1 0 14.3 11.26 A 4.4 4.928000000000001 0 1 0 5.5 11.26 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23el_i)'%3E%3Cellipse cx='9.9' cy='8.20464' rx='4.840000000000001' ry='3.3510400000000007' fill='%23000000' stroke='none' opacity='0.38'/%3E%3Cellipse cx='9.9' cy='14.80816' rx='3.5200000000000005' ry='1.9712000000000005' fill='%23ffffff' stroke='none' opacity='0.3'/%3E%3C/g%3E%3Cellipse cx='9.9' cy='10.66864' rx='2.2' ry='3.0553600000000003' fill='%23160f1a' stroke='none'/%3E%3Cellipse cx='11.66' cy='9.19024' rx='1.32' ry='1.32' fill='%23ffffff' stroke='none'/%3E%3Cellipse cx='8.228' cy='13.32976' rx='0.6160000000000001' ry='0.6160000000000001' fill='%23ffffff' stroke='none'/%3E%3Cpath d='M -5 -0.40000000000000036 L 27 -0.40000000000000036 L 27 6.419999999999999 L -5 6.419999999999999 Z' fill='%23000000' stroke='none' opacity='0.12'/%3E%3C/g%3E%3Cpath d='M 19 11.26 C 15.48 3.34 7.48 3.34 3 9.72 C 6.2 17.42 15 17.42 19 11.26 Z' fill='none' stroke='%231f1a21' stroke-width='1.3'/%3E%3Cpath d='M 19 11.26 C 15.48 3.34 7.48 3.34 3 9.72 L 0.6 8.4 C 7.48 -0.86 15.48 1.10 19.4 10.28 Z' fill='%231f1a21' stroke='none'/%3E%3Cpath d='M 14.2 17.57 Q 10.2 18.47 6.2 16.97' fill='none' stroke='%231f1a21' stroke-width='1.6'/%3E%3Cpath d='M 34 11.32 C 38.4 2.68 48.4 2.68 54 9.64 C 50 18.04 39 18.04 34 11.32 Z' fill='%23fffaf4' stroke='none'/%3E%3CclipPath id='er'%3E%3Cpath d='M 34 11.32 C 38.4 2.68 48.4 2.68 54 9.64 C 50 18.04 39 18.04 34 11.32 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23er)'%3E%3Cellipse cx='42.775' cy='11.32' rx='4.9' ry='5.488000000000001' fill='currentColor' stroke='%231f1a21' stroke-width='1.3'/%3E%3CclipPath id='er_i'%3E%3Cpath d='M 37.875 11.32 A 4.9 5.488000000000001 0 1 0 47.675 11.32 A 4.9 5.488000000000001 0 1 0 37.875 11.32 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23er_i)'%3E%3Cellipse cx='42.775' cy='7.917439999999999' rx='5.390000000000001' ry='3.7318400000000014' fill='%23000000' stroke='none' opacity='0.38'/%3E%3Cellipse cx='42.775' cy='15.271360000000001' rx='3.9200000000000004' ry='2.1952000000000007' fill='%23ffffff' stroke='none' opacity='0.3'/%3E%3C/g%3E%3Cellipse cx='42.775' cy='10.66144' rx='2.45' ry='3.4025600000000007' fill='%23160f1a' stroke='none'/%3E%3Cellipse cx='44.735' cy='9.015039999999999' rx='1.47' ry='1.47' fill='%23ffffff' stroke='none'/%3E%3Cellipse cx='40.913' cy='13.624960000000002' rx='0.6860000000000002' ry='0.6860000000000002' fill='%23ffffff' stroke='none'/%3E%3Cpath d='M 24 -1.4000000000000004 L 64 -1.4000000000000004 L 64 6.04 L 24 6.04 Z' fill='%23000000' stroke='none' opacity='0.12'/%3E%3C/g%3E%3Cpath d='M 34 11.32 C 38.4 2.68 48.4 2.68 54 9.64 C 50 18.04 39 18.04 34 11.32 Z' fill='none' stroke='%231f1a21' stroke-width='1.3'/%3E%3Cpath d='M 34 11.32 C 38.4 2.68 48.4 2.68 54 9.64 L 57.2 7.88 C 48.4 -1.52 38.4 0.44 33.6 10.34 Z' fill='%231f1a21' stroke='none'/%3E%3Cpath d='M 40 18.04 Q 45 18.94 50 17.44' fill='none' stroke='%231f1a21' stroke-width='1.6'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i16\\\" width=\\\"88\\\" height=\\\"44\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='44' viewBox='0 0 88 44'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='88' height='44' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-3.56' dy='-7.07' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='1.5' dy='2.97' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 4 8 C 4 3.5 10 2.5 13 6 C 16 8 20 9 23 9 C 26 4 30 2.5 34 2.5 C 40 2.5 43 5 46 8 C 50 9 56 10 60 11 C 64 6 70 4.5 76 5 C 82 6 85 10 84 14 C 83 17 81 19 80 21 C 76 26 74 28 72 31 C 70 35 66 38 60 38 C 56 40.5 50 41.5 44 40 C 40 41.5 34 41.5 30 40 C 24 40 18 39 14 36 C 8 35 4 32 4 28 C 3 24 3 18 3 14 C 3 11 4 9 4 8 Z' fill='%23ffffff' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cpath d='M 11 15 L 14 18 M 25 18 L 27 20 M 46 18 L 48 17 L 49 19 M 69 16 L 73 15 M 71 16 L 71 22 M 17 26 L 17 28 M 33 29 L 35 27 L 38 29 M 61 25 L 63 29' fill='none' stroke='%23c4c4c4' stroke-width='2.4'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i17\\\" width=\\\"65\\\" height=\\\"18\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='65' height='18' viewBox='0 0 65 18'%3E%3Cg stroke-linejoin='round' stroke-linecap='round'%3E%3Cpath d='M 3 10.5 C 6 7 16 3.5 22 3 C 25 3 24.5 7 22 8.5 C 16 11 7.5 13 4 12.5 C 2.5 12 2.5 11 3 10.5 Z' fill='%23ffffff' stroke='%231f1a21' stroke-width='3'/%3E%3Cpath d='M 38.5 4.5 C 42 2.5 51 7 59.5 11 C 62.5 12.5 61.5 15 58 15 C 50 14.5 41 10.5 38.5 6.5 Z' fill='%23ffffff' stroke='%231f1a21' stroke-width='3'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i18\\\" width=\\\"130\\\" height=\\\"72\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='130' height='72' viewBox='0 0 130 72'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='130' height='72' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-4.95' dy='-9.82' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='2.08' dy='4.13' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 2 53 C 6 42 12 34 20 30 L 21 22 C 30 16 34 10 44 6 C 60 0 80 1 92 6 C 102 12 106 22 108 36 L 116 40 L 117 47 L 127 53 C 126 62 118 68 104 69 L 92 69 L 91 34 L 25 34 L 23 60 L 4 57 Z' fill='%23ffffff' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cpath d='M 4 50 C 10 54 16 54 23 52 L 23 60 L 4 57 Z M 92 60 C 104 60 116 58 125 56 C 124 62 118 68 104 69 L 92 69 Z' fill='%23dcdcdc' stroke='none'/%3E%3Cpath d='M 38 14 L 36 30 M 50 28 L 50 32 M 66 26 L 66 32 M 79 20 L 79 30 M 104 50 L 105 66' fill='none' stroke='%23c4c4c4' stroke-width='2'/%3E%3Cpath d='M 19 29 C 10 36 3 45 3 52 L 4 56 L 22 60 L 24 33 M 19 32 L 95 33 L 94 15 M 92 34 L 92 69 L 108 68 C 116 66 123 60 128 54 L 117 47 L 116 40' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i19\\\" width=\\\"154\\\" height=\\\"75\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='154' height='75' viewBox='0 0 154 75'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='154' height='75' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-4.95' dy='-9.82' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='2.08' dy='4.13' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 4 63 C 2 58 6 55 14 53 C 22 51 26 49 30 46 C 42 40 56 36 66 36 C 80 37 96 42 110 46 C 120 48 128 50 132 51 C 140 54 148 58 151 63 C 152 67 150 70 146 70 C 128 68 112 64 98 59 C 84 54 70 50 60 50 C 48 50 36 55 26 59 C 18 62 10 66 4 63 Z' fill='%2323307e' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cpath d='M 30 50 C 50 44 80 44 112 50' fill='none' stroke='%233a4aa8' stroke-width='2.4'/%3E%3Cpath d='M 30 48 C 40 36 52 22 66 12 C 78 4 96 0 116 4 C 104 8 96 14 96 24 C 96 34 108 44 128 50 C 96 42 60 42 30 48 Z' fill='%232a3a9a' stroke='none'/%3E%3CclipPath id='wzh'%3E%3Cpath d='M 30 48 C 40 36 52 22 66 12 C 78 4 96 0 116 4 C 104 8 96 14 96 24 C 96 34 108 44 128 50 C 96 42 60 42 30 48 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23wzh)'%3E%3Cpath d='M 60 0 L 160 0 L 160 60 L 96 60 C 92 40 88 20 96 0 Z' fill='%231e2a78' stroke='none'/%3E%3Cpath d='M 0 36 L 160 36 L 160 50 L 0 50 Z' fill='%23e8b23a' stroke='none'/%3E%3Cpath d='M 0 37 L 160 37' fill='none' stroke='%23b07818' stroke-width='1.6'/%3E%3Cpath d='M 61.0 18.6 L 61.8 22.3 L 65.4 23.2 L 62.2 25.2 L 62.4 28.9 L 59.6 26.4 L 56.0 27.8 L 57.5 24.3 L 55.1 21.4 L 58.9 21.8 Z' fill='%23ffe060' stroke='none'/%3E%3Cpath d='M 85.4 8.0 L 86.8 10.4 L 89.6 10.2 L 87.8 12.3 L 88.8 14.9 L 86.3 13.8 L 84.1 15.5 L 84.4 12.8 L 82.1 11.3 L 84.7 10.7 Z' fill='%23ffe060' stroke='none'/%3E%3Cpath d='M 104.0 26.4 L 105.0 28.7 L 107.4 28.9 L 105.5 30.5 L 106.1 32.9 L 104.0 31.6 L 101.9 32.9 L 102.5 30.5 L 100.6 28.9 L 103.0 28.7 Z' fill='%23ffe060' stroke='none'/%3E%3C/g%3E%3Cpath d='M 30 48 C 40 36 52 22 66 12 C 78 4 96 0 116 4 C 104 8 96 14 96 24 C 96 34 108 44 128 50 C 96 42 60 42 30 48 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cpath d='M 80 34 C 76 40 78 46 84 48 C 80 44 80 38 84 34 Z' fill='%23fff0a0' stroke='%231f1a21' stroke-width='1.6'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i20\\\" width=\\\"23\\\" height=\\\"72\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='23' height='72' viewBox='0 0 23 72'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='23' height='72' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-1.85' dy='-3.7' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='0.78' dy='1.56' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 11.5 2.5 C 17 2.5 20 5 20 11 L 19.5 61 C 19.5 67 16 70 11 70 C 6 70 3 67 3 61 L 3 11 C 3 5 6 2.5 11.5 2.5 Z' fill='%23ffffff' stroke='%231f1a21' stroke-width='3.6'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i21\\\" width=\\\"37\\\" height=\\\"34\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='37' height='34' viewBox='0 0 37 34'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='37' height='34' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-2.81' dy='-5.44' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='1.18' dy='2.28' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 4 29 C 3 18 6 8 13 5 C 20 3 25 8 29 16 C 31 21 33 26 32 29 C 24 32 12 32 4 29 Z' fill='%232a3a9a' stroke='none'/%3E%3CclipPath id='fmrl'%3E%3Cpath d='M 4 29 C 3 18 6 8 13 5 C 20 3 25 8 29 16 C 31 21 33 26 32 29 C 24 32 12 32 4 29 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23fmrl)'%3E%3Cpath d='M 3 28 C 12 31 24 31 32 28' fill='none' stroke='%23e8b23a' stroke-width='4'/%3E%3Cpath d='M 16.0 13.0 L 16.8 14.9 L 18.9 15.1 L 17.3 16.4 L 17.8 18.4 L 16.0 17.4 L 14.2 18.4 L 14.7 16.4 L 13.1 15.1 L 15.2 14.9 Z' fill='%23ffe060' stroke='none'/%3E%3C/g%3E%3Cpath d='M 4 29 C 3 18 6 8 13 5 C 20 3 25 8 29 16 C 31 21 33 26 32 29 C 24 32 12 32 4 29 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3C/g%3E%3C/svg%3E\\\"/><image id=\\\"i22\\\" width=\\\"36\\\" height=\\\"40\\\" href=\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='40' viewBox='0 0 36 40'%3E%3Cdefs%3E%3Cfilter id='cel' filterUnits='userSpaceOnUse' x='0' y='0' width='36' height='40' color-interpolation-filters='sRGB'%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='2.52' result='body'/%3E%3CfeOffset in='body' dx='-2.83' dy='-5.83' result='moved'/%3E%3CfeComposite in='body' in2='moved' operator='out' result='far'/%3E%3CfeFlood flood-color='%23000000' flood-opacity='0.3'/%3E%3CfeComposite in2='far' operator='in' result='dark'/%3E%3CfeMorphology in='SourceAlpha' operator='erode' radius='3.78' result='inner'/%3E%3CfeOffset in='inner' dx='1.19' dy='2.45' result='back'/%3E%3CfeComposite in='inner' in2='back' operator='out' result='near'/%3E%3CfeFlood flood-color='%23ffffff' flood-opacity='0.36'/%3E%3CfeComposite in2='near' operator='in' result='shine'/%3E%3CfeMerge%3E%3CfeMergeNode in='SourceGraphic'/%3E%3CfeMergeNode in='dark'/%3E%3CfeMergeNode in='shine'/%3E%3C/feMerge%3E%3C/filter%3E%3C/defs%3E%3Cg stroke-linejoin='round' stroke-linecap='round' filter='url(%23cel)'%3E%3Cpath d='M 7 3.5 L 29 3.5 C 31.5 3.5 32.5 5.5 32.5 8.5 L 32.5 30 C 32.5 35 28 36.5 18 36.5 C 8 36.5 3.5 35 3.5 30 L 3.5 8.5 C 3.5 5.5 4.5 3.5 7 3.5 Z' fill='%237a4628' stroke='none'/%3E%3CclipPath id='fbl'%3E%3Cpath d='M 7 3.5 L 29 3.5 C 31.5 3.5 32.5 5.5 32.5 8.5 L 32.5 30 C 32.5 35 28 36.5 18 36.5 C 8 36.5 3.5 35 3.5 30 L 3.5 8.5 C 3.5 5.5 4.5 3.5 7 3.5 Z' clip-rule='evenodd'/%3E%3C/clipPath%3E%3Cg clip-path='url(%23fbl)'%3E%3Cpath d='M 4 22 L 32 22' fill='none' stroke='%23a0663e' stroke-width='1.4' stroke-dasharray='3 2'/%3E%3Crect x='0' y='0' width='36' height='17.5' rx='0' fill='%234a3226' stroke='none'/%3E%3Cpath d='M 0 17.5 L 36 17.5' fill='none' stroke='%231f1a21' stroke-width='2.6'/%3E%3C/g%3E%3Cpath d='M 7 3.5 L 29 3.5 C 31.5 3.5 32.5 5.5 32.5 8.5 L 32.5 30 C 32.5 35 28 36.5 18 36.5 C 8 36.5 3.5 35 3.5 30 L 3.5 8.5 C 3.5 5.5 4.5 3.5 7 3.5 Z' fill='none' stroke='%231f1a21' stroke-width='3.6'/%3E%3Cellipse cx='18' cy='10.5' rx='2.2' ry='2.2' fill='%23e8b23a' stroke='%231f1a21' stroke-width='1.8'/%3E%3Cellipse cx='17.34' cy='9.84' rx='0.77' ry='0.77' fill='%23ffe28a' stroke='none'/%3E%3C/g%3E%3C/svg%3E\\\"/><filter id=\\\"t0\\\" color-interpolation-filters=\\\"sRGB\\\"><feColorMatrix values=\\\"0.973 0 0 0 0 0 0.863 0 0 0 0 0 0.769 0 0 0 0 0 1 0\\\"/></filter><clipPath id=\\\"c0\\\"><path d=\\\"M322.7,253.2 322,265.5 304.1,252.6zM304.3,252.3 322.3,265.2 303.7,264.5zM305.2,252.5 304.5,264.7 286.6,251.8zM286.8,251.6 304.8,264.4 286.2,263.8zM287.7,251.7 287,264 269.1,251.1zM269.4,250.8 287.3,263.7 268.7,263zM270.2,251 269.6,263.2 251.6,250.3zM251.9,250.1 269.8,262.9 251.2,262.3zM322.2,264.7 321.5,276.9 303.6,264zM303.9,263.7 321.8,276.6 303.2,275.9zM304.7,263.9 304.1,276.1 286.1,263.3zM286.4,263 304.3,275.8 285.7,275.2zM287.2,263.2 286.6,275.4 268.6,262.5zM268.9,262.2 286.8,275.1 268.2,274.5zM269.7,262.4 269.1,274.6 251.2,261.8zM251.4,261.5 269.3,274.4 250.7,273.7zM321.7,276.1 321.1,288.3 303.1,275.4zM303.4,275.1 321.3,288 302.7,287.4zM304.2,275.3 303.6,287.5 285.7,274.7zM285.9,274.4 303.8,287.3 285.2,286.6zM286.7,274.6 286.1,286.8 268.2,273.9zM268.4,273.7 286.3,286.5 267.7,285.9zM269.2,273.8 268.6,286.1 250.7,273.2zM250.9,272.9 268.8,285.8 250.2,285.1zM321.2,287.5 320.6,299.7 302.7,286.8zM302.9,286.6 320.8,299.4 302.2,298.8zM303.7,286.8 303.1,299 285.2,286.1zM285.4,285.8 303.3,298.7 284.7,298zM286.2,286 285.6,298.2 267.7,285.4zM267.9,285.1 285.8,297.9 267.2,297.3zM268.7,285.3 268.1,297.5 250.2,284.6zM250.4,284.3 268.3,297.2 249.7,296.5zM320.7,298.9 320.1,311.1 302.2,298.3zM302.4,298 320.3,310.9 301.7,310.2zM303.3,298.2 302.6,310.4 284.7,297.5zM284.9,297.2 302.8,310.1 284.2,309.5zM285.8,297.4 285.1,309.6 267.2,296.8zM267.4,296.5 285.3,309.4 266.7,308.7zM268.3,296.7 267.6,308.9 249.7,296zM249.9,295.7 267.8,308.6 249.2,308zM302.8,309.6 302.1,321.8 284.2,308.9zM284.4,308.7 302.3,321.5 283.7,320.9zM285.3,308.8 284.6,321.1 266.7,308.2zM266.9,307.9 284.8,320.8 266.3,320.1zM267.8,308.1 267.1,320.3 249.2,307.4zM249.4,307.2 267.3,320 248.8,319.4z\\\"/></clipPath><clipPath id=\\\"c1\\\"><path d=\\\"M320.3,310.4 319.2,321.8 301.7,309.7z\\\"/></clipPath><clipPath id=\\\"c2\\\"><path d=\\\"M301.9,309.4 319.4,321.5 301.3,321.6z\\\"/></clipPath><clipPath id=\\\"c3\\\"><path d=\\\"M319.4,321.1 318.5,330.4 301.2,321.2z\\\"/></clipPath><clipPath id=\\\"c4\\\"><path d=\\\"M301.4,320.9 318.7,330.1 300.3,331.8z\\\"/></clipPath><clipPath id=\\\"c5\\\"><path d=\\\"M302.3,321 301.2,331.9 283.7,320.4z\\\"/></clipPath><clipPath id=\\\"c6\\\"><path d=\\\"M283.9,320.1 301.4,331.6 283.1,332.8z\\\"/></clipPath><clipPath id=\\\"c7\\\"><path d=\\\"M284.8,320.3 283.9,333 266.2,319.6zM266.4,319.3 284.1,332.7 265.7,332.3zM267.3,319.5 266.6,332.5 248.7,318.9z\\\"/></clipPath><clipPath id=\\\"c8\\\"><path d=\\\"M248.9,318.6 266.8,332.2 248.3,330.8z\\\"/></clipPath><clipPath id=\\\"c9\\\"><path d=\\\"M318.6,329.6 320.1,338.6 300.2,331.4z\\\"/></clipPath><clipPath id=\\\"c10\\\"><path d=\\\"M300.4,331.1 320.2,338.3 301.9,341.9z\\\"/></clipPath><clipPath id=\\\"c11\\\"><path d=\\\"M301.3,331.1 302.8,341.9 283,332.3z\\\"/></clipPath><clipPath id=\\\"c12\\\"><path d=\\\"M283.1,332 302.9,341.6 284.4,344.7z\\\"/></clipPath><clipPath id=\\\"c13\\\"><path d=\\\"M284,332.1 285.2,344.8 265.7,331.8z\\\"/></clipPath><clipPath id=\\\"c14\\\"><path d=\\\"M265.9,331.5 285.4,344.5 266.7,346.1z\\\"/></clipPath><clipPath id=\\\"c15\\\"><path d=\\\"M266.7,331.6 267.4,346.2 248.2,330.3z\\\"/></clipPath><clipPath id=\\\"c16\\\"><path d=\\\"M248.5,330 267.7,345.9 249.1,346.8z\\\"/></clipPath><clipPath id=\\\"c17\\\"><path d=\\\"M320.1,337.9 322.1,349.9 301.8,341.4zM301.9,341.1 322.3,349.6 304,353.1zM322.1,349.1 324.1,361.2 303.8,352.6zM304,352.2 324.3,360.9 306,364.3zM304.9,352.2 306.9,364.3 286.6,355.7zM286.8,355.4 307.1,364 288.8,367.4zM287.6,355.4 289.7,367.4 269.4,358.8zM269.5,358.5 289.8,367.1 271.6,370.6zM324.1,360.4 326.2,372.4 305.9,363.8zM306,363.5 326.3,372.1 308.1,375.6zM306.9,363.5 309,375.5 288.7,366.9zM288.8,366.6 309.1,375.2 290.8,378.7zM289.7,366.6 291.7,378.7 271.4,370.1zM271.6,369.7 291.9,378.3 273.6,381.8zM272.5,369.7 274.5,381.8 254.2,373.2zM254.3,372.9 274.6,381.5 256.4,384.9zM326.2,371.6 328.2,383.7 307.9,375.1zM308.1,374.7 328.4,383.4 310.1,386.8zM308.9,374.7 311,386.8 290.7,378.2zM290.8,377.9 311.1,386.5 292.9,389.9zM291.7,377.9 293.8,389.9 273.5,381.3zM273.6,381 293.9,389.6 275.7,393zM274.5,381 276.5,393 256.2,384.4zM256.4,384.1 276.7,392.7 258.4,396.2zM328.2,382.9 330.3,394.9 310,386.3zM310.1,386 330.4,394.6 312.2,398.1zM311,386 313,398 292.7,389.4zM292.9,389.1 313.2,397.7 294.9,401.2zM293.8,389.1 295.8,401.2 275.5,392.6zM275.6,392.2 296,400.8 277.7,404.3zM276.5,392.2 278.6,404.3 258.3,395.7zM258.4,395.4 278.7,404 260.5,407.4zM330.3,394.1 332.3,406.2 312,397.6zM312.1,397.2 332.4,405.9 314.2,409.3zM313,397.2 315.1,409.3 294.8,400.7zM294.9,400.4 315.2,409 297,412.4zM295.8,400.4 297.8,412.4 277.5,403.8zM277.7,403.5 298,412.1 279.7,415.5zM278.6,403.5 280.6,415.5 260.3,406.9zM260.5,406.6 280.8,415.2 262.5,418.7zM332.3,405.4 334.3,417.4 314,408.8zM314.2,408.5 334.5,417.1 316.2,420.6zM315.1,408.5 317.1,420.5 296.8,411.9zM297,411.6 317.3,420.2 299,423.7zM297.8,411.6 299.9,423.7 279.6,415.1zM279.7,414.7 300,423.3 281.8,426.8zM280.6,414.7 282.6,426.8 262.3,418.2zM262.5,417.9 282.8,426.5 264.5,429.9z\\\"/></clipPath><clipPath id=\\\"c18\\\"><path d=\\\"M302.8,341.1 304.9,353 284.2,344.2z\\\"/></clipPath><clipPath id=\\\"c19\\\"><path d=\\\"M284.4,343.9 305,352.7 286.8,356.2z\\\"/></clipPath><clipPath id=\\\"c20\\\"><path d=\\\"M285.3,343.9 287.6,356.2 266.5,345.6z\\\"/></clipPath><clipPath id=\\\"c21\\\"><path d=\\\"M266.7,345.3 287.8,355.9 269.6,359.3z\\\"/></clipPath><clipPath id=\\\"c22\\\"><path d=\\\"M267.5,345.3 270.4,359.3 248.9,346.2z\\\"/></clipPath><clipPath id=\\\"c23\\\"><path d=\\\"M249.1,345.9 270.6,359 252.4,362.5z\\\"/></clipPath><clipPath id=\\\"c24\\\"><path d=\\\"M270.4,358.5 272.5,370.5 252.1,361.9zM252.3,361.6 272.6,370.2 254.4,373.7z\\\"/></clipPath><clipPath id=\\\"c25\\\"><path d=\\\"M284.9,370.7 285.2,383.7 267.6,371.5zM267.8,371.2 285.5,383.4 268.1,384.2zM268.6,371.3 268.9,384.3 251.3,372.1zM251.5,371.8 269.2,384 251.8,384.8zM252.3,372 252.7,384.9 235,372.8zM235.2,372.5 252.9,384.6 235.5,385.4zM236,372.6 236.4,385.5 218.7,373.4zM218.9,373.1 236.6,385.2 219.3,386zM285.4,382.8 285.7,395.7 268,383.6zM268.2,383.3 285.9,395.4 268.6,396.2zM269.1,383.4 269.4,396.3 251.7,384.2zM251.9,383.9 269.6,396 252.3,396.8zM252.8,384 253.1,396.9 235.4,384.8zM235.7,384.5 253.3,396.7 236,397.4zM236.5,384.6 236.8,397.6 219.1,385.4zM219.4,385.1 237,397.3 219.7,398.1zM285.8,394.9 286.1,407.8 268.5,395.7zM268.7,395.4 286.4,407.5 269,408.3zM269.5,395.5 269.8,408.4 252.2,396.3zM252.4,396 270.1,408.1 252.7,408.9zM253.2,396.1 253.6,409 235.9,396.9zM236.1,396.6 253.8,408.7 236.4,409.5zM236.9,396.7 237.3,409.6 219.6,397.5zM219.8,397.2 237.5,409.3 220.2,410.1zM286.3,406.9 286.6,419.9 268.9,407.7zM269.1,407.4 286.8,419.6 269.5,420.4zM270,407.5 270.3,420.5 252.6,408.3zM252.8,408 270.5,420.2 253.2,421zM253.7,408.2 254,421.1 236.3,409zM236.6,408.7 254.2,420.8 236.9,421.6zM237.4,408.8 237.7,421.7 220.1,409.6zM220.3,409.3 237.9,421.4 220.6,422.2zM254.1,420.2 254.6,433.4 236.8,421zM237,420.7 254.8,433.1 237.5,433.4zM237.8,420.8 238.3,433.5 220.5,421.6z\\\"/></clipPath><clipPath id=\\\"c26\\\"><path d=\\\"M286.7,419 287.1,432.4 269.4,419.8zM269.6,419.5 287.3,432.1 270,432.9zM270.4,419.6 270.8,433 253.1,420.4zM253.3,420.1 271,432.7 253.7,433.3z\\\"/></clipPath><clipPath id=\\\"c27\\\"><path d=\\\"M220.7,421.3 238.5,433.2 221.2,433.3z\\\"/></clipPath><clipPath id=\\\"c28\\\"><path d=\\\"M287.2,431.5 287,446.2 269.9,432.3z\\\"/></clipPath><clipPath id=\\\"c29\\\"><path d=\\\"M270.2,432 287.3,445.9 269.9,446z\\\"/></clipPath><clipPath id=\\\"c30\\\"><path d=\\\"M270.9,432.1 270.7,446.1 253.6,432.7z\\\"/></clipPath><clipPath id=\\\"c31\\\"><path d=\\\"M253.9,432.4 270.9,445.8 253.5,445.7z\\\"/></clipPath><clipPath id=\\\"c32\\\"><path d=\\\"M254.7,432.5 254.4,445.8 237.4,432.8z\\\"/></clipPath><clipPath id=\\\"c33\\\"><path d=\\\"M237.6,432.5 254.6,445.6 237.2,445.2zM238.2,444.5 237.4,457.3 220.8,443.9zM221,443.6 237.7,457.1 220.3,456.5z\\\"/></clipPath><clipPath id=\\\"c34\\\"><path d=\\\"M238.4,432.7 238,445.3 221.1,432.8z\\\"/></clipPath><clipPath id=\\\"c35\\\"><path d=\\\"M221.3,432.5 238.2,445 220.9,444.4z\\\"/></clipPath><clipPath id=\\\"c36\\\"><path d=\\\"M287.2,445.3 286.3,459.5 269.8,445.4z\\\"/></clipPath><clipPath id=\\\"c37\\\"><path d=\\\"M270.1,445.1 286.5,459.2 269.2,458.6z\\\"/></clipPath><clipPath id=\\\"c38\\\"><path d=\\\"M270.9,445.3 270,458.8 253.5,445.1z\\\"/></clipPath><clipPath id=\\\"c39\\\"><path d=\\\"M253.7,444.8 270.2,458.5 252.9,457.9zM254.5,445 253.7,458 237.1,444.6zM237.4,444.3 253.9,457.8 236.6,457.2zM286.5,458.6 285.7,471.5 269.1,458zM269.4,457.7 286,471.2 268.7,470.6zM270.2,457.9 269.5,470.8 252.8,457.3zM253.1,457 269.7,470.5 252.4,469.9zM253.9,457.2 253.2,470.1 236.5,456.6zM236.8,456.3 253.4,469.8 236.1,469.2zM237.6,456.5 236.9,469.4 220.3,455.9zM220.5,455.6 237.1,469.1 219.8,468.5zM285.9,470.7 285.2,483.6 268.6,470.1zM268.8,469.8 285.5,483.3 268.1,482.7zM269.6,470 268.9,482.9 252.3,469.4zM252.5,469.1 269.2,482.6 251.8,482zM253.4,469.3 252.6,482.2 236,468.7zM236.3,468.4 252.9,481.9 235.6,481.3zM237.1,468.6 236.4,481.5 219.7,467.9zM220,467.7 236.6,481.2 219.3,480.6z\\\"/></clipPath><clipPath id=\\\"c40\\\"><path d=\\\"M285.4,482.7 284.7,495.7 268.1,482.1zM268.3,481.9 284.9,495.4 267.6,494.8zM269.1,482 268.4,494.9 251.8,481.4zM252,481.2 268.7,494.7 251.3,494.1zM252.8,481.3 252.1,494.2 235.5,480.7zM235.7,480.4 252.4,494 235,493.4zM236.5,480.6 235.8,493.5 219.2,480zM219.4,479.7 236.1,493.3 218.7,492.6zM284.9,494.8 284.2,507.7 267.5,494.2zM267.8,493.9 284.4,507.4 267.1,506.8zM268.6,494.1 267.9,507 251.3,493.5zM251.5,493.2 268.1,506.7 250.8,506.1zM252.3,493.4 251.6,506.3 235,492.8zM235.2,492.5 251.8,506 234.5,505.4zM236,492.7 235.3,505.6 218.7,492.1zM218.9,491.8 235.6,505.3 218.2,504.7z\\\"/></clipPath><clipPath id=\\\"c41\\\"><path d=\\\"M280.3,378.2 280.6,390 264.2,378.9zM264.4,378.6 280.8,389.7 264.7,390.5zM265.3,378.7 265.6,390.6 249.1,379.5zM249.3,379.2 265.8,390.3 249.6,391zM250.2,379.3 250.5,391.1 234,380zM234.3,379.7 250.7,390.8 234.6,391.6zM235.1,379.8 235.4,391.7 219,380.6zM219.2,380.3 235.6,391.4 219.5,392.1zM280.8,389.2 281,401 264.6,389.9zM264.8,389.6 281.3,400.7 265.1,401.5zM265.7,389.7 266,401.6 249.5,390.5zM249.8,390.2 266.2,401.3 250.1,402zM250.6,390.3 250.9,402.1 234.5,391zM234.7,390.7 251.1,401.8 235,402.6zM235.5,390.8 235.8,402.7 219.4,391.6zM219.6,391.3 236,402.4 219.9,403.1zM281.2,400.1 281.5,412 265,400.9zM265.3,400.6 281.7,411.7 265.5,412.4zM266.1,400.7 266.4,412.6 250,401.5zM250.2,401.2 266.6,412.3 250.5,413zM251,401.3 251.3,413.1 234.9,402zM235.1,401.7 251.5,412.8 235.4,413.6zM235.9,401.8 236.2,413.7 219.8,402.6zM220,402.3 236.4,413.4 220.3,414.1zM281.6,411.1 281.9,423 265.4,411.9zM265.7,411.6 282.1,422.7 266,423.4zM266.5,411.7 266.8,423.6 250.4,412.5zM250.6,412.2 267,423.3 250.9,424zM251.4,412.3 251.7,424.1 235.3,413zM235.5,412.7 251.9,423.8 235.8,424.6zM236.3,412.8 236.6,424.7 220.2,413.6zM220.4,413.3 236.8,424.4 220.7,425.1zM251.8,423.3 252.2,435.3 235.7,424z\\\"/></clipPath><clipPath id=\\\"c42\\\"><path d=\\\"M282,422.1 282.3,434.8 265.9,422.9zM266.1,422.6 282.5,434.5 266.4,435.1zM266.9,422.7 267.2,435.2 250.8,423.4z\\\"/></clipPath><clipPath id=\\\"c43\\\"><path d=\\\"M251,423.1 267.5,434.9 251.4,435.2zM235.9,423.7 252.4,435.1 236.3,435.2z\\\"/></clipPath><clipPath id=\\\"c44\\\"><path d=\\\"M236.7,423.8 237.1,435.3 220.6,424.6z\\\"/></clipPath><clipPath id=\\\"c45\\\"><path d=\\\"M220.8,424.3 237.3,435.1 221.2,435.1z\\\"/></clipPath><clipPath id=\\\"c46\\\"><path d=\\\"M282.4,433.9 282.1,447.1 266.3,434.5z\\\"/></clipPath><clipPath id=\\\"c47\\\"><path d=\\\"M266.6,434.2 282.4,446.8 266.2,446.8zM267.4,434.3 267,447 251.3,434.6zM251.5,434.4 267.2,446.7 251.1,446.4z\\\"/></clipPath><clipPath id=\\\"c48\\\"><path d=\\\"M252.3,434.5 251.9,446.6 236.2,434.7z\\\"/></clipPath><clipPath id=\\\"c49\\\"><path d=\\\"M236.4,434.4 252.1,446.3 235.9,445.9zM236.9,445.2 236.2,457 220.8,444.7zM221,444.4 236.5,456.7 220.3,456.2z\\\"/></clipPath><clipPath id=\\\"c50\\\"><path d=\\\"M237.3,434.5 236.8,446 221.1,434.6z\\\"/></clipPath><clipPath id=\\\"c51\\\"><path d=\\\"M221.3,434.3 237,445.8 220.8,445.2z\\\"/></clipPath><clipPath id=\\\"c52\\\"><path d=\\\"M282.3,446.3 281.4,459 266.1,446.2z\\\"/></clipPath><clipPath id=\\\"c53\\\"><path d=\\\"M266.4,445.9 281.7,458.7 265.6,458.2zM267.2,446.1 266.4,458.3 251,445.9zM251.2,445.6 266.6,458 250.5,457.5zM281.6,458.1 281,470 265.5,457.6zM265.7,457.3 281.2,469.7 265.1,469.1zM266.6,457.5 265.9,469.3 250.4,456.9zM250.7,456.6 266.1,469 250,468.5zM251.5,456.8 250.8,468.7 235.3,456.3zM235.6,456 251.1,468.4 234.9,467.8zM236.4,456.2 235.7,468 220.3,455.6zM220.5,455.3 236,467.7 219.8,467.2z\\\"/></clipPath><clipPath id=\\\"c54\\\"><path d=\\\"M252,445.8 251.3,457.7 235.9,445.3zM236.1,445 251.5,457.4 235.4,456.8zM281.2,469.1 280.5,481 265,468.6zM265.3,468.3 280.7,480.7 264.6,480.1zM266.1,468.5 265.4,480.3 249.9,467.9zM250.2,467.6 265.7,480 249.5,479.5zM251,467.8 250.3,479.7 234.9,467.3zM235.1,467 250.6,479.4 234.4,478.8zM235.9,467.2 235.3,479 219.8,466.6z\\\"/></clipPath><clipPath id=\\\"c55\\\"><path d=\\\"M220,466.3 235.5,478.7 219.4,478.2z\\\"/></clipPath><clipPath id=\\\"c56\\\"><path d=\\\"M197.6,371.4 197.8,384.3 180.3,371.9zM180.5,371.6 198,384.1 180.6,384.6zM181.3,371.8 181.5,384.7 164,372.3zM164.2,372 181.7,384.4 164.3,384.9zM165,372.1 165.2,385 147.7,372.6zM147.9,372.3 165.4,384.7 148,385.3zM148.7,372.5 148.9,385.4 131.4,373zM131.6,372.7 149.1,385.1 131.7,385.6zM197.9,383.5 198,396.4 180.5,384zM180.8,383.7 198.2,396.1 180.9,396.6zM181.6,383.8 181.7,396.8 164.2,384.4zM164.5,384.1 181.9,396.5 164.6,397zM165.3,384.2 165.4,397.1 147.9,384.7zM148.2,384.4 165.6,396.8 148.3,397.3zM149,384.5 149.1,397.5 131.7,385zM131.9,384.8 149.3,397.2 132,397.7zM198.1,395.6 198.3,408.5 180.8,396.1zM181,395.8 198.5,408.2 181.1,408.7zM181.8,395.9 182,408.8 164.5,396.4zM164.7,396.1 182.2,408.5 164.9,409.1zM165.5,396.3 165.7,409.2 148.2,396.8zM148.4,396.5 165.9,408.9 148.6,409.4zM149.2,396.6 149.4,409.5 131.9,397.1zM132.1,396.8 149.6,409.2 132.3,409.8zM198.4,407.6 198.5,420.6 181.1,408.2zM181.3,407.9 198.7,420.3 181.4,420.8zM182.1,408 182.2,420.9 164.8,408.5zM165,408.2 182.4,420.6 165.1,421.1zM165.8,408.3 165.9,421.3 148.5,408.8zM148.7,408.6 166.1,421 148.8,421.5zM149.5,408.7 149.6,421.6 132.2,409.2zM132.4,408.9 149.9,421.3 132.5,421.8zM198.6,419.7 198.8,432.9 181.3,420.2zM181.5,419.9 199,432.6 181.7,433.1zM182.4,420 182.5,433.2 165,420.6zM165.2,420.3 182.7,432.9 165.4,433.3zM166.1,420.4 166.2,433.5 148.7,420.9zM148.9,420.6 166.5,433.2 149.1,433.4zM149.8,420.8 150,433.5 132.4,421.3z\\\"/></clipPath><clipPath id=\\\"c57\\\"><path d=\\\"M132.6,421 150.2,433.3 132.8,433.4z\\\"/></clipPath><clipPath id=\\\"c58\\\"><path d=\\\"M198.9,432 198.8,445.9 181.6,432.5zM181.9,432.2 199,445.6 181.7,445.8zM182.6,432.4 182.5,445.9 165.3,432.8z\\\"/></clipPath><clipPath id=\\\"c59\\\"><path d=\\\"M165.6,432.5 182.7,445.6 165.3,445.6zM166.4,432.6 166.1,445.8 149.1,432.8zM149.3,432.6 166.3,445.5 149,445.3zM150.1,432.7 149.8,445.5 132.8,432.8zM182.6,445.1 182,458.3 165.2,445zM165.5,444.7 182.3,458 164.9,457.8zM166.3,444.9 165.7,457.9 148.9,444.7z\\\"/></clipPath><clipPath id=\\\"c60\\\"><path d=\\\"M133,432.5 150,445.2 132.6,444.9z\\\"/></clipPath><clipPath id=\\\"c61\\\"><path d=\\\"M198.9,445.1 198.3,458.7 181.6,445.2z\\\"/></clipPath><clipPath id=\\\"c62\\\"><path d=\\\"M181.8,444.9 198.6,458.5 181.2,458.2zM149.1,444.5 166,457.6 148.6,457.3zM150,444.6 149.4,457.5 132.6,444.3zM132.8,444 149.7,457.2 132.3,456.9zM198.5,457.9 198,470.8 181.2,457.6zM181.4,457.3 198.3,470.5 180.9,470.2zM182.2,457.5 181.7,470.4 164.9,457.2zM165.1,456.9 182,470.1 164.6,469.8zM165.9,457.1 165.4,470 148.6,456.8zM148.8,456.5 165.7,469.7 148.3,469.4zM149.6,456.7 149.1,469.6 132.3,456.4zM132.5,456.1 149.4,469.3 132,469z\\\"/></clipPath><clipPath id=\\\"c63\\\"><path d=\\\"M198.2,470 197.7,482.9 180.9,469.7zM181.1,469.4 198,482.6 180.6,482.3zM181.9,469.5 181.4,482.5 164.6,469.3zM164.8,469 181.7,482.2 164.3,481.9zM165.6,469.1 165.1,482.1 148.3,468.8zM148.5,468.6 165.4,481.8 148,481.5zM149.3,468.7 148.8,481.6 132,468.4zM132.2,468.2 149.1,481.4 131.7,481.1zM197.9,482 197.4,494.9 180.5,481.7zM180.8,481.5 197.7,494.7 180.3,494.4zM181.6,481.6 181.1,494.5 164.3,481.3zM164.5,481 181.4,494.3 164,494zM165.3,481.2 164.8,494.1 148,480.9zM148.2,480.6 165.1,493.8 147.7,493.6zM149,480.8 148.5,493.7 131.7,480.5zM131.9,480.2 148.8,493.4 131.4,493.1zM197.6,494.1 197.1,507 180.2,493.8zM180.5,493.5 197.4,506.7 180,506.4zM181.3,493.7 180.8,506.6 163.9,493.4zM164.2,493.1 181.1,506.3 163.7,506zM165,493.3 164.5,506.2 147.7,493zM147.9,492.7 164.8,505.9 147.4,505.6zM148.7,492.9 148.2,505.8 131.4,492.6zM131.6,492.3 148.5,505.5 131.1,505.2z\\\"/></clipPath><clipPath id=\\\"c64\\\"><path d=\\\"M193.5,378.7 193.6,390.5 177.4,379.2zM177.6,378.9 193.9,390.2 177.7,390.7zM178.5,379 178.6,390.9 162.3,379.5zM162.5,379.2 178.8,390.6 162.6,391.1zM163.4,379.3 163.5,391.2 147.2,379.8zM147.4,379.5 163.7,390.9 147.6,391.4zM148.3,379.6 148.4,391.5 132.1,380.1zM132.4,379.8 148.6,391.2 132.5,391.7zM193.8,389.7 193.9,401.5 177.6,390.2zM177.9,389.9 194.1,401.2 178,401.7zM178.7,390 178.8,401.9 162.5,390.5zM162.8,390.2 179,401.6 162.9,402.1zM163.6,390.3 163.7,402.2 147.5,390.8zM147.7,390.5 163.9,401.9 147.8,402.4zM148.5,390.6 148.6,402.5 132.4,391.1zM132.6,390.8 148.8,402.2 132.7,402.7zM194,400.7 194.1,412.5 177.9,401.2zM178.1,400.9 194.3,412.2 178.2,412.7zM178.9,401 179,412.9 162.8,401.5zM163,401.2 179.2,412.6 163.1,413.1zM163.8,401.3 163.9,413.2 147.7,401.8zM147.9,401.5 164.2,412.9 148,413.4zM148.7,401.6 148.8,413.5 132.6,402.1zM132.8,401.8 149.1,413.2 132.9,413.7zM194.2,411.7 194.3,423.5 178.1,412.2zM178.3,411.9 194.6,423.2 178.4,423.7zM179.2,412 179.3,423.9 163,412.5zM163.2,412.2 179.5,423.6 163.3,424.1zM164.1,412.3 164.2,424.2 147.9,412.8zM148.1,412.5 164.4,423.9 148.2,424.4zM149,412.6 149.1,424.5 132.8,413.1zM133.1,412.8 149.3,424.2 133.2,424.7zM194.5,422.7 194.6,435 178.3,423.2zM178.6,422.9 194.8,434.7 178.7,435.1zM179.4,423 179.5,435.2 163.3,423.5zM163.5,423.2 179.7,434.9 163.6,435.2zM164.3,423.3 164.4,435.3 148.2,423.8zM148.4,423.5 164.7,435 148.5,435.2zM149.2,423.6 149.4,435.3 133.1,424.1z\\\"/></clipPath><clipPath id=\\\"c65\\\"><path d=\\\"M133.3,423.8 149.6,435 133.4,435.1z\\\"/></clipPath><clipPath id=\\\"c66\\\"><path d=\\\"M194.7,434.1 194.5,446.7 178.6,434.5zM178.9,434.2 194.7,446.4 178.6,446.5zM179.7,434.4 179.4,446.7 163.5,434.6zM194.7,445.9 194.1,458.3 178.5,446z\\\"/></clipPath><clipPath id=\\\"c67\\\"><path d=\\\"M163.8,434.3 179.6,446.4 163.4,446.3zM164.6,434.5 164.3,446.5 148.4,434.6zM148.7,434.3 164.5,446.2 148.3,446zM149.5,434.5 149.1,446.2 133.4,434.6zM133.6,434.3 149.4,445.9 133.2,445.6zM178.7,445.7 194.3,458 178.2,457.7zM179.5,445.8 179,457.9 163.4,445.8zM163.6,445.5 179.2,457.6 163.1,457.4zM164.4,445.6 163.9,457.5 148.3,445.4zM148.5,445.2 164.2,457.2 148,457zM149.3,445.3 148.8,457.1 133.1,445.1zM194.3,457.4 193.8,469.3 178.1,457.2zM178.4,456.9 194.1,469 177.9,468.7zM179.2,457.1 178.7,468.9 163,456.8zM163.3,456.5 179,468.6 162.8,468.4zM164.1,456.7 163.7,468.5 148,456.4z\\\"/></clipPath><clipPath id=\\\"c68\\\"><path d=\\\"M133.4,444.8 149.1,456.9 132.9,456.6zM148.2,456.1 163.9,468.2 147.7,468zM149,456.3 148.6,468.1 132.9,456zM133.1,455.8 148.8,467.9 132.7,467.6zM194,468.4 193.6,480.3 177.9,468.2zM178.1,467.9 193.8,480 177.6,479.7zM178.9,468.1 178.5,479.9 162.8,467.8zM163,467.5 178.7,479.6 162.6,479.4zM163.8,467.7 163.4,479.5 147.7,467.4zM147.9,467.1 163.6,479.2 147.5,479zM148.7,467.3 148.3,479.1 132.6,467zM132.8,466.8 148.5,478.9 132.4,478.6z\\\"/></clipPath><filter id=\\\"t1\\\" color-interpolation-filters=\\\"sRGB\\\"><feColorMatrix values=\\\"0.91 0 0 0 0 0 0.91 0 0 0 0 0 0.941 0 0 0 0 0 1 0\\\"/></filter><filter id=\\\"t2\\\" color-interpolation-filters=\\\"sRGB\\\"><feColorMatrix values=\\\"0.816 0 0 0 0 0 0.816 0 0 0 0 0 0.863 0 0 0 0 0 1 0\\\"/></filter><clipPath id=\\\"c69\\\"><path d=\\\"M141.1,255.7 139.1,267.9 121.7,252.8zM122,252.5 139.3,267.6 119.9,264.8zM122.8,252.8 120.8,265 103.4,250zM103.7,249.7 121,264.8 101.6,261.9zM104.5,250 102.5,262.2 85.1,247.1zM85.4,246.9 102.7,261.9 83.3,259.1zM139.3,267.1 137.3,279.3 119.9,264.3zM120.2,264 137.5,279.1 118.1,276.2zM121,264.3 119,276.5 101.6,261.4zM101.9,261.2 119.2,276.2 99.8,273.4zM102.7,261.4 100.7,273.6 83.3,258.6zM83.6,258.3 100.9,273.4 81.5,270.5zM137.5,278.6 135.5,290.8 118.2,275.7zM118.4,275.5 135.7,290.5 116.4,287.7zM119.2,275.7 117.2,287.9 99.9,272.9zM100.1,272.6 117.4,287.7 98.1,284.8zM100.9,272.9 98.9,285.1 81.6,270zM81.8,269.8 99.1,284.8 79.8,282zM135.8,290 133.7,302.2 116.4,287.2zM116.6,286.9 134,302 114.6,299.1zM117.5,287.2 115.4,299.4 98.1,284.3zM98.3,284.1 115.7,299.1 96.3,296.3zM99.2,284.3 97.1,296.6 79.8,281.5zM80,281.2 97.4,296.3 78,293.4zM134,301.5 131.9,313.7 114.6,298.6zM114.8,298.4 132.2,313.4 112.8,310.6zM115.7,298.6 113.6,310.9 96.3,295.8zM96.5,295.5 113.9,310.6 94.5,307.7zM97.4,295.8 95.3,308 78,292.9zM78.2,292.7 95.6,307.8 76.2,304.9zM132.2,312.9 130.2,325.2 112.8,310.1zM113,309.8 130.4,324.9 111,322zM113.9,310.1 111.9,322.3 94.5,307.2zM94.8,307 112.1,322.1 92.7,319.2zM95.6,307.3 93.6,319.5 76.2,304.4zM76.5,304.1 93.8,319.2 74.4,316.3z\\\"/></clipPath><clipPath id=\\\"c70\\\"><path d=\\\"M130.4,324.5 128.2,332.2 111,321.6z\\\"/></clipPath><clipPath id=\\\"c71\\\"><path d=\\\"M111.2,321.3 128.4,331.9 109.1,332.5z\\\"/></clipPath><clipPath id=\\\"c72\\\"><path d=\\\"M112.1,321.6 109.9,332.8 92.7,318.7z\\\"/></clipPath><clipPath id=\\\"c73\\\"><path d=\\\"M93,318.4 110.1,332.5 90.9,333z\\\"/></clipPath><clipPath id=\\\"c74\\\"><path d=\\\"M93.8,318.7 91.6,333.2 74.4,315.8z\\\"/></clipPath><clipPath id=\\\"c75\\\"><path d=\\\"M74.7,315.6 91.9,332.9 72.7,333.6z\\\"/></clipPath><clipPath id=\\\"c76\\\"><path d=\\\"M128.3,331.5 130.4,339.1 109,332.2z\\\"/></clipPath><clipPath id=\\\"c77\\\"><path d=\\\"M109.1,331.9 130.5,338.8 111.3,343z\\\"/></clipPath><clipPath id=\\\"c78\\\"><path d=\\\"M110.1,331.9 112.2,343 90.8,332.5z\\\"/></clipPath><clipPath id=\\\"c79\\\"><path d=\\\"M91,332.2 112.3,342.7 93.1,346.7z\\\"/></clipPath><clipPath id=\\\"c80\\\"><path d=\\\"M91.8,332.3 93.9,346.7 72.6,333z\\\"/></clipPath><clipPath id=\\\"c81\\\"><path d=\\\"M72.8,332.7 94.1,346.4 74.8,349.8z\\\"/></clipPath><clipPath id=\\\"c82\\\"><path d=\\\"M130.3,338.3 132.8,350.5 111.1,342.5zM111.3,342.2 132.9,350.1 113.7,354.3zM112.2,342.2 114.6,354.3 92.9,346.2zM93,345.8 114.8,354 95.6,358.2zM132.7,349.7 135.2,361.8 113.6,353.8zM113.7,353.5 135.3,361.5 116.1,365.7zM114.6,353.5 117,365.6 95.5,357.7zM95.6,357.4 117.2,365.3 98,369.5zM96.5,357.3 98.9,369.5 77.4,361.5zM77.5,361.2 99.1,369.1 79.9,373.3zM135.1,361 137.6,373.1 116,365.2zM116.1,364.9 137.7,372.8 118.5,377zM117,364.8 119.4,377 97.9,369zM98,368.7 119.6,376.6 100.4,380.8zM98.9,368.7 101.3,380.8 79.8,372.9zM79.9,372.5 101.5,380.5 82.3,384.7zM137.5,372.3 140,384.5 118.4,376.5zM118.5,376.2 140.1,384.2 120.9,388.3zM119.4,376.2 121.8,388.3 100.3,380.4zM100.4,380 122,388 102.8,392.2zM101.3,380 103.7,392.1 82.2,384.2zM82.3,383.9 103.9,391.8 84.7,396zM139.9,383.7 142.4,395.8 120.8,387.9zM120.9,387.5 142.5,395.5 123.3,399.7zM121.8,387.5 124.2,399.7 102.7,391.7zM102.8,391.4 124.4,399.3 105.2,403.5zM103.7,391.3 106.1,403.5 84.6,395.5zM84.7,395.2 106.3,403.2 87.1,407.4zM142.3,395 144.8,407.2 123.2,399.2zM123.3,398.9 144.9,406.8 125.7,411zM124.2,398.9 126.6,411 105.1,403zM105.2,402.7 126.8,410.7 107.6,414.9zM106.1,402.7 108.5,414.8 87,406.9zM87.1,406.6 108.7,414.5 89.5,418.7zM144.7,406.4 147.2,418.5 125.6,410.6zM125.7,410.2 147.3,418.2 128.1,422.4zM126.6,410.2 129,422.3 107.5,414.4zM107.6,414.1 129.2,422 110,426.2zM108.5,414 110.9,426.2 89.4,418.2zM89.5,417.9 111.1,425.8 91.9,430z\\\"/></clipPath><clipPath id=\\\"c83\\\"><path d=\\\"M93.9,345.8 96.5,358.1 74.6,349.3z\\\"/></clipPath><clipPath id=\\\"c84\\\"><path d=\\\"M74.8,349 96.7,357.8 77.5,362z\\\"/></clipPath></defs><g><use href=\\\"#i0\\\" transform=\\\"matrix(-2.415 0 0 2.415 229.4 123.7)\\\"/></g><g filter=\\\"url(#t0)\\\"><g clip-path=\\\"url(#c0)\\\"><use href=\\\"#i1\\\" transform=\\\"matrix(-2.413 -0.103 -0.103 2.401 322.2 253.5)\\\"/></g><g clip-path=\\\"url(#c1)\\\"><use href=\\\"#i1\\\" transform=\\\"matrix(-2.413 -0.103 -0.195 2.243 324.4 257.6)\\\"/></g><g clip-path=\\\"url(#c2)\\\"><use href=\\\"#i1\\\" transform=\\\"matrix(-2.353 0 -0.104 2.4 321.8 253.2)\\\"/></g><g clip-path=\\\"url(#c3)\\\"><use href=\\\"#i1\\\" transform=\\\"matrix(-2.353 0 -0.146 1.813 322.9 269.8)\\\"/></g><g clip-path=\\\"url(#c4)\\\"><use href=\\\"#i1\\\" transform=\\\"matrix(-2.386 0.209 -0.197 2.131 324.6 259.3)\\\"/></g><g clip-path=\\\"url(#c5)\\\"><use href=\\\"#i1\\\" transform=\\\"matrix(-2.412 -0.103 -0.197 2.131 324.8 261.5)\\\"/></g><g clip-path=\\\"url(#c6)\\\"><use href=\\\"#i1\\\" transform=\\\"matrix(-2.382 0.137 -0.151 2.497 323.1 247.7)\\\"/></g><g clip-path=\\\"url(#c7)\\\"><use href=\\\"#i1\\\" transform=\\\"matrix(-2.413 -0.103 -0.151 2.497 323.5 251.2)\\\"/></g><g clip-path=\\\"url(#c8)\\\"><use href=\\\"#i1\\\" transform=\\\"matrix(-2.406 -0.198 -0.103 2.407 322 256.5)\\\"/></g><g clip-path=\\\"url(#c9)\\\"><use href=\\\"#i1\\\" transform=\\\"matrix(-2.386 0.209 0.322 1.779 307.5 271)\\\"/></g><g clip-path=\\\"url(#c10)\\\"><use href=\\\"#i1\\\" transform=\\\"matrix(-2.383 0.442 0.326 2.14 307.3 257.3)\\\"/></g><g clip-path=\\\"url(#c11)\\\"><use href=\\\"#i1\\\" transform=\\\"matrix(-2.382 0.137 0.326 2.14 307.3 259.5)\\\"/></g><g clip-path=\\\"url(#c12)\\\"><use href=\\\"#i1\\\" transform=\\\"matrix(-2.42 0.389 0.268 2.53 309.7 242.9)\\\"/></g><g clip-path=\\\"url(#c13)\\\"><use href=\\\"#i1\\\" transform=\\\"matrix(-2.388 -0.067 0.268 2.53 309.3 249.5)\\\"/></g><g clip-path=\\\"url(#c14)\\\"><use href=\\\"#i1\\\" transform=\\\"matrix(-2.442 0.191 0.186 2.93 313.2 230.7)\\\"/></g><g clip-path=\\\"url(#c15)\\\"><use href=\\\"#i1\\\" transform=\\\"matrix(-2.406 -0.198 0.186 2.93 312.4 239.1)\\\"/></g><g clip-path=\\\"url(#c16)\\\"><use href=\\\"#i1\\\" transform=\\\"matrix(-2.426 0.091 0.153 3.377 314.1 215.9)\\\"/></g><g clip-path=\\\"url(#c17)\\\"><use href=\\\"#i1\\\" transform=\\\"matrix(-2.383 0.442 0.428 2.365 303.4 248.8)\\\"/></g><g clip-path=\\\"url(#c18)\\\"><use href=\\\"#i1\\\" transform=\\\"matrix(-2.42 0.389 0.439 2.347 303.3 249.9)\\\"/></g><g clip-path=\\\"url(#c19)\\\"><use href=\\\"#i1\\\" transform=\\\"matrix(-2.376 0.431 0.506 2.41 300.1 246.9)\\\"/></g><g clip-path=\\\"url(#c20)\\\"><use href=\\\"#i1\\\" transform=\\\"matrix(-2.442 0.191 0.506 2.41 301.1 250.3)\\\"/></g><g clip-path=\\\"url(#c21)\\\"><use href=\\\"#i1\\\" transform=\\\"matrix(-2.376 0.431 0.605 2.774 295.9 231.3)\\\"/></g><g clip-path=\\\"url(#c22)\\\"><use href=\\\"#i1\\\" transform=\\\"matrix(-2.426 0.091 0.605 2.774 297 238.7)\\\"/></g><g clip-path=\\\"url(#c23)\\\"><use href=\\\"#i1\\\" transform=\\\"matrix(-2.379 0.427 0.678 3.287 292.8 209.6)\\\"/></g><g clip-path=\\\"url(#c24)\\\"><use href=\\\"#i1\\\" transform=\\\"matrix(-2.379 0.427 0.428 2.365 303.5 248.9)\\\"/></g></g><g><use href=\\\"#i2\\\" transform=\\\"matrix(-2.413 -0.103 -0.103 2.413 329.5 251.4)\\\"/></g><g><use href=\\\"#i3\\\" transform=\\\"matrix(-2.376 0.431 0.431 2.376 329.8 326.9)\\\"/></g><g><use href=\\\"#i4\\\" transform=\\\"matrix(-2.333 0.625 0.625 2.333 552.4 279.5)\\\"/></g><g filter=\\\"url(#t0)\\\"><g clip-path=\\\"url(#c25)\\\"><use href=\\\"#i5\\\" transform=\\\"matrix(-2.413 0.09 0.09 2.411 284.4 371.1)\\\"/></g><g clip-path=\\\"url(#c26)\\\"><use href=\\\"#i5\\\" transform=\\\"matrix(-2.413 0.09 0.098 2.497 284.3 369.4)\\\"/></g><g clip-path=\\\"url(#c27)\\\"><use href=\\\"#i5\\\" transform=\\\"matrix(-2.41 -0.007 0.122 2.234 283.7 377.3)\\\"/></g><g clip-path=\\\"url(#c28)\\\"><use href=\\\"#i5\\\" transform=\\\"matrix(-2.409 0.094 -0.001 2.785 286.8 362.2)\\\"/></g><g clip-path=\\\"url(#c29)\\\"><use href=\\\"#i5\\\" transform=\\\"matrix(-2.421 -0.007 -0.019 2.648 287.3 366.3)\\\"/></g><g clip-path=\\\"url(#c30)\\\"><use href=\\\"#i5\\\" transform=\\\"matrix(-2.409 0.058 -0.019 2.648 287.2 365.8)\\\"/></g><g clip-path=\\\"url(#c31)\\\"><use href=\\\"#i5\\\" transform=\\\"matrix(-2.422 -0.041 -0.037 2.512 287.8 370.6)\\\"/></g><g clip-path=\\\"url(#c32)\\\"><use href=\\\"#i5\\\" transform=\\\"matrix(-2.409 0.021 -0.037 2.512 287.6 369.7)\\\"/></g><g clip-path=\\\"url(#c33)\\\"><use href=\\\"#i5\\\" transform=\\\"matrix(-2.421 -0.076 -0.053 2.38 288.3 375)\\\"/></g><g clip-path=\\\"url(#c34)\\\"><use href=\\\"#i5\\\" transform=\\\"matrix(-2.41 -0.007 -0.053 2.38 288.1 373.6)\\\"/></g><g clip-path=\\\"url(#c35)\\\"><use href=\\\"#i5\\\" transform=\\\"matrix(-2.419 -0.103 -0.065 2.248 288.6 379.5)\\\"/></g><g clip-path=\\\"url(#c36)\\\"><use href=\\\"#i5\\\" transform=\\\"matrix(-2.421 -0.007 -0.152 2.655 291.3 366.1)\\\"/></g><g clip-path=\\\"url(#c37)\\\"><use href=\\\"#i5\\\" transform=\\\"matrix(-2.413 -0.105 -0.141 2.524 290.9 370.7)\\\"/></g><g clip-path=\\\"url(#c38)\\\"><use href=\\\"#i5\\\" transform=\\\"matrix(-2.422 -0.041 -0.141 2.524 290.9 370.2)\\\"/></g><g clip-path=\\\"url(#c39)\\\"><use href=\\\"#i5\\\" transform=\\\"matrix(-2.413 -0.105 -0.128 2.437 290.4 373.7)\\\"/></g><g clip-path=\\\"url(#c40)\\\"><use href=\\\"#i5\\\" transform=\\\"matrix(-2.413 -0.105 -0.105 2.41 289.6 374.6)\\\"/></g></g><g><use href=\\\"#i6\\\" transform=\\\"matrix(-2.413 -0.105 -0.104 2.408 286 439.6)\\\"/></g><g><g clip-path=\\\"url(#c41)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.414 0.09 0.09 2.416 279.9 378.5)\\\"/></g><g clip-path=\\\"url(#c42)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.413 0.09 0.1 2.567 279.7 375.8)\\\"/></g><g clip-path=\\\"url(#c43)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.411 0.028 0.106 2.445 279.6 378.8)\\\"/></g><g clip-path=\\\"url(#c44)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.411 0.087 0.109 2.323 279.5 380.3)\\\"/></g><g clip-path=\\\"url(#c45)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.412 -0.009 0.107 2.193 279.5 385.1)\\\"/></g><g clip-path=\\\"url(#c46)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.411 0.063 -0.032 2.707 282.7 372.6)\\\"/></g><g clip-path=\\\"url(#c47)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.423 -0.025 -0.048 2.587 283.1 375.9)\\\"/></g><g clip-path=\\\"url(#c48)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.411 0.001 -0.063 2.469 283.4 378.6)\\\"/></g><g clip-path=\\\"url(#c49)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.42 -0.088 -0.075 2.347 283.9 383)\\\"/></g><g clip-path=\\\"url(#c50)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.412 -0.009 -0.075 2.347 283.7 381.5)\\\"/></g><g clip-path=\\\"url(#c51)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.418 -0.107 -0.083 2.213 284 387)\\\"/></g><g clip-path=\\\"url(#c52)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.423 -0.025 -0.151 2.605 286 375.4)\\\"/></g><g clip-path=\\\"url(#c53)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.413 -0.105 -0.137 2.495 285.5 378.9)\\\"/></g><g clip-path=\\\"url(#c54)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.42 -0.088 -0.125 2.43 285.2 380.7)\\\"/></g><g clip-path=\\\"url(#c55)\\\"><use href=\\\"#i7\\\" transform=\\\"matrix(-2.413 -0.105 -0.105 2.415 284.5 381.4)\\\"/></g></g><g filter=\\\"url(#t0)\\\"><g clip-path=\\\"url(#c56)\\\"><use href=\\\"#i5\\\" transform=\\\"matrix(-2.415 0.051 0.051 2.412 197.2 371.8)\\\"/></g><g clip-path=\\\"url(#c57)\\\"><use href=\\\"#i5\\\" transform=\\\"matrix(-2.413 -0.006 0.069 2.308 196.8 375.4)\\\"/></g><g clip-path=\\\"url(#c58)\\\"><use href=\\\"#i5\\\" transform=\\\"matrix(-2.412 0.056 0 2.636 198.4 366.4)\\\"/></g><g clip-path=\\\"url(#c59)\\\"><use href=\\\"#i5\\\" transform=\\\"matrix(-2.42 -0.022 -0.022 2.481 199.1 371.2)\\\"/></g><g clip-path=\\\"url(#c60)\\\"><use href=\\\"#i5\\\" transform=\\\"matrix(-2.418 -0.061 -0.039 2.329 199.6 376.4)\\\"/></g><g clip-path=\\\"url(#c61)\\\"><use href=\\\"#i5\\\" transform=\\\"matrix(-2.42 -0.001 -0.09 2.56 201.1 368.7)\\\"/></g><g clip-path=\\\"url(#c62)\\\"><use href=\\\"#i5\\\" transform=\\\"matrix(-2.414 -0.061 -0.082 2.479 200.9 371.5)\\\"/></g><g clip-path=\\\"url(#c63)\\\"><use href=\\\"#i5\\\" transform=\\\"matrix(-2.415 -0.061 -0.061 2.412 200.1 373.9)\\\"/></g></g><g><use href=\\\"#i8\\\" transform=\\\"matrix(-2.414 -0.061 -0.061 2.409 196.7 438.8)\\\"/></g><g><g clip-path=\\\"url(#c64)\\\"><use href=\\\"#i9\\\" transform=\\\"matrix(-2.415 0.051 0.051 2.417 193.1 379.1)\\\"/></g><g clip-path=\\\"url(#c65)\\\"><use href=\\\"#i9\\\" transform=\\\"matrix(-2.414 -0.006 0.06 2.284 192.9 382.9)\\\"/></g><g clip-path=\\\"url(#c66)\\\"><use href=\\\"#i9\\\" transform=\\\"matrix(-2.413 0.039 -0.016 2.583 194.6 375.6)\\\"/></g><g clip-path=\\\"url(#c67)\\\"><use href=\\\"#i9\\\" transform=\\\"matrix(-2.42 -0.031 -0.036 2.449 195.2 379.4)\\\"/></g><g clip-path=\\\"url(#c68)\\\"><use href=\\\"#i9\\\" transform=\\\"matrix(-2.414 -0.061 -0.062 2.415 195.8 380.8)\\\"/></g></g><g><use href=\\\"#i10\\\" transform=\\\"matrix(-2.415 0 0 2.415 301.9 350.7)\\\"/></g><g filter=\\\"url(#t0)\\\"><use href=\\\"#i11\\\" transform=\\\"matrix(-2.415 0 0 2.415 289.8 225.2)\\\"/></g><g><use href=\\\"#i12\\\" transform=\\\"matrix(-2.415 0 0 2.415 309.1 227.6)\\\"/></g><g filter=\\\"url(#t0)\\\"><use href=\\\"#i13\\\" transform=\\\"matrix(-2.415 0.008 0.008 2.415 310.9 53.3)\\\"/></g><g><use href=\\\"#i14\\\" transform=\\\"matrix(-2.415 0.008 0.008 2.415 249.8 216.6)\\\"/></g><g><use href=\\\"#i15\\\" transform=\\\"matrix(-2.415 0.008 0.008 2.415 296.7 162.1)\\\"/></g><g filter=\\\"url(#t1)\\\"><use href=\\\"#i16\\\" transform=\\\"matrix(-2.415 0.008 0.008 2.415 318.6 195.8)\\\"/></g><g filter=\\\"url(#t2)\\\"><use href=\\\"#i17\\\" transform=\\\"matrix(-2.415 0.008 0.008 2.415 301.5 130.7)\\\"/></g><g filter=\\\"url(#t1)\\\"><use href=\\\"#i18\\\" transform=\\\"matrix(-2.415 0.008 0.008 2.415 356.8 55.6)\\\"/></g><g><use href=\\\"#i19\\\" transform=\\\"matrix(-2.415 0.008 0.008 2.415 380.8 0)\\\"/></g><g filter=\\\"url(#t0)\\\"><g clip-path=\\\"url(#c69)\\\"><use href=\\\"#i20\\\" transform=\\\"matrix(-2.389 -0.372 -0.369 2.374 140.5 255.9)\\\"/></g><g clip-path=\\\"url(#c70)\\\"><use href=\\\"#i20\\\" transform=\\\"matrix(-2.389 -0.371 -0.429 1.475 142.2 282.2)\\\"/></g><g clip-path=\\\"url(#c71)\\\"><use href=\\\"#i20\\\" transform=\\\"matrix(-2.377 0.065 -0.411 2.167 141.6 258.9)\\\"/></g><g clip-path=\\\"url(#c72)\\\"><use href=\\\"#i20\\\" transform=\\\"matrix(-2.382 -0.37 -0.411 2.167 141.6 262.2)\\\"/></g><g clip-path=\\\"url(#c73)\\\"><use href=\\\"#i20\\\" transform=\\\"matrix(-2.37 0.054 -0.392 2.843 140.9 236.3)\\\"/></g><g clip-path=\\\"url(#c74)\\\"><use href=\\\"#i20\\\" transform=\\\"matrix(-2.389 -0.371 -0.392 2.843 141.2 242.8)\\\"/></g><g clip-path=\\\"url(#c75)\\\"><use href=\\\"#i20\\\" transform=\\\"matrix(-2.377 0.074 -0.373 3.549 140.4 212.2)\\\"/></g><g clip-path=\\\"url(#c76)\\\"><use href=\\\"#i20\\\" transform=\\\"matrix(-2.377 0.065 0.442 1.471 112.9 282.3)\\\"/></g><g clip-path=\\\"url(#c77)\\\"><use href=\\\"#i20\\\" transform=\\\"matrix(-2.371 0.503 0.451 2.178 112.6 255.2)\\\"/></g><g clip-path=\\\"url(#c78)\\\"><use href=\\\"#i20\\\" transform=\\\"matrix(-2.37 0.054 0.451 2.178 112.6 258.6)\\\"/></g><g clip-path=\\\"url(#c79)\\\"><use href=\\\"#i20\\\" transform=\\\"matrix(-2.372 0.471 0.447 2.853 112.7 229.5)\\\"/></g><g clip-path=\\\"url(#c80)\\\"><use href=\\\"#i20\\\" transform=\\\"matrix(-2.377 0.074 0.447 2.853 112.8 235.6)\\\"/></g><g clip-path=\\\"url(#c81)\\\"><use href=\\\"#i20\\\" transform=\\\"matrix(-2.386 0.412 0.434 3.397 113.5 209.5)\\\"/></g><g clip-path=\\\"url(#c82)\\\"><use href=\\\"#i20\\\" transform=\\\"matrix(-2.371 0.503 0.499 2.349 110.8 248.6)\\\"/></g><g clip-path=\\\"url(#c83)\\\"><use href=\\\"#i20\\\" transform=\\\"matrix(-2.386 0.412 0.53 2.388 109.8 248.2)\\\"/></g><g clip-path=\\\"url(#c84)\\\"><use href=\\\"#i20\\\" transform=\\\"matrix(-2.365 0.501 0.563 2.53 108 240.8)\\\"/></g></g><g><use href=\\\"#i21\\\" transform=\\\"matrix(-2.386 -0.371 -0.371 2.386 145.7 254.3)\\\"/></g><g><use href=\\\"#i22\\\" transform=\\\"matrix(-2.363 0.5 0.5 2.363 141.9 325.3)\\\"/></g></svg>\";\n"
|
|
70
83
|
},
|
|
71
84
|
{
|
|
72
85
|
"path": "components/heroArt.tsx",
|
|
73
|
-
"content": "import type { CSSProperties, ReactNode } from \"react\";\n\n// The hero in the middle of the heroes screen: a chibi medieval fighter in the reference's look\n// (big head, heavy dark outline). The knight wears a plumed helmet and a tabard over plate, a sword\n// in one hand and a heater shield on the other arm; the archer a hood, a bow and a quiver; the mage\n// a pointed hat, a robe and a staff. The tabard / hood / robe takes the hero's class colour.\n\nconst INK = \"#10172e\";\n\nexport type HeroKind = \"knight\" | \"archer\" | \"mage\";\n\n/** Which medieval hero to draw for a class: the knight unless the class reads as archer or mage. */\nexport function heroKind(classID: string | null | undefined): HeroKind {\n const id = (classID ?? \"\").toLowerCase();\n if (/arch|bow|hunt|range/.test(id)) return \"archer\";\n if (/mag|wiz|sorc|caster|priest|heal|druid/.test(id)) return \"mage\";\n return \"knight\";\n}\n\nexport function HeroArt({\n color,\n kind = \"knight\",\n style,\n}: {\n color: string;\n kind?: HeroKind;\n style?: CSSProperties;\n}): ReactNode {\n const skin = \"#f2b98a\";\n const steel = \"#c9d3e3\";\n const steelDark = \"#8f9db5\";\n const leather = \"#8a5a2b\";\n const knight = kind === \"knight\";\n return (\n <svg\n viewBox=\"0 0 384 512\"\n style={{ width: \"100%\", height: \"100%\", overflow: \"visible\", ...style }}\n aria-hidden\n >\n <g\n stroke={INK}\n strokeWidth=\"9\"\n strokeLinejoin=\"round\"\n strokeLinecap=\"round\"\n >\n {/* Behind the body: the quiver or the staff */}\n {kind === \"archer\" ? (\n <g>\n <rect\n x=\"250\"\n y=\"250\"\n width=\"44\"\n height=\"120\"\n rx=\"12\"\n fill={leather}\n transform=\"rotate(18 272 310)\"\n />\n <path\n d=\"M262 238 L272 214 M280 242 L294 222 M298 250 L314 232\"\n strokeWidth=\"8\"\n />\n </g>\n ) : null}\n {kind === \"mage\" ? (\n <g>\n <rect\n x=\"300\"\n y=\"166\"\n width=\"20\"\n height=\"324\"\n rx=\"8\"\n fill={leather}\n />\n <circle cx=\"310\" cy=\"152\" r=\"30\" fill=\"#7fe3ff\" />\n <circle cx=\"300\" cy=\"142\" r=\"9\" fill=\"#fff\" stroke=\"none\" />\n </g>\n ) : null}\n\n {/* Legs and boots */}\n <path\n d=\"M140 420 L136 474 L182 474 L186 430 Z\"\n fill={knight ? steelDark : \"#5b4a3a\"}\n />\n <path\n d=\"M244 420 L248 474 L202 474 L198 430 Z\"\n fill={knight ? steelDark : \"#5b4a3a\"}\n />\n <path\n d=\"M128 470 L186 470 L188 500 L120 500 Q118 480 128 470 Z\"\n fill={leather}\n />\n <path\n d=\"M256 470 L198 470 L196 500 L264 500 Q266 480 256 470 Z\"\n fill={leather}\n />\n\n {/* Body */}\n {kind === \"mage\" ? (\n <>\n <path\n d=\"M108 326 Q192 290 276 326 L300 470 Q192 494 84 470 Z\"\n fill={color}\n />\n <path d=\"M192 330 L192 470\" stroke=\"#ffd23a\" strokeWidth=\"9\" />\n </>\n ) : (\n <>\n <path\n d=\"M104 330 Q192 292 280 330 L288 438 Q192 458 96 438 Z\"\n fill={knight ? steel : \"#6d5338\"}\n />\n {knight ? (\n <path\n d=\"M150 316 L234 316 L240 450 Q192 466 144 450 Z\"\n fill={color}\n />\n ) : (\n <path\n d=\"M128 318 L256 318 L262 444 Q192 462 122 444 Z\"\n fill={color}\n />\n )}\n <rect\n x=\"96\"\n y=\"414\"\n width=\"192\"\n height=\"24\"\n rx=\"8\"\n fill={leather}\n />\n <rect\n x=\"178\"\n y=\"410\"\n width=\"28\"\n height=\"32\"\n rx=\"6\"\n fill=\"#ffd23a\"\n />\n </>\n )}\n {knight ? (\n <path\n d=\"M170 352 L214 352 M192 336 L192 396\"\n stroke=\"#ffd23a\"\n strokeWidth=\"12\"\n />\n ) : null}\n\n {/* Arms (plate for the knight) and shoulder pauldrons */}\n <path\n d=\"M104 334 Q72 372 84 420 L114 424 Q110 380 126 354 Z\"\n fill={knight ? steel : color}\n />\n <path\n d=\"M280 334 Q312 372 300 420 L270 424 Q274 380 258 354 Z\"\n fill={knight ? steel : color}\n />\n {knight ? (\n <>\n <ellipse cx=\"102\" cy=\"332\" rx=\"36\" ry=\"26\" fill={steel} />\n <ellipse cx=\"282\" cy=\"332\" rx=\"36\" ry=\"26\" fill={steel} />\n </>\n ) : null}\n\n {/* Weapon hand: the sword or the bow */}\n {knight ? (\n <g transform=\"rotate(20 298 430)\">\n <path d=\"M286 200 L308 200 L308 404 L286 404 Z\" fill=\"#eef3fa\" />\n <path d=\"M297 168 L314 202 L280 202 Z\" fill=\"#eef3fa\" />\n <path d=\"M297 214 L297 396\" stroke=\"#b8c4d8\" strokeWidth=\"5\" />\n <rect\n x=\"262\"\n y=\"400\"\n width=\"70\"\n height=\"20\"\n rx=\"8\"\n fill=\"#ffd23a\"\n />\n <rect\n x=\"287\"\n y=\"418\"\n width=\"20\"\n height=\"40\"\n rx=\"6\"\n fill={leather}\n />\n <circle cx=\"297\" cy=\"464\" r=\"11\" fill=\"#ffd23a\" />\n </g>\n ) : null}\n {kind === \"archer\" ? (\n <g>\n <path\n d=\"M318 250 Q376 340 318 440\"\n fill=\"none\"\n stroke={INK}\n strokeWidth=\"22\"\n />\n <path\n d=\"M318 250 Q376 340 318 440\"\n fill=\"none\"\n stroke={leather}\n strokeWidth=\"12\"\n />\n <path d=\"M318 254 L318 436\" stroke=\"#f3efe2\" strokeWidth=\"4\" />\n </g>\n ) : null}\n <circle cx=\"300\" cy=\"430\" r=\"20\" fill={knight ? steel : skin} />\n\n {/* Shield arm: the heater shield for the knight */}\n {knight ? (\n <g>\n <path\n d=\"M38 328 L134 328 Q138 422 86 472 Q34 422 38 328 Z\"\n fill={color}\n />\n <path\n d=\"M56 344 L116 344 Q118 410 86 448 Q54 410 56 344 Z\"\n fill=\"none\"\n stroke=\"#ffd23a\"\n strokeWidth=\"8\"\n />\n <path\n d=\"M86 354 L86 434 M62 386 L110 386\"\n stroke=\"#ffd23a\"\n strokeWidth=\"10\"\n />\n <path\n d=\"M52 340 Q70 334 94 336\"\n stroke=\"#fff\"\n strokeWidth=\"6\"\n opacity=\"0.5\"\n fill=\"none\"\n />\n </g>\n ) : (\n <circle cx=\"84\" cy=\"430\" r=\"20\" fill={skin} />\n )}\n\n {/* Head */}\n <circle cx=\"72\" cy=\"218\" r=\"24\" fill={skin} />\n <circle cx=\"312\" cy=\"218\" r=\"24\" fill={skin} />\n <rect x=\"78\" y=\"114\" width=\"228\" height=\"194\" rx=\"80\" fill={skin} />\n <path d=\"M124 198 L166 192 M218 192 L260 198\" strokeWidth=\"12\" />\n <ellipse cx=\"148\" cy=\"230\" rx=\"11\" ry=\"16\" fill={INK} />\n <ellipse cx=\"236\" cy=\"230\" rx=\"11\" ry=\"16\" fill={INK} />\n <path d=\"M174 274 Q192 286 210 274\" fill=\"none\" strokeWidth=\"7\" />\n\n {/* Headgear */}\n {knight ? (\n <g>\n <path\n d=\"M64 214 Q58 80 192 72 Q326 80 320 214 L294 214 Q292 130 192 126 Q92 130 90 214 Z\"\n fill={steel}\n />\n <path d=\"M90 170 L294 170\" stroke={steelDark} strokeWidth=\"10\" />\n <path d=\"M184 126 L200 126 L198 214 L186 214 Z\" fill={steelDark} />\n <path\n d=\"M192 72 Q196 28 238 20 Q226 44 240 62 Q214 58 204 76 Z\"\n fill=\"#e8534e\"\n />\n <path\n d=\"M96 112 Q130 86 176 84\"\n stroke=\"#fff\"\n strokeWidth=\"7\"\n opacity=\"0.55\"\n fill=\"none\"\n />\n </g>\n ) : null}\n {kind === \"archer\" ? (\n <g>\n <path\n d=\"M56 238 Q38 68 192 56 Q346 68 328 238 L302 238 Q302 132 192 130 Q82 132 82 238 Z\"\n fill={color}\n />\n <path d=\"M192 56 Q242 18 274 46 Q240 50 222 72 Z\" fill={color} />\n <path\n d=\"M248 52 Q292 38 302 68\"\n stroke=\"#e8534e\"\n strokeWidth=\"8\"\n fill=\"none\"\n />\n </g>\n ) : null}\n {kind === \"mage\" ? (\n <g>\n <path\n d=\"M58 150 L326 150 Q332 172 302 178 L82 178 Q52 172 58 150 Z\"\n fill={color}\n />\n <path\n d=\"M104 152 Q150 120 176 40 Q190 4 234 20 Q208 36 216 84 Q230 128 284 152 Z\"\n fill={color}\n />\n <path\n d=\"M214 92 L222 106 L238 108 L226 118 L230 134 L214 126 L200 134 L204 118 L192 108 L208 106 Z\"\n fill=\"#ffd23a\"\n strokeWidth=\"5\"\n />\n <path\n d=\"M118 300 Q192 362 266 300 Q252 342 192 354 Q132 342 118 300 Z\"\n fill=\"#f2f2f2\"\n />\n </g>\n ) : null}\n </g>\n </svg>\n );\n}\n"
|
|
86
|
+
"content": "import type { CSSProperties, ReactNode } from \"react\";\n\n// The hero in the middle of the heroes screen: a chibi medieval fighter in the reference's look\n// (big head, heavy dark outline). The knight wears a plumed helmet and a tabard over plate, a sword\n// in one hand and a heater shield on the other arm; the archer a hood, a bow and a quiver; the mage\n// a pointed hat, a robe and a staff. The tabard / hood / robe takes the hero's class colour.\n\nconst INK = \"#17193a\";\n\nexport type HeroKind = \"knight\" | \"archer\" | \"mage\";\n\n/** Which medieval hero to draw for a class: the knight unless the class reads as archer or mage. */\nexport function heroKind(classID: string | null | undefined): HeroKind {\n const id = (classID ?? \"\").toLowerCase();\n if (/arch|bow|hunt|range/.test(id)) return \"archer\";\n if (/mag|wiz|sorc|caster|priest|heal|druid/.test(id)) return \"mage\";\n return \"knight\";\n}\n\nexport function HeroArt({\n color,\n kind = \"knight\",\n style,\n}: {\n color: string;\n kind?: HeroKind;\n style?: CSSProperties;\n}): ReactNode {\n const skin = \"#f2b98a\";\n const steel = \"#c9d3e3\";\n const steelDark = \"#8f9db5\";\n const leather = \"#8a5a2b\";\n const knight = kind === \"knight\";\n return (\n <svg\n viewBox=\"0 0 384 512\"\n style={{ width: \"100%\", height: \"100%\", overflow: \"visible\", ...style }}\n aria-hidden\n >\n <g\n stroke={INK}\n strokeWidth=\"9\"\n strokeLinejoin=\"round\"\n strokeLinecap=\"round\"\n >\n {/* Behind the body: the quiver or the staff */}\n {kind === \"archer\" ? (\n <g>\n <rect\n x=\"250\"\n y=\"250\"\n width=\"44\"\n height=\"120\"\n rx=\"12\"\n fill={leather}\n transform=\"rotate(18 272 310)\"\n />\n <path\n d=\"M262 238 L272 214 M280 242 L294 222 M298 250 L314 232\"\n strokeWidth=\"8\"\n />\n </g>\n ) : null}\n {kind === \"mage\" ? (\n <g>\n <rect\n x=\"300\"\n y=\"166\"\n width=\"20\"\n height=\"324\"\n rx=\"8\"\n fill={leather}\n />\n <circle cx=\"310\" cy=\"152\" r=\"30\" fill=\"#7fe3ff\" />\n <circle cx=\"300\" cy=\"142\" r=\"9\" fill=\"#fff\" stroke=\"none\" />\n </g>\n ) : null}\n\n {/* Legs and boots */}\n <path\n d=\"M140 420 L136 474 L182 474 L186 430 Z\"\n fill={knight ? steelDark : \"#5b4a3a\"}\n />\n <path\n d=\"M244 420 L248 474 L202 474 L198 430 Z\"\n fill={knight ? steelDark : \"#5b4a3a\"}\n />\n <path\n d=\"M128 470 L186 470 L188 500 L120 500 Q118 480 128 470 Z\"\n fill={leather}\n />\n <path\n d=\"M256 470 L198 470 L196 500 L264 500 Q266 480 256 470 Z\"\n fill={leather}\n />\n\n {/* Body */}\n {kind === \"mage\" ? (\n <>\n <path\n d=\"M108 326 Q192 290 276 326 L300 470 Q192 494 84 470 Z\"\n fill={color}\n />\n <path d=\"M192 330 L192 470\" stroke=\"#ffd23a\" strokeWidth=\"9\" />\n </>\n ) : (\n <>\n <path\n d=\"M104 330 Q192 292 280 330 L288 438 Q192 458 96 438 Z\"\n fill={knight ? steel : \"#6d5338\"}\n />\n {knight ? (\n <path\n d=\"M150 316 L234 316 L240 450 Q192 466 144 450 Z\"\n fill={color}\n />\n ) : (\n <path\n d=\"M128 318 L256 318 L262 444 Q192 462 122 444 Z\"\n fill={color}\n />\n )}\n <rect\n x=\"96\"\n y=\"414\"\n width=\"192\"\n height=\"24\"\n rx=\"8\"\n fill={leather}\n />\n <rect\n x=\"178\"\n y=\"410\"\n width=\"28\"\n height=\"32\"\n rx=\"6\"\n fill=\"#ffd23a\"\n />\n </>\n )}\n {knight ? (\n <path\n d=\"M170 352 L214 352 M192 336 L192 396\"\n stroke=\"#ffd23a\"\n strokeWidth=\"12\"\n />\n ) : null}\n\n {/* Arms (plate for the knight) and shoulder pauldrons */}\n <path\n d=\"M104 334 Q72 372 84 420 L114 424 Q110 380 126 354 Z\"\n fill={knight ? steel : color}\n />\n <path\n d=\"M280 334 Q312 372 300 420 L270 424 Q274 380 258 354 Z\"\n fill={knight ? steel : color}\n />\n {knight ? (\n <>\n <ellipse cx=\"102\" cy=\"332\" rx=\"36\" ry=\"26\" fill={steel} />\n <ellipse cx=\"282\" cy=\"332\" rx=\"36\" ry=\"26\" fill={steel} />\n </>\n ) : null}\n\n {/* Weapon hand: the sword or the bow */}\n {knight ? (\n <g transform=\"rotate(20 298 430)\">\n <path d=\"M286 200 L308 200 L308 404 L286 404 Z\" fill=\"#eef3fa\" />\n <path d=\"M297 168 L314 202 L280 202 Z\" fill=\"#eef3fa\" />\n <path d=\"M297 214 L297 396\" stroke=\"#b8c4d8\" strokeWidth=\"5\" />\n <rect\n x=\"262\"\n y=\"400\"\n width=\"70\"\n height=\"20\"\n rx=\"8\"\n fill=\"#ffd23a\"\n />\n <rect\n x=\"287\"\n y=\"418\"\n width=\"20\"\n height=\"40\"\n rx=\"6\"\n fill={leather}\n />\n <circle cx=\"297\" cy=\"464\" r=\"11\" fill=\"#ffd23a\" />\n </g>\n ) : null}\n {kind === \"archer\" ? (\n <g>\n <path\n d=\"M318 250 Q376 340 318 440\"\n fill=\"none\"\n stroke={INK}\n strokeWidth=\"22\"\n />\n <path\n d=\"M318 250 Q376 340 318 440\"\n fill=\"none\"\n stroke={leather}\n strokeWidth=\"12\"\n />\n <path d=\"M318 254 L318 436\" stroke=\"#f3efe2\" strokeWidth=\"4\" />\n </g>\n ) : null}\n <circle cx=\"300\" cy=\"430\" r=\"20\" fill={knight ? steel : skin} />\n\n {/* Shield arm: the heater shield for the knight */}\n {knight ? (\n <g>\n <path\n d=\"M38 328 L134 328 Q138 422 86 472 Q34 422 38 328 Z\"\n fill={color}\n />\n <path\n d=\"M56 344 L116 344 Q118 410 86 448 Q54 410 56 344 Z\"\n fill=\"none\"\n stroke=\"#ffd23a\"\n strokeWidth=\"8\"\n />\n <path\n d=\"M86 354 L86 434 M62 386 L110 386\"\n stroke=\"#ffd23a\"\n strokeWidth=\"10\"\n />\n <path\n d=\"M52 340 Q70 334 94 336\"\n stroke=\"#fff\"\n strokeWidth=\"6\"\n opacity=\"0.5\"\n fill=\"none\"\n />\n </g>\n ) : (\n <circle cx=\"84\" cy=\"430\" r=\"20\" fill={skin} />\n )}\n\n {/* Head */}\n <circle cx=\"72\" cy=\"218\" r=\"24\" fill={skin} />\n <circle cx=\"312\" cy=\"218\" r=\"24\" fill={skin} />\n <rect x=\"78\" y=\"114\" width=\"228\" height=\"194\" rx=\"80\" fill={skin} />\n <path d=\"M124 198 L166 192 M218 192 L260 198\" strokeWidth=\"12\" />\n <ellipse cx=\"148\" cy=\"230\" rx=\"11\" ry=\"16\" fill={INK} />\n <ellipse cx=\"236\" cy=\"230\" rx=\"11\" ry=\"16\" fill={INK} />\n <path d=\"M174 274 Q192 286 210 274\" fill=\"none\" strokeWidth=\"7\" />\n\n {/* Headgear */}\n {knight ? (\n <g>\n <path\n d=\"M64 214 Q58 80 192 72 Q326 80 320 214 L294 214 Q292 130 192 126 Q92 130 90 214 Z\"\n fill={steel}\n />\n <path d=\"M90 170 L294 170\" stroke={steelDark} strokeWidth=\"10\" />\n <path d=\"M184 126 L200 126 L198 214 L186 214 Z\" fill={steelDark} />\n <path\n d=\"M192 72 Q196 28 238 20 Q226 44 240 62 Q214 58 204 76 Z\"\n fill=\"#e8534e\"\n />\n <path\n d=\"M96 112 Q130 86 176 84\"\n stroke=\"#fff\"\n strokeWidth=\"7\"\n opacity=\"0.55\"\n fill=\"none\"\n />\n </g>\n ) : null}\n {kind === \"archer\" ? (\n <g>\n <path\n d=\"M56 238 Q38 68 192 56 Q346 68 328 238 L302 238 Q302 132 192 130 Q82 132 82 238 Z\"\n fill={color}\n />\n <path d=\"M192 56 Q242 18 274 46 Q240 50 222 72 Z\" fill={color} />\n <path\n d=\"M248 52 Q292 38 302 68\"\n stroke=\"#e8534e\"\n strokeWidth=\"8\"\n fill=\"none\"\n />\n </g>\n ) : null}\n {kind === \"mage\" ? (\n <g>\n <path\n d=\"M58 150 L326 150 Q332 172 302 178 L82 178 Q52 172 58 150 Z\"\n fill={color}\n />\n <path\n d=\"M104 152 Q150 120 176 40 Q190 4 234 20 Q208 36 216 84 Q230 128 284 152 Z\"\n fill={color}\n />\n <path\n d=\"M214 92 L222 106 L238 108 L226 118 L230 134 L214 126 L200 134 L204 118 L192 108 L208 106 Z\"\n fill=\"#ffd23a\"\n strokeWidth=\"5\"\n />\n <path\n d=\"M118 300 Q192 362 266 300 Q252 342 192 354 Q132 342 118 300 Z\"\n fill=\"#f2f2f2\"\n />\n </g>\n ) : null}\n </g>\n </svg>\n );\n}\n"
|
|
74
87
|
},
|
|
75
88
|
{
|
|
76
89
|
"path": "components/HeroesPopup.tsx",
|
|
77
|
-
"content": "import { useState, type ReactNode } from \"react\";\nimport { useIDosGamesClient } from \"@idosgames/react\";\nimport {\n Button,\n
|
|
90
|
+
"content": "import { useState, type ReactNode } from \"react\";\nimport { useIDosGamesClient } from \"@idosgames/react\";\nimport {\n Button,\n Icon,\n LevelShield,\n ResourceList,\n inkFrame,\n inked,\n rarityPlate,\n canAfford,\n errorText,\n formatAmount,\n outlined,\n useCatalog,\n usePopupClose,\n useStagger,\n useToast,\n useUiKit,\n v,\n} from \"@idosgames/react/ui\";\nimport { UnityPopup } from \"./UnityPopup\";\nimport { classColor } from \"./art\";\nimport { HeroFigure } from \"./HeroFigure\";\nimport { type RosterEntry } from \"../model\";\nimport { t } from \"../i18n\";\n\nexport function HeroesPopup({\n list,\n current,\n balances,\n onSelect,\n onClose,\n}: {\n list: RosterEntry[];\n current: string;\n balances: Record<string, { Amount?: number }> | undefined;\n onSelect: (id: string) => void;\n onClose: () => void;\n}): ReactNode {\n const client = useIDosGamesClient();\n const catalog = useCatalog();\n const toast = useToast();\n const kit = useUiKit();\n const stagger = useStagger();\n const [busy, setBusy] = useState<string | null>(null);\n\n const unlock = async (e: RosterEntry) => {\n setBusy(e.id);\n const res = await client.character.unlockCharacter(e.id);\n setBusy(null);\n if (!res.ok) return toast(errorText(res.error), \"error\");\n kit.play(\"levelUp\");\n onSelect(e.id);\n };\n\n return (\n <UnityPopup title={t(\"heroes\")} onClose={onClose} width={560}>\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(140px, 1fr))\",\n gap: 12,\n }}\n >\n {list.map((e, i) => {\n const color = catalog.rarityColor(e.def.Classification?.RarityID);\n const affordable = canAfford(e.unlockPrice, balances);\n return (\n // The sheet's hero card: a plate of the rarity colour in the ink frame, the hero filling it,\n // the rank in a shield on the corner with the power beside it, the name at the bottom.\n <div\n key={e.id}\n style={{\n display: \"grid\",\n gap: 8,\n ...stagger(i),\n }}\n >\n <div\n style={{\n position: \"relative\",\n aspectRatio: \"0.8\",\n borderRadius: 12,\n ...rarityPlate(color),\n border: inkFrame,\n boxShadow:\n e.id === current\n ? `0 0 0 3px ${v.gold}, 0 0 16px 3px color-mix(in srgb, ${v.gold} 55%, transparent)`\n : `inset 0 -4px 0 rgba(0,0,0,.2), 0 3px 0 ${v.shadow}`,\n overflow: \"hidden\",\n display: \"grid\",\n placeItems: \"end center\",\n }}\n >\n <div\n style={{\n width: \"78%\",\n height: \"82%\",\n filter:\n e.state === \"locked\"\n ? \"grayscale(1) brightness(.75)\"\n : undefined,\n }}\n >\n <HeroFigure\n hero={e}\n color={classColor(e.def.Classification?.ClassID)}\n mode=\"still\"\n />\n </div>\n <div\n style={{\n position: \"absolute\",\n left: 0,\n right: 0,\n bottom: 0,\n padding: \"14px 6px 6px\",\n background:\n \"linear-gradient(180deg, transparent, rgba(0,0,0,.45))\",\n textAlign: \"center\",\n ...inked,\n fontSize: 17,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {catalog.localize(e.def.Identity?.DisplayName ?? e.id)}\n </div>\n {e.state === \"locked\" ? (\n <span\n style={{\n position: \"absolute\",\n inset: 0,\n display: \"grid\",\n placeItems: \"center\",\n background: \"rgba(23,25,58,.35)\",\n }}\n >\n <Icon glyph=\"lock\" size={44} />\n </span>\n ) : (\n <div\n style={{\n position: \"absolute\",\n left: 4,\n top: 4,\n right: 6,\n display: \"flex\",\n alignItems: \"center\",\n gap: 2,\n }}\n >\n <LevelShield level={e.rank} size={34} />\n <span\n style={{\n ...inked,\n flex: 1,\n fontSize: 13,\n textAlign: \"center\",\n background: `color-mix(in srgb, ${v.ink} 75%, transparent)`,\n borderRadius: 6,\n padding: \"2px 4px\",\n }}\n >\n {formatAmount(e.power)}\n </span>\n </div>\n )}\n </div>\n {e.state === \"locked\" ? (\n e.unlockPrice.length > 0 ? (\n <Button\n tone=\"gold\"\n size=\"sm\"\n attract={affordable}\n disabled={!affordable}\n busy={busy === e.id}\n onClick={() => void unlock(e)}\n style={{ width: \"100%\" }}\n >\n {t(\"unlock\")}{\" \"}\n <ResourceList lines={e.unlockPrice} size={16} />\n </Button>\n ) : (\n <span style={{ ...outlined, fontSize: 11, color: v.textDim }}>\n {t(\"notForSale\")}\n </span>\n )\n ) : e.id === current ? (\n <span\n style={{\n ...outlined,\n fontSize: 14,\n color: v.gold,\n textAlign: \"center\",\n }}\n >\n {t(\"selected\")}\n </span>\n ) : (\n <SelectButton onSelect={() => onSelect(e.id)} />\n )}\n </div>\n );\n })}\n </div>\n </UnityPopup>\n );\n}\n\nfunction SelectButton({ onSelect }: { onSelect: () => void }): ReactNode {\n const close = usePopupClose();\n return (\n <Button\n size=\"sm\"\n onClick={() => {\n onSelect();\n close();\n }}\n style={{ width: \"100%\" }}\n >\n {t(\"select\")}\n </Button>\n );\n}\n"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"path": "components/HeroFigure.tsx",
|
|
94
|
+
"content": "import {\n createContext,\n useContext,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n useSyncExternalStore,\n type ReactNode,\n} from \"react\";\nimport type {\n CharacterArt,\n CharacterArtRegistry,\n CharacterArtSubject,\n CharacterArtView,\n} from \"@idosgames/module-sdk\";\nimport { heroKind, type HeroKind } from \"./heroArt\";\nimport type { RosterEntry } from \"../model\";\n\n// The hero on the screen: the GAME's own character when the game set its art (ctx.characterArt — the\n// idle-rpg hero dressed in what it wears, alive), otherwise a still picture of that same idle-rpg hero\n// in its class look (components/figures, generated by scripts/render-hero-figures.ts — a module may not\n// import another module's code, so the picture travels as a file of this module).\n\n/** The still pictures by kind, each its own chunk: a screen loads only the one it shows. */\ntype Figure = { default: string; center: number };\nconst FIGURES: Record<HeroKind, () => Promise<Figure>> = {\n knight: () => import(\"./figures/knight\"),\n archer: () => import(\"./figures/archer\"),\n mage: () => import(\"./figures/mage\"),\n};\nconst loaded = new Map<HeroKind, { url: string; center: number }>();\n\n/** The app's character art registry, handed to the screen by the module (ctx.characterArt). */\nexport const CharacterArtContext = createContext<CharacterArtRegistry | null>(\n null,\n);\n\nconst none = (): CharacterArt | null => null;\nconst never = () => () => {};\n\n/** The game's character art now, or null — the screen draws its own picture. */\nexport function useCharacterArt(): CharacterArt | null {\n const registry = useContext(CharacterArtContext);\n return useSyncExternalStore(\n registry?.subscribe ?? never,\n registry?.get ?? none,\n );\n}\n\n/** What the game's art is told about a hero: id, class, worn gear, skin. */\nexport function heroSubject(hero: RosterEntry): CharacterArtSubject {\n const equipment: Record<string, string> = {};\n for (const [slot, worn] of Object.entries(hero.model?.Equipment ?? {}))\n if (worn?.ItemID) equipment[slot] = worn.ItemID;\n const skin = (hero.model as { WornSkinID?: string | null } | undefined)\n ?.WornSkinID;\n return {\n characterId: hero.id,\n classId: hero.def.Classification?.ClassID ?? null,\n equipment,\n ...(skin ? { skinId: skin } : {}),\n ...(hero.state === \"locked\" ? { locked: true } : {}),\n };\n}\n\n/** The hero filling its box: \"live\" moves (a big view), \"still\" is one frame (a list). */\nexport function HeroFigure({\n hero,\n mode = \"live\",\n}: {\n hero: RosterEntry;\n /** The class colour (kept for callers; the still picture carries its own colours). */\n color?: string;\n mode?: \"live\" | \"still\";\n}): ReactNode {\n const art = useCharacterArt();\n if (!art)\n return <StillFigure kind={heroKind(hero.def.Classification?.ClassID)} />;\n return <GameFigure art={art} subject={heroSubject(hero)} mode={mode} />;\n}\n\n/**\n * The idle-rpg hero of this kind, still: as tall as its box, standing on its bottom with the BODY in\n * the middle — a sword or a shield reaches past the sides (over the slots on the big view, cut by\n * the card in a list).\n */\nfunction StillFigure({ kind }: { kind: HeroKind }): ReactNode {\n const [figure, setFigure] = useState(() => loaded.get(kind) ?? null);\n useEffect(() => {\n const known = loaded.get(kind);\n if (known) {\n setFigure(known);\n return;\n }\n let gone = false;\n void FIGURES[kind]().then(({ default: svg, center }) => {\n const f = {\n url: `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svg)}`,\n center,\n };\n loaded.set(kind, f);\n if (!gone) setFigure(f);\n });\n return () => {\n gone = true;\n };\n }, [kind]);\n if (!figure) return null;\n return (\n <div style={{ position: \"relative\", width: \"100%\", height: \"100%\" }}>\n <img\n src={figure.url}\n alt=\"\"\n draggable={false}\n style={{\n position: \"absolute\",\n left: \"50%\",\n bottom: 0,\n height: \"100%\",\n width: \"auto\",\n maxWidth: \"none\",\n transform: `translateX(-${figure.center * 100}%)`,\n pointerEvents: \"none\",\n userSelect: \"none\",\n }}\n />\n </div>\n );\n}\n\nfunction GameFigure({\n art,\n subject,\n mode,\n}: {\n art: CharacterArt;\n subject: CharacterArtSubject;\n mode: \"live\" | \"still\";\n}): ReactNode {\n const host = useRef<HTMLDivElement>(null);\n const view = useRef<CharacterArtView | null>(null);\n const latest = useRef(subject);\n latest.current = subject;\n const key = JSON.stringify(subject);\n\n useLayoutEffect(() => {\n const v = art.mount(host.current!, latest.current, { mode });\n view.current = v;\n return () => {\n view.current = null;\n v.destroy();\n };\n }, [art, mode]);\n\n useLayoutEffect(() => {\n view.current?.update(latest.current);\n }, [key]);\n\n return <div ref={host} style={{ width: \"100%\", height: \"100%\" }} />;\n}\n"
|
|
78
95
|
},
|
|
79
96
|
{
|
|
80
97
|
"path": "components/PiecePopup.tsx",
|
|
@@ -90,11 +107,11 @@
|
|
|
90
107
|
},
|
|
91
108
|
{
|
|
92
109
|
"path": "components/StatsPopup.tsx",
|
|
93
|
-
"content": "import { useState, type ReactNode } from \"react\";\nimport { useIDosGamesClient } from \"@idosgames/react\";\nimport {\n Icon,\n U,\n UButton,\n UPopup,\n URow,\n USlider,\n canAfford,\n errorText,\n formatAmount,\n uText,\n useCatalog,\n useSound,\n useStagger,\n useToast,\n} from \"@idosgames/react/ui\";\nimport {\n breakdown,\n resolveStats,\n statCost,\n statMaxLevel,\n statNumber,\n unmetRequirements,\n upgradeAllPlan,\n type CharacterSection,\n type GearPiece,\n type ItemDefWithGear,\n type RosterEntry,\n type StatView,\n} from \"../model\";\nimport { t } from \"../i18n\";\n\n// Unity Stat_Breakdown_Popup (\"STATS\"): a blue popup with the book on its title bar, a light row per\n// stat — the name, the total, where it comes from (base · level · rank · gear), the level slider and\n// the upgrade with its price — and the green \"Upgrade All Max\" with the count of levels it buys.\n\nconst INK = \"#1f2a52\";\n\nexport function StatsPopup({\n hero,\n section,\n pieces,\n items,\n balances,\n onClose,\n}: {\n hero: RosterEntry;\n section: CharacterSection | undefined;\n pieces: GearPiece[];\n items: Map<string, ItemDefWithGear>;\n balances: Record<string, { Amount?: number }> | undefined;\n onClose: () => void;\n}): ReactNode {\n const client = useIDosGamesClient();\n const catalog = useCatalog();\n const toast = useToast();\n const play = useSound();\n const stagger = useStagger();\n const [busy, setBusy] = useState<string | null>(null);\n const [detail, setDetail] = useState<StatView | null>(null);\n const stats = resolveStats(section, hero.def);\n const levels = hero.model?.StatLevels ?? {};\n const worn = Object.values(hero.model?.Equipment ?? {})\n .filter((e) => e?.ItemInstanceID)\n .map((e) => {\n const p = pieces.find((x) => x.instanceID === e!.ItemInstanceID);\n return { def: items.get(e!.ItemID ?? \"\"), level: p?.level ?? 1 };\n });\n\n const upgrade = async (stat: StatView) => {\n setBusy(stat.id);\n const res = await client.character.upgradeStatLevel(hero.id, stat.id);\n setBusy(null);\n if (!res.ok) return toast(errorText(res.error), \"error\");\n play(\"levelUp\");\n };\n\n // \"Upgrade all\" (Unity CharacterStatPopup): as many levels as the balances cover, spread over the\n // stats cheapest-first, in ONE atomic batch.\n const plan = upgradeAllPlan(stats, levels, hero.rank, hero.def, balances);\n const planLevels = plan.reduce((n, p) => n + p.Levels, 0);\n const upgradeAll = async () => {\n setBusy(\"all\");\n const res = await client.character.upgradeStatLevelsBatch(\n plan.map((p) => ({ CharacterID: hero.id, ...p })),\n );\n setBusy(null);\n if (!res.ok) return toast(errorText(res.error), \"error\");\n play(\"levelUp\");\n };\n\n return (\n <UPopup\n tone=\"blue\"\n icon=\"scroll\"\n title={t(\"statsCaps\")}\n onClose={onClose}\n width={480}\n >\n <div\n style={{\n ...uText(15),\n textAlign: \"center\",\n marginTop: -4,\n }}\n >\n {catalog.localize(hero.def.Identity?.DisplayName ?? hero.id)}\n </div>\n <div\n className=\"idos-scroll\"\n style={{\n display: \"grid\",\n gap: 8,\n background: \"#00adff\",\n borderRadius: 14,\n border: `3px solid ${U.ink}`,\n padding: 8,\n maxHeight: \"52vh\",\n overflowY: \"auto\",\n }}\n >\n {stats.map((stat, i) => {\n const level = Number(levels[stat.id] ?? 0);\n const cap = statMaxLevel(stat, hero.rank, hero.def);\n const capped = cap > 0 && level >= cap;\n const cost = statCost(stat, level + 1);\n const missing = unmetRequirements(stat, levels);\n const affordable = canAfford(cost, balances);\n const b = breakdown(stat, level, hero.rank, hero.def, worn);\n const next = breakdown(stat, level + 1, hero.rank, hero.def, worn);\n return (\n <div key={stat.id} style={stagger(i)}>\n <URow tone=\"light\">\n <div style={{ display: \"grid\", gap: 6 }}>\n <button\n type=\"button\"\n onClick={() => setDetail(stat)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n background: \"none\",\n border: \"none\",\n padding: 0,\n cursor: \"pointer\",\n fontFamily: \"inherit\",\n textAlign: \"left\",\n }}\n >\n <span\n style={{\n flex: 1,\n minWidth: 0,\n color: INK,\n fontWeight: 900,\n fontSize: 15,\n }}\n >\n {catalog.localize(stat.name)}{\" \"}\n <span style={{ opacity: 0.55 }}>ⓘ</span>\n </span>\n <span style={uText(20, U.gold)}>{statNumber(b.total)}</span>\n </button>\n <Sources b={b} />\n {cap > 0 ? (\n <USlider\n value={level}\n max={cap}\n height={20}\n label={`${t(\"level\")} ${level}/${cap}`}\n />\n ) : null}\n {missing.length > 0 ? (\n <div\n style={{\n color: \"#d9283b\",\n fontWeight: 900,\n fontSize: 12,\n }}\n >\n {t(\"needs\")}:{\" \"}\n {missing.map((m) => `${m.statID} ${m.level}`).join(\", \")}\n </div>\n ) : capped ? (\n <div\n style={{\n color: INK,\n opacity: 0.6,\n fontWeight: 900,\n fontSize: 12,\n }}\n >\n {t(\"statCapped\")}\n </div>\n ) : (\n <UButton\n tone=\"green\"\n size=\"s\"\n disabled={!affordable}\n busy={busy === stat.id}\n onClick={() => void upgrade(stat)}\n >\n ▲ {statNumber(next.total)}\n {cost.map((l, k) => (\n <span\n key={k}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 2,\n marginLeft: 4,\n }}\n >\n <Icon glyph={catalog.iconOf(l)} size={18} />\n {formatAmount(l.amount)}\n </span>\n ))}\n </UButton>\n )}\n </div>\n </URow>\n </div>\n );\n })}\n </div>\n <div\n style={{\n position: \"relative\",\n display: \"grid\",\n justifyItems: \"center\",\n }}\n >\n <span style={{ position: \"relative\" }}>\n <UButton\n tone=\"green\"\n size=\"l\"\n attract={plan.length > 0}\n disabled={plan.length === 0}\n busy={busy === \"all\"}\n onClick={() => void upgradeAll()}\n >\n {t(\"upgradeAll\")}\n </UButton>\n {planLevels > 0 ? (\n <span\n style={{\n position: \"absolute\",\n right: -10,\n top: -10,\n minWidth: 28,\n height: 28,\n padding: \"0 6px\",\n borderRadius: 14,\n background: \"#0ac74f\",\n border: \"3px solid #141726\",\n display: \"grid\",\n placeItems: \"center\",\n ...uText(14),\n }}\n >\n {planLevels}\n </span>\n ) : null}\n </span>\n </div>\n {detail ? (\n <BreakdownPopup\n stat={detail}\n level={Number(levels[detail.id] ?? 0)}\n hero={hero}\n worn={worn}\n onClose={() => setDetail(null)}\n />\n ) : null}\n </UPopup>\n );\n}\n\ntype Breakdown = ReturnType<typeof breakdown>;\n\n/** The stat's sources as small coloured chips: base · +level · +rank · +gear · +%. */\nfunction Sources({ b }: { b: Breakdown }): ReactNode {\n const chips: Array<[string, number, string, string]> = [\n [t(\"base\"), b.base, \"#5d6a92\", \"\"],\n [t(\"fromLevel\"), b.fromLevel, \"#33b31d\", \"+\"],\n [t(\"fromRank\"), b.fromRank, \"#1c8fe6\", \"+\"],\n [t(\"fromGear\"), b.fromGear, \"#f5a90c\", \"+\"],\n ];\n return (\n <div style={{ display: \"flex\", gap: 4, flexWrap: \"wrap\" }}>\n {chips\n .filter(([, value], i) => i === 0 || value !== 0)\n .map(([label, value, color, sign]) => (\n <span\n key={label}\n style={{\n padding: \"1px 7px\",\n borderRadius: 8,\n background: color,\n border: `2px solid ${U.ink}`,\n ...uText(11),\n }}\n >\n {label} {sign}\n {statNumber(value)}\n </span>\n ))}\n {b.percent ? (\n <span\n style={{\n padding: \"1px 7px\",\n borderRadius: 8,\n background: \"#b46cff\",\n border: `2px solid ${U.ink}`,\n ...uText(11),\n }}\n >\n +{statNumber(b.percent)}%\n </span>\n ) : null}\n </div>\n );\n}\n\nfunction BreakdownPopup({\n stat,\n level,\n hero,\n worn,\n onClose,\n}: {\n stat: StatView;\n level: number;\n hero: RosterEntry;\n worn: Array<{ def: ItemDefWithGear | undefined; level: number }>;\n onClose: () => void;\n}): ReactNode {\n const catalog = useCatalog();\n const b = breakdown(stat, level, hero.rank, hero.def, worn);\n const rows: Array<[string, number, string, string]> = [\n [t(\"base\"), b.base, \"#5d6a92\", \"\"],\n [t(\"fromLevel\"), b.fromLevel, \"#33b31d\", \"+\"],\n [t(\"fromRank\"), b.fromRank, \"#1c8fe6\", \"+\"],\n [t(\"fromGear\"), b.fromGear, \"#f5a90c\", \"+\"],\n ];\n return (\n <UPopup\n tone=\"blue\"\n title={`${catalog.localize(stat.name)} — ${t(\"where\")}`}\n onClose={onClose}\n width={400}\n variant=\"center\"\n >\n {stat.description ? (\n <div style={{ ...uText(13, \"#e3f2ff\"), textAlign: \"center\" }}>\n {catalog.localize(stat.description)}\n </div>\n ) : null}\n <div style={{ display: \"grid\", gap: 6 }}>\n {rows.map(([label, value, color, sign]) => (\n <URow key={label} tone=\"light\">\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n }}\n >\n <span\n style={{\n width: 12,\n height: 12,\n borderRadius: \"50%\",\n background: color,\n border: `2px solid ${U.ink}`,\n }}\n />\n <span\n style={{ flex: 1, color: INK, fontWeight: 900, fontSize: 15 }}\n >\n {label}\n </span>\n <span style={uText(17, value === 0 && sign ? \"#a9b6cc\" : color)}>\n {value === 0 && sign ? \"—\" : `${sign}${statNumber(value)}`}\n </span>\n </div>\n </URow>\n ))}\n {b.percent ? (\n <URow tone=\"light\">\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <span\n style={{ flex: 1, color: INK, fontWeight: 900, fontSize: 15 }}\n >\n {t(\"percent\")}\n </span>\n <span style={uText(17, \"#b46cff\")}>\n +{statNumber(b.percent)}%\n </span>\n </div>\n </URow>\n ) : null}\n <URow tone=\"yellow\">\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <span\n style={{ flex: 1, color: INK, fontWeight: 900, fontSize: 18 }}\n >\n {t(\"total\")}\n </span>\n <span style={uText(22, U.gold)}>{statNumber(b.total)}</span>\n </div>\n </URow>\n </div>\n </UPopup>\n );\n}\n"
|
|
110
|
+
"content": "import { useState, type ReactNode } from \"react\";\nimport { useIDosGamesClient } from \"@idosgames/react\";\nimport {\n Icon,\n U,\n UButton,\n UPopup,\n URow,\n USlider,\n canAfford,\n errorText,\n formatAmount,\n uText,\n useCatalog,\n useSound,\n useStagger,\n useToast,\n} from \"@idosgames/react/ui\";\nimport {\n breakdown,\n resolveStats,\n statCost,\n statMaxLevel,\n statNumber,\n unmetRequirements,\n upgradeAllPlan,\n type CharacterSection,\n type GearPiece,\n type ItemDefWithGear,\n type RosterEntry,\n type StatView,\n} from \"../model\";\nimport { t } from \"../i18n\";\n\n// Unity Stat_Breakdown_Popup (\"STATS\"): a blue popup with the book on its title bar, a light row per\n// stat — the name, the total, where it comes from (base · level · rank · gear), the level slider and\n// the upgrade with its price — and the green \"Upgrade All Max\" with the count of levels it buys. A stat\n// without a price is not for sale (a game whose stats grow from gear only): its row shows the total and\n// where it comes from, no level and no upgrade; with no stat for sale \"Upgrade All\" is not drawn.\n\nconst INK = \"#1f2a52\";\n\nexport function StatsPopup({\n hero,\n section,\n pieces,\n items,\n balances,\n onClose,\n}: {\n hero: RosterEntry;\n section: CharacterSection | undefined;\n pieces: GearPiece[];\n items: Map<string, ItemDefWithGear>;\n balances: Record<string, { Amount?: number }> | undefined;\n onClose: () => void;\n}): ReactNode {\n const client = useIDosGamesClient();\n const catalog = useCatalog();\n const toast = useToast();\n const play = useSound();\n const stagger = useStagger();\n const [busy, setBusy] = useState<string | null>(null);\n const [detail, setDetail] = useState<StatView | null>(null);\n const stats = resolveStats(section, hero.def);\n const levels = hero.model?.StatLevels ?? {};\n const worn = Object.values(hero.model?.Equipment ?? {})\n .filter((e) => e?.ItemInstanceID)\n .map((e) => {\n const p = pieces.find((x) => x.instanceID === e!.ItemInstanceID);\n return { def: items.get(e!.ItemID ?? \"\"), level: p?.level ?? 1 };\n });\n\n const upgrade = async (stat: StatView) => {\n setBusy(stat.id);\n const res = await client.character.upgradeStatLevel(hero.id, stat.id);\n setBusy(null);\n if (!res.ok) return toast(errorText(res.error), \"error\");\n play(\"levelUp\");\n };\n\n // \"Upgrade all\" (Unity CharacterStatPopup): as many levels as the balances cover, spread over the\n // stats cheapest-first, in ONE atomic batch.\n const plan = upgradeAllPlan(stats, levels, hero.rank, hero.def, balances);\n const anyForSale = stats.some((s) => s.price.length > 0);\n const planLevels = plan.reduce((n, p) => n + p.Levels, 0);\n const upgradeAll = async () => {\n setBusy(\"all\");\n const res = await client.character.upgradeStatLevelsBatch(\n plan.map((p) => ({ CharacterID: hero.id, ...p })),\n );\n setBusy(null);\n if (!res.ok) return toast(errorText(res.error), \"error\");\n play(\"levelUp\");\n };\n\n return (\n <UPopup\n tone=\"blue\"\n icon=\"scroll\"\n title={t(\"statsCaps\")}\n onClose={onClose}\n width={480}\n >\n <div\n style={{\n ...uText(15),\n textAlign: \"center\",\n marginTop: -4,\n }}\n >\n {catalog.localize(hero.def.Identity?.DisplayName ?? hero.id)}\n </div>\n <div\n className=\"idos-scroll\"\n style={{\n display: \"grid\",\n gap: 8,\n background: \"#00adff\",\n borderRadius: 14,\n border: `3px solid ${U.ink}`,\n padding: 8,\n maxHeight: \"52vh\",\n overflowY: \"auto\",\n }}\n >\n {stats.map((stat, i) => {\n const level = Number(levels[stat.id] ?? 0);\n const cap = statMaxLevel(stat, hero.rank, hero.def);\n const capped = cap > 0 && level >= cap;\n const forSale = stat.price.length > 0;\n const cost = statCost(stat, level + 1);\n const missing = unmetRequirements(stat, levels);\n const affordable = canAfford(cost, balances);\n const b = breakdown(stat, level, hero.rank, hero.def, worn);\n const next = breakdown(stat, level + 1, hero.rank, hero.def, worn);\n return (\n <div key={stat.id} style={stagger(i)}>\n <URow tone=\"light\">\n <div style={{ display: \"grid\", gap: 6 }}>\n <button\n type=\"button\"\n onClick={() => setDetail(stat)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n background: \"none\",\n border: \"none\",\n padding: 0,\n cursor: \"pointer\",\n fontFamily: \"inherit\",\n textAlign: \"left\",\n }}\n >\n <span\n style={{\n flex: 1,\n minWidth: 0,\n color: INK,\n fontWeight: 900,\n fontSize: 15,\n }}\n >\n {catalog.localize(stat.name)}{\" \"}\n <span style={{ opacity: 0.55 }}>ⓘ</span>\n </span>\n <span style={uText(20, U.gold)}>{statNumber(b.total)}</span>\n </button>\n <Sources b={b} />\n {!forSale ? null : cap > 0 ? (\n <USlider\n value={level}\n max={cap}\n height={20}\n label={`${t(\"level\")} ${level}/${cap}`}\n />\n ) : null}\n {!forSale ? null : missing.length > 0 ? (\n <div\n style={{\n color: \"#d9283b\",\n fontWeight: 900,\n fontSize: 12,\n }}\n >\n {t(\"needs\")}:{\" \"}\n {missing.map((m) => `${m.statID} ${m.level}`).join(\", \")}\n </div>\n ) : capped ? (\n <div\n style={{\n color: INK,\n opacity: 0.6,\n fontWeight: 900,\n fontSize: 12,\n }}\n >\n {t(\"statCapped\")}\n </div>\n ) : (\n <UButton\n tone=\"green\"\n size=\"s\"\n disabled={!affordable}\n busy={busy === stat.id}\n onClick={() => void upgrade(stat)}\n >\n ▲ {statNumber(next.total)}\n {cost.map((l, k) => (\n <span\n key={k}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 2,\n marginLeft: 4,\n }}\n >\n <Icon glyph={catalog.iconOf(l)} size={18} />\n {formatAmount(l.amount)}\n </span>\n ))}\n </UButton>\n )}\n </div>\n </URow>\n </div>\n );\n })}\n </div>\n {anyForSale ? (\n <div\n style={{\n position: \"relative\",\n display: \"grid\",\n justifyItems: \"center\",\n }}\n >\n <span style={{ position: \"relative\" }}>\n <UButton\n tone=\"green\"\n size=\"l\"\n attract={plan.length > 0}\n disabled={plan.length === 0}\n busy={busy === \"all\"}\n onClick={() => void upgradeAll()}\n >\n {t(\"upgradeAll\")}\n </UButton>\n {planLevels > 0 ? (\n <span\n style={{\n position: \"absolute\",\n right: -10,\n top: -10,\n minWidth: 28,\n height: 28,\n padding: \"0 6px\",\n borderRadius: 14,\n background: \"#0ac74f\",\n border: \"3px solid #141726\",\n display: \"grid\",\n placeItems: \"center\",\n ...uText(14),\n }}\n >\n {planLevels}\n </span>\n ) : null}\n </span>\n </div>\n ) : null}\n {detail ? (\n <BreakdownPopup\n stat={detail}\n level={Number(levels[detail.id] ?? 0)}\n hero={hero}\n worn={worn}\n onClose={() => setDetail(null)}\n />\n ) : null}\n </UPopup>\n );\n}\n\ntype Breakdown = ReturnType<typeof breakdown>;\n\n/** The stat's sources as small coloured chips: base · +level · +rank · +gear · +%. */\nfunction Sources({ b }: { b: Breakdown }): ReactNode {\n const chips: Array<[string, number, string, string]> = [\n [t(\"base\"), b.base, \"#5d6a92\", \"\"],\n [t(\"fromLevel\"), b.fromLevel, \"#33b31d\", \"+\"],\n [t(\"fromRank\"), b.fromRank, \"#1c8fe6\", \"+\"],\n [t(\"fromGear\"), b.fromGear, \"#f5a90c\", \"+\"],\n ];\n return (\n <div style={{ display: \"flex\", gap: 4, flexWrap: \"wrap\" }}>\n {chips\n .filter(([, value], i) => i === 0 || value !== 0)\n .map(([label, value, color, sign]) => (\n <span\n key={label}\n style={{\n padding: \"1px 7px\",\n borderRadius: 8,\n background: color,\n border: `2px solid ${U.ink}`,\n ...uText(11),\n }}\n >\n {label} {sign}\n {statNumber(value)}\n </span>\n ))}\n {b.percent ? (\n <span\n style={{\n padding: \"1px 7px\",\n borderRadius: 8,\n background: \"#b46cff\",\n border: `2px solid ${U.ink}`,\n ...uText(11),\n }}\n >\n +{statNumber(b.percent)}%\n </span>\n ) : null}\n </div>\n );\n}\n\nfunction BreakdownPopup({\n stat,\n level,\n hero,\n worn,\n onClose,\n}: {\n stat: StatView;\n level: number;\n hero: RosterEntry;\n worn: Array<{ def: ItemDefWithGear | undefined; level: number }>;\n onClose: () => void;\n}): ReactNode {\n const catalog = useCatalog();\n const b = breakdown(stat, level, hero.rank, hero.def, worn);\n const rows: Array<[string, number, string, string]> = [\n [t(\"base\"), b.base, \"#5d6a92\", \"\"],\n [t(\"fromLevel\"), b.fromLevel, \"#33b31d\", \"+\"],\n [t(\"fromRank\"), b.fromRank, \"#1c8fe6\", \"+\"],\n [t(\"fromGear\"), b.fromGear, \"#f5a90c\", \"+\"],\n ];\n return (\n <UPopup\n tone=\"blue\"\n title={`${catalog.localize(stat.name)} — ${t(\"where\")}`}\n onClose={onClose}\n width={400}\n variant=\"center\"\n >\n {stat.description ? (\n <div style={{ ...uText(13, \"#e3f2ff\"), textAlign: \"center\" }}>\n {catalog.localize(stat.description)}\n </div>\n ) : null}\n <div style={{ display: \"grid\", gap: 6 }}>\n {rows.map(([label, value, color, sign]) => (\n <URow key={label} tone=\"light\">\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n }}\n >\n <span\n style={{\n width: 12,\n height: 12,\n borderRadius: \"50%\",\n background: color,\n border: `2px solid ${U.ink}`,\n }}\n />\n <span\n style={{ flex: 1, color: INK, fontWeight: 900, fontSize: 15 }}\n >\n {label}\n </span>\n <span style={uText(17, value === 0 && sign ? \"#a9b6cc\" : color)}>\n {value === 0 && sign ? \"—\" : `${sign}${statNumber(value)}`}\n </span>\n </div>\n </URow>\n ))}\n {b.percent ? (\n <URow tone=\"light\">\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <span\n style={{ flex: 1, color: INK, fontWeight: 900, fontSize: 15 }}\n >\n {t(\"percent\")}\n </span>\n <span style={uText(17, \"#b46cff\")}>\n +{statNumber(b.percent)}%\n </span>\n </div>\n </URow>\n ) : null}\n <URow tone=\"yellow\">\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <span\n style={{ flex: 1, color: INK, fontWeight: 900, fontSize: 18 }}\n >\n {t(\"total\")}\n </span>\n <span style={uText(22, U.gold)}>{statNumber(b.total)}</span>\n </div>\n </URow>\n </div>\n </UPopup>\n );\n}\n"
|
|
94
111
|
},
|
|
95
112
|
{
|
|
96
113
|
"path": "components/UnityPopup.tsx",
|
|
97
|
-
"content": "import type { ComponentProps, ReactNode } from \"react\";\nimport { Popup } from \"@idosgames/react/ui\";\n\n// The hero screen's popups
|
|
114
|
+
"content": "import type { ComponentProps, ReactNode } from \"react\";\nimport { Popup } from \"@idosgames/react/ui\";\n\n// The hero screen's popups — the kit's Popup as it is: since the casual look (2026-10-22) it draws the\n// reference's title bar and ink frame itself, so closing, the exit animation and usePopupClose() work\n// exactly as everywhere else and the colours follow src/ui.config.ts.\n\nexport function UnityPopup(props: ComponentProps<typeof Popup>): ReactNode {\n return <Popup {...props} />;\n}\n"
|
|
98
115
|
},
|
|
99
116
|
{
|
|
100
117
|
"path": "components/useData.ts",
|
|
@@ -118,7 +135,7 @@
|
|
|
118
135
|
},
|
|
119
136
|
{
|
|
120
137
|
"path": "module.ts",
|
|
121
|
-
"content": "import {\n defineModule,\n type ModuleContext,\n type Module,\n} from \"@idosgames/module-sdk\";\nimport {\n canAfford,\n configSection,\n itemDefinitions,\n type ItemSection,\n} from \"@idosgames/react/ui\";\nimport { makeCharacterScreen } from \"./CharacterScreen\";\nimport {\n bestLoadout,\n gearPieces,\n hasTitleData,\n heroesBadge,\n resolveLadder,\n resolveSlots,\n roster,\n type CharacterModelView,\n type CharacterSection,\n type InstanceView,\n type ItemDefWithGear,\n} from \"./model\";\nimport { t } from \"./i18n\";\nimport { heroSelected } from \"./events\";\nimport { readSelected, resolveSelected } from \"./selection\";\n\n// Heroes as a feature of the game (the Hero button of the Unity project). The badge counts heroes\n// that can be unlocked or ranked up right now, plus \"better gear is available\". The hero the player\n// plays with goes out as `character:hero-selected@1` — once the roster is known, and on every pick.\nexport const characterModule: Module = defineModule({\n id: \"character\",\n meta: { name: \"Heroes\", type: \"app\", engine: \"dom\" },\n setup(ctx) {\n let announced: string | null = null;\n const announce = (characterId: string | undefined) => {\n if (!characterId || characterId === announced) return;\n announced = characterId;\n ctx.events.emit(heroSelected, { characterId });\n };\n\n ctx.features.register({\n id: \"character\",\n label: () => t(\"title\"),\n icon: \"hero\",\n group: \"economy\",\n order: 20,\n primary: true,\n available: false,\n Screen: makeCharacterScreen(ctx.features, announce),\n });\n ctx.features.setAvailable(\n \"character\",\n hasTitleData(configSection<CharacterSection>(ctx.client, \"Character\")),\n \"no heroes on the title (Character definitions are empty)\",\n );\n watchBadge(ctx, announce);\n ctx.exposeToAgent({\n state: () => ({ ui: \"dom\", feature: \"character\", selected: announced }),\n describeActions: {},\n });\n },\n});\n\nfunction watchBadge(\n ctx: ModuleContext,\n announce: (characterId: string | undefined) => void,\n): void {\n const { client, features } = ctx;\n ctx.effect(() => {\n const update = () => {\n const section = configSection<CharacterSection>(client, \"Character\");\n if (!section) return features.setBadge(\"character\", 0);\n const state = client.data.user.state;\n const owned = (state?.Character?.Characters ?? {}) as Record<\n string,\n CharacterModelView\n >;\n const balances = state?.InventoryV2?.VirtualCurrencies as\n Record<string, { Amount?: number }> | undefined;\n const items = itemDefinitions(\n configSection<ItemSection>(client, \"Item\"),\n ) as Map<string, ItemDefWithGear>;\n const pieces = gearPieces(\n (\n state?.InventoryV2 as\n | { UnstackableItems?: Record<string, InstanceView | null> }\n | undefined\n )?.UnstackableItems,\n items,\n );\n const list = roster(section, owned);\n // The saved hero (or the first playable one) as soon as the roster is known — the game\n // fields it from the first frame. Re-resolved on every update: a hero that just became\n // playable may now be the answer.\n announce(resolveSelected(list, readSelected())?.id);\n const better = list\n .filter((h) => h.state === \"owned\")\n .reduce(\n (n, h) =>\n n +\n bestLoadout(\n h.id,\n h.rank,\n resolveSlots(section, h.def),\n pieces,\n h.model?.Equipment,\n items,\n ).length,\n 0,\n );\n features.setBadge(\n \"character\",\n heroesBadge(\n list,\n (lines) => canAfford(lines, balances),\n (e) => resolveLadder(section, e.def),\n better,\n ),\n );\n };\n // Heroes and gear come with the login state; the central cache asks the server only for what\n // is not there yet (a hero given by default).\n update();\n void client.cache.ensureState([\"Character\"]).then(update);\n
|
|
138
|
+
"content": "import {\n defineModule,\n type ModuleContext,\n type Module,\n} from \"@idosgames/module-sdk\";\nimport {\n canAfford,\n configSection,\n itemDefinitions,\n type ItemSection,\n} from \"@idosgames/react/ui\";\nimport { makeCharacterScreen } from \"./CharacterScreen\";\nimport {\n bestLoadout,\n gearPieces,\n hasTitleData,\n heroesBadge,\n resolveLadder,\n resolveSlots,\n roster,\n type CharacterModelView,\n type CharacterSection,\n type InstanceView,\n type ItemDefWithGear,\n} from \"./model\";\nimport { t } from \"./i18n\";\nimport { heroSelected } from \"./events\";\nimport { readSelected, resolveSelected } from \"./selection\";\n\n// Heroes as a feature of the game (the Hero button of the Unity project). The badge counts heroes\n// that can be unlocked or ranked up right now, plus \"better gear is available\". The hero the player\n// plays with goes out as `character:hero-selected@1` — once the roster is known, and on every pick.\nexport const characterModule: Module = defineModule({\n id: \"character\",\n meta: { name: \"Heroes\", type: \"app\", engine: \"dom\" },\n setup(ctx) {\n let announced: string | null = null;\n const announce = (characterId: string | undefined) => {\n if (!characterId || characterId === announced) return;\n announced = characterId;\n ctx.events.emit(heroSelected, { characterId });\n };\n\n ctx.features.register({\n id: \"character\",\n label: () => t(\"title\"),\n icon: \"hero\",\n group: \"economy\",\n order: 20,\n primary: true,\n available: false,\n // the stage paints edge to edge, the gear fills the rest of the height\n fullBleed: true,\n Screen: makeCharacterScreen(ctx.features, announce, ctx.characterArt),\n });\n ctx.features.setAvailable(\n \"character\",\n hasTitleData(configSection<CharacterSection>(ctx.client, \"Character\")),\n \"no heroes on the title (Character definitions are empty)\",\n );\n watchBadge(ctx, announce);\n ctx.exposeToAgent({\n state: () => ({ ui: \"dom\", feature: \"character\", selected: announced }),\n describeActions: {},\n });\n },\n});\n\nfunction watchBadge(\n ctx: ModuleContext,\n announce: (characterId: string | undefined) => void,\n): void {\n const { client, features } = ctx;\n ctx.effect(() => {\n const update = () => {\n const section = configSection<CharacterSection>(client, \"Character\");\n if (!section) return features.setBadge(\"character\", 0);\n const state = client.data.user.state;\n const owned = (state?.Character?.Characters ?? {}) as Record<\n string,\n CharacterModelView\n >;\n const balances = state?.InventoryV2?.VirtualCurrencies as\n Record<string, { Amount?: number }> | undefined;\n const items = itemDefinitions(\n configSection<ItemSection>(client, \"Item\"),\n ) as Map<string, ItemDefWithGear>;\n const pieces = gearPieces(\n (\n state?.InventoryV2 as\n | { UnstackableItems?: Record<string, InstanceView | null> }\n | undefined\n )?.UnstackableItems,\n items,\n );\n const list = roster(section, owned);\n // The saved hero (or the first playable one) as soon as the roster is known — the game\n // fields it from the first frame. Re-resolved on every update: a hero that just became\n // playable may now be the answer.\n announce(resolveSelected(list, readSelected())?.id);\n const better = list\n .filter((h) => h.state === \"owned\")\n .reduce(\n (n, h) =>\n n +\n bestLoadout(\n h.id,\n h.rank,\n resolveSlots(section, h.def),\n pieces,\n h.model?.Equipment,\n items,\n ).length,\n 0,\n );\n features.setBadge(\n \"character\",\n heroesBadge(\n list,\n (lines) => canAfford(lines, balances),\n (e) => resolveLadder(section, e.def),\n better,\n ),\n );\n };\n // Heroes and gear come with the login state; the central cache asks the server only for what\n // is not there yet (a hero given by default). The first pass waits for the end of the install:\n // `effect` runs inside this module's setup(), and a game set up after it would miss the hero.\n let stopped = false;\n queueMicrotask(() => {\n if (!stopped) update();\n });\n void client.cache.ensureState([\"Character\"]).then(() => {\n if (!stopped) update();\n });\n const off = client.on(\"user:anyUpdated\", update);\n return () => {\n stopped = true;\n off();\n };\n });\n}\n"
|
|
122
139
|
},
|
|
123
140
|
{
|
|
124
141
|
"path": "selection.ts",
|
|
@@ -126,7 +143,7 @@
|
|
|
126
143
|
},
|
|
127
144
|
{
|
|
128
145
|
"path": "module.meta.json",
|
|
129
|
-
"content": "{\n \"id\": \"character\",\n \"type\": \"feature\",\n \"summary\": \"Heroes screen for any game: roster, ranks and stats with their costs, equipment slots with 'Equip best', item levels and skins.\",\n \"description\": \"A ready heroes screen (the Hero button of the Unity SDK) for ANY game, built on the @idosgames/react/ui kit and client.character. The screen is the selected hero's equipment hub: portrait, class and rarity, rank and server-computed Power, 'Rank up' with its price, gear slots (locked ones show the rank they open at), 'Equip best' when better gear fits, 'Take off all', and the gear the player owns by class. Everything detailed is a popup: the hero list (select, unlock for currency), the stats (level/cap bars, upgrade prices, requirements, 'Upgrade all' — as many levels as the balances cover, cheapest first, in one batch —, and 'where this number comes from' — base, stat levels, rank, gear flat and percent bonuses), a slot's fitting gear, a piece of gear (equip / take off / level up) and skins (wear, buy). Prices and caps follow the title's curves (rank ladder, stat cost curve, StatMaxLevelCurve, item Upgrade); the server re-checks everything. Registers the 'character' feature; the inventory hands equipment to it with ctx.features.open('character', { itemInstanceID }). Its badge counts heroes to unlock or rank up and better gear. Ships title-seed.json: three heroes (Knight free, Archer and Mage for gems) with stats, ranks and slots. Emits character:hero-selected@1 with the hero the player plays with (on start-up and on every pick) so a game can field that hero.\",\n \"provides\": [\n \"hero roster with unlock for currency\",\n \"rank up with price by the rank ladder\",\n \"stat upgrades with costs, caps and requirements\",\n \"upgrade all stats in one batch\",\n \"stat breakdown popup by source\",\n \"equipment slots and equip / take off\",\n \"equip best gear automatically\",\n \"take off all gear\",\n \"item level upgrades\",\n \"character skins\",\n \"demo heroes\",\n \"selected hero for the game (event)\"\n ],\n \"tags\": [\n \"heroes\",\n \"characters\",\n \"rpg\",\n \"stats\",\n \"equipment\",\n \"gear\",\n \"skins\",\n \"ui\",\n \"screen\",\n \"economy\"\n ],\n \"author\": {\n \"name\": \"iDos Games\",\n \"url\": \"https://idosgames.com\"\n },\n \"version\": \"0.
|
|
146
|
+
"content": "{\n \"id\": \"character\",\n \"type\": \"feature\",\n \"summary\": \"Heroes screen for any game: roster, ranks and stats with their costs, equipment slots with 'Equip best', item levels and skins.\",\n \"description\": \"A ready heroes screen (the Hero button of the Unity SDK) for ANY game, built on the @idosgames/react/ui kit and client.character. The screen is the selected hero's equipment hub: portrait, class and rarity, rank and server-computed Power, 'Rank up' with its price, gear slots (locked ones show the rank they open at), 'Equip best' when better gear fits, 'Take off all', and the gear the player owns by class. Everything detailed is a popup: the hero list (select, unlock for currency), the stats (level/cap bars, upgrade prices, requirements, 'Upgrade all' — as many levels as the balances cover, cheapest first, in one batch —, and 'where this number comes from' — base, stat levels, rank, gear flat and percent bonuses), a slot's fitting gear, a piece of gear (equip / take off / level up) and skins (wear, buy). Prices and caps follow the title's curves (rank ladder, stat cost curve, StatMaxLevelCurve, item Upgrade); the server re-checks everything. Registers the 'character' feature; the inventory hands equipment to it with ctx.features.open('character', { itemInstanceID }). Its badge counts heroes to unlock or rank up and better gear. Ships title-seed.json: three heroes (Knight free, Archer and Mage for gems) with stats, ranks and slots. The hero is the game's own character when the game set ctx.characterArt (idle-rpg: its layered hero, live on the hub and the card, still in the list, redressed on every equip), else the screen's own picture by class. Emits character:hero-selected@1 with the hero the player plays with (on start-up and on every pick) so a game can field that hero.\",\n \"provides\": [\n \"hero roster with unlock for currency\",\n \"rank up with price by the rank ladder\",\n \"stat upgrades with costs, caps and requirements\",\n \"upgrade all stats in one batch\",\n \"stat breakdown popup by source\",\n \"equipment slots and equip / take off\",\n \"equip best gear automatically\",\n \"take off all gear\",\n \"item level upgrades\",\n \"character skins\",\n \"demo heroes\",\n \"selected hero for the game (event)\",\n \"the game's own hero drawn on the screen (ctx.characterArt)\"\n ],\n \"tags\": [\n \"heroes\",\n \"characters\",\n \"rpg\",\n \"stats\",\n \"equipment\",\n \"gear\",\n \"skins\",\n \"ui\",\n \"screen\",\n \"economy\"\n ],\n \"author\": {\n \"name\": \"iDos Games\",\n \"url\": \"https://idosgames.com\"\n },\n \"version\": \"0.2.2\",\n \"events\": {\n \"emits\": [\n {\n \"topic\": \"character:hero-selected@1\",\n \"when\": \"on start-up (the saved or first playable hero, once the roster is known) and whenever the player selects another hero on the Heroes screen\",\n \"payload\": {\n \"characterId\": \"string\"\n }\n }\n ]\n }\n}\n"
|
|
130
147
|
}
|
|
131
148
|
]
|
|
132
149
|
}
|